[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kolab-commits
Subject:    Branch 'production' - 4 commits - kolab.org/www
From:       Torsten Grote <grote () kolabsys ! com>
Date:       2014-03-26 14:51:32
Message-ID: 20140326145132.3ADD23EF1D7 () app01 ! kolabsys ! com
[Download RAW message or body]

kolab.org/www/drupal-7.26/sites/all/modules/ctools/bulk_export/bulk_export.info      \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/css/modal.css              \
|    4  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.info                \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.install             \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.module              \
|   53 +++  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module \
|   20 +  kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/context-content.html  \
|    4  kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/export.html           \
|    3  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.inc       \
|    5  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.menu.inc  \
|  139 ++++++----  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-admin.inc \
|   11  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-task-handler.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context.inc       \
|    3  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/css.inc           \
|    4  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/export.inc        \
|   16 +  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/plugins.inc     \
|    9  kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/uuid.inc          \
|   67 ++++  kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/collapsible-div.js \
|    1  kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/modal.js                \
|   14 -  kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.admin.inc \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/entity_field_value.inc \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/term_vocabulary.inc \
|   60 +++-  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/arguments/rid.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/block/block.inc \
|   40 +-  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/custom/custom.inc \
|    5  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc \
|   18 -  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field_extra.inc \
|   22 +  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc \
|    5  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/page/page_slogan.inc \
|    4  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/token/token.inc \
|   11  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/user_context/profile_fields.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/contexts/token.inc \
|    3  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php \
|   10  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/book_parent.inc \
|    4  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/entity_from_field.inc \
|   12  kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/terms_from_node.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/stylizer/stylizer.info     \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/plugins/access/term_depth.inc \
|  128 +++++++++  kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.info \
|   11  kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.module \
|    7  kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_plugin_test.info \
|    6  kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views.inc \
|    2  kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc \
|    9  kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/views_content.info \
|    6  54 files changed, 647 insertions(+), 153 deletions(-)

New commits:
commit 2a4fb496aefa326019008b73a237d08ace558a37
Merge: 059014f 7d56a92
Author: Torsten Grote <t@grobox.de>
Date:   Wed Mar 26 15:49:27 2014 +0100

    Merge branch 'master' into production



commit 7d56a926f3dfb5a75cb1c0bed7621bf6994a8528
Author: Torsten Grote <t@grobox.de>
Date:   Tue Mar 25 14:54:06 2014 +0100

    remove pathologic module again, as it does not do what we want

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt deleted file \
mode 100755 index d159169..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt
+++ /dev/null
@@ -1,339 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt deleted file mode \
100644 index 3b2a5ba..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Pathologic
-----------
-
-Project Page:
-http://drupal.org/project/pathologic
-
-By Garrett Albright
-http://drupal.org/user/191212
-
-Originally sponsored by Precision Intermedia
-http://www.precisionintermedia.com/
-
-Thanks to all who have used this module over the years and provided bug reports
-and suggestions via email and the issue queue! I love you all.
-
-Installation & Configuration
-----------------------------
-
-For full installation and configuration instructions, please see this page in
-the Drupal online manual:
-http://drupal.org/node/257026
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php deleted \
file mode 100644 index 09760f9..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/**
- * @file
- * Hooks provided by Pathologic.
- *
- * @ingroup pathologic
- */
-
-/**
- * @addtogroup hooks
- * @{
- */
-
-/**
- * Allow modules to alter a URL Pathologic is about to create.
- *
- * This hook is invoked after Pathologic has torn apart a URL it thinks it can
- * alter properly and is just about to call the url() function to construct the
- * new URL. Modules can alter the values that Pathologic is about to send to
- * url(), or even stop Pathologic from altering a URL entirely.
- *
- * @param $url_params
- *   An array with 'path' and 'options' values, which correspond to the $path
- *   and $options parameters of the url() function. The 'options' array has an
- *   extra parameter labeled 'use_original' which is set to FALSE by default.
- *   This parameter is ignored by url(), but if its value is set to TRUE after
- *   all alter hook invocations, Pathologic will return the original, unaltered
- *   path it found in the content instead of calling url() and generating a new
- *   one. Thus, it provides a way for modules to halt the alteration of paths
- *   which Pathologic has incorrectly decided should be altered.
- * @param $parts
- *   This array contains the result of running parse_url() on the path that
- *   Pathologic found in content, though Pathologic likely altered some of the
- *   values in this array since. It contains another parameter, 'original',
- *   which contains the original URL Pathologic found in the content, unaltered.
- *   You should not alter this value in any way; to alter how Pathologic
- *   constructs the new URL, alter $url_params instead.
- * @param $settings
- *   This contains the settings Pathologic is using to decide how to alter the
- *   URL; some settings are from the graphical filter form and alterable by the
- *   user, while others are determined programmatically. If you're looking for
- *   the filter settings which Pathologic is currently using (if you've altered
- *   your own field onto the filter settings form, for example), try looking in
- *   $settings['current_settings'].
- *
- * @see url()
- * @see parse_url()
- * @see pathologic_replace()
- * @see http://drupal.org/node/1762022
- */
-function hook_pathologic_alter(&$url_params, $parts, $settings) {
-  // If we're linking to the "bananas" subdirectory or something under it, then
-  // have Pathologic pass through the original URL, without altering it.
-  if (preg_match('~^bananas(/.*)?$~', $url_params['path'])) {
-    $url_params['options']['use_original'] = TRUE;
-  }
-
-  // If we're linking to a path like "article/something.html", then prepend
-  // "magazine" to the path, but remove the ".html". The end result will look
-  // like "magazine/article/something".
-  if (preg_match('~^article/(.+)\.html$~', $url_params['path'], $matches)) {
-    $url_params['path'] = 'magazine/article/' . $matches[1];
-  }
-
-  // If the URL doesn't have a "foo" query parameter, then add one.
-  if (!is_array($url_params['options']['query'])) {
-    $url_params['options']['query'] = array();
-  }
-  if (empty($url_params['options']['query']['foo'])) {
-    $url_params['options']['query']['foo'] = 'bar';
-  }
-
-  // If it's a path to a local image, make sure it's using our CDN server.
-  if (preg_match('~\.(png|gif|jpe?g)$~', $url_params['path'])) {
-    $url_params['path'] = 'http://cdn.example.com/' . $url_params['path'];
-    $url_params['options']['external'] = TRUE;
-  }
-}
-
-/**
- * @} End of "addtogroup hooks".
- */
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info deleted file \
mode 100644 index 0016e52..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info
+++ /dev/null
@@ -1,13 +0,0 @@
-name = Pathologic
-description = Helps avoid broken links and incorrect paths in content.
-package = "Input filters"
-dependencies[] = filter
-core = 7.x
-files[] = pathologic.test
-
-; Information added by Drupal.org packaging script on 2013-12-14
-version = "7.x-2.12"
-core = "7.x"
-project = "pathologic"
-datestamp = "1387055607"
-
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install deleted \
file mode 100644 index 9179d16..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * @file
- * .install file for Pathologic.
- */
-
-/**
- * Re-enable Pathologic under Drupal 7, preserving settings from Drupal 6.
- */
-function pathologic_update_7000($sandbox) {
-  // Make sure {d6_upgrade_filter} exists. It won't exist for people upgrading
-  // from beta versions of the D7 version of Pathologic on native D7 sites (not
-  // upgraded from D6).
-  if (db_table_exists('d6_upgrade_filter')) {
-    // Get all Pathologic data from {d6_upgrade_filter}.
-    $rez = db_select('d6_upgrade_filter', 'dup')
-      ->fields('dup')
-      ->condition('module', 'pathologic')
-      ->execute();
-    while ($instance = $rez->fetchObject()) {
-      // Load the format
-      if ($format = filter_format_load($instance->format)) {
-        // Load filters.
-        $format->filters = array();
-        // Add the filters
-        foreach (filter_list_format($instance->format) as $filter_name => $filter) {
-          $format->filters[$filter_name] = (array)$filter;
-        }
-        // Add Pathologic
-        $format->filters['pathologic'] = array(
-          'weight' => $instance->weight,
-          'status' => 1,
-          'settings' => array(
-            'absolute' => variable_get('filter_pathologic_absolute_' . \
                $instance->format, TRUE),
-            'local_paths' => variable_get('filter_pathologic_local_paths_' . \
                $instance->format, ''),
-          ),
-        );
-        // Save the format
-        filter_format_save($format);
-        // Unset old variables
-        variable_del('filter_pathologic_absolute_' . $instance->format);
-        variable_del('filter_pathologic_local_paths_' . $instance->format);
-      }
-    }
-    // Delete Pathologic data from {d6_upgrade_filter}…?
-    // No, maybe we don't want to actually do that…?
-  }
-}
-
-/**
- * Convert obsolete "absolute" setting to modern "protocol_style" setting for
- * each filter instance.
- */
-function pathologic_update_7200(&$sandbox) {
-  foreach (filter_formats() as $format) {
-    // @see http://drupal.org/node/1304930
-    if (empty($format->filters)) {
-      $format->filters = array();
-      // Add the filters
-      foreach (filter_list_format($format->format) as $filter_name => $filter) {
-        $format->filters[$filter_name] = (array)$filter;
-      }
-    }
-    if (isset($format->filters['pathologic'])) {
-      $format->filters['pathologic']['settings']['protocol_style'] = \
                $format->filters['pathologic']['settings']['absolute'] ? 'full' : \
                'path';
-      unset($format->filters['pathologic']['settings']['absolute']);
-      filter_format_save($format);
-    }
-  }
-}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module deleted \
file mode 100644 index 806fd3f..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module
+++ /dev/null
@@ -1,460 +0,0 @@
-<?php
-
-/**
- * @file
- * Pathologic text filter for Drupal.
- *
- * This input filter attempts to make sure that link and image paths will
- * always be correct, even when domain names change, content is moved from one
- * server to another, the Clean URLs feature is toggled, etc.
- */
-
-/**
- * Implements hook_filter_info().
- */
-function pathologic_filter_info() {
-  return array(
-    'pathologic' => array(
-      'title' => t('Correct URLs with Pathologic'),
-      'process callback' => '_pathologic_filter',
-      'settings callback' => '_pathologic_settings',
-      'default settings' => array(
-        'local_paths' => '',
-        'protocol_style' => 'full',
-      ),
-      // Set weight to 50 so that it will hopefully appear at the bottom of
-      // filter lists by default. 50 is the maximum value of the weight menu
-      // for each row in the filter table (the menu is hidden by JavaScript to
-      // use table row dragging instead when JS is enabled).
-      'weight' => 50,
-    )
-  );
-}
-
-/**
- * Settings callback for Pathologic.
- */
-function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, \
                $filters) {
-  return array(
-    'reminder' => array(
-      '#type' => 'item',
-      '#title' => t('In most cases, Pathologic should be the <em>last</em> filter in \
                the &ldquo;Filter processing order&rdquo; list.'),
-      '#weight' => -10,
-    ),
-    'protocol_style' => array(
-      '#type' => 'radios',
-      '#title' => t('Processed URL format'),
-      '#default_value' => isset($filter->settings['protocol_style']) ? \
                $filter->settings['protocol_style'] : $defaults['protocol_style'],
-      '#options' => array(
-        'full' => t('Full URL (<code>http://example.com/foo/bar</code>)'),
-        'proto-rel' => t('Protocol relative URL \
                (<code>//example.com/foo/bar</code>)'),
-        'path' => t('Path relative to server root (<code>/foo/bar</code>)'),
-      ),
-      '#description' => t('The <em>Full URL</em> option is best for stopping broken \
images and links in syndicated content (such as in RSS feeds), but will likely lead \
to problems if your site is accessible by both HTTP and HTTPS. Paths output with the \
<em>Protocol relative URL</em> option will avoid such problems, but feed readers and \
other software not using up-to-date standards may be confused by the paths. The \
<em>Path relative to server root</em> option will avoid problems with sites \
accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely \
                not fix broken images and links in syndicated content.'),
-      '#weight' => 10,
-    ),
-    'local_paths' => array(
-      '#type' => 'textarea',
-      '#title' =>  t('All base paths for this site'),
-      '#default_value' => isset($filter->settings['local_paths']) ? \
                $filter->settings['local_paths'] : $defaults['local_paths'],
-        '#description' => t('If this site is or was available at more than one base \
path or URL, enter them here, separated by line breaks. For example, if this site is \
live at <code>http://example.com/</code> but has a staging version at \
<code>http://dev.example.org/staging/</code>, you would enter both those URLs here. \
If confused, please read <a href="!docs">Pathologic&rsquo;s documentation</a> for \
more information about this option and what it affects.', array('!docs' => \
                'http://drupal.org/node/257026')),
-      '#weight' => 20,
-    ),
-  );
-}
-
-/**
- * Pathologic filter callback.
- *
- * Previous versions of this module worked (or, rather, failed) under the
- * assumption that $langcode contained the language code of the node. Sadly,
- * this isn't the case.
- * @see http://drupal.org/node/1812264
- * However, it turns out that the language of the current node isn't as
- * important as the language of the node we're linking to, and even then only
- * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE
- * FUTURE, ALBRIGHT.
- *
- * The below code uses the @ operator before parse_url() calls because in PHP
- * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @
- * operator is usually a pretty strong indicator of code smell, but please don't
- * judge me by it in this case; ordinarily, I despise its use, but I can't find
- * a cleaner way to avoid this problem (using set_error_handler() could work,
- * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at
- * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of
- * Pathologic.
- * @see https://drupal.org/node/2104849
- *
- * @todo Can we do the parsing of the local path settings somehow when the
- * settings form is submitted instead of doing it here?
- */
-function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) {
-  // Get the base URL and explode it into component parts. We add these parts
-  // to the exploded local paths settings later.
-  global $base_url;
-  $base_url_parts = @parse_url($base_url . '/');
-  // Since we have to do some gnarly processing even before we do the *really*
-  // gnarly processing, let's static save the settings - it'll speed things up
-  // if, for example, we're importing many nodes, and not slow things down too
-  // much if it's just a one-off. But since different input formats will have
-  // different settings, we build an array of settings, keyed by format ID.
-  $cached_settings = &drupal_static(__FUNCTION__, array());
-  if (!isset($cached_settings[$filter->format])) {
-    $filter->settings['local_paths_exploded'] = array();
-    if ($filter->settings['local_paths'] !== '') {
-      // Build an array of the exploded local paths for this format's settings.
-      // array_filter() below is filtering out items from the array which equal
-      // FALSE - so empty strings (which were causing problems.
-      // @see http://drupal.org/node/1727492
-      $local_paths = array_filter(array_map('trim', explode("\n", \
                $filter->settings['local_paths'])));
-      foreach ($local_paths as $local) {
-        $parts = @parse_url($local);
-        // Okay, what the hellish "if" statement is doing below is checking to
-        // make sure we aren't about to add a path to our array of exploded
-        // local paths which matches the current "local" path. We consider it
-        // not a match, if…
-        // @todo: This is pretty horrible. Can this be simplified?
-        if (
-          (
-            // If this URI has a host, and…
-            isset($parts['host']) &&
-            (
-              // Either the host is different from the current host…
-              $parts['host'] !== $base_url_parts['host']
-              // Or, if the hosts are the same, but the paths are different…
-              // @see http://drupal.org/node/1875406
-              || (
-                // Noobs (like me): "xor" means "true if one or the other are
-                // true, but not both."
-                (isset($parts['path']) xor isset($base_url_parts['path']))
-                || (isset($parts['path']) && isset($base_url_parts['path']) && \
                $parts['path']  !== $base_url_parts['path'])
-              )
-            )
-          ) ||
-          // Or…
-          (
-            // The URI doesn't have a host…
-            !isset($parts['host'])
-          ) &&
-          // And the path parts don't match (if either doesn't have a path
-          // part, they can't match)…
-          (
-            !isset($parts['path']) ||
-            !isset($base_url_parts['path']) ||
-            $parts['path'] !== $base_url_parts['path']
-          )
-        ) {
-          // Add it to the list.
-          $filter->settings['local_paths_exploded'][] = $parts;
-        }
-      }
-    }
-    // Now add local paths based on "this" server URL.
-    $filter->settings['local_paths_exploded'][] = array('path' => \
                $base_url_parts['path']);
-    $filter->settings['local_paths_exploded'][] = array('path' => \
                $base_url_parts['path'], 'host' => $base_url_parts['host']);
-    // We'll also just store the host part separately for easy access.
-    $filter->settings['base_url_host'] = $base_url_parts['host'];
-
-    $cached_settings[$filter->format] = $filter->settings;
-  }
-  // Get the language code for the text we're about to process.
-  $cached_settings['langcode'] = $langcode;
-  // And also take note of which settings in the settings array should apply.
-  $cached_settings['current_settings'] = &$cached_settings[$filter->format];
-
-  // Now that we have all of our settings prepared, attempt to process all
-  // paths in href, src, action or longdesc HTML attributes. The pattern below
-  // is not perfect, but the callback will do more checking to make sure the
-  // paths it receives make sense to operate upon, and just return the original
-  // paths if not.
-  return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', \
                '_pathologic_replace', $text);
-}
-
-/**
- * Process and replace paths. preg_replace_callback() callback.
- */
-function _pathologic_replace($matches) {
-  // Get the base path.
-  global $base_path;
-
-  // Get the settings for the filter. Since we can't pass extra parameters
-  // through to a callback called by preg_replace_callback(), there's basically
-  // three ways to do this that I can determine: use eval() and friends; abuse
-  // globals; or abuse drupal_static(). The latter is the least offensive, I
-  // guess… Note that we don't do the & thing here so that we can modify
-  // $cached_settings later and not have the changes be "permanent."
-  $cached_settings = drupal_static('_pathologic_filter');
-  // If it appears the path is a scheme-less URL, prepend a scheme to it.
-  // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it
-  // looks like Pathologic can't handle the URL, it will return the scheme-less
-  // original.
-  // @see https://drupal.org/node/1617944
-  // @see https://drupal.org/node/2030789
-  if (strpos($matches[2], '//') === 0) {
-    if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') {
-      $matches[2] = 'https:' . $matches[2];
-    }
-    else {
-      $matches[2] = 'http:' . $matches[2];
-    }
-  }
-  // Now parse the URL after reverting HTML character encoding.
-  // @see http://drupal.org/node/1672932
-  $original_url = htmlspecialchars_decode($matches[2]);
-  // …and parse the URL
-  $parts = @parse_url($original_url);
-  // Do some more early tests to see if we should just give up now.
-  if (
-    // If parse_url() failed, give up.
-    $parts === FALSE
-    || (
-      // If there's a scheme part and it doesn't look useful, bail out.
-      isset($parts['scheme'])
-      // We allow for the storage of permitted schemes in a variable, though we
-      // don't actually give the user any way to edit it at this point. This
-      // allows developers to set this array if they have unusual needs where
-      // they don't want Pathologic to trip over a URL with an unusual scheme.
-      // @see http://drupal.org/node/1834308
-      // "files" and "internal" are for Path Filter compatibility.
-      && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', \
                array('http', 'https', 'files', 'internal')))
-    )
-    // Bail out if it looks like there's only a fragment part.
-    || (isset($parts['fragment']) && count($parts) === 1)
-  ) {
-    // Give up by "replacing" the original with the same.
-    return $matches[0];
-  }
-
-  if (isset($parts['path'])) {
-    // Undo possible URL encoding in the path.
-    // @see http://drupal.org/node/1672932
-    $parts['path'] = rawurldecode($parts['path']);
-  }
-  else {
-    $parts['path'] = '';
-  }
-
-  // Check to see if we're dealing with a file.
-  // @todo Should we still try to do path correction on these files too?
-  if (isset($parts['scheme']) && $parts['scheme'] === 'files') {
-    // Path Filter "files:" support. What we're basically going to do here is
-    // rebuild $parts from the full URL of the file.
-    $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . \
                $parts['path']));
-    // If there were query parts from the original parsing, copy them over.
-    if (!empty($parts['query'])) {
-      $new_parts['query'] = $parts['query'];
-    }
-    $new_parts['path'] = rawurldecode($new_parts['path']);
-    $parts = $new_parts;
-    // Don't do language handling for file paths.
-    $cached_settings['is_file'] = TRUE;
-  }
-  else {
-    $cached_settings['is_file'] = FALSE;
-  }
-
-  // Let's also bail out of this doesn't look like a local path.
-  $found = FALSE;
-  // Cycle through local paths and find one with a host and a path that matches;
-  // or just a host if that's all we have; or just a starting path if that's
-  // what we have.
-  foreach ($cached_settings['current_settings']['local_paths_exploded'] as \
                $exploded) {
-    // If a path is available in both…
-    if (isset($exploded['path']) && isset($parts['path'])
-      // And the paths match…
-      && strpos($parts['path'], $exploded['path']) === 0
-      // And either they have the same host, or both have no host…
-      && (
-        (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === \
                $parts['host'])
-        || (!isset($exploded['host']) && !isset($parts['host']))
-      )
-    ) {
-      // Remove the shared path from the path. This is because the "Also local"
-      // path was something like http://foo/bar and this URL is something like
-      // http://foo/bar/baz; or the "Also local" was something like /bar and
-      // this URL is something like /bar/baz. And we only care about the /baz
-      // part.
-      $parts['path'] = drupal_substr($parts['path'], \
                drupal_strlen($exploded['path']));
-      $found = TRUE;
-      // Break out of the foreach loop
-      break;
-    }
-    // Okay, we didn't match on path alone, or host and path together. Can we
-    // match on just host? Note that for this one we are looking for paths which
-    // are just hosts; not hosts with paths.
-    elseif ((isset($parts['host']) && !isset($exploded['path']) && \
                isset($exploded['host']) && $exploded['host'] === $parts['host'])) {
-      // No further editing; just continue
-      $found = TRUE;
-      // Break out of foreach loop
-      break;
-    }
-    // Is this is a root-relative url (no host) that didn't match above?
-    // Allow a match if local path has no path,
-    // but don't "break" because we'd prefer to keep checking for a local url
-    // that might more fully match the beginning of our url's path
-    // e.g.: if our url is /foo/bar we'll mark this as a match for
-    // http://example.com but want to keep searching and would prefer a match
-    // to http://example.com/foo if that's configured as a local path
-    elseif (!isset($parts['host']) && (!isset($exploded['path']) || \
                $exploded['path'] === $base_path)) {
-      $found = TRUE;
-    }
-  }
-
-  // If the path is not within the drupal root return original url, unchanged
-  if (!$found) {
-    return $matches[0];
-  }
-
-  // Okay, format the URL.
-  // If there's still a slash lingering at the start of the path, chop it off.
-  $parts['path'] = ltrim($parts['path'],'/');
-
-  // Examine the query part of the URL. Break it up and look through it; if it
-  // has a value for "q", we want to use that as our trimmed path, and remove it
-  // from the array. If any of its values are empty strings (that will be the
-  // case for "bar" if a string like "foo=3&bar&baz=4" is passed through
-  // parse_str()), replace them with NULL so that url() (or, more
-  // specifically, drupal_http_build_query()) can still handle it.
-  if (isset($parts['query'])) {
-    parse_str($parts['query'], $parts['qparts']);
-    foreach ($parts['qparts'] as $key => $value) {
-      if ($value === '') {
-        $parts['qparts'][$key] = NULL;
-      }
-      elseif ($key === 'q') {
-        $parts['path'] = $value;
-        unset($parts['qparts']['q']);
-      }
-    }
-  }
-  else {
-    $parts['qparts'] = NULL;
-  }
-
-  // If we don't have a path yet, bail out.
-  if (!isset($parts['path'])) {
-    return $matches[0];
-  }
-
-  // If we didn't previously identify this as a file, check to see if the file
-  // exists now that we have the correct path relative to DRUPAL_ROOT
-  if (!$cached_settings['is_file']) {
-    $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . \
                '/'. $parts['path']);
-  }
-
-  // Okay, deal with language stuff.
-  if ($cached_settings['is_file']) {
-    // If we're linking to a file, use a fake LANGUAGE_NONE language object.
-    // Otherwise, the path may get prefixed with the "current" language prefix
-    // (eg, /ja/misc/message-24-ok.png)
-    $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => \
                '');
