From b5ea5cea3be44c97aecd873d4661c2b69f96225d Mon Sep 17 00:00:00 2001 From: Chris Gross <gross.364@osu.edu> Date: Wed, 12 Aug 2015 14:27:45 -0400 Subject: [PATCH] daily build --- profiles/wcm_base/CHANGELOG.txt | 13 + .../contrib/conditional_fields/LICENSE.txt | 339 +++ .../contrib/conditional_fields/README.txt | 61 + .../conditional_fields.api.php | 178 ++ .../conditional_fields/conditional_fields.css | 24 + .../conditional_fields.info | 14 + .../conditional_fields.install | 303 +++ .../conditional_fields.module | 1993 +++++++++++++++++ .../includes/conditional_fields.admin.inc | 838 +++++++ .../includes/conditional_fields.features.inc | 120 + .../js/conditional_fields.js | 141 ++ .../contrib/conditional_fields/js/states.js | 543 +++++ .../tests/conditional_fields.test | 323 +++ .../tests/conditional_fields_test.info | 14 + .../tests/conditional_fields_test.module | 18 + profiles/wcm_base/modules/custom/mm/mm.module | 2 +- .../ocio_landing_page.ds.inc | 6 +- ...nding_page.features.conditional_fields.inc | 353 +++ .../ocio_landing_page.features.field_base.inc | 73 + ...o_landing_page.features.field_instance.inc | 151 +- .../ocio_landing_page.field_group.inc | 57 + .../ocio_landing_page/ocio_landing_page.info | 10 + .../ocio_news.features.field_base.inc | 39 + .../ocio_news.features.field_instance.inc | 61 +- .../modules/custom/ocio_news/ocio_news.info | 2 + .../custom/ocio_news/ocio_news.strongarm.inc | 9 +- .../ocio_news/ocio_news.views_default.inc | 65 + .../ocio_panels_settings.module | 30 + .../ocio_panels_settings.strongarm.inc | 2 +- .../custom/ocio_siteinfo/ocio_siteinfo.module | 7 +- .../css/layouts/ocio-4/ocio-4.layout.css | 2 +- .../layouts/ocio-4/ocio-4.layout.no-query.css | 2 +- .../ocio_omega_4/css/ocio-4.no-query.css | 20 +- .../themes/ocio_omega_4/css/ocio-4.styles.css | 20 +- .../ocio_omega_4/sass/base/_typography.scss | 92 +- .../ocio_omega_4/sass/components/_panes.scss | 12 +- .../ocio_omega_4/sass/components/_tiles.scss | 17 +- .../sass/components/views/_news.scss | 2 +- .../ocio_omega_4/sass/variables/_shadows.scss | 8 +- ...els-pane--tile-pane-plus-text-area.tpl.php | 8 - .../fieldable-panels-pane--tile-pane.tpl.php | 6 - .../ocio-default/ocio-default.layout.css | 4 +- .../ocio-default.layout.no-query.css | 4 +- .../css/ocio-omega-base.no-query.css | 560 +++-- .../css/ocio-omega-base.styles.css | 600 +++-- .../ocio_omega_base/js/matchHeight/.gitignore | 1 + .../js/matchHeight/CHANGELOG.md | 43 + .../ocio_omega_base/js/matchHeight/LICENSE | 21 + .../ocio_omega_base/js/matchHeight/README.md | 199 ++ .../ocio_omega_base/js/matchHeight/bower.json | 26 + .../js/matchHeight/jquery.matchHeight-min.js | 11 + .../js/matchHeight/jquery.matchHeight.js | 363 +++ .../js/matchHeight/lib/jquery-1.11.0.min.js | 4 + .../js/matchHeight/matchHeight.jquery.json | 32 + .../ocio_omega_base/js/matchHeight/test.css | 292 +++ .../ocio_omega_base/js/matchHeight/test.html | 349 +++ .../ocio_omega_base/js/matchHeight/test.js | 33 + .../js/ocio-omega-base.behaviors.js | 32 +- .../panels/assets/panels-layout-template.ai | 1325 +++++++++++ .../panels/ocio-omega-dps/ocio-omega-dps.css | 74 + .../panels/ocio-omega-dps/ocio-omega-dps.inc | 40 + .../panels/ocio-omega-dps/ocio-omega-dps.png | Bin 0 -> 470 bytes .../ocio-omega-dps/ocio-omega-dps.tpl.php | 148 ++ .../ocio-omega-fourtiles.css | 14 +- .../ocio-omega-fourtiles.tpl.php | 32 +- .../ocio-omega-tiles-equalcol.css | 28 +- .../ocio-omega-tiles-equalcol.tpl.php | 36 +- .../ocio-omega-tiles-twocol-flipped.css | 31 +- .../ocio-omega-tiles-twocol-flipped.tpl.php | 36 +- .../ocio-omega-tiles-twocol.css | 27 +- .../ocio-omega-tiles-twocol.tpl.php | 36 +- .../preprocess/page.preprocess.inc | 7 +- .../ocio_omega_base/process/page.process.inc | 4 + .../sass/base/_typography.scss | 2 +- .../sass/components/_media_magnet.scss | 77 +- .../sass/components/_panels.scss | 63 +- .../sass/components/_tiles.scss | 226 +- .../sass/components/nodes/_landing-page.scss | 71 +- .../sass/components/regions/_footer.scss | 4 +- .../sass/components/regions/_hero.scss | 5 - .../sass/components/{ => views}/_news.scss | 4 +- .../themes/ocio_omega_base/template.php | 46 +- ...els-pane--tile-pane-plus-text-area.tpl.php | 18 +- .../fieldable-panels-pane--tile-pane.tpl.php | 16 +- .../panes/mm-item--single-channel.tpl.php} | 2 +- .../templates/panes/mm-item.tpl.php | 4 +- .../panels-pane--mm-widgets-live-pane.tpl.php | 65 + profiles/wcm_base/wcm_base.make | 3 + 88 files changed, 10062 insertions(+), 934 deletions(-) create mode 100755 profiles/wcm_base/modules/contrib/conditional_fields/LICENSE.txt create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/README.txt create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.api.php create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.css create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.info create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.install create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.module create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.admin.inc create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.features.inc create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/js/conditional_fields.js create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/js/states.js create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields.test create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.info create mode 100644 profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.module create mode 100644 profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.conditional_fields.inc create mode 100644 profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_base.inc delete mode 100644 profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php delete mode 100644 profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane.tpl.php create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/.gitignore create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/CHANGELOG.md create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/LICENSE create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/README.md create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/bower.json create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight-min.js create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight.js create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/lib/jquery-1.11.0.min.js create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/matchHeight.jquery.json create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.css create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.html create mode 100644 profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.js create mode 100644 profiles/wcm_base/themes/ocio_omega_base/panels/assets/panels-layout-template.ai create mode 100644 profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.css create mode 100644 profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.inc create mode 100644 profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.png create mode 100644 profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.tpl.php rename profiles/wcm_base/themes/ocio_omega_base/sass/components/{ => views}/_news.scss (97%) rename profiles/wcm_base/themes/{ocio_omega_4/templates/panes/mm-item.tpl.php => ocio_omega_base/templates/panes/mm-item--single-channel.tpl.php} (68%) create mode 100644 profiles/wcm_base/themes/ocio_omega_base/templates/panes/panels-pane--mm-widgets-live-pane.tpl.php diff --git a/profiles/wcm_base/CHANGELOG.txt b/profiles/wcm_base/CHANGELOG.txt index acc2cfd3..51000ba1 100644 --- a/profiles/wcm_base/CHANGELOG.txt +++ b/profiles/wcm_base/CHANGELOG.txt @@ -1,3 +1,16 @@ +WCM Base 7.x-1.x, 2015-08-12 +---------------------------- +- WCM Base Profile: Added Conditional Fields module. +- OCIO News: Added field to select if article should be displayed in view panes. +- OCIO Landing Page: Added fields to display text atop of banner photo. +- OCIO Omega Base: + - Added ocio-omega-dps panels layout for DPS front page use. + - Added JavaScript to resize all tile panes in a row to the same height +- OCIO Panels Settings: Display only one icon when Media Magnet widget requests + a single channel or channel type. +- OCIO Site Information: Allow <strong> tags in site name field. +- Media Magnet: Fixed request query string when using multiple values of a type. + WCM Base 7.x-1.x, 2015-08-05 ---------------------------- - OCIO Omega Base: diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/LICENSE.txt b/profiles/wcm_base/modules/contrib/conditional_fields/LICENSE.txt new file mode 100755 index 00000000..d159169d --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/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/profiles/wcm_base/modules/contrib/conditional_fields/README.txt b/profiles/wcm_base/modules/contrib/conditional_fields/README.txt new file mode 100644 index 00000000..382f74e9 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/README.txt @@ -0,0 +1,61 @@ + +Conditional Fields: +-------------------- +A Drupal module + + +Author: +-------------------- +Gregorio Magini (peterpoe) <gmagini@gmail.com> - http://www.twitter.com/peterpoe + + +Short Description: +-------------------- +Define dependencies between fields based on their states and values. Conditional Fields for Drupal 7 is basically an user interface for the States API, plus the ability to hide fields on certain conditions when viewing content. + + +Description: +-------------------- +The Conditional Fields module allows you to manage sets of dependencies between fields. When a field is "dependent", it will only be available for editing and displayed if the state of the "dependee" field matches the right condition. +When editing a node (or any other entity type that supports fields, like users and categories), the dependent fields are dynamically modified with the States API. +You can, for example, define a custom “Article teaser" field that is shown only if a "Has teaser" checkbox is checked. + + +Dependencies: +-------------------- +- Drupal core: 7.x (Version 7.14 or higher recommended). + + +Installation: +-------------------- +- Install as usual, see http://drupal.org/documentation/install/modules-themes/modules-7 for further information. + + +Usage: +-------------------- +Users with the "administer dependencies" permission can administer dependencies at admin/structure/dependencies. + +For more information, read the Conditional Fields documentation: +http://drupal.org/node/1704126 + + +Upgrading from Drupal 6 to Drupal 7 +-------------------- +Read carefully these instructions since taking the wrong steps could lead to loss of dependencies data! + +- Before upgrading, ensure that you have the latest stable version of Conditional Fields for Drupal 6 installed and working. +- Follow the instructions on the D6 to D7 upgrade process here: http://drupal.org/node/570162. +- Most importantly, you have to migrate your old CCK fields to the new format BEFORE updating Conditional Fields, so do not omit step 14: "Upgrade fields"! Failing to do so will give an error when trying to run the subsequent update on step 15: "Update contrib modules and themes" and could lead to loss of dependencies data. +- After step 14, leave the Content Migrate module activated. You can safely disable it after step 15. +- Note that Content Migrate in certain cases changes the allowed values of fields: you will have to manually edit the dependencies to match the new allowed values if this happens. + + +Limitations: +-------------------- +- Conditional Fields, for now, supports only core fields and widgets as dependee fields. Fields from other modules might work, but probably won't. Dependent fields, though, can be of any type. + + +Any help is welcome! +-------------------- +Check the issue queue of this module for more information: +http://drupal.org/project/issues/conditional_fields diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.api.php b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.api.php new file mode 100644 index 00000000..75a5366e --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.api.php @@ -0,0 +1,178 @@ +<?php + +/** + * @file + * Hooks provided by Conditional Fields. + */ + +/** + * Alter the list of states available for dependent fields. + * + * These are the jQuery events that are executed when a dependent field changes + * state (that is, when the dependency changes from untriggered to triggered or + * vice-versa). + * + * To implement a new state, it is necessary to create a jQuery event with the + * same name, prepended by the "state:" namespace. E.g.: + * + * $(document).bind('state:STATE_NAME', function(e) { + * if (e.trigger) { + * // e.value is true if the conditions are satisfied, false otherwise... + * } + * }); + * + * @param $states + * An associative array of states. + */ +function hook_conditional_fields_states_alter(&$states) { + // Add a new Form state to the list. The corresponding jQuery event might + // look like this: + // $(document).bind('state:addmyclass', function(e) { + // if (e.trigger) { + // $(e.target).toggleClass('myclass', e.value); + // } + // }); + $states['addmyclass'] = t('With CSS class myclass'); + + // Converse states are obtained by prepending an exclamation mark to the name. + // They are automatically implemented by the States API, but you need to add + // them explicitly to the list to make them available in the UI. + $states['!addmyclass'] = t('Without CSS class myclass'); + + // A configurable state. The class can be configured implementing an effect + // (see example in hook_conditional_fields_effects_alter). + $states['addclass'] = t('With CSS class'); + $states['!addclass'] = t('Without CSS class'); +} + +/** + * Alter the list of visual effects available to states. + * + * Visual effects may provide settings that are passed to the js object + * Drupal.settings.conditionalFields.effects and that are automatically + * made available to the corresponding state change event under event.effect. + * + * Dependent field events associated with effects have the effect name appended + * to the name, separated by a hypen; effect options are passed into the event + * argument. E.g.: + * + * $(document).bind('state:STATE_NAME-EFFECT_NAME', function(e) { + * if (e.trigger) { + * // Effect options are stored in e.effect... + * } + * }); + * + * @param $effects + * An associative array of effects. Each key is the unique name of the + * effect. The value is an associative array: + * - label: The human readable name of the effect. + * - states: The states that can be associated with this effect. + * - options: An associative array of effect options names, field types, + * descriptions and default values. + */ +function hook_conditional_fields_effects_alter(&$effects) { + // Implement an effect for the addclass state. + // The addclass event would be something like: + // $(document).bind('state:addclass-toggleclass', function(e) { + // if (e.trigger) { + // $(e.target).toggleClass(e.effect.class, e.value); + // } + // }); + $effects['toggleclass'] = array( + 'label' => t('CSS Class'), + // This effect is associated with the following states. + 'states' => array('addclass', '!addclass'), + // The values under options are form elements that will be inserted in + // the dependency edit form. The key of this form element is also found in + // the jQuery event argument under event.effect.class. + 'options' => array( + 'class' => array( + '#type' => 'textfield', + '#description' => t('One or more space separated classes that are toggled on the dependent.'), + '#default_value' => '', + ), + ), + ); +} + +/** + * Alter the list of conditions available as dependee states. + * + * These are callbacks that are executed by the States API to check if a + * dependee field matches the required condition. + * Modules adding conditions using this hook should also add the corresponding + * callback to the Drupal.states.Trigger.states object. + * + * @param $conditions + * An associative array of conditions, with names as keys and labels as + * values. + */ +function hook_conditional_fields_conditions_alter(&$conditions) { + // Add a special condition that checks if a field value is an integer greater + // than 0. The javascript callback could be something like: + // Drupal.states.Trigger.states.positiveInteger = { + // 'keyup': function () { + // var val = this.val(), + // int = parseInt(val); + // return val == int && int > 0; + // } + // }; + $conditions['positiveInteger'] = t('An integer greater than 0.'); + // Like states, conditions get a converse automatically. + $conditions['!positiveInteger'] = t('An integer less than or equal to 0.'); +} + +/** + * Alter the list of available behaviors. + * + * @param $behaviors + * An associative array with two keys representing contexts: 'edit' and + * 'view'. Each key contains an associative array of behaviors that are + * executed during the corresponding phase. The keys of the array are + * function names and the values are a human readable label of the behavior. + */ +function hook_conditional_fields_behaviors_alter(&$behaviors) { + // Edit behavior. + $behaviors['edit']['conditional_fields_example_fancy_edit_behavior'] = t('A fancy edit behavior for my module'); + // View behavior. + $behaviors['view']['conditional_fields_example_fancy_view_behavior'] = t('A fancy view behavior for my module'); +} + +/** + * Example edit behavior callback. + * + * @param $form + * The form that contains fields with dependencies. + * @param $form_state + * The form state of the form. + * @param $dependent + * The name of the dependent field. + * @param $dependencis + * The dependencies relevant to this dependent. + */ +function conditional_fields_example_fancy_edit_behavior(&$form, &$form_state, $dependent, $dependencies) { + // Do some fancy stuff... +} + +/** + * Example view behavior callback. + * + * @param $dependent + * The name of the dependee field. + * @param $dependee + * The name of the dependent field. + * @param $is_triggered + * A boolean indicating whether the dependency was triggered. + * @param $dependencies + * An array of dependencies relevant to this context. + * @param $build + * The entity that is being viewed. + * @param $entity_type + * The entity type that is being viewed. + */ +function conditional_fields_example_fancy_view_behavior($dependee, $dependent, $is_triggered, $dependencies, &$build, $entity_type) { + // Add some foo before all entities that have triggered dependencies. + if ($is_triggered) { + $build['#prefix'] .= 'foo'; + } +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.css b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.css new file mode 100644 index 00000000..62bcbcc7 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.css @@ -0,0 +1,24 @@ +/* Dependencies overview */ + +table.conditional-fields-overview .add-new-placeholder { + font-weight: bold; + padding-bottom: .5em; +} + +table.conditional-fields-overview .form-submit { + margin-top: 1em; +} + +table.conditional-fields-overview .description-select .form-type-select { + display: inline; +} + +/* Dependency edit */ + +#conditional-fields-dependency-edit-form .form-item-state .description { + clear: both; +} + +#conditional-fields-dependency-edit-form .form-item-state .ajax-progress { + width: 120px; +} \ No newline at end of file diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.info b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.info new file mode 100644 index 00000000..18fae4b2 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.info @@ -0,0 +1,14 @@ +name = Conditional Fields +description = Define dependencies between fields based on their states and values. +core = 7.x +package = Fields + +dependencies[] = field +configure = admin/structure/dependencies + +; Information added by packaging script on 2013-11-18 +version = "7.x-3.0-alpha1" +core = "7.x" +project = "conditional_fields" +datestamp = "1384798705" + diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.install b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.install new file mode 100644 index 00000000..9ee2375b --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.install @@ -0,0 +1,303 @@ +<?php +/** + * @file + * Install, update and uninstall functions for the Conditional Fields module. + */ + +/** + * Implements hook_schema(). + */ +function conditional_fields_schema() { + $schema['conditional_fields'] = array( + 'description' => 'Stores dependencies between fields.', + 'fields' => array( + 'id' => array( + 'type' => 'serial', + 'not null' => TRUE, + 'description' => 'The primary identifier for a dependency.', + ), + 'dependee' => array( + 'type' => 'int', + 'not null' => TRUE, + 'description' => 'The id of the dependee field instance.', + ), + 'dependent' => array( + 'type' => 'int', + 'not null' => TRUE, + 'description' => 'The id of the dependent field instance.', + ), + 'options' => array( + 'type' => 'blob', + 'size' => 'big', + 'not null' => TRUE, + 'serialize' => TRUE, + 'description' => 'Serialized data containing the options for the dependency.', + ), + ), + 'primary key' => array('id'), + ); + return $schema; +} + +/** + * Table schema used for initial upgrade to Drupal 7. Do not edit this function. + */ +function conditional_fields_schema_7000() { + return array( + 'fields' => array( + 'id' => array( + 'type' => 'serial', + 'not null' => TRUE, + 'description' => 'The primary identifier for a dependency.', + ), + 'dependee' => array( + 'type' => 'int', + 'not null' => TRUE, + 'description' => 'The id of the dependee field instance.', + ), + 'dependent' => array( + 'type' => 'int', + 'not null' => TRUE, + 'description' => 'The id of the dependent field instance.', + ), + 'options' => array( + 'type' => 'blob', + 'size' => 'big', + 'not null' => TRUE, + 'serialize' => TRUE, + 'description' => 'Serialized data containing the options for the dependency.', + ), + ), + 'primary key' => array('id'), + ); +} + +/** + * Implements hook_last_removed(). + */ +function conditional_fields_last_removed() { + return 6002; +} + +/** + * Upgrade from Drupal 6 to Drupal 7. + */ +function conditional_fields_update_7000() { + // Parachute for users who installed version 7.x-3.x-dev before 2011-Aug-10. + try { + $old_dependencies = db_select('conditional_fields', 'cf')->fields('cf', array('control_field_name', 'field_name', 'type', 'trigger_values'))->execute(); + } + catch (Exception $e) { + // If the columns are not found, table doesn't need updating. + if ($e->errorInfo[0] == '42S22') { + return 'Conditional Fields schema was already up to date.'; + } + else { + throw $e; + } + } + + // We can only migrate dependencies after fields definitions have been + // migrated to Drupal 7 using the Content Migrate module. + if (!module_exists('content_migrate')) { + throw new DrupalUpdateException('Before upgrading Conditional Fields from Drupal 6 you must upgrade your fields definitions using the Content Migrate module. Follow the CCK migration to Drupal 7 documentation at http://drupal.org/node/1144136 and then run update.php again, leaving the Content Migrate module activated. After the update, you can safely disable the Content Migrate module. Warning: if you don\'t migrate your fields before rerunning this update you might lose all your defined dependencies!'); + } + + // Update permission to new name. + db_update('role_permission') + ->fields(array('permission' => 'administer dependencies')) + ->condition('permission', 'administer conditional fields') + ->execute(); + + $dependencies = array(); + $node_types = node_type_get_names(); + $administrator_roles = user_roles(FALSE, 'administer dependencies'); + + $default_options = array( + 'selector' => '', + 'selector_custom' => 0, + 'state' => 'visible', + 'condition' => 'value', + 'values_set' => 1, // CONDITIONAL_FIELDS_DEPENDENCY_VALUES_SET_SINGLE + 'value' => array(), + 'value_form' => array(), + 'values' => array(), + 'effect' => 'show', + 'effect_options' => NULL, + 'element_view' => array( + 1 => 1, // CONDITIONAL_FIELDS_ELEMENT_VIEW_EVALUATE + 2 => 2, // CONDITIONAL_FIELDS_ELEMENT_VIEW_HIDE_ORPHAN + 5 => 0, // CONDITIONAL_FIELDS_ELEMENT_VIEW_HIDE_ORPHAN_IF_UNTRIGGERED + 3 => 0, // CONDITIONAL_FIELDS_ELEMENT_VIEW_HIGHLIGHT + 4 => 0, // CONDITIONAL_FIELDS_ELEMENT_VIEW_DESCRIBE + ), + 'element_view_per_role' => 0, + 'element_view_roles' => array(), + 'element_edit' => array( + 1 => 1, // CONDITIONAL_FIELDS_ELEMENT_EDIT_HIDE_ORPHAN + 2 => 0, // CONDITIONAL_FIELDS_ELEMENT_EDIT_HIDE_ORPHAN_IF_UNTRIGGERED + 3 => 0, // CONDITIONAL_FIELDS_ELEMENT_EDIT_RESET_DEFAULTS_IF_UNTRIGGERED + ), + 'element_edit_per_role' => 0, + 'element_edit_roles' => array(), + ); + + // Convert old dependencies to new format. + foreach ($old_dependencies as $old_dependency) { + $options = array(); + + if (!isset($node_types[$old_dependency->type])) { + continue; + } + + $type = $old_dependency->type; + + $dependee = field_read_instance('node', $old_dependency->control_field_name, $type, array('include_inactive' => TRUE)); + $dependent = field_read_instance('node', $old_dependency->field_name, $type, array('include_inactive' => TRUE)); + + if (!$dependee || !$dependent) { + continue; + } + + $options['values_set'] = 2; // CONDITIONAL_FIELDS_DEPENDENCY_VALUES_SET_AND + $options['values'] = array_keys(unserialize($old_dependency->trigger_values)); + + // Use Javascript. + switch (variable_get('c_fields_js_' . $type, 1)) { + case 0: // C_FIELDS_JS_NO + $options['state'] = 'unchanged'; + break; + case 2: // C_FIELDS_JS_DISABLE + $options['state'] = '!disabled'; + break; + } + + // JS Animation. + $js_animation = variable_get('c_fields_animation_' . $type, 0); + switch ($js_animation) { + case 1: // C_FIELDS_ANIMATION_FADE + $options['effect'] = 'fade'; + break; + case 2: // C_FIELDS_ANIMATION_SLIDE + $options['effect'] = 'slide'; + break; + } + + // JS Animation speed. + if ($js_animation != 0) { + switch (variable_get('c_fields_anim_speed_' . $type, 'normal')) { + case 'slow': + $speed = 600; + break; + case 'normal': + $speed = 400; + break; + case 'fast': + $speed = 200; + break; + } + $options['effect_options'] = array('speed' => $speed); + } + + // Orphaned on view. + switch (variable_get('c_fields_view_' . $type, 1)) { + case 1: // C_FIELDS_ORPHANED_SHOW_TRIGGERED + $options['element_view'][2] = 0; // CONDITIONAL_FIELDS_ELEMENT_VIEW_HIDE_ORPHAN + $options['element_view'][5] = 5; // CONDITIONAL_FIELDS_ELEMENT_VIEW_HIDE_ORPHAN_IF_UNTRIGGERED + break; + case 2: // C_FIELDS_ORPHANED_SHOW_ALL + $options['element_view'][2] = 0; + break; + } + + // Orphaned on edit. + switch (variable_get('c_fields_edit_' . $type, 1)) { + case 1: // C_FIELDS_ORPHANED_SHOW_TRIGGERED + $options['element_edit'][1] = 0; // CONDITIONAL_FIELDS_ELEMENT_EDIT_HIDE_ORPHAN + $options['element_edit'][2] = 2; // CONDITIONAL_FIELDS_ELEMENT_EDIT_HIDE_ORPHAN_IF_UNTRIGGERED + break; + case 2: // C_FIELDS_ORPHANED_SHOW_ALL + $options['element_edit'][2] = 0; + break; + } + + // Reset if untriggered. + if (variable_get('c_fields_reset_default_' . $type, 1)) { + $options['element_edit'][3] = 3; // CONDITIONAL_FIELDS_ELEMENT_EDIT_RESET_DEFAULTS_IF_UNTRIGGERED + } + + // Show all values to administrators. + if (variable_get('c_fields_show_all_' . $type, 0) && !empty($administrator_roles)) { + $options['element_view_per_role'] = 1; + + foreach ($administrator_roles as $rid => $role) { + $options['element_view_roles'][$rid] = array(); + } + } + + $options += $default_options; + + $dependencies[] = array( + 'dependee' => $dependee['id'], + 'dependent' => $dependent['id'], + 'options' => serialize($options), + ); + } + + // Delete the old table. + db_drop_table('conditional_fields'); + + // Create new table. + $schema = conditional_fields_schema_7000(); + db_create_table('conditional_fields', $schema); + + // Insert the new settings. + if (!empty($dependencies)) { + $query = db_insert('conditional_fields')->fields(array('dependee', 'dependent', 'options')); + foreach ($dependencies as $record) { + $query->values($record); + } + $query->execute(); + } + + // Delete obsolete variables, then clear the variables cache. + db_delete('variable') + ->condition('name', 'c_fields_%', 'LIKE') + ->execute(); + + cache_clear_all('variables', 'cache_bootstrap'); + + return 'Conditional Fields successfully upated dependencies to Drupal 7.'; +} + +/** + * Set 'selector' option to empty string if 'selector_custom' was unchecked and + * remove 'selector_custom' option. + */ +function conditional_fields_update_7001() { + $dependencies = db_select('conditional_fields', 'cf')->fields('cf', array('id', 'options'))->execute(); + + foreach ($dependencies as $dependency) { + $options = unserialize($dependency->options); + + if ($options['selector_custom'] == 0) { + $options['selector'] = ''; + } + + unset($options['selector_custom']); + + db_update('conditional_fields') + ->fields(array( + 'options' => serialize($options), + )) + ->condition('id', $dependency->id) + ->execute(); + } +} + +/** + * Updated dependency id menu arguments to argument loader function. + */ +function conditional_fields_update_7002() { + // Do nothing; it's here just to let Drupal rebuild the menu cache. +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.module b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.module new file mode 100644 index 00000000..1d3233a8 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/conditional_fields.module @@ -0,0 +1,1993 @@ +<?php +/** + * @file + * Define dependencies between fields based on their states and values. + * + * Conditional Fields for Drupal 7 is basically an user interface for the States + * API, plus the ability to hide fields on certain conditions when viewing + * content. + */ + +/** + * Dependency is triggered if the dependee has a certain value. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET', 1); + +/** + * Dependency is triggered if the dependee has all values. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND', 2); + +/** + * Dependency is triggered if the dependee has any of the values. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR', 3); + +/** + * Dependency is triggered if the dependee has only one of the values. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR', 4); + +/** + * Dependency is triggered if the dependee does not have any of the values. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT', 5); + +/** + * Dependency is triggered if the dependee values match a regular expression. + */ +define('CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX', 6); + +/** + * Field view setting. Dependent is shown only if the dependency is triggered. + */ +define('CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE', 1); + +/** + * Field view setting. Dependent is shown only if the dependee is shown as well. + */ +define('CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN', 2); + +/** + * Field view setting. Dependent is highlighted if the dependency is not + * triggered. + */ +define('CONDITIONAL_FIELDS_FIELD_VIEW_HIGHLIGHT', 3); + +/** + * Field view setting. Dependent has a textual description of the dependency. + */ +define('CONDITIONAL_FIELDS_FIELD_VIEW_DESCRIBE', 4); + +/** + * Field view setting. Dependent is shown only if the dependee is shown as well + * and the dependency evaluates to TRUE. + */ +define('CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_UNTRIGGERED_ORPHAN', 5); + +/** + * Field edit setting. Dependent is shown only if the dependee is shown as well. + */ +define('CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN', 1); + +/** + * Field edit setting. Dependent is shown only if the dependee is shown as well + * and the dependency evaluates to TRUE. + */ +define('CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN', 2); + +/** + * Field edit setting. Dependent is reset to its default values if the + * dependency was not triggered when the form is submitted. + */ +define('CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED', 3); + +/** + * Implements hook_permission(). + */ +function conditional_fields_permission() { + return array( + 'administer dependencies' => array( + 'title' => t('Administer dependencies'), + 'description' => t('View, edit and delete field dependencies.'), + ), + ); +} + +/** + * Implements hook_menu(). + */ +function conditional_fields_menu() { + $items = array(); + + // Ensure the following is not executed until field_bundles is working and + // tables are updated. Needed to avoid errors on initial installation. + if (defined('MAINTENANCE_MODE')) { + return $items; + } + + $items['admin/structure/dependencies'] = array( + 'title' => 'Field dependencies', + 'description' => 'Administer field dependencies for the site.', + 'page callback' => 'conditional_fields_dependencies_overview_page', + 'access arguments' => array('administer dependencies'), + 'file' => 'includes/conditional_fields.admin.inc', + ); + + $items['admin/structure/dependencies/overview'] = array( + 'title' => 'Overview', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => 1, + ); + + $items['admin/structure/dependencies/edit/%conditional_fields_dependency'] = array( + 'title' => 'Edit dependency', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('conditional_fields_dependency_edit_form', 4), + 'access arguments' => array('administer dependencies'), + 'file' => 'includes/conditional_fields.admin.inc', + ); + + $items['admin/structure/dependencies/delete/%conditional_fields_dependency'] = array( + 'title' => 'Delete dependency', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('conditional_fields_dependency_delete_form', 4), + 'access arguments' => array('administer dependencies'), + 'file' => 'includes/conditional_fields.admin.inc', + ); + + // Some of the following code is copied from field_ui_menu(). + + // Create tabs for all possible bundles. + foreach (entity_get_info() as $entity_type => $entity_info) { + if ($entity_info['fieldable']) { + $items["admin/structure/dependencies/$entity_type"] = array( + 'title' => $entity_info['label'], + 'page arguments' => array(NULL, 3), + 'access arguments' => array('administer dependencies'), + 'type' => MENU_LOCAL_TASK, + 'weight' => 2, + ); + + foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) { + if (module_exists('field_ui') && isset($bundle_info['admin'])) { + // Extract path information from the bundle and replace any "magic" + // wildcard with a normal one. + $path = preg_replace('/(%[a-z0-9_]*)/', '%', $bundle_info['admin']['path']); + + if (isset($bundle_info['admin']['bundle argument'])) { + $bundle_pos = $bundle_info['admin']['bundle argument']; + } + else { + $bundle_pos = $bundle_name; + } + + $items["$path/dependencies"] = array( + 'title' => $entity_type == 'comment' ? 'Comment dependencies' : 'Manage dependencies', + 'page callback' => 'conditional_fields_dependencies_overview_page', + 'page arguments' => array($bundle_pos, $entity_type), + 'type' => MENU_LOCAL_TASK, + 'weight' => $entity_type == 'comment' ? 4 : 2, + 'file' => 'includes/conditional_fields.admin.inc', + 'access arguments' => array('administer dependencies'), + ); + } + } + } + } + + return $items; +} + +/** + * Implements hook_forms(). + * + * Maps all dependency add forms to the same callback. + */ +function conditional_fields_forms() { + foreach (entity_get_info() as $entity_type => $entity_info) { + if ($entity_info['fieldable']) { + foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) { + $forms['conditional_fields_dependency_add_form_' . $entity_type . '_' . $bundle_name] = array( + 'callback' => 'conditional_fields_dependency_add_form', + 'callback arguments' => array($entity_type, $bundle_name), + ); + } + } + } + + return $forms; +} + +/** + * Implements hook_js_alter(). + * + * Overrides core states API with a patched version that allows multiple + * conditions and OR/XOR logic. + */ +function conditional_fields_js_alter(&$javascript) { + // Since Drupal 7.14, states.js includes the OR/XOR patch. + if (isset($javascript['misc/states.js']) && version_compare(VERSION, '7.14', '<')) { + $javascript['misc/states.js']['data'] = drupal_get_path('module', 'conditional_fields') . '/js/states.js'; + } +} + +/** + * Implements hook_element_info_alter(). + * Adds an #after_build function to all form elements. + */ +function conditional_fields_element_info_alter(&$types) { + foreach ($types as $type => $info) { + $types[$type]['#after_build'][] = 'conditional_fields_element_after_build'; + } +} + +/** + * Processes form elements with dependencies. + * + * Just adds a #conditional_fields property to the form with the needed + * data, which is used later in conditional_fields_form_after_build(): + * - The fields #parents property. + * - Field dependencies data. + */ +function conditional_fields_element_after_build($element, &$form_state) { + // Ensure that the element is a field. + if (isset($element['#field_name'])) { + $field = $element; + } + elseif (isset($element['#language'], $element[$element['#language']], $element[$element['#language']]['#field_name'])) { + // Some fields are wrapped in containers before processing. + $field = $element[$element['#language']]; + } + else { + return $element; + } + + $form = &$form_state['complete form']; + + // Avoid processing fields in fields_ui administration pages. + if (drupal_substr($form['#form_id'], 0, 9) == 'field_ui_') { + return $element; + } + + // Some fields do not have entity type and bundle properties. In this case we + // try to use the properties from the form. This is not an optimal solution, + // since in case of fields in entities within entities they might not correspond, + // and their dependencies will not be loaded. + if (isset($field['#entity_type'], $field['#bundle'])) { + $entity_type = $field['#entity_type']; + $bundle = $field['#bundle']; + } + elseif (isset($form['#entity_type'], $form['#bundle'])) { + $entity_type = $form['#entity_type']; + $bundle = $form['#bundle']; + } + else { + return $element; + } + + $dependencies = conditional_fields_load_dependencies($entity_type, $bundle); + + if (!$dependencies) { + return $element; + } + + // Attach dependent. + if (isset($dependencies['dependents'][$field['#field_name']])) { + foreach ($dependencies['dependents'][$field['#field_name']] as $id => $dependency) { + if (!isset($form['#conditional_fields'][$field['#field_name']]['dependees'][$id])) { + conditional_fields_attach_dependency($form, array('#field_name' => $dependency['dependee']), $field, $dependency['options'], $id); + } + } + } + + // Attach dependee. + // TODO: collect information about every element of the dependee widget, not + // just the first encountered. This bottom-up approach would allow us to + // define per-element sets of dependency values. + if (isset($dependencies['dependees'][$field['#field_name']])) { + foreach ($dependencies['dependees'][$field['#field_name']] as $id => $dependency) { + if (!isset($form['#conditional_fields'][$field['#field_name']]['dependents'][$id])) { + conditional_fields_attach_dependency($form, $field, array('#field_name' => $dependency['dependent']), $dependency['options'], $id); + } + } + } + + return $element; +} + +/** + * Attaches a single dependency to a form. + * + * Call this function when defining or altering a form to create dependencies + * dynamically. + * + * @param $form + * The form where the dependency is attached. + * @param $dependee + * The dependee field form element. Either a string identifying the element + * key in the form, or a fully built field array. Actually used properties of + * the array are #field_name and #parents. + * @param $dependent + * The dependent field form element. Either a string identifying the element + * key in the form, or a fully built field array. Actually used properties of + * the array are #field_name and #field_parents. + * @param $options + * An array of dependency options with the following key/value pairs: + * - state: The state applied to the dependent when the dependency is + * triggered. See conditional_fields_states() for available states. + * - condition: The condition for the dependency to be triggered. See + * conditional_fields_conditions() for available conditions. + * - values_set: One of the following constants: + * - CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET: Dependency is + * triggered if the dependee has a certain value defined in 'value'. + * - CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: Dependency is triggered if + * the dependee has all the values defined in 'values'. + * - CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: Dependency is triggered if the + * dependee has any of the values defined in 'values'. + * - CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: Dependency is triggered if + * the dependee has only one of the values defined in 'values'. + * - CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: Dependency is triggered if + * the dependee does not have any of the values defined in 'values'. + * - value: The value to be tested when 'values_set' is + * CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET. An associative array with + * the same structure of the dependee field values as found in + * $form_states['values] when the form is submitted. You can use + * field_default_extract_form_values() to extract this array. + * - values: The array of values to be tested when 'values_set' is not + * CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET. + * - value_form: An associative array with the same structure of the dependee + * field values as found in $form_state['input']['value']['field'] when the + * form is submitted. + * - effect: The jQuery effect associated to the state change. See + * conditional_fields_effects() for available effects and options. + * - effect_options: The options for the active effect. + * - element_view: An associative array of field view behaviors with + * CONDITIONAL_FIELDS_FIELD_VIEW_* constants as keys and the same constants + * as values for enabled behaviors and 0 for disabled behaviors. + * See conditional_fields_behaviors() for descriptions. + * - element_view_per_role: Set to 1 to activate field view settings per role. + * - element_view_roles: An associative array of field view settings per role + * where the keys are role ids and the values are arrays with the same + * structure of 'element_view'. + * - element_edit: An associative array of field edit behaviors with + * CONDITIONAL_FIELDS_FIELD_EDIT_* constants as keys and the same constants + * as values for enabled behaviors and 0 for disabled behaviors. + * See conditional_fields_behaviors() for descriptions. + * - element_edit_per_role: Set to 1 to activate field edit settings per role. + * - element_edit_roles: An associative array of field edit settings per role + * where the keys are role ids and the values are arrays with the same + * structure of 'element_edit'. + * - selector: (optional) Custom jQuery selector for the dependee. + * @param $id + * (internal use) The identifier for the dependency. Omit this parameter when + * attaching a custom dependency. + * + * Note that you don't need to manually set all these options, since default + * settings are always provided. + */ +function conditional_fields_attach_dependency(&$form, $dependee, $dependent, $options, $id = 0) { + $options += conditional_fields_dependency_default_options(); + + // The absence of the $id parameter identifies a custom dependency. + if (!$id) { + // String values are accepted to simplify usage of this function with custom + // forms. + if (is_string($dependee) && is_string($dependent)) { + $dependee = array( + '#field_name' => $dependee, + '#parents' => array($dependee), + ); + $dependent = array( + '#field_name' => $dependent, + '#field_parents' => array($dependent), + ); + + // Custom dependencies have automatically assigned a progressive id. + static $current_id; + if (!$current_id) { + $current_id = 1; + } + $id = $current_id; + $current_id++; + } + } + + // Attach dependee. + // Use the #parents property of the dependee instead of #field_parents since + // we will need access to the full structure of the widget. + if (isset($dependee['#parents'])) { + $form['#conditional_fields'][$dependee['#field_name']]['parents'] = $dependee['#parents']; + $form['#conditional_fields'][$dependee['#field_name']]['dependents'][$id] = array( + 'dependent' => $dependent['#field_name'], + 'options' => $options, + ); + } + + // Attach dependent. + if (isset($dependent['#field_parents'])) { + $dependent_parents = $dependent['#field_parents']; + } + elseif (isset($dependent['#parents'])) { + $dependent_parents = $dependent['#parents']; + } + if (isset($dependent_parents)) { + $form['#conditional_fields'][$dependent['#field_name']]['field_parents'] = $dependent_parents; + $form['#conditional_fields'][$dependent['#field_name']]['dependees'][$id] = array( + 'dependee' => $dependee['#field_name'], + 'options' => $options, + ); + } + + // Actual processing is done in conditional_fields_form_after_build(). + // Append the property so the callback runs last. + _conditional_fields_element_add_property($form, '#after_build', 'conditional_fields_form_after_build', 'append'); +} + +/** + * after_build callback for forms with dependencies. + * + * Builds and attaches #states properties to dependent fields, adds additional + * visual effects handling to the States API and attaches a validation callback + * to the form that handles validation of dependent fields. + */ +function conditional_fields_form_after_build($form, &$form_state) { + // Dependencies data is attached in conditional_fields_element_after_build(). + if (empty($form['#conditional_fields'])) { + return $form; + } + + $effects = array(); + $state_handlers = conditional_fields_states_handlers(); + + // Cycle all dependents. + foreach ($form['#conditional_fields'] as $dependent => $dependent_info) { + $states = array(); + + if (empty($dependent_info['dependees'])) { + continue; + } + + $dependent_location = array_merge($dependent_info['field_parents'], array($dependent)); + $dependent_form_field = drupal_array_get_nested_value($form, $dependent_location); + + // Cycle the dependant's dependees. + foreach ($dependent_info['dependees'] as $dependency) { + $dependee = $dependency['dependee']; + + if (empty($form['#conditional_fields'][$dependee])) { + continue; + } + + $dependee_info = $form['#conditional_fields'][$dependee]; + $dependee_form_field = drupal_array_get_nested_value($form, $dependee_info['parents']); + $options = $dependency['options']; + + // Load field edit behaviors. + // If this dependent has multiple dependees, only the logic of the first + // dependency will be taken into account. + if (!isset($behaviors)) { + $behaviors = conditional_fields_field_behaviors('edit', $options); + } + + // Determine if the dependee is in the form. + if (empty($dependee_form_field) || (isset($dependee_form_field['#access']) && $dependee_form_field['#access'] == FALSE)) { + // Apply orphan dependent behaviors. + /* + if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN, $behaviors)) { + // TODO + $is_triggered = TRUE; + + if ($is_orphan && !$is_triggered) { + $form[$dependent]['#access'] = FALSE; + } + } + */ + if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN, $behaviors)) { + $dependent_form_field['#access'] = FALSE; + } + unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN]); + unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN]); + continue; + } + + unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN]); + unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN]); + + // Build a jQuery selector if it was not overridden by a custom value. + // Note that this may be overridden later by a state handler. + if (!$options['selector']) { + $options['selector'] = conditional_fields_field_selector($dependee_form_field); + } + else { + // Replace the language placeholder in the selector with current language. + $options['selector'] = str_replace('%lang', $dependee_form_field['#language'], $options['selector']); + } + + if ($options['condition'] != 'value') { + // Conditions different than "value" are always evaluated against TRUE. + $state = array($options['state'] => array($options['selector'] => array($options['condition'] => TRUE))); + } + else { + // Build the values that trigger the dependency. + $values = array(); + + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + $values[$options['condition']] = $options['value_form']; + } + elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX) { + $values[$options['condition']] = $options['value']; + } + elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND) { + $values[$options['condition']] = count($options['values']) == 1 ? $options['values'][0] : $options['values']; + } + else { + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR) { + // XOR behaves like OR with added 'xor' element. + $values[] = 'xor'; + } + elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT) { + // NOT behaves like OR with switched state. + $options['state'] = strpos($options['state'], '!') === 0 ? drupal_substr($options['state'], 1) : '!' . $options['state']; + } + + // OR, NOT and XOR conditions are obtained with a nested array. + foreach ($options['values'] as $value) { + $values[] = array($options['condition'] => $value); + } + } + + $state = array($options['state'] => array($options['selector'] => $values)); + $dependee_form_state = isset($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language']) ? field_form_get_state($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language'], $form_state) : NULL; + + // Execute special handler for fields that need further processing. + // The handler has no return value. Modify the $state parameter by + // reference if needed. + foreach ($state_handlers as $handler => $handler_conditions) { + if (array_intersect_assoc($handler_conditions, $dependee_form_field) == $handler_conditions) { + $handler($dependee_form_field, $dependee_form_state, $options, $state); + } + } + + // Add validation callback to element. + _conditional_fields_element_add_property($dependent_form_field, '#element_validate', 'conditional_fields_dependent_validate', 'append'); + } + + // Add the $state into the correct logic group in $states. + foreach ($state as $key => $constraints) { + if (empty($states[$key][$options['grouping']])) { + $states[$key][$options['grouping']] = $constraints; + } + else { + $states[$key][$options['grouping']] = array_merge($states[$key][$options['grouping']], $constraints); + } + } + + // Build effect settings for effects with options. + // TODO: add dependee key to allow different effects on the same selector. + if ($options['effect'] && $options['effect'] != 'show') { + $selector = conditional_fields_field_selector(drupal_array_get_nested_value($form, array($dependent_location[0]))); + // Convert numeric strings to numbers. + foreach ($options['effect_options'] as &$effect_option) { + if (is_numeric($effect_option)) { + $effect_option += 0; + } + } + $effects[$selector] = array( + 'effect' => $options['effect'], + 'options' => $options['effect_options'], + ); + } + + // Apply reset dependent to default if untriggered behavior. + if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED, $behaviors)) { + // Add property to element so conditional_fields_dependent_validate() can + // pick it up. + $dependent_form_field['#conditional_fields_reset_if_untriggered'] = TRUE; + unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED]); + } + } + + // Execute custom behaviors. + if (!empty($behaviors)) { + foreach ($behaviors as $behavior) { + // Custom behaviors are callbacks. + if (function_exists($$behavior)) { + $$behavior($form, $form_state, $dependent, $dependent_info); + } + } + } + unset($behaviors); + + if (empty($states)) { + continue; + } + + // Save the modified field back into the form. + drupal_array_set_nested_value($form, $dependent_location, $dependent_form_field); + + // Map the states based on the conjunctions. + $states_new = array(); + foreach ($states as $state_key => $value) { + // As the main object is ANDed together we can add the AND items directly. + if (!empty($states[$state_key]['AND'])) { + $states_new[$state_key] = $states[$state_key]['AND']; + } + // The OR and XOR groups are moved into a sub-array that has numeric keys + // so that we get a JSON array and not an object, as required by the States + // API for OR and XOR groupings. + if (!empty($states[$state_key]['OR'])) { + $or = array(); + foreach ($states[$state_key]['OR'] as $constraint_key => $constraint_value) { + $or[] = array($constraint_key => $constraint_value); + } + // '1' as a string so that we get an object (which means logic groups + // are ANDed together). + $states_new[$state_key]['1'] = $or; + } + if (!empty($states[$state_key]['XOR'])) { + $xor = array('xor'); + foreach ($states[$state_key]['XOR'] as $constraint_key => $constraint_value) { + $xor[] = array($constraint_key => $constraint_value); + } + // '2' as a string so that we get an object. + $states_new[$state_key]['2'] = $xor; + } + } + $states = $states_new; + + // Add the #states property to the dependent field. + drupal_array_set_nested_value($form, array_merge($dependent_location, array('#states')), $states); + + $has_states = TRUE; + } + + if (empty($has_states)) { + return $form; + } + + $form['#attached']['js'][] = drupal_get_path('module', 'conditional_fields') . '/js/conditional_fields.js'; + + // Add effect settings to the form. + if ($effects) { + $form['#attached']['js'][] = array( + 'data' => array( + 'conditionalFields' => array( + 'effects' => $effects, + ), + ), + 'type' => 'setting', + ); + } + + // Validation callback to manage dependent fields validation. + $form['#validate'][] = 'conditional_fields_form_validate'; + // Initialize validation information every time the form is rendered to avoid + // stale data after a failed submission. + $form_state['conditional_fields_untriggered_dependents'] = array(); + + return $form; +} + +/** + * Dependent field validation callback. + * + * If the dependencies of a dependent field are not triggered, the validation + * errors that it might have thrown must be removed, together with its submitted + * values. This will simulate the field not being present in the form at all. + * In this field-level callback we just collect needed information and store it + * in $form_state. Values and errors will be removed in a single sweep in + * conditional_fields_form_validate(), which runs at the end of the validation + * cycle. + * + * @see conditional_fields_form_validate() + */ +function conditional_fields_dependent_validate($element, &$form_state, $form) { + $dependent = $element[$element['#language']]; + + // Check if this field's dependencies were triggered. + if (conditional_fields_evaluate_dependencies($dependent, $form, $form_state)) { + return; + } + + // Mark submitted values for removal. We have to remove them after all fields + // have been validated to avoid collision between dependencies. + $form_state_addition['parents'] = $dependent['#array_parents']; + + + // Optional behavior: reset the field to its default values. + // Default values are always valid, so it's safe to skip validation. + if (!empty($element['#conditional_fields_reset_if_untriggered'])) { + $form_state_addition['reset'] = TRUE; + } + + // Tag validation errors previously set on this field for removal in + // conditional_fields_form_validate(). + $errors = form_get_errors(); + + if ($errors) { + $error_key = implode('][', $dependent['#parents']); + foreach ($errors as $name => $error) { + // An error triggered by this field might have been set on a descendant + // element. This also means that so there can be multiple errors on the + // same field (even though Drupal doesn't support multiple errors on the + // same element). + if (strpos($name, $error_key) === 0) { + $field_errors[$name] = $error; + } + } + } + + if (!empty($field_errors)) { + $form_state_addition['errors'] = $field_errors; + } + + $form_state['conditional_fields_untriggered_dependents'][] = $form_state_addition; +} + +/** + * Extracts submitted field values during form validation. + * + * @return + * The requested field values parent. Actual field vales are stored under the + * key $element['#field_name']. + */ +function conditional_fields_form_field_get_values($element, $form_state) { + // Fall back to #parents to support custom dependencies. + $parents = isset($element['#field_parents']) ? $element['#field_parents'] : $element['#parents']; + return drupal_array_get_nested_value($form_state['values'], $parents); +} + +/** + * Validation callback for any form with conditional fields. + * + * This validation callback is added to all forms that contain fields with + * dependencies. It removes all validation errors from dependent fields whose + * dependencies are not triggered, which were collected at field-level + * validation in conditional_fields_dependent_validate(). + * + * @see conditional_fields_dependent_validate() + */ +function conditional_fields_form_validate($form, &$form_state) { + if (empty($form_state['conditional_fields_untriggered_dependents'])) { + return; + } + + $untriggered_dependents_errors = array(); + + foreach ($form_state['conditional_fields_untriggered_dependents'] as $field) { + $dependent = drupal_array_get_nested_value($form, $field['parents']); + $field_values_location = conditional_fields_form_field_get_values($dependent, $form_state); + + // If we couldn't find a location for the field's submitted values, let the + // validation errors pass through to avoid security holes. + if (!isset($field_values_location[$dependent['#field_name']])) { + continue; + } + + if (empty($field['reset'])) { + unset($field_values_location[$dependent['#field_name']]); + } + else { + $dependent_info = field_form_get_state($dependent['#field_parents'], $dependent['#field_name'], $dependent['#language'], $form_state); + $field_values_location[$dependent['#field_name']][$dependent['#language']] = field_get_default_value($dependent_info['instance']['entity_type'], NULL, $dependent_info['field'], $dependent_info['instance'], $dependent['#language']); + } + + // Save the changed array back in place. + // Do not use form_set_value() since it assumes that the values are located at + // $form_state['values'][ ... $element['#parents'] ... ], while the + // documentation of hook_field_widget_form() states that field values are + // $form_state['values'][ ... $element['#field_parents'] ... ]. + drupal_array_set_nested_value($form_state['values'], $dependent['#field_parents'], $field_values_location); + + if (!empty($field['errors'])) { + $untriggered_dependents_errors = array_merge($untriggered_dependents_errors, $field['errors']); + } + } + + if (!empty($untriggered_dependents_errors)) { + // Since Drupal provides no clean way to selectively remove error messages, + // we have to store all current form errors and error messages, clear them, + // filter out from our stored values the errors originating from untriggered + // dependent fields, and then reinstate remaining errors and messages. + $errors = array_diff_assoc((array) form_get_errors(), $untriggered_dependents_errors); + form_clear_error(); + $error_messages = drupal_get_messages('error'); + $removed_messages = array_values($untriggered_dependents_errors); + + // Reinstate remaining errors. + foreach ($errors as $name => $error) { + form_set_error($name, $error); + // form_set_error() calls drupal_set_message(), so we have to filter out + // these from the messages to avoid duplicates. + $removed_messages[] = $error; + } + + // Reinstate remaining error messages (which, at this point, are messages that + // were originated outside of the validation process). + foreach (array_diff($error_messages['error'], $removed_messages) as $message) { + drupal_set_message($message, 'error'); + } + } +} + +/** + * Helper function to add a property/value pair to a render array safely without + * overriding any pre-existing value. + * + * @param $position + * 'append' if $value should be inserted at the end of the $element[$property] + * array, any other value to insert it at the beginning. + * + */ +function _conditional_fields_element_add_property(&$element, $property, $value, $position = 'prepend') { + // Avoid overriding default element properties that might not yet be set. + if (!isset($element[$property])) { + $element[$property] = isset($element['#type']) ? element_info_property($element['#type'], $property, array()) : array(); + } + + if (in_array($value, $element[$property])) { + return; + } + + switch ($position) { + case 'append': + $element[$property] = array_merge($element[$property], (array) $value); + break; + + case 'prepend': + default: + $element[$property] = array_merge((array) $value, $element[$property]); + break; + } +} + +/** + * Implements hook_entity_view_alter(). + * + * Applies entity view logic to conditional fields. + */ +function conditional_fields_entity_view_alter(&$build, $type) { + if (!(isset($build['#entity_type'], $build['#bundle']) && $dependencies = conditional_fields_load_dependencies($build['#entity_type'], $build['#bundle']))) { + return; + } + + $evaluated_dependents = array(); + + foreach ($dependencies['dependents'] as $dependent => $dependency) { + if (empty($build[$dependent]['#access'])) { + continue; + } + + foreach ($dependency as $dependency_options) { + $dependee = $dependency_options['dependee']; + $options = $dependency_options['options']; + + // We can interface with the States API only through the Value condition. + if ($options['condition'] != 'value') { + continue; + } + + // Determine field view behaviors. + // If this dependent has multiple dependencies, only the logic of the + // first dependency will be taken into account. + if (!isset($behaviors)) { + $behaviors = conditional_fields_field_behaviors('view', $options); + } + + // Manage orphan fields (dependents with no dependees). + $evaluate = in_array(CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE, $behaviors); + $hide_orphan = in_array(CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN, $behaviors); + $hide_untriggered_orphan = in_array(CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_UNTRIGGERED_ORPHAN, $behaviors); + $is_orphan = empty($build[$dependee]['#access']); + if ($is_orphan) { + // Hide the dependent. No need to evaluate the dependency. + if ($hide_orphan) { + $build[$dependent]['#access'] = FALSE; + continue; + } + if ($hide_untriggered_orphan) { + $evaluate = TRUE; + } + if ($evaluate) { + // We have to look for the dependee in the entity object. + // TODO: Is it possible to avoid hardcoding this? + switch ($type) { + case 'node': + $entity_property = '#node'; + break; + case 'user': + $entity_property = '#account'; + break; + case 'term': + $entity_property = '#term'; + break; + case 'field_collection_item': + case 'profile2': + default: + $entity_property = '#entity'; + } + // If we didn't find the field, there is nothing more we can do. + if (!isset($build[$entity_property]->$dependee)) { + continue; + } + $items = $build[$entity_property]->$dependee; + // Values are keyed by language here, remove it. + $items = array_shift($items); + } + } + else { + $items = $build[$dependee]['#items']; + } + + if ($evaluate) { + $evaluated_dependents[$dependent][$options['grouping']][] = conditional_fields_evaluate_dependency('view', $items, $options); + } + } + if (isset($evaluated_dependents[$dependent])) { + $is_triggered = conditional_fields_evaluate_grouping($evaluated_dependents[$dependent]); + + foreach ($behaviors as $behavior) { + switch ($behavior) { + case CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE: + // Hide the dependent if it is not triggered. + if (!$is_triggered) { + $build[$dependent]['#access'] = FALSE; + } + break; + + case CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN: + // This case was handled while looking for the field. + break; + + case CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_UNTRIGGERED_ORPHAN: + // Hide the dependent if the dependee is not viewable and the dependency is not triggered. + if ($is_orphan && !$is_triggered) { + $build[$dependent]['#access'] = FALSE; + } + break; + + case CONDITIONAL_FIELDS_FIELD_VIEW_HIGHLIGHT: + // Show the dependent themed like an error message if it is not triggered. + if (!$is_triggered) { + $build[$dependent]['#prefix'] = isset($build[$dependent]['#prefix']) ? '<div class="messages error">' . $build[$dependent]['#prefix'] : '<div class="messages error">'; + $build[$dependent]['#suffix'] = isset($build[$dependent]['#suffix']) ? $build[$dependent]['#suffix'] . '</div>' : '</div>'; + } + break; + + case CONDITIONAL_FIELDS_FIELD_VIEW_DESCRIBE: + // Show a textual description of the dependency under the dependent field. + if ($build[$dependent]['#access']) { + $dependee_title = isset($build[$dependee]['#title']) ? $build[$dependee]['#title'] : $dependee; + $dependent_title = isset($build[$dependent]['#title']) ? $build[$dependent]['#title'] : $dependent; + $description = conditional_fields_dependency_description($dependee_title, $dependent_title, $options); + if (isset($build[$dependent]['#suffix'])) { + $description = $build[$dependent]['#suffix'] . $description; + } + $build[$dependent]['#suffix'] = $description; + } + break; + + default: + // Custom behaviors are callbacks. + $$behavior($dependee, $dependent, $is_triggered, $dependencies, $build, $type); + break; + } + + if (empty($build[$dependent]['#access'])) { + break; + } + } + } + + unset($behaviors); + } +} + +/** + * Evaluates an array with 'AND', 'OR' and 'XOR' groupings, + * each containing a list of boolean values. + */ +function conditional_fields_evaluate_grouping($groups) { + $or = $and = $xor = TRUE; + if (!empty($groups['OR'])) { + $or = in_array(TRUE, $groups['OR']); + } + if (!empty($groups['AND'])) { + $and = !in_array(FALSE, $groups['AND']); + } + if (!empty($groups['XOR'])) { + $xor = array_sum($groups['XOR']) == 1; + } + return $or && $and && $xor; +} + +/** + * Evaluate a set of dependencies for a dependent field. + * + * @param $dependent + * The field form element in the current language. + */ +function conditional_fields_evaluate_dependencies($dependent, $form, $form_state) { + $dependencies = $form['#conditional_fields'][$dependent['#field_name']]['dependees']; + $evaluated_dependees = array(); + + foreach ($dependencies as $dependency_id => $dependency) { + // Extract field values from submitted values. + $dependee = $dependency['dependee']; + $dependee_parents = $form['#conditional_fields'][$dependee]['parents']; + + // We have the parents of the field, but depending on the entity type and + // the widget type, they may include additional elements that are actually + // part of the value. So we find the depth of the field inside the form + // structure and use the parents only up to that depth. + $dependee_parents_keys = array_flip($dependee_parents); + $dependee_parent = drupal_array_get_nested_value($form, array_slice($dependee_parents, 0, $dependee_parents_keys[$dependee])); + $values = conditional_fields_form_field_get_values($dependee_parent[$dependee], $form_state); + + // Remove the language key. + if (isset($dependee_parent[$dependee]['#language'], $values[$dependee_parent[$dependee]['#language']])) { + $values = $values[$dependee_parent[$dependee]['#language']]; + } + + $evaluated_dependees[$dependent['#field_name']][$dependency['options']['grouping']][] = conditional_fields_evaluate_dependency('edit', $values, $dependency['options']); + } + + return conditional_fields_evaluate_grouping($evaluated_dependees[$dependent['#field_name']]); +} + +/** + * Evaluate if a dependency meets the requirements to be triggered. + * + * @param $context + * 'edit' if $values are extracted from $form_state or 'view' if + * $values are extracted from an entity. + */ +function conditional_fields_evaluate_dependency($context, $values, $options) { + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + $dependency_values = $context == 'view' ? $options['value'] : $options['value_form']; + + // Simple case: both values are strings or integers. Should never happen in + // view context, but does no harm to check anyway. + if (!is_array($values)) { + // Options elements consider "_none" value same as empty. + $values = $values === '_none' ? '' : $values; + + if (!is_array($dependency_values)) { + // Some widgets store integers, but values saved in $dependency_values + // are always strings. Convert them to integers because we want to do a + // strict equality check to differentiate empty strings from '0'. + if (is_int($values) && is_numeric($dependency_values)) { + $dependency_values = (int) $dependency_values; + } + + return $dependency_values === $values; + } + + // If $values is a string and $dependency_values an array, convert $values + // to the standard field array form format. This covers cases like single + // value textfields. + $values = array(array('value' => $values)); + } + + // If we are in form context, we are almost done. + if ($context == 'edit') { + // If $dependency_values is not an array, we can only assume that it + // should map to the first key of the first value of $values. + if (!is_array($dependency_values)) { + $key = current(array_keys((array) current($values))); + $dependency_values = array(array($key => $dependency_values)); + } + + // Compare arrays recursively ignoring keys, since multiple select widgets + // values have numeric keys in form format and string keys in storage + // format. + return array_values($dependency_values) == array_values($values); + } + + // $values, when viewing fields, may contain all sort of additional + // information, so filter out from $values the keys that are not present in + // $dependency_values. + // Values here are alway keyed by delta (regardless of multiple value + // settings). + foreach ($values as $delta => &$value) { + if (isset($dependency_values[$delta])) { + $value = array_intersect_key($value, $dependency_values[$delta]); + + foreach ($value as $key => &$element_value) { + if (isset($dependency_values[$delta][$key]) && is_int($dependency_values[$delta][$key]) && is_numeric($element_value)) { + $element_value = (int) $element_value; + } + } + } + } + + // Compare values. + foreach ($dependency_values as $delta => $dependency_value) { + if (!isset($values[$delta])) { + return FALSE; + } + foreach ($dependency_value as $key => $dependency_element_value) { + // Ignore keys set in the field and not in the dependency. + if (isset($values[$delta][$key]) && $values[$delta][$key] !== $dependency_element_value) { + return FALSE; + } + } + } + + return TRUE; + } + + // Flatten array of values. + $reference_values = array(); + foreach ((array) $values as $value) { + // TODO: support multiple values. + $reference_values[] = is_array($value) ? array_shift($value) : $value; + } + + // Regular expression method. + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX) { + foreach ($reference_values as $reference_value) { + if (!preg_match('/' . $options['value']['RegExp'] . '/', $reference_value)) { + return FALSE; + } + } + return TRUE; + } + + switch ($options['values_set']) { + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: + $diff = array_diff($options['values'], $reference_values); + return empty($diff); + + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: + $intersect = array_intersect($options['values'], $reference_values); + return !empty($intersect); + + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: + $intersect = array_intersect($options['values'], $reference_values); + return count($intersect) == 1; + + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: + $intersect = array_intersect($options['values'], $reference_values); + return empty($intersect); + } +} + +/** + * Determine which dependency behaviors should be used in forms and content + * display, depending on dependency options and user roles. + * + * @param $op + * 'view' or 'edit'. + * @param $options + * Dependency options. + * + * @return + * An array of behaviors. + * + */ +function conditional_fields_field_behaviors($op, $options) { + global $user; + + if ($options['element_' . $op . '_per_role']) { + foreach ($options['element_' . $op . '_roles'] as $rid => $role_behaviors) { + if (isset($user->roles[$rid])) { + $behaviors = $role_behaviors; + break; + } + } + } + else { + $behaviors = $options['element_' . $op]; + } + + // Filter out inactive behaviors. + $behaviors = array_filter($behaviors); + + return $behaviors; +} + +/** + * Builds a jQuery selector from the name attribute of a field. + * TODO: support custom selectors with %lang and %key placeholders. + */ +function conditional_fields_field_selector($field) { + if (isset($field['#attributes']['name'])) { + return '[name="' . $field['#attributes']['name'] . '"]'; + } + + if (isset($field['#name'])) { + return '[name="' . $field['#name'] . '"]'; + } + + // Try with id if name is not found. + if (isset($field['#attributes']['id'])) { + return '#' . $field['#attributes']['id']; + } + + if (isset($field['#id'])) { + return '#' . $field['#id']; + } + + return FALSE; +} + +/** + * Provides default options for a dependency. + * + * For an explanation of available options, + * @see conditional_fields_field_attach_dependency() + */ +function conditional_fields_dependency_default_options() { + return array( + 'state' => 'visible', + 'condition' => 'value', + 'grouping' => 'AND', + 'values_set' => CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET, + 'value' => array(), + 'values' => array(), + 'value_form' => array(), + 'effect' => 'show', + 'effect_options' => array(), + 'element_view' => array( + CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE => CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE, + CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN => CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN, + CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_UNTRIGGERED_ORPHAN => 0, + CONDITIONAL_FIELDS_FIELD_VIEW_HIGHLIGHT => 0, + CONDITIONAL_FIELDS_FIELD_VIEW_DESCRIBE => 0, + ), + 'element_view_per_role' => 0, + 'element_view_roles' => array(), + 'element_edit' => array( + CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN => CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN, + CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN => 0, + CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED => 0, + ), + 'element_edit_per_role' => 0, + 'element_edit_roles' => array(), + 'selector' => '', + ); +} + +/** + * Loads all dependencies from the database. + * + * The result can be filtered by providing an entity type and a bundle name. + */ +function conditional_fields_load_dependencies($entity_type = NULL, $bundle = NULL) { + // Use the advanced drupal_static() pattern. + static $dependencies; + if (!isset($dependencies)) { + $dependencies = &drupal_static(__FUNCTION__); + } + + if (!$dependencies) { + $dependencies = array(); + } + + if (!isset($dependencies[$entity_type][$bundle])) { + if (!empty($entity_type) && !empty($bundle)) { + $dependencies[$entity_type][$bundle] = array(); + } + $default_options = conditional_fields_dependency_default_options(); + + $select = db_select('conditional_fields', 'cf') + ->fields('cf', array('id', 'options')) + ->orderBy('cf.dependent'); + $fci_depende = $select->join('field_config_instance', 'fci_dependee', 'cf.dependee = fci_dependee.id'); + $fci_dependent = $select->join('field_config_instance', 'fci_dependent', 'cf.dependent = fci_dependent.id'); + $select->addField($fci_depende, 'field_name', 'dependee'); + $select->addField($fci_dependent, 'field_name', 'dependent'); + $select->addField($fci_depende, 'entity_type'); + $select->addField($fci_depende, 'bundle'); + + if ($entity_type) { + $select->condition( + db_and() + ->condition('fci_dependee.entity_type', $entity_type) + ->condition('fci_dependent.entity_type', $entity_type) + ); + } + + if ($bundle) { + $select->condition( + db_and() + ->condition('fci_dependee.bundle', $bundle) + ->condition('fci_dependent.bundle', $bundle) + ); + } + + $result = $select->execute(); + + foreach ($result as $dependency) { + $result_entity_type = $entity_type ? $entity_type : $dependency->entity_type; + $result_bundle = $bundle ? $bundle : $dependency->bundle; + + $options = unserialize($dependency->options); + $options += $default_options; + + $dependencies[$result_entity_type][$result_bundle]['dependents'][$dependency->dependent][$dependency->id] = array( + 'dependee' => $dependency->dependee, + 'options' => $options, + ); + + $dependencies[$result_entity_type][$result_bundle]['dependees'][$dependency->dependee][$dependency->id] = array( + 'dependent' => $dependency->dependent, + 'options' => $options, + ); + } + } + + if ($entity_type && isset($dependencies[$entity_type])) { + if ($bundle && isset($dependencies[$entity_type][$bundle])) { + return $dependencies[$entity_type][$bundle]; + } + + return $dependencies[$entity_type]; + } + + return $dependencies; +} + +/** + * Menu argument loader: loads a dependency from the database. + * + * @param $id + * The dependency ID. + * + * @return + * A fully populated dependency array, complete with its conditions, or FALSE + * if the dependency is not found. + */ +function conditional_fields_dependency_load($id) { + $result = db_select('conditional_fields', 'cf') + ->fields('cf', array('id', 'dependee', 'dependent', 'options')) + ->condition('id', $id) + ->execute() + ->fetchAssoc(); + + if (!$result) { + return FALSE; + } + + $result['options'] = unserialize($result['options']) + conditional_fields_dependency_default_options(); + + return $result; +} + +/** + * Inserts a new dependency in the database. + * For the format of $options, + * @see conditional_fields_dependency_default_options() + */ +function conditional_fields_dependency_insert($dependee_id, $dependent_id, $options = array()) { + $options += conditional_fields_dependency_default_options(); + $dependency = array( + 'dependee' => $dependee_id, + 'dependent' => $dependent_id, + 'options' => $options, + ); + + if (drupal_write_record('conditional_fields', $dependency)) { + return $dependency['id']; + } +} + +/** + * Updates a dependency. + */ +function conditional_fields_dependency_update($dependency) { + drupal_write_record('conditional_fields', $dependency, 'id'); +} + +/** + * Deletes dependencies. + */ +function conditional_fields_dependency_delete($dependency_ids) { + $or = db_or(); + foreach ($dependency_ids as $id) { + $or = $or->condition('id', $id); + } + + return db_delete('conditional_fields') + ->condition($or) + ->execute(); +} + +/** + * Implements hook_field_delete_instance(). + * + * Delete any dependency associated with the deleted instance. + */ +function conditional_fields_field_delete_instance($instance) { + db_delete('conditional_fields') + ->condition( + db_or() + ->condition('dependee', $instance['id']) + ->condition('dependent', $instance['id'])) + ->execute(); +} + +/** + * Implements hook_theme(). + */ +function conditional_fields_theme() { + return array( + 'conditional_fields_table' => array( + 'render element' => 'elements', + ), + ); +} + +/** + * Implements hook_element_info(). + */ +function conditional_fields_element_info() { + return array( + 'conditional_fields_table' => array( + '#theme' => 'conditional_fields_table', + ), + ); +} + +/** + * Builds a list of supported states that may be applied to a dependent field. + */ +function conditional_fields_states() { + $states = array( + // Supported by States API + 'visible' => t('Visible'), + '!visible' => t('Invisible'), + '!empty' => t('Filled with a value'), + 'empty' => t('Emptied'), + '!disabled' => t('Enabled'), + 'disabled' => t('Disabled'), + 'checked' => t('Checked'), + '!checked' => t('Unchecked'), + 'required' => t('Required'), + '!required' => t('Optional'), + '!collapsed' => t('Expanded'), + 'collapsed' => t('Collapsed'), + // Supported by Conditional Fields + 'unchanged' => t('Unchanged (no state)'), + // TODO: Add support to these states: + /* + 'relevant' => t('Relevant'), + '!relevant' => t('Irrelevant'), + 'valid' => t('Valid'), + '!valid' => t('Invalid'), + 'touched' => t('Touched'), + '!touched' => t('Untouched'), + '!readonly' => t('Read/Write'), + 'readonly' => t('Read Only'), + */ + ); + + // Allow other modules to modify the states + drupal_alter('conditional_fields_states', $states); + + return $states; +} + +/** + * Builds a list of supported effects that may be applied to a dependent field + * when it changes from visible to invisible and viceversa. The effects may + * have options that will be passed as Javascript settings and used by + * conditional_fields.js. + * + * @return + * An associative array of effects. Each key is an unique name for the effect. + * The value is an associative array: + * - label: The human readable name of the effect. + * - states: The states that can be associated with this effect. + * - options: An associative array of effect options names, field types, + * descriptions and default values. + */ +function conditional_fields_effects() { + $effects = array( + 'show' => array( + 'label' => t('Show/Hide'), + 'states' => array('visible', '!visible'), + ), + 'fade' => array( + 'label' => t('Fade in/Fade out'), + 'states' => array('visible', '!visible'), + 'options' => array( + 'speed' => array( + '#type' => 'textfield', + '#description' => t('The speed at which the animation is performed, in milliseconds.'), + '#default_value' => 400, + ), + ), + ), + 'slide' => array( + 'label' => t('Slide down/Slide up'), + 'states' => array('visible', '!visible'), + 'options' => array( + 'speed' => array( + '#type' => 'textfield', + '#description' => t('The speed at which the animation is performed, in milliseconds.'), + '#default_value' => 400, + ), + ), + ), + 'fill' => array( + 'label' => t('Fill field with a value'), + 'states' => array('!empty'), + 'options' => array( + 'value' => array( + '#type' => 'textfield', + '#description' => t('The value that should be given to the field when automatically filled.'), + '#default_value' => '', + ), + 'reset' => array( + '#type' => 'checkbox', + '#title' => t('Restore previous value when untriggered'), + '#default_value' => 1, + ), + ), + ), + 'empty' => array( + 'label' => t('Empty field'), + 'states' => array('empty'), + 'options' => array( + 'value' => array( + '#type' => 'hidden', + '#description' => t('The value that should be given to the field when automatically emptied.'), + '#value' => '', + '#default_value' => '', + ), + 'reset' => array( + '#type' => 'checkbox', + '#title' => t('Restore previous value when untriggered'), + '#default_value' => 1, + ), + ), + ), + ); + + // Allow other modules to modify the effects. + drupal_alter('conditional_fields_effects', $effects); + + return $effects; +} + +/** + * List of states of a dependee field that may be used to evaluate a condition. + */ +function conditional_fields_conditions($checkboxes = TRUE) { + // Supported by States API + $conditions = array( + '!empty' => t('Filled'), + 'empty' => t('Empty'), + 'touched' => t('Touched'), + '!touched' => t('Untouched'), + 'focused' => t('Focused'), + '!focused' => t('Unfocused'), + ); + + if ($checkboxes) { + // Relevant only if dependee is a list of checkboxes + $conditions['checked'] = t('Checked'); + $conditions['!checked'] = t('Unchecked'); + } + + $conditions['value'] = t('Value'); + + // TODO: Add support from Conditional Fields to these conditions + /* + '!disabled' => t('Enabled'), + 'disabled' => t('Disabled'), + 'required' => t('Required'), + '!required' => t('Optional'), + 'relevant' => t('Relevant'), + '!relevant' => t('Irrelevant'), + 'valid' => t('Valid'), + '!valid' => t('Invalid'), + '!readonly' => t('Read/Write'), + 'readonly' => t('Read Only'), + '!collapsed' => t('Expanded'), + 'collapsed' => t('Collapsed'), + */ + + // Allow other modules to modify the conditions + drupal_alter('conditional_fields_conditions', $conditions); + + return $conditions; +} + +/** + * List of behaviors that can be applied when editing forms and viewing content + * with dependencies. + */ +function conditional_fields_behaviors($op = NULL) { + $behaviors = array( + 'edit' => array( + CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN => t('Hide the dependent if the dependee is not in the form'), + CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED => t('Reset the dependent to its default values when the form is submitted if the dependency is not triggered.') . '<br /><em>' . t('Note: This setting only applies if the condition is "Value" and may not work with some field types. Also, ensure that the default values are valid, since they will not be validated.') . '</em>', + // TODO: Implement. Settings are imported from D6 though, they just do nothing for now. + /* + CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN => t('Hide the dependent if the dependee is not in the form and the dependency is not triggered.') . '<br /><em>' . t('Note: This setting is not currently not implemented and has no effect.') . '</em>', + */ + ), + 'view' => array( + CONDITIONAL_FIELDS_FIELD_VIEW_EVALUATE => t('Hide the dependent if the dependency is not triggered'), + CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_ORPHAN => t('Hide the dependent if the dependee is not viewable by the user'), + CONDITIONAL_FIELDS_FIELD_VIEW_HIDE_UNTRIGGERED_ORPHAN => t('Hide the dependent if the dependee is not viewable by the user and the dependency is not triggered'), + CONDITIONAL_FIELDS_FIELD_VIEW_HIGHLIGHT => t('Theme the dependent like an error message if the dependency is not triggered'), + CONDITIONAL_FIELDS_FIELD_VIEW_DESCRIBE => t('Show a textual description of the dependency under the dependent'), + ), + ); + + // Allow other modules to modify the options. + drupal_alter('conditional_fields_behaviors', $behaviors); + + if (isset($behaviors[$op])) { + return $behaviors[$op]; + } + + return $behaviors; +} + +/** + * Builds a list of special fields handlers to be executed when building the + * #states array. The keys are handler function names and the key/value pairs + * are field properties and their values that trigger the execution of the handler. + * + * The handlers themselves must accept the parameters $field, $field_info, + * $options and $state. + * + * @see conditional_fields_field_attach_form() + * @see conditional_fields_states_handler_select() + */ +function conditional_fields_states_handlers() { + $handlers = array( + 'conditional_fields_states_handler_select' => array( + '#type' => 'select', + '#multiple' => TRUE, + ), + 'conditional_fields_states_handler_checkbox' => array( + '#type' => 'checkbox', + ), + 'conditional_fields_states_handler_checkboxes' => array( + '#type' => 'checkboxes', + ), + 'conditional_fields_states_handler_text' => array( + '#type' => 'textfield', + ), + 'conditional_fields_states_handler_textarea' => array( + '#type' => 'textarea', + ), + 'conditional_fields_states_handler_date_combo' => array( + '#type' => 'date_combo', + ), + 'conditional_fields_states_handler_link_field' => array( + '#type' => 'link_field', + ), + 'conditional_fields_states_handler_link_addressfield' => array( + '#addressfield' => 1, + ), + ); + + // Allow other modules to modify the handlers + drupal_alter('conditional_fields_states_handlers', $handlers); + + return $handlers; +} + +/** + * States handler for multiple select lists. + * + * Multiple select fields always require an array as value. + * In addition, since our modified States API triggers a dependency only if all + * reference values of type Array are selected, a different selector must be + * added for each value of a set for OR, XOR and NOT evaluations. + */ +function conditional_fields_states_handler_select($field, $field_info, $options, &$state) { + switch ($options['values_set']) { + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET: + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: + $state[$options['state']][$options['selector']]['value'] = (array) $state[$options['state']][$options['selector']]['value']; + return; + + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: + $select_states[$options['state']][] = 'xor'; + + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX: + $regex = TRUE; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: + foreach ($options['values'] as $value) { + $select_states[$options['state']][] = array( + $options['selector'] => array( + $options['condition'] => empty($regex) ? array($value) : $options['value'], + ), + ); + } + break; + } + + $state = $select_states; +} + +/** + * States handler for single on/off checkbox. + */ +function conditional_fields_states_handler_checkbox($field, $field_info, $options, &$state) { + switch ($options['values_set']) { + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET: + $checked = $options['value'][0]['value'] == $field['#on_value'] ? TRUE : FALSE; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX: + $checked = preg_match('/' . $options['value']['RegExp'] . '/', $field['#on_value']) ? TRUE : FALSE; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: + // ANDing values of a single checkbox doesn't make sense: just use the first value. + $checked = $options['values'][0] == $field['#on_value'] ? TRUE : FALSE; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: + $checked = in_array($field['#on_value'], $options['values']) ? TRUE : FALSE; + break; + } + + $state[$options['state']][$options['selector']] = array('checked' => $checked); +} + +/** + * States handler for checkboxes. + */ +function conditional_fields_states_handler_checkboxes($field, $field_info, $options, &$state) { + // Checkboxes are actually different form fields, so the #states property + // has to include a state for each checkbox. + $checkboxes_selectors = array(); + + switch ($options['values_set']) { + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET: + foreach ($options['value'] as $value) { + $checkboxes_selectors[conditional_fields_field_selector($field[current($value)])] = array('checked' => TRUE); + } + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX: + // We interpret this as: checkboxes whose values match the regular + // expression should be checked. + foreach ($field['#options'] as $key => $label) { + if (preg_match('/' . $options['value']['RegExp'] . '/', $key)) { + $checkboxes_selectors[conditional_fields_field_selector($field[$key])] = array('checked' => TRUE); + } + } + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: + foreach ($options['values'] as $value) { + $checkboxes_selectors[conditional_fields_field_selector($field[$value])] = array('checked' => TRUE); + } + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: + $checkboxes_selectors[] = 'xor'; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: + foreach ($options['values'] as $value) { + $checkboxes_selectors[] = array(conditional_fields_field_selector($field[$value]) => array('checked' => TRUE)); + } + break; + } + + $state = array($options['state'] => $checkboxes_selectors); +} + +/** + * States handler for text fields. + */ +function conditional_fields_states_handler_text($field, $field_info, $options, &$state) { + // Text fields values are keyed by cardinality, so we have to flatten them. + // TODO: support multiple values. + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + // Cast as array to handle the exception of autocomplete text fields. + $value = (array) $state[$options['state']][$options['selector']]['value'][0]; + $state[$options['state']][$options['selector']]['value'] = array_shift($value); + } +} + +/** + * States handler for text areas. + */ +function conditional_fields_states_handler_textarea($field, $field_info, $options, &$state) { + conditional_fields_states_handler_text($field, $field_info, $options, $state); +} + +/** + * States handler for date combos. + */ +function conditional_fields_states_handler_date_combo($field, $field_info, $options, &$state) { + // Date text. + if ($field_info['instance']['widget']['type'] == 'date_text') { + if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + $state[$options['state']][$options['selector']]['value'] = $state[$options['state']][$options['selector']]['value'][0]['value']['date']; + } + return; + } + + // Add a condition for each date part. + $date_selectors = array(); + + $regex = $options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX; + + // Date popup. + if ($field_info['instance']['widget']['type'] == 'date_popup') { + $date_selectors[conditional_fields_field_selector($field['value']['date'])] = array( + 'value' => $regex ? $options['value'] : $options['value_form'][0]['value']['date'], + ); + + if ($field_info['field']['settings']['granularity']['hour'] || $field_info['field']['settings']['granularity']['minute'] || $field_info['field']['settings']['granularity']['second']) { + $date_selectors[conditional_fields_field_selector($field['value']['time'])] = array( + 'value' => $regex ? $options['value'] : $options['value_form'][0]['value']['time'], + ); + } + } + // Date select. + else { + foreach ($field_info['field']['settings']['granularity'] as $date_part) { + if ($date_part) { + $date_selectors[conditional_fields_field_selector($field['value'][$date_part])] = array( + 'value' => $regex ? $options['value'] : $options['value_form'][0]['value'][$date_part], + ); + } + } + } + + $state = array($options['state'] => $date_selectors); +} + +/** + * States handler for links provided by the Link module. + */ +function conditional_fields_states_handler_link_field($field, $field_info, $options, &$state) { + $link_selectors = array(); + $regex = $options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX; + + // Add a condition for each link part (Title and URL) + if ($field_info['instance']['settings']['title'] == 'optional' || $field_info['instance']['settings']['title'] == 'required') { + $link_selectors[conditional_fields_field_selector($field['title'])] = array('value' => $regex ? $options['value'] : $options['value_form'][0]['title']); + } + $link_selectors[conditional_fields_field_selector($field['url'])] = array('value' => $regex ? $options['value'] : $options['value_form'][0]['url']); + + $state = array($options['state'] => $link_selectors); +} + +/** + * States handler for links provided by the Addressfield module. + */ +function conditional_fields_states_handler_link_addressfield($field, $field_info, $options, &$state) { + if ($options['values_set'] != CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + return; + } + + $regex = $options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX; + $keys = array(); + + if ($field['#handlers']['address']) { + $keys += array('country', 'thoroughfare', 'premise', 'postal_code', 'locality', 'administrative_area'); + } + + if ($field['#handlers']['organisation']) { + $keys += array('organisation_name'); + } + + if ($field['#handlers']['name-oneline']) { + $keys += array('name_line'); + } + elseif ($field['#handlers']['name-full']) { + $keys += array('first_name', 'last_name'); + } + + $addressfield_selectors = array(); + + foreach ($keys as $key) { + $addressfield_selectors[str_replace('%key', $key, $options['selector'])] = array('value' => $regex ? $options['value'] : $options['value'][0][$key]); + } + + $state = array($options['state'] => $addressfield_selectors); +} + +/** + * Build a textual description of a dependency + */ +function conditional_fields_dependency_description($dependee_name, $dependent_name, $options) { + $states = conditional_fields_states(); + + if ($options['condition'] == 'value') { + $values = implode(', ', $options['values']); + + switch ($options['values_set']) { + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET: + if (count($options['value']) == 1) { + return t('%dependent_name is !state when %dependee_name has value "@value".', array( + '%dependent_name' => $dependent_name, + '!state' => drupal_strtolower($states[$options['state']]), + '%dependee_name' => $dependee_name, + '@value' => current($options['value'][0]), + )); + } + // "Single values" of multiple value fields like checkboxes are not + // actually single. Such fields will be ANDed. + $value_array = array(); + foreach ($options['value'] as $value) { + $value_array[] = current($value); + } + $values = implode(', ', $value_array); + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND: + $description = '%dependent_name is !state when %dependee_name has all the values: @values.'; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR: + $description = '%dependent_name is !state when %dependee_name has at least one of the values: @values.'; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR: + $description = '%dependent_name is !state when %dependee_name has only one of the values: @values.'; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT: + $description = '%dependent_name is !state when %dependee_name has none of the values: @values.'; + break; + case CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX: + return t('%dependent_name is !state when %dependee_name values match the regular expression: @regex.', array( + '%dependent_name' => $dependent_name, + '!state' => drupal_strtolower($states[$options['state']]), + '%dependee_name' => $dependee_name, + '@regex' => $options['value']['RegExp'], + )); + break; + } + + return t($description, array( + '%dependent_name' => $dependent_name, + '!state' => drupal_strtolower($states[$options['state']]), + '%dependee_name' => $dependee_name, + '@values' => $values, + )); + } + else { + $conditions = conditional_fields_conditions(); + + return t('%dependent_name is !state when %dependee_name is !condition.', array( + '%dependent_name' => $dependent_name, + '!state' => drupal_strtolower($states[$options['state']]), + '%dependee_name' => $dependee_name, + '!condition' => drupal_strtolower($conditions[$options['condition']]), + )); + } +} + +/** + * Implements hook_module_implements_alter(). + * + * Ensures that some Conditional Fields hooks are processed last. + */ +function conditional_fields_module_implements_alter(&$implementations, $hook) { + if (isset($implementations['conditional_fields'])) { + // The element_info_alter hook should attempt to add its #after_build + // callback last to ensure that conditional_fields_form_validate runs after + // all other validation routines. + // The Features hook must be processed when the fields actually exist. + if ($hook == 'element_info_alter' || $hook = 'features_api') { + $group = $implementations['conditional_fields']; + unset($implementations['conditional_fields']); + $implementations['conditional_fields'] = $group; + } + } +} + +/** + * Implements hook_features_api(). + */ +function conditional_fields_features_api() { + return array( + 'conditional_fields' => array( + 'name' => t('Conditional Fields'), + 'default_hook' => 'conditional_fields_default_fields', + 'default_file' => FEATURES_DEFAULTS_INCLUDED, + 'feature_source' => TRUE, + 'file' => drupal_get_path('module', 'conditional_fields') . '/includes/conditional_fields.features.inc', + ), + ); +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.admin.inc b/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.admin.inc new file mode 100644 index 00000000..5cba6e37 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.admin.inc @@ -0,0 +1,838 @@ +<?php +/** + * @file + * Administration of dependencies. + */ + +/** + * Dependencies administration page. + * + * If the callback is called from the overview page, it builds a list of + * dependencies for each entity type, grouped by bundle. + * If called from one of the local tasks, it builds a list of dependencies + * only for the selected entity type. + * If called from a task under a specific bundle administration page, it + * builds a list just for that entity type and bundle name pair. + */ +function conditional_fields_dependencies_overview_page($bundle_name = NULL, $entity_type = NULL) { + // When displaying the page, make sure the list of fields is up-to-date. + field_info_cache_clear(); + + // Gather entities information. + $entities = $entity_type ? array($entity_type => entity_get_info($entity_type)) : entity_get_info(); + + // Extract bundle name from path, if present. + if ($bundle_name) { + $bundle_name = strtr($bundle_name, array('-' => '_')); + + // Hacky exception for hanlding comments. + if ($entity_type == 'comment') { + $bundle_name = 'comment_node_' . $bundle_name; + } + } + + // Unused here, but saves queries in conditional_fields_dependency_add_form(). + if (!$bundle_name) { + conditional_fields_load_dependencies($entity_type, $bundle_name); + } + + $build = array(); + + if (!$entity_type) { + $build['#attached']['library'][] = array('system', 'drupal.collapse'); + } + + foreach ($entities as $entity_name => $entity_info) { + if (!$entity_info['fieldable']) { + continue; + } + + $items = array(); + + if ($entity_type) { + $build[$entity_name] = array(); + } + else { + $build[$entity_name] = array( + '#type' => 'fieldset', + '#title' => $entity_info['label'], + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#attributes' => array( + 'class' => array('collapsible collapsed'), + ), + ); + } + + if (empty($entity_info['bundles'])) { + $build[$entity_name]['no_bundles'] = array( + '#markup' => $entity_name == 'node' ? t('No content types available.') : t('No bundles available.'), + ); + } + else { + foreach ($entity_info['bundles'] as $bundle_info_name => $bundle_info) { + if ($bundle_name && $bundle_name != $bundle_info_name) { + continue; + } + + $build[$entity_name][$bundle_info_name] = array(); + + if (!$bundle_name && count($entity_info['bundles']) > 1) { + $build[$entity_name][$bundle_info_name]['title'] = array( + '#markup' => '<h4 class="conditional-fields-bundles-list clearfix">' . $bundle_info['label'] . '</h4>', + ); + } + + $build[$entity_name][$bundle_info_name] += drupal_get_form('conditional_fields_dependency_add_form_' . $entity_name . '_' . $bundle_info_name); + + if (!$entity_type && !isset($build[$entity_name][$bundle_info_name]['no_fields'])) { + $build[$entity_name]['#collapsed'] = FALSE; + $build[$entity_name]['#attributes']['class'] = array('collapsible'); + } + } + } + } + + return $build; +} + +/** + * Dependency add form. + * + * @see conditional_fields_dependency_add_form_submit() + * @see conditional_fields_dependency_add_form_validate() + * @ingroup forms + */ +function conditional_fields_dependency_add_form($form, &$form_state, $entity_type, $bundle_name) { + $form = array(); + $instances = field_info_instances($entity_type, $bundle_name); + + if (count($instances) < 2) { + $form['no_fields'] = array( + '#markup' => t('Add at least two fields to enable dependencies.'), + ); + + return $form; + } + + $dependencies = conditional_fields_load_dependencies($entity_type, $bundle_name); + + $form['table'] = array( + '#type' => 'conditional_fields_table', + '#entity_type' => $entity_type, + '#bundle_name' => $bundle_name, + '#header' => array( + t('Dependent'), + t('Dependees'), + array('data' => t('Description'), 'colspan' => 2), + array('data' => t('Operations'), 'colspan' => 2), + ), + '#attributes' => array( + 'class' => array('conditional-fields-overview'), + ), + 'dependencies' => array(), + ); + + $form['table']['#attached']['css'][] = drupal_get_path('module', 'conditional_fields') . '/conditional_fields.css'; + + if ($dependencies) { + $destination = drupal_get_destination(); + + foreach ($dependencies['dependents'] as $dependent => $dependees) { + uasort($dependees, '_conditional_fields_sort_dependees'); + + $first_row = TRUE; + $show_AND = $show_OR = $show_XOR = TRUE; + + foreach ($dependees as $id => $dependency) { + $form['table']['dependencies'][$id] = array(); + $dependee_count = count($dependees); + + // Dependencies come ordered by dependent, so by adding it only to the + // first row they will appear grouped. + if ($first_row == TRUE) { + $form['table']['dependencies'][$id]['dependent'] = array( + '#markup' => check_plain($instances[$dependent]['label']) . ' (' . $dependent . ')', + '#rowspan' => $dependee_count, + ); + + $first_row = FALSE; + } + + $row = array( + 'dependee' => array( + '#markup' => check_plain($instances[$dependency['dependee']]['label']) . ' (' . $dependency['dependee'] . ')', + ), + ); + + // To avoid clutter, collect information about groupings so we can show each + // operator once per dependent. + if ($dependee_count > 1) { + if (${'show_' . $dependency['options']['grouping']}) { + $row['group'] = array( + '#markup' => $dependency['options']['grouping'], + '#rowspan' => $dependee_count, + ); + ${'show_' . $dependency['options']['grouping']} = FALSE; + } + } + else { + $row['description']['#colspan'] = 2; + } + + $row['description']['#markup'] = conditional_fields_dependency_description($instances[$dependency['dependee']]['label'], $instances[$dependent]['label'], $dependency['options']); + + $row['edit'] = array( + '#type' => 'link', + '#title' => t('edit'), + '#href' => 'admin/structure/dependencies/edit/' . $id, + '#options' => array('query' => $destination, 'attributes' => array('title' => t('Edit dependency settings.'))), + '#query' => drupal_get_destination(), + ); + $row['delete'] = array( + '#type' => 'link', + '#title' => t('delete'), + '#href' => 'admin/structure/dependencies/delete/' . $id, + '#options' => array('query' => $destination, 'attributes' => array('title' => t('Delete dependency.'))), + ); + + $form['table']['dependencies'][$id] += $row; + } + } + } + + // Build list of available fields. + $fields = array(); + + foreach ($instances as $field) { + $fields[$field['id']] = check_plain($field['label'] . ' (' . $field['field_name'] . ')'); + } + + asort($fields); + + // Build list of states. + $states = array_map('drupal_strtolower', conditional_fields_states()); + + // Build list of conditions. + foreach (conditional_fields_conditions() as $condition => $label) { + $conditions[$condition] = $condition == 'value' ? t('has value...') : t('is !label', array('!label' => drupal_strtolower($label))); + } + + // Add new dependency row. + $form['table']['add_new_dependency'] = array( + 'dependent' => array( + '#type' => 'select', + '#title' => t('Dependent'), + '#title_display' => 'invisible', + '#description' => t('Dependent'), + '#options' => $fields, + '#prefix' => '<div class="add-new-placeholder">' . t('Add new dependency') . '</div>', + ), + 'dependee' => array( + '#type' => 'select', + '#title' => t('Dependee'), + '#title_display' => 'invisible', + '#description' => t('Dependee'), + '#options' => $fields, + '#prefix' => '<div class="add-new-placeholder"> </div>', + ), + 'state' => array( + '#type' => 'select', + '#title' => t('State'), + '#title_display' => 'invisible', + '#options' => $states, + '#default_value' => 'visible', + '#prefix' => t('The dependent field is') . ' <span class="description-select">', + '#suffix' => '</span> ' . t('when the dependee'), + ), + 'condition' => array( + '#type' => 'select', + '#title' => t('Condition'), + '#title_display' => 'invisible', + '#options' => $conditions, + '#default_value' => 'value', + '#prefix' => ' <span class="description-select">', + '#suffix' => '</span>', + ), + 'actions' => array( + 'submit' => array( + '#type' => 'submit', + '#value' => t('Add dependency'), + ), + ), + ); + + return $form; +} + +/** + * Dependency add form validate. + * + * @see conditional_fields_dependency_add_form() + * @see conditional_fields_dependency_add_form_submit() + */ +function conditional_fields_dependency_add_form_validate($form, &$form_state) { + if ($form_state['values']['dependee'] == $form_state['values']['dependent']) { + form_set_error('dependent', t('You should select two different fields.')); + form_set_error('dependee', t('You should select two different fields.')); + // Workaround to avoid duplicate error messages. + array_pop($_SESSION['messages']['error']); + } +} + +/** + * Dependency add form submit. + * + * @see conditional_fields_dependency_add_form() + * @see conditional_fields_dependency_add_form_validate() + */ +function conditional_fields_dependency_add_form_submit($form, &$form_state) { + $options = array( + 'state' => $form_state['values']['state'], + 'condition' => $form_state['values']['condition'] + ); + + if (!$id = conditional_fields_dependency_insert($form_state['values']['dependee'], $form_state['values']['dependent'], $options)) { + drupal_set_message(t('There was an error while trying to create the dependency.'), 'error'); + return; + } + + $destination = drupal_get_destination(); + drupal_goto("admin/structure/dependencies/edit/$id", array('query' => $destination)); +} + +/** + * Returns HTML for Conditional Fields dependencies tables. + * + * @param $variables + * An associative array containing: + * - elements: An associative array containing a Form API structure to be + * rendered as a table. + * + * @ingroup themeable + */ +function theme_conditional_fields_table($variables) { + $elements = $variables['elements']; + $table = array(); + + // Add table headers and attributes. + foreach (array('header', 'attributes') as $key) { + if (isset($elements["#$key"])) { + $table[$key] = $elements["#$key"]; + } + } + + // Dependencies rows. + foreach (element_children($elements['dependencies']) as $dependency) { + foreach (element_children($elements['dependencies'][$dependency]) as $cell_key) { + $cell = array( + 'data' => drupal_render($elements['dependencies'][$dependency][$cell_key]), + ); + foreach (array('#colspan', '#rowspan') as $row_attribute) { + if (isset($elements['dependencies'][$dependency][$cell_key][$row_attribute])) { + $cell[ltrim($row_attribute, '#')] = $elements['dependencies'][$dependency][$cell_key][$row_attribute]; + } + } + $table['rows'][$dependency][] = $cell; + } + } + + // Add new dependency row. + $table['rows'][] = array( + drupal_render($elements['add_new_dependency']['dependent']), + drupal_render($elements['add_new_dependency']['dependee']), + array( + 'data' => drupal_render($elements['add_new_dependency']['state']) . drupal_render($elements['add_new_dependency']['condition']), + 'colspan' => 2, + ), + array( + 'data' => drupal_render($elements['add_new_dependency']['actions']), + 'colspan' => 2, + ), + ); + + return theme('table', $table); +} + +/** + * Dependency edit form. + * + * @see conditional_fields_dependency_edit_form_validate() + * @see conditional_fields_dependency_edit_form_submit() + * @ingroup forms + */ +function conditional_fields_dependency_edit_form($form, &$form_state, $dependency) { + $form['#dependency'] = $dependency; + + $form['#attached']['css'][] = drupal_get_path('module', 'conditional_fields') . '/conditional_fields.css'; + + // Retrieve needed information from the dependee instance. + // Since we only have the instance id here (id column of the + // field_config_instance table), not the entity id (id column of field_config) + // we can't call field_info_field_by_id. This is needed because we don't + // want dependencies to be shared between bundles. + // So we first load instance information to obtain the entity id, then we load + // the entity using field_info_field(). + $instances = field_read_instances(array('id' => $dependency['dependee'])); + $dependee_instance = array_shift($instances); + $dependee = field_info_field($dependee_instance['field_name']); + + // Build a dummy field widget to use as form field in single value selection + // option. + $dummy_form = array('#parents' => array()); + $dependee_instance['default_value'] = $dependency['options']['value']; + $dependee_instance['default_value_function'] = ''; + $dependee_instance['required'] = FALSE; + + $dummy_field = field_default_form($dependee_instance['entity_type'], NULL, $dependee, $dependee_instance, LANGUAGE_NONE, array(), $dummy_form, $form_state); + + // Save dependee name in form. + $form['dependee'] = array( + '#type' => 'value', + '#value' => $dependee_instance['field_name'], + ); + + $checkboxes = ($dependee_instance['widget']['type'] == 'options_buttons' && $dependee['cardinality'] != 1) || $dependee_instance['widget']['type'] == 'options_onoff' ? TRUE : FALSE; + + $form['condition'] = array( + '#type' => 'select', + '#title' => t('Condition'), + '#description' => t('The condition that should be met by the dependee %field to trigger the dependency.', array('%field' => $dependee_instance['label'])), + '#options' => conditional_fields_conditions($checkboxes), + '#default_value' => $dependency['options']['condition'], + '#required' => TRUE, + ); + + $form['values_set'] = array( + '#type' => 'select', + '#title' => t('Values input mode'), + '#description' => t('The input mode of the values that trigger the dependency.'), + '#options' => array( + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET => t('Insert value from widget...'), + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX => t('Regular expression...'), + t('Set of values') => array( + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND => t('All these values (AND)...'), + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR => t('Any of these values (OR)...'), + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR => t('Only one of these values (XOR)...'), + CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT => t('None of these values (NOT)...'), + // TODO: PHP evaluation + ), + ), + '#default_value' => $dependency['options']['values_set'], + '#required' => TRUE, + '#states' => array( + 'visible' => array( + ':input[name="condition"]' => array('value' => 'value'), + ), + ), + ); + + $form['value'] = array( + '#type' => 'fieldset', + '#title' => t('Insert value from widget'), + '#description' => t('The dependency is triggered when the field has exactly the same value(s) inserted in the widget below.'), + '#states' => array( + 'visible' => array( + ':input[name="values_set"]' => array( + 'value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET, + ), + ':input[name="condition"]' => array('value' => 'value'), + ), + ), + '#tree' => TRUE, + 'field' => $dummy_field, + ); + + $form['values'] = array( + '#type' => 'textarea', + '#title' => t('Set of values'), + '#description' => t('The values of the dependee %field that trigger the dependency.', array('%field' => $dependee_instance['label'])) . '<br>' . t('Enter one value per line. Note: if the dependee has allowed values, these are actually the keys, not the labels, of those values.'), + '#default_value' => implode("\n", $dependency['options']['values']), + '#states' => array( + 'visible' => array( + ':input[name="values_set"]' => array( + array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND), + array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR), + array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR), + array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT), + ), + ':input[name="condition"]' => array('value' => 'value'), + ), + 'required' => array( + ':input[name="condition"]' => array('value' => 'value'), + ), + ), + ); + + $form['regex'] = array( + '#type' => 'textfield', + '#title' => t('Regular expression'), + '#description' => t('The dependency is triggered when all the values of the dependee %field match the regular expression. The expression should be valid both in PHP and in Javascript. Do not include delimiters.', array('%field' => $dependee_instance['label'])) . '<br>' . t('Note: If the dependee has allowed values, these are actually the keys, not the labels, of those values.'), + '#maxlength' => 2048, + '#size' => 120, + '#default_value' => isset($dependency['options']['value']['RegExp']) ? $dependency['options']['value']['RegExp'] : '', + '#states' => array( + 'visible' => array( + ':input[name="values_set"]' => array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX), + ':input[name="condition"]' => array('value' => 'value'), + ), + 'required' => array( + ':input[name="values_set"]' => array('value' => (string) CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX), + ':input[name="condition"]' => array('value' => 'value'), + ), + ), + ); + + $form['grouping'] = array( + '#type' => 'radios', + '#title' => t('Interaction with other dependencies'), + '#description' => t('When this dependent has more than one dependee, how should this condition be evaluated against the others?') . '<br />' . t('Note that sets will be grouped this way: (ANDs) AND (ORs) AND (XORs).'), + '#options' => array('AND' => 'AND', 'OR' => 'OR', 'XOR' => 'XOR'), + '#default_value' => $dependency['options']['grouping'], + '#required' => TRUE, + ); + + $entity = entity_get_info($dependee_instance['entity_type']); + + $form['entity_edit'] = array( + '#type' => 'fieldset', + '#title' => t('Edit context settings'), + '#description' => t('These settings apply when the @entity is being added or edited in a form.', array('@entity' => drupal_strtolower($entity['label']))), + '#collapsible' => FALSE, + ); + + $form['entity_edit']['state'] = array( + '#type' => 'select', + '#title' => t('Form state'), + '#description' => t('The Javascript form state that is applied to the dependent field when the condition is met. Note: this has no effect on server-side logic and validation.'), + '#options' => conditional_fields_states(), + '#default_value' => $dependency['options']['state'], + '#required' => TRUE, + '#ajax' => array( + 'callback' => 'conditional_fields_ajax_admin_state_callback', + 'wrapper' => 'effects-wrapper', + ), + ); + + $effects = $effects_options = array(); + $selected_state = isset($form_state['values']['state']) ? $form_state['values']['state'] : $dependency['options']['state']; + foreach (conditional_fields_effects() as $effect_name => $effect) { + if (in_array($selected_state, $effect['states'])) { + $effects[$effect_name] = $effect['label']; + if (isset($effect['options'])) { + $effects_options[$effect_name] = $effect['options']; + } + } + } + + $form['entity_edit']['effects_wrapper'] = array( + '#type' => 'container', + '#attributes' => array( + 'id' => 'effects-wrapper', + ), + ); + + $effect = isset($form_state['values']['effect']) ? $form_state['values']['effect'] : $dependency['options']['effect']; + + if (count($effects) == 1) { + $effects_keys = array_keys($effects); + $form['entity_edit']['effects_wrapper']['effect'] = array( + '#type' => 'hidden', + '#value' => array_shift($effects_keys), + '#default_value' => array_shift($effects_keys), + ); + } + elseif (count($effects) > 1) { + $form['entity_edit']['effects_wrapper']['effect'] = array( + '#type' => 'select', + '#title' => t('Effect'), + '#description' => t('The effect that is applied to the dependent when its state is changed.'), + '#options' => $effects, + '#default_value' => $effect, + '#states' => array( + 'visible' => array( + ':input[name="state"]' => array( + array('value' => 'visible'), + array('value' => '!visible'), + ), + ), + ), + ); + } + + $form['entity_edit']['effects_wrapper']['effect_options'] = array('#tree' => TRUE); + + foreach ($effects_options as $effect_name => $effect_options) { + foreach ($effect_options as $effect_option_name => $effect_option) { + $effect_option += array( + '#title' => t('@effect effect option: @effect_option', array('@effect' => $effects[$effect_name], '@effect_option' => $effect_option_name)), + '#states' => array( + 'visible' => array( + ':input[name="effect"]' => array( + array('value' => $effect_name), + ), + ), + ), + ); + + if (isset($form_state['values']['effect_options'][$effect_name][$effect_option_name])) { + $effect_option['#default_value'] = $form_state['values']['effect_options'][$effect_name][$effect_option_name]; + } + elseif ($dependency['options']['effect'] == $effect_name) { + $effect_option['#default_value'] = $dependency['options']['effect_options'][$effect_option_name]; + } + + $form['entity_edit']['effects_wrapper']['effect_options'][$effect_name][$effect_option_name] = $effect_option; + } + } + + $form['entity_edit']['element_edit_per_role'] = array( + '#type' => 'checkbox', + '#title' => t('Activate per user role settings in edit context'), + '#description' => t('If the user has more than one role, the first matching role will be used.'), + '#default_value' => $dependency['options']['element_edit_per_role'], + ); + + $behaviors = conditional_fields_behaviors(); + + $form['entity_edit']['element_edit'] = array( + '#type' => 'checkboxes', + '#title' => t('Edit context settings for all roles'), + '#title_display' => 'invisible', + '#options' => $behaviors['edit'], + '#default_value' => $dependency['options']['element_edit'], + '#states' => array( + 'visible' => array( + ':input[name="element_edit_per_role"]' => array('checked' => FALSE), + ), + ), + ); + + $roles = user_roles(); + $element_edit_roles = array('element_edit_roles' => array('#tree' => TRUE)); + foreach ($roles as $rid => $role) { + $element_edit_roles['element_edit_roles'][$rid] = array( + '#type' => 'checkboxes', + '#title' => t('Edit context settings for %role', array('%role' => $role)), + '#options' => $behaviors['edit'], + '#default_value' => isset($dependency['options']['element_edit_roles'][$rid]) ? $dependency['options']['element_edit_roles'][$rid] : $dependency['options']['element_edit'], + '#states' => array( + 'visible' => array( + ':input[name="element_edit_per_role"]' => array('checked' => TRUE), + ), + ), + ); + } + + array_push($form['entity_edit'], $element_edit_roles); + + $form['entity_edit']['dependency_advanced'] = array( + '#type' => 'fieldset', + '#title' => t('Advanced edit context settings', array('@entity' => drupal_strtolower($entity['label']))), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + + $selector_description = t('Only use if you know what you are doing, otherwise leave the field empty to let the dependency use an automatically generated selector.'); + $selector_description .= '<br />' . t('You can use the following placeholders:'); + $selector_description .= "<ul>\n"; + $selector_description .= '<li>' . t('%lang: current language of the field.') . "</li>\n"; + $selector_description .= '<li>' . t('%key: part identifier for fields composed of multiple form elements, like checkboxes.') . "</li>\n"; + $selector_description .= '</ul>'; + + $form['entity_edit']['dependency_advanced']['selector'] = array( + '#type' => 'textfield', + '#title' => t('Custom jQuery selector for dependee'), + '#description' => $selector_description, + '#default_value' => $dependency['options']['selector'], + ); + + $form['entity_view'] = array( + '#type' => 'fieldset', + '#title' => t('View context settings'), + '#description' => t('These settings apply when the @entity is viewed.', array('@entity' => drupal_strtolower($entity['label']))), + '#collapsible' => FALSE, + ); + + $form['entity_view']['element_view_per_role'] = array( + '#type' => 'checkbox', + '#title' => t('Activate per user role settings in view context'), + '#description' => t('If the user has more than one role, the first matching role will be used.'), + '#default_value' => $dependency['options']['element_view_per_role'], + ); + + $form['entity_view']['element_view'] = array( + '#type' => 'checkboxes', + '#title' => t('View context settings for all roles'), + '#title_display' => 'invisible', + '#description' => t('Note: Options that need to evaluate if the dependency is triggered only apply if the condition is "Value".'), + '#options' => $behaviors['view'], + '#default_value' => $dependency['options']['element_view'], + '#states' => array( + 'visible' => array( + ':input[name="element_view_per_role"]' => array('checked' => FALSE), + ), + ), + ); + + $element_view_roles = array('element_view_roles' => array('#tree' => TRUE)); + foreach ($roles as $rid => $role) { + $element_view_roles['element_view_roles'][$rid] = array( + '#type' => 'checkboxes', + '#title' => t('View context settings for %role', array('%role' => $role)), + '#options' => $behaviors['view'], + '#default_value' => isset($dependency['options']['element_view_roles'][$rid]) ? $dependency['options']['element_view_roles'][$rid] : $dependency['options']['element_view'], + '#states' => array( + 'visible' => array( + ':input[name="element_view_per_role"]' => array('checked' => TRUE), + ), + ), + ); + } + + array_push($form['entity_view'], $element_view_roles); + + $form['actions'] = array( + '#type' => 'actions', + 'save' => array( + '#type' => 'submit', + '#value' => t('Save settings'), + ), + ); + + // Redirect to bundle dependencies form if destination is set. + $destination = drupal_get_destination(); + if ($destination['destination'] != 'admin/structure/dependencies') { + $form_state['redirect'] = $destination['destination']; + } + + return $form; +} + +/** + * Dependency edit form validate. + * + * @see conditional_fields_dependency_edit_form() + */ +function conditional_fields_dependency_edit_form_validate($form, &$form_state) { + if ($form_state['values']['condition'] == 'value') { + if (in_array($form_state['values']['values_set'], array(CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND, CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR, CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR, CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT)) && drupal_strlen(trim($form_state['values']['values'])) == 0) { + form_set_error('values', t('!name field is required.', array('!name' => t('Set of values')))); + } + elseif ($form_state['values']['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX && drupal_strlen(trim($form_state['values']['regex'])) == 0) { + form_set_error('regex', t('!name field is required.', array('!name' => t('Regular expression')))); + } + } +} + +/** + * Dependency edit form submit. + * + * @see conditional_fields_dependency_edit_form() + */ +function conditional_fields_dependency_edit_form_submit($form, &$form_state) { + $dependee = $form_state['values']['dependee']; + $widget_type = $form_state['field'][$dependee][LANGUAGE_NONE]['instance']['widget']['type']; + + // TODO: validate values against allowed values. + // TODO: unify 'value' and 'values' fields. + + $dependency = array( + 'id' => $form['#dependency']['id'], + 'dependee' => $form['#dependency']['dependee'], + 'dependent' => $form['#dependency']['dependent'], + 'options' => array( + 'state' => $form_state['values']['state'], + 'condition' => $form_state['values']['condition'], + 'grouping' => $form_state['values']['grouping'], + 'effect' => isset($form_state['values']['effect']) ? $form_state['values']['effect'] : FALSE, + 'effect_options' => isset($form_state['values']['effect'], $form_state['values']['effect_options'][$form_state['values']['effect']]) ? $form_state['values']['effect_options'][$form_state['values']['effect']] : array(), + 'element_view' => $form_state['values']['element_view'], + 'element_view_per_role' => $form_state['values']['element_view_per_role'], + 'element_view_roles' => $form_state['values']['element_view_roles'], + 'element_edit' => $form_state['values']['element_edit'], + 'element_edit_per_role' => $form_state['values']['element_edit_per_role'], + 'element_edit_roles' => $form_state['values']['element_edit_roles'], + 'selector' => $form_state['values']['selector'], + ), + ); + + // Store values only if the condition requires them. + if ($form_state['values']['condition'] == 'value') { + + $dependency['options'] += array( + 'values_set' => $form_state['values']['values_set'], + // Raw user input is needed to build actual value conditions in the + // #states array, so we store it in 'value_form'. + 'value_form' => $form_state['input']['value']['field'][$dependee][LANGUAGE_NONE], + ); + + if ($dependency['options']['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) { + $value = array(); + field_default_extract_form_values(NULL, NULL, array('field_name' => $dependee), NULL, LANGUAGE_NONE, $value, $form['value']['field'], $form_state); + $dependency['options']['value'] = $value; + } + elseif ($dependency['options']['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX) { + // The regular expression is inserted in an associative array, so it will + // be converted to a Javascript object. + // In states_enhancements.js we will then use the "RegExp" key to + // distinguish the object and evaluate it as a regular expression. + $dependency['options']['value'] = array('RegExp' => $form_state['values']['regex']); + } + else { + $values = explode("\n", $form_state['values']['values']); + $values = array_map('trim', $values); + $values = array_filter($values, 'strlen'); + $dependency['options']['values'] = $values; + } + } + + conditional_fields_dependency_update($dependency); + drupal_set_message(t('Saved dependency configuration.')); +} + +/** + * Ajax callback for effects list. + */ +function conditional_fields_ajax_admin_state_callback($form, &$form_state) { + return $form['entity_edit']['effects_wrapper']; +} + +/** + * Confirm form for the deletion of a dependency. + */ +function conditional_fields_dependency_delete_form($form, $form_state, $dependency) { + $destination = drupal_get_destination(); + + return confirm_form( + array( + 'dependency' => array( + '#type' => 'value', + '#value' => $dependency['id'], + ), + ), + t('Are you sure you want to delete this dependency?'), + $destination['destination'], + t('This action cannot be undone.'), + t('Delete dependency'), + t('Cancel') + ); +} + +/** + * Confirm form submit for the deletion of a dependency. + */ +function conditional_fields_dependency_delete_form_submit($form, &$form_state) { + conditional_fields_dependency_delete(array($form_state['values']['dependency'])); + drupal_set_message(t('The dependency has been deleted.')); +} + +/** + * Uasort callback; sorts dependencies by group operator and dependee name. + */ +function _conditional_fields_sort_dependees($a, $b) { + if ($a['options']['grouping'] == $b['options']['grouping']) { + return strcasecmp($a['dependee'], $b['dependee']); + } + return strcasecmp($a['options']['grouping'], $b['options']['grouping']); +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.features.inc b/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.features.inc new file mode 100644 index 00000000..a8504f4d --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/includes/conditional_fields.features.inc @@ -0,0 +1,120 @@ +<?php +/** + * @file + * Features integration hooks. + */ + +/** + * Implements hook_features_export_options(). + */ +function conditional_fields_features_export_options() { + $dependencies = conditional_fields_load_dependencies(); + $entity_info = entity_get_info(); + $options = array(); + foreach ($dependencies as $type => $data) { + foreach ($data as $dependency => $info) { + $option = $type . ':' . $dependency; + if (!isset($options[$dependency])) { + $options[$option] = $entity_info[$type]['bundles'][$dependency]['label'] . ' (' . $type . ')'; + } + } + } + return $options; +} + +/** + * Implements hook_features_export(). + */ +function conditional_fields_features_export($data, &$export, $module_name = '') { + $export['dependencies']['conditional_fields'] = 'conditional_fields'; + + foreach ($data as $entity) { + $export['features']['conditional_fields'][$entity] = $entity; + } +} + +/** + * Implements hook_features_export_render(). + */ +function conditional_fields_features_export_render($module_name, $data, $export = NULL) { + $dependencies = conditional_fields_load_dependencies(); + if (empty($dependencies)) { + return array(); + } + + $code = array(); + foreach ($data as $option) { + $tokens = explode(':', $option); + $entity = $tokens[0]; + $bundle = $tokens[1]; + + if (isset($dependencies[$entity]) && isset($dependencies[$entity][$bundle])) { + $info = $dependencies[$entity][$bundle]; + foreach ($info['dependents'] as $dependent_field_name => $dependees) { + foreach ($dependees as $dependee) { + $code[] = ''; + $code[] = ' $items[] = array('; + $code[] = " 'entity' => '" . $entity . "',"; + $code[] = " 'bundle' => '" . $bundle . "',"; + $code[] = " 'dependent' => '" . $dependent_field_name . "',"; + $code[] = " 'dependee' => '" . $dependee['dependee'] . "',"; + + $code[] = " 'options' => " . features_var_export($dependee['options'], ' ') . ','; + $code[] = ' );'; + } + } + } + } + if (empty($code)) { + return array(); + } + + array_unshift($code, ' $items = array();'); + $code[] = ''; + $code[] = ' return $items;'; + $output = implode("\n", $code); + + return array('conditional_fields_default_fields' => $output); +} + +/** + * Implements hook_features_rebuild(). + */ +function conditional_fields_features_rebuild($module) { + $defaults = module_invoke($module, 'conditional_fields_default_fields'); + + $dependencies = conditional_fields_load_dependencies(); + $instances = field_info_instances(); + + if (!empty($defaults)) { + $node_types = array(); + foreach ($defaults as $field) { + if (isset($dependencies[$field['entity']][$field['bundle']])) { + foreach ($dependencies[$field['entity']][$field['bundle']] as $dependancy_type => $field_dep_settings) { + if ($dependancy_type == 'dependees' && !empty($field_dep_settings)) { + foreach ($field_dep_settings as $dep_setting) { + foreach ($dep_setting as $id => $dep_settings) { + $deps_to_remove[$id] = $id; + } + } + } + } + if (!empty($deps_to_remove)) { + conditional_fields_dependency_delete($deps_to_remove); + } + } + $entity_instances = $instances[$field['entity']][$field['bundle']]; + $dependee_id = $entity_instances[$field['dependee']]['id']; + $dependent_id = $entity_instances[$field['dependent']]['id']; + $options = $field['options']; + conditional_fields_dependency_insert($dependee_id, $dependent_id, $options); + } + } +} + +/** + * Implements hook_features_revert(). + */ +function conditional_fields_features_revert($module) { + return conditional_fields_features_rebuild($module); +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/js/conditional_fields.js b/profiles/wcm_base/modules/contrib/conditional_fields/js/conditional_fields.js new file mode 100644 index 00000000..fafbeb77 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/js/conditional_fields.js @@ -0,0 +1,141 @@ +(function ($) { + +/** + * Enhancements to states.js. + */ + +/** + * Handle array values. + * @see http://drupal.org/node/1149078 + */ +Drupal.states.Dependent.comparisons['Array'] = function (reference, value) { + // Make sure value is an array. + if (!(typeof(value) === 'object' && (value instanceof Array))) { + return false; + } + // We iterate through each value provided in the reference. If all of them + // exist in value array, we return true. Otherwise return false. + for (var key in reference) { + if (reference.hasOwnProperty(key) && $.inArray(reference[key], value) < 0) { + return false; + } + } + return true; +}; + +/** + * Handle Object values. + */ +Drupal.states.Dependent.comparisons['Object'] = function (reference, value) { + /* Regular expressions are objects with a RegExp property. */ + if (reference.hasOwnProperty('RegExp')) { + reference = new RegExp(reference.RegExp); + return this.RegExp(reference, value); + } + else { + return compare(reference, value); + } +}; + +/** + * Focused condition. + */ +Drupal.states.Trigger.states.focused = function(element) { + element.bind('focus', function () { + element.trigger({ type: 'state:focused', value: true }); + }) + .bind('blur', function () { + element.trigger({ type: 'state:focused', value: false }); + }); + + Drupal.states.postponed.push($.proxy(function () { + element.trigger({ type: 'state:focused', value: element.is(':focus') }); + }, window)); +}; + +/** + * Touched condition. + */ +Drupal.states.Trigger.states.touched = { + 'focus': function(e) { + return (typeof e === 'undefined' && !this.is(':focus')) ? false : true; + } +}; + +/** + * New and existing states enhanced with configurable options. + * Event names of states with effects have the following structure: + * state:stateName-effectName. + */ + +// Visible/Invisible. +$(document).bind('state:visible-fade', function(e) { + if (e.trigger) { + $(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'fadeIn' : 'fadeOut'](e.effect.speed); + } +}) +.bind('state:visible-slide', function(e) { + if (e.trigger) { + $(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed); + } +}) +// Empty/Filled. +.bind('state:empty-empty', function(e) { + if (e.trigger) { + var field = $(e.target).find('input, select, textarea'); + if (e.effect.reset) { + if (typeof oldValue == 'undefined' || field.val() !== e.effect.value) { + oldValue = field.val(); + } + field.val(e.value ? e.effect.value : oldValue); + } + else if (e.value) { + field.val(e.effect.value); + } + } +}) +.bind('state:empty-fill', function(e) { + if (e.trigger) { + var field = $(e.target).find('input, select, textarea'); + if (e.effect.reset) { + if (typeof oldValue === 'undefined' || field.val() !== e.effect.value) { + oldValue = field.val(); + } + field.val(!e.value ? e.effect.value : oldValue); + } + else if (!e.value) { + field.val(e.effect.value); + } + } +}) +// Unchanged state. Do nothing. +.bind('state:unchanged', function() {}); + +Drupal.behaviors.conditionalFields = { + attach: function (context, settings) { + // AJAX is not updating settings.conditionalFields correctly. + var conditionalFields = settings.conditionalFields || Drupal.settings.conditionalFields; + if (typeof conditionalFields === 'undefined' || typeof conditionalFields.effects === 'undefined') { + return; + } + // Override state change handlers for dependents with special effects. + $.each($(document).data('events'), function(i, events) { + if (i.substring(0, 6) === 'state:') { + var originalHandler = events[0].handler; + events[0].handler = function(e) { + var effect = conditionalFields.effects['#' + e.target.id]; + if (typeof effect !== 'undefined') { + var effectEvent = i + '-' + effect.effect; + if (typeof $(document).data('events')[effectEvent] !== 'undefined') { + $(e.target).trigger({ type : effectEvent, trigger : e.trigger, value : e.value, effect : effect.options }); + return; + } + } + originalHandler(e); + } + } + }); + } +}; + +})(jQuery); diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/js/states.js b/profiles/wcm_base/modules/contrib/conditional_fields/js/states.js new file mode 100644 index 00000000..f21e8202 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/js/states.js @@ -0,0 +1,543 @@ +(function ($) { + +/** + * The base States namespace. + * + * Having the local states variable allows us to use the States namespace + * without having to always declare "Drupal.states". + */ +var states = Drupal.states = { + // An array of functions that should be postponed. + postponed: [] +}; + +/** + * Attaches the states. + */ +Drupal.behaviors.states = { + attach: function (context, settings) { + for (var selector in settings.states) { + for (var state in settings.states[selector]) { + new states.Dependent({ + element: $(selector), + state: states.State.sanitize(state), + constraints: settings.states[selector][state] + }); + } + } + + // Execute all postponed functions now. + while (states.postponed.length) { + (states.postponed.shift())(); + } + } +}; + +/** + * Object representing an element that depends on other elements. + * + * @param args + * Object with the following keys (all of which are required): + * - element: A jQuery object of the dependent element + * - state: A State object describing the state that is dependent + * - constraints: An object with dependency specifications. Lists all elements + * that this element depends on. It can be nested and can contain arbitrary + * AND and OR clauses. + */ +states.Dependent = function (args) { + $.extend(this, { values: {}, oldValue: null }, args); + + this.dependees = this.getDependees(); + for (var selector in this.dependees) { + this.initializeDependee(selector, this.dependees[selector]); + } +}; + +/** + * Comparison functions for comparing the value of an element with the + * specification from the dependency settings. If the object type can't be + * found in this list, the === operator is used by default. + */ +states.Dependent.comparisons = { + 'RegExp': function (reference, value) { + return reference.test(value); + }, + 'Function': function (reference, value) { + // The "reference" variable is a comparison function. + return reference(value); + }, + 'Number': function (reference, value) { + // If "reference" is a number and "value" is a string, then cast reference + // as a string before applying the strict comparison in compare(). Otherwise + // numeric keys in the form's #states array fail to match string values + // returned from jQuery's val(). + return (typeof value === 'string') ? compare(reference.toString(), value) : compare(reference, value); + } +}; + +states.Dependent.prototype = { + /** + * Initializes one of the elements this dependent depends on. + * + * @param selector + * The CSS selector describing the dependee. + * @param dependeeStates + * The list of states that have to be monitored for tracking the + * dependee's compliance status. + */ + initializeDependee: function (selector, dependeeStates) { + var state; + + // Cache for the states of this dependee. + this.values[selector] = {}; + + for (var i in dependeeStates) { + if (dependeeStates.hasOwnProperty(i)) { + state = dependeeStates[i]; + // Make sure we're not initializing this selector/state combination twice. + if ($.inArray(state, dependeeStates) === -1) { + continue; + } + + state = states.State.sanitize(state); + + // Initialize the value of this state. + this.values[selector][state.name] = null; + + // Monitor state changes of the specified state for this dependee. + $(selector).bind('state:' + state, $.proxy(function (e) { + this.update(selector, state, e.value); + }, this)); + + // Make sure the event we just bound ourselves to is actually fired. + new states.Trigger({ selector: selector, state: state }); + } + } + }, + + /** + * Compares a value with a reference value. + * + * @param reference + * The value used for reference. + * @param selector + * CSS selector describing the dependee. + * @param state + * A State object describing the dependee's updated state. + * + * @return + * true or false. + */ + compare: function (reference, selector, state) { + var value = this.values[selector][state.name]; + if (reference.constructor.name in states.Dependent.comparisons) { + // Use a custom compare function for certain reference value types. + return states.Dependent.comparisons[reference.constructor.name](reference, value); + } + else { + // Do a plain comparison otherwise. + return compare(reference, value); + } + }, + + /** + * Update the value of a dependee's state. + * + * @param selector + * CSS selector describing the dependee. + * @param state + * A State object describing the dependee's updated state. + * @param value + * The new value for the dependee's updated state. + */ + update: function (selector, state, value) { + // Only act when the 'new' value is actually new. + if (value !== this.values[selector][state.name]) { + this.values[selector][state.name] = value; + this.reevaluate(); + } + }, + + /** + * Triggers change events in case a state changed. + */ + reevaluate: function () { + // Check whether any constraint for this dependent state is satisifed. + var value = this.verifyConstraints(this.constraints); + + // Only invoke a state change event when the value actually changed. + if (value !== this.oldValue) { + // Store the new value so that we can compare later whether the value + // actually changed. + this.oldValue = value; + + // Normalize the value to match the normalized state name. + value = invert(value, this.state.invert); + + // By adding "trigger: true", we ensure that state changes don't go into + // infinite loops. + this.element.trigger({ type: 'state:' + this.state, value: value, trigger: true }); + } + }, + + /** + * Evaluates child constraints to determine if a constraint is satisfied. + * + * @param constraints + * A constraint object or an array of constraints. + * @param selector + * The selector for these constraints. If undefined, there isn't yet a + * selector that these constraints apply to. In that case, the keys of the + * object are interpreted as the selector if encountered. + * + * @return + * true or false, depending on whether these constraints are satisfied. + */ + verifyConstraints: function(constraints, selector) { + var result; + if ($.isArray(constraints)) { + // This constraint is an array (OR or XOR). + var hasXor = $.inArray('xor', constraints) === -1; + for (var i = 0, len = constraints.length; i < len; i++) { + if (constraints[i] != 'xor') { + var constraint = this.checkConstraints(constraints[i], selector, i); + // Return if this is OR and we have a satisfied constraint or if this + // is XOR and we have a second satisfied constraint. + if (constraint && (hasXor || result)) { + return hasXor; + } + result = result || constraint; + } + } + } + // Make sure we don't try to iterate over things other than objects. This + // shouldn't normally occur, but in case the condition definition is bogus, + // we don't want to end up with an infinite loop. + else if ($.isPlainObject(constraints)) { + // This constraint is an object (AND). + for (var n in constraints) { + if (constraints.hasOwnProperty(n)) { + result = ternary(result, this.checkConstraints(constraints[n], selector, n)); + // False and anything else will evaluate to false, so return when any + // false condition is found. + if (result === false) { return false; } + } + } + } + return result; + }, + + /** + * Checks whether the value matches the requirements for this constraint. + * + * @param value + * Either the value of a state or an array/object of constraints. In the + * latter case, resolving the constraint continues. + * @param selector + * The selector for this constraint. If undefined, there isn't yet a + * selector that this constraint applies to. In that case, the state key is + * propagates to a selector and resolving continues. + * @param state + * The state to check for this constraint. If undefined, resolving + * continues. + * If both selector and state aren't undefined and valid non-numeric + * strings, a lookup for the actual value of that selector's state is + * performed. This parameter is not a State object but a pristine state + * string. + * + * @return + * true or false, depending on whether this constraint is satisfied. + */ + checkConstraints: function(value, selector, state) { + // Normalize the last parameter. If it's non-numeric, we treat it either as + // a selector (in case there isn't one yet) or as a trigger/state. + if (typeof state !== 'string' || (/[0-9]/).test(state[0])) { + state = null; + } + else if (typeof selector === 'undefined') { + // Propagate the state to the selector when there isn't one yet. + selector = state; + state = null; + } + + if (state !== null) { + // constraints is the actual constraints of an element to check for. + state = states.State.sanitize(state); + return invert(this.compare(value, selector, state), state.invert); + } + else { + // Resolve this constraint as an AND/OR operator. + return this.verifyConstraints(value, selector); + } + }, + + /** + * Gathers information about all required triggers. + */ + getDependees: function() { + var cache = {}; + // Swivel the lookup function so that we can record all available selector- + // state combinations for initialization. + var _compare = this.compare; + this.compare = function(reference, selector, state) { + (cache[selector] || (cache[selector] = [])).push(state.name); + // Return nothing (=== undefined) so that the constraint loops are not + // broken. + }; + + // This call doesn't actually verify anything but uses the resolving + // mechanism to go through the constraints array, trying to look up each + // value. Since we swivelled the compare function, this comparison returns + // undefined and lookup continues until the very end. Instead of lookup up + // the value, we record that combination of selector and state so that we + // can initialize all triggers. + this.verifyConstraints(this.constraints); + // Restore the original function. + this.compare = _compare; + + return cache; + } +}; + +states.Trigger = function (args) { + $.extend(this, args); + + if (this.state in states.Trigger.states) { + this.element = $(this.selector); + + // Only call the trigger initializer when it wasn't yet attached to this + // element. Otherwise we'd end up with duplicate events. + if (!this.element.data('trigger:' + this.state)) { + this.initialize(); + } + } +}; + +states.Trigger.prototype = { + initialize: function () { + var trigger = states.Trigger.states[this.state]; + + if (typeof trigger == 'function') { + // We have a custom trigger initialization function. + trigger.call(window, this.element); + } + else { + for (var event in trigger) { + if (trigger.hasOwnProperty(event)) { + this.defaultTrigger(event, trigger[event]); + } + } + } + + // Mark this trigger as initialized for this element. + this.element.data('trigger:' + this.state, true); + }, + + defaultTrigger: function (event, valueFn) { + var oldValue = valueFn.call(this.element); + + // Attach the event callback. + this.element.bind(event, $.proxy(function (e) { + var value = valueFn.call(this.element, e); + // Only trigger the event if the value has actually changed. + if (oldValue !== value) { + this.element.trigger({ type: 'state:' + this.state, value: value, oldValue: oldValue }); + oldValue = value; + } + }, this)); + + states.postponed.push($.proxy(function () { + // Trigger the event once for initialization purposes. + this.element.trigger({ type: 'state:' + this.state, value: oldValue, oldValue: null }); + }, this)); + } +}; + +/** + * This list of states contains functions that are used to monitor the state + * of an element. Whenever an element depends on the state of another element, + * one of these trigger functions is added to the dependee so that the + * dependent element can be updated. + */ +states.Trigger.states = { + // 'empty' describes the state to be monitored + empty: { + // 'keyup' is the (native DOM) event that we watch for. + 'keyup': function () { + // The function associated to that trigger returns the new value for the + // state. + return this.val() == ''; + } + }, + + checked: { + 'change': function () { + return this.attr('checked'); + } + }, + + // For radio buttons, only return the value if the radio button is selected. + value: { + 'keyup': function () { + // Radio buttons share the same :input[name="key"] selector. + if (this.length > 1) { + // Initial checked value of radios is undefined, so we return false. + return this.filter(':checked').val() || false; + } + return this.val(); + }, + 'change': function () { + // Radio buttons share the same :input[name="key"] selector. + if (this.length > 1) { + // Initial checked value of radios is undefined, so we return false. + return this.filter(':checked').val() || false; + } + return this.val(); + } + }, + + collapsed: { + 'collapsed': function(e) { + return (typeof e !== 'undefined' && 'value' in e) ? e.value : this.is('.collapsed'); + } + } +}; + + +/** + * A state object is used for describing the state and performing aliasing. + */ +states.State = function(state) { + // We may need the original unresolved name later. + this.pristine = this.name = state; + + // Normalize the state name. + while (true) { + // Iteratively remove exclamation marks and invert the value. + while (this.name.charAt(0) == '!') { + this.name = this.name.substring(1); + this.invert = !this.invert; + } + + // Replace the state with its normalized name. + if (this.name in states.State.aliases) { + this.name = states.State.aliases[this.name]; + } + else { + break; + } + } +}; + +/** + * Creates a new State object by sanitizing the passed value. + */ +states.State.sanitize = function (state) { + if (state instanceof states.State) { + return state; + } + else { + return new states.State(state); + } +}; + +/** + * This list of aliases is used to normalize states and associates negated names + * with their respective inverse state. + */ +states.State.aliases = { + 'enabled': '!disabled', + 'invisible': '!visible', + 'invalid': '!valid', + 'untouched': '!touched', + 'optional': '!required', + 'filled': '!empty', + 'unchecked': '!checked', + 'irrelevant': '!relevant', + 'expanded': '!collapsed', + 'readwrite': '!readonly' +}; + +states.State.prototype = { + invert: false, + + /** + * Ensures that just using the state object returns the name. + */ + toString: function() { + return this.name; + } +}; + +/** + * Global state change handlers. These are bound to "document" to cover all + * elements whose state changes. Events sent to elements within the page + * bubble up to these handlers. We use this system so that themes and modules + * can override these state change handlers for particular parts of a page. + */ +$(document).bind('state:disabled', function(e) { + // Only act when this change was triggered by a dependency and not by the + // element monitoring itself. + if (e.trigger) { + $(e.target) + .attr('disabled', e.value) + .filter('.form-element') + .closest('.form-item, .form-submit, .form-wrapper').toggleClass('form-disabled', e.value); + + // Note: WebKit nightlies don't reflect that change correctly. + // See https://bugs.webkit.org/show_bug.cgi?id=23789 + } +}); + +$(document).bind('state:required', function(e) { + if (e.trigger) { + if (e.value) { + $(e.target).closest('.form-item, .form-wrapper').find('label').append('<span class="form-required">*</span>'); + } + else { + $(e.target).closest('.form-item, .form-wrapper').find('label .form-required').remove(); + } + } +}); + +$(document).bind('state:visible', function(e) { + if (e.trigger) { + $(e.target).closest('.form-item, .form-submit, .form-wrapper').toggle(e.value); + } +}); + +$(document).bind('state:checked', function(e) { + if (e.trigger) { + $(e.target).attr('checked', e.value); + } +}); + +$(document).bind('state:collapsed', function(e) { + if (e.trigger) { + if ($(e.target).is('.collapsed') !== e.value) { + $('> legend a', e.target).click(); + } + } +}); + +/** + * These are helper functions implementing addition "operators" and don't + * implement any logic that is particular to states. + */ + +// Bitwise AND with a third undefined state. +function ternary (a, b) { + return typeof a === 'undefined' ? b : (typeof b === 'undefined' ? a : a && b); +} + +// Inverts a (if it's not undefined) when invert is true. +function invert (a, invert) { + return (invert && typeof a !== 'undefined') ? !a : a; +} + +// Compares two values while ignoring undefined values. +function compare (a, b) { + return (a === b) ? (typeof a === 'undefined' ? a : true) : (typeof a === 'undefined' || typeof b === 'undefined'); +} + +})(jQuery); diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields.test b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields.test new file mode 100644 index 00000000..5d448dd6 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields.test @@ -0,0 +1,323 @@ +<?php + +/** + * @file + * Test Conditional Fields functionality and UI. + */ + +class ConditionalFieldsTestCase extends DrupalWebTestCase { + protected $dependee_on_value; + protected $dependee_off_value; + protected $dependents; + + public static function getInfo() { + return array( + 'name' => 'Conditional Fields', + 'description' => 'Test Conditional Fields functionality.', + 'group' => 'Conditional Fields', + ); + } + + public function setUp() { + // Load all core modules that define field types. + parent::setUp('conditional_fields_test', 'list', 'text', 'number', 'taxonomy', 'image'); + + // Create and log in user. + $web_user = $this->drupalCreateUser(array('create conditional_fields_test content', 'edit any conditional_fields_test content')); + $this->drupalLogin($web_user); + + // Create a vocabulary and two terms to test the term reference field. + $vocabulary = new stdClass(); + $vocabulary->name = $this->randomName(); + $vocabulary->machine_name = drupal_strtolower($this->randomName()); + taxonomy_vocabulary_save($vocabulary); + $term = new stdClass(); + $term->name = 'Foo'; + $term->vid = $vocabulary->vid; + taxonomy_term_save($term); + $term = new stdClass(); + $term->name = 'Bar'; + $term->vid = $vocabulary->vid; + taxonomy_term_save($term); + + // Create dependee. + $this->dependee_on_value = $this->randomString(); + $this->dependee_off_value = $this->randomString(); + $dependee = array( + 'field_name' => 'dependee', + 'type' => 'list_text', + 'settings' => array( + 'allowed_values' => array($this->dependee_on_value => t('Dependent fields are visible'), $this->dependee_off_value => t('Dependent fields are invisible')), + ), + ); + field_create_field($dependee); + $dependee_instance = array( + 'field_name' => 'dependee', + 'entity_type' => 'node', + 'bundle' => 'conditional_fields_test', + 'label' => 'dependee_label', + ); + field_create_instance($dependee_instance); + // Reload the instance because we need the instance id. + $dependee_instance = field_info_instance('node', 'dependee', 'conditional_fields_test'); + + // Prepare one field for each widget type/field type combination. + foreach (field_info_widget_types() as $widget_type => $widget_info) { + // TODO: test files and images. + if ($widget_type == 'file_generic' || $widget_type == 'image_image') { + continue; + } + foreach ($widget_info['field types'] as $field_type) { + $field_name = 'dependent_' . drupal_strtolower($this->randomName()); + $dependent = array( + 'field_name' => $field_name, + 'type' => $field_type, + 'cardinality' => 1, + ); + + // Some fields need allowed values to function properly. + if ($widget_info['module'] == 'options') { + $dependent['settings']['allowed_values'] = array('Foo', 'Bar'); + } + if ($field_type == 'taxonomy_term_reference') { + $dependent['settings']['allowed_values'] = array( + array( + 'vocabulary' => $vocabulary->machine_name, + 'parent' => '0', + ), + ); + } + + $dependent_instance = array( + 'field_name' => $field_name, + 'entity_type' => 'node', + 'bundle' => 'conditional_fields_test', + 'widget' => array( + 'type' => $widget_type, + 'settings' => array('display_label' => 1), // Used by boolean on/off checkbox. + ), + 'required' => TRUE, + 'label' => $widget_type . '_' . $field_type . '_label', + ); + + // Radios spit an error if submitted with no value. + if ($widget_type == 'options_buttons' && $widget_info['module'] == 'list') { + // This is the "Bar" option. + $dependent_instance['default_value'] = 1; + } + + $this->dependents[] = array( + 'field_type' => $field_type, + 'widget_type' => $widget_type, + 'widget' => $widget_info, + 'field' => $dependent, + 'instance' => $dependent_instance, + ); + + // Create a multiple value version of most fields. + if ($widget_type == 'options_onoff') { + continue; + } + $dependent['cardinality'] = -1; + $dependent['field_name'] = $dependent_instance['field_name'] = $field_name . '_multiple'; + $dependent_instance['label'] .= '_multiple'; + $this->dependents[] = array( + 'field_type' => $field_type, + 'widget_type' => $widget_type, + 'widget' => $widget_info, + 'field' => $dependent, + 'instance' => $dependent_instance, + ); + } + } + + // Create fields and dependencies. + $dependency_options = array( + 'value_form' => $this->dependee_on_value, + 'value' => array(array('value' => $this->dependee_on_value)), + ); + foreach ($this->dependents as $dependent) { + field_create_field($dependent['field']); + field_create_instance($dependent['instance']); + $dependent_instance = field_info_instance('node', $dependent['field']['field_name'], 'conditional_fields_test'); + conditional_fields_dependency_insert($dependee_instance['id'], $dependent_instance['id'], $dependency_options); + } + } + + /** + * Tests field dependencies on a node. + */ + public function testNodeDependencies() { + // Try to submit a node with triggered dependencies. + // The submit should fail because the dependent fields are required. + $langcode = LANGUAGE_NONE; + $edit = array( + "dependee[$langcode]" => $this->dependee_on_value, + ); + $this->drupalPost('node/add/conditional-fields-test', $edit, t('Save')); + + foreach ($this->dependents as $dependent) { + // Skip fields that always have a default value. + if (($dependent['widget_type'] == 'options_buttons' && $dependent['field']['cardinality'] == 1) || (in_array($dependent['widget_type'], array('options_select', 'options_buttons')) && $dependent['field_type'] == 'taxonomy_term_reference')) { + continue; + } + // Multiple value textfields are dumb and can't find their own name. + if ($dependent['field']['cardinality'] == -1 && in_array($dependent['widget_type'], array('number', 'text_textfield', 'text_textarea', 'text_textarea_with_summary'))) { + $name = ''; + } + else { + $name = $dependent['widget_type'] . '_' . $dependent['field_type'] . '_label'; + $name .= $dependent['field']['cardinality'] == -1 ? '_multiple' : ''; + } + $this->assertRaw(t('!name field is required.', array('!name' => $name)), 'Triggered ' . ($dependent['field']['cardinality'] == -1 ? 'multiple' : 'single') . ' value required ' . $dependent['field_type'] . ' dependent with widget ' . $dependent['widget_type'] . ' and no value fails validation'); + } + + // Fill the dependents with values and save the node. + $edit = array( + "dependee[$langcode]" => $this->dependee_on_value, + ); + foreach ($this->dependents as $dependent) { + // Text fields have structure field_name[langcode][delta][value]. + if (in_array($dependent['widget_type'], array('number', 'text_textfield', 'text_textarea', 'text_textarea_with_summary'))) { + $edit[$dependent['field']['field_name'] . "[$langcode][0][value]"] = '1'; + } + elseif ($dependent['widget_type'] == 'options_select') { + if ($dependent['field']['cardinality'] == 1) { + // Single value select fields have structure field_name[langcode]. + $edit[$dependent['field']['field_name'] . "[$langcode]"] = '1'; + } + else { + // Multiple value select fields have structure field_name[langcode][]. + $edit[$dependent['field']['field_name'] . "[$langcode][]"] = '1'; + } + } + elseif (in_array($dependent['widget_type'], array('options_buttons', 'options_onoff', 'taxonomy_autocomplete'))) { + if ($dependent['field']['cardinality'] == 1 || $dependent['widget_type'] == 'taxonomy_autocomplete') { + // Radios and autocomplete fields have structure field_name[langcode]. + $edit[$dependent['field']['field_name'] . "[$langcode]"] = '1'; + } + else { + // Checkboxes have structure field_name[langcode][delta]. + $edit[$dependent['field']['field_name'] . "[$langcode][1]"] = '1'; + } + } + elseif (in_array($dependent['widget_type'], array('file_generic', 'image_image'))) { + // TODO. + // $edit[$dependent['field']['field_name'] . "[$langcode][0][fid]"] = '1'; + } + } + $this->drupalPost('node/add/conditional-fields-test', $edit, t('Save')); + $this->assertRaw(t('@type %title has been created.', array('@type' => 'Conditional Fields Test Node Type', '%title' => '')), 'Node was created with triggered dependencies.'); + // Verify that the fields are visible on node view. + foreach ($this->dependents as $dependent) { + $this->assertText($dependent['instance']['label'] . ':', 'Triggered ' . ($dependent['field']['cardinality'] == -1 ? 'multiple' : 'single') . ' value ' . $dependent['field_type'] . ' dependent with widget ' . $dependent['widget_type'] . ' is visible on node view'); + } + + // Untrigger the dependency and verify that node is updated. + $edit = array( + "dependee[$langcode]" => $this->dependee_off_value, + ); + $this->drupalPost('node/1/edit', $edit, t('Save')); + $this->assertRaw(t('@type %title has been updated.', array('@type' => 'Conditional Fields Test Node Type', '%title' => '')), 'Node was updated with untriggered dependencies.'); + // Verify that fields are invisible on node view. + foreach ($this->dependents as $dependent) { + $this->assertNoText($dependent['instance']['label'] . ':', 'Triggered ' . ($dependent['field']['cardinality'] == -1 ? 'multiple' : 'single') . ' value ' . $dependent['field_type'] . ' dependent with widget ' . $dependent['widget_type'] . ' is invisible on node view'); + } + } +} + +class ConditionalFieldsUITestCase extends DrupalWebTestCase { + + public static function getInfo() { + return array( + 'name' => 'Conditional Fields UI', + 'description' => 'Test Conditional Fields UI.', + 'group' => 'Conditional Fields', + ); + } + + public function setUp() { + parent::setUp('conditional_fields_test', 'list', 'text'); + + // Create and log in user. + $web_user = $this->drupalCreateUser(array('access administration pages', 'administer content types', 'administer dependencies')); + $this->drupalLogin($web_user); + + // Create a field that will be used as a dependee. + $dependee = array( + 'field_name' => 'dependee', + 'type' => 'list_text', + 'settings' => array( + 'allowed_values' => array('on' => t('Dependent is visible'), 'off' => t('Dependent is invisible')), + ), + ); + field_create_field($dependee); + $instance = array( + 'field_name' => 'dependee', + 'entity_type' => 'node', + 'bundle' => 'conditional_fields_test', + 'label' => t('Label of the dependee field'), + ); + field_create_instance($instance); + + // Create a field that will be used as a dependent. + $dependent = array( + 'field_name' => 'dependent', + 'type' => 'text', + ); + field_create_field($dependent); + $instance = array( + 'field_name' => 'dependent', + 'entity_type' => 'node', + 'bundle' => 'conditional_fields_test', + 'label' => t('Label of the dependent field'), + ); + field_create_instance($instance); + } + + /** + * Ensures that the administration pages are viewable. + */ + public function testDependenciesOverview() { + $dependee = field_read_instance('node', 'dependee', 'conditional_fields_test'); + $this->drupalGet('admin/structure'); + $this->clickLink(t('Field dependencies')); + $this->clickLink(t('Node')); + $this->drupalGet('admin/structure/types/manage/conditional-fields-test'); + $this->clickLink(t('Manage dependencies')); + $this->assertFieldByName('dependee', $dependee['id'], 'The dependee selection field is in the content type dependencies page.'); + $this->assertFieldByName('dependent', $dependee['id'], 'The dependent selection field is in the content type dependencies page.'); + } + + /** + * Tests adding, editing and deleting a dependency. + */ + public function testDependencyOperations() { + // Add dependency. + $dependee = field_read_instance('node', 'dependee', 'conditional_fields_test'); + $dependent = field_read_instance('node', 'dependent', 'conditional_fields_test'); + $edit = array( + 'dependee' => $dependee['id'], + 'dependent' => $dependent['id'], + ); + $this->drupalPost('admin/structure/types/manage/conditional-fields-test/dependencies', $edit, t('Add dependency'), array(), array(), 'conditional-fields-dependency-add-form-node-conditional-fields-test'); + + // Edit dependency. + $edit = array( + 'values_set' => CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND, + 'values' => 'on', + ); + $this->drupalPost(NULL, $edit, t('Save settings'), array('query' => array('destination' => 'admin/structure/types/manage/conditional-fields-test/dependencies'))); + $this->assertRaw(t('%dependent_name is !state when %dependee_name has all the values: @values.', array( + '%dependent_name' => t('Label of the dependent field'), + '!state' => 'visible', + '%dependee_name' => t('Label of the dependee field'), + '@values' => 'on', + )), 'The dependency was updated correctly.'); + + // Delete dependency. + $this->clickLink(t('delete')); + $this->drupalPost(NULL, array(), t('Delete dependency'), array('query' => array('destination' => 'admin/structure/types/manage/conditional-fields-test/dependencies'))); + $this->assertText(t('The dependency has been deleted.')); + } +} diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.info b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.info new file mode 100644 index 00000000..88dd34f4 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.info @@ -0,0 +1,14 @@ +name = Conditional Fields test +description = Provides hooks for testing Conditional Fields. +package = Fields +core = 7.x +dependencies[] = conditional_fields +files[] = conditional_fields.test +hidden = TRUE + +; Information added by packaging script on 2013-11-18 +version = "7.x-3.0-alpha1" +core = "7.x" +project = "conditional_fields" +datestamp = "1384798705" + diff --git a/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.module b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.module new file mode 100644 index 00000000..139ca8b6 --- /dev/null +++ b/profiles/wcm_base/modules/contrib/conditional_fields/tests/conditional_fields_test.module @@ -0,0 +1,18 @@ +<?php +/** + * @file + * Test Conditional Fields functionality. + */ + +/** + * Implements hook_node_info(). + */ +function conditional_fields_test_node_info() { + return array( + 'conditional_fields_test' => array( + 'name' => t('Conditional Fields Test Node Type'), + 'module' => 'conditional_fields_test', + 'base' => 'conditional_fields_test', + ), + ); +} \ No newline at end of file diff --git a/profiles/wcm_base/modules/custom/mm/mm.module b/profiles/wcm_base/modules/custom/mm/mm.module index 5bd70ed0..96cc3c8b 100644 --- a/profiles/wcm_base/modules/custom/mm/mm.module +++ b/profiles/wcm_base/modules/custom/mm/mm.module @@ -78,7 +78,7 @@ function _mm_add_query_params($url, $params=array()) { $has_query = parse_url($url, PHP_URL_QUERY); $separator = $has_query ? '&' : '?'; - $add_query = http_build_query($params, '', '&'); + $add_query = preg_replace('/(%5B|\[)[0-9]+(%5D|\])/s', '[]', http_build_query($params, '', '&')); return $url . $separator . $add_query; } diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.ds.inc b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.ds.inc index 88a91e4d..937ade57 100644 --- a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.ds.inc +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.ds.inc @@ -21,16 +21,16 @@ function ocio_landing_page_ds_layout_settings_info() { 'regions' => array( 'ds_hero' => array( 0 => 'field_banner_image', + 1 => 'field_banner_image_text', ), 'ds_footer' => array( - 1 => 'field_pre_footer_banner_image', - 2 => 'field_footer_image', + 2 => 'field_pre_footer_banner_image', ), ), 'fields' => array( 'field_banner_image' => 'ds_hero', + 'field_banner_image_text' => 'ds_hero', 'field_pre_footer_banner_image' => 'ds_footer', - 'field_footer_image' => 'ds_footer', ), 'classes' => array(), 'wrappers' => array( diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.conditional_fields.inc b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.conditional_fields.inc new file mode 100644 index 00000000..7e3dc847 --- /dev/null +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.conditional_fields.inc @@ -0,0 +1,353 @@ +<?php +/** + * @file + * ocio_landing_page.features.conditional_fields.inc + */ + +/** + * Implements hook_conditional_fields_default_fields(). + */ +function ocio_landing_page_conditional_fields_default_fields() { + $items = array(); + + $items[] = array( + 'entity' => 'node', + 'bundle' => 'ocio_landing_page', + 'dependent' => 'field_banner_image_text_location', + 'dependee' => 'field_banner_image_text', + 'options' => array( + 'state' => 'visible', + 'condition' => '!empty', + 'grouping' => 'AND', + 'effect' => 'show', + 'effect_options' => array(), + 'element_view' => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 'element_view_per_role' => 0, + 'element_view_roles' => array( + 1 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 2 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 5 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 4 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 7 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 6 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 3 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + ), + 'element_edit' => array( + 1 => 1, + 3 => 0, + ), + 'element_edit_per_role' => 0, + 'element_edit_roles' => array( + 1 => array( + 1 => 1, + 3 => 0, + ), + 2 => array( + 1 => 1, + 3 => 0, + ), + 5 => array( + 1 => 1, + 3 => 0, + ), + 4 => array( + 1 => 1, + 3 => 0, + ), + 7 => array( + 1 => 1, + 3 => 0, + ), + 6 => array( + 1 => 1, + 3 => 0, + ), + 3 => array( + 1 => 1, + 3 => 0, + ), + ), + 'selector' => '', + 'values_set' => 1, + 'value' => array(), + 'values' => array(), + 'value_form' => array(), + ), + ); + + $items[] = array( + 'entity' => 'node', + 'bundle' => 'ocio_landing_page', + 'dependent' => 'field_banner_image_text_color', + 'dependee' => 'field_banner_image_text', + 'options' => array( + 'state' => 'visible', + 'condition' => '!empty', + 'grouping' => 'AND', + 'effect' => 'show', + 'effect_options' => array(), + 'element_view' => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 'element_view_per_role' => 0, + 'element_view_roles' => array( + 1 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 2 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 5 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 4 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 7 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 6 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 3 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + ), + 'element_edit' => array( + 1 => 1, + 3 => 0, + ), + 'element_edit_per_role' => 0, + 'element_edit_roles' => array( + 1 => array( + 1 => 1, + 3 => 0, + ), + 2 => array( + 1 => 1, + 3 => 0, + ), + 5 => array( + 1 => 1, + 3 => 0, + ), + 4 => array( + 1 => 1, + 3 => 0, + ), + 7 => array( + 1 => 1, + 3 => 0, + ), + 6 => array( + 1 => 1, + 3 => 0, + ), + 3 => array( + 1 => 1, + 3 => 0, + ), + ), + 'selector' => '', + 'values_set' => 1, + 'value' => array(), + 'values' => array(), + 'value_form' => array(), + ), + ); + + $items[] = array( + 'entity' => 'node', + 'bundle' => 'ocio_landing_page', + 'dependent' => 'field_banner_image_text', + 'dependee' => 'field_banner_image', + 'options' => array( + 'state' => 'visible', + 'condition' => '!empty', + 'grouping' => 'AND', + 'effect' => 'show', + 'effect_options' => array(), + 'element_view' => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 'element_view_per_role' => 0, + 'element_view_roles' => array( + 1 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 2 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 5 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 4 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 7 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 6 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + 3 => array( + 1 => 1, + 2 => 2, + 5 => 0, + 3 => 0, + 4 => 0, + ), + ), + 'element_edit' => array( + 1 => 1, + 3 => 0, + ), + 'element_edit_per_role' => 0, + 'element_edit_roles' => array( + 1 => array( + 1 => 1, + 3 => 0, + ), + 2 => array( + 1 => 1, + 3 => 0, + ), + 5 => array( + 1 => 1, + 3 => 0, + ), + 4 => array( + 1 => 1, + 3 => 0, + ), + 7 => array( + 1 => 1, + 3 => 0, + ), + 6 => array( + 1 => 1, + 3 => 0, + ), + 3 => array( + 1 => 1, + 3 => 0, + ), + ), + 'selector' => '', + 'values_set' => 1, + 'value' => array(), + 'values' => array(), + 'value_form' => array(), + ), + ); + + return $items; +} diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_base.inc b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_base.inc index 8e743a40..5fbd3d15 100644 --- a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_base.inc +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_base.inc @@ -57,6 +57,79 @@ function ocio_landing_page_field_default_field_bases() { 'type' => 'image', ); + // Exported field_base: 'field_banner_image_text' + $field_bases['field_banner_image_text'] = array( + 'active' => 1, + 'cardinality' => 1, + 'deleted' => 0, + 'entity_types' => array(), + 'field_name' => 'field_banner_image_text', + 'indexes' => array( + 'format' => array( + 0 => 'format', + ), + ), + 'locked' => 0, + 'module' => 'text', + 'settings' => array( + 'max_length' => 120, + ), + 'translatable' => 0, + 'type' => 'text', + ); + + // Exported field_base: 'field_banner_image_text_color' + $field_bases['field_banner_image_text_color'] = array( + 'active' => 1, + 'cardinality' => 1, + 'deleted' => 0, + 'entity_types' => array(), + 'field_name' => 'field_banner_image_text_color', + 'indexes' => array( + 'value' => array( + 0 => 'value', + ), + ), + 'locked' => 0, + 'module' => 'list', + 'settings' => array( + 'allowed_values' => array( + 'white' => 'White', + 'dk-gray' => 'Dark Gray', + 'black' => 'Black', + ), + 'allowed_values_function' => '', + ), + 'translatable' => 0, + 'type' => 'list_text', + ); + + // Exported field_base: 'field_banner_image_text_location' + $field_bases['field_banner_image_text_location'] = array( + 'active' => 1, + 'cardinality' => 1, + 'deleted' => 0, + 'entity_types' => array(), + 'field_name' => 'field_banner_image_text_location', + 'indexes' => array( + 'value' => array( + 0 => 'value', + ), + ), + 'locked' => 0, + 'module' => 'list', + 'settings' => array( + 'allowed_values' => array( + 'center-top' => ' Center Top', + 'center-middle' => ' Center Middle', + 'center-bottom' => ' Center Bottom', + ), + 'allowed_values_function' => '', + ), + 'translatable' => 0, + 'type' => 'list_text', + ); + // Exported field_base: 'field_pre_footer_banner_image' $field_bases['field_pre_footer_banner_image'] = array( 'active' => 1, diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_instance.inc b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_instance.inc index cf507128..1069dbf4 100644 --- a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_instance.inc +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.features.field_instance.inc @@ -31,7 +31,7 @@ function ocio_landing_page_field_default_field_instances() { 'label' => 'above', 'settings' => array(), 'type' => 'hidden', - 'weight' => 12, + 'weight' => 15, ), ), 'ds_extras_field_template' => '', @@ -75,7 +75,7 @@ function ocio_landing_page_field_default_field_instances() { 'label' => 'above', 'settings' => array(), 'type' => 'hidden', - 'weight' => 11, + 'weight' => 14, ), ), 'ds_extras_field_template' => '', @@ -175,7 +175,138 @@ function ocio_landing_page_field_default_field_instances() { 'manualcrop_thumblist' => 0, ), 'type' => 'media_generic', - 'weight' => 2, + 'weight' => 3, + ), + ); + + // Exported field_instance: 'node-ocio_landing_page-field_banner_image_text' + $field_instances['node-ocio_landing_page-field_banner_image_text'] = array( + 'bundle' => 'ocio_landing_page', + 'default_value' => NULL, + 'deleted' => 0, + 'description' => 'OPTIONAL text that may be placed atop a banner image. ', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'module' => 'text', + 'settings' => array(), + 'type' => 'text_default', + 'weight' => 10, + ), + 'full' => array( + 'label' => 'hidden', + 'module' => 'text', + 'settings' => array(), + 'type' => 'text_plain', + 'weight' => 1, + ), + ), + 'ds_extras_field_template' => '', + 'entity_type' => 'node', + 'field_name' => 'field_banner_image_text', + 'label' => 'Banner Image Text', + 'required' => 0, + 'settings' => array( + 'linkit' => array( + 'button_text' => 'Search', + 'enable' => 0, + 'profile' => '', + ), + 'text_processing' => 0, + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'text', + 'settings' => array( + 'size' => 120, + ), + 'type' => 'text_textfield', + 'weight' => 4, + ), + ); + + // Exported field_instance: 'node-ocio_landing_page-field_banner_image_text_color' + $field_instances['node-ocio_landing_page-field_banner_image_text_color'] = array( + 'bundle' => 'ocio_landing_page', + 'default_value' => array( + 0 => array( + 'value' => 'white', + ), + ), + 'deleted' => 0, + 'description' => 'Choose the color that will be the most readable. ', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'module' => 'list', + 'settings' => array(), + 'type' => 'list_default', + 'weight' => 9, + ), + 'full' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 12, + ), + ), + 'ds_extras_field_template' => '', + 'entity_type' => 'node', + 'field_name' => 'field_banner_image_text_color', + 'label' => 'Banner Image Text Color', + 'required' => 0, + 'settings' => array( + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'options', + 'settings' => array(), + 'type' => 'options_select', + 'weight' => 6, + ), + ); + + // Exported field_instance: 'node-ocio_landing_page-field_banner_image_text_location' + $field_instances['node-ocio_landing_page-field_banner_image_text_location'] = array( + 'bundle' => 'ocio_landing_page', + 'default_value' => array( + 0 => array( + 'value' => 'center-top', + ), + ), + 'deleted' => 0, + 'description' => 'Choose the best position for the text based on your photo choice. ', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'module' => 'list', + 'settings' => array(), + 'type' => 'list_default', + 'weight' => 8, + ), + 'full' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 13, + ), + ), + 'ds_extras_field_template' => '', + 'entity_type' => 'node', + 'field_name' => 'field_banner_image_text_location', + 'label' => 'Banner Image Text Location', + 'required' => 0, + 'settings' => array( + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'options', + 'settings' => array(), + 'type' => 'options_select', + 'weight' => 5, ), ); @@ -200,7 +331,7 @@ function ocio_landing_page_field_default_field_instances() { 'label' => 'above', 'settings' => array(), 'type' => 'hidden', - 'weight' => 13, + 'weight' => 16, ), ), 'ds_extras_field_template' => '', @@ -243,7 +374,7 @@ function ocio_landing_page_field_default_field_instances() { 'label' => 'above', 'settings' => array(), 'type' => 'hidden', - 'weight' => 14, + 'weight' => 17, ), ), 'ds_extras_field_template' => '', @@ -289,7 +420,7 @@ function ocio_landing_page_field_default_field_instances() { 'image_style' => '', ), 'type' => 'image', - 'weight' => 1, + 'weight' => 3, ), ), 'ds_extras_field_template' => '', @@ -343,7 +474,7 @@ function ocio_landing_page_field_default_field_instances() { 'manualcrop_thumblist' => 0, ), 'type' => 'media_generic', - 'weight' => 3, + 'weight' => 4, ), ); @@ -352,10 +483,16 @@ function ocio_landing_page_field_default_field_instances() { t('Admin Lock'); t('Alternate Panel Rows'); t('Banner Image'); + t('Banner Image Text'); + t('Banner Image Text Color'); + t('Banner Image Text Location'); + t('Choose the best position for the text based on your photo choice. '); + t('Choose the color that will be the most readable. '); t('Disable Breadcrumbs'); t('Disable Title'); t('Full width banner image for top of page. Photos must be at least 2000px wide. Height can be anything 320px or taller. Crop to desired proportions before uploading the image. '); t('Full width banner image to be placed at the bottom of the content region, just above the footer. Photos must be at least 2000px wide. Height can be anything 320px or taller. Crop to desired proportions before uploading the image. '); + t('OPTIONAL text that may be placed atop a banner image. '); t('Pre-Footer Banner Image'); t('Prevent users from changing metadata or deleting node.'); diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.field_group.inc b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.field_group.inc index a4178762..67c06792 100644 --- a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.field_group.inc +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.field_group.inc @@ -10,6 +10,33 @@ function ocio_landing_page_field_group_info() { $export = array(); + $field_group = new stdClass(); + $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */ + $field_group->api_version = 1; + $field_group->identifier = 'group_bottom_banner_image|node|ocio_landing_page|form'; + $field_group->group_name = 'group_bottom_banner_image'; + $field_group->entity_type = 'node'; + $field_group->bundle = 'ocio_landing_page'; + $field_group->mode = 'form'; + $field_group->parent_name = ''; + $field_group->data = array( + 'label' => 'Bottom Banner Image', + 'weight' => '4', + 'children' => array( + 0 => 'field_pre_footer_banner_image', + ), + 'format_type' => 'fieldset', + 'format_settings' => array( + 'formatter' => 'collapsible', + 'instance_settings' => array( + 'description' => '', + 'classes' => 'group-bottom-banner-image field-group-fieldset', + 'required_fields' => 1, + ), + ), + ); + $export['group_bottom_banner_image|node|ocio_landing_page|form'] = $field_group; + $field_group = new stdClass(); $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */ $field_group->api_version = 1; @@ -39,5 +66,35 @@ function ocio_landing_page_field_group_info() { ); $export['group_display_options|node|ocio_landing_page|form'] = $field_group; + $field_group = new stdClass(); + $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */ + $field_group->api_version = 1; + $field_group->identifier = 'group_top_banner_image|node|ocio_landing_page|form'; + $field_group->group_name = 'group_top_banner_image'; + $field_group->entity_type = 'node'; + $field_group->bundle = 'ocio_landing_page'; + $field_group->mode = 'form'; + $field_group->parent_name = ''; + $field_group->data = array( + 'label' => 'Top Banner Image', + 'weight' => '3', + 'children' => array( + 0 => 'field_banner_image', + 1 => 'field_banner_image_text_location', + 2 => 'field_banner_image_text_color', + 3 => 'field_banner_image_text', + ), + 'format_type' => 'fieldset', + 'format_settings' => array( + 'formatter' => 'collapsible', + 'instance_settings' => array( + 'description' => '', + 'classes' => 'group-top-banner-image field-group-fieldset', + 'required_fields' => 1, + ), + ), + ); + $export['group_top_banner_image|node|ocio_landing_page|form'] = $field_group; + return $export; } diff --git a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.info b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.info index 106d4093..fe7c3796 100644 --- a/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.info +++ b/profiles/wcm_base/modules/custom/ocio_landing_page/ocio_landing_page.info @@ -4,6 +4,7 @@ core = 7.x package = OCIO Features version = 7.x-1.0 project = ocio_landing_page +dependencies[] = conditional_fields dependencies[] = context dependencies[] = ctools dependencies[] = defaultconfig @@ -20,6 +21,7 @@ dependencies[] = options dependencies[] = panelizer dependencies[] = strongarm dependencies[] = uuid_features +features[conditional_fields][] = node:ocio_landing_page features[context][] = landing-page-layout features[ctools][] = context:context:3 features[ctools][] = ds:ds:1 @@ -32,11 +34,19 @@ features[fe_block_settings][] = ds_extras-ds_hero features[features_api][] = api:2 features[field_base][] = field_alternate_panel_rows features[field_base][] = field_banner_image +features[field_base][] = field_banner_image_text +features[field_base][] = field_banner_image_text_color +features[field_base][] = field_banner_image_text_location features[field_base][] = field_pre_footer_banner_image +features[field_group][] = group_bottom_banner_image|node|ocio_landing_page|form features[field_group][] = group_display_options|node|ocio_landing_page|form +features[field_group][] = group_top_banner_image|node|ocio_landing_page|form features[field_instance][] = node-ocio_landing_page-field_admin_lock features[field_instance][] = node-ocio_landing_page-field_alternate_panel_rows features[field_instance][] = node-ocio_landing_page-field_banner_image +features[field_instance][] = node-ocio_landing_page-field_banner_image_text +features[field_instance][] = node-ocio_landing_page-field_banner_image_text_color +features[field_instance][] = node-ocio_landing_page-field_banner_image_text_location features[field_instance][] = node-ocio_landing_page-field_disable_breadcrumbs features[field_instance][] = node-ocio_landing_page-field_disable_title features[field_instance][] = node-ocio_landing_page-field_pre_footer_banner_image diff --git a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_base.inc b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_base.inc new file mode 100644 index 00000000..d1462036 --- /dev/null +++ b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_base.inc @@ -0,0 +1,39 @@ +<?php +/** + * @file + * ocio_news.features.field_base.inc + */ + +/** + * Implements hook_field_default_field_bases(). + */ +function ocio_news_field_default_field_bases() { + $field_bases = array(); + + // Exported field_base: 'field_display_in_view_panes' + $field_bases['field_display_in_view_panes'] = array( + 'active' => 1, + 'cardinality' => 1, + 'deleted' => 0, + 'entity_types' => array(), + 'field_name' => 'field_display_in_view_panes', + 'indexes' => array( + 'value' => array( + 0 => 'value', + ), + ), + 'locked' => 0, + 'module' => 'list', + 'settings' => array( + 'allowed_values' => array( + 0 => '', + 1 => '', + ), + 'allowed_values_function' => '', + ), + 'translatable' => 0, + 'type' => 'list_boolean', + ); + + return $field_bases; +} diff --git a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_instance.inc b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_instance.inc index bbf38f7b..779cd3c5 100644 --- a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_instance.inc +++ b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.features.field_instance.inc @@ -10,6 +10,61 @@ function ocio_news_field_default_field_instances() { $field_instances = array(); + // Exported field_instance: 'node-article-field_display_in_view_panes' + $field_instances['node-article-field_display_in_view_panes'] = array( + 'bundle' => 'article', + 'default_value' => array( + 0 => array( + 'value' => 1, + ), + ), + 'deleted' => 0, + 'description' => 'Checking this box will make this article eligible for display in News Article View Panes. Uncheck this box if you only want the article to display on the news archive page. ', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 4, + ), + 'full' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 0, + ), + 'search_index' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 0, + ), + 'teaser' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 0, + ), + ), + 'ds_extras_field_template' => '', + 'entity_type' => 'node', + 'field_name' => 'field_display_in_view_panes', + 'label' => 'Display in View Panes', + 'required' => 0, + 'settings' => array( + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'options', + 'settings' => array( + 'display_label' => 1, + ), + 'type' => 'options_onoff', + 'weight' => 3, + ), + ); + // Exported field_instance: 'node-article-field_featured_image' $field_instances['node-article-field_featured_image'] = array( 'bundle' => 'article', @@ -23,7 +78,7 @@ function ocio_news_field_default_field_instances() { 'file_view_mode' => 'default', ), 'type' => 'file_rendered', - 'weight' => 2, + 'weight' => 1, ), 'featured' => array( 'label' => 'hidden', @@ -123,7 +178,7 @@ function ocio_news_field_default_field_instances() { 'manualcrop_thumblist' => 0, ), 'type' => 'media_generic', - 'weight' => 33, + 'weight' => 5, ), ); @@ -206,6 +261,8 @@ function ocio_news_field_default_field_instances() { // Translatables // Included for use with string extractors like potx. t('Body'); + t('Checking this box will make this article eligible for display in News Article View Panes. Uncheck this box if you only want the article to display on the news archive page. '); + t('Display in View Panes'); t('Image'); return $field_instances; diff --git a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.info b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.info index fd997ad9..3a5b04cf 100644 --- a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.info +++ b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.info @@ -36,6 +36,8 @@ features[ds_layout_settings][] = node|article|full features[ds_layout_settings][] = node|article|search_index features[ds_layout_settings][] = node|article|teaser features[features_api][] = api:2 +features[field_base][] = field_display_in_view_panes +features[field_instance][] = node-article-field_display_in_view_panes features[field_instance][] = node-article-field_featured_image features[field_instance][] = node-article-field_ocio_body features[node][] = article diff --git a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.strongarm.inc b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.strongarm.inc index 429ebd41..37adeff8 100644 --- a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.strongarm.inc +++ b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.strongarm.inc @@ -52,7 +52,14 @@ function ocio_news_strongarm() { ), ), 'extra_fields' => array( - 'form' => array(), + 'form' => array( + 'title' => array( + 'weight' => '0', + ), + 'path' => array( + 'weight' => '1', + ), + ), 'display' => array(), ), ); diff --git a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.views_default.inc b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.views_default.inc index d4e280fc..fb440e2b 100644 --- a/profiles/wcm_base/modules/custom/ocio_news/ocio_news.views_default.inc +++ b/profiles/wcm_base/modules/custom/ocio_news/ocio_news.views_default.inc @@ -59,6 +59,13 @@ function ocio_news_views_default_views() { $handler->display->display_options['filters']['type']['value'] = array( 'article' => 'article', ); + /* Filter criterion: Content: Display in View Panes (field_display_in_view_panes) */ + $handler->display->display_options['filters']['field_display_in_view_panes_value']['id'] = 'field_display_in_view_panes_value'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['table'] = 'field_data_field_display_in_view_panes'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['field'] = 'field_display_in_view_panes_value'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['value'] = array( + 1 => '1', + ); /* Display: News Archive Page */ $handler = $view->new_display('page', 'News Archive Page', 'page'); @@ -69,6 +76,22 @@ function ocio_news_views_default_views() { $handler->display->display_options['pager']['options']['offset'] = '0'; $handler->display->display_options['pager']['options']['id'] = '0'; $handler->display->display_options['pager']['options']['quantity'] = '9'; + $handler->display->display_options['defaults']['filter_groups'] = FALSE; + $handler->display->display_options['defaults']['filters'] = FALSE; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 1; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + /* Filter criterion: Content: Type */ + $handler->display->display_options['filters']['type']['id'] = 'type'; + $handler->display->display_options['filters']['type']['table'] = 'node'; + $handler->display->display_options['filters']['type']['field'] = 'type'; + $handler->display->display_options['filters']['type']['value'] = array( + 'article' => 'article', + ); $handler->display->display_options['path'] = 'news'; $handler->display->display_options['menu']['type'] = 'normal'; $handler->display->display_options['menu']['title'] = 'News'; @@ -128,17 +151,52 @@ function ocio_news_views_default_views() { $handler->display->display_options['sorts']['created']['table'] = 'node'; $handler->display->display_options['sorts']['created']['field'] = 'created'; $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + $handler->display->display_options['defaults']['filter_groups'] = FALSE; + $handler->display->display_options['defaults']['filters'] = FALSE; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 1; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + /* Filter criterion: Content: Type */ + $handler->display->display_options['filters']['type']['id'] = 'type'; + $handler->display->display_options['filters']['type']['table'] = 'node'; + $handler->display->display_options['filters']['type']['field'] = 'type'; + $handler->display->display_options['filters']['type']['value'] = array( + 'article' => 'article', + ); /* Display: Feed */ $handler = $view->new_display('feed', 'Feed', 'feed'); + $handler->display->display_options['defaults']['title'] = FALSE; + $handler->display->display_options['title'] = 'News'; $handler->display->display_options['pager']['type'] = 'some'; $handler->display->display_options['style_plugin'] = 'rss'; $handler->display->display_options['row_plugin'] = 'node_rss'; + $handler->display->display_options['defaults']['filter_groups'] = FALSE; + $handler->display->display_options['defaults']['filters'] = FALSE; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 1; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + /* Filter criterion: Content: Type */ + $handler->display->display_options['filters']['type']['id'] = 'type'; + $handler->display->display_options['filters']['type']['table'] = 'node'; + $handler->display->display_options['filters']['type']['field'] = 'type'; + $handler->display->display_options['filters']['type']['value'] = array( + 'article' => 'article', + ); $handler->display->display_options['path'] = 'news-archive.xml'; $handler->display->display_options['displays'] = array( 'default' => 'default', 'page' => 'page', ); + $handler->display->display_options['sitename_title'] = 0; /* Display: Titles Pane */ $handler = $view->new_display('panel_pane', 'Titles Pane', 'titles_pane'); @@ -271,6 +329,13 @@ function ocio_news_views_default_views() { $handler->display->display_options['filters']['type']['value'] = array( 'article' => 'article', ); + /* Filter criterion: Content: Display in View Panes (field_display_in_view_panes) */ + $handler->display->display_options['filters']['field_display_in_view_panes_value']['id'] = 'field_display_in_view_panes_value'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['table'] = 'field_data_field_display_in_view_panes'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['field'] = 'field_display_in_view_panes_value'; + $handler->display->display_options['filters']['field_display_in_view_panes_value']['value'] = array( + 1 => '1', + ); $handler->display->display_options['pane_category']['name'] = 'News Article Listings'; $handler->display->display_options['pane_category']['weight'] = '0'; $handler->display->display_options['allow']['use_pager'] = 0; diff --git a/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.module b/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.module index cac19505..11047bb8 100644 --- a/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.module +++ b/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.module @@ -88,6 +88,36 @@ function ocio_panels_settings_panopoly_magic_forms_to_improve_alter(&$form_ids) $form_ids[] = 'mm_widgets_live_pane_edit_form'; } +/** + * Implements hook_panels_pane_prerender(). + * + * Only show media magnet channel icon once if only one channel is being selected. + */ +function ocio_panels_settings_panels_pane_prerender($pane) { + if ($pane->type == 'mm_widgets_live_pane') { + parse_str($pane->configuration['items_query'], $query); + $channels = $query['channel_type']; + + if (is_array($channels) && count($channels) == 1) { + $channel = $channels[0]; + } + elseif (is_string($channels)) { + $channel = $channels; + } + + if (isset($channel)) { + $pane->configuration['single_channel'] = TRUE; + $pane->channel = str_replace(' ', '-', $channel); + $pane->configuration['items_template_key'] = 'single_channel'; + } + + if (isset($query['channel_id'])) { + $pane->configuration['single_channel'] = TRUE; + $pane->channel = 'fw'; + } + } +} + /* * Implements hook_settings_preprocess_panels_add_content_modal(). */ diff --git a/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.strongarm.inc b/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.strongarm.inc index d3dab799..e54df595 100644 --- a/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.strongarm.inc +++ b/profiles/wcm_base/modules/custom/ocio_panels_settings/ocio_panels_settings.strongarm.inc @@ -14,7 +14,7 @@ function ocio_panels_settings_strongarm() { $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; $strongarm->name = 'panels_page_allowed_layouts'; - $strongarm->value = 'O:22:"panels_allowed_layouts":4:{s:9:"allow_new";b:1;s:11:"module_name";s:11:"panels_page";s:23:"allowed_layout_settings";a:93:{s:8:"flexible";b:0;s:14:"twocol_stacked";b:0;s:13:"twocol_bricks";b:0;s:6:"twocol";b:0;s:25:"threecol_33_34_33_stacked";b:0;s:17:"threecol_33_34_33";b:0;s:25:"threecol_25_50_25_stacked";b:0;s:17:"threecol_25_50_25";b:0;s:6:"onecol";b:0;s:6:"whelan";b:0;s:12:"webb_flipped";b:0;s:5:"sutro";b:0;s:13:"selby_flipped";b:0;s:5:"selby";b:0;s:4:"pond";b:0;s:15:"moscone_flipped";b:0;s:7:"moscone";b:0;s:8:"mccoppin";b:0;s:15:"hewston_flipped";b:0;s:7:"hewston";b:0;s:6:"harris";b:0;s:5:"geary";b:0;s:12:"burr_flipped";b:0;s:4:"burr";b:0;s:5:"brown";b:0;s:15:"brenham_flipped";b:0;s:7:"brenham";b:0;s:16:"bartlett_flipped";b:0;s:8:"bartlett";b:0;s:17:"sanderson_flipped";b:0;s:9:"sanderson";b:0;s:6:"boxton";b:0;s:22:"bryant_flipped_flipped";b:0;s:6:"bryant";b:0;s:6:"phelan";b:0;s:14:"taylor_flipped";b:0;s:6:"taylor";b:0;s:12:"sutro_double";b:0;s:5:"rolph";b:0;s:4:"webb";b:0;s:15:"omega:ocio-full";b:0;s:18:"omega:ocio-default";b:0;s:10:"omega:hero";b:0;s:12:"omega:simple";b:0;s:16:"omega:off-canvas";b:0;s:12:"omega:divine";b:0;s:5:"naked";b:0;s:8:"mondrian";b:0;s:6:"grid-3";b:0;s:6:"grid-2";b:0;s:6:"golden";b:0;s:19:"ocio-omega-equalcol";b:1;s:19:"ocio-omega-threecol";b:1;s:25:"ocio-omega-twocol-flipped";b:1;s:17:"ocio-omega-twocol";b:1;s:12:"radix_whelan";b:0;s:18:"radix_webb_flipped";b:0;s:10:"radix_webb";b:0;s:20:"radix_taylor_flipped";b:0;s:12:"radix_taylor";b:0;s:18:"radix_sutro_double";b:0;s:11:"radix_sutro";b:0;s:19:"radix_selby_flipped";b:0;s:11:"radix_selby";b:0;s:23:"radix_sanderson_flipped";b:0;s:15:"radix_sanderson";b:0;s:11:"radix_rolph";b:0;s:10:"radix_pond";b:0;s:12:"radix_phelan";b:0;s:21:"radix_moscone_flipped";b:0;s:13:"radix_moscone";b:0;s:14:"radix_mccoppin";b:0;s:21:"radix_hewston_flipped";b:0;s:13:"radix_hewston";b:0;s:12:"radix_harris";b:0;s:11:"radix_geary";b:0;s:18:"radix_burr_flipped";b:0;s:10:"radix_burr";b:0;s:20:"radix_bryant_flipped";b:0;s:12:"radix_bryant";b:0;s:11:"radix_brown";b:0;s:21:"radix_brenham_flipped";b:0;s:13:"radix_brenham";b:0;s:12:"radix_boxton";b:0;s:22:"radix_bartlett_flipped";b:0;s:14:"radix_bartlett";b:0;s:23:"ocio-omega-tiles-twocol";b:1;s:25:"ocio-omega-tiles-equalcol";b:1;s:12:"omega:ocio-3";b:0;s:12:"omega:ocio-4";b:1;s:31:"ocio-omega-tiles-twocol-flipped";b:1;s:20:"ocio-omega-fourtiles";b:1;s:20:"ocio-omega-flip-flop";b:1;}s:10:"form_state";N;}'; + $strongarm->value = 'O:22:"panels_allowed_layouts":4:{s:9:"allow_new";b:1;s:11:"module_name";s:11:"panels_page";s:23:"allowed_layout_settings";a:93:{s:8:"flexible";b:0;s:14:"twocol_stacked";b:0;s:13:"twocol_bricks";b:0;s:6:"twocol";b:0;s:25:"threecol_33_34_33_stacked";b:0;s:17:"threecol_33_34_33";b:0;s:25:"threecol_25_50_25_stacked";b:0;s:17:"threecol_25_50_25";b:0;s:6:"onecol";b:0;s:6:"whelan";b:0;s:12:"webb_flipped";b:0;s:5:"sutro";b:0;s:13:"selby_flipped";b:0;s:5:"selby";b:0;s:4:"pond";b:0;s:15:"moscone_flipped";b:0;s:7:"moscone";b:0;s:8:"mccoppin";b:0;s:15:"hewston_flipped";b:0;s:7:"hewston";b:0;s:6:"harris";b:0;s:5:"geary";b:0;s:12:"burr_flipped";b:0;s:4:"burr";b:0;s:5:"brown";b:0;s:15:"brenham_flipped";b:0;s:7:"brenham";b:0;s:16:"bartlett_flipped";b:0;s:8:"bartlett";b:0;s:17:"sanderson_flipped";b:0;s:9:"sanderson";b:0;s:6:"boxton";b:0;s:22:"bryant_flipped_flipped";b:0;s:6:"bryant";b:0;s:6:"phelan";b:0;s:14:"taylor_flipped";b:0;s:6:"taylor";b:0;s:12:"sutro_double";b:0;s:5:"rolph";b:0;s:4:"webb";b:0;s:15:"omega:ocio-full";b:0;s:18:"omega:ocio-default";b:0;s:10:"omega:hero";b:0;s:12:"omega:simple";b:0;s:16:"omega:off-canvas";b:0;s:12:"omega:divine";b:0;s:5:"naked";b:0;s:8:"mondrian";b:0;s:6:"grid-3";b:0;s:6:"grid-2";b:0;s:6:"golden";b:0;s:19:"ocio-omega-equalcol";b:0;s:19:"ocio-omega-threecol";b:0;s:25:"ocio-omega-twocol-flipped";b:0;s:17:"ocio-omega-twocol";b:0;s:12:"radix_whelan";b:0;s:18:"radix_webb_flipped";b:0;s:10:"radix_webb";b:0;s:20:"radix_taylor_flipped";b:0;s:12:"radix_taylor";b:0;s:18:"radix_sutro_double";b:0;s:11:"radix_sutro";b:0;s:19:"radix_selby_flipped";b:0;s:11:"radix_selby";b:0;s:23:"radix_sanderson_flipped";b:0;s:15:"radix_sanderson";b:0;s:11:"radix_rolph";b:0;s:10:"radix_pond";b:0;s:12:"radix_phelan";b:0;s:21:"radix_moscone_flipped";b:0;s:13:"radix_moscone";b:0;s:14:"radix_mccoppin";b:0;s:21:"radix_hewston_flipped";b:0;s:13:"radix_hewston";b:0;s:12:"radix_harris";b:0;s:11:"radix_geary";b:0;s:18:"radix_burr_flipped";b:0;s:10:"radix_burr";b:0;s:20:"radix_bryant_flipped";b:0;s:12:"radix_bryant";b:0;s:11:"radix_brown";b:0;s:21:"radix_brenham_flipped";b:0;s:13:"radix_brenham";b:0;s:12:"radix_boxton";b:0;s:22:"radix_bartlett_flipped";b:0;s:14:"radix_bartlett";b:0;s:23:"ocio-omega-tiles-twocol";b:1;s:25:"ocio-omega-tiles-equalcol";b:1;s:12:"omega:ocio-3";b:0;s:12:"omega:ocio-4";b:1;s:31:"ocio-omega-tiles-twocol-flipped";b:1;s:20:"ocio-omega-fourtiles";b:1;s:20:"ocio-omega-flip-flop";b:1;}s:10:"form_state";N;}'; $export['panels_page_allowed_layouts'] = $strongarm; $strongarm = new stdClass(); diff --git a/profiles/wcm_base/modules/custom/ocio_siteinfo/ocio_siteinfo.module b/profiles/wcm_base/modules/custom/ocio_siteinfo/ocio_siteinfo.module index 5c46dbf6..b14d7464 100644 --- a/profiles/wcm_base/modules/custom/ocio_siteinfo/ocio_siteinfo.module +++ b/profiles/wcm_base/modules/custom/ocio_siteinfo/ocio_siteinfo.module @@ -260,7 +260,7 @@ function ocio_siteinfo_form_submit($form, &$form_state) { $siteinfo = array_map('ocio_siteinfo_trim_array', $siteinfo); $site_name = preg_replace('#(?: *)?<br */?>(?: *)#', ' ', $siteinfo['basic']['site_name']); - variable_set('site_name', $siteinfo['basic']['prefix'] . ' ' . $site_name); + variable_set('site_name', strip_tags($siteinfo['basic']['prefix'] . ' ' . $site_name)); } /* @@ -275,11 +275,12 @@ function ocio_siteinfo_form_validate($form, &$form_state) { function _ocio_siteinfo_validate_site_name(&$element, &$form_state) { $name_lines = array_filter(preg_split('#(?: *)?<br */?>(?: *)#', $element['#value'])); foreach ($name_lines as $key => $value) { - $name_lines[$key] = check_plain($value); + $name_lines[$key] = filter_xss($value, array('strong', 'br')); } $site_name = implode($name_lines, '<br/>'); - $prefix_lines = trim($form_state['values']['ocio_siteinfo']['basic']['prefix']) == FALSE; + $prefix_lines = trim($form_state['values']['ocio_siteinfo']['basic']['prefix']) != FALSE; $total_lines = $prefix_lines + count($name_lines); + if ($total_lines > 3) { form_error($element, 'Maximum site name lines exceeded'); } diff --git a/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.css b/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.css index fba061ef..9cc52c86 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.css +++ b/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.css @@ -168,7 +168,7 @@ h6, .zeta { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; diff --git a/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.no-query.css b/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.no-query.css index bb63aa9d..1211d51c 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.no-query.css +++ b/profiles/wcm_base/themes/ocio_omega_4/css/layouts/ocio-4/ocio-4.layout.no-query.css @@ -157,7 +157,7 @@ h6, .zeta { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; diff --git a/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.no-query.css b/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.no-query.css index ef21910a..5b95e6aa 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.no-query.css +++ b/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.no-query.css @@ -153,7 +153,7 @@ h6, .zeta { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -388,17 +388,17 @@ ul.flex-direction-nav, ul.flex-direction-nav:hover { } h2.pane-title { - font-size: 30px; - font-size: 3rem; - margin-bottom: 1em; + font-size: 24px; + font-size: 2.4rem; + margin-bottom: 0.6em; text-transform: none; color: #2d2d2d; } .panel-pane.pane-bundle-tile-pane { - -moz-box-shadow: 0px 0px 2px 1px #ddd; - -webkit-box-shadow: 0px 0px 2px 1px #ddd; - box-shadow: 0px 0px 2px 1px #ddd; + -moz-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + -webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); } .panel-pane.pane-bundle-tile-pane .title-text { display: block; @@ -407,9 +407,9 @@ h2.pane-title { } .panel-pane.pane-bundle-tile-pane-plus-text-area { - -moz-box-shadow: 0px 0px 2px 1px #ddd; - -webkit-box-shadow: 0px 0px 2px 1px #ddd; - box-shadow: 0px 0px 2px 1px #ddd; + -moz-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + -webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); } .node-type-ocio-landing-page .l-main { diff --git a/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.styles.css b/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.styles.css index 6bb7ba22..5f5c21a6 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.styles.css +++ b/profiles/wcm_base/themes/ocio_omega_4/css/ocio-4.styles.css @@ -164,7 +164,7 @@ h6, .zeta { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -411,17 +411,17 @@ ul.flex-direction-nav, ul.flex-direction-nav:hover { } h2.pane-title { - font-size: 30px; - font-size: 3rem; - margin-bottom: 1em; + font-size: 24px; + font-size: 2.4rem; + margin-bottom: 0.6em; text-transform: none; color: #2d2d2d; } .panel-pane.pane-bundle-tile-pane { - -moz-box-shadow: 0px 0px 2px 1px #ddd; - -webkit-box-shadow: 0px 0px 2px 1px #ddd; - box-shadow: 0px 0px 2px 1px #ddd; + -moz-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + -webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); } .panel-pane.pane-bundle-tile-pane .title-text { display: block; @@ -430,9 +430,9 @@ h2.pane-title { } .panel-pane.pane-bundle-tile-pane-plus-text-area { - -moz-box-shadow: 0px 0px 2px 1px #ddd; - -webkit-box-shadow: 0px 0px 2px 1px #ddd; - box-shadow: 0px 0px 2px 1px #ddd; + -moz-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + -webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); + box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.18); } @media (min-width: 85.375em) { diff --git a/profiles/wcm_base/themes/ocio_omega_4/sass/base/_typography.scss b/profiles/wcm_base/themes/ocio_omega_4/sass/base/_typography.scss index 61bf85ee..5145163b 100755 --- a/profiles/wcm_base/themes/ocio_omega_4/sass/base/_typography.scss +++ b/profiles/wcm_base/themes/ocio_omega_4/sass/base/_typography.scss @@ -1,50 +1,55 @@ // font units @mixin font-size($sizeValue: 1.6) { - font-size: ($sizeValue * 10) + px; + font-size: $sizeValue * 10 + px; font-size: $sizeValue + rem; } //heading sizes h1, .alpha { - @include font-size(3.4); - margin: .8em 0 0 0; - color: $red; + @include font-size(3.4); + margin: .8em 0 0 0; + color: $red; } + h2, .beta { - @include font-size(3.2); - margin: .9em 0 0 0; + @include font-size(3.2); + margin: .9em 0 0 0; } + h3, .gamma { - @include font-size(2.6); - margin: 1em 0 0 0; + @include font-size(2.6); + margin: 1em 0 0 0; } + h4, .delta { - @include font-size(2.4); - margin: 1.2em 0 0 0; + @include font-size(2.4); + margin: 1.2em 0 0 0; } + h5, .epsilon { - @include font-size(2); - margin: 1.4em 0 0 0; + @include font-size(2); + margin: 1.4em 0 0 0; } + h6, .zeta { - @include font-size(1.8); - margin: 1.4em 0 0 0; + @include font-size(1.8); + margin: 1.4em 0 0 0; } //headings style + h1, .alpha, h2, .beta, h3, .gamma, h4, .delta, h5, .epsilon, h6, .zeta { - - font-family: $proxima; + font-family: $proxima; line-height: 100%; a, a:visited { - @extend .header-links; + @extend .header-links; } } @@ -52,63 +57,68 @@ h6, .zeta { a { @include link-colors($red, $blue, $orange, $red, $orange); font-weight: 500; - text-decoration: underline; + text-decoration: none; + &:hover { - text-decoration: underline; + text-decoration: underline; } } + .header-links { @include link-colors($red, $dk-gray, $orange, $red, $orange); text-decoration: none; + &:hover { - text-decoration: none; + text-decoration: none; } } + .reverse-links { - @include link-colors($lt-gray, $white, $red, $lt-gray, $orange); + @include link-colors($lt-gray, $white, $red, $lt-gray, $orange); } //specific styles .more-link, .more-link a { - text-transform: uppercase; - font-weight: 600; - text-decoration: none; - margin-top: 2em; - margin-bottom: 2em; + text-transform: uppercase; + font-weight: 600; + text-decoration: none; + margin-top: 2em; + margin-bottom: 2em; } .fine-print { - @include font-size(1.2); - line-height: 135%; + @include font-size(1.2); + line-height: 135%; } .labels { - @include font-size(1.3); - text-transform: uppercase; - font-weight: 400; + @include font-size(1.3); + text-transform: uppercase; + font-weight: 400; } - .title-caps { - text-transform:uppercase; - @include font-size(2.6); + text-transform: uppercase; + @include font-size(2.6); } .title-caps-red { - @extend .title-caps; - color:$red; + @extend .title-caps; + color: $red; } h2.block__title { - @include font-size(3.0); - color:$dk-gray; + @include font-size(3); + color: $dk-gray; } + .more-link-button { - color:$white; - @extend .red-button; + color: $white; + @extend .red-button; } + blockquote p { - font-family:$capita; + font-family: $capita; } diff --git a/profiles/wcm_base/themes/ocio_omega_4/sass/components/_panes.scss b/profiles/wcm_base/themes/ocio_omega_4/sass/components/_panes.scss index f6cb23cf..e5441275 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/sass/components/_panes.scss +++ b/profiles/wcm_base/themes/ocio_omega_4/sass/components/_panes.scss @@ -1,7 +1,7 @@ h2.pane-title { -// font-family: $capita; - @include font-size(3.0); - margin-bottom: 1em; - text-transform: none; - color: $dk-gray; -} \ No newline at end of file + // font-family: $capita; + @include font-size(2.4); + margin-bottom: 0.6em; + text-transform: none; + color: $dk-gray; +} diff --git a/profiles/wcm_base/themes/ocio_omega_4/sass/components/_tiles.scss b/profiles/wcm_base/themes/ocio_omega_4/sass/components/_tiles.scss index 944ae9e5..fe52f860 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/sass/components/_tiles.scss +++ b/profiles/wcm_base/themes/ocio_omega_4/sass/components/_tiles.scss @@ -1,16 +1,15 @@ //custom tile panes .panel-pane.pane-bundle-tile-pane { + @include box-shadow; -@include box-shadow; - - .title-text { - display: block; - text-align: center; - padding: 0 2em; - } + .title-text { + display: block; + text-align: center; + padding: 0 2em; + } } .panel-pane.pane-bundle-tile-pane-plus-text-area { - @include box-shadow; -} \ No newline at end of file + @include box-shadow; +} diff --git a/profiles/wcm_base/themes/ocio_omega_4/sass/components/views/_news.scss b/profiles/wcm_base/themes/ocio_omega_4/sass/components/views/_news.scss index 57b9a778..fc9ec5a3 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/sass/components/views/_news.scss +++ b/profiles/wcm_base/themes/ocio_omega_4/sass/components/views/_news.scss @@ -1,5 +1,5 @@ .view-ocio-news-archive { - + //teasers pane .node--article--teaser { h2 { diff --git a/profiles/wcm_base/themes/ocio_omega_4/sass/variables/_shadows.scss b/profiles/wcm_base/themes/ocio_omega_4/sass/variables/_shadows.scss index 136e4624..ee788ad0 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/sass/variables/_shadows.scss +++ b/profiles/wcm_base/themes/ocio_omega_4/sass/variables/_shadows.scss @@ -1,5 +1,5 @@ -$default-box-shadow-color: #ddd; -$default-box-shadow-blur: 2px; +$default-box-shadow-color: rgba($black, 0.18); +$default-box-shadow-blur: 1px; $default-box-shadow-h-offset: 0px; -$default-box-shadow-v-offset: 0px; -$default-box-shadow-spread: 1px; \ No newline at end of file +$default-box-shadow-v-offset: 1px; +$default-box-shadow-spread: 1px; diff --git a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php b/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php deleted file mode 100644 index 78036bc8..00000000 --- a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php +++ /dev/null @@ -1,8 +0,0 @@ -<a href="<?php print $tile_url; ?>"> - <?php print render($content['field_tile_background_img']); ?> - - <div class="text-areas <?php print $tile_color_2; ?>"> - <h2><?php print $tile_title; ?></h2> - <?php print render($content['field_tile_text_area']); ?> - </div> -</a> \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane.tpl.php b/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane.tpl.php deleted file mode 100644 index 9d348cc3..00000000 --- a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/fieldable-panels-pane--tile-pane.tpl.php +++ /dev/null @@ -1,6 +0,0 @@ -<a href="<?php print $tile_url; ?>" class="<?php print $tile_color; ?>"> - <?php print render($content['field_tile_background_img']); ?> - <div class="title-box <?php print $tile_color; ?>"> - <div class="title-text"><h2><?php print $tile_title; ?></h2></div> - </div> -</a> \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.css b/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.css index 140d21ed..b8f75035 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.css +++ b/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.css @@ -862,7 +862,7 @@ h2.block__title { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1178,7 +1178,7 @@ h2.block__title { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; diff --git a/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.no-query.css b/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.no-query.css index 51b4ab78..1738248d 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.no-query.css +++ b/profiles/wcm_base/themes/ocio_omega_base/css/layouts/ocio-default/ocio-default.layout.no-query.css @@ -858,7 +858,7 @@ body, a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1170,7 +1170,7 @@ body, a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; diff --git a/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.no-query.css b/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.no-query.css index 8478f212..68b20c87 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.no-query.css +++ b/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.no-query.css @@ -1,4 +1,3 @@ -@charset "UTF-8"; /* No files to import found in abstractions/**\/* */ ul.breadcrumb { padding: 0; @@ -855,7 +854,7 @@ body, a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1168,7 +1167,7 @@ body, a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1428,177 +1427,89 @@ body .ui-accordion .ui-accordion-content { .block--mm-widgets .item, .pane-mm-widgets-live-pane .item { - margin: 1em 0; -} -.block--mm-widgets .item .fa, -.pane-mm-widgets-live-pane .item .fa { - margin-right: 0.4em; + margin: 1.5em 0; } -.block--mm-widgets .item .fa.fa-twitter:before, -.pane-mm-widgets-live-pane .item .fa.fa-twitter:before { - color: #00aced; +.block--mm-widgets .item .content, +.pane-mm-widgets-live-pane .item .content { + margin-bottom: 0.3em; } -.block--mm-widgets .item .fa.fa-facebook-page:before, -.pane-mm-widgets-live-pane .item .fa.fa-facebook-page:before { - content: ''; - color: #3b5998; +.block--mm-widgets .item .network .fa, +.pane-mm-widgets-live-pane .item .network .fa { + margin-right: 0.6em; + position: relative; + top: 1px; + padding: 0.3em 0 0.25em; + width: 1.6em; } -.block--mm-widgets .item .fa.fa-instagram:before, -.pane-mm-widgets-live-pane .item .fa.fa-instagram:before { - color: #517fa4; +.block--mm-widgets .fa, +.pane-mm-widgets-live-pane .fa { + color: #fff; + padding: 0.55em 0 0.5em; + text-align: center; + width: 1.8em; } -.block--mm-widgets .item .fa.fa-rss:before, -.pane-mm-widgets-live-pane .item .fa.fa-rss:before { - color: #ff6600; +.block--mm-widgets .fa.fa-twitter, +.pane-mm-widgets-live-pane .fa.fa-twitter { + background-color: #00aced; } -.block--mm-widgets .item .fa.fa-youtube-playlist:before, -.pane-mm-widgets-live-pane .item .fa.fa-youtube-playlist:before { - content: ''; - color: #b00; +.block--mm-widgets .fa.fa-facebook-page, +.pane-mm-widgets-live-pane .fa.fa-facebook-page { + background-color: #3b5998; } -.block--mm-widgets .item .content, -.pane-mm-widgets-live-pane .item .content { - margin-bottom: 0.2em; +.block--mm-widgets .fa.fa-facebook-page:before, +.pane-mm-widgets-live-pane .fa.fa-facebook-page:before { + content: '\f09a'; } - -.node--article .field--name-byline { - margin: 0.8em 0 0.6em 0; - font-weight: 600; +.block--mm-widgets .fa.fa-instagram, +.pane-mm-widgets-live-pane .fa.fa-instagram { + background-color: #517fa4; + top: 2px; } -.node--article .field--name-byline .pipe { - color: #b00; +.block--mm-widgets .fa.fa-rss, +.pane-mm-widgets-live-pane .fa.fa-rss { + background-color: #ff6600; } -.node--article .field--name-field-tags { - margin: 1.4em 0 1em 0; +.block--mm-widgets .fa.fa-youtube-playlist, +.pane-mm-widgets-live-pane .fa.fa-youtube-playlist { + background-color: #b00; } -.node--article .field--name-field-tags .field__label { - margin-right: 0.2em; +.block--mm-widgets .fa.fa-youtube-playlist:before, +.pane-mm-widgets-live-pane .fa.fa-youtube-playlist:before { + content: '\f16a'; } -.node--article .article-modified { - margin-top: 1em; - font-size: 13px; - font-style: italic; +.block--mm-widgets.mm-single-channel .fa.mm-channel, +.pane-mm-widgets-live-pane.mm-single-channel .fa.mm-channel { + float: left; + margin-right: 0.6em; } -.node--article .article-modified .label-inline { - font-weight: 600; +.block--mm-widgets.mm-single-channel .fa.mm-channel + .pane-title, +.pane-mm-widgets-live-pane.mm-single-channel .fa.mm-channel + .pane-title { + line-height: 1.6em; } -.node--article.view-mode-full .field--name-field-featured-image { - margin: 1em 0 1em 0; - float: right; - margin: 1em 0 1em 1em; +h2.pane-title { + margin-top: 0 !important; + margin-bottom: 0.4em; + font-size: 24px; + font-size: 2.4rem; + line-height: 120%; } -.view-ocio-news-archive .field--name-title { - margin-bottom: 0.6em; -} -.view-ocio-news-archive .field--name-node-link { +.panel-panel-inner .panel-pane { margin-top: 1em; + margin-bottom: 4em; } - -.node--article--teaser .field--name-field-featured-image { - display: none; - display: block; - float: right; - margin: 0 0 1em 1em; -} - -.view-display-id-page .views-row, -.view-display-id-teasers_pane .views-row { - margin-bottom: 3em; -} -.view-display-id-page .views-row h2, -.view-display-id-teasers_pane .views-row h2 { - font-size: 32px; - font-size: 3.2rem; - line-height: 110%; -} -.view-display-id-page .views-row-first h2, -.view-display-id-teasers_pane .views-row-first h2 { - margin-top: 0.4em; -} -.view-display-id-page .views-row-last, -.view-display-id-teasers_pane .views-row-last { +.panel-panel-inner > .panel-pane:last-child { margin-bottom: 0; } -.pane-ocio-news-archive-titles-pane .views-row { - margin-bottom: 0.2em; +.panels-ipe-editing .panels-ipe-portlet-content { + overflow: visible; } -.pane-ocio-news-archive-trio-pane h2.pane-title { - border-bottom: 1px solid #b00; - padding-bottom: 0.1em; +.panels-ipe-sort-container > .panels-ipe-portlet-wrapper:last-child .panel-pane { margin-bottom: 0; } -.pane-ocio-news-archive-trio-pane .view-header { - margin-top: -1.8em; -} -.pane-ocio-news-archive-trio-pane a.more-link, .pane-ocio-news-archive-trio-pane a.field--name-node-link { - margin-top: 0.2em; - font-weight: 400; - color: #2d2d2d; - font-size: 14px; -} -.pane-ocio-news-archive-trio-pane a.more-link:hover, .pane-ocio-news-archive-trio-pane a.field--name-node-link:hover { - text-decoration: none; - color: #028da9; -} -.pane-ocio-news-archive-trio-pane .views-field-title h3 { - font-size: 22px; - font-size: 2.2rem; - margin-top: 0.4em; - line-height: 120%; - margin-bottom: 0.5em; -} -.pane-ocio-news-archive-trio-pane .field--name-post-date { - font-weight: 400; - color: #666666; - font-size: 15px; - font-size: 1.5rem; -} -.pane-ocio-news-archive-trio-pane .views-field-field-ocio-body a, .pane-ocio-news-archive-trio-pane .views-field-field-ocio-body:hover { - color: #2d2d2d; - text-decoration: none; -} -.pane-ocio-news-archive-trio-pane .views-row-1 { - width: 33.9%; - float: left; - padding-right: 4%; -} -.pane-ocio-news-archive-trio-pane .views-row-2 { - width: 33.9%; - float: left; - padding-left: 2%; - padding-right: 2%; -} -.pane-ocio-news-archive-trio-pane .views-row-3 { - width: 32.2%; - float: right; - padding-left: 4%; -} - -.view-display-id-archive_listing_block h3 { - font-size: 18px; - font-size: 1.8rem; - text-transform: uppercase; - color: #666666; - margin-top: 1.2em; -} -.view-display-id-archive_listing_block .views-field-title h4 { - font-size: 16px; - font-size: 1.6rem; - margin-top: 0.6em; - font-weight: 400; -} - -h2.pane-title { - margin-top: 0 !important; - margin-bottom: 0.4em; - font-size: 24px; - font-size: 2.4rem; - line-height: 120%; -} .sidebar-panel { background-color: #ededed; @@ -1620,16 +1531,14 @@ h2.pane-title { padding-top: 3em; padding-bottom: 3em; } -.panels-row.empty { - padding: 0; -} - -.row-header.panels-row { +.panels-row.first { padding-top: 1em; } - -.row-tiles.panels-row { - padding-bottom: 1.5em; +.panels-row.last { + padding-bottom: 3em; +} +.panels-row.empty { + padding: 0; } .tiles-header-panel { @@ -1637,10 +1546,6 @@ h2.pane-title { margin-bottom: 2.5em; } -.tile-panel { - margin-bottom: 1.5em; -} - .more-link, .field--name-node-link { font-size: 15px; font-size: 1.5rem; @@ -1755,125 +1660,126 @@ p.search-result__snippet { .panel-pane.pane-bundle-tile-pane:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane .title-box { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane { background: #fff; - padding: 0.8em 1em; width: 100%; z-index: 99; } -.panel-pane.pane-bundle-tile-pane .title-box.lt-gray { - background: #ededed; -} -.panel-pane.pane-bundle-tile-pane .title-box.md-gray { - background: #666666; -} -.panel-pane.pane-bundle-tile-pane .title-box.dk-gray { - background: #2d2d2d; -} -.panel-pane.pane-bundle-tile-pane .title-box.black { - background: black; -} -.panel-pane.pane-bundle-tile-pane .title-box.red { - background: #b00; -} -.panel-pane.pane-bundle-tile-pane a { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a { text-decoration: none; color: #b00; } -.panel-pane.pane-bundle-tile-pane a:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:visited { color: #b00; } -.panel-pane.pane-bundle-tile-pane a:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:hover { color: #666666; } -.panel-pane.pane-bundle-tile-pane a:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.lt-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray { + background: #ededed; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:visited { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:hover { color: #b00; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.md-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray { + background: #666666; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.md-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.md-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.md-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.md-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.dk-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray { + background: #2d2d2d; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.black { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black { + background: black; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.black:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.black:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.black:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.black:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.red { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red { + background: #b00; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.red:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.red:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.red:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.red:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane .title-text { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box { + padding: 0.8em 1em; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-text { display: table-cell; vertical-align: middle; - padding-right: 2em; width: 100%; } -.panel-pane.pane-bundle-tile-pane .title-text h2 { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-text h2 { font-size: 18px; font-size: 1.8rem; line-height: 110%; @@ -1882,13 +1788,13 @@ p.search-result__snippet { margin-top: 1px; padding: 0; } -.panel-pane.pane-bundle-tile-pane .title-icon { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-icon { display: table-cell; vertical-align: middle; font-size: 24px; font-size: 2.4rem; } -.panel-pane.pane-bundle-tile-pane .field--name-field-tile-background-img img { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .field--name-field-tile-background-img img { margin-bottom: -0.5em; } @@ -1909,23 +1815,24 @@ p.search-result__snippet { .panel-pane.pane-bundle-tile-pane-plus-text-area:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane { background: #fff; - padding: 1.4em 1.4em 1em 1.4em; - margin-top: -0.4em; width: 100%; z-index: 99; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas.lt-gray { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane.lt-gray { background: #ededed; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane .text-areas { + padding: 1.4em 1.4em 1em 1.4em; +} +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a { text-decoration: none; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2 { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2 { font-size: 22px; font-size: 2.2rem; font-weight: 400; @@ -1933,19 +1840,19 @@ p.search-result__snippet { text-decoration: none; color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:visited { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:visited { color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:focus { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:hover { color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:active { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:active { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p { font-size: 13px; font-size: 1.3rem; line-height: 150%; @@ -1953,16 +1860,16 @@ p.search-result__snippet { margin: 0.6em 0; font-weight: 300; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:visited { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:visited { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:focus { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:hover { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:active { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:active { color: #b00; } @@ -2040,7 +1947,57 @@ div.workbench-info-block #edit-submit { padding: 0 !important; } .node-type-ocio-landing-page h1#page-title { - padding-bottom: 0.4em; + margin-top: 0.8em; + padding-bottom: 0.6em; +} + +.node-type-ocio-landing-page .block--ds-extras-ds-hero { + position: relative; + max-height: 420px; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image { + position: relative; + top: 0; + z-index: 9; + max-height: 420px; + overflow: hidden; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text { + position: absolute; + width: 100%; + padding-left: 1em; + padding-right: 1em; + text-align: center; + z-index: 99; + font-size: 30px; + font-size: 3rem; + line-height: 120%; + padding-left: 4em; + padding-right: 4em; + padding-left: 6em; + padding-right: 6em; + padding-left: 10em; + padding-right: 10em; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.white { + color: white; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.dk-gray { + color: #2d2d2d; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.black { + color: black; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-top { + top: 1em; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-middle { + bottom: 45%; + top: 1em; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-bottom { + bottom: 1.2em; + top: 1em; } .l-footer-wrapper { @@ -2086,8 +2043,8 @@ div.workbench-info-block #edit-submit { color: #fff; background-color: #666666; margin: 0 0 1em 1em; - width: 2.6em; - padding: 0.5em 0 .4em 0; + width: 2.55em; + padding: 0.55em 0 0.4em; text-align: center; display: block; } @@ -2133,11 +2090,6 @@ div.workbench-info-block #edit-submit { background: white; } -#block-ds-extras-ds-hero { - max-height: 400px; - overflow: hidden; -} - /* Styles for main menu */ .l-region--main-menu .menu .leaf, .l-region--main-menu .menu .expanded, .l-region--main-menu .menu .collapsed, .l-region--sidebar-1 .menu .leaf, .l-region--sidebar-1 .menu .expanded, .l-region--sidebar-1 .menu .collapsed { list-style-image: none; @@ -3075,3 +3027,137 @@ a#skip:active:hover, a#skip:focus:hover { .view-mode-leadership_listing .field--name-field-bio { clear: both; } + +.node--article .field--name-byline { + margin: 0.8em 0 0.6em 0; + font-weight: 600; +} +.node--article .field--name-byline .pipe { + color: #b00; +} +.node--article .field--name-field-tags { + margin: 1.4em 0 1em 0; +} +.node--article .field--name-field-tags .field__label { + margin-right: 0.2em; +} +.node--article .article-modified { + margin-top: 1em; + font-size: 13px; + font-style: italic; +} +.node--article .article-modified .label-inline { + font-weight: 600; +} + +.node--article.view-mode-full .field--name-field-featured-image { + margin: 1em 0 1em 0; + float: right; + margin: 1em 0 1em 1em; +} + +.view-ocio-news-archive .field--name-title { + margin-bottom: 0.6em; +} +.view-ocio-news-archive .field--name-node-link { + margin-top: 1em; +} + +.node--article--teaser .field--name-field-featured-image { + display: none; + display: block; + float: right; + margin: 0 0 1em 1em; +} + +.view-display-id-page .views-row, +.view-display-id-teasers_pane .views-row { + margin-bottom: 3em; +} +.view-display-id-page .views-row h2, +.view-display-id-teasers_pane .views-row h2 { + font-size: 32px; + font-size: 3.2rem; + line-height: 110%; +} +.view-display-id-page .views-row-first h2, +.view-display-id-teasers_pane .views-row-first h2 { + margin-top: 0.4em; +} +.view-display-id-page .views-row-last, +.view-display-id-teasers_pane .views-row-last { + margin-bottom: 0; +} + +.pane-ocio-news-archive-titles-pane .views-row { + margin-bottom: 0.2em; +} + +.pane-ocio-news-archive-trio-pane h2.pane-title { + font-size: 28px; + font-size: 2.8rem; + border-bottom: 1px solid #b00; + padding-bottom: 0.1em; + margin-bottom: 0; +} +.pane-ocio-news-archive-trio-pane .view-header { + margin-top: -1.6em; + margin-bottom: 2.4em; +} +.pane-ocio-news-archive-trio-pane a.more-link, .pane-ocio-news-archive-trio-pane a.field--name-node-link { + margin-top: 0.2em; + font-weight: 400; + color: #2d2d2d; + font-size: 14px; +} +.pane-ocio-news-archive-trio-pane a.more-link:hover, .pane-ocio-news-archive-trio-pane a.field--name-node-link:hover { + text-decoration: none; + color: #028da9; +} +.pane-ocio-news-archive-trio-pane .views-field-title h3 { + font-size: 22px; + font-size: 2.2rem; + margin-top: 0.4em; + line-height: 120%; + margin-bottom: 0.5em; +} +.pane-ocio-news-archive-trio-pane .field--name-post-date { + font-weight: 400; + color: #666666; + font-size: 15px; + font-size: 1.5rem; +} +.pane-ocio-news-archive-trio-pane .views-field-field-ocio-body a, .pane-ocio-news-archive-trio-pane .views-field-field-ocio-body:hover { + color: #2d2d2d; + text-decoration: none; +} +.pane-ocio-news-archive-trio-pane .views-row-1 { + width: 33.9%; + float: left; + padding-right: 4%; +} +.pane-ocio-news-archive-trio-pane .views-row-2 { + width: 33.9%; + float: left; + padding-left: 2%; + padding-right: 2%; +} +.pane-ocio-news-archive-trio-pane .views-row-3 { + width: 32.2%; + float: right; + padding-left: 4%; +} + +.view-display-id-archive_listing_block h3 { + font-size: 18px; + font-size: 1.8rem; + text-transform: uppercase; + color: #666666; + margin-top: 1.2em; +} +.view-display-id-archive_listing_block .views-field-title h4 { + font-size: 16px; + font-size: 1.6rem; + margin-top: 0.6em; + font-weight: 400; +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.styles.css b/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.styles.css index e6ff6e8a..c85e2cd0 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.styles.css +++ b/profiles/wcm_base/themes/ocio_omega_base/css/ocio-omega-base.styles.css @@ -1,4 +1,3 @@ -@charset "UTF-8"; /* No files to import found in abstractions/**\/* */ ul.breadcrumb { padding: 0; @@ -859,7 +858,7 @@ h2.block__title { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1176,7 +1175,7 @@ h2.block__title { a { color: #b00; font-weight: 500; - text-decoration: underline; + text-decoration: none; } a:visited { color: #b00; @@ -1441,186 +1440,88 @@ body .ui-accordion .ui-accordion-content { .block--mm-widgets .item, .pane-mm-widgets-live-pane .item { - margin: 1em 0; -} -.block--mm-widgets .item .fa, -.pane-mm-widgets-live-pane .item .fa { - margin-right: 0.4em; -} -.block--mm-widgets .item .fa.fa-twitter:before, -.pane-mm-widgets-live-pane .item .fa.fa-twitter:before { - color: #00aced; -} -.block--mm-widgets .item .fa.fa-facebook-page:before, -.pane-mm-widgets-live-pane .item .fa.fa-facebook-page:before { - content: ''; - color: #3b5998; -} -.block--mm-widgets .item .fa.fa-instagram:before, -.pane-mm-widgets-live-pane .item .fa.fa-instagram:before { - color: #517fa4; -} -.block--mm-widgets .item .fa.fa-rss:before, -.pane-mm-widgets-live-pane .item .fa.fa-rss:before { - color: #ff6600; -} -.block--mm-widgets .item .fa.fa-youtube-playlist:before, -.pane-mm-widgets-live-pane .item .fa.fa-youtube-playlist:before { - content: ''; - color: #b00; + margin: 1.5em 0; } .block--mm-widgets .item .content, .pane-mm-widgets-live-pane .item .content { - margin-bottom: 0.2em; -} - -.node--article .field--name-byline { - margin: 0.8em 0 0.6em 0; - font-weight: 600; + margin-bottom: 0.3em; } -.node--article .field--name-byline .pipe { - color: #b00; +.block--mm-widgets .item .network .fa, +.pane-mm-widgets-live-pane .item .network .fa { + margin-right: 0.6em; + position: relative; + top: 1px; + padding: 0.3em 0 0.25em; + width: 1.6em; } -.node--article .field--name-field-tags { - margin: 1.4em 0 1em 0; +.block--mm-widgets .fa, +.pane-mm-widgets-live-pane .fa { + color: #fff; + padding: 0.55em 0 0.5em; + text-align: center; + width: 1.8em; } -.node--article .field--name-field-tags .field__label { - margin-right: 0.2em; +.block--mm-widgets .fa.fa-twitter, +.pane-mm-widgets-live-pane .fa.fa-twitter { + background-color: #00aced; } -.node--article .article-modified { - margin-top: 1em; - font-size: 13px; - font-style: italic; +.block--mm-widgets .fa.fa-facebook-page, +.pane-mm-widgets-live-pane .fa.fa-facebook-page { + background-color: #3b5998; } -.node--article .article-modified .label-inline { - font-weight: 600; +.block--mm-widgets .fa.fa-facebook-page:before, +.pane-mm-widgets-live-pane .fa.fa-facebook-page:before { + content: '\f09a'; } - -.node--article.view-mode-full .field--name-field-featured-image { - margin: 1em 0 1em 0; +.block--mm-widgets .fa.fa-instagram, +.pane-mm-widgets-live-pane .fa.fa-instagram { + background-color: #517fa4; + top: 2px; } -@media (min-width: 47.5em) { - .node--article.view-mode-full .field--name-field-featured-image { - float: right; - margin: 1em 0 1em 1em; - } +.block--mm-widgets .fa.fa-rss, +.pane-mm-widgets-live-pane .fa.fa-rss { + background-color: #ff6600; } - -.view-ocio-news-archive .field--name-title { - margin-bottom: 0.6em; +.block--mm-widgets .fa.fa-youtube-playlist, +.pane-mm-widgets-live-pane .fa.fa-youtube-playlist { + background-color: #b00; } -.view-ocio-news-archive .field--name-node-link { - margin-top: 1em; +.block--mm-widgets .fa.fa-youtube-playlist:before, +.pane-mm-widgets-live-pane .fa.fa-youtube-playlist:before { + content: '\f16a'; } - -.node--article--teaser .field--name-field-featured-image { - display: none; +.block--mm-widgets.mm-single-channel .fa.mm-channel, +.pane-mm-widgets-live-pane.mm-single-channel .fa.mm-channel { + float: left; + margin-right: 0.6em; } -@media (min-width: 47.5em) { - .node--article--teaser .field--name-field-featured-image { - display: block; - float: right; - margin: 0 0 1em 1em; - } +.block--mm-widgets.mm-single-channel .fa.mm-channel + .pane-title, +.pane-mm-widgets-live-pane.mm-single-channel .fa.mm-channel + .pane-title { + line-height: 1.6em; } -.view-display-id-page .views-row, -.view-display-id-teasers_pane .views-row { - margin-bottom: 3em; -} -.view-display-id-page .views-row h2, -.view-display-id-teasers_pane .views-row h2 { - font-size: 32px; - font-size: 3.2rem; - line-height: 110%; -} -.view-display-id-page .views-row-first h2, -.view-display-id-teasers_pane .views-row-first h2 { - margin-top: 0.4em; -} -.view-display-id-page .views-row-last, -.view-display-id-teasers_pane .views-row-last { - margin-bottom: 0; +h2.pane-title { + margin-top: 0 !important; + margin-bottom: 0.4em; + font-size: 24px; + font-size: 2.4rem; + line-height: 120%; } -.pane-ocio-news-archive-titles-pane .views-row { - margin-bottom: 0.2em; +.panel-panel-inner .panel-pane { + margin-top: 1em; + margin-bottom: 4em; } - -.pane-ocio-news-archive-trio-pane h2.pane-title { - border-bottom: 1px solid #b00; - padding-bottom: 0.1em; +.panel-panel-inner > .panel-pane:last-child { margin-bottom: 0; } -.pane-ocio-news-archive-trio-pane .view-header { - margin-top: -1.8em; -} -.pane-ocio-news-archive-trio-pane a.more-link, .pane-ocio-news-archive-trio-pane a.field--name-node-link { - margin-top: 0.2em; - font-weight: 400; - color: #2d2d2d; - font-size: 14px; -} -.pane-ocio-news-archive-trio-pane a.more-link:hover, .pane-ocio-news-archive-trio-pane a.field--name-node-link:hover { - text-decoration: none; - color: #028da9; -} -.pane-ocio-news-archive-trio-pane .views-field-title h3 { - font-size: 22px; - font-size: 2.2rem; - margin-top: 0.4em; - line-height: 120%; - margin-bottom: 0.5em; -} -.pane-ocio-news-archive-trio-pane .field--name-post-date { - font-weight: 400; - color: #666666; - font-size: 15px; - font-size: 1.5rem; -} -.pane-ocio-news-archive-trio-pane .views-field-field-ocio-body a, .pane-ocio-news-archive-trio-pane .views-field-field-ocio-body:hover { - color: #2d2d2d; - text-decoration: none; -} -@media (min-width: 47.5em) { - .pane-ocio-news-archive-trio-pane .views-row-1 { - width: 33.9%; - float: left; - padding-right: 4%; - } - .pane-ocio-news-archive-trio-pane .views-row-2 { - width: 33.9%; - float: left; - padding-left: 2%; - padding-right: 2%; - } - .pane-ocio-news-archive-trio-pane .views-row-3 { - width: 32.2%; - float: right; - padding-left: 4%; - } -} -.view-display-id-archive_listing_block h3 { - font-size: 18px; - font-size: 1.8rem; - text-transform: uppercase; - color: #666666; - margin-top: 1.2em; -} -.view-display-id-archive_listing_block .views-field-title h4 { - font-size: 16px; - font-size: 1.6rem; - margin-top: 0.6em; - font-weight: 400; +.panels-ipe-editing .panels-ipe-portlet-content { + overflow: visible; } -h2.pane-title { - margin-top: 0 !important; - margin-bottom: 0.4em; - font-size: 24px; - font-size: 2.4rem; - line-height: 120%; +.panels-ipe-sort-container > .panels-ipe-portlet-wrapper:last-child .panel-pane { + margin-bottom: 0; } .sidebar-panel { @@ -1643,16 +1544,14 @@ h2.pane-title { padding-top: 3em; padding-bottom: 3em; } -.panels-row.empty { - padding: 0; -} - -.row-header.panels-row { +.panels-row.first { padding-top: 1em; } - -.row-tiles.panels-row { - padding-bottom: 1.5em; +.panels-row.last { + padding-bottom: 3em; +} +.panels-row.empty { + padding: 0; } .tiles-header-panel { @@ -1660,10 +1559,6 @@ h2.pane-title { margin-bottom: 2.5em; } -.tile-panel { - margin-bottom: 1.5em; -} - .more-link, .field--name-node-link { font-size: 15px; font-size: 1.5rem; @@ -1779,125 +1674,126 @@ p.search-result__snippet { .panel-pane.pane-bundle-tile-pane:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane .title-box { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane { background: #fff; - padding: 0.8em 1em; width: 100%; z-index: 99; } -.panel-pane.pane-bundle-tile-pane .title-box.lt-gray { - background: #ededed; -} -.panel-pane.pane-bundle-tile-pane .title-box.md-gray { - background: #666666; -} -.panel-pane.pane-bundle-tile-pane .title-box.dk-gray { - background: #2d2d2d; -} -.panel-pane.pane-bundle-tile-pane .title-box.black { - background: black; -} -.panel-pane.pane-bundle-tile-pane .title-box.red { - background: #b00; -} -.panel-pane.pane-bundle-tile-pane a { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a { text-decoration: none; color: #b00; } -.panel-pane.pane-bundle-tile-pane a:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:visited { color: #b00; } -.panel-pane.pane-bundle-tile-pane a:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:hover { color: #666666; } -.panel-pane.pane-bundle-tile-pane a:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.lt-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray { + background: #ededed; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:visited { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:hover { color: #b00; } -.panel-pane.pane-bundle-tile-pane a.lt-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.lt-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.md-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray { + background: #666666; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.md-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.md-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.md-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.md-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.md-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.dk-gray { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray { + background: #2d2d2d; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.dk-gray:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.dk-gray a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.black { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black { + background: black; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.black:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.black:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.black:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.black:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.black a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.red { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red { + background: #b00; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.red:visited { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:visited { color: #fff; } -.panel-pane.pane-bundle-tile-pane a.red:focus { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane a.red:hover { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:hover { color: #ededed; } -.panel-pane.pane-bundle-tile-pane a.red:active { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane.red a:active { color: #028da9; } -.panel-pane.pane-bundle-tile-pane .title-text { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box { + padding: 0.8em 1em; +} +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-text { display: table-cell; vertical-align: middle; - padding-right: 2em; width: 100%; } -.panel-pane.pane-bundle-tile-pane .title-text h2 { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-text h2 { font-size: 18px; font-size: 1.8rem; line-height: 110%; @@ -1906,13 +1802,13 @@ p.search-result__snippet { margin-top: 1px; padding: 0; } -.panel-pane.pane-bundle-tile-pane .title-icon { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .title-box .title-icon { display: table-cell; vertical-align: middle; font-size: 24px; font-size: 2.4rem; } -.panel-pane.pane-bundle-tile-pane .field--name-field-tile-background-img img { +.panel-pane.pane-bundle-tile-pane .fieldable-panels-pane .field--name-field-tile-background-img img { margin-bottom: -0.5em; } @@ -1934,23 +1830,24 @@ p.search-result__snippet { .panel-pane.pane-bundle-tile-pane-plus-text-area:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane { background: #fff; - padding: 1.4em 1.4em 1em 1.4em; - margin-top: -0.4em; width: 100%; z-index: 99; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas.lt-gray { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane.lt-gray { background: #ededed; } -.panel-pane.pane-bundle-tile-pane-plus-text-area .text-areas:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane:hover { opacity: 0.9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane .text-areas { + padding: 1.4em 1.4em 1em 1.4em; +} +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a { text-decoration: none; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2 { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2 { font-size: 22px; font-size: 2.2rem; font-weight: 400; @@ -1958,19 +1855,19 @@ p.search-result__snippet { text-decoration: none; color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:visited { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:visited { color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:focus { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:hover { color: #b00; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a h2:active { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a h2:active { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p { font-size: 13px; font-size: 1.3rem; line-height: 150%; @@ -1978,16 +1875,16 @@ p.search-result__snippet { margin: 0.6em 0; font-weight: 300; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:visited { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:visited { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:focus { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:focus { color: #028da9; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:hover { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:hover { color: #2d2d2d; } -.panel-pane.pane-bundle-tile-pane-plus-text-area a p:active { +.panel-pane.pane-bundle-tile-pane-plus-text-area .fieldable-panels-pane a p:active { color: #b00; } @@ -2065,7 +1962,77 @@ div.workbench-info-block #edit-submit { padding: 0 !important; } .node-type-ocio-landing-page h1#page-title { - padding-bottom: 0.4em; + margin-top: 0.8em; + padding-bottom: 0.6em; +} + +.node-type-ocio-landing-page .block--ds-extras-ds-hero { + position: relative; + max-height: 420px; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image { + position: relative; + top: 0; + z-index: 9; + max-height: 420px; + overflow: hidden; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text { + position: absolute; + width: 100%; + padding-left: 1em; + padding-right: 1em; + text-align: center; + z-index: 99; + font-size: 30px; + font-size: 3rem; + line-height: 120%; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.white { + color: white; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.dk-gray { + color: #2d2d2d; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.black { + color: black; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-top { + top: 1em; +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-middle { + bottom: 45%; +} +@media (max-width: 47.5em) { + .node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-middle { + top: 1em; + } +} +.node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-bottom { + bottom: 1.2em; +} +@media (max-width: 47.5em) { + .node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text.center-bottom { + top: 1em; + } +} +@media (min-width: 47.5em) { + .node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text { + padding-left: 4em; + padding-right: 4em; + } +} +@media (min-width: 75em) { + .node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text { + padding-left: 6em; + padding-right: 6em; + } +} +@media (min-width: 85.375em) { + .node-type-ocio-landing-page .block--ds-extras-ds-hero .field--name-field-banner-image-text { + padding-left: 10em; + padding-right: 10em; + } } .l-footer-wrapper { @@ -2111,8 +2078,8 @@ div.workbench-info-block #edit-submit { color: #fff; background-color: #666666; margin: 0 0 1em 1em; - width: 2.6em; - padding: 0.5em 0 .4em 0; + width: 2.55em; + padding: 0.55em 0 0.4em; text-align: center; display: block; } @@ -2159,11 +2126,6 @@ div.workbench-info-block #edit-submit { background: white; } -#block-ds-extras-ds-hero { - max-height: 400px; - overflow: hidden; -} - /* Styles for main menu */ .l-region--main-menu .menu .leaf, .l-region--main-menu .menu .expanded, .l-region--main-menu .menu .collapsed, .l-region--sidebar-1 .menu .leaf, .l-region--sidebar-1 .menu .expanded, .l-region--sidebar-1 .menu .collapsed { list-style-image: none; @@ -3105,3 +3067,147 @@ a#skip:active:hover, a#skip:focus:hover { .view-mode-leadership_listing .field--name-field-bio { clear: both; } + +.node--article .field--name-byline { + margin: 0.8em 0 0.6em 0; + font-weight: 600; +} +.node--article .field--name-byline .pipe { + color: #b00; +} +.node--article .field--name-field-tags { + margin: 1.4em 0 1em 0; +} +.node--article .field--name-field-tags .field__label { + margin-right: 0.2em; +} +.node--article .article-modified { + margin-top: 1em; + font-size: 13px; + font-style: italic; +} +.node--article .article-modified .label-inline { + font-weight: 600; +} + +.node--article.view-mode-full .field--name-field-featured-image { + margin: 1em 0 1em 0; +} +@media (min-width: 47.5em) { + .node--article.view-mode-full .field--name-field-featured-image { + float: right; + margin: 1em 0 1em 1em; + } +} + +.view-ocio-news-archive .field--name-title { + margin-bottom: 0.6em; +} +.view-ocio-news-archive .field--name-node-link { + margin-top: 1em; +} + +.node--article--teaser .field--name-field-featured-image { + display: none; +} +@media (min-width: 47.5em) { + .node--article--teaser .field--name-field-featured-image { + display: block; + float: right; + margin: 0 0 1em 1em; + } +} + +.view-display-id-page .views-row, +.view-display-id-teasers_pane .views-row { + margin-bottom: 3em; +} +.view-display-id-page .views-row h2, +.view-display-id-teasers_pane .views-row h2 { + font-size: 32px; + font-size: 3.2rem; + line-height: 110%; +} +.view-display-id-page .views-row-first h2, +.view-display-id-teasers_pane .views-row-first h2 { + margin-top: 0.4em; +} +.view-display-id-page .views-row-last, +.view-display-id-teasers_pane .views-row-last { + margin-bottom: 0; +} + +.pane-ocio-news-archive-titles-pane .views-row { + margin-bottom: 0.2em; +} + +.pane-ocio-news-archive-trio-pane h2.pane-title { + font-size: 28px; + font-size: 2.8rem; + border-bottom: 1px solid #b00; + padding-bottom: 0.1em; + margin-bottom: 0; +} +.pane-ocio-news-archive-trio-pane .view-header { + margin-top: -1.6em; + margin-bottom: 2.4em; +} +.pane-ocio-news-archive-trio-pane a.more-link, .pane-ocio-news-archive-trio-pane a.field--name-node-link { + margin-top: 0.2em; + font-weight: 400; + color: #2d2d2d; + font-size: 14px; +} +.pane-ocio-news-archive-trio-pane a.more-link:hover, .pane-ocio-news-archive-trio-pane a.field--name-node-link:hover { + text-decoration: none; + color: #028da9; +} +.pane-ocio-news-archive-trio-pane .views-field-title h3 { + font-size: 22px; + font-size: 2.2rem; + margin-top: 0.4em; + line-height: 120%; + margin-bottom: 0.5em; +} +.pane-ocio-news-archive-trio-pane .field--name-post-date { + font-weight: 400; + color: #666666; + font-size: 15px; + font-size: 1.5rem; +} +.pane-ocio-news-archive-trio-pane .views-field-field-ocio-body a, .pane-ocio-news-archive-trio-pane .views-field-field-ocio-body:hover { + color: #2d2d2d; + text-decoration: none; +} +@media (min-width: 47.5em) { + .pane-ocio-news-archive-trio-pane .views-row-1 { + width: 33.9%; + float: left; + padding-right: 4%; + } + .pane-ocio-news-archive-trio-pane .views-row-2 { + width: 33.9%; + float: left; + padding-left: 2%; + padding-right: 2%; + } + .pane-ocio-news-archive-trio-pane .views-row-3 { + width: 32.2%; + float: right; + padding-left: 4%; + } +} + +.view-display-id-archive_listing_block h3 { + font-size: 18px; + font-size: 1.8rem; + text-transform: uppercase; + color: #666666; + margin-top: 1.2em; +} +.view-display-id-archive_listing_block .views-field-title h4 { + font-size: 16px; + font-size: 1.6rem; + margin-top: 0.6em; + font-weight: 400; +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/.gitignore b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/.gitignore new file mode 100644 index 00000000..1da85220 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/CHANGELOG.md b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/CHANGELOG.md new file mode 100644 index 00000000..8f3c1854 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/CHANGELOG.md @@ -0,0 +1,43 @@ +# jquery.matchHeight.js Changelog + +[brm.io/jquery-match-height](http://brm.io/jquery-match-height/) + +---------- + +## 0.6.0 + +- added options parameter +- added `property` option +- added `target` option +- added callback events +- added maintain scroll +- added inline-block support +- added hidden elements support +- improved performance and throttling +- improved demo + +- fixed declaration order issue when using requirejs +- fixed issues for people using build concatenation +- fixed data api issue with missing data-mh +- fixed IE8 border calculation +- fixed Safari row detection +- fixed inline style preservation + +## 0.5.2 + +- improved demo +- added matchHeight('remove') +- added update throttling +- removed forced `display:block` after application + +## 0.5.1 + +- fixed IE8 NaN bug when parsing 'auto' properties +- fixed IE8 window resize event loop bug +- fixed compatibility with older jQuery versions +- added bower package file +- added jquery package file + +## 0.5.0 - 2014-03-02 + +- initial release \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/LICENSE b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/LICENSE new file mode 100644 index 00000000..d434f8fb --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Liam Brummitt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/README.md b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/README.md new file mode 100644 index 00000000..46971ec0 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/README.md @@ -0,0 +1,199 @@ +# jquery.matchHeight.js # + +> *matchHeight* makes the height of all selected elements exactly equal.<br> +It handles many edge cases that cause similar plugins to fail. + +[brm.io/jquery-match-height](http://brm.io/jquery-match-height/) + +[](http://libscore.com#$.fn.matchHeight) + +### Demo + +See the [jquery.matchHeight.js demo](http://brm.io/jquery-match-height-demo). + +[](http://brm.io/jquery-match-height-demo) + +### Features + +- match the heights for groups of elements automatically +- use the maximum height or define a specific target element +- anywhere on the page and anywhere in the DOM +- responsive (updates on window resize) +- row aware (handles floating elements and wrapping) +- accounts for `box-sizing` and mixed `padding`, `margin`, `border` values +- handles images and other media (updates after loading) +- supports hidden or none-visible elements (e.g. those inside tab controls) +- throttled to balance performance and smoothness +- easily removed when needed +- maintain scroll position +- data attributes API +- callback events +- tested in IE8+, Chrome, Firefox, Chrome Android + +### Status + +Current version is `v0.6.0`. <br> +Use the master build for the latest features. <br> +Please report any [issues](https://github.com/liabru/jquery-match-height/issues) you find. + +### Install + +[jQuery](http://jquery.com/download/) is required, so include it first. +<br>Download [jquery.matchHeight.js](https://github.com/liabru/jquery-match-height/blob/master/jquery.matchHeight.js) and include the script in your HTML file: + + <script src="jquery.matchHeight.js" type="text/javascript"></script> + +#### Or install using [Bower](http://bower.io/) + + bower install matchHeight + +### Usage + + $(elements).matchHeight(options); + +Where options is an optional parameter. <br> +See below for a description of the available options and defaults. + +Call this on the [DOM ready](http://api.jquery.com/ready/) event (the plugin will automatically update on window load). <br> +See below for examples or the included [test.html](https://github.com/liabru/jquery-match-height/blob/master/test.html). + +Also see the [Data API](#data-api) below for a simple, alternative inline usage. + +### Options + +The default options are: + + $(elements).matchHeight({ + byRow: true, + property: 'height', + target: null, + remove: false + }); + +Where: + +- `byRow` is `true` or `false` to enable row detection +- `property` is the CSS property name to set (e.g. `'height'` or `'min-height'`) +- `target` is an optional element to use instead of the element with maximum height +- `remove` is `true` or `false` to remove previous bindings instead of applying new ones + +### Examples + + $(function() { + $('.item').matchHeight(); + }); + +The above will set all elements with the class `item` to the height of the tallest.<br> +If the items are on multiple rows, the items of each row will be set to the tallest of that row (see `byRow`). + + $(function() { + $('.item').matchHeight({ + target: $('.sidebar') + }); + }); + +The above will set all elements with the class `item` to the height of the first item with class `sidebar`. + + <div data-mh="my-group">My text</div> + <div data-mh="my-group">Some other text</div> + <div data-mh="my-other-group">Even more text</div> + <div data-mh="my-other-group">The last bit of text</div> + +The above will set both elements in `my-group` to the same height as each other. +It will set both elements in `my-other-group` to be the same height as each other. + +See the included [test.html](https://github.com/liabru/jquery-match-height/blob/master/test.html) for a working example. + +### Data API + +Use the data attribute `data-mh="group-name"` where `group-name` is an arbitrary string to identify which elements should be considered as a group. + +All elements with the same group name will be set to the same height when the page is loaded, regardless of their position in the DOM, without any extra code required. + +Note that `byRow` will be enabled when using the data API, if you don't want this (or require other options) then use the alternative method above. + +### Advanced Usage + +There are a few internal properties and functions you should know about: + +#### Manually trigger an update + + $.fn.matchHeight._update() + +If you need to manually trigger an update of all currently set groups, for example if you've modified some content. + +#### Callback events + +Since matchHeight automatically handles updating the layout after certain window events, you can supply functions as global callbacks if you need to be notified: + + $.fn.matchHeight._beforeUpdate = function(event, groups) { + // do something before any updates are applied + } + + $.fn.matchHeight._afterUpdate = function(event, groups) { + // do something after all updates are applied + } + +Where `event` a jQuery event object (e.g. `load`, `resize`, `orientationchange`) and `groups` is a reference to `$.fn.matchHeight._groups` (see below). + +#### Manually apply match height + + $.fn.matchHeight._apply(elements, options) + +Use the apply function directly if you wish to avoid the automatic update functionality. + +#### Throttling resize updates + + $.fn.matchHeight._throttle = 80; + +By default, the `_update` method is throttled to execute at a maximum rate of once every `80ms`. +Decreasing the above `_throttle` property will update your layout quicker, appearing smoother during resize, at the expense of performance. +If you experience lagging or freezing during resize, you should increase the `_throttle` property. + +#### Maintain scroll position + + $.fn.matchHeight._maintainScroll = true; + +Under certain conditions where the size of the page is dynamically changing, such as during resize or when adding new elements, browser bugs cause the page scroll position to change unexpectedly. + +If you are observing this behaviour, use the above line to automatically attempt to force scroll position to be maintained (approximately). This is a global setting and by default it is `false`. + +#### Accessing current group bindings + + $.fn.matchHeight._groups + +The array that contains all element groups that have had `matchHeight` applied. Used internally for automatically updating on resize events, but you may modify this array if you need to manually access any groups (e.g. if you're deleting elements). + +### Known limitations + +#### CSS transitions and animations are not supported + +You should ensure that there are no transitions or other animations that will delay the height changes of the elements you are matching, including any `transition: all` rules. Otherwise the plugin will produce unexpected results, as animations can't be accounted for. + +#### Delayed webfonts may cause incorrect height + +Some browsers [do not wait](http://www.stevesouders.com/blog/2009/10/13/font-face-and-performance/) for webfonts to load before firing the window load event, so if the font loads too slowly the plugin may produce unexpected results. + +If this is a problem, you should call `_update` once your font has loaded by using something like the [webfontloader](https://github.com/typekit/webfontloader) script. + +#### Content changes require a manual update + +If you change the content inside an element that has had `matchHeight` applied, then you must manually call `$.fn.matchHeight._update()` afterwards. This will update of all currently set equal heights groups. + +### Changelog + +To see what's new or changed in the latest version, see the [changelog](https://github.com/liabru/jquery-match-height/blob/master/CHANGELOG.md) + +### License + +jquery.matchHeight.js is licensed under [The MIT License (MIT)](http://opensource.org/licenses/MIT) +<br/>Copyright (c) 2014 Liam Brummitt + +This license is also supplied with the release and source code. +<br/>As stated in the license, absolutely no warranty is provided. + +##### Why not use CSS? + +Making robust, responsive equal height columns for _arbitrary content_ is [difficult or impossible](http://filamentgroup.com/lab/setting_equal_heights_with_jquery/) to do with CSS alone (at least without hacks or trickery, in a backwards compatible way). + +Note you should probably ensure your layout is still usable if JavaScript is disabled. diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/bower.json b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/bower.json new file mode 100644 index 00000000..589795e6 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/bower.json @@ -0,0 +1,26 @@ +{ + "name": "matchHeight", + "version": "0.6.0", + "homepage": "https://github.com/liabru/jquery-match-height", + "authors": [ + "Liam Brummitt <liam@brm.io> (http://brm.io/)" + ], + "description": "a more robust, responsive equal heights plugin for jQuery", + "main": "jquery.matchHeight-min.js", + "keywords": [ + "matchHeight", + "equal", + "match", + "height", + "equalize", + "columns" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight-min.js b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight-min.js new file mode 100644 index 00000000..470db9f8 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight-min.js @@ -0,0 +1,11 @@ +/** +* jquery.matchHeight-min.js master +* http://brm.io/jquery-match-height/ +* License: MIT +*/ +(function(c){var n=-1,f=-1,g=function(a){return parseFloat(a)||0},r=function(a){var b=null,d=[];c(a).each(function(){var a=c(this),k=a.offset().top-g(a.css("margin-top")),l=0<d.length?d[d.length-1]:null;null===l?d.push(a):1>=Math.floor(Math.abs(b-k))?d[d.length-1]=l.add(a):d.push(a);b=k});return d},p=function(a){var b={byRow:!0,property:"height",target:null,remove:!1};if("object"===typeof a)return c.extend(b,a);"boolean"===typeof a?b.byRow=a:"remove"===a&&(b.remove=!0);return b},b=c.fn.matchHeight= +function(a){a=p(a);if(a.remove){var e=this;this.css(a.property,"");c.each(b._groups,function(a,b){b.elements=b.elements.not(e)});return this}if(1>=this.length&&!a.target)return this;b._groups.push({elements:this,options:a});b._apply(this,a);return this};b._groups=[];b._throttle=80;b._maintainScroll=!1;b._beforeUpdate=null;b._afterUpdate=null;b._apply=function(a,e){var d=p(e),h=c(a),k=[h],l=c(window).scrollTop(),f=c("html").outerHeight(!0),m=h.parents().filter(":hidden");m.each(function(){var a=c(this); +a.data("style-cache",a.attr("style"))});m.css("display","block");d.byRow&&!d.target&&(h.each(function(){var a=c(this),b=a.css("display");"inline-block"!==b&&"inline-flex"!==b&&(b="block");a.data("style-cache",a.attr("style"));a.css({display:b,"padding-top":"0","padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px"})}),k=r(h),h.each(function(){var a=c(this);a.attr("style",a.data("style-cache")||"")}));c.each(k,function(a,b){var e=c(b), +f=0;if(d.target)f=d.target.outerHeight(!1);else{if(d.byRow&&1>=e.length){e.css(d.property,"");return}e.each(function(){var a=c(this),b=a.css("display");"inline-block"!==b&&"inline-flex"!==b&&(b="block");b={display:b};b[d.property]="";a.css(b);a.outerHeight(!1)>f&&(f=a.outerHeight(!1));a.css("display","")})}e.each(function(){var a=c(this),b=0;d.target&&a.is(d.target)||("border-box"!==a.css("box-sizing")&&(b+=g(a.css("border-top-width"))+g(a.css("border-bottom-width")),b+=g(a.css("padding-top"))+g(a.css("padding-bottom"))), +a.css(d.property,f-b+"px"))})});m.each(function(){var a=c(this);a.attr("style",a.data("style-cache")||null)});b._maintainScroll&&c(window).scrollTop(l/f*c("html").outerHeight(!0));return this};b._applyDataApi=function(){var a={};c("[data-match-height], [data-mh]").each(function(){var b=c(this),d=b.attr("data-mh")||b.attr("data-match-height");a[d]=d in a?a[d].add(b):b});c.each(a,function(){this.matchHeight(!0)})};var q=function(a){b._beforeUpdate&&b._beforeUpdate(a,b._groups);c.each(b._groups,function(){b._apply(this.elements, +this.options)});b._afterUpdate&&b._afterUpdate(a,b._groups)};b._update=function(a,e){if(e&&"resize"===e.type){var d=c(window).width();if(d===n)return;n=d}a?-1===f&&(f=setTimeout(function(){q(e);f=-1},b._throttle)):q(e)};c(b._applyDataApi);c(window).bind("load",function(a){b._update(!1,a)});c(window).bind("resize orientationchange",function(a){b._update(!0,a)})})(jQuery); \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight.js b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight.js new file mode 100644 index 00000000..392bd1a6 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/jquery.matchHeight.js @@ -0,0 +1,363 @@ +/** +* jquery.matchHeight.js master +* http://brm.io/jquery-match-height/ +* License: MIT +*/ + +;(function($) { + /* + * internal + */ + + var _previousResizeWidth = -1, + _updateTimeout = -1; + + /* + * _parse + * value parse utility function + */ + + var _parse = function(value) { + // parse value and convert NaN to 0 + return parseFloat(value) || 0; + }; + + /* + * _rows + * utility function returns array of jQuery selections representing each row + * (as displayed after float wrapping applied by browser) + */ + + var _rows = function(elements) { + var tolerance = 1, + $elements = $(elements), + lastTop = null, + rows = []; + + // group elements by their top position + $elements.each(function(){ + var $that = $(this), + top = $that.offset().top - _parse($that.css('margin-top')), + lastRow = rows.length > 0 ? rows[rows.length - 1] : null; + + if (lastRow === null) { + // first item on the row, so just push it + rows.push($that); + } else { + // if the row top is the same, add to the row group + if (Math.floor(Math.abs(lastTop - top)) <= tolerance) { + rows[rows.length - 1] = lastRow.add($that); + } else { + // otherwise start a new row group + rows.push($that); + } + } + + // keep track of the last row top + lastTop = top; + }); + + return rows; + }; + + /* + * _parseOptions + * handle plugin options + */ + + var _parseOptions = function(options) { + var opts = { + byRow: true, + property: 'height', + target: null, + remove: false + }; + + if (typeof options === 'object') { + return $.extend(opts, options); + } + + if (typeof options === 'boolean') { + opts.byRow = options; + } else if (options === 'remove') { + opts.remove = true; + } + + return opts; + }; + + /* + * matchHeight + * plugin definition + */ + + var matchHeight = $.fn.matchHeight = function(options) { + var opts = _parseOptions(options); + + // handle remove + if (opts.remove) { + var that = this; + + // remove fixed height from all selected elements + this.css(opts.property, ''); + + // remove selected elements from all groups + $.each(matchHeight._groups, function(key, group) { + group.elements = group.elements.not(that); + }); + + // TODO: cleanup empty groups + + return this; + } + + if (this.length <= 1 && !opts.target) { + return this; + } + + // keep track of this group so we can re-apply later on load and resize events + matchHeight._groups.push({ + elements: this, + options: opts + }); + + // match each element's height to the tallest element in the selection + matchHeight._apply(this, opts); + + return this; + }; + + /* + * plugin global options + */ + + matchHeight._groups = []; + matchHeight._throttle = 80; + matchHeight._maintainScroll = false; + matchHeight._beforeUpdate = null; + matchHeight._afterUpdate = null; + + /* + * matchHeight._apply + * apply matchHeight to given elements + */ + + matchHeight._apply = function(elements, options) { + var opts = _parseOptions(options), + $elements = $(elements), + rows = [$elements]; + + // take note of scroll position + var scrollTop = $(window).scrollTop(), + htmlHeight = $('html').outerHeight(true); + + // get hidden parents + var $hiddenParents = $elements.parents().filter(':hidden'); + + // cache the original inline style + $hiddenParents.each(function() { + var $that = $(this); + $that.data('style-cache', $that.attr('style')); + }); + + // temporarily must force hidden parents visible + $hiddenParents.css('display', 'block'); + + // get rows if using byRow, otherwise assume one row + if (opts.byRow && !opts.target) { + + // must first force an arbitrary equal height so floating elements break evenly + $elements.each(function() { + var $that = $(this), + display = $that.css('display'); + + // temporarily force a usable display value + if (display !== 'inline-block' && display !== 'inline-flex') { + display = 'block'; + } + + // cache the original inline style + $that.data('style-cache', $that.attr('style')); + + $that.css({ + 'display': display, + 'padding-top': '0', + 'padding-bottom': '0', + 'margin-top': '0', + 'margin-bottom': '0', + 'border-top-width': '0', + 'border-bottom-width': '0', + 'height': '100px' + }); + }); + + // get the array of rows (based on element top position) + rows = _rows($elements); + + // revert original inline styles + $elements.each(function() { + var $that = $(this); + $that.attr('style', $that.data('style-cache') || ''); + }); + } + + $.each(rows, function(key, row) { + var $row = $(row), + targetHeight = 0; + + if (!opts.target) { + // skip apply to rows with only one item + if (opts.byRow && $row.length <= 1) { + $row.css(opts.property, ''); + return; + } + + // iterate the row and find the max height + $row.each(function(){ + var $that = $(this), + display = $that.css('display'); + + // temporarily force a usable display value + if (display !== 'inline-block' && display !== 'inline-flex') { + display = 'block'; + } + + // ensure we get the correct actual height (and not a previously set height value) + var css = { 'display': display }; + css[opts.property] = ''; + $that.css(css); + + // find the max height (including padding, but not margin) + if ($that.outerHeight(false) > targetHeight) { + targetHeight = $that.outerHeight(false); + } + + // revert display block + $that.css('display', ''); + }); + } else { + // if target set, use the height of the target element + targetHeight = opts.target.outerHeight(false); + } + + // iterate the row and apply the height to all elements + $row.each(function(){ + var $that = $(this), + verticalPadding = 0; + + // don't apply to a target + if (opts.target && $that.is(opts.target)) { + return; + } + + // handle padding and border correctly (required when not using border-box) + if ($that.css('box-sizing') !== 'border-box') { + verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width')); + verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom')); + } + + // set the height (accounting for padding and border) + $that.css(opts.property, (targetHeight - verticalPadding) + 'px'); + }); + }); + + // revert hidden parents + $hiddenParents.each(function() { + var $that = $(this); + $that.attr('style', $that.data('style-cache') || null); + }); + + // restore scroll position if enabled + if (matchHeight._maintainScroll) { + $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true)); + } + + return this; + }; + + /* + * matchHeight._applyDataApi + * applies matchHeight to all elements with a data-match-height attribute + */ + + matchHeight._applyDataApi = function() { + var groups = {}; + + // generate groups by their groupId set by elements using data-match-height + $('[data-match-height], [data-mh]').each(function() { + var $this = $(this), + groupId = $this.attr('data-mh') || $this.attr('data-match-height'); + + if (groupId in groups) { + groups[groupId] = groups[groupId].add($this); + } else { + groups[groupId] = $this; + } + }); + + // apply matchHeight to each group + $.each(groups, function() { + this.matchHeight(true); + }); + }; + + /* + * matchHeight._update + * updates matchHeight on all current groups with their correct options + */ + + var _update = function(event) { + if (matchHeight._beforeUpdate) { + matchHeight._beforeUpdate(event, matchHeight._groups); + } + + $.each(matchHeight._groups, function() { + matchHeight._apply(this.elements, this.options); + }); + + if (matchHeight._afterUpdate) { + matchHeight._afterUpdate(event, matchHeight._groups); + } + }; + + matchHeight._update = function(throttle, event) { + // prevent update if fired from a resize event + // where the viewport width hasn't actually changed + // fixes an event looping bug in IE8 + if (event && event.type === 'resize') { + var windowWidth = $(window).width(); + if (windowWidth === _previousResizeWidth) { + return; + } + _previousResizeWidth = windowWidth; + } + + // throttle updates + if (!throttle) { + _update(event); + } else if (_updateTimeout === -1) { + _updateTimeout = setTimeout(function() { + _update(event); + _updateTimeout = -1; + }, matchHeight._throttle); + } + }; + + /* + * bind events + */ + + // apply on DOM ready event + $(matchHeight._applyDataApi); + + // update heights on load and resize events + $(window).bind('load', function(event) { + matchHeight._update(false, event); + }); + + // throttled update heights on resize events + $(window).bind('resize orientationchange', function(event) { + matchHeight._update(true, event); + }); + +})(jQuery); diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/lib/jquery-1.11.0.min.js b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/lib/jquery-1.11.0.min.js new file mode 100644 index 00000000..73f33fb3 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/lib/jquery-1.11.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"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){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b) +},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.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){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n}); diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/matchHeight.jquery.json b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/matchHeight.jquery.json new file mode 100644 index 00000000..da04dd2d --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/matchHeight.jquery.json @@ -0,0 +1,32 @@ +{ + "name": "matchHeight", + "title": "jQuery matchHeight", + "description": "A more robust equal heights plugin for jQuery", + "keywords": [ + "matchHeight", + "equal", + "match", + "height", + "equalize", + "columns" + ], + "version": "0.6.0", + "author": { + "name": "liabru", + "url": "http://brm.io" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/liabru/jquery-match-height/blob/master/LICENSE" + } + ], + "demo": "http://brm.io/jquery-match-height-demo/", + "bugs": "https://github.com/liabru/jquery-match-height/issues", + "homepage": "http://brm.io/jquery-match-height/", + "docs": "http://brm.io/jquery-match-height/", + "download": "https://github.com/liabru/jquery-match-height", + "dependencies": { + "jquery": ">=1.5" + } +} \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.css b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.css new file mode 100644 index 00000000..9f469020 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.css @@ -0,0 +1,292 @@ +/* test page styling */ + +* { + padding: 0; + margin: 0; +} + +body { + background: #033649; + font-family: Georgia, Times, "Times New Roman", serif; + color: #fff; + border: 9px solid #fff; +} + +h1 { + color: #fff; + display: block; + margin: 0 0 1em 0; + font-weight: normal; + font-size: 30px; +} + +h2 { + color: #ddd; + display: block; + margin: 0 0 1em 0; + font-weight: normal; + font-size: 24px; +} + +p, ul li { + margin: 0 0 1em 0; + color: #bebebe; + font-size: 12px; +} + +ul { + list-style: square; +} + +.nav { + margin: 0 0 2em 0; + font-size: 16px; +} + +a, a:link, a:visited, a:active, a:hover { + color: #ccc; + text-decoration: none; + border-bottom: 1px solid #555; + padding: 0 0 2px 0; +} + +.container { + width: 80%; + margin: 0 auto; + padding: 60px 20px; +} + +.nav-sep { + padding: 0 5px; +} + +.controls { + overflow: hidden; + margin: 60px 0 30px 0; +} + +.controls .checkbox { + float: left; + font-size: 13px; + color: #ddd; + margin: 5px 20px 5px 0; +} + +.btn-remove, +.btn-hidden { + margin: -8px 20px 0 20px; + line-height: 1; + border: 0; + background: #ddd; + color: #555; + padding: 7px 10px; +} + +/* test items */ + +.items-container, +.data-test-items, +.target-items { + overflow: hidden; + margin: 0 -1%; +} + +.item { + display: block; + float: left; + width: 23%; + background: #00A0B0; +} + +.item p { + color: rgba(255,255,255,0.6); + line-height: 1.5; + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; +} + +.item h2, +.item h3, +.item h4 { + color: #fff; + margin: 0 0 1em 0; + font-weight: normal; +} + +.item h2 { + font-size: 24px; +} + +.item h3 { + font-size: 20px; +} + +.item h4 { + font-size: 16px; +} + +.item-0 { background: #00A0B0; border-color: #008795 !important; } +.item-1 { background: #6A4A3C; border-color: #52392e !important; } +.item-2 { background: #CC333F; border-color: #ad2b35 !important; } +.item-3 { background: #EB6841; border-color: #ca5938 !important; } +.item-4 { background: #EDC951; border-color: #d8b74a !important; } +.item-5 { background: #00A0B0; border-color: #008795 !important; } +.item-6 { background: #6A4A3C; border-color: #52392e !important; } +.item-7 { background: #CC333F; border-color: #ad2b35 !important; } +.item-8 { background: #EB6841; border-color: #ca5938 !important; } +.item-9 { background: #EDC951; border-color: #d8b74a !important; } +.item-10 { background: #00A0B0; border-color: #008795 !important; } +.item-11 { background: #6A4A3C; border-color: #52392e !important; } + +.item img { + display: block; + max-width: 100%; +} + +.item p:last-child { + margin-bottom: 0; +} + +.items-container.big-items .item { + width: 48%; +} + +/* test margins */ + +.test-margin .item { + margin: 1%; +} + +/* test a mix of padding amounts */ + +.test-padding .item { + padding: 20px; +} + +.test-padding .item-5 { + padding: 30px; +} + +.test-padding .item-6 { + padding: 40px; +} + +.test-padding .item-7 { + padding: 50px; +} + +/* test a mix of border widths */ + +.test-border .item { + border: 1px solid #eee; +} + +.test-border .item-2 { + border: 3px solid #eee; +} + +.test-border .item-3 { + border: 6px solid #eee; +} + +.test-border .item-5 { + border: 8px solid #eee; +} + +.test-border .item-8 { + border: 10px solid #eee; +} + +/* test border-box */ + +.test-border-box .item { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +/* test fixed height items */ + +.items-container.fixed-items .item-0 { + height: 150px; +} + +.items-container.fixed-items .item-1 { + height: 190px; +} + +.items-container.fixed-items .item-2 { + height: 230px; +} + +.items-container.fixed-items .item-3 { + height: 250px; +} + +/* test target */ + +.target-items .item { + overflow-y: auto; +} + +/* test responsive */ + +@media only screen and (max-width: 1024px) { + .item, + .items-container.big-items .item { + width: 48%; + } +} + +@media only screen and (max-width: 640px) { + .test-margin .item, + .test-margin .items-container.big-items .item { + width: 99%; + margin-left: 0; + margin-right: 0; + } +} + +/* test hidden */ + +.test-hidden .hidden-items > .item-0, +.test-hidden .hidden-items > .item-2 { + display: none; +} + +.test-hidden .hidden-items > .item-1, +.test-hidden .hidden-items > .item-3 { + visibility: hidden; +} + +.test-hidden .hidden-items .items-container { + display: none; +} + +.hidden-items .items-container .item { + width: 48%; +} + +/* test inline-block */ + +.inline-block-items { + text-align: center; +} + +.inline-block-items .item { + display: inline-block; + vertical-align: top; + /*width: 20%;*/ + float: none; +} + +/* test inline-flex */ + +.inline-flex-items { + text-align: center; +} + +.inline-flex-items .item { + display: inline-flex; + vertical-align: top; + float: none; +} \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.html b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.html new file mode 100644 index 00000000..90e82e4c --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.html @@ -0,0 +1,349 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <!-- IE testing --> + <!-- <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">--> + <!-- <meta http-equiv="X-UA-Compatible" content="IE=9">--> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="robots" content="noindex"> + <title>jquery.matchHeight Tests</title> + <link rel="stylesheet" href="./test.css"> + <script type="text/javascript" src="./lib/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="./jquery.matchHeight.js"></script> + <script type="text/javascript" src="./test.js"></script> + <script type="text/javascript"> + (function() { + + /* matchHeight example */ + + $(function() { + // apply your matchHeight on DOM ready (they will be automatically re-applied on load or resize) + + // get test settings + var byRow = $('body').hasClass('test-rows'); + + // apply matchHeight to each item container's items + $('.items-container').each(function() { + $(this).children('.item').matchHeight({ + byRow: byRow + }); + }); + + // test target + $('.target-items').each(function() { + $(this).children('.item-0, .item-2, .item-3').matchHeight({ + target: $(this).find('.item-1') + }); + }); + + // example of removing matchHeight + $('.btn-remove').click(function() { + $('.item').matchHeight({ + remove: true + }); + }); + + // button to show hidden elements + $('.btn-hidden').click(function() { + $('body').removeClass('test-hidden'); + }); + + // example of update callbacks (uncomment to test) + $.fn.matchHeight._beforeUpdate = function(event, groups) { + //var eventType = event ? event.type + ' event, ' : ''; + //console.log("beforeUpdate, " + eventType + groups.length + " groups"); + } + + $.fn.matchHeight._afterUpdate = function(event, groups) { + //var eventType = event ? event.type + ' event, ' : ''; + //console.log("afterUpdate, " + eventType + groups.length + " groups"); + } + }); + + })(); + </script> + </head> + <body class="test-match-height test-rows test-responsive test-border-box test-margin test-padding test-hidden"> + <div class="container"> + <h1>jquery.matchHeight Tests</h1> + + <div class="nav"><a href="http://brm.io/jquery-match-height/">Project page</a> <span class="nav-sep">·</span> <a href="https://github.com/liabru/jquery-match-height">GitHub</a></div> + + <ul> + <li>A more robust equal heights plugin that correctly handles mixed padding, margin, border, box-sizing, rows, groups</li> + <li>Handles images and responsive layouts by automatically updating when needed</li> + <li>To test, apply different combinations of options below to try different edge case scenarios</li> + <li>Resize the browser to test the responsive updating</li> + </ul> + + <div class="controls"> + <div class="checkbox"> + <label> + <input class="option" type="checkbox" value="test-padding" checked> + padding + </label> + </div> + <div class="checkbox"> + <label> + <input class="option" type="checkbox" value="test-margin" checked> + margin + </label> + </div> + <div class="checkbox"> + <label> + <input class="option" type="checkbox" value="test-border" checked> + border + </label> + </div> + <div class="checkbox"> + <label> + <input class="option" type="checkbox" value="test-border-box" checked> + border-box + </label> + </div> + <div class="checkbox"> + <label> + <input class="option" type="checkbox" value="test-rows" checked> + by row + </label> + </div> + <div class="checkbox"> + <label> + <input class="btn-remove" type="submit" value="remove matchHeight"> + </label> + </div> + <div class="checkbox"> + <label> + <input class="btn-hidden" type="submit" value="show hidden"> + </label> + </div> + </div> + + <div class="items-container"> + <div class="item item-0"> + <h2>Lorem ipsum</h2> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + </div> + <div class="item item-1"> + <h3>Lorem ipsum dolor</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + </div> + <div class="item item-2"> + <h4>Lorem ipsum dolor sit amet.</h4> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel. Nullam odio eros, sagittis vitae lectus id, pretium viverra lectus. Etiam auctor dolor non dui ultricies pulvinar.</p> + </div> + + <div class="item item-3"> + <h3>Lorem ipsum dolor</h3> + <p>Aenean semper.</p> + </div> + <div class="item item-4"> + <h3>Lorem ipsum dolor</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-5"> + <h3>Lorem ipsum dolor</h3> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + </div> + <div class="item item-6"> + <h3>Lorem ipsum dolor</h3> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> + </div> + <div class="item item-7"> + <h3>Lorem ipsum dolor</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + </div> + + <div class="item item-8"> + <img src="http://placehold.it/800x150/fafafa/666" alt="a test image"> + </div> + <div class="item item-9"> + <img src="http://placehold.it/800x180/fafafa/666" alt="a test image"> + </div> + <div class="item item-10"> + <img src="http://placehold.it/800x200/fafafa/666" alt="a test image"> + </div> + <div class="item item-11"> + <img src="http://placehold.it/800x220/fafafa/666" alt="a test image"> + </div> + </div> + + <div class="items-container big-items"> + <div class="item item-0"> + <h3>Lorem ipsum dolor</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-1"> + <div class="items-container"> + <div class="item item-2"> + <p>Aenean</p> + </div> + <div class="item item-3"> + <p>Lorem</p> + </div> + <div class="item item-4"> + <p>Phasellus</p> + </div> + <div class="item item-5"> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + </div> + <div class="item item-6"> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> + </div> + <div class="item item-7"> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + </div> + </div> + </div> + </div> + + <div class="data-test-items"> + <div class="item item-0" data-match-height="items-a"> + <h3>data-match-height="items-a"</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + </div> + <div class="item item-1" data-match-height="items-a"> + <h3>data-match-height="items-a"</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-2" data-mh="items-b"> + <h3>data-mh="items-b"</h3> + <p>In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-3" data-mh="items-b"> + <h3>data-mh="items-b"</h3> + <p>Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + </div> + + <div class="target-items"> + <div class="item item-0"> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-1"> + <h3>Target</h3> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-2"> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + <div class="item item-3"> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p> + <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p> + <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p> + </div> + </div> + + <div class="items-container fixed-items"> + <div class="item item-0"> + <p>Fixed height</p> + </div> + <div class="item item-1"> + <p>Fixed height</p> + </div> + <div class="item item-2"> + <p>Fixed height</p> + </div> + <div class="item item-3"> + <p>Fixed height</p> + </div> + </div> + + <div class="items-container inline-block-items"> + <div class="item item-0"> + <p>display: inline-block</p> + </div> + <div class="item item-1"> + <p>display: inline-block</p> + </div> + <div class="item item-2"> + <p>display: inline-block</p> + </div> + <div class="item item-3"> + <p>display: inline-block</p> + </div> + <div class="item item-4"> + <p>display: inline-block</p> + </div> + <div class="item item-5"> + <p>display: inline-block</p> + </div> + <div class="item item-6"> + <p>display: inline-block</p> + </div> + <div class="item item-7"> + <p>display: inline-block</p> + </div> + </div> + + <div class="items-container inline-flex-items"> + <div class="item item-0"> + <p>display: inline-flex</p> + </div> + <div class="item item-1"> + <p>display: inline-flex</p> + </div> + <div class="item item-2"> + <p>display: inline-flex</p> + </div> + <div class="item item-3"> + <p>display: inline-flex</p> + </div> + <div class="item item-4"> + <p>display: inline-flex</p> + </div> + <div class="item item-5"> + <p>display: inline-flex</p> + </div> + <div class="item item-6"> + <p>display: inline-flex</p> + </div> + <div class="item item-7"> + <p>display: inline-flex</p> + </div> + </div> + + <div class="items-container hidden-items"> + <div class="item item-0"> + <p>display: none</p> + </div> + <div class="item item-1"> + <p>visibility: hidden</p> + </div> + <div class="item item-2"> + <div class="items-container"> + <div class="item item-0"> + <p>parent display: none</p> + </div> + <div class="item item-0"> + <p>parent display: none</p> + </div> + </div> + </div> + <div class="item item-3"> + <div class="items-container"> + <div class="item item-1"> + <p>parent visibility: hidden</p> + </div> + <div class="item item-1"> + <p>parent visibility: hidden</p> + </div> + </div> + </div> + </div> + </div> + </body> +</html> diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.js b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.js new file mode 100644 index 00000000..086e191d --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/js/matchHeight/test.js @@ -0,0 +1,33 @@ +/* see test.html for example matchHeight usage */ + +/* testing page code only, you wont need this! */ + +(function() { + + $(function() { + bindTestOptions(); + }); + + var bindTestOptions = function() { + resetTestOptions(); + $('.option').change(resetTestOptions); + }; + + var resetTestOptions = function() { + // update test options + $('.option').each(function() { + var $this = $(this); + $('body').toggleClass($this.val(), $this.prop('checked')); + }); + + // update byRow option + var byRow = $('body').hasClass('test-rows'); + $.each($.fn.matchHeight._groups, function() { + this.options.byRow = byRow; + }); + + // update all heights + $.fn.matchHeight._update(); + }; + +})(); \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/js/ocio-omega-base.behaviors.js b/profiles/wcm_base/themes/ocio_omega_base/js/ocio-omega-base.behaviors.js index c3c1dce2..178e5d5b 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/js/ocio-omega-base.behaviors.js +++ b/profiles/wcm_base/themes/ocio_omega_base/js/ocio-omega-base.behaviors.js @@ -50,6 +50,9 @@ } }); + /* Match tile panes to equal height */ + $('.node-type-ocio-landing-page .row-tiles .tile-panel .fieldable-panels-pane').matchHeight({byRow: false}); + var toggleButton = $('#search-block-toggle').eq(0); var searchBox = $('#search-block-form').eq(0); var searchTextInput = searchBox.find('input.form-text').eq(0); @@ -63,6 +66,25 @@ toggleSearchBox(event); }); + $(document).ajaxSuccess(function( event, request, settings ) { + if (settings.url.indexOf("mediamagnet.osu.edu/api") >= 0 ) { + $('.pane-mm-widgets-live-pane.mm-channel-type-undefined').each(function() { + panel = $(this); + icons = panel.find('.item i.fa'); + $('.fa-fw').attr('class',function(index, classes) { + var newClass = icons.first().attr('class').match(/fa-[^\s]+/g); + if (newClass) { + panel.removeClass('mm-channel-type-undefined'); + classes = classes.replace('fa-fw', newClass); + icons.remove(); + $(this).find('.element-invisible').text(newClass); + } + return classes; + }); + }); + } + }); + toggleButton.keypress(function(event){ if (event.which === 13) { toggleSearchBox(event); @@ -154,16 +176,16 @@ } }; - - + + /*** Adds/alters classes for mean-menu ***/ - + Drupal.behaviors.ocioOmegaBaseMeanMenu = { attach: function (context, settings) { - + $(".mean-container .mean-nav ul li span").addClass("nolink"); } }; - + })(jQuery); diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/assets/panels-layout-template.ai b/profiles/wcm_base/themes/ocio_omega_base/panels/assets/panels-layout-template.ai new file mode 100644 index 00000000..3c8fe431 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/assets/panels-layout-template.ai @@ -0,0 +1,1325 @@ +%PDF-1.5 %���� +1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 22 0 R 37 0 R 52 0 R 69 0 R 85 0 R 100 0 R 115 0 R 132 0 R 150 0 R 167 0 R 186 0 R 205 0 R 224 0 R 243 0 R 262 0 R 281 0 R 302 0 R 322 0 R 344 0 R]/Order 345 0 R/RBGroups[]>>/OCGs[5 0 R 22 0 R 37 0 R 52 0 R 69 0 R 85 0 R 100 0 R 115 0 R 132 0 R 150 0 R 167 0 R 186 0 R 205 0 R 224 0 R 243 0 R 262 0 R 281 0 R 302 0 R 322 0 R 344 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 24130/Subtype/XML/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156821, 2014/08/29-03:07:50 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">Print</rdf:li> + </rdf:Alt> + </dc:title> + <xmp:MetadataDate>2015-08-11T13:01:56-04:00</xmp:MetadataDate> + <xmp:ModifyDate>2015-08-11T13:01:56-04:00</xmp:ModifyDate> + <xmp:CreateDate>2015-06-29T17:08:52-04:00</xmp:CreateDate> + <xmp:CreatorTool>Adobe Illustrator CS6 (Macintosh)</xmp:CreatorTool> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>72</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgASAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AMf8Alan5b/8ALXqX/SDF
/wBlOU/mR3F2f8j5v6Lv+Vqflv8A8tepf9IMX/ZTj+ZHcV/kfN/Rd/ytT8t/+WvUv+kGL/spx/Mj
uK/yPm/ou/5Wp+W//LXqX/SDF/2U4/mR3Ff5Hzf0X0xlzrGAfnF5j0HQtFsZ9ZlnihmueERtoVmY
sI2O4aSKgp75CeQRcjT6WWYkR6PJv+Vqflv/AMtepf8ASDF/2U5D8yO4uX/I+b+i7/lan5b/APLX
qX/SDF/2U4/mR3Ff5Hzf0Xf8rU/Lf/lr1L/pBi/7KcfzI7iv8j5v6LOfyf8AOnlLXPMtzaaPPdy3
KWTyutxbJCnpiWJSQyzS71YbUyUcokaaNRoJ4Y8Uqrk9fyxw3gXnb8xvIlh5s1Szvbm/S7t52SZY
rSORAw68WNwhI/2Iyo5wDVOwx9mZZxEhVFJP+Vqflv8A8tepf9IMX/ZTg/MjuLP+R839F3/K1Py3
/wCWvUv+kGL/ALKcfzI7iv8AI+b+i7/lan5b/wDLXqX/AEgxf9lOP5kdxX+R839F7t+Xup6fqnk7
Tb/TmkeznRzC0yCOQhZWU8kDSAbg/tZZGXELcDNiOORieYd+YWp6fpfk7Ur/AFFpEs4EQzNCgkkA
aVVHFC0YO5H7WMpcItcOI5JCI5l4T/ytT8t/+WvUv+kGL/spyv8AMjuLn/yPm/ou/wCVqflv/wAt
epf9IMX/AGU4/mR3Ff5Hzf0Xf8rU/Lf/AJa9S/6QYv8Aspx/MjuK/wAj5v6Kd+SfzG8iX/mzS7Oy
ub97u4nVIVltI40LHpyYXDkD/YnCM4JqmGTszLCJkaoPfctde8g/ODzp5S0PzLbWmsT3cVy9kkqL
b2yTJ6ZllUEs00W9VO1MrllETTmafQTzR4o1XJg3/K1Py3/5a9S/6QYv+ynI/mR3Fv8A5Hzf0Xf8
rU/Lf/lr1L/pBi/7KcfzI7iv8j5v6Lv+Vqflv/y16l/0gxf9lOP5kdxX+R839F6z+TvmPQdd0W+n
0aWeWGG54Sm5hWFgxjU7BZJainvk4ZBJxNRpZYSBLqz/ACbjvnq087/l5dWF9fRard+hp6xtcVsa
GksgjXiPW3+I5V+YDsD2XlBA23ULb8xPy1ubmK3j1W99SZ1jStjQcmNBX9974PzASeyswF7OufzE
/LW2uZbeTVb31IXaN6WNRyU0NP33tj+YCjsrMReyvd+d/wAvLWwsb6XVbv0NQWRreljU0ikMbch6
23xDD+YCB2XlJI22eXf4Q8g/9TPf/wDcJT/stzC44+f4+L1Xgaj+bH/Tf8dd/hDyD/1M9/8A9wlP
+y3Hjj5/j4r4Go/mx/03/HXf4Q8g/wDUz3//AHCU/wCy3Hjj5/j4r4Go/mx/03/HXf4Q8g/9TPf/
APcJT/stx44+f4+K+BqP5sf9N/x19rZsnhXk3/ORWl6LqHlvS01XUJtOhS8LRyQWwumZvSYcSpmt
6CnepzH1BAAt3HY0JynLgAJrqa/QXgX+EPIP/Uz3/wD3CU/7LcxeOPn+Pi9F4Go/mx/03/HXf4Q8
g/8AUz3/AP3CU/7LceOPn+Pivgaj+bH/AE3/AB13+EPIP/Uz3/8A3CU/7LceOPn+Pivgaj+bH/Tf
8deof848aD5Y0/zrezaVrFzqFw2myo8M9itqoQzwEsHFxPU1AHHj365fp5Ay2dT2xjyxxAzAA4uh
vofIPobMt5t8n/mZ5X8mXHn7XJ7zzBeW11JdO0sEempMiMabCQ3cfL58RmvnKPEef4+L2Ghw5zhi
YxjVfzv+OsZ/wh5B/wCpnv8A/uEp/wBluR44+f4+LleBqP5sf9N/x13+EPIP/Uz3/wD3CU/7LceO
Pn+Pivgaj+bH/Tf8dd/hDyD/ANTPf/8AcJT/ALLceOPn+Pivgaj+bH/Tf8dfU35RWljZ/lzotvY3
L3dpHHJ6VxLEIHcGdyaxh5eO5p9o5m4SOEU8l2gJDPIS2Pz6O/N20sbz8udat765e0tJI4/VuIoh
O6AToRSMvFy3FPtDHMRwm17PEjniI7n5dHyz/hDyD/1M9/8A9wlP+y3MLjj5/j4vW+BqP5sf9N/x
13+EPIP/AFM9/wD9wlP+y3Hjj5/j4r4Go/mx/wBN/wAdd/hDyD/1M9//ANwlP+y3Hjj5/j4r4Go/
mx/03/HWTfln5X8mW/n7Q57PzBeXN1HdI0UEmmpCjsK7GQXcnH58TkoSjxDn+Pi4uuw5xhkZRjVf
zv8Ajr6wzYPHvnn/AJyH0nyneedbKXWL+/tbkabEqR2lrDcRmMTzkEtJcQENUnbj9OYmoIEt3pex
sGWeImHDXF1JHQeReXf4c/Ln/q8ax/3D7X/styjij+B+12/5TU90P9NL/iXf4c/Ln/q8ax/3D7X/
ALLceKP4H7V/Kanuh/ppf8SmGv8AkHyHoes3ekXetao9zZSGKV4tPtyhYfylrxTT6MJIBq/s/a06
fHnywE4iFS/pH/iXt3/OOlhoVn5b1RdHurq6he8Bke8gjt2DekuyrHLOCKd65k6cgg06LtrHkhki
J1ddDf6A9ZzIdM+OtI8jy23l/XrKXXtAE9/HbLbAatZkExXCyNU+pt8IzA4T+C9VPUXKJ4Z7X/Ce
5L9L/Lq8t9TtLiXXdAEcM0cjkavZH4VcE/7s9seE/ghsnqgQRwz/ANKXap+XV5cand3EWu6AY5pp
JEJ1eyHws5I/3Z748J/BCw1QAA4Z/wClKYav5HlufL+g2UWvaAZ7CO5W5B1azABluGkWh9Tf4Tjw
n8FrhqKlI8M96/hPcu/RfkH/AKmC/wD+4Wn/AGWZT6fP5ftd74uo/wBTj/p/+OI3UPK3kuwhsZp/
MN5w1G3+t2/HTEJ9P1ZIfi/0sUPKFsJEfP5fta8eqzzMgMcfSa+vyB/m+btP8reS7+G+mg8w3nDT
rf63cctMQH0/Vjh+H/SzU8plxAj5/L9q5NVngYg44+o19fkT/N8kF+i/IP8A1MF//wBwtP8Asswe
nz+X7WzxdR/qcf8AT/8AHH2Hm1fOHl/5+2+iz+XtNXVb2axhF3WOSC3FyzN6TbFTLBQU71zF1NUL
d72BKYyS4AJHh6muvuLxvQvKXkzWtXtdKs/MN4Lq8kEURk01FTkfEi7P6sxYiJNb/L9r0ufV58UD
OWOND+n/AMdQH6L8g/8AUwX/AP3C0/7LMHp8/l+1t8XUf6nH/T/8cRuoeVvJdhDYzT+YbzhqNv8A
W7fjpiE+n6skPxf6WKHlC2EiPn8v2tePVZ5mQGOPpNfX5A/zfNnv5C2XliDzhePpWqXN9cHT5A8U
9mtsoT14asHE89TWgpx+nL9NXFt3fjq6nt6eU4RxxERxdJX0P9EPeczXknzB+Y2n+TJPPOtPea1e
W901yxlhj09JUVqDYObqPl8+IzWZOHiPPn+Or3XZ2TOMEOGESK/nV/vUp/wn5M/Qn6Z/xDefVPrP
1On6NTn6np+p0+t9OPvgqNXv8v2uR+bz+JweHG6v6/h/Nb0Lyl5M1rV7XSrPzDeC6vJBFEZNNRU5
HxIuz+rGIiTW/wAv2rn1efFAzljjQ/p/8dQH6L8g/wDUwX//AHC0/wCyzB6fP5ftbfF1H+px/wBP
/wAcfTH5WR2MXkDR0sZ3ubRY5PSnljELsPWetYw8vHf/ACjmfgrgFPEdqGR1E+IUfn0+DvzTjsZf
IGsJfTvbWjRx+rPFGJnUeslKRl4uW/8AlDHPXAbXssyGohwiz8unxfOFl5b8kXnr+j5hvf8ARoXu
JOWmIPgSlaf6X13zA9Pn8v2vaT1OeNXjjua+v/jrem+WvJOoXDwQeYb0OkFxcnlpiAcLaF55P+Ps
78IzT3wgRPf8v2rk1OeAs448wPr7zX83zdp3lvyRqF0LaDzDeiQpJIOWmIBSKNpG/wCPs/socHp8
/l+1cmpzwFnHH/T9+381Ovy50/yZH550V7PWry4uluVMUMmnpEjNQ7FxdScfnxOSx8PEOfP8dXF7
RyZzgnxQiBX86/8Aevp/Nm8K+ev+chrXSJfOlk15rlnpko02ICC5jvXcr68/xg21tcJQnbdq7dOm
Yeohcub1fYWr8PCRwyl6unD3DvkHnVl5c0i9ivJrXzRpkkenwfWrtvT1NeEPqJDy+KyFfjmQUFTv
lHheY+39Tt5dqxFXCe/9X/ikL+j/AC1/1Numf8idV/7IcfC8x9v6mf8AKX9Cf+w/4pOvOl35Q1zz
Vqer2nmrT0tr2dpYklg1MOFIH2gtmwr9OGWOyTY+1xdFqziwxhKEriP6P/FPYv8AnHaHT4vLeprZ
anb6mhvAWltkuUVT6S/CfrMNu1fkCMydNGgXQdu5/EyRNGPp613+RL1jMl0b4jh/K3Vppkhh1nQZ
ZpWCRxpq1mzMzGgVQJKkk5gcJ/BD151kR/DP/Sly/ldqrSiFdZ0EyluAjGrWZYsTTjT1K1rjwn8E
L+cj/Nn/AKUub8rtVWUwtrOgiUNwMZ1azDBgacaepWtceE/ghfzkf5s/9KXTflbq0MzwzazoMU0T
FJI31azVlZTQqwMlQQceE/ghRrIn+Gf+lKb/AOEIf+pg0n/kfL/1SzHdz+cP8yfyH60/80eV4pbD
y2p1vTI/R0sRhnmkAf8A0y5bklIzVfip8wcnIbD8dS4ml1REsnonvPu/ox83eV/K8UVh5kUa3pkn
raWYyyTSEJ/pls3J6xii/DT5kYxGx/HULqtUTLH6J7T7v6MvNIP8IQ/9TBpP/I+X/qlkHL/OH+ZP
5D9b7Fzbvm7y78/9LXUPLumxte21jwvOXqXbsit+6YUUqr75i6rkHfdgZeDJI0Zenp73l/5ceWYr
bzzos41rTbgx3KsIYZpGkbY7KDGor9OYuMeoe93vaWqMtPMcExt1H7WN/wCEIf8AqYNJ/wCR8v8A
1SyDm/nD/Mn8h+tP/NHleKWw8tqdb0yP0dLEYZ5pAH/0y5bklIzVfip8wcnIbD8dS4ml1REsnonv
Pu/ox82V/kHoUen+cLyZdUsb0tp8ielayO7is8J5EMifDtTrl2m+r4Ov7ez8eEDhlH1DmPI+b3vM
55J8vfmP5ZiufPOtTnWtNtzJcsxhmmkWRdhswEbCv05q8g9R973fZuqMdPAcEzt0H7Wv8MRf8q7+
r/prTafpf1PX9aT0/wDeanCvp15d+nTGvSn80fzN8E/o7v6Xvb/LjyzFbeedFnGtabcGO5VhDDNI
0jbHZQY1Ffpxxj1D3o7S1Rlp5jgmNuo/axv/AAhD/wBTBpP/ACPl/wCqWQc384f5k/kP1vpr8q7U
Wn5f6PbieK5Eccg9eAlo2rM5+EkKfwzY6f6A8P2pLi1EzRHv9zvzUtRd/l/rFuZ4rYSRxj15yVjW
kyH4iAx/DHUfQV7Llw6iBon3e58+eXvKsUf6T/3OaXJzsJ0+CaQ8a8fib92Nhmvp7DUaonh9E/qH
T9q7yp5Wih1SdxrmmS10/U04xzSEjnp86ct4x8K8uTewyUOfwP3I1eqJgPRP6odP6cfNb5U8qxRa
0rjXNLk/0e7HCOaQt8VrIK0MY2Fan2yICdXqicdcE+cen9IeaN/LjyzFbeedFnGtabcGO5VhDDNI
0jbHZQY1FfpyWMeoe9q7S1Rlp5jgmNuo/a+oc2jwj5z/AOcjfJev6553sbvTktmgTTIomM97Z2zc
xcTsaJcSxORRhuBTMXPzeg7KyiOIgg/V0BPQdwYT5Y/L/wAyWWn+ZYbr6hHJqGl/VbRf0npzc5vr
trNx+G4NPghc1NBtlQqjuPmHNzZQTGhLaX82XcfJIP8AlVfnL/fdh/3FdM/7KcG3ePmG78xHul/p
ZfqVLj8o/PVtM8FxbWcM8Z4yRSanpqup8CpuARiRXUfMIjqYSFjiI/qy/U+gP+cbvLmq6F5a1WDU
VhWSW9Dp6Fzb3S8fSUbtbySqD7E1zIwdXRdrTEpir5dQR9713Mh1T4m8rfl959h8z6RNN5b1WKGK
9t3kkeyuFVVWVSWYlKAAZgiB7nr82pxGB9UeR6hqy/L7z6vmOCZvLWqiIXiOZDZXAUKJQeVeFKUy
PBKuSy1OLg+qPLvDr38vvPreY55l8taqYjeO4kFlcFSplJ5V4UpTHglXJY6nFwfVHl3hvzT+X3n2
bzPq80PlvVZYZb24eORLK4ZWVpWIZSEoQRkjA9y4dTiEB6o8h1Ce/wDKrPzD/wCrDdf8CP65R4cu
4u2/lXTfz4p75m/Lnzzc2Hl1INFuZHtdMEFwqqPgk+uXL8Tv14up+nJHHKhsfwS4mm7RwRlkuY3n
Y/0sXeWfy58821h5iSfRbmN7rTDBbqyj45Prls/Eb9eKMfoxGOVHY/ghdT2jglLHUxtOz/pZJF/y
qz8w/wDqw3X/AAI/rkfDl3Fy/wCVdN/Pi+vM2r508y/Pny7rmu+X9Ot9Is5L2aK79SRIhUhfTYVP
0nMbUxJAp3vYOox4skjM8I4f0vMvy7/Lvzvp/nfRr290a5gtYLlXmmdQFVQDud8xseOXENjzd32j
2jgngnGMwSQx3/lVn5h/9WG6/wCBH9ch4cu4ub/Kum/nxT3zN+XPnm5sPLqQaLcyPa6YILhVUfBJ
9cuX4nfrxdT9OSOOVDY/glxNN2jgjLJcxvOx/pYsp/InyX5q0Pzdd3er6ZPZWz6fJEksoAUuZoWC
9etFOXaaJEtx0cDt3W4cuECEhI8X6C92zNeUfMv5ifl3531DzvrN7ZaNcz2s9yzwzIoKspA3G+a3
JjlxHY83uOzu0cEMEIymAQGv+Vded/8AlX31D9DXP1z9Lev6HEcvS+rcOfXpy2weHKuRT/KOD8zx
cY4eCvtb/Lv8u/O+n+d9Gvb3RrmC1guVeaZ1AVVAO53w48cuIbHmjtHtHBPBOMZgkhjv/KrPzD/6
sN1/wI/rkPDl3Fzf5V038+L6T/K7Tb/TPIWkWN/A1teQRuJYHFGUmV2FfoOZ+AEQFvE9p5Iz1EpR
Ng/qd+aOm3+p+QtXsbCBrm8njQRQIKsxEqMafQMc4JgaXszJGGojKRoD9TwHy/8Alr57t/0l62iX
KerYzxR1UfE7caKN++YHhy7i9dqO0tOeGpjaQXeVfy2892upzy3Gi3McbafqUSsyiheawnijXr1Z
3CjJwhK+R5H7l1XaWnlAATH1Q+ycS15W/Lbz3a6ws1xolzHEILpS7KKcntpEUde7MBkfDl3FdV2l
p5QoTHMf7oIz8u/y7876f530a9vdGuYLWC5V5pnUBVUA7nfJY8cuIbHm1do9o4J4JxjMEkPprNk8
O+e/+chdE1m+86WU1lYXN1EumxI0kMTyKGE854kqCK0IzA1Q9Xwex9ns8IYCJSA9Z5nyDzD/AAp5
o/6s99/0jTf805j0Xffm8X8+PzDv8KeaP+rPff8ASNN/zTjRX83i/nx+YZN+ZnlzzDceftcnt9Lu
5oZLpjHLHBKysKDcMFIOSyA8R97gdmanHHTwBlEGu8PVv+cd9N1Gw8tanHfWs1rI95yVJ42jJHpI
KgMBtmVpRsXn/aLJGeWJiQfT0971fMt598dfUPzB/wCWfVv+Auf6ZqOF9I49N3w/2LvqH5g/8s+r
f8Bc/wBMeFePTd8P9i76h+YP/LPq3/AXP9MeFePTd8P9i76h+YP/ACz6t/wFz/THhXj03fD/AGKS
/Ub7/lnl/wCAb+mCw5XiR7wyLzbZ3bad5WCwSErpADUVtj9eujQ7ZKR2H46lwtJOPFk3/j/3sXeU
rO7XTvNIaCQFtIIWqtufr1qaDbGJ2P46hdXOPFj3/j/3smO/Ub7/AJZ5f+Ab+mRsOb4ke8Pt/Nw+
WvI/+ckIZpfLOliJGkIvakKCf91P4ZiavkHovZyQGWV/zf0vJPyus7tPzB0JngkVRdLVirADY+2Y
uM+oe96HtScTpp79GL/Ub7/lnl/4Bv6ZCw5/iR7wyLzbZ3bad5WCwSErpADUVtj9eujQ7ZKR2H46
lwtJOPFk3/j/AN7FmX/OOdtcxed75pYnRTpkoBZSBX6xB45fpT6vg632ikDgFH+MfdJ9F5nvGPkj
80bO7f8AMHXWSCRlN01GCsQdh7Zqsh9R976H2XOI00N+jX1O7/5Vlw9CTl+mq8eLVp9U60pgv0p4
4/muf+T/AN83+V1ndp+YOhM8EiqLpasVYAbH2w4z6h70dqTidNPfoxf6jff8s8v/AADf0yFhz/Ej
3h9Xfk+jp+W+iK6lWEclVIoR++fxzY6b6B+Or5/2ub1M/f8AoCF/PNHf8qfMCopZjHDRQKk/6RH4
ZLN9Jaez/wC/j+Oj4z+o3v8Ayzy/8A39Mw7es4h3u+o3v/LPL/wDf0xteId7LPqd3/yqnj6EnL9O
148WrT6n16Yb2cbiHjf5v6V35R2d2n5l+XGeCRVF7GSxVgB19sYHcI1sh4Mvc+2c2DyL5b/5ymub
iL8wdPWKV0U6TCSFYgV+s3HhmJnHqej7HAOI/wBb9AYH5MvLttK84EzyErotVqzbH9I2QqN8qA2P
46hzc8RxQ/rf72TGPr17/wAtEv8Awbf1wU5HCO53169/5aJf+Db+uNLwjufTP/OKs00vlTWTK7OR
fgAsSf8AdK+OZOn6vP8AbAqcfc9uzIdO+Hv+Qsf9r7/p8zX7vYfuP6H2O/5Cx/2vv+nzHdf3H9D7
Hf8AIWP+19/0+Y7r+4/ofY7/AJCx/wBr7/p8x3X9x/Q+xS/5Wl+ZH/Uzal/0ky/1w8R7yn8nh/mx
+SaeV/zM/MK48zaRBP5j1CSGW9t0lja4kKsrSqGUgncEYiR7y15dJiECREcj0d5o/Mz8wrfzNq8E
HmPUI4Yr24SKNbiQKqrKwVQAdgBiZHvK4tJiMATEch0Sv/laX5kf9TNqX/STL/XHiPeWz8nh/mx+
T7mzPeOeQf8AOSnmLXtD8s6TPo2oT6fNLelJZLaRo2ZfSY8SVI2rlGckU7XsrFGcyJC9nzx/ytL8
yP8AqZtS/wCkmX+uY/Ee8u8/J4f5sfk7/laX5kf9TNqX/STL/XHiPeV/J4f5sfkyPzZ+Y3n220zy
tJB5gv4nutI9a5ZLiQGST6/dx82od24Iq18AMJkaG/4tx8OlxEzuI2l3eQZp/wA43+dPNuueeL60
1jWLvULZNMllSG4meRBILiBQwDE70Yj6cswkkuL2pghDGDEAHi/QX0fmU6B8hfmh+Ynnuw/MLX7K
y1+/trSC7dIYIriRURR0CqDQDMGUjZ3eo0mlxSxRJiLpb/ysXz5/yrT69/iC/wDrn6a9D6x9Yk9T
0vqvLhyrXjy3pjxGuafyuLxq4RXD+ljH/K0vzI/6mbUv+kmX+uDiPeXI/J4f5sfk7/laX5kf9TNq
X/STL/XHiPeV/J4f5sfk+s/yb1LUNT/LTRL7UbmS7vJ45TNcTMXkYieRRyY7nYAZl4jcXmddARzS
AFBEfmnqF9p/kDWLyxne2u4Y4zFPExV1JmQGhHscjnJEDTb2XjjPUQjIWD+p8z/8rI8/f9TBf/8A
I9/65gccu8/N7f8Ak3T/AMyPyZJ+Y3nvznY+edatLPWry3tYbllihjmdUVaDYAHbJZJy4juebhdn
aDBPBCUoRJI7mN/8rI8/f9TBf/8AI9/65Hjl3n5ub/Jun/mR+TJPy589+c77zzotpea1eXFrNcqs
sMkzsjLQ7EE75LHOXENzzcLtHQYIYJyjCIIHc+n82bwrwH8/vM2uaX5xs7ewu2ghbTo5GQKpqxnm
BPxA9lGYGqJ4vg9d2BpMWTCTKNniP3B5sv5gecUDBdTkUOOLgKgqKg0Pw9KjMfiPe7v+TdP/ADAt
/wAeebf+ri//AAMf/NOPEe9f5NwfzQyP8xfNvmHT/O+s2VleGC0guWSGFEjCqoA2Hw5LITxH3uF2
docM8EJSjZIep/8AOP2s6nqvlzUpdQnM8kd5wRiFFF9JTT4QMy9KTRdD2/ghjyxEBXp/S9TzKdC+
B/8AF/mz/q9X/wD0lTf81Zr7e18GH80fJk3nDzR5mi0vyk0er3qNNo3OUrcSgu/6QvF5NRtzxUCp
8MJOw/HVx8GKBM9h9Xd/RDvJ/mjzNLpfm1pNXvXaHRucRa4lJR/0hZryWrbHixFR44g7H8dVz4oA
w2H1d39EsZ/xf5s/6vV//wBJU3/NWC3I8GH80fJm/wDjh/8AqX9A/wC4TZ/80ZX4h/ADm/yVj/nT
/wBMV8Pn64hmSaHQtCimiYPHImlWisrKahlISoIOPiS/ACD2TjP8U/8ATF03n64mmeabQtClmlYv
JI+lWjMzMalmJSpJOPiS/ACjsnGP4p/6YrP8cP8A9S/oH/cJs/8AmjHxD+AE/wAlY/50/wDTF9g5
tHz15f8An7q50zy9psosrK+L3fDhf20V0i/umNVWUMAduozG1MiAKd32Hpo5ckgSR6ehrq8O/wAc
P/1L+gf9wmz/AOaMxPEP4Aen/krH/On/AKYu/wAcP/1L+gf9wmz/AOaMfEP4AX+Ssf8AOn/piqzf
mHezpCk+i6HKlunpW6vpdqwjj5M/BAU+FeTs1B3JOPiy/ACB2RiHIz/0xeh/kL5jbU/N95AdL0uy
46fJJ6thYwWsppPCOJeJVYr8VePjTMjTzJlu6ftzRRxYRIGR9XWRPQveczHlnzD+Yvm1rTzxrNsN
E0WcRXLL61xptrNK2w3eR0LMfc5rp5DxH39we27P7OhPBCRM9x0kUh/5WJffVPqf6F0P6n6nrfVv
0Xa+n6nHjz4cOPLjtXrTIeJL8AOX/JGK7ud/1ipf44f/AKl/QP8AuE2f/NGPiH8AJ/krH/On/pi7
/HD/APUv6B/3CbP/AJox8Q/gBf5Kx/zp/wCmL6X/ACsvPrnkDSLn0ILb1Y5D6FrEkEK0mcfBGgCr
9GZ2A3AF4vtPGIaiURe3fv0Ufzf1SbS/y41q/hihmlgjiKxXMSTwnlPGvxxuCrde+SzfSw0AvNEW
R7tuj5V/5WtrX/Vo0P8A7hVn/wA0Zh37vkHqPBP8/J/p5frVrr84fMl5cSXN3p+jXFzKeUs8umWr
uzeLMyEk48X4oMYabhFCUwP6xUf+Vra1/wBWjQ/+4VZ/80Y37vkGXgn+fk/08v1sn/LL8yNW1Dz/
AKFZS6bpEUdxdojSW+m2sMqg13SREDKfcZKB3H6g42sxEYpeqZ26yL6zzOeVfNv/ADkn5kuNM882
NvHZ2lwraZFIXuIRI4JuJxQEkbfDmHqIgyek7HMvCNSI9XT3B5P/AI6vf+rbpv8A0ir/AFyjgDtb
n/Pl83f46vf+rbpv/SKv9ceALc/58vmidQ/MrWtRvZr69stPnu7huc0zWy8mY9zQ4TEE2wxwMIiM
ZSAHm+gP+caNZm1Tyxq0klvb25jvQoW2jESn90pqQCd8ydMKBdD2zfHGyTt1ew5kunfH3+P9V/5Y
NI/7hdj/ANUs1XGfwB+p9C/knD/S/wBNL9apL+Y+uzLEstppciwJ6cKvptkwRORbitYvhXkxNB3J
x4z+AP1KOyMI/nf6aX63RfmPrsKyrFaaXGs6enMqabZKHTkG4tSL4l5KDQ9wMeM/gD9SnsjCf53+
ml+tT/x/qv8AywaR/wBwux/6pY8Z/AH6l/knD/S/00v1vav8MXn/AFKWmf8AcOtv+ac2fhx7g8P+
f1H+qT/0x/W7/DF5/wBSlpn/AHDrb/mnHw49wX8/qP8AVJ/6Y/rd/hi8/wCpS0z/ALh1t/zTj4ce
4L+f1H+qT/0x/W7/AAxef9Slpn/cOtv+acfDj3Bfz+o/1Sf+mP63q+ScVjnnjT5b2wt0j0y31QrL
yMVzBHcKvwkcgsgIB7VwGIPNsx5p4zcCYnyNML/wxef9Slpn/cOtv+acHhx7g3fn9R/qk/8ATH9b
v8MXn/UpaZ/3Drb/AJpx8OPcF/P6j/VJ/wCmP63f4YvP+pS0z/uHW3/NOPhx7gv5/Uf6pP8A0x/W
yHyRo89lqsssmh2emK0DL69taQ27sS6HgXjAJBpWnthEIjkGvJqcuQVOUpDzJLNsLS848weX7mfW
buZfLVhdq8hIuZbG3ld/8pnZSzH55Hw49wciOszRFRnID+sUv/wxef8AUpaZ/wBw62/5px8OPcGX
5/Uf6pP/AEx/W7/DF5/1KWmf9w62/wCacfDj3Bfz+o/1Sf8Apj+t3+GLz/qUtM/7h1t/zTj4ce4L
+f1H+qT/ANMf1vRPLVu9todpA9rHZMisDawxrFGlWJoqJRV8dsIAHJx5zlI3I2fNrzRafW9Bu7b6
pFf+oqj6pPGs0b0cGjRuCrUpXfDQPNEZGJsGi83/AMHN/wBSZpP/AHDLT/mjBwR7m781l/nS+Zd/
g5v+pM0n/uGWn/NGPBHuX81l/nS+Zd/g5v8AqTNJ/wC4Zaf80Y8Ee5fzWX+dL5lMfL3lY22t2c58
q6bZiOQN9ah0+2ikjp+0rooZT7jHgj3MTqMhFGUq95el4Wp5/wDmD5Ui1fWYbl9BttUKWyx/WJ4F
lZaO7cAx7DlWnvkTAHm3Y9RkgKiSAxj/AJV1B/1J9h/0iJ/XB4Ue5n+dzfzi7/lXUH/Un2H/AEiJ
/XHwo9y/nc384u/5V1B/1J9h/wBIif1x8KPcv53N/OLPfy90KPR9NuYU0uHSvUm5mKCMRBvhA5ED
r4ZIRA5NWTNOZuRtlWFreUf4YvP+pS0z/uHW3/NOR8OPcHK/P6j/AFSf+mP63f4YvP8AqUtM/wC4
dbf804+HHuC/n9R/qk/9Mf1u/wAMXn/UpaZ/3Drb/mnHw49wX8/qP9Un/pj+t3+GLz/qUtM/7h1t
/wA04+HHuC/n9R/qk/8ATH9b/9k=</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + <xmpMM:InstanceID>uuid:5e8ec707-fee7-2948-8af4-6be2c5c51bb1</xmpMM:InstanceID> + <xmpMM:DocumentID>xmp.did:FD7F11740720681183D1A1E8B69A2CF7</xmpMM:DocumentID> + <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>xmp.iid:F77F11740720681183D1A1E8B69A2CF7</stRef:instanceID> + <stRef:documentID>xmp.did:F77F11740720681183D1A1E8B69A2CF7</stRef:documentID> + <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681183D1A1E8B69A2CF7</stEvt:instanceID> + <stEvt:when>2015-06-29T16:41:43-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS6 (Macintosh)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F11740720681183D1A1E8B69A2CF7</stEvt:instanceID> + <stEvt:when>2015-06-29T17:08:53-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS6 (Macintosh)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <illustrator:Type>Document</illustrator:Type> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>50.000000</stDim:w> + <stDim:h>110.000000</stDim:h> + <stDim:unit>Pixels</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + <rdf:li>red</rdf:li> + <rdf:li>red-dark</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>red</xmpG:swatchName> + <xmpG:type>SPOT</xmpG:type> + <xmpG:tint>100.000000</xmpG:tint> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:red>188</xmpG:red> + <xmpG:green>31</xmpG:green> + <xmpG:blue>37</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>red-dark</xmpG:swatchName> + <xmpG:type>SPOT</xmpG:type> + <xmpG:tint>100.000000</xmpG:tint> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:red>125</xmpG:red> + <xmpG:green>12</xmpG:green> + <xmpG:blue>13</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>gray</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>39.999400</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + <pdf:Producer>Adobe PDF library 10.01</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 6/Kids[7 0 R 8 0 R 117 0 R 134 0 R 283 0 R 324 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 346 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 348 0 R/CS1 349 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 8 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 351 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 348 0 R/CS1 349 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 117 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 352 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 348 0 R/CS1 349 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 134 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 353 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 348 0 R/CS1 349 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 283 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 354 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 348 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 324 0 obj <</ArtBox[0.0 0.0 50.0 110.0]/BleedBox[0.0 0.0 50.0 110.0]/Contents 355 0 R/LastModified(D:20150811130156-04'00')/MediaBox[0.0 0.0 50.0 110.0]/Parent 3 0 R/PieceInfo<</Illustrator 347 0 R>>/Resources<</ColorSpace<</CS0 349 0 R/CS1 348 0 R>>/ExtGState<</GS0 350 0 R>>/Properties<</MC0 344 0 R>>>>/TrimBox[0.0 0.0 50.0 110.0]/Type/Page>> endobj 355 0 obj <</Filter/FlateDecode/Length 170>>stream +H�l�=�0F���'p���+)b�8BH��n +UJP�<϶ds�`�Lp2t塇GgN�����C ("�v��Sןɚ�f`�yzj��`� +=�P�x'��a�D^f`[�̮�+��eN6V亇`Y�q�✰��g�^���|H�� �1���-��a�R' endstream endobj 344 0 obj <</Intent 356 0 R/Name(Layer 1)/Type/OCG/Usage 357 0 R>> endobj 356 0 obj [/View/Design] endobj 357 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 350 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 349 0 obj [/Separation/red/DeviceRGB<</C0[1.0 1.0 1.0]/C1[0.737701 0.12442 0.145493]/Domain[0 1]/FunctionType 2/N 1.0/Range[0.0 1.0 0.0 1.0 0.0 1.0]>>] endobj 348 0 obj [/Separation/red-dark/DeviceRGB<</C0[1.0 1.0 1.0]/C1[0.49202 0.047409 0.053391]/Domain[0 1]/FunctionType 2/N 1.0/Range[0.0 1.0 0.0 1.0 0.0 1.0]>>] endobj 347 0 obj <</LastModified(D:20150811130156-04'00')/Private 358 0 R>> endobj 358 0 obj <</AIMetaData 359 0 R/AIPrivateData1 360 0 R/AIPrivateData2 361 0 R/AIPrivateData3 362 0 R/AIPrivateData4 363 0 R/ContainerVersion 11/CreatorVersion 18/NumBlock 4/RoundtripStreamType 1/RoundtripVersion 16>> endobj 359 0 obj <</Length 1084>>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 18.1.1 %%For: (miller.2676) () %%Title: (panels-layout-template.ai) %%CreationDate: 8/11/15 1:01 PM %%Canvassize: 16383 %%BoundingBox: 0 -110 400 0 %%HiResBoundingBox: 0 -110 400 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 446 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%DocumentCustomColors: (red) %%+ (red-dark) %%RGBCustomColor: 0.737701 0.12442 0.145493 (red) %%+ 0.49202 0.047409 0.053391 (red-dark) %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 350 -110 400 0 %AI3_TemplateBox: 25.5 -32.5 25.5 -32.5 %AI3_TileBox: 87 -411 663 323 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 177.3333 25.3333 6 1806 1206 18 1 0 46 132 0 0 0 0 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-281 -428 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 360 0 obj <</Length 10275>>stream +%%BoundingBox: 0 -110 400 0 %%HiResBoundingBox: 0 -110 400 0 %AI7_Thumbnail: 128 36 8 %%BeginData: 10150 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45A87DA87DA87DA87DA87DA87DA87DA87DFD06FFA87DA87DA87DA87D %A87DA87DA87DA87DA8FD06FF7DA87DA87DA87DA87DA87DA87DA87DA8FD06 %FF7DA87DA87DA87DA87DA87DA87DA87DA8A8FD05FFA87E7DA87DA87DA87D %A87DA87DA87DA8A8FD06FFA87DA87DA87DA87DA87DA87DA87DA87D7DA87D %A87DA87DA87DA87DA87DA87DA8FD06FFA87E7DA87DA87DA87DA87DA87DA8 %7DA8A8FD05FFA8A87DA87DA87DA87DA87DA87DA87D847DFD06FFA87DA87D %A87DA87DA87DA87DA87DA87DFD06FFA87DA87DA87DA87DA87DA87DA87DA8 %7DA8FD06FF7DA87DA87DA87D847DA87DA87DA87DA8A17CA1A0A17CA1A0A1 %7CA1A0A17CA1A1FD06FFCA7CA17CA1A0A17CA1A0A17CA1A0A176CAFD05FF %CF76A1A0A17CA1A0A17CA1A0A17CA1A0A1FD06FFA1A17CA1A0A17CA1A0A1 %7CA1A0A17CA1CAFD05FFA7A1A0A17CA1A0A17CA1A0A17CA1A0A1A1FD06FF %A7A1CFA1A7A1A7A7CAA1A7A1A7A8A7A14445444B4445444B4445444B4445 %446FA8FD05FF6F4B4445444B4445444B4445444B444475FD05FFA144444B %4445444B4445444B4445444B4AFD05FFA86F4445444B4445444B4445444B %444544A1FD05FF76444B4445444B4445444B4445444B4476FD06FF444576 %6F444544756F45446F44A0446F6F446F446F446F446F446F446F446F45FD %06FF9A446F446F446F446F446F446F446F44A0FD05FFA7446F446F446F44 %6F446F446F446F446FFD06FF6F6F446F446F446F446F446F446F446FA1FD %05FF766F446F446F446F446F446F446F446F75FD06FF6F44A16F6F446F75 %76446F446F766F444B6F4A6F4B6F4A6F4B6F4A6F4B6F446FCAFD05FF756F %4B6F4A6F4B6F4A6F4B6F4A6F4B4B76FD05FFA16F4A6F4B6F4A6F4B6F4A6F %4B6F4A6F6FFD06FF754A6F4A6F4B6F4A6F4B6F4A6F4B6F44A8FD05FFA14B %756F6F4B756F6F4B754B6F4B754BA0FD06FF4445766F444544756F45446F %44A0446FC3A1C3A0C3A1C3A0C3A1C3A0C3A1A1A0FD06FFCAA0C3A1C3A0C3 %A1C3A0C3A1C3A0C3A0CAFD06FFA0C3A0C3A1C3A0C3A1C3A0C3A1C3A0C9FD %06FFA1C3A1C3A0C3A1C3A0C3A1C3A0C3A0A1CAFD05FFC9A09AC3A0A19AC3 %A0A1A0CAA0A19AC3A1FD06FF9A75CA769A75767CA17576759AA776756893 %6993689369936893699368936993A8FD05FF9A9368936993689369936893 %699368939AFD05FFA19369936893699368936993689369936FFD06FF9368 %9369936893699368936993689369C9FD05FFA068936893689368936893A1 %936893689AFD06FF76A0769A76A0769A76A0769A76A0769A9393936F9393 %936F9393936F9393936FFD06FFA06F9393936F9393936F9393936F936FC3 %FD05FFCA93936F9393936F9393936F9393936F9AFD06FFFD04936F939393 %6F9393936F939393A1FD05FFA0936F9393936FFD0493CA93936F939AFD05 %FFCA6F446F446F446F446F446F446F446F446F9993936F9393936F996F93 %6F996F99CAFD05FF9A936F9993936F9993936F9393936F93A0FD05FFA199 %6F936F936F936F9993936F99939399FD06FF9A6F996F936F996F936F996F %936F996FCAFD05FFA069936893699368936993A1936993689AFD06FF444B %4445446F4445446F4445446F4445C3A0C3A0C9A7C3A1C3A0CAA1C3A0C3A1 %FD06FFCAA0C3A0C3CAC3A0C3A0C9A7C3A1C3A0CAFD05FFCFA0C3A1C3A1CA %A0C3A0C3CAC3A0C3A0C9FD06FFA1C3A0CAA1C3A0C9C9C3A0C9A7C3A0C3CA %FD05FFA1A09AA09AC3A0A09AA0A0CA9AA09AA0A1FD06FF9A759A7576759A %7576759A7576759A756893689393A0689368939A9A68936893CAFD05FF99 %93689368C96F93689393A0689368939AFD05FFA193689368A09A93689368 %C96F9368936FFD05FFCA9368936F9A68936FA068936FA0699368C9FD05FF %A0446F4A4B76764A6F4A6F446F4A6F4476FD06FF769A76A17C9A76A1A176 %76A1A17676A0936F93939AA09393936FC39A936F9393FD06FFC293936F93 %A1996F93939AA09393936FC3FD05FFCA6F9393939AC393936F93A1996F93 %939AFD06FF93936F9A9A936F9AA0936F9AA0936F93C9FD05FF766F446F44 %A06F6F446F446F446F446F75FD06FF6F446F756F446F6F75446F6F76446F %446993689393A0689369939A9A69936893CAFD05FF9993699368C96F9368 %9393A0689369939AFD05FFA193689369A09A93699368C96F9368936FFD06 %FF936993939A69936FA0699369A0699368CAFD05FF9A446F444576754445 %446F4445446F4476FD06FF444544766F4544766F4544757545446FC29AA0 %9AC3A1A09AC29ACAA0A09AA09AFD06FFC99AC29AA0A8C39AA09AC3A1A09A %C29ACAFD05FFCF9AA09AA0A1C99AC29AA0A8C39AA09AC3FD06FFA0A09AC3 %A1A09AC3A1A09AA1A1C29AA0CAFD05FF7C6F4B6F4BA1756F4B6F4B6F6F6F %4B6F76FD05FFCA6F444B6F6F444B6F75444B4B76446F44999A999A9AC999 %9A999AA1A0759A999AA8FD05FFA09A999A99CA9A9A999A9AC9999A999AA1 %FD05FFA79A999A6FC3A19A999A99CA9A9A999A9AFD06FFA0759AA0A1759A %9AA16F9A9AA1999A99CAFD05FFCA9AA19AA1A0A19AA1A0A1A7A1A0A19ACA %FD06FF76A076A176A076A17C9A76A1A19A769A9393936F9AA0936F936FC3 %999393936FFD06FFA06F939393A19993936F9AA0936F936FC3FD05FFCA93 %936F939AA06F939393A19993936F9AFD06FF9393939A999393999A939393 %9A939393A1FD05FFA0936F9393936FFD0493CA93936F939AFD06FFC39AC2 %9AC29AC29AC29AC29AC29AC29A6893699393A1699368939A9A68936993CA %FD05FF9A93689369C96F93699393A1699368939AFD05FFA193699368A09A %93689369C96F9369936FFD06FF996893999A689393A068936FA0689369C9 %FD05FFA169936893699368936993A193699368A0FD06FF69936993689369 %936893699368936993936993939A9A93939369C39993699393FD06FFA06F %936993A1996993939A9A93939369C3FD05FFCA699393939AC36F936993A1 %996993939AFD06FF9393699A9A93699AA0936999A0936993A7FD05FF9A93 %939369939393699393C9699393939AFD06FF936993939369939393699393 %93699393A1C3A1C9A1CAA1C9A1A1A7CAA1C3A1C9FD06FFA7C3A1C3A1CFA1 %C3A1C9A1CAA1C9A1A1A7FD05FFCAC3A1C9A1CAA7C3A1C3A1CFA1C3A1C9A1 %FD06FFCAA1A1A1CAA1A1A1CAA1A7A1CAA1A1A1FD06FFC9759A999A999A99 %9A99A0A79A999A99A1FD06FF9AA09AA09AA09AA09AA09AA09AA09AA09993 %9A93A0A093939993C39A93939A93FD06FFC39399939AC99A939A93A0A093 %939993C3FD05FFCA939A9393A0C39399939AC99A939A939AFD06FF6F6F4B %6F6F6F4B6F6F6F76A1446F4B6FA1FD05FFA06F6F754BA1766F6F766F6F6F %766F6F76FD06FFA076A0769A76A0769A76A0769A76A0766993689399A068 %9369939A9A69936893CAFD05FF9A93699368C96F93689399A0689369939A %FD05FFA193689369A09A93699368C96F93689393FD05FFCF6F4445446F44 %45446F4476754B444544A7FD05FF76446F444576754445446F4445446F44 %76FD06FF4445446F4445446F4445446F4445446F939393699AA09369936F %A1999393936FFD06FFA069939393A1936F93699AA09369936FA1FD05FFCA %6F9369939AA069939393A1936F93699AFD06FF4B6F446F446F446F446F76 %9A446F446FA1FD05FF764B446F44A06F6F446F446F446F446F75FD05FFCA %6F446F446F446F446F446F446F446F44939A99999AC993996F9AA1A0939A %939AA8FD05FFA099939A99CA999A99999AC3939A9399A1FD05FFA79A939A %93C3A099939A99CA999A999999FD06FF764B6F4B6F4B6F4B6F4AA1766F4B %6F4BA8FD05FFA0446F444B7675446F446F446F446F4476FD06FF75767676 %75767676759A7576759A7676A1A0A1A0A1A0A1A1CAA0A1A0A1A0A1A0FD06 %FFCA76A1A0A1A0A1A0A1A0C9A7A1A0A1A0CAFD06FFA0A1A0A1A7CA76A1A0 %A1A0A1A0A1A0A7FD06FFA1C9A1C3A1FFA1C3A1C9A1C3A1C9A1C3CAFD05FF %A8A1A0C3A0C9A1C3A0A1A0CAA0A1A0A1A7FD06FFA076A076A1A19A76A076 %CAA0A076A076446F4445446F4476754B4445446F444BA8FD05FF7544446F %4445446F44454B9A4445444B76FD05FFA14B4445449A7544446F4445446F %44454AFD06FF9368936993A193699368936993689369C9FD05FFC3699369 %93699369936993A193699368A0FD06FF444B44454B9A4445444B766F446F %44456F446F446F446F769A446F446F446F4BFD06FF9A446F446F446F446F %4475766F446F44A0FD05FFA7446F446F76A0446F446F446F446F446FFD06 %FF9393699393C969939393699393936993A7FD05FF9A9393936993939369 %9393C9699393939AFD06FF6F446F4475766F446F44A06F6F446FFD04444B %444444767544444B4444444BA8FD05FF6F454444444B444444454B76444B %444475FD05FFA144444B44766F454444444B4444444544FD05FFCA936893 %6893A193689369936893699368C9FD05FFA068936893689368936893A193 %6893689AFD06FF4444444B6F76444B444475754445444BA076A176A076A0 %A1A876A176A076A1A0FD06FFA776A076A176A076A176A1A1A076A076CAFD %05FFCA76A176A0A1CA76A076A176A076A176A1FD06FFA1C3A0C3A1CFA0C3 %A0C3A0C3A0C3A0C3CAFD05FFA19A9A9A99A09A9A999A9ACA999A9A9AA1FD %06FFA1A0A1A0A7A7A1A0A176CAA1A1A0A1A09A9A9AA0FD059AA09AA09A9A %9AC2FD06FFA1FD049AA09A9A9AA09A9A9AA09A9AA1FD05FFCA9A9AA09A9A %99A09A9A9AA09A9A9AA09AFD06FF9A6F766F766F766F7675766F7675766F %CAFD05FFA14B766F756F766F756F766F756F766FA0FD06FF999A939A9399 %999A999A939A999A939A93939369939393699393936993939369FD06FF9A %69939393699393936993939369936FA1FD05FFCA6F936993939369939393 %699393936999FD06FF4B6F446F446F446F446F446F446F446FA1FD05FF76 %4B446F446F446F446F446F446F446F75FD05FFCA936F9369939393699393 %93699393936968936993689369936893699368936893A8FD05FF99936893 %6993689369936893699368939AFD05FFA193699368936993689369936893 %69936FFD06FF6F444B4444444B4444444B4444444B44A1FD05FF9A444444 %4B4444444B4444444B44444476FD06FF6893699368936993689369936893 %6993C3A0C3A0C3A0C3A0C3A0C3A0C3A0C3A0FD06FFCA9AC3A0C3A0C3A0C3 %A0C3A0C3A0C3A0CAFD06FFA0C3A0C3A0C3A0C3A0C3A0C3A0C3A0C9FD06FF %A0A076A076A176A076A176A076A176A0A8FD05FFA176759A769A759A769A %759A769A759AA1FD06FFC3A0C3A0C3A0C3A0C3A0C3A0C3A0C3A07DA87EA8 %7DA87EA87DA87EA87DA87DA8FD06FFA8A87DA87EA87DA87EA87DA87EA87D %A8A8FD05FFA8A87EA87DA87EA87DA87EA87DA87EA8A8FD06FFA87DA8A8A8 %7EA8A8A87EA8A8A87EA8A8FD07FF7DA87DA8A8A87DA8A8A87DA8A8A87DAF %FD06FF7DA87EA87DA87EA87DA87EA87DA87EA87D7DA87D7D7DA87D7D7DA8 %7D7D7D847DFD06FFA87D7D7DA87D7D7DA87D7D7DA87D7D7DA8FD06FF7D84 %7D7D7DA87D7D7DA87D7D7DA87DA8FD06FF7D7D7DA87D7D7DA87D7D7DA87D %7D7D84A8FD05FFA8FD047DA87D7D7DA87D7D7DA87D7DA8FD06FF847DA87D %7D7DA87D7D7DA87D7D7DA87DA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FD07FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A9A8FD05FFAFFFA8FFA8FFA8FFA8FF %A8FFA8FFA8FFA8FD07FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FD07FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FD07FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF %A8FF %%EndData endstream endobj 361 0 obj <</Length 65536>>stream +%AI12_CompressedDatax���ǵ%���? ����LO���z�-ۂ�s�4�*�lS�@Qv��~�Z;"rG�W�*��cX �����//;�}�����/.�y���/��|6��?]��{���۟�=��W?���-��~������t���Y��_������럟��ܝ;��-��컗�^ݽ=�����>�\�߽|��N�����w�~�������������ww��_~^�w-��ϖ�9�3����gw�կ�������^�o���a �]����7/_{����l>�¹�,�����~�ۻ���͋��{�o^����՛Wo���>}�����_����ݫWo�rv����?Mr�����Wwr��=w�<��/�v���W�����~'O �8<�)��9���.�~�� _߽{'&_h��J���ڥ|���<����}����������''8/�yN��1z�S\�9�|W?�Os,q^�K +au㩯~�o��>y�u���{��KyI���z�o�|��+��|����W����y:�"x���k�O*�Y��ѹ���Y�A�����?������~���������������?� ���/�ɥ�u��:~�曻Wr1���W�����������7�~|�Ѿ�o�������E9���|��wo����J9�{�Y��,�������[����k��_������yC_����ۗ߾|��/���q�E��/�fUş-�?���b�[�z���{]oCF�կ�����|���o��|���&����2P^��V���_����{��g�ƾz��5�9��Y�}��G��/���_��Û�3�;_�b��k��g�o��g�{��Ȓa��'=����CG�`����0�Տ9�=����z����o�>���/_�����g�������n;?����/�O]����~��=��_�^Ȫ+�����9���߽}�Bf�|��<b�H�^v���hϸ�6������ѓ��曗rm�|׃�|����^��˗��������ׇ�%�������UN�7wϷe�/�Ow����R���V�髻���П�~�Fɗ�{�e���߿y��ﶡg���B_�xu��_���g����܇Do^���՛��d��q����~�v�ڿ��z.�vB�x��_:#��^��Ff��?�|w�ɞ7�}����?>���w�����0=��ʮH_|��R����k��_�}��KYE;��ׯ�'��� +��ϧS V���o����tU�en�n�[��9n�n���n�]s����t��n+��n�[斸źn���6�vq{q;��n�]s���~���ܖ�n�[��ݦ��q����u��v��[� ��Un�nyZ�li���8�p����<�`�Ut�կn�]n���J˅�jYʒ���%,�B-s�-7�Z���$������K*Q�j_\��m�����.�&�i�s�1���s�M7�Z^�����TRN)���Ks��7�Z��<�5.��gQ�c�G�pnµ��Kyb�7%�B��f�o�����I���_|��G���S�[w�e�\�S�;v�e�\t�y'Z�|;���Lx����,�=�7O�-:-�l��͟���-N��-���ɭ��TYNn�����V���~�������vsj��I�&�s���?=�|�Y)Sh�*:f1�L�bv�v�~ne�����ϥ�r�e�+�����sq�.���Io�$�e�r����(�����r��aW�P�\��R���|�.l�}��z^��)sϹd�����K1�}��<���<���9����3�g?9��u_*���"0�\�a�)�ߖ�VNl��&f���Ol��[����sB +� �m��`f��=N���q�����N��r�NI��:-�Nɵ��;���8�<�w���R��ˑ.H\߰(aY҅ K�.N�w� +K)�D L\��T�b��J,ϡ�E�.]�.�Fc���K1]���ф����gW���aU�u +�6ټ.o\���"wE=�b��k��vX�t�Ú�U�랮|��~.�1�u��� �AY 'ۙˡ.��T�.�a�u]�ʨk#VG]_�H���N�J9��r�s�M�Ч�\�Λ:t��\�Hӑ�C�Ou,�+���N���������B�E�e�'o�+��o�o����D��Uh�����u�����5��#5�D���L�Z�%����_��o�NwM-�®'�ԟ�}�5ql~D j� ������5���kP��Oئ=�?� ?����]~� �w�mXF��۷�]���o�}��8�?n�z��~xjOmn����Mݮ�vU75?/��l��[�[�[�m��zptNܳ�V���5�O2��e����T ՍTkj�jZ�\��և�/��y]����R�)oEd��r+��g�&y�E�*�R�<�[Y ���KH�2���U^Υ��kyY���8yy�2N�&���E�셼�+}x�푖�-}�t-�5ak/���멿���[}-ǹ���^{n�s����8NZ%���z���1A_Oyq������1�H8�<ꑋ?��gٴ��t4���/�-�m�g/V|�\y�Azw%�r���h ����2�>Fw҆y�Qf�ēM�\��-�y�� �&�J3����/�y8G3g��yxU��-'��9�4�ڜe�^d�����J���Q�dQ��C kS�{(���C��U@t/���f5!M�-d�����P]�6!J��"�d�Blx���*.T�B�w�_��()�T�o'��3�N��rS��k��pUA�� ��57(���UBAm T^j��R��Au��ǭ:�J�(�8�vӷ۩K���t�57���㌷~�� 3:Z�'e2Γf�T���4!�,�xR�����N�7�~��t��F�I�1Ϯ��'[��m:lǭ��䶞ڦ������o{��m��yF�O���Zt�M'�������C�iߡ٦�����M��q^O�Ï��~��?���>�UKEBy1���"Y$�"���W?U����$�Hv5����F�Y���1^%Y}��r�^]\]^]]]_݈�8_���_Y�,L�z�^�/�/�����o�oE`�n��xY֔�f���������H�Ҽ-�۲�e]�� �嘋q]� +�� +<q�\|K]xuѽ����:���.\]/���p=�J��f.��ĕ���-�G��������,Oc�ʾG ��,����{ +.;o��=�g:����m��C}�ԃ�(%2%E��X(1VJ�J�KJ�+J�kJ��j)�v�j� (h5X���L!Sh�.�Z�������5e�[J��RH��!e /G��D��i���]�C��h#����m������&��.��E��EQ[�]U���s0|������h�L��N��'K�i��n鴕�1�\��F��gZ�r~��N�&�\%-Q�����sy�D"�C�s�ŻD���;' �[<�f��'���d�w9���Iy�$�|��0[<���3�����^d��x!��F����e�]Ȑ����e�e��Ka�]�bT]bD�x�hJI熌"y_A?=:�.몌5YWd]��j\��m!>�EOS��jQ�����F]9j�Q�Rh�4�d�5�jn���}# +�D�)1Mz�B�zA����k�P7t���U�S��B�T%����D�j�����T�k��Z�zD�]5�����t�nb�R�rߚ`1�ڷ�]n�D��n�[$O�ff�ڭb��Ϳ��O����c�S��� w�m['U Y/e��v�Td-��B�� +��X��(� +�;,v��M��a��uNn]��ז��t���0�톃�p46�a[MpũʮR����U���b��`V���.�sMu��Z�K7�g�<:�s�U�]Q��l���Л��s5���D�X����Bݖ�U]9�T���x��\�͊��m�eW9���qG�:n��{����~�����ڦ��-O٦���qN�>e������ގ�sb�nitk*�8�;��͠��.:�|��YT=�(B��Y�����K�Ey������I�q��������������:���N�)��)��)�s������a�'l�Ox�ӷ�C��^>f���pH<���~�BP-��.z%_G]u�f���!65w�oӆja S�@U���5\5����.��b�]]�R��!�u�(�2U���-����j>�ܔ�^|��}0�����e���9��M��rg��Ӵ��j�]7U�3��(S�*w����5���j7Ugn:r�Zp�6�R5��^�a�7?�4��p�^43n3�6Sn3�tI, 1���'�L:]PF�.�uWͨ36]�N�tk]r�9wS5���ی��~�A�E-�A<�|_������N��^��>y�N/�'���]}���wG�t���E#�!� F.�\^�R0�S��łH�|cay�����'�a���Gi�G�7��r9lW���Vj����}�}��t�Ŭ�iSc���6m��"8��[9����2��Xp�K��.��az���8��{������ٟ��֪�ӵ�7��i�Am^(g�?ꉚw��!�EN��փOJ�ѣ[j�:�:z���Xc#���6?`��i���ܭ����S/(M�Nϛb�VJz���Z�^+�ۊ�X�7�n�V���=[�7v@���^�7��SU|����^c!ߴ���I�z)�X_��,h?�x�y�T)�rM�f<fg +�</+�P�ܨK=�PND���r�w�wC^ �љ��������~f�-�(��bE�%��u�k[���ix.����y4�67,{��1�KV�^�v�KŮ��t#�{��\��A� +���*nk���vPz�L��ʾ�Jk�R�q���*���f M��ܔ���Z�lҥI��]Õ.q������Ҷq}W��:wX�����z�����5���?�Q�x�� fz��3n�m{-��[M�8Y0�%�m�:]0~,��m��P8������|�����t1�=��hb�o�_Pꪴu/p�{��Y�.9�Z낺HML u���l����`12���ŀ똬dS�cp3�2��,��A�q{g�@E�WO������ZQl���}Ev�C�C��]K��?6e�D��ކ�P��1�[E|_���8ٓ;��:����mP��b�C������\=[�~s�li�q����i��q&Z�{G�-`?�wLО�ip�X'�u�XGϩ�}��=�ÿ'�o�?�?ƯA��(���{�w5���{�E̒&j��_2�*���ioS��t[���6�4{O[�'mؽ�:��R}�y:�g��p?�u�fzb����������n�ݿ�X��d�-X���v�i+��� l�C�J�t��D����X'��쬞�9���Ź%G��"p콹��wm\�_K�J��B�*�߿��L!�2��W��,/�=}nj���5��stxy��t64p+�|��8I���������'�g�z|'� +��u8?.�t*ډZ�鞲���~D���b�ө���'uS���j�%t��Mơfiցf���o�R=d�q�{�X�����X�G������:���Ӣt�/9ꑩP������-�Ȭ��T���$��&�X� ����5������U�q��|<��#Iȓ���c��>:���:Ywa�-Hݬ��N�UM��6c� +��+v����q��������C��1s�'��m�٢�%�>QV+Բ�3�����kr\{�U���)��ȇ��V=�wa�:z�ݠv��W�N�R.i;V������'�FoO�ǽ�w����ڻ�5��Vp��N�i�7m��]�[jK�py]3�.h-5^ ��ԃ�6���a�"Xkp@C�?��6̽:(I�SD~��C����f�O9H�����2֗E��9����r�~�\ +{5�♴�%���6b~�A�[rdõ�Egm�&�=���ɞ�[�T����Ş�O0� +`���?� ?�|*��)��S�G\� +`>�|*��T����S��/�I��D���h�|*�Q���(Mr& �L�����QۡU�4X�G{�T����7;����ΞM��.��j�%MY�5���D1J����L�Q(�Xԉm��C��d�Ǯ���*uⷩ_'����@\�wˊ�&�]�N +�i/ (CO�=~;�M�ѱXe�G2e+Go���ҕ��:����Z�1`oO;zƱ��؉u�m�L'F��ɑ���ԓ[��e87�YT�=#�b97v9�ki[I/����W�a?j�i�[/��k�NT8M��:^�8���i�X���N��4*g��4���@8�5�x9�1pq�3< :��v���o����V�#c�?�Gz�7�q�/'<�{��=��'i[OҴN����vp�gfi��4�k��hZW�81��G���b�,)��rK�v��Ʌ0p?c��ߜDm�U ��!�Ұ=��ӏN�� ��~�$}�M�A{-hn�T����^�g�OȮ��W�Q�M�Ul9���>��Uk�Z�zS׀�)��N<i�cM���OבN���ԡi� �ք���F��^(�V��(@�Y��Ӏ�;���tМ���>����'�g� +��x���8~��G�8��^j��c��z�A+:*D�#���ȹ��[�tZ�O2c�q&]L��:�{T �P�Bd_s���`2"���t�ՙ���O�����=�y�@<����!���2sX��.�=��O�s0ݧ��1z�ߣ�O���- +�S΄Q_�r�+���5�EY�1����}�q�ӗ� ��/�C>H_:٣w���L��G�y;��>�t�O'�t¿� ��M�cla�-d���S3��i�]z�>P��jn�9����ߚ>���.k���ߩ���@ז���/�3m���c2[.c�fl��-�q��]^����Dz�M���7�3���O����[�w��m2ʣ�~�����9���M������O8��<��dFl�,�����`�c�G��b���h�,�/��E�n=��a�l���C�e��ޟ�f= =���ש&V4�K���� �ʞkeϳr1U���JMg��U6f˪bU*��d�TF���gM9E�b�Q�#ʁ��}�%'Y6.Nn�lW����}��d��>�6}����B�Θr��E22�#��),3��"�Sx�J� nj�*ɝ�2�OЪ��tn���ٝ�l>Q��G���{��9�hEg~>~-'����w�vY�I�1Ţ�&N�llW4�Ռ雇�ѳ~j���S��eu��衝4���pÃvy����o^����w/_�����?L�� �����{w���y'1�!g�-�nEg 2���,,I��f"������/�Ϗ���D��+?�7�� +��g�:���1�}���V�����y����o:�Ң����g8�gx-�������/|���ۿ�����g�o:�������|��ݛ��.����<�g�{����o�^�������/����֛� _&҃Α˳h#�? �r��l��A$o`X��H# f�Hn������Q�����qΟ�u�gѭrw���t��(@p���i�p�..���`m4��Q���*��tQD "rz��-�Nq����Fw�yY�� R��1�ޝ{$2��u�|Ot�b���� �ӹ/�\��+xϮx�h�"����r�gaEvW�g.β�rd�@c ³y`Xd��ȝ�Uf��e�U��K�,�%"�/� �<&����^��Xi�,� %�ki&���N")")x���A�%/H�K�0��x~y9^��{9Yی��g������ܧ�KQ�"��ɻ0���S=nC���f��$�'����z^P�p!�� +����7{�U�y㺋�_A0�0���aC�TDo�����a D,��Fl;2�jJt����D1�q�)k�SdI�]ȵ��)���e�`�իe��A�}��]�lh�p�9�r�Ȅ��,�b2l�>Y�� k�~�_3��<� �H�x�"���Ey�+Fx��"�x�u��<���Y�<�s�O�ٟyU�� +1M�ԓ�����m��}��ʷ +ij��X:D�,��G��UGJ@����.ƾ�#,�F���������#�w#��� �����ڨ�q�Pۋ*@g�/�˔u/^$j^�.���5N���0����"��ry�i�W�p�$��#���y�N��ay��mBK�X*sнDR���Y����S�������:�]�#Q�ND�آG�\���tn���+�Q ���YC0�S^�y�ˢ�S�T��D܌����;M0�hI�����28C�����>�+����YM?0�xy�\��1UD4���Hמ�*'NX�0��G�5O^���U^�WKЉ�E�����X�8��{�"o{�] P��b�^^�|���̭���I$tV ��(2��1���%ʘwX̰�f/7�0��s�{X�Y�I�fx���豵�5��Q�U��$.2Fd� 2�B���.k���@�/�VRY�����O�Ud��&" � ����2 @������eIG� +A&L��&S\�ª�]�d�Q�O̐EN%kኹ-�� +FFA��&T !ݺTm��2���A��W(�S&E�Ɏդ�m�$���m/��e�y(U7@�盒U1Lx.��_9I�x^&t�G"���t��@�@`x�xY{�a ��n)zrQje3���'��>�U�5����Ɍ�w��>06@.r{g��)/A�i�2t����e*i����D&��}//B��؟9�ed�������s�E��^"�uT�k"4�Ǻ��"w�t��(�ze}"Xg0��# +b�:��Uo��E�pY�p�*ో���V�Y���M]d��Xx��T�d/ʇ�e���s�y(@Az��U�^��\d����{�Y.�Pʼ�3Z��,�8�S�� S&T�K$�PW��U�p�[1v�yb!��WQ%� ��J�DSʐYA��Y��_� +a"ϑ:��Zy�"��p��2;d2a�z��:x��١ fj�!���h$j#�r����P���� �=�a� +<-�cHQ�n�A�V\�N +��Uޓ\��\���LQ7h9�(������>�(�bI��%�P�L�%��e��§/�Rn��绗�Q������q;LnK-?�J� �z�,F�u��!ҀK��4�fQ� +D���;Pfj�ƈ��fYz�̘�*� H�$SIM���@'��Zk�o�w<��� yY2E��RV�����EN'c�j,�.א�h�$ʁȞ�l�1`n�`��A�7Ѭ�����E���4 ʭ�X���BU��bbCn����$e�'m/��}Y"��b��ѷ�(�Y8�L^���,⻰Ίj@{��鶗�Ch�2}W��@C���J���RE2�ƅ���ٮj��Su�:��9:��@d�j��WS�E��x^��_��5p��ȱz��C2+�� ,�1�����e ����0���2�)���1b����X@g���j��r���@�7+����-�'_�j����&�Ӏ����6 +}���y�� �_���@�3�"9 ���)oA�[��*#�z�r�h@̆(z��H_)���hOU��c�1U)���To4��\`h���%� �f��Y�Y�����ڗ��3���Y�O �3ʂq"�w��:=���V}���,x���b�� +�6��^t)%��$���&�A�zX��2J�D�����b.��ڥ?1�E~V���P_"�xԫP�;���Z�<y��7�Rd&y�F@"5y�@y�T�-����٭)p9�s�#�䴘�dMX���T&�,j��%A%W�,z�[pQU,L��ϖ��'xq�Ũ�4���j �:2�:�Pm����w]`b���8[�OK����"}`0��N��}C�(�f8�#������WUgE���R��E_���ʑ+&��~�3�YgI��� +g]�'�j(�+��R��U�-18 @��I�@����v�\c>�2�h����@�E���=LԯUD�����P�qII�v��42l��]A�)��@<�X/�>�Z�p$Z�f��}|�������|���z���� ��9"�Z�^��E$�?&�UjK!���a�m2T캲�D��v�/2XP�9�c8[���#�1��WA���9��Ʃ-���\1,Ճ!"����l��#1�Wy>p��@��SyX� W?�����q��2xtB��!���p��#��z>�ݸ:�Fژ����B��q,�~/�� +����6� �� �Y���� �MKph��Ϭ3� +�'4Й���H���~|C87K��:�p*�=�@�RP����Af� �/�����z0(��I���i�T��g�vf:��>oD]5�Q� +g=D17����9�˛�Ê��R�>DHҰ߬�'���@��+Nџ����}!J�,��h��j-�pF��[��� �0R|���X O�H�����r��Q��p^�2�(1ߏ��O��������7:DPt�U����Io2wP�:���yB;�5��瀕i/��\��g�ȋ�z�%��K��7�}��ĚR]>�H$��T=�E& m��6�����T�c��R���E�&�Q�t�<�]��_���~24�~|�@��öY%bu��@Ӳ�Kx$& ��V�8��S �\ZHL���� ���m65TVfp*���`)�)ݑU�z�O�����ڕ"W��ؐ�Ũ6,G >( +ga�1��EZ�(#�}?�l�n���zK��z;my��-)Z�$B't�~���Y�kD;RgL��5�L5Nu�L� UR���I�z$b����1�%∱V�8�.=��pr,��P�7��KM��tD�m���':��e.�+�ttEv�+��ϸX#��[pA��Mt�A��>� !�=0P����D��j��kR(����XlC����@Na�U#-zdCa���%#O��2�0�?��b]�ڢ��k(V#���J�Jk"P�mv%Q>3�9���I���c$j}:��]�����y��]E�(�A�W���U]Nx����v�^kT�m��5\'=�s�� no< ��9����/��4��|T,!��rG?~G�z�Jt��K����t�;�)1�f�!m��Pw�oi��a� ibDW��ʨeB;RF#n�%�Q��gTW�P�c1���#��-^�]� +Z��P� +�SQ�)D�p�J5� +�����p��a Oe����"��fb���Y���t��,$�x�W�'UC�@�����#B~XK�8�˔3~%� ���U멜M���Ԋ;x��+�?���s]>%5�M��A�����&�xj�f��`8a?x��0M�]D����9k����{��Ǜki-���>��)���j���S$R��:ح��@3}s�����`~�S���U=P�_#�b���Y}QX��::Z5��"��4%�]s�'�Q����N��q=����葑I{X����EC?#>���W��E�4�.P�Ҁ2D�, +F����4t_`a�tֽ��GxN�z�R��DZ���J]�+R�蘢F�:��P�0J�Y�&�GG��E�s��h@{�ɠ���Bo�yB�Ԭ^&��}�D;��ne�����G�<��Fcq�s�hGӭ�T�FkH�e��x�Z�B5:�Uf�#s�[-H��D��D$@�D�L@w���v$�;��sU1�\��^�/f-�v�KMŀ �)�`��Q������ ��%���Q9�Y�r8=�7�EΉ1 �D9�p�£�A4(<=��s.���V�@����e��ԁ���ld5����Y�KW��X�2�I���͚��%�� �_U����k~�U�������f5��t�Q���/�+�U0c��� 2g���V�[�&�g(p1��`)f r1�.װ�EuGDUC�DU��$����(��?����H�+b�~~���߽}��۳�.//^���߾y��Y��?�!��ȋ@��wU�z�DU��AWD�]��Ѹ���B?�:�����V�gP�#@���-FX�ru/�o�`�N���[�d��8G`��6Y��%��<�������Y}?|�!�Z��gAxҝiB-$�����=�)N`��:F�TWȎ`dB�*<UB���W��ܙ�Q�$+WsM��$���E� �hNkxf�ʮ>⨀ +[�^�"��]Ei�]4�d���~����>�&�f �U5��~��� �у����Ms�JL�o�j���CF��+<vz�Rn�^��Xz��`�Z�pI9CڋG(���� ��k/P(�L��w���a��jZ�#����}>�7�g.3�Q��-�d���\��K_�G���k��[>���:(��p����J �9�x���:��Jen'&���8��.�`L�T��jVv�J��]���JQyL�)Ӽ���! O��k*�X��M� �БɐI����La^U[�y���j.H�y��鬅 +�QLD�~#�J�h�d<�'=.�^D��S_Xl6:��}�]�̋S�os +��� �*TO"����'�`6���z��8���N�oCS�@���UmsĦ��<;���@��*�!A3-eJe�$��0�b��� Aa�nhɚ,YE7N�V!� �[<E��J��'�ճHi�DD�g��z�-:�냩�8#L�q��1�2��G������4z�S�rǫB$j.}3�#cq�l{�w��iQ� �2�yPp�ǥ��k��%?2E��Xd�3� ?�0̰��j�Q�b���A��X���52 ��W��ǚ�=���Ҡ �f�3��I�0�b��'@�F��\O�u�aF6y�6_�*�H�{�$���"i�a�FB��B�`3�7��c��R��r&j�cD8EdMhi&��M�k���h����{��#�͍ +�,��:���k�����j�*��殊�Sc +b]� 1�Z�B��W$�p}Z�܊l(�LbhSx=[\1NE��~!(&� �^s*"͵�$��f2�ii@�b�\5 s `B9��"�-lB_�\'}���DO����%�����胈<��o*�����eNm����A��e�[�!Ù[��炦�,𠶼h����*�&F̀�G��^�Y3b�-���Dt�Y�@*Ъ�t���*���-����VVf �1�kX�B f� 11�0�n"� +��#���&25�E���K���*����Ǔ���]�hP��:�-�/�%��oX�������L"X,�y�Y�Ȇt�A�s� %�p����uQ':,�����f�c=� #á���RE�""�^�1[�sdP�`�fOhI +E�-h@�8n�\6 V(Z���)*��j�A��h����:���4}� j�"14,z�HKm1-b����v^wb���_��披�u��f8�"�`�%���9(�X��Va@����!�P�� $f�\:���tC�A���ES�S`�x�sBU,|���<�w��{��8R=�Aι��)<"V�D�r�����-j@�� ιF7@G����� �S�=dm(�0��A!O:לU� fʺ�ĥI�<,�}�����Ai�O1G*!9�WK%5c2j��8���Ŵ��Kw%�T�Z&�G�l��'˕�dU�����wP���V4�aoMRA.$��H�̂R�j(y����^;��Í�3��b�f&g t� +��r:k�/�l�a8�rU�=�t�^5���l�7A��Xv�l���Ak<6�,fLoU1Ɛ=c]?��gt��0��ъ�`�d,EZ!P�m�˥��� +��8@����#78M�c4����ar��R-�X�Ů���2I��Q��Ϣ�5���"�%eы�5ުq�TӐ�P9�a�]��NP��ˬnY�4b�g*Zt4�$T�шAz�v��g�����,�Nz5�2CK*�0���XLuY.x�4'f���ӿ��Ts�ֵ���tt�8�X�&�6��ɪ�:�)H�݂��I̫:M�W�}��O��::NR ×.)I�C[z`��� �4����Kŏ-� +I�y��e�mћ�h�k1����C +�G�H�]MFL��*���a��T�q�2��(½|�t��\�r�^��nm�=i��7�H�;�����#�P�m�R�N��7�Z�Ue����k����\б�j�"*��U�6+a�qD�(|KsS<Ĵ��v--A1U {" 铡^�*��U�u��XZu�kn�^K���0��sK�"����X���6I���>���P��������DjG�,e� +�0�}E s�h�ҔyfLi�R�eL��&x�*]e���*-����'.� +��|��0����k�4jl�ѓ��{MYZ[j��YFsܒ�)-�}1,�[�i&((���`����UV�E]O�չ`0r��% =A�*tЙ���@��,�Pq}6qmY�@Q�g#c�H.b�D����� +��Fa��v�Z���+�P�zjJ26Nd�L)�����Q���@�x�K�6/�I��Y��bT�!o�Nh��"�-�<����>|oA@Sf&5$a.J�*B`�喥�e�Hl-p�CPO���' ZsM A[^�ҞKʪ�h,%��� +'������שϤrN;Ai�̆����RS�@��7�G�(��ݛ![�0��G�a:e�#�z��@��I��k[~�ō9�]4��ts�,��a�;�KļCѬ��(�I�|9P��t�PE���-�N���cU��u�/RM[��ͤ{ƒ1Tᴄ���ñ +I�� ]�:#�Y�s�Vz�\u�/�Q.BE�ƀK}ۈ�4�+ʀ4���w��o�ZN�.(�MHiɖ�P�D���F]�LnKM�3�چ`��4 �N���E���`欱G� �-�Z47�~hVmp���i��0L �5|��r�Ի� (� +x�[:^b���\؍,ڃ��\")��O%S����U��d(����֙5�|�A�����Ɋ��d���j��OԌ`Q1�U� ++�f���:���Z/�1�X+��R�V�U��v(�A%Q��b�hQ=굙!�*����CVsE��L�a�>R�`X��W��9�5�ǘ����@f��2Ì/�VЮ:'��jL@(�zO����q�p�_{ii��o� �k� ��m�B)�5%F0K�V�[�D�:�X��Fp�"�x�Id�����>�A}pL?4�>ƉLo��ic��th1�t��4{��}WQ�2 e�S e�EC�*�X�ݖh�-;,��@�QeK�;7C�X?��B�a8��q��=��炍�"_��%���/�p���I(?���e0â7A��H��Ut�����`��0��j����\:����R�F$��B�wb���K}<+!8�8���cOM�,���p�aM��WXҷy�~�:^Z�2+i�s� ٵp@���6�d,xgf:�S��x�R����!�g�Zˠ;���f�u�U�$���*�W>N�d)��<aN8&�>��b�U,��/@�pKFVX{U�=�X2��(j�.�t4���R����� �- z0S$�\}�eK�MȨf�f���j�X����ϳI^j 4:�s%dы>�� qZj;���W�e�i�!Z������J��-' >�gY +=%<@�Z�}х� �a��B`���2wh���ル%�����:k�maO�z���(H-���`��{�3�6t�E5���2] +Y}�8 NV,��Vv4@r�+�;A#`Y�S+�e�5W�u�"��=����ԋ���Q~>� �?E�{R��^�̛�ډ��G���^�X-:�����쪹d�SD�PтjPVN��sayh ~�ZCS���ԝ�R]�G�hQ����ZEj�Y�e����lS��Z�~�wVJ����lMDJ-Zw��G��b'5xP,��������H� +��L�@ �s��!8B� �d�Ţ���j������\tI=��A�g9��]}�q����r�*!8$��|�HVH��¨Ԕ �&S����t���w�^ଝ�`S���dn���Z�a�f���3��\Mb�Z�9�Hf��x7��6++��� &u�AN��Z�J��FP��qD n�dC���P�AZ&aűW��^�sZ�\�@v˜y�KK�D�A�T=��8pB���Įp�!��kj"���7���&�6���Y�O)�]���|+�Z�E���_w�'��6����:��!��yS/�S.�V������旣�H���~-���E4/��Ksz�fC�,sj�����Y���O�B�23��\��Y�=�����ߢ�+1Y�0;��VaS?T���T��Y�l������X����p��� +n([��tE~!f {%-���"�)�ꁚą�">��8>���>�X�(D�`f��<����vJsD���ͤ�Ҥ/\��|b�8��X��%� +��^s�R+Y�>Κ�@��@X!�6pZ���^e�2M�=�rk�6���{8X6�%F�t>c��F�5�v�syF�X�%sP߶&�d�{^T��e��a��dXx�m��P�e\��,�����#c-�幥�#�t^W����D��>km��pW��2�qN���k�r]� �Ʊ5�1o�:`kc��P4`n)nb HL���k�I/5h�5QL"t��m�T���D���A��s�;X +���~%=Pz�+�R�8���fA@ҫ�!��CE5���ȫa��1&Ǫ��9*��]��,C�Anc!h�$j}�dP�ѡFj�Iq�Rч.D���a�e�AQ=X@Ϊ�)�kYz{�d�5� +����Ml�"���j�n�RLZb3��n9V����jC�-t��s-H�(�י� +r�%P��H�B��\y6@m=S�T�yup�����sd�� �L2�ŕڒ���V�?�:�Bmj���F�C��¹�x.��M�uIF�[���Jl���w���(��x�E � I)�#; +������UI�~/1� ыEYl��k�"�O�Pp�߮��A��*��gZuC�8`��z�1��V� ����Tc��������䜴�ϖ�ѫu��hۯ��dm �vP�]M�G��ھ� [�P�L,He�:���8���٘?�.��4�����WQ��uNѰm�媥LP>�̈%__�Z���z���xG��m R�a�Ȏ������!���(�G� +٫�/;^'@v�E��ֹ� +j⥶�i�;�gh�D�,��EUo��t��5 �_䊈�g�p*��pHw��ԑE}�/꺬(�R�Я ��6�������~ں@�Z����RU�9ҷ�9��jR���D/�tm��r&����fm�vd��\�L��ܑAt�]w����g����"\�V����Z�.k�:%j5d���@|�l4'AN�ꋱ��G,b|=,ܑ?W����Hݠ�:L��i�f:�T.U�����Hm�ι�Hi���Zj�-��5��Q���&[Ԧ��8-HDZ�������gL�O�>��@[h��4#ZΏ�vQu�6[�M��Sٜ�0M\�[W"dp�/�q:m|�? A{��� +�h����k�-�"Ǣ��:\"Y���fD5$��$|i.kZ j��{�r4Z^���I��k4f��=��(Q�V10��xmJX+l�y�hY���kkJ����XA�f�C���h����Y��SA�Yk��A>]�Qo�l#����� +5�p����RB��Գg��G0�^iD�c�6 � =�i���0��d ��5��k��M��2WAi���XK�k�;���.�{1����\�j���s[-W���Y�Ixu�D�yOi����T�u���Z����(�M�0��~�-)�c�;� ���O���sk�ԟba�����[6�Q��m��M1݆�K��2�U��pfQ%��Z�� +=@l�}����'��%*���.���D��e� +�f�j��fn���&x�nx�L C�����a��D�:�y���K�P���͛�L"��H+�FQW&ǪE�T���pXs��5�J�+sƺ�Ӑ�W�9j����v�Y�fK�A(�f[�@m�j�7�{q�D���\�7��*�����X2>�ԽX���aڋ�C Q��q�� ̞j ��T1ĘWf��u�MM���收�)]>��� �#���dNC���0k�(����#����3Gm%�Y��n�*�,����d�3%����s,��M����l�B���Z���لG�A�yH����ha���>4���"Q=ʌ���F��a��u#އN��s1����`e�&�,*��[cert%k�m/4������㝎K�sr!c +�g4X�}����æ�Nݻ�̠!���^`�Ĩ]��D$#Tʌ$Ԛ(���Kp�+��M�B����h�a Z������]�߶b��'˸��ī��¯�.���8Vj8��y*��4lR�w�%[!^���}�u2ֺ<� +i���k�zf�J�.��E�!���5x�@�*y��f�@l��T���B=�7Ϸ�����ޗ�\+��Fb��e-�!���j�C�*I�ި�&���}e��_݇�����M57*����������5����R5bM\M�zi����_�t���c�XH��Eq7)�����5�L�Is�`�`��4_�F�� �g�˳�-��QQ�>���f���zJxTq�*$z���Y娣$���-��\Up�0��y�@�Z4ş���G�1=���7k�'��wk �_@8��>���_������/x�ۻ�����_uz�_=���՛���������o~�~���_�!��~��]����G61����M̳}��&��lb�Q(�&�5q`�p�lbD61�gd��,���MȑM̃�c`�� 4��y��lb(�?:��L�M�3>�g�g^c�������&td�}������``#:��IѰ��T�lb��(klb\H�w61ā�lbn)��f#��Aw�A+�Z�� �|J61���MW5���Q��A���LȑL�H&d$�&�����-�G�db1db���p�#��iG21�8i���1��؆����'��'��}�Ck��O�M(�9�|bD-���O�>�ُtb��Љ��4�`O'�n+#�����҉��y��u�i����N��@'F�҉`�V�;j�Sh>ǁN,��|�>�tb�=<G:��2�;���N,0=xO'��2Љ�Ā�Ă�;:�����<�tb/s�,�tb!�#���N���p�:҉�Ā��J:���?�N��*��H-�Ӊ�ĸ����6Љ��D`���<)���g��F��xoG'摰a�İ(tb]��N �M4:1�Ṇ�َNm�F'`�#���d*��G<�҉yd����< j�:r=��:�X:� ��.�x�Q'��N�d��Z��Nl6:��U:1އ���N�Ӊ��F:1!otb<lO'�Y�n��<�>����~��̿4tb`��:���p�NZځṆY����C[:�X:�6:1��h�Ņr��tz:1�\aK'�a����<���NL��H'��x�8Љy,�N,��N�@'`��e<҉��X:1{:1Ϙ���P��R��tHL9Љ!�8Љ!�f�C?����N�m�,�����ntb<�҉�{:1��L�NQ�=��c��Q���=�X�}�*��؆N���N����gK'�/�щ�n:1\�@'�C'ֱF'���r�\!-�X@��@'B9҉a��N���� �tb����:�X:�6:1�B�tb��g�tb!�#�X@��҉u�҉m`��E7:1������XHn�c��=�AK'F�҉��tb�:1��X`�َN�4Љ���҉��щ��:1%86tb`H�6���K ���@'��3Љ�z�҉u�҉u�щVX:1�;����:1(��X�d��:���p��N�:����҉a6tb��f�c#K'`�����.�tb�:1�c���q�,�4tb�Ss�C3��Nz���C'���N,,��e[&K9��� +,���&�V:;61���lb<�M���&��q`���&���&h�[61��;����lb��d��н��&ƶG�M�`�����hY61�(�X�����&��b�ĂKG6�0��M,�ad�ײ�A�lb�N��ML,��ML4�Mj�M��eS���)�c8���lb�lb�|�lb�,�>���<��e��pd��|�G61_7561|��h�����lb +61'�e��h��<[61�{lb061O��&��&���&��6����N��yv��lb����\� 61�#���M�3��&t`0��q���g�5�&��l߲�yTG�Ālb�F61ѯO����x�e�lb���M�c�[6�X6�661��ɰ��%���61�&V?lb klb���M�#��&�M0���s�lbb��Z��|�]�lb���сM��&��&td#2��9����p���_�M����e���&���MLOo��`����y���[����;���Ch���X�lb��6T���q-�G61�#���M��vT�M��&Fd`�61������&�!�MlC����&�K9�&��u`�_fd3Hg۰F䙉n�� ��lbp�f��&����Ā�lbD61y`#:��y�$�lb@�lb���M�#�6��İ�mhc�Q�c����&�Sٱ��O<��yX�61�ދ�MJ��&�߁M�Y61ߨ�:K���-���-��D�M� �MlC���&��<��1l<��!�Dg#r`#:���\�o��&���&O9���&f��M̀�&�l��ap:��<҇61���� 61�G61ߚ�v61*���A�؆661���&�rd�r=������6IJ�mhc����� +=��! +6���o4���uqd�ldÑG61�OF61�����]v�&��ŁML[Y6��X6�V61V�61���rѲ���p`;8��'��lb�U +lb������sI�lbE��ܑMO��&Fk^#0��9���%db@21��db;#�X@�b ���@&o�H&�ߑ�������dbpЌdb�l�Ādb�͒�8���dbt�db@�db�%db��f���r #��@&o�H&���=�;�#x۸�P�<p�a�\b(K��xG��K��%d�c;���j���K�ȁK��%���K���%���%F +��K��G.1�/�\b�Y���l�\bp��\b�=p�A<���-��eG.1�#�f��%ظp�%t�#2p����R�1B1P��"*1w�)����-���JLE���8�Ď�����G%��������Q���Tb�*1���=�AK%F�R��S�A�Tb��DC%ؚqG%Y>P�q!�Tb��*1 +|K%��k�����Z*1~�Tb<jO%=e�1�Tb�Wv�G��#��\������B���J�(��F%Fd���G*1���rG*1x/�TbP_G*1X;�R^�&*1�.͆J��1���t�ĈTb�����A���;.1�m�\bj��@i\b��Đ�1r���=p�y�Z�s���>r���\bP��\b��G.1::.1�L\b��\b�7.1O&������K�ȞK��%F�p���\b���K�k�����%w��%F?���dF�q�ḑKoc�����%���%�!a���8r�y�6.1�zF.1���%�6r��\#��G���%�+���^���G.1��K���%�)�.1���%�O�r�9r��BG.1��9t.������2t���'�rܸĠ�\b���%F�r�`��q�`��r�\f�q��\b�h�ڮX�$ކK̻�\��<!< ���-����r��5s�8p�y6�5\bX i���j�6tPg��K�aNl�h�����y@�j`i����s�A� \bH�Đ���C�c���x���F.1��%�W7p�Q���4��P3\b���|2\b|^si\bxy.1��,��g2���w��%���%���%�u��%��.1��K���=���K�4p��s���Q�q��a��{�q�y:�7.1Ϻ��%����6\b��8;.1ȯ��ܸĘ_���K������{�r�yr��K�x��z0p�!l;p�!�cF���A�4��.{���\ �J�tO%�v����Tb�1K%F��*��g:w���Tb�J��%�[��,��c�ש�XQ���Vi���_�F%�ˁJ����<P��Z��z�#�6蕓�o�Q���nC%��q�P�Hʚ]s� ��xh�J̓+lTb�J��P��b�Ġ��s]��/�@%'�@%��k���:�S�iq��Ó��<��;*1z4i�*���MF�t�#�C��J�Ëd��<�e�İz�Tb�� Tb���|c��TbP��Tb8x�����|YOP��('t��-���o�X�сJ̗uG%F�@%t�Tb@�TbX=G*1��*1��G*1����J��J�H%�h�@%�H%�b�2R�A9R�yR�*1�|*1$���Xh5P�!F?R��������Ld�R�!��H%�c�Ĉ��U�6<p�$p``�����$��ԑI�Μ�I,����$td��Lb@�Lb@G&1>ÁI�ȞI,0�i��E���LG&1�Lb$#��Lb~YvLb8rd���1���2Lb���Ă[O0�?��p��$� �gh�50��G&1�L����Lb�X&����$Ft`22�92���a�3�����0C�LbL���x�X ��I�u��I�����Lb�D��$�����$�[�Kc���e���Lb����%LbD-���I,���I�5�����=���&1$�Lb����In��X�c��);2�����$�5�Lb$�>0�!�72���>2�)�IL k-����I_ydc>��$� +��I�{`�8�e#20����Z:Lb�Lb���X&��I�%�B(G&190����8��Lb� ̖I,PK�Lb$��i�,�j6F&1;�Ę�>0��"F&1���IN,��ec�ՁIL��,���IȑI�ec ��$Fd�$�p�eӸ�ec�ƞI�=0�a.Lb���:rgÉF&1\��IL�=���I�|dc�݁I!a*F�H��x-���wDb["1�SK$��{ �<��G�!��>�1���!3t �b~ C�@$(�wDbP2"1�Y-�v8�A���<c�H��{"1��H$��@$ƪ�=��E���H��'��N���Ęp c.�@$�ȿ%#p �Xވ�0"1� ���Db,���#�,���H��H,ĵ����Db��"1���H3~ C�ׁH��@$����Hs;i��0�-�D,���A�#F���<;1��xĐ�6��E���y��ԋ�^4��#���j]�+-��a��.��d��� <bl�#fy�X1�1��XD�$�#�{�x��Wz�CS~�#�}6<bl<bhv>���3;��G������:�эF�Óo`����ӈ��3��Ј�>��F#���� +,�A$Y51��*�>sI14bĐ%�h�H��;�ш��`i�0\��i4bx_�y�4bX�-��K#����сF�H#v��.?�F��=��g�Јi����2��c�҈�4b<lO#�҈ћii�X������҈!ma�C�ÁF}(1�Y1V~�i�Z1�F��{1�E,���,��o.�F��FO�;����8.�<Ј�t��~��#�сF��KK#橑�i��i��!�z,i�X{;Јa�i�`iĈ4b��Y�FȑF�U���F,������F&�H#S�H#�҈!cn��K#f��g��@#r����P��cڞ�S`O#���F�75ЈAxiĈ4bD1 G1l�X�e�c���X�ĵ4b��G1���� m4b�ʑF�zO#�>��]�Fl,�؆61�Z�[3vK#�G1:��@7ĞF���F~فF�#���� ��F���=�AK#`�r����҈�4b�ǞF��F�֑F�((?��x�F��#��weG#��#�БF�Su�4bއ4bD-�h�x�=���� ��gy���dl�ӈ� +i�Qi�|g=�4b�ThĈ4b�Ͳ�#:Јh���{1��4bx!#�؆X1E-�����iĐ��c��F#��[�FI�1�=hĘgiĐtr����^��h��шm`�c.�@#�,�#��&(Z1hU#�؆X1�V1�[��F�)u�4bx�#��;#���4bD1"�F��F���ii�<��FȑF��'K#��o���=��g�iK#��1҈Đ�҈1u�C�ܑF�e���4bbi�6�ш�F1��#���H#;a��K#���C��H#�Y궧Cn�H#�[ @�cc��[;16rh�X�z�:҈iĸρḞ8҈1o�s����H#�Ĭ�F� �F̠��3�4b��#���҈iĈh��4bD1��=��gOXK#��v�3����F#��N�4b����b[���FL��Z1d�h�0E1�$hİ:i�h;4bHi�6d�m4b~M#����iĴ��C�đF!�#��6,�4b=&<ЈA!h�;6X1i��4b�X1E�4bЕG1"�F��4b=[1�#��#�RVF��Z���vQ>A#t�2҈Ѭ�ш�W�@#6 L�q1��1T[4bp��i�`�4b@F� �4b�1<ԁF��D�4b��4b!đF}�4b�1vg�4b(�>Ј�4b�<Јq�=���X1�1d�h��4b�1�1��F��Y1�xO#h�1� 4b�4b}�N#��m4b쬽��1���F�#�F���F&�@#�n;1��4b|B�F�}�4b�4b�[����F��F#�<Ј�p�ӈ�4b�li��i�p�F7҈�i�6��wCK��F�#�F���FLO�i��;v4bH#h��o54bpQi��i��qh�:bi�44b�4b��#���F����=�@K#�ϖF�G�i���,�X��H#�C#ֱF#�0��P��4b�|1fF�����`�� �fh� �4bY�F�~���wO#�҈��A{1��F�@#�@#�+�h�X�mhĶφFLAC#��LK#F�ڞF���Z��:��F�[-�T��F.��XHe��_tV���H{1��1�X�:`Y�6���1�Ų����,b�[1���=�A�"��X��heY���XĘ'dY�6���m`e-�����d>��1�ʲ���>��&�X��Y�p.�"F�ϲ�m�a�`c�ϰ,b��E����"U`S`�"���"�V�E���E̗<��!g`c�؞E>��E�E�{1�3 ,b�~ ,b��9���+9���IJ����X��d,b��<���^Ȳ����c;��?����SX� +��*�M'+��o��V�a��-s�`Ġ���mbS��F ��5�2�Ƙ�̍>���k��øG��<���4D+yi���q�Q-a�[�h�я�>@����WY�2S7ΰ����(eCQ��XGT��0���o|a�t�|�tap�6��� +X�}4laH�-��da�}Y6�0�J�U��p��e +c��T6���֙�q�y�yKF�l�%�/�3���u�Ru�S��!,n�_H%��3g ���B��/�A�rI#A@痍��)l�`�����`���Y��5� �[�e=zS�<2�y�G�1X� �т�φ�a�̃�zg�b�u$C��U8oD`����N�5���*���숿2������!̘ �o��~!/��m�_(U��4�_ʆ�xn��}3�~ѝ�U��xS���nvo@tIR)�Wa��0P}��3}����;��^6�UJ3�0�W��ŗ���x��^��y�8�*yZ��N��F�C-���Kǰ_G�/�y��F�3"����9����v�n4_�:�W�h��6J� �Û�����ᜂ�X�K�$_� �;�����D�ZY�����c�X��l��aX���k_6�/�~<y#�:�ǫ�����m$_��<���{�ʫ$_�<<�����ײt�/mT\g�b�jZ�����]��|9&�ƍ�J'����χD<C�:��,_,��JaH��tlE����&dJ�E��V��/�=x-+����bW�/�wX�s���g�Tz/��r*��+�ܶXr/��s��ۋMt���w�g��ձ~�b��X���],��+�c�U�s'��7N�UJ/\<�|��B��V��+��-vB/|���p���ye{����d�sy�� +����Ue�B?&�b'�� �W����Go��*lR�/T���t�¡�5 +���2x5�x���E����3!2�x��b*9_*}���o�d��a�y����,�DE]#�bGN�kK�� �L�w��\�f�<��]Xf��@�0�"�,����v�.����ޫ�w\�6�.II�Y-H� �L�KGO}t���b�o�]�Ֆ/��d�"Kޅ _L$�1@��M�V�;ֳ-y@AK'�b���F���<So7�.�U�i>�*� �'�� �]�8EIY;}l�ef���w!z���3�]�Յ%v�.��\K���N:��EK��n�]j�v�.~�Naٻ����w�����]�|5�.�-��F߅K��w�����5�.����F˅`���A�D-����7�.�>Ʌ���{�E��ػH��e��r��LҰw9��\6O��Tc��e��`c�b��5^.� Q��ޅ&g�j��^BŐ:{W,{�V�.�A��2s!�-�M��p y^7�/G�%u�.���2�]�$U�.��|1����͗�� ������c��w����]��ꕲ��]��]B��\:(�:�w!�XdR��"�p���k��V'2�X��S��J�S��];ӻ�z��W,W��D6f.j��ā�oB� �!�E��'K���F߅s�6b.抬0�}{�F:vE�K���V4ٲw����B�j���iY;{�j���n������:#�Sٻ�Gf~���k��mt���xgEF^��Bk�Vy{��(��;%}���ky�V�.�0#̺N�ˊw~`���%Yٻ�$z�����k��Z�.�WT�xZ�4�.�3,*���U�F߅��:J����C���F��i��S�iv�C�@����CG�1��H�&�,�@��VCc����WY�1�$xfK�E�G.v���|�aD��ôn`��bV+kSTG2E|���b3�F��؋V�̓��)m��'��\��ؾc��w��fI�gF�Z3�$�tM{��s��w�3dz�1��@݅H�"�ec��g�w#��g�t�۵�|��v���ge�BoV<C��u|u��9^8�Qv�j�Z�.ƃ�����v�����|]�*6����祳ue��Y +�c����^��Su���,���}!��<]$���h��g��հN����t�V�.2�y���{���)��i��d9��= 8�.�^�ŕ��=��i]�I�5�����Rq���M&pe���;�+�e�bB��]lm�k'a2t1C$�82t9��W�(���O�Qt!������(����G��J�œSw�]��ĕ�k�CJF��ꀥ�j`��r\����ط&���b����^��&�'�t` ���F���,�6.\�: �X ��ݬ73��[��Ե!��ˠ���iz�kL]��Q`���.�mL]@�9ט���y)#S��t��K�sޘ��@����R�mL]l�i�8�9V70uuq��B ;SW�� mL]z�bx�0���e�b�Nv?8��L]l|���g���~�J�E�`A'�J�Ձ��kC��K=��k�~�n�er��b�(�X��bO����;d��TF�.6�R�Q����o]���`�:RuA�ѓԩ��o���Jյ!��kCU�B���9�0oJ�#U�.�벡�p�䦪L]Љ�:�vP3qu�~���rMG�s}?d�-nc��L�Y���]����H��]��#)-K�N�n,]@2�����VEkc�j,]��zde�B��F�K�AK׆6�.�����o��=3�t�������k-rD+X�l*o�P��Hd#�*-,���д%3ް�s�]����*EU�N��=�����F�i�@�=Ao��͵������хX��A���5k �U= .K��X���;�嬓r�z�����Qr�R�����)Ǖ�����\�Y��Bڜ�E�m��ƵaJ�Ő�ư��J�:֬r��$l6\�ձb)��p�!r����Y�ӎ>��`P���6��ou��o!��3�e���]\�X���n���o�[bɷ6��oa�DJ�F��U�F���0][�|n���ƽ���k�#��es��+�;˽�G�5\��-ȼ)�k�\@pd�[^�M���8��ouIJou��o��Ce�b�^\�e�b�_F���;�@-��ƾu��6W�{ٷ��ő}����k�[�/�R��o�c)S�-�G_a�Ue߂������f�X�-��6�-��#��鷀x�;K���HQ�跀ĵr��i,�@��#���uV�-�[Џ�ٷ�8Q���[p�ɠQ��\)������&��$9w�Vb�ƺqNk�C���=�T�_H!%�X�e|7���[� �{�~K������-Ep/��b!H��[�L�)�-����a��/�Tm.y��B=�s�|<�I����-�-���߲ +��-�VF;��߂�y=�[��^�-n���~swҪ��R��u�:��kV���y�^!�[�"�����Z#ӷ$��YTĚ|����E\��+��[(�}6|�dx�oI}��ߢ��X���ׇ��R䉪�`o������%��߲���-���/�\�v����u�M*���b��[��DCo�N�&+�-M�.��XWS�����R���[��/q�@o�iE��M��@o�X���[(�����+�k���%��,�[:��&2{K�/�T��(�`J��ۄqrn�C� N���1~�{�-�W!o�a���y���- �V?<ݖ�[�h��ޒ��Iax�d���|��e]�����-Q=�A��=�0�[VP�\���q�xN����[�V�qɬ��o~�**p�V��� +ϱ.D�{ +y���{�����_��i�Cd���)�"n��ҷfq���=�Ͽ�X(J�DF!o����ح�(���[ +v>�S�[��ѠnI��2�[��oeni�K,0�[��#ڥ�Z�~� +�"�t��ے��8�m]�S�J���}7l�w�Y����YI[W�y>@[��s��.�Z�O�lɺ����~�va����Wmg�lɇ��@����v�[���$2ckj�e0�Zd�cK��iܪ��¶�#[�*ٌc��'V��E���"4[ <o�6cK�Iaa�lvx߱![R,f�-�F3e�v��mݎ��7FP�쓎^)[8� H���#E�-B|t�lQ)�:��A@������e�0[xaSB�-��o����;C��B�����z� ��bK-O�-� �;`�^|��Ǖ����:���ZZ�D�&e�J�x5'��#���o��kK��R&����F<űZ��<�jQ�Ihc��L�ZT-.���yתbzQ�j{<���Z�x���Xz�|��d������ӂ"�6Zo�QE�r��R��W��@��)�@Gi���L'i��6��5.ʺ�Ϊ�\&��h)nt�~2�B��~ڂh�S�1���Q/[Fh�Wy��ѤwbJ��^��@X���jS}1�ga\{�����-�K��Y謋H_[�,z��^�YB��]�,Y���Z��2��x��Aw�1�� ��fщ�UZ���J?��7K��G�X�͢,Yu���@�g5z��s���._-T��EbL!� g��:i�$ ����F����уײ��j$:�3�Y� �u�R+�Y�q�ֱY����#S��s�*K�f����3�y�>4#�b�PĬG�eǽ�Y`��QxY�A*���cM�A˺_��2,۔�.V�g?��簧#���<)��`)8Y���V=c��ZJ@gk5�����7ˌ,!��"K����Y�m��bs� >�↯Qٰq5��{ѱ�n�^����&�`c)��=6�'=}�E�]Nбt�U�8�,ӗ�Xw� e��!z.6��mBc�(5u2��1��/��XҴ[ .��}���X'=E�P�N,:�b)���A0����ĦC�ʃ�%�����5�<,Y�f����^��a�f���l�P%R���a�������"@XCV/ǽ8X��j4c���hA�d-K�``��^X:C���l���_)�y����+�`>��+��L�+��2�J���y�JŴ���J�R���.��N��^�j^�m@���,�+ �p#ye~�s����tl^�'p��+��@�+ ބD�"'z��&^���@��W��?�+�jg��+4$�3��89� ^镵�[�Z�����Ԕk�Z�.�*1��^���k2�{x�tA��u��>p���֞�Ҥ7 ����9;��^Q Bx0�P)����wx%��:�x����^����w%�ΛĻ�b`��ޕ��D�F���ؐxWtZG��H�(:� +3���~�|7pn��t$��w�Ə�^�]�k��^��wޕJ~��y*��8}�P����3 �e�T�#y%�)ߐW��EGXF^)�|c��+�(�}y%�F�,�J��yk~��E�'p��?�+������H�!�W(�u��n���������:�ʲ��e��v�uo�� ��xE*�G7��>7� +w$����r��-�0>�N0�W�L�T� +�J�"x���]�hG8��4�Wz�/�z$�f�Vp��+���D�����k�$�%��W�� �*�-�*oi��p�"L�+)�����f^@}��J�ǻ�WzE��2���GF��^�-T���W�-L:+�[*рW�[���-Z<��N��4P��+�y�%t��8 �x�^Bm�j���f�S�wŀ�<w�wS�GЮh.�<&ӮP/���5���y��w%e08d�m��i3)����+����{��խi(�W +� +�D��h&^Yl��45�#� ^)9eY�L�� �{ +��-��E�K���WʜYW\��f���WK=F%^W��xE�\� ^�O^�E2�"l^� ^є���+ch�w%^�&��(�W�8jc�8��e&^)OD�'�WԸ�) �E�z)2�=�╵`P���+�.�f#�8��R���d�w��{ͨo��=l]ī�*홛xE5#����;�#�} ���K�jբ��]�Z%���-A�R���v&^uFO4jՅ�jΉW4%�}��+�o�Nc�$�z�\���WR-Bk�+�v,���+��aZ�xE��p �,�����+����J�{� ����YYӳĶ���+c�2�8�J�'�W� +6�g敩��U�r��ż�cn��`^ѡvc���WJ���(�WX�2^� +.�K{��, ����Ϊ�>�W$0�z��W������� ��Ҙͼ^�*��e�ƽ®_���^iN�W�f��F��j���,�+�v���{EĂ{����ÚP���v��+-��7�J`G� {�L_�z�ᎱȡW�����֒A�R�@/��~ø�f������{w���]��a�l;/��n?q�����������Gqb�nas��}�+��+U��ʎ�{�]�Y� �J��]5�%�,���Xg�e���J-���Ҁ��!pWz�)���\�YQ��qW����ܕ*5���;}z�syљ��wEQ�e�$rT��˼+DJ��w��4N�� x%��[A��^�n�OA��ĉ�m]�+�2荒H��-$���w��x�]a��û���c�:�Y�-xW� ++ԜxWh*�����]I`�ϼ���5+bP�Uu�Ep�$hFɸ��ܵhW}���iW�߉v�Ġ]u28m�����]a!�aW��.��%��b��� }î:�v�M{�]�C��B̰+��ҿaWhv���]I��]�Y)�+�,қ����_w/î4zXG��;�v;��v�z:����2> +��w����[�+�]z3�u��?A��&��[Ю��(�)G�q.�)Y�]qa�D��haD�]ɼ��� +L�ʐhW��5�K���ٴ��Q�5F�]i���*hWDY��q�]T��f��V5A�B8-�e��Ò�vE�L�������� +�y��dԕ6�)u�Ko�G]}���͇B�E�H�+%�_+Gp��qgu%��Qʨ+T*muE�r�ĺ�bq�̺Ү������wP+E9�"�iT��E����VJn��'�XXW�*�J +O�b]I��fE�+6��b� +�|�ʺbCN9m��(T��b]i�@a]5|"��֕jԦӇA]-!����t�� ����Ƕ� t� �}kC*Ur�mA����n�K�A���s�}� �Gtxd�*�A�B!��+)��3�-Z���2o��c�N���1��ƞ�u�,�qy�WP��� +��+��S��ů҅���̹�/�`�:Na���D�\m!s���+ +����će�+��>�K��Č�3���h�z�AW n�] �a؈| �Uc�uX��]���(@W���,}��t��cE +�p��%Z���[=�����tl�t;��)�+�+d�vE���y��;V�������ڈ<uu�Y��N�L*����v��\�h��?suF_h�\��ò�Z:�����qE���T��sE���A��%t� +��[��B�[�/)j��[�;<M�G���C�í$�ά"�Nd�����J�e&�VN;Gw����/�=p��� +v�j �j�x� �R�YD#V��\H+U�(8j +� ���V���h%C�,P�����8UO��`�YEk~h�58�u:�!�dR`�T0B�,(V��iM�7Ê /]���JfX%�V������E��D��D�&��Cg��*��0�%z�a�W=a�*Q�_�C-t�H��sr�:t,���*�(��fnA�aώ�U�)rgT�hN��*ՠ[�ݙU��'KȪ-$N�X�д=�Ρ�[2���2� +��HG���g{L��ߙTZp��Y�)9_�WH�}�P�Z�[�C@���!U�j��*�,�+w��\!�ʌ*U�,F��"T]��S�U2&d�u@�nl��8܃�W<��4��J�_���S��]�� +?�`S��0E�����-�d��-E�xo� .��j�P�N��ZP*�f�H-&����H0�T�� �$�^�D*��G�.�������5��^8*j���F5���-��j���b��j�{J�]e�B���$���kV�8�8�J��J�b�wD�͗R��}p�P���� T%��1T[ɯ�VC��f�H� ��p^�ġ2#��l%?}S���>�apQ��w�M0�Lm�P�;�mY�]��ߛB���j�R�L��ۏ;ǦP�r��D��[G- +�]O�P�XD�P����*Z�CE�~�*^֏����B�+�y�$U�5��+ .H��~ [.��D������]͉g���J;O�Lp +�FJBEK5{� ��U�{*)�]�V2����Y*|��� +������,U���4T��z3�J"[�`P�< /e����)*i���*�5�-�A�!$�!�C��q���J;T&�̠�He]0���VYO0�h���T�fC����Q�(�s��p��4i*�)4�{�7�f���ZG-Uc�jA������mٳ�q~� +$��6>��d��@��1��KѲ��zFP��2s�s1���!T[t +UÔ���E\?q�а +r�-��$*O� *I|A�Bhm�����D����e��{���m&Q��w�vN�D���Zb�����"Q������S`.D��o��=��[Q��� �P +�bײ��2� +��u��R۬�QY`��DE����������RSD��Á��4y��V��xV�D�;�n�IT�n�b��y�߉CR`�,��9���<J*�O"�q��/i��N�%F�b;x�`�[�Rk�:J�����9�Y8TFd0�JNk� gA�M*�'�T�B�S�b�¡�W��ġ��R�q�����ę,D��0E�݄��V�g�Lk� +�V�T�eƣ�� ��v+��*�Y�e��b\t�C�I�0E����2�J�d&�uT���P-!s���**RT*��[1T$���U�6��C��<N�P!�*���1G�+B�T?e2Z�;���j C�E�P���`JQ�"�*�a7D��I��J����0T�ڝd�>?��Q����s�ֿ�*��Piwâ`{x�1TF�X��;��Y�� o/�%� +;��L��N���OA���P�k�xgPi��Z��BP�ӆ� P��R=q�?��^&�z��6�R��W��̞R��8*�R�t�T�����䩱��<5� �p�ԕ�����}/5�A���j��8����_�NM ]r1�la��Bf[�vN�Д��r�Î ��<�_�i,������v{7�p��8������Yg���Ȼ�܀�i�V/���N;�^�I��c������~L0�f����i��թN%3o��ϹATS9�y㚄�`��rAWISu2��#�Q U8��CDXJ�D4��2U3���y�G����`z��E��@�fyY)�H����&v�#�h`L*������b�^au�6>_i@�m�Zj�[����Y"�葈c����$)閭��III���U~B�0!/�q��� �mR���(�_|R7:��f�� +������dz�{G�-�c)��,J��J�XF*Y>)�G4�v�r��n���u8����e��@U[9�j��R�y�~8��A;�@�T˂<������q���ma���H���W�nیw�,���t��]+A�����@����X��w�<��z�5o�*?(��6�j̻��_��V�u�J�����*�2T�k�w��p��iV��ukC�̇��I��J�4'O�=:]U/C�y�q�%�-����7�B�6��<سun��T��C�`'�����V��P���A�����`��,�2<P��z襼*����V'�u�J��.'.��Q)93�V�m�~�ITs��MM��}}�l0zoߍ��8Q�W��K#� +^p��k��gn�x�}JW҇��_f_ԫ��9�VR���$�(�,�]h% +_#}���T�� �yZ�i>�1���������[=U�k�'�[I�G� +�d8� +���tw�Z|+�f��R�O��˕��I�|���7(S�5M�B\M9�Q�3�^5�Y����W�E��q��`����q��uM���m�5춥X�|0� ��5{���a[˚c�/���.e)�*˧j(u�8����w��:Rx����x_�2�i��3ԝ��Zs�+��ܛ�U-9������M+�b�\����-U��>N��g1�nE��˰%�T���.7��|/���!Keת�Uß�P�m��Rƙ|y�VZ*Z� +��Nj�hU�~���O_塷����q�434&�Rzߌ���֡��@�r��Eu��g����O�7��:� }�c�e[i��e%�4b�� ��ØYS]���W4K'���av�q#_�q���@gMu? ��/B�`���FO"0呅ѣ�Dг�Z=��UX�����RU�b�S�`~�u�j��}�\�J�)V�A��<=�#�a��z��F�~Y" +6��f�md�4�u��]F�w�F����1]���?Y(�S�~�!�Z�������Z#�;'%�)��Rj����BOV$�j ��,n�����jC++n(�1�����-Q뤓�˲e'�T�Y�1�N�t�M�v�I�a��Y@'�L�F�S�V{i��jIŽ��B=Y(���B4PXۨo0�Z�<�ns�0��ŧ�u�t-�t�bB�7�P��T��Rh��4QUUj�;U��*L�I��2�a� +�3��g>���K��ŒO�V�w0�t��vU-�������>u��N�nExC�o�߳+`��S��6�z�� w0mU��fΡD�����)�p���v��Tw-�j�8�2&���%����p�ڪ6�ڣ����x[��FQ�F�W��������c�7x]��dg��� ���}c u��t�g�b�>6s���T��>��j�x�S�b�Rl��g�_����?h�h;�+}�M� ��Y��V�LM�#�����^�$����B_��S �Z��`Hӗ��;uK����8mq�{�_��*)�W}��͙�^�}��O5�v}�P�1`��T�*�M���O��A�ڪ���s�aW�a�BO(�݊}�� +��q�6����\8�xe!CE_2�t�^�g$�y�_�VG�2:&���Rޡ��_��z�,�}ۙ��K ��f{Bˏ�JYQ7�t.�[o��"�����N6���5_g=K1�\3���-�����3b&a�ͻ7��\�.���&TF8��!�g9pٔKԚJ��9�漻�w1+G>۾ս)]��X������˺*���[QWA�����E�d�N��IkJ%�º#�*(�A�����J��n���7�������Ӏq��ի�S8���C��dž<T�����)�-�R�H�UE�� ��V)[�Sed +�i�XĮyO��uH�.SN���ٍ�5�P��z� �x�]6niʟ�JT��������w)��H�p�L��*�}u,���Qэ��j��Pf(n�/���x.�<ʰW��RTg'ea��`K��_1EUk"��}7Dy~qqT~��_�;;��"d[��?|{�UQ�w`���v"�^��U�I��_���zI���r&�3y�:vP����=;�)ܖ�&��l���c6KP5�*�fToF0����:[� +�-@���졵mR��تJ_���u���qL��O����qQ����vE�6 �<�༴�;�M���-,Y�U +ei(�4�+�ƙ�S$�T8�>�q���J�b�'m ,������Vɣ�m����|O�?�};���,ܗTՔ�8�0��R�}Mq]X'�x��;��K��ɸ�q�#}6�X A��/`\�/6?i��/9����N/�=V���Wi��?&�I���At}u��S��V����2�����vp`b�q����k)vQ�b��;,���m��K����U1��{��e��F���6n�.����T��6�,�Z��(�,o{��H���vA��w3� +Ko���K�-�q��@*F5���8��.�b�[��8W����w[�E�w��O�xv���i��.��s�(�l%�8EM�_S��AM�W�e"�)�<y�nҽMo l��3)���_[UG�ߏm���yR��.��}�"�!�,��vV�(�J)���V�=ƍn�/��d�|gju��"�r6|)�y� +�"Zʯ�s�V���q�:��{��p{��p����}`��|���rb�K2���%�Y�C�Ͽ��M�����{�%�v���n�A���'��o������������B*F~(�qk�Xnp� �B՛����t)�Vg��:�o�/��o��<�8�0ϥ�!�qY.y+�/�k �]�=�<��N�[����NZ�]�iO�>N �W��Uzh�h�k(��7H�g~oK���9$��,�ך-�� ����i�g��;�x^�����݊�Fg<����������\�<a�����X�5e�ɧh��z�����ֻ�R͖eQ�)���6l�h�D�7���\3�rf}��()���vu LقW�R��)��ߢ[�-)�2,�b� +�A&�8���2��}Wo�I�]V�Ϸ�*]s�� 6�������g�ň�����7�C��264j��a%�S1]^��I�J��(���ļm��u���5.�Vb�I"TUO*ǧA{2FÕ�d(W�x!L)>+`h݂� +W����d�b#R_�"LA8��^e4u�EaW=E �N*�Uϡ ���'t���9�瘐��߶���B���cl)�楜�&�m�Nݿ=6�H��#j�}6%�b08�n��䦰����-g5�����r��F*+2��2�8�T\8N�p)T�H!�����m��A�IV�`����Y�Wqq�Pg�K롨�y�w�˶���і+>(�x�ݧ=�R&[?L�.�� +������'� +��J�0���쵂��9a���M���Tzf�>tㄝ*AT�� 88a�C{;5���x�M��"�Z�]���� ;q�%�~�G�0KƟ��%X�@�x�v��^� 0aR\�D��D��tw"]ZR$@�@?UO ���(b1>�����j�M]k�l��Yx��������I�e<U��@�JZڐb��u�� ;O�3�{`��OR���f�����d�&�QB*��#�*����w�v�j�S���R���;y�`�e�P(-�".PaR���n�[J��JS=���"��5Pa']|�8�� �6��L+���:�-��F<�>�-�s�ٙ�����<ǐaB��Lcs���3N����}\���u3,L��W�;o.�'&Z���qX��� +�n�P�Ub$B,L��2tf�¤ڪ�����_�M�&�ქ�z�=�{�H����I߂�@mBh��Q�G.`a{~q4o+F5'��a�`rA�AE]�A��r�jU���:N�T߱8��f� m��c�0�g7Q<����!�n/NK&*{İ�^������*CAQ�eF�g�/�Wzu=��� N�"��Q��'�L�H�c�(,J4���k_k��4�����jf" ��4�S�ٖ�^G&��J�6�kM����[r��n�8�B^�� �8���R1��@5[�%Հ�����f~o����EK�[I��Gl�y��GKa���SZF���X�&Pb�Z�v��4HQ�\ +��X�Iv,� 7>��`��i��5[���[����՜�%ӆ�e�0��?���� e1Ť6&e�Z�S���+%�&x�1�+���@�jH�/ؿm�Q�_�^����币ED�� �v�W�x��|g��-6q��<����mE�ZDOmp��F<9��#��M�~K!S��QZ���8l���b�a���Z}���j�c�� R��!���2@�b�n�����ɘ ��#��\�>wZk���!}Y).,G]��]�����e�;h��V���b�N{,\6߭���X�}��b +�W���:�~$����:h�y�i�d1�G��h�t7���� ���{?6G�ꂴ�fz�`� �8��>i�Zx� *@�JKs���u�݇s}��U[�1=aw�%��H��ZU��a&VtDw� �7�,=��2 @Q]������uRɝ��Ղ��;=�b㎌�Ҍ��;6�$a�Ԙ]-�0,�u���ϋF@}Q��<��*<��>��� ���Z�0f"�9�8��vDx&�SK��6E!H@��(4\�Lԩ� ���K��'�^ͪr�\T���GQ�DPQ�/�$fHq�LXō˳k�wzl� +�L�K���n�b�đ� �������xm��d�%2-fz�e����I%��6�L�>�Iy��N�wG^���']��W��JE���x���"?T�������m�_ʘa�� j �4�奵���o�9n| .���&����y�X�y����5�lT��0e�ء�8�2ЙӪ�!A���RU_���M�/t����m5���d��g�+�����~�C�)��iw�﮲��a4f�"�x|!�Q)L©�L�N��Q�9�et�P�}E��kvS�٭�W���.Ӊ��� '�����e+�l�j�Ic�����{����g*���Bg�O�nc�r���@���[���L�6�RٙOB���f��5[�/�c���/���GYPJ��˿�cs�}�WF�kx�&%�\��Xe��z�'3���(����0��Ƹ�� $��U��h;�0a��~v�R���iQ��3'�����*�(Q�S�R:���yI���|6�l���m���Ά��O�=jX����>o�|���n崌�T�)z�2���Wu��vSײA + +�phPٙ�~&� x�[?ٵ�產r)��V���E�� +��=H���z��C*�$4����� +��L �ih +*�W,o���C**���IQ�I� ��gSѤ��Q��_��D6�dHa=���h" ���ф�XO� ��1��ƙ��*���vy)/U;����u��<7)m�tɄq��\v9ȓ+�cƧf}i�o���������[H����6���iB��FN��);X��;����EO#�rz>��j���g��I��A���m��|���:�ⓔS��R�B{��MPӔd�ד|��k 5�9Yv���@�E����dZ�[�]� ��d2��uP���8R:s��<������7� +B�W��mGR�)ʌ�A|F����RȔJY����H35eT-�������t���@�i:�1�nD��ke�n3�p�i�S]��n`˼�^9%��0��� d��Ӻo���&�E9�k�d�q�"�"�mRMMR PZJli�����Wj,��CbHy(�* L�{Wis5Z۬��{U��z��H#��O�Z̮~�`�)Qd�����)Oq�A�*�_m�ҡ:`:ͤ�҉B.�9���Lb�F���ا����l���?��K���/��ޔ0��BMrĐ��}"�vEU"�jR�y�j�Ϣ^^JCTF��uI ��TjoP���"��gYP���~C�$�Oxa�)��t-����,�ɒ����+M�=��0���+�ǾG� +Eթ���Q0���=��9|��\{ +UUEW��Z�kCԦ6�D�p ���LA���T�~cS����Z ��ГHG���b0Ec�BIU�7d��7������H�;더71���q5P�)V"�O\5TV9T�����R��AJP�&�Ja9i�b�"+m�W��YϹ�DԠ��ڄ����Z�$�[ZYY��m�͞�[�j���ʩ�(Ү����i�6����;^�y�e�Zh���[������� ��L\�c�� �q1\e�'�7N�C;yl����YD5T���a�G�^ ��b���ظ:N�8>/)�� R���y�: n�����fY������sl�����x��ήZ�hT2�WխQ5�����?5ct�Y��p�$�զ^݆%���,�u�����*`;'���nPu�C+,�*�eD����y�'M���T�,�sl�����S��m�m�[��P�;Ͳ��T�N(6�a(OΙ�e�L���Z�|�����J�u^V��Gp�S�N�s�5�Rr��P���*֙�M�*��+��v��8�{���U;)�>�bkh�n���i- խ�+8vNUSZ�j T��j^��[m� ���`��ۣ�t�RR +��K0�Pu�?��5Xϐ1�V4TOyբ�5�y����� <�����y>RX#���ɾ�OjϮY�j�i�v�*|�h�bw<�V��:f��,��X �pU�1�7~���ê�h���@E��y=l��O^L��%?�٤�qx�� �vZ��a@ʂ��z�q���?�=àjzέ� p� ݧ7#�^/��r֬��Y6��m�z�K��=��9̮��� ��7��b�0hx�Ԫϸ��1kŝ0;y��J*��ս�n��s�*uH֍���G�U +^���DOQ ��WS�� �݂.M�h�O-��!T8h�HNRYaBy +��p��p)J��0Z [�� tXP%�-��1�Ѽ�GM��N,L^;Ӱ�P�>�C��Q�xulm`I('-�K%Z��s�l7� d��a���5���tڐs�2vϡR�@�\t��J +�$�I�qCnA��IM�N�����/R�sZ� �V�I<��v�mǬ��G*V�2�Ej��O�J!�쵳�����-U}�ݬdr���<c�� m��%N0^t�{�щ�k�Ʌ`� +�:��x���C�].YŲ�:�:4�D�ǒг�c�4���eM��T/wHh����9�+\�5]�'��5�{�/�z�1��Y;�s����������O����|+m����� ��ا1Mu�O�İ4��M�+�Q�(��Y��0,��P�b�Qh'��;h�� �x�I!�+�@mT��M��<1���v��'^9w�����v��cO�pMҨ��j�6�S-W�A��*j�`c]�vzU�/8�������V�0V�)��9,i�5�� m��v�-9-~o����N�0� ��}�f�6t +��"�0v�B�!+U���O�����oAm����S����-k�X$o@ՖYJ(�ܷ��}�>���@?/��ÉLÃ�v��ۤX�SC�"��!�8��o�ۈ���yot�$�?-Ȥm�7ub�ż�m��e������j����&�ǚl=��q�ܤ�D=�I����ui)�7��L�,��B�f�����*��%���}���#�e7��̍�1���ȭ��<Hn�,�du�� +�Mw7O�@�ԫo���9b�D����������;;ݤC_�=-�jk-��S�������hT75Ծ�����8���WSHiZ��� �����p4����T�`��6ow)T��9��8Sii�����JDޝ+A�]���ͧn�ɶ��e� ZP7T��.�mH1�4Yر�.��ڽ�L����־o6q:N����Z,B�>�Q�*�9 +��s� +��&���������F�r&J�z�f�$�V��ŀ�U�I�;�N$\�S�{�ws�Nr3s��Vv��&L���E�[��E����^�G��:l��k��a�-�N!| �5S�h76��4՜Y����OQ�sx��*�"d��{����l�w<��')�Ld�*��QEvm�t�i H�90pYG1(�j0�m��I/�1pŕ�%=��r�Xh�M'Z�Zwwr"w<��r�趩^\7)I�����I���ʬg�l�N=Vp݈S���oUm�(E�B�'�V/� +�"U�H �B���z�Nl��%�����~x2�"�����il@UFf�,�n��Z֨{�;P���2ۗ ��f��J��@��Z�'��4���~��K��I��J��gjŃ�x�xDD��Fg�u��#:�K|��4�JS$@M����^w_u<*���%Q�9�7�6ل�ę�J����b{�UP�����i�% �X��t���4s\\�OT�Ų���~���!@S�?�@o���|w�BٓH9KQ��M%}�^��:���.Ql�>�7ϥJ����1Z�����4�ߥ���~�.n�5�%b�ҳ�2uL�Z ����nU���߽o[�ry���y�]���d��-���%/�M;z��<��h��X��ݧl+�=��ViRU_�XQ�.���^ ��J��>�y߬B���TQ�h(gmW���i<�b����^����9��0�Iԕ����N�d��&+|B~��r����Yr=�Q���A�t)�+��ܣ�x�_�v>l�����QI��$�:\,}e|ŀ�@��ؖb_V��,�nY�M����Y�a��fK���#�k�����s�S�>N�*3��B�R��W'��l�V�|E�w�^�I3�smžm��8.�!l��֏k���GfCO����.0��X|�i٥Ki� ��j.�t�����I���&c�m��T�I������ֱ�f�!�/� �����5K���Q�t�RR��mu✡O���*VV�'/f��tK��}���O��me���U۽=�])��san}{|�k����������]���>gX���f�m� �bl��x��d���A�_�U֭���V�������QބK��?Z��Nd4C�g���# ���:NPz+n9|7��2��_��H7W]7;�e�$��q��D�� �����r��8�+39�r +�p+;����ץ�H!�X[`ep��.��jfӽr��P��ǹ�>�)w(O�ٸÙ�����C�����⏶�q���T&��0(��i}~Є/˞@ȩ��m�OCȝ�k�t}{�w�ƈ�sQ6DK�b%���(��k���xm$R�^�a�q#���&�)G���R|�<2^K�)��դ<w ���9�mX��R��en����U��V�p� +�E��y��kYo���j �dE1�d�ͫ,s�E���-|��2b�m����аϧ�0��j��ї$X�~����ʫ��eX�z��x�e����F�S��k�)'�J QO;nR�$�C*��J峢�%�B4�<�]Z�|z�z�5�Y7ð�a)���($"�T4��Sy u��o��N�Vm�����~�~�jH��hF�*���3T5`�B +c�l�� �x�pE���K���R}�9}$],yB�u�6n +o�f�d+����������y{9C|��萰&�mdD��@����| +�NUL��P��W��|%�/S����xgDvۣ~h&� �bʐ��_ +�eYч��&"����� �T���nXU@�$T��}�K}�fC�5A�S�b��'u �R�KK �܈�b����9JP���ػ��Ew�8vђT��PK,�zjkqO���d0ݕ�0����,��������9�I��JvO����-��5:D�6D��/u�Mҍ�V��n�ZK��ס�K���r'Q +2��%~ 薺:�N��4+ �����Ļ��i2�:���q��<��E�]1c����3J�TE{��&��n)Զq�F)E� +U�:m +��F�R��?H3��-�*vf�o�A����� +���N���K �{�na��=�}n�f�(�_���ެ}�!���4����a�KO�Z/�=�>{��<�,�s�|Z{�����J#�i��n��`稴���1q���q3jUI��l)�ڀ���Dy���[��7_hφԑٷ���'P'����Q�_Q�z��^�q��QP,z�����g��f6���; ��z��G���7�.�����x��ꦪbgz�#wxI�d0ȥL�>�ŬC��������1k��T^Z�ev�K�3ܺ�>N�:�\i��V� +Y�v�k��A�<�D�TY��qö:��� ��fdHj��&vQht�ݜQ�+�Q��j^Y���Z}�HS�s����[��r���5���S_�x];q��[T>+N�)J�J��<;%� �/�\U���_�εAU�k���3M�SpX���X�Yh߷�v�Zu�qm'�6�}���o��ߌ���p����ꭾp;�� +����"����tW���W�N��/�Na� +�C)p;;�������P�v�p���i�]�vz�*�N��n�]�+��hP�v���/ܮo�C��&��XR}�vR+ɾ�nG�� �.��P�� n�G�^�v=,��N�"�#����۵�.p; �n���RK���T�y�v�:0I�p;�Dn�)~�۵�� +���\��P +�Nʗm'����T��.e�D�¶cW�vIIl���N����4�}�v hjf�ٜ�hQ�풒o�R oG�l���f�vM>Zo���g�ۡf�B��5)����#���T�]{���n�"�J�k��3�N�/ݮ���n��l'����j�ۙi�so��w����*���_�����H�g����nD ������v�������T���O�nG��C�[��n�j�J��F�C�#�[�v<��n��߇n�X�v(�n'�K��Z�vR*ݎ*��N��J��0e���V��o5���Nj��q\��I�����/t;s��t;څ�vp_��u�#�Nk�/ݎ�V��i��t�N���C����Ǣۡ���t;�l�ݮ���t;��NNh��;�B�S��n�p}F�nǢ��풒�v[ �]_����1|�vh*ݮ��\t��$�]�n�O�t;�n��)�n�2�D����Nj��ux0�n'�K��Z���0�+t��d�]R�n��P�vZ�}�v���]�A}��m%���t;�XT���t�N���S-t;M_��"ҕnG�l�����ۑx)t;��B�Ӭ���I�t;)�n70����I�t;�B�C���:�L�ӀT�vߑ2�KU�|�vʢV����*�N�L_���J��٩��p����Pݎ� +ݎ�������t;m�+�Ny��n�J��v���{�ݎ�z����=��P>t;�L�C(t;��/�N?�����+�n+�n�Š�)�P�vJR�vJ�W��<�*�N�g_����t;Xʅnt�C���\�v��n��L��j���)t�~��n'��J�S�\��m%���t;JQ�N�_���G�ۍ����p���P����������J��R�vR�t;��w��ٳ�K�S5x���;�풒�V[�(<��B�ӗ����XU�0�B�KJ��m5�v�1 +ݎ���n�Ǡ���^l���g��m5�v��J����C��F���v:�ng�D?t;\� +�NJ��I���c���J��c~�v +�V���*�N�B_�fӅn��������vIu��x�u���'�p;�H��I)p;��~�v&f�������ib�p;M�n���K���[����n� �p;�� +�nP����Ȫ��4^T���)_�;���6����R�������/�vT���8��n,jt���p;�a~�vxdd���� +����C,p;S2�Δ_��n�R�v(�en'���$|�v�d�p;�pnǍ���zxs���c���ۑ�/p;S23�e���n��� +�3W�_��65n�A5e�]R�n���5g�p��NOK��i�S�vr"����V��jn�i����I-p;�N2#>p;JL +�˵�����Z�v*�NUh_�j��qf������~A�۩���햐�vK�]gv�p;�~�v8e������g�]h�������p;=Rng/�풒�v[ �]������K>p;���R�vR�p;�An��C�C����V���nן�_���@���9U��m%���p;�n������������+��b�nG̴�����v[5��T�������o���z8���rng��nǙ���� +��������v[ ��މ�����1 ��Hn�� �K�S����p;��/������-p;���Nj�ۡ�g~�v��g��� +��;���w�p;UW��V2�n����Z��������W��^������I�p;M�n�@�n��2hf���e���v��?p;���p��$��Vn��j���o~�v���VV��C���P�Έ,n�����XW�u�Zu/�]R6�n���$�2��XM������������p�����º%�K��KJ��m5�v�7T����� +��A������v[ ���� +����ۑ�/p;E�*�6�n�@S�v:��S�����iT�v0�~�v����>e��V2�n����*��0�����-p;utV��7�q��)�nDf�ۍv���8��������x�N#n�����v��o�� +�m'�˶�^���¶#$�a���l;b*ێ��m��`e��{���r�����l;E{*�N��/�Nja�qXf�I���P3ێ�Ka�I���Hs����%���v�ö��Q�v�KU�=ۿl;��X8�N��m7�/����^�v�����e����V�����ø���#HW�v(m��A�I�h;��N�狶S䫢��t����_��ZF+��GA���~�v +�U��`���v�]_��把�S�틶�Z�v��mg�'�h;�N +����P���d;$�l�/Q�v�>�_���S+َ�B�c����l��d;��B���1��{d;�L����<�����'���C��*g���J�C���P�����|�v@*�N7����X�l����혖 +�n���K�3��L��ng�ʇlG]&�!�'~�vZ�T���~%�}o���Dž��l'��2#�v���Ld;b���2��0T��P4s.��e��d��z����,d;8��_�l��P!��Y�;��v<!�wZd;j� +ٮ��8��Pَ�pD�6O�c�_A۩����l{�� �v=p|m��]E�)T�v��}�vx��]���B�i;�E��\_�v�Eڎ�mG������f�Nq�ڎ�FA�I�h;�_�=�m���v�A�h;|�2�N����D|�v~�nj��1�E��_�v�mGX���S䡢�x$2�N�/ڮ�p�h;��*ڎ��m�'���h�.h;�S���IE�~*h;Jb?h;Ԍ�C(h;�4(h;+�Mh;�Zm'勶��h;�౨��w��7�kLM?h; +���Xh;�� +ڎJ�������#�h;@C��e���GOh;3�h��������3ڎ� *�mG����vTP�3(��h;Er�h;H@m�uAۡ��)h;�� +���D"m��҂�ӄL��B�iƪh;��>h;������3�����&m�psE�Qh�����v�mmg�_�)���#C��v�~�vD�2�Ne :��L��v����2�Nq�/ڎ���S���������tbE��s+ڎH�mG������*�僶�a ��vvfB��ÿh�������=���O|�v\����:�]�����7mG��3ڎ�x��3ڎ�gA�uHwB���~�vP� +�N9���#�����@!��t^E�i%�E���]�v���d;�g�v0����2َJ�_�b!ۡh���vR�:��(�.d;"��l'��|V�v� +�NcTkm���C���4rU����Ld; _�Յ�l�^�vL^c���P7�l'����vR�ٮ���"�I�Yi��L�%�q��w�l�߸.��_,2َ�L�Sk���l��]���TlT�v�B�L�Ӽ�%�Y'^&�щQ�v6+���:�w]� ��0�]d;���d; + َ�O!۱����H0�9�B��U�ٮ/�b���M}�v���F�J����_���ʋ�V�x��� ۡ���B�C���X���ҩ�l'�K��l\�v"�%7�j!�I)d; ���B�#�]�vR�d;-U*�NJ%�i��%��+��v��3���_��oy���B�c{�!۱=+d���p�����d��(��Pܹ���v�NB��_����lG���d���I�`�*��������V�װ��P~�v�2�N;� +���z�Q�X�vdm +؎��خ� +�`;,� +�h�l��hہ%*`;�_?`;̢��,)3�N��l��k��W��Rf��� +�3%��ʉl�Z�v�����/�n,/����U_�vzG�`;�O؎oQ�v����#���v4���>?`;�l��u��������]������-��y +�Noj��G�ۡf��������lR�v����l� ]�)�U�vd3?`;�g��Ql�$�l� g�-��ہ����b�`;��*���ɿ`;�,g��������(�/`;�� +؎o��Y0��,���v���)�V�vt(��X�������fS�vJ�|�v�Y�vدf�݊w���Hۍ��ۑ���))X�v$h؎4�lG~��KT���y_��`��`;]������ζ��R�vR�`;�lG�Vۡ���Ȧg����2؎�_��~vۑS�`;eh?`�E�^`;}P��|�v����ȹ&���� +��=��S����( �D�̙k7����)�]�v��µ#}���-O�ŵ#cP�v��\;J�2�>F��i��r����\;�&_��N�k��?s����\;h�k��`����}�v�~�k��R�v�a�vJdU���µ�F������5�5�kG�B��!|�v���vz8+2���B�ڡ���˵�� +�NJ�� ZZ~�vc��kG�K��i<�r�41T��ƅʵS�ڗk�B�ک��r�4��8_F����֥`��|�v�k�R�v|�/�NL����������vز�X���MhX��$��Vk��[���`~�k�ѵ`����`�p����!�J��I�b�f� �n�ҳ`��|�vgŌ��G�k����Kj�В��X;���(X;��߭ɦ�"�A��J�K ��� ���Ml\�J��`�`N����j���BP�PX�9�N�OO�j��uBP� thý�vR�W���i��aP�t+��LJj�i�P�Xi����j��I�T����?�Q���vD�>T;6�jgm7�jǬ��ڙ�S�ڡ�g~�vRՎ(j���P�,���v��V�]���j�M���-T;�>T;�B�C)T;*@>T;�2ՎީB�#���)P�v�%�j�����r���� *Վ� +�Nʗj�Z�v�P3�Nj� [��i�]�v +�~�v43�U��j�}Ǘj�Z�vR*�NʗjG?~�ڱ�-T�6�jG<�P�(�,T;��T�q���J+�n+�j�T/G�3�P��>T;�w+Վ�L�3�j�T��� +�n\ѳ��v��j�R�vR�T;v��j7��R�py�P��o��i�_�vII"[ ���d���Z�R�0�(T;�m�j��L�K��(��T;�.���g�a�B����K�S0�R�d��`w�K�#<\�vl� +Վ��/�1S��s,T;)_���L�C�T;;�j^)S���)T��@�o�ۚ��T;-�*��lU2ծ��_P�p�)T;�a +Վ�����iՎՎ���Y�@��Q�P�vr�/�Μ�2�N��J���v� +��P�,<�K�C-T;�B��o�R����T;ݐJ�[J�ڙ��v$�ծ��n�UI�jg��j�H��j�mD��QX�vZ�~�v۳a׃�T;S~�vK\T;�i +Վf���J43Վ�t��m%S��T;�u��q�>T;�$�j�0R��Q@��ڡ�J��I�R��*�NJ��I�R�pe���42�Ξ�_���*�NW�R풒XVIu�%��j�R�/Վ��B����P����vK]T;��J�Ӄ��ڑ�(T;�*�n)�jgj��ٮ,S�p�P�T�^�v=!Վ��#�D�ô�P�}�K�R�v���|�v}�J��s�P���R�l�v��]R�n�F��'U�]����j���T;J� +��C�35S�P +��~�/ՎMa��)T��d��V�j9d��k?T;�G�ڙ�r�ځ�����)T;|h��χj��P�T�P�v[)#A��j�W�P��^��jgfL�jG�S��a}��ڙT�ڭ�t�ڑ$�T;ՑT��:��T;S3�ΔL�3�j�%s�ڡ$���P��g��'�j��Çj��R�v���r����%S��T����F��jW*_9�C��6�P�4F���?T;�Q +�NJ��%%Q�L�T;�7 +�˕Վ�B�c�P�{?T;��j�Ew����R���/^��qȇj�+M�� N�T;m��T;��j�����ڡ�g������7T���B�C�P��qA��o�jgK�J��t��v�3 +�n+�j�ՠ�i1R�vX=�R��)T;�٘�j��D�[bP���T����j��6�Ζ��j�2��j'�P� +��C���W��e�3�N��n���\�v[�T�������ڱF�P�h�,T;�t��)�����+T;���j��L�35S�(?-T;w�R�h�+T;)�j����֒�v�jlj���d���*V��V�n��jg1�L������웩vTzf��2�n��YJq�J���_�O]��QzR�v@�~�v�]IT;�B����P���)T;C��R���Վ^�L�[B�ڙ��v��Q����O3�ӅB�Ӳ�C�È�P��B S���R�t\����K�auTY}�v +�W�ݸ���V2�.�����@����i���R�v(�j���Qj��� +�����@풒�vIu��X ���)����QcV�v��W����P;��N���v�2�n)j�Հ�ioU�v��2Ԏt@����P;S~�v[ ���j����I�@�4UW��x���1jG'�j�dR�v +�U��J��P;�� +�NI��[B��-1�v�X^��������*C�t�+����7���������t��b���H-��H��p|���b�m�HN�*ܙu�S��nv�S�.����S�x�&���ӷ��j�'����Q���c@��8���)�P�M���(�%��D�LC9���鴩Պ-�t'ȍ;�;���z����t���?�KG�|�K�]��L��fhP6>��5��Ӷ�>�ʤ���g#�$�͉t�z�@:\��{��&&��?����q�����1B���s��B(ܳ%.�@ts#��l�Nߜ��u�ƶ�n�h(�m���\Vk�n�yc��]R��Q�����v��o�˖͜AU��qŐ�j���-X6��������v��ֿ{.� �u|�+唭w�ŝ�� +���͛;�?� ��oR�ʢqX�b��.E��]�/'#���ҥ�Jp�/N��T����͖S<�=/-`�Jd9��XNk?Z��D��-5�S1)��#�ߓx�O�.�܍�tZ�g�8ڽ�r�[�A�3D�,d�Pm�.�f��prM��\���5-���.�\����4�fair(f��4�F9r+M��D�9�M���7��M���w�{��5�����4���d��4���P�9�]4����a�i�˛�3�!�v�A�OfɡQ,9����5|�N�K]09����g����u\�2+A7ioL0�v�s}�Y0������S������<^{CKN�<�w��8�v�Βk`8+LN�ߦ��09)�y� �k�j������&רK� ה��N/]89�� Q�s'���]�\Fe�]8^�%�-\��48��ϑHrʷ>W� 9����9 ��#�^�C�(�ȝ���"w�|�CN�y�|7BN��Fa�s����rK~ks��w�& +=N;�v�[�R��Q���q[3r�~�� ǩp�z�������^�%?��9k���E�+�r�� +PV�2;I��Y�c�,�f�S�Yk�!�����ۢ��G��lw��G��E-��i�_t�-!���8:�O������d��0q��CrJ�<�FO����� +�#�Q��FϷ�M�H�#��ۦ�k`>N�<�&o� gĵ1T`�'�'u�����ŷ���6<��#�8�3i@�Px��B�N21m$�����0������s f� +#N��dx F�ju����f��SqR���g3�H�]_�8"O+#5FL�2Й��Y\��9Z���q�[���G�8����X`1a�hB��1q���{��]��|a����ݾ������ q���J�ġ���Ǖ2�����u8I.(q����drҗ�z�?���D��bP�SXX�M�)�-���|����(G�W���wi��ِ8��s^�f��7��L��l�$n+�Հ�a�20Fq�[3��V!qM��������ܐ��dH�V'`S�ǿ���oB[�K{n�dǁ1��2\ϱRa�ʘ8T���r8N�,Tâ�;�\����@`��P��1qRl�Ϙ8}�ٝ�j�Z�>�&R�o����?'���Xv��f�6ш�����jĵ�þ��h�����|�)�8=X���8wh��0qII���&���!%�o���=+&N��u�Ig�%M���L��jP��9\�ES4����R�78gV֎�lJ�]�!P�!�Qja��Ǥq:�k;�),x���Iy���1�}H��{jzZ�8�_U$.���Zm( +#����ڇ�vg#n+��Tg�1t��H����7�TH_����4���!q� +�bΔ8S�)J'�EhQ��W�%�d�cP����*Z���dJ\R���xk'�sH�gʔ8��%���d�4.J���l��a +�̶)q�Ͼ���M�����ެs/��X�dQ�R���%��R��Ҡ�5؟�i3%�)��&(q �b�@�kF_6�E�k��V�� ��puP���W�G�,��WM�Z��� +H�4��`�!0?���0CpB��D�k���YI�*NBӾ!��px)t:� +{l9op8�pI�y=�h8Y@qR��.�j0)���p�z�a) ������N&,����!&���iDt2NK�y�ӌziD8�1��������*pp��Ƴip[H0�%��'͎�kǴ ���D�K_$�v(�D����q�;[HpR����'eZ +\�%��������U#��<����Y��Uð�zg�����{�5������g�56��IpRX�/\k���2 uMtg�J@; �g��Ip�}M��*��Eu����IpK\c +S�T0ޚbl@3 +�iK�Ϥj��[q���g+��� �5ram�ޚVFE�k��7�㸆O�@��$ �V��- �����Pl'����I�\��k=���¡<ǵ�p(��3N����/�0��Q�� +��c�:N9x%rn+�����_���i��Xlf ���l?�q�|��?���m ���◧=W�-%�yc��D��d"�V�ׄOn�U�bL��'�!TD8)ϩǽ��{�ZUhR}�p"��UM��x�"�5%I�""����ڂ��L��j��RM&����gS��lU��́pK�<�-9�I6S�rP�4ރ\U����)���S���6N�ۿk�*N�߯j�r:f�$7�ap�zk�Qa3ۆ�I����N_��t\S��LZ�ඒap[ \�a�������Qa��Ă�Q���^\(`d�ڙ-�����>����B����A�Z�(���������@�d�n����ET1:n������)s2�c`��BS�g��T1y�f�]�-� +�Mb��1���k��*����o������7���7\���-͙o�{�Y 7u����:lx^"��z��?+���'��)�7Y���7�M+��\�Dy[b@�d�ƛ-�L���T���]^�d�ͨL��V2�m��x�0<u���]��xS�����`�hVli��'�o��+�M4��xӉ�9��xӎ�������ߎ���6Y�NV�J[|�qx Q��d��V�f��e�$W_6�*C�h���YY���Y�����@���֬]qV�[�f\�7�S${Aޤ�]+���v��zJ���*eKu����S�R o�L�Aykf5�lʛm��R�1�M�|���.şG���Ȱ�ySЄ8Ղ�5����R���vm�A��L��|��X~�Jy���^N(o���\�7*����7KS�5y��A*��*�M�@���*m�0o�N�$xcDgx.�72���y�"��-̛��?�b�$�6� ��]��F����uW:0o�*N��N����=�����/��)o��� o�Ѽާ�\~�Z�<fe�d��{1�P��lƛg*��x�$�K�73~�Pwp[af���6� ���_�7E#��OE�)dox �@ZP#�7���+3�L�� +��F�G%*Ax� I:��U};�XNx[�t^!�I� +e�H�)�o���Ȅ7�XI��J �M������x#�q\��/aEu�x#WGiHF�����L�Q�ܯ�xk@��Jx�qrn�C)CE��p�����r +�Uo�n�oxko�v���Y�� D���Ww�=5(#�5+�x���g��0A����2�����V�N�NQ|��M��y?���M�:�xcJ"|�7 �)��?�,�o�6f/�ǔ�戰R� w�ay)�CP^���8�`E&�i s��?K�Ex������ϋ|f�;)�7�"���|7���xv��F��~*�M�h}��$PWl7ʢݴ:&rd7����Pz?l��j�Ia}c���4Ux�cV���l��n����u�{����&�@��.8����h�Sqn�ɹ#i?L���7̍�I;+�M�����F��N�rk�:)�QPn +�۷�[���B�i�?��e�[�A����l�Y�!R��2ʭQ��x����~m������r#,�c�ܤ[[,7�f3�M�X�zdQ^g>���O:z����-��Ms�#47B �щ�֨�q647���7��֔5ek�hn:�����~xm�����7��� + ��,���jNr{p��t�K9�s��ᕱ�q{}d)7�2+f�K5jE�*e�� 3�g�����& +��kk��oSe-n���������oF������mX��)�v�8o�6.��������W#��� �������PT�sV�&��mc=�MmKn\��6�N��)�6�SsU�ȟO�#�:F/��Ơkx��n��p�����Ɓ��d�L�i����v+C���y[�����,��D4���i�e�尵�i�lH����m��VD�:��ل6�X��m@=WW�|6�O]�������Φ<��~�Φ��ꢳ�u���t6���m;�2�M9_Z9�M��g���6g�Ϧ���E�ٚ!������hk�:��m$��&�hY�<T�)�D�I�ڴ[9.˩�+��g�]�B<��ؤF�Φ��ғgS{ +%��f{/� 4��\)\�d6l8����l��D����FOZX6�t�I\��j^�x!|�6&~6͖�����P�l�aO!�!��rl��ғ�86( ������̀��"o���D�ih��b��;Hl*�}�enC&F7\]��ĩר +V����^͖lj��+l���6�v;�hf����� +�δ�|@�T!b���`��mY�͖t�F�M�5g�\e�`�(Lq[�������vN/I��I��m֩SJ��p������GR496�^;���bc#Gy�^^c�tX��Vf욬*Nwb~�HT�<V��>�v�̵���\SqǼ�4�s��Ƒ\�HGK�ִVTP~���?�^�Rn���(�b���Ś?Pk�~�@k��9kJscn����])kZ�@ ȚBN���X�Z�քAxsb6��P���/���B��j����,��@�l��6�H��g������tn��B�&N\5��<�Vk���GX�a��+��j�KlH +��3����� +x������}�մ|�Tu�5<�����h��,X�5�TX��z�M��Y\�EX���J�4�j(�Y��֨��WM� #�j�B���)�b�T�����Л�4`%�ܢW39������`qդPo\5 ��,\�f�i�檑%� �&�bx�ְ���U��%�!im�h�R�jMÅ�\����T`�T6�䐱j�w]�9�R�Ի�����9*VM���?�{)-�X5�?����ֈZ���j(���U�LE� +XM�Ee��&�V ���ϋ�LV����� ����5�j�iPIZ�jR�\d5��ף�BwS�Id2��0Sp�P�$M\�F�S{5�)��t�W�����1�Y�/o_�F��ym����d�Z#�����Lڋ�����f0q��~�eBWM=~DGWM�{�b1��֠��gs�t�'�<����3XL�5�ި� ��~��;�Q�Jɛ�g�5 +z�`5S�檕�W ��Kpդ�o��&� +�3W���S�\�6b]\5���Y��FŦ���U�[P�\�x>��F�#�M�Q�oIW� +WMÀ�$WM㎗L:WMEi6e�;�N��s�Zt�,�Z3[� +V���-Ѱ�F���j�]�}V�*�젪I�ې��&e0Nd����i�����\5���eS��������D� R`5���V�h���i�zm���fVd��j�@vl��fN��^`5Zl�; .��.�������~�f��cT��a~���jCc��:̧�*X�J����V�U�V3D�{W�i6X�fЂ66X�3��e�F&���FU?�l�ը��-�`5� +6�E�)��X�=^YR�j����Z#r��Vkd�ݓq���El�`�����FjYOm!�)��)� +�-��p��a�� +V�n�]P�|mXMA��ܓX ��y0���V�{˚�X�z��j~. +�4�.����\5�'6�]MD>����8�m���_���%�t���Fc�։���=ZMo5�VSj��Fa�3n����Q�ZM_�����L������mj����[�P����#���jԭ�zl5\��� +�}İ2]�����j�[� �F�l�G�e۴.��Wӂ��&�W�n�})�{��^Mu�$�^M�=fw���r��ot�ɽ�}�����X�9]M Y�^M��������kx5m�|.��@4�d��F��y6\��!j��@�ݕ�&[G�:XMaU�V�d�7#���jT���NU�n��s��^B�NUC���=��JM-�c�p�"(X5�YL cդB7�UCQ��ª�1�w���g�.��:VM�e�&�*�Uk��s ����p`�`Ln�P�:�̗劉giH0?�h&Q͒=S��*ᒲ�j�ȸ�AU#*��eH�Iұjԗ\��"���jNG[X5TJ���2.ïY�>��&s��+tS�\5XZ=����^X5�� +V����X��$��V��}ƪa���U�����>�E<ϱj�OOX5DJ���r� +�`-��˔V����-�8R*�n���I1c�DU�;`��U�����1���jIuT��w�3Ք�2հ�OL5v�����r/�L53�OL5�b�L5�օ�����TC-L5��T�-����X�j�! +S _�_����T�M$y�`if�z\��^:�qZb�"���f�j���ܑ��e@վ���pB�߂�^��3A�p�i);fj��-�s�;� +U#�F�o@�P�gl�g*�U�jR�^T���m���P��C�)AՈ8>�{jA�픈����U�ۆ���Fǚ�8T�&3������)�j(���,�tx:93Ք�!��H5z���w����]�li;��"�j��� +���N���|Z���I$�y<�n���q�6QMJ��՚���MT#z:fB�I��pF�)2c�@�5�wB��_��?2R�����3ޫ} �������TC�G+�jRx�RM�Wc&���� ��>C�@����]�jD(1�Z7˻�jz��d(H5Ft���b��dm�jK�@�-z����J'��q�<5LQ�`�H�^�}���v+��4�-:L�~�a��6^���aj��L E��S�b�=����yo:X���<���.j�* ��yoO�ko]���-`jII[ �����-0il)h��85+p8Y�a�M5��Զ�qjIu��U��yn�Z�8'� ���3�~,xjD�x8�iCh]y����`��A��� +��)�ˢ��Ԉ +Ss<5�u��O�t�����ڜ�F������p{��Ո����t:�;�*SM�I�r@��tQ@վc�9oO��,L�)��g�ΰ�����W��v^މ85F��o��魳�F�ԇe��t��C9�3�3J�\�IM�n{��`UQU�8j���¨�ÃKAQ���0AԔw�4�3�$F#�O M��M����jN�;j���>4�� +�I%�i*%��� +< ���k�A����6v�����5IAk#"87�}��;s����m�m;Ϻ�����,�z�^;μ�L� �,Ǟq�Wd���=�}Zk��6jډÔ�DN������1jT�Mۼ�3�wr���v�C��%)3m:�xn�� b�i�����Ҥ���ra���;Jb�&���q-T�VN����dT�R����Q�4� ��D��x�܇H���&Mi��WH��Q��H��x��v�f�� iJ�[L�i����"%� 9�G#���IG���#Ph< +4B'6�j�)�4�H�5v2�i��E��� ܙ2���LT4��{: +���qЊg �k�v��O@��!v�^Yh��; �j�OC�d�M���L��-Xh���ig�������B�id1�&�t���AS�s��w[S��սJO����V�������3�t��$$��ԁ@S�LSЎ��@;ܗe���14�l �~6E����5�g�ѢY+��� ��3yO��,�3 ,�3��~��}@�߬]�z�q��ۀ��a^y�y6��<�b��h�����XnΥ(����1�_�G�;��(a� �MO`�Π��}a�ԇŅ3���ߡ�j��M�v���zOu��Z�W�tk�'o�pg�*D+�����7�ag���J�2��|��V�Y$��LkF{[�a,7x�;S��9ۨ�3S�P�������r�rG�[tM� +`����XAF��~�I;ӿIgLڙV�[��3�X<0Xg�f�|�3���s'�ΤZ�3XgRN��u��m��aHH�0`gE����h� ؙ�X*��3uf+A�3EŭHd�δM�7��3)�-���$֙�Xg���J�f"��uF��nVunv���u&ch^�:��l�:�@z8��������$z_��ΤX�I��8��� u�� +)�@�)��Z�:SQ��>eԙT+�ԙ�A�Q�ΤXx1��P��'6��Q���Òr-�4?��Y��ȼ7ƣ�̤�u\���X�V�D��)�N�Q1����S2�l�:�ƌ �$��w��>��Tzcwp�{E�I�Β�XgK ؙO�!�w�f� ���fɁgmx'u�ϴ ��#�ΤYs@��PZ[�3�w���[�����y-��v�V +��g��gvn^`���d��R�wf`,���ɤY2�LeIF����3yg�E��D�)�k����I� +-�9Kɼ3S�� �e�lςw��!A�i�I5ψ��I1g�!�˼3�n3��3��x��>::m��SZ/��tw��]�B�6ig���s��5��T<UhgL�x���T}yb�h��%d��TgǑ�Dfv3���q^? +�G�y�̤�v�p.��w&�iN7���a��wƉ��w��eF��qY4}�Τ�*�3}4?S�3:ǩwt�� +��ԑma 4\�bFL�:��L%T���dj�x����E�3����,-hgZts"hg� +��˴3g���Mb3j�pX˸3�̀2�kQ>���d�YRwF� 寁;�o>_�3��;aX�V,���+�L;C�\��θ��������L;���H�3H���,�l� KI���:����RP�̕6+�(�}���f���<gݔig��Dd��g4u&�;��Φ�3�ݱ�����R:%`g��v��v'�̔' �3�`��6�h`�K�d�Yۢ�6Xg�S��3PgZzct�IgZ^3f�L]��i&̙ +uA��� +�`������GA��ƕe�k�-Y �Φ�gS��>��o6�P�f�e��J���Z�hn��+t�Kƥ�?�6�ß��O�W?��}N�?���@�dw?�$�Tx�S��n`��y��m�c��66"�珡� y䩎���֡�ي��Z$����|��zT�"!)X>�1�O��{�<U��AtA ��n;�����c�6T����a��Y��Pr�RC��m(�7>�ᡒa�w&��$=�[�_��ʅ��h2ڡe�^(¦�}��!�5����M}9����h���a�Fk�'���h�?R������Bq<��w�V�q �wh^o\_ɟ�g��d�J_�_�7g ��#��/zĖ �M�^Ю��&i�nQ��3g���e5��8iB���}�}������f��!��p]E��v;We���XJ!4�F�R��J�Q +h��HR�ϯmJ��,J���vO��3m*OOԴ����/n�2Mޚb�ۺB��؝�n�8�cP�crڞy +� �R� qC{/G��&�4TM85�etAIU⌡�98��n!HEǀ���[O��M�̹/�*o�;{[%��������vf�����������Ў��!�j�=�ӆ7i�s��3TB2nk(t��^0�L�X�؇`���R�ߘ +�,jD�s(.�5~*~UJ�pO���R�ߙ��ɓ��nF�~����A����������-mO��*� ��T�+�m:�Lj����}��F�~�c���E�f:���n�Fj�����r�f����6�`�9��$5�c �@$j���|ۇ:��h|Ě��⩿�oR +�c�ъ+|v�Y��v �������{?������7�S1G!0�}1֤��yŎ�?wGŎ6�R:I_�5�X3S:$_h)���teh^Җ�}|�7�i^������z-�4Ch�3�ę�-��h����q�(��Q[%���e������n`f�5]�.�����c���.�ٛ�ێ²�@�0����-e߽�v����v�:���3�����j=�����!O���ZV]8�63���})ʶn-���چh�~Z�*Ia�\3��jN�/��S��k1�&eL�Z;��|%=(�P�~h�����^C��4k�R}�(ZyH�Î3��,^|�=h�?L�SaPӆ���뷏�kiƙ��i�:��]�p�t���nқ�gؖ*KemZ�(��C*��E]�����O�-��8��ѵk�[�},[R�q��n���.� ��*��DMt���� R�2��e;a���b$���H�G-G?���qD ���4#�!��&�5��c`a~�L7�3�j��J<0!��g�8�I9"F�)V�C�X�&������Jatxvk�D�<���u+�!�]�Q5�hҀD[�v��#eL��Է��'��P �qH�?Z�|~��M���J�C+�p��ْ�ZwU/���d�S���f�z��Pmhe%�y����&;B��7�qX"����-mw��ϧ�C���p�+u&�A}%ʝ4��+�1��#ӡ�-/��%�v���T�(�v��Ek��6�H�K�t�)m�x��Թ��Bu=ۺ��wJ]�ٔj� p~n�T����\-Q6K�1<���*�}IY��K +�3���|܆��aq�C��2��X(67��{I!ɡ.��)>��P��u_K�oʃ��=�L[D�m�')�����Tw�i�9veę�oKM�u���p��-{�8��U!���ɥ(��fK�P{�C߇���4�j72���'s�:NQ��&Ul���2xa���T��7����<��+���� b�Jd�;��C����6;f�鳍~��&��C�n��H�f��9�bg�Dpχi��l:�o;)��#����%�!Mb�s_ +g�ȋ�`�p�v����-�I�S�h�/<,v��Y�w��C���ܡ��D�:�?���ĶT������� �M�r4�����U����u�Xq�H�U��L +��Cn�ZI9�,�)�з�E���Y�dR�3�K��c]RXf�1�)a�v�>��If�|K�Z)ڍ�v�aE�S�7���l:���m=K��m���f4|~�qf�$��y�f��'�m:v�.ް��1ƒ��:��T2�PC�{�w5�f�ȵ�S��b��d���Ŧ���E�V�!PlKUtY�{u�f��)�(F�9U�G������5�!X&Z�f��<���c8_W��`��m�p(���C��؍}U�(�.�թ�I�#�T��7���V�n|�}aW�NS�D�)��nn���|��������mౢL�Za��4\��ՠ���X]n�.�Q����FG3����9� ��5=��$��)#gH�iN+,�P����I�D����\F,��U�"崡�1J�����&����]�Qن��l[����b{�.�����D�D$|^���>�I#| +��}%����JC�)���duS(���r�ن��6�0�ze`���+XG�'%���{�M������o����*E���6)��5,k�X�"ޯ����T����n�7;7�* �<��c�3q���I%"@��ȫH����w�FWO��'���v��a̪�5�)��kyχ/�Pɑ�c���n�5Я�@�V��O�1ߔ�i��ww;���0m��<�K� u'<�tsμ��o�k����6}��q����|�SP'HD��(g5��7�h�T�M���|m]�G���)�ؓ�[�3Q�������>#�����jS���p*�%� +0YLp)m�ٖ��1��f:}���q���k���������fU +�J��3��D��d��G�w�_�����rA��[O��IeY��f�)��4�10��R�-#S(���@��S�7 %�k��� +7(B�SՒ��g�Y����vDo��A1e6��8EM-~}��&�JE��1�����=�4��6�mR�l*�/<�RU�xxD�[�L�Z +s0��A�x6�7?�ԭ�q����SJ!}�����}ܠ�����g��0�Z>���7ʌp�E�4k�P�����s��˕x��LRx�wB�j���(�ߓ�'>��3���N����2KQW��*4E�It��5 ˋ[�8���~��̧���<N�g��p���� >��Ĕ%/j�H��p��=�A}\�7[㣔�h����������M�9R��o�,F�>��y���P�Y�r �Ke��?�PU0|�v�촅9oK�N�����O�<N� �L������Y����%I�a ��"�t{��"���{�D� �;��mjMS��/4��;��x`#�CO�������TT/�I}�Ug�G]_��>�k��x��͘����R͖eQ�+���>lKa���tlYQ�g���$�C�J�,���nwg��XWʐA*�6�"�S�ؒrM��$Z��N&I���� endstream endobj 362 0 obj <</Length 65536>>stream +�ͦ�yU���q��������x�"��Oi��R���g�ň���d�{��>m�'�k�2,`�V�(�ؾ{I��1�F����G*w{e�6갳�2��$BU���`��"�O�ݡ�07��lSX�*�A5В�Sl� �%O��hʏa47���(��E�����T�7Q���Yx��k�:�y}���s� +-� +_�V�-EѾ�j,[��H�0�}[>����L���|�TR��C��<��8 +Ա�{��#��d���TVd:"eq�ǭ+9N�p)T��m�J�{���� ��������E��{�N[,7����z(�{�E����Yv�����5��c!�����R�XA*+h��g��4*�d|����P|cq�̶�c�):�z7�Ҷ��Y=z�N�V2�Mq���N��?�!��[�WK0���'�M*iA�ʣp�%�� P� a��P7;�~yB/�_���(�`!ѡ�W�(6.D�6�i_��gG�">q(�b��� ���-a��� ��,||���U�x�h<T�@����JR̺I�^,���<�>>�|%�nx�_�}q��l�ܤ�(a��7�-G!�P�]?V8q:�� +K>���ۮ%uϗ����@�ĹI����>Q9-N��<da��݆1Ś&����P�*봂��7o���-�S<��k����^�ٙ�[#���� 8+��\ֱss �R�GN~.r��1'������F�K�ۢ��&�����P�3���w�Ȏ�t�ʨg��;��HaO�r^ e�H�l��'էx)o�����t����1�y[1С��h���1r\TT;D7-���PՈj#�a���8��_�fى�E�t�u]c�R�_82ď��Ó������VM���<���Q|\ʈ��J_6/�{<�B�^yz�䖼�AU !��G&�:a��n�8kK���H7 �D�v~��43��\G �F�D��:��3�2�PѬԻ�A�W�=������Zu]v9�K���8�>LI.��:,�������n����O��_�q!D�$��M��˩�S�f�U>)�)-C��~,�5�n�,]鵺-XK�\ +�}�b�do���p��oM�O㞨;Aw�j�^��a[}j�2m�X�1ҒQ}�?�Q&ߍG�YY�V�)�/�j y�N;f2�P�2�J���=�WzU4��ת�ٴ�;z����˻=`aږ��yp4��=����g�U4�l���)�o�T�%*�"y��~�f��V+��-��� <�B��U�ֱ�����qc��5����������5s��'z�o��"��9�<}AD�}�dA��7�vYܴn�}���wr��*'�M����/��b���7�`�]�X�7j���n�7b�'ŷ��p�ְ �'�M�Y��6���װ���}��y���R��� br�_y$����S/+L��b:�6X�h��4?w��p���o������'���<D6Ju�YF�&f`����|�'����@2�_'�(���s$� *Q����紥�5��ع[�,�pr�?�n�Ȟ��҆7!̞B}PK��[70#�ƙ0��Vu��%�ka�Tt������c:�T�c�&���W�E��g�]�,�B-�j�w�n+-;��C�aT*!T��6��ZԦ���&b;��v�p�(�~A���ƵZ"��B��CPE}�S��a�(�2[Qs�I�ʹ`pR�+H��yٱS�&�f(�m>A�Ы�K��~��$�J�.ϥ�PNr���P2弪�by��7�R,-�2�v�l� +��В��\�e8t,�N�Փ_mU����I���L*���r��o���L8��lQX�Qx{Q��R VԐ���|V +�p� �8�sxY�+94m@��Y5� +b�A�JA��߉E���g�S��iȠj�H�h?��X�:)�a� ,m:D���d(�ć=(C��"b�����m G��kyκ�h����ι�pdY�:�<6���T���'�� �����ș����ۃ�\��/ǎ�bg���@��٦�W�u�_'%�{�=ߝ�P�ɢR�u��3�?&�n�,��y7'5�vg+������&,�(%|��h�_z{����8jVq�8r��0�T���i�J��Lro��5��-j# +�+�g��٧�����H�J��Sk�͚�D�o��%����M-J���e��O�[��RέG_ź�0]"����IQ�*ۤX5Ɗ�1�܈�/�%j�����mx��S�m�Np�~�qXTt��P�,Ũ�<=�!�~�����`&���q�*�f��;=��A�rĕdb�!���*{b�Ie祾����J��"��4���1�荐 +HN�4��t-Hr(ݎY,�˛S��&w�Z��<ji�:놛89J�ȕh���0I���Ɋ�̚&��1�%�n��7��q!�S�����5�nn�D;�� z�,��(��@�wZף�Yk|��QI(�z���jd�����J�q +0���Iu�*����k,�If֧�`�p8lM2����>��f�cG����d����Ů +��WvP��h+�R[�֔�!��rU՛o��ƹ(+3%���2Ъ��A|x���')�J���n5D�&!A��F���o���\N�1���#2��3�6̭��"9x:Da��R��z=�tJ +���f<��xX��19n�8L�=)Q�F��Q3"�O�oD�GD�<��5���o b粶3�����'wuLп���3����S�T�[*�R@|�F�Y1��[�.���Q%�dǕ��3��LT���P�A`J��V3U4�5�'3x�u� 0{��H��jN<��V��i5_�g�|)"�e�a�D�h��|��iBd�l9�=J��g��^KCXF +�](��j�7D}��M$�kYT��I3�KI�>V���ޝƎ����Y�3mi��艾6�ˑ��� �+TA�P�ڠ� ��^'���+9�0�Ӳ'�Y�Ԥ� |�Xݶ(�<,*Às�)�Z���]N����vt���="�$ޓ�*�dc���序n�f��s��!��f>��F�@��1X}D�a���']�U�@�B�sE���e0�\��6+��t`}a��_t�m|�ɵ�JE�6��6!�)��XD�hs?lS2�r��I���B�QO �i�z[�S��40`�:����@�_���eOt96;�`*�xzQ�M�Z3qɬi�:����c����9��7ikC�Ya�}]�0���)��Oy����ިÄ`��r��a����+d@���KOO(��.f$�謨Y{=��&!C�E0�m�\��z<�ÀOLq9��[�yd0���C39SU��I��͒A�Q +�mHQV>�rJ3�=�ݱ�&5X7ȲR�ROD����e ���h$y��Y�Aύ�u�>�Q�Z��(��-���vJ�"Y��ep9>-a6)��fi�a*h+˰5+��:�3��Zp9��,���m��?���F��D���S4��h�h�:��rrJ�X�K$�3���'�ğ���1R�|���N��>��UT2�W��q>)����3���`��WYy(G���[�qdZYՊn�{T�Se���e�z2�<a�Z5~q�"|0T��M�,A�y���*�M�!C1����<�~U)�F��ɓM�]�XE�R��T��g�*��ެ�n��N�u�"N�>Y�����t�0 �|\O�neL�@�W�$�����4Y���������!]�*����r�6�sh9S7;n��H�>h����ێBG �-[7�����S��VK�r�N�.�4S�wY��9����@BE�t� �ǥ����X�<���ۼ 0��Z��^I�����m3}._���h^c��P�9 +M�T�� +`9�@��X��f��ސ�/�%O +�k�HR����aHz��VjI��p���d��Z�<��(*��aw�:}4ф�*���H��X����[���.�\�N�c`H�BN����f���%���9��c�� ����g=T�x52^VS`��Qs�G�YvoP/t{Q�|���ȶ�B�h�$�X��Y +{i;�cf@����bg�#��x^�������˩��6bt�"p��K �V��N��43�jCE���g�=��ݚ$'`N+|c���^50�|Eg�vɨV��: +���D�/�#жz6I��9��-��OJ�(N���ZÅx�?����?-To��s���4p�A �_� �;��o�~�0��}�S�3�7I=|��ILn���OL��.p��4�P�Q��^�N�ű1� 7��N"�0k7���Y|W�%��2:R=����P�'��Ԃj��M����C�M�d�T*r���d��K�Dk��<Q��A��� f��q�(�鮔}Oe�I�_��OJ�=��l�;T ���^����� ���hA\����C�i!�j��hF!���F�J�1!s�$�U�r��-�K�h���2���SZ��Į˲ƌErTq�q{)���L�x5���c���ۊ���b<2T�=�Ƙ�bL ��<���uN�Ob�e��s,��Ŝ43i[��B����wi<<�����n=���P0�Q������I��9�D1Q7�ұ����DFIH Ɯ�q��-���j�����Ń���^�ɘӾ�-avc���� +'�n[����d̡��ھ ��0����I9k��d�)�?���¤K A�A� �.�����FC����_��!!{x���̩�dsWp��nAY\ �2�<L�9Tp +��Vu?\�N�;P&� +�B-�脸�����,,�'yw�5A�P)�^�̀��G���yR�P1S�%�!\���2�N_�㕜�2Gc>}�w��7�� +���I� $@�s��T-]��n;��4/��Z�4r��a�N@I�h�kޞDOʾ8sK��&�����1�}���Ӗת+�q�]�=j°��U��a6�|)�� +�3l�ѻ�\�D��C�٭��"X��!"֬\b���(��T�f�i�4�?E��!�Y�^������-�->�� |�/����2��n^ڨp+�������3�^<�(��l���%(�2fLz�����[�c�a5��t�М��f�g7G���ɷK�М�9�#,9~Gw�U�+��%�w��RM�b+���\U=6�Zh��Tf��r���!6˒P�C������=�v�:��N����q�:�oX�����2!s�\��D41p-�1x< �(�y[S�����9-�zd:�E����V�mF��;|�_��jn��J�����l�8sx��U�GD�9G��?��>����c旖w�D0EݻNX��V�OU��8��ܖ9�Y��T��>�W��������s1�>ВN��m�V�Q�h�^�B�>���ڑ۟m�#����"yC +{�=�_nOgʙ�CSI_ k anFI�.��Q���s��$"�~����)L?; �=l n���#��@6����^�d��P��ӻ!T�1�}j�"� �V���"�y^��]IL��=��yGou���� (M��q���� +=�)K�KUٻ�G��fn��/l+��J��:�EC���0�TÞ�a�� +����T�˞m�� �!�{-,���Y�ɤJI�Xdѥ�MV���DgN�M���=��庬_����K�o9��^����v�|���g��J~SwC�u��=|@�,�����}X��F9nϊ�_���ũ[*���*�DRQ��%�#�ρY��dMG��wLLS���3���*�^�-���5A�JЩاu��:.�!l���a���^M�8z^f�j�1��s�X`�4N�:�j.��p�Ow��m�����E��Y����wo_��K��>,���f��5��Es^�T�1�w�>-V@�*/�ŏ����h#�b�e��ؾ�u|��J�I�P/ƽ��PX������nKV?�|7,�8���'�rR"�¦���5c���jE+� +Ed�ز$��b'栩1��`K�������Ʊ3_e&��x�7�w%8�N�H�#2r�2����G��:иv(5����#�[.�MO��SU�Y����� +Fv�c,���2 �1�!<�g����U-�ʢ�Ό�܃H��NO�����)D�������<%�f>ݓeg���8w���2� +�:�;̺o�{EVM������Ɏ8S��D�FE(;<���N�����w���(ʙ��y����ss�f8)���q�=�װ��Ȩ��ȢJE�t�de7�=���b�i�k�J���U[�c!s9�&ElbO�5�D���Q]�|[���������*am+��I������65h�0;*��b�_�w +�ɸ�؋��x}A���=|�\��e��94�S��c��W���8��)�� +v҈��E�Ý���G���}C�ӽc��e!j���K QݹaP�$�C*����XTT�j C����&�\=l=ךr:Džc��1k����(��T4��Sy u��on��V춱����rCS?F5�d�G��U(j�ms�j��HD(��T�m��].�Q/��-��a�1X(�H:�#y�������J$(X�o��Yy�]��Ԗ���P�Qf�c\>2J����w�'�to�� ;]�^a�ᬤH�Sns�N;��!��#�<L��Բ,mwR�/Ӌ>T�s[���6��љ������yi�9W��LH�������|�N;%��]���mn��6��5�$�0�S *M/w�]w=��g��0�r{=��8��hx�~�I2>j\ƱC��Z9��u��[_�c�_�E��� +^i����ME(���NQI�g3<C�Ccw��P�����>T�=O�� c +Z��.��T�-Ī��B��`մ�|갽�ǩ��,��+���� i��;U�^&�Iy��[s�f +�)�d���M*fX����eG����r�&��|~�[�I>�I�Z�N��d�K ��+c8�v�����zP�|��A�f�� -��ik���Ñ���{��c��x�f�c�|���N�Yq�m�D>�Uy7D�V4�\+&n��ᵪ�xQ�R���[�r{j��GEF$T)Y��|�{��YP{�\����^n?�B�J9ꙟ�z��(��R{���[c�R����� �IEY.��-=8�g�얪;� ��`��դ�vU��n�w:n��54��c��D��e���e��=��1k��$/�Q�橨�9XvK���投G��Be�n!�̴��a�]�������ʓ� ���yX��QތɁ-���M�y�ivt�Pwq�,����1��8�ꛒ9��g�uc7ٿ��� +��i�l�I;q��[T>+N��z|�%��� sUYP3��AU�l�q����*N?��������ժ��[������1�_2"���v��g��3t;��n�)��t��-��N��J�몉�t;1��t��ƈB�C)t;;����Z��I�t;�@�턐�t;�"+�N0�7�Npp +;'�Nl�B���̾�v}y:ݮSn��v��_t;��n���n'F�ۡ� +����q����n'��!��\���n����1�5f�]RKm�A�kZʫ�er��}���f��>U�۵g7?��C�!�v(nמ�g�v ���R�vR�R/p;}� +��E\�vK�p��:�N��<�o��`�ng���Xt����d�ƷkW�d߮���ͷkZ�e�]�r�&<��v��o�P�vMF +��'������I�x�vo?��kd�2ޮ2�x;qs�x����'��;��4��v�o'�:���{��1ZE�I�o��u�����W�ݎ�j�����x;����)�����*�)x;)o'卷Ҷ���~��>7�g�v��o�kYU�v���x;Ă�C�x�=|� +�Nj��I�x;)o�ݮ>����1b�x��O���wؿ�vR+ގ� +�n'�X�vR*�n���ޮ���v��Ȅ�����~���4GV���w0�L��I��c��P +ޮ˧�o'�����I�x;�ޮ�;BQ��� �^�v]UB�x�.O?� o���햒�vI��\�����1��vh*ޮcz}%�]R�.����+e�]WU�o'���P�3��8Z�v L��u�/��v}�_x;A�+�.) o�����/T��Vuo�]@����}o����K�����2o'f�oש��x�.'�����~����Zo��@U�v� ��������uY��ݾm?���Z�v;��o��^����X�v(o����u�oן�o�)c��"ⅷ�{S�v�.�x;�/��Ԋ��٩�����v�Yx;�+x;����遪x;"Vo�k�����{�ގ�z����=��P^x;Ԍ�C(x;��7��.��v��o7���[b��X�x;Q��x;#Fe��.^d��i�x���Ѿ�v����&�o��䂷�ݨx��d��T'������ð���v���.�I��-%��x;��2�N]ro��>G���G�������ۡ�J���G���Ԋ���U�vR�x;}����]�v��|���*x;�}g�]R�*��ǻ���!�x�����|�햒�vS�x������z����1�x;�*�n����x;]����}���x;Ƶ��3k�/�.Fo'���3^x;o'����/���w��)p]�vm�x;�Ȃ�ß��풒�vK ������|]?C����M�n��7���L��B���/���B���R�vK�t���ng���v����v� �nG����|��0�*t;:~�N��o�;�B��6���R�P'�nWeO������ݾ]_t�}�Z��큍.t�NYt��uB%_t���A��u���֩/�b�ۙ��v�|���V�J�ۡ��v]��B��R�v^t��J��n�eaU�v}?�n�Û+�v*ݎ=ڋn'���L�t;�$��v]��B��f�N��7�N��J�밚2�.)�n�Ԡ��(�t�~�����i�t���E��|����I�t;)�n�i����I-t; �n�/�]ǁ/���u|���b3/�]g��v*�����j��qf��q�ݮ��It��������vS�]gv�t�~�7ݮ?{��iH�t��w�ۅt�N:/���L/�]W�E�����t��$��R�nף>8�v|������T���7ݮ?�����P^t;��n�[�v��J�L���:Nu�n��L�[j���/d��v�o��BʕnGд���|����t;b��n��L�[���v��3�NQ�7�Nj��I�t�>��2�Nj�ۡ�g��v��_t;��J�[J��Mu���N�]�����1 ��H�n��E����R)�Y�v�t;��B���V�v����vR+����8�E�C-t�N�P��Iy����*ݮ+CX�vS)t��ݮ_��N��7�Nq�J�S����/���J��#RHA�S��E��a�nG4����4��t�ޣ�y��/��R2�.�N�S����:c�ݎ�x��I1t��P^t;�B��Z�n��|��,�t;��YuO�]R�.�F��$�2�N�7ݮ�|�����|��T6��I}��t=��F��%g��M���t�.g�B����3t;�ەn��G��M���t; ڕn��n�_��)ZU�v +���v��U���|����t;�O+�N��t;zF��l�2�n)�n�T��YEn��aF����1Z�v8���;�q�� �n����n���n�q�n'�M����_�vi��n��n�:��۱�/p;۪���-�NJ���{���U��b.n��?��#�R�v���K����S����0�x��,ɑ�v��vD�_p;��#�R�v�v_p;�ng%} n��� �3xF���^�v�l�� <}����l����7�K�¶��vI/��L�mG�,��Ͷ#HW�v(�mg��o����mgv��m���f�q)l;� +�Na�7�NQ�ʶ�Q�v�1��vd^ێ�Qf�i�|����l;x/���ʶ#UW�v4��v�"��U5d��yU� ���Ӈ(h;�}/��$m�S���v;0�o�� �m�pZ�v�8��_mg��o��F����'=%�v�V�v�*�NJEۡ��v�m�R�vd��vD��N����Ӡ�F�i`�h;�����P�F�1��N�vFۡ��v;�� m�P�v��B�iS�v��m��)�>.Z߾�vR��Hh;��c$���m�ʺ5�v(�Fmǵ�I�h;��m�����S�����:EF۩��|�3�Nj��)�v���E.h;Ԃ��/lѺ�͐��ʙm�B�ʶ�����m�ͶS5Ie�u��ۮ+��b�)�_�v=2��m����m�A�d�q�¶#��b�uz2ۮOrv���x��n���ʶC�f�I�l;�Ķ�}���� +�N����E��v�ڟ̶#��v]��o��Ϋl;��m�`�m��Ce��Hd���o�]W6����l�~�?ö�V�v�Ve�u��_l;}�ʶ#�T�v��o�jf�!�]�8�����W��ݭ̶�����A+�N5x���m�"����K�Ŷ��Gb�u!� +�NǼ�v��m�[�v�N +9�¶�O=��P +ۮ�vm�Ga�u��m��y�mכ���%ԅm��K���m�PΛm'���:vΙm�b9�Ķ�j�����B(r��P("�l;~����v��*�N ��N�ae۩~���T��ͶSޤ��o�l��.�m�������*ێ��Ŷ�ae�)�̶S��Ŷ#���v][��*j���vz�� ���^�m�@�mG�Nf�)[�vZ��v:���4~U����Nje��U�ʋm��h����Ķ���l���ɶ�ZTe�]���ͶcL.l��=��:ȥo���}�mG�'���z͙mG����:��+���a�l;M)�m�Lqe�)��b�Q���v:�����z���*ۮ�N��N��m�>���c�.h���m�X�v(V��h;)T���Ԋ��G�h;)�9'�����]c��ڎN�ڮ������#���s�����v])m�U�B�7��P���@()|����n_h��{{F�I�[i��L�F�q&�@�u��s�h�6K�3�N Nm��&l'�Nmjo��Z�*ڮS)��v���h;k��h;�슶�1o�]����C��z8�N���@o�� m��<�]�q�m����H�������v=�m�%�mױ0�h;�mׯ�e�]Uy��K�h�5em�Z�v�z��v(/��Ԋ�S>������v�Ɍ������ x��P�NJA�Ix��:�umG�������v;����R�vZ��v]cIF�)U�v�t{���k+h;� T�� +��h;��*�ne)m�r�7�n'���v(n]ƋÉ�d;��l'!����7َZ�B�#�T�v����vR+��I!�Iy���V�����P��v;i�D�Sb���v���lG�c!�u,�2َ��ٮ��d;�Y�v;-��d���/��Z+�N-�o��)7��tf%���~��v%�N_���T��"����E�3%��ʉ�l�Z�vR*�Nʛl�O3� ��[�"��}��(@-d;>E!������v4zf���l����N�@%�iةd;�ѽ�vlu +ٮGK�$����-��y +�Noj%��H�"ۡf���B���"��mR�v���l�.�J�S�%ۑ�|��,n��v�G��_�l�g!�M� ��/�"۱+d;-�*�����d;-g���h2�n��M��j���hC*d;>�lgI�L�3dD&�q�l��L!�ѢP�v{�{ +��E!��gS�v��/�lǙ�l�)Ld����7�N���vVn�lG���l��U%��Q�vF��&�Q�_�v��l��Ûl�����%��h/����e���B�ò�E����v�h��7َtz&�Y�-��hR�&��k��އB�S��E����I�Ӆ*�N��M�3��l��_&��9�d;�_d;*�G_`;�3������v;�� lǯZ�vD�^`;�l��^�i�~���A�`;��V����7�NUOl���7�n��?��.`;��i-\�v�nU���:�`;U$V��";lG�l�DV��(`�w�����=��̾�v1��7��^`������t�������I�`;���c��v\����T���7�n���_X�v��`��Z��ӸP�v$�_`;�SlG4��툏x�| +b�µ�{��v��k�R�v\�k�֧ʵeV�v�S/��lf�DZ���n)���T�X�0��@/`x��v]�N�r������!�J��tzq������k'�͵�KP�v�N\�$$��R�k''�ʵS.a���ĵ���Y�F�KJ�9�X;c���LX;��,Jk��UF�ڡ^W�ڡ��s����S�v�V�X;l�k�5�V#k���ↁ���X�v�O����<"c�Xi���/�j�ڙ�A�ڽ�uF�O��a{a�:x��������c�}a�H��J��q�k'�`툢��Y/�Aǂ��,�3�N�o���C*֎>����3C-X;����䅵S�`�h,X;R=/�]�Ί��OR�v��7��C.�����3֎� +�N�k�Z�v�P3�N�k��L����*2�N�Zo�˼��ӠY�v�w��v�k'�b����v4���݂���'�`���'c�v�k�����KJ��-5�v�&��~����aM[�vT0f�� �X��:֎/U�vV�X;Ԃ�C)X;)o��Ă��ϫb��y}a�v^ߌ��'�`햒+D��X;�Ɋ�c{�É�`��e��2�.��r��2c����k�+֎�]��i����X�g����k�@�kGx�`����Y�o�b��I�X��o��ی�C�X;;�k��u��)�[�v���~c�>��/�]o��N�ko��Ԋ��7k'卵C�X;N,X;.�������S T��u�a�X;m�+�N������vT��J��Y��7��`�P +֎����SP����X��d���k�*���SU�7֎�����A�`�TS����Q�v���*g�X�e�0����Δ/��kG9M�کt鍵�͌���b햒�vK ���+֮3�~c�:�����Tof�T/�j�ڡd���7�N�b�:&7k'卵#�v����='�X;�U���F��%%���X;Jp�N%�o���k��c��%%a�X;����Ӄ����9�X;�*�n)kgj�ک�b�to�X;U�W�]�N��������3a�p�,X;�u_X;�k'�b�8慵���X;Z +֮�[셵�hW�v���R2�.�4t�Jk������92�NB�ڡ��v�f�J��ٗ���u,�3�N�n��-%c��X�N�!c�:�ڏ��Q�v槜�v�;|a���F�k�⍵cY�v*O�X����`�����Q�v�/���37�����e���Df��v����v35]�vZ����H*�N��7��Ԍ�3%c�L���i�\�v( kǿ_X;��k'�b��>c�TBS�v��U�r/��Ԋ��R�v�v89�]Q��U罰vf���vjH/X;v� U�����KJ�ڙ��v��k���kGyQ��������{����Z�vxt����X;�k'�b�8䅵Ö�`픵�X;U�vR+�NJ��Iyc�P֎3֎���v�k�Sq��v(/��:.�v;����a������OX; )k����[j`���X;���v*��X;nV��-!a��X;��2�n��D��!&���������X�vk������k���k���k�F�yX���vK�X��������i/��ک��b��f���o����kG��`햒�v�f��k���ㅵ�Z�vR +�ᅵ�Z�vklj/��~ɂ��]�X��$��kGN�`�v-�^X;�}3֎Jό�[B��%5����.X; �o�O]��i��X;Ō_X;�k�P�v���ڡ����������%���k����35c�(@-X;�v/��jB*�?����o�k�o��i�Q�v�o���+X;"��1�VG�ՋjGw]���pP�vIIT��ՎҞB��o��v����B�CyQ�P3ՎK��,&+T;�- +Վj�B�KJ��-5�v�J`9�7�Վ�B�#�W�vXſ�v�/��r�j�*�P햒�vK ��j� +�N�J��Q�T;m2*�Δo��R�j�'c��ik������ک�R�h�{Q���T;:y_T;u�U���p�j�R�7�N1�J�S�L��M!S��T;uU��X�T;��2ծ�o�P��!�_2 ���v��%3/M��E�?���l�DJ���m/D;����Ў&:Bn��is�w�ى�Esy��}?���q�f�+�f���e�G�]{E�ݪ>��)�*=;�>/V���;m~��ΰS��`;�cO�;l�{��,~���$2�N���2^�ש���D���:� +��د{�������u���-�밋;��������[�v�c[��Z'7�\Z7�Hq!�D��E��ɮC&��]J��(���,`���uT`����ū��{�W��H�[�թb�˛����n�Y�:u���YIu���ǹ@u;�߅��gH��Q��N5D���~,갢��n[`����m��6��D��~��/5ZG�)��E�SZu��B��� ��@�S� t���31��<΄��O�}�F��:b��i�+����U�1���S� M�Ξ��A�9N�ڵ�sxl�}��^Cd�VV2մ.�G%q������kZ2?�ܹ�#ꕱs� +���Ρ��c�e���عf����I�L����I���z�ε��ga�bs֦c�>3�jx���k� +�,ésM˞c�:�N:�tMC�Ρ�uN�箝�:'�:'��q.꜔�R��ԹvR�p/�\�#�\й������U��7�@礎m{t���1tNJ'j��sR?�{Q�l��u��*qT�\���s��őxrM��>��;�b:*�B�G��>֩s���s��9��=���s��aN��I�Q�s��}�s��{�N�BO�ͩgaӮ�qsJ%�ǵhs�ݹ�U`srfl��iw�m���} +�4�DO����Y��q�n�D�̝p$�%�=}�uQ��sK3Ĝ�OE �N"��B��2��~E �E��N�3g����s�0`��b;c�SJ@�C�"�̛���r� 4�wZB��M1�r�KB�N��%��Q�/�Q6q$ G�M!��@���������d���yr�؟r�<ڸ�t�d�����\S6�iC0�֔g=lO�~��˦�����i��b�����k;��7arR�m0݇�ѩ{Y��Oj�,:�sA��zon��E +/}��P�YNn���ð*QZ�4�ܧ� *�G��U�r�X�`r��v-��jz���!ֺ���~�&ױ"k���a�į09,�n���09�1��@gvg�C�f��*NN�Ϻ�Y89�o~���)?{��X�|��������>����D��ɱM����X����I����;5'Mu��bUS)ڏL�qs�\����ٞM��>�g�5��5���qrK��v�7���5�ٷd�\��a���6M�QEs�J��a��ƽhr������b��hrp��� U7ökA�[J��Mu�䰇ٙΝ��"�U�\���}�qb����1irK�4��M�i�i}vΉN������>ɹ=�;���6*`��� +�W�ɡ�D�<9�sd�� �N�;��yXX`��tý9ON +�}��鳍�pVxr����&R@q���R��*�ӏtx���!���8RI����٧CmT��߭�'O��q�<鸧�6o�䖒yrS�<�F?������W"�Ń�Jzv� +�'7�YprK ���c7:0q��?*N�)1����3#����0j�\�;J�ü7�<��;9�k9�)|x<Ϣ�Iy��Z49�9�����LOA���ң��I�����&�A@��;�� �\RLn���d\�������[�49>�R�� +oM�!V�'gj�N�q���}K>V��ib�EQ��4�ڪ(prK�8��N������c�H {���ڄ���`��d�u2�f��Q�h'��b{4�&�)���3N��Y緌�D�aM�Ny*eu��*j�N� U` ���aZ�L�\���1��a�G��i� �@q��Ǿ�q�T��ߥ8�kx=��8��zMN� ��C`~�a��(9��$Ԝ$',m��$4�VGN��37G����m|7��>�ݒ����i�!�2{�!w�V;�H}�D�Sv��c���SU�q�/�&>��{��t��S;�8�b�iF=���q7�O%�Y����ARD-�qKHԸ)4N�;ԃa3@F��`�>�qM���&G�5���-ȸF���/d��]����k�.x�zW��8 �6����L�k�� +b\��t�j�������V�7�qRX�Od\l��]FơJ dg^��wdg���q� +ށ��;�E�D�M!#�ȸ�v_��%���qM1h��8��*p�J��dp�R��ڵ�E�k*@(��U��i�q��qII严9�Y n��8�O��5��P��9N +�I��2�c�'��p��P��\�8��9N*+�I�Ӈ�5�M"\���I�8��>&��d�D"'�qK�严9��8q�i7ޚL�kL�{>N�O?_+.���o(~iRG���0�qt�R2:n���kj"i�U��bL�'��t���s::�RF�I��#�q(�=:�3��踦��@��.�N-�qK�踩Nt�^�]��dµFSFE�ٔ��������qSXฐ&� �+ ʁ��hx��6�G���<N%�w[�8Eo?��Uj��Ϸj��r8G�f�l�^�q���,j��S��I��r=A�j�>���Ը�4�N��S�R�qK j\Ӽ�t4�ǣF� ���Qjd~��T^3 +����8EU,����+�>���;˻��ë�9/�l�;1pf9?*-N�����(�� |��⦐QqKtR��`�Z�8�۞�,�8�d����m�$�<}��q�I���u��G}�C�& ��Z�N\�捙�����pK38�E|S�z�'�͇���'&�j�xV2O�1*N�{��q����<� +n�A�S�7'Z-4V<�j����:nxe�M����08 ÃQ7`p +�ڍI08��,�08���/���ef�,8E�ll�N|X�e��+{��{� +���ٱ%��,y���G��-��8��(�q�R2 n�N����-��w����� + �F�ӆ(���mf�����T�ip��G���aƠ�5s�� N +ٵB�kJq_t�9 N{�Ӗ�N�����D�Ce��K���}���Ɉ88)�q�_��@p�>*NO��A�ktb��48�jm��qp +�}�s��d�݇�g��uy<�Uqp�"��r��S������)�Ą��5���n��{��f���&�G���+&�B����Th��<8+�����uM�ږ� +M��s���uV�3���h�<85N_�����=G������������p�n3K�L������08 D�'��kG�M�� �C�Ͻ`p(�k'��V�v�#E�7� +Nq+��9��ŷv����]Yp�� �,8��HN�aF�)�^a��:~Aj7t�I�y�x�}��+kJ��T�P& +Noѣx�D�IaQPpR�& +E����CQ�qa�����(8}��&���YpM�<S��k6�s��4$be�Qp6N�E�c(���Ip�A8��_�g9���$8 d�E��Hp��n���9����詀 m*stH�7({dkf�q� +��$��a�f�,�� ���V�N�N�7�' N��q���& ����1IpLI���a�2�B�c��=�$�F����c^��7������jy)\FP����8��L��a�qX_(8}~[����[��|^T��`ʟHpr����v�@����v�j���8�,V�'��Ҁ�Qu=���1��@�i>�ؘ^w���mT�)��/���������`Ϩ�7-��,��V�ۨ����M�V��v�8�Mݟ��+�M���m\Q�`�O�3���=��7���5���Y.���|S��>e0�Z��'�M��G-3ߴ=ޙK��FdS���|#Fz��2�xN������I�s1���og�q����M +�� }CQP�Pߚ�zދ����=�ov��W�>�g�t,��ٸ��K�K'�b9�q��7 '��}k�����¾�<J����Ê����<���79 +��Y�7=ګ�M׳�~"�Qt�MR��4QQ���'���{Ӕ��c����� k���ܝXox+?}��[TLЛ�H(�̜�'��yӿ�P�M�+�a �7�)o�'��zcxU�츻#!�7,I��p3Ց���3L�]��.�n*t�gB_F]ߌ6J�T���6[T'����r�9>��x�MI�uS�x���<���߶��NJ�,c���lV85M@U�����6Rߡ�H���9s*�乩��O�47,�/���&��.D$��"�F1��_͌�IbҜuڅ���@���9n���� �oz��M��\�z���w�1n����;���$�������M�Yp����r����"@n�.J�����C�f&�)!B�k��Ȝ�5Inr���H�%�W�� ��#u;�"_��v��v�mr�tIr#�qSQ'�a���Z��lV%3n�1�e��}y�Q�n=��uVh~fi���Q*q���ZՏ���$<�0�7�ֲ������m��OF�K�s��Г��6�bi�_�m�WnNj���� ��Vc�٦G{�}!�T�{�ps�2�5�3s���2>����V���Jq +�����M)Z��jSn�o�Qam��o7}���� Ak�>ٲk���Y'����b� �6gT۸�0�Im��nP�៲��$R��6 g��f�({��8��i;v�>NF�\b����z��� ��JmVH�ʣ���&O��-�s���uºa���m��d���c�v�9��~U2���9�M�LE�'�M����+���ý�l2�tg;� �W"�N�:�l�sm�X<6�\�����č'��iir��w��Ke���6�fCn�ob�茗c�Xe��Wv- +�����'�m�KyTDr�%�`3SԱl�1��g�y{^$'�5�(�[��W&�4�0$M �����l<�l����lZ>[�:�t��Y����ۖ�A`k�'�B`��^gS�`kQ�U�l���`C�O6lR,�lRO�f8��Q)���&ź�2�M�����l$�-s�^���)�-�6T=�&�����I�ܧ���$���6��#�ך-��_k�o]��I�ؒ'��6�/h!���4\�tq��?�L9M�a;]��F�y���ܻ�ڃ��0qR�,�ה�Q�û���_k��w�5����k(��ƙ��f�T�2�&�U�!��ϓ&��`S�ꅇK ؈�P��FO.x��`�J��D�5��� ����6�l����M$��6��f�[#ͩ�lJ�ݝ�c�5ౣe���y-����=����2��|�c�t��B���&�Kf��qX*d���Gtd����������{�t�M�`k��U&��h��A`�7�{G�l�5�?�M"m%��f�X��r����p ���C�� `k�]�+����S_�����d���ڵ2���M��Ƨ8��v�[�F�f�-��7�F�>������q��-)�l����6�;�����l���6v(tq��E��5���5F�۶D��pU*�/�}�d�* ��_�ҏ�X�5);�D�Ѡ���6i�p~�`kF�8+�Me�3R�T#�)T= ld�q3������l��[�ؔ8#cXlF���Y�kؠ�3�d��zt�M�b��~&����^ l���6b�����q�l��(5�-�;�dA`3��sU[�_�Z6m��ƙ��l���PS�(�� %ݼ%����3F�hA�3;'�)�b�%��ƙ�� �5"wT��M�e�Q�M��*A`���l�yj3�MٸNUV ���a�@��3�t���F��3� +�>��6A`SW����ց�x"���������-��3�͚���u�b�sؤ���M�a���&�|:� �v��$�����?l�����L� �����X6�V��6�Fm��!l��(�!l���`��#�@�l�V�2��MM��t�R���>j�3�M�b[0� ;a�-q +[�=�U0lJ�qBp��m�7�a�� +�Mom��æ��M�æ1���Rz���7� +C�tO��{#J%�ꍮ��^00l �{�l�İi%BY�İ)#{X��s�>A�_f����l6m�,�6����6�l<#9}�5!l0���`;��:'�Ma�;��� +2�����ݱj�F��Oy�� ��9~ ���N/5���_�CiՕ�_S3��RFR�N�&�k(����5;��v�Y�L���d�I��l�פPf\�k�bcc�%���G����j�2~M���4��!������r1�� +~M�lR&~M%'���_��D�y�$��F���.�jR��+�5Tjۂ����c�ָ� +`�}�ua�p�����j��[�' ��_�l&2m)��T�a\��k0��k�����Q��y�_çׅ�_C�>"�k(�3f �Ja�P�kR�l!�k]�:Ӄ�&EsR���V�^Ѡ��I�v �kIH���}Mv�<|M��o��� �&7� +_KJ�-��5s�O�5�/�$�_�O���Z�k(�&�_C,�5@�&�_ӣT�k�I�N�� �Fy����u������F�"[�L_C=���u�[}�=����}��=���� '�����)��Y�qV�)4k�u��vƙ +n��T��A_#�zy��9��D�?�8�n�jA��6C�I_S����d���6��M�-k�5}��CxV�j�����Ni�`����_Sb�4���h��(�527�_��J�p��~[]z��K��|Z�>�.��^S��C%F��8N��D�IiZ�����F�t��&�ɻ����g�5��L5Ly�Gڔ���gF[.��Ti��.'�M�*FZ�^��C7�k�KAf�����{�}n���^C9Pc�nY�g�״�9�H+�����z8{M�z�ܠז��kS���g�Ɛd��^�.� +C�`p;'w��=*vm�N]����E]�pj�/���JU{P�PuM�}�L]c_�ǵ0b��W �9�%�Z�U�%�k��[�"�kK�Iu����-xj�����k8V���)ʆM�sז��kIu��e�t�x�ѳf�^ә��'x���q�;� ���e�"��)wMQ�F8�k���h/�5��Vs��5�u�C�F:乏J^Cm�U��F�E��&��^#rK@"�k(�1n�����5E�����)�k�3A_{����=�<3�״f0u����s��v��U�)KA+bp�XV]}a��-�5�1,k5��N� 1�����F��]�F��9q�J5�*pm<�ޚ�٢��pH��D[Sޥ����I���F؟��WԚDj=��v@�Z�5�1`��&� ���Y;6�H���)d��5dM-�f?���B�1�]�� F`M3"M��f~1��l��v7ORf�ڴ4�ܼ�1�j���&�ZH�US�����ݱmΛt� ǵ�jZ9�q@0Ֆ��jK ��sGK���4��)A"�i.���Yßjo���r��W��Q����2aj�R^��Q�%ARS��Lx��p�m�r�`�cb�n���4� 2D�H��P�q Ԗ��IS������;M�NcN&|��=��Y���К�N�Ђ�v��Ϥ��8s�^�i��;(Ԇ{�����-%C�LU�$�i���逡� ����L�EF�a`��0Z���s�yցiػ�)��j_%ǝqil�۵hi�5c����d+�tK��J;�ώ�����7f���j��I�BƤ-J��^��0(�Z���`��H;�e."M��LHC��H��<|4�Y�* �Z:6���M8�2m��F# ��m��҇-��s) +8�EF��Wm�F�6�0���`4��m_�35bq�Ecw>}���zǢ-%��K ,Z��*��Cc��3�l��q.���m;�̑��hfd� +��"a\�hZ3��2�ҋ/�T4�=g��f����c_T4S�P�|q��IEC�G\4 +22���sM,��M:cbѴz�z�����r�E�6�����f�; �&�m-�&�38�h�<��BEÑ��T��ЀΉG��M�{��p*�Z�a,;MQq+YP4mS�7(�۵-) �f�u/(�����9�%(?���h����D�34/qa�I�N6g�� =vf{��c�V�7�9M�e���D�+�HL4WH�M4�&ME56-d&Z#�u��D�2(; +&Z��н2�P�$'6��Q���Ór-�4?��$����:�h(��d$�:.�h�Y��/pv����UnjӏQ1������ID��M3�(u��v�������c��}0ђ��hK *�Oa�ࢵ�d.�9/9� o�2�6�Z�d0�4������!���`4]������hA<���v���6G�yعy�Y�і��hK 0�����h�'���`4�%Y0/T��>��)m;�Fk��lm�њ9`^k���F3����QJI�њF2�4M`4�n�`4)���`4Rc�&��'��`�d� �k�������h����}�.M!qѦX4r�P3ǝ5`b +kg,�/��8eO� ����EKj�i���qgO�_2�G��y��MIM�\:M���f��û���Ɖ�3 ���-g6�c� H�P������:NNйhK�\4SG��%�p���3bj���h���y�"��f "6ݏ�,��XZM���'M1GV|����±h�&�! ��O���k���P~|trђ��hK .�6c�����|��h�۵��X�����,, +I��EC�\�sѸ�ۺ�����ES.�F�٧��%%aіX��2K�;S�*�(�m��L,����0a�P���X4]�\���J���M!cѦT�آ%WV�w�x�5�����h͔' �3Հ�a7�hd�Fr��&�m^U;�h�Tm~d����-#�d�C#E��� "���@ +(ph�W �L�t/d�h�q��c�Ц�IhS��xBN\(4�2u�%H)˲�X�W����K����� t�����W�ot�?���������7~?�~���G���_��o��o��~�?����>�������?{�����������_��Ǐ�������9���O�����?������5�k���z���������������ƫ���ӟ��O~���Z7o�M�����������?Y�|������������S�����?�ٟ��+���?��_����O�����3���E2��RVVȻ{{x;x�������X=^�����w���|Ŀ�,e��������S;�YV���+� z�=�������|�����w}����~�r{��?��W b/��f��D�T����/%`��,J�����p73�� �<#�,u�/ q�� +6�Z�? +W�����X[���S?��������=�x���3���\qcRmvV����>�*h��aL�S_��߱��l��*;���nۄ{zw�=�jmi�;��&��_�;�&�W��ai���6��2�����u-�Eه�C��+��~e>�q�ڽ;��dh�r66�vb�/�.�S��״��|TG-�㱬��4f` �i�uV6�0��tS��t^.��C{��Uf�[w�T'��Hc���,@g��:����M)ʼ�V����I�3^N������nMV�A�(i����#�b���bY-��*lŢ��v��^��+)m���Q^���2���Nk%���m�u{�M�"R���*�6P��쳆U�5����]���:�WR�9�OH����itlZ��nv��ßI�vm�ʝf+�j��o>���4�7\q�{t߲�d���f�ٷͪDyMO��d3���D< *7������Xj��o�D��px�|�2�����O�N���`Ȝ�Ɵ����f�ϊ���)Չl��Z��%�>�&�_�QRK���cW�:�����������[�+�5�iA�9�W�o?#¯���h��!����\���џ�j]^G�B�_���vh�esu��yT~���W�����W��i}����涓�?~�w���K\�5ݺ�����ȯc)�����~�������?���>��o��O?������[̪���g�����{���������o�����Y�3!��o��O�{��h��?�տ�̂��-u�-ly<����#�/ς߇�Z���BCG��=�J��u���S{8:%7a_e�{9bC�e����c�p�ԩ��T���wm6N�y��u(99�����U�(9 �\8�'�l��u����D:���(]?��y��y���oդ�y��C�c��.�-ޗ��N*�:��>�|�Х,���{,�B�Z�;y �S� J�L濠d���n�#�!�D���|V��Ig���A�%��2��%N� +S��ET��yuq��|>�P���۱���f�hy��;�V�@�$�C>�&�"cc@����u��NSר�m#����=���܇չ��2���TS��O}�S4o*�pҥ�ގ�c<�� + +�����V]�)&����u�W=݇s +�R�=N�o'�m�/�y��=n�.�~9�I�fV�SP�# +<��n"�ڝpT`0�?Nn���&�]�z�?��H�hy4iڗo��w��V=��o�?�f����ֶ@O��a^��A.J�a2�S���#J�o��9k6�����x�\�A���~�x}�k�e�e//hu��<%�U x�"]V�����,� ��궚T��k�("���N��R��y���27��ۣ�I;�2�#��aQ&�0�����"��o[���y���/��tU�k��w�qr�x���q��Auf'�^�*F����v�l�̴��6=0��i��| ����)��g\����i�q��LC�Ý�����[<mU�o���Ǧ҈�>C��n+uՇ=q?tG���o;G!S5(}�'Q�Y ��#�۪ka�v�)���yP6������ޖFڡJޛ˲g�3� c +�=c1E��UrJ���5w̛������o7z����oL1>ɡ�5q�Q�ۭ����o}uG}�]��V�y�Չ�x��=�Z���^a��?g�7~D}M8*�3����a���3v�#s������Ա��K~��ڪ�������X;/މ��t +�| $�t����FY�{~������i�O�/^M]����;��-m���BSGc ���5��]�db��U�N�n�K �w�B6z)@ M�o�1���ͧ�8&#������{�]K��Z���ŀ$��22"o��m�GvYttl�ѐ�ZTۧ����w�1��֮��-J��@�+v��ȸ̘�1�D)��j�(p��T�˛ n���I��,f���QM���b�-J��6وo�6�7��c�.%��Ԯ��6Z�q�W�0��pC�)�]�0A�է�� �u�F]�p#�v��m�c�ݎ!0�� +��c㟃�6)؝d��*��$�ب��E��)d�(���m�eҏ�#k�J��Ä+$-k۲Ǩ�aPTݥ�a:N�����B3�~�{V +�F���佸y� z&��@(mO1�7�Ul����J햪�T_��X.(ucR��mP�A7̮�f�t>U�8�̂�u�DX�[:=�1�.��! �J�`0�����_���q�1�!,��_2V�̣;S�$#��ѳ�_L�~V��$� �8����d��ޏ�TçA�����DČF}��;�.����M�c��~5dޞI�K������f�*���� +G"~�TA��&��g�(��+�����1���Մ�J�%^%*7an�1��cc)��Ӭ�Q"�I���USr��1%�� d#�{z������'�M�7�'N��idDró�/@E2�A�^;��pW]{ xWL~���>exgM��>��E��i�c���\$�vJ�l�%9��>��5�����K��R�I��VHiK��؆H%��։��lՆ������۞�Ǝ��ρd �C�(���<f�Rm�\�G�%�X'���GֹF>Y���Em��x���X�.DX�D$��5H��B[|d��ݽ�<�%�����m���3��)%Y��Nn�R|�����y@_,�Q��rHr��7��;ܲ4�| K����.�D�D�K�G���9�<�����m���"���;6�8��F�K��Z���%�� �}�֡��^r�A���\H�SZ��[^�^�eߟKu�>���:4�`��� ܰ��[��`���kv��f�c=�� �� �ph�f�V��c�Z�bp�f& ە����m�j+�*ǂ��H�+���_J1�����uG�.(��b" w��'(�`i��Z�Mii�V�E���{�(��l�-�8��E3Q*�Hj�Q���qD�����0j����,���a�[鱲����nF�B?�Kcթ��l�Iɼf�,`~��ò!Œ4#@Q��M$B�����i�Ȕ���� �P�ɐa�X�M7F��) .-�����*#0�ڀlE��v[���1�F'��|�4��_��-X��Ҳ�[����ma�l�"���g�Xո�O�3-o�=�S)��4Ё�%q�mx|N�-}�����?�]���G��+/��$��[5{(�=Gߑ] �" O�3=~��G�Wo��[=6�^���y�N�q4v�x�� +��U�"M~:��<�8M�h�T_n���%��z�:� ���̛��i����Mmߜ7~:��a/����>j�NG�nE��y�������nL ���<�;t;�i*�d��%�ݯ�����Q~\�L;{'�j��E���)��Z�D�=���Q�R�#�w�����c��o�b��;��%�/5���Ϟz_�v��"���p����/��2^�Uʀ��Ә� +G>�86�Vˠ����8c��1�Iyrh�?���%��$I�s��z��Q�~谕�HG��k:�6h���Yqu �ʭ�m�찜ue�O��ߨw;h�ܑBi��'N��Î���ɠ��dY8�iDaP)�NƌC��yt�Y���`<9�k�1^�aO�#�6�T�����d ��dH:�mcӱ��(uHܶk�˼�����q��I�Ls���#��6�b4�w��vv}!#kzʌ?`^�l���̀0�-@��x��]���;kp*���y�eA�x &��Am�T���8@�H���Gҟ�+��$wK��2�����_ 7Ó��������O��T�S+瓧_�)�����b����[���0RW��}��qMs3�d����GI?���.�'�O-�����N�ǣ�<��5��>��,���YYCyާ�X���y쐨�E�>�����e����=�����W�r�M���YMQ,��O��D�qK��U�+[ Hݢ�ࣲ*3N{�+8c���h�VSNc�}=~��<,J�7��T���$�����E�H�=,�Y�ɭ��?܋����:/��Xn�ޕ�R���������;~���k��P�?�����������cn@L�<�?�����B��^���M��ܾ��t�v�K�-7��ҧ���oӪCE\�O=K�@'�Fjl�"���&a>EAL������[i���ԃ�a ����WY"�u�1�].\������,��wRn-����^�F�� ��ZN��e��궸�����.�2_���Q�Kn&b��>���ᐬX��`��Dl��P��.Q:@�sQ�k�*���7�{Z4x��=y����D�p圌�̊9�/t��y����o�RٵFpfF�ۑ4f^��� k_x���ÑY1�fȠw`�č��_��{|��V�چ��h�R�OÂxd��CG������mݧ��e�4��ۅ�O�V�����@P��T^ ��dJ���\Zor4`��Kɘ�v��T&V���(w�Epܐv���,P���P��ލ��2 �ɇL��Q��XMA?Ԛ�~����BB���V��I߲`�Jw���G1�.�����T�.e��ȯ���wogf�����s����[���sa�2�@�3�y�Y�������i*��b~����Wވb�EHj�ȜBqi�S���,ׅ:�'(T���� +��"Hh�Q���Q��Z� rڂR�\.{�x�]!@������#��v#�2���Y��Tyv +5B��_��`Δ�(q�A������ͽ�tqW �z�}o�K����!��<D������ڒVYA�����I��ǀ�l,�Ld�6��Q|��;�� � Z��<-�˻��Xi�-�/�A�kCu�����jo��� �=a�~@y����h���S�-�����А�q�� +���������0�n���w�b�=7 t��:��B�?����������!�"��%��I��-��yA�LJ;�U]�B]H�v���%��n�+t��bە�]Ћ�++Ѡ�ܥh��S�B���~t&6��m�!�M�����B�! +h`V�B��5�J�f�l9<���U ��Kj�90������Oҟ����S���8]�L�E~lN�8��<�sѓ\I������::���;*[�J�KFh$�c`��7��@�pB���%wz.�_0�ͳ��}��Y-�Q��r�j��b� +�p�^�*�rn=DޟӦ�}i�����c�6���n��ӻ����9� 綟$��p�r�O�l������i�]8{&�I^��`�I�C/&𫡨��K�F�P�K�`��ї�u!�}�V�ń��lbF_��F����\Y6�4d��\� Ϝ���vy����8ȉo��m��r���33b/Q!�b����Jx�^��^� z���5i?z���Vt�@�u�o~�^b����^��H��TH�u�^�������֬9�����i�G��@����3���\}�������t�����% +��{� �7?uq�X�;����*i��^ޛ)�����iW1�2�����q�=��^������|�9@�=��@s�H}d~���AQ�V<�S:t����@<�w��1�R]yog�xX[��[#��Jv�R;�����s���qF��ET��s���L�3���X�xV&����t�B~����to�9 c��0u����_�d�L�x����3���s�a��ѢAo��E,RK�f�堨��r���#������,Q�����)G��堰�P-��좐��ޏ�IV���(���Ե���R��9+P^����צ9>"�O�i�+7J]�6G\��X+ms���b����F~n��J!2l���#+�h���9��mW�9b�Q�r�͋n*��p��!�ln�њls���K��\<�-m���!m�ȥʑ�6�:�F���@Qpl����,����3kҶ��R�ֶ�s� �y�����S����2��r�@�UY�����m �4?��y�d�����F�� �ݿ�M��7PN� ��� ������z�����ӌ�O��z$���BC�0~J�\:�����O���,q��������ш�a�����e��-��%�:��7�!�=��&A�o�\��& +��e��RŴ.��L����bT�yNLj1WR�+L�2B�(�[$? '(�o�C/R2ۨ��X�A��A����ť��sf�(h��C�x��?�:A�X�&��p�Ӕ�����e>!���\.�Xn~gRgRR��rc�R�aP��z +q��p�4��0�{c�QH}c*���q{��D�6������Q��jL� +H�W��z�[�[9�e"9�hJ�&��@�9B;�h��A�R$DK�� h+_�)'��#� #��f�ɛ�r�<?mE2E�s�X�f�L�����]kV����2� ��#MG�@�Pm����"���-"wBC1�4�#��R? �=o�� ���"+�X��՝p�)�� �\XȸN�h,"Q�P��3���Wы�P�r{5`�y�H����E�����+���ژA+�8� +� sV�m"(:��Q�O`u��RS!���x��������A���<O^3�m +�_6�7@�BOͶ �9��a��FR�7�����*A�wfɗ��i�w�h3���?�w��#i[p�k�8<� Oߓ�_��@��N�p y�[�]���g Z�5��UZ��s�Z����b�À�-���7��rc@��a�]���-J��I3X��q�}~֘j8g )�q��� +�~��v̩N�ڈ +ɣy&��Dre�R�"��T-(��IJ@|�b0w �Y�����a��-"�fQ��&����r��\R6��.��[~ft���o\�GXJ#}��Ł^�� �u |�#T�����D���:�<��劢�������eR��2�ҷغF��tױ�f'�)���+S ӽ�F_��ip��v���t�#�3 `&(���=*j�J/��ҁDxPhO��ZÅ���>��)T��n�����o} }XkT��:�]%�X;�|�H����Ȥ�-�O� �|��E��p/�*��%�u^ H��Xiʏ���i����Ǔ�0�QK>�2�9��DS +�8�B��n'�L$��7���EϺ��"�Xld{��d?pC�T�����Z���k4f�S���*�D�^(�H�r����_���̈́p�Hn�V�̑�\vDD�(�Dhx6���|���:y�h!��; z4u��$[�ݮŘy��`�-3�)z�LG�ݬ#g��+X'��x��:1�Oe;K%�/S�O�~o���ed �X�����M�!@-$��f�������b&�E�� +�P�1x%�t�>""�/�ȍӱ��fFnA#5�G ��}<A>�PCt:t$̄0�Ce���*y0'8KݎyɣmTL�� e�!6"� %�����T"z$����L��A�{�I.a���D��5`)e�!M���I���)�{����0`�|y���Ũ-_C�˷�Q`���7b�|9s��Ӹ4_�~ͷ��\^��� -fnhMl�ԃ�!�� �g]�p>�#F����[� ��c���� �h]ʠEk[6�J6���%)��8Jk��:�`��$'�N�<S!54u� **��x��z;�4U����sG�fR�୩�� �P�;�_j�Ѵ��O��4̕� �-��k�#���K���2a�m�{,;��dK�9 *#�epm�lM�x3�Z��'��,E��mK�m�s��05��ۮ������趃�W��,H� � �n����n�C�[F�}o�@��d�)���v(���p_n���V�M�>~9B�S�B�yT����2Ϭ�3^�o�*��3���A}��0�;C~�y���}&�T߉rc�;V�.�l;ļ��7����k>I�����O7�Iy��ٕ�/Oww +�2��%*�wQ��>�Q��Q)�dW�E�=����c�bоS J{X'qj?���]�)��ϝd�ݾ���� +��x�����E�� �o�u�����f��t��E���^�~g��>߭���;8����V�t���w�"]/P a��j�����[-���[��(��Jf5I���B.]�rhfR����O�� +�uAE��Ψ�R�+|�όPYIu�+���]�ì;bf��G�F��8���IQw oR����'���EA�q�r2WϔQ�����E�ȱS�O���rv������x�:G}'��?&�P�c��2OV�c�6F{�Z�j�k�f-nփ��d�r�wd!S�r&F;z%�p[����}1#�|��&���ݎ���d�S�u���(m3��ptț�,�k`&�H�8�&�\+5��q��&g����C��~�"��F��%wK���7��O�;}�F�O�T��<��#y}Fg��Q���rY=g:�����!�%�'D�X �N5>x�I��P+���\+IK$��J����K x�J`���Tއ��<|ԟ��O�B�;g�����wM7������~*���~�2��{�p��ڙ�����{�8�+�z���_��7ڰ�N�`1%�I g2ح�̫���@Ā���`��(� S�Q7f���fB��=h���/{\w����w�`��u��0���x*�w�k0��ݖ��a)��{l��CO�;��Çi����§TEC��BT�Q:�*�N}`�fC9+T��e�n�y������'}� +�`��0u���} B����#0{(r��G�;��Gd?.]b���� \H#����װV'�%�L#����ٟ+iT��JT=�߉�/�� �lԑ=~�c\�gV�!<(oД!{�\����۰�(�F�ԋ�J�v���� ��k~�(Tj��a�?�w���@����I4����rG�_��0�>0������9��}2!�t d�'u��q��H�v/��z$߷�p�}�x{o1����f����~H����pLo�!��y�:�����z|�=Q�ӄZPx�-L�4�9� +Z4y�-��<�i�Xzw=I���]�{���8������a���.v�qu��<u��M����br���|<� �8��T��OGހf%֍���Y���/����x(��T��#$;L�p�5�u�p�1<V���E���+k^HXIVe���,���O�e�S��6LU$�<���5s�b��a�#P"�mox(a��#AE�GHi���}����oa�}.w��U�Ԭ���>�����/���ޟӦ�}i�����yz�ޫ�gjK{6��=c>���y�9�*=G���h�� ��a��4<���I��i>�b"��y>�{�*����w#y�����hv�|�Ȥ\���fu$�|���F�| �DL���k9 ����y>6�R<� �7�ǎ��.R|�|�&�P4�0+d 2��,�x>!+��>p����>�\5Z3}��<��7�JO����wc� $t]z~��\WK����4��n�<�|l����Qo|����z��q'N��7�0���ŏ|�q� ⽟I��Y���?���[�U�?�/�������?{}������ۿ�ÿo6�����SM&�E�+e(LUT����RQ� +��vT�c�PT�=� +������]U�B�&5����[F�ϟsU��,��<����כˊ3���j*+��2-.+��" �/��PP��e����ˊ#�vU}UG��D�.W߷`rQq�]otQq?&�����\T|�*��8�iWQ��Du�)��$=e�)��Ӭ������)^\��i��B���\St�+�L\S�g��)�:���5��9C��Խ��ҽ�@T�6��ҽ��,�*��z+tO�ϸ��L4�q��D�}q#��I��^sV���T=�B4se-��9���ˡ��v�B��؟kEؼ��#����%�7qIW f���|�RMK].��T÷.�~��n�[�%7�h��+k���b�FkA2����x0>Y��a,������S����Y;�wE��iN�^�$c�X�o�チQ�W��\�T��d!�j����ʍ���g^1���=�ۮ&5:f��4�:�b �zE�>!���V�|���+�/�xݱ����^�՛#�-�Vq��%�|EHy��!:D�n��d���-Ʌ_!8vU�N�|l����;�~%�d9�z�Dh��r�1�?� +T��e�㕐 �L�`�,PR`UEp���� +�"��R�[�r�,B�dY\Nۭ���~+�а̷�$������ze�1�[�`? ߿�2�����xC]�7sl��oE���\V�K'V�ArQ�0+J����[�'�r��W��%/K���T���U��6�$�K�8L� 3N�r�`/�|���^u8HD��Z���XU;kz���>ӵ?�h�0暷������5�R#xꄁ�r$���-aO����&���t�[6��U��}��+�T�ޱށ��TT;bEgUg��<�;��rv8�Y����Ѕ`���b�s-Q�+�ɬL�j[�:S�0]=ʬNO �W��n��i�n9�P6íF��c�Ҭ�(�t���Ux���J=��-�;{����@��=|������4a�[4�k�o���5��@��4-�k*y�]w�[���正2N�b.�Է�JBM�ե���]^�[������U� ��Vy�\�j:��B��n/���=�ĀkrIZ��]�(���(yz0I�^)LR��&i��c��.Nf�ً�����,�]���e�&���j�����|���fA7�7.��{i*.���E�|ǹ��t�(��L���w���Bx��]+�yo/��*�����<��ߤc�ޟu�|�a�j�(��� �R�H��aNU���:⤼����<Z�肌����*���������Z�VdUNҺ��NN:��SZwvK�t9��*�)m�3�л������ � �Z����H\�V�뇎�����r%R�I�W:�S�kj�˵O�0s���|s%UYy��jC�5Y'��?f�����T��>U�X���&kS�Ugm���:m=D4� +�u�K��`U�ņ� +���P��k+k�G\�� ��تD�sU������^����� +�b���P� +�V6.C�`~&��T��%͵�+�e��U��`�/q��stC���}���$�~�yU�: �ZRS�'�>ϵ��&qe8<����i�+�L���� +��K�@oGɯ�j�M8�\��AW��)V�V��$�wS��E�.�3��ힹ���vlȞ8E_�]��g��Dr_��>l���i��1��;��:I ReO\C�j[�_��!�%�ۺ���#�0�U:�DAC�֊�*qѐ�zQI�Ҙ�����-V�m��"�����X#p�ʏ��Ck�iWIv��r���J %._( �O�Z��$.��Հ'�V�t싃GNb�h�(.���z� +�C�"\���yѴe ��~!�;��[\H�����K]n����Dt b�lY�ec�7�ټP� u]�r;�N]��(zbu�7&#�G����/���\� ��-����r�.�A�KM�-RgI�QJ��F-P�Q#~� +n�1<�Y��� �����%�Z�+�t��n2�B����uZ�)6��#���5�=jH�l�BC�o�!�[�DI�m��R����H�{,q�IO�_������ +vC�<8)B�"�Vj+�mky�J�o;�X�(��m�LM�h!����0��Ls�!RH�&��!:IUT�˽�#�������Y�=���k��4�ڎS؎�2qC��B�W�[�^e��.k���⏨� C�|��g7�ѹV�!i8��Ė�q�#�e_�k�� +Yv���%nH�����q,�� d�0��وn�������A�!U�Fy���W� �A��� $����p����o|ْ�Rh���.R~䖧WΉ���K���D�grbxv�4�EpI\�x*�g�;�����q_�e|go�����㗃h�J:�<�2i�䋚�4V��thyi������r�y;����m�%��e�����{�V��[ڮBo�t(N��nG"{&u����ݜ>�v��X�e:�V-&�~�$��v�8v�Z2��k�e��$��B�4������A��em�k����ߓ ���_�t� v���x�c���]4�%���X�n5G��ϑ_��>�"u�b�p���쀇/��2^�Uʀb,���� +�l�8��F˨����8�d��!�Iyrh�?�������Y�s�̚��j�����5�����8ި�:�g��!A+�Nz�C�֗��N�Õ�����utG>��;B:�����,p�U��B��}��mZ! +��Lq�x2g(���`�M#�'��i�Z_�s�{2��q瀹 @�'C�?���#�69ɟLSG�m�����={`4�]��F���ڰv����wi\�.�kc�ev'���x�p�^;\���ά�k����o1&�{�%��qe��Uҟ�K��%�K��3������ w�T��n�>r�i]L}z���]��Z^Q;����A��[�W~�>�'m*P�I;N� +Wl`\B���Ke��T����7��OK���89u�4F��6�� +iP~���y~��> Syb�2L ����4���=�It��G�7��X����ܐ/|����Y����Q6U����O�l��4����G��{�O<m�W��<� +���Ղ�5qUa������g�f.6K�*wS�����T{n�����%|��SybD�c����C� -�VxL��ݓ���AL��C��{y���e,CIѨQܟ����O�ڻ��|�Uvӭ.�YO�S\��'�҆�X�>�\�E*��������ׇ���5T�-���J��>�������.PU=�0Da��6*n�Kՙ\A�2Ms6��V��^�7�E�K�B5��誮m��>�H,��P���\��]eI����H�q�dm�*�N_� +����\���4����w]^����N��:�Zn����ƍ����`�=�M��n ���s�Z�Y��>��<^��QF"����)���o��>$n�Z�Q\a�^�>�+I�T�T�ؓ@�����|��ĽN�D�P+N�Q{��/E��A�m��1Et����0���������kK�����^�C���Lc�q�>��ZME?ٚ�.�Y�B�ߥ�V�K�I��p���K{�b�;]j��!3�d+��Z�����1.�?���X1RL�[ӎ�:��Qò����Y!&'AZ"���Xe</P��{�y%�^�᷒��E��=.����U�3�p���RD�mp�Bj#���l�Q�ԀyO��VKAV2E�ЊH�Z�S�W ��ADd�lA-ή@ۮ%sW����!���>QP$C?%/�HnQ mX$o��_�'H''��0 +�n��H�e���E�%ވZ���?�h�Ş*��p5ф�������}B��m)�4fC9�?m��w�S�Am��܂ +Vᓱ ?���=q,9H�W �?�7��'�[V]8�1W��AA�F%H���=��B��6�>�V���aJXp��!�Q��rxx +����߭N�#^~w�R�ǭ���x��������@ť߱��۵�g]]Z��nq��E熋���"��.���?K��T7��f���B�㹎fZ�jL�S�Z�8ɖs��i�1�������|j�F.�_��z���Eߨ��n����⭏K5���U+x�F��s��Þ.�'�gUe���ԱW��'�tx�H�����&�;3<$� ��*tH����M0�?�Vuv���=��x��c�pk�Z�U���S��Ӥ��� sQ�%�c��'m����d}dڈ}�ڰ�Wzc{6��=c��3�ϒV`8o�JO�R� �u-A.�.�@�,����g%^$���Pwp{�K/����>s��Ŋ�_�9�G�����V�pq~���X�j��3)ȗᕬ!L�߰r[b I;@ю5b�3�� �����(!N�"f��Y3$Y� +n��G�%Y������/� e�x���K$@�Hn���в&�@�����Ј���p�� S<���:A��\ȅ��B� �wGV�3j����QQ.���C?!���^�~}��$ �n�nFV����\`O�"{�VϫX��@��Z�S@�;Z�Q��_��'WVB��Uk��|'���Z���?�<�U<��<aX�h�<�;cY��I|:�^s,) yrf��.OPO%�9�<��}�'���pkys+N�(O�tuyreq�.O�o��Y��7#Iy�@!y�%Nv��?����^6� �QvV��y5k�ҕj��J���H����D�)���q���ه����!��8y��i�C_�S������I6��]z��11�'�����M=�-tX܌��]5��؈"����т��"��V���P�&���^Q��J,�|��h:�ډ�X���$M��EBZ �����3������a �%��@p��<�����䀔�r_d-�ʘj�^6]��s���4,�[�$�i ��B�_� _A� � YlK�9LHҝ�I���X(�ٺGC%xFC=�`<�zS�>��f8>����1�`���Ÿ��]�t��O�e��g�:l���]�$�����z�"%Ҷb=��>$v@p�ouqL9���7��&���^�����_��߿G�/~��$�p��]�����i@������G�@RXp�^���|K53��P$8�Q�H��'��.����1"�����9ʃ��n��� � *���<+��(�L�+��!����r��<���l�Z���� "�!b��+����Dِ(I|BRR���M;�u�Ħ}�����C�"�ɦ�<�]͑A�����3̢L0Ie��a�Ǿ�9�d�b���p��ci�1�ry��N�w8]�� [�ה=IQ���UA�%���TvE���-���P!�;��[����&kRN˚W�n�?Z�v0�� +���HCs�7nx���X�!��X\�d��U|֗�����!�p�E��F߱L ��x��,M�;��T�+�a������k_��)Wr���eG�ڦw� +�]���׀���&�N,Fp��a��=Y(I7,���oX@�78v|ÂM-�)�]�I4� ��[<7,~�jp1��>ܰ?㢾aW:-07yÂ.�:ް�\kē� ��\�O�}^��$&�}1E%��A����}�'D;���{8*q��iŭ�2B^���ŽKX���0��������pE��������[�������������e�8}b��P�9B�y�6����/XL +����m���i��P�(����"���c�n����bh����'o/��o�ۈ��_���d���XϦ�~�2g���x�"ў@߲ ���~���/Y�p�7,ӑ \�݉����X.�Q�����;ӑ��������2$Hޱ �+?�߱L,����E!?�x��m�ɚ�X�SH�;y�,�;~�$��XL~��u�"!�ps]���+�.������{9�BF��1b���!�uh��0:��?�y*I[owhN��W�J*wX�2��r����\���ax�����!9�L��;#:��v�a6.���C��VL�0l�J,��aL����ax��/�j�;�0E� `�a���ʏ��0>�E�?C��=/�������~�=b'J��L�=b�{k٘����-D�w/y�>�K�~�=�����ŏ{�q"����#�}?!�M2|c��dV�3�۬D!�F���J%Nf%�����J�E/��JT c��dV�X?�qdV�3��ɪDi#�<}��Q�� +OF%��L�Q�y^�QU�j�dT�GM6*�9�m[�e�p�dU��M.$Y�,� ���J-�|����1E��V��5�U�����V%�ʯ$�U f�e1 ����^��K���N&D�]ɺuiجDa�@/Ȭde�J'�Jog&�۬Ix�ܥY�� ���eԕ��F����C�p���ᶨ��jR�tEŭ �h�� +\W�2y�����00�cY��l&%>E����*��q(5��-W2���h p�˕�\N�Y�tI�r �'�t�ab�+�v �(�Ɣ��]�?+�����P��^|%ˑ2Q.��bGQ2�ĭ�� +tGnH����j�YY��X�=�66��G���rs�ً�JԜ�!C1��"�&[ݚ�mM,�JN���g��͊�_�Gl���"�6�Ad�D��A�㴰2.x���4�A�E ����p+����?J��/[��E�|�d����h��OX=j��{ �� + kς6�J)��2$�I:$j*�F�Z ����P�c� ���\`?����L�wj�Q�|͓��i9����-KVo>�(ųs˨(�J�Pڠ���54`;<|�[� l��|n +2�]�YI�}+^�k���j���,�Q��]c+�X���t�0�֨��N��A2f9=3�Ʉ����O����V���>���D�R$���uq`�d�U�@�4�FJ�PB�T��>��f\A�V���|�l�inY���.$�&|��(� �g�!,���\+�� ����L3��@�1���&n��$������5`�p��j�{�:ɰd��e�,��bF���d�'&�%8vqRTUK��x���{֛��I�)�d5�����R<�B|�7!��xG�<E�TШ�Ʉ^Ԕ%��Z���.�J���b>5�9� �9�Ӹg�W S���%���K��p�1�q��]E�T[㇁�v�*�3��`��C; �2n���D��dU���`��1=�h�h�c?ۘ�u�z3�_�~*�B�mW@�{On�^�V��v#G`tEZ��N�L4�rs�h��+�MM� +���ך���G_ r�-������Odɒڱ)������N�18$ڸ ����W�n-gVJԮ��"$w~x��u>!$Մ<�A�'#���)@��t(9ζ/i�XJU��E�A�aT�����(�і)���Wd�=+�F��e�z���r̤���FyW>�̖�P*�cىQ��m�e,���5dYLd$�p�k�¡4Ju�"R��Rq|A@m&��/��ږ��/Pjn,���?���C +A^^�����cG�/A�pT��e �C�ԅJ�kh�.�WQm��36/d�n��0^�n�>���Β�R�@ +-qV-���Z��&" o��[�� �qe�W�F̏<�k֠�c�?���t1��2�2�l�ȲV��pٺ���.���&���6�|N+��Ø�0)�� +�@W`�&Ά�\�LM�0�y�@�43�Q)��u��&�Jͱ�3������¥w��qn���ƅ@�� +2XΓ����l�0_�-^:w'���e�m�1���,I!)a���%�v��Ecy?� p�G�M7��^��GZdlg��0�[�������J��d�R�'�"#����@)�6e� ��]B#��d�hk�ۡ�:�7�����E4mu��.��ʒ�W��N�(�7�Bձ`j�h�̈K��{��;��$��_b��b���`m�����|�( g3D �;�%gep����I^�Ry�mA��[72�P�~?8�stEd���kK,d�}�1>�:� ubXa���4�+�R�[Q�IH�D'Xo��w�����'[__��Y.�k������iM��!�뾵�*��"���>��_�v�L���=y!��Ҿw��n�p��p�u8�����3y�|���M̷��U�9}B1jF_|�I�]�'X��j^�@��`�q/b��a�1�y�R�\�k���{z��K�A�^��K��2h��Y2��Ƴ��jq*<�-�N[ +���]h3�0/�vd;�+�9��G +�}O� +]�R��؊~�`|+1�!մ~{��[�� ����A$�mRF}_�L��D\�@12䫗�jz�o�F�oq0Xo�~���-�'�V0<'}8WR��Ğ�k�0p�/r^[[�-�j`*�Z k?H���QW���Hh�[L��Y���a��:C�$��ꆽA�6i +aÔ�t��h�L ���}B�Z��[�z�O@J맕��y�"s ��J��/�E��ϥ^|g�rҝ��u9��]Y߶4k1"$E�@[[���!�>0-���O�s�J��IQhK-{����@�-�h�QR��QQ�l9X��X�!D�1�ऽ���pa,z�UX����d�Jg��s)/M���$�4�BJF!#ڵ(--�G,�~1�/ L��2��}�S2��X�6�M��}�g�.���^}�ٛ�1�85���Z�� m�)�^�>��*��w���&���{�ض���,����}q��P��듚~<�a�tM�b�zv�E�/��j v�8N�ʔ��rr������n�0�M��\=}�r ��瘾�!m�>UrB�S*gU�z9�����5/�d}��Dm�8��y�o�=h�S��~���{�.��l���#d�����a��Ӈ�Ql9N��o��Ą]��$v�N�.]K&�}-�����Ȗ��4[^�#=�U9�-~�۶��|�v�K�ۛ�/y�}y���y_2v��2b��p���r(�ךC���Ђ�I��U�(�t�:���_�=R2^���c,V��T�l�����s˨����(�d�H�Y�R\�+P]Ys�kR� +�r��e����ڨ&����I�q:�7*�=�wD2^|pj��N +p�.JQ�H)�=R9��=�)ռ=��;6:�����p��&�㱣eᰭ �ve�(�<2=N,��ǒe���h<�ȴ�,G�m�9�=�k��۬�s�~=�>���9��=J/s�G�G��G�e������=�`4����6�9 +^=2�)n9���X�aۺ�xS/�M�}���An��2�#�g�EW����X NN���F�3���k�iA��x��s�QW�q%X��39J�sr����t��s�u��8��zJ���'�gC~#O��^�s+7T����:�.���r}�5�{�9��|�#�����Sj^{+ +N�<)��={��#/�E-���Ȑ��!{����C��m~�i��sW(���L���w�%&#������k=e����˸�^B�9�.�in���m��5'�� ����k*��S�~�m訷�_S��V�'��Y���"�;�愦(5?y�����u�н�w�]�y.W�g`Kj�q�:ϴ,+�G� �s�JB��C6���������}i[�w�ۯ������N~�·��E@�*���Q|8c�����l@�T4���\��#�腯��C���ʋ\`�0����V�*X�-��_����Q{��]��<�e uF�R�C�~�k +�<U T!��Ϊ�7�|wp��z��v�w�QH^^E���B�-��Ӭ�b�tL���A$����fEu��C�N Ȩ-�]�_���^#���-)`�� +���jM�����H:'�{���QWa�K� +[�F�S-K#0O�����]��=0����Ё��1�_� �왠.�h����ge����o�*�Wh[f6�$\�4{�Q�6�1�{���9�1rC샼��$�ș���jY���2S��}h����z��X�ڧ?s���tTX� M���� +�Բ�V���H��^�X�[���&*�vEi���`�1�_���c��mM$|ߋ�hYzRx\H����c���ʇdz�ΒG�����TN_����� ׄYL�j����P�Y�Lki!�5��� ��c��}�,;�e,���W�0j��U��a�&4�1xF#�g4B���hc��F0�hc�&4�1xF#�7�����x�<���3�� �`�! B��`ބH����h`ބG0oxN�C$�7�3 �<��� ��u@�0x� �Hπc�H0o$�g@�0x�#</�˰��$��f��I�dm��$�cqJ&$�0s9�d +A�Y��L2ؖQCFL2E~��w�LA؉B�$�< ~��dXX{��!�d�5Tc3ɔ3���$��y���$�T0�K�AW�9P�,)�Ù *"��6�`+@�JD#>ܦ�)Y�S�թ3��Z�"���@P��ɀ��<;f�A�*��l2���k�A�κ��w�˻��Of�:y��M:�'6�7�d +}ӏd2H�z�ry�J���_�ݯm&�y�y���1T���Ǽ}$�A8��~Z*�7������w��w�Q$u� ��N�!�d�I$�x�"I��HI�1�#oX�xC��n�����G&ް<2��$�L�a�ԩ7R u�Q u� �μ!�ԙ7F�ԙ7$�:��O��R�ސ@��H�|cH�|C��oH =��Q �6�������(�F�3_���mgr:d���e��qT�y7����F����������`��� L��� D��� D�;����'Od��� ��1�����������wf'�og'�og'���N ���N�L%v����"���"��ؙn7�����&�5=��'z�����쿦'��� ��`��>�����3��37A'�G2�w���N㳭O��{�DO�c^�S�;���� +�H�Y�h4y��;b�q�����Μ�5v�:��]f�, %���ЗZ�|n5$!��r��!Nz�+A>L���mkn�"�F����r�������<A�ߪX��!܅�)����؞���g"�kz#84������#T�]��7B9i�E���z��F�JRs�y������XEI_"��J�&�Cry �����������%IC���Ty~���3ɧ[��� x ��5dsf����֢��g��t�۲f�\-�ރX+��6�VyW�+���e�7�G� ;}�7�gÛ�3��0�:J��~ڴDO�R.�7g�`o²�;'�`h�L!8�\x��_���#�� ���dW^�"��an��`�,�Y���ey�Q-�*e^:4��qvP�J�,����+[�x�����s�\{ U�'PG�DIb���<c10;5K$��̎j�.���������C�4���a(1_�H�%���Frߚ��$ސY.G�Б +hY5�sKbA<1\�`~�˱vϫ�[_�?���$�~��L�?�I��<u���ַ��"i��93u�5�v���H��=����{��C����'� ��^ʹvm����(�ۺI���Bv+�5X�W�Ҷ%ރԣ��dX#ŃB�@��Dz���d�����Sк72dl����R��H���j�a�r#ɿ�@�(���h�Z���{ ��F�����șC�Ȋ�L�ͼg�]���҂�WƱ�F u�jx#��҉|cݣ�8ZK�X��8h�~sQ�.��-�p�b�:��@g�{%:(�$D[�(��n��e��E�Y}�U B˼��C]T�M6��`�^�^ +*y�ݾ/۔�)OI�ޒ������$Vg�=atbJ�` |�<o�ȣ�*o���+YxC-a�-�<� ����H�V]���s�t����˾-������<5ٺ'���Y��-�7!1L{���>Q=#��\��~"֣rv� +���@]�NF�����G�O��#1yܚט����ڌ�������L�b���e��� +٬H�|��Dmx�e�LP�� 1;�Q����2fɧ���%�b���+��I[����%�;Q�&L�>� +=�8��9,D;T�T�/�� ��|b�Ȑ�{P���.DX���LRȟ�E"F���ZCQEmV8/��0�g��ԬRa�l�i$�����Lf#��k�t5Lx�D_! �_����\}��-?��Gb����ZY���#��9���q�̾ i�2�,Ф "��ʲ��q�R��� �/h�o}_`�.#�� Z��5Qs�}EJK�:��`Y�a"Vm��"� ��#��~'k�y���������JuoQ��*0d��|��.낵~#8�<�����Wn�2��E�noAd�w8X�j ��Ȃ�zx&�A}���w6i�z���S�/�L�t���JĜ�ߖ��>|�v���L֔��@�<�`����Ŝ�]���y[M���'�ԫ�Z�#�1n���7�t�>CF|���rVeڳ��omp��7s���8��3�8>J�Fa��4s��C�1`�}v� :�<�gM +�Q�Wd�����4��_���l��v�D�t�2�s�EL��K[����P$�L�3�ۢ��K����e��@JI�"����H�[��G@Z���@ V1�-��|hY'Y6�"ą�+W�#8n= h�}��xoǥ^e�AW9����$w��c(QQ�WW�[��ݭV��-�O�H��b8�k�wZ�Gd�o���[��M���V��#�lR�֚X=?W���i���M&�v- �M�M�R�Y�j����ƙ�4C�&�X�\3�k�@��u�F""{�Z+�(~���{'NwP�ħJG�ip�]�乘�mi3R�/�xݺڎ�1Qڣv����\F��w���"�}0&@�ET�l�������fή�&�%�W�DhQ��td�7[TH�DpX\H�a���,;�&�� �̻s�f3�~(,E��dJ"O�����Vl��ˉK*��%�����j-�"�r1���($(c<,����G[$p�F�+S<5�S�y��̛�<�$\��� +d3?lW��-���|ط�Tf����8i#�D�!;p�K꿟���@M�4=��rد�`�M�[�C>3�� +���5��}����==�MR�Ns�b��P�drCpk%�ˆ%~���1 ��sz=�p����ֽ��'��i��.����e@3گ���⭲����r?�I5�g�����j� +&���!RZ�y����E��ޖc�3�PeݼYx����[GY��Z��]Q|�(������T�\M���`�=H@��B�AJ0d�qGI����!iH�8�}%.1e,�ۥ������8<)�����$�D���l z�*D����I����%E��l��e�?��s߇{ +c����}֨���;����{<�ƫ�[ߠ����e�B���nc�����[{x.ov��ˇعm�5����v{�����9K��n�MZ���FE V�E���0��iL��%6ي6)sbbS�)Yo���JZ6pӥ*8p)��=&��j�B�Rx[oZo/Rq�_"��Xt��"�����N�)�����-�^@���DWR����+噀[܌R���j;���*���i�����<���gj�����x/��y��������$HDZ��R����P���W�-���;Q�rd)l� I6"C�������b���"� +sz���� �n�5������z� C�=��~P�;�״��\��%�[�g�˲0)�m�!�v�C�V��>��۴k�y�55tھ��r:m#��:��h�Ժ$����-�d��6N�,w$�kBe�7���=H�%$�� w��+�0�w@jo�b�?������?'_G��-�;��ɿ��/?�����s!���K~�yV��/R_!��敔O����V}Wȿ5o���&����C����*ߛ���s����M��>�#�u��8O����̦���~���۟i!a���}�����2�^V�-{c'�f��E�=�������~b�[��-��s�$�}Ӗ��_����7����7���y�)ݽ���J>x�av�O7�]�����w���ݪ(B��3��oi5L��}�+����?f�Aq��g(��Fˤ��V�6��t�Gq�YMR<�?��QW�[�T3Š��8U��Ϛ�AŽ���ؘ5K��& 4CmVT���l�&�ױ=kƎ�Yw�q�Q�v8Ѫ�C������z�0��;�)����Ɇp�4 �Um�8�:,��ڮQ ז�㽓�丰�(G�eh9�<Yc�C�hs��v�cړ�ןKQ�q��O��C�6I{8^Vkۏ��ZD�$#�c��#;��1Z�+S`���HC��^���c�h������d�S��Ɩ�"6�v�-��S@>�]I�����b?D +U�'X9s��.�(�6�9��� �'�J�>9T^�Q���/��h��r��O�� �+��'�n%/��|�Z�E��[N��t��`{��q�1&}���{��� aK7�рN�Ү�(���B�SȰf��N�@��+�&� ��h%ɱ^��X#�����_1����g��/��u��鋼��XY��+�ۥ��[v>��Ǯ x�=�!����l�"I�!��!-h�{����+��!2�|.�z���i�OgzŸ�����qO]�3��}���H��jD�?�������a5�S�O�Mn$�k�mP���}���u�)G< ����+�I'C*d��r�i��b�{G��|��ˀ!���ދI����A��L��s����}Z�������jI#j��`R�Ոg��6"�-i��?�f*B��k�� ��(�9��[V ۑxD8���^Ō'���d&��@��J�vd�54geT�ZT�b�'~�"P�@/ ��b��d���~nKR�5�5B�cYX� +����$�ݦ����џ+ie��J�\N�l*s�#��<v�C������%�T�=`�}�@0A^�iZ�-� �_��ٷa�Vܓ����U�]�ܷ�w1��;�C�v�4�0�vJ 0��]H儙��"���s�9�@��wB06�J=6J�3J�����I�W��u� �#n��S�����JWB��a�����+::�7h%q���Ԋ��J�{��� [g�B����-��$�ކ�c1v��J��MAom����~��Gdz��������D��������Y +Lki��D�I�L+i������c��=�,5�+���=�\�{o��8�����=�G���v��/p�A�S1� 4S;��w�y�:f���4�|-J��14�+�����VEO'�o[��. �O�~�0'/�$���W��<I��w$-�������U��ޡ*|J�ۀU�z͚�@p����d��S�-�T��48�P|��" ��� +�݁M^�}%KRc+�L�1`tuf���~�����m( � +��k&:�� +�_��`Q�%H��v[Y���z&u��ss¹ud��>!#�dtɤ�e�,���_)RO#�1Q�> �s_�N���n +�4n[�C�`��YB�q_�f$b��8W�ޑQ���jr<�Kl0^��a���{�왳�h+�ދ�qh ���^M�L�IV{N�sFR/����E���Ba���������F�fz叔��aQa��y���$�����g_��3&��A>��$I +8`�؏A'}�Y�D��gz�5�[�����Y��\ t&����SdY3�=�~.�8�)ij4�[�PUٲ`<�jb�KI=.�˻mƔ +�?2>.�P +�ZD��.�H�џ~K�����~�UB��#�S�r�8�/��'���R~��o��z����gc�]ʏEC;��>��P"����WoYS��|�G��H�ϥC���FQ�d�2��O�V2hq�e��J��Y�"BS�����.��O5�0��}����\B0��m��( �Ǫ�P!�S����T���J0�������O�w�OE[2[S�"f��4��H��� �`���u�ѭ2<w���:Z$��ئ��A�H���P�+ҟ�ʑm��q$%[�20��>�GVS+��W�/Ҿ�?�3.~ٗiS���y�7���� =xo��#��=����~>�y�9�����5z:�� >c����7���[���_����~��_|�����_}�˯��ۯ��g5����`��F&e�������~�/��o��/���ׯ��/����4�����W��&��=�o������/_����_����W��}O������_|�?��_|�}��7�|x6�g���_߲�?����!����?����������~��_}������������������7�-�n�{��ۯ��_��?���x��0��կ^��g{�����}��^����7��7�����w?��������{ÿ���o~�������Çh�⫟�3���_�9�/_�����������/��-�v����ͻ_��5y����O��?w�o�������Z�����wNd��A���fç��,QM�#��9�F�~���?������}���A�].��9ٌ� G��xo���|fK��s����nK +ˇW���U%( +{��w��R\%�||g�>���[�6��~��}<��FD�����Nd[\�=u��fw�����;��_�!�+Q�����?=4���`�q��7����o��_ ��v_�/����;��y|�s��W�ɯ�Ў�p�~9 +�gA{}|]o��5l����<MԂ������s��%H���E2�Yhk��,��fVX�Ƴ�+,�h�Ϛ��<�z������0�p��hT����U��+r�8Z� +����*���F���\3�Z,��N��"��/[9*D������_�O��It@7��D��g�릗��=�p�a��T����3�i��q 162�Ks�k42���+��gޝ�r�vo�ȊJ�.�Rb�p!��o#����R���t|#���t���8Nns����S@b6r���i%'�ę�9�b3�eѸEJ�� {>y|��zj������&�z�w��]�:g�İ�(d�98˙�m�Vj��F��PI���ߗ�_����ZW�z���NAw�B�]��c3���e�V�9FѸ��+�9��D�3�֣���rw�w#��sxF��%eXCn(U)�%��>p��͌�hn4.%��=�K;��,��H ��m�ٸ�8D)��`�Y.��O��-�����씽��*^kO��U��іخXf�}�dZK�g��)ߺ,�7 �8�-'y���KN2�0ו;�S�|��y�X�%��~s�� x��� �#��[/��,B������tA�Hn� ���뭗�̬[ +v���� ��� ������2C��qmU�����ye\�#a���M��5Y�s�^z��`j����*��[;�T���I.������Y���R��B����-[���Ϩ��6ڀ.�O�Y+�w�FK����=�f�p�I }z��<vL�O��Ǘ>�-%����^:4O��?S�_ڛǗ>�����I_ڛ�ޛE�皧�>��/�e���ҡy���vo6�/}�;_J�@�8�th�z_������}륋���ˠ���mХ�l�^����b�H� ��> ��#�:�<o�P�"R�����W%8?�}�-��d`o�wn�!��ť��J�>e)0]ܺ�5dF�ͭ����:@aE�Z!�����1L�ݐ�����Y>~A�Iٜ*&�]�O�|�ޏ�f������f��T4�9���x�I$��z�q�]e��ކl ��<���{$ ���^��肅v��� WN��O�̄٘�3?���\����(��.:�yD�i5�z.�ldF'I����G��t����]�~����O�n���������ר�Vm�+�ޱ�R�,�C*z�b>f+� �}Hԏ���i�0{]�0�&Z���'����d�ڛ�z�p�%�M���S�V⍁�N���@k4�Ve�L)�\��^�J\���B���~]��W���-_���4��[t���eU���|���:��>������ �O +�E�����z�l�I���p&Βϒ�!w51��}s/�;��0[H��ԐxA�T��iWR�� ?�c�]ظ�=�,F�d�~[YcEѼ5o(6��Rf %$�E��+dE��B<[Sʡ�j��1Nj�{y������^�7��������k���ز��X����� +9Ǵ����6�m|\����K��Ƿ���߲���UM>lS��%e +S-E"訽��u��bӿ�f +�ZP9�(©3\�U�߳^�����;��g����2�1,��Q���}9����Z��62�d��xU�[��h��_>esm���~\9�4E'm��cdxT;��>�������4��gЊ� <�ד��QIJ��z�ۚ����ױ�KvP6�>�7<+���l�Ӵ�U6n����#�{������Y9���Ec+U�� ���ԕ@��4���z��N�ՏJz��Z}��kW'�����u|v*�l�g�eԫ��u��z���T�>�S��.ݫ���m�2.����da�$ݶK��]z��R�������z�X�3ڣvFJ��r"�IId������Dl�4s�瓋���s����}�. �s�����|>ݮ܂�7��v']�EA:J�z�wW~c8���Wmn/u�+?��2!�6\y�*Pɲ\�S�2��E�Y�1u";��F��(��7G��M"���U��.�l[�����õ�RV Lw���b�z�ƕeY��v-��l4��D���;O5�B ��;5/�����ƈ�d�;��a����I�Y�)i"��'6���d�H<��'�eu�à'a3�ιě����-��x�n�c�a������)�i�6��3/�k�nމ]����P��x��[�5���<� ځ�'�9�O�r���[�]���exh��ݥ�s���V��i0��X�y�;����m�u�8��ݛ�e+�ݟ�68P��\��mi�?����?mT*����ԙ�1�1��[�hGɶ�Z��Q$ �@ѳq�h��C�б��9ז�D�ظ��`4�h���,�mj�a�a�7���Y��������3a,-�n��Rmz�::E��p�|��h<�'֜��j�Fz��x�gM+�Q�1��)į�u�sכ��G��+>es sV� �]@��v!vX��-vq�O�k{�����jtPO7>�-������>��>Z�e�U~E�,�H`JÞfD&�ϪV�W"�/��ot��MJ�A��Q�#���8��B�G��[LW� �Jh����}���Y.�&6X��4��]=��@�u�Qd�|N�{�˩OM�m�����GkZ��/w+?��\��P�U楼�ض��./L$tD�&E���V됍�]G��mIAђ"P�>�/��m��)Am8��4���,}^�ִ0�z䳻l��P��7�)�do�t���=��Ը�7�单���X� ���]����<7W�p��m]���͛�?X�h[���3_/}n�z�|r0�Κ>�v��������$���.�����L4���4(�x�X{J��|D�Īwu���[ʖ�M��(^un��Ԩ�\݇��@�Xu�U�!!S�rm��}�9އ��[�L�q4F9��O�_�0����wq���/��Eb?f3s������ȧ�[���՟bm��֭�Ȃy�`ל��X�����s �*���\�)���Nt�Q�:N�/t��M��N��lq�"���}d�(��DZ݂[�S6��9�v�R���z۲y��Cc������f�9S�"����v�I��K<�;��{�o�j�����y5n +���o�P�[)�yNW�E��H�#��F�gm�%p�m5/�=-����w�r�[�t����7Ǖ���),p�|R�l�U�m�$oA���Г�<UhM�?p����v��WD���q�}�����G�^������S���8��Z[�@i^���ټ�V��]\g�g%����^Kfs�vxo���f�����o��Ƕ-�{�f�f��>�7�QI������$Ѹ/�ܬ����^�yd���k{�'�mpn�����~�Z�h�VC��N��aq�Ns�hiq��_�O���XW�8B�|�fl��~��+�s�?O��Q���FeOO=�b!@fl'/��p�32d�$tz*>{,q��ǟ$�~�-�wRs;-?#hE�ڒ���yS�y�nL��l E��Gw=�Z���s`WQ�&P��p��H֑_���#�u4*����K�|� !��"rSc����O3��r.�J��f��|Q�� Wy���_��UW��P���t���"M��Si�+&`�1�_���CN�3�{��Ѥ�h�0��e����ԡY�RN�'{�9_�Au�eB�^u�`yz�����d�� +٢ո��/gu�mʢ����Z��X>{���X����}\,��.����XJ�2�sXp#ݓ��^Q D���kIƘ�e`vѳ�������mNw!Ø�ֺ,�U�S�����S��/���'�)�gٿ�Lz:}�))��o?��d4bf�=���� 12�%L��o=���N���������0��1}e-6�[�Dq$>�;���eSs�14�q�[�����Ru��D"����{�l��9|c +Ц ��RU���.�����%�[���������>�r�j���zF�'��U��L%��"���܂��c6�k&�h<fk>*�:�M)�/o� +�k�I�`�C�F# +���d��QjH�-�����^�#� ��5o���������Y�V����P��ѻH7���|=`�m).h����P�F�- �z��6J%�;}�s_&Pߧ�r�>E�C�d�'�������( �����3��h��7��3�@�f� UAxͷ�[#�}������Ȝ�ߟ-�T��f�v-B�� ���!Z�2}0�`�,�HE��o�pq�f�v�-�,�wے���Kt�L>Y�ش�U��=��h\S7�b��E��L�ݣ�<u@J�5��m:!Gvp�Xv|l=/�d���vt�/A���&�JP�yC^�����2� +(m����מ�F����� d_�Ɯ�-|m�H֥�2o���}���s�HB�Gc�������y����z��|�V$�#^�^���\ �G��K�xR&�f�C��} �#l��� ��� ����s�ݴ.�m����/#� +/K��ͻ��$�>%ǰg�Ϯ:� +U6�{��ݶ��{;y�l�/Tm 6K��`�8mԟ[ +��[��=�$�k9��w����4��M�;4U͆�b�K�P���r�~�װe�㞀"3.��Ao�6��8��������ҏ"� F^H��n��e������yM�^̢.��L�^Q��:mj&z�"�4.�c�JOA�t[̦�G��p��|4-2Dˢ1�Ȫ�\��ޝF>��jWͥ�6��;�V�9�mh�뚝����(����L�Ἢ�`�O+Y_��S�&]쉟��)7~�=t��&Pnh�[��k�d&�Ζ�n[J�Ʋw9)����4/`���mq�fx4���L6�h>�n�3d㺥�N�1�v�[Л)��}`FSMWo38��W)%��y���R��������{ +C|֮9<Qi��Ͷ��Z�����f�x����3��Q�Qq ]d��!�-�l���*Ծ�_r�Ŏ!���u^�aT���24��~�9\�"��d̏��N��n��%��C�x%���Z�ֲQI{�_�� R��-��Q�xt+�toZ&���%Blj +k��G�{.M� �nm}Ѽg�3��4jA���Ƌ|u-DL4*�����%�em�|p��7�-�S4^�'��T�@���<>��~���I.�\e��֏x���ڑ�6��C����T�Q���K�y߈���S�_~�R*1-y�W8�b�Wܓ�J��yQem�\)� 5�Ϯ-�ل6U_rk��c[[��3@]���'S+���m���6~�#> +�c6o�OZ�����2c ��%d��`6�l��N��~����t���hX�(~8�<V�� "uC}����tA�\jܥ+�*�F��b�췽iC����V-�N?c�5Pi�X�³{x�H��n��}�5S��;>�ƌ�����|�ʗT��� +D�Z��.��c?<�����x+�R����L�n��x��ۜ2�^mַr�u�j� |uP�� L��h���JsG���Z��7/���n +�V$ oㅯne�Рs��[�>pw[�D�MZW<� +' �!�)--?2Fh�GQ���E�$�� +�"b�q?��iU�Q��AAb��#��"�ߒ��%Zb4�lk�OV���&�B82i}�\u� +6�1k�J�� ���NS"V���y�.V��:՜�:�ج�ӏ��,���I�k&L���;|M��8 �@�U]ݕ+A2�<a���S�����j��8zLv���6?{Hgj�c�����h^��=���+0)TC҂kh٥�R���xif�"�䭌G`�ww�&�p.�� +U�=������sg�(�����E���7�h>`�*�2Ս��q+�9m9�t+����r�R���w�e���I�l�E�Hf��Y�ټ�QV������g��Yf5�1f�E�Y��GsBq�}���U�\pS+S����ov���=ϱn��Ģ��a W�g�������H�#�/�?�Ef���ʸf���lJ2�@%�d�k4�&1ą�F��|��9��Yݨ��Q`�؊Վ�ȸxx�帇�`�oᆇTQH��� ;��)-*��p�A���� ��L��)M27������|�u�����f,ڬ�V��L/�k7���X8���1E 1g��ʀoD`��&̽���l\�pnISIPv\9_��.T����,kÐ���%����,NN�����h�Ux���/�{�2|e����@����R��F���9r�E�:�`�@�CzǛ5�ig�-�Q��F����k�,^��`��]2��X1���^�h��������e��؏�l����y�{s�����W�n4܀J% +�U?.Db� �;ê[���w��^j5H4i>S��WF�co�of�Z���٘�l��� Bc��.��=@H�Y��o��-=r�$V"�Xn����"���(gM��w��yc *e#o�Z�N�����[�3Ѕb.H3�3��!�m��Y_��٠�Nc��W�w��@o`sA�XS�U��}*V�(�ò8����[�Bt�i��Z�Qj�Aͪ��l�l�>E��X��mb����j @�ž�%]��a�$R◭�X'v�6-���Ţ*ν�u�&q��J�s�L�����`�^�3N�����>oLO�zn/�V,E�0xcD��y.�W:0��ɀ�[gFΕ��gz��z�I�09ý��ꚽ����/�k�P�%W�_��Gq~���z��r����Xo^xb��{�q\O��BT�%Ŕ�U�`�ed�;�z�PZe@����3��m@�.w����P�Њj���Ոcg�O�Yf{����Ien��o �P_(r�~�Pa��h�f��]���8�º�ē1t���ҘP5N�\��`������ �����X���x i��j�1n +��Ҁ��^nSS�d�*V���d�N�&\<5�c�3�Usl��7� +��}1]��m�곹&�K)W��l�l�h8��g�@o(�ة;'CKM����h5k�愿�<���X��S�X'AW%�)��ͥD���A��A��h`��-�uj�e犯�o��V���R�}�G��}��"}���x�� ]}f�tMV���N`=��B�CU;$L�"�5� �armNuR4�QMns5��UCrb���ʛ(%��ѢO���5w�:/����Z�NlMȁF�B%[b�]B�A�1� +Ϳ\ձ\͵ZnN�KL{x�{�m��Cr�rc0��d�kF�X_���`_�WL�a)!�d�'����f� �[�\s�Xe�4�ޞ�rQC�w�>�Py!���ނl�t�jb �f���r��I�FV�4 W]ah�є�/,�-}�0v!2m���+��U?3�1R�V���פ:h��~��(,,���8J?Zt!�zIL�S�����w���y�t���Ԍ�oU������5���GWQ,�[�/vRAR^O5�k�dg�jq�Zmz���n ��p֮�R&9����D��q[kxd;�n�� +��[^S�Xd��q��[��ˎ'-R���)���ɉS;���TM? K�pvM���Mb��16iX��t㤚��yxrJ����B�c2� +�������0>���Yc�Mn�f�ɳv�!�h��I����)[����,T5�|��ᖮ`�?,7Hf�8vc�� cm�|�t[U��@o�����e��#�d�;�Xh��n�����z��1;/�Md�<����갔�8�;>�-6*��M�86��� +1�Z�&�x�����*j�8�sI5UCl�5g<1Hl ���&����qC��k��DH^n7ԍ/�� ��Z�����"MRI�MҿW&��^R_��)5���lA�VS��]#�i��n�r#O ��Aw�i�G.�)�u�kB3�������\�~ߨ˖"W�����|���Xȼ�T>�Y��W΄��?�X�<L�6rW���]��Zy�O�>[��J�jqU�&Fs�iNxf}�c�C&�y���\�|�;���𭥅Q�������hYg� �� �,�G;���ޚ<�F�����3����pf(�r�ԡ��Z͕��Ӈ@�#D����H�5W�U�7�V�)��&�UMC}|3\��TC�2e��'ո�U�:��BL�h�����&��z��f���w���B��n�8�����*�u2ZЩ�J.p_�������U5B�۰ƾf��&�3}z*1#�i���_��Az(�&:;g��7Ʒ���a�Llha#<�Y�h��:߆�1��/L�%\p����h�Ί3%�Ij��Gg����{D�lDZ~n�q]nj�� �d�5ߣ������\A��Y���pVʠ��}�`?@쥦�+�����a[?٣TE�P?c!�(��}�u�]O農�É�A���G浚�x6��i�e�+�՜b�zR�L@�� +R� Z�M/�TTb_�q��^[��mQ<��QҎX��l�d��!#�����Aѫ:ngɏ�f�-�3�%Ԃ���$�u��X��� W �ۨ���fc�o2x��fRXY5<9L8��3!��XZ�HX96E$+Hu�?ܪ���fcW�w�3���~^�",uys�f�� +uᓦo�n�٠�H��P-_;�Q��U?A/v��%�"�j�x��,:2�]4�7 8����Uȳ�����˂�,MlB�N|<Q��r(1�ղ���ӊ>�'q���g'�����h���k�abo�k:����W/�Һ@���R�F�e�3K�O�0� �>-\0UH�Z��0�E�yWMeCc��)9��EMr�H����8Z����+dS9BM��Ӛ���b:`0'��uM�Dg�~*6� ����V+"�c��1Z~D���~�S�\M�yj@��(��T&�;��e'��X����� �Q+�$9�LJY�4��S�g�?��B\�x��K�,�s&S �1��I����p����*����LůUS�8-u]斧�%���ü�Q��gGvX���DTf�ojD��]3���h§,��� +� ����}�@EGe�ֱf�:?�x�u��\�mF��I�ugܤ-�a�"+��qyk���ĝ��T��(z癒soh�,�hٲ/��n��*T���`�<�{:�j����`�č����cSM>�C��V$"na��-F;렛�# H�K��m��և\�m���k�zb�P�}=S?�¬�L���z2��vV���-�VU^-O#C�������,ţ10�x������P��]B��G��~f�� ֒а%��ؑ�{ؓa�z������Ԭ���� +�i�y�ʣ���hٜ�0ޒA����r�τœ���B�*l��G�jB� +k]E��D��|t�B�ˁm�j`�(���7̪U���FCۛ��k�Q��ࢎ���8a�ad>k�q��h'_��:$�x�Δ\p�D+^<b\�\���PM�N�B�mv����ʚ8R�vcK��@��a��*�y��IO�<k� ���Mp(����#k+W4��k'C�,��a��c�|FrR��4`�/R-l^�����[^W��r�ZLWU&ܬ�N�ϩ�O�T�@���h@ ("Y���q���/d��R��9�5!2_zB�T�H�k��L�-X��%�Z��[��++�ZbV��m���U�v�0h6����&]o���s"]%BKU-GR�^ì�nrH�d���%�`eC&eo��ؔs�S�� ��!(�%�i��)ZVH�5L��}eg/�S�V������k�O*�e�g_ué���J��o���3����\k�T�dEj@1� M���q�*�3�j�Dg������'�evM�� ��)wCA=p�*<>�c�2YM�F���U(6�`nY�q�ց���$7�+1�ֵڍ�39�R�t���Z:>w_����.Kr��|�(%lii�u`sM1O�l�����&S-�b�����IV%�z$���V�'���:,�擦[]�<<��>M\PK <���$9�J�J ��w5�c�a�:D���MiB���[(�b#�7+%��g��j�t�O�&ц�U!�a�N�w#i���T@�%�:\�d�.L��2�)Y�/h�%J��%�!ֲ��J5Ԕ#SP���U4��|C�My�Z�9NP�&K�}�y3T�U&�Q��<��b�S�Ek<ݙ����i��*�5���%��\�U��n�0|,�7�ln��5�x-�nD�����7��r���V)w��vի��sTC�1j0��8�h�%���tMU?�>�h^7+�0��;3jއ����P����"� �?��[v�aUX$�[o�I��}ZÇ=�ќ#4^�hq�U�/��S�N�#�� �ˊV�+}��1�َ����ߒ�o��XC�$V�<ֲ�4U kA�`5�H��y�)1Y�sG�UZך}�O����j��z����e�wV����2�Z���$B��}{FYU+��=�j� �?on��0 O7� 4��~�/���oP�D_�Y}�n��� �� >�nh.|�RH�~M���E��ȩ��5���t!��;�{��ܲO�]/G��$�`j0*�G��;9�P _=���2��5Ͱ�WMRͷ6w���'4˛wR��DR2�Ţ&L��튋~�_Z�����LhX��D,�����Q�5{�IxŊO�6vuX_��24�J�l!�)j�E�j���؋� Ϫ�z݁�8�P�v���j���V�Q�{M%Q�Ta��!eP3o4��f*����U����XUV/[�������cm�,��D]�q6�p̝r$�hV�Ҁ4��j�KV2�K���Ց�����X�kj=Rlj��>XR��5kfޯS��y��a +]!״����`i'e�Z������څ\s�B�t���m`U֔;�:[&�cw���c��ls#�N�֝�*�7J6[���������i����ׄ<� +�Nt|n��{{6X�!��e�)T�M�P�(�p��^���*{$D��S=9jm�.>���i�����@6o��- ��� D�:�TPKT}�&h�tR�O�|�TtՃ�`�����>���hK +rEH��b�FLm�0D�z�V�ֳ&�YTS��T��,x$��u5%-LnI���C��u" �ժ��Oi�7�lP�;ˬ;��h����mh�N�� +R�k5�,�B�`qfi��<ji-�Zfпm\RH�7����Q�躪��P�t���Z7��91bb��y�.4�u�������'�k}��ls����D@�٠�37F�,��hę�k�r��@L�TK��"�������s� �`.�\M5�;+���p���J�$��8�܆5���g����Z�2K��g�P ��+�Ad��͙m<��X�#�Q���B>v����z����ʗ]����< ��H���gs2�,��!�6��85p[���#�S�y�c8�aZ؉��|��������yL���x�;��� ��'��#�▦��[���e�ep����3kemY�z,)��t<L�(��$�p�]/VGn��l�;��;[�v5����Jk�ݽ�0�U�lz�I�ʒ��\̗"z)�:o��4Ϳ�Di�[���g{��m��D���%��N��ÚO��l����擄�`ve�Z��-�vo"ց���!�_n��G��Y��y�q���\{:�: h9� + ��G��ܛ-��]wR��Eg([F�C7J�fKrĽ2�舂�Q�t��]9�`�n'6ʿ�ܕH��Y� +���(��f9F�z��|#�"$ ��5����}o{�S��dy���.�r��4�GB�5MJ���>����z��NrP�6H����RA��Xi/b��Ĉ��еI�K�;Z)��n�lS�#2��g�ԣ֒��%x*6�vîL#>�օ�vHA�<�ِ�J���!a�Y�g>$�KH����L�m;({(���6�w���8�����n�xu�pu��ɉ�y0�8��w����O_��7���.����<���_��wg��{y���_]<\�ݞ���]��������-:)ݺ�������_���/?��?_<q�������[�������?�����뺟�������(�/J��_������<���ˇo��04<[��O�ۇ������c��G�.+������<l={� ��?��?>�8>�헟^����n��\�,O>2<���r��^^<|v���e��gw�L�4�We�ч�[����bDOEL>�����������#�n9/���O���x�:}�������L���s��!�m��_�~s����?�����}s��/�ߠ�+|`�w_<\=\<�bL�{ͧ�|u���g�l#��2���l�����d��;�������s��������3�����#[�=����wo�/.s��7W�k�Q}�����滻�W;��Te���/?�|u���|jf��|�k�'&`<��? ���yь�w����[;16�bh��Z�l�� x�6��<�4�s�O���wX�}�wY�'o~v����ߜ���������G���i�r�����ѧj<�~x����W����u��G�~s��������ɧ�`o�D/�?�^~����իח�/�� ��h����8�v���b��l����Ѕw�w����7��8�������F}��k�[�ˋ7���/�n_?��n/�/~��ͮ���?����|�QN/~�Q�x�H��O������ekx��7���/.��8�E��^�'K��u��=��I�a(Oۘ>�,�m=�������n�vq��8���/��8Sc����vx/�S�><S�`�a틹�ᔧ"�����|�>ƵO�ag~{�r�����W��9�'>L�����߆��G?<�i�<��k��@Y�v �I����[�L�����ww��J�����/1����z�>�%���q��k���G;�u��c�Y���Czڮ�O�勻����//�k��!�����W���ǃ��ϱ��s_�ۻr_n�|}����o�t� +��/��l/Y��"��������[kO�ly���٥�m�&�ĥ�A�dڏk> �W[{l�F�햫��Y�����W�����鲟5������5�s�*l�TO]l�ZO��ݓ�i��6�ik���o�oo/���������^�����[�^�w����|���ѻ���� �#��<�����n0ۧ��(���W���>�����}���w�w&ݜ�����탭���.���g��8|��l{����Ywl�w���f?�1moX��py}w��-��S{_mm��zDO^Hl/��>���zy*���N��WW�`��?�Jo���ן�2˾����~U���?�9N�9� +��[.O�������4�����h��������[�V9d��w:�����b��ZΝ_\��y�8�X�ʇύ���j�h��=��0�o}��_���z�/_^=\}�������zӽܾ��<��,��۫��Џ������N����xv���G�� ���<�f�f�|,��s�_����f�/ݷo����������ݓ����9�g>� w��O8s��3ۏ詟P?����#��?�g���ޞyv���G�����θpf���ų�l?�'/$�� 8�!�������Ĺ��� +w� c�a��Z�x���}x6%#?�헟�TЗ����R���{�咞e-�흵?��<���|��v�o{"߶�Ճ|;ȷ_��O[}���۞H���v�n;J����v�n�$���A�m-�ڰї�����z�?�(�a������&�z��Mt�D�M�ǫ\^�����_��3��������u��?퀯k��'9xys�X��~դ��}y�����+Q[��w������ᑤϬ����P�e�1��L<x���ۖ��K��c���]*�����I�]��I���@?Ա�ץ� +�<U��#ߗ,�]�����ᕒ/Ɠ� +���O*��s��n��{]L�?�yD8?sQ�'8��^�'�����|�~��|���'����뽇�{�����#@�f x������#��v �I䑵k�4km/վ���(ݟ��{��}юY��<��[eŧ�9ğ�5�C�y=-���!�|�]�>ğ�9���h�}���x�9b��r��s~B��C��I;U1�'/^^�z�f�;M�E0�8��.v!}�S���;|h������a��]_}��C���J�n=��kOw�q_����v���z�i��O��ں���7����ۆ��tp�\p��wp��nud��p��}������'尿���Ϋ��>��������˗��ݟ�>�=8螒��p��Q��֞����|%��dž�v�_W7o�5��9��G��|~E{��G��|.&���I�������w��̿��L^��D��?�+:�{�rz�Һ��#�����U�ɗ��~;8sΜ�3�Í���98sΜ�1Vu݈3G=;���9��=8sΜ�3g.$� ����Z��+_�3`]SϹ4�3K�ƞ��ھ$��s<Q�+���ˇ뫇?�_=�M�?��,��ؾġ,�C�>��ۯ�O�,����j۾�Ϯ�ծ��S?B����z�l�S8B���(��¡�ճ�j��7�/�~8\����NI��Oϱp�3L�ߺ��!��c����}��m�|���W�^_>`�/_�E@l�T��R��#�9֒���'e#���ۗE}c�,· ��Ϻ��'nĹ��l[>�����+}��s'.m=�핫��[����|s���>��Wg{}�c�S���P�����W���?�������������R�\ +���S�������W�q�;�&�^�p���/ίw�}"�����ؗ>4��t��*_��������{sy{��v�x��bk'˾(���غ endstream endobj 363 0 obj <</Length 52794>>stream +}s�µ���߾��ꩧ%��}�p�p�ӻ�(��?_]�T�w>�Z}L��S9��������7�<�mx�=���������LJ?B�ơ���!�JR��G�$�����q9�C5�Ǔ��7�_��.[c]��:0{����=�'����N;�a��yn(�����1h;�̾`жѓG�M'����Bw�#��Ҷo��G0�n�-��58h�B����Tك x����;X�;��`��'�2+�cZ�[+�+p����dۺ���\���8��3�`���x0�nl��f��gc�6�b�:O��_ww/��?��H<{m>ǚ;ej?��gy���ޡ�ơ���x�6�(�?�P.� ����z!��}]�Z� �߿�>����c!�}w~q�����m����ۻ���������}�t; jgA���ԯ����������S��N��&���4_��R�I��=Q#��~�/�ݗ�����O|��x���;�t�w>��~�f���p����l!F�._{��|�������c7=����e~���m�7���/.w�o��ɹ��.�ty]�����yワ7�ó)�����{�_W7ov��?������.���Z��"s��p�?�o�Sɮ���XZ���ڻ��W������=F9���-��/��U�'� ��������Ay:(O�t�=��W{z��g��~���{��U��Kc�_=|ss�C�}��:ן�|��z����c�� �g ��Z���� +P�@���#X�v �c��[�'ہ�'�"�K�o��=����p�~�ct�q=�t{y}8A��@�� �=k�O��qU.�|я~�ϒ�x��?�x���}!�mK����|��{��W h?�}��ts^�ں��>��ߔW_?�?鷻\��N�oӯJ�v����<��?�-x}w��-6�S�9O�C�UO�l������Q'[�%O����}&�ɳ)��r�Z��yB�_*<�P%��ٟ�a�� �}{�fh�m�D�}a���LO]�v��B��?��۫��__�?;��S��Oe�ο�~���鏷��p���S6{��{s{��*ώ�N������n�9���g7�Sn�}d� +�!������W��v�t��yzN�3�f�&2��p��1q����B4ާ��?:��9�~�p_xuOa�?F�� +��}�[�}��ۗ�*+�(_������ V�9�g�__ݶ8��wl#ʟ����Ww�G?����W�<��Qw�i����������?�?�g����q<��������K<����O���cN�� �7G�5�R�*��pq��T��D�eW�pԝvn���i?���.�����ĥ�ޅ�r>M�����'�;��<wҟf���ûS;/O�1��O���tǾ+?�x������}7t�P�Ӕ��n���E�b>u>���1�����i�bJ=�q�19BCJ|���e4B@�\<�����p�ɋ�W�ĹS��>cv��1o��6����}�?�1��=*�9�L&?�ЊPB��T(ݩ˱�pKS(+=�J*��J���;��a~�w�_���Wʄa��x��t��S�c�w��b8^uc�R�T��0#�?�L,�?��+�TH�lW[H)��Z�]i��[;ُa� �>�X�����z�P�t��rV(��,o������ �&�B��p����053p�e���z��)Lj��>��VBz<����^��p����X7<rR&�w~,�-�6���\(?<&<Uا��,�X�� ��Σ�e�s�erR�\��|G��ɏ<�eR�Z(�^ ������$Ȧ�C��)l��P\�4���B(;`�,�pZ�R��pq�z���px�'�B(sR>��C��U +�u�2��+�(���\�ً��29erI)c�~H�}*�_���5_���)�zpH\yr�I�hߕe�+Y�5�\�,l�aBW�G��A٪�����U a^��=ʼn+�+3P�3dM��;�A�6�|Y���N��1`'��y�4�#b�kdPto,C��vAf��\�g�e)l���1�2�L7�V���,c� +�w��#*C���ۻ<6�e��V��������]x��!F�č��Z��L�ܑ#��\�\�V$�ӵ/�L�F��<P̕1��\(e4��q�|J���ڀ�-��ӃLFa[R�(��)�]��s���c�K;#y�|��d��t$��y�t��TN�AB)��\ +���rX�c�#'!�Xa�A�:�0(����:m=���l� +���~�2�~��F~q�q~�s����^a�� ^���^:�m_d�R�#y��.����l�3�����2�$!6���)�o �C:����z�=T��<�e���j�pN��0Q�'��1��?�\!C�:�I�%/�5rcw]4�a� -���%�yʻ�S�".Ti��8P��K������8�0��}���j|����ա���R@$���ԣ�B��9��̑����Y����.qU�\d�hy��nD�K������ː�Ӂ�)�f�c��2�E[Z�T+�k��]��lr�=�eNB/�ɪ�<iW����\RiZ�n��a�����j� �ґl�syHXN��B� +Lؕ +J�M +J�� +e1'ppC�{e�L`9ܩu@� ��0����Dkهw(";�j�J��G|�9�E�pR�Ќ�jӌ�f}�2X�`��4Q�8�PlF���奐B�� +{Aֳ��d9뜜+e^��~ZV�����B�5&����"��s�5�N�-���ʂ�p$����7���q��)^t~=c��8�(�@-�|?���(�=2w�Eƣ#�-(E1�W�2�扇;L��2_��z!��N{=3ϛBH����h�"r8�5d��b�^�S"��������1�S�,����aBtQBU������sC��'*�EXAñ +#A&'�"I�Nъ)����*m��wl�����$�����c9�1�P3ȬPk`�E����c+ƊJDz�B��� @-!p�Q��gJ�2ܪ<�F�҈s v�PL���1=8Z~~�!��N��C��C/ +I� ��'�NdPj�yP~ �(���3���sHѥ<6͠l^&m����؏d8��j��܃U/W�X����I�V�d��w\���4�=�/��_r�Ҵ����?},�[��,����B�k܅Lu/�+!s���9�^pB.KZ��p�NL����L��?63rօ���2�*\I^�퇞]FR>�}N�5��#��u98�������|'���m�=���'"�?]��Ǟ¦�Q��1��Qvzʎ'����6�m�i-$�E_�_F�8 rJQ�ۘ_l��k8]���疆�����,JCE#v��~�?S����@��řV���Glj�l0[�w��( �:�7E��6K���c'½��Ҧ�\1� ) +o;h�E�tN���ޠ����zP(C�0���oJ��(�.�G�Yz[�n +'f��i�Q�}a����e;��2n��o���At�����#��2�P3�$�@c~�+��3:|�ܮ�DΜ!7D�N�cs��f�����8�횡х��T��+�K�S�����: �Jg���T��((�{NR��wfHܞ���tS� �9��X��Z�ʃ���˵�6w�]�y�#�6���Ѿq8�;F=�3��60�[V��p� ��t�,��P�q:<Q���)��/��(>.�������Y�-�2N5O�É&Ћ�'�J¹����)�y�}s�� +yR��ڼ�34R*� �6O~�y �7E#�on� ��h�B]�X�~�Q1w>�mOqر�e�78+_��w7$�H�{��a�@[��GE.;q����fwjl�����2E`�����vaw:���������r�.����^��c5c�Y�8��_��g��#c"|<b)��X�u���b��VH��')j�3/��G7��˺��ʾ�2wE�#��w���ԧ܃���q���g<>CY²��?�$��P!�^ t�6�F��T��Du9�@�Iͅ;�w�[+�yq�ⱳ�|8��Gk��c��js��*� �<�Xo�ޙ/��@�Xx~\���o���z�ԦT�4XсA_,a��B�\��;%zY���(\���7��ͳM��S�l��{�����U�����X��.��v?E9`��$�==L��q���u�0���2�J�����o���-,<�J� y����pdV���Hf����d+��N�j̭:�����ڝ��:�y�ᓂ.�W,JB@�!����ԝxLȡxFA�"����������f1�wr�:~��C����{�!�Q���d��M�(�;�bF��k$���B����� �H��eC�]B�%����&q�yjQ|'�Y=���T��P7���(���r4y�CR���H/�Ws���b�$nlj�/��!3�,?T:%_�����P'ﬢ+e�,#0��:��b�r��Kʯ]�KY���UH�V�p^o��2*q�B�wt�(�\SOiᡁ,Q��rN�ttYy�=����.9�l#_.����M1�emCDjS�j�����,�$Hs�Ca�d��8�6mޱn��E-�U�m�j�#_� Ӆ�����8�}�>pȦ ឋw��a*+Ё��� ����Hm��Hx��n\<��ƾd/�g�BC���B���:8����������HU�ȉ�2`@y��X}�8 +Ց2���(Y� �V8h�E�=���Ã������?:W��b��� fA�T�q*8ŴZ-=���� }d�@�B�A��^�x�%���U)4%� +w��z��Sч�c�&*�������w�4� �>9�8qӯ�̐�rfֳ���,��y#� � ?�t,��6�f�(B��9��(�#���T�8ȱM��O ��k\Ӂ�F rg&;NV��N]�4@W�j�E����n�}{��|�&xw 7� +�� �S�h)]��"�4 [A`�j���@��F�2F�B�#u�4�MmH����/�6��z�}�`G���E�Il�b�| +�b���$��l�M(���ˠ��GB����*HJ�L�Q8Xh�-���݁�U��L|������Ĺz +-X�tH�� ^[��<����Ӥ�r�o� <�b�9�����QS؎�akSW�i�{�ے����ц �*̽�_0,��҉Q�>�VR�л�8!����#���u +����� Ȼ6o��8Zǭס� �WG�&O���UCG��b��������e�������U�w�YY���Ma�AU�B�`����ˉ?��S T�blI͊��H'S����������"| ~�sq���#-l؈�@��q���ӂ�F��,�XlA�E���>�"����)0A��<M���)S�HG��~3P��0E6a���:�|O�ٷN2w�b!�k�Zы��p�%�aS��ax_��|�E#$�:?�3y�!a�l#�<�M�88��/^TC���-e:m�0���g��h�Tz|���5i���)�<qxG��i4�G�#T�� x����̈兵����3�<���� kѨ�^v��R$�H�� S���f��Le]^"��>����4�� q���J�!H��q+�Y�y�2����,P0@]�w����&H��AL0 +�+�҃-�rn�"��{!g����o,0�1$9� \;��C���B\��5Ȟ��Y��y~�#���`��挻be`�9����vĽ�bGK�Y1՜�^l`�ŨDE����!���q/#"ZD� +p��]�HX@3V��������I�����@g�z��!��K����~��;b�<��*�B�`����q5�xv�#T��}L=L�H��,8�GW*�h��E6�MV8�R���%�b��X�h@�$.@��Y �B�>+�r��h;�m������)�ecB�d�&�' VLjc'�ޖ5�lJ��>I�p�J�*�;���Qf�"p~����\��z�rꎤ+� ��+��KP�h���>7�H�B���`^���d���!ǡm���:�j���D�lPş,Ӿj�KD������,�32ϲIKS�%���JЅ�T�v�\'���.Щ����)*tG�L1h�F!�9C�s��0,|!�E��AU`�&�A%&X���0�#�"�8C[��.�J�_��e������}�L����t�z*JZ��TE!�@_0�S\Zaz��\�~V����!f}����C^N���D�,�)�9B8c=�>b����ߎYSSr�˦�إ�G���NH=?�S��6`�V0�i V������Q�� +�@��!���빣�{Fɳ�^�g�P:1a�W����Ѯ9^��;�� + +U�1�i�H\���N3�/}��B�� 8�g=`�GQV=�8�����CG�IlBb��!7��R==F:���x*H�v�=8���8��-����D5ꎆ�3pcP}��v$�"3@뭈h�e��.K��@)�ע&r� D &IKQP����7����%�l K�(��6E=s���"A�� +����&(�*ւ�^��f˹��]�8'G|{75�l�����4��y^��r��P��� K�2�'w�Vش��%zm n���.�!�zB ��1>����T$��ɰ ��e�hĤ��jK4���u��4�܆���GT����؎�u�����:(%�����#&1j���r�ޞֲD�a�Dia�t����� +a�([��yq�PFY�H7�ug�=�=��/F��%����f^юYf�`*�,� +���f����� +�6��-�r/V���#�:�I-���%�XH������ +K8� +��D\����G��8\�Nbϓ�0���p&]T6#;z�� _���� /�gZ�e�į��M?�j�p��7G���#�?�mY�a�� �-�xl�Ȏ�0�vGk���������k����H\xA][Q�� (Tf��K+�� +г���1��P:+���,�oŝ���;�6?�XP` +��p�[j�L�;s�� +ݲ � (��,`G�k���A,�zٕD�N������|e�_��!j�X���F���3����K��4S���u|z���}ȹ%��:�]�� +m�u�s#]��$����m���#�aWq��цyLB]m�;(,tr��vp��];�5`��C�@�*��W�}��1γW�H�6�F+?����/��s2�)�����M�2���M�����I:���%��I7V���&��$���1-�P +~�c����{��F:�zMt�G�R�'?��a�L�M����@Y'�̳~V1GK���h�]���W6d�� �R5���|�]7�0��� +��^%�,a�VN��]����6��հ0*���Y��X0��pvQ�,K���h��.uڹBGa�E�̲ؔ����Xfr�R=q��PB0� !����UŖeI��~4������O�+����&�d4Sv,O�\6��-8��H��ׁ/<��p�182�4<�G�c�V%���n��0Gå�OA%�<@� V�����34���R���L��3)=��K��=*� +)٫e{F�"v +��G0t�<� +� 0�RB��쨂��朜M�2�iFҠ�H� �LcѦR��(��d���:��iv#.͟Jbi��;U�1��݊wp��|�9�II�$͜k���I��q٦�œ;��/� +g,]9P��'KP�Q�<��'��6�!5���5��9j����� � +���|�%����̈́��<��?������V�r�qt�Y(���\�r^3)@�DN��7����WX)B���?�$�*`Os�>TX��X+����&��u=�(V�O�a$Hc�O%Y���ň�:H���1�v߷u� 0BP���� +k���BE�@�Y +����J�&�(H!2EPZ9q��̀�p�I�*�z\Z��S@��+v�|�0f�*e����1��EFX4���UOk^�O���6||�уw�2��A��F;��`��U��F'&J�jz˞�$���82�C��Mp���L������-�EG�[CH��gk�l�%|���=�c��&�`/������lpY�-�mi�f]���\����o�O���at��*�P;Κ��+�L|S�4$q���c��� _=lsRG9��h�(b��'�y�k �GF��k3Z���8{�>��8[U���u슀���x�קP�H��HkhIA��yў��,-��ݐrn�� �#�S��-������%E�gg/�S������"�E����G����g�SA�zb +�D�K�=d���?�^8VLb���;�x2'����Y�����u<�س�f}�>p�������)��G켓�i'����9�A�n9g�3Z?�j[ߵ��'�6|��E�yt"�f��l���P���z`K����=��^~K���$��d��b�4m�lz�+��;��)�4��S��� �-iT��/G?���?������O����L%R���r����~ssu{�p�����__�*�V��o/��yTĹ�Ĺ�iR���J�/�p��;,?A�� +��,_=Y�/`!����S7��I9tZI�6}泯�|��/�(F������W������3b�\s[�;���2)�ꊸ�O��X��_�p:ڏ�v�G�w>�P"N��.�E>eP���gh���=��oy6ÓP�H>�:nP{��,��E�|�E{X�E�~&z�g����uO�;`����s@�:��oyVB3��^�&e~z�2����WN�YNfs�� +�iǜ:�����mO�|ԃ0�ܣmsm�Hr�m~�p��AjO�#�o{�贾̕<�L�ؽ��x\m��Q�W6{�ȤX��l�.�7I��yZ�$��I���D���u��A*� +�.�/As��x�|�d�'NV9Y��ɋ�_k8����њ�7l�5�8��� � �#C��zq4ۥu�N/o�ª���E;�3�ҥt��e�y�&������/ +_�΅P���̹�C�9��sO���n����}�i�������|yo���������}y��-n�|��m�W�:��������W�������z��Ͼ��������[����7W/墉���?��]\�~}��ˋ���_/��ng��55Q9(X���b��H�H�ڒ�6?Z�ͤ�ʋ���4H�"[=i��� JxqDJ�*�M��fS��m ��'Ϳ�ykqj�W���a9go��Q���:�I�$� +$ 8�"6E�CH���-����>M�;��[��fM��e� ��>��6=�o}6��������9v���? +�I���w?YN�-���m��Ȯ�l�=��~��fQ5����x-��'9�|�A�CU j��\Lu-7k��y��#?j�q��vN��Sw�Z|�����ʺ&��[Ї�?l{�l���;F�>�X?L~,l2�wMe_�d��f�+�� '��m��EԒSTέoJk��l����<T-�r3)m���}muj�F� +���>>x�7[S�c +��o�`-�0 ��gk�6��Ë��4v�1�ڪ��R�\�L��y���"V�ؐN&�j%�m��*���ӓT��t��W��ب�����c9��ţ���KȰ���,��h��*� �����dR���HT?�0}L:�#��� �r�"�{C��yb�F@�u@0��A+�!4B�8<:I9�`AZ? N%��H�2�����,q�<dHQ���5t�^r��AV +l!˱i����'��\�.!�1D���zrֆ(�Z�����#�D����b:��'��$Y�����ˮ:Vo����g�m�e���� +�Gm�p���H`eNJ +���0N0& +?�R{��@z���dA�z���(\�����{M"�e�����']!x+J���,<�O1G���>86n���Za���oο������e�[���s�N?���>2�̟zv��ߝ?\|���._��۳�c��>��Ӌ�77�{8G����NØX�Naj7D8�R{�5nwz�����ѴMW@�^�R�Gv��1-9D#��e��^�"t���bB1\V��h�0�H�P5x ��C�����T��(L$�g(�s� X�5y�&�K�| +,ώ:��\r����4�C��H�4�aaR���D�� ���B%�H@`N���{�"0i��}Q�|Ū�Ho&� YZ�_@6R�f<�!�Y�@��:�{-��'�F�ўih�&H�J4[�!�,a��"���(I�M�d[ZYt�ۢ�| ���L,t�H���Iq.���7&���^wQ��_6?Ij�I��(a�C"�指M�|�@I*��B�(��m?HL�"$�E��%/��`Y�S*�1�L��i�=�-�Iie�td�"��\�a���q�0�1$M�dE�"$��$�`�8�'`�N�*�4i�p������y{Sa���`o9b�'�&P�p7^��iD�KL,+���.I�C�H�<[ 0�� +�O"+�sJ�,�%��=:'�p�1�� +�MO�(ՠ'�a���u��MG�*^�#I��R*i(,�6h�D�%�K�(\*ݱY�x�ڂ�$��H�16��n8.��p&%�J�$��=Q�u"�Wl^DMh���^�����7�8f�f�t�Y�'x���F���g9Z�W�;�KyO�ETHѪ^�c�YOc9! `������,�Z�!�4ʽ��*�Q���λ�$孓c�,��j���;�af���(�ǫ��Lf�cE��+�S) +��7#�/I�S��F3;��+c��3"P��K���π�άl0rz9g���� ��74�$��7'���T.J5�N�YJ�4�Y�i�-s����(�}���,j�ך��,��٫\rA�`vr���U�T�bk0�Ӭ&T�cm�w`F�"����V�1��=���r|��(��X#�ڱ�d�ˤ˅��hu������]b�x2�w +�f�+��IE�i}�IJ}�Ԟ�P�z&<��Yk�u��0�Ie�E~��&@��"@�#˧��TJ��Α ťg9��xɱ#J�{��e]0a�����C����^L�½l]p�"j����x*��;�ҹH�) +7�"r�S=�E9 Gft<�6�J��@�xʊ�E�դ5�����mNR��.�xVT���{�,�N5 +�-�'y��%��V�V��p�"�6�@Ĥr{8�R��:�"��Y���D9��p��iO�f���xϳ��&w�� UDqZj�粞 +Ư,�4J'�Z�x�u*��7fa``���%;�Y��QUrL�wA|㜂�_]Zd�o�p�cޙs�=��p��e�8�ۊi&�H�(�&�� 8sX��S�g)�p���buVK��X ��X���B�����=��eF��1��7�]�Č��w����F�D�/,%�_�c$E��(�����gP�r�K�+���Q��v1�z���b� )�#�9Q^H��5��y/�ڞwfb +��B�m`Ah|���j\;��y߬7���8�Q����,��{'�[BV��������P��N͚�J!��X� * C�,Zs�v�$d�6��A�5U���r�ő�(�2O��_n(�GJ�#adA\�w�*�r=��|�E5�����NӍZ�>�<�yΣ���O�� +�(��<Q���各�Q�eaϳ>)�~��C��b*��9��,���$��2��]7��Ԥ%͂Zg��,T�ԇ�����f憖wZ�\ky��Eg��c���R# �����g9��A���َ��aމ~����9bI�G���'�� ���p�� `�UQ*�9�j���YKNr����*�3i:05[��^C�IS���"�<("c�>˝�C���{Z�=�v���rg�^˷h�'�6f��T��n���6����*�I#�Po��R���E�2���z�J���O_S�_�:}Y�_ �K�C��<�S�2��Zl7�F�A"��l��:��nt�vJ-#_�p���$�^o���)3���&{��M;�_ỷ�U�cez�z!r��K��gY~���,�6�;2#DK��%� +3����Q�� +�{�� ~���_)܈��N�rlЫ��83l.Q��V�D85Փ�jc̫�dc,T`��! �/�fP�Gp9�+���H~(J��j�<�����0��������I�)d�Q�V�� +^ʃPw��p�K��c^�g��Kp�;�҅�a��7J`�&���ճ�\Iq쵢�0�䉡�}����5��y��>l��{SX�jC�² +��)N/)=�T�5}�TQ���#�$j)�b�����:,"->�Q��&_���-�k�Z��b�r�C��bY�h�7G�ϒ�ً�����9q͋G�y_2b���'�������f���j �w^��\{Ng�9�%_��u� S?H�{:�u5X{�z0+��E���B�4�ٯ(���Eo�,rb�X-[�7��3��vN��C?]�0M���eCd�o�>�+����KI�,J�XkPj�&��-��8�^�Ztj(�7��/�Mw=��P��5K�)������R�u��^K��vow�5֥'?̂N� �����I$n�U�<��R�L�gѳ1bIV�<�~-b�⼷;�q���������"?>��b�[��-��*~��:�/ɐ���������}}�~����7����W�������I�M���U%�m��3�'���h�sz��>w,�������������D�ߊ���)a�r�+$���XU�O&�zG��� ��l�ޛ�����7��0!Ұ�7o�4?o8�a��Ұ�7o�4?o8���j�����?o8�a7-^��i͍�7��+j�nZ���~���V{�:�۴l����x�� ��ͺ\���~=��}�PW�8����/m��x��(%�������֟������� ��z�f������~4<&��sPn�J���o����A�$�@�u[$堯J�2!��b�7���i�.�J���͟C�^��J�Rg��7i���^�)�qȳG-B_)1���tlp<l��s�����Zh e!�az�H�4-Q��v�o���V&P:��8 ^&�����sRjB��Օdk�z�x�e�� �{��KF�b}�g��H%$� �7� ��t<�1�P���Wi��4�QHCR~��M_e��!�o��r8'@��Z����.i�W��S��E��1Q)�7�!����`0m�)8) +Q_�Ĝ�r��OKY��şh���/H�7�$'��M����F�s����6�W%��$3�˥@d 8�h����4�+�U�&�!���(��@��-+I�"!�{�0�f:��# jp%UΏ~�o`@kr!w�N\���`+ CCd ����$U�^F��lz��QW��rY'�"U6j�W]�iR�n��NҨ�ˢ2�Y[S���E� YH+MP��W��_3�/ܩ$�BGVj�K�2,*L������L"��m�^�A�%-�$}U���5m,���w�h��;���mx��r$�!ΥCC��L���P���Gs�ی���U���Oz��&{kM�p\�Z��L��X�wv~�&�����O+F�����v������3ԃ���V"�O ֓�u<@� �E��8���>��?��$j�#}C��7�Q��垽,aL~"�L���]jWx9�tل��W?.(i�R�Ҽ�crOH���| �5vm�I�7�CR�>(�B07$�>~��N�X��#�5�X�#J���&.<1I\� ��(��) *$�* �a1Q����N|� �J)H���5()Tq).b��l�-N��)��d�5N$cU��f�8����(�pä��B��� +��S�v�1';�u�褔Oz]�����lYt���G�]%���b������ �]���oP��)�$��$FJA��Y>���$_�,&�r_%$�\oR��\?f$}U�ݜ=�ݢ-/C�գ-�Ը��?2�����.j +aR��Έ�g5��(wEd��Y �*9�Ū�����8U�#)N;N�F��|�O���uyƜ��s�������5;" +�f���x���)N\;�\�I��\�4��Q�����|9�a�"n�v���u����$4�K���n&SOf˧W���ܕ�\{ޡ2��(���+����Hu`c?��'�����'I���iI�Tj�zx�1=���GG;�� ـ�����(�t&םӞ�Q�5��n�}���P"��3-"������Vßk/g����fJZ�����*N��ܿ����vu�����Ԅ�MG�ʈB��W���n(����C'�N/�#)�(��T��0��c�1�1�(��}��ɕWb�f%���i�0��Gn�3~��B����\�3�I<�[�G5?�q5$�왉��Mk��2�����G�S6K��.`��?+�=��v=��>NBI�YF&_t��q�,���F�}N�$<~@��$m�@�8��%�%+�xAjΤ��氝5H;w&�E`��a*�6�Q����Ϥ�d��H�)!QG/u���{���b3�L>��m����uH9|rMkRy"5�2��0�b��K��킉�1[T����*l�M�V��9K��2\���>m.��=���bA��iR?̦�%�zz%VI$�i.���r{vrAfUԇ��6#�� +��1�Y�3ށ�k�+"=<�宋�gŎ%?MvӞ9�03{vjI͜L�:w��4����BԾ�r�q!"� E��Ԍ��&&�Q<���$Nrlq����>��=R�3�z�6?Sz��{���c��%;�c��E=��4��X�1Qn3$��cP�:?���(�9���PIv +?�����-�P�I ����2�q�!��T�2 1���J�q2��)4cnv54�Q�&{j"��MD ������Ӗ.RPjh�t�B��f��Y�2*1#�u��sY'�"3Q�\T���n/�e��F�Efp�i��`@�|�"3f�����(w�s ��B�;�A��m�-�b#��$���sR����I��ґ�A�.�:z)'N�3�44���h��F�:ԓ\D��Q9����IsIbBW�ٓ��1�"CH5�40�o�� ���.��F�5�~R ͘����K�I�աN�9Hi�x���� RLQg[!Q=6Re�<,�c ���~�:m52m�����eBBXQjd�!Zd&��:��b��sv�F ��\g��vHr�t�� R��D͘�C��D�T�|r�H>7[&H����Ob_#.I� +#ٖa�t��Hek�I��5� ���ih&)��644Ӑ��L%��I��c �$�u��_�b@�Z�Է��\���f�^���{9�T7�{ru�S�dx��h�3����fʙ,��Wm#"�!������b�hH�Gm�W�$S�%M;�&���Sî˄y-b$��N���=����lG������hOl��F�l���i���� ��N�z���8��ξ�="�i�N%�y�<����/�&���M�2�hC�5J�7���.�R5��R0a��ˢP��8��*��}�O�j�8����ԕn���r*z[,��T��^WD��z����I�v���FWe��`�b�.���8�@�4C��d��vkTC�C8,�jTR���� T�/ؑ��LΤ��p�p3��UI:oL�/~P������I��M�A��Q�A�%Ica� ������3���}$DN$3�L�O���mk������USb�� p�C�:�l`C�7S��I�"���{;/[b�>ꂨ~:�>D;~k`ݤ[��ڳ�6ZR�Q�8q��欃h��E���W>��B�����m�(�>�˱�*5��T��ގ��7g�:�8.�l��lT��v�jD��{��D���n��|���! +�%�W���ŇA��B��\k���i&��x����˳"J��H�s>6���Ժ�+��М�OSd��8;-;�9:����QWiv63��L�h_�2.��_��jBO%v�N�M�3���f67x��s6�O��F�u�N +)�S�����7��v�X���mʹ��7�0E��y���M�g���=WD�>WQrMH�#��d#U�E\�Y�Kn՜��˻�5F,���oF��e�aVC���O�fGLĺs��m/�&B?ۄA��f�j�t�li��Z�~���i�%���y����ӌ&HMP�N`&�Fy����A�r�RZ�jD�֢��� fY�� +t�}b��SYH�x����؋^#�p0�rڗb\f�����Jh��X��Rك�24@%���h��6#(5@%1hN���?�-��v���ZIfPS�/�^���a.�HC�3���Z����Sf哤*QR�_ȍ�����ϩ���P�I��Υ���2�k�ܠ<<�&�~5L���鷽'ǐu������Q�٬ ��[�_:�[�D��I��J�-VW\�u}'�������Ҵ�LckI�q�ј/i�Zâ�j��0cy���4���{��Up]�f��T֝^�vK��(%)� �ȝ�W�-�H�\U���N�D�:��j$T���AV�r�����%3[C=��]���V�/9�3q�$YqE�Q����]���)���:�I+�NgJ����iI��j�z�%�7�J?9;�?����ϤГ�M�Й��u��'tRP��e �4J��.� =-��M�5r쀮nf:I��2gs����z^����?7s��c���ʠɡ1�Ĩ���84*��Mc��}�Q���-a�ӻa9�]�W�u��W5�y�j�]X�<�!.>Q�P��Ş����!̀��hX���x�3���J~K�6�m1[A�]���j��v�D�Oi��-9�l2)� �`D��S���C�4�kd�j +}���v���DJe"���z�Њq�P|��kd ���h^u:��Ӥ�FYF��Qn��KM.Dnv}�#z��kmw}�ӝ�5��D���+CI6W3Ŗ!3[����f�̳�,l�T)��Z����;q1�ٌO�+�Α�H\��âR̺����ax���hy��|N&R3w��Y՛���L�ƩI�y��u��k��9C�K�<e��z!M�puד�d�8�ٽ��پ�QH �<� ?��:'-� +rk�&���M�l��]_� o +H�N��[��|@D!�$��lv�U �����0彺)ٵ��'�v���ç5�ç�ç�ç @��@�V@�6�9��uַ9�ç @�V@�V@�6�9|Z9|Z9`��0B�~ʱ5��O+ �O�>��>-�4��2�>��>��>m�r̞�:�K �i��i��i��i�ç�ç�ç @�V@�V@�6�9f� �ç�ç @�V@�V@7�9|\9|\9|����q��q�0�yF��c��q��m��9|\9|\9|���'a$�V\9|\9|\9|\9�T?���Q=����5������%��� @W@W@?�; ��+ tƾ�� ��q��������� @W@V@6�9f�I����c6Vr��r��r�������� +��� �O+ �O+ �O�>��>��>m�r��r��r���A��� �O&���xn1���>�,f�5yIYY��R�g�--f7X� .,f���b6��b6��b��,��b1/�"Fn�e����5���<�S���b�Y��ژ�<[A����Z�F����6��l���ż$�vt.,f�V���f3����b�Gji1�����!�3H+�����b殚[�F��O��b^��I+����[����b�0�3;��g��s3�f1ϖ�,�f��bn�,f#5�'�b��ZY̋E�[��_|X�����à�<�X³9�H+��s<���s�٬���<[�:��ż`(��g�c6�ث�����Ϛ���-,�z�M�p�O-ie17s75���g���mi17���wm1/XB�c�l�ĕ�l�&�����T��M����e����c��y�ʈN�r�Z�$���NE��Z�60��ZN*�\0kuyI��Ā�do�5{N��lL� ��Z7LwJA�Sk9�^�꼣 'R��bL�M�gֲq�Lֲ>,��z{� i��M�q�����2F@�%��������l���,�c �F=�`2��V>-���.Tk9)����2���՝�������� ˫[l]$�B5�i���d,'�:q�-h3nFp�����5:�>'�2� �Y�������R��f�dƯ�ʕ�[�!���kz��YҼP>���7�p��<�~�����,j9�2��M=�nm�}� U[A;�O�XNZ}J�7�5�;�cc,'�X����e|Vc9i�-H�XN�<���2���V0z&Re|AE4ϙܯ�r�K"d�k<9jEo3��ބ�RXQ����XF[:�j+�گ�~�+w|��ө<�&�D*5�2���a����v�T=.��qc'ۥ3 v�3�Ā��z�f˷v���m����0��vrVW�l�����avr.V�����ܐ&;����Y]�{j'gS��HG}3F��f'g[�P��F0Lvr�z)���AD��*��* ���r���\�vr�B¡��ˣtf'GT8?���-Ra��d�CS�KQQA�nr��k4��F9��(�K�U�F���pһ<�%�De�����������t�N�Rۖp�'Δ!;�P�D�U��.���S���*Ny��J|=�WI?�q豑l��m'P�o��&<�8�\[ +(�T�����F����gc�:i2�'Jk�q*㤇OS�)w�t�-㔝�Yڪ�Ř,j1C�u)7�U�b��)w4(:gsԢ�$+���r$9µ5u*�E�MDCщ��|�����3�3I;��I�U3�(0�g�Q�h���n�D'U�ܼ���%M-'?�����:A[�I�m�/��y�����!U���A�\��8�&U�ܼ�SUb��IT˵�a7+�4���Ί��p��=ɯiU����i[�I%ż����M�*� +NjX�'�3;�aP��3F�)�����u[�wu��j�l�sIr��M[�B�hV�ww�L����Hi t��B�&�)w6� ����9SF]��ٖB.̷`��R�]K)li�8M�ی��7��ӫ1�ЫT��E�mT��R�=4 ��Ԃ�*���\��^�n~0&�e�=@��ܮ8�.W��R�{�%�$��y5�����^�s��z�ϤU�IѪR�x6��23���IM���ʆ�Vni8���G��=-BW������D*q��Ʀ�@���o:g�z���fGz�$9��9�mg�̎W�5G����*�ۈ����t9���R�!LDS$jc���L�i�MS�ʋ���4��N�6-P�����ۘ����7�9��;#�A��Vz�$��p�O.\=�B�í�ɇ;��D,�OJ?͔��:5�W�k��9��03UZ�4���uVZw�h��ѫfr�JU�f�{� ��.�f����5/�Dj���n�!��>�qԍwM9�%��l��un�d{*.x��d�)&�l�D��yA�՛9}W��j{�g�|z[;X)6=����L�D��H��p!k��p5(������1L�/��fgH�f(ɫX�1\��~�s摭!�l�*9��6�ԒꌴD����iz�7�e0���5�uI]�����PU�) �[I6;ܚR����z�S5h��#J��N�_���}���WvӉ$�8��o!�J�&ԘJk�JE=�=qGvr`��%��k�v^� +�mX�p�b��*�n�77ȕa]��4q�v��� &��J�Q�pS��g�=�SG������q�+!�3��8�A�9ƀ ~���VU�"�afvvϳ�g���P]]�+$������LU��g�E�!�U&��ߧ�{i&��.Z!^DŰ��$��X���g� �'N8m�3z��ʢ���Oˢ��'-��`�O�i>3�@Z�T�<����E���s�C��3�I23�z3�=��<i)���<ʧ&���r�����3�)�?�Č�$��m�H�$�/e��%n��@$jj����#C�&�2G�0��1���;0�ӥm��O431��AY������7Z�m����&M��\�D�����(�ɱ\��*v +��|��3�1~5L��7�y��!9[�� +�М���y�#�/��2i3��3y��F�)5�#;P͇�߇��wW4M���Nʆ�g�8�n��x�K�8p�d�v�� �S���>�B[ٸ�c7 +�L�� �1B�XO��[�,I��˘ �(̡�DɅPf.f�Ƥ8�l��ܮ%�K�ŢK�E�����̟J�&L &�f�8��x&<�2X��e��t�`X���,�z��dlwLc���Qf)����%�gb��Q�R{� V2�2ܚ���S\�В�g6�a=59v�شŇ�)�űd�Z��Ⱦbg�2ww�P��mv�P��8?g7 +8�b�Ƣ�#����x�́�� [5F�_US6�91�#L'L��_kn@h|.vȲ�K��,ɂ�l��V���l��M'��4�̶�x��A�D�P$�jƮ1ג`Pe2� �j����H��.J�I\1�'ټ]ԕ#�)�?���Q%z��S�Q:�Wk;��Czdz�P�D��^q^Z��Y?bJv�d��8oa�1�mHLj��㹆��"�BͫJ�.����~W*�T��oDUH(7�?�2�<o�~�s¼!�涿d�O�vf�^�����XWd� K�)�+�둛�4����R3����0�"̕�s��\��L�5g?�J�o����ш��T��J�o��AX-1��eë���.1ѱ��(_���'X���Dا�~}E����#�8�lj\�vb3�F;���N�q��97�{p���Bf8��9�m�n'"8��*6��s;m�D'~�s}��k�)����l�G�F��lpL89�+�LՒ+�7� VH��k���x[�Q��w��^6�(�}�㗝�ۛ��>�+0ɾcMb��mR1S��L�S��.���c�3�ygl�6��lBH`�A��8�0�7?�#ȶ�IXMG�2�y�/��C�!$��2�Vr�_~�%� hɮ{X,�֓��1̅��XjGbz0�e�N?n���?�똵���P��p�]ڹ��@�~Tq!S?�9�ѱ9�y�HЏ$.4�G4":�=�\�kӇ�b�PcH)�o�n�Z����\Fb�+�v�P�`�����Ux����5��xvO�O�ݮ�n�'q�gK_�.CC1�1�$�\E��x��s�L/��v�h��-s^�U��J�^k��k��O�#|�k6��:uR�C����7��=���Y/6ʯu��h-�O��G���ڦh��lC���jU��Z���"�h|!zs�AS�ب�1��4���َ̨�Կ�د,����Hϸ1��fiax�'�؇?~�#2�E��h6���/9H�h�cJ�����fB���Ocy�F�g�<��<= ��]r� ����=Z>�)��LWӬj IICK������7���$0_0O���z+��[U1k*�H�X&�ZIi�t�dvj��S�3��V�g�&$e>��'D@�JrIUy��|m�M��))��H�$�� PXP�����P*n+�D�(e젊�""��4U�Y��|DEg�4�b��x�Fw ��A��(F���U�0��HTQ7��̙(�T�����ʮ�$Y������W!,f$-�O��ȗ�aW���F�'R��"% MS�(����KS~hN����6�x!�{�P�FX#y��^����E�x���c!roJ��Kkx�$�4C�<�V���c1�"�ۣ}VCc��lѵ��p��w��x �"K2��aU�nm�CeDr���n�|*�QI���0*8G�\h��� �P�4LW?JSM��)�nN�-$�b8Z���YI�4��V��fIר��pΈz�n"��� �������N�X���TE�Z��q�G�0�5����T����0�B� +t�k�RS<�=~ �Qe�-6�Q%Y�P�[t8"���fX�,�Hq;�I&����I6F:#��E*�sr��x�SFng���)� +���b��_ ���s +�[��eV�T��7��0�@�� b�*�G)�z�}#ddz Q�o\TF��G����hf��P�$���ꑊ¦�BZ�B� {��i�R*+e����. +} ��y���&}jIM�AR䃮!K��⍾aΚ)�k�Wvo�Ea;��@�/,P�X�xc�h)��VX�tG��E���=�6�T +Ϛ +[R���� +ru-��,v�J��5#��ʽ��H%G[E1�1�Q��UE��>�C�'�2����"v Ii�(U��%RF�<a�SF1CYd��H�d��T]�iJ �Ǟd(�{<:�*�ȕ�±@���}��D�E�at$Pjnt3�=B�rYa�4� +�~�I�JC���2z����� �9/љiFf]�Ha�JΩ1ߊz�jq�4]a�#���e�O} +�')�&&� +�i|��4%M�t��7i 29�DD(���1뇥3Pd�]T��4�c �TEc^�������"5��W v�F�(��b%���V0���Iᅹ����(� :��" +�;�ȵ���ʠ7�$�UX�,�}�4��)��$�@5p��4�(���E ҡ�|��,�G�H��� +��-�I ��9� ʢ���C1,����,�PP<dv���N ��ըU�+�} �� ���rM��������X�F�mD(P&�s� �WCwYI�@�0*ܭ1r��j�㱅)L�QeB�K֪a�3:��,�a�g��L0Ɓ�`�+��B*�ftT�+��Yb�5Jz�X\3|���"�iC��)ȣ�6����}$�QQ RF�_��d��l� �8�a'�$�0��ne:i�9 +'�Y�Y>p���"�~��=��3�m�P#�$ +���,�o�u�)��;��M�9�~�c~|�a(%L���\A�I���A���xNv��{��������Ȕ�2obx`���RЧ��?Ya�Y0�W��>Ry@�1�d���������)� �q���T� [h)� eOPy���k�0g�d�� �HX������n��(�T��ƅ)SI�XiEe� +�����%$�%��p�&�G�{"���1�/C.�/e��zBI�D�!/d!��+�䐄$��J9�d�JB~�*fk�D���ht�nC���f�X��L�'1B�x��d2c�j��UH,�?���i��F\Q&ᖜ\��i�SQ�x$��?����'�FԁJ�KI�P5����XDj +��0�\���M��(f��i��N�6�$�A��ˡb.�"�,��v��I1�LVD�o����ё1"�ߠ!!",�]C�!�����KU��\����{�4�"E5���@Is�ax�q���JL�J#��I�e�'!�8cE���c�=��Y��v$p_�G"�������5�K�Lb�lI���_)��J3�����KO��AǏW�<N�<O�x��� @��4�o��!��U+�2�Rƣ���)���T�L6�A�y�a3-si��ۥ)RZ1�J˜������$�"�G� �m�NᎈH�Hɖ���Ȃ�%��ɘ"����)��^��U�k�@tH�s�[O2�lg�ڐ���C� +����)����@J |!�x��QQd�|����!W=�(fZp[3����a�W���"�ĨP�� +���aʬ_�B�W��j2�k�iX��@@bkC�[����yZ�DV�6-A�HdT�&Q�z�(��$���32)٠P�%k����(2�vh�(? _S��u��ry�:Ȥd�#A�j�2�3ױ�L@%��L����#�*!bE6� �(��g������H�y�8G9M�͊����(hW`�O�� +b� E���Q�5�p ��d^�b_���Ɓ�i�h@��R�)&�'Los"�}P�ǁ��6+=c�Q��mN�'�����A>�8d��5A�g!D�%��q9�%d<�T2��4�Q�X�=�����f&'���0|�,F�a�y�Ҵ2<�,��:B��I��ژ�CО���G�*K���=�tEeJ8>a�(Yk�Y Qc'')�)�N��s;��[��2,��(�0!��vQȤA��e3J�h6pXT�5\�H؆��MK�ȥ�"�La�'�tBG)6ZJ�¿�a숧��pA�P��LSc�%P"7�T��{'�L�؆�K�˚�75&���)2�a2<�0�����we[E��<n+�2*E}��q%f6bٓ3����2�2��f�f� zg1k��eXvs�'���.͞�<h +��T��D�w2��e�D�$�Z��7:HJ7u6 4�,ʬ�=2�eZ +�TJd�P��8�1�"�},�v��P�kԕ�4jZ┍g����2��n!�A;�b"�1�b�"~���DH<���PDK�D1���q$�#)2��8�H��d�ꇦH� +�Fa��^t�T�^�m4{R� d�6/�kl��|��\iN�Q�$xA�?Q�`�\M�:d�q�H���r*e ��ٍ]�X��f>�3��Z� +M qd(I�a�H`�z�Q�fSgE�E:A��!�tf�c�"C�H2?yܳ\`�Jl�l�x�D*�q��@`��v$����%��K�r�I�Ҕ�ڰK�8,)F��6RJ$Y�)�J(N1Mʫ��Q���I�"�N��:O�`����)L@$�Of,�8�gC�Ԣj��"Ly'�|��?"{6�G���0}`]2�6����E#��~%*L8�G���nxph���>pK�$E�����9�2�uFq��@)�9���R*�9ʮ�H��q|0�j���X����6�|A2/�'2!�X��h^�a�Z:�r��{��Y��!��dIm�eV�?ɰ�|�,���-t����Ʋ�R���>��B et�e%�'�Y⩗m0���D2��`[�Ӣl�2G������$��D��@2��f�;8#�v&�ѭ% <���(�����LƋFA�Đb+K�2�H:h2h����|�f�C[JH�īaix ��Z��ȸ�����̽ +��e�4t�%�4����)FY�[��L�&� �a�,�w��T�_u�,�WA���+e�$K�U)�iB��e2P6s�Y�������8JZ`�2e��rU���U�"3�j<� +C���V��y�m����`d]��8Djў��3�1�D�*�FV�rY�z�ĘU��*�$d,��l2]�`�,��RR@Jw�&�P:(K$�/���"]���N�-�� ���֒LQm:bTHX�s��k��%�Q�w���Rh�}�e��|i2��#e��Y��w⽧���v��Dv�S5nɑ?��o�e �'h7��5z�b*Q�Ѣ��jxs���)�;u8��$��b�D���NMd楋c`�Z��e"Es��DC��]m(S�) ���;���,�iT3H�(��6�ʸ8�x�Fcy�5.�#ưJ��iQ����T�o�R�E#�#IRm�2 2acq�h��)����[�K���P{��>� E)�}M�a����"A�7dV@�J��h��Q�#($+�j0MtM���x�/�r�*�CC!^��V)Dq%�hv�2$�Su��/�ɴf��DX6�|PDg��*j�xÆW�i�Q'�Q���(A'�<�hGB�< �-�X�#�fAfVRr4�Uvo��ly2�d�"� �~��l�Zf3Q�P{#��RT{:��?��(܁�F �E4z�y%�D���U A�NQ! +� ������#,)4i��Q���L2oK�Nj.��c����Hl���E��d,����F��Ub�B��.�͍F����$��Z���{NX�$���Eb>��� �B�,i�b +ƣ��'&`�Q� 2�95Q�⧄�t#�W�X^�A��f3�m�*1n +͗yȥa@�evGF73�Pš[��<if���Q#/|Bi/�7*�2��"�^����.�ѣz7�f1��.�F��|8���>2:�hDн�����\�ȀN�&��"DG�g�� |��@~��n����7����!��E +Z��'9��i� T&�F��P�]�㸘W~S�Z� +Vea���(.e�C��0D@��~��yRb5��r�ms�2dWA��HV~I���h�@NO1S,)��,�����)r51�dHTzq�c��# sȨ��a4Q���(]��g�ƒeVl4�ʄH�Z���*���s ��!s��YdI��0�]�c@2k�&#�D�!CZ��A�Zŭ���D��p;H���Ȧx"9�բw�����Rjt{G�VL���2���4�"3�+(���4���~�t(0 P��ZD�(:���+��%G���uZ)�d +"�O��$^�����?�,ʓ q��hJx�#t"� q)á�K�xw�6k�<�:�oh�̳D���M�珥��y��ffA}�P�S�G���cX�������S�"�A��Z�,Q�0kwݡ��)�zDð�a��.m���"Ue*��}E�̅�F�2�����H��ldX��E4��ѮQaU� +�J�$ϸ����4��a��������t�ѐE��#��)E<��L$̨@]��R�*ҕ�u��^���̑�PKh),�Ʋ>!�K�6QV'���̒31%!��3R�*!�Ar k���1��e�+)x9�E��{k^�F�T�䇕�MGE�]���������9�Rp�4$�-�@y����-X��B���j5{�j��Qn�ѯfU��A���\Ӟbp�y�"(�x�e�Q�s�Å�������f�]kta҉{LN���-|�foN�=����'� �V��z4��u>�G�F�]oG��U���.�^���z��]n}�*��,m%������n�Jۅh"w~ �l,G[�|p�[�>�=��ݔ�h_�����.V��^�ã��5 �qv��1J��ܮ4��r=���th���?*�~1U�u�lv�lM8�yM���m}e!�d(��� �Y��n�_$3��(Z9SQ���(��(Q5��{ε���u��� +��9-Sψ1��s����V�����'b6��wF*>�_�\GZ6ќ98Y��42�a��BÂH������A͵�" �PQ���0v�.��ۿj�~$���D�n�<^� +f�(����C)��l4�_z5��D�����D�F�*#�I4���G����8)uM�5��QњҤ4]o�o��7d&@�u�����Ѱ�� ��$���vpz�W�C��hU�?E��7�$7�V�S�E�{�x����w"+��� �bb<�h�_����JD��t��J���Zւ�-k�(k��.���&� ү\�:5ɰ��λ���=�ʝZ�6�f�ګu�|������]�^λ��~�����У]��6�gz� "^_�f�Q����E��riP�A!����&�2�>�V7U\��E#Ѹm �}ע4��}��o�x�pH��u�����{>I�2Y����������������� +����e�`R���ӟ�Ɵ�]pd�@�:�z�O�s�g#�F�l��LOf�\@��uP���Y zRg֢�����)���`��3�� &��ű��65� +h7X ՚Zl�M)�����o��s94�9 0M�������?�#�Y���8���aQX0���m��`Q��,�� ��N@d���^���}�%�EE-�� ���+��q��E^af!�Oh�Y~P��MR�A]~�,�h�/���ؐ��ur���Y�: |�d�ߊ/�������9I�%�z��/!w�BnN�M�mo�u�Ub��mJ��coC��K�[�����B����(���#Ȕ]����ʔ�R������Q��� Q;���*B�픥��d�+I4~`�u� )���nx������W8@(��/��f<h�u��R�?��F����9S +W2:����@��xi��lE�?���鿍��#�{THL^�e�ف�A��v���y±)�pF��0-��*���oͶ��^�/GR&W��۟�x����-�YS��N�b��Zo�d��z����7���_0�ʵ��A�������d�3xI�L�yPsFm?�����w*��?����T���/���%���j���B + z�c87s��ȷ�߫�\�ˍ�ԯ`Jo6�%���ys�]�K��q�^V�_���բ� ���J���>��� +���^���rWF%�l��xU��ۺ��:<�5t�_�����n��]�S>W�������-���_=�ʘ�keW����E[�� +��W�٪��+�a��8i�X��B�����B +g��{��4�/�y~�E�-�T(Vdere,7�P���_����!�B����?�/��!��)�XG��E?ޘb��va��&1�1����~��_��/�)"���"+�Y��ژPem��b&-�"(��#A���W�!�Ț$A�1}пާ��k�����g��r����w��f�V~ןw��X��o,���i�V#���sd+�ޓ=I-�����b?���D�զ��������t,ɠ��唌b�Θ(��E�~Q��{�/es|eS��M�Kٔ�Ӕ��H���,W���/��_N��U����)�ڌ��L��@k����F�N���@d������w���S��h��n��NT���ҰLO!�1�`A��� +I�����n�o��9���L�Mi�o� �2�2O������{�ȜZu�ȸ7dD�e�sԩk� e�,6�V�́�6O@%��fq�a)=�h�ޞe���q?��Tl��_Ժ��!���h����X+�a�UE�O�C0Y��P�Mְ +4�sY�JJ�Ȩ U�ӛ?"��)ed��ѝ��V��V�Z�X�IS(.@H�X�?L��&[W�m5�3������?��I΄��ar������dT}F"Gv�㰉�4�>��I���U�+�}���`�v��w:0�J��x�cZ�+���N���?����W�Zs5z��;>����#�y'������f�|�aQ{}m6����������lt�Up�������r�����TV�AN�����fU�|����Uo������k�k��_ɶ?��.&п�U�V���kc�ho�Y� >��<�Vnw�lI��M+�{F[|��i�J k�g�q���B�֨�R�� �������^�g��h6��l__�Y�D2=xmF� m���Wj_kX�#�����Wz�n��:��&*��[��a������j���&�< a��/?瘬�?f*� �����07���A���.+֕��2�U)Q���� �Y�k�(������9�ߺ���aV���?��DZ��A��g����O/ET�<h)z��#m7[���x��E,�#�=Q�sP�+z��8���OO�K ��;�̘�rkCt�5v�h���U�mWV�F=�|��ʶ�2����ήC�U5�S�7]��B�g���N��'�>≀`M�J��h~���D��NB������r٨U`Y�R-��t>8ɞ�X�U�M�L�_4��$hR'�N gOo%c^�?ͥ0���ɶ���r���o?�2�\�<ypuo ,Q Z��.Y����x��Z-�)��h`��n�$����`7�$u4`I��,,e?A`^�?��p������{��' �jkH�B�e0ɩ�L�l��+]�g�2�V������W�N�\N�[��a��B���{�V�����u%�Q��Gk�&��G_���m��hV>��.���XS5��S�9��*�@"���E��Fȶm��)��R�Z��ՔPD�f!�-e`[۰L]�M�˞|��[�sn����I[�������G7Z�ֺ��Z����y4��y}t�w{��a���+��ѓf��$�!4��m�v��R��0�V-�e���B!�#����ժ��r�f�n�{�l�ی��;]�m�<~�Wk�������3��T����p*^ݨ��[#q{��·9.��h��Z_��-���o�&D��鴌�k���[x� ��4�ʐ��?���a��f�3n��MK��n5_��r��;��DowZ:��X5��h�����9� U�7�m��Ҫ&=ψnz�����r���� 5x��1��FU��Tkw�'4��p���sd�� �eRЇ,���0������]S +=���I�]��^i6��a��0��h��+��p[�4��=s�� �?�{'�6[@��y�Nq� ���Y�>�����Z�{���a��:���tB������(6V��R�SPS�a��'�Y�j;��F������s��У���w�ո\��t&-Џ���dIS� �qf�hɢ�M���Ʈ�'����=c+�{��[��0���+ع^�-w���b��^�c�|Z6+�:�{[{����Q9����lF��R�^7XOvo v��`����r��fU%�Mہ��B���T��Yr�q"���J� ��.�� +��cIV� st[�zի'��(�&U�_��X��lq���;�0�s}Ҥ���Z�o���=pR�� Ycۅ^Ϧ���iua��H��1<�������T��}��۫��;����X��"�5�`���ٵ @�,x���4�!��q�Ӥ�Қ_��x�D�x������Yη����\�n����Lo���1Y÷������}`��r2����<(s���έX�+?��I�\�&w������~�<��r7�|�Z���?g�����8�vp������[��hm!�gtg,ɮ`�ꈮ����[3jq �"!F�'�\�Y᎑9� +1⮼ֺ_e��-��3{����g�����d���(�6�B�Lws/09;�ut಄�C崹C`b�N�p�����t��*�v��������ֵK�oZ�/x]o��T��s�ee~�խV�7�h�G��*J��l^�ZƷ���VL���}�)J����-�͖�B�^t�zE9����>�h%�}����!�]�q�F�7��ݟ<����<۽��Y߹�a�� ����Nhz;`�Эiy%?|���jM�F�ҼЭ{nW�<@5��ɏ�:�V��?b�6�F'`*_I��d)?� �e +�{Z�0�p.��U�A��U�N��a�!��������-X��Ǡ��/��V�v� ����z�,$��u"xC+_����d�Z��G�?�>>yX��& �+؝�j�6�~s��L���1��|W`ᙷB��N�}�"���`ik?� ��6�.{���G$)=�����h�?Y��h7!��y��h�&�����N�P�V�Z��Am-nB6 +dho�n��{ �]�[�Mz�m�?����(�Yt@�D��k�H����B������n,!$��`ҋLE��9#�QC/[�.>�*n[C��w�/dk���TF �tl��Gm�����{ ]4����ؘvA�g!\��L�tu���=�bQqˊ)�Ŷ�����I]�Z���y��K!*���b�K�8T����Y��<���� @�A�Z_�m�m�k��)?��L2\� ����7{�5*��N�ˍF���%��w<���ڦy;M��ygј�up%�;6:����d�5���E�"��y~�xf�X�okx�wu��.`Oj���� �{�N�G����J��^��mj����-������<7���dvK� +0��v�FӺ0��t!�D*���qC��2����~mΚ��_�2#�G�9ga��h��>"���s�Hl��ž<V�C�ӏz�n �ŰJv��7ck<�f��s�C�(<�h�ǘc���&k�B��Jh�nTar< �MM��^ljX����1�E��|"��tct�K"�Ps��?��,��f܅����u�L��\L����{nw��]�eG'�1@n2z�'���b�x�A����}�6ʵz��a�ܲ��3�����0�%���o��!F��y������x�7�@�V��n~�������0w�g7F� "����j|X�;�3��;����9s<��-v��G�6�sѮ}�&\��^�S�6�8j6�։�Ci=���-xy�����1�CpB�_ oYu�*t� ~g�R���qF�oR����e8_��0d� +,��V3̌Ý�3�Q}hq�NR%/��`nLS�h��{�S abֺl��|-w����(�0�)��t +�*��Y�Bit���@C�@�`\v�:@�r��a9���ۡ܀��0RA�o�^�қ��^�4�=�kl� ��3x�/���p�X��E)h�m�T�û������A>�s�5"d��3�)��kA&+�e_�����lMd�h�C���(`0�N'���ވvʿ!I(7�v -w�1K�����(Ȟ�%�����f/�pG�@� hh��;� �9Z��`� Xk���.*z�Fzh9Z/��~� ��F����U>pz{��'Yݰ�p�{0��5|��5>11Y2��Ui�Z�t�� +���"2x[Av��Pa�s�=���؛Gʞi�jiȂ�} +�2�(o���nD,v��Y�j��jm�<���Nt�;|�l��/�_o̯�o����Dn������ޘ�/M-���r�3�^�ՙ��˝�#ek��a�h�ݫh��t����2#������0����\�^_nu�;�J$��v8�6�wsﻧ���~��mlV +���{�P��[O+�b���N���1��%��_��(�ݏ�Mu�W*(�����H��&�zv6�e�����E>y�?�������g�q{���Z*,�z��N�-#`�^�����\}�~������?�;����BE<��^ߚ�f���;����&�5�]ث�M�音���L���\�Eb���J��:��?���lL�[��X~Y���_��zoq�j�c�R)�_�����YV�Z�6��Z{گ�걭�D{顗=<����/l��ȑ��v���mT濖6��V�������t��l��'.}��f���~� +����ڵ,TWk��2�x�O,빺v��Vp{����\�3���:���OK�W��U�u摺�l�`A���nɽz��6N���5�Q�z(��3G����\ij鮍����z�&���:����K��u���u�5�/_Xgҭ��{#,mn�������zc}������9a��8��@�ܾ9�Gkb|�� +=KM� +�j��[�z���d/ +?� +o+��ry~6��^�fNb7���|��v^���~\}��r���3�Z�+>�KW9�&{\*��~��~�+ko_��R�mQ�n�h�Y�i��>��:�.� +���a�������U��-hSM���.��ً�n�i.���`l�M{���N�q��缾w�e}� ��eB����R�cqy)��<��� Y���0g��#(�Z�p�?��>1�K���R�� ��/٧u6'8��YF/��Z��쳸t�,Y� +ඉ�XE݆C�5K�Yȿ;�Z��,��I��=8٭_9���)&�_3^[����X�⨺f3S��~z͖Z����joph�� �(G���=)-���J�ԝ����Ĭu��*o�b!��������{�L�V^Z�����W�jf/>nf���%��Vq��C*�%������<|�8�S�?�\(���0����ū�]�����ri�}� �K�U���^�*g�����}=���X'�f1�z���s��V���#�m���l�l� ����^1��}mq�[��xW{����}��/Kk{�7�ؕ�TN����/�y�6�}�^��'���P�ù�x�{Ξ�.�-5:��ە�9�[��r��u�ohgo�q���2+�M����N�p���w� A]����-�٦�E$f����3��0O�O��P:ŷ�kc�<>˱β뉒�JΤ�V��Sc�Y�������6 +���bۜ����5�ٜД��fi"�-�-'���]�5����p�Ș�{P�i�w�G1��o��=-c�%5��1(6��NM�<�Q�][���(��a#\��Ga� ���i''86hU�O��y�c۞k��%l����#����P~?��El|h��BO`���~`m����1��a�{�uRM�n0���I0Yuv��M���kPjl�:�dk���ia-5GHd=�ʚ9��x0$���S�Ã:_�E�����Gs84d[b�!F-i�gjZ\8���q4y���)�-f/���y�$�7��02���������jij1 \ו6�}b$�������{���,�t(1��AN�j��&l\�����]�Йz�K�(w����K��-��Z�2�Zw�-�l_��s�j��1#��E[�;,eS�+���xc&{p{�p�-?��������6]�_�I9�=�+Q1�x8��.>�{}/��CZ��ҳR�yaꃭ`���;{������s�L�]ڜY��%�R�N�,�$ſBl��\��_"6Gb.���ƕq��Pn�\�R��Y*����I�s��1�LTu�T�7�Ry����H�LJj��^|H��U2X� +�WaW�v���4~�9_������w��Z���U�P���Oٔ�.c�\*�Y��TxO,l19���ك�Y8>K��"1�O�#Z^��|��p�#�m"�q��-���>�A��HX�R�T�)���������'X +�꾔���Y����ujj�-q�sfo��p +��� +��j��$��w����|/�V����}"\A��B�^;���iML������1���N�'��F[ھ�ʰ�<�r��Izn�b0�=]O�w�e��bi����TV�����5ak���ń�L~�� z��ح�nN��q��c*��I���O���A�|q�|'kY��_,�����@;������Y#Gb^cOz�H�BI�}E����<L��b����;y��<Z���Mq��S�Sژ�^�c�TЧN��zN�צ�灤�N��G�X�������lgJ����|){�~�4��\R�s�:���H[^9:{�b�2�8��cLV4Z����,���M� >��z�����'�w�3��8].V߮� n��=���~�Vr���}ιz��߭S˿}\�M6��Ȫ�>���Uэm��eӯ�w��\��x�-�%�R��펰w��nZv����פa��!�PK� +O����0�����g����Ϛű,�c�Թݳ���X�/.7�z��J}ђa�������Y`�ˍ�K�b��x�\�4�K�࠹���) N�Dž���)<��,��_ο���ǧ��k��������"���k����ܷS�!�r����=/=�̝��O�]4S�zO�=� ���Fs�.�WL���� 7XY�Ǝ���v;��eOo�Ī�r �*��~�nO� =�U�������j���Y�F�����&��>��ǫ�������B����ۙ�SY}��Ήk@��bb*����hr��[�� �ў���&�5���JϟpO������T�`o�<s�Y�����v&��Ǣ|mzV��p�sȵ�ݸ��'V>���.s��-�tȻZ�y���eS��{N�o|��+�J�e�t�:f��&f��� ެ�ɝ���s��sYvڣXW�� �����C���p�=����K�|f+ �.f�������wM��e={�m������ΥԻlcw���z�ұ!��*�n��!`���l�y#�:3 s�߷���M�4�T#�Dc���@������^�l��^��_�S�_�+`�Y�!(wgJ���;��x.N�$�Q:�����.�����]�y`����E��Yl~X4��"����Я���� 8�Y�����مs�'�z�=m_�v������<'�w��#�c�/�5�98~���}��6�[O��k�t��?�|x����k/��8W��2�(����.�.�_��� �l� +�3��|�+Ŋ���6��\��_J����� ������~*I8��u?�D��͏7��Nd˛����,��_o�����n�y��K`����T���_6L��Yie~���aKg j/�Z���y21��0,���gV�.�g��B���y�kh��3��K��b�z;�>cBg���� ���xqu�t4�{�/�O� >���z��]l^*�lj���?���4���jG{�/~����̋P����|mc+ S:H�/�S�f�E!:����?+�zA_�Ξ���y�(wdgz��׳\����w����[�Ps����l+�� Rw���qʥ��p�ƶ������E�ڶ��+ً˟�u.�P[T��yXz�μY��5k;�Q�M^�����w�Oظ8�8)�@z>KO���k"�/���� �j��@��|w�l3 �^u.��C ��XAO�FF��;s|-� &�L��ٽ﹣#�G�Nh��;c�;�k餡�����'�l�+�n���b=����va�z�-���%<�{�W{�R�^&�Y,v������{$E�4����\�k����Ep�3���-e��R�W�D;���u�TK_���l-��j�b���k���$}�@�%��_�18Ą�{��@�[3j���Qz�'W�0�,t�է�s��%/4d J9���73���J6���2����rc}����V�^��s�,����.��4��8��~*?ڬO����ŭ��SW��7A�� U�3�H�Z��ߋ��J��YX��TV���{8�s��n�'�4�4���pr�]�̴QI���$���B�����������F�XU��e����'�ow�f�cM��� U�),N3�hc�n��3��~�} ߯�ͣB����v&�Y��Y����y��d<0{6��>�nAq;�(-.���n��8���έ�`�z������ݹx^<0M�����Y���]�6Qֵ��'ċ����e��y����(����������E�ƻ��^y]�<����\vZQUP�J3h��B+�������jy��?=*<�L�\���;?�&��+�қw�}���쬚S: U�.ZU����Ѱ���|�қq"��A�DӾ��3�5s�����5:���}滮��^�Qɵ���[hV?O�R�۞]�n�wіo�,S=)�4���J�;��b�X��JnQ�.7�D�2:GT'��`M�L|�6�/ۇb�TL��Z6���^����k�[:@����,ְ�5�:�%f�v���gYW@-�A���*JNݮ$�k�tU�z��b��u>�V*���㻩��9q�r��B�w_�(͛R�qqfs�������ߗbbJ��2ȑ�GK��s?�T�z��[W�oӌߔ0cR��< ;�jp��%k�84M3���:��'����M���h��+v/㎯l�F�27���N7Y�R+1�{��(�� +f��G��ݚ-�>0x��o�V�Xg�L�+��!~ƻy=ڟx�(.m�^�����ae�(���ѕ�/IY?]����_�bM�� +o��O��6�p(o7ͷ��ԏ�ywc*�2�M-m~�O-���L-����[rj��z>�|tS�JG���q��SS��S�#u�`r�Oe��eSΥ�4��_w뉗R�43뭰���#�v{s�5�����}��l�wׯ���rUl?� ����Ei#�QA�o+��%��$a��,/쾤V����cqy���>e����gY�X�s3�;��5����|A�ߜ.��$W:�ikf� ~�ԅ��m���a��^�\���aE9g �Q���N�F�>���C��S9���~�/n'��toisgj� �4��~�>��?έa�n���[��O�݉ߠ�3�ו;kP��m��������������}�A��*ʺϠ).g��#�*�7BIX<�t�TUg���^� +���5(�}Xu&vr��� �"���]z��؞�{M�x +����aO��]�*�u�UP���������]���佲q�_�A�f$ևJO�%�AS���ߠ���\��k�H�-U�Ƽ*Ӱ�A;�G�o�]�y��t}:ޙ���4(�c�v�E�-ķ��]Z_;�[�:3�ݻӼE +������O�O��21�G��kP�Ԭ��:wt��Р�X�Z�[]�9������B�s���Z�A;�;�xoqk�H��M}����A�vz�)�edt�o���ߚ��R���t��cX4}T|z��I8��{z0w�L6ۮAa��Hּ�J��(�Ϡ��p�w��3h�{~�s�����+�[��B����7�p�4��Fa�f��S?�<�N\��z����� Z�7��{��Ǟ�s�����u��w������kP� ��%<=e�A���[�@�=}�o⾃N�>-�G�X���T�]:��A��ͱ��4�^�����n��W|���" ��> ���}�iP���]�N�V��"��R/Vbǵ�3t��^i�GK�SɆ�n-�HaL�}f�Fz��;�éP,^�p�d?!�M��q�-�hP�b)�XI\�A�ă�k���F���C��R�1%�T�[�����)�/°�Sn����%���|��NI��7��re/a���b��7�_�k�����e��y���n��������s���K����T���}���l���q�����L�z�1��������y����]���s�A��.�o����� W������ٓـ��C܂���ݏ��ۻ�����������bOq�����'��-0��M��b�r�(���|����(����r3�b������չV������R>e�}n�Alj�h��x��}S�P�r�m�40$3g�:ǵ����z��Q���Y�����ej��O1�[ٿ.���煭��tbj��l�t�R��ޠ��y���������l�t(�֙����������Pϱ�tsF���������sk��V�ҍyЂoz�F��ֽ��*�Jz�Ϡ�L$��Σ5�c���AA�m�������d簨����탮O-�U�g��=II�A�ss3֠�Y��o+;M}��_�TYx�t�TN:�1�$�� +� H�/>��>� +k�ޙU}�JҿϠ �LQ����I}��8��e +'*���e��7Vܻ��R�!z^W���8�$aˢhDR�7���y��e�������-a�"� ^��E������ż��U�gO�ٙu������\����*�ݠH#�y?�b$��������d�e49߶۞�� ��X��g��^p��z�۔�9Lt��5r��hʹ���fL�,zY�`��<;�kP��=8��b���|����cJ�N��f��Kq���2?���ۀ�/��S�)XZ�k}�_p�������B���?��o~�k�p�;���ڮ�x��ס��[H�vP��W���0̢�y=��P�����/�Gb�b�Z2��q��1'�ۓ99�[>i`��r����梓�-�c�}s�C���r�@s����$�P��"j�{��ݳy��m?Z6a�y@��(=�rބ��T2{����^K�;����zz�4v���YqR���yƂV�s0�w�ً��kAv�zA�����<�<���8�G��&N�X,.�lN>��s��8Z1�Ό:ޝ��2�>,�w��w�:w��%�+�Y�ߩ�d�R/�ܭ�fV��N�fā�a��Ӄ74�6�f��ÍR 4���oz�r�of��'��$�E�|4�6,̂X��0Iѱ%;��0�ar�'���q1���-�¢����b��n0c +���&���bK0���(=���t?��l�ߋyNJ�����lBM :_^y|f�̃�/X�(�ۚfb#��Ɗ�*11d�bi��w�<��P� ���89�I���<�8[戶ܯ��� +��r1X+������MՓrx �~t��5Z��>��NM|�S�ݚRQ��XO��tc�@g3皍�<A/?_�T�|��<�$���C�C�b�T<&2��&�%[�T\��H��T~�7@7,Oww<X�.��C� +ʖӗ<܌x�[�B��}�6���{7,.2�Ӭ����\{���q�������^����| ���$� +`�^�G�y���&�>y�����X@���n������Ro��ٽ�h��������p�k� �bt`)!�!X���72�w܋m����g3��`%m�u�,$_��#>�-A�]����&F��w�d� }&Y/�����G[����8�~����r�y�\�����S�iA�o�%�z[��>�t���� ���j�.� $�^�2@'�b�E +��(��/J�bvaz��>���u�43�F��A���@6�(n��·��zI��K[������so�S��aV���3!6҂�,Ϗ�Db�Nئ)�5�(���Fb!�3X�=�ct~�<F���*���){x�"���1�f���%����v��j'�y ao��6�c���/)\���<C0=�~�7��^"����<�^��=���o*��~�gƌ��xg��}X&J|?�,�q���ϒ�'�e�µ�ؽ�3a2�q짾8����|Ay���Ǿ��@�v��h�̃��86�$�g�}�L�<o��}N�S4��� &Ca(�8�[R����Yg�m {�h^86���)�))����a/E3����S��[pnX��.M۸��Ҳ����~���*�lH�����8j��E�:�2��\���ץ>����,v&�%3����q.><�+>!��.&яӤ��K$d?C�@x�a��P*���x;�nx�Drwg�����cnn���� ���Z��Ƈtle\�/d�7@�� {SD�s�������/7ד��a�<x��\� ���r1�g��ދ�}�B����x��-��^������y�������7aݑ|y�%)=����+�,p���]�M�}fv`Z��b��A_�%J�lc����:�q �϶ݪ��}�[ч!�7���P��s;��kz�yڜ�0$L�Cx�^ � +Y��n���q�%�3s/����H.��|�n�k'����M�Yn'�m��v{�9�-��p2��N({���8��"��J(�[��G�@!����� +ה|1��a/vp����8Լ5G���v���JW���J7wXl?m<�CA���0r]p��?�.8���+'CA�=�.8�.�L]p]_���1t�t@-'CA�-8Z]p�Ë`���:�M"�k�������й��������h V{�r��mb�5%'8)cJ��x�y�Z>^�'s��8�zXz��G�-���s�+\(8������s'��eNF��Z� �w�p��O�����njE΅]�)�,WC��5%/�>��Hh��\��a����fOt���A2�Z���.��]�)�61�n.2�lK� J4`i��P� ~�n.�#!��Y�CXz1�mlS��r+P���`5���7!t��"�`BD�4H'EJ.���BN��)� 1�2}�����P�3K��`8�1�9/���ޤɟ��d� XՍ�bۣ����|ww`�3u������2�_u�!BӜ��.�!�qJ3�S��ε�q|NfPj��������糺�d�!:�ӕ�2v�a�y!O��#f��X�U��sQ���2�v7�ɧ�=��yNp�>W�M[H�wĐu�}�-����^���K���ɍH��ι��Y�����n��g�&�Pw�w����_�^;�6 ��v�����I' N�)�x�0p|��#� +p�㊒����$�w���s�R������GRd`��S���$gX�< �h@x���� �f��xџ�'�=vc��a�dž:�{!N����Nݥ�q�dE�EbÙwF���Ć��psJK/��P��)�s���P-�i��g3�+N���P3�g����f��}�f1Bx�}ă�p���9�����K��ʯ��-2��ix.����WD*���k���<�E�/�� ��� +Ή���]���s� +�����t�q�[���4a�e��fƏI<��`���ZZc� 39��i|�04?�=�(����өP���i��=�W��4�)]���w�_KB�� +!苁��BarH����=���|}������ ��7�x8v�䎈�t<��86J<���*F�M6n���pA����C�o����pNj��ٸ�pfV���������O8�_��7B<����P�:��|ţƋ���-1�lR>���=�ٿj��߃|z�-�(N�z�JFc���~�#�"��#���_���Wys�Rp����i ��|��?���y����a||3Nc��$\��+eR����5yXi�=���.�<�1�^\�p��3L �_$�3n��e�&�h�:�v��D`���H �!^�DiW�a߈ԇ�D�������H��z���V �H-O�!�n�Ņ� E�^O("�zB���H��Jm��Bį97̕����d���:�i�1�2������l([ˮ�T(���G�3�Wzv6�P8�[������+' +�eU�|(�N�pp(\8��J"�[=\Fx��d���%6bB5�}��&Tx��0��Dd�|Ru���u���@�i�m�跁Lo8�S�a��#bT��b�8Ot�;���J���D��yj��8���OS��L˙��۩叟����R%�?�\8��?XR33kn�k�����4I}FpOG�������LK�︳�鹠rq�D@��Һ�~�3�:3s٪����D�u�K?�"��~��:'�?W��:#���X�s۠�`���"�������/s��;e��wP�����P�?|�z|g_ғ_�Y`�]G�tg�������>���%�=���K�rs�w�Sۏ�Ǯ�cx��o�B����ێξ����أ:��T�9�.�����ӋAGY�(j\���S�z�U��\n�r�9%X�;�� ����گ���|�>�ы~�<�ϕh�S�s5�Jr^ү�.iB��6=�ȍj�+�w�����h��*��__pݷ���u�6���!�k+�����?���?��=��@�J��� �����l^�q�o��t���yl;L_4��`h����2x9jqN$�����yr�h:/�����t^�t~�nF��o�'�Σ+q�!^�t^�t�>��D�y��0��$���f'��D4� X&��{/��+��/fd�h:K����t4���Z�����b��nƎ��# +3�h:����2�h��҄�鼺��9�Ϋ��5������ʄ�@l�h:�M8��+�.t�U�h:/��x4�W,]d`�a���cF&M��e�^'M7 �섢�vȔ`'MR�3�.��}��t^�<0��P�SJ �C������;�I��7d�&_- �nL Ap|���������� �b�zu>���zua�4�;%�]R8 ,<Q��~�c�#��b��LR���~^:��0�"S�&5H0%����B�AS:TBR;�tjD]�F�AU��+Ù��+s�!\�n�ܳ�݀:#~��̝O�,g����#<��0e����Bwc�)�2wc[C����rC�̝�ǿ�,t7�����v��a���6d���u��~u�ܞ�b�.��,m!�Wa�@:��=��5�>l~�0:�߈��D��J;�u;ʉ�d~3��֠x���KQf���W��ax�ϩ�;��k��P�٤��N�BzC�y���Ԇ��0vpo��9��G�:G�e�~�G���N�B��d!<���d(j2�v����\L0+ t2�$"��"$1��.'(�R��B�ɱ)���f*f�(�t5�z/��o�ʕ�v��`o�<����Y�Ҳ�*v>��XCW-r�=9�qq�߫�r�����P?C2xywP?�ŵFdX̮�k@ +ep��*0/����<��*܅���;�-����ݨ��p�#G?��^0�z��' +[)o�x"�R��1�'� Y�:|����c��Y�������k�I�q���k���갵����Oe�|LL �z�f �s��ڂ�gg��X��.����_Ds��2�����`�V$�ª�}�� brr��xȴ�!�����}9�u6Xm��Tܟۡ�ԾvK'���蕰�W�!�J�u3T%pR�'ҷiI�R��6�qu':I0��&�z��ji�Ƹ�n>��fm76|_�c\�^#���y���n�,�s��:r�����7`E���{4"R'�j ��^{���!�r$*M-����a}�S��Ջ�ŋ����ؾ�田r�qƳ���Oΰ.Y�S-�>�/��>Y��t����m���Q�-�:{�i�ĝ�iA��� +��z�5h$� +�5�g�0���Aw�R����om�+w�̷�{�M��K�n��5C��b�V���K},n_/�����#�����c�w�ՙ���իߠe�A)���,�z�������:�0�^��w��Ep;7��U<� ��2B0{��"�N�xF�����T�v���g�f?a��'vG�^��Xg��t|���\ \���ܗ�>��v:F�.C��?��j�U��V�X1Ƹ�b�<��MC�V�J��o|n��iXK������2N�k7��Jε* �liPT��������=���b}�+�Trx�{O������6ЅI�/?-�p]z�ƺ���r��f +Y�'`c�]vǿ�`�-e� +���T�̽5�����XZ`.�������8v-�Fj��rw`E=o˲�Z��) ��W`&���2��<�0aKr�(�sŕ\.Ӟ�ա(Ly��7!�4�,�d�ǐ;���%�T���r!�v�붥~��W���?lt[ڿJo�6�c��r�@���cc�� +o�<�� / :������BH��I9���P��@������C9b��m<T(�O�NdpGp�,9+��hP�� ��mp��� 6(�g(� ��f���Mb�/�ض߿����C�(���,���������ʪ��E�zf}䑢���'�h�7 �Y�}�(��1���8Q�ac�#cE��'q䑣�����u����E�۷�(@>��U�(�����sb���94���(��n�E��y�LQ>��^�:UӉ���M�(�g��ċ�M�~���|�|�A� +���l���_pU� DrM,7��~�sC�S��Z�rC���� +���Q��W�)7�G]�`s�_|�u�������P.��U�<�4�P�o�H�Ix+�H� "�U��~�]�!�c��s�y��C���Cu��~^ሃ}ᆭ�7�'S�/��E\����"*mu���-�~n;��u��DZQ��y�#N"��Y�/������-ek��D]���w��j̺~�nn�Yh�������Z�V���DU�ǽ���J�&q��~�ב>5e��~�D�M*��]��W����8g?|]��0�%[D�X�g����X�c���z�2��1��W�cg��~���Hl2u����U����_�}�'���0^����{P�W���0�5���qm��!3{�Y�/��e�`�>D]��2�Z�/X�6)̘u���-�����$�U�/X�!� ����7�z|��p���Ϛe�����ыw�P>Wu���{��G����%�_�χs�~~tlغ~�U�l7�c��V۽�e��~�U�ư[:!�r̺~^1O�1����}�6��_�`h���+:d]?�����H��ʁu��b]���u��b�,�q�Eq��~��k'Q�/�r���g��~�������o9l]� ��YG���� �ów��nvpM��t�v��}�i7���-���%��p�n�z���E6Ӈ�f�,���4-��tQ�}�M'��z����<;o�&�z��ސr�����XCS��W���b��tJZ=?ZZ���67���y�1/�d��)n���]ag�w&j�{��o�I�Rٕ~�Td��ݍ��n�EqD�3(�=�����%����M��Ώ��u����TW*�JU�]���C�ɏ,:^��踵��O�.:���i]G�o;K�l�SB���?��(�D��L�&���v�&A�W�ebÏ����c��=�G��o[?�f�������B.�mlE 'ގ�O/N +K��VY6��^��8�.���eR'��X�p��K����h�ֻ*g����T�{�D���Zt�q���)�^=]�x|�"���� ��|E0�����Yl��@�����n���'M��Y�^�^@��� +�.��YN���V�$��e�k��Lb��� ?�+����NG�>����Y�,����=��e�$�ו1�6f�~>3�{�3�r�v��Y!��<�d��"�������G���~��N�6\���A�c����M����+���6^��^UZ��xL����X"/�o3t�T��>�1Kl�b"_g(T�/$D>�SK�s�x�N4��b6KЬ�QK�O�5�͕�~��U|lk:� +V�R6v �?�M��y���J=2$E)� ��ԝ(Ȩ7NO����Ls����ץX�S�� ����W�dQ_aիŴR�^*���,9�IJ�Ja%�}�#Ps����F2$Z0%��w��� 1�.���!����W˥a�$F@6i.y�#�^�����=I� +����,�)�@�i���h���r����Ȕ���r��kTV�֓P ���6���/�#sIu3�/CV5b��h2�M츇�[�l�z'��.;㊟��s�91� +���b�����UږA�2�X�u�3DTi8)���Kj5�ީo'0t���^��o����i��Z@�u��P̀+�Ѧ��}�D�͓��Լv����s�T +n"f������({����9�k�+�����C�����.�`P�wC�L����!���Y��S�� ҫ�FCm�C]Cփu�~�ѓ��{tZI& ++�ifa�r��`�6�[ک�l�W�96*�hQq!�>h�AQ�м�מт&�.��dư��u�H:�~"-h(*l��'�Y�����<����Ǎ����~'{9����"��qլň&�Mὧ93SK��?c��?�,�3b�k�xb<Ӱ�������eiD�1�O��-ZyǷ�Dė�q��1�����[q�])8 ѡ�l��Rʵ��6�E��8q��^�b�U�}=�V�}����O��%]�`�ru*�j#��^������iB��[Db{Y�֖6�\Y�Y LgQC�X�jÀ��R�_{���8XQO�Nr�Z*��� >��[���@��#�xT�w���k�Q�~M��8�D�JV�Vm�u���#IՕ�r5CW���q�ܔ~}SAtk�|W���[�DbKSH�fU��-6챞�ȗ���B��0Q��9�v�NV����P{��̥��[PXP9)y�����ˣ�^y=BZ�!M�V}~���x �f���m�7q��F� _�|�y�v�����?�7c]�w�����]���>}����Ě��V�oNn�_����F��P���u����oy� +��?B�P���Q�.������ ���"�4��D}� ����[!����}.�d�/��m��U�w�B��Y��#R��r�K=�턤{�@��?�j�م�B6�5�������O��#��t�u�eމc�����<���/ @���$���<C��i�yz�����u����tZO���$f%�EX�/���'I��/���x+�_�gYTa*��mH|,Tk[)�ڙ���|W�U���^�I����^�֧c���s�� 4��խ�<<��@��X�!>���~bV�;�@=��:����$>=ƍ3�(�ӱ���6Oo���� �/%�-�F|f��f�O$n��z;��R ��U��[��;�$A�ڹ���L�*�������C(��X?2~1>�M$j�(�XUtn�S��<#�*��}*��<�/�w�����n���g-���Zv�y�r�+�7��ַ�U�������M��x��4[��G �������UZO���q�Z/^�x�,�`o���^Cv?h?�y�I'��M�gq��+���M~����{}i>g�V���U7�[^<�"�.���]K���H>sc%h+�=�|!�b�n�g`n)z�у�\L�nȴt/�qVD�x<�Êy@E�Zy�!^�q�B%���q1d{�"����^k�r����x]��[]Q��u�D�.DZI!�������A��,m�+<d�u��y�BI�h�bM&�w�Ad�(�|2�X��� 1J����Q���Eg����[�X!����'�����}r���g��c;r,����E"~�� r�:Q��M�H��Q܊=:X�U�/������c��{@Rb'�P�[�z|��T���aLKAi�!���(�M:�BQ�?ô;�d�z����d�2dQ�W�ǹ`[w�"����:f�7���S-(=/��͟�"G�(��"��8ZN{���t��R����_��#�@�K!���:+5��D������]\�2�z���f�����y��r�Jy����W�:��a. ��}�,�G +g���G +g��~��H�qB���O#��� y�b�B��s����^X;�������~8Z i�ۺ��w�a�w���4�����p>�m��]�Իt{�4MP8J��*L�_E���(���ϵţ�v�':/LƳco'�$�]�!�(y��e$mT�#��G���4��h/E*z���B?[�v�aN�m��|�Y~��P�kVfm��яH}5��?g��pޢ�; �9O��W� +�hq\�������\��5s{��6Z���>�+o���|�aެ\�����i�j���tR$ )�l��S�N,���n_fޤ�C��R��Q�$�Ç%�v6�!=ab��IR��{�� �K�b���7V41Ƒ���=��I�<� :�G�O���]�Y\ ��6���{�C�T[`}�t�#��9�}�W��C�����!�������?u ��?2��y�,�m�Ywb��a�϶�O��L�R�m�r����vw���`��W���.^�-� +�K�u��cK"�e;��fa~��n/�$`��*��D��D�DX|�����r��Z�����MX�ch���;�x���wh����C�8�4���������ͮ>�>)"V�b\SS�j�T03$r�<�����%��Mfi�A��h5a��B�(e.S��HI�-;���+B��պ���b2�3���C(*hӷ��Ifbw�G벺����q�kyK�(6��ml�SJd�Po��|�F�F�·<�8L}�U�+���Y5��B��,��hcJRuQM�^;IUT^�/O���+ 1���-�d�Ȅ����+ڞA>�;>]K(+�i���1���32UX�^L,���o�����|�5xT�e������S��ߍ��{�����K��.�f�� �C�3!$��.����ֻ��K�&�9�itK��(�l���I�lj����X$�#c���L���|G(Um�M]���c<������j��_&I���y�a<��f��7��~_�} ��A�a1�(zӒ�x]�>FrI!�^|�H"��a�(Ŗ���'q�*I�����������s���1��ձ���:�ͳ�x�̭c���u�|0���:�i��$q��c<��(��=�������5��D�}�5����7���x�RtSҷ��<�b���b�۟>�prlLt���xa>.=#W�D$v�p���tf�Č<�E���+I���E���rVIt�?浖�����};u�'�T?�;��#*z���C��f�Z���x��q��/� �6#���z$��ܧN �G ;�u�Ɩk疺3{�Hѥ�rƠ�j�����@���Z��@W�4<�����%z�/C4���[q=��,��0d���d�M>����r�([�7�#��Fr٫n��H�'�eBQ��D��Q��[�u^�����/Nh|y># ��Ɨ�3 �� �/�g�V~q�"���(��Ŵ���<y��W�2Bѹ�e�p*#4���Ne(w��\��2B�˘�TF(:��\���>�1����X脆L���K���z\8X���,�+h����B�-C�-=�WK˰"��lkpju#%/���!�E��b��}q&��D~YI��Vb�Ɏ�[�#I� `1ڑ6��Y��G��&�>�VG<�7�kɉtfRdr���;F�҄�^`����hб���4�"i�\�8���B�6If������E���qo4~#��V���_o����0���?���º� �ƈM��;�8� �p�������x7z��ÿ�yr��[ol���0���uW�q� j�ڸ(A��-�a+����_�O)�X���������WXG����5 +wI壐a��+�2�aX�z(��'C�E�dQN�&����&��ͣ������s?w&�o��:��C����?�1�P��u���j)����:f$�5]˴,X����,�Bl���p|��f���sz��_J��ڬQA�@�=?�j��u�p7�y��c���0�\��1@7,�p�[������F�N< +�~�W� ���h��Zv�K�Jig�T �U +B])������D�y�y)<�j�\v���&@�XY�ϐid卺��ea��j>D��� `�리o#(nTeA��1��1��\�-rHa�S.�:�ޕJ��h#v�ɯ�����U�dб�|&s���r�*��r���"R"H�H0�uSַ�7J���jyL�9�`�A-�Y��'��̪9̂9Ԡ����Y6��is��r�I�� +�y��}s��r|6 *M����c��Kn�s�m�:*, ]��@��s�K�T�T���"w�_��5� +�{6q��T��#��.����aO��uU+�V���c��! <97�H��@~x��s��r��q��qm`f�1w����qV��kp�lRC�D]����J��H��H���>P�I�"sV誖����$C?�m��9��@~x���",��q7}PKBӭ��>[C�YC�cf�� rK�2{8�卛X�ki&���h�ؿǷ�6��}4�IU��jԤB��fR�ZRkdF5���D��˔gjoVL���9� θ[�qgݠ�g�&ݚ��y�w�����ǟ�ZxZ�����Ҵi[L3�h�B*\�����R{r��O���D�m>�Y���:�1L,�hQc7qw��pd���Ta�B�Ѐ�����XNx|���P.0���1r���*���2` ���ۢ9�Pp�~=��=9yӎ0��Pa1�� b����Su���@Y�g�Vذ�f-䇃d@�,��D-�p��5�l,!�c +�*O�X��\,�e�`%o�_�bH�#�N� +�SD+(``�NJ���h�<��� +�J�w�8�� �!Pч�zdfxԀ�(!�@V۴QZq�U�O��sbx +y@D�.�@�����9�ŚE;y9�5��id��M:��6���Z~�����n���W�C�S�����ʁ_ZsY�V96�.E��5�(�'P^58m䜀r]4���ohcNvO#Ó���P#@��A�2@�=�P����aO�zr<�{�QG�c���d����5������g��%stv$%�7�@PcmNN�91�� + +�o +DP�h ��L����T�@�D0� +,0��@-4z�:�0d ����Csi�$ȺAJ�6mp����t�B�5+%�.4<��5�I(p��h����Q��Y����AF#Ô��d���QRG�e��I,G2@`�(��2��G�@N���k��Q� P�Rj��X�S�pE�(�E?�*m��;m��}.���%}I�%�M�pEO(�fI��|��!m�W@�Ld%�y�RS8�dZ�F�(���~��=����KR���C~8P�q�L���Ḅ"��Z �s�L�CZ��i Þ��t�� �P`�s����3!T�@e��Ŋ])X 2q�t���ӞDD��;k�J�=���j��<�,��|�t[M�9��fN�h��f���_'PY9�nΙ>~��AH� 4h~������CP�Ry ��S�e�MPU���h���b�d�������7'�Q�<����]��L����a6�-�.͙�||��\��,��0?�icfֱdr��aN����QY98I�Є�g;�Sԅ!?*+ď�iz�>q��'̀��� ����O +?x�Q�!(e��i ��G(�E'3��$@�9`����_�-�������L&���{'���Ko��h��n�����. �{����x�E��[x�h��_ ��H�s endstream endobj 354 0 obj <</Filter/FlateDecode/Length 178>>stream +H�|�;�0D��bN���'�-Q! +�����&$|�\�eFos�0��Xo2:F=�q���ȸ�ʄ=#PJ �Sw�9%}����a���pӏI(�&f�:+�OڈD +�]��RР�)۰��D5�����>F,��|�\hp��W�Η}_Ά�;}����ԪX�!��y.۽�����Q�N� endstream endobj 353 0 obj <</Filter/FlateDecode/Length 176>>stream +H�d�1�0E��� ���%+)b�8BH��N��i�)������D�9�SDG���xv�|%<VeL=� &�����g����lT岂�uyi1��Tg��C���]��ţJ�;#*a�SR�,6�v�Ы��B��vȇ��w�9^k��j�/�6���R�&��R�d<��%��zUU endstream endobj 352 0 obj <</Filter/FlateDecode/Length 200>>stream +H�l���0��}�y�]J�^E��#�Dy��m���7�.�S�6�ݾ�"�G�x*s��hL%�i�=>Wu��(U�L#d7���{��Y��3������D�Zµ �� �E&)��f���P�R�D��זh�vHwC\fP�n�J�>�^��eX�ٴ@b�\��,릚|���Ɣ]C �����V~�W���\� endstream endobj 351 0 obj <</Filter/FlateDecode/Length 167>>stream +H�t�;�0D{�b.�����DQp�(�(��%v '��7+�1�����%BY��f��D�faL�l����OH�ڹ$��@�F�As���a3斈�im#7_� �y +�;�5��-Sદa!�K͋�f��Dh�8�:�VK0+�� �X���x +0�qT� endstream endobj 346 0 obj <</Filter/FlateDecode/Length 170>>stream +H�t�;�0D{�b.�����DQp�(�(��%�B��o���� �M��!�t��N½�T#��1�u57��4��%1���S��6��+�B؍�%�?�x���c?I�� �ͣ�M�˹?����͜���W+����R"Ta\f:�V5(ʿd�6�_��ʏ��fV� endstream endobj 5 0 obj <</Intent 13 0 R/Name(Layer 1)/Type/OCG/Usage 14 0 R>> endobj 22 0 obj <</Intent 28 0 R/Name(Layer 1)/Type/OCG/Usage 29 0 R>> endobj 37 0 obj <</Intent 43 0 R/Name(Layer 1)/Type/OCG/Usage 44 0 R>> endobj 52 0 obj <</Intent 60 0 R/Name(Layer 1)/Type/OCG/Usage 61 0 R>> endobj 69 0 obj <</Intent 76 0 R/Name(Layer 1)/Type/OCG/Usage 77 0 R>> endobj 85 0 obj <</Intent 91 0 R/Name(Layer 1)/Type/OCG/Usage 92 0 R>> endobj 100 0 obj <</Intent 106 0 R/Name(Layer 1)/Type/OCG/Usage 107 0 R>> endobj 115 0 obj <</Intent 123 0 R/Name(Layer 1)/Type/OCG/Usage 124 0 R>> endobj 132 0 obj <</Intent 141 0 R/Name(Layer 1)/Type/OCG/Usage 142 0 R>> endobj 150 0 obj <</Intent 158 0 R/Name(Layer 1)/Type/OCG/Usage 159 0 R>> endobj 167 0 obj <</Intent 177 0 R/Name(Layer 1)/Type/OCG/Usage 178 0 R>> endobj 186 0 obj <</Intent 196 0 R/Name(Layer 1)/Type/OCG/Usage 197 0 R>> endobj 205 0 obj <</Intent 215 0 R/Name(Layer 1)/Type/OCG/Usage 216 0 R>> endobj 224 0 obj <</Intent 234 0 R/Name(Layer 1)/Type/OCG/Usage 235 0 R>> endobj 243 0 obj <</Intent 253 0 R/Name(Layer 1)/Type/OCG/Usage 254 0 R>> endobj 262 0 obj <</Intent 272 0 R/Name(Layer 1)/Type/OCG/Usage 273 0 R>> endobj 281 0 obj <</Intent 293 0 R/Name(Layer 1)/Type/OCG/Usage 294 0 R>> endobj 302 0 obj <</Intent 313 0 R/Name(Layer 1)/Type/OCG/Usage 314 0 R>> endobj 322 0 obj <</Intent 335 0 R/Name(Layer 1)/Type/OCG/Usage 336 0 R>> endobj 335 0 obj [/View/Design] endobj 336 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 313 0 obj [/View/Design] endobj 314 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 293 0 obj [/View/Design] endobj 294 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 272 0 obj [/View/Design] endobj 273 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 253 0 obj [/View/Design] endobj 254 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 234 0 obj [/View/Design] endobj 235 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 215 0 obj [/View/Design] endobj 216 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 196 0 obj [/View/Design] endobj 197 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 177 0 obj [/View/Design] endobj 178 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 158 0 obj [/View/Design] endobj 159 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 141 0 obj [/View/Design] endobj 142 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 123 0 obj [/View/Design] endobj 124 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 106 0 obj [/View/Design] endobj 107 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 91 0 obj [/View/Design] endobj 92 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 76 0 obj [/View/Design] endobj 77 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 18.1)/Subtype/Artwork>>>> endobj 60 0 obj [/View/Design] endobj 61 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 43 0 obj [/View/Design] endobj 44 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 28 0 obj [/View/Design] endobj 29 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 13 0 obj [/View/Design] endobj 14 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 345 0 obj [344 0 R] endobj 364 0 obj <</CreationDate(D:20150629170852-04'00')/Creator(Adobe Illustrator CS6 \(Macintosh\))/ModDate(D:20150811130156-04'00')/Producer(Adobe PDF library 10.01)/Title(Print)>> endobj xref 0 365 0000000004 65535 f +0000000016 00000 n +0000000440 00000 n +0000024647 00000 n +0000000006 00000 f +0000224737 00000 n +0000000009 00000 f +0000024736 00000 n +0000025087 00000 n +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000015 00000 f +0000228238 00000 n +0000228269 00000 n +0000000016 00000 f +0000000017 00000 f +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000023 00000 f +0000224807 00000 n +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000030 00000 f +0000228122 00000 n +0000228153 00000 n +0000000031 00000 f +0000000032 00000 f +0000000033 00000 f +0000000034 00000 f +0000000035 00000 f +0000000036 00000 f +0000000038 00000 f +0000224878 00000 n +0000000039 00000 f +0000000040 00000 f +0000000041 00000 f +0000000042 00000 f +0000000045 00000 f +0000228006 00000 n +0000228037 00000 n +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000051 00000 f +0000000053 00000 f +0000224949 00000 n +0000000054 00000 f +0000000055 00000 f +0000000056 00000 f +0000000057 00000 f +0000000058 00000 f +0000000059 00000 f +0000000062 00000 f +0000227890 00000 n +0000227921 00000 n +0000000063 00000 f +0000000064 00000 f +0000000065 00000 f +0000000066 00000 f +0000000067 00000 f +0000000068 00000 f +0000000070 00000 f +0000225020 00000 n +0000000071 00000 f +0000000072 00000 f +0000000073 00000 f +0000000074 00000 f +0000000075 00000 f +0000000078 00000 f +0000227774 00000 n +0000227805 00000 n +0000000079 00000 f +0000000080 00000 f +0000000081 00000 f +0000000082 00000 f +0000000083 00000 f +0000000084 00000 f +0000000086 00000 f +0000225091 00000 n +0000000087 00000 f +0000000088 00000 f +0000000089 00000 f +0000000090 00000 f +0000000093 00000 f +0000227658 00000 n +0000227689 00000 n +0000000094 00000 f +0000000095 00000 f +0000000096 00000 f +0000000097 00000 f +0000000098 00000 f +0000000099 00000 f +0000000101 00000 f +0000225162 00000 n +0000000102 00000 f +0000000103 00000 f +0000000104 00000 f +0000000105 00000 f +0000000108 00000 f +0000227540 00000 n +0000227572 00000 n +0000000109 00000 f +0000000110 00000 f +0000000111 00000 f +0000000112 00000 f +0000000113 00000 f +0000000114 00000 f +0000000116 00000 f +0000225236 00000 n +0000000118 00000 f +0000025438 00000 n +0000000119 00000 f +0000000120 00000 f +0000000121 00000 f +0000000122 00000 f +0000000125 00000 f +0000227422 00000 n +0000227454 00000 n +0000000126 00000 f +0000000127 00000 f +0000000128 00000 f +0000000129 00000 f +0000000130 00000 f +0000000131 00000 f +0000000133 00000 f +0000225310 00000 n +0000000135 00000 f +0000025791 00000 n +0000000136 00000 f +0000000137 00000 f +0000000138 00000 f +0000000139 00000 f +0000000140 00000 f +0000000143 00000 f +0000227304 00000 n +0000227336 00000 n +0000000144 00000 f +0000000145 00000 f +0000000146 00000 f +0000000147 00000 f +0000000148 00000 f +0000000149 00000 f +0000000151 00000 f +0000225384 00000 n +0000000152 00000 f +0000000153 00000 f +0000000154 00000 f +0000000155 00000 f +0000000156 00000 f +0000000157 00000 f +0000000160 00000 f +0000227186 00000 n +0000227218 00000 n +0000000161 00000 f +0000000162 00000 f +0000000163 00000 f +0000000164 00000 f +0000000165 00000 f +0000000166 00000 f +0000000168 00000 f +0000225458 00000 n +0000000169 00000 f +0000000170 00000 f +0000000171 00000 f +0000000172 00000 f +0000000173 00000 f +0000000174 00000 f +0000000175 00000 f +0000000176 00000 f +0000000179 00000 f +0000227068 00000 n +0000227100 00000 n +0000000180 00000 f +0000000181 00000 f +0000000182 00000 f +0000000183 00000 f +0000000184 00000 f +0000000185 00000 f +0000000187 00000 f +0000225532 00000 n +0000000188 00000 f +0000000189 00000 f +0000000190 00000 f +0000000191 00000 f +0000000192 00000 f +0000000193 00000 f +0000000194 00000 f +0000000195 00000 f +0000000198 00000 f +0000226950 00000 n +0000226982 00000 n +0000000199 00000 f +0000000200 00000 f +0000000201 00000 f +0000000202 00000 f +0000000203 00000 f +0000000204 00000 f +0000000206 00000 f +0000225606 00000 n +0000000207 00000 f +0000000208 00000 f +0000000209 00000 f +0000000210 00000 f +0000000211 00000 f +0000000212 00000 f +0000000213 00000 f +0000000214 00000 f +0000000217 00000 f +0000226832 00000 n +0000226864 00000 n +0000000218 00000 f +0000000219 00000 f +0000000220 00000 f +0000000221 00000 f +0000000222 00000 f +0000000223 00000 f +0000000225 00000 f +0000225680 00000 n +0000000226 00000 f +0000000227 00000 f +0000000228 00000 f +0000000229 00000 f +0000000230 00000 f +0000000231 00000 f +0000000232 00000 f +0000000233 00000 f +0000000236 00000 f +0000226714 00000 n +0000226746 00000 n +0000000237 00000 f +0000000238 00000 f +0000000239 00000 f +0000000240 00000 f +0000000241 00000 f +0000000242 00000 f +0000000244 00000 f +0000225754 00000 n +0000000245 00000 f +0000000246 00000 f +0000000247 00000 f +0000000248 00000 f +0000000249 00000 f +0000000250 00000 f +0000000251 00000 f +0000000252 00000 f +0000000255 00000 f +0000226596 00000 n +0000226628 00000 n +0000000256 00000 f +0000000257 00000 f +0000000258 00000 f +0000000259 00000 f +0000000260 00000 f +0000000261 00000 f +0000000263 00000 f +0000225828 00000 n +0000000264 00000 f +0000000265 00000 f +0000000266 00000 f +0000000267 00000 f +0000000268 00000 f +0000000269 00000 f +0000000270 00000 f +0000000271 00000 f +0000000274 00000 f +0000226478 00000 n +0000226510 00000 n +0000000275 00000 f +0000000276 00000 f +0000000277 00000 f +0000000278 00000 f +0000000279 00000 f +0000000280 00000 f +0000000282 00000 f +0000225902 00000 n +0000000284 00000 f +0000026144 00000 n +0000000285 00000 f +0000000286 00000 f +0000000287 00000 f +0000000288 00000 f +0000000289 00000 f +0000000290 00000 f +0000000291 00000 f +0000000292 00000 f +0000000295 00000 f +0000226360 00000 n +0000226392 00000 n +0000000296 00000 f +0000000297 00000 f +0000000298 00000 f +0000000299 00000 f +0000000300 00000 f +0000000301 00000 f +0000000303 00000 f +0000225976 00000 n +0000000304 00000 f +0000000305 00000 f +0000000306 00000 f +0000000307 00000 f +0000000308 00000 f +0000000309 00000 f +0000000310 00000 f +0000000311 00000 f +0000000312 00000 f +0000000315 00000 f +0000226242 00000 n +0000226274 00000 n +0000000316 00000 f +0000000317 00000 f +0000000318 00000 f +0000000319 00000 f +0000000320 00000 f +0000000321 00000 f +0000000000 00000 f +0000226050 00000 n +0000000000 00000 f +0000026485 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000226124 00000 n +0000226156 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000027078 00000 n +0000228354 00000 n +0000224497 00000 n +0000027707 00000 n +0000027543 00000 n +0000027384 00000 n +0000027270 00000 n +0000224260 00000 n +0000223990 00000 n +0000223744 00000 n +0000223496 00000 n +0000026838 00000 n +0000027152 00000 n +0000027184 00000 n +0000027783 00000 n +0000028007 00000 n +0000029143 00000 n +0000039471 00000 n +0000105060 00000 n +0000170649 00000 n +0000228381 00000 n +trailer <</Size 365/Root 1 0 R/Info 364 0 R/ID[<78CDC74DBF2F4A5988C6F2A6978D5B8B><3EA85A3709014ADDB5E6A3C687F20EC6>]>> startxref 228566 %%EOF \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.css b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.css new file mode 100644 index 00000000..51bd06ab --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.css @@ -0,0 +1,74 @@ +/** + * @file + * ocio-omega-dps panel layout +**/ + +/* +4 col tile rows +*/ +.ocio-omega-dps-tile-content-region4 { + min-height: 1px; + width: 23.40625%; + float: left; +} + +.ocio-omega-dps-tile-content-region4 { + margin-right: 2.125%; +} + +.ocio-omega-dps-tile4a, +.ocio-omega-dps-tile8a { + margin-right: 0; +} + +/* +4 col tile rows -- modified widths in first row +*/ + +.ocio-omega-dps-tile1a, +.ocio-omega-dps-tile4a { + width: 16.8125%; +} + +.ocio-omega-dps-tile2a, +.ocio-omega-dps-tile3a { + width: 30%; +} + + +/* +3 col tile rows +*/ +.ocio-omega-dps-tile-content-region3 { + min-height: 1px; + width: 31.5%; + float: left; + margin-right: 2.75%; +} + +.ocio-omega-dps-tile3c { + margin-right: 0; +} + + +/* +bands +*/ +.ocio-omega-dps-band1a, +.ocio-omega-dps-band1c { + margin-bottom: 2em; +} + + + + +/* iPad or less */ +@media only screen and (max-width: 760px) { + .ocio-omega-dps-tile-content-region4, + .ocio-omega-dps-tile-content-region3 { + width: 100%; + float: none; + margin-right: 0; + } + +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.inc b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.inc new file mode 100644 index 00000000..15917dd8 --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.inc @@ -0,0 +1,40 @@ +<?php +// Plugin definition +$plugin = array( + 'title' => t('DPS'), + 'icon' => 'ocio-omega-dps.png', + 'category' => t('WCM Layouts'), + 'theme' => 'ocio_omega_dps', + 'css' => 'ocio-omega-dps.css', + 'regions' => array( + 'tile1a' => t('Tile 1a'), + 'tile2a' => t('Tile 2a'), + 'tile3a' => t('Tile 3a'), + 'tile4a' => t('Tile 4a'), + 'band1a' => t('Band 1a'), + 'tile5a' => t('Tile 5a'), + 'tile6a' => t('Tile 6a'), + 'tile7a' => t('Tile 7a'), + 'tile8a' => t('Tile 8a'), + 'band1b' => t('Band 1b'), + 'band1c' => t('Band 1c'), + 'tile1c' => t('Tile 1c'), + 'tile2c' => t('Tile 2c'), + 'tile3c' => t('Tile 3c'), + 'footer' => t('Footer'), + ), +); + +/** + * Implements hook_preprocess_ocio_omega_dps(). + */ +function template_preprocess_ocio_omega_dps(&$vars) { + $rows = array( + 'row_a' => array('tile1a','tile2a','tile3a','tile4a','band1a','tile5a','tile6a','tile7a','tile8a'), + 'row_b' => array('band1b'), + 'row_c' => array('band1c','tile1c','tile2c','tile3c'), + 'footer' => array('footer'), + ); + + $vars['panels_row'] = ocio_omega_base_panel_rows($rows, $vars); +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.png b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.png new file mode 100644 index 0000000000000000000000000000000000000000..8d50187b55595ce91d8e8ce0f80540ebb0fdefe8 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^MnIg$!3HE#iydr%6lZ})WHAE+w=f7ZGR&GI0Th%h zag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN!@$6p?CIhdQgQ3e9bc{{2ay9G z4Q-q*m_?OwzEz7=(b?0n+ir!j%VpkOZ4VYn-_Yi{6=C@Jk>x-64(_?n|9tYb@#)(3 zJ2{uBV<M+Y0|VnH+eN$9?Npwn6xXZ%dRud4=)S&_mMf2&=1qG3ZnE>S+i7xZi+fW~ z?|V|gzo)`MY*XZUnZV8Ge_Uf?V&M=_aA3QbeX{KD<2|d7o4%8M^23t<){nTYA8VtP zC6}^-6=X>D-fUr5n0e)f$-i3fPpfKdcU`e)%hy$K09ww((s9YG?xBI--5CkDe*CbR zy?o)6YpqB5z&aaPglvpLuV;U>wuYL;_M=G6S9$5v3no$54_1aQJHPiy#HqZOGnP%T zah-hp*P4k-n)y>+O?+Pb>Er`%ZjkeUb|mepj=ff9a;;Kt%g0w<uWe@E4!Gvwl*tIR zoI_xi+xF>dS6O`*@49qL*6)wMGEmPiVSYw72F`iWTpRZvnh%T<22WQ%mvv4FO#qSB BzAgX& literal 0 HcmV?d00001 diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.tpl.php new file mode 100644 index 00000000..bec1f6be --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-dps/ocio-omega-dps.tpl.php @@ -0,0 +1,148 @@ +<?php +/** + * @file + * Template for custom ocio-omega-dps Panopoly layout. + * + * Variables: + * - $css_id: An optional CSS id to use for the layout. + * - $content: An array of content, each item in the array is keyed to one + * panel of the layout. This layout supports the following sections: + */ +?> + +<div class="panel-display ocio-omega-dps clearfix <?php if (!empty($class)) { print $class; } ?>" <?php if (!empty($css_id)) { print "id=\"$css_id\""; } ?>> + + <!-- row_a --> + <div class="row-a panels-row <?php print $panels_row['row_a']; ?>"> + + <!-- tiles 1-4a --> + <div class="ocio-omega-dps-container ocio-omega-dps-tile-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile1a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile1a-inner panel-panel-inner"> + <?php print $content['tile1a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile2a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile2a-inner panel-panel-inner"> + <?php print $content['tile2a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile3a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile3a-inner panel-panel-inner"> + <?php print $content['tile3a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile4a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile4-inner panel-panel-inner"> + <?php print $content['tile4a']; ?> + </div> + </div> + </div> + + <!-- band 1a --> + <div class="ocio-omega-dps-container ocio-omega-dps-band-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-band-content-region ocio-omega-dps-band1a panel-panel band-panel clearfix"> + <div class="ocio-omega-dps-band-inner panel-panel-inner"> + <?php print $content['band1a']; ?> + </div> + </div> + </div> + + <!-- tiles 5-8a --> + <div class="ocio-omega-dps-container ocio-omega-dps-tile-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile5a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile5a-inner panel-panel-inner"> + <?php print $content['tile5a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile6a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile6a-inner panel-panel-inner"> + <?php print $content['tile6a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile7a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile7a-inner panel-panel-inner"> + <?php print $content['tile7a']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region4 ocio-omega-dps-tile8a panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-dps-tile-content-region4-inner ocio-omega-dps-tile8a-inner panel-panel-inner"> + <?php print $content['tile8a']; ?> + </div> + </div> + </div> + + </div><!-- /row_a --> + + <!-- row_b --> + <div class="row-band panels-row <?php print $panels_row['row_b']; ?>"> + + <!-- band 1b --> + <div class="ocio-omega-dps-container ocio-omega-dps-band-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-band-content-region ocio-omega-dps-band1b panel-panel band-panel clearfix"> + <div class="ocio-omega-dps-band-inner panel-panel-inner"> + <?php print $content['band1b']; ?> + </div> + </div> + </div> + + </div><!-- /row_b --> + + <!-- row_c --> + <div class="row-band panels-row <?php print $panels_row['row_c']; ?>"> + + <!-- band 1c --> + <div class="ocio-omega-dps-container ocio-omega-dps-band-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-band-content-region ocio-omega-dps-band1c panel-panel band-panel clearfix"> + <div class="ocio-omega-dps-band-inner panel-panel-inner"> + <?php print $content['band1c']; ?> + </div> + </div> + </div> + + <!-- tiles 1-3c --> + <div class="ocio-omega-dps-container ocio-omega-dps-tile-content clearfix row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-tile-content-region3 ocio-omega-dps-tile1c panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-dps-tile-content-region3-inner ocio-omega-dps-tile1c-inner panel-panel-inner"> + <?php print $content['tile1c']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region3 ocio-omega-dps-tile2c panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-dps-tile-content-region3-inner ocio-omega-dps-tile2c-inner panel-panel-inner"> + <?php print $content['tile2c']; ?> + </div> + </div> + <div class="ocio-omega-dps-tile-content-region3 ocio-omega-dps-tile3c panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-dps-tile-content-region3-inner ocio-omega-dps-tile3c-inner panel-panel-inner"> + <?php print $content['tile3c']; ?> + </div> + </div> + </div> + + </div><!-- /row_c --> + + + <!-- footer row --> + <div class="row-footer panels-row <?php print $panels_row['footer']; ?>"> + + <div class="ocio-omega-dps-container ocio-omega-dps-footer clearfix panel-panel row-fluid l-constrained max-width"> + <div class="ocio-omega-dps-container-inner ocio-omega-dps-footer-inner panel-panel-inner span12"> + <?php print $content['footer']; ?> + </div> + </div> + + </div><!-- /footer row --> + +</div><!-- /.ocio-omega-dps --> + + + + + + + + + + + + \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.css b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.css index d2855725..11695bd8 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.css +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.css @@ -4,15 +4,12 @@ **/ /* -tile rows +4 col tile rows */ -.ocio-omega-fourtiles-tile-content-region { +.ocio-omega-fourtiles-tile-content-region4 { min-height: 1px; width: 23.40625%; float: left; -} - -.ocio-omega-fourtiles-tile-content-region { margin-right: 2.125%; } @@ -50,15 +47,14 @@ flip-flop rows /* iPad or less */ @media only screen and (max-width: 760px) { - .ocio-omega-fourtiles-tile-content-region, + .ocio-omega-fourtiles-tile-content-region4, .ocio-omega-fourtiles-column.span4, .ocio-omega-fourtiles-column.span8 { width: 100%; float: none; + margin-right: 0; } - .ocio-omega-fourtiles-tile-content-region { - margin-right: 0; - } + .ocio-omega-fourtiles-column-left { margin-bottom: 2em; } diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.tpl.php index 12ee4d09..e57a5b5f 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-fourtiles/ocio-omega-fourtiles.tpl.php @@ -34,23 +34,23 @@ <!-- first row of tiles --> <div class="ocio-omega-fourtiles-container ocio-omega-fourtiles-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile1 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile1-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile1 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile1-inner panel-panel-inner"> <?php print $content['tile1']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile2 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile2-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile2 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile2-inner panel-panel-inner"> <?php print $content['tile2']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile3 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile3-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile3 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile3-inner panel-panel-inner"> <?php print $content['tile3']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile4 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile4-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile4 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile4-inner panel-panel-inner"> <?php print $content['tile4']; ?> </div> </div> @@ -58,23 +58,23 @@ <!-- second row of tiles --> <div class="ocio-omega-fourtiles-container ocio-omega-fourtiles-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile1 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile5-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile1 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile5-inner panel-panel-inner"> <?php print $content['tile5']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile2 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile6-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile2 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile6-inner panel-panel-inner"> <?php print $content['tile6']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile3 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile7-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile3 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile7-inner panel-panel-inner"> <?php print $content['tile7']; ?> </div> </div> - <div class="ocio-omega-fourtiles-tile-content-region ocio-omega-fourtiles-tile4 panel-panel tile-panel clearfix span3"> - <div class="ocio-omega-fourtiles-tile-content-region-inner ocio-omega-fourtiles-tile8-inner panel-panel-inner"> + <div class="ocio-omega-fourtiles-tile-content-region4 ocio-omega-fourtiles-tile4 panel-panel tile-panel clearfix span3"> + <div class="ocio-omega-fourtiles-tile-content-region4-inner ocio-omega-fourtiles-tile8-inner panel-panel-inner"> <?php print $content['tile8']; ?> </div> </div> diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.css b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.css index b3f1eddd..4bbbf2af 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.css +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.css @@ -3,27 +3,23 @@ * ocio-omega-tiles-equalcol panel layout **/ -.ocio-omega-tiles-equalcol-tile-content-region { +/* +3 col tile rows +*/ +.ocio-omega-tiles-equalcol-tile-content-region3 { min-height: 1px; - width: 33.9%; + width: 31.5%; float: left; -} - -.ocio-omega-tiles-equalcol-tile-content-region-inner { - margin-right: 5%; + margin-right: 2.75%; } .ocio-omega-tiles-equalcol-tile3, .ocio-omega-tiles-equalcol-tile6, .ocio-omega-tiles-equalcol-tile9 { - width: 32.2%; + margin-right: 0; } -.ocio-omega-tiles-equalcol-tile3-inner, -.ocio-omega-tiles-equalcol-tile6-inner, -.ocio-omega-tiles-equalcol-tile9-inner { - margin-right: 0; -} + .ocio-omega-tiles-equalcol-column { width: 51.064%; @@ -45,15 +41,9 @@ /* iPad or less */ @media only screen and (max-width: 760px) { - .ocio-omega-tiles-equalcol-tile-content-region, - .ocio-omega-tiles-equalcol-tile3, - .ocio-omega-tiles-equalcol-tile6, - .ocio-omega-tiles-equalcol-tile9 { + .ocio-omega-tiles-equalcol-tile-content-region3 { width: 100%; float: none; - } - - .ocio-omega-tiles-equalcol-tile-content-region-inner { margin-right: 0; } diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.tpl.php index d18887f6..a35887fc 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-equalcol/ocio-omega-tiles-equalcol.tpl.php @@ -34,18 +34,18 @@ <!-- first row of tiles --> <div class="ocio-omega-tiles-equalcol-container ocio-omega-tiles-equalcol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile1 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile1-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile1 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile1-inner panel-panel-inner"> <?php print $content['tile1']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile2 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile2-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile2 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile2-inner panel-panel-inner"> <?php print $content['tile2']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile3 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile3-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile3 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile3-inner panel-panel-inner"> <?php print $content['tile3']; ?> </div> </div> @@ -53,18 +53,18 @@ <!-- second row of tiles --> <div class="ocio-omega-tiles-equalcol-container ocio-omega-tiles-equalcol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile4 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile4-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile4 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile4-inner panel-panel-inner"> <?php print $content['tile4']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile5 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile5-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile5 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile5-inner panel-panel-inner"> <?php print $content['tile5']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile6 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile6-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile6 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile6-inner panel-panel-inner"> <?php print $content['tile6']; ?> </div> </div> @@ -72,18 +72,18 @@ <!-- third row of tiles --> <div class="ocio-omega-tiles-equalcol-container ocio-omega-tiles-equalcol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile7 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile7-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile7 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile7-inner panel-panel-inner"> <?php print $content['tile7']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile8 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile8-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile8 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile8-inner panel-panel-inner"> <?php print $content['tile8']; ?> </div> </div> - <div class="ocio-omega-tiles-equalcol-tile-content-region ocio-omega-tiles-equalcol-tile9 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-equalcol-tile-content-region-inner ocio-omega-tiles-equalcol-tile9-inner panel-panel-inner"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3 ocio-omega-tiles-equalcol-tile9 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-equalcol-tile-content-region3-inner ocio-omega-tiles-equalcol-tile9-inner panel-panel-inner"> <?php print $content['tile9']; ?> </div> </div> diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.css b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.css index 0485b38e..ba67d2d1 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.css +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.css @@ -3,27 +3,24 @@ * ocio-omega-tiles-twocol-flipped panel layout **/ -.ocio-omega-tiles-twocol-flipped-tile-content-region { +/* +3 col tile rows +*/ +.ocio-omega-tiles-twocol-flipped-tile-content-region3 { min-height: 1px; - width: 33.9%; + width: 31.5%; float: left; -} - -.ocio-omega-tiles-twocol-flipped-tile-content-region-inner { - margin-right: 5%; + margin-right: 2.75%; } .ocio-omega-tiles-twocol-flipped-tile3, .ocio-omega-tiles-twocol-flipped-tile6, .ocio-omega-tiles-twocol-flipped-tile9 { - width: 32.2%; + margin-right: 0; } -.ocio-omega-tiles-twocol-flipped-tile3-inner, -.ocio-omega-tiles-twocol-flipped-tile6-inner, -.ocio-omega-tiles-twocol-flipped-tile9-inner { - margin-right: 0; -} + + .ocio-omega-tiles-twocol-flipped-column { width: 33.8%; @@ -45,18 +42,12 @@ /* iPad or less */ @media only screen and (max-width: 760px) { - .ocio-omega-tiles-twocol-flipped-tile-content-region, - .ocio-omega-tiles-twocol-flipped-tile3, - .ocio-omega-tiles-twocol-flipped-tile6, - .ocio-omega-tiles-twocol-flipped-tile9 { + .ocio-omega-tiles-twocol-flipped-tile-content-region3 { width: 100%; float: none; - } - - .ocio-omega-tiles-twocol-flipped-tile-content-region-inner { margin-right: 0; } - + .ocio-omega-tiles-twocol-flipped-column, .ocio-omega-tiles-twocol-flipped-column2 { width: 100%; diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.tpl.php index f7433370..9f634841 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol-flipped/ocio-omega-tiles-twocol-flipped.tpl.php @@ -34,18 +34,18 @@ <!-- first row of tiles --> <div class="ocio-omega-tiles-twocol-flipped-container ocio-omega-tiles-twocol-flipped-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile1 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile1-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile1 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile1-inner panel-panel-inner"> <?php print $content['tile1']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile2 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile2-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile2 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile2-inner panel-panel-inner"> <?php print $content['tile2']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile3 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile3-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile3 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile3-inner panel-panel-inner"> <?php print $content['tile3']; ?> </div> </div> @@ -53,18 +53,18 @@ <!-- second row of tiles --> <div class="ocio-omega-tiles-twocol-flipped-container ocio-omega-tiles-twocol-flipped-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile4 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile4-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile4 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile4-inner panel-panel-inner"> <?php print $content['tile4']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile5 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile5-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile5 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile5-inner panel-panel-inner"> <?php print $content['tile5']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile6 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile6-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile6 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile6-inner panel-panel-inner"> <?php print $content['tile6']; ?> </div> </div> @@ -72,18 +72,18 @@ <!-- third row of tiles --> <div class="ocio-omega-tiles-twocol-flipped-container ocio-omega-tiles-twocol-flipped-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile7 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile7-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile7 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile7-inner panel-panel-inner"> <?php print $content['tile7']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile8 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile8-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile8 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile8-inner panel-panel-inner"> <?php print $content['tile8']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region ocio-omega-tiles-twocol-flipped-tile9 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-flipped-tile-content-region-inner ocio-omega-tiles-twocol-flipped-tile9-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3 ocio-omega-tiles-twocol-flipped-tile9 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-flipped-tile-content-region3-inner ocio-omega-tiles-twocol-flipped-tile9-inner panel-panel-inner"> <?php print $content['tile9']; ?> </div> </div> diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.css b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.css index 3bc11478..3421768d 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.css +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.css @@ -3,27 +3,22 @@ * ocio-omega-tiles-twocol panel layout **/ -.ocio-omega-tiles-twocol-tile-content-region { +/* +3 col tile rows +*/ +.ocio-omega-tiles-twocol-tile-content-region3 { min-height: 1px; - width: 33.9%; + width: 31.5%; float: left; -} - -.ocio-omega-tiles-twocol-tile-content-region-inner { - margin-right: 5%; + margin-right: 2.75%; } .ocio-omega-tiles-twocol-tile3, .ocio-omega-tiles-twocol-tile6, .ocio-omega-tiles-twocol-tile9 { - width: 32.2%; + margin-right: 0; } -.ocio-omega-tiles-twocol-tile3-inner, -.ocio-omega-tiles-twocol-tile6-inner, -.ocio-omega-tiles-twocol-tile9-inner { - margin-right: 0; -} .ocio-omega-tiles-twocol-column { width: 67.8%; @@ -45,15 +40,9 @@ /* iPad or less */ @media only screen and (max-width: 760px) { - .ocio-omega-tiles-twocol-tile-content-region, - .ocio-omega-tiles-twocol-tile3, - .ocio-omega-tiles-twocol-tile6, - .ocio-omega-tiles-twocol-tile9 { + .ocio-omega-tiles-twocol-tile-content-region3 { width: 100%; float: none; - } - - .ocio-omega-tiles-twocol-tile-content-region-inner { margin-right: 0; } diff --git a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.tpl.php index e2381239..89e816c1 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/panels/ocio-omega-tiles-twocol/ocio-omega-tiles-twocol.tpl.php @@ -34,18 +34,18 @@ <!-- first row of tiles --> <div class="ocio-omega-tiles-twocol-container ocio-omega-tiles-twocol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile1 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile1-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile1 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile1-inner panel-panel-inner"> <?php print $content['tile1']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile2 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile2-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile2 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile2-inner panel-panel-inner"> <?php print $content['tile2']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile3 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile3-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile3 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile3-inner panel-panel-inner"> <?php print $content['tile3']; ?> </div> </div> @@ -53,18 +53,18 @@ <!-- second row of tiles --> <div class="ocio-omega-tiles-twocol-container ocio-omega-tiles-twocol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile4 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile4-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile4 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile4-inner panel-panel-inner"> <?php print $content['tile4']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile5 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile5-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile5 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile5-inner panel-panel-inner"> <?php print $content['tile5']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile6 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile6-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile6 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile6-inner panel-panel-inner"> <?php print $content['tile6']; ?> </div> </div> @@ -72,18 +72,18 @@ <!-- third row of tiles --> <div class="ocio-omega-tiles-twocol-container ocio-omega-tiles-twocol-tile-content clearfix row-fluid l-constrained max-width"> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile7 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile7-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile7 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile7-inner panel-panel-inner"> <?php print $content['tile7']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile8 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile8-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile8 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile8-inner panel-panel-inner"> <?php print $content['tile8']; ?> </div> </div> - <div class="ocio-omega-tiles-twocol-tile-content-region ocio-omega-tiles-twocol-tile9 panel-panel tile-panel clearfix span4"> - <div class="ocio-omega-tiles-twocol-tile-content-region-inner ocio-omega-tiles-twocol-tile9-inner panel-panel-inner"> + <div class="ocio-omega-tiles-twocol-tile-content-region3 ocio-omega-tiles-twocol-tile9 panel-panel tile-panel clearfix span4"> + <div class="ocio-omega-tiles-twocol-tile-content-region3-inner ocio-omega-tiles-twocol-tile9-inner panel-panel-inner"> <?php print $content['tile9']; ?> </div> </div> diff --git a/profiles/wcm_base/themes/ocio_omega_base/preprocess/page.preprocess.inc b/profiles/wcm_base/themes/ocio_omega_base/preprocess/page.preprocess.inc index 55522cfc..87be9e70 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/preprocess/page.preprocess.inc +++ b/profiles/wcm_base/themes/ocio_omega_base/preprocess/page.preprocess.inc @@ -11,9 +11,6 @@ function ocio_omega_base_preprocess_page(&$vars) { */ $classes = array(); $vars['main_classes'] = join(' ', $classes); - - if(isset($vars['node']) && $vars['node']->type == 'ocio_landing_page') { - $vars['landing_page'] = true; - } - + + $vars['landing_page'] = isset($vars['node']) && $vars['node']->type == 'ocio_landing_page'; } diff --git a/profiles/wcm_base/themes/ocio_omega_base/process/page.process.inc b/profiles/wcm_base/themes/ocio_omega_base/process/page.process.inc index 5fbb0c2b..483efc79 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/process/page.process.inc +++ b/profiles/wcm_base/themes/ocio_omega_base/process/page.process.inc @@ -10,4 +10,8 @@ function ocio_omega_base_process_page(&$vars) { if(!$breadcrumb) { $vars['breadcrumb'] = ''; } + + if(isset($vars['node']) && $vars['node']->type == 'ocio_landing_page') { + $vars['omega_layout']['attached']['js'][] = drupal_get_path('theme', 'ocio_omega_base') . '/js/matchHeight/jquery.matchHeight-min.js'; + } } diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/base/_typography.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/base/_typography.scss index 8100021d..88ff9dbe 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/base/_typography.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/base/_typography.scss @@ -126,7 +126,7 @@ h2.block__title { a { @include link-colors($red, $blue, $orange, $red, $orange); font-weight: 500; - text-decoration: underline; + text-decoration: none; &:hover { text-decoration: underline; diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_media_magnet.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_media_magnet.scss index 6cd642db..4761ed80 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_media_magnet.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_media_magnet.scss @@ -1,32 +1,67 @@ .block--mm-widgets, .pane-mm-widgets-live-pane { .item { - margin: 1em 0; + margin: 1.5em 0; - .fa { - margin-right: 0.4em; + .content { + margin-bottom: 0.3em; + } - &.fa-twitter:before { - color: $twitter; - } - &.fa-facebook-page:before { - content: ''; - color: $facebook; - } - &.fa-instagram:before { - color: $instagram; - } - &.fa-rss:before { - color: $rss; + .network .fa { + margin-right: 0.6em; + position: relative; + top: 1px; + padding: 0.3em 0 0.25em; + width: 1.6em; + } + } + + .fa { + & { + color: $white; + padding: 0.55em 0 0.5em; + text-align: center; + width: 1.8em; + } + + &.fa-twitter { + background-color: $twitter; + } + + &.fa-facebook-page { + background-color: $facebook; + + &:before { + content: '\f09a'; } - &.fa-youtube-playlist:before { - content: ''; - color: $youtube; + } + + &.fa-instagram { + background-color: $instagram; + top: 2px; + } + + &.fa-rss { + background-color: $rss; + } + + &.fa-youtube-playlist { + background-color: $youtube; + + &:before { + content: '\f16a'; } } - .content { - margin-bottom: 0.2em; + } + + &.mm-single-channel { + .fa.mm-channel { + float: left; + margin-right: 0.6em; + + & + .pane-title { + line-height: 1.6em; + } } } } - diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_panels.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_panels.scss index a5e2e4ac..60c58d88 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_panels.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_panels.scss @@ -13,6 +13,27 @@ h2.pane-title { } } +.panel-panel-inner { + .panel-pane { + margin-top: 1em; + margin-bottom: 4em; + } + + & > .panel-pane:last-child { + margin-bottom: 0; + } +} + +.panels-ipe-editing .panels-ipe-portlet-content { + overflow: visible; +} + +.panels-ipe-sort-container { + & > .panels-ipe-portlet-wrapper:last-child .panel-pane { + margin-bottom: 0; + } +} + .sidebar-panel { background-color: $lt-gray; padding: 1em; @@ -30,31 +51,29 @@ h2.pane-title { // layout rows .panels-row { - padding-top: 2em; - padding-bottom: 2em; - - &.odd, &.even { - padding-top: 3em; - padding-bottom: 3em; - } - &.empty { - padding: 0; - } -} + padding-top: 2em; + padding-bottom: 2em; -.row-header.panels-row { - padding-top: 1em; -} + &.odd, &.even { + padding-top: 3em; + padding-bottom: 3em; + } + + &.first { + padding-top: 1em; + } -.row-tiles.panels-row { - padding-bottom: 1.5em; + &.last { + padding-bottom: 3em; + } + + &.empty { + padding: 0; + } } +//all layouts with tiles header panels .tiles-header-panel { - margin-top: 0; - margin-bottom: 2.5em; + margin-top: 0; + margin-bottom: 2.5em; } -.tile-panel { - margin-bottom: 1.5em; -} - diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_tiles.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_tiles.scss index 903bd007..b8dfd5d1 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_tiles.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/_tiles.scss @@ -7,93 +7,102 @@ &:hover { opacity: 0.9; } - - .title-box { - background: $white; - padding: 0.8em 1em; - width: 100%; - z-index: 99; - - &.lt-gray { - background: $lt-gray; - } - &.md-gray { - background: $md-gray; - } - &.dk-gray { - background: $dk-gray; - } - &.black{ - background: black; - } - &.red { - background: $red; - } - } - - a { - text-decoration: none; - @include link-colors($red, $md-gray, $blue, $red, $blue); - - &.lt-gray { - @include link-colors($dk-gray, $red, $blue, $dk-gray, $blue); - } - &.md-gray { - @include link-colors($white, $lt-gray, $blue, $white, $blue); - } - &.dk-gray { - @include link-colors($white, $lt-gray, $blue, $white, $blue); - } - &.black { - @include link-colors($white, $lt-gray, $blue, $white, $blue); - } - &.red { - @include link-colors($white, $lt-gray, $blue, $white, $blue); - } + + .fieldable-panels-pane { + background: $white; + width: 100%; + z-index: 99; + + a { + text-decoration: none; + @include link-colors($red, $md-gray, $blue, $red, $blue); + } + + &.lt-gray { + background: $lt-gray; + + a { + @include link-colors($dk-gray, $red, $blue, $dk-gray, $blue); + } + } + + &.md-gray { + background: $md-gray; + + a { + @include link-colors($white, $lt-gray, $blue, $white, $blue); + } + } + + &.dk-gray { + background: $dk-gray; + + a { + @include link-colors($white, $lt-gray, $blue, $white, $blue); + } + } + + &.black { + background: black; + + a { + @include link-colors($white, $lt-gray, $blue, $white, $blue); + } + } + + &.red { + background: $red; + + a { + @include link-colors($white, $lt-gray, $blue, $white, $blue); + } + } + + .title-box { + padding: 0.8em 1em; + + .title-text { + display: table-cell; + vertical-align: middle; + width: 100%; + + h2 { + @include font-size(1.8); + line-height: 110%; + font-weight: 300; + margin: 0; + margin-top: 1px; + padding: 0; + } + } + + .title-icon { + display: table-cell; + vertical-align: middle; + @include font-size(2.4); + } + } + + .field--name-field-tile-background-img img { + margin-bottom: -0.5em; + } } - - .title-text { - display: table-cell; - vertical-align: middle; - padding-right: 2em; - width: 100%; - - h2 { - @include font-size(1.8); - line-height: 110%; - font-weight: 300; - margin: 0; - margin-top: 1px; - padding: 0; - } - } - - .title-icon { - display: table-cell; - vertical-align: middle; - @include font-size(2.4); - } - - .field--name-field-tile-background-img img { - margin-bottom: -0.5em; - } - - } - //make text proportionally larger for small screens -@include breakpoint($small,true) { - .panel-pane.pane-bundle-tile-pane { - .title-text h2 { - @include font-size(2.4); - } - .title-icon { - @include font-size(3.0); - } - } +@include breakpoint($small, true) { + .panel-pane.pane-bundle-tile-pane { + .title-text h2 { + @include font-size(2.4); + } + + .title-icon { + @include font-size(3); + } + } } + .panel-pane.pane-bundle-tile-pane-plus-text-area { z-index: 9; padding: 0; @@ -103,40 +112,41 @@ opacity: 0.9; } - .text-areas { - background: $white; - padding: 1.4em 1.4em 1em 1.4em; - margin-top: -0.4em; - width: 100%; - z-index: 99; - - &.lt-gray { - background: $lt-gray; - } - + .fieldable-panels-pane { + background: $white; + width: 100%; + z-index: 99; + + &.lt-gray { + background: $lt-gray; + } + &:hover { opacity: 0.9; } - } - a { - text-decoration: none; + .text-areas { + padding: 1.4em 1.4em 1em 1.4em; + } - h2 { - @include font-size(2.2); - font-weight: 400; - margin-top: 0; + a { text-decoration: none; - @include link-colors($red, $red, $dk-gray, $red, $blue); - } - p { - @include font-size(1.3); - line-height: 150%; - @include link-colors($dk-gray, $dk-gray, $red, $dk-gray, $blue); - margin: 0.6em 0; - font-weight: 300; + h2 { + @include font-size(2.2); + font-weight: 400; + margin-top: 0; + text-decoration: none; + @include link-colors($red, $red, $dk-gray, $red, $blue); + } + + p { + @include font-size(1.3); + line-height: 150%; + @include link-colors($dk-gray, $dk-gray, $red, $dk-gray, $blue); + margin: 0.6em 0; + font-weight: 300; + } } } } - diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/nodes/_landing-page.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/nodes/_landing-page.scss index 8e521268..1c17b7a2 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/nodes/_landing-page.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/nodes/_landing-page.scss @@ -5,7 +5,74 @@ } h1#page-title { - padding-bottom: 0.4em; + margin-top: 0.8em; + padding-bottom: 0.6em; + } +} + +//attributes for banner images and banner image text +.node-type-ocio-landing-page { + .block--ds-extras-ds-hero { + position: relative; + max-height: 420px; + + .field--name-field-banner-image { + position: relative; + top: 0; + z-index: 9; + max-height: 420px; + overflow: hidden; + } + + .field--name-field-banner-image-text { + position: absolute; + width: 100%; + padding-left: 1em; + padding-right: 1em; + text-align: center; + z-index: 99; + @include font-size(3.0); + line-height: 120%; + + //color and position options + &.white{ + color: white; + } + &.dk-gray { + color: $dk-gray; + } + &.black { + color: black; + } + &.center-top{ + top: 1em; + } + &.center-middle { + bottom: 45%; + @include breakpoint($small,true) { + top: 1em; + } + } + &.center-bottom { + bottom: 1.2em; + @include breakpoint($small,true) { + top: 1em; + } + } + + //vary side padding by breakpoint + @include breakpoint($tab,true) { + padding-left: 4em; + padding-right: 4em; + } + @include breakpoint($wide,true) { + padding-left: 6em; + padding-right: 6em; + } + @include breakpoint($x-wide,true) { + padding-left: 10em; + padding-right: 10em; + } + } } - } \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_footer.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_footer.scss index 02ae2868..6773e526 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_footer.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_footer.scss @@ -47,8 +47,8 @@ color: $white; background-color: $md-gray; margin: 0 0 1em 1em; - width: 2.6em; - padding: 0.5em 0 .4em 0; + width: 2.55em; + padding: 0.55em 0 0.4em; text-align: center; display: block; diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_hero.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_hero.scss index 0c292d0f..879a61cc 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_hero.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/regions/_hero.scss @@ -1,8 +1,3 @@ .l-region--hero-wrapper { background: white; -} - -#block-ds-extras-ds-hero { - max-height: 400px; - overflow: hidden; } \ No newline at end of file diff --git a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_news.scss b/profiles/wcm_base/themes/ocio_omega_base/sass/components/views/_news.scss similarity index 97% rename from profiles/wcm_base/themes/ocio_omega_base/sass/components/_news.scss rename to profiles/wcm_base/themes/ocio_omega_base/sass/components/views/_news.scss index 2803c91c..c51953b8 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/sass/components/_news.scss +++ b/profiles/wcm_base/themes/ocio_omega_base/sass/components/views/_news.scss @@ -101,13 +101,15 @@ .pane-ocio-news-archive-trio-pane { h2.pane-title { + @include font-size(2.8); border-bottom: 1px solid $red; padding-bottom: 0.1em; margin-bottom: 0; } .view-header { - margin-top: -1.8em; + margin-top: -1.6em; + margin-bottom: 2.4em; } a.more-link { diff --git a/profiles/wcm_base/themes/ocio_omega_base/template.php b/profiles/wcm_base/themes/ocio_omega_base/template.php index 415b6b50..b3f9c891 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/template.php +++ b/profiles/wcm_base/themes/ocio_omega_base/template.php @@ -99,7 +99,6 @@ function ocio_omega_base_omega_theme_libraries_info() { return $libraries; } - /** * Create variables for custom panels panes created via FPP ** @@ -109,11 +108,10 @@ function ocio_omega_base_omega_theme_libraries_info() { function ocio_omega_base_preprocess_fieldable_panels_pane(&$vars) { $vars['tile_title'] = $vars['content']['title']['#value']; $vars['tile_url'] = $vars['content']['field_tile_link']['#items'][0]['url']; - $vars['tile_color'] = $vars['content']['field_background_color']['#items'][0]['value']; - $vars['tile_color_2'] = $vars['content']['field_background_color_2']['#items'][0]['value']; + $vars['classes_array'][] = $vars['content']['field_background_color']['#items'][0]['value']; + $vars['classes_array'][] = $vars['content']['field_background_color_2']['#items'][0]['value']; } - function ocio_omega_base_panel_rows($row_assignment, $vars) { $row_classes = array(); @@ -153,3 +151,43 @@ function ocio_omega_base_panel_rows($row_assignment, $vars) { } return $row_classes; } + + +/** + * Add classes to field_banner_image_text_color + ** + * Implements hook_preprocess_field(). + */ + +function ocio_omega_base_preprocess_field(&$vars) { + if ($vars['element']['#field_name'] == 'field_banner_image_text') { + if (isset($vars['element']['#object']->field_banner_image_text_color['und'][0]['value'])) { + $vars['classes_array'][] = $vars['element']['#object']->field_banner_image_text_color['und'][0]['value']; + } + if (isset($vars['element']['#object']->field_banner_image_text_location['und'][0]['value'])) { + $vars['classes_array'][] = $vars['element']['#object']->field_banner_image_text_location['und'][0]['value']; + } + } +} + +/** + * + ** + * Implements template_preprocess_panels_pane(). + */ +function ocio_omega_base_preprocess_panels_pane(&$vars) { + $pane = $vars['pane']; + + if ($pane->type == 'mm_widgets_live_pane' && $pane->configuration['single_channel']) { + $vars['channel'] = $pane->channel; + $vars['classes_array'][] = 'mm-single-channel'; + if ($pane->channel == 'fw' ) { + $vars['classes_array'][] = 'mm-channel-type-undefined'; + } + } +} + +function ocio_omega_base_process_panels_pane(&$vars) { + $pane = $vars['pane']; + +} diff --git a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php index 78036bc8..8d811755 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane-plus-text-area.tpl.php @@ -1,8 +1,10 @@ -<a href="<?php print $tile_url; ?>"> - <?php print render($content['field_tile_background_img']); ?> - - <div class="text-areas <?php print $tile_color_2; ?>"> - <h2><?php print $tile_title; ?></h2> - <?php print render($content['field_tile_text_area']); ?> - </div> -</a> \ No newline at end of file +<div<?php print $attributes; ?>> + <a href="<?php print $tile_url; ?>"> + <?php print render($content['field_tile_background_img']); ?> + + <div class="text-areas"> + <h2><?php print $tile_title; ?></h2> + <?php print render($content['field_tile_text_area']); ?> + </div> + </a> +</div> diff --git a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane.tpl.php index ba9f968f..b0e51725 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/fieldable-panels-pane--tile-pane.tpl.php @@ -1,7 +1,9 @@ -<a href="<?php print $tile_url; ?>" class="<?php print $tile_color; ?>"> - <?php print render($content['field_tile_background_img']); ?> - <div class="title-box <?php print $tile_color; ?>"> - <div class="title-text"><h2><?php print $tile_title; ?></h2></div> - <div class="title-icon"><i class="fa fa-angle-right"></i></div> - </div> -</a> \ No newline at end of file +<div<?php print $attributes; ?>> + <a href="<?php print $tile_url; ?>"> + <?php print render($content['field_tile_background_img']); ?> + <div class="title-box"> + <div class="title-text"><h2><?php print $tile_title; ?></h2></div> + <div class="title-icon"><i class="fa fa-angle-right"></i></div> + </div> + </a> +</div diff --git a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/mm-item.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item--single-channel.tpl.php similarity index 68% rename from profiles/wcm_base/themes/ocio_omega_4/templates/panes/mm-item.tpl.php rename to profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item--single-channel.tpl.php index 713bc41c..1fa46e81 100644 --- a/profiles/wcm_base/themes/ocio_omega_4/templates/panes/mm-item.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item--single-channel.tpl.php @@ -1,6 +1,6 @@ <article class="item {{channel.machine_type_name}}"> <div class="content"> - <span class="excerpt"><a href="{{link}}"><i class="fa fa-{{channel.machine_type_name}}"></i>{{{excerpt}}}</a></span> + <span class="excerpt"><a href="{{link}}">{{{excerpt}}}</a></span> </div> <div class="network"> <span class="attribution"><small>{{formatted_published_at}} via <a href="{{channel.url}}">{{channel.name}}</a>.</small></span> diff --git a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item.tpl.php index 713bc41c..493f4a62 100644 --- a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item.tpl.php +++ b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/mm-item.tpl.php @@ -1,8 +1,8 @@ <article class="item {{channel.machine_type_name}}"> <div class="content"> - <span class="excerpt"><a href="{{link}}"><i class="fa fa-{{channel.machine_type_name}}"></i>{{{excerpt}}}</a></span> + <span class="excerpt"><a href="{{link}}">{{{excerpt}}}</a></span> </div> <div class="network"> - <span class="attribution"><small>{{formatted_published_at}} via <a href="{{channel.url}}">{{channel.name}}</a>.</small></span> + <i class="fa fa-{{channel.machine_type_name}}"></i><span class="attribution"><small>{{formatted_published_at}} via <a href="{{channel.url}}">{{channel.name}}</a>.</small></span> </div> </article> diff --git a/profiles/wcm_base/themes/ocio_omega_base/templates/panes/panels-pane--mm-widgets-live-pane.tpl.php b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/panels-pane--mm-widgets-live-pane.tpl.php new file mode 100644 index 00000000..297d17af --- /dev/null +++ b/profiles/wcm_base/themes/ocio_omega_base/templates/panes/panels-pane--mm-widgets-live-pane.tpl.php @@ -0,0 +1,65 @@ +<?php +/** + * @file panels-pane.tpl.php + * Main panel pane template + * + * Variables available: + * - $pane->type: the content type inside this pane + * - $pane->subtype: The subtype, if applicable. If a view it will be the + * view name; if a node it will be the nid, etc. + * - $title: The title of the content + * - $content: The actual content + * - $links: Any links associated with the content + * - $more: An optional 'more' link (destination only) + * - $admin_links: Administrative links associated with the content + * - $feeds: Any feed icons or associated with the content + * - $display: The complete panels display object containing all kinds of + * data including the contexts and all of the other panes being displayed. + */ +?> +<?php if ($pane_prefix): ?> + <?php print $pane_prefix; ?> +<?php endif; ?> +<div class="<?php print $classes; ?>" <?php print $id; ?> <?php print $attributes; ?>> + <?php if ($admin_links): ?> + <?php print $admin_links; ?> + <?php endif; ?> + + <?php if ($channel): ?> + <i class="mm-channel fa fa-lg fa-<?php print $channel; ?>"></i> + <?php endif; ?> + + <?php print render($title_prefix); ?> + <?php if ($title): ?> + <<?php print $title_heading; ?><?php print $title_attributes; ?>> + <?php print $title; ?> + </<?php print $title_heading; ?>> + <?php endif; ?> + <?php print render($title_suffix); ?> + + <?php if ($feeds): ?> + <div class="feed"> + <?php print $feeds; ?> + </div> + <?php endif; ?> + + <div class="pane-content"> + + <?php print render($content); ?> + </div> + + <?php if ($links): ?> + <div class="links"> + <?php print $links; ?> + </div> + <?php endif; ?> + + <?php if ($more): ?> + <div class="more-link"> + <?php print $more; ?> + </div> + <?php endif; ?> +</div> +<?php if ($pane_suffix): ?> + <?php print $pane_suffix; ?> +<?php endif; ?> diff --git a/profiles/wcm_base/wcm_base.make b/profiles/wcm_base/wcm_base.make index e1b32c2e..122ff6e8 100644 --- a/profiles/wcm_base/wcm_base.make +++ b/profiles/wcm_base/wcm_base.make @@ -7,6 +7,9 @@ core = 7.x projects[calendar][version] = 3.5 projects[calendar][subdir] = contrib +projects[conditional_fields][version] = 3.0-alpha1 +projects[conditional_fields][subdir] = contrib + projects[context][version] = 3.6 projects[context][subdir] = contrib -- GitLab