From 05a606b3f4df9b48a7502963ac89d5dc8720b802 Mon Sep 17 00:00:00 2001
From: Wong Hoi Sing Edison <hswong3i@gmail.com>
Date: Sat, 9 Feb 2013 08:36:14 +0000
Subject: [PATCH] Issue #1602226 by RobKoberg, hswong3i: Error while trying to
 find the common path for enabled extensions of project
 imce_tools. Extensions are: imce_dir_man, [error].

---
 imce_dir_man/README.txt                       |   14 ++
 imce_dir_man/imce_dir_man.info                |    6 +
 imce_dir_man/imce_dir_man.install             |   15 +++
 imce_dir_man/imce_dir_man.module              |  177 +++++++++++++++++++++++++
 imce_file_path/README.txt                     |    3 +
 imce_file_path/imce_file_path.css             |    7 +
 imce_file_path/imce_file_path.info            |    5 +
 imce_file_path/imce_file_path.install         |   19 +++
 imce_file_path/imce_file_path.js              |   18 +++
 imce_file_path/imce_file_path.module          |    9 ++
 imce_search/README.txt                        |    3 +
 imce_search/imce_search.css                   |   13 ++
 imce_search/imce_search.info                  |    5 +
 imce_search/imce_search.install               |   19 +++
 imce_search/imce_search.js                    |   55 ++++++++
 imce_search/imce_search.module                |   83 ++++++++++++
 imce_search/loading.gif                       |  Bin 0 -> 1105 bytes
 modules/imce_dir_man/README.txt               |   14 --
 modules/imce_dir_man/imce_dir_man.info        |    6 -
 modules/imce_dir_man/imce_dir_man.install     |   15 ---
 modules/imce_dir_man/imce_dir_man.module      |  177 -------------------------
 modules/imce_file_path/README.txt             |    3 -
 modules/imce_file_path/imce_file_path.css     |    7 -
 modules/imce_file_path/imce_file_path.info    |    5 -
 modules/imce_file_path/imce_file_path.install |   19 ---
 modules/imce_file_path/imce_file_path.js      |   18 ---
 modules/imce_file_path/imce_file_path.module  |    9 --
 modules/imce_search/README.txt                |    3 -
 modules/imce_search/imce_search.css           |   13 --
 modules/imce_search/imce_search.info          |    5 -
 modules/imce_search/imce_search.install       |   19 ---
 modules/imce_search/imce_search.js            |   55 --------
 modules/imce_search/imce_search.module        |   83 ------------
 modules/imce_search/loading.gif               |  Bin 1105 -> 0 bytes
 34 files changed, 451 insertions(+), 451 deletions(-)
 create mode 100644 imce_dir_man/README.txt
 create mode 100644 imce_dir_man/imce_dir_man.info
 create mode 100644 imce_dir_man/imce_dir_man.install
 create mode 100644 imce_dir_man/imce_dir_man.module
 create mode 100644 imce_file_path/README.txt
 create mode 100644 imce_file_path/imce_file_path.css
 create mode 100644 imce_file_path/imce_file_path.info
 create mode 100644 imce_file_path/imce_file_path.install
 create mode 100644 imce_file_path/imce_file_path.js
 create mode 100644 imce_file_path/imce_file_path.module
 create mode 100644 imce_search/README.txt
 create mode 100644 imce_search/imce_search.css
 create mode 100644 imce_search/imce_search.info
 create mode 100644 imce_search/imce_search.install
 create mode 100644 imce_search/imce_search.js
 create mode 100644 imce_search/imce_search.module
 create mode 100755 imce_search/loading.gif
 delete mode 100644 modules/imce_dir_man/README.txt
 delete mode 100644 modules/imce_dir_man/imce_dir_man.info
 delete mode 100644 modules/imce_dir_man/imce_dir_man.install
 delete mode 100644 modules/imce_dir_man/imce_dir_man.module
 delete mode 100644 modules/imce_file_path/README.txt
 delete mode 100644 modules/imce_file_path/imce_file_path.css
 delete mode 100644 modules/imce_file_path/imce_file_path.info
 delete mode 100644 modules/imce_file_path/imce_file_path.install
 delete mode 100644 modules/imce_file_path/imce_file_path.js
 delete mode 100644 modules/imce_file_path/imce_file_path.module
 delete mode 100644 modules/imce_search/README.txt
 delete mode 100644 modules/imce_search/imce_search.css
 delete mode 100644 modules/imce_search/imce_search.info
 delete mode 100644 modules/imce_search/imce_search.install
 delete mode 100644 modules/imce_search/imce_search.js
 delete mode 100644 modules/imce_search/imce_search.module
 delete mode 100755 modules/imce_search/loading.gif

diff --git a/imce_dir_man/README.txt b/imce_dir_man/README.txt
new file mode 100644
index 0000000..09976fa
--- /dev/null
+++ b/imce_dir_man/README.txt
@@ -0,0 +1,14 @@
+IMCE Directory Manager provides a function, imce_dir_man_path, that can
+be used with the directory specifications in IMCE profiles along with a
+management interface to control what the function returns on a user by
+user basis. It is useful when users need to be confined to directories
+on a user by user basis but the directory restrictions are not easily
+derived from user data.
+
+To use, create an IMCE profile and specify
+'php: return imce_dir_man_path();' as the directory path the profile is
+allowed to edit. On page admin/settings/imce_dir_man configure which
+directories each user should be restricted to.
+
+Access to configure directories users should be restricted to requires
+the "administer site configuration" permission.
diff --git a/imce_dir_man/imce_dir_man.info b/imce_dir_man/imce_dir_man.info
new file mode 100644
index 0000000..b606262
--- /dev/null
+++ b/imce_dir_man/imce_dir_man.info
@@ -0,0 +1,6 @@
+name = "IMCE Directory Manager"
+description = "Allows for per user management of directory restrictions in IMCE"
+package = "Media"
+core = 7.x
+configure = admin/config/media/imce_dir_man
+dependencies[] = imce
diff --git a/imce_dir_man/imce_dir_man.install b/imce_dir_man/imce_dir_man.install
new file mode 100644
index 0000000..cfd735c
--- /dev/null
+++ b/imce_dir_man/imce_dir_man.install
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * Implements hook_schema()
+ */
+function imce_dir_man_schema() {
+  $schema['imce_dir_man'] = array(
+    'fields' => array(
+      'uid' => array('type' => 'int', 'not null' => TRUE, 'description' => "User's {users}.uid."),
+      'dir' => array('type' => 'varchar', 'not null' => TRUE, 'length' => '255', 'description' => 'Directory path restriction relative to site root'),
+    ),
+    'primary key' => array('uid', 'dir'),
+  );
+  return $schema;
+}
\ No newline at end of file
diff --git a/imce_dir_man/imce_dir_man.module b/imce_dir_man/imce_dir_man.module
new file mode 100644
index 0000000..ee70396
--- /dev/null
+++ b/imce_dir_man/imce_dir_man.module
@@ -0,0 +1,177 @@
+<?php
+/**
+ * @file
+ * imce_dir_man.module provides functions for managing configuration
+ * determining what the imce_dir_man_path() function. This function can
+ * be used as php code in the directory setting of an IMCE profile to 
+ * allow for per user configuration of directory restrictions
+ */
+
+/**
+ * hook menu
+ */
+function imce_dir_man_menu() {
+  $menu['admin/config/media/imce_dir_man'] = array(
+    'title' => 'IMCE User Directory Access Manager',
+    'description' => 'Administer directory restrictions for IMCE',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('imce_dir_man_form'),
+    'access arguments' => array('administer site configuration'),
+  );
+  return $menu;
+}
+
+/**
+ * generates admin form for managing user directory restrictions
+ */
+function imce_dir_man_form() {
+  $query = db_select('imce_dir_man', 'i');
+  $query->join('users', 'u', 'u.uid = i.uid');
+  $res = $query->fields('i', array('uid', 'dir'))
+    ->fields('u', array('name'))
+    ->orderBy('name')
+    ->execute();
+
+  $weight = 1;
+  foreach ($res as $row) {
+    $form[$row->uid] = array(
+      '#title' => t('User @name', array('@name' => $row->name)),
+      '#type' => 'fieldset',
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#tree' => TRUE,
+      '#weight' => $weight++,
+    );
+    $form[$row->uid]['del'] = array(
+      '#title' => t('Remove restrictions'),
+      '#description' => t('Deletes restrictions set for this user'),
+      '#type' => 'checkbox',
+      '#weight' => 10,
+    );
+    $form[$row->uid]['dir'] = array(
+      '#title' => t('Directory'),
+      '#description' => t('Directory to restrict user to relative to site file upload root, comma separate to specify multiple directories, a/b/c restricts a user to !root/a/b/c', array('!root' => variable_get('file_public_path', conf_path() . '/files'))),
+      '#type' => 'textfield',
+      '#size' => '100',
+      '#maxsize' => '255',
+      '#default_value' => $row->dir,
+      '#weight' => 20,
+    );
+  }
+
+  $form['new_user'] = array(
+    '#title' => t('Add restriction for new user'),
+    '#type' => 'fieldset',
+    '#tree' => TRUE,
+    '#weight' => $weight++,
+  );
+  $form['new_user']['name'] = array(
+    '#title' => t('User'),
+    '#type' => 'textfield',
+    '#size' => '100',
+    '#maxsize' => '255',
+    '#weight' => 10,
+  );
+  $form['new_user']['dir'] = array(
+    '#title' => t('Directory'),
+    '#type' => 'textfield',
+    '#description' => t('Directory to restrict user to relative to site file upload root, comma separate to specify multiple directories, a/b/c restricts a user to sites/default/files/a/b/c'),
+    '#size' => '100',
+    '#maxsize' => '255',
+    '#weight' => 20,
+  );
+
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => 'Save',
+    '#weight' => $weight,
+  );
+  $form['#submit'] = array('imce_dir_man_form_submit');
+  $form['#validate'] = array('imce_dir_man_form_validate');
+
+  return $form;
+}
+
+/**
+ * Validate restriction form (imce_dir_man_form) settings
+ */
+function imce_dir_man_form_validate($form, &$form_state) {
+  foreach ($form_state['values'] as $uid => $data) {
+    $data['dir'] = trim($data['dir'], ',');
+    if ($data['dir'] == '' && (isset($data['del']) && $data['del'] != 1) && $data['name'] != '') {
+      form_set_error($uid . '][dir', t('Invalid directory restriction (blank or contains only commas)'));
+    }
+    else if ($uid == 'new_user' && $data['name'] != '') {
+      $uid = db_select('users', 'u')
+        ->fields('u', array('uid'))
+        ->condition('name', $data['name'])
+        ->execute()
+        ->fetchCol();
+      if (!$uid) {
+        form_set_error($uid . '][name', t('Invalid user'));
+      }
+      else {
+        $uid = db_select('imce_dir_man', 'i')
+          ->fields('i', array('uid'))
+          ->condition('uid', $uid[0])
+          ->execute()
+          ->fetchCol();
+        if ($uid) {
+          form_set_error($uid . '][name', t('User @name already has restriction configured, please update their entry to make modifications', array('@name' => $data['name'])));
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Save configured restriction settings adding new settings, 
+ * updating or deleting existing settings
+ */
+function imce_dir_man_form_submit($form, &$form_state) {
+  $rec = new stdclass();
+
+  foreach ($form_state['values'] as $uid => $data) {
+    $rec->dir = trim($data['dir'], ',');
+    $rec->uid = $uid;
+
+    if ($uid == 'new_user' && $data['name'] != '' && $data['dir'] != '') {
+      $uid = db_select('users', 'u')
+        ->fields('u', array('uid'))
+        ->condition('name', $data['name'])
+        ->execute()
+        ->fetchCol();
+
+      if ($uid) {
+        $rec->uid = $uid[0];
+        drupal_write_record('imce_dir_man', $rec);
+      }
+    }
+    else if (isset($data['del']) && $data['del']) {
+      db_delete('imce_dir_man')->condition('uid', $uid)->execute();
+    }
+    else {
+      drupal_write_record('imce_dir_man', $rec, array('uid'));
+    }
+  }
+}
+
+/**
+ * returns an array representing a user's currently accessible file directories
+ * used by the imce uploader
+ * If a user has not been restricted in the configuration, . (all directories)
+ * is returned
+ */
+function imce_dir_man_path() {
+  global $user;
+  $dir = db_select('imce_dir_man', 'i')
+    ->fields('i', array('dir'))
+    ->condition('uid', $user->uid)
+    ->execute()
+    ->fetchCol();
+
+  if (!$dir || !$dir[0]) {
+    $dir[0] = '.';
+  }
+  return preg_split('/,/', $dir[0]);
+}
diff --git a/imce_file_path/README.txt b/imce_file_path/README.txt
new file mode 100644
index 0000000..bd38358
--- /dev/null
+++ b/imce_file_path/README.txt
@@ -0,0 +1,3 @@
+IMCE File Path provides a status bar like path within the IMCE file 
+manager. To use enable the module and the status bar area will 
+appear, no configuration is necessary.
diff --git a/imce_file_path/imce_file_path.css b/imce_file_path/imce_file_path.css
new file mode 100644
index 0000000..bf8ad7a
--- /dev/null
+++ b/imce_file_path/imce_file_path.css
@@ -0,0 +1,7 @@
+#imce-file-path {
+  background-color: #c5d5ff;
+  border-bottom: 1px solid #666;
+  font-size: .9em;
+  font-weight: bold;
+  padding: .5em .5em;
+}
\ No newline at end of file
diff --git a/imce_file_path/imce_file_path.info b/imce_file_path/imce_file_path.info
new file mode 100644
index 0000000..5c925cb
--- /dev/null
+++ b/imce_file_path/imce_file_path.info
@@ -0,0 +1,5 @@
+name = IMCE File Path
+description = Provides a status bar like interface for displaying the file path of the currently selected file
+core = 7.x
+package = Media
+dependencies[] = imce
diff --git a/imce_file_path/imce_file_path.install b/imce_file_path/imce_file_path.install
new file mode 100644
index 0000000..3ae899c
--- /dev/null
+++ b/imce_file_path/imce_file_path.install
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * hook_enable - let imce know we have custom content
+ */
+function imce_file_path_enable() {
+  $funcs = variable_get('imce_custom_content', array());
+  $funcs['imce_file_path_content'] = 1;
+  variable_set('imce_custom_content', $funcs);
+}
+
+/**
+ * hook_disable - remove our custom content registration with imce
+ */
+function imce_file_path_disable() {
+  $funcs = variable_get('imce_custom_content', array());
+  unset($funcs['imce_file_path_content']);
+  variable_set('imce_custom_content', $funcs);
+}
diff --git a/imce_file_path/imce_file_path.js b/imce_file_path/imce_file_path.js
new file mode 100644
index 0000000..ac9bdbc
--- /dev/null
+++ b/imce_file_path/imce_file_path.js
@@ -0,0 +1,18 @@
+/* add a status bar div to the preview window, override imce setPreview to set status bar value and then call previous handler */
+imce.hooks.load.push(function() {
+  jQuery('#preview-wrapper').prepend('<div id="imce-file-path"><span></span></div>');
+  var prevHandler = imce.setPreview;
+  imce.setPreview = function(fid) {
+    if (fid) {
+      jQuery("#imce-file-path span").html(Drupal.t('File URL path: ') + imce.getURL(fid));
+    }
+    else {
+      jQuery("#imce-file-path span").html('');
+    }
+    prevHandler(fid);
+  };
+});
+
+imce.hooks.navigate.push(function($) {
+  jQuery("#imce-file-path span").html('');
+});
diff --git a/imce_file_path/imce_file_path.module b/imce_file_path/imce_file_path.module
new file mode 100644
index 0000000..48ce273
--- /dev/null
+++ b/imce_file_path/imce_file_path.module
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * registered callback for imce
+ */
+function imce_file_path_content(&$imce) {
+  drupal_add_css(drupal_get_path('module', 'imce_file_path') . '/imce_file_path.css');
+  drupal_add_js(drupal_get_path('module', 'imce_file_path') . '/imce_file_path.js');
+}
diff --git a/imce_search/README.txt b/imce_search/README.txt
new file mode 100644
index 0000000..35dfad7
--- /dev/null
+++ b/imce_search/README.txt
@@ -0,0 +1,3 @@
+IMCE Search provides a search tab for the IMCE file manager which
+allows users to search for files listed in the files table. To use
+enable the module, no configuration is necessary.
diff --git a/imce_search/imce_search.css b/imce_search/imce_search.css
new file mode 100644
index 0000000..7bde837
--- /dev/null
+++ b/imce_search/imce_search.css
@@ -0,0 +1,13 @@
+#imce-search-results div {
+  font-weight: bold;
+  margin: 1em;
+}
+
+#imce-search-results div a {
+  color: #69c;
+}
+
+#imce-search-results div.loading {
+  background: url('loading.gif') no-repeat top left;
+  padding-left: 20px;
+}
diff --git a/imce_search/imce_search.info b/imce_search/imce_search.info
new file mode 100644
index 0000000..e23833a
--- /dev/null
+++ b/imce_search/imce_search.info
@@ -0,0 +1,5 @@
+name = IMCE Search
+description = Provides an autocomplete search box for finding files through the IMCE browser
+core = 7.x
+package = Media
+dependencies[] = imce
diff --git a/imce_search/imce_search.install b/imce_search/imce_search.install
new file mode 100644
index 0000000..51d52f5
--- /dev/null
+++ b/imce_search/imce_search.install
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * hook_enable - let imce know we have custom content
+ */
+function imce_search_enable() {
+  $funcs = variable_get('imce_custom_content', array());
+  $funcs['imce_search_content'] = 1;
+  variable_set('imce_custom_content', $funcs);
+}
+
+/**
+ * hook_disable - remove our custom content registration with imce
+ */
+function imce_search_disable() {
+  $funcs = variable_get('imce_custom_content', array());
+  unset($funcs['imce_search_content']);
+  variable_set('imce_custom_content', $funcs);
+}
\ No newline at end of file
diff --git a/imce_search/imce_search.js b/imce_search/imce_search.js
new file mode 100644
index 0000000..0faacc0
--- /dev/null
+++ b/imce_search/imce_search.js
@@ -0,0 +1,55 @@
+imce.hooks.load.push(function() {
+  imce.opAdd({
+    name : 'search',
+    title : 'Search',
+    content : jQuery('#imce-search-form')
+  });
+  jQuery('#imce-search-form').submit(function() {
+    jQuery('#imce-search-results div').html('Searching ' + ((imce.conf.dir == '.') ? 'all ' : imce.conf.dir + ' and sub') +'directories for ' + jQuery('#edit-imce-search-term').val());
+    jQuery('#imce-search-results div').addClass('loading');
+    var case_insensitive = 0;
+    jQuery('#edit-imce-search-case:checked').each(function() { case_insensitive = 1; });
+    jQuery.ajax({
+      url: Drupal.settings.basePath + 'imce_search_callback/' + case_insensitive + '/' + encodeURI(imce.conf.dir + '/' + jQuery('#edit-imce-search-term').val()),
+      type: 'GET',
+      success: function(serverdata, status, xmlhttp) {
+        data = eval('(' + serverdata + ')');
+        var filelist = jQuery.map(data.files, function(fullpath, index) {
+          var li = document.createElement('li');
+          /*jQuery(li).click(function () { 
+            file = fullpath.substr(fullpath.lastIndexOf('/') + 1);
+            dir = fullpath.substr(0, fullpath.lastIndexOf('/'));
+            imce.dirActivate(dir);
+            imce.highlight(file);
+          });*/
+          if (index > 10) {
+            jQuery(li).addClass('toggle');
+          }
+          jQuery(li).html(fullpath);
+          return li;
+        });
+        jQuery('#imce-search-results ul').hide();
+        jQuery('#imce-search-results ul').empty().append(filelist);
+        jQuery('#imce-search-results ul li[class="toggle"]').hide();
+        jQuery('#imce-search-results ul').show();
+        jQuery('#imce-search-results div').html(data.search + '. ' + data.files.length + ' results found. ');
+        if (data.files.length > 10) {
+          var toggle =  document.createElement('a');
+          jQuery(toggle).append('Show all');
+          jQuery(toggle).toggle(function () {
+              jQuery(this).html('Short list');
+              jQuery('#imce-search-results ul li[class*="toggle"]').show();
+            },
+            function () {
+              jQuery(this).html('Show all');
+              jQuery('#imce-search-results ul li[class*="toggle"]').hide();
+            }
+          );
+          jQuery('#imce-search-results div').append(toggle);
+        }
+        jQuery('#imce-search-results div').removeClass('loading');
+      }
+    });
+    return false;
+  });
+});
diff --git a/imce_search/imce_search.module b/imce_search/imce_search.module
new file mode 100644
index 0000000..e3b0014
--- /dev/null
+++ b/imce_search/imce_search.module
@@ -0,0 +1,83 @@
+<?php //$Id$
+
+/**
+ * hook_menu implementation, defines imce_swfupload path for handling file 
+ * uploads
+ */
+function imce_search_menu() {
+  $menu['imce_search_callback'] = array(
+    'title' => 'IMCE Search Callback',
+    'type' => MENU_CALLBACK,
+    'page callback' => 'imce_search_callback',
+    'access callback' => 'imce_access',
+  );
+  return $menu;
+}
+
+function imce_search_callback() {
+  $path_parts = explode('/', $_GET['q']);
+  array_shift($path_parts); // get rid of callback dir
+  $case_insensitive = array_shift($path_parts);
+  $file_string = array_pop($path_parts);
+  $dir_base = join('/', $path_parts);
+  $query_args = array();
+  if ($file_string) {
+    $query = db_select('file_managed', 'f', array('target' => 'slave'));
+    $query->fields('f', array('uri'));
+    if ($case_insensitive) {
+      $query->where('LOWER(f.filename) LIKE (:fname)', array(':fname' => '%' . drupal_strtolower($file_string) . '%'));
+    }
+    else {
+      $query->condition('f.filename', '%' . $file_string . '%', 'LIKE');
+    }
+    if ($dir_base) {
+      $query->condition('uri',  '%//%' . $dir_base . '%' , 'LIKE');
+    }
+    $suggestions['search'] = 'Searched ' . ($dir_base ? check_plain($dir_base) . ' and sub' : ' all ') . 'directories for ' . check_plain($file_string);
+    $suggestions['files'] = array();
+    $res = $query->execute();
+    foreach ($res as $row) {
+      $suggestions['files'][] = file_uri_target($row->uri);
+    }
+  }
+  else {
+    $suggestions['search'] = 'Invalid search criteria, please specify a search';
+    $suggestions['files'] = array();
+  }
+  echo drupal_json_encode($suggestions);
+  exit;
+}
+
+function imce_search_form($form, &$form_state) {
+  $form['imce-search-term'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Search'),
+    '#description' => t('Search for files in current directory and subdirectories'),
+    '#size' => 25,
+  );
+  $form['imce-search-case'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Case insensitive'),
+    '#description' => t('This option may have no effect depending on your database configuration'),
+    '#default_value' => 0,
+  );
+  $form['imce-search-button'] = array(
+    '#type' => 'button',
+    '#value' => t('Search'),
+  );
+  $form['imce-search-results'] = array(
+    '#markup' => '<div id="imce-search-results"><div></div><ul></ul></div>',
+  );
+  return ($form);
+}
+
+/**
+ * provide form content to imce, registered function for callback
+ */
+function imce_search_content(&$imce) {
+  drupal_add_css(drupal_get_path('module', 'imce_search') . '/imce_search.css');
+  drupal_add_js(drupal_get_path('module', 'imce_search') . '/imce_search.js');
+  $form = drupal_get_form('imce_search_form');
+  return drupal_render($form);
+}
+
diff --git a/imce_search/loading.gif b/imce_search/loading.gif
new file mode 100755
index 0000000000000000000000000000000000000000..d1578b5499591d0be9be180eb141a69e47bfc824
GIT binary patch
literal 1105
zcmcK3{ZAWp90%}k@2S_jqrDz2eHggwIZSCPGQtlPm*waq9Vsg<l9^T0)>em1R*?-D
z)6u3!c?bn&jk8;_6~c@O5;GICUrcDhJ@5lE#bkyUsm8F$FS5)Z42gPOH0eL!=O1{z
z-=EL->vB6SFNSD9gCBu761`r(zrVk?x3{^uxxT)>ySwZ6`?J~X*4CEC<0%%4O-)V9
z%gfPdG?&Yz)9Iz9B|#7Zfq=naP^;A@lc~A6Ig`os^z;l5565CLo6S~RTdUD%c6N5U
zy1G)SRLS{&#_%VC5`Y7Szn=GmB2hLx#J2T?-tB(7yD!AHN8ft=RP<bkH4Y36)So^R
zigfqBai+dE+Fu6@f0ONwPQR_i>u9WRfF)u)b17nJF93U)pN&1RRO?qF-^L`M9$T21
zdFKeUPPCZT5Qs?o56=+QKfw~{m6$`gx93?^t@U?U^Rewm!|z?}uh5<xaw8}-cD@gt
zlF2JmV=~#)$60p^_%H2KNdX8^@{7``!6Vd4#K+(~GU@1}$IWsN`dvcn)P5u_gnvK)
znCyHKWiiy6OWatLDkz_Eqw}g2L*Zi_gdor;Lnwq}FipHV?M@^=w3a!L*hmgY(ed!J
z-pj4j^qo=beOiXx5tR90kVsSUhnHzw?g}w@WbA{LbIV6F-xOZxe_$~-V22v>p9Zq$
ztu#nV<B22~O_9X=BPkdeDibhKAb>&?y7*b1HR&DL_-f2tB~KMtMyHbEtK0dYJ<B1#
zJO&47#d9Y{Eaod{o8UWo8-6l>{qqif)2dgi8M_lv1E3;Zh-5-_&_mbM;6V<Va+Fah
zfW#_tkvc9etyG39tcL6pM9N)R$I@3_(2aPFMLY3mgRCN@!e?J7zaljB*h3n(AaijD
zY#V>m4I<B6kSOH3UQBaAgK>kl(`=x%%#Z*~EK@p+Pc&Lp6~ySAFX?SX+QOBPn#MPN
zK3tbTOxeY|BSTb@Bmix^h2q$=i7yx71CyxonnI~kF@!`SC6&rIZ6paX0^MPQ6^ekp
zi~#`s_by(3Hr_z%rtjWfm^;B<la8n!+nt|$KYz1ukE>98or|kz+~r~$bQCpL2wkFO
zjl1rA(Q>@{EQjdisFtF%oUA>{RfHq2Ic0IzQ$$w!5@pZ%WT}gp(U9{@OO8j@igPeP
zn2ut?_XmBGiy!jd=jTUf!hVbEU}j_iRONr||DEsSZ{<lG$Ify}io%7|IGlhxV5Jg9
SrP84w#xO|%zG!O!FZ}~)S}2wP

literal 0
HcmV?d00001

diff --git a/modules/imce_dir_man/README.txt b/modules/imce_dir_man/README.txt
deleted file mode 100644
index 09976fa..0000000
--- a/modules/imce_dir_man/README.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-IMCE Directory Manager provides a function, imce_dir_man_path, that can
-be used with the directory specifications in IMCE profiles along with a
-management interface to control what the function returns on a user by
-user basis. It is useful when users need to be confined to directories
-on a user by user basis but the directory restrictions are not easily
-derived from user data.
-
-To use, create an IMCE profile and specify
-'php: return imce_dir_man_path();' as the directory path the profile is
-allowed to edit. On page admin/settings/imce_dir_man configure which
-directories each user should be restricted to.
-
-Access to configure directories users should be restricted to requires
-the "administer site configuration" permission.
diff --git a/modules/imce_dir_man/imce_dir_man.info b/modules/imce_dir_man/imce_dir_man.info
deleted file mode 100644
index b606262..0000000
--- a/modules/imce_dir_man/imce_dir_man.info
+++ /dev/null
@@ -1,6 +0,0 @@
-name = "IMCE Directory Manager"
-description = "Allows for per user management of directory restrictions in IMCE"
-package = "Media"
-core = 7.x
-configure = admin/config/media/imce_dir_man
-dependencies[] = imce
diff --git a/modules/imce_dir_man/imce_dir_man.install b/modules/imce_dir_man/imce_dir_man.install
deleted file mode 100644
index cfd735c..0000000
--- a/modules/imce_dir_man/imce_dir_man.install
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/**
- * Implements hook_schema()
- */
-function imce_dir_man_schema() {
-  $schema['imce_dir_man'] = array(
-    'fields' => array(
-      'uid' => array('type' => 'int', 'not null' => TRUE, 'description' => "User's {users}.uid."),
-      'dir' => array('type' => 'varchar', 'not null' => TRUE, 'length' => '255', 'description' => 'Directory path restriction relative to site root'),
-    ),
-    'primary key' => array('uid', 'dir'),
-  );
-  return $schema;
-}
\ No newline at end of file
diff --git a/modules/imce_dir_man/imce_dir_man.module b/modules/imce_dir_man/imce_dir_man.module
deleted file mode 100644
index ee70396..0000000
--- a/modules/imce_dir_man/imce_dir_man.module
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * @file
- * imce_dir_man.module provides functions for managing configuration
- * determining what the imce_dir_man_path() function. This function can
- * be used as php code in the directory setting of an IMCE profile to 
- * allow for per user configuration of directory restrictions
- */
-
-/**
- * hook menu
- */
-function imce_dir_man_menu() {
-  $menu['admin/config/media/imce_dir_man'] = array(
-    'title' => 'IMCE User Directory Access Manager',
-    'description' => 'Administer directory restrictions for IMCE',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('imce_dir_man_form'),
-    'access arguments' => array('administer site configuration'),
-  );
-  return $menu;
-}
-
-/**
- * generates admin form for managing user directory restrictions
- */
-function imce_dir_man_form() {
-  $query = db_select('imce_dir_man', 'i');
-  $query->join('users', 'u', 'u.uid = i.uid');
-  $res = $query->fields('i', array('uid', 'dir'))
-    ->fields('u', array('name'))
-    ->orderBy('name')
-    ->execute();
-
-  $weight = 1;
-  foreach ($res as $row) {
-    $form[$row->uid] = array(
-      '#title' => t('User @name', array('@name' => $row->name)),
-      '#type' => 'fieldset',
-      '#collapsible' => TRUE,
-      '#collapsed' => TRUE,
-      '#tree' => TRUE,
-      '#weight' => $weight++,
-    );
-    $form[$row->uid]['del'] = array(
-      '#title' => t('Remove restrictions'),
-      '#description' => t('Deletes restrictions set for this user'),
-      '#type' => 'checkbox',
-      '#weight' => 10,
-    );
-    $form[$row->uid]['dir'] = array(
-      '#title' => t('Directory'),
-      '#description' => t('Directory to restrict user to relative to site file upload root, comma separate to specify multiple directories, a/b/c restricts a user to !root/a/b/c', array('!root' => variable_get('file_public_path', conf_path() . '/files'))),
-      '#type' => 'textfield',
-      '#size' => '100',
-      '#maxsize' => '255',
-      '#default_value' => $row->dir,
-      '#weight' => 20,
-    );
-  }
-
-  $form['new_user'] = array(
-    '#title' => t('Add restriction for new user'),
-    '#type' => 'fieldset',
-    '#tree' => TRUE,
-    '#weight' => $weight++,
-  );
-  $form['new_user']['name'] = array(
-    '#title' => t('User'),
-    '#type' => 'textfield',
-    '#size' => '100',
-    '#maxsize' => '255',
-    '#weight' => 10,
-  );
-  $form['new_user']['dir'] = array(
-    '#title' => t('Directory'),
-    '#type' => 'textfield',
-    '#description' => t('Directory to restrict user to relative to site file upload root, comma separate to specify multiple directories, a/b/c restricts a user to sites/default/files/a/b/c'),
-    '#size' => '100',
-    '#maxsize' => '255',
-    '#weight' => 20,
-  );
-
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => 'Save',
-    '#weight' => $weight,
-  );
-  $form['#submit'] = array('imce_dir_man_form_submit');
-  $form['#validate'] = array('imce_dir_man_form_validate');
-
-  return $form;
-}
-
-/**
- * Validate restriction form (imce_dir_man_form) settings
- */
-function imce_dir_man_form_validate($form, &$form_state) {
-  foreach ($form_state['values'] as $uid => $data) {
-    $data['dir'] = trim($data['dir'], ',');
-    if ($data['dir'] == '' && (isset($data['del']) && $data['del'] != 1) && $data['name'] != '') {
-      form_set_error($uid . '][dir', t('Invalid directory restriction (blank or contains only commas)'));
-    }
-    else if ($uid == 'new_user' && $data['name'] != '') {
-      $uid = db_select('users', 'u')
-        ->fields('u', array('uid'))
-        ->condition('name', $data['name'])
-        ->execute()
-        ->fetchCol();
-      if (!$uid) {
-        form_set_error($uid . '][name', t('Invalid user'));
-      }
-      else {
-        $uid = db_select('imce_dir_man', 'i')
-          ->fields('i', array('uid'))
-          ->condition('uid', $uid[0])
-          ->execute()
-          ->fetchCol();
-        if ($uid) {
-          form_set_error($uid . '][name', t('User @name already has restriction configured, please update their entry to make modifications', array('@name' => $data['name'])));
-        }
-      }
-    }
-  }
-}
-
-/**
- * Save configured restriction settings adding new settings, 
- * updating or deleting existing settings
- */
-function imce_dir_man_form_submit($form, &$form_state) {
-  $rec = new stdclass();
-
-  foreach ($form_state['values'] as $uid => $data) {
-    $rec->dir = trim($data['dir'], ',');
-    $rec->uid = $uid;
-
-    if ($uid == 'new_user' && $data['name'] != '' && $data['dir'] != '') {
-      $uid = db_select('users', 'u')
-        ->fields('u', array('uid'))
-        ->condition('name', $data['name'])
-        ->execute()
-        ->fetchCol();
-
-      if ($uid) {
-        $rec->uid = $uid[0];
-        drupal_write_record('imce_dir_man', $rec);
-      }
-    }
-    else if (isset($data['del']) && $data['del']) {
-      db_delete('imce_dir_man')->condition('uid', $uid)->execute();
-    }
-    else {
-      drupal_write_record('imce_dir_man', $rec, array('uid'));
-    }
-  }
-}
-
-/**
- * returns an array representing a user's currently accessible file directories
- * used by the imce uploader
- * If a user has not been restricted in the configuration, . (all directories)
- * is returned
- */
-function imce_dir_man_path() {
-  global $user;
-  $dir = db_select('imce_dir_man', 'i')
-    ->fields('i', array('dir'))
-    ->condition('uid', $user->uid)
-    ->execute()
-    ->fetchCol();
-
-  if (!$dir || !$dir[0]) {
-    $dir[0] = '.';
-  }
-  return preg_split('/,/', $dir[0]);
-}
diff --git a/modules/imce_file_path/README.txt b/modules/imce_file_path/README.txt
deleted file mode 100644
index bd38358..0000000
--- a/modules/imce_file_path/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-IMCE File Path provides a status bar like path within the IMCE file 
-manager. To use enable the module and the status bar area will 
-appear, no configuration is necessary.
diff --git a/modules/imce_file_path/imce_file_path.css b/modules/imce_file_path/imce_file_path.css
deleted file mode 100644
index bf8ad7a..0000000
--- a/modules/imce_file_path/imce_file_path.css
+++ /dev/null
@@ -1,7 +0,0 @@
-#imce-file-path {
-  background-color: #c5d5ff;
-  border-bottom: 1px solid #666;
-  font-size: .9em;
-  font-weight: bold;
-  padding: .5em .5em;
-}
\ No newline at end of file
diff --git a/modules/imce_file_path/imce_file_path.info b/modules/imce_file_path/imce_file_path.info
deleted file mode 100644
index 5c925cb..0000000
--- a/modules/imce_file_path/imce_file_path.info
+++ /dev/null
@@ -1,5 +0,0 @@
-name = IMCE File Path
-description = Provides a status bar like interface for displaying the file path of the currently selected file
-core = 7.x
-package = Media
-dependencies[] = imce
diff --git a/modules/imce_file_path/imce_file_path.install b/modules/imce_file_path/imce_file_path.install
deleted file mode 100644
index 3ae899c..0000000
--- a/modules/imce_file_path/imce_file_path.install
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/**
- * hook_enable - let imce know we have custom content
- */
-function imce_file_path_enable() {
-  $funcs = variable_get('imce_custom_content', array());
-  $funcs['imce_file_path_content'] = 1;
-  variable_set('imce_custom_content', $funcs);
-}
-
-/**
- * hook_disable - remove our custom content registration with imce
- */
-function imce_file_path_disable() {
-  $funcs = variable_get('imce_custom_content', array());
-  unset($funcs['imce_file_path_content']);
-  variable_set('imce_custom_content', $funcs);
-}
diff --git a/modules/imce_file_path/imce_file_path.js b/modules/imce_file_path/imce_file_path.js
deleted file mode 100644
index ac9bdbc..0000000
--- a/modules/imce_file_path/imce_file_path.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/* add a status bar div to the preview window, override imce setPreview to set status bar value and then call previous handler */
-imce.hooks.load.push(function() {
-  jQuery('#preview-wrapper').prepend('<div id="imce-file-path"><span></span></div>');
-  var prevHandler = imce.setPreview;
-  imce.setPreview = function(fid) {
-    if (fid) {
-      jQuery("#imce-file-path span").html(Drupal.t('File URL path: ') + imce.getURL(fid));
-    }
-    else {
-      jQuery("#imce-file-path span").html('');
-    }
-    prevHandler(fid);
-  };
-});
-
-imce.hooks.navigate.push(function($) {
-  jQuery("#imce-file-path span").html('');
-});
diff --git a/modules/imce_file_path/imce_file_path.module b/modules/imce_file_path/imce_file_path.module
deleted file mode 100644
index 48ce273..0000000
--- a/modules/imce_file_path/imce_file_path.module
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-/**
- * registered callback for imce
- */
-function imce_file_path_content(&$imce) {
-  drupal_add_css(drupal_get_path('module', 'imce_file_path') . '/imce_file_path.css');
-  drupal_add_js(drupal_get_path('module', 'imce_file_path') . '/imce_file_path.js');
-}
diff --git a/modules/imce_search/README.txt b/modules/imce_search/README.txt
deleted file mode 100644
index 35dfad7..0000000
--- a/modules/imce_search/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-IMCE Search provides a search tab for the IMCE file manager which
-allows users to search for files listed in the files table. To use
-enable the module, no configuration is necessary.
diff --git a/modules/imce_search/imce_search.css b/modules/imce_search/imce_search.css
deleted file mode 100644
index 7bde837..0000000
--- a/modules/imce_search/imce_search.css
+++ /dev/null
@@ -1,13 +0,0 @@
-#imce-search-results div {
-  font-weight: bold;
-  margin: 1em;
-}
-
-#imce-search-results div a {
-  color: #69c;
-}
-
-#imce-search-results div.loading {
-  background: url('loading.gif') no-repeat top left;
-  padding-left: 20px;
-}
diff --git a/modules/imce_search/imce_search.info b/modules/imce_search/imce_search.info
deleted file mode 100644
index e23833a..0000000
--- a/modules/imce_search/imce_search.info
+++ /dev/null
@@ -1,5 +0,0 @@
-name = IMCE Search
-description = Provides an autocomplete search box for finding files through the IMCE browser
-core = 7.x
-package = Media
-dependencies[] = imce
diff --git a/modules/imce_search/imce_search.install b/modules/imce_search/imce_search.install
deleted file mode 100644
index 51d52f5..0000000
--- a/modules/imce_search/imce_search.install
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/**
- * hook_enable - let imce know we have custom content
- */
-function imce_search_enable() {
-  $funcs = variable_get('imce_custom_content', array());
-  $funcs['imce_search_content'] = 1;
-  variable_set('imce_custom_content', $funcs);
-}
-
-/**
- * hook_disable - remove our custom content registration with imce
- */
-function imce_search_disable() {
-  $funcs = variable_get('imce_custom_content', array());
-  unset($funcs['imce_search_content']);
-  variable_set('imce_custom_content', $funcs);
-}
\ No newline at end of file
diff --git a/modules/imce_search/imce_search.js b/modules/imce_search/imce_search.js
deleted file mode 100644
index 0faacc0..0000000
--- a/modules/imce_search/imce_search.js
+++ /dev/null
@@ -1,55 +0,0 @@
-imce.hooks.load.push(function() {
-  imce.opAdd({
-    name : 'search',
-    title : 'Search',
-    content : jQuery('#imce-search-form')
-  });
-  jQuery('#imce-search-form').submit(function() {
-    jQuery('#imce-search-results div').html('Searching ' + ((imce.conf.dir == '.') ? 'all ' : imce.conf.dir + ' and sub') +'directories for ' + jQuery('#edit-imce-search-term').val());
-    jQuery('#imce-search-results div').addClass('loading');
-    var case_insensitive = 0;
-    jQuery('#edit-imce-search-case:checked').each(function() { case_insensitive = 1; });
-    jQuery.ajax({
-      url: Drupal.settings.basePath + 'imce_search_callback/' + case_insensitive + '/' + encodeURI(imce.conf.dir + '/' + jQuery('#edit-imce-search-term').val()),
-      type: 'GET',
-      success: function(serverdata, status, xmlhttp) {
-        data = eval('(' + serverdata + ')');
-        var filelist = jQuery.map(data.files, function(fullpath, index) {
-          var li = document.createElement('li');
-          /*jQuery(li).click(function () { 
-            file = fullpath.substr(fullpath.lastIndexOf('/') + 1);
-            dir = fullpath.substr(0, fullpath.lastIndexOf('/'));
-            imce.dirActivate(dir);
-            imce.highlight(file);
-          });*/
-          if (index > 10) {
-            jQuery(li).addClass('toggle');
-          }
-          jQuery(li).html(fullpath);
-          return li;
-        });
-        jQuery('#imce-search-results ul').hide();
-        jQuery('#imce-search-results ul').empty().append(filelist);
-        jQuery('#imce-search-results ul li[class="toggle"]').hide();
-        jQuery('#imce-search-results ul').show();
-        jQuery('#imce-search-results div').html(data.search + '. ' + data.files.length + ' results found. ');
-        if (data.files.length > 10) {
-          var toggle =  document.createElement('a');
-          jQuery(toggle).append('Show all');
-          jQuery(toggle).toggle(function () {
-              jQuery(this).html('Short list');
-              jQuery('#imce-search-results ul li[class*="toggle"]').show();
-            },
-            function () {
-              jQuery(this).html('Show all');
-              jQuery('#imce-search-results ul li[class*="toggle"]').hide();
-            }
-          );
-          jQuery('#imce-search-results div').append(toggle);
-        }
-        jQuery('#imce-search-results div').removeClass('loading');
-      }
-    });
-    return false;
-  });
-});
diff --git a/modules/imce_search/imce_search.module b/modules/imce_search/imce_search.module
deleted file mode 100644
index e3b0014..0000000
--- a/modules/imce_search/imce_search.module
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php //$Id$
-
-/**
- * hook_menu implementation, defines imce_swfupload path for handling file 
- * uploads
- */
-function imce_search_menu() {
-  $menu['imce_search_callback'] = array(
-    'title' => 'IMCE Search Callback',
-    'type' => MENU_CALLBACK,
-    'page callback' => 'imce_search_callback',
-    'access callback' => 'imce_access',
-  );
-  return $menu;
-}
-
-function imce_search_callback() {
-  $path_parts = explode('/', $_GET['q']);
-  array_shift($path_parts); // get rid of callback dir
-  $case_insensitive = array_shift($path_parts);
-  $file_string = array_pop($path_parts);
-  $dir_base = join('/', $path_parts);
-  $query_args = array();
-  if ($file_string) {
-    $query = db_select('file_managed', 'f', array('target' => 'slave'));
-    $query->fields('f', array('uri'));
-    if ($case_insensitive) {
-      $query->where('LOWER(f.filename) LIKE (:fname)', array(':fname' => '%' . drupal_strtolower($file_string) . '%'));
-    }
-    else {
-      $query->condition('f.filename', '%' . $file_string . '%', 'LIKE');
-    }
-    if ($dir_base) {
-      $query->condition('uri',  '%//%' . $dir_base . '%' , 'LIKE');
-    }
-    $suggestions['search'] = 'Searched ' . ($dir_base ? check_plain($dir_base) . ' and sub' : ' all ') . 'directories for ' . check_plain($file_string);
-    $suggestions['files'] = array();
-    $res = $query->execute();
-    foreach ($res as $row) {
-      $suggestions['files'][] = file_uri_target($row->uri);
-    }
-  }
-  else {
-    $suggestions['search'] = 'Invalid search criteria, please specify a search';
-    $suggestions['files'] = array();
-  }
-  echo drupal_json_encode($suggestions);
-  exit;
-}
-
-function imce_search_form($form, &$form_state) {
-  $form['imce-search-term'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Search'),
-    '#description' => t('Search for files in current directory and subdirectories'),
-    '#size' => 25,
-  );
-  $form['imce-search-case'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Case insensitive'),
-    '#description' => t('This option may have no effect depending on your database configuration'),
-    '#default_value' => 0,
-  );
-  $form['imce-search-button'] = array(
-    '#type' => 'button',
-    '#value' => t('Search'),
-  );
-  $form['imce-search-results'] = array(
-    '#markup' => '<div id="imce-search-results"><div></div><ul></ul></div>',
-  );
-  return ($form);
-}
-
-/**
- * provide form content to imce, registered function for callback
- */
-function imce_search_content(&$imce) {
-  drupal_add_css(drupal_get_path('module', 'imce_search') . '/imce_search.css');
-  drupal_add_js(drupal_get_path('module', 'imce_search') . '/imce_search.js');
-  $form = drupal_get_form('imce_search_form');
-  return drupal_render($form);
-}
-
diff --git a/modules/imce_search/loading.gif b/modules/imce_search/loading.gif
deleted file mode 100755
index d1578b5499591d0be9be180eb141a69e47bfc824..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1105
zcmcK3{ZAWp90%}k@2S_jqrDz2eHggwIZSCPGQtlPm*waq9Vsg<l9^T0)>em1R*?-D
z)6u3!c?bn&jk8;_6~c@O5;GICUrcDhJ@5lE#bkyUsm8F$FS5)Z42gPOH0eL!=O1{z
z-=EL->vB6SFNSD9gCBu761`r(zrVk?x3{^uxxT)>ySwZ6`?J~X*4CEC<0%%4O-)V9
z%gfPdG?&Yz)9Iz9B|#7Zfq=naP^;A@lc~A6Ig`os^z;l5565CLo6S~RTdUD%c6N5U
zy1G)SRLS{&#_%VC5`Y7Szn=GmB2hLx#J2T?-tB(7yD!AHN8ft=RP<bkH4Y36)So^R
zigfqBai+dE+Fu6@f0ONwPQR_i>u9WRfF)u)b17nJF93U)pN&1RRO?qF-^L`M9$T21
zdFKeUPPCZT5Qs?o56=+QKfw~{m6$`gx93?^t@U?U^Rewm!|z?}uh5<xaw8}-cD@gt
zlF2JmV=~#)$60p^_%H2KNdX8^@{7``!6Vd4#K+(~GU@1}$IWsN`dvcn)P5u_gnvK)
znCyHKWiiy6OWatLDkz_Eqw}g2L*Zi_gdor;Lnwq}FipHV?M@^=w3a!L*hmgY(ed!J
z-pj4j^qo=beOiXx5tR90kVsSUhnHzw?g}w@WbA{LbIV6F-xOZxe_$~-V22v>p9Zq$
ztu#nV<B22~O_9X=BPkdeDibhKAb>&?y7*b1HR&DL_-f2tB~KMtMyHbEtK0dYJ<B1#
zJO&47#d9Y{Eaod{o8UWo8-6l>{qqif)2dgi8M_lv1E3;Zh-5-_&_mbM;6V<Va+Fah
zfW#_tkvc9etyG39tcL6pM9N)R$I@3_(2aPFMLY3mgRCN@!e?J7zaljB*h3n(AaijD
zY#V>m4I<B6kSOH3UQBaAgK>kl(`=x%%#Z*~EK@p+Pc&Lp6~ySAFX?SX+QOBPn#MPN
zK3tbTOxeY|BSTb@Bmix^h2q$=i7yx71CyxonnI~kF@!`SC6&rIZ6paX0^MPQ6^ekp
zi~#`s_by(3Hr_z%rtjWfm^;B<la8n!+nt|$KYz1ukE>98or|kz+~r~$bQCpL2wkFO
zjl1rA(Q>@{EQjdisFtF%oUA>{RfHq2Ic0IzQ$$w!5@pZ%WT}gp(U9{@OO8j@igPeP
zn2ut?_XmBGiy!jd=jTUf!hVbEU}j_iRONr||DEsSZ{<lG$Ify}io%7|IGlhxV5Jg9
SrP84w#xO|%zG!O!FZ}~)S}2wP

-- 
1.7.9.5