-  }
-  else {
-    // Let's see if we can split off a language prefix from the path.
-    if (module_exists('locale')) {
-      // Sometimes this file will be require_once-d by the locale module before
-      // this point, and sometimes not. We require_once it ourselves to be sure.
-      require_once DRUPAL_ROOT . '/includes/language.inc';
-      list($language_obj, $path) = language_url_split_prefix($parts['path'], \
                language_list());
-      if ($language_obj) {
-        $parts['path'] = $path;
-        $parts['language_obj'] = $language_obj;
-      }
-    }
-  }
-
-  // If we get to this point and $parts['path'] is now an empty string (which
-  // will be the case if the path was originally just "/"), then we
-  // want to link to <front>.
-  if ($parts['path'] === '') {
-    $parts['path'] = '<front>';
-  }
-  // Build the parameters we will send to url()
-  $url_params = array(
-    'path' => $parts['path'],
-    'options' => array(
-      'query' => $parts['qparts'],
-      'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL,
-      // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but
-      // not if it's 'path'.
-      'absolute' => $cached_settings['current_settings']['protocol_style'] !== \
                'path',
-      // If we seem to have found a language for the path, pass it along to
-      // url(). Otherwise, ignore the 'language' parameter.
-      'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL,
-      // A special parameter not actually used by url(), but we use it to see if
-      // an alter hook implementation wants us to just pass through the original
-      // URL.
-      'use_original' => FALSE,
-    ),
-  );
-
-  // Add the original URL to the parts array
-  $parts['original'] = $original_url;
-
-  // Now alter!
-  // @see http://drupal.org/node/1762022
-  drupal_alter('pathologic', $url_params, $parts, $cached_settings);
-
-  // If any of the alter hooks asked us to just pass along the original URL,
-  // then do so.
-  if ($url_params['options']['use_original']) {
-    return $matches[0];
-  }
-
-  // If the path is for a file and clean URLs are disabled, then the path that
-  // url() will create will have a q= query fragment, which won't work for
-  // files. To avoid that, we use this trick to temporarily turn clean URLs on.
-  // This is horrible, but it seems to be the sanest way to do this.
-  // @see http://drupal.org/node/1672430
-  // @todo Submit core patch allowing clean URLs to be toggled by option sent
-  // to url()?
-  if (!empty($cached_settings['is_file'])) {
-    $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']);
-    if (!$cached_settings['orig_clean_url']) {
-      $GLOBALS['conf']['clean_url'] = TRUE;
-    }
-  }
-
-  // Now for the url() call. Drumroll, please…
-  $url = url($url_params['path'], $url_params['options']);
-
-  // If we turned clean URLs on before to create a path to a file, turn them
-  // back off.
-  if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) {
-    $GLOBALS['conf']['clean_url'] = FALSE;
-  }
-
-  // If we need to create a protocol-relative URL, then convert the absolute
-  // URL we have now.
-  if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') {
-    // Now, what might have happened here is that url() returned a URL which
-    // isn't on "this" server due to a hook_url_outbound_alter() implementation.
-    // We don't want to convert the URL in that case. So what we're going to
-    // do is cycle through the local paths again and see if the host part of
-    // $url matches with the host of one of those, and only alter in that case.
-    $url_parts = @parse_url($url);
-    if (!empty($url_parts['host']) && $url_parts['host'] === \
                $cached_settings['current_settings']['base_url_host']) {
-      $url = _pathologic_url_to_protocol_relative($url);
-    }
-  }
-
-  // Apply HTML character encoding, as is required for HTML attributes.
-  // @see http://drupal.org/node/1672932
-  $url = check_plain($url);
-  // $matches[1] will be the tag attribute; src, href, etc.
-  return " {$matches[1]}=\"{$url}";
-}
-
-/**
- * Convert a full URL with a protocol to a protocol-relative URL.
- *
- * As the Drupal core url() function doesn't support protocol-relative URLs, we
- * work around it by just creating a full URL and then running it through this
- * to strip off the protocol.
- *
- * Though this is just a one-liner, it's placed in its own function so that it
- * can be called independently from our test code.
- */
-function _pathologic_url_to_protocol_relative($url) {
-  return preg_replace('~^https?://~', '//', $url);
-}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test deleted file \
mode 100644 index c82d011..0000000
--- a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-
-/**
- * @file
- * Pathologic behavior testing.
- */
-
-/**
- * Tests that Pathologic ain't broke.
- *
- * We extend FilterUnitTestCase because it has some nice methods that we also
- * want to be able to use.
- *
- * Note to self: The method to pass bits of text through are fail() or pass().
- */
-class PathologicTestCase extends DrupalWebTestCase {
-  public static function getInfo() {
-    return array(
-      'name' => 'Pathologic path filtering',
-      'description' => 'Test Pathologic&rsquo;s path translation and conversion.',
-      'group' => 'Filter',
-    );
-  }
-
-  function setUp() {
-    parent::setUp('pathologic');
-  }
-
-  function testPathologic() {
-    // Start by testing our function to build protocol-relative URLs
-    $this->assertEqual(
-      _pathologic_url_to_protocol_relative('http://example.com/foo/bar'),
-      '//example.com/foo/bar',
-      t('Protocol-relative URL creation with http:// URL')
-    );
-    $this->assertEqual(
-      _pathologic_url_to_protocol_relative('https://example.org/baz'),
-      '//example.org/baz',
-      t('Protocol-relative URL creation with https:// URL')
-    );
-
-    // Build a phony filter
-    $filter = new stdClass;
-    $filter->callback = '_pathologic';
-    $filter->settings = array(
-      'protocol_style' => 'full',
-      'local_paths' => '',
-    );
-    $filter->format = 0;
-
-    // Build some paths to check against
-    $test_paths = array(
-      'foo' => array(
-        'path' => 'foo',
-        'opts' => array()
-      ),
-      'foo/bar' => array(
-        'path' => 'foo/bar',
-        'opts' => array()
-      ),
-      'foo/bar?baz' => array(
-        'path' => 'foo/bar',
-        'opts' => array('query' => array('baz' => NULL))
-      ),
-      'foo/bar?baz=qux' => array(
-        'path' => 'foo/bar',
-        'opts' => array('query' => array('baz' => 'qux'))
-      ),
-      'foo/bar#baz' => array(
-        'path' => 'foo/bar',
-        'opts' => array('fragment' => 'baz'),
-      ),
-      'foo/bar?baz=qux&amp;quux=quuux#quuuux' => array(
-        'path' => 'foo/bar',
-        'opts' => array(
-          'query' => array('baz' => 'qux', 'quux' => 'quuux'),
-          'fragment' => 'quuuux',
-        ),
-      ),
-      'foo%20bar?baz=qux%26quux' => array(
-        'path' => 'foo bar',
-        'opts' => array(
-          'query' => array('baz' => 'qux&quux'),
-        ),
-      ),
-      '/' => array(
-        'path' => '<front>',
-        'opts' => array(),
-      ),
-    );
-
-    // Run tests with clean URLs both enabled and disabled
-    foreach (array(TRUE, FALSE) as $clean_url) {
-      variable_set('clean_url', $clean_url);
-      // Run tests with absoulte filtering enabled and disabled
-      foreach (array('full', 'proto-rel', 'path') as $protocol_style) {
-        $filter->settings['protocol_style'] = $protocol_style;
-        $filter->format++;
-        $paths = array();
-        foreach ($test_paths as $path => $args) {
-          $args['opts']['absolute'] = $protocol_style !== 'path';
-          $paths[$path] = _pathologic_content_url($args['path'], $args['opts']);
-          if ($protocol_style === 'proto-rel') {
-            $paths[$path] = _pathologic_url_to_protocol_relative($paths[$path]);
-          }
-        }
-        $t10ns = array(
-          '!clean' => $clean_url ? t('Yes') : t('No'),
-          '!ps' => $protocol_style,
-        );
-
-        $this->assertEqual(
-          _pathologic_filter('<a href="foo"><img src="foo/bar" /></a>', $filter, \
                NULL, LANGUAGE_NONE, NULL, NULL),
-          '<a href="' . $paths['foo'] . '"><img src="' . $paths['foo/bar'] . '" \
                /></a>',
-          t('Simple paths. Clean URLs: !clean; protocol style: !ps.', $t10ns)
-        );
-        $this->assertEqual(
-          _pathologic_filter('<form action="foo/bar?baz"><IMG \
                LONGDESC="foo/bar?baz=qux" /></a>', $filter, NULL, LANGUAGE_NONE, \
                NULL, NULL),
-          '<form action="' . $paths['foo/bar?baz'] . '"><IMG LONGDESC="' . \
                $paths['foo/bar?baz=qux'] . '" /></a>',
-          t('Paths with query string. Clean URLs: !clean; protocol style: !ps.', \
                $t10ns)
-        );
-        $this->assertEqual(
-          _pathologic_filter('<a href="foo/bar#baz">', $filter, NULL, LANGUAGE_NONE, \
                NULL, NULL),
-          '<a href="' . $paths['foo/bar#baz'] . '">',
-          t('Path with fragment. Clean URLs: !clean; protocol style: !ps.', $t10ns)
-        );
-        $this->assertEqual(
-          _pathologic_filter('<a href="#foo">', $filter, NULL, LANGUAGE_NONE, NULL, \
                NULL),
-          '<a href="#foo">',
-          t('Fragment-only links. Clean URLs: !clean; protocol style: !ps.', $t10ns)
-        );
-        $this->assertEqual(
-          _pathologic_filter('<a href="foo/bar?baz=qux&amp;quux=quuux#quuuux">', \
                $filter, NULL, LANGUAGE_NONE, NULL, NULL),
-          '<a href="' . $paths['foo/bar?baz=qux&amp;quux=quuux#quuuux'] . '">',
-          t('Path with query string and fragment. Clean URLs: !clean; protocol \
                style: !ps.', $t10ns)
-        );
-        $this->assertEqual(
-          _pathologic_filter('<a href="foo%20bar?baz=qux%26quux">', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-          '<a href="' . $paths['foo%20bar?baz=qux%26quux'] . '">',
-          t('Path with URL encoded parts')
-        );
-        $this->assertEqual(
-          _pathologic_filter('<a href="/"></a>', $filter, NULL, LANGUAGE_NONE, NULL, \
                NULL),
-          '<a href="' . $paths['/'] . '"></a>',
-          t('Path with just slash. Clean URLs: !clean; protocol style: !ps', $t10ns)
-        );
-      }
-    }
-
-    global $base_path;
-    $this->assertEqual(
-      _pathologic_filter('<a href="' . $base_path . 'foo">bar</a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => FALSE)) \
                .'">bar</a>',
-      t('Paths beginning with $base_path (like WYSIWYG editors like to make)')
-    );
-    global $base_url;
-    $this->assertEqual(
-      _pathologic_filter('<a href="' . $base_url . '/foo">bar</a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => FALSE)) \
                .'">bar</a>',
-      t('Paths beginning with $base_url')
-    );
-
-    // @see http://drupal.org/node/1617944
-    $this->assertEqual(
-      _pathologic_filter('<a href="//example.com/foo">bar</a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="//example.com/foo">bar</a>',
-      t('Off-site schemeless URLs (//example.com/foo) ignored')
-    );
-
-    // Test internal: and all base paths
-    $filter->settings = array(
-      'protocol_style' => 'full',
-      'local_paths' => "http://example.com/qux\nhttp://example.org\n/bananas",
-    );
-    $filter->format++;
-
-    // @see https://drupal.org/node/2030789
-    $this->assertEqual(
-      _pathologic_filter('<a href="//example.org/foo">bar</a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => TRUE)) . \
                '">bar</a>',
-      t('On-site schemeless URLs processed')
-    );
-    $this->assertEqual(
-      _pathologic_filter('<a href="internal:foo">', $filter, NULL, LANGUAGE_NONE, \
                NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => TRUE)) . \
                '">',
-      t('Path Filter compatibility (internal:)')
-    );
-    $this->assertEqual(
-      _pathologic_filter('<a href="files:image.jpeg">', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url(file_create_url('public://image.jpeg'), \
                array('absolute' => TRUE, 'is_file' => TRUE)) . '">',
-      t('Path Filter compatibility (files:)')
-    );
-    $this->assertEqual(
-      _pathologic_filter('<a href="http://example.com/qux/foo"><img \
src="http://example.org/bar.jpeg" longdesc="/bananas/baz" /></a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => TRUE)) . \
'"><img src="' . _pathologic_content_url('bar.jpeg', array('absolute' => TRUE)) . '" \
                longdesc="' . _pathologic_content_url('baz', array('absolute' => \
                TRUE)) . '" /></a>',
-      t('"All base paths for this site" functionality')
-    );
-    $this->assertEqual(
-      _pathologic_filter('<a href="webcal:foo">bar</a>', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="webcal:foo">bar</a>',
-      t('URLs with likely protocols are ignored')
-    );
-    // Test hook_pathologic_alter() implementation.
-    $this->assertEqual(
-      _pathologic_filter('<a href="foo?test­d_foo_qpart">', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="' . _pathologic_content_url('foo', array('absolute' => TRUE, 'query' \
                => array('test' => 'add_foo_qpart', 'foo' => 'bar'))) . '">',
-      t('hook_pathologic_alter(): Alter $url_params')
-    );
-    $this->assertEqual(
-      _pathologic_filter('<a href="bar?test=use_original">', $filter, NULL, \
                LANGUAGE_NONE, NULL, NULL),
-      '<a href="bar?test=use_original">',
-      t('hook_pathologic_alter(): Passthrough with use_original option')
-    );
-
-    // Test paths to existing files when clean URLs are disabled.
-    // @see http://drupal.org/node/1672430
-    variable_set('clean_url', FALSE);
-    $filtered_tag = _pathologic_filter('<img src="misc/druplicon.png" />', $filter, \
                NULL, LANGUAGE_NONE, NULL, NULL);
-    $this->assertTrue(
-      strpos($filtered_tag, 'q=') === FALSE,
-      t('Paths to files don\'t have ?q= when clean URLs are off')
-    );
-
-
-  }
-}
-
-/**
- * Wrapper around url() which does HTML entity decoding and encoding.
- *
- * Since Pathologic works with paths in content, it needs to decode paths which
- * have been HTML-encoded, and re-encode them when done. This is a wrapper
- * around url() which does the same thing so that we can expect the results
- * from it and from Pathologic to still match in our tests.
- *
- * @see url()
- * @see http://drupal.org/node/1672932
- * @see http://www.w3.org/TR/xhtml1/guidelines.html#C_12
- */
-function _pathologic_content_url($path, $options) {
-  // If we should pretend this is a path to a file, temporarily enable clean
-  // URLs if necessary.
-  // @see _pathologic_replace()
-  // @see http://drupal.org/node/1672430
-  if (!empty($options['is_file'])) {
-    $options['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']);
-    if (!$options['orig_clean_url']) {
-      $GLOBALS['conf']['clean_url'] = TRUE;
-    }
-  }
-
-  $url = check_plain(url(htmlspecialchars_decode($path), $options));
-
-  if (!empty($options['is_file']) && !$options['orig_clean_url']) {
-    $GLOBALS['conf']['clean_url'] = FALSE;
-  }
-  return $url;
-}
-
-/**
- * Implements hook_pathologic_alter(), for testing that functionality.
- */
-function pathologic_pathologic_alter(&$url_params, $parts, $settings) {
-  if (is_array($parts['qparts']) && isset($parts['qparts']['test'])) {
-    if ($parts['qparts']['test'] === 'add_foo_qpart') {
-      // Add a "foo" query part
-      if (empty($url_params['options']['query'])) {
-        $url_params['options']['query'] = array();
-      }
-      $url_params['options']['query']['foo'] = 'bar';
-    }
-    elseif ($parts['qparts']['test'] === 'use_original') {
-      $url_params['options']['use_original'] = TRUE;
-    }
-  }
-}


commit 334cd30160c4f887108c4867789e688fc166f948
Author: Torsten Grote <t@grobox.de>
Date:   Tue Mar 25 14:34:10 2014 +0100

    add pathologic module and copy skin

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt new file mode \
100755 index 0000000..d159169
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/LICENSE.txt
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt new file mode \
100644 index 0000000..3b2a5ba
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/README.txt
@@ -0,0 +1,21 @@
+Pathologic
+----------
+
+Project Page:
+http://drupal.org/project/pathologic
+
+By Garrett Albright
+http://drupal.org/user/191212
+
+Originally sponsored by Precision Intermedia
+http://www.precisionintermedia.com/
+
+Thanks to all who have used this module over the years and provided bug reports
+and suggestions via email and the issue queue! I love you all.
+
+Installation & Configuration
+----------------------------
+
+For full installation and configuration instructions, please see this page in
+the Drupal online manual:
+http://drupal.org/node/257026
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php new file \
mode 100644 index 0000000..09760f9
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.api.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Hooks provided by Pathologic.
+ *
+ * @ingroup pathologic
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Allow modules to alter a URL Pathologic is about to create.
+ *
+ * This hook is invoked after Pathologic has torn apart a URL it thinks it can
+ * alter properly and is just about to call the url() function to construct the
+ * new URL. Modules can alter the values that Pathologic is about to send to
+ * url(), or even stop Pathologic from altering a URL entirely.
+ *
+ * @param $url_params
+ *   An array with 'path' and 'options' values, which correspond to the $path
+ *   and $options parameters of the url() function. The 'options' array has an
+ *   extra parameter labeled 'use_original' which is set to FALSE by default.
+ *   This parameter is ignored by url(), but if its value is set to TRUE after
+ *   all alter hook invocations, Pathologic will return the original, unaltered
+ *   path it found in the content instead of calling url() and generating a new
+ *   one. Thus, it provides a way for modules to halt the alteration of paths
+ *   which Pathologic has incorrectly decided should be altered.
+ * @param $parts
+ *   This array contains the result of running parse_url() on the path that
+ *   Pathologic found in content, though Pathologic likely altered some of the
+ *   values in this array since. It contains another parameter, 'original',
+ *   which contains the original URL Pathologic found in the content, unaltered.
+ *   You should not alter this value in any way; to alter how Pathologic
+ *   constructs the new URL, alter $url_params instead.
+ * @param $settings
+ *   This contains the settings Pathologic is using to decide how to alter the
+ *   URL; some settings are from the graphical filter form and alterable by the
+ *   user, while others are determined programmatically. If you're looking for
+ *   the filter settings which Pathologic is currently using (if you've altered
+ *   your own field onto the filter settings form, for example), try looking in
+ *   $settings['current_settings'].
+ *
+ * @see url()
+ * @see parse_url()
+ * @see pathologic_replace()
+ * @see http://drupal.org/node/1762022
+ */
+function hook_pathologic_alter(&$url_params, $parts, $settings) {
+  // If we're linking to the "bananas" subdirectory or something under it, then
+  // have Pathologic pass through the original URL, without altering it.
+  if (preg_match('~^bananas(/.*)?$~', $url_params['path'])) {
+    $url_params['options']['use_original'] = TRUE;
+  }
+
+  // If we're linking to a path like "article/something.html", then prepend
+  // "magazine" to the path, but remove the ".html". The end result will look
+  // like "magazine/article/something".
+  if (preg_match('~^article/(.+)\.html$~', $url_params['path'], $matches)) {
+    $url_params['path'] = 'magazine/article/' . $matches[1];
+  }
+
+  // If the URL doesn't have a "foo" query parameter, then add one.
+  if (!is_array($url_params['options']['query'])) {
+    $url_params['options']['query'] = array();
+  }
+  if (empty($url_params['options']['query']['foo'])) {
+    $url_params['options']['query']['foo'] = 'bar';
+  }
+
+  // If it's a path to a local image, make sure it's using our CDN server.
+  if (preg_match('~\.(png|gif|jpe?g)$~', $url_params['path'])) {
+    $url_params['path'] = 'http://cdn.example.com/' . $url_params['path'];
+    $url_params['options']['external'] = TRUE;
+  }
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info new file \
mode 100644 index 0000000..0016e52
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.info
@@ -0,0 +1,13 @@
+name = Pathologic
+description = Helps avoid broken links and incorrect paths in content.
+package = "Input filters"
+dependencies[] = filter
+core = 7.x
+files[] = pathologic.test
+
+; Information added by Drupal.org packaging script on 2013-12-14
+version = "7.x-2.12"
+core = "7.x"
+project = "pathologic"
+datestamp = "1387055607"
+
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install new file \
mode 100644 index 0000000..9179d16
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.install
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * @file
+ * .install file for Pathologic.
+ */
+
+/**
+ * Re-enable Pathologic under Drupal 7, preserving settings from Drupal 6.
+ */
+function pathologic_update_7000($sandbox) {
+  // Make sure {d6_upgrade_filter} exists. It won't exist for people upgrading
+  // from beta versions of the D7 version of Pathologic on native D7 sites (not
+  // upgraded from D6).
+  if (db_table_exists('d6_upgrade_filter')) {
+    // Get all Pathologic data from {d6_upgrade_filter}.
+    $rez = db_select('d6_upgrade_filter', 'dup')
+      ->fields('dup')
+      ->condition('module', 'pathologic')
+      ->execute();
+    while ($instance = $rez->fetchObject()) {
+      // Load the format
+      if ($format = filter_format_load($instance->format)) {
+        // Load filters.
+        $format->filters = array();
+        // Add the filters
+        foreach (filter_list_format($instance->format) as $filter_name => $filter) {
+          $format->filters[$filter_name] = (array)$filter;
+        }
+        // Add Pathologic
+        $format->filters['pathologic'] = array(
+          'weight' => $instance->weight,
+          'status' => 1,
+          'settings' => array(
+            'absolute' => variable_get('filter_pathologic_absolute_' . \
$instance->format, TRUE), +            'local_paths' => \
variable_get('filter_pathologic_local_paths_' . $instance->format, ''), +          ),
+        );
+        // Save the format
+        filter_format_save($format);
+        // Unset old variables
+        variable_del('filter_pathologic_absolute_' . $instance->format);
+        variable_del('filter_pathologic_local_paths_' . $instance->format);
+      }
+    }
+    // Delete Pathologic data from {d6_upgrade_filter}…?
+    // No, maybe we don't want to actually do that…?
+  }
+}
+
+/**
+ * Convert obsolete "absolute" setting to modern "protocol_style" setting for
+ * each filter instance.
+ */
+function pathologic_update_7200(&$sandbox) {
+  foreach (filter_formats() as $format) {
+    // @see http://drupal.org/node/1304930
+    if (empty($format->filters)) {
+      $format->filters = array();
+      // Add the filters
+      foreach (filter_list_format($format->format) as $filter_name => $filter) {
+        $format->filters[$filter_name] = (array)$filter;
+      }
+    }
+    if (isset($format->filters['pathologic'])) {
+      $format->filters['pathologic']['settings']['protocol_style'] = \
$format->filters['pathologic']['settings']['absolute'] ? 'full' : 'path'; +      \
unset($format->filters['pathologic']['settings']['absolute']); +      \
filter_format_save($format); +    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module new file \
mode 100644 index 0000000..806fd3f
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.module
@@ -0,0 +1,460 @@
+<?php
+
+/**
+ * @file
+ * Pathologic text filter for Drupal.
+ *
+ * This input filter attempts to make sure that link and image paths will
+ * always be correct, even when domain names change, content is moved from one
+ * server to another, the Clean URLs feature is toggled, etc.
+ */
+
+/**
+ * Implements hook_filter_info().
+ */
+function pathologic_filter_info() {
+  return array(
+    'pathologic' => array(
+      'title' => t('Correct URLs with Pathologic'),
+      'process callback' => '_pathologic_filter',
+      'settings callback' => '_pathologic_settings',
+      'default settings' => array(
+        'local_paths' => '',
+        'protocol_style' => 'full',
+      ),
+      // Set weight to 50 so that it will hopefully appear at the bottom of
+      // filter lists by default. 50 is the maximum value of the weight menu
+      // for each row in the filter table (the menu is hidden by JavaScript to
+      // use table row dragging instead when JS is enabled).
+      'weight' => 50,
+    )
+  );
+}
+
+/**
+ * Settings callback for Pathologic.
+ */
+function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, \
$filters) { +  return array(
+    'reminder' => array(
+      '#type' => 'item',
+      '#title' => t('In most cases, Pathologic should be the <em>last</em> filter in \
the &ldquo;Filter processing order&rdquo; list.'), +      '#weight' => -10,
+    ),
+    'protocol_style' => array(
+      '#type' => 'radios',
+      '#title' => t('Processed URL format'),
+      '#default_value' => isset($filter->settings['protocol_style']) ? \
$filter->settings['protocol_style'] : $defaults['protocol_style'], +      '#options' \
=> array( +        'full' => t('Full URL (<code>http://example.com/foo/bar</code>)'),
+        'proto-rel' => t('Protocol relative URL \
(<code>//example.com/foo/bar</code>)'), +        'path' => t('Path relative to server \
root (<code>/foo/bar</code>)'), +      ),
+      '#description' => t('The <em>Full URL</em> option is best for stopping broken \
images and links in syndicated content (such as in RSS feeds), but will likely lead \
to problems if your site is accessible by both HTTP and HTTPS. Paths output with the \
<em>Protocol relative URL</em> option will avoid such problems, but feed readers and \
other software not using up-to-date standards may be confused by the paths. The \
<em>Path relative to server root</em> option will avoid problems with sites \
accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely \
not fix broken images and links in syndicated content.'), +      '#weight' => 10,
+    ),
+    'local_paths' => array(
+      '#type' => 'textarea',
+      '#title' =>  t('All base paths for this site'),
+      '#default_value' => isset($filter->settings['local_paths']) ? \
$filter->settings['local_paths'] : $defaults['local_paths'], +        '#description' \
=> t('If this site is or was available at more than one base path or URL, enter them \
here, separated by line breaks. For example, if this site is live at \
<code>http://example.com/</code> but has a staging version at \
<code>http://dev.example.org/staging/</code>, you would enter both those URLs here. \
If confused, please read <a href="!docs">Pathologic&rsquo;s documentation</a> for \
more information about this option and what it affects.', array('!docs' => \
'http://drupal.org/node/257026')), +      '#weight' => 20,
+    ),
+  );
+}
+
+/**
+ * Pathologic filter callback.
+ *
+ * Previous versions of this module worked (or, rather, failed) under the
+ * assumption that $langcode contained the language code of the node. Sadly,
+ * this isn't the case.
+ * @see http://drupal.org/node/1812264
+ * However, it turns out that the language of the current node isn't as
+ * important as the language of the node we're linking to, and even then only
+ * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE
+ * FUTURE, ALBRIGHT.
+ *
+ * The below code uses the @ operator before parse_url() calls because in PHP
+ * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @
+ * operator is usually a pretty strong indicator of code smell, but please don't
+ * judge me by it in this case; ordinarily, I despise its use, but I can't find
+ * a cleaner way to avoid this problem (using set_error_handler() could work,
+ * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at
+ * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of
+ * Pathologic.
+ * @see https://drupal.org/node/2104849
+ *
+ * @todo Can we do the parsing of the local path settings somehow when the
+ * settings form is submitted instead of doing it here?
+ */
+function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) {
+  // Get the base URL and explode it into component parts. We add these parts
+  // to the exploded local paths settings later.
+  global $base_url;
+  $base_url_parts = @parse_url($base_url . '/');
+  // Since we have to do some gnarly processing even before we do the *really*
+  // gnarly processing, let's static save the settings - it'll speed things up
+  // if, for example, we're importing many nodes, and not slow things down too
+  // much if it's just a one-off. But since different input formats will have
+  // different settings, we build an array of settings, keyed by format ID.
+  $cached_settings = &drupal_static(__FUNCTION__, array());
+  if (!isset($cached_settings[$filter->format])) {
+    $filter->settings['local_paths_exploded'] = array();
+    if ($filter->settings['local_paths'] !== '') {
+      // Build an array of the exploded local paths for this format's settings.
+      // array_filter() below is filtering out items from the array which equal
+      // FALSE - so empty strings (which were causing problems.
+      // @see http://drupal.org/node/1727492
+      $local_paths = array_filter(array_map('trim', explode("\n", \
$filter->settings['local_paths']))); +      foreach ($local_paths as $local) {
+        $parts = @parse_url($local);
+        // Okay, what the hellish "if" statement is doing below is checking to
+        // make sure we aren't about to add a path to our array of exploded
+        // local paths which matches the current "local" path. We consider it
+        // not a match, if…
+        // @todo: This is pretty horrible. Can this be simplified?
+        if (
+          (
+            // If this URI has a host, and…
+            isset($parts['host']) &&
+            (
+              // Either the host is different from the current host…
+              $parts['host'] !== $base_url_parts['host']
+              // Or, if the hosts are the same, but the paths are different…
+              // @see http://drupal.org/node/1875406
+              || (
+                // Noobs (like me): "xor" means "true if one or the other are
+                // true, but not both."
+                (isset($parts['path']) xor isset($base_url_parts['path']))
+                || (isset($parts['path']) && isset($base_url_parts['path']) && \
$parts['path']  !== $base_url_parts['path']) +              )
+            )
+          ) ||
+          // Or…
+          (
+            // The URI doesn't have a host…
+            !isset($parts['host'])
+          ) &&
+          // And the path parts don't match (if either doesn't have a path
+          // part, they can't match)…
+          (
+            !isset($parts['path']) ||
+            !isset($base_url_parts['path']) ||
+            $parts['path'] !== $base_url_parts['path']
+          )
+        ) {
+          // Add it to the list.
+          $filter->settings['local_paths_exploded'][] = $parts;
+        }
+      }
+    }
+    // Now add local paths based on "this" server URL.
+    $filter->settings['local_paths_exploded'][] = array('path' => \
$base_url_parts['path']); +    $filter->settings['local_paths_exploded'][] = \
array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); +    // \
We'll also just store the host part separately for easy access. +    \
$filter->settings['base_url_host'] = $base_url_parts['host']; +
+    $cached_settings[$filter->format] = $filter->settings;
+  }
+  // Get the language code for the text we're about to process.
+  $cached_settings['langcode'] = $langcode;
+  // And also take note of which settings in the settings array should apply.
+  $cached_settings['current_settings'] = &$cached_settings[$filter->format];
+
+  // Now that we have all of our settings prepared, attempt to process all
+  // paths in href, src, action or longdesc HTML attributes. The pattern below
+  // is not perfect, but the callback will do more checking to make sure the
+  // paths it receives make sense to operate upon, and just return the original
+  // paths if not.
+  return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', \
'_pathologic_replace', $text); +}
+
+/**
+ * Process and replace paths. preg_replace_callback() callback.
+ */
+function _pathologic_replace($matches) {
+  // Get the base path.
+  global $base_path;
+
+  // Get the settings for the filter. Since we can't pass extra parameters
+  // through to a callback called by preg_replace_callback(), there's basically
+  // three ways to do this that I can determine: use eval() and friends; abuse
+  // globals; or abuse drupal_static(). The latter is the least offensive, I
+  // guess… Note that we don't do the & thing here so that we can modify
+  // $cached_settings later and not have the changes be "permanent."
+  $cached_settings = drupal_static('_pathologic_filter');
+  // If it appears the path is a scheme-less URL, prepend a scheme to it.
+  // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it
+  // looks like Pathologic can't handle the URL, it will return the scheme-less
+  // original.
+  // @see https://drupal.org/node/1617944
+  // @see https://drupal.org/node/2030789
+  if (strpos($matches[2], '//') === 0) {
+    if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') {
+      $matches[2] = 'https:' . $matches[2];
+    }
+    else {
+      $matches[2] = 'http:' . $matches[2];
+    }
+  }
+  // Now parse the URL after reverting HTML character encoding.
+  // @see http://drupal.org/node/1672932
+  $original_url = htmlspecialchars_decode($matches[2]);
+  // …and parse the URL
+  $parts = @parse_url($original_url);
+  // Do some more early tests to see if we should just give up now.
+  if (
+    // If parse_url() failed, give up.
+    $parts === FALSE
+    || (
+      // If there's a scheme part and it doesn't look useful, bail out.
+      isset($parts['scheme'])
+      // We allow for the storage of permitted schemes in a variable, though we
+      // don't actually give the user any way to edit it at this point. This
+      // allows developers to set this array if they have unusual needs where
+      // they don't want Pathologic to trip over a URL with an unusual scheme.
+      // @see http://drupal.org/node/1834308
+      // "files" and "internal" are for Path Filter compatibility.
+      && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', \
array('http', 'https', 'files', 'internal'))) +    )
+    // Bail out if it looks like there's only a fragment part.
+    || (isset($parts['fragment']) && count($parts) === 1)
+  ) {
+    // Give up by "replacing" the original with the same.
+    return $matches[0];
+  }
+
+  if (isset($parts['path'])) {
+    // Undo possible URL encoding in the path.
+    // @see http://drupal.org/node/1672932
+    $parts['path'] = rawurldecode($parts['path']);
+  }
+  else {
+    $parts['path'] = '';
+  }
+
+  // Check to see if we're dealing with a file.
+  // @todo Should we still try to do path correction on these files too?
+  if (isset($parts['scheme']) && $parts['scheme'] === 'files') {
+    // Path Filter "files:" support. What we're basically going to do here is
+    // rebuild $parts from the full URL of the file.
+    $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . \
$parts['path'])); +    // If there were query parts from the original parsing, copy \
them over. +    if (!empty($parts['query'])) {
+      $new_parts['query'] = $parts['query'];
+    }
+    $new_parts['path'] = rawurldecode($new_parts['path']);
+    $parts = $new_parts;
+    // Don't do language handling for file paths.
+    $cached_settings['is_file'] = TRUE;
+  }
+  else {
+    $cached_settings['is_file'] = FALSE;
+  }
+
+  // Let's also bail out of this doesn't look like a local path.
+  $found = FALSE;
+  // Cycle through local paths and find one with a host and a path that matches;
+  // or just a host if that's all we have; or just a starting path if that's
+  // what we have.
+  foreach ($cached_settings['current_settings']['local_paths_exploded'] as \
$exploded) { +    // If a path is available in both…
+    if (isset($exploded['path']) && isset($parts['path'])
+      // And the paths match…
+      && strpos($parts['path'], $exploded['path']) === 0
+      // And either they have the same host, or both have no host…
+      && (
+        (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === \
$parts['host']) +        || (!isset($exploded['host']) && !isset($parts['host']))
+      )
+    ) {
+      // Remove the shared path from the path. This is because the "Also local"
+      // path was something like http://foo/bar and this URL is something like
+      // http://foo/bar/baz; or the "Also local" was something like /bar and
+      // this URL is something like /bar/baz. And we only care about the /baz
+      // part.
+      $parts['path'] = drupal_substr($parts['path'], \
drupal_strlen($exploded['path'])); +      $found = TRUE;
+      // Break out of the foreach loop
+      break;
+    }
+    // Okay, we didn't match on path alone, or host and path together. Can we
+    // match on just host? Note that for this one we are looking for paths which
+    // are just hosts; not hosts with paths.
+    elseif ((isset($parts['host']) && !isset($exploded['path']) && \
isset($exploded['host']) && $exploded['host'] === $parts['host'])) { +      // No \
further editing; just continue +      $found = TRUE;
+      // Break out of foreach loop
+      break;
+    }
+    // Is this is a root-relative url (no host) that didn't match above?
+    // Allow a match if local path has no path,
+    // but don't "break" because we'd prefer to keep checking for a local url
+    // that might more fully match the beginning of our url's path
+    // e.g.: if our url is /foo/bar we'll mark this as a match for
+    // http://example.com but want to keep searching and would prefer a match
+    // to http://example.com/foo if that's configured as a local path
+    elseif (!isset($parts['host']) && (!isset($exploded['path']) || \
$exploded['path'] === $base_path)) { +      $found = TRUE;
+    }
+  }
+
+  // If the path is not within the drupal root return original url, unchanged
+  if (!$found) {
+    return $matches[0];
+  }
+
+  // Okay, format the URL.
+  // If there's still a slash lingering at the start of the path, chop it off.
+  $parts['path'] = ltrim($parts['path'],'/');
+
+  // Examine the query part of the URL. Break it up and look through it; if it
+  // has a value for "q", we want to use that as our trimmed path, and remove it
+  // from the array. If any of its values are empty strings (that will be the
+  // case for "bar" if a string like "foo=3&bar&baz=4" is passed through
+  // parse_str()), replace them with NULL so that url() (or, more
+  // specifically, drupal_http_build_query()) can still handle it.
+  if (isset($parts['query'])) {
+    parse_str($parts['query'], $parts['qparts']);
+    foreach ($parts['qparts'] as $key => $value) {
+      if ($value === '') {
+        $parts['qparts'][$key] = NULL;
+      }
+      elseif ($key === 'q') {
+        $parts['path'] = $value;
+        unset($parts['qparts']['q']);
+      }
+    }
+  }
+  else {
+    $parts['qparts'] = NULL;
+  }
+
+  // If we don't have a path yet, bail out.
+  if (!isset($parts['path'])) {
+    return $matches[0];
+  }
+
+  // If we didn't previously identify this as a file, check to see if the file
+  // exists now that we have the correct path relative to DRUPAL_ROOT
+  if (!$cached_settings['is_file']) {
+    $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . \
'/'. $parts['path']); +  }
+
+  // Okay, deal with language stuff.
+  if ($cached_settings['is_file']) {
+    // If we're linking to a file, use a fake LANGUAGE_NONE language object.
+    // Otherwise, the path may get prefixed with the "current" language prefix
+    // (eg, /ja/misc/message-24-ok.png)
+    $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => \
''); +  }
+  else {
+    // Let's see if we can split off a language prefix from the path.
+    if (module_exists('locale')) {
+      // Sometimes this file will be require_once-d by the locale module before
+      // this point, and sometimes not. We require_once it ourselves to be sure.
+      require_once DRUPAL_ROOT . '/includes/language.inc';
+      list($language_obj, $path) = language_url_split_prefix($parts['path'], \
language_list()); +      if ($language_obj) {
+        $parts['path'] = $path;
+        $parts['language_obj'] = $language_obj;
+      }
+    }
+  }
+
+  // If we get to this point and $parts['path'] is now an empty string (which
+  // will be the case if the path was originally just "/"), then we
+  // want to link to <front>.
+  if ($parts['path'] === '') {
+    $parts['path'] = '<front>';
+  }
+  // Build the parameters we will send to url()
+  $url_params = array(
+    'path' => $parts['path'],
+    'options' => array(
+      'query' => $parts['qparts'],
+      'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL,
+      // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but
+      // not if it's 'path'.
+      'absolute' => $cached_settings['current_settings']['protocol_style'] !== \
'path', +      // If we seem to have found a language for the path, pass it along to
+      // url(). Otherwise, ignore the 'language' parameter.
+      'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL,
+      // A special parameter not actually used by url(), but we use it to see if
+      // an alter hook implementation wants us to just pass through the original
+      // URL.
+      'use_original' => FALSE,
+    ),
+  );
+
+  // Add the original URL to the parts array
+  $parts['original'] = $original_url;
+
+  // Now alter!
+  // @see http://drupal.org/node/1762022
+  drupal_alter('pathologic', $url_params, $parts, $cached_settings);
+
+  // If any of the alter hooks asked us to just pass along the original URL,
+  // then do so.
+  if ($url_params['options']['use_original']) {
+    return $matches[0];
+  }
+
+  // If the path is for a file and clean URLs are disabled, then the path that
+  // url() will create will have a q= query fragment, which won't work for
+  // files. To avoid that, we use this trick to temporarily turn clean URLs on.
+  // This is horrible, but it seems to be the sanest way to do this.
+  // @see http://drupal.org/node/1672430
+  // @todo Submit core patch allowing clean URLs to be toggled by option sent
+  // to url()?
+  if (!empty($cached_settings['is_file'])) {
+    $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']);
+    if (!$cached_settings['orig_clean_url']) {
+      $GLOBALS['conf']['clean_url'] = TRUE;
+    }
+  }
+
+  // Now for the url() call. Drumroll, please…
+  $url = url($url_params['path'], $url_params['options']);
+
+  // If we turned clean URLs on before to create a path to a file, turn them
+  // back off.
+  if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) {
+    $GLOBALS['conf']['clean_url'] = FALSE;
+  }
+
+  // If we need to create a protocol-relative URL, then convert the absolute
+  // URL we have now.
+  if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') {
+    // Now, what might have happened here is that url() returned a URL which
+    // isn't on "this" server due to a hook_url_outbound_alter() implementation.
+    // We don't want to convert the URL in that case. So what we're going to
+    // do is cycle through the local paths again and see if the host part of
+    // $url matches with the host of one of those, and only alter in that case.
+    $url_parts = @parse_url($url);
+    if (!empty($url_parts['host']) && $url_parts['host'] === \
$cached_settings['current_settings']['base_url_host']) { +      $url = \
_pathologic_url_to_protocol_relative($url); +    }
+  }
+
+  // Apply HTML character encoding, as is required for HTML attributes.
+  // @see http://drupal.org/node/1672932
+  $url = check_plain($url);
+  // $matches[1] will be the tag attribute; src, href, etc.
+  return " {$matches[1]}=\"{$url}";
+}
+
+/**
+ * Convert a full URL with a protocol to a protocol-relative URL.
+ *
+ * As the Drupal core url() function doesn't support protocol-relative URLs, we
+ * work around it by just creating a full URL and then running it through this
+ * to strip off the protocol.
+ *
+ * Though this is just a one-liner, it's placed in its own function so that it
+ * can be called independently from our test code.
+ */
+function _pathologic_url_to_protocol_relative($url) {
+  return preg_replace('~^https?://~', '//', $url);
+}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test \
b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test new file \
mode 100644 index 0000000..c82d011
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/pathologic/pathologic.test
@@ -0,0 +1,276 @@
+<?php
+
+/**
+ * @file
+ * Pathologic behavior testing.
+ */
+
+/**
+ * Tests that Pathologic ain't broke.
+ *
+ * We extend FilterUnitTestCase because it has some nice methods that we also
+ * want to be able to use.
+ *
+ * Note to self: The method to pass bits of text through are fail() or pass().
+ */
+class PathologicTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Pathologic path filtering',
+      'description' => 'Test Pathologic&rsquo;s path translation and conversion.',
+      'group' => 'Filter',
+    );
+  }
+
+  function setUp() {
+    parent::setUp('pathologic');
+  }
+
+  function testPathologic() {
+    // Start by testing our function to build protocol-relative URLs
+    $this->assertEqual(
+      _pathologic_url_to_protocol_relative('http://example.com/foo/bar'),
+      '//example.com/foo/bar',
+      t('Protocol-relative URL creation with http:// URL')
+    );
+    $this->assertEqual(
+      _pathologic_url_to_protocol_relative('https://example.org/baz'),
+      '//example.org/baz',
+      t('Protocol-relative URL creation with https:// URL')
+    );
+
+    // Build a phony filter
+    $filter = new stdClass;
+    $filter->callback = '_pathologic';
+    $filter->settings = array(
+      'protocol_style' => 'full',
+      'local_paths' => '',
+    );
+    $filter->format = 0;
+
+    // Build some paths to check against
+    $test_paths = array(
+      'foo' => array(
+        'path' => 'foo',
+        'opts' => array()
+      ),
+      'foo/bar' => array(
+        'path' => 'foo/bar',
+        'opts' => array()
+      ),
+      'foo/bar?baz' => array(
+        'path' => 'foo/bar',
+        'opts' => array('query' => array('baz' => NULL))
+      ),
+      'foo/bar?baz=qux' => array(
+        'path' => 'foo/bar',
+        'opts' => array('query' => array('baz' => 'qux'))
+      ),
+      'foo/bar#baz' => array(
+        'path' => 'foo/bar',
+        'opts' => array('fragment' => 'baz'),
+      ),
+      'foo/bar?baz=qux&amp;quux=quuux#quuuux' => array(
+        'path' => 'foo/bar',
+        'opts' => array(
+          'query' => array('baz' => 'qux', 'quux' => 'quuux'),
+          'fragment' => 'quuuux',
+        ),
+      ),
+      'foo%20bar?baz=qux%26quux' => array(
+        'path' => 'foo bar',
+        'opts' => array(
+          'query' => array('baz' => 'qux&quux'),
+        ),
+      ),
+      '/' => array(
+        'path' => '<front>',
+        'opts' => array(),
+      ),
+    );
+
+    // Run tests with clean URLs both enabled and disabled
+    foreach (array(TRUE, FALSE) as $clean_url) {
+      variable_set('clean_url', $clean_url);
+      // Run tests with absoulte filtering enabled and disabled
+      foreach (array('full', 'proto-rel', 'path') as $protocol_style) {
+        $filter->settings['protocol_style'] = $protocol_style;
+        $filter->format++;
+        $paths = array();
+        foreach ($test_paths as $path => $args) {
+          $args['opts']['absolute'] = $protocol_style !== 'path';
+          $paths[$path] = _pathologic_content_url($args['path'], $args['opts']);
+          if ($protocol_style === 'proto-rel') {
+            $paths[$path] = _pathologic_url_to_protocol_relative($paths[$path]);
+          }
+        }
+        $t10ns = array(
+          '!clean' => $clean_url ? t('Yes') : t('No'),
+          '!ps' => $protocol_style,
+        );
+
+        $this->assertEqual(
+          _pathologic_filter('<a href="foo"><img src="foo/bar" /></a>', $filter, \
NULL, LANGUAGE_NONE, NULL, NULL), +          '<a href="' . $paths['foo'] . '"><img \
src="' . $paths['foo/bar'] . '" /></a>', +          t('Simple paths. Clean URLs: \
!clean; protocol style: !ps.', $t10ns) +        );
+        $this->assertEqual(
+          _pathologic_filter('<form action="foo/bar?baz"><IMG \
LONGDESC="foo/bar?baz=qux" /></a>', $filter, NULL, LANGUAGE_NONE, NULL, NULL), +      \
'<form action="' . $paths['foo/bar?baz'] . '"><IMG LONGDESC="' . \
$paths['foo/bar?baz=qux'] . '" /></a>', +          t('Paths with query string. Clean \
URLs: !clean; protocol style: !ps.', $t10ns) +        );
+        $this->assertEqual(
+          _pathologic_filter('<a href="foo/bar#baz">', $filter, NULL, LANGUAGE_NONE, \
NULL, NULL), +          '<a href="' . $paths['foo/bar#baz'] . '">',
+          t('Path with fragment. Clean URLs: !clean; protocol style: !ps.', $t10ns)
+        );
+        $this->assertEqual(
+          _pathologic_filter('<a href="#foo">', $filter, NULL, LANGUAGE_NONE, NULL, \
NULL), +          '<a href="#foo">',
+          t('Fragment-only links. Clean URLs: !clean; protocol style: !ps.', $t10ns)
+        );
+        $this->assertEqual(
+          _pathologic_filter('<a href="foo/bar?baz=qux&amp;quux=quuux#quuuux">', \
$filter, NULL, LANGUAGE_NONE, NULL, NULL), +          '<a href="' . \
$paths['foo/bar?baz=qux&amp;quux=quuux#quuuux'] . '">', +          t('Path with query \
string and fragment. Clean URLs: !clean; protocol style: !ps.', $t10ns) +        );
+        $this->assertEqual(
+          _pathologic_filter('<a href="foo%20bar?baz=qux%26quux">', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +          '<a href="' . \
$paths['foo%20bar?baz=qux%26quux'] . '">', +          t('Path with URL encoded \
parts') +        );
+        $this->assertEqual(
+          _pathologic_filter('<a href="/"></a>', $filter, NULL, LANGUAGE_NONE, NULL, \
NULL), +          '<a href="' . $paths['/'] . '"></a>',
+          t('Path with just slash. Clean URLs: !clean; protocol style: !ps', $t10ns)
+        );
+      }
+    }
+
+    global $base_path;
+    $this->assertEqual(
+      _pathologic_filter('<a href="' . $base_path . 'foo">bar</a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', \
array('absolute' => FALSE)) .'">bar</a>', +      t('Paths beginning with $base_path \
(like WYSIWYG editors like to make)') +    );
+    global $base_url;
+    $this->assertEqual(
+      _pathologic_filter('<a href="' . $base_url . '/foo">bar</a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', \
array('absolute' => FALSE)) .'">bar</a>', +      t('Paths beginning with $base_url')
+    );
+
+    // @see http://drupal.org/node/1617944
+    $this->assertEqual(
+      _pathologic_filter('<a href="//example.com/foo">bar</a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="//example.com/foo">bar</a>',
+      t('Off-site schemeless URLs (//example.com/foo) ignored')
+    );
+
+    // Test internal: and all base paths
+    $filter->settings = array(
+      'protocol_style' => 'full',
+      'local_paths' => "http://example.com/qux\nhttp://example.org\n/bananas",
+    );
+    $filter->format++;
+
+    // @see https://drupal.org/node/2030789
+    $this->assertEqual(
+      _pathologic_filter('<a href="//example.org/foo">bar</a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', \
array('absolute' => TRUE)) . '">bar</a>', +      t('On-site schemeless URLs \
processed') +    );
+    $this->assertEqual(
+      _pathologic_filter('<a href="internal:foo">', $filter, NULL, LANGUAGE_NONE, \
NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', array('absolute' => \
TRUE)) . '">', +      t('Path Filter compatibility (internal:)')
+    );
+    $this->assertEqual(
+      _pathologic_filter('<a href="files:image.jpeg">', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . \
_pathologic_content_url(file_create_url('public://image.jpeg'), array('absolute' => \
TRUE, 'is_file' => TRUE)) . '">', +      t('Path Filter compatibility (files:)')
+    );
+    $this->assertEqual(
+      _pathologic_filter('<a href="http://example.com/qux/foo"><img \
src="http://example.org/bar.jpeg" longdesc="/bananas/baz" /></a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', \
array('absolute' => TRUE)) . '"><img src="' . _pathologic_content_url('bar.jpeg', \
array('absolute' => TRUE)) . '" longdesc="' . _pathologic_content_url('baz', \
array('absolute' => TRUE)) . '" /></a>', +      t('"All base paths for this site" \
functionality') +    );
+    $this->assertEqual(
+      _pathologic_filter('<a href="webcal:foo">bar</a>', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="webcal:foo">bar</a>',
+      t('URLs with likely protocols are ignored')
+    );
+    // Test hook_pathologic_alter() implementation.
+    $this->assertEqual(
+      _pathologic_filter('<a href="foo?test­d_foo_qpart">', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="' . _pathologic_content_url('foo', \
array('absolute' => TRUE, 'query' => array('test' => 'add_foo_qpart', 'foo' => \
'bar'))) . '">', +      t('hook_pathologic_alter(): Alter $url_params')
+    );
+    $this->assertEqual(
+      _pathologic_filter('<a href="bar?test=use_original">', $filter, NULL, \
LANGUAGE_NONE, NULL, NULL), +      '<a href="bar?test=use_original">',
+      t('hook_pathologic_alter(): Passthrough with use_original option')
+    );
+
+    // Test paths to existing files when clean URLs are disabled.
+    // @see http://drupal.org/node/1672430
+    variable_set('clean_url', FALSE);
+    $filtered_tag = _pathologic_filter('<img src="misc/druplicon.png" />', $filter, \
NULL, LANGUAGE_NONE, NULL, NULL); +    $this->assertTrue(
+      strpos($filtered_tag, 'q=') === FALSE,
+      t('Paths to files don\'t have ?q= when clean URLs are off')
+    );
+
+
+  }
+}
+
+/**
+ * Wrapper around url() which does HTML entity decoding and encoding.
+ *
+ * Since Pathologic works with paths in content, it needs to decode paths which
+ * have been HTML-encoded, and re-encode them when done. This is a wrapper
+ * around url() which does the same thing so that we can expect the results
+ * from it and from Pathologic to still match in our tests.
+ *
+ * @see url()
+ * @see http://drupal.org/node/1672932
+ * @see http://www.w3.org/TR/xhtml1/guidelines.html#C_12
+ */
+function _pathologic_content_url($path, $options) {
+  // If we should pretend this is a path to a file, temporarily enable clean
+  // URLs if necessary.
+  // @see _pathologic_replace()
+  // @see http://drupal.org/node/1672430
+  if (!empty($options['is_file'])) {
+    $options['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']);
+    if (!$options['orig_clean_url']) {
+      $GLOBALS['conf']['clean_url'] = TRUE;
+    }
+  }
+
+  $url = check_plain(url(htmlspecialchars_decode($path), $options));
+
+  if (!empty($options['is_file']) && !$options['orig_clean_url']) {
+    $GLOBALS['conf']['clean_url'] = FALSE;
+  }
+  return $url;
+}
+
+/**
+ * Implements hook_pathologic_alter(), for testing that functionality.
+ */
+function pathologic_pathologic_alter(&$url_params, $parts, $settings) {
+  if (is_array($parts['qparts']) && isset($parts['qparts']['test'])) {
+    if ($parts['qparts']['test'] === 'add_foo_qpart') {
+      // Add a "foo" query part
+      if (empty($url_params['options']['query'])) {
+        $url_params['options']['query'] = array();
+      }
+      $url_params['options']['query']['foo'] = 'bar';
+    }
+    elseif ($parts['qparts']['test'] === 'use_original') {
+      $url_params['options']['use_original'] = TRUE;
+    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/README.txt \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/README.txt new file mode 100644
index 0000000..e942521
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/README.txt
@@ -0,0 +1,4 @@
+
+This directory should be used to place downloaded and custom themes
+which are common to all sites. This will allow you to more easily
+update Drupal core files.
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/custom.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/custom.css new file mode \
100644 index 0000000..94c51dd
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/custom.css
@@ -0,0 +1,465 @@
+html {
+	background: #E7E7E7;
+}
+
+body {
+	/* background: #FFFFFF url(../images/body.jpg) repeat-x top left; */
+	text-align:center;
+}
+
+body.mceContentBody {
+	text-align: left;
+	background: none repeat scroll 0 0 #FFFFFF;
+}
+
+/* Header Definitions */
+
+div#header {
+	padding-top: 10px;
+	text-align: center;
+}
+
+div#header .container {
+	margin: auto;
+	width: 70%;
+	min-width: 975px;
+	padding-left: 25px;
+	text-align: left;
+}
+
+
+div.body-field-wrapper {
+    width: 95%;
+}
+
+/* Hide the breadcrumbs */
+.breadcrumb {
+    display: none;
+    visibility: hidden;
+}
+
+#root {
+    background: #e7e7e7 url(../images/root.jpg) repeat-x top left;
+    min-height: 150px;
+}
+
+#root div.container {
+	background: transparent url(../images/bottom.png) no-repeat bottom left;
+	width: 70%;
+	min-width: 1000px;
+}
+
+#navlist li {
+        float: left;
+        line-height: 55px;
+        width: 115px;
+        list-style: none;
+        margin-top: 1px;
+    }
+
+#navlist .first {
+        margin-left: -21px;
+    }
+
+#navlist li a {
+        color: #5C5C5C;
+        text-decoration: none;
+        text-align: center;
+        display: block;
+        font-size: 120%;
+        font-weight: bold;
+    }
+
+#navlist li a.active, #navlist li.active-trail {
+	background: transparent url(../images/menu.jpg) no-repeat bottom left;
+}
+
+/* Sidebar */
+
+div#right-sidebar {
+	border-radius: 10px 10px 10px 10px;
+	border: 1px solid #B2B2B2;
+	float: right;
+	margin: 10px 0px 20px 10px;
+	min-width: 185px;
+	max-width: 18%;
+}
+
+div.region-right-sidebar {
+	padding: 5pt;
+}
+
+div#right-sidebar div.block h2 {
+	text-align: center;
+	font-size: 12pt;
+	font-weight: bold;
+	margin-bottom: 1pt;
+}
+
+div#right-sidebar div.block ul {
+	list-style: none;
+}
+
+div#right-sidebar div.block img {
+	padding: 2px 5px 6px 0;
+	vertical-align: middle;
+}
+
+div#right-sidebar #block-user-login .content {
+	text-align: center;
+}
+
+
+/* Persistent for Nivo Slider */
+
+div.slider-wrapper {
+    box-shadow: 3px 3px 5px 6px #CCCCCC;
+    margin: 15px;
+}
+
+
+/* Content Area */
+
+div#content {
+	float: left;
+	width: 80%;
+}
+
+.content h1, .content h2, .content h2 a {
+	color: #5c5c5c;
+	font-weight: normal;
+	text-shadow: 0 2px 2px #FFFFFF;
+}
+
+.content .node {
+	margin-bottom: 15px;
+}
+
+.content table tbody p {
+	background: none;
+}
+
+.content .clear-block .submitted {
+	font-style: italic;
+	position: relative;
+	top: -1.5em;
+}
+
+.content .submitted {
+	background-color: #F1F1F1;
+	display: inline-block;
+	padding: 3px;
+	margin-bottom: 15px;
+}
+
+    /*
+     * Hide the link to the user's blog on planet.
+     *
+     * Accidently also removes the 'Read more...' links.. :/
+     */
+/*    .content div.node.clear-block ul.links.inline {
+            display: none;
+            visibility: hidden;
+        }
+*/
+
+/*
+ * Float the user image on blog entries and comments
+ */
+.user-picture, .comment .submitted {
+        clear: right;
+        float: right;
+        padding-left: 1em;
+    }
+
+pre {
+        background: #DEDEDE;
+        margin: 1.5em 0;
+        padding: 10px;
+        white-space: pre-wrap;
+    }
+
+pre, code, tt {
+        font: 1em 'andale mono', 'lucida console', monospace;
+        line-height: 1.5;
+    }
+
+/*
+ * Footer on website divided by line across width of #container, then
+ * with a little margin in comes the website footer block -aligned in the
+ * center.
+ */
+div#footer {
+	height: 35px;
+	vertical-align: middle;
+	padding-bottom: 12px;
+	width: 80%;
+}
+
+div#footer div.region-footer {
+	float: left;
+	width: 50%;
+	font-size: 8pt;
+	color: rgb(134,134,134);
+}
+
+div#footer-icons {
+	float: right;
+	width: 50%;
+	text-align: right;
+}
+
+
+/* Front Page Block Views */
+
+#block-views-planet-block,
+#block-views-tweets-block {
+  width: 49%;
+  float: left;
+  margin-top: 15px;
+}
+
+#block-views-tweets-block {
+  float: right;
+}
+
+#block-views-planet-block h2,
+#block-views-tweets-block h2 {
+  font-size: 12pt;
+  font-weight: bold;
+  margin: 0 0 3 0;
+  width: 100%;
+  border-bottom: 1px solid #b2b2b2;
+}
+
+#block-views-planet-block h2 a,
+#block-views-tweets-block h2 a {
+	color: #000000;
+}
+
+.tweet-view td.views-field-text {
+	padding-left: 5pt;
+}
+
+/* hack to make nivo slider centered */
+.page-node-13 div#block-system-main div.content {
+	text-align: center
+}
+
+
+.span-18 {
+  width: 100%;
+}
+
+.views-table thead {
+  display: none;
+}
+
+tr.even, tr.odd {
+ background-color: transparent;
+}
+
+ul.help-matrix {
+  list-style: none;
+}
+
+ul.help-matrix > li
+{
+  margin: 10px 10px;
+  width: 46%;
+  display: inline-block;
+  vertical-align: top;
+}
+
+ul.help-matrix > li p
+{
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+}
+
+
+ul.community-matrix {
+  list-style: none;
+}
+
+ul.community-matrix > li
+{
+  margin: 10px 10px;
+  width: 46%;
+  display: inline-block;
+  vertical-align: top;
+}
+
+ul.community-matrix > li p
+{
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+}
+
+ul#subnavlist
+{
+  background: transparent url("/sites/all/themes/kolab/images/line.png") no-repeat \
scroll center bottom; +  padding-bottom: 10px;
+  padding-top: 10px;
+  text-align: center;
+  width: 70%;
+}
+
+#subnavlist li
+{
+  display: inline;
+  list-style-type: none;
+  padding: 10px;
+  text-align: center;
+  font-size: 120%;
+  font-weight: bold;
+}
+
+#subnavlist li a.active
+{
+  color: #5C5C5C;
+}
+
+#getkolab {
+    background-color: #EAF5FF;
+    border: 2px solid #ccc;
+    border-radius: 15px 15px 15px 15px;
+    box-shadow: 5px 5px 2px #888888;
+    font-weight: bold;
+    height: 40px;
+    line-height: 40px;
+    padding-left: 10px;
+    padding-right: 10px;
+}
+
+
+.kolab-feature-box,
+.kolab-scenario-box {
+  width: 23%;
+  float: left;
+  display: inline-block;
+  padding: 0 0 0 1em;
+}
+
+.kolab-feature-box h3 {
+  text-align: center;
+}
+
+.kolab-feature-box img {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.small-shadow {
+  box-shadow: 5px 5px 2px #888888;
+}
+
+.month-view td {
+  height: 3em;
+}
+
+/* for blog posts aggregated from FSFE blogs */
+img.alignright, div.alignright {
+	float: right;
+	margin: 10px 0 5px 10px;
+	background-color: #F3F3F3;
+	border: 1px solid #DDDDDD;
+	border-radius: 3px 3px 3px 3px;
+	padding: 5px;
+}
+img.alignleft, div.alignleft {
+	float: left;
+	margin: 10px 10px 5px 0;
+	background-color: #F3F3F3;
+	border: 1px solid #DDDDDD;
+	border-radius: 3px 3px 3px 3px;
+	padding: 5px;
+}
+img.aligncenter, div.aligncenter {
+	display: block;
+	margin: 10px auto;
+	background-color: #F3F3F3;
+	border: 1px solid #DDDDDD;
+	border-radius: 3px 3px 3px 3px;
+	padding: 5px;
+}
+
+.tabbed-area { margin: 0 0 120px 0; }
+.box-wrap { position: relative; min-height: 250px; }
+.tabbed-area div div { background: white; padding: 20px; min-height: 250px; \
position: absolute; top: -1px; left: 0; width: 100%; } +.tabbed-area div div, .tabz \
li a { border: 1px solid #ccc; } +#box-one:target, #box-two:target, \
#box-three:target, #box-four-target { z-index: 1; } +
+#ie-test { position: relative; width: 100%; }
+#boxLinks { list-style: none; overflow: hidden; padding-right: 25px; margin: 0; }
+#boxLinks li {  display: inline; float: right; }
+#boxLinks li a { color: #5c5c5c; background-color: #EAF5FF; padding: 5px 10px; \
text-decoration: none; border: 2px solid #ccc; float: left; display: block; \
margin-left: -2px; position: relative; left: 1px; } +#boxLinks li a:hover { \
background: none; } +#box { background-color: #EAF5FF; margin-bottom: 15px; \
box-shadow: 5px 5px 2px #888888; height: 250px; border: 2px solid #ccc; overflow: \
hidden; padding: 15px; position: relative; top: -2px; border-radius: 15px; } +.boxy { \
display: none; height: 250px; overflow: auto; display: block; position: relative; \
overflow-x: hidden; padding-top: 15px; } +#box1:target, #box2:target, #box3:target, \
#box4:target, #box5:target { display: block; } +#box5 { padding-top: 0px; }
+#box5:target { padding-top: 15px; }
+
+.right-corner { border-top-right-radius: 15px; box-shadow: 5px 0px 2px #888888; }
+.left-corner { border-top-left-radius: 15px; }
+
+.pager {
+	background-color: #F1F1F1;
+}
+
+/* News Display on Front Page */
+
+#block-views-news-block-news h2 {
+	font-size: 12pt;
+	font-weight: bold;
+	border-bottom: 1px solid #B2B2B2;
+}
+
+.news tr.even {
+	background-color: #F3F3F3;
+}
+.news tr.odd {
+	background-color: #EEEEEE;
+}
+
+.news td.views-field-created, .planet td.views-field-created {
+	vertical-align: top;
+	white-space: nowrap;
+	padding-right: 4pt;
+}
+
+.news td.views-field-title {
+	width: 100%;
+}
+
+.news td {
+	padding: 4pt;
+}
+
+/* positioning for rss icon */
+div.news div.view-header {
+	float: right;
+	margin-top: -25pt;
+	margin-right: 10pt;
+}
+div.planet div.view-header {
+	float: right;
+	margin-top: -24pt;
+	margin-right: 5pt;
+}
+
+
+/* Mini Pager Animation */
+
+.ajax-progress .throbber {
+	padding: 0px;
+	margin: 0px;
+}
+
+
+div.field-name-field-socialshareprivacy {
+	border-top: 2px groove;
+	padding-left: 15%;
+	margin-top: 50px;
+}
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/ie.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/ie.css new file mode \
100644 index 0000000..0b5ff7d
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/ie.css
@@ -0,0 +1,36 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 1.0
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* ie.css */
+body#main-body {text-align:center;}
+.container {text-align:left;}
+* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * \
html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html \
.span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html \
.span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html \
.span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 \
{display:inline;overflow-x:hidden;} +* html legend {margin:0px -8px 16px \
0;padding:0;} +sup {vertical-align:text-top;}
+sub {vertical-align:text-bottom;}
+html>body p code {*white-space:normal;}
+hr {margin:-8px auto 11px;}
+img {-ms-interpolation-mode:bicubic;}
+.clearfix, .container {display:inline-block;}
+* html .clearfix, * html .container {height:1%;}
+fieldset {padding-top:0;}
+legend {margin-top:-0.2em;margin-bottom:1em;margin-left:-0.5em;}
+textarea {overflow:auto;}
+label {vertical-align:middle;position:relative;top:-0.25em;}
+input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;}
+input.text:focus, input.title:focus {border-color:#666;}
+input.text, input.title, textarea, select {margin:0.5em 0;}
+input.checkbox, input.radio {position:relative;top:.25em;}
+form.inline div, form.inline p {vertical-align:middle;}
+form.inline input.checkbox, form.inline input.radio, form.inline input.button, \
form.inline button {margin:0.5em 0;} +button, input.button \
                {position:relative;top:0.25em;}
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo-slider.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo-slider.css new file \
mode 100644 index 0000000..4384abe
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo-slider.css
@@ -0,0 +1,110 @@
+/*
+ * jQuery Nivo Slider v3.1
+ * http://nivo.dev7studios.com
+ *
+ * Copyright 2012, Dev7studios
+ * Free to use and abuse under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+/* The Nivo Slider styles */
+.nivoSlider {
+	position:relative;
+	width:100%;
+	height:auto;
+	overflow: hidden;
+}
+.nivoSlider img {
+	position:absolute;
+	top:0px;
+	left:0px;
+	max-width: none;
+}
+.nivo-main-image {
+	display: block !important;
+	position: relative !important;
+	width: 100% !important;
+}
+
+/* If an image is wrapped in a link */
+.nivoSlider a.nivo-imageLink {
+	position:absolute;
+	top:0px;
+	left:0px;
+	width:100%;
+	height:100%;
+	border:0;
+	padding:0;
+	margin:0;
+	z-index:6;
+	display:none;
+}
+/* The slices and boxes in the Slider */
+.nivo-slice {
+	display:block;
+	position:absolute;
+	z-index:5;
+	height:100%;
+	top:0;
+}
+.nivo-box {
+	display:block;
+	position:absolute;
+	z-index:5;
+	overflow:hidden;
+}
+.nivo-box img { display:block; }
+
+/* Caption styles */
+.nivo-caption {
+	position:absolute;
+	left:0px;
+	bottom:0px;
+	background:#000;
+	color:#fff;
+	width:100%;
+	z-index:8;
+	padding: 5px 10px;
+	opacity: 0.8;
+	overflow: hidden;
+	display: none;
+	-moz-opacity: 0.8;
+	filter:alpha(opacity=8);
+	-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+	-moz-box-sizing: border-box;    /* Firefox, other Gecko */
+	box-sizing: border-box;         /* Opera/IE 8+ */
+}
+.nivo-caption p {
+	padding:5px;
+	margin:0;
+}
+.nivo-caption a {
+	display:inline !important;
+}
+.nivo-html-caption {
+    display:none;
+}
+/* Direction nav styles (e.g. Next & Prev) */
+.nivo-directionNav a {
+	position:absolute;
+	top:45%;
+	z-index:9;
+	cursor:pointer;
+}
+.nivo-prevNav {
+	left:0px;
+}
+.nivo-nextNav {
+	right:0px;
+}
+/* Control nav styles (e.g. 1,2,3...) */
+.nivo-controlNav {
+	text-align:center;
+	padding: 15px 0;
+}
+.nivo-controlNav a {
+	cursor:pointer;
+}
+.nivo-controlNav a.active {
+	font-weight:bold;
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo.css new file mode \
100644 index 0000000..92832c5
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/nivo.css
@@ -0,0 +1,91 @@
+/*
+Skin Name: Nivo Slider v3
+Skin URI: http://nivo.dev7studios.com
+Skin Type: fixed
+Image Width: 960
+Image Height: 408
+Description: Nivo Slider
+Version: 3.0
+Author: Gilbert Pellegrom
+Author URI: http://dev7studios.com
+*/
+
+.slider-wrapper.theme-nivo { position: relative; }
+.theme-nivo .nivoSlider {
+	position:relative;
+	background:#e7e7e7 url(../images/nivo/loading.gif) no-repeat 50% 50%;
+}
+.theme-nivo .nivoSlider img {
+	position:absolute;
+	top:0px;
+	left:0px;
+	display:none;
+}
+.theme-nivo .nivoSlider a {
+	border:0;
+	display:block;
+}
+
+.theme-nivo .nivo-controlNav {
+    background:url(../images/nivo/control-nav.png) no-repeat;
+    width:85px;
+    height:13px;
+	position:absolute;
+	left:50%;
+	bottom:15px;
+    margin-left:-51px; /* Tweak this to center bullets */
+    z-index:210;
+    padding:15px 13px 15px 17px;
+    opacity:0.5;
+}
+.theme-nivo:hover .nivo-controlNav {
+    opacity:1.0;
+}
+.theme-nivo .nivo-controlNav a {
+	display:block;
+	width:11px;
+	height:12px;
+	background:url(../images/nivo/bullets.png) no-repeat;
+	text-indent:-9999px;
+	border:0;
+	margin-right:3px;
+	float:left;
+}
+.theme-nivo .nivo-controlNav a.active {
+	background-position:0 -12px;
+}
+
+.theme-nivo .nivo-directionNav a {
+	display:block;
+	width:43px;
+	height:43px;
+	background:url(../images/nivo/arrows.png) no-repeat;
+	text-indent:-9999px;
+	border:0;
+}
+.theme-nivo a.nivo-nextNav {
+	background-position:-43px 0;
+	right:390px;
+    top:350px;
+}
+.theme-nivo a.nivo-nextNav:hover {
+	background-position:-43px -43px;
+}
+.theme-nivo a.nivo-prevNav {
+	left:390px;
+    top:350px;
+}
+.theme-nivo a.nivo-prevNav:hover {
+	background-position:0 -43px;
+}
+
+.theme-nivo .nivo-caption {
+    font-family: Helvetica, Arial, sans-serif;
+}
+.theme-nivo .nivo-caption a {
+    color:#fff;
+    border-bottom:1px dotted #fff;
+}
+.theme-nivo .nivo-caption a:hover {
+    color:#fff;
+}
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/print.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/print.css new file mode \
100644 index 0000000..9cf3b20
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/print.css
@@ -0,0 +1,36 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 1.0
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* print.css */
+body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, \
sans-serif;color:#000;background:none;font-size:10pt;} +.container {background:none;}
+hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em \
0;padding:0;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;}
+h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", \
sans-serif;} +code {font:.9em "Courier New", Monaco, Courier, monospace;}
+a img {border:none;}
+p img.top {margin-top:0;}
+blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
+.small {font-size:.9em;}
+.large {font-size:1.1em;}
+.quiet {color:#999;}
+.hide {display:none;}
+a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
 +/*
+ * The following line causes the link target to be displayed after the link, while \
not printing. + *
+ * It's... confusing to say the least.
+ *
+a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}
+ */
+
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/screen.css \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/screen.css new file mode \
100644 index 0000000..2545fc8
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/css/screen.css
@@ -0,0 +1,260 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 1.0
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* reset.css */
+html {margin:0;padding:0;border:0;}
+body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, \
abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, \
form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, \
dialog, figure, footer, header, hgroup, nav, section \
{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
 +article, aside, dialog, figure, footer, header, hgroup, nav, section \
{display:block;} +body {line-height:1.5;background:white;}
+table {border-collapse:separate;border-spacing:0;}
+caption, th, td {text-align:left;font-weight:normal;float:none !important;}
+table, th, td {vertical-align:middle;}
+blockquote:before, blockquote:after, q:before, q:after {content:'';}
+blockquote, q {quotes:"" "";}
+a img {border:none;}
+:focus {outline:0;}
+
+/* typography.css */
+html {font-size:100.01%;}
+body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, \
Helvetica, sans-serif; height: 100%;} +h1 \
{font-size:3em;line-height:1;margin-bottom:0.5em;} +h2 \
{font-size:2em;margin-bottom:0.75em;} +h3 \
{font-size:1.5em;line-height:1;margin-bottom:1em;} +h4 \
{font-size:1.2em;line-height:1.25;margin-bottom:1.25em;} +h5 \
{font-size:1em;font-weight:bold;margin-bottom:1.5em;} +h6 \
{font-size:1em;font-weight:bold;} +h1 img, h2 img, h3 img, h4 img, h5 img, h6 img \
{margin:0;} +p {margin:0 0 1.5em;}
+.left {float:left !important;}
+p .left {margin:1.5em 1.5em 1.5em 0;padding:0;}
+.right {float:right !important;}
+p .right {margin:1.5em 0 1.5em 1.5em;padding:0;}
+a:focus, a:hover {color:#626262; text-decoration: underline;}
+a {color:#06c;text-decoration: none;}
+blockquote {margin:1.5em;color:#666;font-style:italic;}
+strong, dfn {font-weight:bold;}
+em, dfn {font-style:italic;}
+sup, sub {line-height:0;}
+abbr, acronym {border-bottom:1px dotted #666;}
+address {margin:0 0 1.5em;font-style:italic;}
+del {color:#666;}
+li ul, li ol {margin:0;}
+ul, ol {margin:0 1.5em 1.5em 0;padding-left:1.5em;}
+ul {list-style-type:disc;}
+ol {list-style-type:decimal;}
+dl {margin:0 0 1.5em 0;}
+dl dt {font-weight:bold;}
+dd {margin-left:1.5em;}
+table {margin-bottom:1.4em;width:100%;}
+th {font-weight:bold;}
+thead th {background:#c3d9ff;}
+tfoot {font-style:italic;}
+caption {background:#eee;}
+.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
+.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
+.hide {display:none;}
+.quiet {color:#666;}
+.loud {color:#000;}
+.highlight {background:#ff0;}
+.added {background:#060;color:#fff;}
+.removed {background:#900;color:#fff;}
+.first {margin-left:0;padding-left:0;}
+.last {margin-right:0;padding-right:0;}
+.top {margin-top:0;padding-top:0;}
+.bottom {margin-bottom:0;padding-bottom:0;}
+
+/* forms.css */
+label {font-weight:bold;}
+fieldset {padding:0 1.4em 1.4em 1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
+legend {font-weight:bold;font-size:1.2em;margin-top:-0.2em;margin-bottom:1em;}
+fieldset, #IE8#HACK {padding-top:1.4em;}
+legend, #IE8#HACK {margin-top:0;margin-bottom:0;}
+input[type=text], input[type=password], input.text, input.title, textarea \
{background-color:#fff;border:1px solid #bbb;} +input[type=text]:focus, \
input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus \
{border-color:#666;} +select \
{background-color:#fff;border-width:1px;border-style:solid;} +input[type=text], \
input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;} \
+input.text, input.title {width:300px;padding:5px;} +input.title {font-size:1.5em;}
+textarea {width:390px;height:250px;padding:5px;}
+form.inline {line-height:3;}
+form.inline p {margin-bottom:0;}
+.error, .alert, .notice, .success, .info {padding:0.8em;margin-bottom:1em;border:2px \
solid #ddd;} +.error, .alert {background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4;}
+.notice {background:#fff6bf;color:#514721;border-color:#ffd324;}
+.success {background:#e6efc2;color:#264409;border-color:#c6d880;}
+.info {background:#d5edf8;color:#205791;border-color:#92cae4;}
+.error a, .alert a {color:#8a1f11;}
+.notice a {color:#514721;}
+.success a {color:#264409;}
+.info a {color:#205791;}
+
+/* grid.css */
+.container {margin:0 auto;}
+.showgrid {background:url(src/grid.png);}
+.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, \
.span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, \
.span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 \
{float:left;margin-right:10px;} +.last {margin-right:0;}
+.span-1 {width:30px;}
+.span-2 {width:70px;}
+.span-3 {width:110px;}
+.span-4 {width:150px;}
+.span-5 {width:190px;}
+.span-6 {width:230px;}
+.span-7 {width:270px;}
+.span-8 {width:310px;}
+.span-9 {width:350px;}
+.span-10 {width:390px;}
+.span-11 {width:430px;}
+.span-12 {width:470px;}
+.span-13 {width:510px;}
+.span-14 {width:550px;}
+.span-15 {width:590px;}
+.span-16 {width:630px;}
+.span-17 {width:670px;}
+.span-18 {width:710px;}
+.span-19 {width:750px;}
+.span-20 {width:790px;}
+.span-21 {width:830px;}
+.span-22 {width:870px;}
+.span-23 {width:910px;}
+.span-24 {width:950px;margin-right:0;}
+input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, \
textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, \
input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, \
textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, \
input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, \
textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, \
input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, \
textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, \
input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, \
textarea.span-23, input.span-24, textarea.span-24 \
{border-left-width:1px;border-right-width:1px;padding-left:5px;padding-right:5px;} \
+input.span-1, textarea.span-1 {width:18px;} +input.span-2, textarea.span-2 \
{width:58px;} +input.span-3, textarea.span-3 {width:98px;}
+input.span-4, textarea.span-4 {width:138px;}
+input.span-5, textarea.span-5 {width:178px;}
+input.span-6, textarea.span-6 {width:218px;}
+input.span-7, textarea.span-7 {width:258px;}
+input.span-8, textarea.span-8 {width:298px;}
+input.span-9, textarea.span-9 {width:338px;}
+input.span-10, textarea.span-10 {width:378px;}
+input.span-11, textarea.span-11 {width:418px;}
+input.span-12, textarea.span-12 {width:458px;}
+input.span-13, textarea.span-13 {width:498px;}
+input.span-14, textarea.span-14 {width:538px;}
+input.span-15, textarea.span-15 {width:578px;}
+input.span-16, textarea.span-16 {width:618px;}
+input.span-17, textarea.span-17 {width:658px;}
+input.span-18, textarea.span-18 {width:698px;}
+input.span-19, textarea.span-19 {width:738px;}
+input.span-20, textarea.span-20 {width:778px;}
+input.span-21, textarea.span-21 {width:818px;}
+input.span-22, textarea.span-22 {width:858px;}
+input.span-23, textarea.span-23 {width:898px;}
+input.span-24, textarea.span-24 {width:938px;}
+.append-1 {padding-right:40px;}
+.append-2 {padding-right:80px;}
+.append-3 {padding-right:120px;}
+.append-4 {padding-right:160px;}
+.append-5 {padding-right:200px;}
+.append-6 {padding-right:240px;}
+.append-7 {padding-right:280px;}
+.append-8 {padding-right:320px;}
+.append-9 {padding-right:360px;}
+.append-10 {padding-right:400px;}
+.append-11 {padding-right:440px;}
+.append-12 {padding-right:480px;}
+.append-13 {padding-right:520px;}
+.append-14 {padding-right:560px;}
+.append-15 {padding-right:600px;}
+.append-16 {padding-right:640px;}
+.append-17 {padding-right:680px;}
+.append-18 {padding-right:720px;}
+.append-19 {padding-right:760px;}
+.append-20 {padding-right:800px;}
+.append-21 {padding-right:840px;}
+.append-22 {padding-right:880px;}
+.append-23 {padding-right:920px;}
+.prepend-1 {padding-left:40px;}
+.prepend-2 {padding-left:80px;}
+.prepend-3 {padding-left:120px;}
+.prepend-4 {padding-left:160px;}
+.prepend-5 {padding-left:200px;}
+.prepend-6 {padding-left:240px;}
+.prepend-7 {padding-left:280px;}
+.prepend-8 {padding-left:320px;}
+.prepend-9 {padding-left:360px;}
+.prepend-10 {padding-left:400px;}
+.prepend-11 {padding-left:440px;}
+.prepend-12 {padding-left:480px;}
+.prepend-13 {padding-left:520px;}
+.prepend-14 {padding-left:560px;}
+.prepend-15 {padding-left:600px;}
+.prepend-16 {padding-left:640px;}
+.prepend-17 {padding-left:680px;}
+.prepend-18 {padding-left:720px;}
+.prepend-19 {padding-left:760px;}
+.prepend-20 {padding-left:800px;}
+.prepend-21 {padding-left:840px;}
+.prepend-22 {padding-left:880px;}
+.prepend-23 {padding-left:920px;}
+.border {padding-right:4px;margin-right:5px;border-right:1px solid #ddd;}
+.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #ddd;}
+.pull-1 {margin-left:-40px;}
+.pull-2 {margin-left:-80px;}
+.pull-3 {margin-left:-120px;}
+.pull-4 {margin-left:-160px;}
+.pull-5 {margin-left:-200px;}
+.pull-6 {margin-left:-240px;}
+.pull-7 {margin-left:-280px;}
+.pull-8 {margin-left:-320px;}
+.pull-9 {margin-left:-360px;}
+.pull-10 {margin-left:-400px;}
+.pull-11 {margin-left:-440px;}
+.pull-12 {margin-left:-480px;}
+.pull-13 {margin-left:-520px;}
+.pull-14 {margin-left:-560px;}
+.pull-15 {margin-left:-600px;}
+.pull-16 {margin-left:-640px;}
+.pull-17 {margin-left:-680px;}
+.pull-18 {margin-left:-720px;}
+.pull-19 {margin-left:-760px;}
+.pull-20 {margin-left:-800px;}
+.pull-21 {margin-left:-840px;}
+.pull-22 {margin-left:-880px;}
+.pull-23 {margin-left:-920px;}
+.pull-24 {margin-left:-960px;}
+.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, \
.pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, \
.pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 \
{float:left;position:relative;} +.push-1 {margin:0 -40px 1.5em 40px;}
+.push-2 {margin:0 -80px 1.5em 80px;}
+.push-3 {margin:0 -120px 1.5em 120px;}
+.push-4 {margin:0 -160px 1.5em 160px;}
+.push-5 {margin:0 -200px 1.5em 200px;}
+.push-6 {margin:0 -240px 1.5em 240px;}
+.push-7 {margin:0 -280px 1.5em 280px;}
+.push-8 {margin:0 -320px 1.5em 320px;}
+.push-9 {margin:0 -360px 1.5em 360px;}
+.push-10 {margin:0 -400px 1.5em 400px;}
+.push-11 {margin:0 -440px 1.5em 440px;}
+.push-12 {margin:0 -480px 1.5em 480px;}
+.push-13 {margin:0 -520px 1.5em 520px;}
+.push-14 {margin:0 -560px 1.5em 560px;}
+.push-15 {margin:0 -600px 1.5em 600px;}
+.push-16 {margin:0 -640px 1.5em 640px;}
+.push-17 {margin:0 -680px 1.5em 680px;}
+.push-18 {margin:0 -720px 1.5em 720px;}
+.push-19 {margin:0 -760px 1.5em 760px;}
+.push-20 {margin:0 -800px 1.5em 800px;}
+.push-21 {margin:0 -840px 1.5em 840px;}
+.push-22 {margin:0 -880px 1.5em 880px;}
+.push-23 {margin:0 -920px 1.5em 920px;}
+.push-24 {margin:0 -960px 1.5em 960px;}
+.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, \
.push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, \
.push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 \
{float:left;position:relative;} +div.prepend-top, .prepend-top {margin-top:1.5em;}
+div.append-bottom, .append-bottom {margin-bottom:1.5em;}
+.box {padding:1.5em;margin-bottom:1.5em;background:#e5eCf9;}
+hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;margin:0 \
0 1.45em;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;}
+.clearfix:after, .container:after \
{content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
 +.clearfix, .container {display:block;}
+.clear {clear:both;}
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/body.jpg \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/body.jpg new file \
mode 100644 index 0000000..1b36d8f
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/body.jpg \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom.png new file \
mode 100644 index 0000000..66f18fc
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom_all.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom_all.png new \
file mode 100644 index 0000000..b9a6a40
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/bottom_all.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/footer.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/footer.png new file \
mode 100644 index 0000000..fb3a080
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/footer.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/bugs.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/bugs.png new \
file mode 100644 index 0000000..48d5de3
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/bugs.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/clients.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/clients.png new \
file mode 100644 index 0000000..a1dddba
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/clients.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/demo.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/demo.png new \
file mode 100644 index 0000000..4d2c072
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/demo.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/diaspora.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/diaspora.png \
new file mode 100644 index 0000000..d4295a9
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/diaspora.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/documentation.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/documentation.png
 new file mode 100644
index 0000000..0aa5179
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/documentation.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/download.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/download.png \
new file mode 100644 index 0000000..db15c67
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/download.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/freecode.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/freecode.png \
new file mode 100644 index 0000000..5809fd7
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/freecode.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/googleplus.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/googleplus.png \
new file mode 100644 index 0000000..6285d50
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/googleplus.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/identica.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/identica.png \
new file mode 100644 index 0000000..4e2a2bd
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/identica.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/irc.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/irc.png new \
file mode 100644 index 0000000..af8fad2
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/irc.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/mailinglists.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/mailinglists.png
 new file mode 100644
index 0000000..be1305e
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/mailinglists.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/news.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/news.png new \
file mode 100644 index 0000000..db598b0
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/news.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/ohloh.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/ohloh.png new \
file mode 100644 index 0000000..e5f39d8
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/ohloh.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/planet.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/planet.png new \
file mode 100644 index 0000000..704a723
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/planet.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/shop.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/shop.png new \
file mode 100644 index 0000000..761d2b2
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/shop.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/sourcecode.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/sourcecode.png \
new file mode 100644 index 0000000..363f51b
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/sourcecode.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/twitter.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/twitter.png new \
file mode 100644 index 0000000..5ebb473
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/twitter.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/wiki.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/wiki.png new \
file mode 100644 index 0000000..17d544a
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/icons/wiki.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/line.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/line.png new file \
mode 100644 index 0000000..cd75eb4
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/line.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/listitem.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/listitem.png new file \
mode 100644 index 0000000..9357e1e
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/listitem.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/logo.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/logo.png new file \
mode 100644 index 0000000..2e51a7a
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/logo.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/menu.jpg \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/menu.jpg new file \
mode 100644 index 0000000..e0d94c1
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/menu.jpg \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/arrows.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/arrows.png new \
file mode 100644 index 0000000..06b6ce8
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/arrows.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/bullets.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/bullets.png new \
file mode 100644 index 0000000..1af5b01
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/bullets.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/control-nav.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/control-nav.png \
new file mode 100644 index 0000000..5ea90c1
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/control-nav.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/loading.gif \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/loading.gif new \
file mode 100644 index 0000000..1560b64
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/nivo/loading.gif \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/root.jpg \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/root.jpg new file \
mode 100644 index 0000000..64623ad
Binary files /dev/null and \
                b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/root.jpg \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-mail-compose.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-mail-compose.png
 new file mode 100644
index 0000000..620db94
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-mail-compose.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-owncloud.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-owncloud.png
 new file mode 100644
index 0000000..5d3ca09
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-owncloud.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-tasks-listing.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-tasks-listing.png
 new file mode 100644
index 0000000..9ffd843
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-tasks-listing.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-webadmin.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-webadmin.png
 new file mode 100644
index 0000000..cd12398
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kolab-webadmin.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-kmail.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-kmail.png
 new file mode 100644
index 0000000..e22187c
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-kmail.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-korganizer.png \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-korganizer.png
 new file mode 100644
index 0000000..a665fdc
Binary files /dev/null and \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/images/screenshots/kontact-korganizer.png \
                differ
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery-1.7.2.min.js \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery-1.7.2.min.js new \
file mode 100644 index 0000000..16ad06c
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return \
f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function \
cu(a){if(!cj[a]){var \
b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===" \
"){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChil \
d(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype \
html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return \
cj[a]}function ct(a,b){var \
c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return \
c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function \
ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function \
ch(){try{return new a.XMLHttpRequest}catch(b){}}function \
cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var \
d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;  \
for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof \
h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else \
if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" \
");if(j[0]===l||j[0]==="*"){p=e[j[1]+" \
"+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion \
from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function \
ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in \
d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i \
in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in \
d){if(!f[0]||a.converters[i+" \
"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function \
b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof \
e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in \
b)b_(a+"["+e  +"]",b[e],c,d);else d(a,b)}function b$(a,c){var \
d,e,g=f.ajaxSettings.flatOptions||{};for(d in \
c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function \
bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var \
h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof \
l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return \
l}function bY(a){return function(b,c){typeof \
b!="string"&&(c=b,b="*");if(f.isFunction(c)){var \
d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function \
bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0) \
{if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="ma \
rgin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return \
d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];  if(bt.test(d))return \
d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!= \
="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return \
d+"px"}function bo(a){var \
b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return \
b.firstChild}function bn(a){var \
b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof \
a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function \
bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function \
bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof \
a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var \
c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAt \
tributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?
  c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue \
=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultC \
hecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f. \
expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function \
bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var \
c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c \
in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function \
bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function \
U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return \
c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var \
e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a  ,function(a,d){return \
a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return \
a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return \
f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function \
S(a){return!a||!a.parentNode||a.parentNode.nodeType==}function K(){return!0}function \
J(){return!1}function n(a,b,c){var \
d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c= \
=="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function \
m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function \
l(a,c,d){if(d===b&&a.nodeType===1){var \
e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof \
d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else \
d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(  \
c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var \
c=a.document,d=a.navigator,e=a.location,f=function(){function \
J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var \
e=function(a,b){return new \
e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\ \
S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bf \
nrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \
\/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) \
([\w.]+)/,u=/(mozilla)(?:.*? \
rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase \
()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty, \
E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var \
g,h,j,k;if(!a)return th  \
is;if(a.nodeType){this.context=this[0]=a,this.length=1;return \
this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return \
this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d \
instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.cr \
eateElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return \
e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return \
f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return \
this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return \
f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return \
e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return \
this.length},toArra  y:function(){return F.call(this,0)},get:function(a){return \
a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var \
d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" \
":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return \
d},each:function(a,b){return \
e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return \
this},eq:function(a){a=+a;return \
a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return \
this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return \
this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return \
this.pushStack(e.map(this,function(b,c){return \
a.call(b,c,b)}))},end:function(){return \
this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var \
a,c,d,f,g,h,i=arguments[0]||{},j=1,k=a  rguments.length,l=!1;typeof \
i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof \
i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c \
in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g? \
(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return \
i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return \
e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return \
setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]) \
,e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once \
memory");if(c.readyState==="complete")return \
setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else \
if(c.a  ttachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var \
b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return \
e.type(a)==="function"},isArray:Array.isArray||function(a){return \
e.type(a)==="array"},isWindow:function(a){return \
a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return \
a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!= \
="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constru \
ctor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var \
d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in \
a)return!1;return!0},error:function(a){throw new \
Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return \
null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return \
a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(  q,"")))return(new \
Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof \
c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new \
DOMParser,d=f.parseFromString(c,"text/xml")):(d=new \
ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid \
XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return \
a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return \
a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var \
f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in \
a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else \
if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else \
for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return \
a==null?"":G.call(a)}:func  tion(a){return \
a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var \
c=b||[];if(a!=null){var \
d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return \
c},inArray:function(a,b,c){var d;if(b){if(H)return \
H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in \
b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof \
c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else \
while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var \
d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return \
d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof \
j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else \
for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return \
h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){v  ar \
d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var \
f=F.call(arguments,2),g=function(){return \
a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return \
g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof \
d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else \
if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return \
j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return \
g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new \
Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var \
b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function \
a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f \
instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b  \
)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number \
String Function Array Date RegExp Object".split(" "),function(a,b){I["[object \
"+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" \
")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEve \
ntListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return \
e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var \
c=[],d=[],e,i,j,k,l,m,n=function(b){var \
d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function \
"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0, \
j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.s
  hift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var \
a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return \
this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var \
f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return \
this},has:function(a){if(c){var \
b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return \
this},disable:function(){c=d=e=b;return \
this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return \
this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return \
this},fire:function(){p.fireWith(this,arguments);return \
this},fired:function(){return!!i}};return p};var \
i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once \
memory"),c=f.Callbacks("once \
memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progr
  ess:d.add,state:function(){return \
e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return \
this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return \
this},pipe:function(a,b,c){return \
f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var \
c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunct \
 guments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var \
b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.prom \
ise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunctio \
n(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else \
j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var \
b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" \
<link/><table></table><a href='/a' \
style='top:1px;float:left;opacity:.55;'>a</a><input \
type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(! \
d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement( \
"option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.node \
Type===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.ge
  tAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.te \
st(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.s \
elected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,ht \
ml5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubble \
s:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNe \
edsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.b \
oxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete \
p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p \
.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("oncli \
ck")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","
  t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.check \
Clone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n \
in{submit:1,change:1,focusin:1})m="on"+n,o=m in \
p,o||(p.setAttribute(m,"return;"),o=typeof \
p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var \
d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;ma \
rgin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px \
solid #000;",q="<div "+n+"display:block;'><div \
style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' \
cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div" \
),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.inse \
rtBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><
  td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagNam \
e("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reli \
ableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.cre \
ateElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appe \
ndChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof \
p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style \
.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBl \
ockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div \
style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p \
.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.
  style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop== \
||g.offsetTop==,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.pos \
ition="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncl \
udeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof \
d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return \
b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuer \
y"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB \
6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[ \
f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var \
g,h,i,j=f.expando,k=typeof \
c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].dat
  a)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof \
c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data \
,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return \
g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return \
i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var \
d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b \
in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" \
")));for(e=0,g=b.length;e<g;e++)delete \
d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete \
j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete \
j[k]:j[k]=null,i&&(f.support.deleteExpando?delete \
a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return \
f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var \
b=f.noData[a.nodeName.toLowerCase()];if(b)return  \
b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var \
d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1 \
&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.index \
Of("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return \
m}if(typeof a=="object")return \
this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return \
f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return \
m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var \
b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return \
this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a
                
 !==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var \
d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var \
d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return \
d||[]}},dequeue:function(a,b){b=b||"fx";var \
c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshif \
t("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue \
"+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof \
a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return \
c===b?this:this.each(function(){var \
b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return \
this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return \
this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(  \
){clearTimeout(d)}})},clearQueue:function(a){return \
this.queue(a||"fx",[])},promise:function(a,c){function \
m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var \
d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if \
(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once \
memory"),!0))h++,l.add(m);m();return d.promise(c)}});var \
o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|selec \
t|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer \
|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return \
f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return \
this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return \
f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return \
this.  each(function(){try{this[a]=b,delete \
this[a]}catch(c){}})},addClass:function(a){var \
b,c,d,e,g,h,i;if(f.isFunction(a))return \
this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof \
a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" \
"+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" \
");e.className=f.trim(g)}}}return this},removeClass:function(a){var \
c,d,e,g,h,i,j;if(f.isFunction(a))return \
this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof \
a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" \
"+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" \
"," ");g.className=f.trim(h)}else g.className=""}}return \
this},toggleClass:function(a,b){var c=typeof a,d=typeof \
b=="boolean";if(f.isFunction(a))return this.e  \
ach(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return \
this.each(function(){if(c==="string"){var \
e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else \
if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.cl \
assName),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var \
b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" \
"+this[c].className+" ").replace(o," \
").indexOf(b)>-1)return!0;return!1},val:function(a){var \
c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return \
this.each(function(d){var \
g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof \
h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return \
a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in \
c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.val  \
Hooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in \
c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof \
d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var \
b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var \
b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return \
null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabl \
ed?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return \
b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return \
h},set:function(a,b){var \
c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return \
c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var \
g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!  ==8&&j!==2){if(e&&c in f.attrFn)return \
f(a)[c](d);if(typeof a.getAttribute=="undefined")return \
f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in \
h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in \
h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return \
g===null?b:g}},removeAttr:function(a,b){var \
c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++ \
)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c \
in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type \
property can't be changed");else \
if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var \
c=a.value;a.setAttribute("type",b),c&&(a.value=c);return \
b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b \
in a?a.value:null},set:fu  nction(a,b,c){if(w&&f.nodeName(a,"button"))return \
w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"html \
For","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:" \
cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var \
e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return \
d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in \
g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var \
c=a.getAttributeNode("tabindex");return \
c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var \
d,e=f.prop(a,c);return e===!0||typeof \
e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var \
d;b===!1?f.removeAttr(a  ,c):(d=f.propFix[c]||c,d in \
a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return \
c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var \
d;d=a.getAttributeNode(c);return \
d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var \
e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return \
e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a \
,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return \
c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false") \
,w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var \
d=a.getAttribute(c,2);return \
d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return \
a.style.cssText.toLowerCase()||b},set:function(a,b){return \
a.style.cssText=""+b}}),f.support.op  \
tSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var \
b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return \
null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return \
a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function() \
{f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return \
a.checked=f.inArray(f(a).val(),b)>=0}})});var \
z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b \
/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
 +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new \
RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var \
c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return \
f.event.special.hover?a:a.replace(B,"mouseenter$1 \
mouseleave$1")};f.event={add:function(a,c,d,e,g){var \
h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))) \
{d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return \
typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" \
");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s= \
f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,gu
  id:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[] \
,r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEve \
ntListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.ha \
ndler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var \
g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" \
");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in \
o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new \
RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r \
.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace \
))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p
                
 .remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete \
o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handl \
e"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var \
h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(" \
!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof \
c=="object"?c[f.expando]?c:new f.Event(h,c):new \
f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new \
RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l \
in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArr
  ay(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)=== \
!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType|| \
h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e \
.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.is \
PropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]& \
&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&& \
c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.appl \
y(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h \
]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return \
c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var \
d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(ar  \
guments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p \
,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)! \
==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||thi \
s;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for \
(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r \
.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d \
.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget= \
q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches \
[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace) \
)c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).a \
pply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);
  return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles \
cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target \
timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key \
keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return \
a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY \
pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var \
e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocu \
ment||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLe \
ft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.s \
crollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarge \
t=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return \
a}},fix:function(a){if(a[f.expando])return a;var  \
d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props \
;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c \
),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return \
h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus: \
{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a \
,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var \
e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e \
,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.eve \
nt.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.remov \
eEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(
                
 !(this instanceof f.Event))return new \
f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented= \
a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J \
):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expand \
o]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var \
a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var \
a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},s \
topImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropa \
gation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J} \
,f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var \
c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.cont  \
ains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return \
h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit \
keypress._submit",function(a){var \
c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_atta \
ched&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete \
a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentN \
ode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(thi \
s,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if \
(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(thi \
s,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this.
  _just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var \
b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",fu \
nction(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var \
b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return \
a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return \
z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var \
d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={ \
setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var \
h,i;if(typeof a=="object"){typeof c!  ="string"&&(d=d||c,c=b);for(i in \
a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof \
c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return \
this;g===1&&(h=e,e=function(a){f().off(a);return \
h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return \
this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return \
this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var \
e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return \
this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return \
this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return \
this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return \
this.on(a,null,b,c)},unbind:function(a,b){return \
this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return \
                this},die:function(a,b){f(this.context).off(a,this.selector||"
 **",b);return this},delegate:function(a,b,c,d){return \
this.on(b,a,c,d)},undelegate:function(a,b,c){return \
arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return \
this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return \
f.event.trigger(a,b,this[0],!0)},toggle:function(a){var \
b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var \
e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return \
b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return \
this.click(e)},hover:function(a,b){return \
this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load \
resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout \
mouseenter mouseleave change select submit keydown keypress keyup error \
contextmenu".split(" \
"),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return \
arguments.length>0?this.on(b,null,a,c):thi  \
s.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function \
x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var \
k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof \
b!="string"){if(j===b){k=!0;break}}else \
if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function \
w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var \
k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var \
a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ \
>+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace \
> (".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return \
> 0});var m=function(b,d,e,f){e=e||[]
 ,d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof \
b!="string")return e;var \
i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.pu \
sh(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o. \
relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.l \
ength)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.node \
Type===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shif \
t(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f) \
}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v \
),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else \
k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object \
                Array]")if(!u)e.push.apply(e,k);else \
                if(d&&d.nodeType===1)for(t=0;k[t]
 !=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else \
for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else \
s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return \
e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var \
b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return \
a},m.matches=function(a,b){return \
m(a,null,null,b)},m.matchesSelector=function(a,b){return \
m(b,null,null,[a]).length>0},m.find=function(a,b,c){var \
d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftM \
atch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||""). \
replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof \
b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var \
f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in \
o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k \
o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else \
if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p \
?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else \
break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized \
expression: "+a)};var n=m.getText=function(a){var \
b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d==){if(typeof \
a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return \
a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else \
if(d===3||d===4)return a.nodeValue}else \
for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return \
e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u
  00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\ \
s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFF \
FF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[ \
+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\( \
(\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\ \
)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return \
a.getAttribute("href")},type:function(a){return \
a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof \
b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var \
f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]= \
e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var \
c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++)
  {c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(; \
e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var \
d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var \
d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof \
b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return \
d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof \
b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var \
e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return \
c.length===0?null:c}},TAG:function(a,b){if(typeof \
b.getElementsByTagName!="undefined")return \
b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" \
"+a[1].replace(j,"")+" ";if(f)return a;for(var \
g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&  (" "+h.className+" \
").replace(/[\t\n\r]/g," \
").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return \
a[1].replace(j,"")},TAG:function(a,b){return \
a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var \
b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else \
a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var \
g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" \
"+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var \
g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else \
if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return \
b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){re  turn \
a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return \
a.disabled===!0},checked:function(a){return \
a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return \
a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.f \
irstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var \
b=a.getAttribute("type"),c=a.type;return \
a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return \
a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return \
a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return \
a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return \
a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var \
b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return \
a.nodeName.toL  owerCase()==="input"&&"image"===a.type},reset:function(a){var \
b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var \
b=a.nodeName.toLowerCase();return \
b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return \
a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return \
b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return \
b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return \
b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return \
c[3]-0===b},eq:function(a,b,c){return \
c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return \
f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var \
g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var \
c,e,f,g,h,i,  j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling) \
if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSiblin \
g)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0 \
;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return \
c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return \
a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return \
b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" \
"+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var \
c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return \
d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" \
"+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f== \
"$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var \
e=b[2],f=o.setFilters[e];if(f)return \
f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in \
o.match)o.match[r]=new \
RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new \
RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var \
s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return \
b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var \
c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else \
if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else \
for(;a[c];c++)d.push(a[c]);return d}}var \
u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return \
0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compa  \
reDocumentPosition?-1:1;return \
a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return \
0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var \
c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return \
v(a,b);if(!g)return-1;if(!i)return \
1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var \
k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return \
k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var \
d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var \
a=c.createElement("div"),d="script"+(new \
Date).getTime(),e=c.documentElement;a.innerHTML="<a \
name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof \
c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return \
e?e.id===a[1]||typeof \
e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.
  ID=function(a,b){var c=typeof \
a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return \
a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var \
a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var \
c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var \
e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a \
href='#'></a>",a.firstChild&&typeof \
a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return \
a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var \
a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p \
class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var \
h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return \
s(e.getElementsByTagNam  \
e(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return \
s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return \
s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return \
s([],f);if(i.id===h[3])return s([i],f)}try{return \
s(e.querySelectorAll(b),f)}catch(j){}}else \
if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var \
k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return \
s(e.querySelectorAll("[id='"+n+"'] \
"+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e \
in a)m[e]=a[e];b=null}}(),function(){var \
a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var \
d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\
  ]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var \
f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!=)return f}}catch(g){}return \
m(c,null,null,[a]).length>0}}}(),function(){var \
a=c.createElement("div");a.innerHTML="<div class='test e'></div><div \
class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").leng \
th!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof \
b.getElementsByClassName!="undefined"&&!c)return \
b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return \
a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.cont \
ains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var \
b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var \
y=function(a,b,c){va  r \
d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var \
h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return \
m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr \
[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var \
L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototy \
pe.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var \
b=this,c,d;if(typeof a!="string")return \
f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var \
e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a \
,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return \
e},has:function(a){var b=f(a);return this.filter(function(){for(var \
a=0,c=b.length;a<c;a++)if(f.co  ntains(this,b[a]))return!0})},not:function(a){return \
this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return \
this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof \
a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var \
c=[],d,e,g=this[0];if(f.isArray(a)){var \
h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return \
c}var i=Q.test(a)||typeof \
a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){i \
f(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType==)break}}c=c.length>1?f.unique(c):c;return \
this.pushStack(c,"closest",a)},index:function(a){if(!a)return \
this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return \
f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,t  \
his)},add:function(a,b){var c=typeof \
a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return \
this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return \
this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return \
b&&b.nodeType!=?b:null},parents:function(a){return \
f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return \
f.dir(a,"parentNode",c)},next:function(a){return \
f.nth(a,2,"nextSibling")},prev:function(a){return \
f.nth(a,2,"previousSibling")},nextAll:function(a){return \
f.dir(a,"nextSibling")},prevAll:function(a){return \
f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return \
f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return \
f.dir(a,"previousSibling",c)},siblings:function(a){return \
f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return \
f.sibling(a.firstChild)},contents:function(a){return \
f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNode
  s)}},function(a,b){f.fn[a]=function(c,d){var \
e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof \
 ta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new \
RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select \
multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<ta \
ble>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr> \
","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></tab \
le>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.t \
body=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return \
f.access(this,function(a){return \
a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a
  ))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var \
b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var \
a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return \
a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return \
this.each(function(b){f(this).wrapInner(a.call(this,b))});return \
this.each(function(){var \
b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var \
b=f.isFunction(a);return \
this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return \
this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return \
this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return \
this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&
  this[0].parentNode)return \
this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var \
a=f +.clean(arguments);a.push.apply(a,this.toArray());return \
this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return \
this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var \
a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return \
a}},remove:function(a,b){for(var \
c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.clean \
Data(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return \
this},empty:function(){for(var \
a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return \
this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return \
this.map(function(){return f.clone(this,a,b)})},html:function(a){return \
f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return \
c.nodeType===1?c.innerHTML.replace(W,"  "):null;if(typeof \
a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||[ \
"",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c \
.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){} \
}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return \
this.each(function(b){var \
c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof \
a!="string"&&(a=f(a).detach());return this.each(function(){var \
b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return \
this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return \
this.remove(a,!0)},domManip:function(a,c,d){var \
e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof \
j=="string"&&bd.test(j))return \
this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return  \
this.each(function(e){var \
g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.pare \
ntNode,f.support.parentNode&&i&&i.nodeType==&&i.childNodes.length===this.length?e={fr \
agment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var \
l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f \
.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1 \
,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return \
this}}),f.buildFragment=function(a,b,d){var \
e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof \
j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragm
  ents[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fr \
agments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"app \
end",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var \
d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType==&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return \
this}for(var h=0,i=e.length;h<i;h++){var \
j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return \
this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var \
d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode( \
!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a. \
nodeType==)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e \
[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return \
h},clean:function(a,b,d,e)  {var g,h,i,j=[];b=b||c,typeof \
b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var \
k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof \
l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var \
m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement( \
"div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var \
s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&& \
!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNode \
s.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p \
.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parent \
Node.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var \
u;if(!f.support.appendChecked)if(l[0]  &&typeof \
(u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else \
bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a \
.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.typ \
e)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var \
v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return \
j},cleanData:function(a){var \
b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var \
h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var \
j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete \
i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var \
bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+
                
 .\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return \
f.access(this,function(a,c,d){return \
d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var \
c=by(a,"opacity");return c===""?"1":c}return \
a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,or \
phans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat": \
"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var \
g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in \
k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof \
d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number"); \
if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in \
k)||(d=k.set(a,d))!==b)try{j[c]=d}catch  (l){}}},css:function(a,c,d){var \
e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in \
g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var \
d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in \
b)a.style[f]=d[f];return \
e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var \
c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)& \
&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerD \
ocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return \
c}),c.documentElement.currentStyle&&(bA=function(a,b){var \
c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.tes \
t(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,
  f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return \
f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return \
a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return \
bB(a,b,d)})},set:function(a,b){return \
bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return \
bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var \
c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filte \
r||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" \
"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return \
f.swap(a,{display:"inline-block"},function(){return \
b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=fun
  ction(a){var b=a.offsetWidth,c=a.offsetHeight;return \
b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"di \
splay"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)} \
),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var \
d,e=typeof c=="string"?c.split(" \
"):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var \
bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \
\t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|nu \
mber|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|. \
+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[ \
^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([? \
&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement
  ("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof \
a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var \
e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var \
h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof \
c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var \
i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.respon \
seText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return \
this},serialize:function(){return \
f.param(this.serializeArray())},serializeArray:function(){return \
this.map(function(){return \
this.elements?f.makeArray(this.elements):this}).filter(function(){return \
this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var \
c=f(this).val();return \
c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.na  \
me,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart \
ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" \
"),function(a,b){f.fn[b]=function(a){return \
this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return \
f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return \
f.get(a,b,c,"script")},getJSON:function(a,b,c){return \
f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return \
a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; \
charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, \
text/xml",html:"text/html",text:"text/plain",json:"application/json, \
text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* \
text":a.String  ,"text html":!0,"text json":f.parseJSON,"text \
xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function \
w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var \
o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a> \
0&&a<300||a==04){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModi \
fied[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a==04)w="notmodified",o=!0;else \
try{rË(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error" \
,a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith( \
e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]), \
i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof \
a=="object"&&(c=a,a=b),c=c||{};var \
d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof \
f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once mem  \
ory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var \
c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return \
this},getAllResponseHeaders:function(){return \
s===2?n:null},getResponseHeader:function(a){var \
c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return \
c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return \
this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return \
this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var \
b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return \
this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d \
.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerC \
ase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof \
                d
 .data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return! \
1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++== \
=0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete \
d.data),k=d.url;if(d.cache===!1){var \
x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_= \
"+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader \
("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setReque \
stHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None \
-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", \
"+bW+"; q=0.01":""):d.accepts["*"]);for(u in \
d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u \
in{success:1,error  :1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No \
Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&( \
q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else \
throw z}}return v},param:function(a,c){var \
d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+enc \
odeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else \
for(var g in a)b_(g,a[g],c,e);return \
d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var \
cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return \
f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof \
b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var
  g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback, \
i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&& \
(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b. \
data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script \
json"]=function(){g||f.error(h+" was not called");return \
g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, \
application/javascript, application/ecmascript, \
application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text \
script":function(a){f.globalEval(a);return \
a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a \
.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var \
d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.
  async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.on \
readystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyStat \
e))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200," \
success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var \
ce=a.ActiveXObject?function(){for(var a in \
cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.is \
Local&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in \
a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var \
d;return{send:function(e,g){var \
h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j \
in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-Wit
  h"]="XMLHttpRequest");try{for(j in \
e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var \
j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete \
cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m= \
{},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){ \
}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j==23&&(j \
4)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg \
||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var \
cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[[ \
"height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft \
","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var \
d,e;if(a||a===0)return this.animate(ct("show",3)  ,a,b,c);for(var \
g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay \
")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contai \
ns(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g= \
0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return \
this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var \
d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none" \
&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return \
this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof \
a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var \
b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return \
this},fadeTo:functi  on(a,b,c,d){return \
this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function \
g(){e.queue===!1&&f._mark(this);var \
b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i \
in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete \
a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i \
in a||(a[i]=l[i])}}for(g in \
a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties \
[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return \
b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow \
,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(th \
is,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline" \
?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidd
  en");for(i in a)j=new \
f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":" \
hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.ex \
ec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.st \
yle(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var \
e=f.speed(b,c,d);if(f.isEmptyObject(a))return \
this.each(e.complete,[!1]);a=f.extend({},a);return \
e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof \
a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return \
this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var \
b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in \
g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else \
g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue
  ===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)} \
)}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fa \
deIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return \
this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof \
a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof \
d.duration=="number"?d.duration:d.duration in \
f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===! \
0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return \
d},easing:{linear:function(a){return \
a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.proto
  type={update:function(){this.options.step&&this.options.step.call(this.elem,this.now \
,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return \
this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return \
isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function \
h(a){return e.step(a)}var \
e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.s \
tate=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.q \
ueue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.o \
ptions.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fx \
show"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var \
a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a! \
=b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0 \
,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data \
(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var \
b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){t \
his.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b \
in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&! \
f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b \
in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeD \
ata(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==In \
finity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this
                
 .prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var \
a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length|| \
f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,f \
ast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_defa \
ult:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a. \
unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("m \
argin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return \
f.grep(f.timers,function(b){return a===b.elem}).length});var \
cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in \
c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return \
d?{top:d.top,l  eft:d.left}:{top:0,left:0};var \
g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pag \
eYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxM \
odel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var \
d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.curre \
ntStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.suppor \
t.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentSt \
yle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.do \
esNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+= \
parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetPar \
ent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parse \
Float(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position  \
==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPos \
ition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrol \
lLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return \
a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var \
c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return \
f.offset.bodyOffset(c);return \
cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var \
b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloa \
t(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var \
d=f.css(a,"position");d==="static"&&(a.style.position="relative");var \
e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed") \
&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFuncti
  on(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in \
b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return \
null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top \
:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f. \
css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=par \
seFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return \
this.map(function(){var \
a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return \
a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var \
d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var \
h=cy(a);if(g===b)return h?c in \
h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(
  d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var \
d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var \
a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var \
b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return \
f.access(this,function(a,c,h){var \
i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return \
f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return \
i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return \
f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof \
define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return \
f})})(window); \ No newline at end of file
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery.nivo.slider.pack.js \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery.nivo.slider.pack.js
 new file mode 100644
index 0000000..929c77b
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/js/jquery.nivo.slider.pack.js
 @@ -0,0 +1,10 @@
+/*
+ * jQuery Nivo Slider v3.1
+ * http://nivo.dev7studios.com
+ *
+ * Copyright 2012, Dev7studios
+ * Free to use and abuse under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+(function(a){var b=function(b,c){var d=a.extend({},a.fn.nivoSlider.defaults,c);var \
e={currentSlide:0,currentImage:"",totalSlides:0,running:false,paused:false,stop:false,controlNavEl:false};var \
f=a(b);f.data("nivo:vars",e).addClass("nivoSlider");var \
g=f.children();g.each(function(){var b=a(this);var \
c="";if(!b.is("img")){if(b.is("a")){b.addClass("nivo-imageLink");c=b}b=b.find("img:first")}var \
d=d===0?b.attr("width"):b.width(),f=f===0?b.attr("height"):b.height();if(c!==""){c.css \
("display","none")}b.css("display","none");e.totalSlides++});if(d.randomStart){d.start \
Slide=Math.floor(Math.random()*e.totalSlides)}if(d.startSlide>0){if(d.startSlide>=e.to \
talSlides){d.startSlide=e.totalSlides-1}e.currentSlide=d.startSlide}if(a(g[e.currentSl \
ide]).is("img")){e.currentImage=a(g[e.currentSlide])}else{e.currentImage=a(g[e.current \
Slide]).find("img:first")}if(a(g[e.currentSlide]).is("a")){a(g[e.currentSlide]).css("display","block")}var \
h=a('<img class="nivo-main-image" src="#" />');h.attr("sr  \
c",e.currentImage.attr("src")).show();f.append(h);a(window).resize(function(){f.childr \
en("img").width(f.width());h.attr("src",e.currentImage.attr("src"));h.stop().height("auto");a(".nivo-slice").remove();a(".nivo-box").remove()});f.append(a('<div \
class="nivo-caption"></div>'));var i=function(b){var \
c=a(".nivo-caption",f);if(e.currentImage.attr("title")!=""&&e.currentImage.attr("title")!=undefined){var \
d=e.currentImage.attr("title");if(d.substr(0,1)=="#")d=a(d).html();if(c.css("display") \
=="block"){setTimeout(function(){c.html(d)},b.animSpeed)}else{c.html(d);c.stop().fadeIn(b.animSpeed)}}else{c.stop().fadeOut(b.animSpeed)}};i(d);var \
j=0;if(!d.manualAdvance&&g.length>1){j=setInterval(function(){o(f,g,d,false)},d.pauseTime)}if(d.directionNav){f.append('<div \
class="nivo-directionNav"><a class="nivo-prevNav">'+d.prevText+'</a><a \
class="nivo-nextNav">'+d.nextText+"</a></div>");a("a.nivo-prevNav",f).live("click",function(){if(e.running){return \
false}clearInterval(j);j="";e.currentSl  \
ide-=2;o(f,g,d,"prev")});a("a.nivo-nextNav",f).live("click",function(){if(e.running){return \
false}clearInterval(j);j="";o(f,g,d,"next")})}if(d.controlNav){e.controlNavEl=a('<div \
class="nivo-controlNav"></div>');f.after(e.controlNavEl);for(var \
k=0;k<g.length;k++){if(d.controlNavThumbs){e.controlNavEl.addClass("nivo-thumbs-enabled");var \
l=g.eq(k);if(!l.is("img")){l=l.find("img:first")}if(l.attr("data-thumb"))e.controlNavEl.append('<a \
class="nivo-control" rel="'+k+'"><img src="'+l.attr("data-thumb")+'" alt="" \
/></a>')}else{e.controlNavEl.append('<a class="nivo-control" \
rel="'+k+'">'+(k+1)+"</a>")}}a("a:eq("+e.currentSlide+")",e.controlNavEl).addClass("active");a("a",e.controlNavEl).bind("click",function(){if(e.running)return \
false;if(a(this).hasClass("active"))return \
false;clearInterval(j);j="";h.attr("src",e.currentImage.attr("src"));e.currentSlide=a( \
this).attr("rel")-1;o(f,g,d,"control")})}if(d.pauseOnHover){f.hover(function(){e.paused=true;clearInterval(j);j=""},function(){e
                
 .pausedúlse;if(j===""&&!d.manualAdvance){j=setInterval(function(){o(f,g,d,false)},d.p \
auseTime)}})}f.bind("nivo:animFinished",function(){h.attr("src",e.currentImage.attr("s \
rc"));e.runningúlse;a(g).each(function(){if(a(this).is("a")){a(this).css("display","no \
ne")}});if(a(g[e.currentSlide]).is("a")){a(g[e.currentSlide]).css("display","block")}i \
f(j===""&&!e.paused&&!d.manualAdvance){j=setInterval(function(){o(f,g,d,false)},d.pauseTime)}d.afterChange.call(this)});var \
m=function(b,c,d){if(a(d.currentImage).parent().is("a"))a(d.currentImage).parent().css \
("display","block");a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control \
img").width(b.width()).css("visibility","hidden").show();var \
e=a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control \
img").parent().is("a")?a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control \
img").parent().height():a('img[src="'+d.currentImage.attr("src")+'"]',b  \
).not(".nivo-main-image,.nivo-control img").height();for(var f=0;f<c.slices;f++){var \
g=Math.round(b.width()/c.slices);if(f===c.slices-1){b.append(a('<div \
class="nivo-slice" name="'+f+'"><img src="'+d.currentImage.attr("src")+'" \
style="position:absolute; width:'+b.width()+"px; height:auto; display:block \
!important; top:0; left:-"+(g+f*g-g)+'px;" \
/></div>').css({left:g*f+"px",width:b.width()-g*f+"px",height:e+"px",opacity:"0",overflow:"hidden"}))}else{b.append(a('<div \
class="nivo-slice" name="'+f+'"><img src="'+d.currentImage.attr("src")+'" \
style="position:absolute; width:'+b.width()+"px; height:auto; display:block \
!important; top:0; left:-"+(g+f*g-g)+'px;" \
/></div>').css({left:g*f+"px",width:g+"px",height:e+"px",opacity:"0",overflow:"hidden" \
}))}}a(".nivo-slice",b).height(e);h.stop().animate({height:a(d.currentImage).height()},c.animSpeed)};var \
n=function(b,c,d){if(a(d.currentImage).parent().is("a"))a(d.currentImage).parent().css("display","block");a('img[src="'+d.currentImage
                
 .attr("src")+'"]',b).not(".nivo-main-image,.nivo-control \
img").width(b.width()).css("visibility","hidden").show();var \
e=Math.round(b.width()/c.boxCols),f=Math.round(a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control \
img").height()/c.boxRows);for(var g=0;g<c.boxRows;g++){for(var \
i=0;i<c.boxCols;i++){if(i===c.boxCols-1){b.append(a('<div class="nivo-box" \
name="'+i+'" rel="'+g+'"><img src="'+d.currentImage.attr("src")+'" \
style="position:absolute; width:'+b.width()+"px; height:auto; display:block; \
top:-"+f*g+"px; left:-"+e*i+'px;" \
/></div>').css({opacity:0,left:e*i+"px",top:f*g+"px",width:b.width()-e*i+"px"}));a('.nivo-box[name="'+i+'"]',b).height(a('.nivo-box[name="'+i+'"] \
img',b).height()+"px")}else{b.append(a('<div class="nivo-box" name="'+i+'" \
rel="'+g+'"><img src="'+d.currentImage.attr("src")+'" style="position:absolute; \
width:'+b.width()+"px; height:auto; display:block; top:-"+f*g+"px; left:-"+e*i+'px;" \
/></div>').css({opacity:0,left:e*i+"p  \
x",top:f*g+"px",width:e+"px"}));a('.nivo-box[name="'+i+'"]',b).height(a('.nivo-box[name="'+i+'"] \
img',b).height()+"px")}}}h.stop().animate({height:a(d.currentImage).height()},c.animSpeed)};var \
o=function(b,c,d,e){var \
f=b.data("nivo:vars");if(f&&f.currentSlide===f.totalSlides-1){d.lastSlide.call(this)}if((!f||f.stop)&&!e){return \
false}d.beforeChange.call(this);if(!e){h.attr("src",f.currentImage.attr("src"))}else{i \
f(e==="prev"){h.attr("src",f.currentImage.attr("src"))}if(e==="next"){h.attr("src",f.c \
urrentImage.attr("src"))}}f.currentSlide++;if(f.currentSlide===f.totalSlides){f.curren \
tSlide=0;d.slideshowEnd.call(this)}if(f.currentSlide<0){f.currentSlide=f.totalSlides-1 \
}if(a(c[f.currentSlide]).is("img")){f.currentImage=a(c[f.currentSlide])}else{f.current \
Image=a(c[f.currentSlide]).find("img:first")}if(d.controlNav){a("a",f.controlNavEl).re \
moveClass("active");a("a:eq("+f.currentSlide+")",f.controlNavEl).addClass("active")}i(d);a(".nivo-slice",b).remove();a(".nivo-box",b).remove();
  var g=d.effect,j="";if(d.effect==="random"){j=new \
Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sli \
ceUpDownLeft","fold","fade","boxRandom","boxRain","boxRainReverse","boxRainGrow","boxR \
ainGrowReverse");g=j[Math.floor(Math.random()*(j.length+1))];if(g===undefined){g="fade \
"}}if(d.effect.indexOf(",")!==-1){j=d.effect.split(",");g=j[Math.floor(Math.random()*j \
.length)];if(g===undefined){g="fade"}}if(f.currentImage.attr("data-transition")){g=f.currentImage.attr("data-transition")}f.running=true;var \
k=0,l=0,o="",q="",r="",s="";if(g==="sliceDown"||g==="sliceDownRight"||g==="sliceDownLe \
ft"){m(b,d,f);k=0;l=0;o=a(".nivo-slice",b);if(g==="sliceDownLeft"){o=a(".nivo-slice",b)._reverse()}o.each(function(){var \
c=a(this);c.css({top:"0px"});if(l===d.slices-1){setTimeout(function(){c.animate({opaci \
ty:"1.0"},d.animSpeed,"",function(){b.trigger("nivo:animFinished")})},100+k)}else{setTimeout(function(){c.animate({opacity:"1.0"},d.animSpeed)},100+k)}k+P;l++}
  )}else if(g==="sliceUp"||g==="sliceUpRight"||g==="sliceUpLeft"){m(b,d,f);k=0;l=0;o=a \
(".nivo-slice",b);if(g==="sliceUpLeft"){o=a(".nivo-slice",b)._reverse()}o.each(function(){var \
c=a(this);c.css({bottom:"0px"});if(l===d.slices-1){setTimeout(function(){c.animate({op \
acity:"1.0"},d.animSpeed,"",function(){b.trigger("nivo:animFinished")})},100+k)}else{s \
etTimeout(function(){c.animate({opacity:"1.0"},d.animSpeed)},100+k)}k+P;l++})}else \
if(g==="sliceUpDown"||g==="sliceUpDownRight"||g==="sliceUpDownLeft"){m(b,d,f);k=0;l=0;var \
t=0;o=a(".nivo-slice",b);if(g==="sliceUpDownLeft"){o=a(".nivo-slice",b)._reverse()}o.each(function(){var \
c=a(this);if(l===0){c.css("top","0px");l++}else{c.css("bottom","0px");l=0}if(t===d.sli \
ces-1){setTimeout(function(){c.animate({opacity:"1.0"},d.animSpeed,"",function(){b.tri \
gger("nivo:animFinished")})},100+k)}else{setTimeout(function(){c.animate({opacity:"1.0"},d.animSpeed)},100+k)}k+P;t++})}else \
if(g==="fold"){m(b,d,f);k=0;l=0;a(".nivo-slice",b).each(func  tion(){var \
c=a(this);var e=c.width();c.css({top:"0px",width:"0px"});if(l===d.slices-1){setTimeout \
(function(){c.animate({width:e,opacity:"1.0"},d.animSpeed,"",function(){b.trigger("niv \
o:animFinished")})},100+k)}else{setTimeout(function(){c.animate({width:e,opacity:"1.0"},d.animSpeed)},100+k)}k+P;l++})}else \
if(g==="fade"){m(b,d,f);q=a(".nivo-slice:first",b);q.css({width:b.width()+"px"});q.ani \
mate({opacity:"1.0"},d.animSpeed*2,"",function(){b.trigger("nivo:animFinished")})}else \
if(g==="slideInRight"){m(b,d,f);q=a(".nivo-slice:first",b);q.css({width:"0px",opacity: \
"1"});q.animate({width:b.width()+"px"},d.animSpeed*2,"",function(){b.trigger("nivo:animFinished")})}else \
if(g==="slideInLeft"){m(b,d,f);q=a(".nivo-slice:first",b);q.css({width:"0px",opacity:" \
1",left:"",right:"0px"});q.animate({width:b.width()+"px"},d.animSpeed*2,"",function(){q.css({left:"0px",right:""});b.trigger("nivo:animFinished")})}else \
if(g==="boxRandom"){n(b,d,f);r=d.boxCols*d.boxRows;l=0;k=0;s=p(a(".nivo-box",  \
b));s.each(function(){var \
c=a(this);if(l===r-1){setTimeout(function(){c.animate({opacity:"1"},d.animSpeed,"",fun \
ction(){b.trigger("nivo:animFinished")})},100+k)}else{setTimeout(function(){c.animate({opacity:"1"},d.animSpeed)},100+k)}k+ \
;l++})}else if(g==="boxRain"||g==="boxRainReverse"||g==="boxRainGrow"||g==="boxRainGrowReverse"){n(b,d,f);r=d.boxCols*d.boxRows;l=0;k=0;var \
u=0;var v=0;var w=[];w[u]=[];s=a(".nivo-box",b);if(g==="boxRainReverse"||g==="boxRainG \
rowReverse"){s=a(".nivo-box",b)._reverse()}s.each(function(){w[u][v]=a(this);v++;if(v===d.boxCols){u++;v=0;w[u]=[]}});for(var \
x=0;x<d.boxCols*2;x++){var y=x;for(var \
z=0;z<d.boxRows;z++){if(y>=0&&y<d.boxCols){(function(c,e,f,h,i){var j=a(w[c][e]);var \
k=j.width();var l=j.height();if(g==="boxRainGrow"||g==="boxRainGrowReverse"){j.width(0 \
).height(0)}if(h===i-1){setTimeout(function(){j.animate({opacity:"1",width:k,height:l} \
,d.animSpeed/1.3,"",function(){b.trigger("nivo:animFinished")})},100+f)}else{setTimeout(function(){j.an
  imate({opacity:"1",width:k,height:l},d.animSpeed/1.3)},100+f)}})(z,y,k,l,r);l++}y--}k+0}}};var \
p=function(a){for(var \
b,c,d=a.length;d;b=parseInt(Math.random()*d,10),c=a[--d],a[d]=a[b],a[b]=c);return \
a};var q=function(a){if(this.console&&typeof \
console.log!=="undefined"){console.log(a)}};this.stop=function(){if(!a(b).data("nivo:vars").stop){a(b).data("nivo:vars").stop=true;q("Stop \
Slider")}};this.start=function(){if(a(b).data("nivo:vars").stop){a(b).data("nivo:vars").stopúlse;q("Start \
Slider")}};d.afterLoad.call(this);return this};a.fn.nivoSlider=function(c){return \
this.each(function(d,e){var f=a(this);if(f.data("nivoslider")){return \
f.data("nivoslider")}var g=new \
b(this,c);f.data("nivoslider",g)})};a.fn.nivoSlider.defaults={effect:"random",slices:1 \
5,boxCols:8,boxRows:4,animSpeed:500,pauseTime:3e3,startSlide:0,directionNav:true,contr \
olNav:true,controlNavThumbs:false,pauseOnHover:true,manualAdvance:false,prevText:"Prev",nextText:"Next",randomStart:false,beforeChange:funct
  ion(){},afterChange:function(){},slideshowEnd:function(){},lastSlide:function(){},afterLoad:function(){}};a.fn._reverse=[].reverse})(jQuery)
 \ No newline at end of file
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/kolab.info \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/kolab.info new file mode \
100644 index 0000000..83547ec
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/kolab.info
@@ -0,0 +1,15 @@
+name = Kolab
+description = custom theme made for kolab.org
+version = 0.9
+core = 7.x
+engine = phptemplate
+
+stylesheets[all][] = css/screen.css
+stylesheets[all][] = css/ie.css
+stylesheets[all][] = css/custom.css
+stylesheets[print][] = css/print.css
+
+regions[help] = Help
+regions[content] = Content
+regions[right_sidebar] = Right sidebar
+regions[footer] = Footer
diff --git a/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/page.tpl.php \
b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/page.tpl.php new file mode \
100644 index 0000000..95a8fe5
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/kolab.org/themes/kolab/page.tpl.php
@@ -0,0 +1,56 @@
+<?php
+  if(drupal_is_front_page()): $title = ""; endif;
+?>
+
+<div id="header">
+  <div class="container">
+    <a href="/"><img src="/sites/all/themes/kolab/images/logo.png" border="0" \
alt="Kolab Groupware" title="Kolab Groupware" /></a> +  </div>
+</div>
+
+<div id="root">
+  <div class="container">
+      <?php print theme('links__system_main_menu', array(
+        'links' => $main_menu,
+        'attributes' => array(
+          'id' => 'navlist',
+        ),
+      )); ?>
+      <div class="clear"></div>
+      <?php print theme('links__system_secondary_menu', array(
+        'links' => $secondary_menu,
+        'attributes' => array(
+          'id' => 'subnavlist',
+        ),
+      )); ?>
+      <div class="clear"></div>
+      <div class="tabs"><?php if($tabs): print render($tabs); endif; ?></div>
+
+      <?php if($page['help']): print render($page['help']); endif; ?>
+
+      <div id="main">
+        <div id="content">
+          <?php print render($title_prefix); ?>
+            <?php if ($title): ?><h1 class="title"><?php print $title; ?></h1><?php \
endif; ?> +          <?php print render($title_suffix); ?>
+          <?php if($messages): print render($messages); endif; ?>
+          <?php if($page['content']): print render($page['content']); endif; ?>
+        </div>
+        <?php if($page['right_sidebar']): ?>
+          <div id="right-sidebar">
+            <?php print render($page['right_sidebar']); ?>
+          </div>
+        <?php endif; ?>
+        <div class="clear"></div>
+      </div>
+
+      <?php print render($feed_icons); ?>
+
+      <div id="footer">
+        <?php print render($page['footer']); ?>
+        <div id="footer-icons">
+          <img src="/sites/all/themes/kolab/images/footer.png">
+        </div>
+      </div>
+  </div>
+</div>


commit 0ec80b3712889ec4b2f02933389ac96290e08226
Author: Torsten Grote <grote@kolabsys.com>
Date:   Mon Mar 24 16:10:32 2014 +0100

    module security update

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/LICENSE.txt \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/LICENSE.txt old mode 100644
new mode 100755
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/bulk_export/bulk_export.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/bulk_export/bulk_export.info \
                index d27ea9a..f78fb86 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/bulk_export/bulk_export.info
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/bulk_export/bulk_export.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/css/modal.css \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/css/modal.css index \
                d9f44e2..def374b 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/css/modal.css
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/css/modal.css
@@ -89,6 +89,10 @@ div.ctools-modal-content .form-checkboxes {
   clear: left;
 }

+div.ctools-modal-content .vertical-tabs-panes > fieldset {
+  clear: none;
+}
+
 div.ctools-modal-content .resizable-textarea {
   width: auto;
   margin-left: 15em;
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.info index \
                8a7b0b6..05d3d5f 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.info
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.info
@@ -6,9 +6,9 @@ files[] = includes/context.inc
 files[] = includes/math-expr.inc
 files[] = includes/stylizer.inc

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.install \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.install index \
                1f961f1..63677fc 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.install
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.install
@@ -37,7 +37,7 @@ function ctools_requirements($phase) {
 }

 /**
- * Implements hook_schemea
+ * Implements hook_schema().
  */
 function ctools_schema() {
   return ctools_schema_2();
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.module \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.module index \
                f014e74..b5ab626 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.module
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools.module
@@ -368,6 +368,59 @@ function ctools_set_no_blocks($blocks = FALSE) {
 }

 /**
+ * Wrapper function to create UUIDs via ctools, falls back on UUID module
+ * if it is enabled. This code is a copy of uuid.inc from the uuid module.
+ * @see http://php.net/uniqid#65879
+ */
+
+function ctools_uuid_generate() {
+  if (!module_exists('uuid')) {
+    ctools_include('uuid');
+
+    $callback = drupal_static(__FUNCTION__);
+
+    if (empty($callback)) {
+      if (function_exists('uuid_create') && !function_exists('uuid_make')) {
+        $callback = '_ctools_uuid_generate_pecl';
+      }
+      elseif (function_exists('com_create_guid')) {
+        $callback = '_ctools_uuid_generate_com';
+      }
+      else {
+        $callback = '_ctools_uuid_generate_php';
+      }
+    }
+    return $callback();
+  }
+  else {
+    return uuid_generate();
+  }
+}
+
+/**
+ * Check that a string appears to be in the format of a UUID.
+ * @see http://drupal.org/project/uuid
+ *
+ * @param $uuid
+ *   The string to test.
+ *
+ * @return
+ *   TRUE if the string is well formed.
+ */
+function ctools_uuid_is_valid($uuid = '') {
+  if (empty($uuid)) {
+    return FALSE;
+  }
+  if (function_exists('uuid_is_valid') || module_exists('uuid')) {
+    return uuid_is_valid($uuid);
+  }
+  else {
+    ctools_include('uuid');
+    return uuid_is_valid($uuid);
+  }
+}
+
+/**
  * Add an array of classes to the body.
  *
  * @param mixed $classes
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
 index 1019253..8bde679 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
 @@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
 index 03ccb34..3791696 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
 @@ -4,9 +4,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 core = 7.x

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
 index d9c4567..4f64f8d 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
 @@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module
 index a2e8ee2..3e316a9 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module
 @@ -37,6 +37,26 @@ function ctools_custom_content_ctools_plugin_directory($module, \
$plugin) {  }

 /**
+ * Implements hook_get_pane_links_alter().
+ */
+function ctools_custom_content_get_pane_links_alter(&$links, $pane, $content_type) {
+  if ($pane->type == 'custom') {
+    if(!isset($pane->configuration['name'])) {
+      $name_of_pane = $pane->subtype;
+    }
+    else {
+      $name_of_pane = $pane->configuration['name'];
+    }
+
+    $links['top']['edit_custom_content'] = array(
+      'title' => t('Edit custom content pane'),
+      'href' => url('admin/structure/ctools-content/list/' . $name_of_pane . \
'/edit', array('absolute' => TRUE)), +      'attributes' => array('target' => \
array('_blank')), +    );
+  }
+}
+
+/**
  * Create callback for creating a new CTools custom content type.
  *
  * This ensures we get proper defaults from the plugin for its settings.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
 index e4fa534..4a855a2 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
 @@ -7,9 +7,9 @@ dependencies[] = page_manager
 dependencies[] = advanced_help
 core = 7.x

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/context-content.html \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/context-content.html index \
                8af5df4..c1c6a35 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/context-content.html
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/context-content.html
@@ -116,6 +116,10 @@ The first form will always have required configuration added to \
it. These forms  <dt>required context [Optional]</dt>

   <dd>Either a ctools_context_required or ctools_context_optional or array of \
contexts for this content. If omitted, no contexts are used.</dd> +
+  <dt>create content access [Optional]</dt>
+
+  <dd>An optional callback to determine if a user can access this subtype. The \
callback will receive two arguments, the type and subtype.</dd>  </dl>

 <h2>Rendered content</h2>
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/export.html \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/export.html index \
                3a774e8..ce24cad 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/export.html
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/help/export.html
@@ -156,6 +156,9 @@ function mymodule_schema() {
 <dt>to hook code callback</dt>
 <dd>Function used to generate an export for the bulk export process. This is only \
necessary if the export is more complicated than simply listing the fields. Defaults \
to $module . '_' . $table . '_to_hook_code'.</dt>

+<dt>boolean</dt>
+<dd>Explicitly indicate if a table field contains a boolean or not. The Schema API \
does not model the +difference between a tinyint and a boolean type. Boolean values \
are stored in tinyint fields. This may cause mismatch errors when exporting a \
non-boolean value from a tinyint field. Add this to a tinyint field if it contains \
boolean data and can be exported. Defaults to TRUE.

 <dt>create callback</dt>
 <dd>CRUD callback to use to create a new exportable item in memory. If not provided, \
the default function will be used. The single argument is a boolean used to determine \
if defaults should be set on the object. This object will not be written to the \
                database by this callback.</dd>
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.inc index \
                890ec23..e0e5534 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.inc
@@ -687,6 +687,11 @@ function ctools_content_get_available_types($contexts = NULL, \
$has_content = FAL  }
       }

+      // Check if the content type provides an access callback.
+      if (isset($subtype['create content access']) && \
function_exists($subtype['create content access']) && !$subtype['create content \
access']($plugin, $subtype)) { +        continue;
+      }
+
       // If we made it through all the tests, then we can use this content.
       $available[$id][$subtype_id] = $subtype;
     }
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.menu.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.menu.inc index \
                93884fc..c14c368 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.menu.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/content.menu.inc
@@ -24,67 +24,116 @@ function ctools_content_menu(&$items) {
  * Helper function for autocompletion of entity titles.
  */
 function ctools_content_autocomplete_entity($type, $string = '') {
-  $entity = entity_get_info($type);
   if ($string != '') {
-    // @todo verify the query logic here, it's untested.
-    // Set up the query
-    $query = db_select($entity['base table'], 'b');
-    if ($entity['entity keys']['label']) {
-      $query->fields('b', array($entity['entity keys']['id'], $entity['entity \
                keys']['label']))->range(0, 10);
-    }
-    else {
-      $query->fields('b', array($entity['entity keys']['id']))->range(0, 10);
-    }
+    global $user;
+    $entity_info = entity_get_info($type);

+    // We must query all ids, because if every one of the 10 don't have access
+    // the user may never be able to autocomplete a node title.
     $preg_matches = array();
+    $matches = array();
     $match = preg_match('/\[id: (\d+)\]/', $string, $preg_matches);
     if (!$match) {
       $match = preg_match('/^id: (\d+)/', $string, $preg_matches);
     }
+    // If an ID match was found, use that ID rather than the whole string.
     if ($match) {
-      $query->condition('b.' . $entity['entity keys']['id'], $preg_matches[1]);
+      $entity_id = $preg_matches[1];
+      $entity = entity_load($type, array($entity_id));
+
+      // Format results in an array so later we could add attributes to the
+      // autocomplete text that is returned.
+      $results = array($entity_id => array(
+        'label' => $entity[$entity_id]->$entity_info['entity keys']['label'],
+      ));
     }
-    elseif ($entity['entity keys']['label']) {
-      $query->condition('b.' . $entity['entity keys']['label'], '%' . \
db_like($string) . '%', 'LIKE'); +    else {
+      $results = _ctools_getReferencableEntities($type, $entity_info, $string, \
'LIKE', 10); +    }
+    foreach($results as $entity_id => $result) {
+      if (!$entity_info['entity keys']['label']) {
+         $matches["[id: $entity_id]"] = '<span class="autocomplete_title">' . \
$entity_id . '</span>'; +      }
+      else {
+        $matches[$result['label'] . " [id: $entity_id]"] = '<span \
class="autocomplete_title">' . check_plain($result['label']) . '</span>'; +      }
     }

-    $matches = array();
-    if ($type == 'node') {
-      if (!user_access('bypass node access')) {
-        // If the user is able to view their own unpublished nodes, allow them
-        // to see these in addition to published nodes.
-        if (user_access('view own unpublished content')) {
-          $query->condition(db_or()
-            ->condition('b.status', NODE_PUBLISHED)
-            ->condition('b.uid', $GLOBALS['user']->uid)
-          );
-        }
-        else {
-          // If not, restrict the query to published nodes.
-          $query->condition('b.status', NODE_PUBLISHED);
-        }
+    drupal_json_output($matches);
+  }
+}
+
+/*
+ * Use well known/tested entity reference code to build our search query
+ * From EntityReference_SelectionHandler_Generic class
+ */
+function _ctools_buildQuery($entity_type, $entity_info, $match = NULL, \
$match_operator = 'CONTAINS') { +  $base_table = $entity_info['base table'];
+    $query = db_select($base_table)
+      ->fields($base_table, array($entity_info['entity keys']['id']));
+
+    if (isset($match)) {
+      if (isset($entity_info['entity keys']['label'])) {
+        $query->condition($base_table .'.'. $entity_info['entity keys']['label'], \
'%' . $match . '%' , $match_operator);  }
+    }

-      $query->addTag('node_access');
-      $query->join('users', 'u', 'b.uid = u.uid');
-      $query->addField('u', 'name', 'name');
+    // Add a label to the query, if the label exists
+    if (isset($entity_info['entity keys']['label'])) {
+      $query->fields($base_table, array($entity_info['entity keys']['label']));
+    }

-      foreach ($query->execute() as $nodeish) {
-        $name = empty($nodeish->name) ? variable_get('anonymous', t('Anonymous')) : \
                check_plain($nodeish->name);
-        $matches[$nodeish->title . " [id: $nodeish->nid]"] = '<span \
class="autocomplete_title">' . check_plain($nodeish->title) . '</span> <span \
class="autocomplete_user">(' . t('by @user', array('@user' => $name)) . ')</span>'; + \
// Add a generic entity access tag to the query. +    $query->addTag('ctools');
+
+    if($entity_type == 'comment') {
+      // Adding the 'comment_access' tag is sadly insufficient for comments: core
+      // requires us to also know about the concept of 'published' and
+      // 'unpublished'.
+      if (!user_access('administer comments')) {
+        $query->condition('comment.status', COMMENT_PUBLISHED);
+      }
+      // Join to a node if the user does not have node access bypass permissions
+      // to obey node published permissions
+      if (!user_access('bypass node access') && \
!count(module_implements('node_grants'))) { +        $node_alias = \
$query->innerJoin('node', 'n', '%alias.nid = comment.nid'); +        \
$query->condition($node_alias . '.status', NODE_PUBLISHED);  }
+      $query->addTag('node_access');
     }
     else {
-      foreach ($query->execute() as $item) {
-        $id = $item->{$entity['entity keys']['id']};
-        if ($entity['entity keys']['label']) {
-          $matches[$item->{$entity['entity keys']['label']} . " [id: $id]"] = '<span \
class="autocomplete_title">' . check_plain($item->{$entity['entity keys']['label']}) \
                . '</span>';
-        }
-        else {
-          $matches["[id: $id]"] = '<span class="autocomplete_title">' . \
                check_plain($item->{$entity['entity keys']['id']}) . '</span>';
-        }
-      }
+      $query->addTag($entity_type . '_access');
     }
-    drupal_json_output($matches);
-  }
+
+    // Add the sort option.
+    if(isset($entity_info['entity keys']['label'])) {
+      $query->orderBy($base_table .'.'. $entity_info['entity keys']['label'], \
'ASC'); +    }
+
+    return $query;
 }
+
+/**
+ * Private function to get referencable entities. Based on code from the
+ * Entity Reference module.
+ */
+function _ctools_getReferencableEntities($entity_type, $entity_info, $match = NULL, \
$match_operator = 'LIKE', $limit = 0) { +  $options = array();
+
+  $query = _ctools_buildQuery($entity_type, $entity_info, $match, $match_operator);
+  if ($limit > 0) {
+    $query->range(0, $limit);
+  }
+
+  $results = $query->execute();
+
+  if (!empty($results)) {
+    foreach ($results as $record) {
+      $options[$record->{$entity_info['entity keys']['id']}] = array(
+        'label' => isset($entity_info['entity keys']['label']) ? \
check_plain($record->{$entity_info['entity keys']['label']}) : \
$record->{$entity_info['entity keys']['id']}, +      );
+    }
+  }
+
+  return $options;
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-admin.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-admin.inc index \
                7e5cd02..c774bf4 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-admin.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-admin.inc
@@ -416,12 +416,19 @@ function ctools_context_ajax_item_add($mechanism = NULL, $type \
= NULL, $cache_ke  ctools_cache_operation($mechanism, $cache_key, 'finalize', \
$object);

     // Very irritating way to update the form for our contexts.
-    $arg_form_state = array('values' => array());
+    $arg_form_state = array(
+      'values' => array(),
+      'programmed' => FALSE,
+      'process_input' => FALSE,
+      'complete form' => array(),
+    );

     $arg_form = array(
       '#post' => array(),
       '#programmed' => FALSE,
       '#tree' => FALSE,
+      '#parents' => array(),
+      '#array_parents' => array(),
     );

     // Build a chunk of the form to merge into the displayed form
@@ -446,6 +453,8 @@ function ctools_context_ajax_item_add($mechanism = NULL, $type = \
NULL, $cache_ke  '#post' => array(),
       '#programmed' => FALSE,
       '#tree' => FALSE,
+      '#parents' => array(),
+      '#array_parents' => array(),
     );

     $rel_form['relationship'] = array(
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-task-handler.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-task-handler.inc
 index 37aa6df..21ceea5 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-task-handler.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context-task-handler.inc
 @@ -161,7 +161,7 @@ function ctools_context_handler_render_handler($task, $subtask, \
$handler, $conte  'query' => $info['query'],
           'fragment' => $info['fragment'],
         );
-        return drupal_goto($info['destination'], $options, $info['response code']);
+        drupal_goto($info['destination'], $options, $info['response code']);
       // @todo -- should other response codes be supported here?
     }
   }
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context.inc index \
                93be748..3b75c0f 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/context.inc
@@ -1400,8 +1400,7 @@ function ctools_get_relevant_access_plugins($contexts) {
  * Create a context for the logged in user.
  */
 function ctools_access_get_loggedin_context() {
-  global $user;
-  $context = ctools_context_create('entity:user', $user);
+  $context = ctools_context_create('entity:user', array('type' => 'current'), TRUE);
   $context->identifier = t('Logged in user');
   $context->keyword    = 'viewer';
   $context->id         = 0;
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/css.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/css.inc index \
                ee11d48..9813a87 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/css.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/css.inc
@@ -77,9 +77,9 @@ function ctools_css_store($id, $css, $filter = TRUE) {

   $filename = ctools_css_cache($css, $filter);

-  db_insert('ctools_css_cache')
+  db_merge('ctools_css_cache')
+    ->key(array('cid' => $id))
     ->fields(array(
-      'cid' => $id,
       'filename' => $filename,
       'css' => $css,
       'filter' => intval($filter),
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/export.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/export.inc index \
                0b2ef46..0b85c2e 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/export.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/export.inc
@@ -945,7 +945,13 @@ function ctools_export_object($table, $object, $indent = '', \
$identifier = NULL,  else {
       $value = $object->$field;
       if ($info['type'] == 'int') {
-        $value = (isset($info['size']) && $info['size'] == 'tiny') ? (bool) $value : \
(int) $value; +        if (isset($info['size']) && $info['size'] == 'tiny') {
+          $info['boolean'] = (!isset($info['boolean'])) ? \
$schema['export']['boolean'] : $info['boolean']; +          $value = \
($info['boolean']) ? (bool) $value : (int) $value; +        }
+        else {
+          $value = (int) $value;
+        }
       }

       $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . \
ctools_var_export($value, $indent) . ";\n"; @@ -967,7 +973,12 @@ function \
                ctools_export_object($table, $object, $indent = '', $identifier = \
                NULL,
  * that it's easily available.
  */
 function ctools_export_get_schema($table) {
-  $cache = &drupal_static(__FUNCTION__);
+  static $drupal_static_fast;
+  if (!isset($drupal_static_fast)) {
+    $drupal_static_fast['cache'] = &drupal_static(__FUNCTION__);
+  }
+  $cache = &$drupal_static_fast['cache'];
+
   if (empty($cache[$table])) {
     $schema = drupal_get_schema($table);

@@ -1003,6 +1014,7 @@ function ctools_export_get_schema($table) {
       'cache defaults' => FALSE,
       'default cache bin' => 'cache',
       'export type string' => 'type',
+      'boolean' => TRUE,
     );

     // If the export definition doesn't have the "primary key" then the CRUD
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/plugins.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/plugins.inc index \
                0363fcb..cf3ac05 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/plugins.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/plugins.inc
@@ -343,8 +343,13 @@ function ctools_get_plugins($module, $type, $id = NULL) {
  *   name and each inner array keyed on plugin type name.
  */
 function ctools_plugin_get_plugin_type_info($flush = FALSE) {
-  $info_loaded = &drupal_static('ctools_plugin_type_info_loaded', FALSE);
-  $all_type_info = &drupal_static('ctools_plugin_type_info', array());
+  static $drupal_static_fast;
+  if (!isset($drupal_static_fast)) {
+    $drupal_static_fast['info_loaded'] = \
&drupal_static('ctools_plugin_type_info_loaded', FALSE); +    \
$drupal_static_fast['all_type_info'] = &drupal_static('ctools_plugin_type_info', \
array()); +  }
+  $info_loaded = &$drupal_static_fast['info_loaded'];
+  $all_type_info = &$drupal_static_fast['all_type_info'];

   // Only trigger info loading once.
   if ($info_loaded && !$flush) {
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/uuid.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/uuid.inc new file mode \
100644 index 0000000..b0567d3
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/includes/uuid.inc
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * @file
+ * Enables ctools generated modules to use UUIDs without the UUID module enabled.
+ * Per the ctools.module, this file only gets included if UUID doesn't exist.
+ */
+
+/**
+ * Pattern for detecting a valid UUID.
+ */
+define('UUID_PATTERN', '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}');
+
+/**
+ * Generates a UUID using the Windows internal GUID generator.
+ *
+ * @see http://php.net/com_create_guid
+ */
+function _ctools_uuid_generate_com() {
+  // Remove {} wrapper and make lower case to keep result consistent.
+  return drupal_strtolower(trim(com_create_guid(), '{}'));
+}
+
+/**
+ * Generates an universally unique identifier using the PECL extension.
+ */
+function _ctools_uuid_generate_pecl() {
+  return uuid_create(UUID_TYPE_DEFAULT);
+}
+
+/**
+ * Generates a UUID v4 using PHP code.
+ *
+ * Based on code from @see http://php.net/uniqid#65879 , but corrected.
+ */
+function _ctools_uuid_generate_php() {
+  // The field names refer to RFC 4122 section 4.1.2.
+  return sprintf('%04x%04x-%04x-4%03x-%04x-%04x%04x%04x',
+    // 32 bits for "time_low".
+    mt_rand(0, 65535), mt_rand(0, 65535),
+    // 16 bits for "time_mid".
+    mt_rand(0, 65535),
+    // 12 bits after the 0100 of (version) 4 for "time_hi_and_version".
+    mt_rand(0, 4095),
+    bindec(substr_replace(sprintf('%016b', mt_rand(0, 65535)), '10', 0, 2)),
+    // 8 bits, the last two of which (positions 6 and 7) are 01, for \
"clk_seq_hi_res" +    // (hence, the 2nd hex digit after the 3rd hyphen can only be \
1, 5, 9 or d) +    // 8 bits for "clk_seq_low" 48 bits for "node".
+    mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)
+  );
+}
+
+// This is wrapped in an if block to avoid conflicts with PECL's uuid_is_valid().
+/**
+ * Check that a string appears to be in the format of a UUID.
+ *
+ * @param $uuid
+ *  The string to test.
+ *
+ * @return
+ *   TRUE if the string is well formed.
+ */
+if (!function_exists('uuid_is_valid')) {
+  function uuid_is_valid($uuid) {
+    return preg_match('/^' . UUID_PATTERN . '$/', $uuid);
+  }
+}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/collapsible-div.js \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/collapsible-div.js index \
                da9bff9..134151c 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/collapsible-div.js
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/collapsible-div.js
@@ -212,6 +212,7 @@
           content.slideToggle(100, afterToggle);
         }

+        $container.toggleClass('ctools-collapsed');
         toggle.toggleClass('ctools-toggle-collapsed');

         // If we're supposed to remember the state of this class, do so.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/modal.js \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/modal.js index \
                831649f..33f071f 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/modal.js
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/js/modal.js
@@ -99,6 +99,11 @@
     $('span.modal-title', \
                Drupal.CTools.Modal.modal).html(Drupal.CTools.Modal.currentSettings.loadingText);
                
     Drupal.CTools.Modal.modalContent(Drupal.CTools.Modal.modal, \
                settings.modalOptions, settings.animation, settings.animationSpeed);
     $('#modalContent .modal-content').html(Drupal.theme(settings.throbberTheme));
+
+    // Position autocomplete results based on the scroll position of the modal.
+    $('#modalContent .modal-content').delegate('input.form-autocomplete', 'keyup', \
function() { +      $('#autocomplete').css('top', $(this).position().top + \
$(this).outerHeight() + $(this).offsetParent().filter('#modal-content').scrollTop()); \
+    });  };

   /**
@@ -222,7 +227,11 @@
         // AJAX submits specified in this manner automatically submit to the
         // normal form action.
         element_settings.url = Drupal.CTools.Modal.findURL(this);
+        if (element_settings.url == '') {
+          element_settings.url = $(this).closest('form').attr('action');
+        }
         element_settings.event = 'click';
+        element_settings.setClick = true;

         var base = $this.attr('id');
         Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
@@ -282,7 +291,10 @@
     // content. This is helpful for allowing users to see error messages at the
     // top of a form, etc.
     $('#modal-content').html(response.output).scrollTop(0);
-    Drupal.attachBehaviors();
+
+    // Attach behaviors within a modal dialog.
+    var settings = response.settings || ajax.settings || Drupal.settings;
+    Drupal.attachBehaviors('#modalContent', settings);
   }

   /**
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.admin.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.admin.inc
 index 3dce041..6ef0268 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.admin.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.admin.inc
 @@ -14,7 +14,7 @@
 function page_manager_list_page($js = NULL) {
   // Prevent this page from showing up when random other links fail.
   if ($js && $js != 'ajax' && $js != 'nojs') {
-    return drupal_not_found();
+    return MENU_NOT_FOUND;
   }

   // TRUE if 'ajax', FALSE if otherwise.
@@ -62,7 +62,7 @@ function page_manager_list_page($js = NULL) {
   if (isset($input['op']) && $input['op'] == t('Reset')) {
     unset($_SESSION['page_manager']['#admin']);
     if (!$js) {
-      return drupal_goto($_GET['q']);
+      drupal_goto($_GET['q']);
     }
     // clear everything but form id, form build id and form token:
     $keys = array_keys($input);
@@ -930,7 +930,7 @@ function _page_manager_get_operation_content($js, &$page, \
$active, $operation, $  $output = drupal_render($built_form);
     $title = empty($form_state['title']) ? $operation['title'] : \
$form_state['title'];  $titles[] = $title;
-    $title = implode(' &raquo ', array_filter($titles));
+    $title = implode(' &raquo; ', array_filter($titles));

     // If there are messages for the form, render them.
     if ($messages = theme('status_messages')) {
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.info \
                index 76095ff..709dd77 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/page_manager.info
 @@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
 index 69ac02d..eb2dcaa 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
 @@ -237,7 +237,7 @@ function page_manager_page_add_subtask($task_name = NULL, $step \
= NULL) {  if ($task_name) {
     $page = page_manager_get_page_cache($task_name);
     if (empty($page)) {
-      return drupal_not_found();
+      return MENU_NOT_FOUND;
     }

     $form_info['path'] = "admin/structure/pages/add/$task_name/%step";
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.inc
 index 6223c73..6a8545d 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/page.inc
 @@ -321,7 +321,7 @@ function page_manager_page_execute($subtask_id) {
   ctools_include('context-task-handler');
   $output = ctools_context_handler_render($task, $subtask, $contexts, $args);
   if ($output === FALSE) {
-    return drupal_not_found();
+    return MENU_NOT_FOUND;
   }

   return $output;
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
 index e276570..4be1150 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
 @@ -138,7 +138,7 @@ function page_manager_term_view_page($term, $depth = NULL) {
   $contexts = ctools_context_handler_get_task_contexts($task, '', array($term, \
$depth));

   if (empty($contexts)) {
-    return drupal_not_found();
+    return MENU_NOT_FOUND;
   }

   // Build the full output using the configured CTools plugin.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/entity_field_value.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/entity_field_value.inc
 index e5857d8..ab36ca9 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/entity_field_value.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/entity_field_value.inc
 @@ -139,6 +139,12 @@ function \
                ctools_entity_field_value_ctools_access_settings_submit($form, \
                &$form_s
  * Check for access.
  */
 function ctools_entity_field_value_ctools_access_check($conf, $context, $plugin) {
+  if (!isset($context->data)) {
+    // If the context doesn't exist -- for example, a newly added entity
+    // reference is used as a pane visibility criteria -- we deny access.
+    return FALSE;
+  }
+
   list($parent, $entity_type, $bundle_type, $field_name) = explode(':', \
$plugin['name']);

   if ($field_items = field_get_items($entity_type, $context->data, $field_name)) {
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/term_vocabulary.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/term_vocabulary.inc
 index 644600f..b003138 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/term_vocabulary.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/access/term_vocabulary.inc
 @@ -17,7 +17,11 @@ $plugin = array(
   'settings form' => 'ctools_term_vocabulary_ctools_access_settings',
   'settings form submit' => 'ctools_term_vocabulary_ctools_access_settings_submit',
   'summary' => 'ctools_term_vocabulary_ctools_access_summary',
-  'required context' => new ctools_context_required(t('Vocabulary'), \
array('taxonomy_term', 'terms', 'taxonomy_vocabulary')), +  'required context' => new \
ctools_context_required(t('Vocabulary'), array( +    'taxonomy_term',
+    'terms',
+    'taxonomy_vocabulary'
+  )),
 );

 /**
@@ -27,15 +31,17 @@ function ctools_term_vocabulary_ctools_access_settings($form, \
&$form_state, $con  $options = array();
   $vocabularies = taxonomy_get_vocabularies();
   foreach ($vocabularies as $voc) {
-    $options[$voc->vid] = check_plain($voc->name);
+    $options[$voc->machine_name] = check_plain($voc->name);
   }

-  $form['settings']['vids'] = array(
+  _ctools_term_vocabulary_ctools_access_map_vids($conf);
+
+  $form['settings']['machine_name'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Vocabularies'),
     '#options' => $options,
     '#description' => t('Only the checked vocabularies will be valid.'),
-    '#default_value' => $conf['vids'],
+    '#default_value' => $conf['machine_name'],
   );
   return $form;
 }
@@ -44,7 +50,7 @@ function ctools_term_vocabulary_ctools_access_settings($form, \
                &$form_state, $con
  * Compress the term_vocabularys allowed to the minimum.
  */
 function ctools_term_vocabulary_ctools_access_settings_submit($form, &$form_state) {
-  $form_state['values']['settings']['vids'] = \
array_filter($form_state['values']['settings']['vids']); +  \
$form_state['values']['settings']['machine_name'] = \
array_filter($form_state['values']['settings']['machine_name']);  }

 /**
@@ -53,11 +59,13 @@ function \
ctools_term_vocabulary_ctools_access_settings_submit($form, &$form_stat  function \
ctools_term_vocabulary_ctools_access_check($conf, $context) {  // As far as I know \
there should always be a context at this point, but this  // is safe.
-  if (empty($context) || empty($context->data) || empty($context->data->vid)) {
+  if (empty($context) || empty($context->data) || \
empty($context->data->vocabulary_machine_name)) {  return FALSE;
   }

-  if (array_filter($conf['vids']) && empty($conf['vids'][$context->data->vid])) {
+  _ctools_term_vocabulary_ctools_access_map_vids($conf);
+
+  if (array_filter($conf['machine_name']) && \
empty($conf['machine_name'][$context->data->vocabulary_machine_name])) {  return \
FALSE;  }

@@ -73,15 +81,47 @@ function ctools_term_vocabulary_ctools_access_summary($conf, \
$context) {  }
   $vocabularies = taxonomy_get_vocabularies();

+  _ctools_term_vocabulary_ctools_access_map_vids($conf);
+
   $names = array();
-  foreach (array_filter($conf['vids']) as $vid) {
-    $names[] = check_plain($vocabularies[$vid]->name);
+  if (!empty($conf['machine_name'])) {
+    foreach (array_filter($conf['machine_name']) as $machine_name) {
+      foreach ($vocabularies as $vocabulary) {
+        if ($vocabulary->machine_name === $machine_name) {
+          $names[] = check_plain($vocabulary->name);
+          continue;
+        }
+      }
+    }
   }

   if (empty($names)) {
     return t('@identifier is any vocabulary', array('@identifier' => \
$context->identifier));  }

-  return format_plural(count($names), '@identifier vocabulary is "@vids"', \
'@identifier vocabulary is one of "@vids"', array('@vids' => implode(', ', $names), \
'@identifier' => $context->identifier)); +  return format_plural(count($names), \
'@identifier vocabulary is "@machine_names"', '@identifier vocabulary is one of \
"@machine_names"', array( +    '@machine_names' => implode(', ', $names),
+    '@identifier' => $context->identifier
+  ));
 }

+/**
+ * Helper function to map the vids from old features to the new machine_name.
+ *
+ * Add the machine_name key to $conf if the vids key exist.
+ *
+ * @param array $conf
+ *   The configuration of this plugin.
+ */
+function _ctools_term_vocabulary_ctools_access_map_vids(&$conf) {
+  if (!empty($conf['vids'])) {
+    $conf['machine_name'] = array();
+    $vocabularies = taxonomy_get_vocabularies();
+    foreach ($conf['vids'] as $vid) {
+      $machine_name = $vocabularies[$vid]->machine_name;
+      $conf['machine_name'][$machine_name] = $vocabularies[$vid]->machine_name;
+    }
+  }
+}
+
+
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/arguments/rid.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/arguments/rid.inc index \
                dd30848..2661153 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/arguments/rid.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/arguments/rid.inc
@@ -39,7 +39,7 @@ function ctools_argument_rid_context($arg = NULL, $conf = NULL, \
$empty = FALSE)  return FALSE;
   }

-  $nid = db_query('SELECT nid FROM {node_revisions} WHERE vid = :vid', array(':vid' \
=> $arg))->fetchField(); +  $nid = db_query('SELECT nid FROM {node_revision} WHERE \
vid = :vid', array(':vid' => $arg))->fetchField();  $node = node_load($nid, $arg);
   if (!$node) {
     return FALSE;
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/block/block.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/block/block.inc
 index 9d55e8a..7c551b9 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/block/block.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/block/block.inc
 @@ -40,6 +40,11 @@ function ctools_block_content_type_content_type($subtype_id) {
  * of the form "$module . '_ctools_block_info'".
  */
 function ctools_block_content_type_content_types() {
+  $types = &drupal_static(__FUNCTION__);
+  if (isset($types)) {
+    return $types;
+  }
+
   $types = array();
   foreach (module_implements('block_info') as $module) {
     $module_blocks = module_invoke($module, 'block_info');
@@ -156,14 +161,16 @@ function ctools_block_content_type_render($subtype, $conf) {
   $block->module = $module;
   $block->delta = $delta;

-  if ($module == 'block' && !empty($info) && isset($info->title)) {
-    $block->title = $info->title;
-  }
-  else if (isset($block->subject)) {
-    $block->title = $block->subject;
-  }
-  else {
-    $block->title = NULL;
+  if (!isset($block->title)) {
+    if ($module == 'block' && !empty($info) && isset($info->title)) {
+      $block->title = $info->title;
+    }
+    else if (isset($block->subject)) {
+      $block->title = $block->subject;
+    }
+    else {
+      $block->title = NULL;
+    }
   }

   if (module_exists('block') && user_access('administer blocks')) {
@@ -286,13 +293,18 @@ function ctools_block_content_type_admin_info($subtype, $conf) \
{  list($module, $delta) = _ctools_block_get_module_delta($subtype, $conf);
   $block = (object) module_invoke($module, 'block_view', $delta);

-  // Sanitize the block because <script> tags can hose javascript up:
-  if (!empty($block->content)) {
-    $block->content = filter_xss_admin($block->content);
-  }
+  if (!empty($block)) {
+    // Sanitize the block because <script> tags can hose javascript up:
+    if (!empty($block->content)) {
+      $block->content = filter_xss_admin(render($block->content));
+    }

-  if (!empty($block) && !empty($block->subject)) {
-    $block->title = $block->subject;
+    if (!empty($block->subject)) {
+      $block->title = $block->subject;
+    }
+    elseif (empty($block->title)) {
+      $block->title = t('No title');
+    }
     return $block;
   }
 }
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc
 index f31a702..c05effb 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc
 @@ -25,7 +25,7 @@ if (module_exists('comment')) {

 function ctools_comment_reply_form_content_type_render($subtype, $conf, $panel_args, \
$context) {

-  $comment = ($context[1]->identifier == 'No context') ? NULL : \
clone($context[1]->data); +  $comment = ($context[1]->identifier == t('No context')) \
? NULL : clone($context[1]->data);  $block = new stdClass();
   $block->module = 'comments';
   if ($comment) $block->delta  = $comment->cid;
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/custom/custom.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/custom/custom.inc
 index 4853feb..ac2f2a3 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/custom/custom.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/custom/custom.inc
 @@ -45,6 +45,11 @@ function ctools_custom_content_type_content_type($subtype_id) {
  * Return all custom content types available.
  */
 function ctools_custom_content_type_content_types() {
+  $types = &drupal_static(__FUNCTION__);
+  if (isset($types)) {
+    return $types;
+  }
+
   ctools_include('export');
   $types = array();
   $types['custom'] = _ctools_default_content_type_content_type();
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
 index 2da4044..d7d6319 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
 @@ -38,27 +38,33 @@ function ctools_entity_field_content_type_content_types() {
   $context_types = array();
   $entities = entity_get_info();

+  $description = t('Field on the referenced entity.');
+  $styles = t('Formatter Styles');
+  $categories = array();
   foreach ($entities as $entity_type => $entity) {
+    $category = t(ucfirst($entity_type));
+    $categories[$entity_type] = $category;
     foreach ($entity['bundles'] as $type => $bundle) {
       foreach (field_info_instances($entity_type, $type) as $field_name => $field) {
         if (!isset($types[$entity_type . ':' . $field_name])) {
+          $label = t($field['label']);
           $types[$entity_type . ':' . $field_name] = array(
-            'category' => t(ucfirst($entity_type)),
+            'category' => $category,
             'icon' => 'icon_field.png',
             'title' => t('Field: @widget_label (@field_name)', array(
-              '@widget_label' => t($field['label']),
+              '@widget_label' => $label,
               '@field_name' => $field_name,
             )),
-            'description' => t('Field on the referenced entity.'),
+            'description' => $description,
             'edit form' => array(
               'ctools_entity_field_content_type_formatter_options' => array(
                 'default' => TRUE,
                 'title' => t('Formatter options for: @widget_label (@field_name)', \
                array(
-                  '@widget_label' => t($field['label']),
+                  '@widget_label' => $label,
                   '@field_name' => $field_name,
                 )),
               ),
-              'ctools_entity_field_content_type_formatter_styles' => t('Formatter \
Styles'), +              'ctools_entity_field_content_type_formatter_styles' => \
$styles,  ),
           );
         }
@@ -70,7 +76,7 @@ function ctools_entity_field_content_type_content_types() {
   // Create the required context for each field related to the bundle types.
   foreach ($types as $key => $field_content_type) {
     list($entity_type, $field_name) = explode(':', $key, 2);
-    $types[$key]['required context'] = new \
ctools_context_required(t(ucfirst($entity_type)), $entity_type, array( +    \
$types[$key]['required context'] = new \
ctools_context_required($categories[$entity_type], $entity_type, array(  'type' => \
array_keys($context_types[$key]['types']),  ));
     unset($context_types[$key]['types']);
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field_extra.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field_extra.inc
 index 807969c..6a59ed4 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field_extra.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field_extra.inc
 @@ -25,6 +25,11 @@ function \
                ctools_entity_field_extra_content_type_content_type($subtype) {
  */
 function ctools_entity_field_extra_content_type_content_types() {
   // This will hold all the individual field content types.
+  $types = &drupal_static(__FUNCTION__);
+  if (isset($types)) {
+    return $types;
+  }
+
   $types = array();
   $context_types = array();
   $entities = entity_get_info();
@@ -97,13 +102,20 @@ function ctools_entity_field_extra_content_type_render($subtype, \
$conf, $panel_a  $entity = clone $context->data;
   list($entity_type, $field_name) = explode(':', $subtype, 2);
   list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
-
-  // Invoke the view-hook to get the extra field.
-  $entity->content = array();
   $langcode = $GLOBALS['language_content']->language;

-  module_invoke_all($entity_type . '_view', $entity, $conf['view_mode'], $langcode);
-  module_invoke_all('entity_view', $entity, $entity_type, $conf['view_mode'], \
$langcode); +  $function = $entity_type . '_view';
+  if (in_array($entity_type, array('node', 'taxonomy_term', 'user')) && \
function_exists($function)) { +    // Call known ENTITY_view() to get the extra \
field. +    $entity->content = $function($entity, $conf['view_mode'], $langcode);
+  }
+  else {
+    // Invoke the view-hook to get the extra field.
+    $entity->content = array();
+
+    module_invoke_all($entity_type . '_view', $entity, $conf['view_mode'], \
$langcode); +    module_invoke_all('entity_view', $entity, $entity_type, \
$conf['view_mode'], $langcode); +  }

   if (isset($entity->content[$field_name])) {
     // Build the content type block.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
 index 56fb76a..a030f69 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
 @@ -30,6 +30,11 @@ function \
                ctools_entity_form_field_content_type_content_type($subtype) {
  */
 function ctools_entity_form_field_content_type_content_types() {
   // This will hold all the individual field content types.
+  $types = &drupal_static(__FUNCTION__);
+  if (isset($types)) {
+    return $types;
+  }
+
   $types = array();
   $content_types = array();
   $entities = entity_get_info();
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/page/page_slogan.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/page/page_slogan.inc
 index 58f913f..d5cba38 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/page/page_slogan.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/page/page_slogan.inc
 @@ -14,7 +14,7 @@ $plugin = array(
   'title' => t('Site slogan'),
   'single' => TRUE,
   'icon' => 'icon_page.png',
-  'description' => t('Add the slogan trail as content.'),
+  'description' => t("Add the site's slogan as content."),
   'category' => t('Page elements'),
   'render last' => TRUE,
 );
@@ -26,7 +26,7 @@ $plugin = array(
  */
 function ctools_page_slogan_content_type_render($subtype, $conf, $panel_args) {
   $block = new stdClass();
-  $block->content = (theme_get_setting('toggle_slogan') ? \
filter_xss_admin(variable_get('site_slogan', '')) : ''); +  $block->content = \
filter_xss_admin(variable_get('site_slogan', ''));

   return $block;
 }
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/token/token.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/token/token.inc
 index c43abd2..7b6f7fc 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/token/token.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/token/token.inc
 @@ -33,19 +33,26 @@ function ctools_token_content_type_content_type($subtype) {
  */
 function ctools_token_content_type_content_types() {
   // This will hold all the properties.
+  $types = &drupal_static(__FUNCTION__);
+  if (isset($types)) {
+    return $types;
+  }
+
   $types = array();
   $info = token_info();

   foreach ($info['tokens'] as $entity_type => $tokens) {
+    $category = t('@entity (tokens)', array('@entity' => ucfirst($entity_type)));
+    $context = new ctools_context_required(t(ucfirst($entity_type)), $entity_type);
     foreach ($tokens as $name => $token) {
       if (!empty($token['name'])) {
         $token += array('description' => '');
         $types[$entity_type . ':' . $name] = array(
-          'category' => t('@entity (tokens)', array('@entity' => \
ucfirst($entity_type))), +          'category' => $category,
           'icon' => 'icon_token.png',
           'title' => $token['name'],
           'description' => $token['description'],
-          'required context' => new \
ctools_context_required(t(ucfirst($entity_type)), $entity_type), +          'required \
context' => $context,  );
       }
     }
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/user_context/profile_fields.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/user_context/profile_fields.inc
 index 2633fd3..55d5593 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/user_context/profile_fields.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/content_types/user_context/profile_fields.inc
 @@ -1,6 +1,6 @@
 <?php

-if (module_exists('profile') && !is_null(profile_user_categories())) {
+if (module_exists('profile') && !(defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == \
'update') && !is_null(profile_user_categories())) {  /**
    * Plugins are described by creating a $plugin array which will be used
    * by the system that includes this file.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/contexts/token.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/contexts/token.inc index \
                5138b1c..0445576 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/contexts/token.inc
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/contexts/token.inc
@@ -51,8 +51,9 @@ function ctools_context_token_convert_list() {
 function ctools_context_token_convert($context, $token) {
   $tokens = token_info();
   list($type, $token) = explode(':', $token, 2);
+  $parts = explode(':', $token, 2);
   $real_type = isset($tokens['types'][$type]['type']) ? \
                $tokens['types'][$type]['type'] : $type;
-  if (isset($tokens['tokens'][$real_type][$token])) {
+  if (isset($tokens['tokens'][$real_type][$parts[0]])) {
     $values = token_generate($type, array($token => $token));
     if (isset($values[$token])) {
       return $values[$token];
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
 index 4b44c4a..1048e19 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
 @@ -152,7 +152,7 @@ class ctools_export_ui {
     if (isset($input['op']) && $input['op'] == t('Reset')) {
       unset($_SESSION['ctools_export_ui'][$this->plugin['name']]);
       if (!$js) {
-        return drupal_goto($_GET['q']);
+        drupal_goto($_GET['q']);
       }
       // clear everything but form id, form build id and form token:
       $keys = array_keys($input);
@@ -665,7 +665,7 @@ class ctools_export_ui {
     );

     $output = $this->edit_execute_form($form_state);
-    if (!empty($form_state['executed'])) {
+    if (!empty($form_state['executed']) && empty($form_state['rebuild'])) {
       $this->redirect($form_state['op'], $form_state['item']);
     }

@@ -701,7 +701,7 @@ class ctools_export_ui {
     );

     $output = $this->edit_execute_form($form_state);
-    if (!empty($form_state['executed'])) {
+    if (!empty($form_state['executed']) && empty($form_state['rebuild'])) {
       $this->redirect($form_state['op'], $form_state['item']);
     }

@@ -749,7 +749,7 @@ class ctools_export_ui {
     );

     $output = $this->edit_execute_form($form_state);
-    if (!empty($form_state['executed'])) {
+    if (!empty($form_state['executed']) && empty($form_state['rebuild'])) {
       $this->redirect($form_state['op'], $form_state['item']);
     }

@@ -778,7 +778,7 @@ class ctools_export_ui {
    */
   function edit_execute_form_standard(&$form_state) {
     $output = drupal_build_form('ctools_export_ui_edit_item_form', $form_state);
-    if (!empty($form_state['executed'])) {
+    if (!empty($form_state['executed']) && empty($form_state['rebuild'])) {
       $this->edit_save_form($form_state);
     }

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/book_parent.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/book_parent.inc
 index c49db76..30ada4a 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/book_parent.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/book_parent.inc
 @@ -42,7 +42,9 @@ function ctools_book_parent_context($context, $conf) {
       // Load the node.
       $node = node_load($nid);
       // Generate the context.
-      return ctools_context_create('node', $node);
+      if (node_access('view', $node)) {
+        return ctools_context_create('node', $node);
+      }
     }
   }
   else {
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/entity_from_field.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/entity_from_field.inc
 index 52c62f9..15f712b 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/entity_from_field.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/entity_from_field.inc
 @@ -173,11 +173,17 @@ function ctools_entity_from_field_context($context, $conf) {
       if (isset($items[$delta])) {
         ctools_include('fields');
         $to_entity_info = entity_get_info($to_entity);
+
         $plugin_info = ctools_get_relationship($conf['name']);
         $to_entity_id = $items[$delta][$plugin_info['source key']];
-
-        // Send it to ctools.
-        return ctools_context_create('entity:' . $to_entity, $to_entity_id);
+        $loaded_to_entity = array_shift(entity_load($to_entity, \
array($to_entity_id))); +        if(function_exists($to_entity_info['access \
callback']) && !call_user_func($to_entity_info['access callback'], 'view', \
$loaded_to_entity)) { +          return ctools_context_create_empty('entity:' . \
$to_entity, NULL); +        }
+        else {
+          // Send it to ctools.
+          return ctools_context_create('entity:' . $to_entity, $to_entity_id);
+        }
       }
       else {
         // In case that delta was empty.
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/terms_from_node.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/terms_from_node.inc
 index 6ade53b..07081f2 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/terms_from_node.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/plugins/relationships/terms_from_node.inc
 @@ -35,7 +35,7 @@ function ctools_terms_from_node_context($context, $conf) {
   $fields = field_info_instances('node', $node->type);
   foreach ($fields as $name => $info) {
     $field_info = field_info_field($name);
-    if ($field_info['type'] == 'taxonomy_term_reference' && \
(empty($conf['vocabulary']) || \
$conf['vocabulary'][$field_info['settings']['allowed_values'][0]['vocabulary']])) { + \
if ($field_info['type'] == 'taxonomy_term_reference' && (empty($conf['vocabulary']) \
|| !empty($conf['vocabulary'][$field_info['settings']['allowed_values'][0]['vocabulary']]))) \
{  $items = field_get_items('node', $node, $name);
       if (is_array($items)) {
         foreach ($items as $item) {
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/stylizer/stylizer.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/stylizer/stylizer.info index \
                888cc8e..2163e64 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/stylizer/stylizer.info
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/stylizer/stylizer.info
@@ -5,9 +5,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 dependencies[] = color

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/plugins/access/term_depth.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/plugins/access/term_depth.inc
 new file mode 100644
index 0000000..ab05b60
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/plugins/access/term_depth.inc
 @@ -0,0 +1,128 @@
+<?php
+
+/**
+ * @file
+ * Plugin to provide access control based upon a parent term.
+ */
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'title' => t("Taxonomy: term depth"),
+  'description' => t('Control access by the depth of a term.'),
+  'callback' => 'term_depth_term_depth_ctools_access_check',
+  'default' => array('vid' => array(), 'depth' => 0),
+  'settings form' => 'term_depth_term_depth_ctools_access_settings',
+  'settings form validation' => \
'term_depth_term_depth_ctools_access_settings_validate', +  'settings form submit' => \
'term_depth_term_depth_ctools_access_settings_submit', +  'summary' => \
'term_depth_term_depth_ctools_access_summary', +  'required context' => new \
ctools_context_required(t('Term'), array('taxonomy_term', 'terms')), +);
+
+/**
+ * Settings form for the 'term depth' access plugin.
+ */
+function term_depth_term_depth_ctools_access_settings($form, &$form_state, $conf) {
+  // If no configuration was saved before, set some defaults.
+  if (empty($conf)) {
+    $conf = array(
+      'vid' => 0,
+    );
+  }
+  if (!isset($conf['vid'])) {
+    $conf['vid'] = 0;
+  }
+
+  // Loop over each of the configured vocabularies.
+  foreach (taxonomy_get_vocabularies() as $vid => $vocabulary) {
+    $options[$vid] = $vocabulary->name;
+  }
+
+  $form['settings']['vid'] = array(
+    '#title' => t('Vocabulary'),
+    '#type' => 'select',
+    '#options' => $options,
+    '#description' => t('Select the vocabulary for this form. If there exists a \
parent term in that vocabulary, this access check will succeed.'), +    '#id' => \
'ctools-select-vid', +    '#default_value' => $conf['vid'],
+    '#required' => TRUE,
+  );
+
+  $form['settings']['depth'] = array(
+    '#title' => t('Depth'),
+    '#type' => 'textfield',
+    '#description' => t('Set the required depth of the term. If the term exists at \
the correct depth, this access check will succeed.'), +    '#default_value' => \
$conf['depth'], +    '#required' => TRUE,
+  );
+
+  return $form;
+}
+
+/**
+ * Submit function for the access plugins settings.
+ *
+ * We cast all settings to numbers to ensure they can be safely handled.
+ */
+function term_depth_term_depth_ctools_access_settings_submit($form, $form_state) {
+  foreach (array('depth', 'vid') as $key) {
+    $form_state['conf'][$key] = (integer) $form_state['values']['settings'][$key];
+  }
+}
+
+/**
+ * Check for access.
+ */
+function term_depth_term_depth_ctools_access_check($conf, $context) {
+  // As far as I know there should always be a context at this point, but this
+  // is safe.
+  if (empty($context) || empty($context->data) || empty($context->data->vid) || \
empty($context->data->tid)) { +    return FALSE;
+  }
+
+  // Get the $vid.
+  if (!isset($conf['vid'])) {
+    return FALSE;
+  }
+  $depth = _term_depth($context->data->tid);
+
+  return ($depth == $conf['depth']);
+}
+
+/**
+ * Provide a summary description based upon the checked terms.
+ */
+function term_depth_term_depth_ctools_access_summary($conf, $context) {
+  $vocab = taxonomy_vocabulary_load($conf['vid']);
+
+  return t('"@term" has parent in vocabulary "@vocab" at @depth', array(
+    '@term' => $context->identifier,
+    '@vocab' => $vocab->name,
+    '@depth' => $conf['depth'],
+  ));
+}
+
+/**
+ * Find the depth of a term.
+ */
+function _term_depth($tid) {
+  static $depths = array();
+
+  if (!isset($depths[$tid])) {
+    $parent = db_select('taxonomy_term_hierarchy', 'th')
+      ->fields('th', array('parent'))
+      ->condition('tid', $tid)
+      ->execute()->fetchField();
+
+    if ($parent == 0) {
+      $depths[$tid] = 1;
+    }
+    else {
+      $depths[$tid] = 1 + _term_depth($parent);
+    }
+  }
+
+  return $depths[$tid];
+}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.info new \
file mode 100644 index 0000000..2986d6d
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.info
@@ -0,0 +1,11 @@
+name = Term Depth access
+description = Controls access to context based upon term depth
+core = 7.x
+dependencies[] = ctools
+package = Chaos tool suite
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
+core = "7.x"
+project = "ctools"
+datestamp = "1392220730"
+
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.module \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.module new \
file mode 100644 index 0000000..10f9e31
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/term_depth/term_depth.module
@@ -0,0 +1,7 @@
+<?php
+
+function term_depth_ctools_plugin_directory($owner, $plugin) {
+  if ($owner == 'ctools' && $plugin == 'access') {
+    return 'plugins/' . $plugin;
+  }
+}
diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
 index 669c4ae..a580372 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
 @@ -7,9 +7,9 @@ hidden = TRUE

 files[] = ctools_export.test

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_plugin_test.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_plugin_test.info \
                index 5bb61ed..186012b 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_plugin_test.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/tests/ctools_plugin_test.info
 @@ -11,9 +11,9 @@ files[] = math_expression.test
 files[] = math_expression_stack.test
 hidden = TRUE

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
 index 262d81d..93f14c6 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
 @@ -145,12 +145,12 @@ function views_content_views_content_type_render($subtype, \
$conf, $panel_args, $  }
       if (!empty($contexts[$cid])) {
         $arg = ctools_context_convert_context($contexts[$cid], $converter, \
                array('sanitize' => FALSE));
-        array_splice($args, $count, 0, array($arg));
       }
       else {
         // Make sure we put an argument in even if it was not there.
         $arg = NULL;
       }
+      array_splice($args, $count, 0, array($arg));
     }
   }

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
 index 10a6a83..b77404e 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
 @@ -83,7 +83,7 @@ function \
views_content_views_panes_content_type_content_type($subtype, $plugin)  function \
_views_content_panes_content_type($view, $display) {  // Ensure the handler is the \
right type, as Views will fall back to  // the default display if something is \
                broken:
-  if (get_class($display->handler) != 'views_content_plugin_display_panel_pane') {
+  if (!is_a($display->handler, 'views_content_plugin_display_panel_pane')) {
     return;
   }

@@ -139,7 +139,7 @@ function views_content_views_panes_content_type_render($subtype, \
$conf, $panel_a  $view->set_display($display);
   views_content_views_panes_add_defaults($conf, $view);

-  if (!$view->display_handler->access($GLOBALS['user']) || \
!$view->display_handler->panel_pane_display) { +  if \
(!$view->display_handler->access($GLOBALS['user']) || \
empty($view->display_handler->panel_pane_display)) {  return;
   }

@@ -162,6 +162,9 @@ function views_content_views_panes_content_type_render($subtype, \
$conf, $panel_a  $args[] = $contexts[$key]->argument;
           }
         }
+        else {
+          $args[] = isset($arguments[$id]['exception']['value']) ? \
$arguments[$id]['exception']['value'] : 'all'; +        }
         break;

       case 'fixed':
@@ -252,7 +255,7 @@ function views_content_views_panes_content_type_render($subtype, \
$conf, $panel_a

     if ($conf['use_pager']) {
       if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && \
                $pager['options']['id'] != $conf['pager_id'])) {
-        $pager['options']['id'] = $conf['pager_id'];
+        $pager['options']['id'] = (int) $conf['pager_id'];
       }
     }

diff --git a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/views_content.info \
b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/views_content.info \
                index 1782d37..a4be930 100644
--- a/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/views_content.info
                
+++ b/kolab.org/www/drupal-7.26/sites/all/modules/ctools/views_content/views_content.info
 @@ -9,9 +9,9 @@ files[] = \
plugins/views/views_content_plugin_display_ctools_context.inc  files[] = \
plugins/views/views_content_plugin_display_panel_pane.inc  files[] = \
plugins/views/views_content_plugin_style_ctools_context.inc

-; Information added by drupal.org packaging script on 2013-04-03
-version = "7.x-1.3"
+; Information added by Drupal.org packaging script on 2014-02-12
+version = "7.x-1.4"
 core = "7.x"
 project = "ctools"
-datestamp = "1365013512"
+datestamp = "1392220730"



_______________________________________________
commits mailing list
commits@lists.kolab.org
https://lists.kolab.org/mailman/listinfo/commits

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic