PK!%MM readme.txtnu[=== Photo Gallery, Sliders, Proofing and Themes - NextGEN Gallery === Contributors: photocrati, imagely Tags: gallery, wordpress gallery plugin, photo gallery, image gallery, slideshow Requires at least: 5.5.4 Stable tag: 3.59.12 Tested up to: 6.8 License: GPLv3 Requires PHP: 7.0 The most popular gallery plugin that lets you create galleries and albums in seconds. == Description == = WordPress Gallery Plugin = NextGEN Gallery has been the industry's standard **WordPress gallery plugin** since 2007 and continues to receive over 1.5 million new downloads per year. It's easy to use for simple photo galleries, but powerful enough for the most demanding photographers, visual artists, and imaging professionals who need a comprehensive photo gallery solution. NextGEN Gallery offers complete WordPress gallery management with the ability to batch upload photos, import metadata, easily add, delete, rearrange photos and create an unlimited number of galleries. You can even simply provide a zip file or choose a folder to upload photos. But our photo gallery plugin doesn't stop there! > NextGEN Pro
> This plugin is the lite version of the NextGEN Gallery plugin, which offers all the gallery features you'll need like photo albums, lightboxes, backups, search, sharing, filtering, print fulfillment, eCommerce, animations, and tons more. [Click here to purchase the best photo gallery plugin for WordPress now!](https://www.imagely.com?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion) The free version of NextGEN gallery provides three main gallery styles (slideshow, thumbnail, and imagebrowser galleries) and two album styles (compact and extended), all of which come with a wide array of options for controlling size, style, timing, transitions, controls, lightbox effects, and more. Learn more about NextGEN WordPress Gallery Plugin features. The best gets better with full support for the Gutenberg block editor. Now you can add a photo gallery or album anywhere on your site, with a page builder type feel directly in the WordPress editor. We truly make creating, building, and editing galleries easy. = Feature List = We've built NextGEN Gallery to be extremely powerful and full of features. * **Albums** Organize multiple photo galleries into albums for easy sorting and viewing * **Tags** Group multiple images together with tags, with easy-to-update renaming and management * **eCommerce** Sell images from your photo gallery, or sell entire galleries with our built in payment processing. Works with Stripe and PayPal. * **Slideshows** Make your galleries automatically rotate through a series of images * **Themes** Access 84+ different types of themes to showcase your galleries * **Animations** Create visual interest with 25+ different types of animations for each gallery * **Watermarks** Protect your work with image and text-based watermarks. * **Capabilities** Customize who can read, edit, and publish galleries with refined permsisions controls * **Image Proofing** Let your customers choose which photos to purchase and improve your workflow. * **Print Fulfillment** Sell your photos and ship prints directly to customers with automated print lab fulfillment and zero commissions * **Auto Tax calculations** Automatically calculate sales tax when required for your customers. * **Coupons** Offer discounts and incentives to increase your gallery sales * **Lightroom Integration** Automatically sync and create photo galleries from Adobe Lightroom into NextGEN Gallery without any need to update your website. * **Social Sharing** Create viral social media opportunities when your images are optimized for Open Graph and X * **Image Commenting** * Add deep engagement to your images within the lightbox to increase gallery engagement * **Deep Linking** Link directly to a specific image from one of your galleries * **Frontend Search** * Add powerful filtering for your gallery based on tags * **Hover Captions** * Add social sharing, tiles, and descriptions for each image * **Digital Downloads** Offer digital downloads of your images for free, or chage for them with our eCommerce gallery plugin * **Right Click Disable** prevent images in your galleries from being downloaded with easy right click and drag/drop protection. * **Customization** * We've built in lots of individual customizations for each of our features so that you can make NextGEN Gallery perfect for you As you can see, we've built a photo gallery plugin that is suitable for everyone! Want a specific or missing feature? Just let us know. **NEXTGEN GALLERY DEMOS**
*Basic Thumbnail Gallery
*Basic Slideshow Gallery
*Basic Imagebrowser Gallery
*Basic Compact Album
*Basic List Album
**NEXTGEN PRO DEMOS**
*Photo Print Sales
*Photo Proofing
*Digital Downloads
*Pro Mosaic Gallery
*Pro Masonry Gallery
*Pro Tile Gallery
*Pro Filmstrip Gallery
*Pro Lightbox
= About Imagely = NextGEN Gallery is a WordPress gallery plugin maintained by Imagely. We're the WordPress photography experts. In addition to NextGEN Gallery, NextGEN Plus, and NextGEN Pro, we also make WordPress themes for photographers, providing beautiful turnkey websites for photographers. Learn more or connect with us:
*Imagely Website
*WordPress Themes for Photographers
*Turnkey Photography Sites
*NextGEN Gallery Documentation
== Credits == Copyright: Imagely 2016-2024 == Installation == INSTALLATION: The easiest way to start uploading your photos is to login to you WordPress dashboard, go to Plugins > Add New, search for NextGEN Gallery, and click to install the plugin. You can also download the plugin zip file from this page and upload it from the Plugins > Add New > Upload page. HOW TO USE: Just go to a page or post and add a NextGEN Gallery block. Within the block, click the Add Gallery button to open our Insert Gallery Window, where you can create, manage, customize, and display your WordPress photo galleries. You can also manage your photo galleries and gallery settings from the central options area under the "Gallery" tab on your dashboard menu. DOCUMENTATION: See NextGEN Gallery Documentation. That's it ... have fun! For more information, feel free to visit the official website for the NextGEN Gallery WordPress Gallery Plugin. == Screenshots == 1. Thumbnail Gallery 2. Slideshow Gallery 3. Imagebrowser Gallery 4. Manage Gallery Page 5. Insert Gallery Window 6. Gallery Settings Page == Shortcodes == NextGEN Gallery offers an easy-to-use Insert Gallery Window, which means you never need to work with shortcodes again when inserting and manageing galleries - if you would prefer not too. If you do want to work with shortcodes, there is a powerful shortcode system as you'd expect of a popular WordPress gallery plugin. Learn About NextGEN Gallery Shortcodes. For more information, feel free to visit the official website for the NextGEN Gallery WordPress Gallery Plugin. == Frequently Asked Questions == = Why are my photo galleries not opening up in a lightbox after I move my site? = This is often due to the URL paths to the CSS and JavaScript files used by the Lightbox Effects not being changed to relevant addresses based on the new site. This article will help sort out this issue if that is the case: Why are my galleries not opening up in a lightbox?. = Do you have documentation or tutorials? = Yes. See NextGEN Gallery Documentation. = Will this gallery plugin work with my theme? = Yup, NextGEN is a popular and well-established WordPress gallery plugin, and has been for a long time. It will work well with most other themes and plugins in the WordPress ecosystem. = Are the photo galleries flash based? = Nope, we do not use flash elements. = Are the galleries mobile friendly? = Yes, we've put a lot of work into this and, NextGEN Galleries are compatible with phones and tablets, inluding Android and iOS operating systems. All photo galleries are also responsive, so galleries look good on diverse screen sizes. NextGEN Pro also includes a fullscreen, responsive Pro Lightbox with mobile gesture support. It's great for viewing photos on mobile devices. = What is the difference between a gallery and an album? = In simple terms, Albums are collections of galleries. So Galleries contain your photos and Albums contain your Galleries. Albums act as links and placeholders to quickly and easily navigate your galleries. Galleries will actually display your images. = Can I upload multiple images at once? = Yes, you can batch upload entire photo galleries at one time or even include zip folders. = Can I password protect galleries? = Yes, WordPress allows you to password protect pages by default - which includes all photo galleries and content for the entire page. Password protection pages can be turned on and off at any time, with just a few clicks. = Can I add a watermark to the my photos? = Yes, you can add text or image watermarks to your gallery images. = Can I crop photo thumbnails? = Yes, each thumbnail image can be individually adjusted to suit your needs. = Is there pagination for photo galleries? = Yes, you can use pagination when displaying thumbnail galleries. You can adjust the amount of photos to be shown on a page at any time. = Can I customize the lightbox? = Yes, the lightbox can be configured with multiple options directly from the Dashboard, and there are multiple CSS styles, which can be applied and modified as well. If you want even more options, consider upgrading to NextGEN Pro and using the NextGEN Pro lightbox. = Can I add HTML to photo captions? = Yes, caption areas are fully HMTL capable. = Can I add an external links to galleries? = Since the captions are fully HTML capable, you can add external links and any other type of markup you wish. = Is NextGEN Gallery available in foreign languages? = Yes, our WordPress gallery plugin has been translated into dozens of languages - click here to find out more. = More Information = For more information, feel free to visit the official website for the NextGEN Gallery WordPress Gallery Plugin. == Changelog == = V3.59.12 - 04.23.2025 = * Fixed: Lightbox allowed html discrepancy = V3.59.11 - 04.17.2025 = * Fixed: SQL formatting error on plugin activation * Fixed: Translation warning in some admin pages = V3.59.10 - 01.28.2025 = * Fixed: Frontend search not working in some cases = V3.59.9 - 01.16.2025 = * Fixed: Title and caption allowed html tags. = V3.59.8 - 01.06.2025 = * Fixed: Apostrophes not being added to image title * Improved: Fields sanitization = V3.59.7 - 12.05.2024 = * Fixed: Links and styles on about page * Fixed: Readme update = V3.59.6 - 11.05.2024 = * Fixed: Title and captions escaping * Added: Onboarding wizard * Added: Optional usage tracking * Fixed: Blurry images on cropping = V3.59.5 - 09.24.2024 = * Fixed: Improved security = V3.59.4 - 07.18.2024 = * Fixed: Warning on WP import file * Added: Create gallery nudge * Added: Notifications count to the navbar menu * Fixed: Duplicated gallery name in the Gutenberg block * Fixed: Gutenberg block not working when adding into the page template * Added: Link on the header section logo and make it clickable * Fixed: Duplicate thumbnail in basic thumbnails carousel = V3.59.3 - 05.29.2024 = * Fixed: Improved transient registration. * Fixed: Rendering shortcodes on rest endpoints. * Fixed: Album name sanitization. * Removed: Deprecated admin notices. * Fixed: PHP 8.2 warnings = V3.59.2 - 04.10.2024 = * Fixed: Various bugs and improved UI/UX in various places. = V3.59.1 - 04.03.2024 = * Fixed: Warning when saving settings. * Fixed: Show ordered filenames on order details page. = V3.59 - 03.14.2024 = * Fixed: URI too long prevents "Sort or exclude images" from loading images. * Fixed: Correcting Lightroom clients being unable to sync image . * Fixed: Prevent PHP warning / error when watermarking. * Fixed: Sorting images from a Classic Editor launched IGW. * Fixed: Shutter lightbox randomly failing to load the captions. * Fixed: PHP notices and warnings. * Fixed: Addressed a bug reported by Dmitrii Ignatyev of Cleantalk. = V3.58 - 02.08.2024 = * Fixed: A potential fatal DivisionByZeroError caused by image files being deleted outside of NextGEN. * Fixed: A potential fatal error in the XML-RPC controller. * Fixed: An issue with classic (non-block) themes could break Pro's "Open album children in the Pro Lightbox" feature. * Fixed: Assorted potential PHP notices and warnings. * Fixed: Manage Galleries' "Images per Page" feature was not working. * Fixed: Passing 'gallery_width="auto"' to a Slideshow shortcode could result in a fatal error. = V3.57 - 01.10.2024 = * Fixed: Albums were generating an incorrect URL to their child galleries. * Fixed: Albums could generate a fatal error when viewing a sub-album. * Fixed: Do not call opcache_reset() if it does not exist. = V3.56 - 01.09.2024 = * Fixed: "Open album children in Pro Lightbox" feature was only working with block based themes. * Fixed: Adding more than one Pro display to one page caused galleries after the first to be unstyled. * Fixed: Albums with very a large number of children may have broken gallery displays if it relies on the dynamic-css feature. * Fixed: Continued fixing recently introduced incompatibilies with 3rd party extensions. * Fixed: Creating a new gallery from the Manage Galleries page was just reloading the page. * Fixed: Display Type settings could be forced back to their default settings when upgrading. * Fixed: IIS servers may generate a fatal error searching for an absolute path to template files. * Fixed: Inserting NextGEN singlepic from the Add Media popup was creating an without a src attribute. * Fixed: Possible PHP notices, warnings. * Fixed: Restored the NGG_DISABLE_SHORTCODE_MANAGER constant. * Fixed: Router->fix_page_parameter() generated a warning if the global $post is not an object. * Fixed: The button 'Scan folder for new images' was re-importing existing images. * Fixed: Updating tags via the Manage Tags page did not flush the displayed gallery rendering cache. = V3.55 - 12.13.2023 = * Changed: Changing SweetAlert library version to prevent the interference on .ru sites. = V3.54 - 12.01.2023 = * Fixed: Assorted possible PHP warnings and notices with PHP 8.0+. * Fixed: Compatibility with some 3rd party extensions. = V3.53 - 11.30.2023 = * Fixed: A potential conflict with NextGEN Pro Lightbox. = V3.52 - 11.30.2023 = * Fixed: A potential fatal error caused by accessing NextGEN Pro constants before they are defined. * Fixed: Compatibility with ARI Fancy Lightbox & Imagify, both could generate a fatal exception since 3.50. * Fixed: Paths to non-default template files were being calculated incorrectly, causing the incorrect template to display. * Fixed: Some bulk actions in the Manage Gallery page were broken by the last release. * Fixed: Users of PHP 7 and WordPress 5.8 or older could experience a fatal error due to the use of str_contains(). = V3.50 - 11.29.2023 = * IMPORTANT: Support for PHP 5.6 and lower has been discontinued. If you are running PHP 5.6 or lower, you MUST upgrade PHP before installing NextGEN 3.5.0. Failure to do that will disable NextGEN core functionality. * Updated: Major refactor of the plugin to support future improvements! Note: This release Requires at least PHP 7.0. * Fixed: We closed some issues affecting Lightroom users = V3.41 - 09.27.2023 = * Fixed: NextGEN 3.39 could generate a fatal error when viewing a gallery hosted on IIS. * Fixed: NextGEN 3.39 could not accept uploads from the LightRoom plugin. * Fixed: NextGEN 3.39 could generate a PHP exception when using custom template paths. = V3.39 - 09.13.2023 = * Fixed: Prevent template files from existing outside of the site document root, WP_CONTENT_DIR, or WP_PLUGIN_DIR = V3.37 - 05.05.2023 = * Fixed: A fatal error was thrown when uploading images' whose 'Flash' EXIF field is an array instead of the integer it should be. * Fixed: Correcting a possible error in our RankMath SEO compatibility. * Fixed: Prevent duplicate entries from being added to the photocrati_cache_tracker transient. = V3.36 - 05.10.2023 = * NEW: Added support for WP-Sweep so that NextGEN's tags will not be automatically removed. * NEW: Added NextGEN Gallery images to RankMath SEO's sitemaps. * Fixed: A JS error could trigger on the Manage Gallery page in some circumstances. * Fixed: In some specific situations NextGEN Gallery could cause an infinite loop on all pages. * Fixed: Manage Gallery's "Add Page" button used the legacy [nggallery] shortcode. = V3.35 - 02.03.2023 = * Fixed: Sites still using PHP 5.6 experience a fatal error due to an incompatibility with the latest version of Composer. = V3.34 - 02.02.2023 = * Fixed: FontAwesome could load SVG font files which broke some Pro Lightbox elements. = V3.33 - 01.18.2023 = * Fixed: FontAwesome icons were broken by 3.32 if not enqueued by another source. = V3.32 - 01.11.2023 = * NEW: Added the filter 'ngg_metadata_parse_order' * Changed: Now including all CSS & JS resources inside the plugin to avoid GDPR issues. * Fixed: Viewing sub-albums could result in a PHP warning regarding array_pop() PK!; composer.jsonnu[{ "name": "imagely/nextgen-gallery", "version": "3.5.0", "description": "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 30 million downloads.", "homepage": "https://www.imagely.com/", "license": "GPLv2", "type": "wordpress-plugin", "repositories": [ { "type": "vcs", "url": "git@github.com:awesomemotive/pope-framework.git" } ], "require": { "imagely/pope-framework": "v0.19", "ezyang/htmlpurifier": "4.17.0" }, "require-dev": { "nikic/php-parser": "4.18.0", "szepeviktor/phpstan-wordpress": "1.3.2", "phpstan/extension-installer": "1.3.1", "php-stubs/wp-cli-stubs": "2.9.0" }, "config": { "allow-plugins": { "phpstan/extension-installer": true } } } PK!֦,&&assets/css/about.cssnu[body[class*=" envira_page_nextgen-lite-"] *{box-sizing:border-box}body[class*=" envira_page_nextgen-lite-"] #nextgen-header{height:150px}body[class*=" envira_page_nextgen-lite-"] .nextgen-welcome-wrap{clear:both}.nextgen-panel{display:flex;background:#fff;padding:30px;border:1px solid #ddd;line-height:2;font-size:16px;line-height:25px;margin:0 20px 20px}.nextgen-panel.nextgen-litevspro-panel{display:block;padding:0}.nextgen-panel h3{font-size:18px;font-weight:600;line-height:1.2em;margin-top:0;margin-bottom:30px;text-transform:capitalize}.nextgen-panel p{font-size:16px;line-height:1.5}.nextgen-panel p a{font-weight:500;color:#7cc048;text-decoration:none}.nextgen-panel p a:hover{text-decoration:underline}.nextgen-panel ul{list-style:disc;list-style-position:inside}.nextgen-panel ul.list-of-links{list-style:none}.nextgen-panel ul.list-of-links a{color:#7cc048;text-decoration:none}.nextgen-panel ul.list-of-links a:hover{text-decoration:underline}.nextgen-panel .content{width:60%;padding-right:30px}.nextgen-panel .image{width:40%}.nextgen-panel .image img{max-width:100%;width:100%}.nextgen-panel .feature-photo-column{padding-left:30px;display:inherit}.nextgen-panel .feature-photo-column img{width:100%;margin:auto}.nextgen-panel .feature-photo-column.photo-left{padding-left:0;padding-right:30px}.nextgen-panel.mini-panel .feature-photo-column{padding-top:10px}.nextgen-panel.mini-panel .feature-photo-column a{margin:0 auto;height:auto}.nextgen-panel.mini-panel .feature-photo-column img{width:auto;margin:0 auto}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero{text-align:center}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero h2{font-size:21px}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero h4{font-weight:normal;font-size:14px;color:rgba(60,67,74,.6980392157)}#nextgen-admin-litevspro .centered{text-align:center}#nextgen-admin-litevspro h1{font-size:34px;line-height:32px}#nextgen-admin-litevspro p.centered{font-size:18px;line-height:21px}#nextgen-admin-litevspro.wrap{margin-left:0;margin-right:0}#nextgen-admin-litevspro .litevspro-table-header{background:#fff}#nextgen-admin-litevspro .nextgen-admin-litevspro-section{margin:0 0 30px 0;padding:30px;line-height:2}#nextgen-admin-litevspro .nextgen-admin-litevspro-section.no-bottom{margin-bottom:0;padding-bottom:0}#nextgen-admin-litevspro .nextgen-admin-litevspro-section.litevspro-table-header{padding-bottom:30px}#nextgen-admin-litevspro table tr td{border-bottom:1px solid #ddd;border-right:1px solid #ddd;padding:30px;vertical-align:top;width:33%}#nextgen-admin-litevspro table tr td p{font-size:18px;line-height:24px}#nextgen-admin-litevspro table tr td:last-child{border-right:0}#nextgen-admin-litevspro table{border-bottom:0}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero{border-top:0}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero .call-to-action{font-size:21px;font-weight:500;text-align:center}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero .call-to-action a{font-size:16px;color:#3871ac}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero p{text-align:center;font-size:14px;line-height:18px}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-hero span.nextgen-deal{font-weight:500;color:#00a32a}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table{padding-left:0;padding-right:0;padding-top:0}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table{width:100%;background:#f5f5f5}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table tr td:first-child{border-left:1px solid #ddd;border-bottom-color:#ddd;border-bottom-style:solid;border-bottom-width:1px}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table tr td:last-child{border-right:1px solid #ddd;border-bottom-color:#ddd;border-bottom-style:solid;border-bottom-width:1px;background-color:#f3f9fe}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table tr:first-child td{border-top:1px solid #ddd}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table th{text-align:left;font-weight:600;font-size:18px;padding-left:30px;padding-bottom:20px;padding-top:20px;border-top:1px solid #ddd;border-right:1px solid #ddd;vertical-align:middle}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table th:last-child{border-right:1px solid #ddd}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table th:first-child{border-left:1px solid #ddd}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table td{background:#fff}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table td strong{display:block}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table p{background-repeat:no-repeat;background-size:15px auto;background-position:0 6px;margin:0}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table p.features-full{padding-left:30px;background-position:0 4px;background-image:url(../images/icons/litevspro/tick.svg)}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table p.features-none{padding-left:30px;background-position:6px 6px;background-image:url(../images/icons/litevspro/cross_red.svg);background-size:15px auto}#nextgen-admin-litevspro .nextgen-admin-litevspro-section-table table p.features-partial{padding-left:30px;background-position:6px 6px;background-size:15px auto;background-image:url(../images/icons/litevspro/cross.svg)}.nextgen-am-plugins-wrap{display:grid;grid-template-columns:repeat(3, 1fr);column-gap:30px;margin:0 20px 20px}.nextgen-am-plugins{display:flex;flex-direction:column;background-color:#fff;border:1px solid #ddd;margin-bottom:30px;border-radius:6px}.nextgen-am-plugins-main{display:flex;flex-direction:row;padding:30px 30px 20px;flex-grow:1;text-align:left}.nextgen-am-plugins-main h3{padding-top:0;margin-top:0}.nextgen-am-plugins-main img{padding-right:15px}.nextgen-am-plugins-footer{display:flex;text-align:left;align-items:center;vertical-align:middle;padding:20px;background-color:#e8e8eb;border-top:1px solid #e6e6e6}.nextgen-am-plugins-footer .nextgen-am-plugins-install-wrap{margin-left:auto}.nextgen-am-plugins-footer .nextgen-am-plugins-install-wrap .spinner{float:none;margin:7px 10px 0}.nextgen-am-plugins-footer .nextgen-am-plugins-button{font-size:14px !important;height:35px !important;line-height:38px !important;border-radius:4px !important;background-color:#618e00 !important}.nextgen-am-plugins-status{font-weight:bold}.nextgen-am-plugins-status span{font-weight:normal}.nextgen-admin-3-col{display:flex;flex-wrap:wrap;margin-bottom:0px;margin:0 20px}.nextgen-admin-3-col .nextgen-cols{flex-grow:1;width:26%;text-align:center;border-radius:4px;padding:3%;margin-left:20px;background:#fff;border:1px solid #ddd}.nextgen-admin-3-col .nextgen-cols:first-child{margin-left:0}.nextgen-admin-3-col .nextgen-cols h3{font-size:24px}.nextgen-admin-3-col .nextgen-cols p{max-width:80%;font-size:16px;margin:20px auto}.nextgen-get-started-section{margin-top:20px}.nextgen-get-started-section .centered{text-align:center}.nextgen-get-started-section .nextgen-admin-get-started-panel h3{padding:0;margin:0 0 10px 0}.nextgen-get-started-section .nextgen-admin-get-started-panel p{font-size:18px;line-height:1.5;margin:30px 0}.nextgen-get-started-section .nextgen-admin-get-started-panel .button.nextgen-button{font-size:21px;height:50px;line-height:48px}.nextgen-get-started-section .nextgen-admin-get-started-panel .feature-photo-column{padding-left:30px;max-width:360px;min-width:350px;display:inherit}.nextgen-get-started-section .nextgen-admin-get-started-panel .feature-photo-column img{width:100%;margin:auto}.nextgen-get-started-section .nextgen-admin-get-started-panel .feature-photo-column.photo-left{padding-left:0;padding-right:30px}.nextgen-get-started-section .nextgen-admin-upgrade-panel{overflow:hidden;font-size:18px}.nextgen-get-started-section .nextgen-admin-upgrade-panel p{font-size:18px}.nextgen-get-started-section .nextgen-admin-upgrade-panel .feature-photo-column{position:relative;margin-right:-120px;margin-bottom:-540px;width:100%}.nextgen-get-started-section .nextgen-admin-upgrade-panel .feature-photo-column img{position:absolute;right:-30px;top:0}.nextgen-get-started-section .nextgen-admin-upgrade-panel .button.nextgen-button{font-size:21px;height:50px;line-height:48px}.nextgen-get-started-section .nextgen-admin-docs-panel{background-color:#f5f5f5;border-radius:6px;box-shadow:0 2px 5px rgba(0,0,0,.08);overflow:hidden;font-size:18px}.nextgen-get-started-section .nextgen-admin-docs-panel .nextgen-admin-header{display:flex;vertical-align:middle;align-items:center;justify-content:space-between;width:100%}.nextgen-get-started-section .nextgen-admin-get-started-banner{display:flex;background:#000;color:#fff;padding:10px 0;margin-bottom:60px;border-radius:6px}.nextgen-get-started-section .nextgen-admin-get-started-banner .banner-text{display:block;margin:0 auto;padding:10px 0 0 0;text-align:center;font-size:1.5em;text-align:left}.nextgen-get-started-section .nextgen-admin-get-started-banner .banner-text h3{font-size:1.5em;line-height:1.3em;margin:5px auto;color:#fff}.nextgen-get-started-section .nextgen-admin-get-started-banner .banner-button{margin:auto;max-width:33%;height:100%;vertical-align:middle}.nextgen-get-started-section .nextgen-admin-get-started-banner .banner-button a{height:auto;padding:15px 25px;font-size:1.45em;display:block;margin:auto}.nextgen-get-started-section .nextgen-help-section .button.nextgen-button{height:40px;line-height:40px;font-size:18px}@media screen and (max-width: 1400px){.nextgen-am-plugins-wrap{grid-template-columns:repeat(2, 1fr)}}@media screen and (max-width: 800px){.nextgen-am-plugins-wrap{grid-template-columns:repeat(1, 1fr)}.nextgen-admin-3-col .nextgen-cols{width:100%;margin:0;margin-bottom:30px}}PK!gs-s-assets/css/admin.cssnu[.wp-core-ui .button.nextgen-button{border-radius:6px}.wp-core-ui .nextgen-primary-button{border-color:#000;color:#fff;background-color:#000;-webkit-transition:background-color 100ms linear;-ms-transition:background-color 100ms linear;transition:background-color 100ms linear;padding:6px 16px;font-weight:700}.wp-core-ui .nextgen-primary-button:focus,.wp-core-ui .nextgen-primary-button:hover{background:rgba(0,0,0,.8);border-color:rgba(0,0,0,.8);color:#fff;box-shadow:none}.wp-core-ui .nextgen-secondary-button{border:1px solid rgba(96,96,96,.3019607843);color:#282828;background-color:#fff;box-shadow:none;border-radius:4px;padding:6px 16px;font-weight:700;-webkit-transition:background-color 100ms linear;-ms-transition:background-color 100ms linear;transition:background-color 100ms linear}.wp-core-ui .nextgen-secondary-button:focus,.wp-core-ui .nextgen-secondary-button:hover{border-color:#ebebeb;color:#646464;background-color:#ebebeb;box-shadow:0 2px 5px rgba(0,0,0,.08)}.wp-core-ui .nextgen-green-button{border-color:#618e00;color:#fff;background-color:#618e00;border-radius:4px;-webkit-transition:background-color 100ms linear;-ms-transition:background-color 100ms linear;transition:background-color 100ms linear}.wp-core-ui .nextgen-green-button:focus,.wp-core-ui .nextgen-green-button:hover{background:#87a20e;border-color:#87a20e;color:#fff;box-shadow:none}.wp-core-ui .nextgen-button-blue{border-color:#3871ac;color:#fff;background-color:#3871ac;border-radius:4px;-webkit-transition:opacity 100ms linear;-ms-transition:opacity 100ms linear;transition:opacity 100ms linear}.wp-core-ui .nextgen-button-blue:focus,.wp-core-ui .nextgen-button-blue:hover{background-color:#3871ac;border-color:#3871ac;opacity:.75;color:#fff;box-shadow:none}#nextgen-header-temp{position:relative;display:none}#nextgen-top-notification{border-top:3px solid #87a20e;position:relative;background-color:#eee;text-align:center;color:rgba(60,67,74,.8);height:40px;vertical-align:middle;border-bottom:1px solid #ddd}#nextgen-top-notification.nextgen-pro-active{height:0}#nextgen-top-notification.nextgen-pro-active p{visibility:hidden}#nextgen-top-notification p{margin:0;padding:0;line-height:40px;font-size:13px}#nextgen-top-notification a{color:#87a20e;font-size:13px}#nextgen-top-notification .nextgen-dismiss{position:absolute;top:10px;right:10px}#nextgen-header{background-color:#fff;background-repeat:repeat;height:120px;display:flex;justify-content:space-between;align-items:center;box-shadow:0px 1px 2px 0px rgba(0,0,0,.0588235294)}@media(max-width: 599px){#nextgen-header{padding-top:46px}}#nextgen-header h1.nextgen-logo{margin:0;margin-left:20px}#nextgen-header h1.nextgen-logo img{max-width:339px}@media(min-width: 600px)and (max-width: 767px){#nextgen-header h1.nextgen-logo img{width:90%}}#nextgen-header h1.nextgen-logo a.nextgen-logo-link{outline:none;border:none;box-shadow:none}#nextgen-header h1.nextgen-logo a.nextgen-logo-link:focus{outline:none;border:none;box-shadow:none}#nextgen-header h1.nextgen-logo a.nextgen-logo-link:active{outline:none;border:none;box-shadow:none}#nextgen-header .nextgen-right{padding-right:20px}#nextgen-header .nextgen-notifications-inbox{position:relative}#nextgen-header .nextgen-notifications-inbox[data-count]:after{background:#e02626;border-radius:50%;bottom:100%;color:#fff;content:attr(data-count);display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;height:16px;left:100%;line-height:18px;min-width:16px;position:absolute;text-align:center;transform:translate(-40%, 30%)}.nextgen-notifications-close:hover,.nextgen-notifications-inbox:hover{cursor:pointer}.nextgen-notifications-drawer{box-sizing:border-box;background:#fff;bottom:0;position:fixed;right:-400px;top:32px;transition:right 300ms ease 0s,visibility 0s ease 400ms;visibility:hidden;width:400px;z-index:1100;border:1px solid #ddd}.nextgen-notifications-open .nextgen-notifications-drawer{right:0;transition:right 300ms ease 0s,visibility 0s ease 0ms;visibility:visible}.nextgen-notifications-overlay{background-color:rgba(0,0,0,.3);bottom:0;display:none;left:0;opacity:.5;position:fixed;right:0;top:46px;transition:.5s;z-index:1052}.folded .nextgen-notifications-overlay{left:36px}.nextgen-notifications-open .nextgen-notifications-overlay{display:block}@media screen and (min-width: 783px){.nextgen-notifications-overlay{left:36px}.admin-bar .nextgen-notifications-overlay{top:32px}}@media screen and (min-width: 961px){.nextgen-notifications-overlay{left:160px}.folded .nextgen-notifications-overlay{left:36px}}.nextgen-notifications-header{background:#eee;border-bottom:1px solid #ddd;padding:18px 40px 18px 20px}.nextgen-notifications-header .nextgen-notifications-close{position:absolute;right:18px;top:22px}.nextgen-notifications-header .nextgen-notifications-close path{fill:#3c434a}.nextgen-notifications-header h3{color:#3c434a;display:inline-block;font-size:14px;font-weight:700;line-height:21px;margin:0 10px 0 0}.nextgen-notifications-list{height:calc(100% - 130px);overflow:auto}.nextgen-notifications-list ul{margin:0}.nextgen-notifications-list li{border-bottom:1px solid #ddd;display:flex;margin:0;padding:24px;font-size:14px;color:rgba(60,67,74,.6)}.nextgen-notifications-list li:first-child{border-top:none}.nextgen-notifications-list li h4{color:#3c4249;font-size:14px;font-weight:600;line-height:21px;margin:0}.nextgen-notifications-list p{color:rgba(60,67,74,.6);font-size:14px;margin:8px 0;margin-bottom:20px}.nextgen-notifications-list p.nextgen-start{font-size:12px}.nextgen-notifications-list .nextgen-button{padding:8px 14px;border-radius:4px;text-decoration:none;font-size:12px}.nextgen-notifications-list .nextgen-button.nextgen-button-primary{background-color:#37993b;color:#fff}.nextgen-notifications-list .nextgen-button.nextgen-button-secondary{border:1px solid #ddd}.nextgen-button-text{font-size:12px;color:rgba(60,67,74,.6980392157)}.nextgen-notification-actions .nextgen-button{margin-right:10px}.nextgen-notifications-footer{border-top:1px solid #ddd;padding:24px 27px;text-align:right}#nextgen-dismissed-title,#nextgen-notifications-show-active,.nextgen-notifications-dismissed{display:none}.show-dismissed #nextgen-notifications-show-dismissed,.show-dismissed .nextgen-notifications-active,.show-dismissed #nextgen-active-title{display:none}.show-dismissed #nextgen-notifications-show-active,.show-dismissed #nextgen-dismissed-title{display:inline-block}.show-dismissed .nextgen-notifications-dismissed{display:block}.nextgen-notifications-dismissed .nextgen-notification-dismiss{display:none}.nextgen-notification-icon{margin-right:10px}body.toplevel_page_nextgen-gallery #wpcontent,body[class*=" nextgen-gallery_page_"] #wpcontent,body[class*=" ngg-"] #wpcontent{padding-left:0}body.toplevel_page_nextgen-gallery .ui-widget .ui-dialog-titlebar-close,body[class*=" nextgen-gallery_page_"] .ui-widget .ui-dialog-titlebar-close,body[class*=" ngg-"] .ui-widget .ui-dialog-titlebar-close{background:none;border:none;box-shadow:none;color:#fff}body.toplevel_page_nextgen-gallery #wpfooter,body[class*=" nextgen-gallery_page_"] #wpfooter,body[class*=" ngg-"] #wpfooter{margin-top:auto;position:relative;clear:both}body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:normal;color:#646970;padding:30px 0;margin-bottom:20px}body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion-links,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion-links,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion-links{margin:10px 0;color:#646970}body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion-links span,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion-links span,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion-links span{color:#c3c4c7;padding:0 7px}body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion-links,body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion-social,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion-links,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion-social,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion-links,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion-social{display:flex;justify-content:center;align-items:center}body.toplevel_page_nextgen-gallery #wpfooter .nextgen-footer-promotion-social,body[class*=" nextgen-gallery_page_"] #wpfooter .nextgen-footer-promotion-social,body[class*=" ngg-"] #wpfooter .nextgen-footer-promotion-social{gap:10px;margin:0}.nextgen-nav-tab-wrapper{display:flex;flex-wrap:wrap;gap:0 30px;margin:0 0 20px 0;background-color:rgba(0,0,0,0);list-style:none;font-size:16px;font-weight:400;margin:30px 20px;border-bottom:1px solid rgba(96,96,96,.1490196078)}.nextgen-nav-tab-wrapper li{margin:0;padding:0}.nextgen-nav-tab-wrapper li a{display:block;padding:15px 0 12px 0;line-height:30px;border-bottom:3px solid #fff;box-shadow:none;color:#2c3338;text-decoration:none}.nextgen-nav-tab-wrapper .nextgen-nav-tab:hover,.nextgen-nav-tab-wrapper .nextgen-nav-tab-active{border-bottom:4px solid #618e00;font-weight:600}.nextgen-admin-content{position:relative}.nextgen-admin-content .nextgen-admin-modal *,.nextgen-admin-content .nextgen-admin-modal *::before,.nextgen-admin-content .nextgen-admin-modal *::after{-moz-box-sizing:border-box;box-sizing:border-box}.nextgen-admin-content .nextgen-admin-modal{text-align:center;width:730px;box-shadow:0 0 60px 30px rgba(0,0,0,.15);background-color:#fff;border-radius:6px;position:absolute;top:95px;left:50%;margin:0 auto 0 -365px;z-index:9999;overflow:hidden}.nextgen-admin-content .nextgen-admin-modal h2{font-size:20px;margin:0 0 16px 0;padding:0}.nextgen-admin-content .nextgen-admin-modal p{font-size:16px;line-height:24px;color:#777;margin:0 0 30px 0;padding:0}.nextgen-admin-content .nextgen-admin-modal ul{float:left;width:50%;margin:0;padding:0 0 0 30px;text-align:left}.nextgen-admin-content .nextgen-admin-modal li{color:#777;font-size:16px;line-height:28px;padding:6px 0;display:flex}.nextgen-admin-content .nextgen-admin-modal li svg{padding-right:10px}.nextgen-admin-content .nextgen-admin-modal-content{border-radius:3px 3px 0 0;padding:40px}.nextgen-admin-content .nextgen-admin-model-lists{width:100%}.nextgen-admin-content .nextgen-green-button{font-size:18px;text-align:center;padding:6px 16px;margin:30px 0}.nextgen-admin-content .nextgen-admin-modal-bonus{position:relative;padding:30px;background:#f5f5f5;text-align:center}.nextgen-admin-content .nextgen-admin-modal-bonus p{font-size:14px;margin:0px}.nextgen-admin-content .nextgen-admin-modal-bonus svg{position:absolute;border-radius:50%;top:-14px;background-color:#fff}.nextgen-admin-content .nextgen-admin-modal-text-link{display:block;margin:15px 0;font-size:14px;color:rgba(60,67,74,.6980392157)}.nextgen-admin-content .button.nextgen-button{font-size:21px;height:50px;line-height:48px;background-color:#618e00}.nextgen-admin-content .wrap{-webkit-filter:blur(3px);-moz-filter:blur(3px);-ms-filter:blur(3px);-o-filter:blur(3px);filter:blur(3px)}.nextgen-admin-content .wrap:hover>*{pointer-events:none !important}.nextgen-admin-content .nextgen-clear,.nextgen-admin-content .nextgen-clear::before,.nextgen-admin-content .nextgen-clear::after{content:" ";display:table}.nextgen-green{color:#87a20e}@media(max-height: 1300px){.nextgen-admin-content .nextgen-admin-modal{top:30px}}PK!zHTT assets/css/onboarding-wizard.cssnu[.nextgen-gallery-onboarding-wizard{background:#f1f1f1;min-height:100vh;width:100%;box-sizing:border-box;position:relative}.nextgen-gallery-onboarding-wizard-wrapper{padding:25px;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-direction:column}.nextgen-gallery-onboarding-wizard-step-welcome{margin:25px}.nextgen-gallery-onboarding-welcome-content{position:relative;width:100%;max-width:500px;background-color:#fff;border:1px solid #e8e8eb;box-shadow:0 2px 10px 0 rgba(0,0,0,.1);padding:50px;display:flex;justify-content:center;flex-direction:column;text-align:center}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-welcome-content{padding:30px;max-width:100%;width:fit-content}}.nextgen-gallery-onboarding-welcome-content h1{font-size:20px;margin:0 0 16px 0;padding:0;line-height:24px}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-welcome-content h1{font-size:18px;line-height:22px}}.nextgen-gallery-onboarding-welcome-content p{font-size:16px;line-height:1.5;margin-bottom:20px}a.nextgen-gallery-onboarding-wizard-back-btn{text-decoration:none;color:#666}a.nextgen-gallery-onboarding-wizard-back-btn :active{outline:none}a.nextgen-gallery-onboarding-wizard-back-btn:hover{color:#666}.nextgen-gallery-onboarding-wizard-primary-btn{background-color:#282828;color:#fff;border:0;border-radius:4px;font-size:14px;flex-shrink:0;line-height:1;cursor:pointer;text-decoration:none;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;height:40px;transition:background-color .2s ease;position:relative;overflow:hidden;min-width:140px}.nextgen-gallery-onboarding-wizard-primary-btn :active{outline:none}.nextgen-gallery-onboarding-wizard-primary-btn:hover{text-decoration:none;color:#fff}.nextgen-gallery-onboarding-wizard-primary-btn.nextgen-gallery-disabled,.nextgen-gallery-onboarding-wizard-primary-btn.nextgen-gallery-disabled:hover{background-color:#ccc;color:#666;cursor:not-allowed}.nextgen-gallery-email-error{color:red;font-size:13px;height:25px}.nextgen-gallery-onboarding-wizard-primary-btn.btn-large{margin-top:20px;padding:0 30px;font-size:16px;height:48px}.nextgen-gallery-onboarding-progressbar{position:relative;display:flex;align-items:center;justify-content:center;counter-reset:step;margin:30px 0 0 0}.nextgen-gallery-onboarding-progressbar .nextgen-gallery-onboarding-spacer{width:59px;border:1px solid #dcdde1;margin:0 12px}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-progressbar{max-width:100%}.nextgen-gallery-onboarding-progressbar .nextgen-gallery-onboarding-spacer{width:30px;margin:0 6px}}.nextgen-gallery-onboarding-progressbar::before,.nextgen-gallery-onboarding-progress{content:"";position:absolute;top:50%;transform:translateY(-50%);height:4px;width:100%;background-color:#dcdcdc;z-index:-1}.nextgen-gallery-onboarding-progress{background-color:#9fbc1a;width:0;transition:.3s;z-index:-1}.nextgen-gallery-onboarding-progress-step{width:16px;height:16px;background-color:#dcdcdc;border-radius:50%;display:flex;justify-content:center;align-items:center}.nextgen-gallery-onboarding-progress-step::before{counter-increment:step}.nextgen-gallery-onboarding-progress-step::after{position:absolute;top:calc(100% + .5rem);font-size:.85rem;color:#666}.nextgen-gallery-onboarding-progress-step-active{background-color:#9fbc1a;color:#f3f3f3}.nextgen-gallery-onboarding-form-step{display:none;transform-origin:top;animation:animate .5s;background-color:#fff;box-shadow:0 2px 5px rgba(0,0,0,.0509803922);margin:30px auto;max-width:850px}.nextgen-gallery-onboarding-form-step-active{display:block}.nextgen-gallery-onboarding-wizard-intro{display:flex;flex-direction:column;align-items:center}.nextgen-gallery-onboarding-wizard-logo{max-width:339px}.nextgen-gallery-onboarding-wizard-body{padding:30px 60px}.nextgen-gallery-onboarding-wizard-body .steps{color:#8c8f9a;font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.nextgen-gallery-onboarding-wizard-body h2{font-size:20px;line-height:22px;color:#333;font-weight:600}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-wizard-body{padding:30px 10px}}.nextgen-gallery-onboarding-wizard-footer{border-top:1px solid #e8e8eb;padding:20px 40px;display:flex;align-items:center}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-wizard-footer{padding:10px 20px}}.nextgen-gallery-onboarding-wizard-footer>*{margin-right:16px}.nextgen-gallery-onboarding-wizard-footer>*:last-child{margin-right:0}.nextgen-gallery-onboarding-wizard-footer .spacer{flex:1 0 auto}.nextgen-gallery-onboarding-close-and-exit a{text-decoration:none;color:#666}.nextgen-gallery-onboarding-close-and-exit a:hover{color:#666}.nextgen-gallery-onboarding-wizard-pages{display:flex;flex-direction:column;align-items:center}.nextgen-gallery-onboarding-settings-row.no-border{border:none;margin-bottom:0}.nextgen-gallery-onboarding-settings-row.no-margin{margin-bottom:0}.nextgen-gallery-onboarding-settings-row .settings-name .name.small-margin{margin-bottom:5px}.nextgen-gallery-onboarding-input-container{position:relative;width:100%;clear:both;margin:10px 0}.nextgen-gallery-onboarding-input-container .nextgen-gallery-onboarding-input{width:100%}.nextgen-gallery-onboarding-settings-row{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #e8e8eb}.nextgen-gallery-onboarding-settings-row .settings-name .name{font-weight:600;font-size:14px;line-height:22px;display:flex;align-items:center}.nextgen-gallery-onboarding-settings-row.no-padding{padding-bottom:0}.nextgen-gallery-onboarding-settings-row .settings-name .name{font-weight:600;font-size:14px;line-height:22px;display:flex;align-items:center}.nextgen-gallery-onboarding-description{font-size:14px;line-height:22px;margin:0}.nextgen-gallery-onboarding-input .nextgen-gallery-options{display:flex;flex-direction:row;flex-wrap:wrap;margin:20px 0}.nextgen-gallery-onboarding-input .nextgen-gallery-option{display:flex;align-items:center;margin-bottom:10px;width:50%}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-input .nextgen-gallery-option{width:100%}}.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=radio],.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=checkbox]{margin-right:10px}.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=radio]+label,.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=checkbox]+label{font-size:14px;line-height:22px}.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=radio]:checked+label,.nextgen-gallery-onboarding-input .nextgen-gallery-option input[type=checkbox]:checked+label{font-weight:600}.nextgen-gallery-onboarding-input input[type=text],.nextgen-gallery-onboarding-input input[type=email],.nextgen-gallery-onboarding-input input[type=password],.nextgen-gallery-onboarding-input select{width:100%;background-color:#fff;border:1px solid #d0d1d7;border-radius:3px;position:relative;overflow:hidden;margin:0;padding:9px 12px;font-size:14px;line-height:22px}.nextgen-gallery-onboarding-form-step .width-20{width:13%;flex-direction:column;align-items:self-start;padding-top:13px;margin-bottom:0}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-form-step .width-20{width:100%;margin-bottom:10px}}.nextgen-gallery-onboarding-form-step .width-80{width:86%;flex-direction:column;align-items:flex-start;margin-bottom:0}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-form-step .width-80{width:100%;padding-top:0}.nextgen-gallery-onboarding-form-step .width-80 input[type=email]{max-width:90%}}@media screen and (max-width: 768px){.nextgen-gallery-options.email_opt_in{display:block}}.nextgen-gallery-toggle{cursor:pointer;display:inline-block}.nextgen-gallery-switch{display:inline-block;background:#ccc;border-radius:18px;width:32px;height:18px;position:relative;vertical-align:middle;transition:background .25s}.nextgen-gallery-switch:before,.nextgen-gallery-switch:after{content:""}.nextgen-gallery-switch:before{display:block;background:linear-gradient(to bottom, #fff 0%, #eee 100%);border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.25);width:16px;height:16px;position:absolute;top:1px;left:1px;transition:left .25s}.nextgen-gallery-toggle:hover .nextgen-gallery-switch:before{background:linear-gradient(to bottom, #fff 0%, #fff 100%);box-shadow:0 0 0 1px rgba(0,0,0,.5)}input[type=checkbox]:checked+.nextgen-gallery-switch{background:#9fbc1a}input[type=checkbox]:checked+.nextgen-gallery-switch:before{left:15px}input#nextgen-gallery-tracking{position:absolute;visibility:hidden}input[type=checkbox]+.nextgen-gallery-checkbox{visibility:visible}@media screen and (max-width: 768px){#general .nextgen-gallery-options.nextgen-gallery-checkbox{flex-wrap:nowrap}}.nextgen-gallery-wizard-features .feature-grid{border-bottom:1px solid #e8e8eb;padding-bottom:16px;margin-bottom:16px}.nextgen-gallery-wizard-features .feature-grid:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.nextgen-gallery-wizard-features .feature-grid .settings-name{color:#3c4043}.nextgen-gallery-wizard-features .feature-grid .settings-name .name{display:flex;align-items:center;font-weight:600}[dir=ltr] .nextgen-gallery-wizard-features .feature-grid .settings-name .name .nextgen-gallery-pro-badge{margin-left:12px}[dir=rtl] .nextgen-gallery-wizard-features .feature-grid .settings-name .name .nextgen-gallery-pro-badge{margin-right:12px}.nextgen-gallery-wizard-features .feature-grid .settings-name .name+.nextgen-gallery-description-text{margin-top:8px}.nextgen-gallery-wizard-features .feature-grid .settings-name .nextgen-gallery-description-text{max-width:650px;color:#434960}.nextgen-gallery-wizard-features .feature-grid .settings-name .nextgen-gallery-installs-text{font-style:italic;margin-top:5px;font-size:12px;color:#434960}.nextgen-gallery-wizard-features .plugins{font-style:italic;max-width:650px;margin:16px auto 0;font-size:12px;text-align:center;color:#8c8f9a;line-height:1.5}.nextgen-gallery-wizard-features .go-back a{color:#434960;font-size:14px}.nextgen-gallery-checkbox{display:inline-flex;align-items:center}.nextgen-gallery-checkbox.disabled,.nextgen-gallery-checkbox.no-clicks,.nextgen-gallery-checkbox.disabled .form-checkbox .fancy-checkbox,.nextgen-gallery-checkbox.no-clicks .form-checkbox .fancy-checkbox{cursor:default}.nextgen-gallery-checkbox .form-checkbox-wrapper{display:flex}[dir=ltr] .nextgen-gallery-checkbox .form-checkbox-wrapper{margin-right:8px}[dir=rtl] .nextgen-gallery-checkbox .form-checkbox-wrapper{margin-left:8px}.nextgen-gallery-checkbox.round .form-checkbox span{border-radius:50%}.nextgen-gallery-checkbox.round .form-checkbox span:before{border-radius:50%}.nextgen-gallery-checkbox.round:not(.medium) .form-checkbox{width:24px;height:24px}.nextgen-gallery-checkbox.round:not(.medium) .form-checkbox .fancy-checkbox svg{width:12px;height:12px}.nextgen-gallery-checkbox.round:not(.medium) .form-checkbox span:before{height:22px;width:22px;line-height:24px}.nextgen-gallery-checkbox .form-checkbox{position:relative;display:inline-block;width:16px;height:16px;color:#fff;vertical-align:bottom;text-align:center}.nextgen-gallery-checkbox .form-checkbox input{display:none}.nextgen-gallery-checkbox.no-clicks input:checked+.fancy-checkbox.blue{background:#76992a;opacity:.4}.nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox.blue{background:#76992a}.nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox.green{background:#76992a}.nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox:before{background:rgba(0,0,0,0)}.nextgen-gallery-checkbox .form-checkbox input:disabled+.fancy-checkbox{background:#e8e8eb !important;border:1px solid #d0d1d7;cursor:default}.nextgen-gallery-checkbox .form-checkbox input:disabled+.fancy-checkbox svg{color:#8c8f9a}.nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{bottom:0;background:#e8e8eb}[dir=ltr] .nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{left:0}[dir=rtl] .nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{right:0}.nextgen-gallery-checkbox .form-checkbox .fancy-checkbox svg{color:#fff;width:10px;height:10px}.nextgen-gallery-checkbox .form-checkbox span{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#d0d1d7;transition:.2s;border-radius:3px;display:flex;align-items:center;justify-content:center}.nextgen-gallery-checkbox .form-checkbox span:before{position:absolute;content:"";height:14px;width:14px;bottom:1px;background-color:#fff;transition:.2s;font-size:14px;line-height:16px;border-radius:2px}[dir=ltr] .nextgen-gallery-checkbox .form-checkbox span:before{left:1px}[dir=rtl] .nextgen-gallery-checkbox .form-checkbox span:before{right:1px}.nextgen-gallery-row{box-sizing:border-box;display:flex;flex:0 1 auto;flex-direction:row;flex-wrap:wrap}.nextgen-gallery-col.col-xs-11{max-width:calc(91.6666666667% - 1.666666666px);flex-basis:calc(91.6666666667% - 1.666666666px)}.nextgen-gallery-col.col-xs-1{max-width:calc(8.33% - 1.666666666px);flex-basis:calc(8.33% - 1.666666666px)}.nextgen-gallery-col.text-xs-left{text-align:left}.nextgen-gallery-col.text-xs-right{text-align:right}.nextgen-gallery-wizard-license-key .license-cta-box{font-size:14px;line-height:22px;border-radius:3px;background-color:rgba(55,153,59,.12);padding:20px;margin:20px 0}.nextgen-gallery-wizard-license-key .license-cta-box>div:first-child{font-weight:600;line-height:1.4}.nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row{margin-top:12px}.nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col{display:flex;align-items:center}.nextgen-gallery-col.col-sm-6{max-width:calc(50% - 10px);flex-basis:calc(50% - 10px)}@media screen and (max-width: 768px){.nextgen-gallery-col.col-sm-6{max-width:calc(100% - 20px);flex-basis:calc(100% - 20px)}}.nextgen-gallery-col.col-sm-8{max-width:calc(66.6666666667% - 6.666666666px);flex-basis:calc(66.6666666667% - 6.666666666px)}@media screen and (max-width: 768px){.nextgen-gallery-col.col-sm-8{max-width:calc(100% - 20px);flex-basis:calc(100% - 20px)}}.nextgen-gallery-col.col-sm-4{max-width:calc(33.3333333333% - 6.666666666px);flex-basis:calc(33.3333333333% - 6.666666666px)}.nextgen-gallery-col.col-sm-2{max-width:calc(16.6666666667% - 3.333333334px);flex-basis:calc(16.6666666667% - 3.333333334px)}@media screen and (max-width: 768px){.nextgen-gallery-col.col-sm-2{max-width:calc(40% - 20px);flex-basis:calc(40% - 20px);float:left;margin:10px 20px 0 0}}.nextgen-gallery-col.col-sm-1{max-width:calc(3.3333333333% - 1.666666666px);flex-basis:calc(3.3333333333% - 1.666666666px)}.nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col svg{margin-right:10px}.nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col svg{width:16px;height:16px;color:#9fbc1a}.nextgen-gallery-wizard-license-key,.nextgen-gallery-onboarding-step-5{min-width:850px}@media screen and (max-width: 768px){.nextgen-gallery-wizard-license-key,.nextgen-gallery-onboarding-step-5{min-width:100%}}@media screen and (max-width: 768px){.nextgen-gallery-onboarding-step-5{padding:0 20px;max-width:90%;min-width:90%}.nextgen-gallery-onboarding-step-5 .nextgen-gallery-onboarding-wizard-footer{flex-direction:column-reverse;align-items:center;gap:10px}}.btn-transparent{background:rgba(0,0,0,0);color:rgba(60,67,74,.8);border:1px solid rgba(60,67,74,.8);border-radius:4px;font-size:14px;flex-shrink:0;line-height:1;cursor:pointer;text-decoration:none;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;height:40px;transition:background-color .2s ease;position:relative;overflow:hidden;outline:none}.btn-transparent :hover{outline:none}.nextgen-gallery-wizard-success{color:#141b38;padding-bottom:40px}.nextgen-gallery-wizard-success .actions>div{display:flex;align-items:center}.nextgen-gallery-wizard-success .actions>div:not(.no-border){border-bottom:1px solid #e8e8eb;padding-bottom:24px;margin-bottom:24px}.nextgen-gallery-wizard-success .actions>div .icon{min-width:24px}[dir=ltr] .nextgen-gallery-wizard-success .actions>div .icon{margin-right:16px}[dir=rtl] .nextgen-gallery-wizard-success .actions>div .icon{margin-left:16px}.nextgen-gallery-wizard-success .actions>div .icon svg{width:24px;height:24px}.nextgen-gallery-wizard-success .actions>div .content{font-weight:700;font-size:14px;color:#141b38;flex:1}.nextgen-gallery-wizard-success .actions>div .content .social-button{color:#fff}[dir=ltr] .nextgen-gallery-wizard-success .actions>div .content .social-button{margin:10px 10px 0 0}[dir=rtl] .nextgen-gallery-wizard-success .actions>div .content .social-button{margin:10px 0 0 10px}.nextgen-gallery-wizard-success .actions>div .content .social-button svg{width:14px;height:14px}[dir=ltr] .nextgen-gallery-wizard-success .actions>div .content .social-button svg{margin-right:10px}[dir=rtl] .nextgen-gallery-wizard-success .actions>div .content .social-button svg{margin-left:10px}.nextgen-gallery-wizard-success .actions>div .content .social-button.facebook{background-color:#4064ac}.nextgen-gallery-wizard-success .actions>div .content .social-button.twitter{background-color:#1da1f2}.nextgen-gallery-wizard-success .actions>div .content .social-button.youtube{background-color:#d63e22}.nextgen-gallery-wizard-success .actions>div:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.nextgen-gallery-wizard-success .nextgen-gallery-settings-row:last-child{border-bottom:none;margin-bottom:0}.nextgen-gallery-wizard-success .nextgen-gallery-settings-row.feature-grid .settings-name .name{font-size:18px}.nextgen-gallery-wizard-success .nextgen-gallery-settings-row.feature-grid .nextgen-gallery-col{display:flex;align-items:center}.nextgen-gallery-wizard-success .go-back a{color:#434960;font-size:14px}.nextgen-gallery-wizard-success .cta{margin:0 20px 40px;padding:20px;border:1px solid #e8e8eb;text-align:center}.nextgen-gallery-wizard-success .cta .content{flex-direction:column;display:flex;align-items:center;justify-content:center}.nextgen-gallery-wizard-success .cta .content .cta-header{font-size:24px;font-weight:700;line-height:1.2;margin-bottom:24px;margin-top:20px}.nextgen-gallery-wizard-success .cta .content .cta-description{line-height:1.4;max-width:630px;margin-bottom:55px}.nextgen-gallery-wizard-success .cta .content .nextgen-gallery-alert{width:100%}.nextgen-gallery-wizard-success .cta .content .feature-list{color:#141b38;font-size:16px;width:100%;max-width:600px;margin-bottom:50px}.nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col{display:flex;align-items:flex-start;margin:2px 0}.nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check{color:#9fbc1a;width:18px;min-width:18px;min-height:18px}[dir=ltr] .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check{margin-right:10px}[dir=rtl] .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check{margin-left:10px}.nextgen-gallery-wizard-success .cta .bonus-alert{margin:24px auto;max-width:650px}#selected-add-ons .nextgen-gallery-col{margin:5px 0}.nextgen-gallery-onboarding-input input[type=password]#nextgen-gallery-settings-key{width:92%}.nextgen-gallery-pro-badge{height:22px;border-radius:3px;background:#e8e8eb;color:#666;font-size:12px;line-height:18px;font-weight:600;display:inline-flex;padding:0 4px;align-items:center;margin-left:12px}.tooltip-container svg.nextgen-gallery-circle-question-mark{width:17px;height:17px;color:#8c8f9a;cursor:pointer}.tooltip-container{position:relative;display:inline-block;cursor:pointer}.tooltip-text{visibility:hidden;width:650px;background-color:#555;color:#fff;text-align:center;padding:5px;border-radius:6px;position:absolute;z-index:1;bottom:125%;left:50%;margin-left:-325px;opacity:0;transition:opacity .3s}@media screen and (max-width: 768px){.tooltip-text{width:250px;margin-left:-250px}}.tooltip-container:hover .tooltip-text{visibility:visible;opacity:1}.tooltip-text::after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#555 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}@media screen and (max-width: 768px){.tooltip-text::after{margin-left:116px}}#license-key-message{padding:10px;margin:10px 0}.nextgen-gallery-error{color:#333;background-color:#ffd2d2;border:1px solid #e599a1;padding:10px;margin:10px 0;border-radius:4px}.nextgen-gallery-success{color:#333;background-color:#d2ffd2;border:1px solid #a1e599;padding:10px;margin:10px 0;border-radius:4px}.nextgen-gallery-onboarding-wizard .nextgen-gallery-button-dark:focus,.nextgen-gallery-onboarding-wizard .nextgen-gallery-button-dark:hover,.nextgen-gallery-onboarding-wizard-primary-btn:focus,.nextgen-gallery-onboarding-wizard-primary-btn:hover{background:#9fbc1a;border-color:#9fbc1a;color:#fff;box-shadow:none}.spinner.nextgen-gallery-onboarding-spinner{position:absolute;margin:9px 10px 0}.selected-plugins-names{font-style:italic;max-width:fit-content;margin:16px auto 0;font-size:12px;text-align:center;color:#8c8f9a;line-height:1.5}.nextgen-gallery-onboarding-wizard .nextgen-desc{font-style:italic;margin-top:5px;font-size:12px;color:#8c8f9a}#ngg-pro-upsell{background:#f7f8f7;padding:7px;margin:15px 0;border:1px solid #ddd;border-radius:5px;width:100%}#ngg-pro-upsell a{color:#9fbc1a;text-decoration:underline}PK! H?((assets/images/logo.svgnu[ PK!T&,nnassets/images/logo.pngnu[PNG  IHDR<۲ pHYs  ~ IDATxkGǿ9˒l +e_$6+k!Λ{u%Lž,Dz`w6qbĂzNMw|`Z]oyawjaf E;W-Z^ݳX.0 Xêb%0k(=,0 S;(VZ;\Xvz daDV &bۭ~a9b%Ǥ%-*F"{3 0USHR1ܵ",//zU7a9NQc vgڭ 0%bR `0 TF.Sp3uN*0QFk<)rL)%KKdNiL71:Jvg̠ K)Z b \PWJ٭582\7e:)F&LXM;o|$^=.Μ3GqxH⻿>9Pi'0J)VEF t`#B} :YBE P~f')3hEwՅj1֞b)ʙBdzi'_H<̩0s=|sw5/ųRjz ^ų5j3vbL>vyQ(3BpNB=y7f~@@[Lú\!\/9>%)+X&K"Yi*Հ uxWϾAr[xf9ENWepU,cB4CbS$@:Q"S(2 `}@P[ȮTu&k1ǃ+)fZ!gN xim|}7j9+ mܹ wn$.8P3í(yf"aUc|\q?D+Jd"\Gqk}љySq; AJmImzr#L)x9S?Ϳ~IOv[n@>> *VEd/BJG| `|[a%If9(cuEN. }o^ђRXhGi!).pfrq֒bo&L5)V7o?j;5}wlw2MPHTSJ7j5hz!ju>Y^)5g5HO& ]z`%ak"Ȫ,E+Jɣؤ]2^<* ) Bj d"txmK)})rd&i:0 nu^IfUs&be9[yfԞv PEu*}݄o e(M#83@)nBMrU!3ާ ¶)_rx5G3c,dӞ' {=DgB<- 1kȸl@/N=-$kBy񚸎tzLl<zFYH j3q,HPdD̥OjD[51$f*A|xON@AFv: L !_u8C.߃rz)դd< EJلZ #$aѾeEf䌷)`kX6'Ǡ:b(5E TvGޠ$6y˖$q$SִWd\z_ DX%0gM:=q 33dj7a.(4`uj4ӎr)Q<,tuDgpYR#*ta<7?T5PBC)ȢI~+m b9.1Ks=6;W)~?wOO\ _X؋g%<~Ok4PS, !5A ݤzj@E^$/ʘ{]bf:M7Q 17Qn]Z!tcVRf&[LzUZaE݆b zr7ځ|) Z7u[-<p2jѠRV͸kؾ)f\q&o4G}a8aG&14ȑ(sPldf݄aՎ8 {o_oRmXL+ҲPp i/7ݣbE3ŭ)cuy1`ZL,,M^ vYO 9C4\(*1NbYˢA8x _J.%9Sh}ww}ڍ#-9%yHi^گ@ C`Rg`1 P *io151'֡ &RwJ2-#*g^ RJL7*+4;ȱV#_(6x:z uM[ϝk3+*ZKRY&Cg׍ tֆGL\~挙FСn My! jyYBG0XXbXGҩMTa)( 2Γ 3 ꡘlu)KSwa#0~ l+G޾z٦M"vtp^Yt\ 5 >+ R=GU ._cѾ hPRvɥk<|}tVg+Z3qؾFǣ/?0u{?|[T4op$l93­(.G΍,%lz|A岸~J,Fh83elyѲ!c]ʏ}Tgyf~ze-hM$uٜXo#gs5S܅qs'qȴc+/3 7}rD&(a83%e&ʋܸ5e@)պ)j.Sy脜|D5|T̤SݶN(×o=|i<[" \C ^"gKEt Iƙs>NfRa.kl ~!F: uuN z9acșAW߅2E:xcqCZVLbf8@ϴLG>WgC5\mns&r6gBm?CEq]Iv,Ќjs=1N'5|lLXeǟFGL?$~2ZO)x W}|SZhk8!wW{>}#n|KwPR|ঔұPNfB *☧l'͒db@pZ\H)Wbbڔ,|DYo g8$"ԁ=)]XC5%pk6HX)>3M\zjF/)yQ~_|DGjŦ:Q0W"PQF2rMJ5V*5H} b+n֨Xv<I \jb@j * e-6 ǪXu ǚ%aXfUas|~;8JcSЈW݀0 Ly1şUzoJ)!~b0:ߠkܵ%6taOZ*YFN􊮭؆4t2D˽U%Wz^o!eJD]KBw*l"!YܦjjKH{Fg2Єy$21lb8p޽4+*_LeJ2-3Jb]^P@x2tsǒO ,;i"*\LRDB)Pi !|stӀȨQ3j2OPhLe\|/(!ĢPxu$ Reg$_n/>]Z*$-|\a G0Bl37mӛJJCvI̔U(ӰyI/%q]5!jn[=)ʃ6^q! GILa>mr?LˡixizNS"1”(b j0׃jm =H|$҆*%݄3 Ja O*"x`z}܀Y8kڔkk٠zW4B<} ųRw~@M`^,6Ls9؊Ɏ~ɝ(TT+M˃=tib ~Va폔k $[3%a q3@ ø~>bzU\D,hc ȍ,?}c_z,lo;>K݃=`S(B01@9=_L_Oi65y";z%ԦԨچ߮fkAM~s8P^\MF#$_/=m#][mzfqr+ZnmZȰz/۸×k<Ǵo#J1HGxzocƴ>[Ո dv^#ε++;SrRleah8e Ck*N 5ʸJaBXT30δ[vЏ4G,0 SBMutj ʺj+80 9Z P!0 HIj k5 `]؟n@(-0 0VXô;ӋP+M:0 0Lmb L7rfAxmĜv̔a5JS 0 s] IENDB`PK!|K)assets/images/about/plugin-pushengage.pngnu[PNG  IHDRjS@bPLTE@@:B8@5@:@:E8@8D<@ˡf:~ RoFkŬpk돑&X_b+i=⺾vYC9; ЉxtuV0q"yWxER͆ 1l6\{JI:,#5 B TD=F!>skxpM#T ėģ}U~4CZ99ӬZr x%>;/xssvH~`CFdW/嚍>VבCI+ $R0Iy h͢ap7[#*ia8c$9~Th;b`nKs(|SIV#2Rxb'*h0:atj&MY9~/zJp7 )NI5q { WAl#פP 5ܐ5,@h1e-mQѫ_ vle*m!ic5-2u .pŠs_+v[̷1/?BM R,ɽvzf gq$15[zz>K7Ҷ!iIe>,趿R9|YL϶OEzrCQ}%b!ohC7Cb6d Xe^9r]0E|7]3m$X#%*'k.x\tmpky%$ba^l Om6FzA=ǣȋEar<ʂ!tj.hK׿/~ԠHIENDB`PK!ޑjj"assets/images/about/plugin-edd.pngnu[PNG  IHDR ߁BPLTE$(U[^9?Crvy+15GMPchk򜠡^IDATxr0} $[8H͔0[p=c~_RFjmMV'iI,ee!kd郊nMS΅)N3 Ɩs^$u}!,oy(dXˢw&_{yz#k^!`BSm<,ʠK$ Q'^(%@,eO;-uȀ% &RxdʏH;|I:ZeLJ|e%’<qB9e]v $þ\>}>AԣjrQd7U9֛aYIPUG8KA^ZQX͂&H{YOd;` ]\Hp\wKHr\ Њ,HqE$ډ}Ra5X_sލ.]ϼNxs?uQxmWX-ʾ\{Ţη(ֈ<qTwJI\w# %k\z\]$Z):4,Ottm+BTPFvwDX c>m+ BBwõ86U~ nxҲ,Y@[Ә BtsmYbWZRa3hܱRh1  c2 Zš}]W 5".Ӭ`VCEqEPz𦰷T$W *O ]l8\1QT4W*̰;T4aP\Lq*0-kjv%kKɕe"AF+=7"=\x \=.GțgYnTK|iT< *pϥ WkdPATlR.E&7 \DL.S@4~*bPA#ŏ6QA r"dx>CZ *|窇rC}W.I-JU?/ e.bQsɲ! $cQsPaI6U?OUNScaT\V"Bdģc?n !`$KzYN5%1.]vZ˸cOQVy":`?(kd_Ed Ț=1 GD"*FR#պg|EǺ^%k7BS6^, a ,b|o2(N}P Uj=,Vˆ(L6{ bqxe>^`޽<\)7{ y?QN!6NI: J5'4k0 Tf:uN,w14S}PkwFo錥7d+7^}Hqv4ORs56iV?Jy{$jc3j_B{}ù/Ia-" t%]y6Ӿ̢mot ʆm=cܘxʦ ڻpIH ɻm>kLZ 9*XoKL6 ^- 63Io" /p9C{EСC':tCtС:tСCN:t @:СC':tCtС:tСCN:t @:СC':tCtС:tСCN:t @:СC':tCt/ ͭ] !+6M)jLI3WoZ\:FƘ)c)㗙+c͕̕qk L1T?kd󞓒,fMNX4%b;CSS-2Z홞nqA- <T25UX(.]O׾wԔ^`Ds;(f,,hJ&?8N:PE`\Nx1la*/K _) ny=7&;t LYUDhqWi7F `N:fGޟXZf寈zz+Ԓ߀#':m"1K\asi\Sgr'iN:b'9*|solu @' +@'xDjo(?8i+[`Au @'Z+˷F,\()i ?rbyIIMh~px $xV't 7+6LJa3(,tP3dW=҃u T R2:\+Ui* ~5SP<~W\mF6H\~ٴg BgS ۬m&\zq1!Iu' fx4u G'< N]Gs'{*t>sc %a};c2m6H28BiPTe2*]Hd'=LJ%X H |XRDxn@z^U Wdʧ#Y_'t˾oL[!A2T 7n].mWO_~"r`XdaR\ p^!!Gu*{"ʼng)0jF(P|q_';@+0MSJVl0p Ԫ XOrx |e"`ZFD6pڈW? 7Q:).t Qx^;a'Ai|(wYMV3X,7>HS2LS35iFVCj!ϿBkbK[DBj1Ljh ",DjR7 =(C*:TyKq\bbeq'N6@X q5"2L#ϙj0Wa)9Mڠx`"|: )ryoVAcלd+bfv!R"mxk ֚+X ޹T_%ɜU`Sd(%D6ڸp8HqP wIim6P ʜ mO׎w]6|_W w>.^II1(QYG pjTl*([olAVW`< ~J{:#9|ܷCKvȉ}\啾.k=Ghc(e! vZL 6^T3^]nZҴG}Rt]xG"``2؀SΓpcW;roMQ;QKtݲsPΑS@NPc0C[' 26~1(!\w]c?T?+e_X$aQ;~JCßs3U򻶛ԩ?\5N1S@V9ZgE"%/E5`&5du _n*-D9W?|bi[pҿ+_j>?%P`5d- ϊ&q_ ijRmw$Z!nxD#hhG? 2偭2LM ƽ\. 0`2>!874*5OrIo|L}vt@^c v H.Ze?5rF8KOѫA'qju#>!}y M| BD?}W 0zx"&g mu-g,>w $Mvv?ӴirQ oh[-,= bNݲeROޖvI 7%؀x_ɀ ")Bc􂀠E8ﰠ1qLVIx4G>bp;z}n23AƂU& e?Sg/v*M;0)EM  3f|/:m7dkȰF+:@[O (ںm>EGs3kO6.NTlӮfjun>aZ.v1)9#]}b ]kZ Ū*fnQ@K 6S-wLXDJHݎ}.G*` #}7߁A&"zxL45IMXLm2YR .N˴ B`?)l&T, HVI& r5a IC kƄ\*VTZ)^]*JQ,VGM5uk6`򷚼. tef9Μ,R2;$w߾e4u7 `eOµ`om@fs![ܣ6h5p݆][O\f4nY)f+߁YԲRzZM܋/RyRLs%j'޴]t߈SgbPOa 7 *)\y9f=8m=a;׼$(me>@ gFsn^]7V #@Ym!/|fbJK јq`A(mw4ys/+%ezHg^{jm%eHY *ާj06MA ,Ar# T K[N|< 10Xl6c RO-&ݖ?wa5[d2ʲjcda'? ӃDUf#V|@;f-98Ht/*!~i'ӿ6k9+v xʯ{3۠ӞSy/I*Ggj|US1l9K[1 ԥKjܸq0˯қuu*AHN#4Ԝ(|2=@M%qLloZ>&2m ӧ+0뷂g/uP &4WOvk! ~S)++GSp], 0}Cc6_~_.)O'0+=?tNx ᆪ~L0W^WiIo7FSHYLTwR^o@) AyNl>C[,CP.8SA $s69j \ ?H:vlM!`%,_E e\CֽN*o0rGӑ#G봯s%\ս@O뿕ً:(3Plv4vh_X+7/+ ?-|73Ӿ W.Xޫ.늰nؿ]}no$ҥK/SV^(8>˯ѫmMGwRP EQ>]rX^nGx7 KNQ~L~~)aS+@Jŧ}6fr &~A WuӶcfm%[.=sQ~ ^^7yZ=ߑʂzw ^{8]f 1m!pz6`T C6a) sCO:+v3Y'Ck4H^!"yul;8cͻW '/IY.Lr?3mm8tHHх 8KoP` 9},y5GQEL~]vkc"`~Ff|*B:ڌ[XX}ߩ^zbTJmH{j_C}6:˧PN0pCP@4_D`ou_Rfmw5P\~Pޓ22;E+(Jg݇|ZpEXԯ:Z5-W4{?PO|~SOe `F_ps3 &ca.;zetl]bըQCN+cyXC,^H5Av #tRK7<)+./5ȵ%Tz6uqY߳2륦!ݻDQKb˲wbYd|9":{1v|^؃S->_j:Z|.gxO%Z} >~t{~FU,@DʼnǭII,Np|VȿVǏS֭D"JO>$S۶m]+3j߼.5j۝z@vQyD4t<3i{PnBV@JxmF6]i2!0lXV IyXU*d (v_x~2TkEXЎ#qqiR:vctJ\̓')4l,: sΚ+|j4]5 ]vyt[9mLsHxDxnY=lp4_Sb>=gH6ۧN)cpooܼ &ml]lWԻ,8h>b6?y@w.yc~Fwu9C){.98ib觟~Zj=gKaQ~E읟l,IöB)=zH2s0 "WW^j*݂ŭ=%ٍ6^x zXA7<C!c,kG!Md Pn7(@DYFBVc?daln,㉉})ry\V8 4ųjP:uf͚bs+sER}3 1JU~ @!~2;JK$m39?1/Q3r7x8Wr,PSs*Z9۴wfq9[#_$w1Yd$J-? XN V. x꽎F&X/Vx~䯟}YN +=Ҳj,~kuJ_`|Al;+,⾀Yz ` qJPFqXV uaZ R vQtDX_Cv)#tmVkpRDF̲;ddqcmm;Md+ť ^ ?&$ED  s`{_*~o5"iD M?6j4|':v9U2.]L9p<:Yu9*]Pf!{{Y(\Z1w[ܶiAR^9uY]+ `5 n@\=eGmT c(m`^@[ Q Ol?3/o_-i I?n @Md-vk@.]T|O'ÌWKm[/˚4A_,+j,8x/.ʕa8ל_yj0P9}:M>&fYN^*F|+mE]r9N tvcc7ל8㯈Vr:-ENˍƮK?9o8'mqar4=Y]An9oD nT5+NH ++ ޫթ~}ـ@urhhWHX;I%#Ql߉RgIU Lz9pZ%>[jEObg7"h\Unr'Ea"|Wki.2 ;,Y:ڔ(7r_Wf`w/ U-?Q h qeI}j,`ݾrN_^ݷ!W}r:ߓ kJBo<܉v|-IJM<nY: 1_a7kMـq8&r0?X҂ twTzAZiilZ?7OqgYJ6k[eb0 @Nypqx{ &1V ")46v/'Rqt)(v_`~x^=;_QF08x j~ 8s4(`[+00@/G*h: *g S jo҈owhDZRaTpozy<8+,w ?yw޲ Tn=H9/}W;t"y"2Dz#gWdqO^V;׮ .,Μ"?չn=+@[a1 A]M' 9_OK}mL<F3wE)0zp4wd? &rU(@9@:"x& VKu7]  X8xMuH=Jv׶][zEzӾEStP A!RiϦ]niqxKۙ ~ ?wdo*iY{1̆XFnI&) I@"Ee3]d62̲yxsq+t!v@j[TJJEn¤̾ꐐ-ҺTSeKl'$؉RJ)ӑ띶5 ;eTw^TH! r7;{V1 pPQHui'l5/zhLj+h8}Z%Osեﱆ#/FRi{Ś7yw3qo[? ?\nw._No /̜q.:>S.:U݀${cb5`$E5Vk E|MdXe. Y77 t/{q%AA#+3#Ÿ5S? /9'+pbJ)p̚^S#pƋGͩ:IJrPGI=+,\t1 t@-[-wNb l]g d깷׿@y_D-:3i/L)ItIw 8Y/VL]r*)AU e 8@Z=qωzdmǸd0m#pT*Ob5epM:O*{zVEd|ᒓ}M6Eb\pO^hǎj'K}wN*dW @C o6LCwJ@ƞds_SHZ_T"%;u?՞ujj6^S(bG;KQ+s8$~J(?J~ϧ 曔~K fEZƬN>yJC]J+{Bi&,eeeXYh1Kt jbO%2V3$: X9uqa 2zע`cNv(W%"juHS)S- ܁_?O.:Os(~o.k@LQRjN>(AQv\rjO{e+>M-fL>9NFRjJ,J*F0eټ@](,WQ4U cΥH?e0##Pwvߒʯ7+B/k3wyCcҥjn4($F]s^u6*NY0pVh7kDw MfUJ Ve&-O >v>f;}F#&mZ#P5PPџm`gaG]m$~AxeC"M$ظ;N\WT(?IHF!Mz,sڊLl%,Ӝu55Ҧ SXH Jʾ S˱`P@d^(cM ]CQh즪FN]i&%R>Nȧ~ tg(xaj6"_\V8Yq?0AmQŅJeE"o.4=|A-%#CQQ9=V 2Ųtܰ@gȢu.68 Xwhdp)3Kz&`;b%D/ Uoo[o&n5 D`&4)(iva*SU/7,'SU#QҼZԽ`#E,ʓ]mu @@ e\ ~TJJ 1qS= LI!䰩=Ym~W6Pe72ƴ̠5?=׊2 6BRS4 )}sU`J}(խJ>YSr#sCΓ;jM]k8ҟXgY9.JMɹwEeSzޕ@5*]s/{0+R'>11F! @"~Ŧ cRu `/ xhex &g ( Z?CN;eo(@mW~jo}!sWs;@髋D/3k0rmKNє`Di70 ,&[n܀"`ElaZ֕ⶸ3׏ ڰ~&d֬XBbGa(#.N~>\Xx WËmY3X<܆#,_;@٨8Ղ.?s%(hTUeZ*֥RJnJR&:Oaӑ}H7P 0gq٩((y9aAuOӫ! Zf%v'nQ(xo)5]d'zyy$'IMQuhM v :ݩw1^ \< %V¼y3ݚPtxi@-o,US|b\U{39vن>4J3:k̤&<+؟jFR T@ܔ~2 Δ"=)K5,6C~~9CP40T5KPl`Z& i¯q Դ@Ss9>QHوlflڳ,.E;5n'I/pzja_6&0lw4=U~>ɹDw UIƛɩE:6m* n@}B!^ҚczP `spivHk[l ϑ^&˯P 2ʤ%2E׭, -ξV}acg?v¿"U䟥Յsuफ़l.oXs7_m.~P&j"7V"G(hg%ZѰ64<?xF?IFG yO3kHVӢ'wi*#yɑoϸo< hECCҨ'iXh;OmhH(C``7b'\Lh]qZPMuJG\\uGDH87YϑE x=۟X 5I&^ \Xӣ_ +3~W/pwnSaC,7sΜ>]ݻ%{M9n=dq{==y}晢(G5G#S&2sXX;qsŰ |O. 3Ӎ,M1(hP Y:–I̒͠qx,MtZ]v&$$d(% 릒BieRJKɈyDhu|ZXHkSb .XBK)3mm\FӌnA[V6Ɩ 1U&e{ߕ<,'9͹YLK;ev4͍BKɵ XJCZf7/}h|0v׆x/˱nݓx8zWx_Cg; "$&(*ˬN7Q|*3;+~_S(~@yC6mެ_QXq9Fq N2eSchZ$¦~?,:9jӌ>P&;~J.Sŧc%ʤpv~V +b)s2qM*EW%GҪHZNia@(>5& R7%J.?!Do$j0aHr::}x$uU+{]nh&7%'P:V2[:O_Fr=ScezQ(8e0Ag o͐0p+%$8/2Ek翶WھU3k2Ȳ2ɲ2ʲz7å1{5/cy8.nVyJ5Eyݚ۽vo?@}Zko6RFؾ4Q2+9aV ͨcszCAFvV׺6/GSh]"QFB%J@sʀwp3[1PH2W%S|?$GVQ\QQOAVV_I0Si| )ص(׍{#o62D~ciĔ }Эչ!:\lV!+,؊l5K8lԛ)?acك ,dddeYeeefY9Tt{sWwnفo) >P||ǣ#oiJ(ԇuq: z3ERqm=Fp^N_kBxڄW9AJ2ԽN#11+E>9Dz"|469y2Cbŋg\GW?W[ձTE,q/R+-+#&1#W\G1??.([ȈlYoG,.8 ) q 4fGV!M~CF&ezh1qEsb]YX֊geYeeefY=~gս{9˔wӒQjL\P2*1\'P.+>:) ukSjSjԭH! )":iDj,VD<)ǥd tl8*i=N>V*;Z"Z`IP@WT;"}璓ʌ+θ}P){VA\0v0F W"b:A(mX!3tZJ҇rrPV2#Xpˆ pc6,Z^'SX_:QwSe+ ޸>+yzid稒"{ xd… > $h'fWC{:[VZRk?SAӧj]e{"sr䰃bp?*,.0˲UNceҚ&6er*s@L̔魔JwKWL0)Ow;/4'kRGkՔfU=zP34)2i\cQn4n-|ŐwKhΩrulO[$S~j Ҟ=hx 0>Ttptƶ2c.c% 6#]EG5*'Ơj .k/cݲe^9Ʉ4G*cKy d7GS5Wm]%D?J3ĉmt~:r$k+۷.v@[& 4 K: 04+&z7G>L]75L"+ژ0Ltםmo3xeZ;Ȝdy"v0>i=dM}aei,CêZ(iʜC픉s  ¸|~lJO/oY-<5nu^k-$+77[A4 eRLi4D7oO/Л=zOI"ʆ9sbx,#\dk 'Ed6y Mon˖ NɎ \k)sCNr/y_>+$` }؅⵵e}ukhФO}6O455$ը*|:>>4Y&YojL͵_+OrGPPIc_?] Qt $ yQTz6D܇WYJsUVl̈́Se HlsBFTU |֌խ@]p“a_ݚQaBSTK<LN1'׃9F.[_"WhfZAUMfǂOщd5Ef"/MI?̋cArys  +q2zh\㣱j3 *\;^IP.VjS j)S!<諒p `E rsXN`ߟc"5kr}"# ^//2%ȸ,U;/#e/9F:m$Dqa!ih8 Zef@sT,YĤ=U|3AEuIYk2l:WexuM1\`>ūM6Տcֳ{wC##53|C҄:JcM~dМ@ј'CsGd4yK$ 'rs[{Aao'\^Y@! ".dӘb |/gُwŷ7βū)lY*g| !L~h  +KS.\PPD/JCgPM `I&| f]- k"~.$ݙ2Lq+W`ܻw6"+oBQ j(}{^p иT@/9fcK&",#{?Ѓjrʔ\uY Ä`QQ8e b]4lڏ[ޔ=A`*7/<0|^=ߨaV ;4&:H EAKasɅwvμX\RV$ [cXC۷ϓ+6-GG,e,\N @<  *ʒƎ7,7PRAYuW~lϛ%ԂkHK es٤؈J{SQk:a^(ܛ"o|K(y$TVcJ{>(XVT*[d`]8Kh*kD:Zؔ3Mmy _6#1{gpsw~Z=\o6$G_Y @ ''ݜƉ&8]%2} b!i`9(fm;=+\ec`}ʟ\.aLh¾AWv/3++i>#j*k(K 6޺pj,  {!oǎ?f#B9$),.c[&T1Eۨt .7&_0M]v)XH`N_9[7Zspc&$ۮ&V|$ @(E%Q>gm޾.SRrYN(&-[\nk >ƊXƧ& <5 N׮$ܹShFNܘ~+7b$5ؙh?}濺 ancFg)#Wu9yr92 ൺJ!h-aIJټ3iފ HHEU<_Bs ʗOR}( 'N+51"mq( /ȆᐹQ]&\,siXRDsӌɽ濩jL5V .*"*]A {7s j3ReMyg 2J9Y-DS޷ܵFHTU)|$?]楩qCnǎQ]@&5^ٖHs̅QDA˩s\6@2+*CYK:l> F=^ˠԉ;<ߐpDvu6%@`o뛠>FG_7I7 ]ݪK#on-Ԟ_\VO_g@j *uu;n*죩z?sG+"'*ЍgE?Cט,7APE!!lH! ~ K ;Z M]P=D \E{Z|#\WdfPCl'Fx\&0))HXzQQ?ɢ=ߗu%{Nm!̺oS7qb~fU}e5{, ?#hzڽVBdT4!C &I pH1gK7$]~Rtx#VR ! uj.'*3aѩӫ3ہt qĂT,0|=aORL.ĠO'٩7}QJ+u`\.%f ׮o6^BkjE7 @@OMT|U{VЅЉûfNpa: ^ [_ 9~ 6>%QV=cǪKWTo4W 萐cuze%Xpuw|5#n"{o #m=>_ʋW%!¯^Y-7uw峭[ Et}O=|%wΝP!p( 屯XI<[F;23wLS^]i5.}F-]^QQF?toʪ}w7rkN&)ON@Wտ3/O`P'6}Ǎi%}d$pB 8K'{ EO739g&b|[N\0#>>~s"cѿ#^OԔM+ռsQb&!9vR= $T$_M&`y#TK%ԭP;6,.iG/m6x5#}&^krv.ɶk&*=_Q[O_k=c_7*^Hg# Œob4rN'~`V). 9l$^@oBȫW*_nةLqU6)Fw/Q5={B8810z4dĉՅ ˌdv-8_θ*ڶ*KѓrI\ttS5.-\PI-If}}0NH| ({_~Gk 1K>plT"q9]vOĵIj郧pJ_Qېw0-rQ~; 9oG>}ϙc5s u: CD7?%*BzIfWCSelѶ׺1a(3qn!vMyϏ#1a'MS{z<82ZmݻOm-? i`-Swic(:䲚4{(J|_ (F'Mˤry7o|/l|1@q̎󒇢Q0ZPɑ)T4B/CB!}[)/s8#α|#HTkpB%m)O S>#=jz)Y3 DSg /Bl'Z~\ }U@E%#rl0 ɩ'cTG<~q'm(@|\OMYIB?= {]2qJ;ZSK?oV}  & tٱo nGՎ3 @,r2g/#}NV.S|*4m=Bgk!) ٰ,-hXDZ`=?׾zozm:~E(w!tI RܧZ,Rz 'eI _>L(鄡N M }i葩?ĸ[|fG (!96Bck eiGԈ(nj1[1&F\yIsQy@YId AkVVc({ LݳZ_V5 t :[%SG6zmZڀ=Z ^7E4jjUjh+ +WbO}a`>|fVey!4$촎RPUƈuNBv ք'QRQkw;݀vq@u0n$@'$ON9c@\~.驫U8hcX?o12gnX؇t&4iYjA41usR da2F?ko,ӷlyCY崏+hӼkݧL}V"&k\BZ\蓁Z0w }Z2HgJhYF{v Zز = NvL"ƥURܐU_Q"ǎp58ܒYqj랽6ho谑3k?xL>fƎs$ܪE xRJQ:'7 ܘo=T[F󽿰'xUӴZOj>Qf1~bZF.?1vnZ4bZy4_gbZy_BR4H.SCJ}O41F rD\"cSg.!>wNHB f|*݄F^`U6Wx['cX%*PF/WCGn djй=C2]UGIQ_*T)yU/NbZFa|Si5Gp?W\ ?.9lyoM{?%50p6ZbZESzk1;L 2H0n:u\kdI s#/8y Y4uq3jLV&-Nߊ՘i8(~a$tEch)D:,uwJZOu:BnjӨX&7 LxM*kRJY Cц8lIңGm56t$AYM F EH;{=o8|fIBoNܸChiGOɟ z"٨$$}'>&U<9:|7|o\/rZ1ss*j@Q? @Yo >X\{@ו@Q&8A&7B#$9Th$~ČΔ荸XvH )_EBGԨ o6fS0?DS@ґUk#'hQqkɯk-ޫYIeӼJ=X\cGg`/>THX!W]s*P{EygM=ElE G,`2@wZ'm@3 ۾GTıC7XS/ڶI9y@.`I㟘T{&  b&|5imyhm*r"Vz7i G\n*]K\j7,UV?r՚FbOh$EzZ s|:k5qj6t]kP7~+/]Zٖg]uzKf6E( w 5$Y o`ڸs_Rz{y8٣UcRofbp!g &LRcw 2W;2UmCCibN^(,̈́Ta[#ⶣ4jpZ7nM0*qX/UJ51S^ɭ*t掠[^ B I 5U_/JGN $"&B9~ef1h?H@ fx{=z';v!A\<)ZCrKI衻=RyX Lq1jg j9AІ@@LT$w14AY_=%'t:<]+wU^oPAk7ĸp%-W<=td7@FIm.b};.~RKIܟalW$ G%AM@G`'6Oʉǁ"%fg Cw59r}rR*J{eTkϚ1?IRawwx1X(5,n2vjR_,Kn>UI)"UnE0lyJi7{lE 4@'oA/@+t?@by%/ؠ}w/FteDJ 9 bpi-`ظ9)TjP4Rw-yz1tg4!Ȋ24_ϲF\Fwضl%]x5R)_[vOoNv_ uU}[z0zSYNf!<7& /z U77xѵ߃ŷ1ˆ#4*"@AHA=#曮/7_߃V֘ɐ* \ĝ%>/gf 퓘D|YRMuS'9&Ō&.{dM@0M `嫑pбEt$~zYoji244Xc ?A`RFwRmitu=7;TP..]:q_A&-"՟r8lō-{`șhڡW' >W'SVM a 9ALJr!\ 0!T(7T%V=vFYn\QsR:i,45@0w u{yvbpȎdΛ,>k9 n:{MF{MT[jk*uq"*Sg rI?c;:W:[tus1mhU6߹jP@c.j>YLfzF ]1+IgޒxqȢ,imAi6WyT/6\CƟ@G\$ W*AR"1UX*/lUKLoe_w"/;[? PR;Dh0mq{pi[ޭa :z4|7͉"6bfOy^{GT9Mk-TYf{]˪f8O R`ʩϿ}$Dj+,W^^ZJ*MkyqL rYEf9 ;xP/`A 7Ņ jx0GwTO V8[)?kPxgʪW'/W^&B9OLfF0Ҷ5FO-O](Y+֫(߳d$䞳 ֓g$s9n? 1c#߫ZwQ4F ]ZEUY]ljgYiE%X ᱬ Q*3} \j\ͣ]%W]0d 2u:JA>WɖsMNs-VƅRߎTD{w#=^񳯣<Տ` 2ƟLӀ՗355f*?peAb3v#H,qMaƣgvb|>4r8 a5Wf%o#]:?˄w3AA\_ C8,v)=7S'MB-xKKhI62I&ERq9y3qM,V]5]0]ӏ#Z Bˆ" 't(tKzV1B7J.(./yAy(?l5˟_CLAՍ $nQ9bŖ٠b%H@NdwjlCͬ;VNlض9 p#/ ytޱ)7x d#`>}>`4vNhYA0H+P+/;‚ O_6/棾OjQⱎvX: wPGyREFI (6! mWppBIZw s56x :`gEZ_ ]"@?r\8^P^ܦq:~6C}ҷej?u? +W ,9@)[[uFl&5 02$CCnvVsaW % >\J^v8)ɧռ ۤ,sn0N}/[}1[`H Y<Cs |*VURmDw̘+&uNsZtoC Mͷ!9A!0d0u(=e+l^L2(W I*C!we֨E[8  F&O$8/v;QxM>G=^)ؚ Kd!hT<γ&yff,+V+& 7ҭ1ӤTcutw_Wr\,._b=%G@o⯮FP?thx[B9"lt\P~ckSa"] s b|'=~4_@> 7so !Gj@>Fl='Xbyw3eZ=}|@e'N߾}Q gŞ2.;Ks\б@$tZI0H#fv0#iB?#,aa%C< G*pj7^KQ-O<71g1Gx1t+yi ? 0JO 3vUU]RպO[rmm']XܙkS~?k~iu@_tCvGf602k* ߑtн ,? JnQycn}M[ĈٷOIx=7;2,sWf9F&?]V?qWp"Ag2Y v䔔cx0vnLzlzW+`΂{r;A?N2[5;9No2uOt5+Y 0s_&:~kaILMtZOgrVKf܈Xvڊ*k귅Edd3DY8L<̼m!(a2@mȥa'-`Aj  ⒐^Z( ̳C2,>*o1|nۡzaIu iL{>~ǨwVj Ot$g 1~}yXiGl? KjNu\FjG=+J8]biC%@Pr4Y)Ibг&}nSg=PjUPz %zfb1w W50;i5acwJI =m62ڠ}ZU\@gf|cyјp 9:Y@YK|D`(gI%>+~<Ggjl#r-8 yX4ە x 8#ǧ @ߖ  !t Q҆p 2?{gx2Zq岔q ;0R^{770nE+RZOKk=j#i}PcALROtStT|GM=Wb k7az;ZHM>v#Guy;L:ٲ0|p{!>_ ! 2]U?N _P7%KDa@cr^ғa6VQ ';I T'Tz˿C xwn~KY {4.4pK2{ʋH_ 1SN4dlɄ |k]?F`䜔5ҘCb,i h,Hۢ?+dFFx,ْdsQD՘CL:_K ^A[oRuS mܛݩ \_N4l ͹ʖl1, '~rr+\N4VVa-ϷO{UA 2XOYP v/.a ^xҵ0Wz,}TEOX|y uNuǨ+VWU6*qir듊3~Gq*vZ3We=^RElsvJ8ωmC<`d6X1@boxanZcJi-Ì2ZIe7~qܣ˭dBՆt@ay&|>C5?]$&Y'\~ _qJ0 ۑG ZHt5|L?8-AS&4c6mG q*n ߩtV}cA'JKYrҏKHZdO/j RҖ7hSZeqy0Zjr+zg:o @4ૡFDĭrȈZΨ,nK3^4~X&k:V$a AJ)} i0SEϕT8:߹+j༎\Vt#̗Kn@o5& Q=h_tʉnPGr4VɲCb|N]:P:hvI?xn"t혉@ڔ@ɿvsg//pW>VJ |v[n-פT3a\.0H<@^S]lg@QslF`K?Z3_y+p@g_wptٵȟq83 ]$8P 0n* PVm:{TtNHOQ>Eɕeq N[>;DpwYT޷RگD DQfRDH$3ٱ ,D\>g+CutTu˾L@fDSK0yYr"t(p3@gtn 匔t9+d-{gk 27 fA#;v3<:?bחq"?EUe%[WI`{gm:-:I)u -fGwi|nClH Iy^kj{c~2c<>AgԹ ՅKԥWdAxo F$,g-t݄/Y䢌2 bsF1b$ C<ȞNn6 1۟œbiZ]6[Y`ڜlU@B0tu2m,B ?acRTTe.Bbccߤ椫>uSrRp Q`".;뮿96!XwwVYQrQ )S)H~[T̹͍G*9ڀebXEGMRZqz.A0脢v5PIY wJshܢ.h"P z}L.RIL=H`a3QLv$] #`,k>.ȲCFƉPߧxEh5KuF#'mw &Rzͳ]2aJ!,qcIBzMM./:’T1:MaeViO]glwAmF~wmTNj=bb=H-6X [: }ƓV6y])A ohj/yQɯ Xu3s9?@~^2!]DC;:,) %BihғnuV$*Y(Qd3v`:v!%K@ʨ)EG+ gJ校I7w1'[)􄹗cg{z5W c90laW6l8Wq*q^-nc^y2<3ijW9?f^?:9CQ66!{PM_QS K`9it3lWndȍNJ&=Xz;yfe330BP%v<59ᰊ\ vp.+9Jx$F:G[novYӰj7 q,PӰ72 7dA9V%~?]:t9Qg 6+4;H)D+`tuȸ$LXTJ=0mȤ]G ziE0,੘KaYx Pfc!Ɯ ~tZNMG򉉦Ɉ'-A|dӌ?#~gшˬ>G G q3D+6! L6q)7Xq<&u@:xx?|OH27|5,׆^׏ dV?W>FgDb||.5`)Ȅyb06~OG^4ޢ+?P;9`I<߫$o\:QMgqV̩kB.?+02la [ϐc0}VR+g߶%^kv6+nt@6!}oVR13ye2\*RPsBy -jEw-Q\U8FGժ<<ƒ? ˯~W_W^ᕷiϿg_~w=ŀo[}6ߵl3yǐءWɝzީ~J>lD2f-Ǣ5Q# &މl<8z 'Yyx#<*:b,y!bDK"SR2 xL!7~o'$i$/A낁_1cxxM~ I$T?p= YkȨE{,\{ھGIDЦ]Zx|c;hiaG0Roo#EY+Ɵ2l= ?  Uh5{*[2/zxƊˏQ6ɪo]7j2X`Ҕ`k([ȅ7E-cdRFqqr[i3@kW4?W aSpan%J)Tle˗]|sՀ=PA5k=TUu^k} d:Ԩ[i35߰ iuxȐ<(R~|l:\|~oPڏuzOWp/{:eʕUlj%K,^_B1ڗ5q݋׎׾PY/j%Si%]K[v[-x1dA$n:'?FZSֳ^g ۗӺV@5#vG B9#@oh#1Ɔg!Lg25K<`|<\ |X=C9YSjd#5;}@&Zk( 0/C = t7!G-mH) `Y"%,>RmGS_˓V1l&k.ַe Xx"}buzz[D6K'7/qގ-jS>ϱ-Mq$>WY8ͱBiC\:c(uO0Ox q\9q:n)z{ײ?a} 7G ƃ͌aN|yܻ`gT4?@##UR /0ј\R9 LmjQ$6~[r {U/~nEԥ(ɱ`G4quiBcިpQw$~dw]{*o jbo& or3b jԱ#nRPx1~T-n = BͦJDa#Ȏp8*. ?DxwoPwyL;BW(^lvzInDsB`x4n+mR>#pC?vulMn}K(itnōN'@0GyQa[s)yoņX `^:X>-k{ ,i&CjU5{5*~N4zr?Ppͧ Oa> U&[)~庂tqQ5#\vmɧQí|WӲl8zFt]Qi2\u"~pMͨΡ9z-sXΰ$\e bt;Tr-RJxV+W" [H& rۆoK~K G`)SH#ȃ=PjFTA7ɧYOlaSU +k\!.g 70,ʦPrj[<7m֟u̜bKv``T^2I40 5x q:ɭ6x6Sڰ>6rAW5mJsBZljutUjnW5t.E#\CJZ@W ,aXYEnA#?z#l3\s-FLaqM&żEDlwcAV0)ƇQو|-tjYGl^6 R+ inYoAS rzeM:Skec7,k9&uЙʆ[Vk}àA4.ldg]q7vfo ]֝O:n"VY';qwIN/+fu-rzf\Z#i_1۷IENDB`PK!JAA+assets/images/about/plugin-sb-instagram.pngnu[PNG  IHDRL\IDATxsǕƿUՍ@pn)ɶ(4'b.ss>dklY غk|sPzuV{2JxD~@TPo|EͭY~''^&},>{~CTM^&}>_@&纠 J_؁~}U@FTtѕ~) Q Oύ>{':&(}4R q%C?^}|Q飒~:4G>)|O7|uIyP=r\JxH` t?:yJyH[v/}"#DžQrx12&N<~`{HucfLH&X=R9^h`;`f$O"yޝstR-;DJKz_GnS46chfW+dÈ?'.+ATSB#呗o=r:я(0{E7+К>)%/TosqkYΚ*0kBSI[Q\-phӮ. }u{Fe8i1D:L}y9䟂>=_i8twAnFSaO}=qg .Դ-N!IW{_ڸ f3x2ټc~Qw# DºxCm~Чѧ ԝ> R.OUEJηt+@?Ru|L.$G3gcoO` [(T#}r}F'蟝~#-z=wE%؍>_!/BjS,oGG`-}X@No j@,_ 1-{lxx4F69Ipt$o=v|΁8͎s@fEg|L|?aןڈ w[&YA٤ZWֱVG Gr=zdo .\޸rҹF[+cE3JTX[uP>ܮA͂]P'VZ9H6?{ELWR(892:Z=8,-+ muo@yfJ+0e@ JR !胧>ff&bx+kW~Kw'<GG>8{F.,?[){w=Nt 14RnW%5R0 OBUc 30]ѿlE6Frg1z@'[7]qMc~31~z%}PAyq MyQ<<;AK.G6F+ o}h ;[3rd '9ڻ>s[q!UVOOS !Wy}lFP6rXkZ uto\uҗ4g6w̚ϑQQlI@ ӛE9IȶNON(ʕ_(8Gl` ݾt\Aƙk?{9m9A/G>#C/:i&Lܮ-yJ?aÃR+l#a>]Z4;'89(&LcAr(%MR#b0T0QuF(t e ƘpT%G%YVbfzA^0YB>NҦ\6_ E~8=&F4wUh4dI ѓEp|g/~1( CٶHP_}À::>DJ_JmdvZhx_-orW` Sx|W6*d>5CUNQ.R,_%!YRj۝B [G% MI*P"$Gz烟,mxDҁ "{ WEyq3 K#S. Ke5GʃH6 o>#}&'hezTL%A|MB G .}eD'?ō+wa_A(hMqNd; \|۹MAEh,F?k@ %&?LJQuMˋsO=!13ҕkg7aFk +օ&9g6ևs_Qݏh8 0V/_nhNBq:׿]b0X|xpItvᆵ$3(Yzش:LC$TMc4 Iѯ S W&b\+'sAD(^k>;;FkV/};xUww>>tmOֽmH'!&)+tg[0Fzzat]`AWn}wWӿʐ  {Wގ3x)}/UAˬW%jS:.~aBkG{F$]^\֏οF abat@HGד_m-uVm5a֓\LID+ݕo/=:1? !L w y/>ӽZIDP[&Ԅ0IzW[L$5h?:إw?1DfVEA^p5B.V&>El[m.Jy. @*6]-hK!$LK]P˹Xm vG8W^w/00qPyxLgig>`$=6g-jLE+CC}?3MAGWΖ?OG nbR.)%\G] "IѰ% sn5VX2fgcc!/&ڍGt 7?/3UO!19SmMX5TUL;@`;>XKDZ0V%qC=xy\W 6ڗ(ܮ^3_ <;ښp:1%I_, d>Je+~O >l;#ӳ%æQXTIDH} qLTUN:.) í~kHʶ5'kf WH z[A\#R(ɪ+ r䌧AH)3T{=?1g_/mOZ[jl\w?%} gJb=Nz.AjC?pAHYzov6$/\3g&AR C5>'TZ' Xa0c=6+so~J~B6q6bVҧb1|7pq8dr)W_jJR0wzmޡPn OߓS<K=}V5&'_l3]s{NA PZO<K*گ7IV`KEh9NyR!6?;ts>8^DXEK 0(AJlJ;`ZiϖXQ8y3zZ\Cdwsz[Xi}XY r2HN?.ƅ <TKM<;pBcƢt~E?ny:M*Es1#dș>@pzj6d =qe)-?oŸڄ(14~|x?T}"گ$mBE8/ 2s kf?lw`}"ZO uE=ySn~$aҷ]gN-[.XQPY%jB"f@}:$<gF7V_)ŘrpH>̇~%z&PLG?O lE.3!@i2u# vA\g}N?㊧5v-[؋$UxlNi + i1'7lM@22{V~EXJA4 .'gY+J z\ƚ~,N"櫶9&*1hv@:!wm'i'VF^\GRq@z\;L՜do,T5JrPC^L+;֖atcXEj[=M3BRDG>㟌ᖺtj~ ChuQp8ԇ? h#}TRȺU!JTf nYkNل;~/wO&t耣u0 ku>+$8=jJw~NMhekN 2zK6հQZpNYTRK?1HRnu7yѶKI(oLGu93ټ+zɊG$Ae&&6 ϛ~ ;P=m'ۆ%t-U\hx$3C3/@n톩uig5IBrIF>;g?;׍h+פ;vED|\&&emYK~Jª\$O2J']M{~pjFClJBE.D&T =pPZvᎽw2և DJ}c3KG23U쟄;1}rս}VW IuADsnf¢[)鋅sr:9&Ͷ;-33:L侍[Ʀ@KŃ4lh48PI+.;K2[wq(m\M%9ruSuPIgqaUJ0e3LkD>c4*$U*@͕!:KGHxf@ecf8;rwDZddjJ-uŘMfP5,fB-_:}3ڜ̓n|^L0K]P8>؄1WFAug_][qzHnp lgFѸ_xqtVA U/ё~&4e#}'7`Εw]bRBv8;U; p&bKJJ?`#u}L#?k[JѶ>ڮAZԢ@,;Q6ڃ2=VtS7&It6 oMB|-jsDN#_=j_ǚ$ -uMƲo{8 ;muH?L,zmY#) υ>j۾tD @Qq]1Tշ[9+Y9= gX:̹Es:\nASM_UЇ6M 滐9:ɅO- [?4NC I %raPK*FlŸ@ngd/} }D$  IB 9$$)Gumdn -e^='HdZXe[yMdh;:|v?+ hp;gFG &-T$))RMVIA`AلWGqL[qY&z??\ JIBD Bԭ6_د9 )\ͅ."D{Һ\jNx>nbϖVqBe 9I0NR!DTz+֎nA?<-o-qpY9ciM2)nAV}Ue,эFI.̑> 9~nwk$XQ* G>Gi7h'I/̆Zo:=}LKMo_v?B>[P]+bi>Ltin<]Gnъ>L]駝Ehٚ<ӫINEҙ}Ŷ҂Mxw4-}>͍>^}qW%ҧD*ǯ}Џ%vі>j.h-ƽE/>;+Oo H+@/D\:/"}LAŻҨ4 3KM.(߄yD>Q{!ҧj4?w L9R"IENDB`PK!&0&0'assets/images/about/plugin-seedprod.pngnu[PNG  IHDR}$/IDATx}}UsJvBR6&C_! Ek>fʴ d Li-ifna(0j ib .en̔hJ[٫Y=]9Wc޽}sG1 z[X>>e> @)a= A0BuƸ5yW?['Bon} Pa#lܫb>fPܶ$ "noBY^#2*%`Xz(n#Ь@L@ B$D9@樘 S:WpA(kXOMNxwbU],BD=inlN@ "%՞32" %bDb$u`M%a$9np ֤?9(@H^?"|$BګN; $)b_@XW`CY݄ p^~c_9FP!! %?+Zo}-xy&b ciQc]+7tObc1fq߄lDk^owyVC7|jΌn6yPq˟$)9X! A1bksK/o?_OB98lr_ A(B=(p 4E<< $J@K>@^PK>!(Hb]U[zyyle{, Hk\mgou0]cERv{)ŠŐ$b>F#e]խ}8=tkftpx"% .2\ [H$ffH<>Xhur7v>%(@P1 ꁼ1aࡐSs?|l`"4g,!9W8q <ђnt{7- |u%~ j<7pRn7Z/lt)ޡ V #2[)JX,^Po[Rݹx%%S5JB?{f8#*3?yDw^by XPbE1,BFg3R}:+Fw`ɒC-^ Zp]/jFUoZl7qK}R`vTAs{" ;85'~n?v5[%!w|=X3 K%PHVPa!Lp+-U+9[J(I5Wl`\9Lٕ35d;Ոce=G޺qneuwVٻ"rÆ'%fBJ vSElofM=wֲRTx#!TxsZ@D-$={e?-f^eKbIxK -+IeĨ0mY:=e(o8Yz@A-po)5J>Ћrv@=R-έ`n:k6*RbWIԄ$.*ݣTkH% n4qϕD`L)(.< S-uh\|=(~0=]JƯ2ЄS=F7豴> V 1ccPjJᰘPڒQ,^$`R;J4B™śr8H+|YBQ.ڰ҆G8;pf}-gRtj٪yu&;p]gRb{nd54+>P k>T9,x>Cv@Qɦm&v1D& C-xߟN[_` R~OUzR%+Po1*QbPO9\\Ҿ@AuЪ;- =z?\QyPQv@d!? QXK8oq^ ׅgr"Wn3%׵凭>U(A 0$qܲD&F#EݰRQ8: ö DVkހ}׃oZ!t x@.Z-<`P9oolaStg}n)UMxWa,|і;6*Ip'\ -1@ZXoЀfQY2xaÑБF ,}.%sk> i`V&1pͫҝ  (ԶCEdJy;ʹ˞9.N~8oaNT̉ Y5E6 <Qpy45X9-PM3`Bx<ԒHt8gv|/o]ߛ~؏M4npKTrvc6U0B8ݣ%C~%)n9 2a!v y4ذpO.+a DvIC#oO^7 >IZj;<;qFfmܱ0/= H 2] @gP% ~]Ge|S3Wo~FgԂ"*$@gaJ ripHC@Q%sonoqfg>=pm ]pi;5Ո1LjT lp L5;W!qݣӕ 2|ۍqpzv(6`8HaB,95Yo"\l<v;[WfC*S:e?޼#(H.=IV%d@E溳=S5trGZ?am8DZ[ ZA^&*5CnrN8smLWIT#35lK%,l.:eߛ7xhY㵹iەIpO 4pQgW\͟â'<1|({w.:I}s*Q%Dd=UqZ; ?NߚU%0QV+0eMJ'jn|_n#Z ɺ@lq?3s>認3XT 1 +R5Ppt=ȵ>y'I D *!z s?|s)/oݿDMom#PpκIpptk~CWmy ml5Z&ub*yє#\E?o{O ]`*>C@#PNO:.AQ Uc=C]~q=Dׅ119u>zbkގ> b2Ea~n[NF[ w vf.&ȩ g?tbɜ|3K@zmk0X65^ex(SnKWg+,JufsTBAJA0~,Ua00Q ș汛 ~꧎2$qQ9Ejl|ݹ-`#Wmt!ƹ xIZ$@9b>V4X&\s'^U$álnXD솗3uŃFMD>V"ItFWzF)^\nʣrۥuZlja,C2f>V͆)#|1XҾCkb&iyBn\ [ N/|㑫2z"LYx)4@Bέ,_<#X{ASbYʀY!T,oGG.6b]1~&]}{>-^{5ReK鿙>{ŰAe3h >.r H:^K0qf<:vk֕|G',HnsHyL1} khd yV _u:)18 ZK%N>\ݫq3G qˆBW$ +RsJBg!DZ8px$m?oS! mVn~=EB ڢU; ̥XC'c*]SΊYbvVu2WUFys?5K-#V9 YcoSw?Jz$"[\?`79V˷^ۯ_PJ f?5߱pEF^1.\|~2m7>qNV/" *YrO&gu,.dyCMYk9we6xP>f߫WdtQlNr޳Lz&U D&9!`Oc("#?*^/(ܴy?'o.?õ2-2,4SUR7$!:Ƀ`嚟;re1]f@ՎHS98ר2˥`' ̴焪LvΎhS_k+QJ:~Kpj!3vX4wk^:'lA ]Uk MN ,|PyK'+ f*$;i}l.%]ClFUْ&3/`iZu sg:U3o<VѪQ wN̐oiaBX$W{[헂kCK"0Hl :Hi;U!V P(K76 ee溔s/.4#t}LQIУng5#ks@G+< E@̶|gnLϭ`<㐈kQF =jϞ'RS-;okO=^)ԕ8KY'P,]}A?-G% rm)W7*0FGDqţ@`18&ֺnip8VJ3&k憧yrRfN*!t%Npy*)8-Dc KXX Y K6d6m͜yɦn8I.Ngӊ ɞMb3פGDTGAEbv8F4t 9Zopl7 ݐN_q0E aetBM /itIąg2@QZP*w87誽Ӭ*VXRQ k,7Pm kr%'zh:tr̼ # ::'U,2[iIVl@kF[7,RLD)Ӱ:X[jQ$J&J ^d8żMuS`aPBFU˄]_cFAvSX٩qo\iU-nBuũHBxCH^=|ټ*e'D㣐sŽf)=ieLI"\f$\Z{T#> 1+/ XC K}n c$5 Jl4vvEWmϊQ,2[VϏ4IQ.u|0#_/+uQ&#pjL!jBi#͇#BNbƒHv$b %+'9NlѶ g)xxeef!![]YtՅ*"ӨQ͸3;oYʡCoϝ"鲈Fl:lTvÒgq#$EEk}ZD@-sׂKjo7bB'*[B\"F51u:/HYmvfpP}f,$xxn[Pue~r_ 90gWFDP;|;M! IN['Wd1,lQ_p"XfE\ qb_+NԜxlAwiʴtCnZr)ڙ31";_MIU{bI]pN a (ȵy3k4@KJ72׎_vA¡+F2iW̢Wlz#Ɓ6 iB.sKvnL4S(lin"3|Сdk- jHkWl׿C#eZiA((3dKމwƄzV鰻یnWV鶽ݯg6LMr3ƨvBms3x-ߝ KLn.7^X0!R$C;{+WvȵT°F[B!@`F޾*Ap Yzـ8VtUFO)5־š)r {>vy4x0[̕8Id >MN^\xm֑)T| RdRf2*Gpp"jaXf[z̊l'={T5`R6:7:Neʺ9vb.DhV)U =Р%2ei [ Fĭ ?x`/ys&۴4c;o>cVݬ7AZ$khƕ 14Q(gg#p .W[`hmE7?1^nX#@Hn_\L p[R+;O~HJ^U}8Dz*ܓߙ$h͌XǮuCݾ x;߿JPde'ʺՒN4ȄO^W̬"dGKs(l(Alc%DKtmy}UyEրX#\TĨ!?Z5fz) TkI(yDRlp`19 !^mF6 >EvveeGyߟ?NȺ`28L57湥YʨS5Tÿ9-1ztoF@8ێ嬅Gzk/5ͱz6sWym"f{_槅i\ vt>\c$Bb4::f8Oe2BvnD¦ƢS@ (l"͢kևv5KzXӶ.6rAilvB;WVG 9i:6n!i|A`vy41~':}*@%=3Z;>w ?(HI- A$ Pƥҳ&v;&Xvm1fVM]s;n5/k"N C z h8i\/: 5rb P1dK^+Bpa DmY͹tYsv.5pU9?f #̓hIUKܙ6^&gHa? g@F`H|vr-|cDX~Cf/qW)Z&^4?4[ d0hc7,(&ƛ[U&pׂ.,t{y&:nlٚN>$M[ܷ:׍6pOQ4'85{<3Z>7 rT3O6jKB MEJC'nr<1&p573QX㥸y<; CvHRaT[3 /-V6c";n3cZe`4; R׍IAMLbWw evS3: \;ʶ˜)"DF`tbKvB*T/t3g_*/ ̕Z.ďݞ7(*d\m}Ӣ)SjZR )FVnUP" oRBFIVdK\;-ύ oЁr=#qrԍoY u۲Ifjs[Fog:^:gOw GoVƵZUE7 S^nsT\D,KӾ33XFiT:4 @B]+Y}8TEʭ љ3KM_=[VѦ\ۡ&}^L#e SCNʹB ΚYF[ "-MPaBB#PhV5F5G3kώ9{3nT*,PkExN_]x"~qHBMJic R:A=s 9w\[^IKJl}g/=g[?xpF.AT!AAf4cĚ51 Ńnt_q ͂4eq yQq$[lZ 'uZƌ13!K伻TY8 M车Т4U]Wo;^7[)PjmFIڣ6Q~81VWU ~ˤE N-|\me { K<NU it)G~FٸF%p5֨+dcN(?5% R K"؝_x*҅s 9q0o˲OgFnb,{n#Hj^NJ5Yk;Ui"B]yQ 4}.84~ gi_OTM$\{keѸxő@ aX,4 \0^!j5]Rf[[yŵuS y緣N9&.u׼xq FJRRI][ .]7O~z]E%d3_*WgT|ƃA6c!4HG*T1"R:</|Z>P-W@GiyR=LQf(.kٱ]V{~kFϮ~qPBj uxANhVJ_ՐU[as ㋣\"C6{UD ϑwR :Mɲvu|CRu"Xyѧ ~XZ{ d#E^UaܨC&ED'O$=`H"لVgfݻwA,??NB)CQ1q  D -ئ\r\7Z# "@Z$O;%@ЊoLR$vsSHfR7]Q,poY=?vi1Ʒgan|z+Q"ħ8k-KntiIc5˜펗6rహ1 Ğ뛞k;mLE&,̸ɘ с,#{4DϬ*,;,MAҋekq֬Q*I.+8CUiYJ\#zAGEcz!@Z0xxnO˞{iB Zs]B]VӢuuU% ["[zhQGTW%aӼKZq ALKZs/ #OlI(G uxc_aӠv7OX@NuG tMKa1=$l2}_yF' t6 kq箟ώڽ]nSe=DT~Ԭz 󵤬ګKK2oB(W`=~zmv. -7S;DKgWE*Aγѷ A"7 x<5.Odk]-ߓF/[>E5_JҌdIrR wb7X,jVmޅ֦7`@vp|]h|Ykώ߹e0iiH"LԵvLi=x:)gj_ca;4zAq})f= o7zyo-oQXV1mD^z:yVG:J+a(%%mJ2ʿkDx [Wuxp< 5|m*N$kت4LFP/b΀In\\l[A&/.s @;~2z5{zwSPl 7NhDVVhTdy#VfUt2EْcX>o7\533zy|G?]C4R;͙BHݵ&uRغBPV u ˼.;x-_ܲF/~{u]nEAmw;d i7f'#xf 5[#)33y DEH]<<4zy啷/{8Ćؔ)42۝GٴeVHB*mCX}lwE!eLO{/w_s(rUdaEz.7L9;_2TVf+Fi, ]+_x'n 6v^/8)"-]>aݯx0;3k7+CC i{'%-dtL5RPi0h4$]wq_qb'MtOm+D:Sup3G}5YY>s_zS|ԗ--0 5C<4 '9GhP>m SP2aܷ_g~M ?%f \5 4ߌ(ӗݕ> _S/@sU__큰$̝= `w n`,a V֛^1[@IENDB`PK! ! ! %assets/images/about/plugin-aioseo.pngnu[PNG  IHDR! ̟5oPLTEP`ZXUZXVYYXZZY[ZZY[YZZYYZXY[YZ[YZZ[Z%O$tRNS 00@PP_``opp~ =IDATxv%o:[M!0i|fF#0.#!Ɣe]}?K߷u]>M")ۿPK_&[~/8٦AYFo@GC|´488MJrs|R.|Gz7K!I/IR67sC&8rIMOt=J>/}F\|wHa(<O>;x/dGq#4'11FzU0H(5XP(5^B>iHӘȍT;$5[Xdӓ +e;Έi{Տ 3ʎc31&-C6!-}@CZ93h*! O ih;38u"q|0NSeJ}RHO h2D[zϮ?>v |8:EH-Ŭ#Ѻjiѿ{MĨ%_w/\|#t'R.(h!O;(1\1 lc@ h$^ Ɯ^^;06*{>7O4#S1 ݭ' ? 1+4pZ ثIF𾝭DmN;r([bP]HjX@F6/yPM5J=zuuKW;#_(g7M*U f$ =N\n ƻvIiq9G+ ځn`QjN&:Yߏ#d5H2kzsPw?>5Bǡ _Vk!&lȇ C P_]W>*V" gKV|7\c1Vd*H|QGU%_Eq+U M&GtU4y@&Ԉj~|/DaҷDhοh:gPSRx?6_=%H۲j#ticl_yn@ȧH]) eP2(L #1azBPd73PpabL<_]5oѢҺCDJ4H3[N\ J$qV-Rxt0 Q,vYֶ&#Y1#>-{$ bO @mD[!toY)bXQ 6vgC7 iZBS D -2&>rΈ hQ7C!i$)rksCL`EP5H8BCa/k(MQ|J)c^ KziS#VBzPAF0IHԈ&C`@F\7Bɨ a7WB/խ4j, Ч2MEJ`k&  DFIbw Fm3Qrw3 %:=%˽5 !%Sdq#"셓"9`B}D( yj5^~B&"B:JBL'c ̈́fB3Lh&mX̄ʩ']T( U*$ Zthm9]OMxU4b'Daf4Ҷ !m"fI! 4~W劢g)Pr[I!vv['$r iv( ]ԗXHtnTb^ ;:2/q{j& ʐov kL:=58̡,SnK; ,(UFbti&Mjr=KTs3G5Sz>.#ؕ=DBj}'DKB5S j%rEpBԣ"L,&L *<5%Bd@qTay! yP[Bum,H=%Sut蠎X~K] i@>w"^__QLkߗLy76U50M=0jdv6@up ά\ns 3c ^0lXm։G,lЋɊh0h=@ M}VbVtaM~h{;XonBZtBuMHdP'0YW8# N~Å#O >0ZorF]ZiZ&n#j$7d|P}L{^A?n|H'[@fH٠s Z 21bF9{ތ>-@' hj<"/ h*#iE^MQ!'[f>QƵz-R5w)Rk}7W$)w5RR$.?kUzўy7rPRLOtPPb%+0n/'M]6U NL؜뛲ȔtVj5wӔU`4ɀNIENDB`PK!n()assets/images/about/plugin-sb-twitter.pngnu[PNG  IHDRL\IDATx}iu9-xx7b!D*e6JlEq,3]WRJ*U98ʎ*"D,LYR(Q A@xxls{zgy| zY,νC@a|Gd.F;$zh!D\%JHtL~=`qZh+H/з/Ӑ=ue29%BRMں4t4U3>'X觡G,HH>?}l NU`!=KS4d@+Xcs; 'Gm$#J,z<9o蔝I[}< @eG`!i% "<_$7O={p?@+$$W\W6n-71y[;b?m9I{AP[;:䪄B8)z͞L?A+bnnyEv/U;`訶(cG۵ML- HwА OBKw o6Q6ի & &pAj 2: @ھ#"A:?L^}.ֽ`\=zU>2)WHtSz%?qql::nc.H -Lph?, ]9NBzN]@ e=}С<ɕ+~z" y(v T[W>!˱9{t֞nмehb BԦٷR /ysOv#`.Up_b,pd:x|0$*xF30\oVߞn+kG +7O=z'ؼv˥|N}Qd\mwN֏WX~C :P 1g7SF m,wА6g{m3B54Á;@_ ZͱQhY$=>nKH"0_tc[*m*D ԉޞ}B|Ѯ5k'[_" ?7՜"X'm#Gֿj /Llxa>]=WA\ {Ta i| WA_)!yՐDa3BZıA鳍7C嗧/o4,E,3֮>KdQ\W$z%,YJx,@zjyXLN0NOO]O?E[)Q=lY0_ݳm ;o>vۮɏ^uI=`P% k( P˚==L51 Dƞax!q6@q*$ 03=+{F-zͷ.N^?;[:7}ێ?-)̣E(Ncڟ/شl-N7,Ɣ$@K2! H;sH9X~L*vHN mC_}g6 ƐY"ł8(SO珖Ni@ɚ;2"شӆwN DCځ} G⨨@S" .}֣ pzzmЍi'WfLDZIN'cYVq '@h B15#~6~i͸ ypF,Eq @H|Dɟ}D>6hDi.Bb[acܷFT 8RM10׃p'޵sbM< ,m'R@ MϝW/غ~mx=K1nL(%}۴|+H;Z@sQ*LDz/g% 8x#S@H0eٗտ,m88zݧn44I9$䦰n#.ڿ"TڊǐqbhE%e?sڲ̕0@*1x$@;j4%j3N=WxlU{wOLs9?W)H+Z6E3+n28n/xm'%XR *STN#;v߻aِ$"H!}Gi-Ę"?|{wvz1z@ KHeu‰ ?o=k'w޺~Bq2>< 1z+@&Gf}r`_T0r#V(E9% oI#IMh'CF&Lnvbb@e$(䆓<<`!h)L4. 8G5K+O(_M~yFtA}n1 OBTzţz5#[&o\elJ 54X"X_lB\_m@<=<#Ns+s(yecJi=/UkN< !W.€2E/ E+4}O*uAx{?c_: 3ύܥ MV )FWFWyhԸ)&XhMO0DRy> Ǽ?' bf=铅uׯSp4E(kU0hTɨ1H7!'oJT""WiLܥ}b㺽Z6y- ΢$W7pd,eFr├:m g<J@Ĭޑ߹M5ߕOX0K<ڠ}K4ft+/mOxiބ'@DCAcXa]붮/ TAL(A?"ezJP랙 '.Ljdp@׿)>;n[&KHggؐs( 3Aytpm|X M,*= ȕ.6W0+Gl"X* ~ wzo3@ X4vAϯT*JثWF4CP5&DT*/ ?$S)0o]WWGrkέ wrک;fG6P/x ZDhMs18A* !P\UU3!鐼@P&xu(c_lՑF#|XbAňR.JP0`_̆f ŐhͬHree8'ւeAӬꃅPi~47T j\zAן|O ~l~RG)x \I~ھYBǨE)QZP *A%ٮo<1 ,EEDɍ\A ZnB)ǚD965!1H23ܘh]0T^iY@iQZQ1*6R9CB8͢E a,*bt+hctb,+?iNJX9V>dY!]%- aKnpyr. Y)PJfb'[- hiE(bM+t N1 T(ZіcmY;1.vcHԐX6M'?+:nشN)\yM:QchfybO7ݼq$F Z>,8MuD;S qrpH]Z;\#F#!Oj vI1ҟ@hØ =Oڅk7Ro1- DV`I [Mbt#q* Y)G&okDZ P@ee K`݁ה x!2 1)$Bs?uDaj؀ċ+`b@$>,86$Ÿ'StF03=}=wQD̈Q4 A>֩>YsĚ["c&V9kת!ct peaႹ{+ H\1/[?w. &QЖDk_Kq#^;v`߼ݡƁQ;5G:H FB i2η?YK@<(T*~l` (EJ3N&H??tZL0p37nZw w~yTC  ibט:i,!p*w0~'rXhmĿ~pM‚Nl.@A ]& 7;u@EawL1T\#Z2M觐֑_ؿq>G$ȿZCP!j(=FY"G:VXvP3*MOtd>";zKi }{ioؓ\3$ PSB 0N AnE\t2 iŨY+֚S#,ٟ "w;ƗFTچ#&@!8 ~x+$0XSXUIK+?]?"xسNO+f=)XEp )`5G.i2@(x *rYl&t}i???J>s=zӶ%`tOe~8Z~s@JV*JEih$J>;g|_?[?^vݵvj?LJZ*gDV %J@(ʅKA[cfC{ {𺏌ErO(1S<ЧN%?WvbMk6޻sX-X""ۧt$@d1t =+UVeh?*Xc2BAw&ni)n)OF#+-m83С ߳xXw0DM=G:u3&gzhu[G`opけ_`M9RVXn>g9`KvPg%޿k߲ P]w7RHBiQv[b :=~ܴnp1j5ijC׍_sG;"@`gIo{l]۴Z O6NԜQX2Kc~]Wq`o^?/>I],=~7kϜ <|߲%M˾?m?f,ң/V$/\_hYu Dv@>}嶍wn+XMLJma|_ș>揧7fbp]:ƹBbÿpbӀWұ4t?X67&f :6 :p[Uw>`+4 Yjԭ\O^q~Y뀟'N5B!_42/ SW.I'W4|jlJb?<|4- za%go*nMc%ye&RGn;,j\٬NBx6?wⒾv, p/M;ޮ?3՜ }fhS{ǶM =[ /F@ksg?<8|>|A(4Td8bY ח>bis-;G@m\hvmu<ݤgϜ Lǫt5 m{5Ng\q: `wNJ7n=wYu|tmBw/΄ړ5wAg42 PksEQ|oYRа* НVsB\J0IENDB`PK!FF!assets/images/about/plugin-mi.pngnu[PNG  IHDR[YQX IDATxy\WǓɼd&3?f&f4cI&qGAQTE\AeqA EE]}Qwp] 0γ>G鮾U[sl.#No8z]eD-D3:^Yˠ?'zN6QD~Wa`"m*.X\+ @hGND/-ב'!6|e~>_ciXS;VTCʠc?'.ܹ"痂U:^.z2 V ^Im~Lt}nt( 迾7=Kػ?yW`Gv k(jxjXl-^~KGEt+gdQ.-9d&1!h YhzSn+rQaN 5PLz`(!*3ҭXd#eU0iY`X* y"B)KCJe6 I>!rdדR`-R |cP(t5;. {S>"Zk_Է Aϣ6ǸT*z"CJQ˜LQY*Qm ̉v1Z>fw Dm_^E{i}r^⹺loFi (._l`M+:B&Cx 4C!npIלI女Ȩ: =aX+x.I2kg6aYe4Z[c˒r3KAPf`"=0"  GfYD{.sƻy.tm,O: DEފ6Y%W-EV)WL_ؘ7k]6 { :TH/[B9t=Z`RP7C@?l|~dGT@H[u*!,{N 8W '2a}#[)C/#)u(u:w> jyU!=ƍva 6}o?dI*Ew(pwh~D‰48ӱzOsKynhZ "9%7Dq5 4=5:}?s 4?{Nx>xL)| N)93 {y*o;,?’Quh;g//c߽@lµGJ2r2bdj;?< Mf=&/DtH~%[-.pH! tg48CMy-s*okMZI#)<ғ2m|$ *)[ wsTo{0G>hw~Dތ&wvk{,3n;AMn9X;*nuxQ[-EJZ|ljj8ΏQhWun= u3h|#6֘NF+ )nogPhl-hr~{xVZ -}Blb_T2Jo9OP $eP3|:}l& TR]hT x]EaP$4WA kgA.;ەVގ9" /awW8sz]߬h̹O$goڸm'#}RtHF%mS_<0سfRW_Q_vLzۏ[ՆTKL.R=n™3gӰs~04πӻql >-zyGEEoDQ2_4pU4=>uĜ ᖳdԙ;PfJQn﮿z6Nnn_WDsjihi4<*gj!9) lll$AwU/y1zWĎHj+ vj* ^P ȱ3`' z13#%D+؏n*} @wҕ3]=[]HvNi86mVz5w<>QBv3SX]cIE'=eq9@w]B]?iRtd_gç!TKv@apz8ثsrrԞ?Syk ;bKW{UW0W-"ص]Ϟt dAKcƉW៙@HrAms@uF-)*_{@ORoGh=Nw'9![WQ`Oˣy&EiШnYFLfLJԫ&иNNae+BfqkRD,98JBg¼2Yx]"+m9 W-z|Hh41h9l$.顐UYfY 8ՁQYJ0T؜|DOj|J|G3U|z374>0kD{{5dq}B#i;kKT`?N{m\8Seu._i*4; L5:̇r6slOum(MհGe捬t+(6V*/b'~~7- 问,ؼ5Bݸ V,#RPSt xUl\'B6F./e|LZƻh]~vF l{+|>9;pv]`Q}&\ޘ7e!;'c s^H%=A>^0}J~MdiF.=;6QuVYU Ӱ@ir:0µu4n5p) \ujgq;AAW.ؑ^mӲFv]~Վ=ގOlOݻ ֝c]GJ^\Ք4‹篠38ꊱ&T0ZJ^0di|HKuZs2^/ g'[MJi` s4 g/rH,^κ!mo.vۭs{Εý`x0Noj$5*{‰_-$kKQԇ"4Jp(ܨ3ʆtz6)&$dvEB-/4}*1/&BeTgA0hb9ߺRdǂ*LTARc 6+yޥxߎ'MF/#)Cqt:Y^m;-pZJu${`]:VD+\ 5^&,( єs;θ Maհe9xTB2N] 3) qb \|& A[M]D:Q%]((%IHKgQ!(]O|'=vŠK% %C‹- s|{vV!tfJ-TVT©-!S.N`68(0W ʺ,jP-?SI~W#K7 jg Eq[T,ZݳE!l(Xr)\r: 6_1FMh2f:/QznFC%yf?Ѣ5aG.TVd*|`' aJY >71ܥB7c6wZ51X/BS8s^2 <7Q$Wizʎ"+G'414+igug*)j=-G+졕&U28ɉ*UbLVq_FH;zoQ^=\0T {ȏnUPVmE~&/J0u"Mu'kճ6b[l*,;=& ^n0LCv}2+,\O9}%)|O͠5fCgOcp/  K ʧ*گKQN0B(pQp*~Y9 ?!VFu)!,qUhpDD&%v֠ZM57#y" vI Y?Qiɻz;W mv?AqL<\* %Du=rᯏ`̀)702A@i1Z*otaB7Dm0 6wath5 AqmP~ӶW[$k)/ >$zy¸>˩W2{!e|b%/~U 1wDBGhoq0\X@GkAQ$tggM2KJX6Tʢ䊋+vc99a} ܏aDxw rei8GYn+QOf_ ɕ(;A_ߣѷl>ңL;hj:, -hJa$2 z4lD[}N!+2 x}hGr'wn 6V)rg AnC{yp le3F?fma*nܾ4r rKWYG 3XO7QF-l%~ȇahі @qv\$Wh_(S]JK^uϬ$FF"7$Cho87Ncy#si4 8LVG&AQ5L3}*auΧl7[D>Dh@4#=bKl!1u{`;T܍8~h<' LnW5sLcuP `? 7Q7Sl ‚]5TJXe؉hVM(n`Ꮓ akFaC]ݕ_Ϧ_wWi|t)BWr69Umrؽ?y}&`#IENDB`PK!o7 #assets/images/about/plugin-smtp.pngnu[PNG  IHDRkXTPLTE9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`Ȁos<6P^ʅr˼DŽ4N\Xd{E^iaނ@RjsNgq졶xc|Ojy(DRO|8ʿûsmjWrjѥsZrzfU{4}if]yjDҕf~пǸa}赉Jåȳ{p°⺕v̫Sn}tdԕcZڅFìθ׿ǹϢz֎UىNDZǤќo˭иʳܢsR1tRNS 3YbM8k-'ѱڌ sTEĽy?7?vHIDATx{H[wǯ]u}ѭߏ%˽I$$P1uڢ"Pu ?cJ ڲncown7l|=9Pl&l&l&lۓ%''|k[bc"K[犤]o_R_#ve88Jv+P7Fc1K iT_fvεH줢gB$@Np"@> exFm^v=< `u\j$8DE31';XyP=JE3/< @;hnb-Z} %@E/.}a=zΑb .T%bK MӒQ,}/@Li+Ht%P)ى"qGd Ay hҋuDE# ǥrqy[B^ . D-LBxd,zȉ‚E08@5!U*8 t`M6?p1v lAUPme`rCaҫZ%2P:XH`Lf1;+R!)mG;@4<`}%lpxOtA5O\ >uWT5 *W,_Z|ݮ{^ē$B y|uCYkD|dV 9*:2NSc>X֪n` Sg!ᥲ|^ѴVkz*qQwd3$YȜt79vY(?Q)?M>Ғ@{URSp[. &EGm~(Cx 2' ,\/_M!A+*]~B Q@Ӂ~ #I()~%qR.` ;]2wc Lw WWjhY"Vx( τC&+x-O 0+p2O3, L$  [ cd`X I)m(`xRw@C,Sx {RIoe C^%'(e# wajPa!\jG /bsI*#4MĖ8"iwy>dy륆<3K10fD[HxEBkX̴v!;dɯkӱ\mXTA΢p"z ~/>Jy5w@ |%45Q2#xb@b\),q4dqTX T^fzZ.3@%4sj(kTfM0(47)@ ]vN. / (mC}Ygᳪ_3*fT I'I2G|C= JN6t y3q_6/-'ON0vh@œ6[M @< IyPp8!ڀN² `M:Xk--=͵6 Jˀ$@ ԙ'*ĭPpY8mgtҶSIL2V n2ͫ aY,#,@NGO{Qvll"<-i`5s/+_pcaf~jjj~f0h ugΪ$.4To~"OE/@,ƴ 0ol܌,&Bŵ(vNe) p28r$uxO$ QAˡ MgD`-S_q@l\IN\  ZK+u5؞~Jf9;O_NѴSX&%| Rg'XmjЍ(% R)ZMRXcy?8['@pN#pH3W v `+nuXz"/ @6IP, uy9fӌ5bQnԓ^,Zg_䔕3_O >>9SbBF^X!M^z&=v03@5ޣ0x78V^6T3l, A 3p<t" k5t06=wu#Co$&,̜T`M,Y&`"Mz {#AISax(wsya[#^L}@fVqƆr]ە-&#mv~ 0(@?g+gR|eV=edKOUyś* S ꖜ&1NZ2*~ O${E nF T2wMQ{o>D! CB@D$)e%GR"J ]GĹms 'DՓz|ݻ[Gq@<)LbEbABvFXpŋ\?x'@x||Q3LkuT\z.KB0\~v_(AE*5(>5}6iPq(/$`C1!_ ˬ||HƋ @¼S7 Vh`Iv>lO?IBX>*Hh0g5V/L^$tN`\ƅ|X=mi`hD>XHxeI&AYdn `1 xG'KUq(EOkhEY`-vDE g147Vޚ)2om)%@j)s߯gys-W#ɋ0RW}BLG߁(2 Ik&Li[&^$ aֈ0GZ͞O J+z6̚N\3-{Rdt{FO@<'s8NWgtJOI p/m1`|:gZkḰ27_ke4Oc}Q>a"\)%/ƔTh4~Wm!G 2!™UF$Э;Ef)Go @ #iGÃZk"apL/+u3Ok 'AFh0~7>q %LЋ4MQlI@c+ BlEne^vٿ9R\b2h9LF]yUC]$"ΐ?kXˌ\*}Ÿp14Ͱ@iPLRo^'\0_h s )9MHj=B֠79qduUT>Rg»!X>!r&ns*Ox }7QZ6+Hzdz(z@R`.p@fR^h2e.g ~~JP@zt0"MWuiLIߕ:)hXmJQoaD+ mw+06=F|r˥9ӧ1{H2Tu˒6; ji 8;n2]LU@G)'0?C_D?!U>*Z yAOY楫(V,询cN49?Caa\ {$@#w,_lzH'!@u5"hi9-g08 db%44cی~wli\&ZB5@7d gh@&փ ~z } d̀@6VO1'%GM0("d'O"l AK& p | ]TTb@;PoCDp ՗/.,J&v$zA 2)-f0R嚐J0@6v;CIJݓx,vaBT4Ad>e/IΊjGjXCZ Ћ44Āec5쁵x$Eǻ6#93c`X{%9AK~PHUi-X"y@`NdفV+b ',,h|p*$)zW?GYl,  ֩1G pA.z[ 8P|2]ڼE}fqQP2$d%eo;[8P`s#( Nu`[S#5W677k݉n֪f>XwX11K'92gbS0=0 ]7m!MHӊ7jjd; z&݀8lOo>coCcr$}vn2Ftn3y%Nn.$[V>T$"$#ea]-U06D2‡0lh=% O Kzx4?q}ۓ`vn1%!_l@FTCjbr]CIqQ$V0O$cj8#P@̽x>au`u76srf8*mЈ*j[(1= P,Ce] Q 36~U֪b`]s\mS!.&̃C'Pr CL =5{he4WMmۤ-+JMc4Dl,f΢S6c̶VvNmFFw;X$X9CAB}M 㽮wcU$>x&n ʀ2U'Q Q0d'&7ʸKl#?V.)烙S(a&cC@qzM}Dqt%x, dRb^;^`tm J\84ME;-X247o(4wh=`磅swpeWT8~.@pd:*}Zs678}PRDGQjMi㻊Ю)]Q.xi+WA)6'nt`rGis=?U (}Ii4Ǯ=',>IQ_8>+`PO py~[]&+V9ahñ?'[|Omsz[Paf+ K%;Forh]rHx HPq8 ?W>po]^8ΡASGi0 =uU$sSR г~{7Рp#%M'#sNg$WRj%y^>'WSJ%o9nEy#CĔKu%E voP~&Iq7Ji˳a@"|L΅a#[2- AOA+FBK8be,Dȅy^X(mQ3c_ȵ sd|6PABhYQ*|T:3TY4ܙHQ4jScjF%QQdN;wƞR%䓲"ѡ ~<'Nd2I!I_Vm ϵt+*qelgfW$xxJ,9F!Fllrw67=?a:K<1~7\6gZ}o aTs?_j eY 7c"nIENDB`PK!g!m )assets/images/about/plugin-charitable.pngnu[PNG  IHDR ߁PLTE5555554554554454655445555444754446544445444456545W7IG<ݹ9ܶ?TBҢOi^ƊէʑtÄcخ͗zϝoڳ~o&1tRNS% D,Tp>_8 ʝK}i3Zd!vu \IDATx͜ZJ'z.HGCH{qh$ 3!T*?T*:'^]`,w}& *HY0"Iϱ B;?M[haPiiZg,!4! IKlo[ uL$Fأ{$UP2sS\I$l#,HJYOyOgd{1v5y@#>B JX,8PILn{\v(*0B'UR)c1(ŭ{8uِ?"{u]z "ݨ2F䗰:3[ͮCzB2%Wwa?3{c:znBݏon ;h< _MǶM3f COR4:yǐVo,~/~ Kv~b!WcyU-hj٭<Om.W)o?,++ew]EZ,(ܴSYAe(PFrr.u*~Y/e$#gǷߴX enތAɡYt4E~Ň=g%z~ɨ,] TmTr6_DqF٪ #nֳFuOC3|JpȮQhⴞEX.˥J7 s߅~#*L;I($fzde,ٿ1<\mŠz"#8Let&)frf_߰jب'Ga a@dQw9cΡ0wF[̱ğ$V?ϲ*6Q] s]jśB'3 ̭$Ě}Fo2=zb5ڿqUԄsk9H' L.rz-0;iA <_ڱ_wNri3jD/$Q`apml~[[7Gq4K+jzAKז&Fap' $\}{p~1'ZVvX?r?W+=dU^|:v6!ʯGuic,3' n4] o?q}Qo띇+gyXݖǝn/~Xl;$ 5h ]gYkYa) OwjM|# &' <\E~.&O9\*Ϸm.F\i7]]&Ͽlw[& d1p y.Yԯ iTB״]Ti/=L(e *sPGt!F]xz~h* ho98ˣNxӴFS[cy\@T i.?ee]PUF;,1kL).?bd0}x-8CeSQVGC:6 61{J&g(5) vsC>O}g(ar_Y>/8h7T/WƋv="t+T*W)+w# )-ֹ)&uqJЇ}f*< vc >qi@iAܥnM" u|=Xw(iZ~|ŏ0ҘLr<s53-&K;_%iS`ṊAUqi3ǐہS B g]]mD1 v=2sVFďr}~*}P=z;XGS:5JqQT{HV"m@ߖ 1 M8 -xz[(mgQa4~3 Bâ^DMz+wjqFo*vd#g?,6([+iu7V $ rgP4o*pc$%TjdC$N1괱.û{[҅EwS]ou*ҝ65?)=Bn뺩6 >MB)T?ok,UAjt^'3W`+/}Zrb ӢG3]{ф`+ސJaׅ%`HV.=3p 8,1`U"0N \ ⌅'Z]6;0Bx`'Np \E-U:HsKP.^{Nh=5K̵\5%>+&]\I-J~*r ~ uD@:> 9j ţxR +Hi c r:Oez2 %9WFshބ8J&ZRJN-q43׹Rjg,Jޜʧ8hi"tN[`Dhwe֗qN89K;>!`4 )oT 1t:lz-bٖjp`"ӌ#t=Z|sO"NPQ7b\7+G,g̮W\$:VIENDB`PK!̕ S )assets/images/about/plugin-sb-youtube.pngnu[PNG  IHDRL\ PIDATx[=E"P-VEEXKXzD*ޫV[/GZ>zVlն^=ڞV!{6|w' @vl}'?;3wfy~J5 $@B  $@B  $@B  $ A`Haf% r&1־#4џ_sNO׺i}iͶ?cݺҴܸܰFuպkx֯3ԱOC˦mEgp}ap#׉S/rtǫ="=Po$*@B ce -=r/8>=fݹThWTi/,.x5k|E+nen<ܹ=?xT5}G㓣cWTWXה4%FMi6f%APu,5}s:ֈǍQ F)AP˯[ ݨA[0 Gۗjc&7(-@u,0@DzyG@ ]V&4 Z `h }mޟ_oRXtx,ʢǮ0ȐlÁ@(lh4PEW@;t1GRc,l}XHR`O^ uLνjX,#u i?h}ݤ,0>`T080x,K;H`'*O\\TpF@;v]@~U 6ekpBUj*DB=a'=[`eеp``jwyi] t,H,lgbV@,r9ʖ'l2`RQ[.z\= oz֦^,zkSm[R뀰#0Vj8),MJxj}AD?)(~K5u|A*v{7y [+7VDM[q7X'~u28߮}"7/gL&eOX'?ǎMH"*B{40Y#Q{t [wm2Gₚe #.ȸ5d^ߖdv.odԗ@l(2!6T=(UQL*xGo,ot4l~5~?%aWfv1/Ju7dLfY#UBa)GC؍і- i&YRDN-'N",7^ '"ERe~TYח5 YX9K qxO/I-.UsPRic#TaFIE¦@ACl)2 {Tdw2/bį?ve#TCR{s!+0te#*sIx/#V|ܙ``HCC$(&O?9;%gp)ohV dKW ACf̌sSKx1=4IXAHnY~}5JQT\IlU@EPTJ?XM]*bldOFyf"St<8ɁBE}0x`ou".UP͌c:a2ny( x(djT5v@0,G+w"'̍[ B0/<Jڲr$7oh|}oMWSjb0Rpaku5 e S_8G Ufx㌌*ݒʮ+u"mD|yx['p..|B]9.FDB7[uy&knݶ˶cfǑv!eH |ΰ`` & !33a2ʟ$C(%X $@B  $@B  $@B  $IPfIENDB`PK!ot,assets/images/about/plugin-sugarcalendar.pngnu[PNG  IHDR ߁?PLTEEâҹ\PsˮghgއCIDATxn0|sнk]]'Zű'Wg ml nLMW]Yj|G_v4$ZqxW5Fj7֬ߘN\fiL]k΀C8eEhp(h!pWV)HX1ѩ-b5̦Y!ٍ ~` 7]E? r~<OS2净D(`/YK#iZ) ji_2?ty|]4Ք=[V>:1hmiu;*+e +3Le·vsVf0q³BR=gճdhǛeQ X,JXf%fif(a(aɪy,Aoy,ެ=|E"2LEJf"(df |Y=g4g9aB DYI/ +%! o/KDN7Tl՞EfJffYNf̬AfY+2,-rp^bV2N>!;ӏc߯{VjsR=ʬDewOd,9kYVc򗼮f]3ՉfI>XCyfM#:V|U}M#|apRk_w( 7_vT̸4܎uvA`Ysީ-U*Cjòh]yS+NF`p""5?0Ga:>Hک;}l8 Νn%(2.q{FUwx=>2:iq`z0aNv}3'Q~96@AhoT }ɧ%OaA}>w3 {>.SA_4 >'gvblw?[g˟{о,kojw:/o틟~P4_4Yt?>}%}w˓c[>w/~4o@ M'eJY0 \;Kn: p5?mR*˖B=`%_am鯒ĝ @m>_soSehNp޿x{ 1.3zr?>ҋ,b_):Ya+ʴhM!_}1^ 5Ycf8[1@}gf71}Ff: nr_߃Zׇ~ɯ'~> uNx]CUaB_/0?џDo}~,]/g};?40lt'>O.t_ݮ$I[Dd^Ӯ>s?mXEq5ٲ>SXGҴ>lcBvڸ IBк> PI}"c ~ևl/S_o_B'lY?◡a}ضz/\weӏ^USq/ohV-9fI }e(:YZgYMEoT_j̅W:k^}a~էkiԨ>G//M}geiS`M5etY|+S~H,Umǻ:CMLJek-˻?u,G GT2G:YvMLeg ˸de^`O/Ic2%I%=0 ~}~UAF_VH7?7W3˨C ?> HH{?>O5Ku.bD iŗ__߁UFz^RuYhqlN0?>{ϨƯk`S'[-1NwA;N7Q39qaO~l}8<ZǾ {(DQ|xڙ̫Nk"ӂ B֧e鳯R+?Ӯa;|bA}7%>m/ʅ?P+@<OoE3_~3|6/RD_bԯaW+h?4f`1|9K|9K|9K|N1=r|[qVQ7[Ql$d7/ -G_WLSS3))}:6?>7ϦOOwpLӝa|tgc>GΰcŔ>7 oik `S)НO?cu||7Yjqr>}gSL>#}`N-6NXs~rqYmB01>G@l}{~o>0?䥏7ڠAm<74=Nm9)2GF_6@o{O4蛗4( /]~6}Le|3Z?Z>}`_+F+sCKo]Q+;oGѹH4zS/o 4_hGPjWrEٗ^؛Rg 1[f|X}8,+Z2&z\]=W?{* Dax 1:_}XRI,3VPB[ Nz"9/{ vU ۺWY/X<ϤXh`x/*|rJҽwwoXg~{}d}SNg`7j->?'(Ry3p|XlOV^}qB8o?1pr~&G+]T5yJqXHG ~Y?FVP?;X_ |#}ogӇxI0/[zHNA{ևtEXnCuosͷa}$$@[c}"h%κѳ>V,_wC8I?ַ{Ǘf뭟f?J~'7wGH}G[JzwӲڃ׹RWл.ȗ`Nǟ.j~[oFy,".QR s?8I"In[79o)Cg}9E3r? A A-<ӑ*O =lk4:ջ(/_:S_$ׇzp믣/HL_/H̨64nOPL}Zq/Se3&M!gw;Tî"oK5 6"O>@(M콅۲W/ r?giSOm\y^`g] v5l}З ugqB Zf)5kpM~bku>0˥WlOM]T&ԏצIJ]bEɔO>GvW 0 NwJyme?ɑ_m<+3W7 7 ;k3M3I?0wo9PZ!\f5(@¤mdi&kŭ{Ҋ?~׏ 7M ~S*ߔ 7ÄI< moyWNGЌTsׂOBW+qZ:9{hR͍ӣwͤ9딓GbHkL/LߵatEXtSoftwareAdobe ImageReadyqe<$iTXtXML:com.adobe.xmp pIDATx] YvكpAL $*9P;M$QGhbH1SoA3 D<""Bq1fcvv:wW0s>f8fիߢeMF#La2G3vc|ccoF f1u+3>ϊNE815FO!C.Xx:5LPƱ^cIb1`^`a<^&]>q 1Qƃ*+G\T~*qL 2 F`cʘϞq&% =(X#/D=qLܥ?nSIz3g2r | Zd*_`T0~˘MV0L4҇0j?XƳ~r`DyPq~=*` u* sw"%O!2K%،B R&TR/>qH%|_XC)+^ 璵V$[_%Z؟~Y>$ EлI5^Z *5lǣ}j#Yc괐Su帕{ FqU&EhރbL","V0>`|h$+OKS+J4VxxF{E:ye8YɛKY6/X#[Q ɝ2 b2ܒu.GvgYL9d f Vo(Bܶ'3{Gx-*m &DZpi px\}#S%Q(Fi8C۩$(P8Wpq475Ŀx-8Hojva bP냊qHw&cGN4z#I!!-Pd:|t Y%q{+` h5gnV6&#HӺx$Nq)>" or؁k(+KD=J k!/A!cxC'*s@1tbdV!Y1lkco'kާK2}E׆1H?TMPMϭZL4i*dpWoеqiR#. h>$RƆ7RՄ53ɇӫ>z+meW HRëxxJxm2u^&rE6W]l.L3/"iQA Rt:]AƏoYL+ͮd?XaR7mbOᲪto2SX0+/ja}+qi͜`". :o*?y_/` TԶڍUHO߽F9( -X9+UF7gb=|(Uy_X-}YpΥAUi^W!cop[R++y k +\Fx99篍GԲQt]́HV^NRc5tz3[L#J;Nѵ?e AeX=]:V"> Yj/fXM0w7F:mд? ofqa* Yf  tM^_wGX0p)+6 /+X|e iiv{o`#r#WU%X] apn|rΜ+VC{&5te B2H$|kTtC4EqX'U Hai1']V27a47Y|PP~}zhEQ!Sd@I/>I,Aʒ,hu 3kR` n|ѻ$MOO>T*[]mQ0^LGPK#?qu5ŗp R@7^fz$gx.$,"G)4˄?2["Ve>q R_ƙdeJkq7T!8tdK5/8A1oZY.=D*نT6PQ t XK#(l{f5miF/7"A~lUxC]gZs}9KDmȏq*Q |вS_֟TNwxg!'AJ|Y5Y;&6A[9QfNpSJl7Btk4SF\e)}F8*?⡏vʟ2zѠ+։m; ql6ːMwDL$NiP ld>Y*v#*N`6'?'獩 Q~.Vi2HI% U2 Zw916/8l2ВJ/|ij C#b|<|H&i4 )IvrA>#'}ȂoJS[J ݔ7cD{mw& : 28Փc)Ĝe<_D t~vnuy5k(4{-9K^J6 P.=ؕ#S"aڨpFFY:zB'd"Dw# 4'%xWIIpGA{ @0vQ7-N aCAH~Jh"u)l^j9TEe`I;kdmsoLX~ $f`t 043 w^XFJڍ|TZc$ʸy?/\ pA:㺠voT,#XGCzGqʒZUǖ ,'23٫O:d: ӏP+{+2\hƖI4I`<7{^Z$XZ7$MV ?(]IK_D|U6OGy~귀.]Lw1ա ~{0?6@b)?NVp~F$g+T; `mK!)hdž{AkrMWACVڪ 5HMrѭ3UgʈI <.(Y +}8xxAPڦEAƊSB~JQ0WfЧw=Y&dezWcH!GyUC*~[FzQ[m," ۷n5蓌-" 0NiQ]m'IENDB`PK!L%< < )assets/images/about/plugin-trustpulse.pngnu[PNG  IHDRKTʤ IDATxylTEǷKK+君rX  R P-b%Hk)7PD($A"ŀjV. oߛfv79qhmZ=#K]B;NdiA:'J .&Kgn8 %qe'a@} tQ܀9 :*(aHt],Ė db-J(AHDspaF6rc.hzyZºż>A-T %;^ ]ܦ7O9P[:ü$@og{mEaɼ:AEbA>eMq@@٠d ᒠX=+ GUS]C ?+__} PyNS۟3Vk1@EvQHKkvLA50,F~ȏUO6Ւ`=V VA@ќȆBd?*0Kk : h0N^Ih =:߇jZ F"UDzA"//PHX$zQpf}7I~{J*ga l% $;.5 s$N1XxUDXAX$ EϗLOF'fβJDd Š7zmlϐE{jUGlFhtm$*(IVɥ8Zj7X$\uK[&P24g:v" Ij&Xm{^<X$ZAT\Р`XْCl{5Ub39k \%W H 7}aħ0'R 5%f #^5pr`'욖Ȩ:N V`Mr~΂ڻM (;619!_"y)j ֐\"VFb8T-̮\i[r׊PZH1f"UQ_:oكvE@P6=r"V2H_Ǹ6{ngߑr .v m|'.M~;[,[9RZh\yQ»dTK:J/VR|DP,ģFRrnW{s6A2<;aJz !y F.kO׺GrQ{1HIENDB`PK!]or!assets/images/about/plugin-rp.pngnu[PNG  IHDR\UPLTEE C ? @ E F G ;tRNSy#NI(\IDATxKs6rNue\׼*M%]9ǼrFiuUMu "~L,ŒhO ϻUrHv[M߻'Tu4q ݅T߲{&jZ]w wG6VA2@,' P'u7nR]7)ID_:Eh"O0A(}1'FRYPI$+Uh:\pV>ARhTWڪSeTߓUY֖+v{`";\eoϏ7hQ?V@nP+e)p#Սɳ $'RjI26`^Ɣ s UW84A5eʢ(]YPъVJ8ɣ%73uT ߾B鞶^15_{|MZMB*I1ԗ> ?oޞ+L2e 7DpB<F+ PG8 `59VEP V Ʀ$qf #iH Kc`~b>2gI @ RI߳R ë-XBP#ԔFP"b5`(=0,c$Bi ,G}r vզp( P`&PP@0ӳ ( W `>54LO YO W$YJ!J< bJqm@$;9[?=)p{0< v3}( @)C bG XA@jNt>iǜ T3(^wS K-i 7U6@n4|1զF X'5$P2e,@j4'[/|aCڛK|#|Р m;7;~zPO89%  E Aΐ\FDa3@Ô @/ضeCX9q! bwhonMx<CrBWMGKĔR=@D @ j֊fu"p A6#maa, 3p-k $Jk;KI0@j pƫ*[x"exD(@nP,ZQS'c\_o|@!0v 9O tـ {ԡqN,Y$;b@?xxP|9d+Gg~^͚Ӈ{#@ yFċb 54Wr>N%{ H%6"@ (Aa4 5۬a>15JHP 7kDI|V<((@<,"dz] ^ۖ3 | B,eiXhX8P T5 K +h'PZ뛫̼i/.'jy gnY >I_Ki_~}=(^@6B)bPVxԝ_ (ᯑ]Fz0?K }MD +q[ hzõŮf1, @c_ml\P$Ji_vvΛL6r\*.?RܢIENDB`PK!lV V assets/images/about/team.jpgnu[ExifMM*  (132;  iCanonCanon EOS R5``Adobe Photoshop Lightroom Classic 12.3 (Macintosh)2023:06:13 16:33:11QuimeraErik Ruiz%ނ"'020231& .6 >F  N50500100ܠV^1 f2t45 2023:05:16 15:34:362023:05:16 15:34:36-05:00-05:00-05:00h !9:102224000338FRF24-70mm F2.8 L IS USM1024005080http://ns.adobe.com/xap/1.0/ 24/1 70/1 0/0 0/0 1.8.1 0 61182 RF24-70mm F2.8 L IS USM 102224000338 0/1 1024005080 Adobe Photoshop Lightroom Classic 12.3 (Macintosh) 2023-06-13T16:33:11 2023-05-16T15:34:36-05:00 2023-05-16T15:34:36-05:00 Erik Ruiz Quimera Photoshop 3.08BIMcZ%Gt Erik Ruiz>20230516PQuimera? 153436-0500720230516< 153436-05008BIM%e˦k п<4^   ^" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?RuC mdr aϮ߅aO_YY-==E{5uXt Jq돕e?C;W͗q/t5ЍFo kƵ:)J3Wj_?O W7f?[o1 npx?<tH&Wz #|Du2O 6IAZokEkلx/ȶ._+]o(Kx_F+7*2%̳D Q &bP\t`pOLcl):}xIY^$;l7L6~* 9NewUw@фW2_w^(&3B0s<"Bp|o0.1\Ki|W{vv2|9n,W+7<چ|?+y^+窨OEr=?Au[G,Y]YQ m |t:1Ai EjU}6Xc95oCom$"Frz#2G+j)^K.n| <0#B8%w=sᯉ1Ki%̱;`:Uwd@|WREuuZχ\ۘ%`;I>sz+!EyJ3>_N ^>?Gߌ)2>7Sgݨu 2z4D38F.)uv֍z%H[X5 r#&vl:q2.!u[X}+M׮d[lm)mާ8_fMk~.;ZN9.\m&U݀]{@REt:OxOjGHBZO I37h+0:ZꯧO_SgZ_MuXu 6ʈNg>V*/ie0Mn"_)*Kop!.C:$W/Ɵě[Z G2_=7Qjueh얨8M$d3@EzueG<9I<^}γkZ5n.>}I"r^TNv4SJ;|Z+[Lh;vr_2kв WZL'nFdþ|G?hh6o cækƆ,!Acu?U/rկ,|6Hsj_YF ,z%]\rkϠ~,|!|-ӼexNMa>`--8MT~Ù^gT+-k֖k_W ~kotF|g+Fc$H5*bvB[x>٩X q+?9N̋oxZ^|Oh@]i >, ;+&Xj0P޿]| //|o'-Gu1WZ|`2i&o#tb/0|/[2ԟ~_yͷ?FVTF˜v6g~j_>|/}KǺž7f̘>Wm`/p][K+ Tr};Idj>gog~z %g[뢛eOJĺOOeIuA.1b2(%z:b8IގMA+%?/?S<"Q)(厯׏n?KE')r?]=+~>'c.Ke>#Lxh_^8_6\i-2.&Ӥ\6X,7& ǁfK{Rx7oEdo@< ⫖.5oobo,(#lʪG6qS{k w||=^*<εӵu!FK1f/߁>ky+ h(PptxFox&1pn]_w7,CLGJ~ڌ{׳n5=1`-&b?*$!pxտ"^yF,$xs UoFy,JOz.KoS |M͐/7̟gkFa~6rOWf)+ά:vs"Щyƣோ>մKBs;Źhw/,EOCLOimBSFm"ߟGP>> ˩ês]Ri~eg8j5y^?#g3|o"7Z!lb|} #q^]\x:_`jd,Fzaez$N!ј\jVڿ,r 8mupr3cxv\~e4MBVYp>uU7n[R*e?1ylm*fOSEԬkkK4y#`(&-2JNOvFXt^ lC*h+BW|HKƣ̉*R̥t!ӯjβe00 [fç[/}kL!hiϛq%\doY{̪,B1:V\n-BǠPT v1]ALsQ^󪴣Vebav8Y+cZ%Ϧipp?\*L13=)<yhy`~=iPW X1P1I1 UOn7 jDثa\sn8UvnJ#ip?—0[>bnqڴ c4^2x50(ڢ1thp})3ʞDFJBy1WB&x,Q 91WD#hgx!=i|[WR;vL]=:UBxͤOlTM12j÷JfQq[RL|r1ڬgʗ9V*>79J9qЧBU,=J_/S%})vխNqJP)s6(ҝJ\e0 _.}jÎRG5FL Ѱ*疽?(srN9j痎?*M/+W@Pm"*yxQ?Ud.=O(Щ gGѶ3L B!;hA@IlR1f*яFNJw-@厘 ҬNcQS̋EH#l1W<SRsNNX3V1pLr;TsQax@>l'PiJc)sQc_LTX⟳ҹ|Lzۊ6|٫?)JTL11W( 4- Oˁڃ>U=h \\EN0zbث{v*@^J(S>}1KӰrC qO֧ SJthX)>ej`]I9t z S`qS\b.bU= =)vdsX;Rdb1!BGBS "gMD!~I*a<(^)B,Rs:(STGG0`:T/z&8U8.EFO::2ipZ|HaiqUd 8VT*,r+n-ݫFw)wm 9 {W|֯ϣY=-7y 5,_ 9΅>jtek:WU^Q]߇gpC" [i2ǿ:fvrx_|_59prW{vVp#+4"R^]4~?-~$|J#>%vqdWڤ 3l)eV^s"S*dE| :uaim9U&x7S.a5K]G5nOt G3FMC $_=]j0Ih[QÄuQeqr~5?/jFa'יGFQZ(Ki:mƟc&=f1-&!al6h ~Ţ5f[41bB1p3Em4_w0?eem M.DŽLyVŤ ]\|( wňsi76iA2'Rt#_y|s]`Em_Cx[R[km>ZU#ћ^׃ovq' }  xJ?hE.O.C+,|]~!xLOEy休6;ibjAy9 | ~YgiMGکjgBpX?>+KK5Ϫ>O<<{U5N.k|MN3CmT仃+_qo}VK7]Mm]A]Y-ഴ< PJ_+oU3Ɩn$A%e%h&xdn̔pI97/WZu=B<.0Fϝ 48焴rF5b4}g^=S96+V\m\P_2ŢM5U.r$@ 9O^ILk}cV'GO)tX蠘 qֿClj:- ^5#Ԭ>cزY&@ۚ/p(XK[;$29*(yv&eܶqmyYZ[Ub&bFn|O[YfӴcliJ$sFҟxK3k}5?[IxGB/MlՎQ$jyB 2XW~#-eπ`7ww\zmʝȆ+ݳL,$R+-퟈t4ρwzuX xM7kml6؀V;S$D@HXe:xwNsvQ[7|1ѽ#%uY%q-ֶI,W(Fsyun&ϻ^cJ⯈4^'mZg1S JD8Ȭ}o^<;CԒKfwxf(\,Xې+o`=7z[aa,LIy>T;GKs1N_]%h߼kmm F -5죲o~ Q~!)/"O.Tky`i71sm :_8|yMOo5=ʹ6\FUH3K|[P|9r3λk,3&o)x3#,|Y<ݚZ$%amj5Ք&7vk epA/1cFPȯɼ$ӧO-ψE(],G@\Ӿ#U{1.o]I'#rLW|Լ ǡxNIRYm^hU`,lNьq_wJ [C>!?+wdIl[qp^YD:vᰠy?./Z kXjFd<.f{kN[(>C70b^Rו'r 3M/noYZR|3e $>e@)³/E2+矋6uR ;dyml%X԰Vn"zat_?yx_6X\KŢ8 ?fS[,jk^a/G[Hn%$i)'7*v[o+?l,Ԥo,e{h!;;Kw0d8LH>2ݩo|]>,iIEY*2xKIq5:c򔣸I| el+W#X_x6,˼3'_~VLjF Ux%eyik>K?N٫?%~_5"o[n8ݥ%$+V<Dh,G+ ⩷t,4)- jsxȑ2G"?&u00#I?3ͱT抲.X?M1Wú MB@?ZF+o(qҙWv]2I6r?/ʭ|[қJڗi?(L" zT{pq;p8z MbbP: hmUqL*;X֘A*̀AHunBL1Z3֧yD̉(qKhA&ބpܮSNv[2@ir}${xӊM`8*OWWfipsV3iPz.{N*//JtZڱPig8S0iqJnƭ2cQlojbt+\#*='5IOظjz7χ~.[[$ӮG#,7C>,gyW7 'ǃ%ak$vm?sF-og8 x<{hᰒ]2EݘtՖJЀ7p5_)Yikjdt,Wsy.Yp * pvyS((BQjVڨOTvk]4gYu~NO?6|10E#:m I1/ɓ| R wE!(Υ6OPp~})!4lXn5j;k}"kw&m S7N9_f-5`I᱘R|V ʬQʂA|c$3tq8lBcoj4̲S*Yd-08wzWluKjDJysr)c88 ^;M#ZB&B0 T h&|oq_ϭf1$?<:aLy#|mQC|]OT|O euDV36 =[ HOC^+<c,bo!B8jPko;“g>cUXǐa#`q^;̺[.T*dz#}/6)m{aЍzrdpyMՏO[}?c9m~^6ـ;KL_i}ŰY%dm\Z[|:5>KF]jKG͈7XX_Es%,4Lk;_T/[GP\&xX|[.(YᐺɹV!d/?a/s^?ҭVKi0YdY$HJK+yuZ.}zxl &bmp^xQ&N>CSЏQYSZ55o9xX=/ۥݵxUͥckw ]chSUXgEs#}jm^I Det68 0z^sWĺw|1Z\ypEX朴+,waxgT;@%Dk|/>u=ƗLHr Uq9# }3=0ʶ>]_K~} "fL48{WF ͂>SF<[!sV@3?u$.N3+/=I_ 1CdS3)t;֣xu%gdw|ib'?IYi_L?'/O<*s)۱_})|Iw6lrsFn62:=+O\j݃[^Va䅟,QcCʺ|=mIJT;(ܹDraOҼwڦ+0kZm,&[p2NN"<5GT{۾|p#|"QE_BOOiZmoWαΨ_h6q3{LJ?iXKVk MmXM:`l=>Fo:=S\ϦjhN-.-BGP+ }oÿ4COc:}"p>k5g| VbyhR $~V!Ƒx6^F^wb2F1E}-6?Z c"f6ִA502 Jd_㦬j-v$jkn{\oު;yS[^$~-5kے{3/`=7uc> CƮwm'G4dc;bdy.t k[h}ZmSzyĴzY]J.:n2nf6[y7qiJM-545isrְZ+p b!ujK p8fS!{W7bY j#ϘWCEp8 .;)oեdάܯ(2g1W?/Sݥŭ* J>k5 Es[ѣv~цJpm/?ۦt?0W_m{Qu5:M}} r/>*8O9fڽ?Gbx=k~HMb:zVu<ݟlWltjTorqNAqQjGfmsVD[~2SޮR1'HVOQlE=Svsҭyg#r8r4Щny{ȫ0q)3ùLM*OJSP8JA80)NqS'qISF%o,21J#>z=JELTbHqc8ɦ94)[j6\W𦘇5$5UdR3ՕP1ץRь QrwzhЦ5&8*-?^ ;qM AMIK jvW6~]1I{tIH)xڴ MKA3?? 3U)+8VvKuW0RxVNُG8Qp(UՏqJb'?G9<04ЙR;U(H##R5Rv=*苀iv.vSS8\J[O0X 8(AJ#;6*Ꮰ=;zQ;Lyzv ;Uݜ`~qS+l'lUX6=("StycҬc9.)*hӊ?Jp_N(UU=?ž8N:Sr? \,C ]/Ԧ?1>͐m`Gl$`R4T 1K`Jo;"HvIS|̾&xZt:6 '?)=՝J} ǣ !Qj<'m ƚl:.7=AGb=x n`Y9GSNE(Gb-+CJ.)v3TD[ڌqڧZR|;րw_5ϙpˍԅװٍEfp.XRnc6Rێ*bQ_(g s^4+>XcR>uO\[{rKKl82W/'#5½Jk4O>*T~1aYW/n"Fֲ,ԫ I'nm\|<Ns\ Nt3W ~ĿϏ%:Cdhm KQߺѿd8$ 5鎝rY cw4.(^+s|l$+F1$V?!l.&wN7kѷo4~-[M x6[)fji!uAʛ[)72݇\e;-=nJ0aT[2o {XWx{ởo\};zi0

ZuV|UM +m;40D6㲑VLוx{ƺG[=oG ~c1Ӯ3(X\?3ڍvz/\ ee.k <bV522 YT Hsծ]yA|Om2/,PiH q3Fų*m'U<7G#xf?6>?n46+fy2e$,õWu;fR]_ݥվ vQR2 !'f!UXWVI6֗k]/5vEqzV^KnN~iBhƧ 9]؀v>Ðvkz*xR#NmtRАp"s2HW7SBjS_!@{Hxcs a+&2Us_5|c|/Qԟ2GfH8V2ms >aXTrV_ĨWw{;i?^ iNLqun%mRQǀhvF+Ǿ.i}Vil":̿uGJN &'L:̖\_MђHBac |8_eqonxq(l L uӶs  Q7}ޏJ^)Sn {{)W5+N攖-n݂U+ 1$<ùy*f~{Rk%F\t5 &1Q֦rx8't;q&9ZbЫtیz9ɦy8*ӸRyxE]9QIY4^(RENsjZs$M 0 *"oRvnh\)Ҭ{Rs@XPv*U͘_Cd"(qR\cQ#H" {zSvVz~ҙN!G5hGN@8=LvУ)|FXt4݀|Sr3Ht)b**÷#ҘOU$?|/mT3ýrrw`c*| ǎt{zWC72ZԭI00\ڥg߲RT xGQuܛ(i"(8A3yWZ?h/ [S߉m!ke!`]]~0 ,Z H .<ξIiMsEy-[If]pok0|#~6 j fT{1_L1i{_ T\zq!Ҭ,^?/5 #wX*.6|dcI%kmMrYK"4ȜKyqEp@W=gm: z[hۜAN'+k!G.ⰵi8imϥdeӝ6|Ūk7:Nn +(0಼.ht>;gԛUȹ1=RL5ilg Ҿ: 2#Wx'Ӿ"Z Z*1!Teጫrl*Q<;}~&kyCkZG3o u嶻ERG>cdӴ)[?^6-[ILl'cIH}Η>w|AkfΙ,{~d]\F5w▬|5?^izyc+.Oyޭ] oto Eqa!-u[Ki&Y$h-2B[]G?w60$)d??x|a >(^hZD2:Q}#FcFI'f[ Ru5Ap_P 3%(6HX>G=Ws=KvЮ|>̷RO2GF;YaTuȸn8Fu?w]Tm[ۯeӳK3T˒7s?~ ۴!KQj j6ThJ|6񟄿n0|?;mOUҟKִymR/a'b{s'~Aw7wi_kCOҴu_Cx){9IA(%Df$*|MKѴO.Yo"Kg-9{xa$ -U"lB ]j/㯊fu9u+-"Mж'܅̉Aן犿g_J94kko5-7ovaOr4M9C{pMϳG5ߚ&vq 6 +ּ=+}2:Ǩ[K1³Gutܥ+,o8JY>geEu>\Z]_[Ӷ6R o5_ ?΁cDꪒ%Fc;pWӴؾi/oH`fnK,pRh(xc>s]w>x?58/_LOGUiLSڳ-hܘ¸?tp+3:/KHdt{[o,KY5rE~mzq'i{nݭŭ)RSJ%xW_nԭ 5ޟ sao m"᭟IG&2E 5.|u d -}.27vcR+>xF:!X-gLJm%]9Sx1&o'R1̳Y8 J%e%UD~%Yt?~W WSbmӦ/CݿӰ}m>$]EQ$La; J{ڻg*?16`)"P|g?*D@0O!Ҭo Fl"Sl.@8r=MTtB{qڭO]Jm? i?-\|*x։8ئxWcQ2զR晳͸OFltc5x#>ƌJwDF=8DPکHI6ME\4隮p(#y|z1Hӽ dKCI}c)|gm#HS}Kqv @#X8XtSRfQOšS|'@9݌ w]J;}U͝@j.k(\QK?wAV1\(1OJ.Nԧ)vjዓ((6x̄DAO­})pDjT{̓])s;BcҴ|X1c҄P*ydғgB8 S⑐ YM1V?J6Й@tN R#.m՜(ȧ+S6ͧ ש)ߕIV1afl /Ǧ7.*FJCz~tņcO@*"\R>RW~>of1ACCEˌ 8y _JHҗ`".ͽW|R4x9 dSؠp1Ѐt8=(ҝɜJB?T,c,Ly8÷4s"TU_+Jn^\)HU)p=|r:8|r*-*zR-CNT;~Qw`0)1.q9hV*{)\~҈p0)X#~AӶj ɡHwPu#xG&wDf+Ț#21ё:yni,[so,77IgʹCwVhK:$` | zxʘ~&6j:eh߿k{\A4EQMh9X:gR"q)=v8؟u8`&P|6 HTrʽۧ|+?ab!kZ^oY ^4ڽE28O:..eU&'icybÅ@N3c$]CvI_YXٞq.qULyy=wu5w8gw}+_Ilo6 -}>51rYuJ;&o&)u^ է8lAR&2(Sjge8Z~*9)9$HRJ vV0:v)0qȸ#+XM% #UFr\j~=h?rS@}s Xɸ%Wd?.#+,ĻFٝx8#ByUeUA+ޮ$, j铊.+4nvk\'R^7ӵ~}iM.bq[$:f K$m͝*om[GgP6X٬25H!F+6򣉤o8#ms˦I:c+⯋V[O 8{Z<ed#ΞH#Xq9>/ĺV蕖Y80,4a z]$ixZ^L>7'$@~3kWw0E,B(X`Ks$߻̞K`n!cW|8n|]o7\m/%ItNDi;33j;ʤv/>xCw+3h=֗[iЈ8 o6"ܒʸs,Df˭˧sq2tW<4?>~/ Rx[[SW]he՜0)ݯn ÷ 𴩫k_ Zڃ0* ֿeoLvK:D֧ X`OɉƮcRXb; i[#,vX3\" 1v#!|% ɦމ^t[w. 3#։y_^8 *ϏRPQȩadHOv8FFz=}r94Wuɔ(p0P H|i]VCbd*+ #ݸf m'û/{>Er٬I?Q7*%0cr>Vp,mEVkwnݾ*a-%)6eEOm>,x;wĶ:f(U[9iL䂒Wʿeޯ:xW;ylVVUkY(}ۦK}w1P]fޚ{O};/^QԯM*A\jFGqfWvd#nsW|&1,oĸlD=qv{cmgir hM\E(TG\''uI6hr`ڲEmRE$!z|??߄5}NjSʶI-ga#$HǹG _Kd66>vLS_'mkrW_ sxsduC'񧞀m1E!dP%s|nV>ۤml6 mv' G$ yx #gy&Նk9 P2BV+z) pūZ#P!Ԙũ.~eb]qW/S׿T۵z؜8Bi?SꏈgfxI0A ]$4/ k kᏆ-5K/j ֬o&yAזy5$$e\r<}[_jjkMvkl;KcGnOf8o5؛ok1:1+7_~)L/=NSIlp^5BHP!Y7!JWd_֖%3j7?fMRu")ef2d8LmgQn]v|ߚ>ng1i(|y7֏wpYtc򲆒)v+ !cz~<|*jMK&$L Zyl0p|{4%K-OSүXn^#K1>b[<7 $EȞ)pa_biZ#bYIVM-c) 2Fsc~~iRVdWkV]6>3; go>5%%dy:{}Pǖw__X\E+/aj/zT Yy'Q̂1?)۸g54\r8E@!.TcVUVג?qY*oOCx8 27`T,_FXT0=(X\wi||v(ǦjR=)ҋR8.zՂOZi\qIRz6;qLx" x+ȡH67oʀ( A1M*z hH xQqVgҐ @TN)6t=G z0sSNb^p[UN݀(.qJژG")W0*4}ҚlSH1TVi6gdSB&9s 3>ishos7IqJ?teoWѿ'ox\tuM[q$W[ˤ)$>|,_^݇47R+m>1k #"88zUP=*tcq;  mU=CKБz W< Zz.ผ֥\_֛Ooͷ~Ο?bh?5i>hѸSp4ǎ}!ذHoq'O$>oFX 3jZG(/< %^yj~ۧ+ .~d\~o|V,,W7$Dl)K$R*RûjNпM=OMz]]hqӟْVk IVVW-J5B]Y'>Ą)xl+;=g8«GN?ZVk!LV^NH̫vbdfx] _ Z.m2epFH*G_GK2xAƕHd.}WtpT䛽%jxwï^ݮ+=!Zf2"(>{ïzj֑`Vϻsp> K[[<8OĤ>$ӗURu%-`fpVHîA?c__x#6'eBg8(b2zb1CcrڗmMnJ|c}61hExl8_󅣃ck%z;Ȕ%ݏ1iWӾ淃|' úZi1LӦ/n;c,h/A+u?G_Ե|GދIds KiN.m]rT|'>m|:|{U麸gqCGx7^->oj OiW2-OPf=ݒzնy6,˖P}oxp&:)FWJ+NuTݚWVZ:2ywhݏ_)=2S(Mm~캾)0KLK *bgp>t >,h5x^l5OkzuoC-9[Gl[>@ob m^E#WX/}c_vC6P[e\,M ( N+CĺK  ~%ՠԟOX $1 K屌|-."tiV#yU]R?xV(Y>ZtvK~^~_g+ s2KjR#:45ޕ5&쮥ck%`:2OIN|V(=2{5468 _6hV_.>vѮ䲀DŽ+/(215\i>nj~!^'t2.ţ4h2Ozp8\zGi#awU}3]5Ei&Yo0gEwRE3kqy&C1P|5%]^զ;MzՎ9M$1< R0$[Uf_h0|\Ҽ/z}Կj>" m~oQ,2Dku <+^)OFԾ8o- x%hOkwat7bH Qy|I xTZ},QjL_h2 .FSY*#,=J3rrnY7ڼnf/Ogv][hvuo7 4{.Dxts4^o&4Ω9#iP_;VxËere=3]AV;ZHʻ+lxᶏsIR5a-IWȕ+¯sZM'RXV۵K]GI'r}/#*S׸*Ktm-8 y)V~-Zogm'~xoO'S<5cslKTXZu8ے@2%捪2M [P[.+~S{F_Xu ?<9ρh5oiZ\ʕeH\xd Bþ,էlƱ ".V+;H2pcVnkUHiz#LVYtD]V(B;h7Dn!{cyVwF!7 [}IX単v$k8Ѽaou_uAXnc8GE wdd*Py)ҋVs t/۝KMIe H]8#t5j(TH\p?Lvhf^$V;ۜj*$?,YB*Ѷ:U)t1T.pG0\|8R hQޭlفүPɞ1=);v)mgzCUZaUQ(S&1)2݄0V0)&ێJa$R^1@B㚸GG2"Hc[4ݽ4+r8*lU( R>s! aRp=:}*A&8s!4S G#Vh0Q1n~WALta[rE \.;ͧEp>jnjqMǥ1 )| Qp8ʀ)/jAt{>Sœݩ ~QۏjbǞOJcϷZR0\hTeJ)E1#&Q)qM(ySRp?Zϐd|2yϧJ uS5QVУ8l \XPJzlU=s 8jj 8⮔ ]4\V+,x#B:*p)MUd{SIzcT=)bot;-DmrF6HӦ60*":\t㺴kik=ó(H1ΰ@h{ q,*^~fjq?{Ho3KN&fBL`sVV}%Ljri-n($/1:yyˏ.>9u߱h _ 5ށk"*fSgozO<Ք,%_.mEFܒ4(N__"&`'Oه㗅hHUo^\șpzvqN2vzvpٍ*#${K *u95|zV<22ư0\#+8@ s/8狵KiYkIkoor|ǧfʾ!?b3|ikV2%4Y0fUVRo_!A\:~kgGV(+n~ia 09 ѭ×ѸH6m1' p>8ui2Y\{{cU_@<eu O$dݴ2dA~^Oc濖3JR6.ާiEF+H}u֖6fLl|fIIW*ѓ_clV:,'Lvq#;-x_?|<DarJ JOeYguW*H1):W) zvq5a]znhb1[򩈬X_.cG6uJx+B[fSs_^s1QHPqgi>-gIÑs~ gSOY$[)#!wll9_m?Yk:}bڥ?6A(s( Lc J?3ZH~z^m}5D,w8[>~|+m>0XdӓtVeH(Lr\N|F-"*>dvG큓GnEq[F5|+.u};S%kB[n&.2Dal3d"X|Vh`/[۽9+Xp8鶌fx8^{kzi/𳢹?/jk 4sϻoz.hF+`stX#պp-ԉLux|c)UN)7Mat\U1OہVVێ9NP)sA3sRҝ7RQZӥ;Sf)aHq cRe, ~=3H_0^1Wi_K]W2M/n*#S^{S-,Yj7$GHbHr96W7_𯇼_h1M{X`mb{i|6BS̚R\3Dbgq(E^M[3򯮸;Ek?G~*~߳o~;GoCa4G!)܄jq_?v>o:E'EVaJAҾ;|m⯈zW3۬JE+4V@ϐg0OyOT4 t(|XL$(H#7R2FY1_Ae A=U{G8V ^?G,~iesKpeًutt.ga\/w Ʊ;մA7LhXF$*3q& #[Qx,4by4P-i/ !Dj I9$>juKX5I?ug{B #\ <w81o Y+F>[ߥk%寑ɥ<7饻+\>>k Ztd;A-ڌ}>QMْJͧ_ji|ӭ丗Eky1I$LIPA-~ |T4:`E۔? )J"= };ĚƧwVMK֚eP7ss 9ZiVWOg`Tg.  +yqsy.rR,8A<'cJY&&4F 6aOt|a-j/-Sp.(?hѴ5OY*"bȥ +nbӳGs>C{ wQ"cH| wQӞ=+?.xΫl<DŽOlO727Ҽ+aXC/Nܹ?Ec*:w/]V Sn)Og&p5`}|D}Gx۴MCP3Ep#q`q^k/gM8I\;d¶pR40[&+C5 嶆 n0F9 kˉjQr-#n&|42P<`8_~!Dӗ]%[ eq[ 2PԆ-۶"_sF>&AE?t; $F|ϐ?~Ke_HPR&A12R1^Eu{M:n ̱J`;y/ #i0%[a+AWr׭ءRU$KJǨi^$ۍ%&?w_ZMƫBBtZxnP whY;e3W_ #@Zjwgҵ)'yٝ,^rX+ɍs4G [Mp|NM" GC]#yLbZU$Upk=ah'm_]-%F3hRӝ >GATv鏝kV4 j3iiw.sH) hʺB`5=:f wye3%o[IYdX' >亗Dմ%)*cn>,33(ԱY6:jRI^-iv=YRX۪~Ko:oZu) {H =A9F#whlF+4>wP]hwC"b>V~O~r~~ե(ww<vUwϴZ ev:r]@Lw^>+ۦk? ϧZ;6zwOOۧWj SIGIڪے7\ TLIϹFzzWFH2&`SV*WSvV@^)1X`3M!j<F=)2!1aW AN :ojv0r#M뚰m#Ыv`@@F}m$ ## /J (1ȤW҅"JGQX)vqJ|@SH튟iniOP‡5p/Q;p{jMZ<*CoʏhibB1H#8qORZSY:{p:Z9N%COdQ֌SR%"QoEJrQ6n56ݠjc?%,H$aUcUHc[B}.?3V {g_=淡KVz,qYKq.e˳@3_ƿ!Ia%ڄ{ kiAT!ͯ[:4_[ɼb(v*Dʯ*/~ >-xź^-6V {'^`~ :9FkQKYiUc%=6%=sK]xH?A?"T1mז,|>9t5uYI4hIBO^9]/W]mдQYyҘ7tjG.#yLdߘc~z4ogz7 Z]k ߓڿs_ZᜭysOle\3 RѨ+Լ#{ԳZ>Ua岸] .O2KkIg `|5>!xz~}Bi1Ԏyb-嬂ny e}}+2`lEU+NF|[Ľe`_A-=NjLI1MEvk_Z|RϙFKqi>6w) lnE5rw :v$-e'*˟_᷆!F䷉5Brj C SfPbg_#;kY?=mlm|AL|+'P>(x;V-"bhYO܊ϟx|%'/3ᛥy.4˖!RF ^Q3+[_5 n.u"{s(P^0R%2Hr0dzGoٿŸ <)/s̶3y`oP5ZfO*Y2+*pT3OF߻7`ᅧ ?I.]ߍ> ^//m[u)Ii%Q =Fh Jg {hKcUf*ݗ5oT?c>%k۴qhw>y>s@ aG~Ư t~CPx62Y6•~5t]䢟o^wsPwooO~)k^OƟ/kZ]ݷ)x58q/nc[kk#xG;Fᎇk_{g4|D1uoO(bwhi0%NT'#OE

.([s~mRh FGRRxk}K֮WšρgI*g˜Q$L˿dȒDrx7D֍^Μrhɩ(K^Ꝿ(t[*kǟ?TxM7^"]d,6+vKILE,CF}e7nkNjFo^F.SLԎO-mY4Q#nRkXxCைlO{yk%$i /D6Da5]F}}P&<ߵtnΝ=֚)|7VYs"fj{&MRi:^^ӧoXjQ^ӼeeovJMwѲjf|H{Q|Je5J }.PQ#[O7-#+V'E׼I:^,#c}RHXxO|ivJ4FW}w\xOKoxV|o;digONmk U7!ƓsEG՞?UT y0**Ɵ~'мU`5k#ԹF w0Ymdu#w z?N$J6G*ܞ]TR~ ehOU۫/iOZU]/D]4˚7m -aϼ1cG?@Ky   =WL+~Qb?X -LiVVڪ{7͠xowh P-ޝ/PhSFzEA-T)zޏigNC@s1Q$1z>u ATʞQX Oxs2z S{EY̨?`;6?1׵o)s>jeX\@ZP>,6H/mN3֩0©N5sf޽:S:#9DNқuS vaB Ӧ)WaڛLݜ)Bcq5b@zQv2G┦أn⛳Y 0@̆S1G9]򗧥FɌSكjM;O5qb$p)_UrWi:b,9l¥[Ja(MzRlG*Tہ.Üf>x9+v(FV=i^=A)A;;c@'[`)O*n)6P+I1T@XⵊWM=GjQF)X*RmYGvp*CNٌvP0M;a\` ]/ѳ< W/xXR*W61M@R.%\v'AVN(&BqN+Vd=)|ۧRvB6:RNF)Dy҂9JvzzQ*'4}Lp;tJ#&۞HN+ڑ^Dx}j)s!U;Ia N[h(Vة6ahlv+qC.޿jTg Oj\=D=1WFC 4J~]*ݔWp5n022=20kCi"o/SNHL* 9G0$|?O4> 3UOnݮ>j}$:FtoOgoz𑴹kxHzŬp g\2yF|h/K&AKyNkb8ș!Ld(?7-kFme 2Ǔ420qVIY>~xEԧ7tۢ?g_t+^5V+fY՚+K%TDqDRZ"xᗊ[Bsب!x[-MD_,1H?3N;]XRXYq̡(ouY|<3I<+%nWPm٭c+Lq_eal灡O-F7Ĭ6`x=FN ;oA >q|HP0Kζ4 N43Ac籑H0"ܪ0c%oLW\]MbNj4? u@uhqhO̳) /*}~ki,=y*'@ǐ1$r`t) (/_[\X]Jj_BY!`(x_tkcToGo]\  ^r|Ҁ78GSQ즡%8z۸ѿc4}TGUK."1 ǝ|h|mtoWH?wku  1Qa_➥y OVGjD}ol @Z1!r (;{ĺYhqgü AS}Wn/|QcBxaFMF\DS~ԙE@s>I<]ᘮxe7V*>^),`$C g6MO[eʜ={g8hJ"p8 ھ@}h*?JpQ;*v擐2{\,C=)67oZF91ҩ]̀z_s-K᫯+m< qVuZ X:jUc?1l~gODҼWW[Vl5n!N$ ǟ'b@5/L6YUT|*A#o_5mԴY)Aք€.fre,奐'/WI}i#PK1,B\QvO_.=TTTf]m}7 n nt-#InY,6GUo]/ ,|i-Y/=J[()-L)PexXʴiNI˦?P8 V:Wj>>#_||@| qjt:sM&ԍ%b#Ȍ|RH/ 39-5};Z2yfu#6 08Q$@_q_j:2j1̩&Azp+Cܯw?o猿o/-l~i_ޅ VurSZm=\*Qi[|g]ռA-O)Qs԰x@t_2|PbL?\W߳6/.PNҦi&m *2nNq^rR!̺~iú)WV׵!kJ[[J UƷݝFe mIQ9$Qur濶l~"2IcxSɖh6mZBBGD,vt?vV5+>UbZ@X.$@y+Z6mJQ=cD*NC-b`]^ǨR0fDqg-kmbr:.}+J1v+S`*5w_"%qm"0i ;-Er|xQUdrͭ=Qs/ M{vy7Y$}m#v(*J'_>-=MNd2ppp9tl<3K=^ʺ)lXAtuXe%k-F=+X vW-%eavB; ]̽q. Q^ 1~.լaF(b; |<,npkĺ>L ^QݛաɄ6 iV# |G3xmςˢ eq`mi5"DN@TnjWýs> KRSRՀT6o!C!" \LΥx_ ׅZ޴RXm!KYSav#܎16o47V .2 |iW\i:ޡ;l¤x;Y6kzao.hqS6rn n=#U<tc_/|=F#157cAPƒp2K,60HEס⾛*5GhZ1=8t;rr u']cu_A[GO=y~b։'6# 0''2HH%2"NJnG9Wn$:o%)R_zXχ'AmeU+'ąu+<2\݅a uhX0WqoÛ;Pf;#gE+Ǿ2|mgK$K2Jiߪ3x^&bE{φ6IK{L0|fEֿ8K!PNzW^?γ 2c+>e祚.DF>QUB[ACkfTu^;܌YRcSڕX3Rdj\qNT=Jm1+.UM8bFJn27Hix,$b'.WG\*SGmT7$2 l!C-~7E2J0pljm2emt{vtǁ|1-sϹ(Ѵ2Ѻ+l6GN+Ӿ,GFnゥ: q_q7x\]WWW٧Uod0֡Cc!oX|C#^_n>$o/YqV z4{VʇRY5z/qҿJkbk>9o0/yp11Xq?g;O_ oAY͆4*.eFmΉG7?6 c8yY,O6>]A|Wg?G$`>sglfK𵅯E]*oT*07.Pzȯ5 G|g5éj3}sD(v"o-¯ MN s|s6ms\݋UG83+ |Ae0KjZ]O`ѯ_>y< 뗿 x:45 :Ȋ]c icuw'O ;=k:1x^5Cr‘9#I 1w ̿X:*'-,eT='Ch>g+}f ^կbY5]V F}>V״J̠d$נ^xO+@-\aX6ְ̏LQ?g_ڃqw5n.(/"^ǵH9Wprw`] od-c\uT;Ӡ+ <^-9vogY'x˩ o_??ڤY"q w$2A1\|j"GqD/P&T[I7=~+诫<>gĨ^{wMt] j\AmZ|:*nϾ?*xUcφ5g~Fѿ}>[i,'>Գ>QyjF9b:{쉩_u_ֻf5 ߻&`H0CE}%& ╲<"di)Oms+O<=V>\iy)73:4ʀ|KoU9^ w KlQt/P_۟V>irCu7ĭ*O/7nnw፮,MB;I'KɼA_7 _0~ͬxmȞĘ yLo6? ?n=kY>/ j:ݯ H(C2hK-}g^?{-C'Vwhu;l)WzRB㡯3,#iBn_nkтNڐV٧gE%ʺ]~u$ 0?dn Oב P 4goF*. .?jvxJ{o 5%ӶO n}yŰJF?^ãYm+Wӯ-Y5Q=ÈRLܻ_uw[?L-GR}[݌ze3<1JNOG/lǃ[vѯIj?0~)~΍S“36IRY7zMn|;{rd$02 D̾4wÏYҭ$t,mLuRx*Rˤܶh6c~ͤlοSע"U^V:q 5nQ>/y1N[+=o%v_%Rʹ;zI6a46;4EN;dڝX[x mkNgD]aSj;lc)krmVRmzzQ́p@6i;W+<5f*RiK|Q5ڕ_hɭX%ydJ*|TQ/+ǖm D$Vq1OBI~=jë0_Z$&i!YT6ʐ+4_|hhRVҾ+3c -X@ ~]> .vr] o"2ÙoxfsacfjupQv___ n]gN,TH/`ucF“KE !u%k:,φsqv%!~U_Džq;xĒX.m=Kh" vF(,|܊vW['JTf*=Ǖ\Kk)/E_di?u1𦙻ʂP"FNxGM5;-TѥUby$nE.,OXY|Ic5v2+s͵IBH3mix?#WrevI ق3U qp_ק{Ꮝ qB0GuqKb-d4r]d|95ߎWWie}a [)[spO%Nxyo<53m-.u GZ-A#11NPvkz|ZneYu jnp27[d?(#[(ߪ_9s>:Nf~TOR 7c|h9G `/l`:eqj:ekp1-$[]gOw>jjR'kF`vNwZ_x#ۥJ$ۺ/pXX r(/s3zn,.bfiɻe5HZDރɒ%C A{x('tm3*oNW['/=~X^oaմ{V9Y'b r+[0o|}B :aNBoT}>~U=.neosGwF1u-:h\  9IDsOz?\|Eօܟ`Yu ] :XdQHdy?\mG=_JNaUwr~k>k>f{M*/kih0ZC \+cM_ hjj>K_6\Bd"ulX_এk'Q:׈X,UoRݶ ][U*ȃ2?h wy\_񗂼X+sYb3GkjgRaBk'6:iM[hn?Exm3線X+F>:x ?Z|Cw{c=XH>#bFe_ $ "[k{Q]UBN+NN×[|KVWk%p|TU1_xCX=qxv6j]F}"(p͝}Pdvp8j?<_ojMb- U`¸ ^ Hʼn(&~ߴѹI矗|?O룶l!mAMx>Tn&vۊ ލ?>ε:FеZd\yzwVaN FxT|Ew$iD|C_EG2Of% `#`4bݽo\Ucm%~G| iOx2F <70Eʳ9yG=kh<9v_[oAI>-7hk 6 xOtlRm<@b@{`?zƓ Sۢ v<ņuxvQڿ=o6|OES]Chɍn4Uhد6ҼIvSHMfHau(E\4')^i+WY{ugIA=U_xX>Kq7h/g#fC+k$ӏ0ZlV0^%eiqQvrvH۵ڸO}E~u3K"%fL[ݾ%.EiOo$›hz-U/z>5Li泚?dUvu UZpg ZjW#)5Wqn߾ؑS$*\7*\'*hzoV:y Aqm%p@Hum.?S?ᗈO>~{c+cL:N18(݉Y; @2^+;S ) @1M {T0p{S)E_-p'Y AMT֕Qzvgj1Ih*r8IlJB Uہp(*큌Rm @ҬSH@0x sVPcRqT0A9{G?JozfT#=~T8l *^wʝ35+ h5Mwo*[^2z `EP@+.EV59#,^2=]8_RٖךmJALē[Kݺ)^-o |{qkI'1E"@uA@9E*擎uQ3?ѿ ro&é{:?Dt>-Q?jx{ŖnQ b}\v>=pm|EY~yK?8]GF\q׾~uߋڅj$B"FX*Ocj7_77)vP] 2CoqҼSzrFgFMGe_↭ kMXy-#Gmq䬘i~ByW|'jᯊb%y%&M߈;ieoU,J"P=n~j:nh H9f}WxYrX]Nѽ%譺?8ļO ,խcaoګ^Ny) &S1A"G1Oٌm@neQ{n\q\˛~זb[{kKx\\m̍Q;BỤ =%r^+pVf/$~kM_4I4jeXHF"++/p$coi}h׊7.?ݎ5/D#>gOڵM q~T}jv>bǞS~>̒+lIJ|@A{&l,SZZsl F;Ӟ3A6~hzs#=;k_<( s]4f_֟P(Jw9?;iYqQ䔌8qrV>j>nI5|n?|:\Cu9SD OxȮǚ:k]bh MYC¿0klti%ZUSmT=P#_NK/-[Le6/$ypBva ٛd鱶?+in8!tRch-6 Jw$F>vƮiL:SS E]ړf;qO\Bq@>6ʝ6ٞ ^(YS[02)^[T)x8\Q.RSڐ;U+)Y)PEv\ӌxݨ@Q()19SR'*uX1Ida{tb,QhL1cbRcMcWOs({cG]zzP#h)CB'3 ` ;SJ)/(BE < q)fÑqI~UQG0rMW6Iҝ)l1H^yCV)6c*h#? w8*G(Dt>ZqJcR+ٕcFVc&n.Rr( {Ց>SٞUwTbNqW X;qښ#1MHBgP}RҀ9G0J{;tj][Oݴ\+iENcANHSn%}k/9W66@')\J%]()VX^{R҅!bo9 93EЬ@SaJL gS|Qp+7a6hk;Cw2vUgO:f|5SFj&5\چL2 ,O^jœ{^8d"M7G-5; m  !Wy: _N\5YAq@Aj$҉`ŴrJ"=c7Rt)O}ӫ!5h_Ϫ_e,[lww,7$fmǩ'whwZ-YMy@l x&QVd#Ocz~MW[Kq}ϴ^5yj ,_@O\(#&ݍW|~ ߆$UR 8e 6p+A}GfyN+/σ^eK%Ŏ qHR=kۥ?oiA+6t>'|Y} e:ۮ܉w|p]_KH"_!o|.籗HeRd7g崑B4!7Vj<%_ Ե>L(x) 6>;[AlnoxSEԵ[ iQ]$;{2;eݹVko8V*K4]=~Kc$ΪJvo>/þiv6=Sg\Llٶ(K\}WbW;#.:x[G-Ƨ+O.b 581Uh,&Y\S*tTEc4tq杶Ы>>?PGȷ7Mzu0QL݆ľ+=4M>ii7-ﹶY y8^ʻgG$1B?Cƞ((3iux`HuͤrpB.efUd=1,I۱fF̛L#ȎĒde˳L/s/x׬Q.ɸN6mu?<_⯇~4mH <-ű| i0ƽ6+(*x7,uٽ-ߧmxb/FޝUm,|_j߳Oubi_)6_g o+J dS5c8׏FixkUݕSt7 $C|g2$*nq Y c -؍LC)P+Ȯ~Ͽךt{9~-cCqe#Z05D[]+2,G-?^ǭxx {h=Uϥ{m{M|kiWh6qmA f?(YG 4CϦ;Wi Vc݄lU ݣ9+] 0sMV{@|0ϋmJōъE*9) 9_ŧ][-nyn6F zk8n<>0 <:GtVLCl\*!<[5g4=#Oj' #9UǩͦzH.M( u3w3 YRc{{lr̵( 5jΣ?o> n-~3`?fBU3DM6y']H#Z6k[⎯͟ٮ[--7+nd 5ehЀ)0,YIp1Fʹ*8>>|ҼcZdʦ8l$3J>[$`6g^?# SOyx*F-Tu(޽L$tg-ty:q-cukS2Gn`>opG8R?Zhi}z.EzfozzV.VfO'Ĥ,<\g]?C௃ 5@až!nn"%kg`^&A댊ZeX*rEnҍ=Z?5$jSq'V, !UR%P睻j).Qc}䥸|kc+|"YGIeeneŌ=~7s,6kzlO'v%X< W*j+d4yy#xK&{k6GRGAE&ٿs}|G@xWGm+Ql!_W2$5h_~~߲-:NZ729?8m\tkc঑ϋr<֡ozEV9?b˒;Kc ~`{QC(~+e~=Q; SAٯ}S xwz@[wf{[wyirs=eڿ <ncE m3GGt{u=7Ii 1ty [e ːk>ZY&Ӯ ڟ̭bYLt>izHRڤWCVImǗnL>x~Di`Kvos{שIJ黫Z޿w,|'" Va⍁#G_ <3&*4iYbCҫGyȯu}go°E{źver_`T^.#cO}V ]~mVzp:RSҺ&LfMf tN@U\H RҚ$Ah@>ZSOv+jo0Sǰd ?&уXT7p(V y5`.)vs))6}Ѱt*S)"@\A9Gs(aJW9+>SYګMڸ)1ЭI6`OVW W\V*D"Lqk4*\O/R=ûHS#҇1Xtx^ M ԔʱT"qUP)=yvUv^}5_׊Gu0W_.D<}?xsK,oqff0 A0~\k|r>-1jvf0Py)AamQ,̪ar1q}'Ա9 =Y%I'o=ws~0\4fɕ*bPsֺu!VWymىYJ̧ 28<헋5-Eof.n-4RN7q>VM}iS!b[~(MbKc!llY)ev,BR.ϱdjnM:yZ:ΗMcTL`T1Sl?vNp>/)shwޘʴS)dUwmk? 5WODbB  3Š0&a{nT1ܨUx\9MlNV} hJjG-yv>7ybm[E.`Cs)߱er }2ܺ"}Fv=Ҿumnėzvmwgza?h--r6 þ{hWpF!{p&)H6H_J>8&E/M@Rx|?!@OQ; }uRSh`zQHO?8}6`j1 'YcĖub@&Q1Ga gnOkFKu|1`=)!*/`tX:H ]$"x84nbԾ^W7@HUй8ab0*aN¯QҚ!Wni?Zb.BqF^z SO96({^)P(B̌r=>iWAI֛VH9\Mq6dU>qKJ80{x!Aޟ:ECty'qǡQ;Ry_0Ǔ7";psQٞhZ,E4F>S7ON/qȫ5 ȱHJeqJSG:;8R]+ڗ@,Qu퇡֭\usء Tr*S񞔹+aDCv=PN*LhSL ?Ə/bB.T Yq~)`cbcҍR ?*]Qp!+MhEp ALcRVJJY =S|jy>9♳}*3K)qSJ|7_Oگyg&ݾ9G5-7ῂ57W$#HsD CjF6J?|@ǿ<6hZ'֎<'ߋ|EcMkjIkqqLyn&dlvß7zG?jS^ff+[`vA!V{|۝XV~!z%X[Kh~JxC㶣[ J=?NbԭuqdTX ;'8C &viiFӳ)=Xl~ɸ A; BM.i49 ZӔ֋, &~YfUÝoN֝ z*4sqDȒF\2nk)|M]{l?2,$\mߑ?7k۝kTAu$Ļsc#mc|k?jiφVlC*GʜqZ']xRӘCpe#p0|=k6w&`Őt\J} b+k/ka-LyNcì.X*^_k 0յKR8Ms43E-eyL2d k$n)MG#pG(`~kWη nNkH۠Y#ߘeb!k'#{}˯qOdžCWWӾ/xZKj_jE7qXqg-_=g_R^t]L{>#iwO'(DA{I3&]XzWbx୎ewzoFoy_ِܫ\EoȮo#86+k> ֗ik_cMDfipl&dDV#A<~y<e{ޟ剫ݻ}GYwો[IL'6ݙ( I3D 'G v:Oj'J\{e:MmT`9ojhԴtY'u?sH/pw/ FajRj ^ϕY;CқVI>t=')_vvn`yhpREaԽ.Av,t{}Zg-}^c:.Ixq_`|)?7_l3]zcinZK;S+tsۻ;K)ٚ?dBޏ9tIOY>էܙ,\i^_ɮS6^/N^&'j5ޅ6vrd㠒!nW|,k]G޼Gg5FѶ O21V|. }~Pz= %D',eq<t?_5=?:i`q+4gS\'c/H驝үNTߛPφ;o ulWi f ,n¿CtGm6)-2RN1=Z^"\ܡgks8 >O# 9P:sk:QJmOh#cO`tM#"! ch"m⍸㰡;A.?S=Sp) F;e4ڤ }cNRg7]?xĖMo,D0924Q@8}bYΌ$Ӓo#28A=:^eخ&Tݹ?֦8PzV G_i?-?e) 0C"2р5m~xMk͕疷fEVV,(A4o1j>l#X~ׂF~YJ9C\&/rrfRW#U#W;G2º^uϬ>(b#8=}4s~è~F^[ywVVakO GX𡦙"kDu! Ȯ}6|Ikt--8LFc^ qY8`_?!^䰒G*km8xVZ+ ^xc\? ] gEe  e67TkÄ~ӻM%I_>.DjE,~D-_?]x U?W,wo jFH:6l5MKcjF3^YV"KSϙ"۵d2h7y\{+'NNm(c.E\Q5 üu,[nW{}+ g+|?d /q> iY&b+l>$WqI" . kg\>I-u~αhKJlUFx0Mp+ek궖0LTfa83,Gp j2f0+' $M2FqQ*:2#p+(|};Oz',(ȵ{tKt*mt%rHm  Wa'-zPkDTe.iI"I6gf*xg|@]/X,?3*x5,|+N5y2-M8 e\+W귈={BEM\yb'u [l﷩!n"ӵSaQ/i1FQ46>U^ V6k[mO./UKYm#M Gƾ$m-Lzռ֦`X#m&~pcVg1xWKHVFoDA#+ɲ8%<h$GyLSWy?bD^)Ixԡ{ r<ĪP1JG5g`nGG8J^9ห&>G8*J͛x#OR@)բ~^5!Y0n?*aNpL)ԐXJ?UH3o}<@xJV!KSUx/$Iibƙ<ZL 4)#!@/"4Q() xHP'4y}3OC?o8,|fhX>ʱDoZ^^zn:R ;Իq](h_ʅ2y <i1ҴJm9=*1>q86cOLّscv)P>tE%)lR?N g\ҥ JnDP?ҮlF"9EMH".:3gW|4̀G8\USXmrlW1z ђ[ijl)@(6vU$qVD[S6i8O +.Q@pQ"$/@qq8i{:K)X~|B4rە Ύ~1kiP7 ~%x];?MԜHR )@{ $qmb̐.@ cT)ۀ4,_/5Ҿk)/S.42ZmnF)ɜ"R5G{yO#O@1(2nA`_9㞯<S< N㵍C <DD̳I5.?/!3z:.WQŶQJbɌ o$UGԪ!xRúR9}lbV3w[~аͬ\iZ.<%v SPn{>8[ߊڬ# a_Zxjƺқ ocyr-Q( 8g%Nvú5-KF [V}DթmG֟|==gWk_/,eIo8p22F8?[x~IaqVD/s̐go(k珇?Eq{t,Kicġn͙PrpQp6GK2Y~UH#Һl=G엽mKCΫHv0~x:.u95$Ϲq$4H/HdwsH$G?&6Gҵ2k[f:õRHŴP/_EDp4Xd]g\S9!AZU^*>7mlH';y^Eqj;=F 0͛akrWuIWџ>x?Sѭ,t=J12iKq!J{I #Kɏ]ACOS[K[Ǩ]P,RCذ)4q]0ʃilE8Ν,nf-HAl>]yd`_ᵿ#frw_ ^y ]]m+ ܿ+q8BD |q>dXJf@+*]>idc֊H ~A .:E2ɖ#n7{^%fV`H.S>ҴZ$sFF}_Yų:wͷqҚaR2~nb=?Z{Z]}'J68‼tfxRKv0vN,@'߿jV^+2j2 Wn[Ð o#eL/y{?옑O|Oͼ`%&t2:jd֋y&<PΒn[},]^~~tk]dPs/ztx"Pu/%U jeUy0 )v'= /WCJG@;|%?b֝Cw{ 0_ NN }i[5%Ǧ؋Gӿg*xҦm{ :<wڿ8a(e~'%bh o|JYá;>{\,gq YqbkO| m5ohS8U+R>њx@ÊncH`3W dsQnS.Q+8+>[(6)=ySSDF*"2t.zp*^:PqЮSF Q G"TgHN(N`jC珥4xZ\|\g68QNb1[n^" 7  BTXWZgᨢ9g+({Yz j:VvYQx`+c"Ŀi6w[g-@ʃ90kkN/Fw_-sVV*̺I®pZoxo'ׄo'i[?r-π?j/(__ljYӴGc"g%2NzyNE<] h ?`"omzw$*3anc8]ZAT3+EslArjdF$A+ok:< y 3:I"J[twJmgӅ=*Xueܴ+,Ÿ!/- Kmk/r9zLJ|%gXz~^Y S}B m gy2xп*_ny+Kcw4ʤ~b*< WHo10pIsҫ|ܐ[+7e^eqJNkyᵒ o,fFsFED7>.|V4=cT?["GBxe |_-eV.J~{aRT)ދCS|ҴXzTA=LwpX'=3Ry|ax}1h  AקpGXqWDXsKʟ0[zQڮǥ±PRlW|9G2y ax!jS|uS"*hm[XȦzФ.DAMVpҍJ9WޚM+*d򨠞 VHeYyN8h#*18ƞ>|iIw0#q)}>!IO6"8eNEj@TJf28x(I50+ycnc҅V@M R,gW6DE>]j>>s=tqI`䊷 8<9)Mz}*LbML9J{On^A\bǥ< SBP3 c0@~zRl*H";x*+)Ѱ.8m,.q$RTqnރ^ޑz>`q(ABnj0{OOo P)YqQG)L@\\`v=>qߥ1W<š=(QHSO1[d64hs"+lٻj`ȦO)TF >Fߓ>M z~=*rQc)󋔨vV64 bq 0=-I9ÔN8[;RU+B=ͭIujHeJqZ2!).x7j֍0! ʠqXĪ|ٻ}“#]"|ҭPJ u&bѓv9򅿥|I|uZlaq/笷G|gfgmg^Ϛ { $6 1~~οluZŬ:%j5"p̠%!J5[x\B%۟/r^9_!N&uVv~Xz~NDQZ'`"ts?1\gK:? ˨KyQ1AZ5u=i4C"Ul>p 0DNGNiB5twlprPf͍ܲU)x{3ӿJ+]BpAGF}GW㿇h #F/|٦q6e2~}KLH&xYUN3}}"I$~3ѯMNjJQXI\4XV*fW1**ÊpjJMڎa򢷕i6db)TI8ڮS6p+lPIooǵxCM =zc'ѳbF W=>Wbqc$GL ]}q>~ C!s۴j^x.vJc厡$j7RAO% Y]Fm7UҼNIdv 8\WњWKrxreӖ&b6n MM&K=x߀x CkQ En^zfO x/>f)96:d.m6b^+癭A_ɞpZU:9Q;tmE|-G(zFd'kw?~~k~CY&4/'_4+Ew_-< ɷc|Ǣaw^b;sor,7ȯ ˾0@t7~x<hu)m"׍o%" ̛n=q#ƋKSCʸ2>͎V U=?йLݽ6ꕬՏ37WZzyv>giL:v׶j^CJv'9In+5QM8jM年.~d\LR27H%6O >}^}z$ 0)Hdyccl]$vX`SOnZ EZ*wx+: \U1+ e27'Cr:oL3H#j 1ۦjr@&9=qްuaȢQ ڥvtNg4cc~!5" x?oOO_~$Z/+9.*M&L # |¿C5=.Dy XtێWN hW wiڍX+pmdR#u12bo6|c2*q/ĶwAFGbՈ9+_+b=/U/u;dgq$&ѽPzW-o{>,"=fY#d/_ixsX\I4rN6>C6oG_iW+><VUU9+yÞ< `#I0i/HS­v3(ܱҹD;a'\W5hk;n 0;?$o:pH|1m,I(<υ%ow~l8#WXbn8q=z ྲྀӬ|]jWS=Uʟ&R$K+aEېdb_iYslr.XoH 1-崫 RۗE(V*tm]O:/Vik"wv:3 < WNҼoM n{uy&pH~P( vhchk&Eg۱)ڎv) t6nFkU28*0i{ЦUX1Y+Ic=4WO6V6Sv5<䨕v4ڬ NxΊ+mE7gjHc8(Tکǔ V̨횥*u ct>&l5 (m-$g 2*r=_|ZͺF?yYT8ǭ~~ض7=`Jʲ1V/j%o~um+IwG7 Fp1WGaIq~l>ٯ?uݖ9"Ya3# {m{W~Ҿv'v>M s6<3iq+oaJة)v‘D) Vcj\q XKƬd{RC+Sʜ.[m.3VvFO?J\-ЀG{R *(+ҎdiVTSN(ێ{T*mb+9{=(ٚ|讅046S€EX@J1VNwE>ةMqҐp*r)^xQTj oh6t\Kہ(L+t + 8X bTS1gnE.)s ]S'i2j/>퉀5 ^ ~|ٚAB, Kyw#_6CͻH(Xؗ!D[zp_O BKhs]j#m߾  a*̡>kJ s8u"om}ߏS?~kIoiocC$4qqBڰk~n8.WJrQNEM )v́Ī@(85mGZ|ȞR@)v Հ~EV><{O[;dydP0O3Ba6Pkn(WX; ;2cQJ¦??76Z"78>bZbҧ.#q>1߳Yu ;u[:qkK{ڟ`Sq⟗M22T.k1~'C+2p ,w2vJ/ iKܯ~>,ToI `*@Z#`㊸ӑ)i3VU9Td9F.i:s kkgI4(f=!⯌*㮩r6YNFq_q_3~?l /ESsiלѴcˎeQv3_@4?'o*|?Ṗt!D|lҽ9PR]'iT)MAǥ\wm4㷥R86J6ӭ[);sD`U,)CQ+|qI垕kg@_QڎqX8{G?Q([&[eM1Қ!;;fGdmw;t4ݜW6^9 9!P]JW#_G2K`G^)Gښ ExҐ'JS_qaDaxܱl;y-m-Ψ0:\s݌u\qX^hig|G>7)|m){rcJHF$QQeF|24/xÚԗz\- -.0ig(<+3&?/mCNVVW{? ~Xi/y ?.h"SC8?v8#G|OԵFCrS^ |8i_ X[nytsfp+0v[w' o֟$WƟqciDw1h|6$g25_j,ERi7I&ⶖff}Ȋ~鯣|s]x/Cڕ̳i6o40)F~sq+$BȲ0Xl-Rh*֟Bt= J [BrmH@-~sx+5sk,xTT0mQ[th՞RAܯT[gA܃zYf+)n3-CѱdvyZK[;i";m" b{8\{NuQڔR@ )(+ڭl&Ìsvqzqi\\j6!GG \ >W<坹Қ2l_:~_!y5 k_)\H"䕉rZ 8ȿfY<)5d7}mìLK B>Aƥ +5u*ki{vG]hrxjˋdkw" fXLh^XMm*]$~ZAv"=j F=qtg}w@|gr.;tؓ㯔~7d2XsC/>یN/|5ּ z{hTC3Jxt(@1ixK]a;_!T?|hz2 U9D 1_|ysdVG~d)uaCº_k#K lcp9>ƾ/l/% 0bǙh np+_^MړhZ.}̳"[[!]!h~PIоewazHo|G{Gٰ=\Drx?.l2SHǩBc7EdDV2N\ _m'đJp?u çc5{h"m18*u{q)B`b7` SJB~Z_(UP>݃Q6C &Ì RoLSC)(1UͻqM1\*Y#8Z w( X`qRUУ8!<Ũ|*{: 'ӥS>4ZXW-/] o1ܻ#2x?¿-5 rq\`tB„p%z]<`Wod?Sq|tpߦ+[\ 0nV+PR@'xL1WvMRh݄9\ٷ͙8H 1ࣣUp(J.}B/f[H= j9T(aSjP8Q+m$qN vt !aohS~F21S`ԡxlKt"FWҭm4½@犟8;QqW#[pyV#nL:Rm=c#(ژҊRc8pWn>8@nӊW{Bzc$c41ȣ,S(@RA^_8GӥV (P9UxNrq򕱓Sڮ3E˶pMJ2O)2R.CBt9mdݴ`ӊ> ~ ~ 156~"Ԇg BQp]K#y.a 0W63iZ3*];ek;z`׵_zgK]zSmSXӴ1-ɂL3sqp.Yơm!Fawƾ?xX%[٥FqJ25]wn߄I>|d:4h7)2NOR%:@s/pMMi6'2>YJD)5ꖵUU ȠPxwFd.Ex6ʨQueYi_k8R{x0otɵ8[ C@qs~.*~7̙lfÁ2<䃎s|CM{?4<_h{xy:#q ykT0ۓ6$b*k<[JbʡH hU'Zz]wzN*rtG]-gQMsGM::dG˾e4r!c/Zg?kc:B];I$W1QiIE*Y6_WEYަ4\B ܠpI^֥2~/hz֓q~lcߍ# t**P=9;wKcp)(vOwa]Yj0jT$:ysEΌtSҵM+_kQ4"YaL<4NЫ_ħ_ 5yTVޛ,g$mS&&%h u?/A?~vS_ fIc{a_T\ ׆xp,=pS~qxZ3K3%Ky"NNM*m>HHFӢ qdc@g<3? A\DDt7"1 F@x[ҼWT}+8v[+A&)X9+8)[Z.$B6"3ovrҿ.xqy}k@OK&,i .2+\π<{O($s_Jz}8('acײ|vRXhn&TƊ]2n rJ`F_|t>H hhnXe8,ў8q^~W>{ >KWG1ݭǁ-Y@5`7VKkC%R̫ckm?5f/SSun`ضcIo+BC7$)+]>.?lutKK/`cwn)<323' xkᗊ<%wzrBBrb>[䐻09< #]_/x+f/\jzWCov^D'EQ?09=S|wXLq]1h;co"$;pTs)Kb(;|Ł*ZiVH@ZWeV;W _v_vSY̟h2?6%sW/^^i#I$dqR$cUXҿs9sZSNRNދYw`)RVV |8ᜳ6T\lǥ|1Vh nj5K(M&L#?"8]3Ikyy [6Uʸ>Z_oO:?1-qWv,͆k5\Z9>^oo/짍 wG oxJȌzs /~x;OKt4B>kSIZ)Y%-T:u*;Vّpjɱ\'"zUsJ96dO!K`gJ"E%2\ Edϵ]hxʟU&"N1բ{U BXYItPO}d8Qz)  }X`%;Fђ3B~ډT#ӵq:5:T7]}?XZQFy\cp'W_{Fڟ"E" 15 @;ԿgUW8⸛Ttٮm"cw@H 5R?cFF{y= $'Rb3Έ2@u)*{4ص8X`'7J+BxVn]5O.A2 户ԕܬ+G^ Pхy?H&*d=Wv<0ʳD|ֶ\y}u*?aiџ`l$qҼ⟄uK:]ےR]nF61܂1q^Ȑ*#ɼ(`} qw>JTV? xRZ8^3SebpdȃnAӵWIyukm#Tޟ-*!wB@0 %_U1< %0ѵIC+3`#EyTw쩢@kG$y-%e'a1<14mMq 29no[}0׏U_?#cn-R[jWzTK 壘dMō{' ږ,mw7F2C>h]"xơq+M"g}09oj֬*SPrNe8!?JEj*ߧ1n-5~'ӾV^{oakzڎc;6 (!ye_:> _Aam.HX~'O0U{ݓq AZc'lgBn a|;2yXV;I<ƾ$|^$-K;L QqC.&U imyX܊sV_長W_%DVvLm SzFB i? |1/mS^S$oKcU!aEDdf|iscahJje "%Pw)iV3 v[7WBNK]^GqewHpSnZN2(>Sbs%|[U04ƋT٥n| 0u1!صqJQZ|>W=Zuz=?Ŏgk)ٔFn>q^#+_/=nFp.ra_yP|`8gP7u#ӹzW*]\"@qQ&Hx+ "6-?e{pptF +>t>S_|о3YO QOEde8m'xu")ogN͢:}$cbsǽ"Ru}L7꽮׌4'#+Oҹe*>6F1eNx+/ROf`B})~j׿ GxEA.4Ip4 $]qz>qPb]`jb*4~;~ז[Fgmm囹j7l<΃0Mw?hɯ^Ģ A"yeV$,>c'sJ_,ﮧ~2SS@pW +;?V~Dh6u(\`4"XEW'#ZpM(;]-ݫH|ˀJ*Pke_N^ͯҪco#Ev} Y~B'>:+mFlp7(3CpN+%ce9ln9N8l6*UJGN] _8o>+Qc"X5~'o~UZ,|`W|-HW1h>_ٜ>6n7tQj?3pdž*kص_3̷YS;VH)S;3CCM- ҇XpEdkub+{)$R: 0*}*ȷNM~g]=ܷ3 *Ow> /мE Ɓom&Ȗ,^AIB0w2&wBs$zIm#Ex3n)B̧qdsњO? $YH$H(nZo ~d8;Ɖi5Eo)[}a˹8g󯁿kBƺ^JFSEjG>k6fxc^kiJ4VO-(ГGh M{~<]97dxF(Fô5|/]KY\usqd3JJkTl^XhB#sXK,oFs1 }q=/xuvQfs WU#J+C:*CNX_]΋~MqZY<%nFOq_>6bUė8!AInJNx+K.()yr,m,Ev@}7uDqҾeBj_QYveJW1q %FF`r(vxz8Tp(“ pM} dk5j$ ;] ĒGpjXͣJbc(SUSȤ(H99xJ=*pAFi9W*(^yXKҦHS8x+mՀ}v(\JsNL=W;be$Tَ)zzU֌Q9BJWm?J.KV+ҭc)21OJ%b6VH#҅^\9Je{RmՆLSJSR''ˊM՝zcEQ+m攠뎘*# :{R)"8bձ1+7`j=()ɣe t>^[p.c;i j.0JJc*m#(SlNоf[=˿m18` $?x/`| 4mޡkw\i^Mc@QE;()j\&?(|PLJ)㏊Z/M=v)ҦMv#;dgWxK>G Ʒuj Hַo9 ]:#`Xk¾9i1ҭ6E C$m2M 3mpp+|;6<^js_^ڙKUy'؝ިw5a=Ҋ?J>-Z*Lߴ!s6H#k%'ˏ\ ¸3,t? |-n(ڡ42ȧr GMȭm_ri?iM'}CQh!i${ I574u=gq;iIO g#26`eu'M{OD>Gliu|$}- 7.nt= R"JB}| rs"Q__ :NSt *Lu-<: ,yb?c#wjw^HVcxgu i*7H ~8-UI5"LVHXES"r39|$c杮K[kTܯY&_~h|=~!G^յm>N+Œh˅!DlA%O\~GŞ*帶m dqѺcҿ[x妗rQClZGV$qʲ6F1^oF $隧Hm0vBȿ.Gp.֍+N]mTwWOF5hގ˺~ λڬ m"z&Ҍ?+h6Ѡy>jf(cǔN?~OSG4?x{^Epd6'cs.ӲMIMM&%ڇ$l6IѠ}w. v לnyEnG{4NWkgcҵ/eF:Hɱ\o6dXqW/פ63/.n$!\-RqǕBT+K97h5|~}*#5-3zm4ȣiR7u]?0qK*v3x;$,UMķwFιWs*v_嶗}HN?{V-{|Ӿ?"w|_o~&ZK{N{%ܛmwMX{$bFǖ|ҿ<{anm]A=^_wY 40STk~Gsm#-crqN8vz4Z֞Oo;;WB#ۧ6*6ZmnmJ֧ElqKU<Ԇ23KqFՀ/3O,V;T ҭl4mG8Xgy__AetƳ{[DF[˕'^*5쪸q`ۆ~gQ<-}V] LS[sexE d#Ϛ͹ fySgGv ޕ> ~0Z{|CJ#ҦuL!չ^G^>++GL{[IE>hQ LW?|C|^gu mm5mʶZ{y0r7yǡ~ЖW0GkugЬq[*p YbRF@L+^KVv^auPzZZ~FWǏsg-v+hFO,֞|%ٌ`{q_CY!5[Fmգ]-[Y;Spʎϯ^?]h|c-g]mK ~¿'-S[.n)툻ϖ2fR2y!Gfx8O^ͤbz<%t'h}mvOko|8!P vs*ot΀oLRa><ϥxM?ZZ N؞S JzU}VJ>B\ n.$K3&J2`66QJx>}ǩĘ)b*kMW__x/tIR%Hmn2F U%bEAg~Κd6iVP>E.EGyAb>@ OoW^lOgnH&wI&|>-ii (nTI.qWvi^zUB9V/W=Jԁ+@Î)!_3( M#Ab+UӥKQ9CQq(xΓvނbWէ1RyuӧPGpW[lh׽!^1]~=j{=eQ]M)Z zz]eIC0P\?&h/\zn (ہzJ+_?c/V?7NeM86 Km+ܹ+_f6 ay+gǿ ^V>IYS1+&(J`y+~/?3<62WVRֺFoepV6?/EJX21KX[p~@p̫n:~x~~~ϭ[nǿ :5_Dnu$[iEܶڭ6eiD>^8=+WG#_h{H#x iU+;\7&r8aI >(?|O\j g=_>ڧuYZ*.4Պ l>QgmO%^NEYx8,<1ݭM;j.V֚rv<<:8:O{[>i/ ki-&`-u_ʓB W7x2 \#C_ o4._E7mhʬ 1s:|O-0BW/|]koz mܧ$ (;*:*)#_pGĴ}KNohθZxy*W-=ּs|Q`<3abB^,8&bmrc.3~ ~${i]um^nV]rA8_h!Ɖͣ"H 2L*mJdf@9_02~5ox2<|*`0 _mH> X[,ܢ<,W8UpY@ >=k,?a1leSO[vm~|8$ʦ&[0<ܲX=qeEoȾM6D: c|.>(ֵHa[٭I6pY+s™fےPL₌*I)Y/wN+T}aFk5?4-_6SKmίh~ m7\ypjxYOJޖiBO3WDOV+GbC}oZWGic8E䐓U## h" 8+f67Wt֖[ViP3 G|zWEX¬)jq~J}߲fws[鷒}yH|#)OodE|Y+"nqFBM~~x>Ҿ3CM+Q̶q,Lk'N65|3ĿawoxךGF;ex/U!8qe*F'ݩNt%{~ꯍiBoQ[K/37q'[K1#;$ь(8k^~':Jrgq=ͫۨFuӬ 2V  <5{Aq,0L,}pw(/"Fض6sN@^ǎa~[OѼ3G聬5ֳ<IcTvF߂2/TI===< QIt?j~5m/ ho5 -Ct_PF>W)Ȣ<>o;hL˼fOWǟAM+B'I2Y,u$Qh妒8m\ suV:qvH2*M+ͷO- \Q*չ(NA~7Kzqt)c[eg Eqms_%ٙ)yaܙJ5V_aSZ6kߊῈFX 23BATypQ߻;w$ 7)_ -J[BZ167~PY+OG\t& ~2Ixc,άTl]m^+ofu/: ׈yLNWH t8+,Kqmݸ1WpT炙DOX]H'yǥ~~ʚk{8ėN#Tέ>.V޸o\7cӦQl6sIUl z{~SH{X Ɠ&x>(\%i^i26x/b3|qxGN7 ^۳_~p//))CѮSNЭ5}mnږ$;a`$N׿`70fiqoghu kvCF?ot,W_eU?6 F+`2@}Yűi|[^&$E7&(r8O͌nA }+ԡ:4>11m:59_}35/mNH ]cqIpqW rkO^ռ?-1]^w2XqÍ#oi]^̺/KFԒc- YFWjDuKf׵ nXi-eX"(`HNp㜳.,K,нQ]VYj\JkUjO# &@1miln,0a2DiPO>o\G Z/,r>l⾵ ~> h^1']j׫~bۖefv'>źN_ 93],#:bW##DO1&UwH[ cU>"` 2AR+#Wɨ~zĪ%ӪnHI7`J7ۿhO?ڶk <e5Ipo%P7qTq#ݶ]a35V>k/mֵ[kHMϸm1E}%gMK7 tZ ?oQ;< hzHvzk2gJG#F 9UV*,m'c_ t]\,>h?i#@ѤpL ym^Sw6*XtMC?b=2;Ktأc2<y~_"BN+*+__hk Y\[E6ȚyYoƢ6MU 0g=yqs - .~px{_Ko7ңFH#o>߽L<שuӛO?2}LBJx㿈85@})] +2M Ix8erv6j"p;aLc;M7hM4и9dOʣ(M&p;SU 9P+Tx&ǥ)"-{Q=M qTs Hڛ*}rH支1\tmK[漆OiRi1Y36W~liaJC$>'4a\#,u?FUP.n**[2 @mO x5u-G'^AF&9yOoBpZ}k#49L*\9z\87x0Ioo"!3fJ2G[>mOU-" I]Im኏ F~a^XWɮѩ"P'-dLZd506đ?[*($@2.}X]灮M9vG{ۡS*KGi/FMbݖgKXK m(, O/x}YI3 H ;28 P+sAo|[/]E/60Y 3Э|mJxKrݴ-5>92\ж8?~Wq*o1sմeqr.7IM7/!$MO, }$'r txīsi#%&|K0]Lx&Wkf}?h^VޗW3粜n }}SU.(!3>.8||xRUK85H%n<.b%Pup|@Ǟ;̍ (hfgI {񦱠ÚFt$LHٶ$D3u-ҿSߊIКO>>M-oV򭥄\]$JOޥƛ@Jʒ.7n E?hzgXWRMYjۯ?7 /j3mvu\VolQ!_mϖwp}Mzu_Z|4iaX)dm NAbu;x_wwmjI4~㽷O`.b4N |Jo?'@ޥ˽/UkoΣ}-ӻu:OI/) yFĊSg~֞NVFಈcԣz4A{,q1I8=KK*/9+k)%VZ ̼! A#6y'0l|0Un?8tڗ_Sg6gw6ܨ 5"$csx.:˫~SS~LG}>@~|z!W|KhvxIaI!q_> qH,Q+nw6I{7t~드@5{Vy~k1[P&fbVn _Cxk9GԭZO}J}F\^_q|~^ L? f T,Gjqn3)O*dA7qWO&ނI2ֿ>5ox*f05sGT8}XzDo38+ֵ4b>UQX G=z><ǕRQgnA?X9kl#'W,*]KYxju?J7$|@խ c9Fz0TC:-F[}*}{gjVzQЖ=:%cKjpTIuVDnGDyzUAڿ8mzS7& Ouwr$C\"G Ykg_j+&7Q![;Y (\e*O9c!цUE|M?8/4{X#4rʁJweBG|W7kKt}(Q(WY2eT;t>k0s*ҦijFoKIv?~_=wqP9lE~JLmSV%iomoMoJ,7$RЭ -ANеFO>:^5 Q͂.]HGt+F1_/K d`I)%cy2@Y-Tq<֦㪵oo-kۨ?CMZd5q8Ӽ<1Yee P7d8cs̟WfW]3|W73%ݪ.3)AӊY{}I-&?SCajӱFY% Ϊl؀}?eo@d[d762I$x9a2,^b8 gTSZ/[Du/ ({GN<]+>ZV9eu-Xm, ʺiM2M`_I ^EKs[H]=e5Gg A >%g/E}u6qsdAʊvoª/]Cc?-4Q[](g*YkhǕ22`*e ]; kĶS\Y3#on*cԠד~ҟ/-=xݛgҮZ"ks lF GCc` W? gUk{"ɈaQy`08n!Ȧ8$hdРo+?ǏꖶnemoYGZo>aRD T̂9$ |ǜJ2>Pp>N+~I㏅A5N1;rL)'H=0+_UOKۓ9"Hdco+G!8 5E9skm+wwz7 ,'{fKᾅx5qGsF;6V1A$WWMǏ5ޟ,V7.dk cm fpb8@WFsY2h ^85? ^/yXf7W0(h+az//m[đ뺦cesdO"ܦr)}O |+砯/䕿gM? 2xcTҾ,¨vX,l^H^OGg@WW?~!'4=Ě=Aw5A-#1YB+AQ7Nip-uɌLڄG6jnD@G avP_Z%͎eo@<3&ڪ# ڕhm־vy9Y_|+>y=Md%p .G LN \όgG{9,Ec>љ&?dKufD/L"%l3`=M7gRHhM?ڢ@$caDH|QJKOs\fO6?-0"F@>bxS'g}vNz4 wziV?dž-ɎHW -́$`:dVV7>.xgx|4Jf:/.#j_9ץ|mtxLv)[%bK|N}O]jn ̌m7ǟ6y~4mSb-e/ՕPۡa7SpJG[]x ^T7i }||ei7ԭ*my7u_0/̅>|R_5mJVddT1$vwJOH-+(tH#4Ɏb8Pt?K]={ĺyl`>?$+Qu\9ݏϰ!5NJKu?۟ᧄxAZMJQ Xꑗ_2S.D-\Q4o,j67or=^Y 0wo9íhk#ZCsaKwg3R$ /#8)²MmG<*nZ/cgI|VπEӮ$q)a¿fZX7lEf&BݟSz[q=zWS=EEi(#3d `߆?< ;_^~[!ek&^72s5?Gj'Ӊ/g %GPm.J(ө?iV\_r^αS5Ir{o߆/ǟ|.]UB+nژtaxt~x+W񎡦>8ӣA2@@$dCj'8$y3nYwS|TzbwR H#Q~2ږ !y-X T+B $瑒}s෇.oֽn1™h$`  ~1|s-iMl`}*Rv;u"&(>mͷ< Wqj? ]"KWX?H|xx-gxڞmȰ4{S%Ӽ9c4&M;cMh8R}WK^%ޥa8Klȹ nq_~87R=o%ka%}a{X쎱H"mUlF`la/ڄjf̷7Y-6xa*W?M}kZ]--6𛽫(W d cp-l֠㇎)ǧ{;idXZque}~契MRf|8=j7#|ffuۉTqY itOjl4侸P*˶-*`l 2@gؿOϨXY:yF5.08Ir+࿆sEu xM=MH|3_òY|է{&;ZY7bU)wJl{xڵ4h%p)dohoxF5H;#6.Vcărm$[Msiֶ2Y Yub#Xϒ0VPICf>'ZZ]'m53݇O4cnکs_}Na'5f?'̸m^O_쭡o #z֌2\Y^6ϳc]C1ɑbs) v?Y}i[ua,3}n򌇫>/p:?_τ/>^xZ߆WI4QK!kIa(I'6tS"̟jԓG ]lcbZ!o KDɻvH;z78Z#wNj[ni [4վi:Ƶվ\ mN'qۂ20k_هޫok^継Gل/hPr otnFe|~Z^ x^L液B)YL#TthGTlG~x_u=LB/>$X 8!h 'L*umV{vZtq){*4[b5jSOD[&!56+|M/ǿ#Uk W 7dvP~>9c5.7am$֫$3x­#Gj%EcBVm_Ěx>Ye.tsVv{oXHlo#kѮ೴8r,%`G`W?|K6 u4'[rϔ0Yw|;HŬXȷ֙Y6ڱQyE7}o3h8:oo1ngex"vy$pS_bU)5{%N{47?o;_M+O֥%djBeZ21 xX,QӍ`}9هzŻ+ZMͦiצ.ݦf4as*y1+6z\^M;_}nẗpJ+f8(ծk_-[0Uq-zBO^0N_s"Bc͙9hFq26;HjϗpQ xg)UOjNCd 9Ptֿ{.ߏ_ևO⫍2I"YA'8 ť?cҼt~Zũusu9"zt޿I\~5*O O(|q_FA+:$vo>sĸ´?u=GZF8=)OӜNB0X:l'J9D@ۥJ)>p!;R K"ҜP>RQRm(ZwqجGAIdҏ/)\6(+V0@.tUENS'9rt#+A_Ҧ*33sMZhҙ'\Zh isMvOS5)@?K tnMfgqIȤW;tV8ǎxJAʘڇ>(Ҍ^TMhEr>,U !G8Je:f⭕ByJ6cMJT{_=Jko;fh eP='^*?>KיGLLGM0O#QV H.d>X &WzW=\~!|m.^;pʃݳ+yk${q+,m%N6|?~˞ῲ֑'x6xei'̶$}wpQb+\ETՖ.Գ@ư [lJ$bPH=V=u F2i3/nD>ֈg*~akw<1%Ƙl6%@Ve` >ޕj6ſ#=ji+r8XY16VWcĭG_o?n-X!Xd) la%|#|_l}GO0.qj'ʼoʍTbDe)7٫ q}kV]xJ%y4jA)lM.!G~A=;@[faft2Df--;-d|kRnT4k#p M#S~ ~ҚL<5ŤxI̸@2oVZ9'xkúOY.Zm4n1˴@Sh~>=2-GM9Iy,h,3_2m9߷#&whZ=φt)wj θ%ގFJar4h ?6/-8+2Jzd ' `{+zj,5lx/w.>Ob#dydn` ~TYbxCHuft9]C)#,^O?_[/<,RWVfR3Q̏]Oc3qnt&[[\[_-L\0e%b<5#b,HqV#c]Gmhiaf'XId;Yr>bX˄0XmRisTݶm󺴣N sS)g} ~!nt{c1'IO̭ G#~6~q?^Y\HMo ,^\r(S@⿝ FHmfYe.% T0dpwea q%`%62ZiMd*Op~º3o+u؅[[xLl[~]Zlؑъ1_.GK#O_`:.33?tӥC\!XXM.kZ|K bǠӬ2lx_ ,v+6CSԞE"{B3ngRK3o'Wa`=-KM7J X:_?E>8趾4񶥪4K[ğeVnHQX)˟O |o#|C7!/ X_K$Zy֛`D/-W%~?goɃ umn@q$2]MWrBkO^ũj .X@[gPs<^\jmoɫ4N5:k~񯉼q]seWg,| 72,܂ T+۾<,] CG]i0]yi ƭLdCyq#I$&@^?_{5r˨;*|XWGsĨ!͂?s(kaW; ~s_gcl|/x_S/_|_N5y5O|Mjd}9!1qدԯ B+ݬ徒N2s׀>AָRcUxW7E5A ԑ# ϜW-IӄzG.1V23*?>/<[|gp"xaY~'w*qQ? <ݑ}) I/){9ڧXCӌz"}ԠqPc s 4sЊ{XpcWO#>۶ ڜof=O9%^$1\ƓyrC$q!#CgA"oٯou|G\&ݳǖMѓ;t s?J5Zj>]#S ,bW֬v6 W߱ k심i~%MTں-X`# uժe*МoY4ג;_oOүZM?L}!h |n J6W5Z?Ƴ^Ϯi*]mGɊi繖q$?KPsPs"xBĶihY䬄Ђ@Y#<.xX0dҮlI#ۺd` GCK~Z޹F'_O݅k4˹˗EU!,vwqc8n5bk}m/C<7|<Ϳ/ K7FW(߼@cWռ9۝ZζLW1 [a/} -ƏM 3pP1M "мOώOF|4#&k`)'yQ1 #3:)o?#byp>?| %<.o%%7vfH1JvHد>O kM i 3jiQ+A>A]EnVS{|K,|?gNѼAw:#1 Q31Arx',/Ωhom}*#8Ð9 %e{i/}FuӲk^t.m?:YIqZ{XqC(h.9FSo&>^%SNiS P]ȱAhcgJॿ$aiuy^V X=Lct>Nb 7wW/v5 f +$I:8,]$R]q+|ISQw+m YR#_Ɵ⿋ύ|&zRͺm:ܣ,JtFVy8n9Žsg*^:ƐĖ3IBrȫf$DPQ~7x7f-0q(YdH!p#?xqxO\< L.w#6XJ˗D ğ³xḵ"ϩĮdY BV8Muv(v#7,۫<‚_e\VWN2Rُ? ~>O屷: }9PIDwc+p~׺"~(c ֦[JBb@^4@+3hA$w{$֓ƚDYo1<3a31b|#?|.tح/}+F leUZ[Fhe0$XِVs]S[mo3cömW^K$33 |3*&F2*8voeٵ}Jp_DcC&x*H_ k)ۿ칮.lǺXrRE ɻ dœs_[K\M|.բ1èA1HYWrTܼO8vSI9lq w3nc4v2NVR1}ĺ/O5=GUY5=& $;q1i["9_#\^j>f(յ'[di~_-~VOث2|1aoxnҟź\۵Iu5xR%`/e+Kݭ-9):KI>j_ \GY=̈́e-up~4֯m䬱 ?&̠- ~]_DbIaxΘ3^Co{x7l(yVCk9}^ y$@8W _7|c7-߃g5_!]F :",#IهֿX|. 3e+Ww:qv!U@'_Hf/xWզHwK ӵ~ xPj/|Iu}G7 oV ЛXakSk?٧!6WnwIe Q $p3CNwTtpN߂=zxw>b[↧oeķ3\V1Jr : 2G:WZ6>A0h&By{mNd^kƭi]N]RNq;n8Y9Vl@yi>4|7c4W0ZI9*yFx3Tmˈk ҕ]v@Wvmw*~_ <b5AqYgbLa,#2ͳWyTcijoϦ_?S\%Jݻ#YPv[OQѣΫlI$p]W/XWwo?55}>W^#ԣtW" #d;W,bqGSx[?ajMg,` ;DK0u|vMx:2{)29۾ 7}6rJnv/*Z^ݚ}O'r'mφIyvoZQK[/Q)X,@}9WwŞ/\Kj ՠ *ef!z_5]__ox|CqQkyy!/ 7爦0j8bWf("vӰ#5X K:>L<#yn֗Lm_ݼ}-s[k]D4kBd"b\Ռ6pISMtOutu]^8&h Yk(,JȤ WnG^/0^qg4I *JhPɞ0\7œcMVeսݪE?xo@ץS1Ѕj+y> g DBmm?f[kTv:j~wd5+&rȼHt$" G^ NO G{DmOۇ)$v0et8+WVKNSeJoa!CeH $ 7x*{UN|ZtP2H˕ g%,H#[8 r e*θ};3J[wXȮY 9ܳ (r>m_gxX\z^[jVƛʲƯr=@0>}L4ltXaSaq{tJJ6v*ٜ{U(RwE)6٣f 9b8qRR=j@>0)zS(l+LѴb+41>j9_n(ۅU)G0dJb=@⋎lzSv` t:Қb!+҃SlJ]z/`+8RlJis "+/zW҂9Xn%} pu'ڧ ?l΍ў(#)B<F(۞qonmb`RK bR r zR=T>p";SB)8ԐGiWs}:?æiedn ek,.aP |W5CŌ5Eյi!EGy26R9IRHE8ӑ9}4vZ:E) mǸc2QGoޒZvC,S?FА'g!l_|pjZ5 ${W j:4;Hk 6\<^eW|bxRچ~"7VReLRp43ghV?nӵxXҦ o<(aD#)wc][.[z3 -FC%br$*2 sύ0X{ExH֢Qľ S_|3e Ryk[$J\| ޿?k_巆t]KKͧoZNX"_Kp3݁ߴc|6~1dӯC%Lٻ`1Ef+F2'>+^{ 86I{hz]p˕ 9V(\.yV9^/gsZTZJϪȟ㸇}sĭ:Vw:6k-ݥ/ ͂6ڨFF9RM}UasL?tsR&3bխy*vPCx7|85aj޸Y y%jۂm0~ǟ3xoK}G]Ko~woLΞkф,UH1^:\ԔO;%x͞'/i]ocxm$nɭ-/V,Մf$Ly|+a'>% çɧ%L1"7wW8v6ƞ ?V\%L-V(va>H̬;7$ǭk6tZZ][r!nV̸l)E`_Vh1j..k3i*Hl*@F8Up+Z|,xsƖ2:Eݤ.w۞bO9χu/-ŜU]> 卹%nq( \;O5t2- òد|E ^eL(ׅg'\ExJ+ס[5oA]YïUʞCr88~~~>񧈴{#\i<-4V]|ݣX˼ɓno/F[Y[^DJu`uR 'g֧n-.Ĉ1n$ܐeew0.!vgj;7ߡɗ˖I# nF8dCq(eA$Yo3ϧW3ޥqO-?tH5]Y1EE*6ݎJ׃>,ImcFkCgye(J$v ~5 G̱4T:]ı41<$bI8jWN_t.EZ^35 |5|r77+B6[{t2(A(:$q C`^o l"}9^bs my ݩ$֓H5܂ ⟉~(I׵/\,aKvhyq]6N}WSi>n}u>C)`u aUj* 0&*X-28J/r>I~PO4] FpH`,^ }c_ӵ C[T ,t0lW枧O_$/7Uxa Hc&+8A) xRM+_kE_M<+`h%Kxrm&j?y hZHHTb.lHcHR0pT \W1+!M$s1dbF!D??1xO-CZyH9}~Q} v[q pܿimcT'n6gm. 8HCWW+RҸn?V4މO:ҷMggu3 ,ʣjE#ASxß߱#fp8^¾&>'opĬ)iE+sÂ3OYK59K*\S &_E݉-ʾZJĕ.Wfž ci}yiVPP[obtʼÎ"}d̎{:tjEis쏃ƻciV|km\ǦY YrN֎Bb0¿}?eoocSN]%<=y_YDS->Shi"cP'fվkzF)QX՞f[quω_|r1k'AXbƣr)STU`ϏwҗKU# xC?Ojس OO:-V⫿oOgS1*〧YNR"#5v=rL_ĕ0j_#uX ]/^sIұʁͦz~#LrI>$z{Wgx玕X3e~كW $H'EDx]|Qې¼];cFn=K~1桬a]Ȍq;>Gb@%QXs'X/;yz~7㯎u|75@wᱩ $ c HWV' aHtڽ9Hdef4R4Έ/_W/i$s-%\"'236FH_~&-ETq=j6^$*o:-6|Sʶ}dSV_rFEᯋ/l,L+!Ho8Vbax5UK=iSJ4h&.x-#%;w_Dc8n*?ll>kz _Gcp#^D$9cb6`}%gE7aR/&T1[O3=b6 xbp*mO]t^J^^k1i:ۉ"IRx$\[>EQ20FO C~^ngͽ1|F#iN상2ҾwF^ ԢB,]2ˁc@PƇ,rWkcZS~wu3tq8GI2jg=/C%ǚ {̇PvLXc>1|8ܚb-n%`PVv Ÿ.1־Sh[>)n%WdF`%fbpq_'xCMgUm+I(ob+{h{nZ [;*F| lL?lkߋ6jujFrb1?- ]SxZ7kd@h-Kv"y5.u2ʥL:No=?.f50TK{jG?7SxAKxmO/jMΕ2td79Y*H䐻TmE.^FŒRco|mӬ/4Kab#EHY݃2\qTMr_Z:2C^.hF߁|?;,7٤O$EFry;BkW֛WbN{ĒSʝ<¿˔R+K?-%wΑ&[~^ R6}>=,/:/6'r4X7 uqH3|^"3G{imϞ1xrR[8ϐ});tJ></e1ς9tBvd,??O{IJZ˭\kiۢ 0 6 ՌʻI-"IX~/>,㛯1<7]&{+h曆ȕJR(Kj 'FKޭܪo/=k{Œ}Hon bE+|e"9ȐH6G}[/d1r @RwEmH=,v ~l gu-9PK1[;\.+[ ?hm?ĿzD:p׺=DvA#gD!Hǖ_qK^ ,4ml8qG?Jhڣ T:-qmk Fd i]JÚl|+Xcn-}AbyY  b .|AY3M%ΟڴFIM̱βD$'a%4?<#/m/<3`uwwyZIXfܹ@jGVq.ߒ=P**KX#× L֭AȈte]0|MnB' JQ]<>%-tmi%O7h0(}⿕~$Y]ksɡ@$kxkFj>eӮ'1,D9BNz2.31u{NjiFI=wMmm{=r<',}m3gH_-Zk%DD˼n0qA_Hk5gY|mw'KDobY'(71zt5wD?xHFd:(FI>f` ^o&&Ķv 66He pfH>9^oNc8"XIh菾f_k Ϩ_xXEcHʍ* 06!h fߨS08UU* ɨxLkp]5tGpZYM T6&+ߎ_ jpcb]<9ShxPO, gGO^7u?ر?(:gu6l[ȆA +(]jVz yL&LeSガ__ׄ%:- k6ZT>@8RAs7[1ǩBؒ[H4$y Loq]J~r}mly2uỴuLc$p~z+c Tet(~צʒx,{a lH1NF˕E u _փxeC\g$4gF!d.J?̱08Ɩ$kOC.JhMk/kVٛYm[ɂ#26BOWƣ^h,LUds#od1$8 cxU?źt"mCQM#KRLa`- WfkiI,jm͝K,cUmּ¥Iz֛Z//O.߇ԍBH>(x]hM[W:.9_-=&9oʓ_Wo͌`f2'*Nkpm[S)4jwİF'a n_q:0lkݦ\QRjpO}?}sivz&4jcJ c?oź.[I{[!!i 1:"353~#1WķndX_ l5|iާK"//xUc11=H9W66qJk6jZ=:? 8݆`O$P\e5gB$&hKlxw-cOw> 6d<[X%LP1xk/7;gƚLf|9y->Z& G@^GkV>#x[Fo_EaOhѺC,mo7+#W/CTѮ-o )bO}>ޖfxv?b khi.Tu<"2Wo5ĎR<-q¿4|?߶#mia<0ULx VEe(phg&H)}~+fO.zaSڎq84js{tTeFy;0 ۭFF1M; H\]t*2?*(ҜmR7ZRzs.O?⿋|E'xiZ /iώsڿ6?lOϮC}CQ K]#@"rL ^ŝH٣O2x2AQXs<1ym.-RCw%.%~{T'Q=}IC"̑$rG 6\9m6o> 񟈴u3 2,;WuMDhjet+ȒBń|J o^fFCZԒ^jwƚJ`4Qs?_iC]|#9Db@t J/IqiيY="+8|_M/>/x=WV.T Pȣȋby3 I^fjSWgI.V2KfMH$y%eb~4t="#bLf$`To iz>kUu)pB{|*|H0;^}iuԴȕYmZ%R$N+#`Sxج4Z_61_~hLլ낮4doSw)[4? xm Ttk$xLdpc|$ۀ[v0Ѧ1Kirnv3&/p2Q+D犾kZ K"\ʹ 7M𪀘ץ Q2x+c}RkirDž2wqm$bH?ėkNԖK(?0o9^dsW!Ց] |,iמ-cgmm3M5Η*Gf/p3م k#ޗ6K{IbXK/y8\~5h:{ut>r9өnGW{Fד>tӥxyvihC4 $y%B/A|-=+V#%ǘ}Ț7s"۷,p9 1_I24}w<ˣBbP$Tv'2VԼ@'D6gRmNchT^|Eb=T"_K{mwR|/]a&bJ˼"nv'Km#þĐBmI/&hwWnH-q_gQ7ğ٪PCk> ^6Cso }+в}jIS9u5ٟo/>)x6Su"D)2a|v/K~~=&{ H o>Dp,fC1WoԾ*KxGZNv%yilǒ(k-[Wj^w4+[ۈĺo aQq,sUu:fV/C,^hHEãf_g2Lvıɽ!`yW[߰VM-7X糼)0\HS#,cG|Q{x;).4ϳYLew G?~\eAg+ O"IPQЦxd 0>렪|UAK<=bZӮ~.<$ȋid`B 09ҾjS0O<1L-cX$5oV!_V9'<+A4JCd'WV&BYiP !+O-Ugxkݶ-HCu7> w#4Oe[}HR[ L7GR4PՒb2H|ӕ57|cG&|Ti3M)7gg.=2Y„na0+с?mN/]ZGV/ٴ 7J8cY]#8g)tWq_YMJn|vG癢_v r?kߵުe?SFWbK&w\-&e mqφ%\ZrYxk&[,mhfą8c_ g?? {*7Jφpmfe\6#%qXW߅f-Rƪ 2NHQi:{XLֱַE馟yb*t)=-r?~? rK9Y[w Qz '\R+y*L*ʛ2G句mqN WѺXE\̀E4HTsY󋐨Pv`U/bW:'jũ g+S^;R*0KlKFq%tc,H^@ t+xmc+^5Gg<,!`iWah?]~bc',Oyv<⫲((<<1Ҹxj}vuIiS{#`:BH5JyyLNu?ioT V}Vy'p[ܹ}HYX|pou/j^Әdfݺ0T >#z}ޗAjsqe;H-䌫$e@m˸n?!ltmKdK; h#z}2DId\aj U[mhMOsWc 4YfgS\j]?gKLl/6V WcKOm٭Z+Jh(*O 1=_NZcEEΟ[9{ }#}z횵N8>xKCI@R >h[{0ųR^ּmhKL});ON5k]^-G d=yᦟmxN:+E PBmoL3,8ѿ|,ӯ,MvVHbn˕Tוx#L>Joҵ_:o\dq!||6;:k㧊O@CsvIkHZ7u;_*1XXuTTߴ(3 ^r"#8d. ^[5uOl)`*l$'d|`ޑGz8)8?eύ<˧Kxʹز̩oAwBPh8̌c\؉ꦉh45Aڛ߷Uhێ=++=((qdzt>G8sHG{~̓*ЬUM+ޭ Ң({U] ă'(P(<9떺~2%JN*#NB OKZ31*ɚ;g{eڮ+$xTAD[ğv5-==i m+[<i*4Fࡖ8U[=A#?7|KCt]Oͣw?HKyɸD9R㏗ꯇ^6Ҿ#xR6U&I?v\!2bk%v#z}kV?Cu,ZۀfqdzMI{մb'ڧD~^cʕ!kJTQImKqHA~Jɶ52b*%OU^萅QWicS<Oٖuv'+5,b~gAhm7i$!ҭ G^<7 #ӤcjGƑkI}dI `e+LjU-Vpp6^^iC~g;;j:oovOc H, A¸kx]m{tQ=AY&ky.>XX&vP-v_:sO./cZh&PBe )ğ%tou,{as<۵4"M3&$F +n:PQVUEQ%'~xź'~ 7%t7l,W_CH߼L$,6k&q2pjG*`*}q+.`Q"k%T %/9&_Y5}P֬6pВ2T21$wg~_ҫQWno dS/.!eYbAx@~8ۯًjďx=U SCo{I7 5 Ѡ#bvOGK/N,k,W*be Sʇʲ3 Ba:>|Xe%f-~jV;{|J'X@`M} pt1S'~W6骷oCf7o4M+-H4I|<ϦZ*mLQn $Ws_٢S| ]}64Zi ) DѩDx_P۟{qWx-|7gW$zvv[MsadhO$ɾ6(2Nj/ u?&]SQQtyMז fP geIgMf =xn[1vM9őpJld)zezg UaWYW};:ӵ#;4_ M'<635MkZ28 |]#-.?d?:k""(e 7]FąUڹI KY> t ~<+.Çg\JV=W Rl g&#ºgip!yO[XmHA.e' 28Oُ?_S?lEdAwcjL<~r2~_:jV:EX1@t?e3 ۼ 9u܍4f?1ʷC лoGnE/"%N\4Hvu^~"|%#_\5Σ+@5P3F* t5 '?KxZK}MxoPK[OK | b-+_Ꮖ7-fu]TXJo֬ശ̲\9 s\?4ްڲgT; ś'#F{a'*"Jih]<&#/mȣ7x~]o6!ҥݝ>bVWW<F~;K>$Xx3_ydd[4B2Ĥ("P ve|㿈P{CYn$0dyH=rF@=t"x^<mlIcpp']X]T")r3{{ko˱Ui(Y7^GC&.! ºn7_rƷ) ʯ,g=MA=X CodtumXyZ̋g{m/1m(XdX"5U>#]i־/O=-oxO(yo78) &'{[q>_~1k> &fM鐉ibh Xͷ*h<&w>t-kR(jld (Y!Yd!lFx~Vu%h;U#\B m( CiQ;O#lfHRhxٲ3{i#|^kV>KE-:=?3+Gܭ S? k!_CXZ\:8KHT9h`26^Vܰ DžEziڕqe-,/Kek[wlCW~t ]ci$ard,v2xqW7'~Mį[[bco! ¼q}h +ffKmafz|m_~i-#6m#o(mn0kt,5Qk|KU{ZNn.q+G+pQH7*O8o/i_FeraY,f حEvEYЇpGAԿ|UHյK &yzI%u%ܠ&܏"/>3'Y9QSƊ  `nF+_kf-IglIc "Hw+o+>6qwswR&ys,Bu,61gy  F[Y}ַх7VOӷG5O*k.Y^FlV ? vH\ Wݏ>/U}iw\8Q,k9F-^qEUk+FEea࿄GfxxEMowqm_c8}N`[ȊU0K%deh4(i2Gi֑E9N"byS!d{޿)OIO Xuk멚K`F2yQ# ^YY_Ŵ;iؒYQ~U!e1=lg?|ep<ԭ,4Hd%B-&rW= 7fM$z+i7&²FgVl|C}7NpL?w|} k_f=wV-[]Z&ϜYYwB:c##zKT~Zo\ Ň.N]hƍ–Z/Osůʱ v"v"29iiu Gb6qwka!B)PT׵AI<on]&[llz㏥|+(^  ct_e-4& ,"lҐ!gy[yUD`i+_j\j6f?I= CG]X%6_WI&xY#dJc,@d6TWv\k ż{d i >fra90S[חs *on߲O⮱{썸K?$oH G5?ٷ?<7FC4|?J6UmnK+̆X#C_;De[YY{h'`+_ửcC͂$jq@\s&ݏo$լt˖]2Iv?7f[!HU@_[ҵ^8'#Ԫ Ji'ЋhI50 G!\sڗgjtm$p)s!pCS`Giʝ\R3Rl;G2G&U%j\#zb:UҘv6S!LW#DW+¯*OJdWK1_Lj⻋q\0'/oA]{_dW{a⋖Ũ }8-6_Q,?~3šWԷC~!w[ZN$Q岀]9m3ҿ\bLA_-_ ln,K,no|jg>h,dB$C8N+υ)Ң9Uh׌5\w85t9c*W.5icSisV Vؤw/hRP1r)U@ SaJ3?UR4+^_)8!|WԿrݸ_'I}D2`)6?ȩuU'X([<}+o6 갏qn:`kOj~mf~ʽNs7P[JH$`g [PtV#y+ǫ8hF-.׽$ f$/t~SºCI-m\$7c~Nբ5# WSا=*| >p_xXZNTdGz> Xf[s\ßҾkW cd GHg;}&ӯ:bڴTWip^jo,@}zI҄0/O?<2pFtįSHpS9hj2ҷ6OA>?)#'2ٶ (Fu:a?]̀=F hMg?]2D7*~mԐ)-/gyK&ϥ#OxNT 5/!^;tqȐQ|誇lmp?/_{6}/~SOx/-T?lՐybL9"?θp^܏wH<kkLUyyvr|1%mOjW $e'[p9-D>znQg KBxh$$0ކ>W?#ԯr-!21tY% ᓌ2?.^M~ЫZP>_LlG66 "]yܨ]pVԴmzK;2ŕ|oik TJ~+k7;Z/t=_L=MlqkSeD¶~SecwץlEh9_-BO|= ϧGG9Gw:mxQ'B񍴗7TG<%yF%_3`_LoObi&8)l_h`J58mWG˦}s:I"+6 "0an20_ ) _#Ξ+MRzx⟇>jg_BͥA [|Ɯbr`1 j{5g><]uZ"jn㷲E!-9!as'"6rsƺ5o`WM\K='-@kSk NY #Kke^07 I/4..Z `|t ZA;&nToO˅Tۜ Qձ_|BϮ4r^գi݊pR|IR_W_oǖ/5ʐՂ$\BFJ .q=g_5{Q&⳨N 閅d>| ){Xu+-3׋^@kopeY1oϟ+P6Gdzx0Zcd' _sxr칰+MIwg2F矌_f/K\xҖۗϩ$\WNpo|jN>'K԰nK3(d"کlH;(>u'cEĶG0a!A3 t\dtπ_,m;M'1G=4Yu8$FnfHڸl.3WK ~ծ{#e¸WU=xP28B/z t%mv -{4te5>U7pT`~?(h 2^DdY?2Py[|!~u? m^B(~g/4}b>ЬX'VV4RB>r?(U&"Ƿٮl0,W l0W z z/`IwSj7VyqHتFEvsYKkBX#dT۶2! =7:71b| ]K/<Ⱦq90 Ecx_?0o:Hv󯋾ơFi^K[27K1Q9 B30/]wwV /U!:xj " Z4(~Z֍4 irx:։dK47:';I.m]|Dg|H]4O>ZopClӟLJZr ~,uYru?m Pݬ=wu>>nDk.t`@Ⱦp``1u>_3}Ҿ|=xEX-AE$;u,ADVp~xxgumywa>6,ߺlݑVotx C66zեFFe^:2r~rHqxk/{-_yi5>_>$m'Pm8-6OuT`2G - ;-Guǭx 4i8,G RxkFA[Iyc t6>r1*qGYzνKzAGү[_Y^G"B!ڣ[\Kc>VԠR[f(t_?GraW?^!>|)x[P~) cE'lx`eO43fGV-1i=(}t]Îp=+ls,c{=Ÿ(# ڜU+8t'oi8҅0O5D|+A+Ήg^ ^i1|#5.R'ιh0:ztf\pT#>5Ɣg0̥#kLǑhUH<$K{5R|Hox.ku0P.<a*?kմUԼh\{w+I<x?oQukcvḵ%Xj"b{>3_g,u\~kyIrcx!JY(75-_ ,x~cjXD\A%Nd#4gox׺ƃ; ivֺb_kVnGd,]PH댂י|ӫ|'}گ|.bI8. =$қPetF/6 =`+>'|BѼ' :ս5DMs>kqǂ"%-'sMyť-L @^+XxTi:_->.ƪo\ha9% 99.`Mqג9l7hڏ|O-~[W&&mURXgm6B6ň_/ǃx.04M2LP/lBrxU^Xo16#TtCv64Im\'BIlc&S ,-6[)7oC{řU͵Fy_5ɼMFŸSZRn/}sOů۶=C? o~w,$ bww<|3e'D$ BGc,5쭦hu?\[X"+0𿸱ҎyֿRt BK 7Nk'[a{O{쌱5GO_mui5X+$oR=+}&JxQu 4E4c8cf3G?*rJxW֧iAK9Q0}v{Sx3vIB,Čr7gMuR!>G3{W)<5 61+ħN8;0Chx+|ik5\^Fgk2)B[; |^khzźKnϏO?zWQj^[;7$F@4M4;r~6񎑪Z_ nTo1fHK*2zÿcU_O$)Q/ʹ#^\4plM{O_^[k1$$rF1)j}[gVYR1)V_LW<4~ລϏ$2Ӭ5 ー-_+{$Y ?m}>վ3(ђJ' +ԗ>w׈GUgi$SZ  W`b/4J"n>ҫ/%^c*_=0u̓dYPHA_|AWa֞y(_Qbal uhWYTFȯ_ x_Nk$c Mgʤ`W.QTe[ R\k&s=qY5Oe_?˦~DdT8xmqA`8'oŏ#Ɨ~BL h"S%>X-_Y[ݞ٤e+̾x[^..nkB8>cWl操ثj"^ pj=4a5Ÿ3?¼74>,i%_`k Jŏcp`*FLnAa8v/_? =aCs59W7Wۑ|If2>2J>4|)񇎵S]b;Oݢ BdF DE.NЖcAT^%Lj[Lv9YϹFp_BKƫu-w4h->T~Ub>ad&iʔ]+z[ۗU(MJz?.o|O&FkbK[[u$-+G8sYB_>|&{ӡW$G࿕Ԡ#=?eKoquc su}:F* 8 򁁏 ҵ(X͚@R'vKM1-iLoʿW{jX Ἱ_IE0%?J߇Y$X٢y1ϖbY1S=FthGK_~/Nj%]e+[-=2}̚Ko0_.{e6>lt*_fO?|8b{Y-smm@f?7hc[2d}jl%m*#ۻiFc;o xOCOmGNIM ݲ1:ƠcGd% }ߢG͹PQĝjnײho=qVTո1SWÍ?/:0gڇ>ۿcMR]>#3sTp 6ixGJ@@?_^Gic$G Ie``KD cԺp0 >!| ҵ{|M",KBXī#,1C9+઻yhC'sulm_r9ZcझGUɭv+W$7vQ&Զ턌V<F8@O[9? ?hibJK 4K8cʆm /zO8DӾa<7u.1vUYyjÃ_z]E oNǒ#~^VJ(Pr K8\rv5b>PD_n4Cp3H UYA09<?ޝ1S:3}cgx' گZ-\(A(E*_+9S_oX|4tB2i/=}9Zݭn#?Wn-Ǎ4|5yT:R7n|1c0Z~ 8 x[Oί$vXMTE"3M5*?ؚ^j2 \G3 8XaC@@.gn#xM>Bo5c$,H$gdQ2` 9IUqtu>*fޝgl`˹{;V& LSq^p]*ß?>|Oj%0~;įv_w~+Kn{u[h4;{mRfdQ*2,0jI ~ x[Z WI)䤸I(Y_*Jw' *V^/yS/Am}imѺݕDQr[yĞ#ھ>'Û CQ[4QKyBma4w-)nFG(7\8A`P ~&;$LI325kX2m$1<~ujսi$%o>„hВij}3(Kjh- ێ|N\/&dYU(l1Y_-|ozn~qi-Nlj.`=V$i~wgA?(% UFD껺2\ׇg[k4?fkz&9#trCΒ#H^2nx%O 84ϑ=N0Y6.8zE{g=;^_&NAܱ`OFxbh2_h6n|sgf F W 2Bq:?x֚zYpf<+ev#XƤ}q=+1/J:v|#dh!dyH(qg8_*Տ)hl^3ڟ sRY:f"Cl"֜bèN`*y؈&,Y~xJ?/G3'HrTU7R|7V"Eڼ;aݜT 6*&EN(si]s>TEi[Y5ު{fϥ->lu=bt^RW93'f=z 9i#!NN8coyft]3Ql}R"֣#@ecޚK<<>ȊyT}+㎽˶.D|!<d_\_?s]IAwɂp%#:zq_ ;A{g>G7o}3x{Z}=ۀ>x~|k@X[w{d2 tOvtU,mdS G棗Azgܳ)?%>oJxBq[9w=AW{d|w1sI垀`ivܰʰKOL0pNNG!F˓说3Wl+g]ѽ4V  ڿ|UyOHʘ="uj%?7v%Qtz鸯np(XliV#wr?v?NGl@[O8Ԧ/6JeaS|'{W?_ hIjCla d1[?ޞ1cO[#֖CѬuy 2 }K ["&-/aGd&ID]603O>(k&}N6x:>XU/U֭T4ģ'a8Jݵ+ƻ&ʣ_{nE8">ӭ^vdַq.[#u0?Z~~!uw}v~U\MLWFHg#קK/V~|i~_Դ/X<7,3~~vG |o;x0rjg?RgM_߸? #ڷէo#iV/z04ֵH-yײM}/ҲDŽt/5VdHׁ꫑}W:PVXi?u,=XOx▽榱K锏6Tdtǣr?K=FVf]룷]G+If\N%5/sry̏}T^w-+>Uzvg<K|m/xBK_ m\X~އ3p1\o>!C s,bC\1S1SCE֭f(ȥbbǨ8%ԯd~9\^?eA'KT1iq=ks ˡ<sZ׫~M|Y׾(fbAq䟝TшUb95]rR)ay8`en]TObKi,'i;-cp?Ϻ~kQ%zUp-f|f3RDAGLJuKŗ1eDbE*@emԎ1v퍷--/2yw03y._%(zgoE,B\=}Gŷiyܻ+:6v=ľ?@K|%v'+gHv&-9Ymf;LC`v7^LEJ>A,QVu[yz xmȓV[-KcR08<^7ƛ]@GyڭF!n0:027.?Я> *஗>5Ԓْk[yhZ5@~+߱i{ZZh E;VfAF:+᫩*Ii'η1I DPis-ndE )0_h*DӼ3?L̺ZD2"RJPko&>/J~%iQ\mc\#1 (bF~۷Ōb-ZH ̮~*_ⵧcJcjB]%<;1Ad"[JQ[9'$aSw>"֮E3Y9ѻ#V}Pмc;+j_d_<_geW~$sCk/['^H泻|+:l"% ]ŦA:f(p,bSMP4|8>=:'d}Kqi-Lkq'HP~e!?=^O}OutH ӯDk܍i&FNͿĿX_xP>2 x:v0}xOج-<I?u_xMvtcVf13<|aW !$W:T$#ƣ5ߡWGxKO~5Em3$ll# \>с>c'x~gThT\nƄSߴ>MJjm:$2__Nѳ l#>\hi 3~=kY bmYlBp#) ͸%W-۪FbJtkvy+_֝6>)Auoڝ~y3+n2Bm$!;|GA~|C_B#PÚMݔ6S ȹkv'4-$̈́d*idE7%D{*@^'{[cB qq:5: Uܯ*%bCa@ُؗ&:N{:mheymʷE]=иt|W1_ |l$&&o kp-evA:D_+d?e3񶝮xf- -b.3ylK@[:12OgG_|K{ uI44Y좓tQG&ZdcO+rLiM;667|_uK @˥;,ͺ""uBpzkW$qHΒ3WMάC2 7L՞u+"4rn* yA.SSGK&G3L]~fL̬| [ ǎd/I_@Hu_i>)iAo3(anjQ_7O_W>/u-?mf~vphA]C[+y ÷8~uA?gy3vM0׈PvLf9m/d֌(/ō3x[]dxgÕGP>1Wo?g gQ"_>_dY&`vh# t#CqHZ\#ap#0\4,T?5|o'ndUt*9';d2 ICWj~%b1 qG~Z x[hR``*FAC kbeNybmGǬ GK[c?0qI eUھy?iOx>7j]@)# rUO}lܩ#iv*@qv:U獛0=F6tSDJgj'k5O |"\o!}Zs"tTua+2nw0¿*th;]Z\o frwF 1d^7nGeW9$|A,?oWEeٶ̰5\Xgo'W D,T׳m r   %_(Cl#3ӭ-eQa!9Ǜ.d;P3*;JԧV??;%dg ݯ٣X0ylgS+f?ao Mr5O nHITq_/>=W4: } ֺ\16Y S|k3K𽙵:[ZM,{/th%@lId-!/f kk^q5k(ᖗ>3Ax|G? ~ɢ|>g]k5'fk$bF!qK;V =w,"K>Y9<1m<?c>ҠM_R).YA9 y#Fc#$Ş{Fo.pg/OC!On_0Ӣo KSW}79q &v0[8ME>v=q>d2V*ݜ?gT.=F߭gjҔ T WlSvrh\ψ|W .5U~9'`Y#~W>u6+;nR`>tX[<_g>K᾽edќ2{_]?VмGwE,K„ (8DQE#`m;x\Wʵ0˚V}vC)xpoGk^>dj= -ݏ3̸+g¯zƲn?A X|fe۲ 8r3n \Yv32,pIb s^ok^A|IyBR`˒@$d`>sLv}Mg,쾭&mm{?j.\z^cTz~gϊ8ll޲Jn`2H 2 1__syX麺4&m?tb=J 8\)q)1[ >:i-~)6c8coIȡv[6ZUκҽXzİm y++9E~Mf KڨhE4>{ jN:sk? As4W/#ܭ๐|E!]6p>MOQ=w$,le-Hp.W!x΍_V|YKɣKI_Kh!"BѶĭ9ʩ"ڷz?Ÿ޻WP7S:<̲6Њv'8w:\ֶݖyoj] o_~kOW1af,,-X4hdfoL 0$k8 9?,xVȞ%o5bI=ʞ3|)|Pt:y{[y&‡e dg $/}oF&|5ּk\65z+3 /?"hUz-_x-a0Ioӿ~eR:on~ܿkx{}dyO!E+oCmr[N-"hwo#$Ǝ| &w|E@x{ZY^-B5[?I,8\~|Q7BWBYc+l|ӵ8\E?J&\}|-\ U=Z -_TL`tGm 隩u8tqRN&XX# C8B6?·2AJT*ѷ' 64e )F1Ȭ,]k1rwbt'Q-Tj[b]?#/~!ŨGnE%º 6y$8Fߴg+>:sxÒE/UD!eocE \ ,Dz˾p$y'VTx+/ƜJluQX;kTo7o+985f>~_ҷC6kk{W%UI OLuVOA^!"ݡE˷H?Zy[t[iLErTB#=Ѳd/>f}1hJ=5i~A*q8Ƈ-bh^;VA5V;=mcQV~ &~֭m80Dnxd •ːy#Lkk[B0(APUwRoZOkR9:C0+kf!G?Zմ3J6Ax$8ÈWSDӴO&NyMŞm "w\.^+MbqW홫?% Sn-Lp*JFf0,:g,m%z:O ˚ݷ_vx9CV5ݣ1a ͗ 8ٲeKlZ[F&d *<_ m#1}> .oɥbk[oʤsۍĞkwCNVUC JM~q5UIi)6/hqWE~oJ+-aq]G;fؠү5ңB?*j{ Un^;u)$DP?X6]EYjĶHĐ41n2k ' < `.1Ĺo2& ܁q#n.wEִ"k!2jy˼2A*O0AXG' ڿ <7|]x_ ]~q%Ʊq23ܤ*n `-~w渺5mU{/5r=XZKO?Onj+9M+;JH֑~^G1āC{+n<5oOͥiq s*(c`(<860ءPn c!@llD"P ƼXi{<]-|+zxj?bh?e߆ZdnmeA7s$vůعYe6!F#$qx_9f߆>#Pf-+(1#TuT\2 5鿳Ex3Z-B ][*OpNaIIF[yUT𰕯އ' A|Goí[VgZFMx#v&vw~}^ 'p`Y`mXVI2GZ8LcE/oˡoBU1I?T~R~:|%tnR]LѥŖhD46u1;XnH"~Ynp$sFokqyoM L^ ܷ+F]3Eua"Z` r:|_į|> &9uK=%d8|gRy[Q ^՘_fk|lUN_n%\KZv$g{ٿRa7ڥUYTLgv#v@w*Xd75Gֽ~VG.4Ǖ$ ܃- b -挢Ȫ1J1RٖcEL_o-kM++Ѡo'qq (GZ]ߘcm2ۍNɷ+vH׊U֩~}w[2}2lo@Q3ϥ~S[N#D_.G;\ӝ9\C'uol.[m=pڏohj+\;)_VM:d_ҼXr~Qk b=p̩:lzryGڗ% ^2*겙tk;k 3m?lZR|=i{0r'd9kƼCpx#oM }6-xsCU/hpG?GuS~!uRt*ُyXm_ҹ't{vOα ~P2xJjZj aך{>gb2K1g| yUîh-%\Svڵ:Z.cDX8k ;q,eguGB;~ӟyVITj[賻+m|0ISLeFyq#6?Uqk䶚dzWc_Y|huAۢ夽m(y{Wj]|EѮqOi_EU<=8|M2}O a)~=ߙ5ӧS8~^ '2JCt_\?gmŐ޲1o$ܽ`S/ిm%yI6RQm˂w#wQ$#ē%'AUCH5;-CPP: M!w?zO|v/t/±ZW!B i)k:uy[F抱;Ox':D2ݼ% FݜzbCտmO]Iefii^cOzx̵])⍙@B>Wjz%*@  m\ԧo dvmbX]0վ9|C֐sZy6T~2 Fyw GXZw&ROpUSFaU|R%=y{Njq-SEw'aQ<+[Cqlgt~8q?d'[af=,)5%V?#_$zGpI ?Jն\",Efg3+#v|Ouk@cO1,:oh[¿I?Xm@8W<<'<Ǎޙ8Pō( x&@1גq\Tp:cž;lS>؅Hf%FHҿMC_kww+$`y 79z)CpWGmjJ%ܰ*$k9Ժ$y4#IA+-+;A[\&kSlɣN>ω8[%qxR-M4jGď4ee${cA|3FIo vӮy0GRdIR2;}/k$\epXGAX$+ZB%wz,H %MHI#x> xV<'7 ƹ8-*~튆9'bK0ͨO. jrX?)fx` wX XYKcΩ^I i-mG_(#$Ӯc'G~NC/T\W¯B@^'a,>#<$!bVwH{>\W9tPy?Cioo:}vԪ!S_ұe줢0xrž2d<Cqخ÷]΃,n&i*vkQzΫ/ y24tQƶvڍ,P㧣+4()SJVNjBԮ~}>/n.mMڅ*XxBW}S'a><0<1+B`!O5Meie~2U ^¾#};ƚsruz(-cTeJoV8*[g7#~xPWTX2[ +B&J]+qYkv|f3 *Y '[WMٵ xx#3nDF\1ݜӤk_22@ 'UV>Ru=cXk1𦡧iCo\6҂ El,l_?g; nҞ-="}8+5֩$fL^xIEm{<)Rh5mX4KS^3n0H*'OAK%t`X"s~m*FɧG}4@㙤vw-.d++Zͨ\]&D+ 9?to-lm"Uw鸌`v~_ʕ='^_֝;T_ 赫vԬbtloI4w6Rʪ?!~M4kRlWo#7$ې_!JnB?W=M q*uk)_D2pxjnY߸c '#_&Q<_W\W~nl%:_sZa|=*V׷6u,fSI}pG_bmc்uMbDkYխ1,r\~HU #zNk+هp~ .hk0'gyT/B>sCG],Eœb˅ 'Hc? }ͧj&60y:H9 g||Cʿa̷ψ$9 ̋ F ;§nG bĴOmjQ.R^w̿D.eD& M9Oٴ%8ô䒄'*]oS}S-ȒI")/gé9}ۛݕXݬCp$N"+CW[6:OBaa"r( j2Srk#8QZoM>)tzVGoo֚kdm,3H˹|#)prP >~Gqk{iB1 ߻uû 8cu[W4^K;GDfLnq]O%\s޾-aMY!G=yU7{^UnKZ#O r,G*lˌ&ʢ-yLir*&;ƝP`Dn1ਗ਼?/OUH]| ȓ`c?g6v@[Eɏ$597prB)@fϿL9U !C/ j\,lfud +=B |o+vq&uBX//#X>xx彝 m{o 'psc3橨9%%CM_^޶upY'oVX#HėI䝤+tAm/ooxkW Zp7X,^H;\t5r߂ws}g>$ḋʆ)3cpnTDZ~Uե<5jWދ_cO_UF_1/Ѯf6<:B%m\ >jxERi4[#C(F92TBs1HtA*@|_xųm]Wq?:$=b,@ʁWgO j@whq !ssmS{Zzt OW^<>$2_&C D"pr]^[j௅|OdvZm09$XՎk㏍:|/}x{LśDkk]՘*sN x9aR>7G`*TgO##JeLT3<0h& axL 6s9?,w[uc^ "J~ЀF_P?h~?-xoK lQ]c3zo??&a{Wt[+"d'gc* Kt`HxʂJ7gXk<eU~?f _i̴;<-uD'3NxVt? |6g6i'ˏ2YqHBj+LxBKo*UQ1Ҿ-ۨ_gWѦh8.sE;O͸~i79輒.ͱ.GJt~> 5I&l< 0','1F;z}{z%h, /an53y.30O/h |$ 6OԢK󮕪K>n͞EÁ^yÌHpF#ܮцTJѶj 20$q/2ex!叶Yva>Q_Uīr(7|1#rE!Scl1E3\n=TT#WLֶ3onOK}Qd:aWFnxTCh>~]=*?2'^xy9$@Z#Om }WQl I!yFЗG,>G_k$G V6ll) $ + O~^&π}FKo28ILA"7; e1HZX`1.Wl-'8TVHbkk}6G{u'ϝNIhQ>rW+r*B A%Eٱ*ݤ3B~`:t:>'ު--+dk(NjC>T|qm[ NkcL.6T%mV5Ɵ4oZ-xJDڵʸCn !D![fV07ǭߴehiio r{Kx1rO #|kd>B)?䓜g -ߧݧ lңSC4xB5h~bfBM3O YCemKAB ~xy<0pey'ls̆#܁u+ 3gۼx~$aєp@ qq}=k:B^5-L:2 kׁg?)<={U_ <'м.Vμg<⿖Ɵůt/fEH${(Q׫_NدkcWk)kDx4ykws1ް42"&t{M~O⼪C/oy~^GSW79Z?O-ßj$ VI1$ 4$z]AI"U*x;t썡Cyz喕7(nT:Q`nW} %%+ T!]+-;h?3s JvoT+iV&+ `qs o|% \eJAF9=b0l"eƭ m]% |e0`9S1ltX, ݪwN9H I>͸b˛G\YKuO__RC$iʮJH;&jycK=ސ`֧`c408"yL1֧Qg5}m1R}xQJUJ,ɑZy'gnTc.Wpr[bp8-yS]$;~aP=W]{,SG~Gx9_x!L[\-:?L?e/֕"@Og 3Z,{3Wgu_^NkK0k"X#־X?ߏ~+أH*8 #Ta/)G F線+%7o&:TZgl~B_O Ex?Nag?ZNsq~\y).~95ktz y4K>Z 9;& ?#NJ{o}XyAsYsbu8ZkHKk6\xRsw\);zV\ʛGt.,-ȅ|]Hk\[iqcVaW}*]֣4Xi2Z6rJlqR~I2tX``?য়gX(AVT~M(TәlDQ@:t_ !?T>&k0Kk妎Es=;;9#ز+Wa#ͥiڴX[=ZbjӔA_[{ۀ1sO4<7{ ž4]\?J__M[s+Q3ڇ↪^L(Yڗ }\W?_hvm|e\'?+{q^N;1Vl V\^&rE#̹q#{ܼ4<\f|kw r~JZNxS?1xQڹS|9^>͟Ԙ˨IsvǼ3o[F clW腯c_>]eփ3h^1!Vic%O6OqU==߉m *ҟf̧t~|7dmav"z_z¢?;P:8X^~+ξE-:8SVkO ksW>!Lv:ck 4Iz18?%y#JB+P~۟dZEA[\L[]YῂIzrֆ}\ײ蟱7-:u{yghD&$Nc)ᏇxN+gĿ"x?EKM&ⱩVWi#5dՑn[ lRkǠb?+ ,>vɫjVq#,?)It+ڡm q-ƚԵ{Ƀz?1Uj=٧4i9 h>%ZKvI@z֋cc6'tg 3 ˥92رdi, eŦڿ+?MZmjʧqYxᕧt[< p7 I8/A*cB+CbӼ]=CX4痱ɸjw{]|6:\/`>Y ]~r}]+,vDW,r)X~w/ Yx\~&}#s&F̕<ȯZm'Ei#%wWYA^:Uyb@ܽ{aQw;.nBmTԊz,1To iI:k!.6ҡNyT*Kk}JO_V u \H>',MdP *d ~ikωlOD[( c/7d`cI_g&V-#'9cf5Q|fHW OGoh[p68$WYG*RɟYOS?y~ (tΰ 9X WOJ׌-ב+вN8V:#Icp$ Z*4tQtV-wF._713ew1^8YGl+]'ZAi!E=S$nB]߰oˡK<^#uIRXbo[}Zd7HQEyc=hVO(ĉr%!7s9'_~6i-F jLCqa"+a8ץеM>B5 G~ڇ ݱt>AK8 t>x#10oP~RRFQ=`JlO/U4鯭un]ĈR0(PGq~(l.E~dϺf־6,7٦} _6r=0}+3j:){)-ҥAm`Fz{Up`G^(*P}e7ףO&1b\XAsz?}x-t;no%hb88=˃^)#{ ^Aqo}3B|x2i{Wп]&n--۽S{b V~G&{&t}7-2k6xڷ5'4 W~o:gEuϊWzݝ]"< oJ3@;_>nqhuis6.4'>2(`NѰjZSW[tQ"mi ca~c?Jb~xW'čO}V{ 8,Hf?۫I8f1ץ~ǔSg;m?u1]Ju~ڳ>|:q7KѼEgwFܨU`U9̟ŷmy4Hqt?1\D ʌC(׿LjghdSEM6=7W|aDH34|rFFxf=_߬Q-%(?~{Ub#%J"]ʑr>56N6b‘@!'%@cnzkFx7K_ѿd/kj OjQY#+{kh.ؓj/~~/w;f1^ⰅGm ŬҶ1捸E_ |wmύD׼WzƟ2ȁaa<*Fc Dzk<4ݻ9_]kH7?H|9/̞7Mտ]-Y-MW(b?goS<+{keƯ3ܬB#أѳ_߰?hv:~6 ķ~3bq1~e^QAxt5@W$g?)8#w`M}ohuv_dxZt߱|vGtnEUu[h#ASTJ?ʓ·T<t"Ҡ~U5ԮoVeM",*Dd?u b=5@3i"OxD6~bwqڼ+ˁW[/>hsf)?H<;8Oyy-nmKu8`5bkٗ:546!#&>Zg^ }_rG #Bo+u xҷ#W+_qהѣ:ʬwo+[Gѷ+R$1*p@qDv_=WSW+_D4CeiY܅Z̈G{akKo_߄~,S/!r/bX Z{Ga adSd|?O 0mđN{k{fxBWK9޷=f9TgM{OF~_ <W:}e8ķw^c; !_9^7#2P/{:xkVvk+{]fb!.I@߃~~ׯ=@hޣtnc9G{c$o:`{ sƟ5ՔD1:F"i&70l&+܏*m}{z{|~ftN? ⾿i:U)iiey$ gr"#ھuOh+;yZŌef7 ,~2F'_z΅sv g,=]GCyё:PlA.}[EF;\ 1k֓ˤ]ϗp#*Lf|Qsïi6SY )xgt-.jⴊ,}?) fQ~X˕9N8L 1IvtݿM,~)ի]ټ-|G|?6Oæqoh3) h1UCDbG99;-$Ş,w;eX8*Źt߰Oq6i|\,!_%<"2qK #7M]-OƟχѮib-٣ᔠm5yoVc/kG~[WZy7~-~sn^1~ܶ>pH<6+iz1, vFTgvq],/pqVCFv(Z傲?9N\w%EU]§ BZt}N2+!\ L%ê<ԞbvW1KA%[[ݼn.="mHCiQ9Mc^HRp[>֪cS|_ᦨnwwqqq_/}9k} DxΥ|OPyRTlnxWp8DQ~ߞ EE,xˍ(sM a2NKJigSVCn4=%n"cifPN7mSFJrqlLO B##&YuRk~(]]|=nO/ny. ~xEi^Gk؟|a:E߸+baӏ4W+'57K[h2|K(g_b _wQ5LJIe}Wk}N.~E?*aۧ#I75wrn@_K|<@xAc]Ovb:{DеFY*$Җq~nj6wgE=ȯdZoU~[&wPmǥx8{2O>rﻊ?Gq*܌;fzTV^lw6fp.qN >y?JxtQJJu"&<+#5R/D{LyVbNLX%\R~# a>X)|sҧ7`iNGw[|FgwX"/=|Ow 5 uGO PmMI0m>mss_͟ax7IVU(‚<ڤ݃sϥ_dpN' W\}EG[_aa΅Ac|?V[AvmEHc~g?R1 j0t>^ n=sUZ(&X~YXҿ*ĿT45go}*́_0c_|;OYHVD$h hxx\JR_߉%NVܿC^(񝾴w&aWt|v|i >kTm?H装?-#3)#h$c{vGő"i- Ag8_lx ?5icNW}q|;^2uv9״}w6ߎpTw:?g#gwMGҿg܊3](,r4?mGSg _LEj{Zs)GOFomsڇ9]J#K+ { +}i4q&/fo^vԄJd|QD?}a968ǥq_ v#6DK S7{E\(4o @\׌`Nđ󌟼vk s>\1mҷ(||~# jW4vvFnh)眑\YQ< ݒwoCnu{[%+vHC&7@\kZ>Q̧tc\~_˯XN'Ph2z?A?jʖBܽ XvɯY~) ic [e>#?$~+zy(1.lNcƟ灼#[qij:A =>A+ii_%7<_e*ͩNsgZLel5/KE@ؼL⿧ E~XZXޱ nDP gƏFqozM̈́2Ǜi"yF)vp?¼/Yͤ~v?gRD&Cwc{& ~GRXDS]~Rĵ_?a_[O\k8q6~G?k*NHe5H]]m)%ӘՇ_,~ yil>_1L\CZIIѬ:o&?J1sM? ZJHGN;d~>!e[+95cG=_JM|Msc @[>X_x~!eX8܆X)oGd|ӣ&=>ũk>LP[>2dogr|{3fʳ 7AgLR徛g5'|c}.:H4#6\᱌J+aؿ߱|q =޺E{{egs8b逧Gj߆ҧ pTc|7;ӦYCnbUvoqoO'A+*U[[*~/C%l 5oY}ᜉ~L_~P`HggojOUUZf;KqgT=+LsPwWGZϊl_OvLLW_|3k0[kE%P:Np}š-{cUKlq> DS[D X@Љ؟~zV=ڮdU\l qz^~$&.6/ZD.09 tjRЏ_SD tn>$|%~$`{[q'* v9񷆠ޫ߶͏([ #1"XZgA׷nǨx_՜+ lx&e0D=?Dn~!x~oV vGs%6F?| pHk~(|Av-CWniT#VT쯢kH;%P{(]MɵU?:/a9ZB\vggFVdU 3'IFmr~'#3j6yW䞫Wmn Al&!;63ߐ1rӫk:~OdWO =>?j QMU Ǧkㆻ[GXjLq+5|oMoú\]G*zQp W𦶑xvm{(H6 <Q02M7]?j /E<./4-Mp 8S;vrǥ3? ?j=sE]uh'5QbnOp L7 S6 XR6񷲃S_-CV~K+kWH w y"/1^J|9pl?RJW{*8j{x75"_*܈ݚ[j:6+n*ܨn0_~|wxViѪ'dy7 [>8gtEkv 0rX*5猵 xCo+w\2m0UF̬m`c5f8N}[cICg~~oy;b[i7%OVd_o~ZIê^Elhr6EE2D%Ԃq@^;+cxzQoyPۼЮGϹԔ|<U~uHKhx;c/ G_]6tWWhV~S|iPj^1KxrŶFP Nsڸ+O[C_Go-̛K*p0z /t֭{o__[TF_MOI(0s. U?wO|"&K]VvCԘ;S/Ň#*7> ?"ݼ:|qHmBm0̒on&bLˏjq kӗ{#j`XVV#R>%5-.2\"Ϧhř:qrv7];W./K{wjnNzFv#G[5>(&kdf,ƛcU߻鞝k2xs:?] zlAyV2/$ Gg08=8'p+:nG5?6^8L5M3S¢Βە_pץ.xĿ46;*klYe"߹Q.~)3̙|c&TW^+G .KqFwN ՊqSÊ?Nm(owG/Rt\?ٓ+އAl!yCpf!K9*0+;ઉoAp2=Ƌ{̈qW?(R_ǟ<{ o麵}m4`k[s$.yH9;p}+U\\D:S__WQx)ͻE{a1'L|[Cӧa倭}Zjbi%#Mƾ});|p:cǹ[(05=.I+.v9,uj-|/ ٞ5o%{$[ eUYTYCa԰f3£¶!,⏒F"y$/L3_][$' zSU RtY(> %`JR*~+id=RDZ4{љ_ʼ1*l# >nxT]ھ\tS\u7˨sE#bR̽3^&|ӡC~lycZd_?hZm_DB(Ԫj#'^U$|D!T8㊩".ི?Y,DUIr[k>xzt\c+-`W/.%2y2%.яYھW4ȣ5R9x[^.ӎ[8mX1J!A8^w7Ïiw-ĖH`b8bڿYt+ \iѴw:8<`p1_Ee~? 6}7\9fx찡m1 sXKJ^H+]ROkS-چ˦]dn"w/0 ^._|K ~ }>JKt1XRHih,!)`0;4>|U ]7sfߏ.e-9HG=^5🄾 P񝦗yxjV]I*r\B Yr vCaڔ(ϖg%VsĿn,%KמM#QCA=ojȮ&*D0o\|W%ռ‹2,Lv{[90@}a{;5|j^"lmbVɃi0y|MwH mM2l^GbΊGY_fxKI}4}:?C{߳?$M3şU֯`}Ȑ!XWJ2fE?d B aM8=6׺WB{+J~(k_6-mi׿a`0 |B˻;N+C !+; HlEK1W~p/f_T厝_nu+qw|e\hv7/ Q1-. M8ٔy^oo?R5/Xxmha<2$){ ^|Kվ- K˽amZiE%Զy||"3¶1Z,ɱBn޾YJ;?KI8>eŸxIkߍVIf'VysDryXyq zi乇͊GXf3]$e BK{YDd*U?q[Dyo*N*?h-zsmu5hS"Hxv`p7?P6/~w4U46v2$E+$ ?_ú?f& ={[eQ#K*W| tdoɴw譱djSDh-W}^>${u,`Lv n˦#Y[Xܡ{Wyq921yA(<TWhz^M†A8?LX<@]k p >h#\'lNN+3 3:nZCy{ȏWG [FC q0@DAC_U̿N?:eU$(!}H%f $ND6J^w_ #^(Y|=sǕ5L1!hc7U‹KinF#3$Q@‰oN&?+ x;)c龽޻m_ 򵏗|[ʥfҒk sZKYlCav ߳߄/>-xͥMo˹2 y]o.%gW ޛoyE`D!E|δᯈ5Y-V[Bvbȯֳ\52oo+%^SNܫo?JaqJJϙ#xQS9 H=;9@Z Jqh% ~wW`,G4?S_0!lSL.GN?cˏfҮV-2I1#^ !> jGYV;@s_G~Mo cܩNW)cm`ٶmW/n*I_SK?D8R.ABqRgtűҌ3?~HNzS7ւy S._ oixw}O}Q jz_)UϬq_J=>Yw 2H|<aV_叓X*y5#?f|7kwk3H.І/*q8y=;U ܛ?E|4*ӕ)Ջ _#)=B^+='ڎb{@`sbf0+w.g~.ZXc4"j# :F8sLfkHf4$uTVOq"/7lDJl݇Pu_$ڜ+ǥdDNʹz{(k+͏]sO_\'m>|QeC1 8c+ o!oce?a؝o_ϯ{㿉$qjڃRkBrz c~~ϓ' 4):l?(?O_oO}Z/cLW,N$ڹ5ՑΔ\ŻKҹ1; O{s3'ch+\'T&^ŇGF]4scQ9ڼO:^nך6q"-<N8U3Y&=YYEHD lxH[Kmrqї8mWeZ+E*ND6k>@eOF& ma[^Xծpȸ}/,F2&15AQ?Ob[)ksbc!",T~~9o_'M}y `#<[aq;bG|A-7xgڼQ|1#@Vp>y I%W.+luhPT^˸Z,]6>i/o夗N9; 2j`!,Hw gpqZEE$ꋹ?fc3|;VN|sxĺc iNXZ'+{ 9/ZH׷$|jo_7^&MUa15q%*KKd>#FsP{/ck^:Px^ao.b m8$؋v p1,7taW J$]\"퀋!?A_ƾ+Zx{Hgs My ]%wG 2M2%4c|?ero{VڗQ-*Ao,f9)q:+o?R|ory{L[N,K#~^.tGEg5a&Nvxΰ,+zy:tڜCVEGr6tb^xk:W]#᚟OZ0G:{A~5wIȋ%~6?gdt{ȣN˵~q\me&zT~Evx9t{OZEwۺ[QnmR;vtGlbӊ;f\>Ӆij0)fw,]V},wI$~-/*^˥AkdI p:#w_fT>?%Jv­ٮ"JUcxgzg?mZK_lv5!Kb1ؐ19*P d~jY~+wMD Q]]|Ovou}esl,%_7WVe#i (†_݋/:Gqw) Ҫؗ#?S Іu]R} Cc?b7j?j w2^Y,fkp L>=+(tW\\9E~)~9x `u->ye!2 [otC ^䫍>"WS#W燍|9}&Yڙ"-uҿhh *6U-?5i[*H+, ]Y.|5>kb{+#?71۸bk? ${y/y/bIo?{VB/rxϹ_A*a&¦i$R?KMG~Og᷸M;m+c>`YEu !ӢYMF2j7c폄߁~5x xV})[ܬ&E+ w6 ^-__vd/;KuC&_d/;M x*Ҝ/#䫔#:*k*Rߨ{F=|iu'_{ƶKAgޢL,@Zʷvj~ĚOğD:tc-}'oe+0u3#[G+?7MKP!z>al2>w?~ec87'=+}ק~@S|=j ;t-~x2?¼{axO;?- kdMTJE\kQ9)sJ_cϦ=j&<nV9 s[P>V=Zd{S,[n\by'i5.ӎ/_O|?aNkoxEc 8b'kӞWbڡA53A}ȦKjSZ*7lW_v?ǟdX^S~U1N8 tʾRF!hǙFJyO l.f<7`vBi_ m(=+h |~[htJ8׵V> 4_P]BH1t1ZwˍzoW#i*մ"GC,1#3z+hoa2Wϐ~;~G%'mP?"(`/##J_TFoxP6tBBs@}sxԾ &m2<|*0v熍R1yiζ3ٵ>zoUh~|%o{Zm-ͬPEǖe^ в9Gۇˋ2`s_g>V,<9>cyƸe|ss޾03w[?vzAE$~x&[XƏ4q&+LJNiOOT.{UYR)v(!`IDzpn4ZӮr'`=+N'/C*;I%%Ě! ['Av4y.f}$1g/گW mmZA(#{xk⾛(rǕ>YsIrQ[ez|FU\F~ɯv:'u ~eͬ:4,3F!0p>Wचu<1rI& 6Ⴛ1 >g4CA<>٪\BBbc"N0>eE~GAVpSCMxzQ#erzDa xRKx[,gΧ88/NoJVbL܏sUqM 1i! 7J8 s]qxGyO/52UdW|&ݑdP }>&4(eZ8 Nc jvTr( 85fo?>ghkw1WU@U [$ We[%At̄nԯ#x|IGF]-CXL}*o?$][s}(L +> ~.+/R# kUƟq6/-#ud,*kW8q5oyZ2ᷡ;Wx:vҚ)R9Z#|r)3x'z7nTyzE2?2+5cx%ūeq-ѡy#k7&f,vʧ~~Z上ݯfDMΈ\C.?nF7FI3b"QO &F1v͗>cmVZA*Myo5doC1{[s|+ Zof9Qzg]Ҽns6}K~H6x=4دXJv(uc|wWZzͅ3Ir~Yd!@3R6aN%tt??j'I>/}i@B9d8H`neM|*?dh^"]er-Uc-0S̎ Ƹ¨'-qҸ-{71^!;r<w/8ⲡaUo/"(U#7?eω^mh^XZ#hMA$pJ28?G>!hZ|cXυUŕis3QおUN]R"([A7 lZ/&%s&Ix_L<-~ǨZ|os,Ӽ1LIbސ8g󼚝\\"ݹ.{n2^soM#}7HyeK('I9ofMP8!J~᧋<RQ渇kF## d_c.Nt)!_mܢ%Ć03# [~0W ڝl$XhNN; 3J CΩ9>X#_&|7':2!_8ÐC֜s\gxcqD\#dߒO]8ǥz4,{}{99"=OJDV#9"?So躷-XΠh!#,w] *@W嵺ŘB*pcڿੰ=,ʩ{YWp흽}+kь15If5Xeۛ&*@_^?_\K&@vW8^Oi/1B/Ul?xq$2}&e⁶K4[ҡ̾g*4bOOjyc 03g!Xzt(9 wθBpX,ռgl&Sgsp1j#c?Ea#N<ixfh=-p#⧭ K?|_<[Ws+ |h?g}ɵklԚk`.5A(@oHoyycFizN>q;HnѫHrXAk8ҿB1Gͥ~Κ|~!qe9WO&Ʉ$FwSV^lwNj2py5xzgՑ_t491f+pA| YI-cGR3½i⵷mjzh8OGp>pYpHXv  } 2~G*$0E{5GCJx9߅FDZ1ILOJxG-.Ɨ?/D9Q3 /|F1[\ Σvph2xeu~/ 5Zqq*D{\ˡ3O2kgPAח+<+idy,ENrri *p׮Pj781qS֣:R&[ʴLVeVk%0iMl>SZ@rڭ>~},mф !~n_ԍq,]0Wg.X|kudme}y\|&GWO־ x~k?AZTcB-!=9'+#<~0)JPYҿ ?c5avIur_7'n|A VbOܔE#T.Jcq 䦾/XW7:G:.RZs?kK#׎JztkK?.%Lf+g8^hq_7vh/;q6,p?-|TaGA)q?y;|{ #|v⾃ujZh}Qoة&Pj+N=%=x E |>hRNSKKߢ?<jhu!fnm!cXccRjZ c#,/.xQ A$ /'K} )hF1K?S_R_ <%X>(>K{(#^|wCTG[z9tއwڏƹN> X+y,4ˋ !H kOS_hѯ`U&vܑ_t#c{pT?|bNoKA{%ĥT䤩)V֜(kY?ռHp=*7WKv_}[άl1e㯉ZiO}D!$"d=N9\2<苖6 ; W9߳)h׆7!tfh^ͣ, iR2Rxv%A$~. KPy/5tK{"Iԭ2 :n<8"A%%>9jM-p"՞K`>UBּ)*i'WJAo z+?Ŗ_~&j&Dc&xU?@oj~$~~6|NZW`,Zs$907`WEӿi [m4Hc`粭xLM=G`xOY_~ WV4n:lѬ])]9ݷinυ}?EI=j (6ϙ1,by:{va FP1gOJr8Ykῇfnw_ao4pO#,\jƇwcj҃ |MuV FqZ{J[fdE*:  9ۮm94Q@Ϸ5|%|e:h4C|)ϟ }1_3CekKVy1Rˡ~%k ,y,yhÞKߦ+G />3|7igɼ3^FVT V!ʥG8=kڿ4;O7\\^X/!%F YA8W}WBZl:eS[A*ʑKd,2pLE g9 p{fW ]]|cYӮw>~t''^--4 V[8NbkT^}xtMߙhyvyN֔l.ķ:ok8_H]9@"kd so{t)l zFT4D#Hnvm]R/*,Dʌ>r»BtIX\&>-]4Ug*|wc i?Tū'=ݻ<~ *cJKǀfYXq_5~Ϻ=ƚ!ŷs}z 5]'++?M|7ƸVV[u,eQݟ2M'~~ɶ&p2_~?j!E#u~OWJ:Pk_L?}u&{8(ݿ}9HD7LL{&?|S|ÙuuOl׼pvyE{D 3|Fl9+>1f[x ǀH~~^-мKK-gm,9">6,4{Y=*ِ6#BR+(BoqqU'7̎AT=1JfRv6I8|t~ _ XY=Œ$/uʶ9Jw^=&oit.zt/Z-sӰ^~-v::ghdn:}:b5xB`5*[ICb[A+z>:Ux,SҌ0e~URO3Krh݃}GW͖=^x-@˭@xQ \\[\vkg%%N9#M+ֆq<3|/M3b _5[%m;Šk%;|.1ۈTtɟ>k7-g V:+zݜwyIʺwV__ǵy]<·q^J¢Mp?¾RЬ_^omm:r:z bd+ 8~U?gsԵ+t{׬lr>`uR:8ua%ʛ8},iq`zɏC*C0x=vn}>Z{=[?R7C8G =0;~;9Xi'n qw&01 )lm,\ *QpzU$WOjV۶^Gl55+t x\0%U_KOmK2y)vHKˤΞ5ɤ\v:^$9]ER+HZsKE^#3wۥ.{ )M2 qRm&:SҎt&^H+*5oǯ+ŢZȾX s#J-Ι,x4kHGgB9a^k>F/B߰kŤ5Ԡm}ӏp}jO mٲ(l#QTJ G>-aOWe_Vd]íjQTflg:fBe źźVp8 şPU.,%;PT6Og>^ W%ЄS - ';s 76͚3kRl_1-5]gGoZggerpfg/?{s~Q30>KWG<$t*xTELbU%QwSl5k+*$)c# kJc#798ʿ]'7>R>3`ҙ"ԑ6ri?i`${T*Fqsk>~,@^?{/ biL}#3j-dbmPĞ5aEgT{B+ߘW|zu|YE~!kٺUʁ]Ѻ+ {~܏Ҹ@lnJHwQa)S4kcEe=~>ּMi*&iVFXǔL[< A Cu2%sÓ_K=ZoXF|3pGD|Ʀ1F\{2m\qBۊc#(=Vߜ0CNA)2Ǡ,MEQۥIRlw/J$Mȧy(*(PG␟ʅL 01 1 #WE-A~ؚ,'tW%'QH`IFV*H2:qݾay=%nk&+cy9!.E呆XF+帖/>Ä@I8!1ʾKS"Ĕ5gI .OA~UP?~WHOi ǔU"]>_j8*8n[)}SqIQcJ7vs:MfqL hxs֌GV(=C3,YFBTǸ؂f? =;.ds emMYwd&1Ni;G ADIuFn=ȥ?yd皈 ^byczu_'zT#K>4\T;OJiھ#rO0ѼGT{UYvW[_SO+Ft@91y簯cc~#_Z%Mx \PuϦ!j $?jC,8 1ǯHC4ce%20 ̌Hl<`~U4h4{8!mb9_jߗ~lJT`7G][L"0 (&;aRFt`=l*µxS^Hޅ  ɮ'?|MSS(,ʽQ/wʭMoZ\^OnIO%G'gҼ,f{B1~ {\]q5r y>gr8W~+}Ējv46txc\+ t^І'N|c?j/i REB\r'5نmt/53LJJu#OogoA q]xSsN>)x ]](@*ۃ k`v~:l@@On+MW{N68VO?6-~_'C~.[;Lm т|y00=XxNiMn}N Y=Omu5W4w- $?W?1*b:Cqgs( R#$va@cm%#6ǏSo! 9..?/CΖ&O~^(~[XEK9^#Dq u'h%rޯ_y_]|<5%@;ɷ 4M#_/!xFbDZw i߈hHCtwzeZReoApTㄕ72>;4DxE[İ" 8xF3>⮫$*jW>N0A~'ݏX,$3G㑀z /= Z 8aqH>issy >GH7ᗅ5dilI#Ue(Yh|AViN%}XhwVS-b#W{Ӎ-{䶭joX2~IA[p+ll|/WӿhjI'\+}LPSsgGxNKկH p*#L ~麶ῊojBc-q(=4|ZĞx-T4bZ5 oËoDN,\mW4R}"U #$mþi/ծ <"ѣ[GcҽKU9$M̩9c&o>WZZR܊[1rC޾%N6~$Ey>VO8L-pA^xxY.Ԙ0[.0IʽzwOg{>fS8$i/W3/-y knq\: t |˻[[Vk5[JĴAI9 q>_#m)b5ɴj`vLq \NsN"WNuQJ4)G7:-yɧoic.o$7ğhYK84#]YJ˞v3F;=k~ t;Gc v18aFjccŸ fmWEERH +cH3MTJ3_x ʝݭ>G`hN8M̿Co>g<7x?Ysij$C ˌ|ϳjV{/,0NcR0J٣Xa1kΤS`Nm_g(oNݸH(KkZ6'L`kB?>FI+_*\g\sI+_]] _ʿ>,Loy M!~k|y?EN>g#=O؉È> #ӧ/C-i:{^?0c/>?M^c~l}C!o&~xYWOt7e;L5t###$coA2;"vAc[rK.`|q^յ;y"TPk7eoϒxDžxm?nwy5 o9dɷ涑K[k1\F| ڝG#p\׮yT.Ѱ)*|)s)";al߃$[cN+gOt.ӠSCNS^>q?q~?g0 5fM{z~[~1ݟ 1ϩsL0G+S_~>\qQd*x+ e~̶]߿%?OWź x2H[J2eZ C8lcxq#f|;x㯈ү/+Wj#FSAUH_&2O (&q18ʰ5_[J|kSAGIQwghyW"o^G;FH}6]v^5}!kIYVM$,G@3ĺVp,#!UTAXˬk ιBQEX4H9;d>Ϧod(|2KӴ /niLD.#tWWc%*@RH`{曣idW6K&PTpc8jox%]#1[]PeW- ڶ}N%O:4|N/mHP8/ڮl `cz,keQ_ŞoZ\i, |\qzzRyesȃlr> h<=eoŠ8Zl٬58(t(ӏ^eGSVh8` 㶙ߚr\ۏOjq}m 1 W`)9'NH's{b^f}GWV{qbɟA$q_OR&>#|/~xa{hx8#S_ 4еma, jHZx[ ʑ0WyHg, 큟W&m:og:W7ޠŊ$=;q_nlMERy?|:ukD}xERi:_hZ*=Hp(]_þto{I2.9_I-|iﷴ[UAUT67NVAG/?gRW-c YXlM8]30vyPZԠ%Pϗ?rvs48;q]߅5+ =R;x?.X di#5wlnbiwyY!Y k!\)d/z=hM^4iڝv{$ehqo:`+Xx7Zdl5EbZc1Ӓ1|1|D6n!ءs\yT|YkiZ\8dkv'-_;JWGոyGǹgRе kXwۢF]ĐN[ھj\/ڥJ~?뜨F?:%ZYI(἞O9Hvېuak~l>q1\@*ѫ [rA]l]8UJNLJKމ"_xO&m*1lZ(?e#"a!ӮZC||xWMoǦܲ6J$y|6e0\D`V61:Wa87<]hԗ>yPV4f9LMc||?1V7ҮZ6cwN{|+~t_C-2NK:KY "BW9?4ov>]Y|G=|ĉEĥ189\TLDUܻ,xuO̟$-OGxy[*C-qtP뚑@>2I6qM1@ځzAL~j^Ɵ dW?b[+xNۭZVAhÑWל?ࢷRA.Doot {0Gaҹ17#.6"|:tVeyw+rLsھ|i'٥pjy\z{Va~E沾*c?Jc`dzs]<\DqJJ`H`c?>aCMk_֠LmU?Kio+j).Vn+?z fkHU|y[v;+ͿZ);u{_0FcV1[0'~jK;d#2qT*KIhqĪ[CTy mN&|k0 M$wZ8 8~Q+s k'ߋ.TMI.w4_ ymxKDͷ4_NZZ<1p:c놥 Ӱg p=SN P]~SzEޏi|}S"²ze{WCii?'Ķ2]fRGu*```8^oIgK Ң~(%Hj0IwXj8Ң%/&cҡn8_p(~/~vVZ-ݼ2Eog#F*} ^}H޿ h+{;)weO:8tF;ʏy%ڏOuAweFW&}_/ǺI auÜ{(-O*nn?bsz-pK1\OFx7ҿ#u?om-g.1V|;+?䟒lY~10I" Zٛ??̤+ Ì7rrvC`{OjY WgJ`|{[Z]|<Oܻr:S8*=A#wY.͹\t'4+܄qHYG0) w&q7 86ivsE&%H~)_Ah169DZg48P>c#S鴟 J?c[/DӮoIבO8pgfFAֿyu! ~2))7PxSTP\epT`j~$/~%wgb]զVF|=}TPVwQB]}[M̹68^_@e:"ڒX4˻pKǰw4}/ SMO? iIABȐ C. ӭ2RGjp+">j& 1Xc8E{~T͜b>%Q? r?iA+c9ek5h}Bey##+]e0'0\( Yy _3ݔ1mG!b5 {<ǂUbZ*AAc5+Cv8ZV~xV)|ϥ>d߷ߞԢʆ͐ZQ`P/.?fm[Ӿ^0gH++/'ŷR*dFBi+ Қ[}\> آV1P |^7)?OO`Roc{J+GΔ 0S 1<0 vs$ܑڴ| hߥ>dG+3q56.]?11^m׵xǛ}犵;1Co_Hv8Sc6VڧM#XM4n +FbFow׺ %޳1"XGL6;c`bWx|fCU|3ׂ xJk>էv/RTڿ+eyiQS*A WnqT8ҭ'w_ r?Wnn| aH+ֹg_/ZWXɴRJ^2N__4~hqyӚ; cU~Z|98cr872M=N|G\Z,\۰"Fy/>O r'Gx"o '+?LxF?bGZJ1Qg||ƾ3ƍ5%OYs0G*Uom6Sh}^SOW#%a4B ^?CUi+Hz֣#Z1t/$ʱn8Q׫CpEwYm&i$6H "EE~5U hy8 A/i+ƟltxUᤂ)#2eP)Uھc~xFǿϪK9:d`D瑎 <~1ѷZOu[tnaiqq* GLW?e/O_E}oVҞÛf1a} sz J:4Rڱ Z(혔Zû3t'7 >kW:>":+SٵIJ>`jo Y|El vw64)%).Ķ_ $^N ]=>%Nt?x'~_<=zKV>Oo%d26U9bH ld? t\*ŬQ]8Dd~m/?=K^$ѭ4%q4&'$. ` )#+kxI0Ci.壏LUr>U$q^(3 O%m%sӾsx-hꝾG 4('/R}>J%2mi縋g%݅~uy8 7VxO0jo%bsz7޶5\9)H~ľ34믇)c* dqw7GqZOo'm/g Ŀ/gm(yԱmb|NOP׶aH!CqE?h/i-٘[-,L\wdYj7˓RWǟ g7PsJ3|h#u*0>lazQR$oy8O9-;*lj/_=e[MtI>jwwuESOP2ec1o!W:?SI.G{%m"uFwܡ)?7{W9%eWުUuEy O!Al*P^mOM525Cao5X H[N\ lϰzc~u~4W CxT('88P20#zz[MMKPW n~D8>Tة޻Ax'¾#  l˴\3,L>c(IWBH%9F09?n<9Goc L#f|Ϟ@%.'ivrT z#>_ub#¼#RNyЕJ??ŝ:&[Ƀv̨w"6  g^">#xAe]6wK+?3BV:7e+|JE=(<,87((.~ j:Rm<ؿ~ieb܁qaTso[/7m1aJ%/i~Mw} -me"M,/?:;a _o'ď:&X3 3 4yڇ?5aۙ& qVS{Pkon)M~F]RG#U4#&AO#"YqJÖ DkErahB5_m +WlHı:HѬyqR (#*E >R \o-rY8J⿃6MՖ/fYd9 yź;GPy-]*c`+g ׁ uG5 ǹO$mcPqu2<{c*6y ӚwN%ZͽԢX)9OQSEt}2mF[e "ûaAd8(~_-t ILᅿzX Ty5Fo=8+_0e?iQߡl]|k0_h4 .$:֡m-qv#+Nޕ7/ZH&K±oGl7JDi>!TCrو@gj_ |f΍~-'wH.di8J~UtqIZ_?g}fW޶>rg :uYFbҁ9#\ ko*֡1ּvf@Uqm<bt1kODGi\; Tcn+|+S;M(}c-ɞN1ʲW$W:sTTm-G >x/acu4PqO]HIdAN5*u#35x=sE PcFࡉ$`#^? xSJ2Lݑ$Nݲ>@Aq^/Zhuiu{ 090 1ךpo]v?pwGw+˻HuLh)dF8 =+(ߋoW}?^2h־ð^(eq'AJnG۞+.ĿM eY6s2&Nzq\~yz W3ٌ8@WǮ8` s.c^Mݒ.?V(w־"bxN2EApdD" !T ^U?iWVeմWYG:­epv ;O$ckEȍ|tAbi#ҽh<;x+Q`Ӯnu[MelG"m\9|neUyJ߯] CU<1h0k_!9oİF<0ʮNj|;Mq p~,DR2DwH$ Km~1|]Uޑj]_F1£3TISŚ,i*5ڷY2e@v=@MO35 EnYB-m%)c*5go> ~>9Nzn-kIYr2a|p9ߵu_O7 wvL=l cH< 5u[cGշT+8TOMi37^5ܟ۝X+)},sjgN E;:?60+~sW /W[/Qn%APIt*w~*}N3V}O4מNnn#0ch1y3g8oI89ŬKqRk.X۽z&¼*Ok;3EVš@Kia|w,V=ڍO1m,v1ǯϘ|%A}V?g9Jd|* [&{ic‰P@G P6 hO {RUxͬg0 pWvx#1kIr+yF # yj|я|Lnucjb6#&H﷏Ұ񿌯V4qವ=,#0#1q>'x._[ `_>#IPF/uo)Nޭxyׇmf\{f'æ=+34*an✛8ʱ.Zq-RQgּoɏA #-7Yy=ak#|t A'Asų˷,@ y~.ϸ' ^I]FY|Bt+ڗď2uhZvkib8⅕wdY2G=~7B^9|Kk]SF)mY7ȽONf"s~c+IGxc,oM5Fuc.^}4?jqɟa?DWˑh0Ҿs}*G!ʺ?@_ 3\Q檲cg l[h;m5j]p r`텯/,-6dth}>th-wNTa{t!kcok/AW|twp@h9qV#ބtm{t;W˷iW7gIYYqz~>l-%Xb_\sۥ7`eV_{2j>hz'ukiKWYܣϊaߍ;}oXxCPK(YwthqU;"Wp Id#bÌ8ǡ=_JD>=_`R'iZl;"˕cVJֲºzfU+U;{* *56R׿X ?>?)2)1l׭7/#;͜nOjp?+%+_?=l+Fr,$~ink/wS+yL~ m ׇ&"Ya;]=)z F>f)#}0*je%jQK69ue>7|A7-H7);y$ c,_AklV9s1 u-La(sۑ_ S&*v}v}lj6w^4{5ǍTӤC#ۊwT;{1ӷ־kL4{ 2ٷF+Ӆ6ЯbU~s%I%<*+-m,%ɞ;i$wl3^QK{o}q5V$MXm$fX\#0M$V]{>mG:o>1[md >|7{L0 H*z%E>xϕF8%{~Ϩy+(ɹ{Gi7V@F^sc]2͊]Yl MF:It_o1>O cҗ԰(i_} fSŲgLS'A\1GM S'oW[Zɝ ș9ßGnݩ_>܉Yc?dx6>FhUtF! 37'>7G ɔcB3׊}1?j(tPħJE(׿}Mu L6)N)b\tYg9:*sj3{ncl@9ˁ=֞1jww}+ì|i@J\8vt_7-1|E}5l6]+䏔晝Fg/q`&6kr%N0+ 0A9/m !> ZO'υu|hЬ'PDiV.D%9nU{q+kS2QaO,{8p s_x] ͭBMGmZcqgy9"! Qu3~5x[ᗇk=>[`YUc_!ёapaAdD8碞kt_ iQ$GT_Tg\~'& k0bysHLccOf:~ P7ş[?wL}.+{{(gy@N*mWῈl%PL`x<˸ė{6YtCrʣ_w:O8ǿU6H oĸ\pw+ҥ]-m8ŧ"b8XL}/=ſm1}l081?m=^/?[v1W@ /OJ/ k >1jzuݼA j۰fkǟ !xSR˫闖JDۍ0Wr=>Ci uI8`QTC@}+[wxgÝ>8&[ 4GWt$/c5K J\?lfjɶ#7}[N8}1M Nw ǧ>hpG|q\ ɾNK`l- Jx^=#˟_r? y>+un(Em0sڿ>j?. uI]m4]pIn}:״icLo cd~,w0y|SL1 ӂ"6"*skO(a)iPrKEռ̱UvMՍ?٥i6~4eE@K'&n၏M߁]ZqN pxkEt|AClw{bM.gS9tm0ABޟ$7xM=]`td9 )Qy6V9w_pgy6hoڏ/ſ _{mw7vO 3ΘqD Εf4'+. 8㶻 I\!y "{ث[[##~UۑRx˕ }[Jjߊ?~=ȄHYɐ#:Uُ폃<$sY[s$m% <] ҾjSa7~CzT?>[]Jd]Cz(zW0?0P\ki깾eY+ryy|i;v 78觜vYPyk$,ڞ=?|qrۍ/mBO_Y 4^ۼ)# 6)s9U~]><1Y84=j~_onoiC,y%  d>ј'QCKwH|cHp6q*^[t%ojϨe.-&5Ӆ8o$~5X~3Sȯ̼ej?X\=Y'6ٱ)pޘb?|sxtSiA#;Ap珑1l:Hww*;{_f}۹krFؑۧҤۯ\4+ ㌁?|bAkgT0xe$ *3+gJzF#1ޢYn]᯹C=yy}{/D~Pz[?%|%~>'𞳪x&K-#I]HXgBw}{k![y>A-h'ҾmBZ 4loWnG_ 8 Ͱ0WפOxk5,09ҧo+U_ۧ&Nkbk^,]xo[K "V܇ wOAr?5r +T?{j!?NΡm">JhY69_CX,245a< TvNy|E}vE` A9#'<`g^'Q'=ŹjK sXAYlE\V%HV-OC+n'pY fe063 ڿ#O Km'"L2I%}a[MudS;[nx;?/|{>;-s&$L $m+{_$_+F%F1C6?.>.XBҼ{Wh'+q 4z;3>Τے~_toqs>zH4*pwyy;^@Id=>l=9C=̟gz}M)5 6 Hm]ʹv<O Gm[L`0mH"I v8[88q=_PCjc?-vN;ɗ-on+X@nd)27|q;w| im+â(K\ 'Q Q$ӭc%˳i򡳷w20 1lLbmku2F"HÝ{^KN[LԧǔNiG1_j~VzחV2p- q_7/rKq>x#:#QebcB9oshb1Y_Kj:'ʆwDT*YFq_Z{{M孵YHyLPڤg~ܞ=m*XZ1J؁!PNq\όxIBK$ b󫱸]()O[c󚱫OO3?~FFsqܻ=9i~8|Aϊ<.]X_-+ 5J.K{JVFxg'ijt~Iw#O4X*z+>Z82Nxؿ?xW@%QΣ!2FH:c֭h>#qmoZ,CǧƁұ~->eV|U!… -hu q8FX# 7qs_NT\iKic"/'|z>#]f- xz$mI6$' LVoCs( dMBKI2c-|ӃҾTZRMJht۵A+cw=>_ h~joacOݨ۸?1.xRVSN+\ Ntti+(3Lj|wz%HL,wʬfF; e_mˈ'>w4s͇ L>\ŪN&,o~4ˈ'HF̗yv!A+=éQ𗊾_MF8)y,$xlz:O ?]ɨxZ[#a5˜909틩,tm6m"1VU`sֽN񏍵ͧ[i5vn'K P9pCgSRQc0x'Jz#t|+w"\ڀ'd=Xs+ k:Q[qrF77$+6.k3mupB B'J7;}  ܻA6 Fq_ }:2Sk&o (HdaxAJ| =_Q2$s `V 1XJ:uCMOm*mX@2΄ߨsGO>om]1MNbr#A80ޝⴎNn,W猯qgcYj LX#)9fiO xKhMו2ڄ2A&@$$_jzh6<@vox;g/"8$-z+VRI5n@G2Kv-ڹEhtK:·\{%dƒsqW3k kҝ-,~sC ij#d**|Ǖ.&?V DEˑ]̇r2f10Aq'SR [|ԕxR9, p }pSzG~?u] LK$2RIV 0%_2*ZQIskp,bY9@ݔ#ҹ{~&YQg,mN&eF/mN7Nq^7X?o=gN{蘪3Dlcb>QV9{GivzVs_kƕusssr#E溈nyv8 W/ogTwsGG;< ~L,]8*;{WǶ^"Yw]ƈ-B˻?6鎕m3@6[}A 641I_(ArgaJp|f!b[|+ԧЭ4N=CI˸aXq$]* 9>.3YE)3$qW*$0z *=KRoW?j!Dfc|̝n>@^߈uűu݌^?v`\Ec\#:Rq:x}.o2hd} i?I:?<<䩯_)4 _X.=v˻~3L]ᶍDk h=%ҿ?W?xj95|(dZ㴈exAAs#cj:x-UFЎ} _LwlNj[(!\g_ʼC׼5fE|̒I  + ZooKS\4w6 (@1:O!?|)-\Xrv4r>؉_W'7^.WˊG yCp~\n 7l'@= +ͩs3G]:<ǫx&N=+ؗ⿋$ -4錒IPO~G8{_nwx3}Z%igt[9Qɕ:zY]Rįj76A4}kM?OfeƐsxCs= H?^ڸKLǧHQ.'@&M |ysqZݸBO8ΰ0ʓ>3'jӯ*#~e_.rO7cn1[KÝ _OD,CXz;&6;Z<CQ(RqҼ 4AK)PF5;rks ?k/Dfk_~xV70:E;HFIsڏ#N~:0i~ E@ٹPp8=+t%1-qN}~cW7/cs_bѾ-njcZЖ |6%ec"x]j0ڊ+F`¾m/L:>__l'`fY"f܍\{qW-핣 { g-o!8WRzvU$=s5xa鶻剣 '$xaI^1?׾)|ڑ 1,dG?1bე([q^ ;|pywF̻5+h{xme$c#|0W~'x}<}Eetgtvy  =8B4mi]DP4b^ST+7E-G1_-[[mG]ڳ?B|#OZA4L ޣmrçN:{VجuI+mSYTI$`q kmR;vel&`x﷧#{@M]oD.cc[/G+\=^jq}5+zFqhԮaJ N6qWⷋ6|'΂Vܲi<_ͻIǯLZzig19;\P_^Nco9$C w#9Rו!YM׏,+xŚn[!DU tdgMr~[t*J%/x:g ~ƽ_Y5n3|6RZD_h[]ϧmd7iR4]&#$եY%EZrVhciO?$7_jVH4ܬ)+ӡu 5/"%h@pU1>2Pq_Wl4as,*7E)7* 7|=LmxK{gZٵ47f1\,#WqэFzJkd}Quk[Z"LGdDv|1Ҿ5c^5S˸yqoPa^6D.^\%1wޯ;DE [GUIKiI;QXWiN~=["xƸ.x -Sv.Aʸnܶw|ڞ+0l`(\~Q5o!O|B֗5;Xd٧yE{YHHSִ?i.$~ ڟ}?\7Zlpj]$L!>H?0 ;Wͨ5旻eh]aΣ-uX5] qkijNsHЮNA!Bqxqb,}{yp#~04\FMV9/X㹹xy@>69<||Juxjk7\[k+}K e0Q[χ[}NV-t\Vp czBFÒgcrM D"RX/{D$EkT(QQ>?o5k/⦸u"TY & 7vvF|VyiC)jpkt*@Fq61kCb׭okK lA7 >QDP  ߳߇_x\$An4ϑQA6dpwp ja;=ޚIo~ݏ 4αLR=ZkR>̛&5hrj <4&GY.Mk3x34il }v}ԉRvs1 &@-i+I''}y-lUG<y0pW-էI? 2xY xhh:75K'Jz2WB˻7#XMx~^Zj7vozY[]%[T$~2p:b_TI 3| QGn{ˢi+y ; ]M8.oܾ߸#DXо x?FK횵юW՚v*^if `1۵i]ɦll68E; q9JYf .l5$#fT="/ ]<7fxg'+Mhkˑq$c~|G˶O ( Sw 9$b$jyT*gw_^xE y 0C{Lp$eAWދn5fid4"*Y$aF9}xUCf9ܲ;cJkնvxtyƣ%0^s5gTVm#:IGG9c@gM'Z MF#Yf ,?*s|umivma]F0$@Ax7e]Z/\(s!D<N_ecŅqeqll\䞣ּ T]MJW=n8yNXDmzK#fBŷLdYhψo/K)2#D샑qӭt#^j\i rJ8<Q*zڼ]8i$$ $f;.ݱLzu2i(Ji#ih^X0$wqt;KfJG=3=;÷ qjI2[ ݭFBɹ[wy}+xK˸)\p'NݫODžBШPWnuO\ŔMe-_,H= P.A8CZ.aHYYte`cv~O6 ǖkO7)-Y_+m6Rzc}8x¾ú_Ӭ3mQ{bn9 {kJ_%ƒ 0 mp͓OwƧnͣgp-6p9ǵ,F:婦/V> <+_YsI< s9"!s bُ>-Qu$}֏ IqW_$zޱ$R-;N'oNocgK[xCE0A9:NOA_+&}(9_%, 'Ckٟ*#7(T21J.tkEQ$7܋7ӷ}1mO_ks${ 6@0?tڿCu(o5~Xn9ݶ6ۧǺ[~nE50HG ec g_E;[j,ǚN̰ t^>E?#\֧[k6>rl%/᥻Z~|N|1<xaɅ݀Io(0=:W)|e.|O]@SxNs)\\Km&6WK[*$B#}دѦ9$voOq~[IfT*H GxmSs*r~?½"So%-|Ȗi'!/+tX1XYkl~: žaNחyg"Jt;7mP3T[%ԚPvnF{P7}+٤Ɨ[[E=q]'yagwOoJtK f[U`bEɐ~9HVdK(QHk:fHǐBAڤq^㟏~Ki oyDkF]8v\".Xw%i|Ur㟽Y}xnծ܎^4{2k>5όRZM8S .z;YN|?hx%K*PœNŢ>iwW]*q-t#閾-OK >+;#<'n,=O{@!{Tʹ ܞW9#`ktcʗC,u b\DxuB)Iq+RT3׾;VUߊI- 5=YC03_Dx~R8/QM ceԂXW-i=swXi&G5'A9޺V#<-Ymz't;x%H~BYǂu'׉t z$6 /M8ZUC=\IO#3H[#+ V̺m14hТŶahU1qڿY Keo(üdX亦S^“&;6qcBU{of9΀pB5Z-|Kl6Sv(um`p+r^j\8KM#o# WA\ZowoY$zJ$1W|wnރ~Y~t"imlPd98+r'}+^@N>C Mim&ʨuuF6~mcRB53 p~^[S#YE;E%dGNⱭmKC췳Ī#͌|6xMV]J Y$Cehqieo&%#ye.%9 b99>~F~Hmb]3ªZipB>}N1n5uᯰ0FV|=#-MMAqr!lRq fָ)Sxj}d±:6rB$}3xwpbhA]K-⪬=CjmB}n-'Qw&hޢ2(u8+ܾ\h%cqY#XiY>T~!Wpp gJۃI[yYc©~nxwUյ[{icKb!H5N߼vW|-xQJ_#VL #z5"Q3cҖ2[w,;܏, Ӟw.FɏgutTa r2`rw~j mJJ3.CAp*Dc sg+:?H5~u|*agޏCzKy!0E'NG#?֫~vM3[RK;.Vl,^ |{>_ 4K]b/(}cMF` 6zWG¿Fx,a5hRS;,j"؋̲ (xBxUÖ2%k0Y<3Xݛ}oF"ȭB8Xm[R彏N4P32zp}+_~B+ 8ϗ1FbUUqoyۃTKFl1d bW ~n sTJ?k_N??|;̰?yNTibBO|dήOC"ep8#ۢc_5.uIr Y]UfSY ۼ29]ݏ9jZ"uGǼ\CTnxڄC _.)#Ha [ҧt$k1+]J*lw7] I8 yp}fO =Sr}^H(3L>sI6i?ROjlsi\ssof `d7XVقmw;:cs~%6{xm^>Z9'X!# |T/G-LvrHn#BGf7AR[*VZApbػđIn| Tts>Ϟv\tvKm|ªƸT}>?jM'H|3k}h I-7! v2u'mn \F,YX0j7%ϧ|?5^uHN2.ef 9˳uW[x{UEosue-Y0Ms4|J| ?'~9Ī^ӝt z$~p ep)ߗo2ӯ4˳p@2jx-\˩OjAxޢU$dp8'o<=k]K6}&og%dQ: ,>bIZ߉ϥZ:WE4itox'ҥKMZ\@n66-h9Pˏt(SRוifCg[[Q|oUS? wռIkasM2F| 䍟(~^+~)kź;TO@ز>yB `oZ,km&{Udh>2H^7lV="Ͽ@0>/㪓=UI>^CNx\C׺ӎm,Khh?f=*I&}1C23;!!Wq_*ԼwT׵][ZYeKT%2H+%p6WWhoO.e#ŬU{uAt@DwʙXipcA0|C,>%{߁'(|:[|-xNC!c$CTlBvxJ< 1r\z*JGI[Hف(r@_hşZ=7v\3fwTX]J9=q~ >_!ZA>}RK٘*˔qbabsT2tյv|>\;%7->yLYo&7[KMg 0BSX:|!FxK^OB{[Yn۫9 :aBGZ#rKb;ć&;;qk[/4~3N?wa01ԚOt+Fm+ѓ!Č*FGc<'AfI5ek@Y1UA=WIӝʂz}:Gs[մoE+Y_=2rmQe e -Hᅬdf.H쁀@q^|3-;O^t-C$ΰbI2Z#pqn+xE4uk-؄q_|iZe|1[{[}<^,0 1gR{u)+8M8=G˞A#M,|dYncN (* ^U:z=K,iƛQƒ 瞕8q/RҶOu>>/gk^wI(~C(`\=狴{]|x;[qc[C<*L zӂz`Wi "uYXHmE3u־;sK]$;(#UXȥS")i G:O7Mq\,ʣwbA=8KPҼ=#7 i:uRW63~;@}g xYG$Hg0,dN aEdxW⦩ kew2QM L+25y6Mi۵%R|I&hw(dDϥQߊu/^usun1<* s^Ssu/m⨓:Fި l#dq=5-*yټǓ+(GasөR!]V<"_e̒YX)WW9#g{p+Oڶ-޷I<?o=5|Kyrkvrp}ۗ`G;#Ad m,NY=k#5-Fk-Ν<̌@c v01Wxk[[JDU!ҾŹ/ݟAԼaNOҸ-{]2PO _yx~]3\Viάz|SNԮ|I-ͫms yڿ]5=WO5{-2uo CuO>]$<$|O>5>ѥ]ZgexП+Yrw6td"Jkm=$ Qmƒv H 3ggHḓdgqVrK ryݏ?--?!ll=?*jX۷_n]O3߻3eM 7kN>+}{>vm#j8pV>~m; }xV}޳ wV|"4QmO.?8qК? ޫsy_Ky](^ʮQqz֓Xo ;G VjO="!ۓ} JI5A:,/+˩AzN)T6/+3w\;Q>Zp^_$N>#p}5ռ)ayN}Ny5\Je3OJaxyE*>a@q88g*N)x<^.cY%2wHx^2=>,'LI}vT}GX$$hUd` 9+g|axjmFk&3&6{=\O&8y&|K\k<9Q8W[xP613cq^G_7/5[{1.Hvfum?f_Я' 1Mэ̔_Cdm.0 ͼ/8_яSQ$Ht&FVyd# QMy m1X-ێ>|aχ:7ZU[jzzIn [ZxHkZX~U 1NAʗJH};9mud҉}8+c-~X#Dڞ8 OXc?mYʩ!PH.’Ҵ2Hg1hSBl<ow1&w66֊mch[l.lYO;O^ijRMi;6QaMlŁC z/Y΍躵M,ڸxw&+c9x@.e|( ODQyd!O9kI|ZQ,QYmeܻ.\ 9ExLjco2XݔI \9d%^[o`C%[e -H!'LB' zq:|mZ{k7:^s1uKɬcK2cCc=:Wտc|W^yupL8፾EST#$kO|__ǧI @Pߎ6N_L~^wg!YcU\6yNhEL ܫ/cOeB)YV^xҿ4lxI܉ c+,ҟ/w9L/(6둌۩מ1dTY#::7S_~ߚ~vkn4PM xm;xlWy]vzgݿO +_ Obj۲I g}TM,1LҾZ-UY]SV- [AǠp+G{`jsJpJ"PӡQ/g)O[Iw$^v8 #vp7`>ǟ(σ|/i .ԒęEï+B#V.[`*JBju Es_S6$0ŀ\`4?irj–ow6/82Sqin6g|*<)򥥢E<#KZ~gg?nmhޡ=lȓ<ܸ I4lHXA12mmŸzwȖZ͸61*)V[չֱM?\>yW·7BQҢGspR8~/;9cҸlڍyF==j<9T8y-E,V}=ygaiA˝B0] eΟ^]HnFncjȯFƱ{LN38]u~ҪkZ{k};EM|s>.y`=+٧*gB3+w j6eh3vđɲXKo;+~? &]^[S#C#5oA_,bp@#+jxnbVF PΥ)V,e{+CkW6Mr01c!1@gzq|dWVP//~0׾43TIR9TʣoA^,e ),ۈ͖Pr`Y=<'o<~.v',+F0'p8.8Bf]~/[pj ֣k.`{bPHylcצld3hΖ6M&Ԗ5⒊=?_+=2=o²Z9mBS̓(:UqE|m_ޛIZO,FS2}%$*/L㓞Gyu=CuhR[ @LW_7sm;auOe[d\E$lV4;YV_AOfV*Pʚ\+ɯ xzu\5_\hg6҆C4E8o*rr|ſ.um&{Hm4«ˆJsC u?t? HdI䘣9p1򏎼D%QԵk(Sd 7yh.eDؑ4@913RvvnrbpTFA&VURIJ*l\(P >7|hĚ\:m+FTwH7)*v Yگ\Դ=JЬʹ9R9zu7ndo6ݷF6/CJռ\f{#ڋr6rWgg;8῁|<=AuMA-XCvj Vn-LI TpKgC ӵ%_ C_A&q'ZkYfBtghp6N0+|]%t K0l>!].++y[M:Zc%i5i_gXGauom#ݲG(]L`/ڎ &]}2ZMo#SYp\cE3^⼂/`I|ba/2$Q{~$qqCl-yqKM{#"J[}txCx1^XYgj"*7PYP}02O?w&EY_9Svٌa*FqƯqKEyi"ID^ !|W;o'$4:e٘+qy#VFnV0WV$MVO_g,|<p[ꚊunNnA B?.<7VxFPVkx$f,$D"2`Oia6> 4}&[6u<Ǖ" vټzpx9?e hPxKkw2^I'288-5`|Cp1Q[~nk.N*.4C> ߛF=&>iݏ,#oC'5i-v>6HUW S;{}{aO%їz Le$ڱ+Pt}9axZ|ˀB^RP>_-`)f!)Mkꭷ_9p9hc;?7 eF$۳<5T3˿un&v3:(̉#)lrk/|+YxI{[i#ivv#a),3^c$־!j5rM;ȚdFs E* /׹(jծGS(F,GJ|O׵J=:쥚fpi^_,&F[|c6o[̿ ~60/JWsRoJ!gm}Ybi,HdP,چ8޽GPuTkk N %Ӥx7!di!ڱG{׬xk vZ4We$%z+岒(-֕a=5l2|9qΖ}Bv%[V/4qG JT-n=yS̈1g8^7k {!{G(y ٍɴn.E}oci,~)hJtrm^zp>j.lu+sKio-jeI|/+ԟ`V> :\pCy,ywi\P~ATpA鏙|BMbO솟,D;(cXS#bTSO 9浟ʍ* 1n :dvy] [9)[Zq }[sD )0 R^柁ی·+l73Z𞅪JM3UY-5(o_ڝ唦wG-3mFv%6t5x/.ovZkyE:T?#*b@$_cLa:m/Gn_:)b*)M'=@FqoK&I>>ЃnH#A +§|Cm;pDM s?2嘨.ltcIҬM{pE+Yv|+32W?~z=ο=Z&tDgGW0V%3YQsDž|Q_ C UŽw1\3夬So^nZjeyK5ڐr:&>"~о+I?/o*»$*$L)F05 2hΫk,j>aƪCǰO"ԴJZΰ-/ u $Ei! DPH+\K/L5#M`{ ᅹq#tNIڟ7>`80Jr5kZIi.e>;ߗ>{Qɣ!,%v‘:u~Ғ\YI.kGg3.2cGlßGt GbD\$0#4`Y|X*C<7 zl v`zL+llbv0Agjxxiz-? JI?ڛĖY˦-{ZZD׊3th%Q99=>>#եMBzu\8O//n( gᦗa%edI%9fħbm@'+U4geԵ[G =)/MF8S#ZosQƽ6_סC##8k+G\;m:i#yHaLPە86\Q1^+ľ`gX-OA'^~Ț/_"׿h==u-6(%l!DoI:Yb?ܟ7n{DRuN_=q}x7v9,dWO88K+z#C_x_ 4ce,R߉)Sp&QY/q[e& ˲Sm&8_ЕEYA1m"j7L.@$tj_/ |Cs:~W{fs&7$Gs&6xy*q_QG&9uycqڷvetDzbP**_ @<{볡X'kI4 KI/w^ {jdɖ%81Hb"A/cvW¯jc?c z4^H,d8FDq~ ~p !ONDW,T(&v Ɔ1EE]^&7۞uGGl/  'L,SF)1!*S>[e-b~ߪN}{gj$X%+ޟkZ\[7-^2SUSYZrЦ82݋|%17 \$^WKe<BWV%#xú$Zc UIHOC 3T٭ 9Lv!д{c3 @ǿzsO٧óxfg]oFyb/( R1 a_nBhz֑Cg' jO1 `|M~(^> Sm%mWO/.XTc[9~խVQPKs—;PȨF>UW 7_?℺Ɖ[n֐!@rwg\VRx%+g5Kdz^m_&i>=Đƣ޹澯.cN5)ӎapjJ/#|Kx_<5I<3)d#$ [;AO<~$:B}2[9e_*S󼄖R~VWL/B++}"UdKnTf 1$k]{^K %tܟ`g-0Th;7o=WCݖ;gⶉ6/i::1f؞eDTp0ȯ|N|_icouXQ:[J*;J1@@ _xxO~aa{gDt3 Aۏ\W 3 >/q\]u+  3Ȼ8ҷ g._+_g*Ejq?[ iex=[̦($Kǜ}훆ajMw6݅J 51y}ׁ?Ycٿ?ϡB7дiwy z^Lk9$e GVlw~^ 񴚾(){,jII'ﭢqwČ_)(h`##0ayZ[j4ξS[ Go2fE;M~Z0?ti ЈMOP??Zz͸eV~P] Gly`W?>eK#៎fI.4?ܽ9{W|`?ojڅ݌QJ.aH8F־C}^K{;!qHVeZDwo8fdA{*9}HNbG߃~ [r.2FH%b#[#9_@E{-coǡx{f[x̒D 7U\P?+O^4 _R5zG3;{Fb\&R㲿?ar]KNszts^J~ϖ릛uk㷁_ a6VVЉ9S˞'ğ~ѿƚ%Ϊka"$v2sq֔dѤξtOÚt-Iq ]"8˒;k菆Ï|pP]:-VEdPbur7.2ke:Pu.WM: :xs8z|*>|)'Eqj"n#-X/l&̧}^]UjGe} >]:uSt,3)~>פ}6\M~~.OيnD.LGkF;u_A' ֬.g![d awX䌀?pm4c i,W{Ie&ČI)9J_\mcl5#"d >bUqp"=V]qO!> ws6Z{WB9Wx_ZhTny)WnHo'9*wp1\mgUOx &{ɾӘ62言1z4:晨ͪ݋yYlj,r"t p2ka*RIiclK=O{5KK5l 3hduoO[MK ~}+]ym2@O*3kK^)UI/3hb=¨I=*٬=?캗ǷW8,.0EBiػ#XxNQ[<6>SoVoePkeXU%;X`c5f |Omuv;V`TE&1Qt {W~ؑ_ hZdshZ%_lKJ,k1C~_;msZ]e̐7L@yHϖB!0z_f_06e{.ጿ~G»8(/ċ-0eðŠ>u«HSKy!LUGO79>VlmJan\XgO,ƭ3(ԚB_ėVZ˦ז8-Z", ݉;v`WRѡʡ9}ǺOxw_ 4o\$ۗiDڃp=5|nG#a:{lcVbrs_v|Kw[lVojQrd&=Sk)lFQo_D#դ:r*X+ 9T` n |?18+h%o+SMTn֊,xF]f uq&aI,j:pg ]b$X+ lf @u<8tR}j%[J[Ub1Bş<_x:>!KvˏD*ȰnBlc Uubz蜯e}o#*~N2?h1,|o>hx$_r>/ Lׯ$}DA(屍ʨMvG~a/Wm !mWF]țTww~ m煼KhdO[Ex9OrT'scֽ\o~ʔ]m[Lvr|PX9evζIlA2};83__;xL?St2܆&)ZQI6|8,#56x8]9ҕᶳDwߙqO~?<ek[`>涶 p'uB-5nqYa5 Xi秉NZW3![Yi!E} ȬXO[R{Xlg&.47Dnivطf0y07n=G'>u{Xaԭ립;>FL x7vDZ᫕!dH t;J||<=Ğ2wi;Q~4mg(G2= vfb-*zfm E&h@c9Wҟ-"^l%GS#"Xo]>dί΢HWFאIڴ*JCëN-/1^*7|ӧj{ĭ;T4cß-V00 nv ]sPPӮqy#Nc"H$qPE4Ee՝ZAI/_C6!F1.)YXv(K RdYSyJF^I-Rėj`ˮ.nM;»:WZ8~ڞuh}CX/Zu"Hg]FWPd>E0+Х(a8Is6*Ս*'5&dN(Vڬل!kCC'"K-;̼ؠ ޽r:{bdTϦ=딲[v;Tdm\2R6:zVJd։݈=A9^+u?xoW!u=6:n$rj. $T|[F**ьN&(شx?id V'L]|R4uN ׯo,q bτ809ٛ ˤ6+suq$m@[[$-[G I8Wu'oS[5xj-&λF_~?[Dxs;tAv~/>|8U~!xF-o0oou/lLFyAHTA +?[ƚE^AonOʻ́3Qe eugO| ;ao :>x-7M/mn'o)rWk@\<o7!Nhp p;8SSa,iu&IB/ *ɷd^X>apy]EdqM^y-_ Bךo*ZA 櫕9I jKڿ@w6VJniW͞Kr7*c85?MOၡ`u%1d{wE2N?~xO> bCƹi[Ӭ -ǟ)vIGAg{w!N:=k޴- nڐC9,<^ޟA_SN$/FǬkŌ=BC?9ק|aNwiİo1ۯ cӯJ$y,|Knxu#2͔2?* ҍQiLeyegyw j(rmϵx#R+Kl?h jZmť$ "|r0ۑ:)5K3TXhr1rѼlo\v}k=e⹮u q"'R ~Pko=Z; /_fܺ ;Y\N3M>RVOSī*ѣ},_xoO=+ܻ6]@6m%Fr1t/,[d$ &@f q vVֳ."Xi ulaw8an>PW_^:[KNyrHB<1_cG-e_L[=ѡ6~6Kj(*—*dBjn#Ewzgī}G)Zol0@WeH j%PQK鎕xsފ0S[5&ᗟ!dxӥxϊne5w2<iZINmcNA,ie P>r3;fM$sޣ2`nZ 3+IFY $X7b_~Nj( $~]lz1:UHRO`{ǤfXhaS7+@ n>Sk;9/b0g%<ۜ !o Vhr`v|GQ־ԧW[h1Ǹs`}$yN(jW%O@WLWQmicF H9Ƿ%4 ga'ruڡEYkF@98WK>⬙|[ AߠuEطev ZVeq ?.Ï޵T,H dçrsӬ~"O1+G\B>!\\(B8*rn,mNggw*4emʸ%ڽWı2AFF8vw(HN8f"rp>WAysиd.A':g5T̹zXsxF#i MNx~uL 1 Hc GAmOґA4n(^q^}L˙KR{y0*XaU7N,e\e>_l= t c529 ,WwNp=q]=/#a0y 'ŊԱiҏ޷׎3Xw^]"!mKBssǡp?U"DcK*:vNaLlx2s?*Vg׍t:Rl!3cҹ[⎧-DmDvޝ&%ԬЃ0 av qߥeJS6pjzc$`19ۜGzzcf٩ǚ{~ݪ8>){nB*m8(q]v9^A千x`~dҽbb2< Εo׈FG1e6r0 cs|A/ԑ~7qv}W|zk+ 1X}x?Jg1C{-&RnDchBQrnl}1;ip [>YƌZ>'^سyHT:~J_z"Q A5>d2D}}?j[h0Ą8) dO4PΪAgG9 =Z?k6;CbF1zzQ|BԥЮHZ;}Hu-X, #Ձ}mrPhۀ{Ҿ*zq}=Z|KW9V%NJ;=d"ScTB#;IJ~ٙaei N?O¾p \k F jcSפbΧ)E;~Tʾ o.uV/J4e(/g_j:A#0z[ֿ .mT̹Nl:v #>Ey9gFUm"DH#Qu0;"Ď1F_,G@QStW bCg+I$|O4'#.H8?LvFx?ʫ~^gZpiZ6]ܰ"gopu<`~yxfźau(b ʡ+F=+n%qXl joIrBC5EEu(tyJ\݇2n1}?.q^|.+>?.Q)rGk Efr)EmsynBI>RFO|ݯY<0eH!BsӰxU>+2/ZҨ3$?LsqsO IhfW[S<~A t;WI<3A&6AQ WwB<.8QONZsQ Di$$xu֟tZ¡N_ckKI11UF[`~ f5 jZV6sRa7Ś]+&c'+,bp}<<얉_Fl㷶K)c,³$H :vwk%焵]P Uo&UfP ~d;:o9x"9kQ5cΜ䴱(o"5-ϸ<7^Y/ +@~dO囨*82u G}͝ջ$xBT־4~v䲹6ٵR8 'fbֵUfdwɓ2=:lgK&2w _^qFx_7"5dRt^:'xwCB (/.9I5s.Id|cY[?yAeQpqU#f Ԁxk<}7M;Lt]n]ݏ>.oBoc6`c$y4&D#;WI?qһof 7,# jy>̑MOkWlRGE;Uf !vX*'Qiw6Q\h!eHKg =:^1b2:sWEsem3;D}2ރڰ쵙.0 zZ`q{p>$n[ʒ噤 ̠c{=>Sq1nyO Ж`:dq;UIcwylcZ¼zXr^~&SB1dF[+ Ӧxj +@t_,[ jve {#UKhIK](?J",a!zWÏx5{KR!YW~Jy@#n@8OjĮ6#dCǶc $\=k\0S/ )*3IlҽFN,duIIy%`X^wsO`wt?.3x79V/ᶁ&IYp_fMWTy!7mFr|phω1C5奫y ;,ay,>l1q֥֦Z|G!xsG =Rkhaܠq^g+- 5ۣK^>-t.jv?hSH[IOw+z~l iʖ$e>ZK Zӌ1Ǣ"+_~:P$0Zؒ nrB#qYU*)эsǛoχK]oo v #ETxUp+*]4L7NFaI z L[OW{׿Apw4y x#s_SZR ;Lw,0tp A{b_Z_v/mqBb$37ϴgh<¬궗H#T\ 9g5c6auݼ~0~ZZ _'|R_j*_ h1u;kp:u\~ÿռ5ZTgC /Ҽ^aF+i7Fï'Ƨi?&Oo䋵A`ȸ,>TRyW_=L׶H= }+Lh`bDѱcH0#@\^s.*ld`+~2㺘,cl[%hz3oG%L&m3Dž-bKe.O$ *{V {eh`m`cnWTӦG_+qD7V`QUHt7BNO+e7xq5Xi|.mom!ҠIXӭt'$kcFH#m֣zax08?|kzq+G}bCX9 Oү6>5}WP#J`w$\8N(TvYd?hi&~8~ѿ>!|>XIb"[,)U]zl`zW6gGhŧRKvxHFb X}ӓyW{[Fyx[UR46}w>&' <'k3`28$<_<x{T5|6: m$|~ᏈK'xVLrMŎ'!Y.r͹jKSdߺJm F62GtiHIe\`WǨ^|!\VL֚ͳ*ԃ)#fWd9́x5EӾYoL䳬lQ!hcY1🋴;V>[Fx"4io|18[w GD/$QK"7%+M b75KH^']BLb,DꪨzV?]fЎ;M#o#O։w; ZhFG8܀8OMOxWS|Bд2uE) ,_H~c8=[^ԭta+HIe>}=+?-x`֯%s4Ōv۬>OݮaGjX\ԕȸF9߉׬tO L]WW{(l*\ׂxV5=E@WG?y]Dt Ls¨@ï#/ /O1.,@tyF$`3Gr0+cZt$]Uml|k]tMvgޘ#n>ULd~V9P{vnwpEE>%iZ)U<,c|tBp^[ƝoR*ݦٶOJG+b0Y*ݯwCݨܣCcOs|ƓXHA_B[8V߀!Zl\ކ*DFrn'9Ȭ؃Kէ1M[WnoUjI]CBu"iYeHm/>KT !p8_exzQmd^ڟGpTm?<-8HfYPVPl^U|WĚݨiZ+?ޟHX6I+n*9Qc!To>tHw±vF'1_;YV"OF7V迮ffƿ5ܔd+[m_sxQ_x {x<>8㋀st93p:q{=-z"|6:/p#mݹ@}ܞ+| mEۃp[v q^]uk? W"o&oEՎfX9 ;WQ 4(v(k,ͽɻr72?[O5Zku**?݅(s^~Q"RU`9e s^& _F[X$V rqh[1`YH^qG}W\I=Ӽgl lJܑKE@ߊ> Eu=ne%Ot?c]m]Qgm"-wK i6CUAǷ|%h*d,[XgZeiqi(xA(@b!nWϲw3K1$ ",:rfl5kF:ʫ+Ӝ=N? -6*/cۚ'HҼQ<$\4R vF`78y+u |N KCOhVb= &3vqi .c+3Ύ4*Ww>.M+!+꧖#k~(F/Sqeo\\ķ ܦNLm@<_cx#D/ϪΫNʅ؈>cW'j%:\,<AhDhemE>rG^SS4) ѡ$J6NՒV׺9꾕p:yentuB$)7mՉBn1GC?ƞ"NikE#$xG,ep 8]+NQv;(qw> \~Ǟ9le\F~H]Uwb>51.5PK-ʸۥ&~ƚV?v=gDѪ[Ȅ^ȸ~2zk~XB!_%Ӹ3'l@r/Eۙ~7>CH灜u9 +?|+ +"(%IxKBL,(KfǍ4NK\TjI}#"FrU$0^fr:K.p9Y z qG<2<ˏ"ԩU[4A5Ȓ9O":BKuisv#݅ȶ7  W|an~ǩG6 yc>^WdV6xW S?4WJR:uݓť)*nCͿt$VGt77F(Bhdԙew/lG[U۠<:cf*-C<6|:ռ7u%8ӷ5F|ݽ|]9.ãcͪ_xiFϧţ^bшOLd# >ú="G,|\6׌qy*i)WǞ.5kmk!wov%KBOr-JLLQ 0+NQk{Ǻ仂tYkg-C4(Ĭ7aOO6߳'࿃e bkƛQdp-3Ząrn^cࢌmV gO [xK0c|ƨrgh.+|MxvD۾mmH߽gGMx t5k5=i*Iw#g#_u|5բR{c1oy'gy$~!5jv)76XFxmg[W1r1^Qx2G&_\],W]i3,g#=mI@[ϭKpFG"T(-;r+IԼug&lt]C^Ӯ n+yF[Gxadw^&ּYBX50T #x @)V'u ػI4Fy34^c!ܜ[sJN[٨5|[վ:[h rXS 9a>! x7NɅ;eEU\NÖ7:°GLcqmngA;^gtPu\\df~PH@ P5:֓f#{׷?1xJ¾ eR,Pё,ZK ğ$LH߶#=s⏂t'AXh1-I`bܺZMso~? ] ܑ{I@寖%mPqyUm- FIưC #[6֔k8SV=gh>㎙mG[xbI|ȦOݬǗfcW V~#x21̿(s _/ []]kw p^i!$UPÌBFM:6Gs w:Z=i+%-qQVG&"IiMԺvw[k:e#J|cym'hrCa)g_-+Cm[OH-[+xA v_zyT~IkO1Z tI e~Dp9PqnӢ?N􋨧lm;N@#NZcӵ~To|:uuHc+x*Hd?u2VIAʮ:~|so#7j4V0֩hO0o01; [ӭ9?ԗĺO466&j>Uhک;Pm8pz>}[Pjw}og,A0>zJs"^ źF_}W61մǿ P h؁Pc$cF1_:|gIo5'xf U>jClm ~ Н a{j]д$P!i %yHW$tz\WS'ī}"k%us ;t}N Ô F1SoL{]zPmdg9pe,WPjuᅓV,W GΪ>֑X o|iE_^x^& f! m>̙uc Xjbʮ}jtV'麍π'X6G"#H9quYYG+n^ {XKm2%GQ06Eq^wk1n8CۘFЕQN9yǟ7kQKVh@s5#XdUɮ\-jTd%^#.c5\ѮP$QF|0ʡJޫsz+6LUU+޹FicZ].dXKC! =:`C %LJ4ڋBy-)`c+ zW\'X}bO{8c|"|efG?o,[?;0GzybLZ>paEKc= ?$hWk8 F62FG9㎵A]v{{"ڤB+lo bd8I_}mic7?0ปZf[v @1\{O جY\2 $o2s zq_rӧY>ihm;`}zc}9dIm>cԁ"oJ}KG H&k~#MWSxdAC;ʼIEE =u/kưX,-az垭h$YFe~=@5ŏ _ݛsV(i vx89WPSF62qxNh2U,_h]o\_}ok€d+4KMsbi;a`]DlKe>DH 8׵`myn mx Tt^Q[b倫rF Tx_Wg/>vIrvy1ClP?,W'ž!V?(mc4'rv.ʨ2œNF+xg^ o{H2˓r01cF;q֍l6O:W:x.ד=U 1qێ~#ctYVC t{zU{i E*|#󯧦ռ9v31188N3[V5*-̥d|is#n8p 8ⵆ\fh]O^٬,|%e-2P^N!slqʅm'jcbd`yzw_Y))=#/Jպ0‘J Ȭ p84[Hʓ8u?ʷ7hUHG: Wgoq9#~^-L8 G秽;N|_F>_(@ݣHn4>HGx^$~#O\D;|Į8= nMqw.]hEv(R |8+xištZ-@yb3s71?vW$*nIz_WcUT `NQBצҨrHcݑ-dFRu1v=G??i?[{ .(%ܱG$V7#stV"'KQvH#NI tO ZHDn풸,`rz{W_6RRo/Tk(,rJ=+e tlu>Iv\ƮVW,쫝 W_`qSF4=եa-YѮ}1\<~&ݷAnܞc^IwI[hͩr˳·LX(,Gb:T~4wP4Q|Ψ9a}Rt$ s_aKḤR`uv?ߕ~A#G]t<7gts3$Jj_¿%ey;Z(d108+2oKn3nqp?²&tUn!ܤ ?{W/A?m ~}ifRi"|a8@ حo_쩫h66:ޛ0mn#˒I߸)yx sJxW[.I| Mt_xccCJCok^'IK8ʤBz@KLEO %f6ҳ-5yo\x%Wu]%~_o @\1ˌ]h֫_ڗ|My&lͤG748 g6#@pmxc唩NQM4[M=,}k0괥Z[mll+k?^ӡ?<ǣ:[ƸHPӖ?/c6d}E*d|G+|[յ#d쥖7tPO@@b1Xl0U\_7"iۭ#RQ~(okMj3ĒJd2 ]tWFw|Cm i\}ڠz`q}M7_2Cx/2%󷌠S>8?/I4iZޟ]y֯!R\Lmº. .?~θ/Vcs_Yhj}ve0gVw_?G_;zĸЪO >՛{QN_[໽zڬ`G_d m=:<|ۇhhănk?ه'>_xB_޲\xʊلN@Ku+")Hx|Dž9}Tbs*+%oz[ȮRqZ.N=GѼiQ-y1]-3azUNW9>>// Oˌq}zW~5ᎭiMѴ;=ѺS _z=:Ww}-dvH24~<;0qPrj*K[Ee³VVGɬ(]8NMN\l&uUjɾl׻ͫ{T㧜}?|*|}MIGwWp[JP>BD5۹񧋤Vېd#1\'oCF:_ůw:O5;7W pLMpֽw: mnVI-ƪe}U`P |K? l ge$ {i6J+eb p/#m+GrSэICK?@\ʪeV}f}A>]gTEsϤks,߿I!aJ;1OXQҧ^:t^Yſc}QR1D[W>coO~o%L*R>o=✭FFw|S\|t浵[ku!qjI } i F i669 Oc9̣H.>,[[ Kuu$nvU|c ?d'sNl#ͮftc@pxVga8Gٮn^H.b1Sv䏡>UW,;] .a-/4' qһx1ӯتo8)5wįM|u?^!tEqYdN`q^mI~cs'&ZOy׍Jÿ:/L5u™ְl>2WKJOMױ.%x19Qqɿ}Y 5;݀P 9?/-ԡ )DXpFxt=+c&I]&_FzG_??F~l}{)ᶄtC'h,k.?fok q1$4N# )8?h)U])9 Q[ q,[w*o\?i/mGe#kI*ysڼ{6UOnm>0/YUWN#xk嶷8 K JQWkl~Z:B<VU5fNjִi/f^0Ҷ0o¨8q>-OɂϦڒT`Q<_4uZARJ_4%QnTG_ fa99\𣊷?ɜ-~ú ]X<ZGhd0?$( zW'|E;%?|I)>274d!wG ۈssaZeI训5c+cg/lrsgI-9EyǞ|s乳'+=u_>;|&xwVӲ|-GN+w4m_Gq 🎭U$O2#$GEsh/(x,X+<\2|i|]WI-y_-Zi>[栒ZֻᏇ|/ v%L W|-{T1xO<; qO~[+~uNHqmiHچUzǽ5nxt{rb#ҿx`a[|aW{W>jLJk4Wqݧ?J7 =_߲Go~!ֵxCM4ӭ[Xi޳HSyz~oǜ3G5 8E+Y-8N:N ?@6a-JUo[xX lȧ!I1_h>~5 Fa\EQX1lb=hgǏC.fҤ?&~< # dYIŮH$,IPy^IKӹɜkuC}Q8>%~k/T׊>S- qnثOx[K}& ]Ow=1ֹ]][\㝬#׭d|e% L]K=_|.%h-rV0@E}FXLMY_;Hlu^+Ν׋>&,Z|6Wwd4axD<98PZ%fa͈]}vo'hʶq tEf!$ |BB6}q|`x ~*!fndXk\~.8j1;߃,_ 4e$ӝ#s^s7nPdp* W{OE_m|mƏkǧ~^zUGgg|3vImpb ^DJp|0y&VoO֧NQh~ߋfOCUp1~-i_}񞅩fhl9bρ7wV04a?ao•>^~YǕpP{*g]>>%W J?V5Gy[?4yѸGn݈~&|mW?KVE|7;B61A}[ҭ)ַQ,8Q*}_Q<1mɉgM($큖pqQXw|q ~^?Ϭ!Ӯ`xW˻Wy1F=3;W[|_IEu*q>+[9Y bLckˀ*ҫЄe}y^<v|]i]ıi73H+`Ydٸ"Jw ^jk{};M<~cGk;Ś~ MrjV\A2źb_O(E؎hw>^@ީeKqp}orź;lCc*0 _g6CJɻ|F+KYa? OuWտ|_z.wǸZ$YЫ%M[Kmssm%&̠"1~#5|iK Ip`yŬ:\F5.@v0=N,]!$aetױ^3.U$| Hyk&2%Rv n\Ñ W:JW|ib0ܮ_'|/|i}x-/Wbx1?ܲ(񳜟1}cc?[۽хoDQ`6-%?.<ɟE@< +g4O19kFWJK,,v$]j?ޙGRn\ΙLm.LۘL_sU6Pe||,V՜S^~vGSj+^P<@|~cP𶵭L+k2tB\)1 29ª>0]~ݾ2xzk{{[Si)U\]ZH\eۍ5w_~" ivw77i2)2SǝdN.?+ωu&KUʸr tO!`6<>6>~l2UF~~̞,Z&Mݏ)-A{vϖydWi?~n~_Oū~{N{m"pOrXU) l " xC^麦+\kk#,9B m|=]>,5Z#YVxP0e.?L0[Sg EAie[%mKzNxE=P鱬{PREb9B;bUp$'sB#[?% WI e|I,Śg7ڠo.mS4-J>0885}~e+|~q(+ة4E+6[D1X@ῇaW2+ռ/>Zڌha"]0sx8|@5.vbM.9XlW9Usn6.9C]rje$3Ogzm%d8#P6r>^fw(ѭ_ևd| _MUm$?A}jG,%] 3;WG<3M[2(3 ࣟ~ǡ sCH+̜=[ dJ 70ڗA-ŸtM$6!xeeVnrbZ%fߐX~b^״;H&yta¬ ^`˜Tn7?Qz{mFKq|Cm;fRxL|1ZƗm3_}P[s*c\\&7ϗ&x y}ֱ]7^7:"@ah#T]p>^[N]i#ȡQY#j_Pn5Z\ᤍ!=,Qlq}9Z-Ɇ$6$M Etm^v Rc `3LCOm?F? RmXm!U  9#<`mg~$XhSW0@"1aF1mV.x<{[E\O˿<MGg Vґ\zc9湧^ݥ׉)oMdbD9=}o]|ECt{QjIrU gTƣOx?f_ڟMľ,3Q4_?(o s#aa9iG]|O(}ؘ|ҌcgA_­: ?YEc?o^e$rt#sKLyWEo2DIe1Q!}9tL9?a;ٮ|Q s2:}܀:a c#_ÞҟOh'QZ}>U<-ųEK u83X֥*IYt2{Dgq-+vzWsyO(x7`^c?G6V#a+ӵσ2i m^3RR>3_4iʹyW=9]Bh q>،FbeT 1[b>IY*sgP׋.˳?>׷'tLV.s7?$dGEO\WxM6CyـU¢n=>jVwj|$wo@qyi>갪J3<)wXӲw.K/j6o#JcLQ m]Vm``;G\ᯏI||t|Qx}_XjNwG}͎G' 梶]Jy[cC;kXb TMJK$hg[ gQ֬/7t;XiXxo-^[K3{t?T#Gs)47zfjZ,=ZLQA]WO8̺-e:LJ1$R~JA6>JȪKWx^~WV/JHDDXX[G\BE1nw|F>:tmG{YjnKOeq\\]+1r¬ ,rugƳ?a>1"|cUx?/a@bx([,6‚,~\ߴ&Ԓ6twpgi9gi/u/ uOhM!gv#͞{4cq|i>&XŨ}.Eԃh"0@ɮZ^;q|à]EcIKkDM.e.y0 dk_O^ΊlZTOm3}Kc*3*lp+o~^*ko 1<Y_;LѰ~^2Hp=۟'^ZxQ/5XnQ/^˶|D( q25m-YϕӖ>q춿|ik>gULEU=wGg:65ΛJ6n_t$ݑ46^!Vj57+IE*> м?oy iҋTJ9HY1/!l6[8wKz4?Z\i,ciO;olsZմl4 9 Ue1@ϸR~+xǺBW: lB>eVK!]5^m>4");mg*69tdzx{ţY- L<~\24c|瓃&SHdeVg0fEY6V9#^9]j~ o|™5\IbZUM 0O+A]&>Wlt =GRcy \%:ЂN9^^үbxCćpEq:'M dpG5.ᝤ:4JK1|_(x.Ǐ|7 IԘ\$C0eViKrX%D5]'He'%Pju wRs.?"co {ui}Ojz\LcQK"|esС{IdpƻռPOVU2[k?c,13ȍ n\s RCLM.gLoi||-ei"H$ (7 ''koXi6LyВ&Rs_``wBi[$GH7VHC aIkϚ3K$˼-ų(C_WYƞm{VV/)|ouO=ַ"imFTʬ^<0#и՟?_sy) eqGnK6_No$1g~}QhO:Ơ?p2X(޸+ɳL&7F [CxUk0쥹ZeBvB8UstZ|GWoOM&t"m _C^E2xY4V-ӍoSj-CMKy+̫7/H#G?f|&wEk/em$)QQz-^!hpbs0kᏁ갈cߖ+_:U;UR?1p>WySujZ7~wW:(+[WnZ!G)xSڴ0\d[Lne6) >xn|yNN;}7!;hmQ6rq_7~!nmo>G@HJǵrwv ?5K3:{}+N/<ϕWӴ/m$vx4~y+b6%W6:*HYq0 pG8W/mOy ]G=8W_iZhƙ3-,)~ޜJFGW Zp쵹 c<uR:v$xvMDP2߻*0q@>է渓͆?'= u1>W3.PQ̮eex=Uɯ6>6˨'#>g> ֏hyV1Ď ٿpAZtŷ7KorYyaㅸ 6'lR{ZU~V=JQj<Dz5΃,wZlB)>2wV~Uƾ8E/z\\[M}|qp4,Eko[]㷄e &/|5:v>#mFfr 1a sHi|_<.5PʳQRt}g 2P(˧m{z_'8*CImBYy H08!"Sk !58wF(ۼo)O0Arz s=}O8,ԦD-YMU7}G|]߄ eh`mʻ\/v[m\Fΰp7_xm "U1y~J>6ox=Lqߧ]<+%HoOqﷵ[}Z)L2:@뎝+~1~ؿ&z曤HhZ{ˑ1pP]2\F7.{?Tz7t95v߻or-p޼=j3^a%vv ;Jo-|696:Wp+ovt];ÚZXGBId$ofq#.ʌq'_(=þ"P<50IҤCt# KkҮ|VVq^~V:IG_> j|G6 WRNX$sx' j xY_Z{ȗl||ƆXMȭ $q_^ | g*%xM^>O x$HgRL?ymX8ĩ*M첛{O'jr_QXT&~сmQtnWoy|x x#ƿs^@Χk[m3}VRCMc$}?ï5=SL+J.UηI`fd#O٫ go-ß~VZkB˧CFuXDqk zܫyiWKEe+y-o}GGJk",v7HG1$ )8xd|;}X* -(˝ 2+~:~QxT>E ɏ@X:ǾGm#+ l /嶙4Op#cj|5OGno.^.q(iuۺ=/oF>nmy7]'O$Qm~Qֽm9}iuE)ޥTf7 v\"tNY| R]hM6mu #m]=O Z?K_-/·kE+qo:Db~XT@r2~_9z[/ʰQܶbֿ #'#k>( h\![uۈ G?mo/6]?KuM"v2_Ÿy*m'gmћFSOʼ[SOn7Ox|IT[VkYQc[J8 }ӏ˫xB;rKG=[E^!Q*i]%k? xCzb\x`egql"9(|l {?(طWF*V7.66z/W>]YRS*QAL~]h? ~hs~*2ɦXn`sMw<#S%wk?n9.|t E-(7R8˖ǵ|ǟ@}OK Dƒ!;8L?~W/|}u|*kد5SFs!HiRDm;LJ4Ǧ9V[v xҬ//[M-cao0>%^Egw|MΕ2Gh a ;K8>|\_%.0cCd3dxi2xeQs};:jwߏ$Ӽof[K;p\,}m6?(1$pn־xso5P.>{ }?Ts͑k~ Ee`ׇS#,ږ7N1啺'~Ucڸ||*rrI;kˮ_#翇> |OuѵrO!%;W)J,WǙh?rVf/]mp2!U1'h>=<>{s-̒vG`PBzי|OƏ࿇wkvVmˀ-pd"|y#CJ]R׶KpN2B0U}n{Yuߌ~'jAAkY.wm(ɰآ30(#l wn5:wu8ߋzKek odɋx89-1^8 nek/=4K>ϊ3h*gm#㯌uGcJ}#ΙX0Ye2 C;*q'oJ]7~!@ &'Eʒ҂2` }ݦ:w͓m%֍{-|5%gn>Vl}>ů'xRI]Cvn&4Moo|?38s^ a2=5 E]Z~gf^U/J>~:%χuEI ##7bncq|:o_#4I|UڮN^< ,# G߄,~u8K>r̰iPb_g?Mٺ լ4 [ghwH&nI7'c8!x(ʏ{$> ~~_,~ Ů[i?1_iyVH ß|#!Ŷ 5 ؾ,q ;?Lc/^t*}VַܗM;(m791ڿv\nEB[j>G^EĚך<~nș;q޽ơ0 p1  ol ~Z HYm.FPjo-fK)xU9ا_K;x{A9ISP8dTXmHUij? "Sv?7+m'CMnLFLls t#(k {6 |!M[ꚥ[=IfO(rdxFxt-d{8~]VY LWvnPя 6N+߳v/_#m~2[領Ų+J쮒 n$Wy%y"ƃ¿O*G[ㅗ;xwp=ɲ{ v"2csgTyVr^JZv_^?_c{KHYQo亂5Tۻۑr*Ň54g|60,vPĘ~>#gĝ??/ckpn Qey#s¿Moo#cv2nu{89b+I/o3"•:y~851x4vwnߒG=|FFKlic\ZF?tǸ8}2~Ԛ7KQp̱()II`^hq-ժ~ԨfG5&ln D.-} ypAvsEy\aJyU gʓ^O:'YNWAS˜%6kF5h.!G235Lvh~ =SNgsǔ[ڇ> 7ฆ(CC LLqYxOb!T7(*{tƭG !' R~ϼ~Wۅ9anq_= N~?a YzE &$k{6mq3rJ*m/~ͿQڣ| hjc^:5Yiq.dFV<-Y.Uʔ1vn:{=m^zia m? ~(9|o/Zi6 f~R/H.4*K?¯^~?ĽJLоڴulNG4f1 k3O~ֺ*@Ԥ3L1:e_=0;g:>>M(RBh.mI'x<jQY:pz8mkv/SvܹkZE{~sn1D*6#=+O֙M- VQ|پBwjTzj wG$-Um$M*iKV '^ "coْ]:Mp+K$4mor?;Ra.Ftv? XNpi^h-Dž=m U<8[[u'#'ӏ7O&Y|8wë:ڿRjw.'rt@,N kH/:k8tdèZ=:01}+zwKwOsy*"jLیH7Fr|#?Ҹ|ʳBZUVfWK $Xx)wNk5Zg <XYRXLv$!奆?,y+W< r1I nJl;mSJQᯆ~%A Oᬣ+aG:(A84{/mVŵuDW |ٔeRj<(T):7~ kPJLse'Z-Co~! gyM_WU^( FA57sV]oN x {3l` m 6o/+>hzE=IYěgs|Ykg#|]&=<_Y]$ڌ*<(*$ދeԷoD4`.Zv{(.g֓?ѡ\3X)A8Ĝֿm;>o؉W7چpGt_<?xS+&~R3/+/ydmp {*gg$  _? g_|C|K\xBgW餽PI,f %* *a\޵e8+F˺n~G3!ܮM=Oo|hGjci~fm- 0KYbINxwO6I.VeckW@&Q M5m3|_g5.o/P[O3~ΡθHO~Ft O$/)Oza>+tp<忖{1A5;G#^xb>6Ɵ"}ʞ'7Ri>tk;$v+8ĊH)"K *TPrY^5}#'ܽJKH[kkk[t-+ci+wO'}n/ [e}A,#H@ޞ|=kDM.OIn ebOUKA>$@Ҽ#GK29U(?(|JN ke.>Ga{iM 3ZI^ 2P" I`EaXeTԔݺ$98 ?g:4^WKoe?gr!#bOx.?12x/xt?xIEa-⌷˳|(b 7;F,^+\-<*Gf!$Jxm~(w῏g~-ӵ;YcGa%PPSwNٛ|wD|M_ռ;ۺiR,HEeGȯKL,c)h:Rԧg;[_)W4dieVL1ڕln8E_WÞשy-Phnef鍖t亸5Sf??G4ɧi:G~EmY1E7TaUˊiGD/<,љt˶yFUFp>:+3_WGkoj~ Ԯ-$7{&\9^%W~5W?i{;a#:P1 B97ddT pSw|/V]?W~9Qn|!KF錎~+(ǎ+὿wno ˨&qeH~~>s~?w_h6L`S[{G*"Oj<iVzq<Q_h""g\xr(軜_=$4=kT)?8p{qyzg/ntm1ō*C$ G5&9!Bx۟Zz8].vh8nG䋴?J<hiϻt; #Q^?DfMm@@sОufQ΁`^ UU# 8î+U׊Cy< oWpa ? *60kfm'G^zrͶ"c.qӿjxnku4)aݖk j'C$3} RcU^H UFR "xCӆo -^GnWe9~"_wV.rn{na=O@m|> 0\Y.1(\cvLH^5j~u/cxmeIvpvI)T+|W۱zm4MXb/u+8HMry3mFf WC'ӦѦ{@ Sbqt 2 K~'O?h65PT( 0wLVw\/CSγHy^o/&3t W=xJ+s-^k6|!wuh:44\f(2!n֫U'ÛoxhMqoyt&Ŋ%io!>qjo?LE+Zeq9m$x=KWKi1q9D,wnaJ8-OԼau^}mB;U`>wi%^V\VBYk&&vhC| 7u uF~Kf)!@']bmR q\ŅzeL,B:*X72=+׼?\񶩣x]M#AY)+kط>]F\<ҌV)5>N l|Aj5̷D622e 1?طǿ gy5ĺsAFmL^Ar  XԢ, 4k"fcR3 #qA#_Vڷ/|k6YSy%Z2^=p!F7drEpP9~g۟ Mi[_kzT[M$ sI8zT*Ƙ8ZzO0^:Yj%jGT%cWkך,pΓpAveښu'{ )Ȉ=k?/ZxJI=³ղ?)nr,T@@8ɮk, !^i,~@q>WOG"-wGnuO'"HyJe gO.@B MrCߴ_'Ҿ|@zv4P݀p` bI lSjm n8Zjưlt~mIo-t_1Ʒ $ nN4,ޯmq[zWL#*8$͍j=3 ZAf["3W]kzGVvc8fB̶ U >Ҳ1R9;%N3cgAި+<‘%K.F@_C'Nj ٧Er-Ā#a_ۘQ;xZƠV$Mq~˷+(8\+6p {mBAcvj(&mď4HH\`_GKo zi4{ǥAeJN<#˂efMc +w|3iZ/Tt iir858W<8Uyljv6QBhm-!|vv/ĆV[^F^Qn8VJT΢g?É_W2MynM Q|b+8ʣy\chOqK<{}i5s;6C"6S͂kmhI%\iŃ4 rJ"Yd<G:O,Ze̍4$ nuO 76tk:$yo@mVCJn<㓯>C]yLbVe_/$zfo|8𯅵 CY5Krזt<Ȟ 70hB\ 9펜ZR\O,jN7Hc9Ɯ9]Ul$t>t旮xőWm65[ Ad^Xc# c[Y-㠗~(0+i!˝WPmleEe*g$#yWn$ &ǺVxkɢ]>nd۸Fxzrmc&miXʌ!ِ܎9  ?y˃]qzGĿMOÚ]Oui'ٞ61&ȥjMzx-EWqpsӜ?}M&}f.xwg @kVxLcrlWWgBtC 5G[r~:WԚj O>7BnC'#ҵ~Im(}Py?g G$⾳YZOwesD|m\NQwmf6䍼ρ)7 7:l][8ˁϼvq_\kj:\+H70cGJ7}SLamcas(Μ-uxTP6~F=RЅZarc=2SUHTOˌ/OnqB+ 4&K`Tdc*kny'{WVM~'OևmQ΃$8`{~4wkHD{c;t0[HeF,x,~5x:kI"hUGe GWK=DҼ}<3ዻpG4 {Wh~+vxFqM5֠Cm=2}4䵵uT>DIyp{99s//ķ\F|(]b2=qҽ|.?NQ)ZR_7RگRMjeU 3ơ;xqұ.|?ڞmMv,.#3J\ !bzl<"?(c"QqRc5n.D\WB9^r+\źx,p.;toK},E8 ݮr{t#J}ãLɥCޜ p:r_xUK;ƙݗˎhmrX+ed9jmEk:+F^%|"c7qPjn& YT ?~>h8q &eOH@ 8WEumryvfkh!#.t趉7:3А+ ϢIZ.} EvG߲q]V1ush韛2H 01~%YZ G88;Ҿ:tKu=vdQmqdiQ\ˌﲱuF€t9+\UJx\#J|ݑ/ůi?#2.O>l2x5IV'=3$v^Zm my_B191%\%cm~v_}z3-6;_:<&V0J'G=s0师S u)ݡfeӎ)%kKwϴ/Qu]kw=/pf/V  =1~,B.W'}xRX;yAIm8VI"TXsV*G7iY'!EG^>Q+ο_=Ú{gZ / !^yDෳm^wN 3X"['9[q _ 1hvݍdO6;d@@~TKYˑih/.߁eV6"{+~#xşf}/~|$G9@o<[ŐɌ~a`> ۮOKGKlP=Hc/NF0qҿc[hŭjJĕ F90?k'jda+I۫_2_'Ȓ(,n u:] 9UQm&urGU!vwIm" o=1HZ0\HO``C~f>R1^Y" ?&㼟CuzS5(F\fOnv:+DgN6u*=Hf+O$q*VjlqUOm ɫ,?1!FdWƇ/>;Q "w韔>"KMo\ZO&#f$*qV`݇K7⇈|cu`V}Ъ8ݳ_qcc֞Ge^ai5EJ8.eu> ~ϟ~OxMmqo$0)7UdeR+!ֿcO  ?fuu+ }-@aozyzn@]ؿw=?UE_ͧ}#*knl~o~Go¯Z+}Nɓcleao-EhM]'4|4Uӥv;㇎E #W֑꿴_ ݥib\+]M ,U3 ~xO7{KFF^ܯ\v_\j[K3~:9r*4e Miܨ9(.O͎zW1z=űįtltrkc꺬ŰR@i%*>W7d ڬw0G,$BvFc W\/<3^yvwI|4`95{>(gO;,IiVZ˥uS*Ѩ$WCͼ i_u OZ[~Z}K #HV(bv!H0}$u Jý:[{fUYWa9 P  K/}akM`zquok'@:~fSv O#-u/dv4;[H@`iqߴ?{u5j62}CweT/EsnQ=9DVe>j8VøuR[gX4os_J4V20pllR)_ juڣcSe{;7RH;l7lڻ~_^+&x |A}cz$1N7XB#W#u?-,Gcͧ$pHݴ&b1pȐˍ`Fԥ(Nkzʵ3¤fE4^Bi+u>doiscq)qR8kTdf?'x5,ηA&HOOoX>+xK㗂5υhZkMB!)O.aۂs'u?j:!ևyqkkzHeTtw UO9]*J1RANҚW+;ingǝw]7nS3,j|mdDWLsm$v3+o%{oDޓ\SR@V0GYc5@s*(%?Jw e*K1S+oˋf_J%%gT0>W߳_teAD"X@UTJÄjeupj~_d>o,KvS[c4 ~ 7 tx:sk+ϰ)`E">*5n__<&xZOXI#h3>p|@OƟ~^>cjH]Iyay3IK;_Qwh]mi[jZ2-Ls0xOnI}ac*iii ~|+<+k?o-WO5;#87IwccwC^|OuS⇊ mrkmtcUq*o}=t;ύ_~7i6֓KlQfGQ@  t^ 3_+-/ bT>2Gy_sOSRK,ZgZ!XaeR+F'>RA~ӿO͟+(a&js_2 XLL+&vo3Yl1G_czOiK5Y.c;n7SJlYfRmbpqwqiAQ.e/%lUo.F0xk  j}kZÞK;fygM^!Cdd%@_z+͇ōß:%ƀwsܳ\CCq'fn@N0.Wi[/.*.sm>]mմşb3C.S >fD,O.?5sq릁ˌh4RxgBñ?dh:=v\n єn$7nuY?bi-iy_."<@ZX<=Juᤞ~*5=诅l;}_^%έen GyA$VIc@þ+"[||qSLR{%Ֆ$,S,,w3q8~޼|[k ,7ค2SA¯koX-}Lx⟂[DItcy*Iyu! voxQchuS\jIjn<[5xtX5~b5 )p= E/7Gv;L.泚X#dEh@~| _x{6Rnk}"Div!Ky-8\ǖ%NVx##?inayk+l̥s Vۍ`9uq +M:|SČyP+O?8;sEv eBrTB7ʯ k߀8WpDor|?&BɎOm0L>=_7ŵ2zsJrT[OD֖<>~//ǁ|gj^-ř+-ܱʐvܤ8!x'Ⱦ1+z7xCxrͶf.; G5C/4KHm@D Kܭ||y|R_x[`GCl#!#T_ʅFV<|_/7kђJz=tJO0|^66KC_ xi- m,J&nm@RIuM=S 5o2HΗh)$v?&H-bi/ٮEhZfLw[arvnIiPOp:WO>8xY7Tö"]担o6L \?G*ʦ"eͥoUcxB5]d#િE}滖~5JbZ6E|>w/_toz(Ubtش('XFav.J£ q_rg׼Ih7m|95HdDה(|q_ί/Z-JCEh湼x&v)c9u sۚ-V*v1[%rkt}xhd_}M_G?<+J0k>0=OFheSbdyB^Y~ң$O6_ k"Ml gP֮xp~oiE "9$G^i-n"ICnKi>H̃~ROE~|)?n-A{LLΨ<ڽj\O_*˩`)O޽"k[Kv숭>VJJ:(hI4$um^S5߃}7AUu=JFu-^٩rwl^<]6M>ſ=WX4NaUQCJb~lfJ 5/f=6MOMm*mA7BQ$>Rsҿ2)M=C̒y[L*ǟgt<3qe8TTn7v]8?`VSR䔚kŨuh?ҟ|.}#T 8mZ9!bex 2)g|KW<[~EjYeۺمcH \òk}?I[z`J3LFN'k?|w-~6^ I7C*gw 9kYvJ|cӊ؊C%gfޖ7_i}Dž|E%B<1~Ί9X$eIk,N/|7PC!߱,_j壏hbX@ߵKx?ewM08B3|G|Cg?zCؽެn,x.e~Zq&m\tùl>6[~.Gkq oMLzs}oJ+~CRqNGWfJtJ B 7[{; )mP/ύm{V_Qkn-$ ɡppǁC~/`?_gῌ4ObIh/`[[',&(1\^"W"6qiZQ}"ZS/ʇ"XsM ˨e5'%߫];-敖__:~еӯr\ i-yXR+;A$~0uS➝kڦ{*^Q.e^j XQ[[";ˇӃH>&?N-ZK13KՌTPYG8=5Ooo("|Ju͆sܥ2d-*0R2sۓѷڴ:![,#1}HĨ~n>ۈ8rI-u>ѧ)ɷ;n;ٓ7'~YxO:l:5qKFcD+WhG]OTNEkE,ʌ)_2,Y@tW SW Ҵ8nn- squs&*!7=gr 9Tk+g.R]y@FTʀM|ZFNXtwd=J5 KniDKW߶WO!oxkC6z\df1"22F_e.7={Z:Gl>%ŵo%地<)x)^~~Yx;F^K]>hO4mWұ:)i2?}(|-[yv!a_o0'Mrs[+_&~G\jsEAE̿:SNJt/.xed[^kxvq\reFH?!G*1]Guֽ_@ KմRњ8ݕr|(f-uڷqHtciXH[t2nNm`9g?oF]J xd$*4i$Ү1ԩ>GfY25Gh7>O0.]Ron%!N|@?gXFψS[vyɂYc)xDQV~?qHψ`?$*HHpI {VxQd/񮅣:u4~Twv1M .t>o cK<}sO+!~ϺW|]{8n%v돞WFDk,8ʭINEkO#)BU $橫I+}vSnP/يioZ,b|M?tS-|SsEֿjګ><7Axua fqtDS,;>+OwŮ>u iKb,FZ`޼ɂFC_ć~~+רhӦZΡ᧼'1,(h00g5W ӧ6I4նmG&#% Jq$gvzkwi>u'O?(wˋ/&)km|Q]||%׳e w|,$DVa3WfN|_h1I5ixخ^r63Ԏ(W_W^5i."ax+{XIi$pd* ʂzrgiqVmm:mʍ< V߻mQw>$:o_xR-=#ϒ(ciD,q$ʱD8$1/>.|lЬžO\-NaK.x隷wo-k  -o0>#澼s~Ŀ|T񎣮xY7Α0+pp+8*e{mť_8OY~T_ÝǟuC@խgeyq0 CWbm?O˖1汨^kI5(&-3ۮ`Ge~Zd&Z2{6V fHSE~c {N]o×mo6 ++g5v;^VK]`pX\L"'2v{Z_m[D~&g_i'ij:"Ֆo1""xGo"2>xKR`3In')[wdiweF~:aUuu+soBMv ;K'_R%Xݬd ђ-kXpn7d e8t#$vhW QWܟVKK_ T_1RzyiEPG=)?ˎE݊t+_,_vOi OhvL 5)1@@`@XZcx5z爵;;Xbew]@>b.:(bM}xVc\? ޽ĺ du#e?$ 3cvY\*8i~Xg7WO_[;T ZغSѯyi%Zmuݺt \w_k@i' b# |A? "mٖ)7XYzSË-s\kt]&KwU.bS4rFlb u5go? a4edH2r82 cD;+l[kJYқI++r\uvEc)?;:߈^٢qwέJ7*ʲ^.+L;d]*{M"f4qhJ5:Zk /q^ؿ[3y2ke;xn}]-I}.`f,,Ј%G2*w|͌ `GVE[K>ʶD5M6Dm4__iEPtմ^[Ym'TO23o |u}N#CJ,JBH[yP7SQ?x;>˝#R[Eae7Q,rO{o+|M[wj1)iXβ]4",/:\d 62xwd)bqJI5f켿JzNI)o"j>ҿg h*[p5Ku M  ~+폈&xg)š;T{[}U$ '~x/_{ jVlbErjmsfxCߍmQY{wi*&-<#vgs ;lE}cWt+Uk_EӶ_WFM5i4m^{wÿ<;i炢,|{+&khYDd#KqGWQ~ X|9ggx6AILGo2Y#sSj~RAgox[L[Go$7>K[D 2N|ӷOg\\TѮsGMm>~˺&?3pA+_'S."m[~aL7֥:{]5I~şo&C=n+-͵-^cN0w2t>.|"-,mgCeǴ*F=@tk5/1:Κ}dž| j[G\[%=Kc'b اlk.~h~KxoIn7⛛#Vű=BGdPBsǝ_MyGqi+voqQ4O/śH?~ D[l6b0AlU&bϼ1+e_ߴֽ!xM]\y ݻii63yE  ~lx^? k_,q`tIig"?̬&{udT_ m=`&4mL㝦>íycZOӵZEz-rܪ޺~Go¿7Kͮ]xOt-WLiVHu{v3[l=+_Iϊ m#P@K m^ >xYƷ(w2 bh]^[,̫?K~ ~oڏxľ{yjw1̯Q ·N2u<JUeCI][oo;ÿdᏉh_>"W;}1FFh.LP?"yqB#p8Sx~2~?Fψz0E,퐼IZ4rz7 p:jOwP˥O\ܺkOM-C co4K;RNOE(.Lߨ/><i4)1J!Xg='u/ ZodxK_|=,wg|'PE122" ?~ xBiKyl%mͳ aLWE'͉\%<ܰ]$?rd|#n=bF'?/Ѿ5|pӇh$XMck8#mfWR w;Tx''ƽ4 -A$oUq[J/Gï _>!j>˴[>[$Hq`Üg20X8њ~|u+=7/-mfT7ac=9}:v__"!xFmBCFHv_9W)$WRqێWW?g|@g%8 @/&{>&A[ʒ!nď?0Zj|1qNGP4u ,L3 d`OL|ڠ{s7:ojfV]֮l__]<[8O>brWo^Vm6f=*x7f31X(Bb1vc9N߅Iks?": 07O\9+I௄P&yOx,V)BJa 9˰I~~x fz iگu[:pJZǵQa9遁^էZ~onڛE#bH~^rw.FχӤ䭞+]:{I<ۓf+Snmw*{8]̾f\nMU468sLqQqft,ϭhxZx-̿g+ l|aQA|[Y4}oPSEɆY f< yyXq$-iMfR,/7[34IG$<\^߇~#h4wLIHYΕ#N8N8[7XOwtْ(^E@~dgB$!K7+;iM-G n8aЊ vkNjCZ o(E,s>VZmm^୛HW\J`(amFhJV~>8!d,lt,uf<2"n_4xOQệtK[OȘ$#>r_ޛn?&;0Y[ yoUmV_(7z޿h7Ii.e{9 z+%>|/54/ jYy ܤO3nXeN>n9,}ڧo)Qvr-MԁnBYjNrJ٢1&eZY]$ ,aSϴr# +ITjѷI)JY[ŝ hp&I(ba8,w / OiײlVD 2~7PG c#uQ}ucy&ML 0lcd]k\1G]F-Bo 7 \qhT¼\⽛YW[\_͹Qm #TeIgǗH6N%F3@"2I^q5jw[-+K[ "?eV10 u. ZFW9gNLJx֞!-4y6aYYŪI@NҎ7^ <)do~:æ[2a#Y_:cwĮHis]PLYO@f(e\80/5^inE8Z'7Wu(]$mc}>0 uһY6T,⠋P.HB̠29ݝt O^ .ibŖ":~7vcbQG "=SipG,jmpeiJf~r&>Gv썣^tl_4lC -sxFt'O/X-̌kkb>\Inc5fֳw+yj'W6k=r3BxZ^ռK#~nٖI$m;mmgiS9U GQIЎ H0v2Þo|fV&mBMxs+!( yg> RO#ͷZ􆷹h[["Wp+K;嵿^- blg%!TSw+7S\WkmEX/[*%K#`7t*A=mEe${R3G$PBÆ18iŚ75ѵK,H6Nku3oZհGGu$$Cr;.p.V_sz~̍fGyYW)aq@װľ=,thOj2K+rȑ  Jpk=h<=OxNҽMvDGQ@e]>c\];2Z$-Z% L7t#V[5$ ?5iKoac+mwk?c**{}cO= IoĞcn#~u|fqazaq.'lxV k1iWcE&ô{zp_< %qxe$Dc9qĦH<A+35SF4ҊUoks.ܑ9^-mKFA6?.|Ȉc rZp 1q~;$j7:~zNk-^ȷ+Ŋ N@'=đ[԰'㠯?v^:].˧3ܕruM=ˬw=NsWӴKDYØiF'IN\+2i1;b߉6OS/.b5a,pA#E ajU/'^QM{&Ϟg_^Z(Pk1tUQxc^4i" Pst_w८kx&7PI*YlFk }<i傓IQs ^Ux:,F2Q_~׿܏31sO֫ndhfp3|tchEa5מ<3@=w|'+¾_ xZw֗ihXrxLfzcV& (, jA@N8^.L=IRInt$BԖBa˶>A\qsҵ,2S6X u;j#tuO=ᑶ.:{.GVr[> o<s*_AQ&4]/BIrpv`mھz~͟ R%RR364$=P .9W#Y?k.>-^h^Ƕ8$mc*r#?<ϟ$|V\jX[C5D0[/2Uk?7 GYM.xxrDS9a;_ }iY:['1ʇon G_a0\"gmᏻp[boVѯ/E4|"?k]̉)+cy {o^ZBO)c}1dc NfN_=W|.?ڗRC^zje]>Ǵ%mp: ڠ ~XyDr;?"8Y 8t34V oծ]zOP•:0PCOQa(sUbo}q_KK6WjEDd5 x ணkj- Y.`It_~Ksn&̆w+Psv_1ῇ4QvQyWSC]So_U)\zn]LFf&~xy⾞io>M6 4>S s!+0V`:v ׏h"SKᮣ]OTlj,[;_yc.o%>]b6{[;@D1/.U9pGμ*X 5ս Ŀf\'#Vo߲n>([U,oYnLv;Bm!p3s$tO_g|SUpKU =6ʉUԡ!WH AFtZ/ | xsK; acODYvqQF4?N`3l%j8rJZi5F'Zrf֯-t>%l#Ie>3Zǯ^'6zMtI-`h"log̛2$` gWπQiִ{hc-e-X.%f $_Yڣ/?Zw5d,đD۰rπH}J\;cV8Vi/O+{K:-jj#dfaAPrs? 4=Qu s@.m#e` Hȯ&_ z&r+CUgpDhጜ$c@.G>inh#Un!!Fb|7p^ x<-x>]mE'+kҷS~ 6P^Y\6{Hʴ,gaG\1vmem _ ?x<πqYVkV3"ScʧN-r߼[j륬?s1~*fe' KwqKNV'¯?{WH ݷٶF .cSjO$SF#11[ ڿ ^{txPkln8_z e Zx>(s&-=m{$$lĮGǙ$ћ(SMljoeY[ ۋ{KmJdO204% n95'7vm6sZZ`fQNs1_ԟG8ܣiJ>9rQ7KổeYÕyjiF_e=4?&Mn]JyO{k4af?p8Z?úbZ[qF ҷ>&xU~!Akiu\$}6S8*p +k7//ji[h[5Oozm[G$/+/c5%F((|s U|VJ\[OO8RIǠoDS7SbUR[@"yϦ+@o=W㟆&_-tcjH2/O)Gh_kh4iv%:Nc./]]7?oe~g¾3,,wkctaiTK[yqrAk=Sh극%k$.JΒ\ӥ~h߲"xE:nk.GNl)e 8jاEo.z,[Z62i,U5dunJ A9+kv;|c~?+WUMˬ^fmft\!P%s$_q/$ifPZKlև a3lxZv%#_7?mo kVLsu[t&)1Mf:g~}Bu$S̤l!̨>2\WGŏk6{Vw4ab'j[ڗ*.x_EQϋYiFɑ\t뀶Lkw*sd"v8 @TsV*gB=4fVk>^!WZѷ B\] Q*";WQ|lN:s-N-e,p=3_/՛7.MHoIqkr4#ESeP~`=i$(yo؜b,<-Int[~|8~<5i(]_A"D2@\;Ɖ 9(ǁ_Q_?_xnPxoPhl f 9;xد3نo e,5Ismry֟;mvMZۡ><xWD4IZ5i5؊;cnda@8{ X|kPc'OKkhṱ[&iI#prOq_ޟBxGOiAiŸ,UTDf>3ş Ecg+G$?mmR\?|$fCcp~}E~SVXU嶧sklzG j|h#Ŀ-Xҵ[känkIZ x]ީ>ۤ^VY%]\rzs]k KYt? ]ۭΧ-:uŕң0TY\\u ⾋+iR,$!3l!bp1WͺeN}w^ _ nik܁?9Uxr@VE⛻SҍeӔ+ua/ai!>x$">?b~ U_5'K`R+o<@ +.>PI~ |ߋ> Cj8. WrxS yL8~8oyWF2v?C[?5} NHo#c\g1_V~?O՚ĝORkг5ӧqy$X,l&+eB8%4ߎxwƶwڮjam币,^h,b,CFP(J.Z[Cm(dqy޸O~kZ18{u)O bSI 6bȰ'd\**@*S߈dO}Jm3UTKP;^AU`}+|S<} .l|@A俆ʃ_ph 󡮫ռg/ MVfA[X %vv^|eA]p12Δ?ò{_ >*.s:N[';V*YT9w/"XޓHfL#s}:?࿆ О&g=+:O6mjC.䞣sV_rt>.5_\XJhXVYcڦ5ebμ[vw%h_[~_JڧǏ5Ƈu^q2 gfTWZ~-[?C]UolmKKD`b q%m.)o675*]BIo0bޣT9&~O|K񾡣]HGv"㈝hm Ծx_?-~!hvm2^Gk:2]zl>Zx}b11vJ}/wkM3xZ74c&8 hzȳ.AmkEhZ?"K\ `Ru&ö|eXMHmq%Ii$?-àTUy`1_"]FO33on,tx:mꬑ~`ى\R>y>V~Ma$iO$d7?.7*aPH$={WGih!]V8"|L$x{~oxש]fq~٨iY.u9nw<T+ |'n4nZ.tʍor:,Nkۇ.Zg}"5կD~}fu=7v^OWz3#Դ Vmw5 mm4%źL 1kekyej7F'm㹑|7_AGy#׭(n$6Ȓ++c+x+1Oz{||@9RJ4 ݷeKu?Q>*Vwj7oQ7WbgXt\ƿ4`π? | վ;v6rM+$HR8θ\:ׇE[O[7|-_2ٙO*soL&SMa5-f<VX,mtOc$mOi/VHirk 2O/-?>-ӦS$l-T7KS 8a2Io~?_xK}2f"$p7o~zc{- ._2X[״ir@o3p2ys!]gVcgYe?kMe~|*S:~+1Pa*}A+ 䃐E 0݀gHY-'ħGkk>-Qegfm d7~f1|weoZmE%Ք.c4d+chm_e_KƥğXh ๷y8qy$G>[a[Ǧ豭ԑäA5fQp@8><|tޓTY3|5nQē#ś;3}2|n6k~*M_ tۋj7sZj%ĖDdhfP1n2}QC߇V&k5[}.wOMmypYQta?& h x{[N!YV(>eċ*C)UIlQxot;v05&/dYF?՟Ҿ2ktfmSH7$2Vfy!K*Wkᖹ5'] QD<%_--Ɲ乚vxw!eN ~q~> !'NDG[^ ٖNm?*p=kaH{IY-n. bqrqy4m䭢Zgoo>=Lj/T5))wVvL!Ro1֯x/7'OO7Ig } E(v u?k|e+'ЕVh΂ IFaX01J)-ǝgui#~(%$"8-}:c_{c?%Vg$*Ri ܲ@^#[} Yq~}l{WI|P-.gMյKmC2L>l̠>_'<iG[~ agc\<-gV:} C O-$e`E@}~Ǿk 3ᶣ7e~uwܨ:s+]? mjC[+D1Lj-̥UU(\w[?u=:SY).ED b>q*3渘YtZ{>#!K I]Y/PiiZDbH A KwU>"/ 4So<xǷ~L2>j+ש-+;t+?Y&h_~\jW..; lBcyg!Y<64*(d2:BywhGIĻ-X 4ҹ :WWg>+O%ƻk%atjfCPÿ'?fMFOxZX[VҮG2F0`uk1IN2},n bpҞ&t ;_#տccqAjs܋%fEQ#v 9WyO2~.}bwvڅw[%+:W2AG3)mbL_5MI $k cR|wO;&r/,<2q_[^N\VS9({LXݶ;w=wU5:]ѣ;Vܩ q,m Bهm$+Э2]*4 rrq__۷߲f?`/O 罎)H]|?~uz>a~sh$w0eo6m-_e*>ۧ?.f8eESE7_V 43 iPV¾PBn%F%GFTn￳#h䵎]&ϛl^PSc38"Qw[Yپ\ğ ~5|jѧ >xrKm]e^l촊\D6#ǯ8QkRl|8Kk>À!Ӓz{K[c>)VOmZIJKFn<_ߍc+[^xQ:.. $"v~|jGm_O񟇼{;Ē7ɰhd{=WQZ>6|!\y1X_s,FZY.RzCN#!ˬu{Z_/mF;4ۦIr 930#j;o_Tu{I_39`֓_gb||A2ɦ>y`t:95YW~\I.-,sHşuac_xղ*|tkxmQk<.|꟧n߃6@o!ԼMm>PdI-)cޣ"ß5-?Od{# Jx?ȾtGUqq_tV.SDJyB|m{jr~H=H*x!Hƿ9/KD5̏<.DP|n W5*NUhiQXZIjֶ[v㏌~*ku>w% !QWǡ9?ZA s4K;lZ].&UHظS `~xGgI>{Ǝ"YvFW8o xcu7=xڏ"īQ˂%+ўXji˭08Պht켗c|)3= [ڿaH.- I2C?w=irZ!"8AoFAg/=<tek7 k>dSei|uzglK{9.s?| _KLE*4,p@:pEu?ƍYMOL pnDUm ,Vٌ*dž"7קX(*qfҳ-GѾ1iO(nP-bQ5 ~P#?ĩt-+㮧xoL btayh"FDg};+3%>O+)7Ws_+h/^ jnS4m[Xa ޻~ vcS4V vܢ«@G_\u5!⍇O FGYYMޤ5#W@-5k(>YdžAPXYxܝҩe޸/^KV2I-]*jۮ[RM N|_K+hW_oG&[d%lTS:j;n@:˷+FϺ0;~^O}xN/Aq}:nC,adbUN<+[sN .?O|w k͒llKE$#siqӚ-<9d۴ھY`Jb2P0͎9gc?d_*uƪcMYn;TUEnROZ?imO7k mJCiP[m.8bc&ܖ rx+0HVUE]n68Fvkmt?ٻ߱߇xv7É6Kd=wR{Wz]?mƟ٩4a9H.aJ60 ٜ=Ld\.cR/FNS?cu:JwZ|?o? <;{xᡖ _§ _WxL>#f&qU7"9V6n7WRwڟ &6:d:}V{Umq} ux෇5SZ|IeCtB%P-î [^H2O=)DLt;|ܮ\3;^ A*Ϊ>_7[5H"3<*Ie1,e+kN>{\Evuo,y|FB:L kNO.DA2"@l2[LgI5Ir0#F/hf//W'4-M^ݬogl0ѤH3'9 ׎|I|&u:ܴDy`K!x'ҟoiѷ|C`DSt,s8KVgY[ݦu<( (ւb0[?{@"xLo/[ /_#5]By%wbF98ǞxsWhOþ}&U="Z)K" cM[M~h?d/&Xo8>!-vŶ*8Eo!K# ڥ5Rm/_:S~n~#x^]VZŧ!(L+.^ x[{Rks߷TɊLc'Nӓ# <':jʦZHKn:6j0\`Wo~̗mS7?1XU*@nF\Aȹ^FmUx_?~,DF$&td ٜ (z~$xk C#h%b6_j&F @fY -h5?rGqY>%~a\1]< sל|SWt{yQ6W7+̑*A\?婈>fug6߇ݾ%μOe1YA.x ՚=oƝ3WEX,nm#IgU9\́Kd f?t}[iCAc,23xL;^_][ lKtsH d8~uPlz߈V=$ڔ;y$>d4 |oKhk 2B,N6* ehGA4'zwn4F]NW4`5i6B؊v@+YӼi6Z L1B"| :FG}Z:%[t:w2x^ %,tѴ>~TRq杬Y]ZE{%̍so`#EfY;?8Ry'^ֵKH@P+ b~W$~1l,R`e$SU Vz +1*˔ 4K_ I]Nwj-n%$X쥱(ۣW*y0$Nk{u9uww䀗 e^D𖓯/u :KexW#9/"}WAૻA,#o7vݱ!O ]p&g91N~WePnt{{e|rB1\ԾneKoq]bǻZV="Qr->Sm3Z&GJ l t?qeX]'kPCaVVە`NG.5<Ӣнw{oe2]]S+|~Vݞ:ǭn=5*0r:msЧ,< l͎=y=n@A"BB{{WSN,paJLt gҾyuEo_h"RJ-[pyV+{o-nmf(FzqӞ:bvg'KW' h>Y*z¿d2OW7k%6 OYDʠQa ۡZY[[ OJ@K{_5EFDrČ۾b^BͯˏCr9 ҽrᖑ@ڇolK(uۆ;l8"0+Z燏;B@OȲ ( O><טKqqw%π `N9q{w-}Z9@꠴ec  ` z>AdeVZ q_3R^UQƒ=yUo"CtojuBH "̸"!Uf|R9{:ql9Ze#+g~Oa޹oMLqY_[_[3.sv?+ q1\sK?JXyl%.pD]/2Ƹ}[ eQx /#Y"zaWSֿT O0USiv]cgqgMxcTM>`MB&f1+3|˝bxZ3YL9'69$䮵ut;eWQ8H^ yV~|1OsI0QЗ%NTCap4乩M4~rb?o>)~$ meMNX}n vm" ˻e|9ipwN[x'=X~*K=fCn7J^A7`q\/^Ӿ5j4sWdžFt)6.MYBٕ:lFu^,,_hw?]nZxF!GɔeRSG#ӊc  7_ J~# m-wv#+߅&u|S]ޮs}{,M 6v$+lY& aod9J4G=~=?jPxrOk(7sW&yN:#E#!xVOna{D2EwoU< ~dxC^./xԶӭA{+ۤ6``펵6>8{߅>(kٮb3&}mu3+K2H`vpvE|7?iQK 1\w<߱4oh?hr>lq IX|V؃jFpk鏍|bwoq6O=c'|EF$Tr mrWOֶ׃|9bY9 >#6kFjxpr|KhowanIe}iā.۶(^1># " s򁞘~o"ycɅPʧ+ f3OZλpֳ]3#>뫡 s*~[% |;:?5=w6mKvwcP9۵@k4S⟃^?#zkoː p\=OWgů?D|>t 2Ymdd,%~Vzr?Y?g/?׈E#ALEE$y$¾ $Wmr 7='K]ސGRpʘقĐ:(pi?/%>¹4X-55n"<qɯɏ'¯ߵKM}p`0b0R=G1rUxx{RcAx=;% ]"??XSo9ۉΒ1q$*Tbs) Hg{_itQ</q'ʾ2go\DV]?$Sju?W>(xǯM?᎗x*/7Y4hx]vD=- +~'j ~*Dž~ϤHe? `htzW;x:J4[l]yÝn2C'fE?.c>qub|GqUPNӋMGi⮉R=CIe'$g Fe댎; o+Wz{0hpEMB瓍zmG<;@N[=<&)O̐wcB'z0r[tUR[j~~Jo<5ŏ ķڮE:G2 vU2b| Эhemf{MH,QYȒG*aYnLl#Κ<[~˚E aei,DA#nO;{WmwSV7~ x]Cou-xSeg;ATcMTߥv|N}4G,2JpGh۟[Pʎ1Tv-~¿Qҵq$>QiU9hXdp:%}|=hmieqodɴ9ı;H$ D#`b ~~ʞ7ŷ-ωm~: yrd"1ݤr+H|̿=Zy= ^YV.٭P -W6rƍt`c3m8?i-kKi#S 4P>Iǐ1JYmbF< px?&paО;y(ete5\CQ*wc(̔M4VBm o5mɵ;>\vw2F:yW}SX#{lDaڣ7J#Q!ɤ[L`,!D9XW;>2ҷsoʱY˻j^4jktzy87Χ2pv[Z6`O»7_kҵX/ ?t4dY c#W*K?=CWVϧ\%&k3a'.Rʃ_=cSVU@^-ͬXџ_!x^?|}`Hlfq7\15()ԝg¹"IRS|u~:[f?jwkCS oF(`4L0Yq__O/~1ml1-ڧn[r3,m! "P.x8 Q1x98c-řI@`v_jOugIFաb{<[9ܜ{>78tGT~<+Y#dzNO?\לּ9{_śӯ],fJی3.}߳]WZg?w-G2yoyQO83 vj_ɩ]BXIpu)$ĭn;p9Wb:ѵ=]3WS,?S6P$HcF]'?Q\7SY#2PQw_r?8bOs3ῄ|O&t즃q;kTG?2<ʯFaҿLl5E-ykiqi=kX Z-'|t?hT׋3K cF;hEzτ<7 _Gozƍ]%Ŷve{Eۃ&6 dO뵿#!*,;+[Ҿ.uoD<[4J+ѦS$%.}x銡)|f?ogM~%CO#n Vh/cž4/k2->UPqDJ"cճ1_? _4}?PQ))G 逊E~\\1QK >/ì8;nIy#@k/0!wI PK(`* N+ |'KADywNm 8+_V?{{49yh|4g "=m~&i$v_-ɘ!y 4#@ܜ'7G_7ƟٗTE!nd6|ݽO_~-^\O![Q-ʨlʼt=WxCƟ>CQhW74֬Y@۶h/h^N Լ;v1.kmQKj]0+s i1[DZ\Fm0yy_Wï NH㳴Ȗh"UoGks&mEp:\ڴ7tƸn>kqYNZ&g4(ࢭ}=: H;KXieR;C"P,C1߀r9_:>35m.msF*# zk Q?g|r4m3CK <,پ8k,io1ӏoUAEWx~h"[l*?(-\qR}?_?~+|E|?ω'Rr.]yya)!iGu*p+੟>8xKDE/\%ƣwdF 1aSz2qĿe汣Ư[qv-ryORFFeOLWMOƉƲg3iZB7X8p"S% ?mv~iZ,%u;v9-mHFvOFrS?bd ldC4!)ʸ =#b_Uu K4Kr+(E=^ekM:'=-38J1Sk˱>Xxnj5(uDZ~ st!6?xM}=|:'I ׫~Љ*ޣȯ?'oxڎcQ,洍n[d@b>Q#Au/]hݪ^=0ٲ9VG\?+dpkpUԨRif# o'4|W6]wMZK┦ f,\@fvT Ϊ˜B q?EMoξun?mR H229pM|k|Z/Wk$ٌI*ͥ_` "ݟ/@e QV(Owd6~ʗ7YŨ8&Q Lv&EI$&P%$O  %M ƿE~/YFW /:L1cjʣ+;wzOOmIԮ-d<70L T{W)ӼWj>*8ON 5MDfM":=8|o`0~QQr~ߧpv7rΡSM4֟qS)L?d/B>=3U6sgFXOY#VL15P ?÷wڂEm.չBG 0k83oFiZcMNk\lG3FKh+#۶|;-_{q!7 QDnzaN+gJ:1vV߿~S7q.1+?-96ݿU|}k@NME5GΪ$|#dcCb|GPE6 I fC<7'6j<3v~ڽ.nOoer hmܼ5PnjmZgi^M?n{nS:nf)%bRɑʔ)sPvkkt?|UG pCô8J<]5iiOKx/T>(ң9oSε ԔM&Bk|}:Cujޓ,Nd?pc#zW7xcOf)|M>PrzYL7ZFb|l~aa+^ @습\EWp_g-F89W[?|agwÚ"\ 2}f>Mk _Kh%ӒS=9daM\cWE.ZVgڭo`c-w>T|YD+q/bsyFgxkFrޝ>jvMnV,1{&Vkk]X}pgo/nό&Ӭ_dPi1Wdp$%WȬWV~6vWF(>[xpk:k3Ȓ3[0r-To_ݶS_4i#:[xV}29$d%UG<0+-?UW-<Λ]>7q!%Âk0x%~r}okh+/CO-&ouK;oyKRJ.y5|s? 麯8nV;8 ?TI~}kh~,kiw77wFL$;/~׾.]I9n%,z}@/[+ro#r\ ڷ ݗoN ~ +V X̍=׌7&XG \|:o;Cas~d  88(r zWK ~RwL9-F(1>NJ&Ŵ(oG`ǾHb#S4mkv<~5V%Eסc}Wxc;C\t폥yKkf%թrvHw A4y~klYŴw,y֎E]GR ?Ѥ3YkZUi0ȷyn!HcsHF6] 9]Xpj.oګ: deݒʊZ+H"@.d ;}̖kƿ[Ƨ i5Ɨ)0dhA73rcV ^񖅯|eOÖkT2){iL(y%W)C鏁OƏϬ~?d:ׇ,ag&Z{5 {ȅy ΘBO<cXc1kjm彆s,rI&2GomǟփmxvW?jFkĸ/"-fNvgpR AeFx7O񎗫#1r)1tlb 5zgj",xj,&M4z]ЧG/|<\=noH`w7P1=8'%|$`~5mYPSCpy:ʻ_c㾡\ SM.-?Qrk>PIl+?7_ׄ?<]Ze,:fW\3hY?D>0 ҡ<=zW3۷gmXaؿߥW●t}o6=+Ou~҄Lj.co\ھ!rI -MWџ#~@`y>g/'_|5}|/.ԧ[<1v`[aspA*|.?h펍ᣦ\&%#PepLW +\Nk]ǗD^ʝ㬟v[='Ͱ5h~-~*2|-.6̸a5u՗Z]25; ϵdHrǸQt~#xeOܲ2Q8WDG`<YAǷmjZ;HDtsj BuTiVqZY.~ZHL^28J i6?e_ o #⇅<7kR,R˭_5\BJ-X'``85鿱~u_x 7kRrDIѕIF/yM~`AW?_YփAIw\||U[iWqҾ|Qox=CvpWZBv.8 kybt{C1yHkFZZ~]{|&e^ռQumm-4ٖrO򮤑(N]+~/~_ƝrY񦻩x[@Cvp QXG"+O<XFZZdR9OLqq;y򬀀+_꺟 SHք7ewR[gW׫Q_|줮]O˟x/*{KCMU.}L? MS|0#%m9'_9 5+<3>#;mqL/W~| @0䳘6GzW?Ÿ Y -("8:l02ٵ~ p5k0*m~_wkM=?b/ҵWVrO}C8E&8ClcžDMECN}gN,,Gc{D2YыHtϿ [ĝyvE+3/Fլ/,DLyeژI,?2| ~eHyclҕO/KW{yEw(b%.׽~ |ExN~8߱~|MY=mѡ&FVI1!~~-=^Qci 6Wr $LF0F1^R~v_5[ #_R o㼻{$Y*7 L9^PJWUVn޿ωAK῿eG3l%p `x'k'D~^4[HbKͫgN/_|Ũi6zm7jK[PX(T#@ gÖ>*4-ÍOY@"Ν}t)v5Nn1L}_a?gvvma/(SFkk5 7LYT@l1sp9.Ac⋏EHGjB`U$zW_ٓc~&~v/No}k4f^^J@4?:ڼ~3*i~3֮?f 4m#g/ a-_ch9ϛ[ߥm}_C2Qǿm~#ծS~n53^h";ۘ˴|]?0k/_˧:3_h*Й8^iվ 5ݾ;YB=6ÓR|!g~}K7,Eirdhzr1_Ygs4J3tTѦ'?xy>&**RU"SqTך>c|g[' Bn&IJht4Qmm݄PNv?'ci^6Ҽkck#Jnv Y˕1I f>> OMǐhvPډ z%ӌC&4[b$g)k +'߆χAy:ŭqFE]|e}Ln6 Ϳ\=`wO?W>ϫ]]ɬ[2%䲖O9 [ md*iE_otylϵPˀ;WW߈ u5O jV{vɁ#z!v s_Eh'S}=k_GYH@Ͼ׌BYZxs$#O Žg5NҊߧE?M LO[In#_Փ˞"?{nTmgQ*k؋w]_sl|>Dڰ$Y )kY×Ε_ɡO=Om"开-"@Soߴoe<SƚA,[xVwb0;{|֞e.ZF wa>gGB8Jj򓿒K [JOr&M K"~d]0n9__ |/֝qL_ivU ?qC(*'3?$Dž4l//Yqs$!@O͑_~ xC|?%Ny0y5R@^>W ӊۍs+5a 1ikG-|O~ p?%*]cCDYcLQoIgK--59/fǸr+/ ~6_]Zv+yck"Y,JJ¿ zx>9މ{id>x4ifX)rE|q8eW^Gq`)/i[DO~_/^m`-F)؝^V7㼎\g~_|w{%\(@RIbC _Ww,n %h w Op\-J凡2?-O|wSemlj ?((r7)\񑜏_iۓ[U]7ߓK܈&V" 4eYH\'|CfB: ܖj1QJ8)k:?[χ,:]\%2Cubhe6%ݶ|QP3Iblދ? /G}%O}BJǕNF]#xq*]xtlqiOo o䵑dHCI-~ 3Mլ"{>=qsW¤(~SOO%)YoHLR}2a\:FY~(C9Uݪh%eѭc//obD_>x7V x,$ YnBcA%喑Xi?cBCF84z`m/k eVoX$ 3z e[emdWOT+t}O0I.8fWsp7}}7 :^M_k>ؾ7v55kxf[OTaӠH8wAWCv){ox_k+Hlb{vr j =ߌ5.K}2;]8q c8hT WGM_]x{ZI}:TL[ hwiCe5d]l&:';#+R춷9~ 𦫭O{i-*IGCKyUwz ;_xZZތl UdR6z:(WwI|:%!f[$-`O,Jךr5ѹD1(*mV9FA%y~^ag*V'ХԄ}/Q-{φ>&xNz-G@GNk}oƟ?i_cF|z"ВN4[{iDwF 6 n{?<t"1ӛ;9HCzes 7iUĬKTe)**)cf!IJ%Vݙ8pc^I?K_r?xSG/nmVR]GaHBxf'|@k|ly?B JPcŤ'9C8$']3\֯KkHൖh7;\]golq_?C_}qMVYC?$bq @%y?g0xr"ݬ@c#r9RAWBsc'mn^Z)ΰk5Z B2qE~1Jg' hOc)џ_O?mmfm?Ce[*1iSC1 F~F[dtI"dǸ~p1_м%#M>TַIk}C8`T!]QI}h}C'[⟀g\=ucwpB\Xcrz ^?|7ݷÿSk8ᶠJ.̤|ߵx<7I5xZ cko`bZEPx0RT.kQcR'42WA{k|ʒNr3[/v8(0q_7GfٕC3K_$Np \^ B #EU]$"';AZV?/2?4&쫪ȗSyo4Jqð;N2>t+ص5%G&őН pms1Ƅي!y$v¢7Rs1S,*SIKjR5Ms#$]kW<wv'K{j-ԫ<|Lxkp|g?lψIwCx.x~üG9O[m 5' uM}ٻQ𖹥ݴi~M?f$ 22:W7_ZTڮhX)$['#b;rpWG|CǩImJ# 93X)PکmkC9P[2c~W}B_^45vh~et|Sÿ tWÞYomf̲ٜ fI>ΤM 8M7/j֚c@rn@%y29U?bm|$V\ R+rq5xMR}WA=m:h% |e՗4k%6Rx!{\AjvҠA q$ p cFkU?n>yɉrpp7(Py?15<3'H$5;V >Ӈsl#Q`H^E|_xThi و"vm\6l⾧UT4lRRj^b-R[mlMJ!mª6]m;oſdZXthpQYq#vbqsx4VѼS---čam FF+PڃDud{Xv uPnq];Dox?T||AqCbon$ח&`WF9%|NԤ7/o!rL $G,/&[Ƭ7¹CvU9M;4mR8X6 RNNMH"AFaK(ҹWԵN䃅%z}w9J =P=梐!K8H^A_t)l{[w2اulҼY~'Kf.!d]G:WǪx^ZXH#+q5hmj)Cv@ ؊FN:aIzޟ"Y0;F81'0~=?D<81Ǜ-d quq񪌟y[oyYѣ&#_-;៎3LdX%vlhJpU*+8/ۓᏂ/ϣjW] PD2+cƄ7b b{¾+7F@X5Emћ+wq݅]D ˤ.ZGj0K$P̕kU,xe cMX Y.dSn0ἴRzgz Y۪C 10=~;H||' ̤21W vsO߇uX/U[m?hz9R[m9cx|n<@;q1_>J-ub߽rȱVݎH͎ ԝ3"bPw]s߆=[ZRGl$-n~돼_-ῂ<% æq[ a#dvW_?.ۨ|4҉/FHZ.Vl CR2_tU;Ē> ҿ3|Xu+C8aׂMnGׇ>*j8 EdEW$0SwVt^w~HXB#2Aʁq^7-m{V3|9kj 㯆+#Px f cd@/2˅I-c|MrDW=_S'|g+Sa71Bݿcq8 ~8| >\u(n.%i!R7?)l_o$+ZxCw?ghͷFPS0$B],nQ_)| ?keuy=7hE`.+12 d/3mH R)QTcdǽ(RM&Io6~ r19'c Ēa㝠}pvY]~j-4=_đ5ݵו:Jn7˳e(WvHAq5/i;+={vkSX.5D0m8k ,T\OM{ߡ/? > m/[׬h­̻u,} q]MC`7WIo x 0br +G&uDծK ˵ Y3ڿZgoZǀ~'j =^D/!xf7t#)vNk#岼uiRIʗ}֝K =.F[}?H}C^X^"me5C#'p&>fr6\ǿ~0*ɮ_\5署ݻH" q_w_MM>|-: p bq;pzvN߳hk 9/b46pF$|9⾿'2=m^s^ʟf$ci#utcUqiJuH5nm-X~k^ռAw,&6J FvBM,A;Gq_/Xe;#kx7{!7N1|v, VN\EE#2L8?\GnbɈy8xiԝnW[zib)*\ˣoE~YwLZ>~rbD^vN\I`@'i(~m<9w^"Zk^ .e@!? ^: *cτ~GwSh;LmZU9]>8}UG_ijvdF68EyRJ,vŎsV|-b)Rt|tWM3ƚ4j=+Ǹ5`e@sȯ>'Eq;|Ed:n Kx& -ɄCpg]g;h]w_ѵɡ5Pg*?v~UfV;v|c#>xg^eK}MdhgnDq=X+ԱG F>\:]o˷ʟ~>G'iK5U {eQ`@5P^4D~6m>YF_W|O7-3oi0| nHNq_~xbo mϸ)BlFwyێb8NqMPﵻ58ko~o埲?o%nE#$Bhb7"e԰Sr*A~ mOs?o.eYE%i+q2`;v ~dv#6 9@Xmu'ky[ZK v Ō;TٞYF=|/zvm>5*ڋ@1_[^<1)3#]uMB_&i{"Ek!:./+Wo[o[QņxrV(R )R=pE~_[bhWOîkz:j>"plZЂV)xYJC]ܠ| db^q}?N3Ioǝ;L,>!Gzn8al L2+ = Q][GQ5̶]s$?(,#q_xè|۬cG,Y9z_տVOW"-ke"YdEڷ +<qMy-zǾ `F)k# A$_ꗚKim\Hbj|ȌFB|#6_}'߿קHTX20]>Ǐj=ƅ4Cs95Et |~.<_2K?D.yAV \y;pY)f=)&zu}_\r.em6&w߲ōJGմn",MrΈrO1'ff9>+xLYr'`2$/nJ:4Oÿ].vRQ0!@Gdթx\E$wJ9Z& k7lO69B_wh◇:8(+FWKoStA=M:m?la bn*zÿg/YEXVaFgis?Wxowx>{(> #-%V^N+TAŸΉc>OgakjY<$ a8:mxLI;S(<#U>kzzO z'W)&ͬS'-mU?|(+#mZ1vVb3Ӯ3~|Sk?ïoi2bRDITם zC|OjX~e >en>v"%F2vv23:,Ď׮T)BMn|w ;֩u%$ii%kI4µIǏSᗎ-[Sg5ȠE΃;@9z|/Cz=ߏY- &sSTVR"U>n|kǍ_C!nd+:r;n^|jlMtv6#e|f\0c`beᑅx{mJ;9$ p2pTA>WD4E$m()wsӏ~ʰ؉H=p/NG'o'B-7q[.3s$}]@8i'37z޳š'mkm+ύk$e#^WϿįz ᶝ%kGq)F #:RclUQ~guܛ/~ 5K9u *9YYIK7۫}Bڟ4GS8Ц}d#GiYڷޫXC,j6ZEK"Qq̾1>(B|BdKӘ&q$H@DH 1(lWe/CxB$0M߹xP£ry^ PrNO;w9ό!UeUm[OK%|mq4>HO1mnq)t}k_4sVk3!xo&@It~گOZX^joaK(_0]Gl,eͅ9?߂ioi 4/z߈){r% /1N&W¥~ Źv? {xGoK.X,VSUY,~Dx+ GxMA֛4ɏD>N-؎+QX`;W-awAG7Y%luESk욞>c?`fUm?i?o]k-M7T𮍦~剈IxaἼy3 X29B0tOm?PhB2v~NmY`ʸp4vr.16h~&iӡ,N:ǧC_12xR]V{qHv"36_r(m5Jl$L̵6hCm;о!?1v^.B,oNx8uLu!8n/68]hi"p0^WϰnϞ.a1U'to_ nu -ʗ<*R ~OwSxLK3K1qJ3olj?Y[%ؕ١("rT2 I]#[GyQ$bPO 2\ pX{G0Oޝ^ k<ۻa5wy@eI+Iw,]7g{[??gK ^] wZe thfC/-'mG,/z_4w qo1H1818i֖]<=c0Y7I4KƝtφb?ٓV>Dylu[]J ,0 ¾{ iu}Ϗ4kWLj|67O|V%cW>lOu v?2EkzIGtl//o -եo.h1Da]p$ 7Djٙ9i}IAy`KD^}r\6_K Zt?Bhi}[x?7P[,H.Ef%DwN_/½fKیXF;1_W3ߨxg:ԯ/|O/ÞF)ifҡE2;WX? |EN}fu)nM~ROm,pZO2p[cTr+7›/"Yt¨Wo o&m7W414Eq <;Ue)C?RY6]WGܕROG_EGC/Wᵏk[Ufka2wns$"^o[N] + EHW/oW!Q['ԮqҾ>`h?/? --HajU$:)qy,*X]G?O8`kשMz[P:7t|teޫ_-Ƴ>GchYR@$W>9Ͷ 4#ƞQ};\I[ mˤ[7?)UO ;VU;c\rC+hBr&wI#}egll:݈-$v,%Lҕf;>!ΣȝXΤׯT9i:5IÛEm??IZVD{%kۆ8O%>Xh*G8 lMK1Ҽ]oCupt@2g|olϵ# \=O&gW$Es#n(X**8MC է}*+su1sN U񯌿gJWtY|({E 2a!i $|L_^#Q.Mu$#XGxȋ'ֿ/:Qn!I%gtWn6x,Y mzx^m4R/@{ȍf~;-w+0+g jtc;5nO_/|4|Y>ֶ->*0_< HQ>߉cH4M)+MGjIsq,q9h䍃|t ⾝+jj e)DcIZ4m0pxZ'+˦N[^u[MDc2G#V$Fa(G/?OC|I#Wߗ?&-9g>*Ip1+4+Y<q15C=k}ǀCKS/c%ꖷ1l8|T`%ޤ!E 3p69}$?{~lEmjBTs$T9)=ӵ}C/g]xf.&;6rn1Tׂ/JH.x6+(8^k7Û+=+솞7r}p'U(4~~_[O֚?<,2io#(fqM͑Jd~_;/v/'e 3+qQ ?.0_tQ 5<ݪrOQ_xe#/5ҲqZ]q+sB+n*/d;Gx+h\ei*[W-%#XE t~<⏉>Rћ{qoJyY c+Oz_iVkZBFAH_7cǡ/tYGd#6ߓp@zkhӮz?+|;n(q$9t_sേøF5 %fw&qqHzʼn~=|OF_-k"l, (*Gl1?!m-hMwleb;|5fdW+ epWW9]:WS#\>V R6Jl}uV;vHɜlFFG+u=oYG 2π~zٷzßu{r Qkg-;ٜamd簯F3x_VIi Jwy$L.WNʟgJXi}36^T 5 iB/٣qLn4,E1lcrpGw/ZozZd2o&kt>Bltb|W~ ּuƑ1\[N wl}E~~ZnjZ'Lz;hYGI\ȯŒž)=zѽVmE 0?eʣXfUJOc߉~W\K@{l3,r9Ǧk>,O< yg?َVH#o[aLh61_Zϋ<{#_׏5էW8@|mXL>Ic~GI^.Im˹$-$s;r3æDž$yy߆2JN|k]6v{?e ޴,oK?_ ~~4o6P-Q:U0 OnF+ ` ߈7/5?QKv=r m?ŸAHQ?f6ƉXx̙R, ᯍ~3xI~Y\\*5!xduvs'}͢0_k)dx*X4֏ZK.b6y"WRN^p0'&-Ofqa^1+xǿ֟eǯ|4_;5?حʍ4:y n2ь6Keg'N4m#÷M}k6@b嘚8} HwBPWgkB{G얂Bݦ^k[<< v;D~+#Um6y1섯=:ncWז^bk=|(jzn AcЅRDbgݝsijL dw_V׳Wֹ<5-=?*aOi_6%w! ھaexUDw7V3śpѰD2) H^֩jiU֡< ̀IF7A$ z_qG w7x׌>EǎKۨF ȰD0pS I ?k6ajV=‚#1Dt|2~/\<_Jt:燧5i-?Q=|W-5{o7jiz/v Ĭ)'Skr>~//ٳZi0haeqWa _8Z=V0ǀGO+   @{WK}N/n<|]WprV?$1ZKd~yi76,mkclUVFK+Dp נjڄ:Y"6#8?~ğ7V^'Mb;Ke5H2([xZm⼻ xGԼ.6= 0 &tnHU"xܐHc^7QJJ ^7,oj]i -r]r1#o+6Z]~d1oi0LgB~m+UֶE,~+cn;j:9zQ->,R2|Qo|5[mڢ:d ce۶/$TFq$WWK{_{R5fKg#lpT0>R=qycwʑyݗR.n,K?_,MNA%ʹ|w-XviٯV?Y> k^({><К g+byPe`Yx] d_ा"㯇c G#BP@f t+nEθQ%ôHIN&֢9u^\ϣZ[8՗*Kz~[ׄ5?t6R5\.x%/%=zG_ښ_g -Q #4qU>ÅswJr*e?jx[E1g:(o/'¶kl|fP6HEN{VKP cV,Ҩ#Z7tp,~fǯWyb{O^ <$7o4S'cs@$#09|C[ȡ܈c [}Ő_{::W?NT1%dq1TOl{gp$1Ȼ%rX9c8+|eQ*U#fm n-6F:hycʩwvWjL~tݤ$P``vq8`[}* R!y죧>l`vY½9]+nx{VEmT-د37 š]3i6H}Kyj1ܐ 9ČUа8#I5EΙ$ QX+H}w-+ V+қ/D~p=?gӴXtfrY ($܊W=jɩjBV=UV` 7܏~*@Sx]On$[.11mu8˼Eh7nak#B2_J;eWZiLb!ľafľu!O3Y\I$V%<6$dv8QiGsa.m^Ht&GN/hq}żDI-?{]9@ѷvS:?mX [ g>{W9imeT3$h# (1WKO> j}m"#;Cv8%O^&im ?9ۜ:rqzWx\i%v&\DʪUrN q]|kzjʑP{>f⏇1ӵM,n.ѢTW|'O|`Osi/ijR\7s}/+ kGio-,yT:(glxBܼKRUq\YON*M{#|ώ|" O=:Xⷎ0Aqn1_;^jw7%\ܥ2>5ͧ]i^}mB0{ҖG|n+'^^kSܻ18EIv?1foI\\]RFf' kKH+{uP@=j/%t[è8|eH=:W~[ӡQ˜foGA|ACxOa`4|yct-+m?aI?gSὭ-pA'rHQzGhO1Zw __OO]#kKuJ!i%P<n=8[яGU9M%cA?oio\:2%q%ٚaGP"1( _L~з?Uֽ.I_iXo-.SrapEl^{}^6[ <5 "jzb0[u`qq)8quJ ms7.e-{ƺ뗖%RɍZDEm9MmѸ?7$|9V:Ƴb0Y 5DjBz. W+Z_gk8Eia]2l.W25r߳ď x7t? />M]Bs$wYvƻYA*0pMz\m.V{y'~8VU6w}տSlI z=ޣnDf.vynnدύ GM|xo>|il,XOo[Do%$ed8#qʊK|-ÚUB_hK#K*Ғ~"B1߶Gmd_~1.hΫ{gҴk9aį}{^*8$?̨RvK]NO_О"þ^]?jOR枞%ԒY&Ѽ;Vlz?l5MRPl๹[Mm,rNɐ]!Bdd_v@(濠gZTeXn6PzW:IxSjzmmmlYD^2I2?4hE7_?#)Ek'{qq%lzǽ"{Yuk 4IUlo&o$*s#RRMNH5x[ľ >k1@}cNk?..4گ_-Hi1l|8?|#_~h|SʞdLr|ѿ>^~q]/~Z24*"㷈 .02+#o IJKw_ .*Tkg{{m:ᇶbmlF-%_N+?_0RlԣR '|7g9t?_mjHA,񏸹8 4";-I'3rgrYz恮yhY;LW Ҿv} 01.'ج-F[uI%že%~m/|ߒCSK/hGUѭ/n.1XA{A#VR aNyۻNLpλwGUlWZv.d9 <_G+Yt|) ֖a~!Hy`,;?]/fb`6\cM\ gZzhm'F `nl;rCr8⾎PdV 3@|Ҩxd .F8|WǧxH2:?ׁϪWzPLxIEa3B81t'ǹŸ~yGp}ogNR-U~$k1$R64111qUo#ocgT_{uٯ#vt~ yn?K^^[(iѯZ2VvՖx긯d'Wx>:mmj;9!s-3y7C1G9^5)_s<,4`XjkpFS:̣q0~]^zR%kVKo=ϩy ;3AڨLI*m9%2O">tzㅵKqeq;T`sӎqҼ>1oIu%6-W\lca^'G.Z#/:ʇ0exl8 E6>uՏzmڛ Ǹ 2"`3R1pEv ~.k:}OMk"K4H)@ZF1U_)go5߂ _;%'Ю/6}0l (+.EM.nu4k1o+B͹Y ĬN6yG<*M/q 눡;c:Z~ mAm} wʹtq,X6~ c~tÿ|iAbR4-߶i}j :橫<~jZoosck 2-h|˗x} _kݧAIZJdގD-Ű,)(#N;x"j >Aw׷yn~,bNk{qIk^û|3^Zd+4DZ|/V}}+q=>t*MC>-bP\Is'Ň $=+?O k`_.)|R4}ku{=M.eHqkUh_ʘ_Ҿ Rw^G~;.F|%:piZ*QnPln_tqw#/0M2)G5,^9o[w+Hkzv*Xu]ǎthqNOk=Nx\"M+{Tu -8\n_Jj:^ݫOp+D[jFWz$k ɭB^jV^7X ,q\yc5ߊ2+4b/Q =n/'[ɭT,b=HbH _υట< OgMKUuۣx %5X+ۆk W*ң"gaxkþmtD2wEA#ƥːq{ʴ{SfWDŽ~/s|J,.<'KO`7|bpY;6+_%ѭma[9#w$tlWLҕ:Sv/D".ծS&k>:oXYY #|Ҝb;QGƿS :mS)-+5[[q!ϓ1ko'OxrHS&xLN]Ռ7/Y+cFݗ~0xXZm,t+ ̩ 8v0׹QV8JNQQe/zj 究c C#pxX+ /|8Ē*-ſo O`?uo?Zޣ 6Sd@cs(Q:,Nd"{ M]Е8IX?ᯂ7[/ݵֳi'5>),c K{X8i6e/p*Ê$7/S7^?mn)lyV?QI 1$u®Yڗ)kigu춐!o6Y C;L>8smb-&TCjQy±gt?ڷ߳?jOYIk}^X9"mE'O.Aw$@J)4O ngW.3kZͨDI-k O0]IF?2*K4Oki<_JZ/>9О!$c72{Jkk&X,7s*G3w+PQ%\+y_ !ȯOڗH%Ҥ|"?!ƍ[q\ZTU*YYNAiSkzsx|זfs(+] \wWn'C =.n{]:IMGQH pfQL%\k;|mᯆ o ^ cO=5.YlQ!Y6+D nM!Z{0j ˩k-Կ릘%}ؖmp:WۿIh?> >/,V=#<#q& 8WEs[ѨUoO;(acuq9vw'N95x梥jV嶖QH_GO5Zoӥ4yϜ[㏆ݻ62@?)~xw4"jÓ[$ 1q.T!q ( R`1_×/o+Smwf˸ϚpՉ_~__7|n}_jW^X]zeybm=,?*n(8a~(pjzJRV{4=p*5/~h>MI X-#;my gp>~5x3^⥞'uMg#'hܮR6>Ce,Eז+9p9MxI63jv%On?8f_4 i5aw?cV+}j;h~%ŦH|ԙxWkp=s_+_"nm{w;u+t9!m 0NHXc:Ym _*/EQXi&I.ЩKHl ,2ۓ?8O–VdCq`zpy;Wn1PE*q,NZ}V3~B𽙲t+dEk (71YJd m؟x/Z~<-żCusenUw8ݖ aڋ_I_|Fސo$27px ŸQ㿌ZwΝiq;Q+]d8uY^%35:Lo'8kW}c;E-}[dߺp*y5'+թ׶gH$Fql+ռ5,<ɀI!F\7z>8|d[|? u!1R)ڀ!(P`OݯVRhu/Ap!7|C/&2DwJU>3_/lmW)V^qq}4KC':0˽__|g);j__ˏ1hbEX Z )?gׇ-|q iYG(8K?%M> ] ) dӭ&a]1nckj/Zƞ7$DҴ+۹$R`Xa@g(pktC&0MyҿU6ݝcR̹xHmV:ЃM{TrO=Yگ. JK^y:mgGʂ] p!_}XiGgkR~)յUc2HF m+GL쒽R+7G|Tt/' FCus–i'vELbO1?i,g5¤|EP5M~U]WliƂDͥ^$J-i.h%QQI|9o/b]U@{:؎_Oo2_ ᗂh x@WInLdg}mcIF__ f:>mi5dF\d-Ðy➊H ?-h_KggKMjڶ3c$vkr$+XEumu'g&|hw|6|{6u{UVE `Rd(}>MxS'u b_5 IYI3Jn偯Oe?jZmN]5[侳7%tš&bErs' }/s/Oσ~9WO9LJ׭u 4ˈl|= $R0m:|OeysIJ&x\ц+ҬJ+\Ϗ9}+^II]W\IccƶHZwQ~~u㟉3PEe'KLC[Ǖ Ϲ݊7 $NHɡjsUyAPs L$PZwm9iT[saxE݆"?G[ύU)<7{q:R©(;X f|HI XI|'qxkƓ܈DIeۍ#hs<_.i7tk[_ *-5֛v~YeO |6?E/X>~/KXݼGڭ֑Y܃<\Gs$B 9UbY")klt :BnppvH5mZƵĚ5a4пd"1H;__oZ|ڑX "pH\}q]~J\G3쪠ǰMRa}:r߲W[|~/qlt{z?kf>mrc%.q"7}p{W6kƟ9Czv"!ھcаQ}DPxoJ_h-pP2S}q־h#j>7$b[h>2jYl8@+ Fk,Tm{[q9HWO[_w~/hֶ3&Vg+k:$^)2qa߁ok zƫxjmNOOR (|ywʽþ|>"I K[ JI]Ã<?ѵ4Qhˣ927ߠ>`(⧴_/_ 8vp/cß5V^/=#7"lB$]cDy%k 񶾿$äͭ\k|9-.3jč/Wz]`Uw1oƋ).|s͞Y7y|P[DDIy:}3,4x4XgX# K|ń D 5b ^p?.!'P!te3/-B k㿈$ c eZ>۶%3\`"u$ye55u= Gۍ6=AczcS.k w?@|9≵KEATa_-VrvH'W|j7:4n0O+xYfc6@,V6h:'V]+m6lmone6yd2|-[-q('{Bz[\El q\e&yd=Wf[cA%Q؟N+zëiV E(Zm۱YLJxШovn]R>G;GVuqYOyPuiW>a޲ٷf1Gnw( d|5sgw']8L ȇ$dN2 RQ>4UF|aG `SCYE$C;`6_>X/tfˋy6h@0E~oW}֏gh a>rbh- _:_czǏe?z4/I[=( -bT4`ȩ˔Ag(St$~-;ZҬt8yе ǭ}źl-mu`נ˟~Ӣ[|I|I Fi7k2D%hbh\U?[[D^#K_%hƟ-)q[*yvQI{h{.TM~}y23=8xUzluWM>Y#[P$0nd2AX:Xxƶ? QIxY[#IB0QAjj{o?u`xRI"I!m\@9pG9X­dtPg=?ί=|JE=G{x$#ZH^<> {v;k篆w.+(yhY& =+۔OlckH-> 'B"`{)JtoطFm2=7ڱU3_|e~Nngk^ߣ?qଁPrWn=Rֹz&H+!\ WΟt%yڃy0q/EA_]@mub)gQldQF,xb@$+7gL[S}ƳZ'Fsëwnwx'moݩmw 8ằP_e~3~)J֯-o9EqqnOa_:Ï>5Լ=XZx:c\$X8fEM+ìpC~6~%k;LI)7PII~~7ӭ1뺜Eqk۸vcdWfXSQu?Gཿ-O\W𵝱Y <n\7|CF˩'NpxYԼW7ZLM_;lkۣ;-A-O,"x4˟ izam2Ac} Ÿ@Ri%bqj ZK[>kOn.-f1Z67:p$ubh.lv #DS!;JpCCڏE<7|"Y[x;.}d}u{}Ģ3ʱ| ̫_m]D]nC:G* (f7YXAMGCߋt_OΧ-<~*n*Lk?Q_X./.EΛ^uqg mm|eB w&$[E>Xeod`Ox; $`?.xK4nk˥]`Y[}GƯ^/c&c}mw0`5C@$qӯ՟ROڏޓjזk A_fi-&I]8?3Geiv/fu7|ڎiڼNy\M뗹ǵӤM;/ߔ|H{0c߀߰jml|9sךvk,Z9b,YW:~ +WO}k2DD֧u'{ZwZ%mbnyo WRI,>bլ*qV\p|Y{Dwd1W_ h6E$-dh#}3&y\PlWčvJu@WyP|c;qͪB#|꤃+⼻}|#QizOQII$u>>4-GXSykq71&0Ƚ;x~w1Aܰ'6o+G h`\c";pG_jhh^ʾeV;y8j  46KO#}=ȹ7_V褰𵴬'0 xT.LV1FVgN~R8ymv7mM-]Q^\w,8|62ƌxyL3S_I.7m:CUS71gJRU-ZmW]-Bz# Sis2~f^;}j[_K`wp9Q]C__Z~oF$w__~ L~ I4˰rH91Iq8#_^ḴB['>d2e \ȍwp}LW૸8 Ww^>'VHtDo$UI>]G1,⫆Y%F^ocíM'n羵ca-FcR* >Fðڳ5[-9%̅eYd³#cjAt]QuKhԬ$pq1Һe3T0z}Oio!L,gxfϗl8 q\x+W S}nKIHw&Ӗatx5b9妍8U{yv+k*F -ͿPwm Y6#Z2u*ҊNj9v?m4leU][r uN #Ȕ0@A s\On8&UtնYg[{JÞ]m>tz-yLhIW /-}ONPHn yb>}K|B=H>h",U,d1@_U!DzpXxuW'#w⟺&OTYՌlXmU ("5^Ea4h1I'ͷq sҿW4x>[=?3G]%X ˌ2z"[/ɾwҬN ZO1|*." P{axNvmgZƫ{&Y.d26UPv)fiF̌|)/}P/,:mig3=<Xxӌ:jtZ$|r_jVYL[0h扶:02:̸#}e(i-*"Ax %Sg5T|ܞ0=}1_H߰핦M^8-4n"y,*e7y5.ː,CQ_ J_Ŋ~0X&Yx"*w#2K HpZKJǨ_Y~C|7> >Eo*0v|1EHmblAЊʗ,?9sFkfha+'F4?ɹXtRk?wkz"՜'v;{Wݟ&& >%.^k&,N6Gi_ ~HTv#&! M{gL毩[m![(AC8_h}"!1gˆ~Qֿ6ko #ZMD02scc\ܑ  &-gV|u@ҾAFx B-l / *-pD(<_ |1|`ӵ뺎c:T8-c14< 2J+ظҧՍ%3v}=gZp 8g*ոԣ[-]?~:<9 cmM@C cs d++:@ߟ&v$:FkEne u'p1_/I|X_5-5ng[;{g++SƑɔϙ#>^K;ޠn##捾Bv(ʳHjWΤF^Km/쏄4*֣n4{Wz=mdk[}v=cՙ~Y3:v"Ŀ -\cp*.h(r{ĝIf pc^su [[,`6*"cs[>b̴Yrn|>2Fzu~9Gnyq!i0t_ૼ\ 2[|e#X?.y| 5ZnuҬ.TJ?)Jwpkv]VRǚ2pk^Mb2ԕ?m^t|hfN%xg~7Ӎdu5 1WX[gAauչ$luA*q*nvX%vӭ&r!rBIs )$j;&υZ|M4Ye/p S;T/GKNzqjN+7e$yd$D i :GT+Tkܿ # {+yw-R)UmcV}̌:m'r>P3FO t{NGRh.Fetޙ1{ş?\ў#Ya>5G I$Jb${9˔V0?[k){mQ|[Zy+*ZǴr8O:8xaiIj'"NTb,sjZ2 xc` WWotSN+'-7b#w?8X) b)"mGJ%-S<~(b05(aC|<(`jXRS?iwsۻ^i-6 #gٗ?14^{Sf$wW=p+Y:,|EZkE ӡ4Sm~$ah'*žh_c)l& 9bq(׋&6>Z8nX).k=֧/[sa4"33}#LaF-8xm$aqeu R؟N DBo}k'r^wiI hy&@ct~M]n~XL.?/|>2Q%zßȼgSfLRwJ\e\ѳӥ GK^?O?Q52\G@R29#/状lۋ#l ~@zw[ nW1ui;,?1uUbڴa)m/yYEJ.kQT?ݨj AcR?{0ھ67 |bcxEVmipPeٍFhX+Fz3_csOC'@_Sqy=T f%[ݲUHW|W[n^?|;˱Xti'9\.Jm?,w/ؓ\w ^,nԷB"'psOrQռ|gm:( &/⻵hnƖ?JL;[OS>$5-b) 7U dP1bABzg qt~j6N0⿥?1С5q:[kiwҾ^ '|U귺:( kш5{'Vt#o3[FP4:|QO6m[Ϧk飲yΓI$MnІ ̍^#Ӿ!*hP_FgYlM) W螙E_xş<3uxW=*eS,i|۵&f,Y kU|?>/: _hZlozmLգBQ?FKyq}|~ƿ7|3>IYaILIfʑ9;Tc?xmz"M#ȰU؈NaT MI h5\qmՙL aXG|v|g0TV[ 䴱JtOqE j/֒ed;T;9r:ᛏZX|yXv$xlu7w6$Z} r"v^دſ.|5SKR[B6=+llG-{ot~Ee<'%eWvMg_N?Y[iZDqȑ(_8`=r1_zĻ_j? kC%ʹQ, *LbTGyrU}k%wG}Uٵ1mwbC苻~}]{Y5}n2۹C_ ;~lc'cۡ$ͮ @$'y2+[I%xf3ve ?)> |q7o@&Z9L(%a*gp|ok36I|; dP^I%ԏ ZUsxRJψ1{=31M*]H~P 7m*^viUFP|s|A𝎫a(dhYp?W e߷<[;9t`͍ufrH8DL~^]ExJ%!-NYWw(;W? GK~\gt2Kf^8*~+WĜ? s]7,=HokYb~ x|; >I!43dBᔤF`:˜UѾ>=*NE}2{ mA"]bMoa);R6߁&7[߉%U盏HAO~+|,YÑ4@Y5m-a T92|TjrKH/sğ SaqUҗ3P^״f+\OGky_ZW? TkhZC[ZKiwb4oC˹6nO]O? ƿ(+¾!k>#WxcFUʶ׀nEHxߖ~ ~>k tH4)\.wc}\.xJ{iu'd)r^I994_?rgԿ # kR"yR>¿j7r .IR1a{ _hd-⥓#/wX|gOJ(m{c洓Op,!'`ztK ʻ燈^#/bDG΋ǷWw.,Y@a+,z:S`qRE+#3\sd7s ~u>Vo/%RWi'$/lz⿔_xbDKr4ǃuWV9bM[J &>THڿ,w.|^_G^ f4gqGnh]༐_h>J 1~?k:4P٦zIeǏ<=f(ږv~٘OWm`2Sw0EFN} W_[,{k9o+%+|M|&wftWR$O3 /݇z'X*6u)=r@\aE\l=Y0vb.B{Omt@QqF.~Z3[|']cx+DQ|OJ+*1iWbxWO3OG7 /v除,3hF:jZn+ er8 ~&.KmXԃq188~Y9(ږ#>X]ׅ-$d.9#j)t[AmQK}ۏAǎWG Sz#':u6rH'ѼA]BWe1k]\4F?2 1ۯ &<@oeqyE{O417ڣλB6C oV_ş&>&|X}'Q"}6;, rNE'0!Vo! ioyx~8qChB׿uvWXQ让?ދo+gB _wKVzm"[K:B$ G#w-k]?Oߥ]g3JӜ,\_RG# $mʺ\PXl}7Wг/ƭ.]е >X`ɀF[W_om:D Y*ڢ|('_wc|1A|$h[oB?;P L%VRUo'ӬH@HҿxFNQTrX&#|5|eڥ y)efcms`yJ/+I~#xgQx5D/mQU vp?z5/ ~H8 ʿDB$N> ʬmevף~xd[ϕc;g\O^>t &iy7t ?\W_Ҽ1'ؾA,,WL?W׍=[ݦg3DY~I_f %vW)OHOeT+%PlLi\RrJ2;W4?(1—\;qtg/Z%գ/ln۽~EXa[(|k>}5PK,n;6rq&Nx?(k0T樷~c)zi٫ >!YMa3i`% 6(!rs_m'J6Vе Z@[@)cfE~5t4RHk&8Ui:dz a//5 :KeeEHr2$ xօ |21c{Zס'^bq"U)Mw|vPz%{Y?Cp՞x'#nۍ6`rzW^ k_4 |]Fo .E?%@4`fU•b?jƻ:힮۬5OqOn ccW&[RRUhٖ[[ ^T+ǖKFoa}o7j^֒9<<#9E[F2P~k>I1$I_- >pvx_ ēB?yn-d|cƼ.U_2=4>?D>,x_i&}h)V1؀2ƾ=߇.tKKbt%ca68wxfώ+^ vs )0ZAtB1_Wʿ,l5VdYUF!ߐHd3+L\wWmmo>h=tݏd Xj?t=:Dϕ:&BL 8k#VሇWᒰkQMrVVvy[+ \F?BtOa$;H]H$}1?d?Q_4;O|;+X޲mYiZ14S6I?Nͱ^֍7l~irNQ= }R+kj+ \ܩ0 ĥ =7⿇hkg&@ܫ2{W߿k^V0đCCm?KҴ_5+fym:C˷`uZHXxÒ:8Dڻ^Vc2LVWAM[[&w߈%SxK][cߟ(,#-|R@#5xǞ!OuMUݔG3c}+|T+ }O(Ɲas.O\ȌFcDm5t u_]l9Ǖs;%}5Ӧrs=;x 9 Wo޿ΰŦ@wM'WUo*Z#߀q4ѡ>egy7ˌK AI#ӴW!>5 m`|[I#!=s6 O-͝쁧ϥJ:Hvpx+&AR:/;KG{tm3lMheTjpnfzAE3s_M\_kNa\8sfl {z KιM_`N{Ƃ?xgVTZۃU`7{į+cl;c4N4Eԍ; J,`NGkDvu\HKdz~CsKK 1=kK|IgK)dv q&#ah﹛l`?_Wq%˸HYI~cY 4cSOzTMI Kn}.PE-o*  O#/ᴳe2D<eYf"tEbDlU3᾽bѷ8 *=_cㆡQV?=b+djLmrZyWb}]O~r:{XJyijkG:?󕂨x";   /^jH@6 duٓa/ſmf=Z[J6]FB-yʊb{%ow~Ю8Z߁{xo*" -}ujȨwoHbI}%`rJ"8{*QiS\o_-:jQ[-GjWf B*!mQڤr&|}lhm7`_i5Sa wλwoo6xoھ;,>Hbv6Oqe'oqھ)dH mMz,/nuM^/u`c?s8z}+=alۙc,#~1;#cazQ}7iKo:< IK+dc(?:7x#:ƾ;>2{_ʲ[ZXNePE~c<=qolSGpYπk0 ~__/7t\2:Ӷߙ<`qM6HoۊgM;>x{JaȲeaW^>"~v8`բIQCB͌tʿ!?3 ,_\11$ha_7_`~0Yq,9Y q`~˝g4*ĉHd}*1U! (+ n_[MWRAG}&[n2o+l{u+j9csϣG|ps{)]B(\+*1_^o+)xwlbUٙj%Փ{Ldz_~FkhT6I!//;nAr&m )ukl/NK9SsʂtChk8WKlo,Ko'i7^]^A2FQ!qЕoA^gMo>Z{19;|e[ȍ3q7 }s⯌"]鶫 9ifq7=o~? tm)%\"6bxvg|a?"~ Ҿ$W5.u:N5lK4nݣy#+ H,IxCWQXˤjsi6jK=i _Qu啿ۊ/|' : ֛i^~S_-rѫ*mNNUr q WHLʁJAIim4< ׼_~6H/_$(qoqw|٭?_1m2%VaPOQ>~R~G|_1kKs9ړ`$sPؘ%VqLz/*q@ӜS<ðBy"m_\c  tmm*x|M/Sr=Uq; ?|Q㷟㾅kn𢇑I3JM/YI}xy-mw̓7WķuKM}CW M+IF[L6 p\c6MfiƜ BfX|߻dnkQK,sOa_P ;-,cjד, kIUvh|BkW Q2Vi;]v}}B7v* W$wk QbgXn{Y{6׏ҼFl/;z֑RC/##lgv`oUTGGvE忳uh"2 3" |_⭆K{YNӒ@1 f+MK^OM} F$ 1_=K<qVT?2II:&w1ll{{ [ę`8=+\v^j+HcLH(U;c{}fIW&2x>_WC=%ڹdMhT,6QO' ~{{כQ(HW!v`iZޱi=vBo8qqNU$NցXbe,1Q_gE[4D?_ Žʵ']g|'℗=ޫgu“$xVHs9z˩\^]}6q0?u)`/>'kyvѮ2N"1 8 w= V>^&o>)|LDLYI?{e!ˁ }#^|?> #FXѮJs 1akg$h|o~þ?RmdU;JPAvYz^{j iq^O&ЋY0 x}~Jl NM"TdU(NW/=KKڈ~b:tn>Eʄs`8 x)0@؊sxv3i g61,k('H^#Üӥ~[?m=qUtǾФ3fRkw7^SG\JѷGw>ğ -; @+4uG8n>|̕)CHXk27Z:K2hގDv:X/r0 _^2SO҄ 6M퐢 |HwJۿy!g݁_[`@ =?.:F)Q0 HD8.{jij$}O\Ur [ }2?<o\AT&@#A *?5M?<#Zicú'-r-"zʼ7^9uHuFsYJ{t:F0R2~8Ӽ6\ n@?>:UKo+^bhvF@wJB㷯B+GZ:h:u UM~~О0Fi3A$W9wH~+2j ?ra#v:b:mif#w \bmz}yiCWc2Y \ ּo-~gu A "%Xzq_ex:TN2wUԜOZ_+g$,PK+dѦT2NOay Ş~!wm46 O WaDǻ q_wMW^/<iO}H x=+b[_r}Ac8wG`s8QgxX0Nr })G +s8|IyhgnWw )i ̺7[ѳ[)05܈vLOEKWҴ6[=& +K԰B$(WMwAx~Y7"nr\8 Pp=+渃N>Yi֓M}l։蕛6 n_[^miL/ 0F >.wY>hZbkN^]2$"Wx7寍hwG ;$F+c_<$t?ZѴۘZxux Ŝq]D"ae8)ԏ_e*Stoc:m_D~mrUBdha]Ѣh͊tI-fGŹvX^7_9h|#g–sj| д6I/{(:Gpdz}C{(qCV_[OfKAsDpPIm.%9d ߯Gaq'?"5IxSb #iPvŰy7(cF/4%~s?#)e$ϺsJ~o3R+_|IĶ7}6m-[|EFl:"x#]2_@RLR;fUEͧ0<7IX^W6C]GnӴᯁ&RWiVH7^xW bcRXz>.t<ɥvO&1ʪ?cUϣ|_yva#>huUm{vIm{m&UhJq+nPx85@w(ֶaWN/ujj>,' 6Etf_.a^HDWv bq_<}lJ.G_Wx&^a%dϫvK[+ߎ#Ҍ##~Čqs{ [#38_#xkAntf v\~n#kf>sٮoDz+^O\.pV݊51I,Fڣjrr>C R#|MgAdq< \_V~˟5oojR= 4Ţ8fe^Uc\UoyQT%w[ې.T ~%–[G#E CZ+Goxf#N_OSWvKN}O`V={>{4ڗ.cit\\G"c8hj8%BKCq e`cR:Y$+>~Oc?4VMA rwP}_oWQ#,oOunvW#ёZ4J՗E|/F2&EvohMؾ]v@w1,-쮅v!V^1MĂQrsNi͟FiEs8#1_D> 9o:=YW#k)6CDMRk-/5Fem&9 zB=1_)Ɣ,uk1$gh🋼;@?e]`WWOmh.SӴBn պ1J3o<;(cf"T妈{ێ0F+p2xr=PW?:<9"*P[G}%3 *fX98T>d#>tܓ8Fߗ^}uxL--+ A rwʁWM WlLfk^UìZA񃈣KGO:;VEfG,!rxG|%h$eK .O5wJIԍ)5 muRȡ~u#?_?BQk,u9ם]9_Gib+y˳++?]|>,5"scpcIrr1J"36#M~x?ύVޏ&Iު\SY8諀Rփ`HYvȉ`74渌*M)~MO,<"K%O|)< m`xwƚlG3WHěs rBڹѲ8 ?;|-[mO\::=/{ f%XAoLg!\3~WKٴy._Gwࡾf@ݼ~4X#ڻ&|R Xwៃ:4_Q׵5>03B2ro>&BΓ[vIn_7˹<,6{v'hxsUL%\OM,xfANjJ1KF=dZ ?5 &%$jJf {5I[ϻL\r>oKAua-X#v l~k&yzK=7k]ͱP_N:`1_MW,~Ufp fÞi B$; jxZ fGO[3,OARO`2AoG Dgrץ~Ú +@ddGi*0\zW_'\}.M [ѿ}qzPUWC.ĺXԏCo~ךl~)q#pB~U/>{||}AӰ4Wm.QOAp_,9Y ?eE  NGS+IG8'>/Z<7wU'e_f;Q8sh |r(ci+ҷ_G4I-u_$.N_ZO j׷v1A!(FLycW@ 97 ;CWBxj2gB !SqYk#L~ϩ :L1ުo_̚FiR4a5IANSGN᥶??/3^^ ^Jߍ~ؿ|t xg[+{5]Oqas,glu&ߋđA_-ug9^=5>I @q~5CDvj^NJ"1؝EZZ[F`_܊[ko'MK^H"\F1Xzt ʽkuwv3q0:;r%xTURcky4E-,7ѩR-qNE vJۦ.%0Y;aW̙LG,ܰ'?J']ZP FPdʐd?+^.]"MU>YGECQAUwvV~*bO 9NΕk#M-.|TK+gv= Uf]5߀Jx~ӦLGZԁ,e&jJKCo4ū޺q*gO hoY85%`-9 ӱF=5u<ףҞ%Jp3YSW~Jh7k&FЧ RFy"tcxL :M`[GbL{ WjZݖ+(u웄{&Fp8+J5v㌋ UjY̻Mkƅ $MebpI2N@UCI Kd8g^e^_RwD֚DK{KitF.{]]b[%v0+J+0CzLOk9,tOڮ"cEo'n| uj,* {݊܏nF36l jv\0p_]?#S_/|(B?m߆bCPe`yk׈?Gl4"mKTh%ż>kK ȕHC_xş?Cs;۫>WQ4)Q?Eq_ <2,ަ:ov k/8ɣ^ӽ~ñҿNm@"7ze@`MfDB {mlW׆VOKX$oM@+ ƱŋmC[9s(("9#u8BNWu[&mߍ+ VZ66"lv/lR11!oN+,lul>Yo?OO^xt3$/r?-W~?xO\ mnr+bI _~ "I6ktrԗ~*GG[hsT鵘KŒQчٿ>5|uSKFoVPL\`3+bw(qo}wx|GmeIBx})EԲK[Mlq hc]_R-)[~Xجsek+x~,%-H?/̼&35:/E&cR>umddko)\mVg"Yk>[]ef6}1\9$ʲsc "᫲k _&eIVDNn|OᄊVه5{~2^HS~/$2(~F^Eoc#F0Xm^Ft_ ?ԧu[CxL|k´߁斗wUV u!=[|ڸhKvKbhvXt9K=|G,]-.Lcg` `Fq_k|1YmmNgo.>#+!$2ąyQU2%hvH5:y=F/'ZKƙR{Qb@(os1_%񶛀n5Bs|+ľ1ݟ5u4xvw΍,"=9\y{Cai~,4H/uK[H2m͸濘qqWc)ӔbG]S ʥuBRkk^w5Q#jؔ#_~xͯXjx;kaWY/ouK+Z,vn19k33ؽi'̆4dǾV?6|_cH-yV̀(8D 0'_U3\$%$Xa{M,m /xSS}&{ۻ M&H fL4A_ |@χEh|m,h+v{)<m|uGm._ij-K˩'imT]ǥEL_-li4vFBn ,"T;nwq/2%JZE]/̱1J>ݴK?࣋| |'MDy!c!-<`}H?`79X5m&W8K(o1@ 7 ?)x>mY<g6 l,+-Ă)*Nf]1'K٣Bme[J0LD az7z1b# h{׸ ttd?h4աǍ턛8&֗EҬ~ףXo!I87:~rw$W43<>NZi$}[➧>}:2%6yD9ʿ,-sZ4hIMFk8n"r3# J']lL$2N<ҐS˿`7A_]xm͠"%Py\\G.S2Hm^8wneʧt{>6c*S%N^LЌ@c_mhON+OB?^2yJG;N+R ZД39kGU1}bq`p;U7iZ-΁wtmQD2Kϗb^yAᶙo᮱[pVlD,.=+3W<ߤS%Ճ| *M~\w ռwGi WAYSLJb8`kѴ_úaе'G G:__ͯŸؗ:z_He"*+sG9?,qYjN7Tӗe}[|l~Ϟ'WȇM. ʤuC24qҿSOxWX|%i#ȽsONpz2d?O1}[ *4uv t$}⡅(z.䕾h4)bKCp7h1bahH# ˀ?+4˷_=+{XuOMO?e ].x.l㨈oX?H2yۘ0XW?~8jU_⹸ niUld+G>06ַ\n9v$s'=;W6f'g cOk::Cisyb̈́tM8?nO]|Yt5 /xZ>A%8W3JJmF+(b\[-/{-O0ѥP=HdE- [CMFSa|fHYqkp[|&:nSҿ/ G6,>K,d *ck\-qGYqw7venON+Χ;CC/O0,PKʗHfi3 v_ RsqmL[8 ο?h_3/x5x=BLq5LNy C"c沌 Ã_?/&+ŬMm2:ZwBd?w"rʄy8Cq4sxS^WMw}m͝+̐" e\tl/{Kv1DOlDo5mUdHp0>\%k޿JbKu~Xd@0x#+CZ~[o"J`fl_qi,:Āy~fjbyh~Y0RZ/ͯV/-3k43ڬ9d&@ hg탢Ku㿇tS!մ{MB;kͶq21_cWt ϥdRqAO#Ef\eɼGY݄>l9`99n>> Vp1OhkV]_dG>AbrѥOiKˏ^Ģ0qW=읮mZk"L%d'2tRQ g/{kr#j7;&AsOהEGk$_-,n >c_GGU}z=_#Tׁc%zesWV7tv(59YuV?0_p>ϫ_݋]gXJL5Ō'b_l j}|}+ڕtgcꯂwKV|?lk;kx[ʲuck?c?z :{g=7͵KRǨ$ 8V>/ >4 p[P$̑8-e_xBU3:W^_/ʓx u 'f&jVytsI^48mI&>G]Ny& ݝ#Q[}~ڨt9 }+WYi{7x%$ԵL+2Xsn6 2xvGĺFV#ygJܰ5+${oo$H񄑁 j|APՓYy~ |G GC׵ X6MВd7O<]*k{3DAu)g@R̸QZWϷȰ՜h|wqk?MїP۷x+?nψ:jO]:[ؒqk^uq^՘%r ,fvXݝ:l=xV8чR: 8<{/~~֚~ ҭ̓ꖤ˵1h -_Oq_ xjܱ ~V#+\'X;_o#.Υ/eoşWOo;OH>6kwS;XGkr$X{oq&PxO9tǯ^O'-Į”Rij7JxTي2d}{{ ցb+_7+G3BJ41&;1WY r)I%§5Row ?)ښ7'zguoZ=} qi֖֋yY1.Ll~|@mů oP3d?دvi~@ϘdW0GҿOS'VBY9Bwmx*~ONZL4V~&b1ˢO->ﵝ*%۫:ҳ+(?3cWaʘJxh<17ö:Uޅ-XD \}߄tټ6KY>(큌B\IT:~͂XA^N&X,|̒j1CxNFE]\#9nF)\\ߥӌ#Zvc|j$~m.]K\ӡ慄2:fgмY d VbTY>=iڟk2 #,Zla .DK0=sct'S캇 }GcM cF|0<`qW{}?(_|Q$,:_?ͩx[$vd|CB|/|E|dL\\I>v#3 y'~ T k/GYpsݯ-K ⛿k*M%̇#JE~ ֢V{"?x[ ?~><d>'OU~fÞoǟ?MWkcy;]2c)\h,A#sZ EthQh*˹;ulm^uAL=xu YK I+ rɵ! 8\ 6a:g_7ï:ږM.8KKA_,9p2^sc+sLA1bA_*|>K$aY-^GPr[E޿Jc5Xu-I1V/0U_d{5]O(,eYA Q k:U9_ǃ|+[G-Fm Jqpy*L6"rq9|M 5'h HmmZv.zݫsЭ }jsYzv?/(͞o]_ŬEHN"ǐ@/|`s 2KDDA6N8^:"~#N6:fg݂4v[aF$FXtet:M~/8D0[mzʻmVIqך>SNʎ?Ҷleh9޽H;xEJ? nZY7IsSe6v;I*kZſ~&?dZ(]%l`b 3+; 42#Zw'J2O1߻1+;\.C<7zG+|1gZk~4z(D[k!H/od qGi6tm8 aFVNJ4ֱ3v_IBG瘚t*Ǟ3қ]yrUX O:Ų+c,8®s_/+c6-"7)2 d N'>7j[H2qԎ8E8%}&_Nx]7o Kx{DiZbj30+o;WxB_ t,]^d=G}[ڭMS^@ClIPb"8\t WͤYXτPL)}ݦ )w`nW=r* &"=G'^G^8ߍEn^ ||YbZKki~Ö6{k*Ѽ~Y! CR Pd|]o~._%#oEI q]O0Nsq`,`}xrg|WG>d^#hcEa`G_pS:.~G 0tSW{oxτ[ WZib 4}8n9=+= n؋7/U#W D'2MvmwWj+1_Е?-M}y_`iA 18"o4 ~d[ʙX6adw5jC}o"MUH_жOבĴuW'[I?1Ӽ &m܋9r,~5Gϯ]w6;sڥ iNO\/Q =ݽ^#A>/ōRM)#S,dk cM|Kbq o}#%W3Q(Q)~{yfxsAڴ"+X)0?Տl^r~?.f 4}>kkwwڊ;^/(o~O(kRx{m:uu)K!6‘#\ƻ|_^ג:E!?h#kS%ΆWV|IU{e?!cۯ?u s[owʱ@tm"a{o~ }YEޯE\ʛqX[yvXl(5tq4gF*q8/z_%k?FߋExmAtG$ p:ׯz qUc)X]ǟ$<-˵6Jm;T]jN!zz?lf Os,_2B~̞Vr~> R9)_-(x,+J'ʺgULJgj?J5pOu »hu;{~c;W&x_ iCmjvg?0[cݎ_ee5 q_^=W̄W3%8POOQҿ>W/C>C:FZ=`ۣ,nOH\`j~>\J\&2YK?l,XLAm-e_lap W.&֤nѡ*L,pJ6ῆĺe {I+h;+=к-+FW*@5y/ ,:jˢ}QCW'] W E2z?2 Pnq?jB~]t?g?/Z +5+v^0Hv0Vn5gۇAߏpiגyJfxpGP\(m|c𗆾Xkͬ(]Fn,o!d?ng\q_sU]?f3犊IYmh<_xW]SkniMmkk#@`mWꇈn,5$rv2q;|lKa&FQm.q@F1_T9E\4~ӎ3^L8=:W~ 'ŨK1$l8WفN~r:ǦfQ3p1Wo FnD]M{5mjH`2,`:A3\YN W|g"GޫI$o|01ؖzV4$@v4_?Tn>K$ %A>S؏R]間%ͽBȮH2}EXƛdNs+L.fX9a1$<=;t|E+89J%W,OʮQ811W#QoGLxW]E=jBa SU kZjM$ vKq8O׀92VV,aWڇ'< Nx_S-~-1/1Ixj4Z^D~?upwfvO0mLWx9)V˚zG߯ˡ^8e|=䅓zj+{=/cjxu|AI+Ŧ}3rhiHc~LʽZxs 9; /NwkMfk;B'X+yQnTҿ8o2jcݚ)#t%XqݼRa18Iv_+~G!cVF+k_O e]˃me515KkF&y'NN[(++K32T+A0eGw=3_?jOG|PkfghZhZT)5_*ڍV aXEcPGxJY~RJ*Ik˕hRn)Zڹ?7O>qZ~Vm(]ٵx+s K`xV_׬#)\/>VJ~$1SۆXX=wv_K_<7<4yRjm̴~?o콮W@>%[%ͦ:9ym?WRxgA.y6k]vmൺ$A:c5Yj7HH`ʁ>;qȯ Xpk%)qsUϫ! I Z:ѨVvM~=/ |EMR \ϦOLly/A7hQxs[Ӡ{X!tOaWr` ?/ՠ3^HneFߗ dsCgmŏ vPX"2@ǐ>QN5??]#/u%U|q+ `OQ9ϯM6Hľ9qQq ]wnߗD}cs ui0kWt18k1/8=+珁B>|0-&?>W1 6F*c?db,2owR򵣺^?*xwe/~.1n+ۙ=onඃk\}C~mmSemI1('k?߶SESᶥwwE캆%m^.K#^3~:79[gA4,2G2'Nw.#;kIA'>J%Z-YBm݋M\ +o=|N-HLLeTͥogN:>ܰeiw/ "hT@\x_څſ~ϗ"_߷)~6iC`vIJZKE2Xe6@kW^<1F\d#{q+^øyRZ*/ɥVgW,f+Ʒ74kVj %JFm1ā~`ۜqҿIg@?ÿ؞"1 ~i1 g=3sR|@։(٣ 1$Ess־i}6jCtJ,1]8{X<.x,t}k42)dq|4Vݚ?)~}J29Y%ؾt >XD ͸?~/7Ng&ppcaU8dXE5n]ןKcakڤ:ƲG?7ny/Aໟ~~y\G' C8?pFC qν X rGhgw\W.8 U89㈉t$Y>{)J=%PKYAd2q_[M)'xִ{D<|HF k_Xiz}ŇWi>Cu _Zk.nLkHy;U֐lxݥ>dOS+8_ &q}ExN89o2Yo[Kwxk,.8C339.J[9'$6 hZuO1't{tϯWCKx6{O>-{B#f.ۂ2!G|zπ4=OBL̎1X7Luk.Szz9|a̩F8*KQ~e1_|3/i%F7Kiko;vMXn?ٓqɡ'%յ O؟.?9Jg08EyO:t^^_Y|6p9Lc=H- QJ[S4?y%q p©NO$ZhKKjq- ^;T[%{y>ƏP^SC3Hq;SOsF^[<䉉A5î<JȈ ~ Ӽ3ᅗ4VyVtK[$k)5sJCdaz+~???f/I࿌ Ɨ$JA{4븈f"ua$єpON~,;M?TdSbEg߳?w/kQE4R*ȩwjM0#_aj+/!#gy/DrR9}?j|R \Gn,{y m}W ?ÍZ/Zxvи8fh+Ox>m4pxTHxkHC}$evc7Ė~پ(OH9tO 4$//nUfoǖ* |CoLџC?Y|"RӆG4~jKj2pz*M֏K7VK4BM#EP;8Qq_p5<=u^兒Od~?ؼE6S~o3O}H%uIL¹:}NgF#0x=oΣ—;zޘ[y…_[UBM_xȷF~Ϡ% |Gg~;- VCH BYn.gU cw_`@~>]kf$8 0Rt =e|)㴱ӌ˸ 50I`]~,?'mA-c~w\49_Z̓=@n~ɾ^wgh폏G[hDK6>N\WnOaԏ;b4Xu4[-2 #꣫0# @5]Orݼ .eYm'cV2DiAcv_Kdxd `4D(`yq /n=ףcN6|RVi[T'|uh^_}4K]~1{E*GLvȯy*j:Fڦ#a, FI/#⾬-@<;sSugm#J#'pcwM|>O<{K/!޹YOXx.lUn1_m>#c_*ImYh٤ W 9.5mt6G=-k~1j]6M'Iiz%⅚n.aq_>Z-2j)4;x摏@?J?nߊh SසduZKejhNyfVD'Bx`|E}7ſKp@^:ĭ,apO,7^3F#7/q_>Py$2}?|k u5Mrͥ>Mfr ˉ8;v\?:_q[KqvҽUxw_Q '5lc?h_G'Iy]ěZb#^'?Cɰ^SR<GWG=i>+f wxH_e0~WקeI҉mBsztSGMo_x7M'M"rlGb!P, WUSz[Ѵ%_l.~ eӢȀvxB~H=q k-byfX$VDaȧtc_W?x2GFkj6+\\$~tK`PwJ1OV Oc Uc%\6AB_—|7?ms^Z{Qi7د·XUAz+<6mOGV47{c 1zĞ-Oiu#ڽ }vWÒxC,5Wz1HmYc B¸9sOR^G6>ڠ5jiZ_3}c%+>4뗚jWw2`Jcԯ[q;Ef8NgĿGk/_L?E\w=X,XMRq& ư (G2ݩҹ*$wyTqXҖޯ}WF_~>,z J6ӄE_+w#uu_7 Hmop J"?^/Ь-., y2iXaW$9>Z~1||e #'JĈ2m&p$n:oې_?;k}Fmx$,q/+o\ۏU^,wM>pTQ;~ݎȥnq gXLhٱFOg)ٳ ,gGċ/VNG﮼;~_˞X_5%Soiohm&e^m, TW l~>Dž'˸5N$ćjz⿏/.}Pos$omHRoe!dI2$q*cK|4nho졻YeM-me 9>.ygX $-[G*hlWzx v&#¥6{\ǝ`b ~0wv_?N/?c>&I.LWhaQ|[3U HZKD#p  >dmkIݵ ]gwx+)2Q~YF+J*G'{jKH_¶©436tDǔd3zkT>&!c#=^i~ ȅuA_?VvIɅ}ߗ*Ƿb[Z*RF{{=F80\LWҼ\f9-,}M%f?኿ٙW^ϧ fGa| ]jZ=̶ ը'P%f ˞' mC$͞h;܎'_ZC/+d R ˫@Q3 8^יc8?/%߁jo_ߠRɆhʘ܊~|M><'Nla~ӵK}&Xa$@eT<1jGfV[]3G$h' v}3/mCž..l,\Ya '_Z펎"@P(Wo<ח|E6ZI?gz9=Ia[8^r%uo~a49u-+xCcxdVRA_5Cҿ~O5{7Pkz|}LqJWX)#})i|uo bAֶ1*Du4a@@b:&@.]+ZY/nV'*s 98+_)._W#㈞'8*,k/џ7jo2F/O3` `L7!joP7"؃eџ|ECQy!B겪ƭl4xS &r:^iJ?4sx,ҥR~+5m->x[. l|pj^6Ѳ?"3S. 5l5"Vm4O&18O_m,+ޖ"274xSK3"<?L0n<>5xQARAYm.'dzt=#C6u+ĺ4„Z"gӯvQTZGC ٳ"|303o{^vno6X_ l / %AIs<3Kse; .YS.sx#H<+K8<l퐬q{K NK F-;_ _Z_i6|$ZVWyt+~!IckawTxRA~|#khdnq>W|zcqOu?VU -$+,-d7y:l8 x>|g๒>//1AOk$X쳡v;WUѢ^vV_3۪:M4)"HV8#^F}s.,I~sC➽}o\".~`3^eVtm.Q610(iQgiqma togixb腗}õ~`+hͫ[TqHǨ69#+xǟxPOཱӞIrB]TqRC =?Z#U"CB\v(= KKFz㠯usIyyH≛ԵY0_I1.%^1ZLۇ⵫4GNWNiև_6w>/]CV`ɧ)ery񂁇@'5MC[׵Id['*Y#ֽ.֫.oqiw:l_~{'*DcbgrW~(jb#Fo8^\:嶿"`ltݼ2qݣhxxW/<67_fQ|Rwe%گ\H';2c9<LWK4{$SklB2$#GArIMs.H͹BYھ9NIhTphxf}sp\T#K4ghWڊr2WA>ҿ+W/9ؑE^|=uQ4ȌB1PiQּ?cƮwN`Dn&"q}NnS96ɫ%W'"ʧ g*rgפXm:h%{0H?.9U,}s@.$(c%J; gtK*m8u?8Il>+m;5-VH^HF?/9$%e$r˓OȬU.aPòRl*eǗ%~b̊X79\*mo ˧@fyAqnL'zl? | |D. CL֦%4 8yaH>a׀1-<=S lX<յM,~Yviհ%B5r|J#fx #ocTMowlA_؜#pF:[,} P _* Ss'Ee_VrF=2k'm߄!-@u(\o-~GoF_kU1,lpXm U*$(pQ`~RF3ھZҤidُw?k?7z6EQ[#337.jg5w(NN?ftAg "X)0S ~~|G- kSEقBs ^?D9V[elx-7T볭VrjpY޵24v#/>I¾&VEXȤ~Ykۂ_c8oCm&?!$WdnNlmM\XE&7OAsgUI|UemmN=ߩgf~ǘf. G{?G'.g xK{~07 PцAֿN 3pF= yQ@]}}e7>Qdzmȯ?+6=4OG9M˥]~O?)/-iWkzՅ 9Wg! |J:|nȷ1`8dm:N--uhIL_(p0͏rG^m 9e y&GA _F,ݻ #oJ;7y*joR"9T5Oyl'c:gP-]ռ<\[jc1>1w8yNj<=xI !HH}*$ז|i?^8`W' 6fSR|⏎&oJ<#mAwd }'{Hk>*?>3j^00hN}mgiIlc̙N@uSA62XF<#oƟomY۩<>}*KċJ?Kwo5+0 'Etެ{faBWσK_Dʹ}<2cx8_ ~*_5WX%5fHnT,҂ D̞C - ~~>+7,447Hrݯ_ C\Ha$dta)ik[bOui? 0j/g~swfQLWWikX]<T@E\xk1פ{Ak߇:1F1.$n lE'?ݏQ_Z4;j",w-ێ1$WyneKIT?lUL el|=y~/]47¿Q?ojO/nb;2mlW㶓OT,vf6 )3_Cݶ fFoFoO>ڹOCiczGG?E;<^jވ 6q0|_FdU&v*,鱘9U~|W!-kʴ1`?n!KW9UHgAF#N+ai7*r앿)>1k&Ny#g魹nD[o]a6qW㴑^I|Ҿhr>ϵcۜct_mt]Y{#No,}I P˸t)>Ph%׈ϙawsjd<ވ4񹘞Á]xnjӜa $)EieeGQgmചXC 0[h'W'O&)P6bRf1 o';Q8a~Igh|sj+]VxHkבH9|E%[[!He9@]Wf, ;,Gae>cpY v~^KdRrmtN^MM{TD>!.+quFѻw_ :>xy;9 ]>qH*Ud8emV%kVͯ."R3 ~~ɟOkRp^}YǦq_8O {-z#|#qGj@dCX_ߋ__ t ko3GA`vǑǥ~x&5-"=:}t~rZ(d'ҾUxZCh>7>rJ4HUE@8/?Cp|4guU+t?0OV8YϚVKk?&EsoomD8tN#kkԇ,~\JYv8JÉq IOG.V;p1Ps+~'kQ|svrRN%XX32rJg+A]e񆍮^l^{/kVpR< ~uemys,bl*^iqXwQwL[=Cp229/ i]nJv֖:<3_5ɫBսٸ(hYxḇQP;vWO~O`=o¼>d1[Ryve֕Wcĭ$=k/֒Ik EWy7SJ6Zq?|=[K4Г%k`.m)WMpoW%' %[nW0򣈭F&&'/)fZNE`Q5=r:W=*WM.+x#BX_4i]~__^(hI0VFBƾ¾Q;~C;Xo:VhVspʧ1~BjlOc_r=?oe Ny6 `v|? oh^D#RIG;+d㰯<7%q1V˗hMMi17m.X.JWiqily`/'`cz`Y tAG?fR{?}>?4iQ=}|1[Ĩpֲyj,q?*m r흼j3ɍ˨޼|~:F6)1ˑqW:5=6a~fX-(*H8ߋCmIZ?H0迴mqe(0GƧhL+u߄188>Up嶇q4qu!a6vm{=t2SWR&n$FB8ּ #kߵc3>4HN ?)##DѾ.>RoH#9[F>:߷΋ƓbN3nBwHI"~QQ^q+mktV\5+yaV ı2w8tC\89.uS~p~j41QasXq1_xOs6ԣ܄%A+{v_e x'h|:R)o-ԺEOT 9^~#=zL|1ܴ:wNsh_rs봩5k۰##ocVK\?LP3ʏ."ToߖA~Ct?[RGg0#M6'HmvBKskk»F8վ ׂ_`kZthˏ3s^0oJϴ[GxWc05)FNQ+#0xܟ}_u?W|7۩: I?}|`mv|Mw:Ԯn'Qii 'x5ͼ 29VT _ʼVO ?o4k2k$w6eHA 8po^Wu_(edz/8႖.֫yoWZi Y7 cnQqEup־0ctN#W>^>z{q_Tߣ7nK ~\Æb25\#err}|TO 𷌯WN4,੹Er]vuGp~~?'5te^gĘL.BNWA 5-_ Qjo04cgcm &3rѳF _I+cTeup1z4glOW6!< 8Ο*xaVuԳ3SW&uGA{]gS)Swk O gڼ -#P򠱆"H%̅qt>VZc칟*g)Puwas~4SxLSm wPNJ+t-0_"&$|5*6S^ ,I~>Z~<ϥJID0F^amKOo l0O~5Nc$[Dt澈p\'?h'DfYK{ (@C1bܝPI<5#hxGuPҴ:י96skd3W.Ġܙ-ਿ$|],g&GRQҾ^\_crc*_rn]AF*KTwڽO_gAgcZZ|rTK%,9 +'Niϋ=G_M|C0̱ԡt"9%X^è^3#t7)-NW/"xk%:|%^Zkc -?Xx!raWq__nM[$o1sWuϏ:ܧzxqv"DpGA+gᦥ=N$qќWF2"kJK_qˬb_U➏mܾi beF%!B"fd$x^?T͖@P[Gm0ŸPvmckv`KY%s-CٓA[xHfԭܼW) B7LY F5qHYqxK_Q%}O#jGO&}.-4-5$\2> V^@1o3`=}s#FEEaA+mn;ω(c{21M*>Һݏ&GX[^dd}*Gy{Dx۟õKOE񝨞$ܫzlrxEb{( u3ʧ&ci!4B:e|Eq?[[ZO"@8'K G֯Ht \ĞYDϫ|),.+}O|]J٤7,?25jQLĦ{H8 qW{_zsKv͐N"v#rCۧjOEoz!c]SY-ԗpFDTC|xH{}&HvU sp~}<3X/}k~Þ Trg%?Ү!+刡i8WFMwީr|/e\2K!_ӯ# *uS(J9 HWn VtY'ʼn4;%%#YȤr@e&J)ä[ 9ѫRN~M=/UэI؂W=?Ŀ |K>{]dM1" VEu~%|:+ ? ~WnXG5u0RL9!Pӓ쿗4qxoC%(:coc&𾗨GaZ#,a ((Ѹ!s }ݦ]uF}jkizH$ՑM|9~ C-ǐ}H8<=1ҾZ!MMKۤ\ Gҽ,$y`|n2Wy~Ϧȗ0DQX7bݾ S'^AY>& ?#@tq+r/t[œˇ0[F!VyXsH>5z'~,:A`„K0{/HBvEa\O~yI vJ6M-b7j>-;>QQUs+.6(~c?61׸| V<+1 OJo{-v{$l.x~}̼I.@P;`q^mQSyn i},zƅA]mu0͏9V?&[c÷ڍԩ?E(m˪*sY_Nٹ|O?d/\֥I%x(ͯyV4Aެ% {~{*Y}qkN tNզV\tr}8Y+#ں7omiYo.Ɋ2K,p$j2 u$WQO &~ O'vvVc^f~l*3[`5Ϋc턞_Z8g>aV"USw.+/.weּEg+*O+)Bpyǘö8J/;#v~W_ևC/fiQjKn9Oؕƿ||WBvY[^C!7#r0O B{{?k]NEU ;ɴM f^2x~rΞ6|▱(K{ -P dHʩ470P8|A.?|Ry|y+ R-ONȐK+I#!Y"݀N+;?2_.'< f~kAl-ģ.rѻ+/^;}OK|UӴW!Yc]`H>l}|Rxs㿅2  )fi$Ul9prHHecKO7N^bM#Iѯxvd X+;|;~zFCDTODi?1YVU1FHFܨbG Yz8hھs2R[D8~˃WVl|jL0F[Xnҕ =_F+[O>>όCXgYy;;j/… 'c?ʽҴ c4ԼQ}Rk#,$2QҸTt/CCmSeg08 *?\_vsDŝ̨Tއʿ<<Mi[_X'2gvǰo䳱C}Jׁk[uҧI"̹C2C,'x?ho*N–Mi"I۷K(`ge`T=@N F. RA0G/~_"'vʲ__a7{[GY Y]9yT9U_ߍ56[sّB)_%kn$dc aO~?X|W>JDCR']? AmuKx6 De8?f/ۏ_֢<%k~cT&OJKӆ|mlRNzs8J{ 7 qÎ+w x⿅-n;uVQ,,sBO-֗@ adʿ?<ؿ| éCMeo?X[ixы°;AG_Y,Yq0>cd2ky@LxĿ%׈ KJiIĘR3OQ_@9w|k-F<}ȥRS!Њ=óBw7'U*BpZѣ築'~^$խP-WO2&a>)%$f͗ĺ6^ ]KM+NvLzY^,Z6췆(܍*Iqȧhlc~7.WǚGjuEa|s)cF3לdij?.gzoz~>;DeKFyQ|K?wz޵52 77Eba_qZEJEv5> t[?tLbծSJ+xL_gXC :A.e.>ӘI*}#wԣ=Co"+09 @ϷAyim \@뎘%*?_[] b~a!?#(Ɩ2tҲL~|3|THGweeax.O48`,M!qЯ;, eծm49YmHNr fe\'E3NX"|?)ẎfB}Z3"=1_ѮA>{A$Z,o2'1Fv|=gS0eco+p=[ߩbxV[|E7|N_mk }ϭcf;u;ۛ| ⾞o 0D+w]kmx+٣Ǿ%?f1Q +Ic=ǖS߸1}o C Աt*6j! G?A5gQuho ,c!Gto4k۱'oF2=\oOZM6WcoJටݷ_ƍ 7boҾE__b"[9͑+s q_?q +x1IoZy zx:A(]fG'?H-:Iyl Qpq}ɞ8Iv|F}q F00xG+Sخl泜(x!2/>sǦoj?jMW+|Hm"+. iM;^_0hqm!|-xu-u'~Ru)wLA3ܒCnlKrPK qzWN2\ew>_ZH}x6$A݀_a?A_D~;4i5:-N.UQ崔.%w$r+x|[ᯆNEv|)XDI0~l; o ߄K; 0D6h6g`"Gnjp85;V*Z}^ >|UO9Ic:}VS>G|c ь(6 r=:W鷉1 _WKǷDAW?hRFFG\]c7;N <>$Xkp$,*򘡷gnid+ﹼAm[?ZVa;ȶ{X(D&%FYn%­3W|G6nfY>7XE,ߧ^g'L4[As,Ю%+_ԓO$N +pN8`b,ˢ-1@u3rbA}M]V=p\ǫɥBp;Y+}+࿁Zyެ6"F6`RW漷wCidpB\}5׆lc?e-I}W̱_ =+? |ia&fZ28*Ц# |{}\xVa^K[?rG#D/.t؆1ёx8W|n/ _ԛO{#};Os#qھorzupJ1u2K3\i` s_]‚D\;ny8$q^l,r3zjhqvE gI}EoT_o9C]N\nX!KO0'!W ȥT sRޙvڕ@2im 2 ) IM(BP$C .0:}*jS[oPyel  ;Ab4;PD$v۷(}i4[$ cpS:v0>G&ǟe11zלj57Gh{"վd$rQq_o Ğ6>-14vwWw;UB s㯥0UĺŽimAu/-2#<1zbU\G,.> SgRcWC܌ֿV?g3[KPO/춢2&CdQ"cS4_O>nfnɭ"fhəJ#EEzj>*[ ?fZoxTtfsM˸JD_\]XY@ypFvݬMZ⿠ :j  Ÿ/%PN1 T<wICd-Z4 TӯXJYǾ-A6q*V#)P^je{G GQZ50МvgJtpW?i3y+0sק>ʜK $ d!]W~눾|onuv*Gr <rs#nc ϞȠOP_m5E1qA8w5`G8vG:i]ƓGKOZ߁k ܛ4O9yy<~Zn2EySBzp%tU9 69BYXVR#Z?ڵi+twη-#r1f$,w↗|iGik#D n1Warƞ*~<=J O~(yk> ׾Q}MK 7Q} Ǹ5ɭ~¾\i:[uk qx+xַxQVE*%Dhv6Jk3>+/8o=o V 6RvQ?O^ %a5G.¥B0Y~DA}?< EG~졶i򤁁_~5E-iZFygO)7/Im}-$-R-4DJJe[CNKட=I.? 1E}O c/j:tsX3VES g=+Ɩl(n+O ⫈G{,`:(1WR}"c_폅D/4_ObRC,[/ȭ`+I{H;F#\o0>e4&{!8g;{zm/G4Jp-%RKFsG7:UdLca]8\VWsqiyφo01үk}GGJ;h`v?c/;}~_Z?iQ:%dM8B.4y(lt]sFS# t鎕[ݧ/T>ޕ$>y`:&81U`^hgT4)7vIy~﯄~eAlGzq午8n_Ǜ#{ko&Y.g5Y^n|geԨST褮?e GgMW%u>;xq `;WmQ^bci~ixWOl …]OtFMռxM+Cpă ;+-8}?/xj9zOOvAAq]f'&H=\r89sΧۏο`¿twƯxY?oҾeƇG&1guhz׎GM|ΕϠ&+oJ.2=>+ fS >gk'J~/`QjF?LtU{qh)մCh=,?߮?oNe[Vڜ^OڋO_ D nYFR}sq~&7w֟?])V&e q_!iCj,61F8^wǗ$JѱM_45?~'isXҭm摾 $H3/|.^5;|RJky RnK,hyOުg{>iGI%vgA~ խc61X7Bm^iCD9,Ga1L>s' -TyyK)>SI⟊ψem,Q1w 3p+<{⩼4j/mk"<$1v<C]x:ذv"n&w933m,wgx➥⻋}3[^hE*}>OJO.NU9ʃStm_.lkM u-%p 񻑷Ҿ!y춟я=j?Əpx#E'A*ǁf.Fg8A8?J0uR[[C_`=/WR6q[w^RFM-,͋m>Olڧ?;<13'Ÿj,eQ746K}ώ?<} УGGeE+)f,G 1c9tq#SW> ^d2+iZBS>G*R?`| R՝;TބLcT\N=WQѮ$!bn7fsӽ~`2~$|xYeֹ|"?N?ޯ߿|r+mun^IUQ0㏤X|Whqiz,@o?yby&4ट_Ɓ%S"gwI\p9зi|#kX}9 B _4-Up{t5 ៊?^VwBVVvbyAkm?EĶQI͆Da Am[]"M{h:zdE5[~\Bo/?8|?}]"J(23ێ?nPwPu!ū[gV=m9Pcܧ~AD5t?4];P];;|b#3Z䷼4\w?onfd_5w)z|}1:W# 3M -lFC_jwߵ5C+:-Vye?ez9e1uS-VF32QĤ4a?C]R3JhgA?aҼzCbYAi'~ Ej3Fb6F7K`p>cWiolae;ب(a{~<>&xͤzxgO13$6*[;+FU!ʐB5y(/^"}3 Bx+!CT$6H#1.|6np}qV[Up~3`m<k:FZ=҃ \c8q'1fwO,oDI96?Ѵ`ڸoG|[\ǡڙtiRp4lf\d^*ixz8_P1iT7/YƥHmCYJQ(Jz_ho1-/x}<A6{uV?~`u \kI{j/޾]|{41P֦ $8l\E֖IbpOW۝.7W_n![3ӜWU Wo4:FufޑBVSnrv5ůMZ&[[i؈'zt/^-Iu"iQsF˘:(Wx:7L4[%GE>*2 p`wJZtXٟtچYgG;w,[`zWk?/?[=+ǭ.}(a'ۃrƮV_JDyU#Oc_~q^Db{1^_)VK|S߃zLqꖰJ%ud$*-X\\ ` 'Ѐ;cW'~Km'|@.u 'Vm= Io?1Ԭh:W>1V5?kItV. >]rbuq~Wfx{Fyt<2q'\ػ>T׆'o#BkG`W랃Gw7r7eTq/&Aܯ]Tzw֧dڇg'8+ѫ]Rx{#_¿#M,iYܩ#$K7rj[Ѣ+;( 9zk↷ד>!x91W˿ox3]wlhHyYY 9PUlp\Wa3+Qs]dxB-]{~G|~.bma2 80:.C `pq_ ,uӴdYvQ(T\_Z6ea ߇c/-(1R'0̥dBpna=?Xt^Vԁ"B ҿ?)I<-KdվȌ|~t-!Q0@c_ϷǦkG֮Rs%6l)(iEw0[Ͷ0%/"UW)GFm#sdF~Qrq޾wu-F$STF;mb2eO#| V*P*Orm8+7OK%F2q_=VQñjX{?n)oYZiœOHUJrO퉤 / ى=*k[(ѷ";+i>ṗ1k~Z!jšZ[v,Oc{nQڿ0l_ ׏|}}uK XG!taٔ TI3]x|跷t7 FB: <; ju+ƛE2 ;*m=? HO;-;MojĿdž?bojv'F"Ivۆ+8a1).!b|2O~>+QK\midy Kӿl__K 7"H()PY-2 is>؂)I$1(o]ʸ^0y^a߆~W~ 7F +BkĘlvg#A_OşṽCWӑ$^D'F4c#?~5[(Eg}aӲ#O'ö$ŎJ$@!BOV'p+7".5^Yi~9no|CGcY$4=4@K[hfHHZGN;WMWZs[j]yNC.I#mp9 7cWp /ZQn䗢iyܱ?kóٸ.@OJw.uI|brݣNI}m d ~|GxC/O]?lce)"5P2Wp WҔ9״vZck:.k?!~|S~nk^K,Hˆϧ+Go¿xt;'Ǹz"%^Y~էͽZ?Tt5)nM.W˸{x\r܎=*^龖>O*v n3rɴtmQ7RR]~kZO6f2P@d|w^;^'60 AuBCWGOԵx~Ӯnlt6?՘"/y@r95qpR#88:+艘G?voƥĠn)85$"+#[Qy{i̻Ei+\{fGu!t~M{Y<9˯I%ѹZ,d`I噐̉Il !Wx?k͢qKoL^Pn*Ay--Әe@(Ђ*)INRv~W69!{v?No]hz_cKMtCrdMoy|]Y x%OGZT4WMm H`A_(x4-G-ir&&n'?CD#3'?VőlRq1mT2xac)B>ީ|};G k 8xal7L[bHtIw 8|>rLrp8A}w~ xw\)05G"9l1¿)C )ҍWK!|?Z#h_ 3igmZ\جȵ4AH<-8\vj/q3o)"Sd$R;n0+4۹$[ ~O;b}3õ&nM[GIMɧLO֮Ty""Cn FI9!?Jew&VW(ʶj\:H8~xPI˻4{u= *Dl8,LvЏ\K[8kmgWew?GAgʾЯ-織}Ό-7 t+IJr/td$4#;xF<־sԵ=6ZjzK Hϔ1H2Vxiެؽy$wZ]l&P3C@(ߘd /HEc2MC "#tshy/k;i* YFϘvq6zEɺ%i.&,NTۀK=8; ݱh]%됦2$f0!J2ŕrpx(;ysw-`g[ Hʝ*]x9%4nmZX/ ˣ0<*\I=C"Ql,F|8EM1g.7)QkA֗z\ɪ;,ݭ7($BqYچۮ) mVhJHћqQ$I!#ڰﵟXFE #E \p8ӼMw{j6WW2\e-&!==1XƔd^CG`C0# ӁaxXOuv1PR"6:u5b"a`JP_JGW^cKnm|[8c>R&P/RI8;~!3xb{Ozl7],wYG\; qGz|9Nោ>7EGYti-ocymکĎs} _K9|05k67UD5ª][e|0x#!8~ tAZ&>dM. ɸq>\`dW0MJ:9ZZ3~4_;c6-IxTpi",d_3^_Sm5 #^- Վq~N4,v#7-zeyn.i 0 p*}k+᫻ټU@g!EWʏ,2=aZx>"=Ke>o楍 "~U ̭op;`wrY`N=W¾-Ӥ.ݡ Y-vόmxDa[2rH"Ydf s1|kQ^En+O(dY^ #E;HP9n}M~@X|u!sKu,։ltrgFQT^ ?3D o *C68/yg-||C.#2erۤU# >Ċ*)!eNiڪY/u_~|4u F2f$H[# f8" ²P'&Y:eo~A>kռe_i lj؇<'ue)1o6ޛX34yonGiƙ8ge7 VR=q_|,?rVxЧzO[vz3IV%8O ׹0-t{CB@Fg辦5MZylN ¸1׀xVj"U{`瑎rA Lg#[7o 鉣k'Ӓk^y㑹StzN@[sk(oh#k88'_W A_|+&/Oa"7N2Bs_bo,` #Eݳ` >^y=UbRwZ?eG!' Jr)i#Dƥ?M0Bǀ}OToZh- ;x=;WxDSS }|e@N8b\wfWUw8'aZحz/`U R/0pI`6w0x~>mXy|ŘKMx_k c]#d_DhJZۖn{ek̨r7m*%JMʼn4 bI~Es\|eKYjq=ī4WFF+7.GQX+Ң,Fs[ _%VWդ(O63_^{WfؚS{=P^}u⿍~%G5/[y`ڱ6W:HSڻ}ˢ|?Ьt]9[m5Mmܽ88+&|D%k[{`vC˻;p; u$;OZi`yGpRG0RH@^m~߳=ād$|l_u u"_~ ?i5y:!pW՟?5G(hy){“O"!1(*f8 fO Z R  ˹Yzl.H۟3/zW_ek톸Q`mfye._9't9R'^Khţk_@2ܤh('`EjVH+!]puZo[?ũi3HDL0>k>|7k e6* n>rRʅ y..62r;^VJ3s\ÈszU(QQfg wCinb&j|A I4xea1W7#wŏ^9eLf {v )#>ix:|5mZeZ;8۩^0Y|Ì,~_o{9Ñy?uˋ˅801;sg$׌ӊb/_AkCzcy-đHP^LP@߀?f!& f3 ?amyů3|gr%k?*{YC><;Y|{v ;oZji9݇_j|1%a E1>s#m&*4xz]?${+^)}^kYٯXñsܝᆯ|6ӮM$DFx_IAu yl/ӰtSp*> hNSO1>Wp8~{ǘi1'e ViN?fe ml*, 譚 2,*+طľ#'X3Bwz|/%.ݼQT)\3~V-M8R(,`S_6~Z. Xfe3-rUcv3'GV%8in&9AĨq%}۶jG8o8zc곍/cczWwZ9:ᢞ9x(Ϩܪ^vQwொ^%psY^#IR5ϙ(p⇆< k&G5xEʘDG_.P½FWj:0.tbfQG_Kf߄~\K c^ʗI4I?1axo VARU+|$f vouҳy5+%q!#w~_j5o i7ɽ]3q˥uZu#{pwC+ $סT b2uL.R|ozӺ'O:WgGa=40qqq{~)>̿?gOɒ}7UƷr$ ˗yn#/x3277677I`ky$ٴ}ԏ㎸>\<>hm.g5M֟?m7ɅQ6רxSqY_ Y]V^>`޸?mR/|zb>\mﵗc|Q麶{IMQZ8!M\ `;I8E}|~-ޣ>}7 [y"W:w1$O8l.Yc2H1_rdeo~<]$-ΚF[w#b{Wqy{k@r/1s! v3/y+tG1XY/4 nZxI+' +R&9+|AV2x#Wkh61v#~܏J?i3}|'1?͡x|&S'yE?fSھu]C\ILbC$qg°]:՚dS|~O֙ato,LP@RDq 3Km8"IbԕTe#e՟0J5R-W#[c'c3zռ_`Tz}?K㙸u݋Ka#cj{<&+&. \qʮ}Hݷߡ:tݩSğK/٣W7ۭg\&{o#s`Ou߭}'l1ie,7FBi_67ĉJ'<Ӌڐ;JWtQI7-gvq.?̓zC8^q5Sl.D]һ+>ADpnI`7ʼ7(Aڹ?s*b ^#M;$Ψ!$[8w:U$h~-˱ jj=vt^8dRx%d޾saO6Ư' 7;<<{@Ϲ8| مJGrAG5CǶvV;x*HGA}2k*;WN_U|geSDt{skcebߡ| 3 t|3Ǟ.ϋtVO[tTnò2}6|(+D#Qi$t@,!V%`pJ+Y'ώ|+5]R;{m %ɞ@Y }^?a{:-|Mg{aqg cQR*p;8_b0obn>x'c=cNfe֟k-pF A1x6T@T4Jc*Gq+Ak/7'MWL5q}-m JdJ\cmzR>2k>>ix)o,⌼v-nZ5$.1˂>X\>+c({(%n~{t+O]# W8smoT%gtڶ5>Y-$Ht>Pga6V( zg5kͷ 4".SW_Q-a񯈬2dzE_پC0519֧ ZK|G[m;T;xUܬbiQoPRk#j3Oۂǎ{{'OF5nPu724%R8T.<3c d|o߄qY|~,;ס}iӯ ga ncRik^4öBC.9J!},KAƢ=r1_iN l:Dտ*K]g\ct3ExW2=f$z灯v| `sʾ\СG],< %i8޾,]O*_2;_/'|9u''ˆXr?C/Ky_<9v_٤rjQ%f ݴ*+g45o\W7 bZ/yY[clgEߥ~G_ĿF-se _]߷=g̻}= uM~x=KN|$Q y~T1HޥW+_w2x~ںٮF7gn#^BTtjgTS^#H?L8 F2G\QzdžOjT-ų*wS[Đb56:dVv˿?&v~<^_"y_8.7cO#ȭM}sG LJEӎ: Wo)]/Z~ŵ=FQma;#)f x.7V ]~#5xo>ԭt ^Nчll_6^@BJ7ΕL,)V_A5xJ״Elhkѱ9G<[qkw&sXiEt?,g=ҞA-" 깯!?T|.'̛Pbnw6CjWkh/Y~[J#^!NU|FcIT4_HWo/nXD8 &9.I x7dZM(|dqk(Xys@^Ep8r⿔,~=gOiVznFoOOzpJ9ǠpsR8R.'{M^W૯7HOڜ> _ܸv@_ |i g ̹sjRogv֧O򡶑1ċ&cO^^ 6]CSU8cJCjGAzˡn[iFwS9Fi1!|kԿg?E B3AeI8^= ~*ѼVMa_!W1SBV3I}=zWT4V0JdIxh< AiD1D. 3)8ǰ#8>ʓ~H5bVϛDk~7iZ75i W[W8"Xyca.+`-3֯ {| j/*<_=dZxNf?ʿ-ZmWXgjTjx CLïxh4&O*ʟؗ9wx`2/W~*?`jw, kw2dBEh*2p/Ż|S_q5fk)N F)sWU$vS-(>_CbPG__f^_I풌X1c=g^mMx}J-?])ٵ-n p%Ex!"U|KN#Y 8ZJ<.˱|mi5;$dPV8$8*gkX0n.dk兲(#0 ~cT|RCn-5XmIŻ!tI)~|K OjQ -%նDa0T#9ۿR J6\gf~}h}-t-:[L^^8qR1q_o/lo-;\I$m]6O%}cknH&$FkM:}w^{*-棨q..^M8C7a`Zì=;*Km0gK I?+~gGǑxlr4~(Ԧ1";Adwk:dommi=4?GѬiW-'Qt xP;W^QOuJ-(}WϊÍ7hvwkGLXXqmN9#:е}s&.Cd(ڿ(kk75Lei^4u!o13c)&m{{嵏F.NIrTp8^088kSRe񛌱2{̧x?֏RX\a=jKrpT*oț]p7+/^ %4ra*5q~? m~-? / ,!,3^gĚLj?i^^l]ZK4*ŅhՋ2XPXwdz~$,홛i װ`gGL R|?k?iPgu?9"X1 Mf/A=^WfO!@syR^:|Gd?HO<`E%V<Ұr+:co$;Ŗ5?jqC8/Y'Zer7 0|0>#РԤm~! |A=2MQkvgolv#_&k,>)l&RTkiB4"O[Z,[Y%$ .K6k s%hSiɫ޼vv,Hw?:#˚ψY!fH˺CѶَ01޸he]\V"8@1_fg~-"ݴ1X?ywF5`6Aq_q.*kr9~qN_[J[k?C⟆*-մOlU cWKm1"~T6_L=[NeI&DXt%\G_0 } V1NӲ_k $A{y~Xh d>r;W~Ѿ9gğ@-vEki| B'nt sHu`3m8Q0[ӌW؛Wc3C xwf|RC&i[u`Iï⾕||WU?p5+v&]cfo-u BDA*A$`)}޽kg57+ʲ"bWD‘"JT4QV VPJk%c&]{GBڏ?hC]YK-.8B; ێ9/퀚%0M"0cҽ~.-iVV%FgZ?>@=qt"Ľ'@lCYYzi&<v"=&MF YF_tQm?_ß kt$BI+KLK0?%h_4+Zmoͬ,%]W|Hx_GZD59b#o 6`|*MWˏrDi3yD@2}i!t|TD!<eg, 6 bYdo-HEWyV-˧jVpL,DEV0&'yGѴ/Z[^&[nJ 9R0aNj"ԮoĖq((!~TL-:~qEI; @B7n&0@kj|4&I;Oʀdrsʟj_o-Oua"ZGG  {WW3*Z>MNլ_3~O߳\` ?^^vM2DEAYDmcvGfw%R<؏g s#b>ԛEII1M"*"!Rj\z:x Iκxj4:qG0Wl=eAd"k?gVei_60>gbB?Nc{ A< P=01Ӹ?pϬ[a68QFP0X%i]zս~Z- Y&7y6LXf-kc'fEDƒ9瞧5SWvwOkn igyJl9yFtneC6].r bl5φ:n>XaLUE_,? m e|3tom25棾DqH>;We-฾732%w*!g+ k}ˋbF0ګ<`cgq0sK|؎OM~]J<2G:mlv^g!U[w|_NkRmAƶZƋy* :qT: Fz@k2gN,Oя'Wn<'T T"C*A^3~x↣/hr㟽BzKYyۘm ɾ\07tּ/uϋ>_P[{tH;ȥJ쩠:;!lRٌ^B$+>exfd~IP[7t}5XWNC W$(oSyT;H3ۍ,%*J=ÿ>|Vퟎ"Ӭq+A$n 6Xz독> -I-~??}Km_4IH@OҾKΜ'YVDPqF 'Q/gw\ ^ƫ۱EռGʗ =lx Ytlt`0l AJnhRzj೾RxSOoC.H%tqn+8*&65ǐmb|p^F2])ٯCpXtw>cew#6r \ SgᏅ~lG+{úѕ _\˷tߍouy0aTE'OMljr.XE.{ n9|E=^𖋩koX/+zcnF<õyXzZmqU$]/9i/WH&m)m$Jy!_E^vN;?>\ܺiזGq$F%,7Hpz!>~-4yK[+CX $GXJ\χ>h%,B{w$׽W5#aUSn? ~#g6awy{$J)sjo|['VZW.#L|{r?{~:<:<#jZZEiZ66 DLyp^]xY.b{{ˈnHkI^-:"Z.@eU<&.˶yt=zvE˟G\RJ;,gX-!ZO:/Z&Cğo֘flc8=xu>dIe7qŶ$9Uh߈2Vm]䬚_+lgvz1 ۫ݡUuM~|MSBo4qwqIq剝ܪj3)a~8>nx S5$K綹s,ӏNs1|kc+A;vk8t>?wAJwt,9ǵ~|@7n) ?#Pm#kʗW͹Y3םW2Pv=X乖WO^.MZIrn*1G Q۱߂5-$p)ʸ*h&o|ofKhcf;u"9>`_#??>_r>xMBH['}^0^[J!_|2g[g$#hDld@e95+ ]sY}B0ֶ4 *#;pv. WX$+:_֐hpu6$w`oI5ĈmYyq}yl> uBP3j2CgG8wl r[ifCf'6(J wNooCGsCyks>e}IbV q^=Լ7Y*s^ptDB@c]k;΋|w$W֘'"9rp$Rݯ i>&K/ n4[<"bJVNa_Q^& O_O~Չଯ'E*Vz]OΟZ8>5> x jhR+[H>@ \:q_ f|Q^}(']bL6'2ͨlnrX#9?/eK/փmhk帺ܨk-`X`svsI[TjiynPɩIWoYu),^H՞ծ[<ӧ8|!}> =W7RnbS"T!GC\go?|KI%E!<%%>|bcK$tVR2H1Ҽy5<թϚ-ecck{HVIn[kk?M;ώl'"M@"Ic@G.rNk>7~_+"n /q QU7*m! p-z߲~h 5Ay~L Gr;W?#x^]Zx ͗JM#.99/6 Do eU0i;$~?gs%׎M[#o42AGڻNNx_4y>"{}/x㙡]\㧇i]~ { *-Z9m05__7e.%+Iwq_~ ^j 4vKG>MB)+8ҽC߇3wz|hV+i$ V NcU'W#?f%|I Y'f*xˌl`2<ҽ{?uO T􄻲xz|צ5ݡe!21˧蝹ս~cׂǬUY(ΝnY[|S$x{sOKhJ5'uഫaڌZgN:c; 4Dg-7˄iG >\ g]vO>1##c>y'Hm21S~)>%xo_xA !w 9J`1NHʡVh{Z0(lڱeH4k嵘Ii-gn8-#CʪA Ggď~k,-:|vi.i79ev]# 4xS[S]"pM:BgV's6voſ~4ƺT7;#/ʝc6"bHqtB5$L/ԅIQѣo ҼAۉ4gx@q>T?t9p+G{"2G5ߖXpO*~|ye:I y $4*N[v?+;~2mkOiȶI!ڈfpBaq1X hz-}VO<|^ֿ''47.Bۆ<<(W?[StcG}Y[:3~%fQz9@F txM]_+G]j[G#_N¿?(t)sfj ? /a|lg{NQdTGr~PxP98ڪ7ǨNhaX˶VIV4G 5K-_Qt7?fQ0<6 `Nz-1}h}rVhpe>;d ?e-2NYt C"8so|]qX4 Cz* W\9EGEt|Fs>&t 5="$Y[RD&d;~p.sW5Hx*7Y^Ž22CxZ| W,\jo,8 99wiT=.7'0S^9秧LwoY{~G៌jE|KT3s`^ksݦIv?B+wV%,m% fhp x}O ^& AWGIf^:k (I]: GDGW`"T¢I_Lh6cO̗>: qW ;~;o ˩ho${n;RzIm  =DzwhɥE$˷LDIݵ'[cx^6;fpm"~:^AcpS`Wx'՝;2vt1j6zkojfcU6e+]NEmcr1ugsl^>S8#x: RS *)</^3ַ1/RWuwHGH"T\`c +Gi_ސ1=6O_?jfr7Pi ۬st1Dx;ӊ25/q׏Ř{G8e38.G<{ Xi-..WV'!Ubb|yyM7ZORmdU*N{Qڷe%Qp־dz]sg!s_E}Gxܱ՗3gT3>|{죂-fZ]¡rZbO ng9Nȥ|LImn㰢0 q]ODa=WgVF!7Lxz$/QҾw|Y~ٯᖇgyw-riDyEbr[ iyʞ.K"]1zsl-Ĩ Y'|-q__1_ jעIp/ s_|oKOU7z2M!T,Ȳͅ@,[˿ob;-<tvb% sZy1If'Eas ֋>'7> 1sKpqD _> _č[ίo2Ŭ͈cmKx>T?ͩhc3[K[ˤK 4tvb%&|)u+]ӠGӦ=ݮՆ5m]S2ee_~*..+Ԗ/?w> u/}1b (R1d$^k_xR05?d9GOM~|gρg4; m \u~`6 _uk0|;qjRTddYJXJ$kr c9uRTGqiK u/ QXiV r֕j(l p ?n_)CiauB##ȋ+ 1CuiЗ)ճ0?S8Coi:\'o°~4 FU0c-OaS8-Tף fu*ʥ7ӡi#ٞWz3;s~ѼYEh²EG.B,YI{+o |tr~ QO z`lu&Wn[_c5(y`gX+$D|֑P* 3贯xOH6V}%$l=Xl6v:o$WvRM Qn*0@8+ǠZ\PH;X@%RT yg`7d :06>v?kt.hC[z /]E~,vc3S~RxLxn!lH6E̤؃\GOZZL]|c}1_t4%IGpo{Sm!)18esb_|Sm,r$X%* NzY+N¿9⯆ZNsah# ۓNUYGF;{#iP֙Vdۭđ~K-7Fce<m9u}I$uZk'4k("6K$6SlHÖHa]ݏۭK$X=gܕKya,g:eTF5s7Na$Je[13QAkߋ v[[ (v>2ˏ8v:9*v4f?Zc)Mܑg39ܬ%pAS_u|6𝅝0ZDO>GԴG ʿF\D3jXW ?VQ?#@x-_ ȸqH7Iʙ*X.Jq_X|!xy-)2_?Gq0 M]:#/ZO=cWhPh1܇ Svv+znj/¾6'K..#0SbPnA_wm Bf-~,b˟Lko<-MBYCKo)HUB+\mT'?Yg%vqחi,3GMO6@b62j܏97-okmYZ?He= O>vsoᛖ튬B6,k~&+#B H@Vsׁ^O'/#oB?E 14bC2$bB9lq#=Zzm\-̊YDv܂8USrڵZ5v+1TcoXE;|b6Cnnʌ2m$t;ҤP.ymO"@NxZGYlJ\tv+͵a-./46s"2QInU(^Pp ѩ:[ٵYgф©A'11]6S՟ZФ o"fBko?Qiν -nN~w(U +4;WЬOV&dIGƻ c9-jDt#kvpʊ$TS!AAN1{:7M9d@L\=9Rs1ֺk {?GH+Ƒll6Ȃ0|2(b޿+q;ɪY kǷdx23卻]He^er![yRZhbڱI lx(O&m5ks׭tmSGEvI}F)3d0q{.w=;"KjN0G̪>npN58#Hl)!e! zV$м6fx+A߻ץiM:Ҫ{zEmx!߻ʅFe91x'6vGu=_3_ZgRE  Bz#P$wJwR WGx_ψ> c[gċueẔ@ U#N\T ZʑG=eS!$RM+M6ծoyRs-\ :2EimMT AIbv0t¿*4N*l|d~2>⾢ iCg ʭ;o8*~X8܎o5Mt#R(0Nс s?sQhtXRG̏W^%hUĊco|~{&\.^[y6V:*yv;._Y/3Uϯ,=+_zi׾%g%_ G@gҿ5?s=j|AɯࢿvY$>'OI.k[̀+7k||:,4X}J_y\)@6K18_[ݠZk>QnhE~ÉFXS jg++M+5w>v~U:5f E= '#__o狞$΢C";6xg8)"A[y*̟ĈB1_%džCO[} dX@mU9oKW܎NK^j~+K/&VZ=~G?|+{+|5*%儭o(CCG8_OZn.$Tș0+|w(.z #s8⽣ᦗsu W_QMñY]J= ᆓKrྤ"I!7Iwq%|ʊn[m?{饂̓WYv:쩪Ϛgu[O}|bP.giKбedPYb܀W?vUnֹI &~qG $xr)3Ҿs/c2wW_.Ѽe_Zx+rc'_=Th~NcDia98>kZ6|5_ VcN)b0C$澹uM..v0WZҵ9([ ֩ӵ#/28 >¿(A ~'w7 K @T$|Oc?_isiɨEQ //*b&hb{b,q+Ht"_U0_O}VmO)kQ# `=[5M=ZҴLy ԛ~\E1WPiۃ^VEqXƬQwܚsy "aiDD~Tl'w: Fm!_)?y$ v噗ܟQ>qY8_D/? iΥLc*b$o2X pi>w)}SǶ~~G-u 5%ĨCMij_œY9o.֖w3< @bŸ}+ W_ |e&^!_q iK3BUvbG0p+7L&eF^EoZZxʖqj}:˴+^"Ҽ1 f,蠪ל*x^=z>xyn{MOBn9R.Ib/?gſ S'}:_k'/}R[KcE{/aI~OiP'15<¬3s*~ǿ4-f6v30R!0*Fimu6WE$%l}+y$]NXTRn'^IYa :kNVD)y"#1Ibv֋/fۻ<~ia?P3m>W>!O_Q.孍Ŕvw~#7r/*{}ViCu5OEl%UUG_b'^N6eJ?BQq_=@ڢ=8!Bqz׀~[ ".xx{haS>(ƞ0&W]:[8q 08x{ܕ<+|:oeK8;cA־ԩ-gңO+$xF?WV7Py1^:.~xj6}k[}( =OƝSxێE} NxJ>cV> nt=VO71X#PA\pG| M>+x&Lp b[ s,k$6>2~IۼcLJЏKm5:09\4J4>r?h/?:w]jzuvj c}$Gy1Yeg9{wA žмKnMW\X\:F?!]ycx[Wk]Z+$:{튃I/ j6F:mXI3'W&|Rg(Qp:dא螇Y6d]p:?d#G=_=%X?wsbDё duU xj hU?)en9Ky`W8@5e_GZj {+F[43֛}SSmSviioG}хgw+/ş'~I(qW٣IEʆ󧶒3zBm__jW_t_fJ:H9 e@Agn2kCm^jOU'嶸\X#*K+ v*EQSxGMe_[+kwΊ91*qF!QPaQU`{s&V*Ud(#|qq/CB7;OUq,:ڭ,s v@^Is-oߑC'rJ7}oGۤ$վ=[Ka/@hwiƩ Wj7~Ŷ? -o4OOy43^Aqg%Hc[`&SaZt& }x#+\:ɞ v kuubw$#;t~#=ߕi +U}j5YɩZ cueI$QY2G7?_o K[./n4x#XIY6!pzïxxJ- $8pG84ͣlT]#(]YBI8Jt9hoNjo-JzGW79voopvznizt/ ǞC43ny+daohQU%W%yJ>̰(D\ Lvl~{Zz.n(E~^]OOU>D U|+g)ӌDZ%߃46ȏVe }цQ_keҼjXݟAz$G5OW_<6uo/mQ41loh.9G#_v,ʈAG<^r)Emuq+IUTKs sO|[÷j%V$8D{ q_>I7$. Gۻ%T@~n/d<1wyh\p AQ_]X|(Ҧ.U'r!c>h~5G]sr[i7:k{+ku_iD|#_zgψ:rǏl4S2?7:HqaZ2 FTz⿬H# /ңZ:~⽜&}b|/)Y6w ;QQBEľKsA|[?xOT^{s{k=^co/ )N+9~ؑ J[Ktݞ1L3z[,OcMcX}?DF1LJ }/9wzc9j/|_gbrM%ӴȪ-%".@d?ψt> c#W=0FT@Oi0#^Ar(PH ]TסqU\W֟a2'kF{B/^0%NHyAF?+;^a\K34S2Ļ lrFI @ 53Oyћ9~L9/ Hi K%VVn;gWfォM(MGakKסW;kw6Q6n[uDc,U#Ɵ0E.'0k}#Ɵ ӭψvVmu4r`9ݺ@W-ٚNqg_vva1+mP 1eoMOxkw!vմ;vLyN&.Ks!S@p lj0C/O#cef~)#?wB&xWUxecvmn}p^G»]GZ׶U`cr2ϖ]U9;_~0Ł~ x_;yW[[Hy}^Wo6l%[X 8;d?@j|_Mz.kZ Yᘴ=kXS}sjgfa2 >W#p_?~o5~ZMZn(?:ȍ)xqرmu&bhC_;)V;>\B-`8 u5乜%fY{ſ˿|c>^i$"д(J( +;_?> |La:V_ g?wݜtk 𮡩~|UzsX>ȏIr2HNčq%'ߕ9j ;V ȣ,.f>g F~:/aKj^ u \}Jƍr#R*VW+vu(1:x Fx_ן칦xDw#<[˅+bqW//uӧhZ* !̳,~U; 45IYQeB$!ЯˑW+R>3sb-|gg]YX uӼwg-KMƟqMsi߳X3`FB aPSVskN;ZxjTM;tIi?߁>hﭣ%?(ϥxb kO$.CDzWo+C=:Ľ6˕qӨ5O<)VU1|cc׵W[!c<.`8?w +V `\fam u'RX" bF+OG>>o_FެQZ( $8>obͷ_Aa0RC?~ß | xnF$h ';o]1끏N+Ko|ּA} f?2T+qȮAĀy5i'%5&L[bh~l`ϧ/_z{][i吲Nsӿo_GRA/EEh|K1mj\w>sz|3^C5q!dd1[@aխ|<*(;c⡉g73Uω-$_sMv?|Xxo,܀vo[~C|N*߃Lm 8W}m>'fq߅STEFG㌅~||k؇{K}3no&/$7Q,;wRHt ھ(g=AmRՌsYA1p+'uis?hrFBfXmn^Y-.ezd M3KSp~ο7 Az70B͵ʄNN&a\8گ"ZߥggHRp%>o_yw:0^Zj࿉_uumsᮐg<6IfoOTdjkZ"{M/IԑJAu}z+^_XmOQNW$՛*8Ji$|IO_PqV$;7|z{-'v_ b A$FG籭UM*ſ4=liEj\`1vR +ľxGĿ4}kHfҴAIdԷܫ:UxXq h߲ߊ<9A*|;"v ZO-Kh~[9QʍOtS7vcbXJՒs|t1{?b_ C-u5oj,ħh%t Ui!+gMNPySzO׍~XlӠ~]"PwدW1uy4dܙ] B^W$WE/ o Wxn+]֑-P>Sl#AڤazӞ.X8O h#MIOQ[O*@6qБӨώ|-PLܥ"_=?D ʄvtž*o 賘qމmMsn! #g*]sҼKkroZXpW$6NGJ.SnV[=(g(Spv/wg <x2w7gj̈ GgbC}Ã_O"he.,%[H|̯Vqo^~?UMkZyWsGo|c^/1YSCkx+_ƿ ufӣE"7(+n1W<.o<\6t[eE3|o$(hɷo-X;w~~zfzyeS}&M2 <B/|ԵT. @S'=@Wݟ}7-c(Eiv Yg0)\k&J]U#08?Lm<#ivL`6!c+"Tss q\棡Au=cghv) ]ȅ+2`0MpWЯY=ȊyX2FUCUz׮i#ֵ;+{}VCeH ] Npv5Z&l}OGu |^|OiOJ|§#a8q?5mNCvt;2$B5Ut` 1zo)Ħ#&?xo_B~>'OV]v+""w dlW{aبVK"Uk>]LIt9O۱jH]Iq5hVWZ>lmLdp ?Ox+ºK+ѯ wA>)~~g)9P6=zW%L oaC̼;ghbӮ,XyU[;|ڿ.0qWu ->O)xLoÁ+$`#׵../42GGd$?6\ nUȬmz;%Ha2<+!*9U8d6@W>ƪHI-fxC)b -yC"yCQzu݁Rx?x_KDItvJCdբ)] b dd,6[r97H^%Ɨ{6!h;-쏝Ez="G28t۸$.`jKzZUi~abm 7@S- H \Io/Z|3K+1KPlNGN~8/ܢ[ĨЮ0|lcJfY4z=+*,C.vO>{Rt^(XO&$5kӪgnjab?>A.x6݊6B6 p G ⴔғCQSZG;]`9eحhCnVb }hwB$DVmr6ȘbxqP֮|0"Xх`>uc;@#e۫6onsfeH䌰n6cıSOt iJ[ߐlafk h7-+FR;roxO7@mAik'%f[WDզpY_vLAS*MK-گ^SIgQAXo@Ѽ-^?uܛ4>SPi5 0|EUc.x*j?5&M>m*,2(Xq8Zjm}3W^sԺ !i\J`_ݸΝMtG:Nm᷊c[[x"QܨexDrcX_ߍ>$K=Pqw4R-(sU~Eg'oMi+48xP@dqyG/ xY.]BHTKI?Ę`W_)yj}u\*oc~ᏊtJnQu+k[E!#2Õn{u/ZE>_V‘N{WR%ۭ%4z=ٗ*g(rTgWnY=.L[ll zcwpvs,,:j|Z|p>uχ8 #=$68|@ y+3G8,!ox-B1U8cy'ĦA13VУ!3s 8;y_ k_>+v<8,p@0sx*Qϲ,4 - hF|/ :yW 壸sfz`U51 HbX?Pv v?Qm ZƟcqn!7* sbe~>4 [Y˴%v-#Y'25:}jn)'k[DeyF#ԩ78o;%i;cI=Vx*/zGJGb izeyM g .W۠+>wyFN~L~͟ `a>>6 \,n%D (`ӴkXUu%}&9ӹ9b}kYoxZdfhmywh2Xs5+G<7m,InH{ @&º~Wq#5r?Ot,g_:@|">4~gf^Y4X>!>!KP:,ʾnJeF/W㏊7i[  ޸/oZ?a,Zt2ĺms;$ns Hno A)jɣ_667oqeg-ۥ.w<RsR| ~wÍ[/K9o5Mm 30lS>~xy+HkWt6^,( Lc }⿠ 5M eVk"p;3ھJ"k.}:XX}>]Kj_M%ͼ]kςZnoZvm:l6#Ha~+@gv>\Z 5^XVfu Ou7w-Wi/ kI,N8H,)hckeJTSM]=Þ~^=eWpqVg 7xv- fإn~x>_ 7|;P}>?1% ?)uu*km5'S͢mdv-kkݱ9 eӘXEURJlj?goL,RSdz=*1P,I 3A=q]g,p!';ow#OSO]|/٣_ ׏O:xyg4_PfG) Q=#yN1ڽ-$rp2OSf ^xSW-M hқ,5h㼃K)6P1UϰGlO ֮*={Yr DϮX,o:6*HzOqOօE'ȑBAO;@ keѸ8Z^Dz`^qL/kCDw \)AV]. #nG?+x]6|֟ڴL^M_:OZ\#Tu`x›q:*/Hń{*J6K&seXi˴"EUhKlC^v qZ:ڔaSGE`6nPtAVcm/ݻc w$%o?Ƣ9;?OSGe)0>p}kĚoۣ:Uip$ҧ4%XP)a_=Bq6){v=}WY݃8aTۺyҤU_vB+ֳb&_^u}Q-qSUb~2}Bd:kMNc'^Kf+:BnC/UAiFȦZWQ!x#}g__Uz?i}ۖ2,lx|-J%™ZzKk-o/|&{qP?&u6Y۷ۥ}moôo i|q,Ve?Y3άǮ뒜ޜ-_]sX@>|ihzRk;7a9gKIh^bsMcu^)lur2:`wǙ>e;Ho7(ѯc(&C9#ygρ č kO0D/F`^YdW}T챢ɤL}}sT+d\~ m<|g 19| &c^miJ\[,ϴ|+?Q(`N ;k]>mNT3CZ`n?f+r\W$iykK/v|wEk~Q/at 麾7[!vҪlvqҿ?|0dZKd1Gߵ${\c{M?BLBXmM֝gh21 *yQ[~ȟ |0ڏ#ă#wXF@V_*Po["ؼm7*%M}CV=R?2&_o̼bqb4; {^46ajo|Xx6Xe]wif*1Z5Qpy?e FʼG.^oyRIJ~('3/3}7"Ҵ( ]jdDîӑ'?i?>~'llⲇM7:,ev qMy+ej;CE!RkV2U9ԼVO*>>XUυl5MDr ~7x1Ds G4G'7&=8ޙ~xJݤ{=Zf;qo2ѣlv8⽵-CoCOutǘ ai;䭕JyZM[㟇W~ gs屹uu>x?"+{௅5v#ڽ|ExxtO9)ץm#Voo#ʊ8p |eh-|–!CéEo)9s.# {I ?hQ{uxF7l9 ]{mwtPOxՇ+PϝR_00QXs#WoNWGZ Eʰ⼏ '[%}0xRáJ4ev'#ʥ-JO-3hBNOӎ߅RzUR?ګx;Z$SȨG]T&lZŠ#2DU'kOJ=۶?¬*ը|M9;|~U%] K<GjtH[tP <_AhcK-cHw1$ )7rQ9> i]maW?xnlu) cs><._?M׼+y;HrB)N=q_b)xKb%oLӎOU_4ln\nyYf@тz Y gL-Nm,͕P9V>БR^ LFhvZ?UF?+\Dfoò oBՕl`Kki>?CX<5s]7xT񅒻g_MOP06RkL.=oX&miF>?88+_ #]e;Gʹ@=ް5o,Lc{8B0\cb'Eޔy_Zgö,i m.?׭|<|&|E_4>E0Ǯ%N~L"4r<{?uX̚t O^{y}co|޳eGYj%s9 thDΉ-mrd(V G$a)@B@*6?o 5_g&8bTyH6YGj6d %]  )$\}+ldBŽc8: |ғs_Ƕ/tY]FPmܪloTtאk~ 9٢<ky1Q<.®2s򜃚?&ׇ~-xO4;G/1FD,EϚX/PT녭/O|cO/ପ8ԩK_Y/N&rcjr{#Hls,bAgp 'h25~u 8ŕp<>1`r+!mB>ӏR[["W-ҽN?fVK0eᦳlAU ӹ95Z Ae|PE,b?1-[s#RX~VRt?;} euK%ռ^ #aY?6V9;%b0qkm+K$`;RS+R81GJuM2N;R~dY_8??ڕuxܤr>B 9cO[^$MiY>aD $ aKd8IWRf4rWV rK[21:?W ;%׈bmfb``]31|U<儂C`嘀qqWI"|!ʌE9sO.mgIR4x͸t$ޥo<^)'r Y]Z<"ѴsCorAeRq4}ču[ywxKxwLj?{LWpG--4_9H෈7p(9_GJ/Nf{oE{MVzwn6hZ񰾸KhdI,p˷ yƽ iw]*-H,7Wb bzo6ua&ˋ% +p$͸}m7hQO%͵җ8/؈/ք0զX[* WR3$ ci+]r#fTupuRq?1ਚwz %DQi1X}'y4C L?zG_~~ZwKYcĆ1 {ܮ/r_=~^y/[*^SO$b̫3_h ?vxx9i7ס9yW[-h:~8xwZ:y.(fg_wiCx & B?rʕ eN+ۗofΕ5[|@7öƲyrSTyԂ] 1i_VYK-_|N%)h䍽r6_xلV!^T=[W.Xrq'O-ٮ-q}-Ȏ8"&Td$gtC*8]OQ񶣮KLs7a &uR7o )اWĈZfZN>I G{3Õ8/LPH~Ͽ ~#Ngw+ґ@0|IZU=]?Ꮴ׭g-a X4|[Ҵ:O}9gf%@ |=ܷ0xL;wzQaCO?CͼoX>xx]rq!Gw(UPI%? HQ$F Ǐ=zq۵|CK bƖ=Omr4iO#"¿'-~1j;}6ni#8Ugv}+鲚MѕZ5Ui?]gmvDkەNאVp0=_χj x+AgImiW;zaz_~?l>7J]Iqi^Eg͒("5g9tKu"+i,nԘ-gM:.沂 2G_q_Z>FX ] YĹ_b#wwGuTdQ }6;ĊGRxZ&Ax-,4g3ҼwiDL[Mշ,ټ 'gMzĖƷ҈X;0c$cygpl (S"}rQX><_⫍B(F ۊacK,koƟ /A8n b`|88a=9+=  }8tҋGqINџ&> '>YYͰ;dտ8|:hHeV' E?c?n&KHR^h#1DX Og*ÿ#׈!Z <>8o-;}Cm +Tε>jP[Zηq4PTC,JيT͜_7|g3GbլaӮ|9GhemGÕB 馨۟_]rg4 K덥ɺ_ǹ#7%;x"wWT0Fm4>;Y b:8OxF]ViYll$8B=B w7^ ѵ(uj+q^l_$~~kRθ~;^繏EŲ8YG!T8309a+?ٯ? /"%%Y&]yM+O~ʚ-R?Fi]򤵆JAY}k/ }jQ^џ|W& ǥ_\ŧ m?N PtU~:kӄܡoC* t>[b&WP #=1]m=Z8Hlt(4. (4@Ŧ:&;W2RU|zI?A* Y?W: -PǓ]b/K !pU}NXڿ}<Db8<"2{VX57{Hd.Aکai*S>o0:g]r!1FGt+|#ʚT,xgq*ؿk.=s6DQǵ+縒IQzGV׈5*ۯUGm#I&L"Zm^w~ӏ4f QS]F=3Ǹ_gڣKZJLUysc4ܞ(B@QJ=) c"C n!݆GJL?}/"|[Q$Fz?Gjz$jWknWj>84`eZvR@'?'qXѷ<:~T{ Tre5F*7ӭTg 8+ec,1j8МIvf"F0#Qp(mscZ}^mh(]eo?X1ȩ:աJap~5NO}̘-ʝ띣*h`f[ HyK3*rbQY:Qk٘4e8XTtJ4>RqGo´ewԲHayUƂK#1 ݟ-:} UWʿ0:§Bx;Iяa{Yw(6iZg;{bυڋ#+]ɵiݷhǹ1?o"YGlw ?ZuhS#+n!Zutm%Vf3X[2(?!EL=&#S$#F>H*+^ݓ&9t?* tmo Į0qD|OtWc5^]Q"#S*[x?­4pj9.a`*˹At8) #1t70F} BL#z^6ظ՗rip<1ڽ*XZ)@l QQrpx> Ev+ھT4aLz;Nx0*e!mSˏZ{yt[E0`cEZ~%z*~Dƕhy;~*9t+mݏAǽ+͝:oΥiEB ]Ļx#â3ON[\J?T<{2$zMkx:P:U%TO;;I wW<{yw+dqS,#8`LTd#?\y_Xs Qa,D_õig1m" *I)}^=w0+'Om3KPAϢ-nƈW<``VxcÐקj>w2?4%) >aluǽufY:p)%#l?#XvqsI{7Lo?N~SҞxê|1F@9h:~_ʸK[t#|/`qqRGF~̝NG 4=46a!F1^+DҽsZq@Һ2EIӖ6ҩZ M0"8bo#`Ǵt;zXT8Ɍ${v^c]yw9%4 xHt 2GWK@֧$65_Wa}b]_HTİ**OeB+!;OґY91PSHgm/mzu/u{Pu͜f\Yd߇׃>xN͂ᗡTX'? RAҺ֨+.yB.\jaG tR/ͣ>=@?ʴe- }W+a\ sd)U>?bhF?.~n֏P}r}G}.U" Q[V8O߸0}NʆsV H<0 G(gS>q/TT`C/P6:;TwF_.8#dqU&1E"Gr{2hq/>cܒ0|߱~E}j\vZEq5>cЈK}roVf 1 ۩2t1Pge|U,%?_pS6O(8=? }r=؟]>msG5u _1#i3*o83G| r_e}ƴa&e'"dWҷ|0-P/ R@S 08V5bwS>_qVZ93> sڧ5,i?-6k{ i)>S(R2+5b3jG}*K \GW' Q-Ə[_X:5iqjI< /eMۇ7jx@:Mlv2v2Ȯ- 95V)S?4 ބgjJLX{V2:V7#`:ˊ[?~xl>)BǦ$vrFس];ˆdulg?uF1^&GN]?_Yp66}}wnx>9׮|3mTlpDP#ĒMʀp:dok_ 9Kϳ[˓aЅϘУH"%go hZ__֏Zxr-IX5[p:򼀽kI5/mow׵in,!;]R-(unXBB_XTE`X5ZS9JVOѵY~aTj_2F\ִZ}cKCTK><}R3Gb1S9L C? 34P5ԑO3\ʴx߂yq<N4)KYCy=RI|Oq#𯲅\3iw{/M~읺? >HoPo,{rHhrBDGL**lKA~,%5Q-̏i?ʞ<3 t]IzAc]j[Xd楱b[iyFl1}xC6>1+?gbf@~tMǮz~4Sk1r}2Լ451۷W%s\ ㌮+SkoU~Z{e LeE\ӭYLGrF=Լ?sa6fMulDCҼob-uVRH+7pq^ǢN=;gèE|ғ]ǭ^Loֽ:/ůsCn-@!:;ڬ^%[C^{x鍦w=}Ez6 1=woʻ#89-m? EJנ +< ȄetR!_9蟲_^[UcGj5?)0!*炠`z|2?Jb$h#X3mړZ& c S>Uk- m븏SY#-Ϧ3Gʛ8OYoR0^6~nBL]B9l3[j2yWt+2f9:;4"֧\jxƭ!Xʑ0MVxvGݼӚbeDj'\gTf;Tu=מŭjl2X4P?[bXhq{_ Vo3(sA,E=tDC$}x8~}n{[Cu*IQ<'"2cq^|KjpfbV߾̸jx_W]jkz^n/< ]@4]\խ_æ ]; Xcv-ys /wu]9Вo%hhSkEܖNhWT5*,Y@e_NLMkZ5X!"gD ,sG VP€Xk#\c99|J|3u|`dIm;/1a^9 Gd! Н,j~jVǿwυU.{(v7~^Xj slYp 0v x7g-%|5OK&)1Z,l\MCg?xZjs='٦T /n_Ҟ4r)҂WC˗-UsxoÚMw2ش{ZYbUm IYKy"ru!vzz桯K&GiȲI4+W-\\Y⻞H#Тy+,[yecv^uKG^|g{> NikK6 1ch=~U |#j3eηuc' Mm]7ĬTN@ ?ac=̪VREogo ʑ{sF+o߰4S>$e;Ս@xe,Np'iIYy<i?~ xi:&j\Y63kw2I2|"|?]O]7×w]ɨj39@ WHbb6w%Q amfQǨYDRMA⽟_Oo|)9U_z5.ҿVǖto\7FjpI+~?< >2ڥŵ?h1$ c|!(dO.>֮։FqZ/NMțp/d|=G}mƒ$S¾?Ҙ\{WBG*GzM3xVQuhkiAkj>]z7f6$j7E/9FlWc* qW?:t W42ttatA٘s/7~k_?tXXV=>QĠK c޾?> =_glIVM"#}5C[jVI?>hz{Qc4ЪIʦH꾀6b?֝x=gzdc>s7*.8 :b浪^[j}Fowz.Nhk ><Z;mqW־H!D` 2`|s5X I4!:bgen.bK Ws*/8+{@|O=9k+) .$U8f@A`? Js7hGsԼቴ+LktMsǮHoTmIxOGjWvN%]_B Uq?ojvzSjF̃tE0p8~*xO?֭Hhg YI)O{x'%/>rg0ۛm/JIc0rxHxWк/xuuI-|"DZX;Wi)i6+ϙxһxoM-ۛa??k:R"m8ox kuƢIK#M gϳF@\zˁ&tO1]72JCo $^F>m"<0:bGWO*;oMӶ2+ZARۧcA;P֒H"]¢4u6 H? F'w=MF.xǠU'6s-\W*J 8c*ĀqΫz}+hS)iLԆ% vNn_<?J-,qޕiXg*EYwAi rhsŠ26L0< *iUtϵ23ӵJdcn>7 \s=`*!\(ݧ.Ԗ[c׀9IQG NNߔ;t1sWK y=B2`>Z;X瑶TzkD:U Ӷ:)|dm񞠏^*|}=D*Hξ\=B``t|~UGsq&F00q+B?R$0|U ?ϠA9 ҸkύHvIꉧZ߼E{H'2[q=ܫ mЯ,"9-͘ W=9dgxϹҺ/GWԕ >f}?¼jt*>s83Fd> |*^LP$P0;PZ=yqQGbܙ\pW?W (=sj#E99KivںnaVQ1랕'ǥPi# aثIrDpCOU"<ک$C v?^Nf9*v5J>yR21+<تC3=*.sg!3匱ңGjh1<jlSGK&U<  4Y0cjy)} ௗ=EO Wiէw)ՅIJt*ُweLZZ;s+OҐ߳*z=2cf1?҆g@*_=8ΤgvjfP?D9#XL78}8ӀRHru4$D\CȪ*TLb߅@n¦v{p)C|wέ?.϶2̘=u Sabuϵ#DčT|lFˎ¯f#gYr؊[g ㊨ց9OҴ]\0?*dB ܹ:t|H7' Pds"6qx7߯s\g0pZ⸍}~Ψ0v YG㊥LMђx! Ll1U2#Ŀu T8'&a5] Bq鶐DQ1?ҡ~+úR6n3QM>|yU}WAN(1L\ʌ늶=:<ǀ2==*اM*Ԓ7JWKY%d*Ilj:0iى\?/qP ΣXG* OҪK*\JOGTڼ4_,Tv*>XS>%xn?*R1qFR9闯fT^A.r3ӏ+'2EqWaC1^|fyV+./QTlXV>RN+&dg̏[NV{NǪ!FVKGJ iBˍױf*3:/~ѝ?,᷸!Uyg5NAzM ]X4ءcEF8}A튮|~E`Lhs~3ۮdztyp޸nIdžS]8Q\']x\(@D"UZWpBrONت!Kmjd@Ingq۰| Jh Aı=yٛ%FS?bڈÔ Y>ZWN3X[|*GLH rigߧXF8Ǯ*rȬw)ǵk+:G{~Rp`X,``})p\4Xرp[`\V!r9v"fyRtdb\\I8TF$$۱Tp׋|7HACeSsE~KRE2J+] ^W3^cU +>VoΎmjqj #@Ĵr̝E_y+*FA`o<vv_ γ{ƹo'DHst ?'h+ӬeJ$jS>j/&FGSg5IWn rH]=EzOnձ2SpIY; 5k)EQ~~Q!{ }VVM To1wv>/ cǚ7ojxm?4+K4jΨA Uve+C]MXӵ`Wd[nozc|ISoaoxJ $[kIؓY7 ok?k/k5w16Eg4R-dev@2Ex=5k^=2V^k~'QǺSl_S)t7օ˶ac {no*0FrpH_>5xP}Ka4km^JUlRƂ5HQ8٧ Ӿ8~I6V<9r$v-ƎӤn~`rgfw m ? %[hgY$,tm kX4^LDʤA 2q\VT՚ۭӦ"T+vӪ oOգ?I w71E'i>i]³W![xʏ5֯y g0{Ew FQߘKx AxK>n &;*ܯMN 򔂼c|絡VFZE{3^-z2^գtʮD2Drܝ@-N3q+ iZi׍ srKj3\ErVxNPlqkb ԦkZ-ĢuI6c=9Zyۆݏ5DʚWܶ-|{k] Xg1ȊOA=,es+o񥭧?ٕ-C&$neݙxx#W~0|!Hx3Sx ;[Ȳ_Gv,G—+ ~Z׆;,QAqZJ|S"/ }Bs⿔Ĭ…*z~ۖKuo8vXu?rg/w5 d*. J;z}_O^߇5O]]̐0eTh@m?g32nbA-ݥ(bf7w8jú$o^ul/{|=$p># #RGjϔ.|BpLkG1֪PBȀqd3ݕP|HNI'TvbڸȨ7і/܂3to\=݅xyS\Wyn #9?eҰ~s$INTc wSV4maBGO?݀&ޥhB1ό:Wy,E{cp_ʹW"5?Mojۮ5} 12ڬw#*pysA|:ty>7ib/S}2}! nq+:Pך>vQG⯱^NwB$zwh S3> `n89kzg=+?u3}wPO:d+g"ĜnMabOK|/?J՝,jG=DPGOy]Ponl)2kbUdc3 1[һvC%Y\4=Wòs[Fv7Sl9`sv*n_ Ra-Ay=m$1[H+P6Em4%݇xX\XrDq+1;1\-'Ձhm3QCrC;H c'go+i2ǖO?hxzoOÏ Zhq]؛5n! &ifO2%1m_Ý[WK\D-ڇ8_93F>Q_\~Nh5 tRhnTo5kqI-ZSHÆ ҿX<}/g!u C URe'qaw>@>F9rCl ?co5rh9es ݱb= fی$2q b V-W\S+6>\屎1_bz.u`mSV>"*>h1vVఄ NAZqsGGyLw"6I<Zb][ ;~Q~9_=*XSUlcbRPzU6%0⥋FBAP~H9?wBJBiǟq=m`):)R_5miAVE0˦ _ IfoD]gh^99{J[˩N?Y0G;vƒx0@ð$-oBXdUIf; POjjt݌tqfg@UV^V0k?.+$c'֙쇽!!YaF}vUB=1M =n?=*LB}BCI_jZ%c2ϑ61+cEOJX>`\Mi7&' Aj3tFҭ@"MųN*8Jn#z`qY\*CGRr4 BSSГVU[9^ YaSD?=Ĥ׿Jx68Yh^}j$E1N⻱TH_<9^RXPw(*G6JǭW.mM,kUhsy~u9( WTuVg]5G>A\4l"pQm#Tgdݳlk ;ϭE[)s?l~XZoe<aSJwk_v#ǵ{yn<=cȝd1b qMqϵ9~o?CK~߳\^f8|t$cVLoGO%tT͹X;TQ#'gb0QmUQڻOҜx= iF0*bFMhb2?*0.vU R\2,b\mU1*97P4,A6cmZ2`/\zqU&6)fDT#cy@bM2ҡY6)@)b.sMvmv ~po2JC~ZP qzTnzUt?OҬ,St}nLRN dm ^(Hp'V!"`g#ݪxB*U<7ӵNtޫI"YyKAQߎ@"6)Ep@r? 8hJM ! ,pTֳc$1@f#B U\ҳӵR/sHDH6¡u {t/Aۡv. 9qV# 2^:VO*j~`ӵTbCfHQJ+py߸sޫ]#(GyHeNn*I7>O0L`zS<9!c(pPDsn(J/pJm`#S'V6uPB⨞3nAJj*ss o!`)܈O?͟F\8KnRķ,17njd UBvx*#Up?t㚓kU5MzVfQc?JgEqiJv(PuVүs2cU.%G8ϧZvY0\W㿥yO0_3aٟ]}=wFnm0a>Y.{[x͍=).yi:ΫcW.x2NёA:Jb+ҵ[Yζ:Szq_S Z^.rCuKvX.LRۊ ?N,J"/Uap%?$ӓþKlac>J͸9AP ۵L\ zTi"Lb!$}gu%]ʀ qbQ'oUM; >0g4׺EPKs?@oaqVŌ,T?R2 3ڗ·o'yl&qg,qTdzt y`fR4h:TzSD+1tI`IWYF>r7㚮T(6ǵ]nr7nAofj4 BK+HRXd`tW/f55R4=3R{2f(YF)I <>b_m  > xÞ WPգRHEU[NM%,*eM7ğ/vj ,bmJI\=':? DԲo)Q]%&m3b̏ ,'>N~}"4|4㻸:ƙu֚oTJLn<&E`Q#'G\wsl\/q^}w x&N𶡳IyV-Ej/ "IU7Rqoi7͵qF1v+FQ,v^&i˚<_~xF(BN jYMDX^0BI5c~ZĽUmM;{&Y"Y\<'5v3Mj62~u6*d:~5|Nz煼;xZhs9nnf(ɩM ;$q*v/9+cW>u3jJw`-B&D ec-,;lFdݧ@^Oo<)kg}kO2l'-m23(S"&'ot/V"u[~]\ݺ$HMŐcU ھ?低II5 E3ndr?ȥ$;ʭkEݺNk۪|}BCUt@hFnoH-rGTG%x(^ —0^ ̂Ī;Czs:9|X~7Yx7ӭ[8#m|v 8_${Ue_;V^9;+Hm$ )o4 EۺYx@$YYL~m% Urߵz5tޛs x?h{]Gvn%I@,i+$<7yȬb[Ȑ+G<)$tF4ŕ"l!Bn7#,3Ն 8xŻGTL_K ZŬvP 3崊G+>OcENIj-+gc}R~)Eh},x/Ɵ[ CC5EE<) y]Ɵ5= n𦒲,.E "#l(Nk4-'-](|+{Sw^xSnx.B5+EՑv3@ dYBQ9B ^?/s]m=H^ +~V ܚO S;@,Pt+MT>m! 7*kᏅ 7O*IeX *.̪9Ȯ.V|M;G,gt\>eL4f<>_̨Gn|>dmӄ=R}:8~ψ=ZDx41j)-'{iVs9_GK9+;[/B8(G+7mg:aokqe[K"iGvvڱħrY `ѿhj? |=;ǻ{mui ftāF w9ߩSXOEo%՜is]xG믆]oJG'~PC28gJOoVƯ9PxO/DӮV[eLXdP8ϗ!O}?x@V&5o^n?Y//D-l2 os6k7:ηksqd0 PXv8{ &XƤufӡ#p!(t:-{_%Osgm[.mgg7Y2['iq g4NrGHm~g)|`ԏ[+kPAmƑBM]t݉`Gʽ}g O:Tҥh 8CB+xx[ܯ-[+߾Sxp2_UZ~\Y.-#ſtH4/siz`IW 脏O7`KĺU{w6tn"파g~ W_4$[3 ޞLlY0%vNdDY%v.YԧuSEL,]Dg&3Њ4XjT9Kk[⾛Z;V)M·\ >rBΥLas*2iC>de~-43 rl*x4-8~ot#54qeZMyT6x#$Q٫㇌Zi$g9+SDKˏo?=k:u@PI9[V $WZߌe7 /5lii+Z:jT]vwoWtM=/~k_CyH_[+[JCshdVf=_?:ĿKjj[{,F#PFJ9 W`3_Q_d 'K_nI!lhʂs5|J jw=H^FFȯS$ե"q]z_dq+wbm]\](Htq IQؓ^_=Kյ4-yْ,?=_/n3;g#q{q0^uFK y5VO..t>x[FvE%m x#mWNUC3 45--#0Hs Ղ Χieo}eiqo.)#0#6wSI>)<QC\;wXBHEPsa|?m,[_oq,q<>ScM(#9$Q$69bt‘ʯlu"Fb`$n%/xwrf$;@ -ϊv^K_>}1U~\ۗO~Ğ ѵX|CqIoz}by =x=kʫTz|vռ=7í{cuk柴+8R"$g_ط-Gۍv0<,-LCaQ9}imX"(#5Q+i̹m=12~}KFԦ,Q-D`$`*遁PAu8^W YO'x=t;!<}~rOSVyYnUGZX۬bW@+NfRکTywWG zE#:ɍΏ t2kSbFB$tU}4ď\{WJXŽ8IDO1W?Zm;~G-RY4䚸e9w@4Fކq* %zgޒ8C+05maG%sOF *"aqcV[paǾ84݌Њe"Q*)XaJ)ۻ`)TF鎔%# Ihv~9u@lcґ$~Ι73ې{UW%OolmfN8 L?j\KN4Q<b 'DAʷ?^Efdjz=)rr$0[H-қfo^aҫ6GT`WE)d`f|}Uid97ʘ x_0tԆ'8]S%|\?$?0gSƾ[`^gpy:bTO15;ǹ@Ŕd1Y8Vռ wtjlb) E@l99sS9+۫gDXd{rɷ:r!EA~H6Ncݩ &u?+F4S'|.QdP-#<*>t |sZ=qQfRhb0t]Xܺ60^T̨>jHCқ;UzzѼڽ8)Fc(\) 9cæ )݉=G\g01֨%3JT?zOM="v/09 vvO\]j}ks3>T #u;[z6idžr9b 8;'ӏ{[bܻj疻ن-R`P5WH8$њć~KuA8kd[sDO\ǚQ E}K>t"i0L:Ivo$zSJ;S p~b) TfL;*Ts^TA0H5唱qѽp*.e 뎞Ԧ4lN^xpp;U~aqTm&\9͉uǷҺ gVs"6{lێ-vJF|8$ Be7''Ud[^N;sRV!v0)`95`PAI׵WS:ozV@}jEf%H,:Ĉ ǰ60fc!.vAǩ0I}* V%nH4cq9=Fe #6~ ZU65\9VCW~ybU5Yr F+RGl?Ȭ)1Ў1R4*%ȶ!_0)BCDgqj#?9+e jcv2Uqps3Uf?6ebCx.,/y૶ b)z,W#z>en6N[t}` ذPV&\sfq4^Uo*d#WwcQ %a?¨ fc.{q)&ۏaQȸ;s=i]9ҢSTQ̸,g2^N=t \מi37~܉TLz«0E9g>Aո㔨zʍKs`jo)s8+28&2OnHۻ{qS`("$q pVSS.vJ ~cU}UQepX2mbX"}*_BnK8Knu:flbD>[:vƙUk|[ .o,?@;8+]S8_OZJ;+ڹqXoi ,W~Mkwc,P;Һ)FF_q?«$2sWθXپ|{/DG?Ox [[c&֔"}Az}fvGa~;1P}E,v'Mv EݔW"HPʙմOql^kvy2ZHz 0Vt_pp+?U19F/T݈֣AҞvwm^>i+Oe.`YϏm bfl׻7=(gZ+[ٳZUC2PeGҳRHĞpRzW'nʴWFlN UAk|pP&}f#1ϥ}~ O] SsqUeV'Z>u[fϒ} @?nW*UI<3y{eOnS*į} ßxK?G&sUS?(:zN*ĒccӌWЋgsA n:|j_5|fԶA9w+gޓow\jJPEf /Y giSxo&ajS\A.?rIwcʧqҴo }p:\5Ɉ%Z>fux%mXtm;'xE׉tӅCF %@VUB0:-Q]FK{fE$-)U>YW_ß|*_i]:wXtI m.7m3wyQ1x{׉O_wM_BsdX+f+[a}sLoeoLqggk?⦩fhFeO R05m֟zY<]ț*1!A_?~?;N.[faBdE3q37o?Xޓٻyq2n ȕIeDr@\EU+CnS,E77ח5 j߈^oX=W΁5mmݼādU 5oJ|BUK_KmxRO,DEːy 2Ou[G d|%\eO.B@Uߌb8\<"-՚O_=EМ' JPqVtd<::O~׮6m.8 rt@HxFO6zύݥdxcV"p1HJkl~sg}#Ws鶺H Cϔ¸1X*|#|2ib{;XzlY< RA -N5);Elޟ;2GƢ_5Gï&5&MyxJD 0uEb9q*0 ~DWgQm{M|m&.GZgRw[[4n>c)+v_Ou+A I /*[rq%$3sLd"5rG? u ,Ε=7?l{HI_ 8,<6=*Kk$klO]Ϗbc&c> ?W^O -Ȧ~uB9?? ~[?n4t"+oX3Zw!B'~vx*g>:~qQQ"E1>WټpjWWGu˽q;|4R)vFd̫4SLl;-*u0/Zg𸻫kW˹ٕղՎ[퇌|"~k \, q+|%"Tso"8Hmj{D1˪+ޡ `=̞! 3W#7'ץ|P+_n-u_:~eM9ڍ!d&*E~tq }VvJV->o_pc Di˕ͥ잋e&iZ]OAcFm!uͩZ)IGVpC_Ϗ~/o3w2xS`moyRddWrl ,e5 fPx* AUc @ |hZuoaXY37JAt9&N%{=SʤM*{dtơI)RA}a`|//N+7\Dp\;mNn5YPFWacO>"S -+hd%؎+ ~^~~=:^-c s-@tWt|HSj FtB\┕k{m$}׃̓^zm6~ gh5Y%EюSH lƏ7յtvq<-K<ҧGnw9v>*PT&;mt[]>[. xIyezb26n`BקJ;Ɵ<|-BI'Isp@'ix{7Zm)YLBsqҮ|ÏM4EBg4WJ/i{}}sMyUߦv?OЗþm?z$o%QT(ܿ);S\nmg 2 :G- Cu;(.?t+ö$ nwgquqq'cn^ʷ}0tGF=4{Xk{oLj#f10E02eWVN|@wZxfH\0۱;coh/%C8Cѥ]VZv>ۄ/'Tnrg#]gůPU yhѩ .$zJE,>1tשb d IY2({g|u}tDsKv=T2:W(Ouͥ/0u+[M?->/ZX|o5fof9w&s%?B/S_r|?'y^%TEOEq!BD;H_k=a:Ki 5/V6Ҵl,LJlsWOskN83kP$ <Ȯ7*BxMӼ3n5o' yGϔ13F~l||sxAm1crba "z`g _arLCIF/G-k|/Q߈-Iiikep6rJ(Bxy s |u[+MGR3*ADg@03|Nwx}&W64WWӳpU#3I1#_tkV6i JKt)ɱxڞON>?M*;#xinRxt%?h| x e#Yc>> ےLA e[G&΋/x'L7bW|qs1qL+L5 T_\6WJKE|+ǠR->8X@S}ۚڦc++_D/u#,e"Wi #qјv0ysI+$^#0K[K Q7\{Zi ю"1ZFH nCcN '9^? 9=*t8ߗj;u`gۭt7!9ϖr;cڬXs) ʟaTu1ך@Wv.S֤3P:\t15Á€ӌ+k‘?jDc|LOlp}X㷥"Xo8I)8O_P7N-ǥ9#Wan( /a_*?5?$xJ1ҪY 1Zq*3ҦzUdfGS޶{YzB]s'-ҦD`)SR2eҡbe}) l.Oi9+ԓXĮ|۰`DΙlUgv,Az`S% 7b.7?]6QBs0*\!ӧYsF-kr[41^ğZ3l*PUio~kU0W֘\3Tph/ V-5wYc>QJ0q*~_,"(#+дܟD9j*=:8Kc12w#j̓,?*3±Dg +Q*>3]ԟ3'X"n3j%7sH&9S~}*aWG?<7ߗUO/ }q4L>][X t{AڮȀF0gґW ƨĦR Pm; <~FPWVd i)".|a1T\5T UAWcT" =C6I[l[{SJ@\-񁊦#^Cڹ٬661Қ%]ۉ'ҠMN[IbHmn?Wy#}(BmSM-++XQb {odw2f_O7nxM1lO$j"q?SҤe1>J`3 c*OOSVQ+IM΅w'Zb#$гvpqLp>)ܛ eo-H}J;C?J|{7d>1y8IhD#$c*6I׆PTT`Ɩ72`WݾL)p@8LЙAlݏJ1s0s)(=-eeF:8ݻPYL2r9+F3Bʛ{vtS4ƚY?Vfڡ?CV"O23ڰsl b |UX7 Rвe\{TdQU=6UrMaGv$ld Ҟpd OQł7<³4l? Fό> oL]拎=)$#FL/~"m'Avy*a :*b!fA{Ҝv쉀oRx1)`®ºD]JѺNCqU_2}Ɉ=9TT8X;)U9@$ 7k}H2s: C"x3lq'Ϩ..0}HfhǓTHOP]W ~5MI|rO튃dCGUWNwzԚ8{M9' gsaUWO<Hu 5ԑ G^F7g̏{.sG&y?{o=q]m%HՖ=G/үQy= E*\xk= J^^߳ď.< ?ĝ{}+!+KKԯ4}FOO.kw0G5!mnS:p.YN? L$ RQ*8 ѳt(yfQ(F:ҘpyP OSYTdx@/#/*3P ʎ7Hۏ@#;EJ!OZNM&#TOz~US4R=1Ԫ/+{T)gy&h ܟl>Pe?;]B]7.63򱯱R;k;һx2aGӪ+uO6F:Fq t xMլK;d*߸HڌAB@}_‹]w1xEBuΡ{b1BB^%ޱF _?W*dۥa<_<6-{tkϵ/ۏCWHu*k=kIx?q}n6h=_nj(7d?E}g-%#L\7h0t5KӋ_j uKo佮7˫*y.)!ag4]N ZoαX iuckν<}m:׽Nj<4St ύ|_.tLMH,H"Q[Xݢ?+dYHSw㟋ugiáC"Y{lvHEaʥvSƗ "j̶,:ەya WoH۱P q4ůS+V=[?l4R-J?Y2Gs탵|?aZ5䋚sil՗{Y+mw8|CwK?ڧ^U7xXi9YŲXd;vI_ zM;Z]~TFW`hq0}6H'#߶5jm\Ӥ"K*vЮגyUc|=Ai3Z%"3o3rlBT%úo,Wo +̫"a]r~5ˆ(6/u*7koЗ^/үlsv MIL)֞UU6)zYwc=N/? /*4=JtӯzmZLRXT@O>.h{O͗7)+aq wiH^73 6eaqT,Ȃ;CdUrepo /o =tr"OmF[{5d$B۔UIεD tVz?ɫV>#?K Wƿ#xž8]֥4>sī=n/V Va\φ5II{i\+s ɒ7;cמxZ6 5I`Kgs^^8]0T(|4RrJEtߡԕ>+jk\_kFHĨN  ~pcX/Ƌym-#D [F&Knc`m^ N<;uoKZ/^[Փ;H: |GWOVPՓi"c:l4 [Z@q `vVNJ:uh}}'׿ $xOை/m/nu8ٯ/ /k,u,{Uyִ~hjDYiY2+mȯO] /ƿx1!#ϴ)%btz⾻~)7w.5X.TNUF!o/oALf^{#49bRZvI~2\J0ѫ*kJPvyS>&VM-s{} 6Ii&@܅'}*x߂>혘% :Πyxޡk׼;MY/XW̰ǂFڡIrO۱Ҿ7/>NZq wPw[+, Fj}umX'-t%*x$R8}=WixgQӼd֐Ēi sD1Οxsn/Ml+c^9!#b$fo `:שhSźet5xE\xZ ^.$$5`,z&"KƧ9Yb׶iw7x:煷[]ۺkFnU'ݖw{ZvKd?\f쥰_oh>J^=3"I ,V||kw|oein4vv)`c #$*|m|âǔY񯙴xoOS|tgKHiB?R((s]YVi b[K4NRP莛x?mBOڤq/l/'1}X .@XZh/RGpƄ}Ŵ9-2_B_]ſ < յU1,^TzN:4/W$zY9 ;f yLEg^,[cʳ+[կSIͫEc12_t4j 26^4‡%Q|2Rax'!{cLe 䌂VƆ)Ŝ/v짯k^%$f 11ˆ)zsD[=ڹS>UgӭvXN Ia_nT {~< Cڽ{ S2 w@1ӎ(I1:1A@=if|v*1s=wOzkAT?J^aPK<0.NOeO SE) )1}"?ARy(gQNzsL{v-HV|&d wzw YA4Q;=`e 3U'$RE* L~A)Dbr݆)T8Ld{SV 2v&G'Y ҢDp8 K<vLga;W"3DdG=a=4mXEc H}ze4gYW?-.b0GZPg;1 ʹY38#7e-l?T$Q#rop@Է%+P}*jۖu`*+>2qP[퀵4==M5a@51DGW @#Y8zF.EcV U+gA4^ª!8lUXb݄{|O¦18QTHu h"^B`|vMem8P rszdTf'm*؁$æ1W* UayҢG[olMX, V+ڴ%ADmǧPO'(؊L'e/)*2Μ DyX+ӗB caN*8aUq׽MF|%Txm18<ZNSҡ޲`71eY¯Lu8JܘAtyUDT`,M Ym=*QUV@dK_c׎9vv (wҜ@2:JlB0v6 `0*y,|R-%6ĢZhQY6e\*_5O5 yGnA<V%wC&xUec|`t ⅞4J2dHr2]TOʠ]ğ,gjHڒ;W?q3VC#hӀ1=*b`,SOLԯ)5U#!~ɵc0JtWjA;T' ㌆,HRj#PqN'!p}gdx|F1Eg$i6=j4zX##jm UghPWyߌ2`8up:YW8V"1ˋ"\dԏ#_ˊz" D-q"L]ULG*n# s6Sq%HGkM}>ޤa>ޞ ?HϦb؈JǙx4d`h!צMKh6ӊt9>2OLe)& 9eO !>hF˅`>ޕ8Y>(uYBvuⸯRfUA8*s6JR4l]JGik@8ϷV~Z[Y7p;Ջ l=?¢Z+Nx4 UDӤsM 9$zWŸ'1LEe=1ٱ@"P+¾;j+?Zlo;Rti+9=);Q2wt_XnӚ>n' rVQߕ!ʭ?];{ՙqUJwǔ84`F1N]Hjc* _/~'<审|yďuQ[<$݉$l>"fML%wx0 |S$ X'u}]9X077 ` >aӃ^=~%h鴛5}-ID-T6HE~SgƪTKtmZ/Af/&u>ZX%@l[%Q[n&C&r|sk?|qxQԭLwifFi ݿ$]NjZx4imڴ4!qv?#2cnܪ>8uX-ԦѡRAoq!@`8l/C@89 ,4%'eu}=nǜN6۽c=7Vt:R8!7q15IzLZN6JM<|f5]a-B qBb62|]kGV_ ,icլRUE;+wzW-_fفn!dQ|iߴ.лaWճIT?vSqfGm-ptZվε>2~<Ǩgw]ى%)"IXU1_]ռg;unePO8mI.7 P 0nx#'x x{P]5%BnB@F3W~П|p4eY/㵰+w6YĊA\q_09SݹE5e[EC?/|;<=GKӤ'b"f_YPNz|@<,n7-ETBe$ޗT2;AW ߍdMoOxj6]cH(D*=mꦮYhjk o~5%Le-rd1#kz=6"׻vM/] 3q+:}:xmaᶂwHu(<Wv{o1흮oR:bH^Elؚݦ2I( *v0A~*xsð^%u>C5 uC"+-㍸\¿x~.mg޳KL}B+:N+Z'euZڬNvM[z'墲I-O¶r |`nL>c,hm#cF!ʸ#qi?K}O{W{p 4vq*ޥD1x⎁ `=sS6%[HgWg{-RkcȒ_il PU_2~gU?iΪ]J魖D窩mcݼ;~2㈹l C,Yysp̀rzgu?@hrx]PmhJa1Jxm"V/ظd x 5˟/ȍ2$ co$rxěfIʶԂ'ıpc0WG.fn AhtLP)^xK5$jf; ۄsA1IOriarFIl95z'41<5`5DS.  VCWp׺_ oǩ]ƗWBy1N8 28`E|1o:凊,[QYc?<׶|mgr!uee[G_x/W>%f}F5n>` `yC(SmֳY]-0r>g7 t%!oPGb2 `r/R0PK3 _ n+mEd$2P.6 Tt9S_'x'>xONz ďs+A 51뗾_r}m*no?:rON3^=9;Sog5*{#hkۆ'q$|h5[>|,^ڬ1(Vc԰Q28|w𥥷[ .H|?( 6|cٱZ^>It< =rIJ}أdb䤟իiqvIJ:⽕\`َ!s!a*;GJ߉&]C_|Ѱ I/le@(O&O_\{lX0 f^6֢EO xV#ɸ>t"F t(1^(8Mݡկ)J⌾!ѥA~T &-I+=ö;ml.RԳ6~;ҼCĢO1%vhVsoK!7Dw[~Q W-? k|viGy*]F8cƈ\sM[r}j UPVv+tr> lș`~$evR1gw{WWm5i>"ದΣ xfiov*q,'N8KaJQF; |oqԕT3yLMHPBJ]|򱵹I%ZxgK|8 41B{QzWxƞI9h'01 p{Wk%|=֒}S46)t4,l<mz,<kvđgd'-cEzx\$hRQ%ע4Sr}k[ށhw e{]ʰG> +~z|qEs#dRI_aWZm _X,vT-$#= iFi2O;b<`sjLNXxoYM~F3K6[עY.9[ VKbk+#lHt0#\ yutfgK]޽^KJJOn/KZ%N%dߗtV5~_wW[X-݆Kfr%]u~A]Nx޽oAs^"yLm$O:囍leaK1Ѵ "D0p3C WxCvg"IcT֬/0ˉ=0qԩq_; e^xЂ»k-\x7.<F𭶭;ּMs-ѽĨ& ȡ.1$o E^ V˴dT484! ]Gp$fWЕ0"41>LJRϧyv>0^!qM\YBݥbV@{cr:uُVwciwI W't11icXv`㑃08wU]8ɥo=1n{keoKmUb(i$cwZE# U"+`~6TB*V{Pҩ=sM&8С98ZFƞW(fetZl=(+R82o{[.zsVٰޝ7q@ꪀvPpUi[6+)'R4I=Ǜ&g nýBgPM|`Q*EsI XiNxm;@(XЬ^ģ+ݯ7> tj j6x oʤC`8}6Qm2!)r 2K\N#C0jQYH\Kn#鷿,OہK A^Bcv#L>ڧD >p{[\߻Tr© eX 'N: )qکΞT^ib9޸i6B_㧵hdLoAMd٢3̲nڃq$ILJ\ǡϦ(C%MIR9> p6ǯV2J@$)qzVdu*$ b?aLII>^j烵\-"ʆ2_*33(ץOAP>l{tyFq*]g$vbi !M]FpM JrAe4m'N(<_\Ui,ep}}*}r v[4HJ S=ŝJ'W `zTRO^L"ۋxF~n~Aҡ<0q3ʧK002]DfTʃiDvJ$;VmwVbu)Q}*ʫH[vSGa烵T=$m©}TG&:v*[qHܵ"*3(ܯ[P$z$b?SL "e?^ƪIP:8X34Q>N4T_B۲)}/*VS唈cw U ʣpAHnDd(wP݇i-+n}¤b\Y,*;Oj'gsڗ1IǵA1F߻Ef^E\Q8=8KI!Pzb؜nH*KbGTcVTw%$c_VM˖_&|NgǠ l WaWf9[|-ADTKYlmlR6L8 c㏌61\;j:,#.{ʧ@mu"<6g+nŗ>WRV=W|'˦]I{WQA0̞^;!` .zf2|RY;Jz+|R+>hq^ +\jOMim#?x!Ut}iu;4zie[ :X|dtUIw+oSr@X)hg6(UC1Q\x;u|[3G_WAݘyScp9hlXz#:jVDv{,>i_WTJ~B'iIb׬xuP: 1kuxfQ𮨐XEZG/\FTp |m~kY>4M{p$&cdxC0m(X_.֙i^nkh H&6#Ϭ<,ᣴtmG7$aZڌЁopgr!'_wnq|x^RూW%b3(h\p|YЮ,MU;C2`@9zOįc9.ƕS Aoݙ"*1gA ?i\і۷Y'dEH(JQa48dP؃y矗5h>5.o_$GQ,pa2B+-ږmO ƕ_뺎׎%Pȃ,N97ڍ 7Xk$ U7|me^7 QIST˳`tDO8#ҽ/4t] O:82a€N__7'W׵+M/VKdj/aޛP@Ӄ\9Gu̽7uxG|jo4WH lsٱ6@Y%ۂ{ [Ug1P^ͩSa1~~zv*_4]>u}r2*j| Qʡ`3^oxil$=h|tq;Xt[ɱ*<&KMI[Tx:?|/MTAxs: 9;+W7y >uhEwd,o#yiŸ >m䩚6psF mo=YGVe!+_;'W1ܮk5?k 5&[N[NrBl-4G cǒ })+䫟j*7]{(M"NBE$;ч9וHQ|7{k׳Mn}Y/i7^'K{c.K@maLd Xq_:kZ =%y1JOBA%2p03>[3F\~]|Nַ[[)3ʙYl$;m_U\Ϯ-qJj޷E4dAgo#E˞pֵxǾ4]`g,'Y;LCv9F |uK;iHl+:W5}#( 筮fV=㗆cN6d7#@>Gv=v+ż#+Q}`ںZL9R+Xֶn)෵eJHdfe=+'V3^ì+q;Z̨p9Ln;F9S(»+[ҷ\#zK |Xi[`p0#ȪqѾnTWq5Xx| 4ˉ#xKL}r7FBfyK*4f^(a#x%rrW̞]X[{-VXE sBSv`ӄ% gROoŚE9"u."pP>X.ױȎ0[ L}gk(ZXkVm܂2*|e~,!uY}>8$FXFV,mL2+'*ٻo6-ַyCeRg7{*@*>qZ+o 譾ťOd4_gA)^y8_¾ qjR2q߱phfXzh[noC>^Ë;/=Jolu +u%n-ي#yrFg"_pP"RĊS޽M^t9e FBFnmɟ,}篈2x&7ҢhtKӒ X=|pqeGpdz85k[-=[^yN",Mtt{Z><BLTX.'1/~grg^g·_LweKUběJv#|b=]q`>LnGcMo[ky&r<#`; ..-i~⼻,wǞVKgKgOY-e>UmBi׻,7`Wmg=_[82ݿ|a~\jWSkcڙ(tI4bL.3٥K7Re* 1k;"YF#Z ==^G[rݖGxz<;cjXУ'I8VJ1w?p)* pA>b8RϽ|jG$b)FL,yonjqƃ`^ ]mz,NH֦ 1 mxl)&S=Ly=ē.x[H6p=h)熘Uv8Z&CFB:c)E0ٞS &Í64TOHoBؖ .c+[nsҪO3(&)WWbJ5yw"9KC[fNH$r(mLVMϘUYfa+rq Cq *xⓁ0G,k=hƊ*k.3[>HD' }*qIU$dXZAMμ_:+l5 j҉~՘MkpTuǦ LH2WkR>Zah;?J)+-1RTT{.)egi#1H$6Kp?a|;!s7qҮE3:Bm_<|֡CA֭;I4bQ)F 㚮B7~8?KT.m偑b, {~¸qM2;Uc6$ͷfǰq aV߭A|ByxR%(bu8t)dQ1 c9]B1Z87/+:Vc}H|8W>2Fm#'ץ+Hc2`Scf.JYr; farnROӁH dw`qL{ypx0o/nw)\i0E:Pqڗa+g*1ڄbEf㷧&x<} #!FӚ"odQAKZ+i6܎ea?`xZB"_Ϯ=)E]RbeTPNp;Ҹdc[~@*Gj/Cðsl62$ e{Wխ+WC BATs-S9jKzU iM_6yGx0)F7Jc-nH<UפQU2BiL+ޣʏUԗ3 .88/:?X?v w>#^ca[XBatD;ӧn*%˕eQI˼*Rp8%櫑XfNf@ Qsl.=OTV}AڬH7z1rBDhpGTE~CdT>Lc {vEgB9ۅP6r1==$qNսf"oyE^$+қ]gT,gTB"`3bG;qצ?‘ sypOjKZhZYd9B{B'qa)\BiGFw} |%sʠ'$v֬#}*iq&<8Zv7ȹ⑮9w3?摲j&ma> S帹Fo3qUgLizw\.8m?Vh>J=a#C7?Hjlc`{b ˕'F8T0X vQ*il5;Z+gv2;qRWyRt"91)cӥ;rDH#bՍ"= \q,3vF*d9?LRGӥ+a9*;.Dӷ*z - Ց)rbU} tsi2(aG m4V\:tOkiW84iDX.]Fsx@7as܂j.4N1RV9mynC9<qKc̐{ۘlMʹvksm0) %RMA皝-Rg#ӽg?t.ڦk*j#8JF՝nst0ˆ8⣷UbN8Tn $ F1JͰ, qULAr}ۭh cXCj)'ᛨ\d'xyCҩr+Eʑwg^b){zvhQ1ҭY'ICg#6nWd_9C۳o% \gXf1QvҨ:=6ej$3Uq8=FGJȼ8fʮBA5]@>u/VXwnY"dm~)Oԛ.AC~i<+mʟ ku])n#?Z!wV׸v}.G1+Zai+װE xwavg=_я߁kI1}$K;bIe C˵H?{%to=y%ōZPyl($+0 OOOCKҦM v?3)Y9c6vǷj< &-ouumܨ6RI5:̾AK9BbPL#+bldo4Hkkcc k8*cgtm&.d+5Wxz_ci~ ^]\(o4[ +bL}޸Ϗk_?ᙠ:}B+xaO6ՄK啊T'd2g21_B~ۚ~1 7֫s{=d7jDGVcW?/_? *jݟ|-_Ea>i{*\D70ި9Pq_xSY[>[xNnyW[j}1aM'wTXpV9:0J1Jq[8Ik_#{A_V$-r߾xn6f Y|J~&b#)E>@1;g[|%aCas%͕feY}yj;B5UhHb^њI \v;O" T=%km>ʹcw?8;VUx+\] \zK5Ć4'?53;L9_7ϧijZfgvE7qꙎ%@ iz W^ݶ5='fϳF8Ic\K^|CVՎqs XMؗ0&RTB;J𖭦m-+=\);'GFwIt-ͼiHf2푓h5TbնWS-td핀Ф{#!I?fxZb-yl>QM v_W>qH|<yZRZr:\" nPfɈNܩT_wD۾R#%cmE+ :n֥I"s2h͂$x~|+_~zb]Gԭ G,Q<Wv xӇf*KL1!m #}x>eTQmc`G*v83)GmEu:7klK=4<-{K#W_ÿxwLIu ZM2;XL3$D"RKA=+:m~F:j{|4pd1J㏹,?_(n0ŰZV%#0$2(Î0F ϝ[fƯ7~jhzl]Y6%մ{o£h*A+ ^~\Qs5M)7%\Ci-.~n\W:۾. ϩ?wD/7cAP 'NΧ2*[;^|;+mnmV ^ylmnH7[s&/gxe3(dHڄ|/xrmՒVP˪kqV~zi [Ph{- @M,nf0ݸpv;bu 77ZF6ur i4rͱ_tFc6`A?:_]6lN+;K/HmO"cBR>jx_E'P֬u'RXAr"_agpasU15zv׏NOEŚja1 |Eދkmt;hlȇ2 B|acV4٥xLOSW醶U s۶+7C"|v ~zwĻ]nO4KHF .vk}@!է^<=*1xjw ' (Q]F#9]>"Ʀ.5Jҵ]u]}"YcΣk]{xrY6]6t9JS}ᯈZDy:nC\$2^'-xF~uhhmFM;nυ7e7B*[?@}XӮlΛq]gpmq>qTq3cEN)~)w{y}ݔ(|6iwS/?Re|HQ~$=ޕ Ao<rLcdQI`m9^q_Q=k|<>&(; _?WϋVޙigqMt4c@yQ}3Ń#E * lf*םY-wkRX+S9o>/,y/4?b%#|[gcBỿvmR_*S7= +V>0|c|7g6^ݑDV[`ް\XbǷw'[o:0>}B6x UirXHI.^ͥ-_C455?M|em>-ͩZl # q)k_>d5֡0a7zK#pNU~p~#ӼHڍlq4"r(;  l|Ӽ wzuꗚ\N3n 7 `+ɱ0*K^h)Q|KV{Q[Cg@R7I'@{|+62\ߘY42{Sǥ{Gǿj)iCf֥Ͷ<Ʋm# 01^kៅ ngKJK8˹ķcL![r YS*JSrKmnkKh5W_2'_Z-RnSEL`n٧+#2% l%a#÷.)Y5}=Nt~rUˆB3{?siZ<j=0-a *,a ::=XۓcIɻ #us3ϱJXjpVqKu U~9k<9>-NFX&r ss_?xSY4_׋$w7F#aoЇ꧸ڍ~ݧoa}&ipc 1/? {s[]7: s; QN'a^_FݾJGL1)DGfl$K};mL/?|/:~4NPzN;וMmA-9Kһ3>S!>@'((brХN7iE.Wo#>"xAE`[{c)fIp8` =}$5/knq"8s V;6~l+>&7P.fbآ.I=tt[+}YbUh&i vO&*eKs_q9ϙs𭧇| { 3M0Qou˯.qy!,8A#n;Ӿ#KĿZk{clqIc?w{o귶貴q[CVv@鹚Bŏ} X9biO7Ri)Wn=Ԣ@319`/鑚:ӎa[rmXc eb qW qg_¦mGQ~>qJO~`} $FBȣO˸*}gULJ'n:OXR~Nw.h(}U}H8sIԗr(vG@ a?w9-)MxV4 /dGz} JWcבMTF'Ndj 5Z_K1qXl8֚ x׏֏m.}lk-xJI+ҹՒdsŞVDϳ5Bdi[LWQՑ*?cـ(;`ZnRWq(䳀tK;#`:\`W)a^YϳT|.7<~VEp͈*]iF>U9Ƿ0G+ہ&;[@d'9kdoYOOKa:t5%9P!$?*hyR= ,vW M'^{\_W]wXP?xˊwT͵r7lN?J&yU?/2eCڐ]F!<}Z?1?hk )U6SR]oM Iu-Ϟ~og*2u|Akx)0A "M` .%{@pwv~qP5Ek3Rͯ_G;c!T1qZ5H߹2P3#;Vtz rG`b#m]UotTWe$>?XэJ~0[zޥhX'F0~x+ezjg"O\`֑5商H,;_AR@%~Rm==e,1njsY2,*yϸR4NPr+> |SOe.>h*7xȬџhF\}?X!QQ+c>. #)p*}ҷj}_W:sb'&,QsV:LH$}O.K$i[!xqBRU@G7ʯ vⰿn `jP |gڥUhTѬ&m65b9n}ְ`8ʹvSd:Q7$grHܰƳx~Frn&RfN4 ;んGNU<;|n 8T*f_9E}z^O~?5H q?}€Oҟh ḐqppGxi{@#gm9oΖ;-H~ ʒYݎY?O#9P{cE8yrH:wWEGE_r`+qTo~VOQ#c>1.lqbۅb 'x5ö):8h=Rԯo,BPJȚNYѿƗOᑜcA;v0]#7#x=9j Edk0Vwtӧwa26+]g@w>ʧQN%PsK~F+ip}7vEe% JݓRa¨MZ؝E?fQ9f987aiJԒ΄nU\}?Y.-ӝ{ A Q7LphhaH0ݺ:M]"_1P.73"kA}Z7wiH}9u'<Ƞ0;PCM*6Uk6s dˮ]W8RG0>Yǧ&tF3YOcǽ`>{rF~qr}z[Wu;d d;" n8]0,gg7-dfu8\MD˜zt -?jj7H z=*?WR~}REY Gk.u-US Hu=S3d85eE-N[ wsLY9ݟ~ނ?2UT'J= /ngR:5U$- TolUZ}uv3DzǸْA5LrƸ+=b #[HdhzÃg.n>`RO2=_՘ڟZ2}B`=gY[+kDw0#8Ց3<`n\ 5潻n+X}U#}V%@Mp^hto5f%d?*n61Sty(} y?ƲutԢ͹ڧ1_º0_:FTߡﶾU=5 FŃSjknA\zWܟ6⣖l`/$ǵL>sJ ,7o=ھ CGWOخ;[xr/.gtLV~Mqs}uǩ>mc5GaRf`gG+-÷ҕU.R`& ȦԄֆDuNR ˞Q@Q@85JF`>^v*ÒB+g>C|35Y_řl/;%ςB8 WW,r9/ ?V5i).VtѪԑxT u}5\i,j?Ѥ-Mn؏Er"ΰnm#W;M~:H^qW@ |k I%foتKy 2!>{~l+ ][Ɩ^Y9eJ\derW|na*XI5U_E}Ve<3oĻ=\e`yϴc!u2QIQq!q4|K_YC'!ªLH*)G;?}nk7n}&ntC:S O} 7躆>gdA! UR(n9&#cpdєeߗo1ܭOτ:[jHn,"D2.UԱC~3.BL߁:Y-MYf ȍ f-g8u=+Muqh`^Okʑ碭x^:'˽?J+'5kY nH&61͕pjxo)I$h{n"5sc߶V<-pn5 s]ye*mX2)TE,4F[ _\Ea\K\{xxif&9~ \~nW]jݽl/Dfv#pmwFD5;YELlYH',P *?Jy{X|56%j^ms{ I xBVֲi:ձhCo&2>y ..|q[=:ͲhZ{6vhyR/xY%ZC[@.raEÏ0 p_O\o|c5Գ Y5gHc TޘU.P6UUەϧݧU`&>E'}vh:+썁+k,X&$nD`~ǟ Ih܍pHX[rz|pv GO|7)u𮭫H6ũ;Xʗ1+|k~7O*O |G;3RhV}BďS4r``@ OֺJ愣]]^;;$U%j>]>^>mS5^1jS$cf!zޕK6喖5{aTWG˟.R ҡ)a#Vh!աG03|\m#.1Տr3<\>ww[6 ]q R-ΙHbz!Ֆ<9/ޥƑ?1<>"L)q[{to jx]M>hT֣@b;xj|߂l<\>!Z|f^ Yot鏖&.VF+eZmO:=:տs -~o$7:`-Y^"p94~ ]՟+K+?/ ]xY+:5j1NrsןLh1wGoG #H_>Q8e*]F\"c;Kq/GᏊ.mmUojЇs"e#chχ:uVYϥŴב䤿5K9@N8"M|U/aA~mZyh>gv=Z| 4_î}gM}6;$ٙgEqŝa fXt [xR|{k5ΎV[_۟5Öh63υ?{6)v;r 'Un',\Y^iQ@J3&G ۺ 3F#|I ib&U#>Z)UŸb+ |Um@\H[;&o[ZU0Ì0!<%/Ϣ_ΩѝA`qX mGҿ|7gxZM;?YFȈɘwkOoGWZla+^Sŝ?NOem bъAյtQ |,/uun3hzR|7e hqI0ݷ6}|GXWSWsUzeӳ警i4PW\ƽ7EWtKP%|Uޟom$l[\څz+> M?vָLick[[/Cؾ&*][xIҾt"]~ey$(I8'v'7.M\t6#GX2K$xNcP]/Ծ ž Ϫ_j,k,#HSl#`JX*v?ixFXC~f#k׼qxIҼʋH!iĞXw`#7Qzך5d$7O1E"3'x'*zdڸhBG+0\o æ B`/IE@Ē9r+t[se"epgTtaN+|9KxgKk(Gv-#`;s?hY${&2r FO9#$O8?WXm0$^h]7`s#q'ay[7#J6![iẮ=~+:Y0g&".TcБ׷~:R?)&EIa<lWZoG&Lß?'ʹm]s_Lx^ҥogXn9D奮݀ppN1crFp̹Yψ[^[$B)Hۖ$/QZ+ȭ& $1m*ZOVH {|Z\:4--c/t3lcanIeXǫ\xeh%/6y sG<u6f_[\RYD^fNA:x~XKViD)Vd_3i?6omp.oI0TpdlaF@-V/-)}u{]Ziz.t\OD~Dىi."ZћuZ\EQGcSs+d"208?~!H|v_2>mrѮwWzW ROZc77AQ` Xr9=犵K[X+wW~f)`UA9svpxoU>u$v7@p ~@uFڧ]GhQ\u,..Sڜn#~q^'5߇OWw~D6ɻrxq<_X]igd :o",NwSLl硫}7)'P!Yr7o*vH@ۥsNJ/uZ[E-b?=Aq+W5Ů.⹖-̭b6]8g]<]{5ҮRԝYJ"Vkڕ؋˘+C%@?}pNWGl׾9Hc71!`pd9y|Wizo"k Xs;KSW>0'gGJǚ6ӄ}4dJq8PqN{[ukV%1qˎquW%v.hZ":D 66S⎢Ѵ't}!p˓FyC^NleLK<7O3 e9dPGV׌_X/Q  K@SDgr_SOqm&t]5OH&1["2K($t*T׾ F[̄ž`+'3f]C_=!HUA+G"L)e<}v6^=z&bb#wla?D8۾c좎˖(b/~>E֡1iUcx:MqᨯU4\ѕP*J lW n([rGM/oeS[RNX"s n vf99MjK췖bV4v(諐+=Ƨ{cOmD/cjF W+Rp_xc[ܲKn-vd\s>I<dZ\YRJpnf,|S sze⌲#?̋n:`Wi)F:))Dvm=Wk/բim:$򤁄a,rU@%uwuy{)7N 8tS@>|2~\}ιqqk_v̈́X# W]tfTմ0_^\1XԆ|̮Wx60A$V3Τ,ݗ7AG i/x'W/Umj> Gm;F {7(.;$/ DX/!lnC9F3|IеYmM3\,he(C;F.nShxn`BJvOKc'kQYkVB,]@KC xfWd X}՟'Sb#FBG߿aX>(m2KMWH#ep7vU2uM MvM Ưgrcmk3.p(PgH/^aVOcGHdWG41mga #;I\|yoGsMxBo|aY|q|$1x%}S/h O%dڻ}O#ޝ.-"i%O1_%7XсP +Ջf1s_בƿzm۵G Ku2|&]7qfjz:kkyMټkPB!)9RN2kc9'|W.7W h:%׎\N`l3 yXGjB}> /EAqJivއ#c+xAF c 146q>Hbʻrr6 sn_&.m>Y IqPƪ d8%FKUZZㄨst+<<]Jt&?,yMs!تg6kc:fpع7Sjw|cueWpJ|1TO?ciť0Y~ToqA\OUr߈Iw$_T#HME̊K1Y`pA&omk<\\W `RѮP+9va{u*H[Ğ!մĞ[Gf1~3d >R{Q \IAmw6Y_-Tn$6 }kt]K܋`FخX c$c<NOφb+Kp]`+HCfW.vrwTvz~Qn-/i#DKY'6WHGq ?RU#_RG-09*=񟽎?UDw>TߍUOlZr0S"fhc@@:h׽}8,-ӤI)Ϋ=#[)c?Zb2!GP{鷶=}|ZC *H? K-*}1|/kmןPd$v;{~+_GGnq* . n_?ʩ唉٭qb|{<zmMW?xuPV;⏾}_R#48|)ǯcg\-^U$5V[]Fvgƒ unu=ʾY5Um{ZixR]Cn1—|,~g~?,{֓P"goLvՈmUG?}ʫő-ŷp%͸xxݧ0K"Ib?Tito/kgۜtvP'Mͽxο-}FK?}E[Ao@\VMoۅK69BN~USZƤUh#f0'ky&]|5|r%v#Ҳ~xfS $a~E}E pTvJS2^*SHuIڟ٭7>\ۡaROLc~O__#VAlcxg@>j\dٜ:d{f&5|WxBʯ/|n]i9>ƙzmz]&bQҟM2yUv>5f]%л{<cs(,'cWijHw 28GM5?*GŋI&XAχbWM .*rg}0 LBtV]?:~v#ߥKi)gu;qPr~ƒrdcH@hs$|O~tfS%gcMclzIWP@3b 0R›`2 ,A ,O8C>aiY6g*8k5Cn16ǥ}yq_l. ۜebs>ݣf'#9v[? e$@Wd_h,\q{~9aBʑ92ʨsYv>\ៈ_(=0ncKCPOLy6cOK ,wFF;JbBVЎ/M]*I6ŲwC,[Ohۻ޿U/UGr\4cKEhH=99MCbiA2+ntjbI6$^yak'PE1P>~u+*cEվ>]_qvf8oצ0<{W;xO|9"2I(__$2~s82P8y`P0c(,|w?wNjƿM?y4~K39RUrnXͳݫS%9B:qۊ;KQꌶ 8UvOJ*uRk{z.YcqЂL1QΈ"5/`2%MpҳF ,c*Hsq+!F8=1WW2cG jGUĉ`b;_S}J?Wk]Ii' +V9 k&J_{9dG:`,e5HcCHHa8 lvhٯC )Dsv?4Ԧ(b;1O `m[i\-mOZ=bݡpF<˞6KͮPjixm'vv"h泂}2q"IkMʹR@' VQD/O@Xlms'ůs|U->&ڤ<1:^QMՌtm4M+\))ώ-4. {i{9Q|ڃŽ['ό?_/^'L{u<;jq.8I SUK_{btئԦi m4͹6'/7{ mrY mDT`*pxlu+[[mq_"MZ/?|Uvo~.xf oNMƏzL莠6 UgFS!e\ zהxB᭯/YZͷ%}3Rf{2t Gs[:'VEf~ 5,1n;86;+*B}eAͤ: Pα{\l2caGOxyVgRt}{56}/cғ_=iY==AF򢼎OswÞTbN_x{IN{;1Z4D}aY*BX ?hLԩy&5KY$0-̥Aa/Y+x*KcYƛ4x9f>leҿenWu-lI]r.3X7_ &z4hvUUã22 f']' jIfD H;m @ xŞ6na>vj9=;w&W_c'n|𶥫V~.Ӿ'hʘ uK9"ub^47+ڨby_o9]Jy\uWTeDyݏeu x ^KyEƎ#7QKfO"\frg o+⿋FV𝸲aDv5Q۩ڋ"2 WN>m|ae"ꚕcvG,$I&pT+](Cٯ9u=[HJl,s+s\V4/)GH;{Ej $J4Xl$ǿK2̱Yw[Dҵ}sta}Uv 6s,s4L׳2* kF/|մotK} x&GiH;53h 0+f?I}ՄSik WrK9%kgl۾kÚ~8!6jSH2C{k>^U@}~ghbK7(ǖѧ-|Ԥ.|mqF'>o5|P#,3b?˃XMï3Ǧ[I|¾fwdN+Ųt&;k{ Օ#n1+~ |{ᷚhl7rI3Ȟ[,VR`$bO(J9([X=]OսWd-?4n I,{yfFbH! WϤY5߅TDy0Fr#vS76~!/[/e\YN+gJH-+,j%@9~=I<s kwÍǦ'j3i^쬭)}ŞG}'L5"ϥ\Jńc,>2Ao&1u[_{cmȡ"_  lx¶zVa&o142 @_4,՟Nj:u\4ħz:n^_G>"*  (n,EX ӷU(1] e ^!d_20+ G RM|@? $听ix\6WwĻI_խ5s<\jq10 rW<`hC6JUiٽ{mvaӔ5ʟbӚoxX)H@FR ҿp~=~7;Z@'ß[nuAlA:be3刯̸*$yjR\xLQ4:MiƷ$xrR' tIk{?׷Q*)H~5wz4 />常;m!W|WWnO:h RX"$"53'%mY!ٟ9y :n"_b8Q `}QuM)5,ZRڮ&OH&0 ~b,(4 $<{YiSB/.$(nJ20C_k>#Z񀽖MFgHlOr1V'SO&o?%@Iӧ,lP{;n<\=M։-ʹ~ΓxLg9'h:6[U-=s<{:PY!u# V>x(cR]bspHĎoSPp@W :yԵK8Pw~{( WURlzA9[<|Im0 H0.drӒ0~􍶣{8okeye*C~QWWBaymfY諾Y-ȻUwt$E:o^~sךuKKyg=K7gH@>fU8hTS7e7<1*_4qӡPKFw|oxOAºm&#\I (!"%:|djx-SE:vy O帖8V]''$U ٮj*K42A qN؍%aFYѥ7no_jMwO%P? b1jϟ&ƺV[oF$mbHν4Ohϩ͒^-'  b #T0Δ/~Fյ|OsFv ?˖#<)ݸc vs GaH`3 .`K݌$F.:H6n8FdoEnu/³=#,rfFsD6.~C평 <9AR^L#Sl-ǝ*d Տ) 9./具HPFslI9 xBgݖi)Im5PSj(Y*+ǭ)B\ʪFM=uy4fJq$bI_.FwwtߺArNmlmD@!†,vpwg+BvRb[tK+Z0y\3Ўz> ַEs~cat0y n*0XoN]ek5.it-ȓZ¾х ;n0{  &E%Se-9|`E!׊m;CKK:yb,gb(*܅LzO$x^.!xͮu 7}8bf7;܍;G5Յ=~Lo3Qe񞥡ho[W2+ѷvk)UU5jZ~`.7D[xL3+\"#v[;=O5t8fhm4^u/xkI͉-u[rDOh%V_UKg1Ңy52I_5!v]Kky _Ɂ+ӣv-j^# Ny4$i. VZ _`Syu-Kkqt`s9 WoB2 ECKke/%xfu2RmtLWl<s)&VYb v/~ u5Zi*` V@ݵzt_Ɓ6 +cH2pyNJNjJԮ?h}Ďf F qTn%(|Acu}2g6E1wF}8A*gI^fmЉݷF7o\ 7!]k̭omX$s[A ـv'\BQjú ntgLf|cg05wc>#j,дPMpٖEfW$M$uO?uۋH-Xo5QPm$(-o {VfdIŭNLTC P 8MJJ*Q^$ӵhuN)[9~YV+BǒUm{h>m5lh]\K>Xao,rW|F]/K𵝚è3#5 L,3\y;S U~|ixSC]^M4k>J!$=MGk4>DIܱfqjx7M Gi"$$;CqW\0TҥXޖ2WQ 7մI$wZ RFY ,J cT$Q^h6,bDO#WY@͝ y+;QaYmgt̏"K?M=< 9:<-}:{)yp7`c $MOqՔ-ZM&Mo2^j:lfo' eb xqUٌϛxoX[C^=G <I\ ^_i^E0}iRW9ǎo / q3_;te#3|*Pzq=T.T[z"?Yϩ}V{k:;k]IzW/l=R[RZB<rD0Uw Z'~Ծ#h2ɫK3)kY6Ԍ  Ez:fY]Yk,GNisLmp*s{mw`qSS_|@7^\[t$v9jx?š -KRmɻ*"le,EQ6L~Y\iKm#\BՋrPFanov㎧PW.RpqeA?s `2]$DbRWjLyX!d\𽭎WFJ)Ϛ'WwU9R :Rq.J5 H]3zBGe--O'Ny`:@yW>E0K'2w€S|y]3&3仿6.;y.žGLD>i< ,WѪ N:WyTby=13=F+ۄ'TR*I !nБ"6Yh[fTl|0gT Žcc\Uv#p=yS`V3; 9#jDvfqV!Ȃ#G*luVR<⠂PXQ\l~tEr*sU=`~?ϵDo ŖnY7})$Ulz"gFТ!T¯HrqYȒt\c֡ĥ"ܑPM$P{!g%qǷȘ>P,7V07{R´IAe}GX{qݞh zͬfi~p{ɚF1tgoIzۙ-Jm <#}G9VqXr^Cj{au-Q00?Zٖ(.m~6ph@$XpqCEa1jPM2 A6ySX<ꄯEni*;@`zwrJU6qg2H}p<2LF!: Υ}OLSqByNTivt3Xg¦`\&yPiu{YVO1@#CتJ=(~ddpWwT8jmוFYV>1V8_G?q5 1{@ pYꣾ8춫 D0Z#'/%÷Ҳr)Ua:ҺWˀ x-ъJc88vwQ靿zN21FW';ºnzd|)%q񬑬3; 8 s]i~PeyaUcybP `p;? ;T:ϝHpJ+j:}F 0,NI9ǮGJƷ#{P{cNb#tC^dc*nZVd\vʎ.T6w03}+[}J%hʀ~/q ll}tjvIa vӦ*\n4g"_C\ݍHd%fۥuMM-eCu0iCGb߼^#g³q6]@'EҭSy >*y 7*&I b)9\I#l.Dw_3dʟ|sVF&hGG9WQ鑉Ŕ@u?siR(r۠{V-3G;p=űy"A 3jӀ%8r0Pr: qZ?Kv7,CFcy`C mY?KRuζ, vѲ1PY6=ڧ.ڝh zǨVETV<+Xa&݀Q#qSGsfmOLq]pg$5]'O GF;7h!p:+  *-OO&eʺ@G^j?ܛŰQngWs\[xo x6hYb?͎8na7q=iIJr?iYLV%<7V]!UhUf' j}D/ˏJvp09J3[ZGQNǥZhR#ۥ5WzqN#=)X菽>xBO8L#k\W Nюk+,| }fɳ g};G"GFYԬ[tSuaEzT*#nGulJ2O֦`d[p+s3:k6fVrT>V[vy()4fT^8x@i&cḾX6ҷp>(4Hux˯蚔M c^lđ2:IX+|A;= K_OT<͹Xfg'*^45Q0~+c#ڗu87wM)'`|霯 F8sM)k3u#ow~_x~mvHf;KrLv#';־j+,-. wprLLToPݘ9FE{FV/~|en+Df[Th2VUO)ȄMx^.~t`rHuǭͭň6`vNDk;>WG}{W^0 }[M)}I+Mx.}? Ҵma0x:Lۚ jLp;[Eʯ£[*|9=_|-[0[;jO#y2Q& Ƅ\Yc/vavHmBȆ'2˸lmO_Yj?:HtSFY,%rJ/"x7ln]#8o<# уMIVr*-;o{}tX)S+twssp7Aq8Np7)U澏]^yw~NOT'tzl ;?),E>TR!3m+>u7RNڴCmk4,q T8aí(j=bHQ y a&j'>ح&<B8]*VT&I*ZKA{?{c?s^%~+h55d% 9nGpخ[|BO|;xz9mKO`E _QD2#4?vO)" NV@ ݁kXvN-&A>6eCxȐFPgjgFkN v_̬mWcpN-'P{-GY.-fX ZDž20ZWVʭcYTm=:i/|1e=}o\ }Z@xba`nͅ[v**m'& ֝'k"x\ sîzs> [}_Zw ~IC$;F2J[n>mzf Hf?cIa6&+ lpp<gc,^)єm;hz(.-^=ćuV[IfnUH<+Ͼ25оZO Wf7 6~c`A:j<[+Kjxג/#cMu,:~;1xIi2݆iz|bTQ 9c޽1 x:Np]]B ޳>$i~xoiZֱ%,7(ƪ8p;W΁- E-/Ņ2͹dKK/L dWپ*$.{[.V9wcitl+友=M<)yYWYwv|%x/^xR% ڳm\-/]۹iw?iWbsuD ~;O;E~ /k].?8[7`ۣdc`B-Ԛztk=Jy׊t_~K^\GiVcDd s7VtUkhMDذn-DM'@rԏQ:?X$Vbc~1$+Ϳ44/;+m]|πRMysͅa_Ͱ0Sxt촵ӳVGo:01KÚD4)|#P6`՟R_z;Ȯ~pR60~x@>̇'Ծ"|ROqxÞ]V{MGZi?bmuF_}٬6q\xkEMI<{B 8:(ѥotFLoྥwi^\Za$by2`~G*_h^M2N  >{W;k_q7LSey$saHR$sCYxPH\Y#2 nq ~xGǕf)OMGYa~tW5ܖydBjh-]lcg"UUª46q¿1ix%֝|8~˦$i|ZUF{Ž neu/c~?t-OǟKi-iwFAyc71EKm<ܶfiPKȪNU9ЊX x>-hW`vvW يG碢0Fkl xcӯZt[򕶱6Ck+E rם>=8[vƪϏ.5 LDGa>C5mfO7>%xڞ2iSypͰ\k ifexTN |VB.T+ e><)5 x 1;`rW#6Vz'hb!EeݘZǐ[l{,+knoauE| rI"?/9+Юn{t[Kddd-Fɜ;972r02+˙ݫ)>֓kvbX\%I%}c|'>uɖ-V{i.*#bbJtU ;qtp9\96G%Sx/"ڴl0]ܜ$[#x-|xoSmekoգB{v26ӼvmGe5冢mlװ4;E0ӣTJ>`wu5?ahk ǨMo/|/P6.;\Q qtcIQu+bUV-$qoĞLQL1FrA Oxb}68gy Sy"n]F>EM0r_#욞osv<ُ3,da8^ym~3+lSuI27@0cWiAxoֲxO ymK#SI#n]w  5}?TO0fh2y/Be3Wv%yOr_o $W =._`0UˮAx[(VE8aMvIv;8=ux^\H!HmP+ rJ@bZN=I;oi{O WdBpi^5 kإV,;8<$b@ڡ@˃Ɨ؉kTx{]kǾ}g%MIoDkpezxRĭ/  +90sɮßGӵpKg"$QZ#,Fĥz36 8g];Gi /dqȄX\ܕ\q:(%SU+փx;;IjW J2{0IŽKFr#J%04e -kQ4;H K2#$k*D-K%upZɇݴbSgD0Y^?xW6,7 {)&Qs]k~ sZj\'qo%\6a`}n/SI,Nf\Y $,˵BEWMp&Zm\yHV>2Y &.\4BKo.yaK)%v 艳'pZj]ڵ25ה(a8",W93,vtfC\y 01F^85}GhZCq[<^Z7!Op^k5 $MH]W<i[jCRdZ[70m{GV%ޙ7^MMk Ss̤Bc>J𧅼c+=j;//6#5LqZh }2\-9'gȯzjU:*QkuƕsqYf8ѣ&fbu5o MXZi|m<Fu0&B:s]%恦XCͥ<6M5 3Vw)l3gp*k4_ [8&Rڄy#iM0K(8X%;b^#?:u^Xy^)(ФHF+,[᩵/_Jk;VHky e5?gVub Lȃ{m3wioKf`ich_-F\D 4\~`OƓP>dnU"vo˒[# eN<ɝc kWidM*N!HŞce FYU2\ ;^yEh׷R\ĶҤs- pu>_}/W4QPa&7*[ۺM :znF}FG~Yd",V`»P2?WrV=)*8=wG]I[<Ǿ96,ka+0aFԼUچu*>4 p.8` r'执_q ,_d,`Lcwqz2YWF$o^TkF!Yo8b[iH\W7Jy_3@WѼ?ëoQ^;;,Re;0@mP8ֲkZA-o5"x/&h\Pn þ*,>!j&{fRHw ;hK]NVWV$Żq!7 O cG#MO)QtXI [{.aFs Z8lgwW+~uk;F^3N&13ۤ#CF$<#kN-퇇b̈́,b_.#Uܓ^+xᖱ WNUyڑp.'Ɏvtc=tD} BmO^0F`Wtq07);kc7ĭ{TJdxXiuD|1(&ylqca 4{b$(Y8l!WCM>m'UmGZ^%vC9BI"+%Q˷SH-əl; cR$xШ >׷x6 & "dLJcn25~l1]X [a-6 Dl>ܟ d}7啽Ֆr܅WIIKl F13XSZuN"[G~_Qika Ay[X{p#r$vwM73/iec P{p=icC܇'GbIz dH=;q$C3ҴYloDx9e#|z i3 ЇN`j`J:O] ]\Ζ)mć?*˃+$;{ 血n GZd()0*y; M#BU$fCULZf*׭eӵۍ6d%EIvve8_Ob*KR$"?Lv#=: ͬ){T 0sݙN31`U{)6BN?Oʶ㿅>DH+Jȵ)"j<ӚO xMk`qtUd1?+1,paXq]·1^QН"kA-ojsms2A#%ۀ0sG7HdH2g"p{ȆFWlpߧҮZZ:A<~Bo}GFpm9ӂ?8zU,^[.r}=JGk#o|aTl)[mD6qx*-:}2MXpt_إ@xܮ?¡KŪC;J#4<ƛN@"7>¹5pKXe"#Em%]:kk)8SF~:|X&a,uz+VFŤ쪢8*n!${9{7Ғcn|y!*HsʷCuU E5m3-l{to;@.p;Ij/~Ҵ$掝 Æn k!l:c&.][UФDxվYʺ 0:QΒfjjؖ hnkD@UWg"$! 1qRkG]ABȩLsr`%OU.F,>V0eP-WL(^8&-I}2˷8+2#Jz<>X*Er 2DQOpՏ4-{0 49i m4}"Uzÿ #Vt7653<~j -d$鼽GɎsڽ˩U_Zc8sd`?PѬ5(1DdYA%p{1xGh8y=+6j#ml>W(k)V+Yèăqs̲w===1Zw7s2C%+t'sqJ9MaL*c#cFdRŎWE:71GF'i5 퀹2O͜M [xƵrb)szNf+8(> riiWe4B󼏛=jy]bO`GNRGc;%X>UX(9n|3f9*Ou4+ iA,UG؜]Zs_IX$~ji*9Az\sWaH"xEVy|\Rѵ j07G(JƲXILW$;K~U~+~!$˞'m: \,!KU턫wʄq޾OK^}KCk[6o:ŮchYa|3@Desې?J_[^'7c#ߜvD_TuR͞P4is Y#o3#` rqYb*v# #+@.Nլ7tW "gZ a]ZD૦s\ޑ`@OOW:`ݨ&Gg3gOGou;_|A͕ؖ;v2a+s{e?ԟ#x"[yrZ_.h^1Ț)628_|A?56Pse*'7ď$Z 3D+k&hJ{T@2ǕuJW.2x''"YM;/Ў!rr/2_k5[-&\F1I8!r3\NjUs% !*1JmWY"gs R6ͻ6s{ W37xf{s\k50.[wc80\1 uVU9tvZN"QRJz~U]>ARcG8g<㝸5hW~#)O<|[ Uņg{ˉ@Ja`O/ -7EiZtw $C{nH`#`Ic\(2r> >87~2xB -ki7w #r_-2x~|+=⿁_ϊ,McB&MN9]rˆ b|1 ?"Jݪ~^EF4^#ѥMt_#FQτ-MOQcoΒ׹&bmI Vw^=ծÚ\;w$L#}NP00_v@AiWJiЬ-#*/ WozvzL&Tӵv5d@݆E &_-JгU׻oʭ٤y9'=npռk~$E}(֗s֮.9O.22ks7}>ݥ~⑀:c 9[i]!a=ǂKXd!q}\n-s&> nP{My{CY5rGwa`Ϋ$Eı2ǀar澶9_ԩWӶIY~N& Jmo>8MGJa&.(c0̴֒@T^6pGS]汭ͦxf55]ώ.p݀v5Ez̺gĿj u4H0Tm !Y~a_ ~|+F>0$B##we3 y`1x>3 )FmRVqir-+oZl^"IќÝDN1j_6_C`~?ڧBb!/' rEp <}X^GlwZU+-N^iR~vy~cTkKLjE>nyq.[_a݀s@t}Ixc_ggiP2%Ô3b%TV|ߧ[.ۡOE{w_ľ1<9 XKtF!\ &t7D 7eOyv>\r^>\F[/+]e9|bˠ3jڥ?g \*ԝ 񽮫}Յռ=+.,\0?05OxC┟NU$"+ rǽ켖rKKYt3gQ ,mrw?x|.lrxXUU gk`7O?:/:m6>%ҝ F!Hq97 k4 uYA߉4$gd~dU m`Wһoqy7Nߢx7sHmsIqq6gOR׍+[Ѥcu~H& `Pb*XjɱIq tG,v:',i>yg +$[۰J?oz'<3m ]xöiRƂ"7gL8d#ǟvP{qU"/ xw:.nG #rTp.k2ì&"6j.T63Gd*)E=qxǰZ|(>&[S Dl(1!KT||-yk&-Q귱!pyd |Evq_P>T Fy^ 5gV+G7Y- ,Uыtz-GMk6'U8%XpāYiv#XEm;C|l09$dIpn.张gCOs1xOK6W?o❦ymTtfop @5o KM—Vrvky\5#&Šjޣ}}sΚ)-)^'d122HWS6}[_+;R "nI cǟI,vNYxKE#QlcҪdoS7گo>|#`@ZK7|8<(H}y7Vg _[ykKOjo?6~OHhm1%o{vl`֏{P`5ymj(3p(g>!ѿ2:%OE:{b}<3P\mmVYUnݖ?$X@8*UcJ?[:/S/za.B֑)9 G*rOy֩|\ۻJ9Ur0:_:e/N0k c:3+an4<(ؾPi vid<n$jT1_cTewhWt:(J<'֦+LS*)`%"JF =t5\ý<]ۗ+ڡX}fھ^֙X lcHcrNsێ+~9>隭/8~$*QkK3[]3+OinuLeDg3F>l#< r1tu= R(=6K1" |A$SmF z=I5^F?\;]X\ KcЍO?$U1U qppZgk<,_\} x(|E#,USu k.u?jZg%wV6ٯvʦOnn$t5I,QPs1-t]q:-$q?[Ʒkimz6fH"`Ⴌv9F9_—h]\帆99p`\T]9?+n/FiV:+..q$tFrL!V0GԴ~wA,¶ؐ"[_$@(vӼUIN)m/=R`P$ Ӂ']^f yfgu\|1d99Ҟ][Rtˌ&@J8te޳b#_ݼr&&^9YD`d.TRZԟSkjpC%yXd"wyeAlWDzG)4H;M1sг,;pdddOGMJK qc/.ڧᘵ]I|i_f-f j"pNHv01]tdopo=d^kǧ-UČX(/ؕUAkZsm gB@fS" @Kn-t io32Hwclt Kzm("3LcrF ~`u&gY4sۘĉImȻH$>H-U>h7X8f+$L=N>ZQ%XH[T1ԢH=mȓ͕^v$>uĺ'4mw~ %~U ۀp+ uo/udx;m+gh#`0-NV_ay}ue|{N゠w+a;$4^΅"`Y"'$-ԕv|Q2'$מ {BJ[jw)\0hf3#Wx\ J`k/|BnOh"/;e**7Ttm9@:ޏ Fź+kSw(O9R]k1emU@Tr^)([ZRC:exȒ$@(Y NHڟ< ȥ5#\XlȊ1bT_ⴟ;;ڛ y2`3)1]Vzu_~K{VIuY&9FHBW-"QBZVd~-i>(,ZG V @ӉbMHr6[kzGwFXhgK)ܣ+ C'^DW[g'irvj-3'˨E{.W/ȭ),&[ pEc Zc9Z[l}n^ɥKSNZ3&;JA ѩdϊwaK>.y7ltV Dǿ(,r Gi/٬,IJG@x۶0<_9x)Zmfѭ%3rd}ykЎWn QӡE7SkX䱘ΐElco'e?3-ӷn|Ruk] c48[|ۤ9B|#KV&a6-慤DjrIn"F Yw3~ΙxUt/ KY` qnJŔH*ʣq]id//u9럳ǁ5}Q +/š}uk4o{2BVI!݀[IT-ŗgulyӤ!pJRG<9)j20oFvx^n%V+w ,Ujx+ xet[jH2dʒ$2ۺh'nVjV hP >D21m6 m`l d6G 3,JH8ǧ5䨒~q:m{{/{q~ J{*d0LdITbIV+2f?̲IR}Lb;X6(ܪz'CZt)T`I/'DLű-&]k?x Kuğf0ͨox7MRɂw0n:ZY* R3Úxխ1p\ؼ*N#lqbLe bq^ 5ޯ˖uh[ ye$LcLp^wO"xȏ<{rEF%^qָ]avo.t[Km$rQ i eN>+>25t4BՍ]~Ԟxф8 u8Wxℒx=kmEٔ{d9>c229+k)?iXKecj~d(}2MJ.q_D,?9Y%amɘ +/ H#4Ժz|d[~fԵ}7HQ+;@^d-{_TMҴ\ b%'$=G[WŻ)ѭ-t\:YMG6Fb(F */}yE3Y\B~dQoc[c[ڲJt% <=1Dl+K2Lu${dq|m9zW4y\Ö6;;[e[Pt]K0fVnUmPenGaZHRvǓWyj !sO5>1Mp `Ds։c-Q"$NH*gfm<x7O:T;7gdO瑏PqVvb$"<`zҞFym+ǷZKGbS'N6ie2 ݛҴˆ \wOqSB+qWcR[c&<*䐥P8°{Z376vW#]z[Ŗnt[i^}k^(YlJRnm>=vJ6A{hSlڹjktZ`d*z)*ÏB?*P7z[s97ڣ`Wr}&A'῕>bR!}x42[e)S)_OZ>Q d}*2(qG/Au1CZF>JHR#8o SҸ$k;vBe|z b? [l5nG 6\y%1ʄێ?ZU|ܬKt2TC8[v݈)BysۥPլOB*K@*p/$x߮{ hϖ%<wH.bQ{[kTbDqcs[-%eS;? ZS-9~icӴk e_]*͛S]Il-w z+OK%o3>dr?+ U-n,pnTGG&qZƧ{ kjz d\.|[4RɃ :oZ=VUccd\ 6::VK}.G&@tRZG zݷ(8d|BvquZe ?[8\Bp3ǡ5\\3ʒB FXQN%74N>f#Gn\ayʱJq$n1Ojn4-A_~>Ib;6Y f:8K n=x~V g`69B>;Nk7-4*'e` v)ܓ=k[Dz?A2.nc$YEQA :=9?JtơΏql٤H6c~2fL;B_~U\Ϩ Clp=.q~#ֶ'ğQP }9UŇMKbdy`3N3zSU[`̬s qkG_ )'=T]fG1MӏUiػFvlȑVޓ#a@_NJu1؄X`{3q)Hґ>/RB) RWú*q&?+ W0sӠJJKH~TݜVK#ێJ>tBrXҺk8V;I8Am"IL& @#;H',l+Cq˖!vh,m$v`ʹvt ri_j,4)W&MDž|3~l,S> ݰFK,0gyu;rk3Dž~+ǤCMoYv#qrS:{v}4g"FRXd#H<G rjw ن nm+'X\Q N+v]Ys+>)Uq[q$1҆"o}8aҼo|Cxٯ5>KXةS#勀K]|Wo>6k<Y*e9:{|7;}'X)V,#̭O$U@k\ Vy~ 'ѯ$Ku Yеh^Ip?})_:AfD9 5|_Ow ^ٮ/lwG!Y?֧bp;g =. g]-kb5m_}/ٷW3K<5g C:ڣP<> WgFpuk>zJ]g,˲9(B[~{hf0Q @2][>NT.ѼV -xX׼= tt%jQTX͉d\d^-CoO垹\}7TEx Kr7)1ac7^ŦXja 5KXw-b ;E~MqVj5,(󶩻;Z>:= gd|ق 1 8VۼgxDBk .?hsB|9x\Ѿ'\4ׯ5=S_Ay^tE"AxP[qvy75N-v"e6ʤ+W-)Fx>M(NKUFkiSG u/P]] ir|ϳbb7.= ĿnmaM GDޒ[#H&)6?s˓k.ra4w+v𗁞u^#KId%ʤoE8+ϭ|ED3"NP&3[ :1^Md@q`_U1xNgΣo-ʕ/>5Oe>5S\Kglr9u{IUˌKWשx_W5>]Ë5 q?r."ȍ)k`WKSze[v;t۬K/-o\煭~"xz?x^;2WgwZ$_;Y{ xLG=ʜemZm.՟f:zo|?RYFM{1-!T]ġ_WA|D5oj ֦X Ʊ8'.cJq`c? l/4n}vWDmWQDX)87 ,O$RiJPރ%t+c(Ryڗ57uG^Tӱ>/ZeK}St6o2T7`WM'kngI~[\Ȑ#ŒIFfxNx OME'O)<.<ʼnp@/"W //TK%0ev␤,!^S[ hZ&Vn%P=/xkxcNmA+&y%u\#D%v|_b;qxKRkO.,n`>aué$gʞدisI6I 4i~wy5ECyhJZ #|,6":I7+[,zm5^" Z__7? };MIﴠkYT#x8dP[}QLZ:MգILKYF)' HHPpG}X)o+|R4BzN[Bֿ=|>?w&u{CaF7+į}ՒKwY({'~|Wh?c}_p5IWQ0;vi]wh)ZeT wPG דʸ ~_ aHΥLDlqxg.4/C=!*I9ՌlQdtgkEwK Vة|r9tk']UU?xQ[ Mwuw4w6e>mAw3_ا㎛SaS5% 8hS+ϚRjW۰Y:*bf]Č+\j_rO>ktEII"YĀ4 X[x0s \MnvG/iu[>=zz' ~<4.k-BU=%iQXn_O 1\#jcm.(n-rd NB'־EY{I mgdRr)G R|eP$ɯ<ҪnkMV~EC 74XI[WIG&vP2qcç|+O~Js-ơs9C?r׵}ɖUY $meS (NÿC_YV|l+$G 4~R(W|x}e;}G&-c]Ki|=Yp`խX -Ix$w0]Mw:[Ǿu+J6l+ wQr +0qx  S4 .4[,\YJ~[ve>te%NPr:9TEf[mut~C/S{U5n-p"껲;GjU/? ݵmI e$w w ';þ-TK)""_1b1tLb)FpEq7v3o;+ؼ,DRFn>uUTH^xL=J8e\u"s.ҿ|v ;iV\I}iݻE0W( 7r9k+}oNievHIT$X^.CEzV LJye>[[ =YĀѮҜpsmR -?VNm̯t CI*)uXiIp\"#dflg |݉'ncj3 X4m !n6 W$\^ƃoa}j^ y2yb9ٳa[dk@8'M{Εi-Z=KHrgd`({U۶Oj'[KpdoM,d_1WPdx_fv.5#+X|=X-t+;goO<_ KK2P Ҹ 7B4%V[8܈̹3;)n Q^+]kHol =nJܻ~EgmFG[֮C]XZ%ò4B6lU\rJ|/k Ys-LY^,#If ^W~d6o4x>o rB=3\]] ieQh0Grm(]8VYN} u=Z-c(緸{(ncItҼ{!P{!Tfs6pԶMa-=#&/tv2/mZpKUZworg1WGˀ?z[x-×[ϫȍUFGjۺwneH^awFuT1Dlz=zr4#By4<8ؒ j 89鉔^כ+kjI-{Hت>Y* xXJ&DC=҉q# sUI,'?n|-|ElxEЌ,) NBW#,kzѴII'US%0;qfdUsGjGt5MEkϖkԽ"79 Tp-s{{ YHS@G Yl Y|!{Tl[E,Jp~ռf%ѕB[P>'@;޳Xo{Sen&O^XuM F¢[UH.5oœR֡ dip+4B:,I@>@sڰ5 //Pjٍ*QydBdV($L8OJA״ xLkZ2F +g#*qQ+ИS/v6/43E؞ȱRH4Bamr :Ƨkgeu&k]K+l *79t5kWӮ.[fL.NWRc jH|M.Miu[}}o-]DeAlIW/iҏC+OxĒjY:d1)5Œ|?;WzG#ogo¯-\Oe2#|y;Z|7{\Ew}[3Ys ѷ.bX(b}Kz7-mUwEh8ً2VAsUBE?bj:֙ ]Oճ4E4l{dL(Vb1xRHSu(͸J=ǘs' }B e?49MbHlR޼Dw# v 4,˺c]ȭ>Fʣ$0r2OϲM"[HbmTc CIbI,9bHcéǚ_/;+,~hYc`z.~`AȮ>~lA%[ B(Ym$%8K9rg5\ +<䶙|(x.p@rkjzoSGy{ji mKSK9v5O]\H7j񢑚9a#Zm r69Mp5bڗR[K -'EEJ (dWML4h˩=Io7Ԯ]$bg` /=O+e ܿ,lكN8}u]چnEbBcH.UYTc57'mgdXghƶAL?tDnsiӕru0x|_CPxnyno?,/ tq9: /[kVkgtګJUU64~YIX+oZnAuQ.ok~2MXw@wDD܅IA%b ,{Aw'Qt{eWyk m^X{x[GȤaTvOߘ䰶f3Le%w9f;NEy}m ~%QӴ[YѲS(v$m$ FxKy?I]|ރ 6Rq[w':(9{w: >9{l Ib7s^M_x?j\db"Wc2c_ZƵyÒ]ﺳ5{B$\1坈4-BAY/`-cvnBpN+LfJOEm|7olnKk[o_3(RqŠ|K[AYuIo" obA+O~%~scJi%'ScRT W*ѵ[ījզW mB~ aI-^N}c"xϪ[&aGD؁|9TX_ῊO_Igf֖Dv:bEFkp9ۅîNqO[Ğ|=jkNDCi1RXEtÏhWQkgqq|gqF%f(B UIh}E:ѫEZq3jhQٖ!i3 '<9 >%[rX]OhHaaDŽTG&0qxB"ӥ .[YHmm`ܑH%G. *!z}gח1|>4WJKvm%]G"#I'&੦У1nbW xeb) rr|aum*I}u-Vd`n~f}+6S=̻(:3iNsu\+ 7sN#a!Uf;8#+>xǚw*I%VjiΒ6}:D. qi4B?bmuc\$4` s1:UƸ}ju†:UHڷku|mZKC p}ȵkϷK1U /OmnGqAϵ*j[!qM#m(6H a !9Z0#?ة ŒX.Ʋe }ߙthd/: KkBs:+JZ`ƫ8ZΪfM7"S*ق,;Q|+'}>!T >e]%yM0^AVn-ϒ[;G21Vҋu`[F88q7 zeH?5r] =7:;C *s+eʣJeqϟ+yTVeqs#ȨRe9nu68h~nqJ/ʶK/+r18?ƞ6lA*U*Q Ocڪ0)t8mKEmueS(.Th/kk]Vm`ӥj o>)dV8"k`Y$0IiZBF0 Jfҭd llOn[AWm$ YA2>6pR/LԶV @M!.# ub۾Ċ1K yR ¦\W A`O UuxoBvAx_±m7j).Ş{}@q99ۋXS6UEROr2Kd HQr}Zە"̅YIT d: k _@8³ΌԾn.1O?V?g)v5;QIn @2WnnW1"R%S'S#Cn!WU^H~\А݈8G<0?U?2'i'~G;9շ9bHpLD(#_"?9\r0>.%Dq83V8q"L |~q5akViM( X wVد؎>Q}BA*}eIAP#}#LKa{t-F$Z1MY[(dKZDV06*pO|㊘Y~7H^U}6h3n:֝V H[x?8'ث"%~u? otɦ ʀh*hڣnsЌfSL{-s˳zd82zֳy r7.TN/Fm,]'WZ@Y/+(P0a.I\ڔѦYH(Gb0p+'4ЧxT6ݹ06grr1<ϧ+ntB7caH#2Ǟ1#&`U{h[vW䅲 {qWx-o4 0Mӧ*eO_j{4Ur3EsPJ c9tEZ1VoF<%{8ZU'?+m|*xǿʲ%xSqL0Rll$+ r8:סA{UJ[<7?ZHn9MyN2>vi7Şq[Iv-gqۊvŸKT ?Ay^G}1YmpcϘ b!W-Uu{>C{ƺM' a_rD ^DE lQy͇oQyqbn @:V"v2X@$bqҴDҩ?R@ޣ>JH}ՓPtn ĸsұ%u?pdV?:W?s'/F=@(\(vkƾ-//?Zzjz&nvdnOTt8dqXbL.vOSxu"k-b6}?l&nWrwEE:I6kx^[x"^Ƕ)#,B0a$FEG 8> 0$7q3\$}>afQebǐ$d{݌K-Dbݲ8ue=eWkmoqS=e_߂RxVHcW2cF$R.찔2 ?Qw[ >'4% pVD1 cO?~*Ybg-29 Yͻ2A0`sR>=/F%ҥD7ĶY|Yr^$Bo!Quݴz8:P劷O>Ѽuc!@5|ڍߘSe1˘3fUԟ Λi=~rKM 2J<Qnc__=7zotg'v"HcQJĮ3q5|8^;/~|;;}kGW-䘖®1 PB NQz9.馵_%aaRqo+~o EѼi bV!F;1U $PO$~NgO Twe-PNQ[v hzs UTTX;o 7um3Þ||HLsj.j#Q<+_gqFn?ӎJ.<,乩+===;gfk3Q_,C0naQ&UBO+ Iq?['ۤf3H7D$grW9jzi7yv$yd+lgk~Xh~D=ŻiЖG)G ,Hd2'?zYDrdԠjIms(|gl >97g4Ȇ-QƓP yc݅o[ZHlFnֹFXyc1qbj/~hkO}[a<6cITp<T-l蓺ҔN]$hi^i ?8sjgeuo\DzWxo{};4ԭcx ?{(d ۈٺd_Lu,4CtLm4l5^WgNݳ>uݸ"<u_VZ/+߲+|) w dg4iL6; IAl/'OS|'xQִfhmy bBl~VQWK/>-] VӭoD}Ɨvq!ŅԊ602H)g^4uDډymiѥqDš2<6)ב^\,g+nTvaa}蚟ßJ|WscQmgr[#!U}+_1{'BM:2>V.bi?&,&^ዝWLh&.onp# fU  ?hEd dIT ǕF>R:_ϜAT#cV~N3Q=lxphp|@ʼY7$n>S7//şV#no^I,T&h*m8e" b`6`-.$qh4l&&Q >n`Iom_ka\'q9Uk_OY%߀#zOɮ/ f7G;+Ur\`QZ6v^"Pm Ԟ9l6͏ߐPk+WEMSA4ۋ iʭY0cT8nZ![jI %J24>QV83zuN$vv3ZH"&W p0:rs]>?[xg\)^^*ԔDcnOZ|y9teT֦X0ȭ#y+N,T7pyQMK^${!md\Nm#Om`Id~L|sOGgqWh>eճ`y'|-5+D51ogLI~;H>^29vڽZ*G`(^l*F iy6f҉K衄Zk ] ֞$tKf+KRI&f#]!z㖹(F~F uK@0UAëax ķ7^?e ST~qK+1HTha0ۗ*%hc+ ҧpWtoe(mMrxB[/ؼ[ F,Y ak߈?|%uoAbQw1M^eKueѴ<=hZɦGo*jv'ؖq4|Hd+m*_#f\%OV$v 84WFzv>8A^-J<$>Vݹx?.˭͈ݿo2I?@e% ( 5}EBYmuV#*yJWho݂69A{.[??Ţ:*sf2pNRJ[0׍?ca>/y+d7DeoGˡm%[m@K9O)4M a3Y^.k259pg! \,i2V'}gDyC+%_gN1g;J:$.gd3/*tqǐ.HyW9}%+* G#8,b]ƃE27V "|2ɇ;#c Hy_[ω{?FkuiSGy0wjƿ('+6[ct_5`Iټ.,yTrXp㒇x'|wts #wwÚ7V$Qن#"crR&%.2Yxǎxf7m4-ݥy O") WbH%y?xY#CғM՞{ϺQlJ~f=9c6 OEu~ty(nvk.X|򴺜>Zi-d kU,̪Ԑ7м/=fm{ܵ΢K|/w ߆|#xkNNtHwP+0XU^# `ql|?>nmlSP+y1ieH*c!xo ȑd|/kG⧈VCD932'w6׳|<]# a[a7+<:J7da*M.XE1oa-og'S< v3pbNyHgK6ie.Gi-F9&c yڼmZi*nOimxt˭blMՅmёmQ W' 1?> Mf^MkhcT@̵ˎ'f, Um!zyO_..%yAhzCY ,*W?%;O]k[X;ݬTFJJʎ-% ?)*T_ui-""[и E }BrGNǵо&m>ϊK0o 8Xg*8WڟZY[5屲fL1A" j-;ݶxkVS'ySrx"2lcM̻FЧ`N&vP*i-<]zσ4ŤL$x?%rŵ"Y7%X/!m^}?LPin{MԕepMɎ:gx{1|1 zf;O1F,.[p8뚥F[727S2jV&VI$%I?fٲIc"ꃌ,F s=kьfdce>͸ki>9z|fP bOBy!ub2ʊۀ+QOl-Q#hg-ʕh;{>^:u_O?uzxG}^'H8ڄ0;qa!|zAY7nm5w£^3Svʞ$!U۶+dMn`#̧85%k؅ʟ29Gp1SIEN1j҆^ *_JkY>Fk rvEw{2)Eʷ3 tjZ)X*ۏʶQ'(W\}^+aeHrq#qYMV,~nIn'۞`Uv;OJtNM%6@6>oUVj>k4+qgV<7q^1ѝ+狨S?eV?t:a?)ң(械}WEjQI2s Cc**WG-nX1.Հe')" C+m?͔JN@==8f>iEN0?NbL|?4[1nUvVeyq֝"=ہW'nd""7.OӠ-wڂ^nJ''[Z}ψɼT0 t_AҤҵGTm [E@ :{T:ޔmBY,xW$Cae[\: BkrB8zVsx\>FE(|I܁@`95\芭(X.LaZF5TXD&ݼ|@2߉0 `yyϯcV'2Iz_qY&6q|WG?JfLbviomG&A[{8㡏j)‰1g#Ȩ i2aO#oOүyEnx5O5Ĺ@9%O^:p1+ Ȥpigbgm(XʂihF2\IF`NWҙyKr;FP{~U(9O|$ȋb /~55[ mɐQ[d3 BYF9'| vs?*i=Ι{{$n--Ɵ<~&;Gn۲=25*.|#JU_1?{?*~Z,5B/bx?qOeynS # ܍miH̻{]JD2tx5xC'7#!xH+|#yvsin*?0a3qlCqھ^j^aM,R\S>Rzr=+hZ6~v[ʲ|:9D,@+jVYJ7;qwsgFKzSИJ35l2R||av9OOڐpխRSTrEbx_>'ѠmrWFnrװ<) (]⹛Fx2" }_Y'.f&»7Ǟ6lYQ2n@ݘUrkFU\7|*ʵ8򳢝G=xKHjmϖ3BVeqhea:M'īkkaqyFSv_xOPYxگO!kVx")$A" mo)fxO'4)ukG]FX1S/~n nvyosq=7KtkMH/ x%y@+!:-S^_H^V_G? T>yffgXJe9(I^-}[.> .$,>dJHێ3p:oߏR<6nkf "΍S};VOH>.T}k7<1o Kb1:s_i忲,l#t'&գvR^U)EgZ4o*rw 3xgGM ?!( 0z/h|^SGw%Xyi ],:p6 nryׯ]At!1C'>V<2PvյRO+]v-4;KQ?_POw>BeLj,e7 G2n@7`,&>c |CzΒ4ȴydi6,!ɴ$ Ս|Z07TmIuR+[klvM+{UU5hf|87^)_uj3#K]ܓZ m(%[ 5[_ CL{hQ¤ "r@T #J?~,kCƾ:,m|3Vү̆KO,L#}IXPq3~)|X3xڰIdSt뱘6#g &/EIF6Jh켎 bm9/-3G.K{մ.gy"T20MxG<-xb]7Ƕi$ѮFQ"Y@ďxWM7֥dk+RBmX-TcQL? u/|JiaSV%uzfuy i;d.>ʥɴ$RQd8;KW<;םZx+FZYY+m5.j(TiO~Mvcⵅtkdh#W(g q:~{L}msEHNy5G*'+Y߈.{v>gc&W9{oOsψ^]o%%ǜ$/\* Ǯp+|>"8lKtxykoZvrϚY5OO+ ~ uxS x\D̡ס5׼c'41hBPq&ф{YK|cjGXþд_&ym ~ZKHt | k&::K[SZo \hNs:i7`w|tN®YhZ/umG?YԔGc?Ju]oj:n_,3A(9&cR d^ ?ZӢmIZ,Hp ;bn/oKlw^+{6kXKⱆyF8t]:@_[];xڡ; {q[ND[//q?{A+y2>rk4o \YmKWhXn`2JU*ro^;&Ϥur>,q sEK󌍽r34ĶM%91g<\Y!)&9^~js_ݮ&i%\'IT\y^qw^kV:%槪hbbK9=7;+t`xjA7n~h/[ _CGw`^'ܞTQx݆R6q^m,UNdqc Ѱ14gvB c^h!i+ ͪ+BVV_CSԖ#A͇u+0;x!ۉ)F)ֺQ؎FXѮg;xEc[j:KO4U?^aGğYxKO4-jWǐ@м۷t_4 O-tk̑^&$(;Wѿl-|.ֵ>'Gf~S;dJ\*1"V投8s|O/>'uMNHcgEI$DDhpp+[:{cOmqöF+\aخG8<~hh𷌿f~_e5joq疘\]TAU-?)5k qgFcH|ogXR%7|Qpf$N _/cҷ+U* 95%k'ZiXXw5ǟdF0JkWKxZ/}RE^P־?g=S5^ np땟Ju~xW}&>}CL1]E$DV+q_S*URK.kKլtom4Q~D*ѐc(˴m5pѵD]8o>&Y.m|'?j6EOYŨ5KmmTV |?W0V&}onUo]gb92rbkK'&uV]e-W&ŬX[]@L m6 tmjZs4pדE)C̸1| 74*OQiDpZH3Dc j^ڥVpf?{4#xN̓ytdB++1궉啒1ª%B9PG<]:R%3ͩOj<[eܫlr Qԑ0|+Mֺ~A/[2ȳFe+صk5׼C= 1n䳵gTϙ$K4R +([ha=/ǖjrl5+KZtLJ|҂;v'k~աKIR7Fw(,(N75I& ˠǦA%fI.C,|S#q\ǀ|Tg] [oinc۾YAIQ:+,ߖ'-ca}ƿf߾qpW=MbIҡғRI|۠ؒ1&SFaQ1k$W-֗w5խr!qhѬcr35_Wrˮu"Ռv$ e@yc]sGjJj;U} }m:<>߳_jQ<\AtS1J+FC]uD}5Q d>bXr?u#0XY珒][ǚ)GӦ|źw+a-9ZC+)},Ai^ s[#ɀf"B3]or+b$ڹw\z zYȐJң,?p ВW ux[ծG-WQK+(o3.Dmf9ԗLռGt1IKwm`pȣbB&'\>#ao-3I?NYTVI$ fMľ5u ~Qy>]ߙNXr ӌR7Xট 2[iamHbC`95K5=?^ <<:T:@x0J׭t=3wD_PtWfvG!7ŕr>UՔ?-隔Y/puy $H@^۔=kMo=}7T]]!=M`y $kN5Wcm!9QvbyR:Ao&<7M&40\p9o$-_-F8Tj[&GêF .4l}с+yj &x6i/O 0/ !tM1%]qh漯ß/O_g%O*QӇbR|N1oHMtƿgvW):m#p.D(@8ʘu6:!JvC@q]{x^BMG;$(9+[6>2緲W$ AM,A_cZ|4m&D7RuѨ&<1"[x[? uoRk qNm6XIPIR Im(EIWfUd{che3dvc?t6|_-.M"<~C2;e ɹvg8{u[hi4-G̻H1#meA kZ %Ԏg%:Z j aJlqiY.TtГ~:Gm]Z>.$Y) Uv^xaӮ57OGtkQR @\@Q"03h@Pki(ea;ndI{IV@eS4< XIvNg#9Ed<.+P^݇K>ö>!]iNDC |>\רWF >x]ծ՚ !8f|ark uọR+x<[7+oV8@Ju| i)o-|vq=pNKny;Jyف 0Tc$ &{d_U\ TpfR>C]FunK+a'R} VX9Ccd^ ԥmZXC"v$0*lIZ9a·vikrIqJd9 b=>S+3w|jZ`χ"8AMS128k|I}o\i5fW/nM$iA̡(E}EqZWW"WI.7A3PrB~lUhY8F5Ze?,̆kFpE.ЦE$²84ȭz_O2.{yRhbHA,f70cLpxnr:MĶ+m9@y>|DEn\"# ϽM1\gռ]g| =)2UIn'v.cSB;8@|7-fXܕӚ5>-˧9~>J{gF|Mqܺ}Z}S!u/Mw?߲w/\5kȯ|3Yp\ /a@#X(TUcا|7Y[#HRrlD%F фʖX|GXxJ6ENee'Y{WxGC\,-?g r[B&y^r?]* '/7nu֑ Gkin-2ɯc|4iZEpYZ$f^:QBq8oje=E~olWBVG#dmos2v'q1Y>k~s-ӥZY/Ks!5:}Y[単ݏN8湛OTom /V1m%pOZ/BN 9ߴ!\c? g5Iop>OΣukEQ.e_ eD rA~յmvo ,1(-3E @ZY72m *;{Ul&`aqjpioQʻDUEЉ;~Uu-x=8^+i|8ps_cIx`?]ױy#н;d%m*)3hhׇms}+f9_AfJpnjcT]7$ Rԝ T ڲtWkRVAlp*E}+ |GK}osshn$`dcU;2&o'"!՗߰¶Cm[큎ҨڗGC c= i2,34E+h)^fuU}+ožKnE՛b?.UU-rz4w-w r 5'yn^1qVS6ƴ˾!c&wq*I*a=+a6Tcպr!B:nEp\궺&_6S+| (B>'ӊ9yKSهq^{kD҅P>gv&5+E1rw?vjN36]G?!M,h%-qXk\f=6cw3q)ڍ54/c';Jr!#SZMKe곀Z߹W:1&0E ^݄Ó:2ݳ"%O>7Yd׵{]"h("l̿s৒>-ʳKy'l!p[.K*գJ+DFoKgw0~^KYϖ7r=`#%PrO''c6r/i6Vٴ$=lbe#ЬuM6ZI2,z; JF$9Fv7 ch}.sq&1$=]BSpAۑywi%arcukW.~R +{5Oa$+dvD*)a޽4h- q/,a.'MrVk|\ǡQ c^Aw"+IbwsNGҦhn] \cڴ5-1;x*;{"|oklYMsJGcs6{FR!opYf=rOjEʳܘvBZ^$̚l6s?+>+ S*K0uFoknNVzhMs!,y ݤլ#K22:.ԗF,rH"n%521ӊw&#Ix\q#QsjqMgL`;q4eK[O3y|sVfӮ c ye+ ~ '8=5-Z:k"EcZ$2[6Z{"av#>~$[mJ,i92'm@ʻz98qU[O9b^A OAҜPyE+ݫLvp= 1;!>ƨ5q7E9qz\o9Мp+&Wߞnm*/'`08QK\.7$9=1aV2MJ<21ҷ(!f~ rxēpSjYQZeTwvtW `sӌTF ~`\`8TfHܜt*(+e;S| ?ZێV~[88+ d\Q7qK]E[@)NR;V@G 0>U(U=Nno` J0qsgu:ۂK}8fV8p@qbi-Ey r?vxة%ҦAf\cS@flt0?NbM~"X`VrYNmn9 }ӢQO5WGQA{/O=+2MӪL0o]7QV+.e]d$dvG=μ_a-"*%!C+ z+Of2/*㨮'[͘ӡmd'qAI]lu҅,,.Baqێ'Mc08Uq\hT"+OYh?tم>0F@QӧZC]z2jIw3Dj+* s߃\tuo=H\N )2E:ԁ+=;0AYQX,{> o=+.sֿ2cf3c̏e)2@JOzں6<](+0jθD6#+^DZʖ=-d\]J°,&+^< k :`ףDW={#ScN[kXR2aB8"O(ATlMMߊ'f" 1Uȣ\F@זh90kVkw7ʑʲadqToc tᏉux QMR]\j1THV"rF :awq3w'.~4K6kf*.S}A)l62 k=~6iڗ)eC-0H I\eڂډ 7~-uMkRA.`M9yi0A:mXc>xŨ3fkE5ͫT*^|м3&w ,6;M-$X۶#dsOZm?gn; WK~M2 nenZM/f{0W> ĝ_-Tn'VICb%̊(V:5kҬ A[_WvoxXqQ䔯>G#5-"K dR0Vھ![|A^#]3R ,h$m#a`>)Ooq׭++-ma;SWk}#:5xd|?3"A+rXӵhkN6twmsVΡww`t%)3yN1eZ!ߕ "ĿK5Y tVxXipxwdtO\Zİ?l*`lm۰oR3ڏFҼFmt^ZK4lCuV~Pzoü(<oiѫ-6>dNo➕ @uتw0 żӕ?(KT]O_u/j#UHoW/i6 1} [ĚV᫋,,o+E0+|Ȳ*YC0KJ. >^N^^]J9[8xB U wG\ؠt;~xIkD (`z_lv?ʽ>{O>%֟6[h0ݞ6zg'|Rwį~ uZ< 0# q? FJrkJSkWE`(a&yg?cxrKQ^Ghmo?xeYd wd9>#|!OT?ii֢HA8c!C5|q3Σjڎt/5ɿH+?gƿY~} ibQ5]K@#|KR2%F*ǕtVR-?取|^#Mߞ)8);];X>ۓ5_Q.?%: >\⿥ߌ _ /uPmc*c\ ¨M5|K_o4?X_j;fesI;d 4á!>E}^EE,UIr?sae<7Əּ*HVOnv:x7)'NBno=NKkrpPeH z_OxcGYhrz)袼9Uqrde㧖>-|aX{Ɲ7v%BMmtUB eXs:7(SIB 8K:G|!cƥjבj0%HbL 7v1_>oha4)Mekķ@y8$=5wgq%E鯥:]+~ ϾEGMnU(WjʖV8>2~5𖣦K,Q@u+!y(= #?j=f[xsqiZѺIV{|E ŽBK|u |UE( iGL~E3A vJ. 8ҿO+E/; pK_|=x3:5nYGqp yqlN4;^ZunMQC*\ddBI5 W/urȹFDiΤ7n^/|)mkz` rrG. iU88Vj}~g^6i~[ƺ'f /nxI],x1 :r8w_~.h忄5mB8XขX#eCj<݊.|IRY;kpQ6د*"anد47<[iw>JhE"*d|y>Q_^/we{:oh4Ktvs`p=Vb9{ *[afem^ j\lqUvznDaI[Lm39%=\7Btb"Iflr2k~(ˣ k.G>%Ōroge ER%]^=܁^-Mx_ťV2YY_<$P[Xq -*+%o)ᔗ=Mv~,7M#L{mKr,ϵfTv8N0f|7x{ȵxC \(B6A`f[_.|oot{9.??v7H9ٸ ԎH4q?iSi{ˉqyu7W5M%is;+_ -j-2?)s~:_ #95^QXB-Y_ܐAtB|8Tw]6nohwz5f #ob#(WJyƯG/L|Kj/m ii#2T;'OJNSQh{?{:dFYw ߊ_*v e_2%لvgm7w Σ埻۱p˘>_Oji-z|MAA vSFx=W~u_=ٺe[{k䷲LiImYv`F[c eyv")ryq3 ekޢ4_3^y^dQ[\cw ໒'QFxӗvv^.5,B;iwVn"8^H xb]|ItfhCە3"wn-t= Dk1~eïpXHEN[|4] mM[MQf܄簫G ZhO{?q?_Mx]Da쎀l*g%d#c tZns+%w 3Iר( ai ֣y2Myuo#Cm'+`6ݢ f.H7 ؍V׺U՝;K._)Fɵw+-SB,8_6Čg/<>sRt޿{'v𿈮ԫOkn .ǻsmK]匜=y¦'4<ʔB?j:rjm9(d+Dۋ.xPz Ú6"M156.x$02GT+2Cv=me.ol٪Kkqq0Au8>!|lҮe  f yP~hns2͐taজ4t}Z=׊56R m9m2p$vT$M SΑI2,`ʿs?+n\_I{s.-dhnd`fЭ 9f &_CMԦ-@Yebk_+*dĊr2N8KE|OӬ?#LQhm,}y2rv80vn,5/Ck,;őK6$yѐ&m6kx!5/:7u%&?w)jtqBhլFe -c2\GPLEfm#+0Nr9lx&/>{K-$oc^;9Pᷢ[qjözL}1=ۺ<3P4@yi -r9t,r$ ۇGWlum[ b.}w\׮YAmXvU|ҋK8=sV ծkoekm^&6]2 JpNj %xɍ"ʋ*:DwG0\oC}sqoY!@]Dn12fY:\? uĶׇufi.Yr0V? c|k^ K nm"DВ$hLB|;Z㭾 ;ƶ2fXQ%2\y1ݲ$8Tz|iZx;.\.iw9f1ҎHG]ᖓ"_'UtOJBM"8 Cn H݋;\\{V? jrBu9FI.e\|@,HU 4Ojz+F-,j ,\fx^Z^z[,b-aKfI7+JɳpiI^- )Bmլ_.a\Y]kb$ۣ+C&uG5+}~4+Mq41 [TPDmvF Uo>9FUj6tX#B ̤&xb&O:ݝm.qs40O65<Jz4Z:#QP]:_Vž!5(ȼ\*,K* `TおĽNu;" oﮤT1y[;qyn\0qv~$Vܲ=>Yby`3#b洛8l u5m{xW[yki6Fi3 .8.{S)NKFʞ5>(xoLim^Kkmog%"O[8B(6SW#/Mч^dh^cky"bp V ;e}mF40mo5.iGZ^ 7aυ|gickxLHKʯ.ac;ղ"--vg-,= ?|Lvz-!Hfhd*HAIz=Z P=Dy.18bSW$鯅u<;q+s K|#SCѸHǨp<%yγ|7bh H;v@sFeOk菦x= +Mo{-,E "gP-2fiOObO<& q ˜ r}l<16v4igiA }cpzq"\ZC+8%ˌ{*x`pS[~'幎9Wl.˱MK%*pʧOh,&0tPJǠ'شh2*0 6p:2ⰞY?s#+)\}1[ }pؘ7(7DNqI| Q<qn=)f8>Pݖ=X̘]3~1\Ֆg9xW4,*Ҫ#1NqY:]#Z̥ֈiCq ւM0}kĒ"dCŒ0s댏 2OWNz"jSWfo%6;zSp?aT֋`oz2=+Dџ+EݎLyf(A t X}+b%6=sR$q­sӵ\bDpzLW7> SW|lTkU>2@YǦAWiS` =]di_} [@[fkB7A[wq`"6G#|OgDL:vΰ2BT.w1S\^7%z\;.3_$ʷ7n-A\ڜvHwV岨qf̿-uX=&N '(:[-o}d:ߦ#x_³<߻}^w >TplVI;E>]Ly[? g*0)>)`h&ӧb$'~pud0>@c08·m-xE*>kMlS~֒F+ ԗv&1~UOOU'5i%"t0қkqDW%܁YvSxcƑĜN7 VVnw:-^Lt`Lӵ2AK1uV?9ig;C7N{[J cfWؚ湞]2*bKi .듌{w*r`mڢO>1FlT1]@vs{Ja><0+e,AHlzUY\β%ԚZi vĎ_}d +kh(heO^'qI!la{EÐ+ 09iW;~L-!٘"zmJ$c+)2B;( yaNz mg1!{Z(}?xpK!&h yhۡ^㟧Z1 Lk6ZkiЌ\<Sˡ|,$Cy=8{vP;Wwo@:~wAXUݰdt=Ԯ.%Mm`妆uy}4\ =٥widPVE!!zvhB3ލ{cH{vc۰+u.\6(tN!%iQqz*+{o$ ~$_x[[ Zve m;)4ɲp>ǧXq?( (If籶[AA˒=:Vݎq$Fnp}ƹ=*m-u-ƹBy{Tإ#2(k3y-cwS%s?Ȩ~ϧ$vpB $r?@)ַCdq{TvLrrn0^};/krJ{SlbWgOW9*ApAӡV39{4ng e cq0\L2O/SyNH#ӥzL6r<;O+"#DsnAg8ӕӦY$q偖g 0hԅ_ʽN(l R31۵Tgf1٣ڻhy-ǀu{_-Ǖg1^gg[.Vyc.C6;Ӄוem68~3xf?1[HDwvq#}5<\c{{afN9xcW-HwFr_]G&!)H@Ӧ9k>%L麜^0~W ٭0TKHRU5fu զA79b\^1] 8P󚱬{HVhǚ$ҟq{P*̫*>ݥʭԃlT8[(WqC_YNU1Ҵ"+:{vgRV?LRUѳJ殔n}V!$}cc)ϙ\ebUNaUiEϮ1IUUcRx7iueA,[z+*x\in2 R)@!ɌV Ւ}k&S=۱N1@ӱFpcp~RW^ٝXWUIt@lo–QW>*rn6f/;5~8|0<oh8lsuS8<o|A#W$mk3y\G 9 ?Ї_\IxLJ(d_:k/şwgYU4Vtg|g+r+:CMɰ]oaQg Gk_8ίK—:-zաu 6Ǫ'4|{}O3Q"MQ D#(L!ɯJ|_]ZO.6]%f{h~TRK~B+G=_񭏇&_xRi,KrRŪC{ʸxdno.Asc(^^gmEtfs+_oB7kcڅė񲖞[ 8d& D28^i|{[&ettЋ HQX}^uw}bޙ#%_/(Os1~~x>t=^-R$AT(Jd,gQ+%M/zt\U}x+ȺV⟌kSO5kq5֗xyģ.X'8ۉ(jN%N2~q 2R[F+KOUW֓\L[Zfx?'r8t<3uM;PYo&-@EM!f;l޾׿go5%K˹lAhexbb\Le'6;[9$aPc#EkN p\'KVϞvQ?<'>/m{3iNx+6+XFi3Ԗaﺏ ou_E孧$:X),Y/ЊQwwغ 8]jDɱvHo[p{xƚw կ61@Ī9 $~U+)R>DΪ+MI(t ݞoŖ^1N[EImL~lN*T2灀+ rMryryr[+wg#;O- Rt~Z/mxZ{X&3;* `ٯ4!O^˶f1Osjo&+Nh,r6S2bVaSRh֊ѽ6]8Pk?>h,~ |MozLʓ 0VE~x.׀|u{s,xh*˨@)xA~ɚ$XGlzf*Y D"0OԱG|UO h_2'IK[vCp[wG\|=FSmot+giEs>6~6q+~7d$AxaA}厪eິdJIA3E^q.[ q7ׅ𦙦z&&c*峂}~9miZ7bڿ^khpfT(>+x녬sдD==qXлFݜe> F~ŠkzKuaRCo _7^~\O<|ZEiIӦdmEMnC $0'Ѓ_xOo;WӴY x zz_0'*. 6jSlDҌ?_ -ǚ|Pg^G{L~K!Mz寋4? ~&]X=5nEtlG KXۏo~O xBk:I"#FituSRpPaHWfڊ\Ty%%tn-.e,#SQ+Ƕ1@Ԯmma;r`86ݪÊ k}N^oZ1golls\J|Vwfڏ TIk4Bv5&3C:OǨ__N'~"'0YCuqonUUxUE (fTxBT1y&Z]K-_z4sWNֶG_~xG*:q{p%ɀf3=,@27,Kkazƍhmj>ϝ$PJK#˵*( 'ռ]Y|h.aLY^Ad4o~fckoxS5 _NQUc1cwpqZ9d|]Eyt}ն/?uxb[oIS`]j2 '܅قwf&wdOỺg 6q]^Geͥynίn&A)+Ŀj=]f%O κ#Xvg^N/ oy- xmcgҷ@ÖSA+ȴ ?LQҦ+ R2E*R*Nߛx|!$Q}+o|*iE3þ9IqMOƓx>[[؁hM?t,˯ i[/gI %"v9+">fSr?HOo_;]ȧcКrnm3˕Qk[SZ֞ucܲn(h،y02vfR}Yju:T-R ڳ7 G-9*c vDZ_OaB\e}M-tZ'5O es q1L[Fd9q84 ~X/ D}mFC#)1¡RB7w;`m5Y*~O7]7/?u+fxA:h5[$a X a?B0 W5Dԣ>Qw7:Fev ѯW|e?\|._C3QV*7hp\/ij/lѣEH dž+=rw=7vSg V7GLÑFNqǷW|s[\ҨhSnJ]CfHu %mzs΂ՃfVefl(կ:x3+J>e6Zkxy78 /*ع$g "y:Jj˩EJW VǨH)J ܄#&i tk]JX;_4wR%IAl_ҾH/jVqN[C|IE%^-&բOl庫3o7ZݷHd$1?ǒ,g \v?|OvםՌqtIkfLH6ٛ TsQW<2+SPw FV'y<#&d(`}|u}od!þ&s=k)ׄrnu^B.Wqm,޽kc\u}{vfG-$(mU?y˅gM{ ?OXȫʔڛ#fj~؅ԢV˒|("ʺ3`wχt}^o q(۴sE p`9Hxt}B?h_&jU-i|M}_OUKƎ6iip`~t;q/s >W˞32+ j:cbi+*aH[q2-W~}5ΧcogŮ=SUDFnr)$UO Z7%zqjS߅~#C[Я':sjeĤ"]\D="|'*ToC ><k$46W|"S>Os%/tH~AoC/BXE59l|~[RCi̒(U57[Hn *::?!co\z9N[mcTyĿ?|j ޜZY/b;g"83ë 8?Wx?nn㾯D%EHQ)g $wP8LR (+ZϧU4~3'cSiLf)r}䐯cq7kmaM!$[aimN%lNrp|m:=Wn?B ؿmE|\myC P#_<%kzXKոңw1*`cXn8ᧂ<5-.Ķ6sĢԙ yp@(#E}Ȼسye LXxxtV&MbYoGjD[D#$!UL(ldW|#'t{j0Kkm /v]2P{W_=?kSk.?)s-DG߅u+&_Z\$qroYB@R?|Eexak-6~Lҵ+,J+&b=k翉E-am?FOțwJ먮ӎKCм%o~?<9g2q8i dF9!9溗_~xwA=ͽwc|P ]!+"IUޢ6FrZJ Qʷ'a\}~CD Ybf68`G|qUW// UW̑;9fKd>brO ǩl8?_YΫRHt' <4v[y銥/¦=Ҥs;w.X!P?]fMEeIRqR\Ǎ3x swHƝnYrB\Ymtض'mt?ɫokޱj8#=*:77z-Tthr=]^A#ppXIrp}*eYiIt-Wk~)#:Lޥ=oBB%[tU&!5vou}!㎣"[(pzwҒ+ezh:}H?TGp0:aTGQ/h:o|MP$b;m aWSE_'B%;,p9<'ԿK,w5&ws;{X<}@aX]@6G5z>j|LMjTFs71~?LV] HR#xrw8EF>[s}=N? \_M7AH5H'k,IÑj/rD9qn+T_\2ǵBgL-~[³x=EB=1^9r`r>?U WY vFkY٠'\@a+_ҷd}K9@;m9lWE(B?2 X"` p:~X^&.4VH hl;*I~MfEɿ?ʴ̈qm2zna>LM9?T?g5VbqN{BL cwZoL$0v}A=3O񮶎dʓ\̊eOқj,vc~\`~&g\_VT_!Ih7c*~i?/9ۊ-+>vq OY_HVK=l&m /52Kfa psߟOb>?iq{S[ؖrV#8kI/ 01ڹ?]N+b+MmBE Kco5d7?flHa:c??-aOMj:\;-n䜢nue#5qu2cS׏y!w\FWG'̈́ԯ9QOOϾX{n6K\N Z?֪[5(<uIQW1I#]8>׿U&}tҷ?Zb\P[]~cҴk}?RǴAZd$Sto21qSmDap?LTz_{)oDg9tǥfl0~@H|̃]/kb3K{tk,#Tk>lOZ/C{̅jcdZHIXE9n= @~O?P)޾ΦC ڢ#54?x) ҵd;dq:׍mgĿMжKU # d \ ~]u_`^uoڂy|)ض 8o`n*ub#xW\ɧzGp =Y'_{j_XSu5౺biRSZ_"~zx=M^P76PGFYmk |H5ՔfE]_/+Cd Wɿ^mb/Y|1ɰUZ+Jfד pi?[&㮳ƞi2iDHk똂Fd’2p]ӭOx:,m:&#Yd`zpAXW߶oW_!.dupa[2ž&_ ZvW^[c/埈.- Ʋ;m+|؆@5 [,,n XR%q}G Ia&Zw::sL6.V:B]67th?ǏF HOC}x@'Dfc8x QS mzO#d!_8__O_:[SQJ0xWAMEFY-f%"\=Bٔ$I?=9,+ן<)4]F8͍-=/~ΠE~&xB|KW>4OcEyB* )=e(FƟw ƙiۄW#"Fۖ >WUoiک+[y<~U U~+}$F 3, -9SAis<}}?O>xQuƸS֮#U!ch犾.L< kEmL` tGn/m $V \X| S sm*KAGŕw yx#wA8{8OZ>?k_֒o>igBei23O/|Et?WYJ:[8MB'_<+ BѼmq|{EZ;)77.'FeFvSCq?1+%C?Bb~։PK!v`%%$assets/images/about/plugin-sb-fb.pngnu[PNG  IHDRL\%NIDATxٓ$Ǒ?̪0V$K#)ii&ҚdҚLҋӣ5Q%.$A192p=DQwVkTWWwU*2=??ha?|O1ٟ; 9}ϲgYkoy?&;x9nz8XNO>>Jh9}zc/O;S> S}|Yc?,Ǧg =S="cnԃ>}N( M9C?^O>Pc)}ѧGHA6PtNY_iR0_;Kh&}ڐ>1PLN:GV t+ ֤D@@o!߿nHؘ~0}֤M09L :#PJ+! " 8 <<$Hk*(g^gw'!n3RoLMɠ >LAY= LMVR@!Rc!q>bHYx? _ f݅ԩx]cҙ[@@ 1}Z;XM`44sd9A=-D!VHC &AGk6EC 1{ٖrz @&<_#Sw/۔Ѓ:|q0CD1&p>^ދw~iRnj镛,^yJM'b[~zg"t?}WN@n8܃<@ nZqZﴉjB+O>) Hg(h}} կp߿o_JѪ;g>ୄ6tWGi}-{4\~csxt.ti$ֳaN8+=ؐ>=~1t+8H3S.OYyQ\^%mmk:y.EDd#̗}ɁV}&WĤ eqQrlB]HZnJ}7]}ʄɈd5;6c ֏G~&PęgvXت3^ѧW-=风 ]$>RtFC+ j 7U"H<_syI)ҙ4ң?3G1KOD-&b(EʐTAʈ{ nyBpHGpv6!wy* ֽZ yTo~'Ϟ=꫃0a;&3zXH_DBB-0[4)(R>lHـ-gC2dES+V-Ʊh(R6oZꛮ1X!6SŕKW\-b^9vjog;l ywJOC5ɢ }D3a6(6DD|ԗHquu&dKvה(y5t,^B`yn.8Khb-pVx.Wxziʳ@wNeR'QEYQc- )NF80%)X Rxd7l!qNAϨ%~JH$ ϭԕKW=v-o}{zk+G{\ptIkW쫯Gwx2.|㟙ɥjj4{2XZb}ܚn"ݜ (0ިsکG 6_ҋ_;_҆^_]8ιxt.?b'nK 5L.Т(h]b]?Uw_-wom;?ۡL!~AB(O.S:wFx/La'b'K9;r$v"7;["Xx 0~bRpmy\:.A\EPr$C-P鋃ѭ32~/&6ٱzJ쥯L [x+;;j,UMI5 HTcRl)P{  tζHpՑh_FlWrݥXDŋR)A&]u׉ɩwl Pӻ]B)+*ށFk (&.$FDʀu֘ "Ƕ~ZzVtO"TȆ6 e9uUk-oᾄ0uq0@NiBq 0  BR“!/d9P6b;޳#XOAD:qLJ\bb(6Z{egzg;o8q6O__Y#g,ςj>Te,$O\G)oQ('=|&#Vvv2f̆v[ P"'2KtMU&-fDA ҚtG(JWFZ @ڍwN;j響NOϞolgz+r^%mR &4Ls0:)^W00DfյQ虗^g7ígc"ũgνxk>v2>`e;Xm?ob"/ /L h=/N}On97ݯ|8uVI΍x_xyxO&U91e#6T-ηLcYI0Ŝ\`UIaENxǖ@y9ڐ{܅soνJ?s ܻ](HOBB㫿Ž6)~XV(ҙqO0VV} P3*; o_%h'N,r{p=;}zeڥLܤ'9s-CX`Bor&|6 O|5N"XBu)1}$09ʕ.N%h`Wno~PoS"!4C@6Z=ClE̤lrxc;ۓOS$Ca! 2 #2ePܪ>@qnHP sz$I#rbCզVR?#!6)RVP̰;Lu3rd?6Qυ[GIu 5݇>bh ~[#mji 4iV'atN:4$*l3ebYڴX :uQC#>2i#mC:KVl9J|Ҥ' 4[""(ITX8)TiN\-\ۑZjo;jDhGU˒XV'Gӱ:NARD J5F[ܚ0)]FofUuA[ .靍+U[H,)*bG:Lu5]hIYLqOYzʰOx4;M|HVH; #bmH[g\ol E! j"n"8e"ʪcqLB 1eN%s6QꞝJĖXt۱ij[ }xSWG'3< uςcu*TO g,v"_y޸oQqI N/[o4$byFX'M 6>E0fLۧBy"J3XC|[&j){5])G!p&zlL  /8F uDRF HtXOô!1WWޮ.mm`B-m-W0Hiw{~!RPBL )/S*,ImJR*X h`CڀXQy2~gtHF9Fq2CD8#$|erPJ0HŧpU,I{ 0Tgʒx6&{1Ő)CH4ߊΟqEf[?;]_b4i "!FҔ̯ٺ}8%J<& dJ O]T`&vEҩOSjoUG` YB#-'D\H75A 6L) n4},y"M j> -X)+HǢ:^b5+2}Z;ګ!+lj J}48 lc(MzGb}4jiiKf@ŐL9P6@$F<̴"sh}W ϋL%Gi2S#ơ:l#( RxFd?` Ru5'm]WoW k@M o B"{FCUQ@Nl&K*5=m̚qS@AST-=}S2c + @}RqRL[5TRSlXZֲ]ILSRCjt+訦GBM}ѕZԝl6)ߘ_0~ɇX)鉸ozOc=2< 0C".z +kUg/iBin#Qgێ!jH"s_uB?/N+2}::}DҮPR.+i ԟV?+Rխ,^|'5I#ه͇TcRlY'Efk{WdL+Ԕ#GoR W]C+(8D{W=; Rcv\љ3_w/)d+ZdfSsyЧM3ɔEw 1>25PZdF~/jc ꡎ=ToK*C+b͡sbAfnbdycsX`QۨH+ꮻ7xI9=K}ů.!BM[ug\LziO>ߴ(h>ζjh>?`N;n`UGqD=mX3G?vcA0Z9xixbW?RڮV9њYvH+@rb%Y=2 b|c\44'm=+GZYmB:#ɳgCҹ؉Qupxgg.>mJG'H%w 7];x1}@N>ۧk)H86ɶV[?v(+3+ߚ埧~OIg])٫\gbIs o Q2u{ѽ"4XL`ʉًoo P[G_IX>٫,Ncڽk^R'UBUwmD+I-Nm(SP}xd=us'x7bԈ` .96:Y=&{R]83◥t^}77\=|Slh䠪sZIi^zN[2~DDRHy="BGK>& e" #eT8OXtbxvvyx|d@IK)-}kIbwdXKܻKO:EMA.d&2羬Nww/Zv>1G$)~ז7/F8'92g_7~ntNm's h*W]2{WN]ԧ{cZ5u+ /Jd:Tܭ _ wܒrX\č)la#RեMgiʪR9bS7 7ݎ?dޕvv/#}%XwJB^Udo65j_>N*ЇP%i: Bc/WkWgktwNAݴa&[/XW3o!IяX(a6şES cV`}vf~E)Ώ{ПzHJ XaoD];Oζe"&}FR٣ ^HPt&>b[S-&LOǷHľ5;lK|]IkDxFYʷd(_R$~ uPj]N}[XY±T-@,Bn\[En6ӽϟl#-wRv,o =| UYb=uw˨Spx)+ ړR-=".J8+k},IMO\_1s&ީ JFoG*F[V"BfUњkspp{To©X(C<8إ7_.<[ .RvE *xmHV̈́@ķokDMQ_H*x'_KqVB O+}_%>+dzяw/qy__&)YӔ;%"4`y uHؘ3:~l薰ZqV8UOVzeYzoJ OJoRw/DyzѧO_(xmL5t4xI28H}l\~7!#'D;d)ҧ'D|xWz\|Lt|$ttJW:S@n"!U[?L8f ۨU4-OGQQjIENDB`PK!_!U$assets/images/about/plugin-affwp.pngnu[PNG  IHDR ߁?PLTEOCe[ZO{rpfeZ~푊pg3IDATx]0 n!Ϻ5o3APw\iKr\.O |[*s/)qCx*oL^$#&a & /^ Kx CG%2H F&rr@XBX y^bRa@i^Ut5*i=ΞEҳ[do {wt;wONsh#;+zӵл9,K%;-C< U2Dg%4\{ZP*;Z27,LܔV} FjMԠ'@ ArI8'3[5B}q6q>zW6Ǵ\z8\D3U솳ĤK`z8lXI[>E[*Ԣ6S_;ג8 ={fW٦B4kj0RJ<8(5`.ېEA<(Fةڀ؜JzA)Be*uTѩ=.p@+\ *#0{ޑ\+qBS0ʌ㒿Q.|\HprbʇSC'5 EyI۠op\yԝuɍ<h97Rfwm0+tB%U m;^ׯe:rc|=c=c!v-'IENDB`PK!d}.,assets/images/about/plugin-wp-simple-pay.pngnu[PNG  IHDR ߁PLTE$gq&i6t`MĆc˲e̤mϽ.n5r쉭y*kvE~X=x@{1p肨SƋ}ԜVI*4IDATxko@s[*^EEV1C nń 3s"B!J̱˂D@FVB< c삑Yzd=bGv+L"ȋLAc A5W R YĘ(8Pp,V},J,'qu@<@ڜ(,Kgv++v*d<4\!4,w%/UCWFJA]Y܆g9,Fn3࠙n9C^ U}*l~J7y'#q])+pPǟZվ`y,IcY : R}, ʲ0m7g} *Yft(1/ƂL<2oB!3ģoYCACgҬri#\P9]wϚ!ӷ*r[% !̾,K!T%4]OF u@+dfTwKҐEFs1y<|d;g-͓kfم.:$ay'6k@h2 Wh IkY)-Β| 2řs$'cf70vihMvxݬވ(ZHjq,Reu~;Yd͐ɠaYM;8{g916nW? &6OYc& |F<"[jH g!ZsLo((?zV\SueQ%oCLorv6r:KB!t_4hESIENDB`PK!.x'assets/images/about/plugin-searchwp.pngnu[PNG  IHDR ߁WPLTEÑƺüڛ裵]ՀIDATxR0 Nt;;!!4JvmHT3*{T'*jsYܠ?jkiܠZ7ȫ_e'-ga F&ɸFmfKd@[ MTawVMXjBX߆U5 9?rܸ$z.|"^J ܫ^7rQ0i9y&*V­W%0i-V*# `>X"%,qXGiqXQ\ ue8 D"WW+-8OL\<ONne"kbi KE-`yJD=+b`Jn8Y%а,ͦgX@ 5v; }Z XӀ$ Ìy9C:(m;*@ªa?NL/\f!եr#^*{d;0xb6SFkkE\͢6Kw<6E;,"-2yNvX>|ض;6/|O6όY~AY[ZO ãėil)퀶_dMD'_S,f#Vi X¢wgqhi&Ml8TipO ̀4R;LӘ;Hq=[3!H5I3Lf k&_MbQP6)˳\@ή5wӉJXasLzjwz̫$FZz:6Rf^,ʇ߼$r<郜ij5oj5x)a%E֗VXi2,Q}9 kT?$E710Ia*Dzg8_XݪnRiȰEG[&gw9Fa 6eϹNOf%{g @::|#aG+ 5fOJ-V$5ݶUqmnWYTd1?m'SJ4CZ^D2S5fQX0;vAV Rb@QY'I\ ܁|wqK\ f%C3%\OYcba KƫC[阒70b,3 Z"V<6RW?f]d/791lKCb"j61[Ҏ 1$"z.&n- Ћ. d&!qkW0osn =  8 @I914[!1LҾy-'+IQ)Ġ=ai5GČ$>IiϙO /& ڢ.t'qu;׫ƻwh˺ e{.껧A*y"ZM| >I02~:~`a!m^Zpߠa sNB'>b5WmLSI%ug\+ ĞT`I |H[e+nrwyj7jN[ml?1gBxsj)3# p BsPh sy'%3 ?X40%uHp%)q7x=?0쮴\g@bl85pDkQ?R[Յ$lHc0O ru>!_b; KԈ[xsy]|U5ͺHo-N9 c+46$oy@ӊ!$ODhfT}p+2䩀pǝ.X wĦvyhso-ߘ[ES:v*lBQ[Xr?PTt;Kcr0 6Te4I5)"R|ez`F]Z}}RxEtCj|?!VE`[QE{4VƯwϭOIENDB`PK![jZZ%assets/images/about/plugin-wpcode.pngnu[PNG  IHDR$$_Lj3PLTEeeeeeeeeeeeeeeee1@tRNS@`0 pPƫYIDATx؁ @SmkfldV/s[>5~%q7MU*ε\BϚƲT8W+<ػa ,6BO; AU觞z$Y>qj+ʔ I 5N]=ن#Tf )6%'#'l9^s%c|4/pnqP;<,e5E^(%8 i@j@]Mϛ(YDXwfEDx,&T`6r|&N'+pSɼ"M p_]biGx^,ka޽ QmW&T$mYV&(,&m-Fcja` Rc9$\P)0.\/.<<5PO -qK[ҖG=WG谒:(&8ghǐ;m6#EE8G8sEk `eldH} Ri>;%p|/U)AF*M 2<ٻㆁgIȉ.aUL 2\а(#R״K .iku?!es mRwkD{ZQryӋ#%Ȑ6RQ' m ȑs8aRʋJ&hz 9)$@ۘטd!x9:@+r}UcQ@m,W@wCf MI AlPj;Ʒ@-?y PКWlrreTt13JP%C0%G52_fq. PՖaL$T0u}-@m 5`.;.ZҮ`it ђ;B|Qw:QicxH BK BM BO 6nJtRRx w'I 1xGX-phܑ.Ew?9zoKG/#ALQK`Epʦm̓E5FRSX'0%XL6]TiPjkR*ّ& @e T6+@e=0 @aB 6 df 0dVH%ڀ96 (kI2H9$Jj^6N{}[+nSJ@cJ H-r@f[2"joH.km~ޢ;̭ڌ8"F&Z4Ą r w . H'Hc"68"pp"xk^R ewW[E&`mo ;L$AB2UQvkL$@Q䏄n%&G&&GH&`%VJt"HpW Pu٢k||w H_];I$鶶K2([ DT->;I$@I HE K$ٖyᗽ;I((Z qTPy졒tuH'7@,>tOyD PyO "uDm<"Z]jhY3 DcmR XSYJ@":}T^J@"X pWN?^G$@" \ fmC,mv5 G$k H#п< Dty܁<"k҈o+ H#ɩ[@Mf-H$`+ 1G$MM?d X~#&;~&å3|wI 1 `G?-kgR-0HWXsa~O$ ,р8f1%O$@St4"] P-$0H'4"}F" P#Z$0H#f?F$@{pM`~@$ޯ*qD-qD܀Dj2[t& PM<G$@5Q4 $`ln PMx& PM, #`l$ LхI$]x%F ew'@$@St&0H #&f^r"b(NB7?HdX>g' Ze)ur*Mr*MHE^RD$FI$@2gv-?8[y$ %XЕH/]ЕHolJ$@GTq@["2ܣ gИHc1 nQm'L$٢O )9 1ӭQm'hM$: 0%x 3mQEhN$;g%p͉UЛHNQm'N$N-;s] NОH-nhN$4 @uI tDwK1{w'VS0[kGDdHv  p{M}n5 lo'@$o `  H>5" ӣ0[D$~;8^S-"Zm5f~;"N ` db H޽( Ptw$j#Ȫڃ3?=@$@9  Pi. Ph.b  ` l]o@$@kt lqhK~; -"*==D3[<@$٢" Ow0[%H:?DG~;"*Ŕ" хNHJs$H:[t&HEE@$ .х" la"ro''[GD~;"G Ph.{w&amkԖdea"vDϵfL E@$@Ik"vDvDE+vD-g,ъ1(hV lq"  gn;"JJъ90[ܱdܣn;"l@$@9N?pMn}n7xF+\n}s&?W ъ5W랶9m|$)@$ߙ-64[-g  p1q8u^>>k^O?+ 5㳲Gˉ8VuE 4S4/QVsDD+4-}q郔0=L":hFa mb^ ꊹiZ}4OoD/tSmTT P=גtj@5kD/[<.q{'u-q.]MxHC žvKi  FN֝ N7tڻ"^5G/~Jby*HWLэćxL;DT1xc.is+ll1u A%He*~i1yDF؟o@J`<-ZfJ`:g󶣔جN$ŬNE>f peuTy*DTF%0HcԢJCv;$%U8ڈ[,S*D\]dv*uL$F$ pcuqT A%0H cQz iOc 5hT8gu۩J` GR<"z5X^J`G.^nF=HE$iK$-F 2mo;H("nڈT~J`_v_TÈh7۩,"z$6 pSW"-~w/9 C1F -<AR`}"E8׭v;uB$@v۠I$ſP % uæn""(KIhxiD$ue*J H^>f R|Zɩ/ "WVU#[<^*J Hj%aJ`+EŤR n ~nP L% wSHP  ;L*X"bzv @,cMK"[\.681xꦂ"l[T2@"*FHP $ pblW7A? `l7Nek"ͱb4W#A%G$CiF$҈[|Y @ vzTQD|zQMH" uquT#G"A%wG) AE1` Ds!ezn"_HJ Hcbb @ yc/{HP  Y`n@ qw˼NqߡP t tW>Үu! @Obn*"_=8HocbH@ߌ- "gv*<ޠ  9ܱź *[|ߓ>*NqOlTDDvأ՘JH?WzT' JqíJ*S㾇kJP K$@cYJH۞.谩JHacYE(  genMZ*|"zAc'܆^W.Ht}J@"zbn *=~ԞoP H$.glq0X=%D宗bn!@/%a h|zeČ߫so.pEO1xtQ%F$0\w}ѿB h{(B%PN$0[T9,&glsߨF{%҈F{;@dEϪ%2&+ﶣJH`[}QJ H`0c:l4"~=n^z*/ll]JH`窑P H`9:/P  u[5;E*[ TuJH`߱ ɉZ5;TQ::V̱E_8*[|\JDC=BtTDC d?JH`ŸNT1D3]VK*:"Fn[TmD#)x=:*6"zv;;'* LT4 sמhS t wG9 @ I"|rqwV~Ҏ=vd*7!U# [G%F  tED"B9T zs<">AI% Թ?;JP L#4xn'N$P'yNTVǎT[M%& B TJ`4@#mlQ% y_).gJP !bTJ` @NJq۱TJ`@'hJP L%4"*?+FT[3侘*ᏽ;m($E!uUiA{WfܐH#0Ts":->/:SS%p7"QT "(n' plqH(n'H G@%D[ JP yDUJ G$@Knf\%p"-TC$@oH Fv;@H%8*A%#maS@Q5P *$?H 2-@H(c@HOalQ%D[t̫@H3ʰI%. 0uD>9@$@ETJ 3[TJ O$;p"&QN*A%pH>w9&ߺ  ?mj@[Tkj@['c5h@.0EUثD|DJP  EN*A%0F$@!TJ`Hl;Aƈm;TJ`HHöJP  s4pئT"ػ0 T_mZtFML_Cp7[D%&+1|dTJ`HP *I"N%Ʊ2K%4*"Ƃfn;=TD\KKШ&n;}Ш&:+*Q )1P J`D$@lmETB {lqШD}{R w*}mTB ;[>/@HC*Q tH-++F%G$@Gm'ŕTƒJ6">K ŵTBhDt{~KD-nTw":N%Ʊv*A% *A% 4[U@%D)v%NT" %ƾ*A% 4[Tv"TshJ%D~j TJM$jlmTJXM$t-Tf"L55 d1vN%D&v:tTZ"Hm*A%l%4&P *a)@A!JP ;k *A%$4hX!JP =j *A%,$WcH ϧp)JP  ->ITJF$9v T2"8}T."8fCV 1vJS=Din5hПD\~5[̤T?{wtFDAp- __U a7܇H`Lh@\l =BH y2vT]n;R *&D[Bkn;-S *D[Bkf4nA$0%4vz*@x_lS *DKkTJ ,y k*A%E%:amA%8uTBH`Gimm D;NEJP e"EBTJ u2!*A%tfn;.JTJ <&iJP U"Q *!J$y2-$d*A=%t[5J}Dvzl8u =+%\= WHg ^5\RJp8x2@BDqET?-B%89H TDiΎtE%]M$zXQ &`?n4@A%t4@*&H Kآ`a:@i0J0H Jآar(FBI?> Zs׶Jmu"(p*zDIv7,O$:5Jް>@EP `t'H HآVTM@DAnSéD9TN'qQ N/o 15J0@$cQ wb % 8MۺP *R|N P :R-J0A$mz~J_H Dآ;kP  d8 ^OL$n'ڡp9%PkhlX"!A%2B$:5j, D([J^!H4h?*~"p|v.fO{9T 5D jM%xjZ)?T]boX:65,G%x|wwI C1FPQ>8O^L9gЯD:-Wx,@$mJ 5[tۉ;*vD wTYDNцN||r $[+L%XPH/-x˯PH YwJ%XBVH 1pۉODӌ-bJd)L$jig! T'KY"TÿU٠3/K$0آqLR WH`NޅDBQ"Lh6 j djMwYaD%D-D^ vK$%x\aL%D-[dC$H sqpۉ4H1@FoBn; J E>iPH`EH׭D~,u  dF",cn;a# $y>n+l".@Sal`Ye"Kނ,^ٻa( Q#HZԆ5P7O۩TaF˲o"u}׽VH`SߩHŖC6ЫU"U- vO$bTE#t;VJ$a݆zcF0@$Sal&b"Kcٴhe t"4H!Zrx"h">K h t1vH#&!H`n'~^ t1}4kF{)9h+%cNtF{{+9#d`"4kKӈ:[4nEpCXSaw4#Xfl%)4 DCJ $$p<74H"isDKvr K4CF:ޑWr{D#[ESsbgD-zF%H` 3l4 4POK( I?Pʞ9CS=e54DW[t [4DyQN|FJ \aWj >*N$eB#DYQiFp)Yu",QEgH`EX|ـH CFR@(1*FRc>bFpЂH`NcD#8mhB$Ђ|Wġ6t!HuxCF,u!Xel/hR" Bv;B#lI$9p Y#=r죎iFגH`آi+lhO$e p%Hq:d|ؕHآE4@",BG{hm2>ػJ0?mh ;f`w@d"Ϳ_Wo᜛.L$n'?CH`9F8ei\H`DH&[F Dü"ch&wʼnv}*E#hD=#sh??V&+0Fz[#'Σ4Bi"Nv;4"4hPH% j l-54@_@#hD[  vOhPH`cE4F@$0iܜ:FՉzіA# piҜFÓxzH`RڢNg4"!}5-8ޥrQJQ Rl;V VCC%9g  @:[Fs2F.l;vB#hDcKmḀ̈̄4" g@sai0 |rl T{>4F@$P5iK#! (FK2F>v+\ :f4FH`٢Ni78Cq" ^U\I_F>ػ܄a nrWۧ^ vK,9g #2̎GiZ6XA#K$0̩p)F D]߮}%TҘjHRrX[LTH`EދF r,94)H`Can3i=גmLA#0!s۩\ 4S"!%N4FA$0ĹTh@HbǵG#hD#|n;6@ŎS%Ft&vG#hzD-J<7@˾p)Fַ+96n;"&k^L7sDKZ[Uh,wk_I4 hME Y"} $-h^H kCD#mvr)F, Zr*14F"]Jc%F 㽯M 5DxoNa^f5DtV&ɥiFHibç$"NgC㉄>@)ˋDpMc$~\mX"a/w;%Yݒ&T .9'l s~NcQgF HtTNQ&5DšK%^"aMӿK"aLՀ9x"aL5 P`!Qզ_ 77;l%FP># il+8K]$x@`$tA* [A-.k,l! U|caHGm0V)LolA UH[4ESFBs@IXF$*vz9OF`ֹnc2uDBZ`!a=}DB+nDBYil>DLYj6 e!b譋DBXjlcN"!x>dL,%~57/_5[bSɸ~%&_Z՟Cɰ^"!k~wi>%%/ұ)mҵκXL$TzWe1joQn0EQT jJZUe5Dх="!J?vgK<4TIcIEAj F$4݉P13 4퉄L۩}T@$dA-f*A#H4xd*DBv "!U6IUJ%"!UwNpRW#Hmvϰ\'Yձ"!We'j~ rqN|9V,Z"!eWpF#HHVklN՞W"!Yآ._#DB7D E-O(T DB6DJ %vNz(R DBr4QDBaS#*y[ #e+A#HWuaEy9I߈-Oy"!]뼶Ycf#9j.ͨy?/zw_@$45h6}"-6ߵ@$  0m+Uq~h5,vnF [n tD.*KGI$p[lLjHhFy%kZ^WHhNlU cx DBS26'84WU ڒgiTx Za?I t)筏G=@$4(MJ @$4i<^:mK|hZDB5x:Z <^qe* -+En9Oo@$.HBOok{tdPDDZGv;qPuxmk m4xs)e}a*5Dv;TB$$hnюJ$.EJ$n'Z$ܷ\Z$|`l"!n'jΑ p!rHdwP CH "!,$ 9di?ػ[G4tx":Di "CI$"CUf%Wm;$ :"E("CG$` HP  HPwm',"CÝk":4Dg":Dm'4"C k":<[H#:쏄 HG$8v#Jp 8gDB;'}LX*ىNLDBGm9i(@$>6`O[.ZUDP+؋/3J?G/ #>>%@7D•y8U]'"vNrk@ODՍe9f#2/ @hj^4wS"_Si@(%gj^WMo"Дj9}ȹmH1ZK:x;@$"8 $HB" $HB" $HB" $f[/0BQK% `I$X,I$K% `I$X,I$K% `I$X,I$K% `I$:oEђ`I$X,I$K% `I$X,I$K% `I$X,I$K% `I$X,I$u z"X,I$K% `I$X,I$K% `I$X,I$K% `I$X,I$K% @ց F($K% `I$X,I$K% `I$X,I$K% `I$X,I$K% `I[(% `I$X,I$K% `I$X,I$K% `I$X,I$K% `I$X A]#IN{Uh& @$H$H"D"D  @$H$H @R" H"HN$\ &؎ "HVm40] L @rԮr_$U&wI P@a&Jr'qCN8_\W`|Srh\6W`|%Ѧn[E @+Z[:+0)Z%ZX*0["xU`l["Dh7g{yT`dK:=+0) $>֞ElNRqmW`\|XsP0 |YO ;HN8@-kCQM>1;3QJ{TD)(Z\;0%oO?nu`F zt`F[^A ZϞqYyPDT{"o57EK @'ZyP6on)%u`g,rkfͫӚ3mw^Tڢ"Yn@@f2?m,˃ԦOآ/OSZS70/WG[6ق4QA 1j8 ) TB:Ǖ\]R`%$H RHcu)@FS<X >8CTMHd$3r}| }  sl G5~A@"ml2.1}w @ O#Ym%biO'xSppVe5ڰۘ?vD1D1D1D_\:MaW5z7=+?=tLg9H&au%) ј3\Q5 gdYa2v Ou;'@vc{r"!ܪbla *iJCmCPM_(I?nw5/' [jiL:j],U@8]nJfpGުg5\`Gs09GdJJ{aps[DjD,=8o=p~$IENDB`PK!l533assets/scss/_mixins.scssnu[/* ========================================================================== Mixins ========================================================================== */ /** * Media Query */ @mixin mq($breakpoint) { $mq-xxs: '(max-width: 599px)'; $mq-xs: '(min-width: 600px) and (max-width: 767px)'; $mq-sm: '(min-width: 768px) and (max-width: 991px)'; $mq-md: '(min-width: 992px) and (max-width: 1199px)'; $mq-lg: '(min-width: 1200px)'; @if $breakpoint == xxs { @media #{$mq-xxs} { @content; } } @if $breakpoint == xs { @media #{$mq-xs} { @content; } } @else if $breakpoint == sm { @media #{$mq-sm} { @content; } } @else if $breakpoint == md { @media #{$mq-md} { @content; } } @else if $breakpoint == lg { @media #{$mq-lg} { @content; } } } /** * Border-Radius */ $prefixes: -webkit-, -moz-, -o-, ''; @mixin borderRadius($size...) { @if length($size) == 1 { @each $prefix in $prefixes { #{$prefix}border-radius: $size; } } @else { @include customBorderRadius($size...); } } @mixin customBorderRadius( $topLeft: 0, $topRight: 0, $bottomRight: 0, $bottomLeft: 0 ) { @each $prefix in $prefixes { @if $prefix == '-moz-' { @if $topLeft != 0 { -moz-border-radius-topleft: $topLeft; } @if $topRight != 0 { -moz-border-radius-topright: $topRight; } @if $bottomRight != 0 { -moz-border-radius-bottomright: $bottomRight; } @if $bottomLeft != 0 { -moz-border-radius-bottomleft: $bottomLeft; } } @else { @if $topLeft != 0 { #{$prefix}border-top-left-radius: $topLeft; } @if $topRight != 0 { #{$prefix}border-top-right-radius: $topRight; } @if $bottomRight != 0 { #{$prefix}border-bottom-right-radius: $bottomRight; } @if $bottomLeft != 0 { #{$prefix}border-bottom-left-radius: $bottomLeft; } } } } PK!I[%%assets/scss/admin.scssnu[@import 'vars'; @import 'mixins'; @import 'buttons'; /* ========================================================================== Header ========================================================================== */ #nextgen-header-temp { position: relative; display: none; } #nextgen-top-notification { border-top: 3px solid $green; position: relative; background-color: #EEEEEE; text-align: center; color: #3C434ACC; height: 40px; vertical-align: middle; border-bottom: 1px solid #DDDDDD; &.nextgen-pro-active { height: 0; p { visibility: hidden; } } p { margin: 0; padding: 0; line-height: 40px; font-size: 13px; } a { color: $green; font-size: 13px; } .nextgen-dismiss { position: absolute; top: 10px; right: 10px; } } #nextgen-header { background-color: $white; background-repeat: repeat; height: $header-height; display: flex; justify-content: space-between; align-items: center; /* <---- NEW */ box-shadow: 0px 1px 2px 0px #0000000F; @include mq(xxs) { padding-top: 46px; } h1.nextgen-logo { margin: 0; margin-left: 20px; img { /** * Image width and height (image is 2x so this ensures it displays correctly) */ max-width: 339px; /** * Responsive - ensure the logo doesn't exceed the header dimensions */ @include mq(xs) { width: 90%; } } a.nextgen-logo-link{ outline: none; border: none; box-shadow: none; &:focus { outline: none; border: none; box-shadow: none; } &:active { outline: none; border: none; box-shadow: none; } } } .nextgen-right { padding-right: 20px; } .nextgen-notifications-inbox { position: relative; &[data-count]:after { background: $red; border-radius: 50%; bottom: 100%; color: #fff; content: attr(data-count); display: block; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; font-weight: 700; height: 16px; left: 100%; line-height: 18px; min-width: 16px; position: absolute; text-align: center; transform: translate(-40%, 30%); } } } /* ========================================================================== Notifications Sidebar ========================================================================== */ .nextgen-notifications-close, .nextgen-notifications-inbox { &:hover { cursor: pointer; } } .nextgen-notifications-drawer { box-sizing: border-box; background: $white; bottom: 0; position: fixed; right: -400px; top: 32px; transition: right 300ms ease 0s,visibility 0s ease 400ms; visibility: hidden; width: 400px; z-index: 1100; border: 1px solid #DDDDDD; .nextgen-notifications-open & { right: 0; transition: right 300ms ease 0s, visibility 0s ease 0ms; visibility: visible; } } .nextgen-notifications-overlay { background-color: rgba(0, 0, 0, 0.3); bottom: 0; display: none; left: 0; opacity: .5; position: fixed; right: 0; top: 46px; transition: .5s; z-index: 1052; .folded & { left: 36px; } .nextgen-notifications-open & { display: block; } @media screen and (min-width: 783px) { left: 36px; .admin-bar & { top: 32px; } } @media screen and (min-width: 961px) { left: 160px; .folded & { left: 36px; } } } .nextgen-notifications-header { background: #EEEEEE; border-bottom: 1px solid #DDDDDD; padding: 18px 40px 18px 20px; .nextgen-notifications-close { position: absolute; right: 18px; top: 22px; path { fill: #3C434A; } } h3 { color: #3C434A; display: inline-block; font-size: 14px; font-weight: 700; line-height: 21px; margin: 0 10px 0 0; } } .nextgen-notifications-list { height: calc(100% - 130px); overflow: auto; ul { margin: 0; } li { border-bottom: 1px solid #DDDDDD; display: flex; margin: 0; padding: 24px; font-size: 14px; color: #3C434A99; &:first-child { border-top: none; } h4 { color: hsl(210, 10%, 26%); ; font-size: 14px; font-weight: 600; line-height: 21px; margin: 0; } } p { color: #3C434A99; font-size: 14px; margin: 8px 0; margin-bottom: 20px; &.nextgen-start { font-size: 12px; } } .nextgen-button { padding: 8px 14px; border-radius: 4px; text-decoration: none; font-size: 12px; &.nextgen-button-primary { background-color: #37993B; color: $white; } &.nextgen-button-secondary { border: 1px solid #DDDDDD; } } } .nextgen-button-text { font-size: 12px; color: #3C434AB2; } .nextgen-notification-actions { .nextgen-button { margin-right: 10px; } } .nextgen-notifications-footer { border-top: 1px solid #DDDDDD; padding: 24px 27px; text-align: right; } #nextgen-dismissed-title, #nextgen-notifications-show-active, .nextgen-notifications-dismissed { display: none; } .show-dismissed { #nextgen-notifications-show-dismissed, .nextgen-notifications-active, #nextgen-active-title { display: none; } #nextgen-notifications-show-active, #nextgen-dismissed-title { display: inline-block; } .nextgen-notifications-dismissed { display: block; } } .nextgen-notifications-dismissed { .nextgen-notification-dismiss { display: none; } } .nextgen-notification-icon { margin-right: 10px; } /* ========================================================================== Body ========================================================================== */ body.toplevel_page_nextgen-gallery, body[class*=" nextgen-gallery_page_"], body[class*=" ngg-"] { #wpcontent { padding-left: 0; } .ui-widget { .ui-dialog-titlebar-close { background: none; border: none; box-shadow: none; color:#FFFFFF; } } #wpfooter { margin-top: auto; position: relative; clear: both; .nextgen-footer-promotion { text-align: center; font-weight: 400; font-size: 13px; line-height: normal; color: #646970; padding: 30px 0; margin-bottom: 20px; } .nextgen-footer-promotion-links { margin: 10px 0; color: #646970; span { color: #c3c4c7; padding: 0 7px; } } .nextgen-footer-promotion-links, .nextgen-footer-promotion-social { display: flex; justify-content: center; align-items: center; } .nextgen-footer-promotion-social { gap: 10px; margin: 0; } } } /* ========================================================================== Body ========================================================================== */ .nextgen-nav-tab-wrapper { display: flex; flex-wrap: wrap; gap: 0 30px; margin: 0 0 20px 0; background-color: transparent; list-style: none; font-size: 16px; font-weight: 400; margin: 30px 20px; border-bottom: 1px solid #60606026; li { margin: 0; padding: 0; a { display: block; padding: 15px 0 12px 0; line-height: 30px; border-bottom: 3px solid #ffffff; box-shadow: none; color: #2c3338; text-decoration: none; } } .nextgen-nav-tab:hover, .nextgen-nav-tab-active { border-bottom: 4px solid $green_alt; font-weight: 600; } } .nextgen-admin-content { position: relative; .nextgen-admin-modal *, .nextgen-admin-modal *::before, .nextgen-admin-modal *::after { /* -webkit-box-sizing: border-box; */ -moz-box-sizing: border-box; box-sizing: border-box; } .nextgen-admin-modal { text-align: center; width: 730px; box-shadow: 0 0 60px 30px rgba(0, 0, 0, 0.15); background-color: $white; border-radius: 6px; position: absolute; top: 95px; left: 50%; margin: 0 auto 0 -365px; z-index: 9999; overflow: hidden; h2 { font-size: 20px; margin: 0 0 16px 0; padding: 0; } p { font-size: 16px; line-height: 24px; color: #777777; margin: 0 0 30px 0; padding: 0; } ul { float: left; width: 50%; margin: 0; padding: 0 0 0 30px; text-align: left; } li { color: #777777; font-size: 16px; line-height: 28px; padding: 6px 0; display: flex; svg { padding-right: 10px; } } } .nextgen-admin-modal-content { border-radius: 3px 3px 0 0; padding: 40px; } .nextgen-admin-model-lists { width: 100%; } .nextgen-green-button { font-size: 18px; text-align: center; padding: 6px 16px; margin: 30px 0; } .nextgen-admin-modal-bonus { position: relative; padding: 30px; background: #f5f5f5; text-align: center; p { font-size: 14px; margin: 0px; } svg { position: absolute; border-radius: 50%; top: -14px; background-color: $white; } } .nextgen-admin-modal-text-link { display: block; margin: 15px 0; font-size: 14px; color: #3C434AB2; } .button.nextgen-button { font-size: 21px; height: 50px; line-height: 48px; background-color: $green_alt; } .wrap{ -webkit-filter: blur(3px); -moz-filter: blur(3px); -ms-filter: blur(3px); -o-filter: blur(3px); filter: blur(3px); &:hover > * { pointer-events: none !important; } } .nextgen-clear, .nextgen-clear::before, .nextgen-clear::after { content: " "; display: table; } } .nextgen-green { color: $green; } @media (max-height: 1300px ) { .nextgen-admin-content .nextgen-admin-modal { top: 30px; } } PK!@(assets/scss/_vars.scssnu[/* ========================================================================== Variables SCSS ========================================================================== */ $font__main: sans-serif; $font__code: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; $font__pre: "Courier 10 Pitch", Courier, monospace; $font__line-height-body: 1.5; $font__line-height-pre: 1.6; $font_size_tab: 13px; $white: #ffffff; $beige_light: #f7f7f7; $black: #000000; $green: #87A20E; $green_alt: #618E00; $grey: #666666; $grey_dark: #6b6e72; $grey_dark_2: #dddddd; $red: #e02626; $red_alt: #f85959; $primary_color: $black; $primary_button_color: $black; $primary_button_color_hover: rgba(0,0,0,0.8); $danger_button_color: $red; $danger_button_color_hover: $red_alt; $color_bg: #f1f1f1; $header-height: 120px; $navbar-height: 50px; $border-radius-main: 6px; PK!assets/scss/buttons.scssnu[.wp-core-ui .button.nextgen-button { border-radius: 6px; } .wp-core-ui .nextgen-primary-button { border-color: $primary_color; color: $white; background-color: $primary_color; -webkit-transition: background-color 100ms linear; -ms-transition: background-color 100ms linear; transition: background-color 100ms linear; padding: 6px 16px; font-weight: 700; &:focus, &:hover { background: $primary_button_color_hover; border-color: $primary_button_color_hover; color: #fff; box-shadow: none; } } .wp-core-ui .nextgen-secondary-button { border: 1px solid #6060604D; color: #282828; background-color: #FFFFFF; box-shadow: none; border-radius: 4px; padding: 6px 16px; font-weight: 700; -webkit-transition: background-color 100ms linear; -ms-transition: background-color 100ms linear; transition: background-color 100ms linear; &:focus, &:hover { border-color: rgb(235, 235, 235); color: rgb(100, 100, 100); background-color: rgb(235, 235, 235); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08); } } .wp-core-ui .nextgen-green-button { border-color: $green_alt; color: $white; background-color: $green_alt; border-radius: 4px; -webkit-transition: background-color 100ms linear; -ms-transition: background-color 100ms linear; transition: background-color 100ms linear; &:focus, &:hover { background: $green; border-color: $green; color: #fff; box-shadow: none; } } .wp-core-ui .nextgen-button-blue { border-color: #3871AC; color: $white; background-color: #3871AC; border-radius: 4px; -webkit-transition: opacity 100ms linear; -ms-transition: opacity 100ms linear; transition: opacity 100ms linear; &:focus, &:hover { background-color: #3871AC; border-color: #3871AC; opacity: 0.75; color: #fff; box-shadow: none; } } PK!h h assets/scss/about.scssnu[@import 'vars'; @import 'mixins'; body[class*=" envira_page_nextgen-lite-"] { * { box-sizing: border-box; } #nextgen-header { height: 150px; } .nextgen-welcome-wrap { clear: both; } } .nextgen-panel { display: flex; background: white; padding: 30px; border: 1px solid #dddddd; line-height: 2; font-size: 16px; line-height: 25px; margin: 0 20px 20px; &.nextgen-litevspro-panel{ display: block; padding: 0; } h3 { font-size: 18px; font-weight: 600; line-height: 1.2em; margin-top: 0; margin-bottom: 30px; text-transform: capitalize; } p { font-size: 16px; line-height: 1.5; a { font-weight: 500; color: #7cc048; text-decoration: none; } a:hover { text-decoration: underline; } } ul { list-style: disc; list-style-position: inside; &.list-of-links { list-style: none; a { color: #7cc048; text-decoration: none; } a:hover { text-decoration: underline; } } } .content { width: 60%; padding-right: 30px; } .image { width: 40%; img { max-width: 100%; width: 100%; } } .feature-photo-column { padding-left: 30px; display: inherit; img { width: 100%; margin: auto; } &.photo-left { padding-left: 0; padding-right: 30px; } } &.mini-panel { .feature-photo-column { padding-top: 10px; a { margin: 0 auto; height: auto; } img { width: auto; margin: 0 auto; } } } } #nextgen-admin-litevspro { .nextgen-admin-litevspro-section-hero { text-align: center; h2 { font-size: 21px; } h4 { font-weight: normal; font-size: 14px; color: #3C434AB2; } } .centered { text-align: center; } h1 { font-size: 34px; line-height: 32px; } p.centered { font-size: 18px; line-height: 21px; } &.wrap { margin-left: 0; margin-right: 0; } .litevspro-table-header { background: #fff; } .nextgen-admin-litevspro-section { margin: 0 0 30px 0; padding: 30px; line-height: 2; &.no-bottom { margin-bottom: 0; padding-bottom: 0; } &.litevspro-table-header { padding-bottom: 30px; } } table tr td { border-bottom: 1px solid #dddddd; border-right: 1px solid #dddddd; padding: 30px; vertical-align: top; width: 33%; p { font-size: 18px; line-height: 24px; } } table tr td:last-child { border-right: 0; } table { border-bottom: 0; } .nextgen-admin-litevspro-section-hero { border-top: 0; .call-to-action { font-size: 21px; font-weight: 500; text-align: center; a{ font-size: 16px; color: #3871AC; } } p { text-align: center; font-size: 14px; line-height: 18px; } span.nextgen-deal { font-weight: 500; color: #00A32A; } } .nextgen-admin-litevspro-section-table { padding-left: 0; padding-right: 0; padding-top: 0; table { width: 100%; background: rgb(245, 245, 245); tr td:first-child { border-left: 1px solid #dddddd; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; } tr td:last-child { border-right: 1px solid #dddddd; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; background-color: #f3f9fe; } tr:first-child td { border-top: 1px solid #ddd; } th { text-align: left; font-weight: 600; font-size: 18px; padding-left: 30px; padding-bottom: 20px; padding-top: 20px; border-top: 1px solid #dddddd; border-right: 1px solid #dddddd; vertical-align: middle; } th:last-child { border-right: 1px solid #dddddd; } th:first-child { border-left: 1px solid #dddddd; } td { background: #fff; strong { display: block; } } p { background-repeat: no-repeat; background-size: 15px auto; background-position: 0 6px; margin: 0; } p.features-full { padding-left: 30px; background-position: 0 4px; background-image: url(../images/icons/litevspro/tick.svg); } p.features-none { padding-left: 30px; background-position: 6px 6px; background-image: url(../images/icons/litevspro/cross_red.svg); background-size: 15px auto; } p.features-partial { padding-left: 30px; background-position: 6px 6px; background-size: 15px auto; background-image: url(../images/icons/litevspro/cross.svg); } } } } .nextgen-am-plugins-wrap { display: grid; grid-template-columns: repeat(3, 1fr); column-gap: 30px; margin: 0 20px 20px; } .nextgen-am-plugins { display: flex; flex-direction: column; background-color: $white; border: 1px solid #dddddd; margin-bottom: 30px; border-radius: 6px; } .nextgen-am-plugins-main { display: flex; flex-direction: row; padding: 30px 30px 20px; flex-grow: 1; text-align: left; h3 { padding-top: 0; margin-top: 0; } img { padding-right: 15px; } } .nextgen-am-plugins-footer { display: flex; text-align: left; align-items: center; vertical-align: middle; padding: 20px; background-color: #E8E8EB; border-top: 1px solid rgb(230, 230, 230); .nextgen-am-plugins-install-wrap { margin-left: auto; .spinner { float: none; margin: 7px 10px 0; } } .nextgen-am-plugins-button { font-size: 14px !important; height: 35px !important; line-height: 38px !important; border-radius: 4px !important; background-color: $green_alt !important; } } .nextgen-am-plugins-status { font-weight: bold; span { font-weight: normal; } } .nextgen-admin-3-col { display: flex; flex-wrap: wrap; margin-bottom: 0px; margin: 0 20px; .nextgen-cols { flex-grow: 1; width: 26%; text-align: center; border-radius: 4px; padding: 3%; margin-left: 20px; background: white; border: 1px solid #dddddd; &:first-child { margin-left: 0; } h3 { font-size: 24px; } p { max-width: 80%; font-size: 16px; margin: 20px auto; } } } .nextgen-get-started-section { margin-top: 20px; .centered { text-align: center; } .nextgen-admin-get-started-panel { h3 { padding: 0; margin: 0 0 10px 0; } p { font-size: 18px; line-height: 1.5; margin: 30px 0; } .button.nextgen-button { font-size: 21px; height: 50px; line-height: 48px; } .feature-photo-column { padding-left: 30px; max-width: 360px; min-width: 350px; display: inherit; img { width: 100%; margin: auto; } &.photo-left { padding-left: 0; padding-right: 30px; } } } .nextgen-admin-upgrade-panel { overflow: hidden; font-size: 18px; p { font-size: 18px; } .feature-photo-column { position: relative; margin-right: -120px; margin-bottom: -540px; width: 100%; img { position: absolute; right: -30px; top: 0; } } .button.nextgen-button { font-size: 21px; height: 50px; line-height: 48px; } } .nextgen-admin-docs-panel { background-color: rgb(245, 245, 245); border-radius: 6px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08); overflow: hidden; font-size: 18px; .nextgen-admin-header { display: flex; vertical-align: middle; align-items: center; justify-content: space-between; width: 100%; } } .nextgen-admin-get-started-banner { display: flex; background: black; color: white; padding: 10px 0; margin-bottom: 60px; border-radius: 6px; .banner-text { display: block; margin: 0 auto; padding: 10px 0 0 0; text-align: center; font-size: 1.5em; text-align: left; h3 { font-size: 1.5em; line-height: 1.3em; margin: 5px auto; color: white; } } .banner-button { margin: auto; max-width: 33%; height: 100%; vertical-align: middle; a { height: auto; padding: 15px 25px; font-size: 1.45em; display: block; margin: auto; } } } .nextgen-help-section { .button.nextgen-button { height: 40px; line-height: 40px; font-size: 18px; } } } @media screen and (max-width: 1400px) { .nextgen-am-plugins-wrap { grid-template-columns: repeat(2, 1fr); } } @media screen and (max-width: 800px) { .nextgen-am-plugins-wrap { grid-template-columns: repeat(1, 1fr); } .nextgen-admin-3-col { .nextgen-cols { width: 100%; margin: 0; margin-bottom: 30px; } } } PK!N" [ ["assets/scss/onboarding-wizard.scssnu[@import 'vars'; .nextgen-gallery-onboarding-wizard { background: #f1f1f1; min-height: 100vh; width: 100%; box-sizing: border-box; position: relative; } .nextgen-gallery-onboarding-wizard-wrapper{ padding: 25px; height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; flex-direction: column; } .nextgen-gallery-onboarding-wizard-step-welcome{ margin: 25px; } .nextgen-gallery-onboarding-welcome-content{ position: relative; width: 100%; max-width: 500px; background-color: #fff; border: 1px solid #E8E8EB; box-shadow: 0 2px 10px 0 rgba(0,0,0,0.1); padding: 50px; display: flex; justify-content: center; flex-direction: column; text-align: center; @media screen and (max-width: 768px) { padding: 30px; max-width: 100%; width: fit-content; } } .nextgen-gallery-onboarding-welcome-content h1{ font-size: 20px; margin: 0 0 16px 0; padding: 0; line-height: 24px; @media screen and (max-width: 768px) { font-size: 18px; line-height: 22px; } } .nextgen-gallery-onboarding-welcome-content p{ font-size: 16px; line-height: 1.5; margin-bottom: 20px; } a.nextgen-gallery-onboarding-wizard-back-btn{ text-decoration: none; color: #666; :active{ outline: none; } } a.nextgen-gallery-onboarding-wizard-back-btn:hover{ color: #666; } .nextgen-gallery-onboarding-wizard-primary-btn{ background-color: #282828; color: #fff; border: 0; border-radius: 4px; font-size: 14px; flex-shrink: 0; line-height: 1; cursor: pointer; text-decoration: none; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; height: 40px; transition: background-color .2s ease; position: relative; overflow: hidden; min-width: 140px; :active{ outline: none; } } .nextgen-gallery-onboarding-wizard-primary-btn:hover{ text-decoration: none; color: #fff; } /** Styles for disabled Button **/ .nextgen-gallery-onboarding-wizard-primary-btn.nextgen-gallery-disabled, .nextgen-gallery-onboarding-wizard-primary-btn.nextgen-gallery-disabled:hover{ background-color: #CCCCCC; color: #666; cursor: not-allowed; } .nextgen-gallery-email-error{ color: #ff0000; font-size: 13px; height: 25px; } .nextgen-gallery-onboarding-wizard-primary-btn.btn-large{ margin-top: 20px; padding: 0 30px; font-size: 16px; height: 48px; } /* Styles for Progress Bar */ .nextgen-gallery-onboarding-progressbar { position: relative; display: flex; align-items: center; justify-content: center; counter-reset: step; margin: 30px 0 0 0; .nextgen-gallery-onboarding-spacer{ width: 59px; border: 1px solid #DCDDE1; margin: 0 12px; } @media screen and (max-width: 768px) { .nextgen-gallery-onboarding-spacer { width: 30px; margin: 0 6px; } max-width: 100%; } } .nextgen-gallery-onboarding-progressbar::before, .nextgen-gallery-onboarding-progress { content: ""; position: absolute; top: 50%; transform: translateY(-50%); height: 4px; width: 100%; background-color: #dcdcdc; z-index: -1; } .nextgen-gallery-onboarding-progress { background-color: #9FBC1A; width: 0; transition: 0.3s; z-index: -1; } .nextgen-gallery-onboarding-progress-step { width: 16px; height: 16px; background-color: #dcdcdc; border-radius: 50%; display: flex; justify-content: center; align-items: center; } .nextgen-gallery-onboarding-progress-step::before { counter-increment: step; } .nextgen-gallery-onboarding-progress-step::after { position: absolute; top: calc(100% + 0.5rem); font-size: 0.85rem; color: #666; } .nextgen-gallery-onboarding-progress-step-active { background-color: #9FBC1A; color: #f3f3f3; } .nextgen-gallery-onboarding-form-step { display: none; transform-origin: top; animation: animate 0.5s; background-color: #fff; box-shadow: 0 2px 5px #0000000d; margin: 30px auto; max-width: 850px; } .nextgen-gallery-onboarding-form-step-active { display: block; } .nextgen-gallery-onboarding-wizard-intro { display: flex; flex-direction: column; align-items: center; } .nextgen-gallery-onboarding-wizard-logo { max-width: 339px; } .nextgen-gallery-onboarding-wizard-body { padding: 30px 60px; .steps { color: #8c8f9a; font-size: 16px; font-weight: 600; line-height: 24px; margin-bottom: 16px; } h2 { font-size: 20px; line-height: 22px; color: #333; font-weight: 600; } @media screen and (max-width: 768px) { padding: 30px 10px; } } .nextgen-gallery-onboarding-wizard-footer{ border-top: 1px solid #E8E8EB; padding: 20px 40px; display: flex; align-items: center; @media screen and (max-width: 768px) { padding: 10px 20px; } } .nextgen-gallery-onboarding-wizard-footer>* { margin-right: 16px; } .nextgen-gallery-onboarding-wizard-footer>*:last-child { margin-right: 0; } .nextgen-gallery-onboarding-wizard-footer .spacer { flex: 1 0 auto; } .nextgen-gallery-onboarding-close-and-exit a{ text-decoration: none; color: #666; } .nextgen-gallery-onboarding-close-and-exit a:hover { color: #666; } .nextgen-gallery-onboarding-wizard-pages { display: flex; flex-direction: column; align-items: center; } /** Fields **/ .nextgen-gallery-onboarding-settings-row.no-border { border: none; margin-bottom: 0; } .nextgen-gallery-onboarding-settings-row.no-margin { margin-bottom: 0; } .nextgen-gallery-onboarding-settings-row .settings-name .name.small-margin { margin-bottom: 5px; } .nextgen-gallery-onboarding-input-container { position: relative; width: 100%; clear:both; margin: 10px 0; } .nextgen-gallery-onboarding-input-container .nextgen-gallery-onboarding-input { width: 100%; } .nextgen-gallery-onboarding-settings-row { margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid #E8E8EB; .settings-name{ .name { font-weight: 600; font-size: 14px; line-height: 22px; display: flex; align-items: center; } } } .nextgen-gallery-onboarding-settings-row.no-padding{ padding-bottom: 0; } .nextgen-gallery-onboarding-settings-row .settings-name .name { font-weight: 600; font-size: 14px; line-height: 22px; display: flex; align-items: center; } .nextgen-gallery-onboarding-description{ font-size: 14px; line-height: 22px; margin: 0; } .nextgen-gallery-onboarding-input .nextgen-gallery-options { display: flex; flex-direction: row; flex-wrap: wrap; margin: 20px 0; } .nextgen-gallery-onboarding-input .nextgen-gallery-option{ display: flex; align-items: center; margin-bottom: 10px; width: 50%; @media screen and (max-width: 768px) { width: 100%; } } .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="radio"], .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="checkbox"] { margin-right: 10px; } .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="radio"] + label, .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="checkbox"] + label { font-size: 14px; line-height: 22px; } .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="radio"]:checked + label, .nextgen-gallery-onboarding-input .nextgen-gallery-option input[type="checkbox"]:checked + label { font-weight: 600; } .nextgen-gallery-onboarding-input input[type="text"], .nextgen-gallery-onboarding-input input[type="email"], .nextgen-gallery-onboarding-input input[type="password"], .nextgen-gallery-onboarding-input select { width: 100%; background-color: #fff; border: 1px solid #D0D1D7; border-radius: 3px; position: relative; overflow: hidden; margin: 0; padding: 9px 12px; font-size: 14px; line-height: 22px; } .nextgen-gallery-onboarding-form-step .width-20 { width: 13%; flex-direction: column; align-items: self-start; padding-top: 13px; margin-bottom: 0; @media screen and (max-width: 768px) { width: 100%; margin-bottom: 10px; } } .nextgen-gallery-onboarding-form-step .width-80 { width: 86%; flex-direction: column; align-items: flex-start; margin-bottom: 0; @media screen and (max-width: 768px) { width: 100%; padding-top: 0; input[type="email"]{ max-width: 90%; } } } .nextgen-gallery-options.email_opt_in{ @media screen and (max-width: 768px) { display: block; } } .nextgen-gallery-toggle { cursor: pointer; display: inline-block; } .nextgen-gallery-switch { display: inline-block; background: #ccc; border-radius: 18px; width: 32px; height: 18px; position: relative; vertical-align: middle; transition: background 0.25s; &:before, &:after { content: ""; } &:before { display: block; background: linear-gradient(to bottom, #fff 0%,#eee 100%); border-radius: 50%; box-shadow: 0 0 0 1px rgba(0,0,0,0.25); width: 16px; height: 16px; position: absolute; top: 1px; left: 1px; transition: left 0.25s; } .nextgen-gallery-toggle:hover &:before { background: linear-gradient(to bottom, #fff 0%,#fff 100%); box-shadow: 0 0 0 1px rgba(0,0,0,0.5); } } input[type='checkbox']:checked + .nextgen-gallery-switch { background: #9FBC1A; &:before { left: 15px; } } input#nextgen-gallery-tracking { position: absolute; visibility: hidden; } input[type='checkbox'] + .nextgen-gallery-checkbox { visibility: visible; } #general .nextgen-gallery-options.nextgen-gallery-checkbox{ @media screen and (max-width: 768px) { flex-wrap: nowrap; } } .nextgen-gallery-wizard-features .feature-grid{ border-bottom:1px solid #E8E8EB; padding-bottom:16px; margin-bottom:16px } .nextgen-gallery-wizard-features .feature-grid:last-child{ border-bottom:none; padding-bottom:0; margin-bottom:0 } .nextgen-gallery-wizard-features .feature-grid .settings-name{ color:#3c4043; } .nextgen-gallery-wizard-features .feature-grid .settings-name .name{ display:flex; align-items:center; font-weight:600 } [dir=ltr] .nextgen-gallery-wizard-features .feature-grid .settings-name .name .nextgen-gallery-pro-badge{ margin-left:12px } [dir=rtl] .nextgen-gallery-wizard-features .feature-grid .settings-name .name .nextgen-gallery-pro-badge{ margin-right:12px } .nextgen-gallery-wizard-features .feature-grid .settings-name .name+.nextgen-gallery-description-text{ margin-top:8px } .nextgen-gallery-wizard-features .feature-grid .settings-name .nextgen-gallery-description-text{ max-width:650px; color:#434960 } .nextgen-gallery-wizard-features .feature-grid .settings-name .nextgen-gallery-installs-text{ font-style:italic; margin-top:5px; font-size:12px; color:#434960 } .nextgen-gallery-wizard-features .plugins{ font-style:italic; max-width:650px; margin:16px auto 0; font-size:12px; text-align:center; color:#8c8f9a; line-height:1.5 } .nextgen-gallery-wizard-features .go-back a{ color:#434960; font-size:14px } .nextgen-gallery-checkbox{ display:inline-flex; align-items:center } .nextgen-gallery-checkbox.disabled,.nextgen-gallery-checkbox.no-clicks,.nextgen-gallery-checkbox.disabled .form-checkbox .fancy-checkbox,.nextgen-gallery-checkbox.no-clicks .form-checkbox .fancy-checkbox{ cursor:default } .nextgen-gallery-checkbox .form-checkbox-wrapper{ display:flex } [dir=ltr] .nextgen-gallery-checkbox .form-checkbox-wrapper{ margin-right:8px } [dir=rtl] .nextgen-gallery-checkbox .form-checkbox-wrapper{ margin-left:8px } .nextgen-gallery-checkbox.round .form-checkbox span{ border-radius:50% } .nextgen-gallery-checkbox.round .form-checkbox span:before{ border-radius:50% } .nextgen-gallery-checkbox.round:not(.medium) .form-checkbox{ width:24px; height:24px; } .nextgen-gallery-checkbox.round:not(.medium) .form-checkbox .fancy-checkbox svg{ width:12px; height:12px } .nextgen-gallery-checkbox.round:not(.medium) .form-checkbox span:before{ height:22px; width:22px; line-height:24px } .nextgen-gallery-checkbox .form-checkbox{ position:relative; display:inline-block; width:16px; height:16px; color:#fff; vertical-align:bottom; text-align:center } .nextgen-gallery-checkbox .form-checkbox input{ display:none } .nextgen-gallery-checkbox.no-clicks input:checked+.fancy-checkbox.blue{ background:#76992A; opacity: 0.4; } .nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox.blue{ background: #76992A; } .nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox.green{ background:#76992A; } .nextgen-gallery-checkbox .form-checkbox input:checked+.fancy-checkbox:before{ background:transparent; } .nextgen-gallery-checkbox .form-checkbox input:disabled+.fancy-checkbox{ background:#e8e8eb!important; border:1px solid #D0D1D7; cursor:default } .nextgen-gallery-checkbox .form-checkbox input:disabled+.fancy-checkbox svg{ color:#8c8f9a } .nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{ bottom:0; background:#e8e8eb } [dir=ltr] .nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{ left:0 } [dir=rtl] .nextgen-gallery-checkbox .form-checkbox input:not(:checked):disabled+.fancy-checkbox:before{ right:0 } .nextgen-gallery-checkbox .form-checkbox .fancy-checkbox svg{ color:#fff; width:10px; height:10px } .nextgen-gallery-checkbox .form-checkbox span{ position:absolute; cursor:pointer; top:0; left:0; right:0; bottom:0; background-color:#d0d1d7; transition:.2s; border-radius:3px; display:flex; align-items:center; justify-content:center } .nextgen-gallery-checkbox .form-checkbox span:before{ position:absolute; content:""; height:14px; width:14px; bottom:1px; background-color:#fff; transition:.2s; font-size:14px; line-height:16px; border-radius:2px } [dir=ltr] .nextgen-gallery-checkbox .form-checkbox span:before{ left:1px } [dir=rtl] .nextgen-gallery-checkbox .form-checkbox span:before{ right:1px } .nextgen-gallery-row { box-sizing: border-box; display: flex; flex: 0 1 auto; flex-direction: row; flex-wrap: wrap; } .nextgen-gallery-col.col-xs-11 { max-width: calc(91.6666666667% - 20px * .0833333333); flex-basis: calc(91.6666666667% - 20px * .0833333333) } .nextgen-gallery-col.col-xs-1 { max-width: calc(8.33% - 20px * .0833333333); flex-basis: calc(8.33% - 20px * .0833333333) } .nextgen-gallery-col.text-xs-left { text-align: left; } .nextgen-gallery-col.text-xs-right { text-align: right; } /* Step 4 */ .nextgen-gallery-wizard-license-key .license-cta-box { font-size: 14px; line-height: 22px; border-radius: 3px; background-color: rgb(55 153 59 / 12%); padding: 20px; margin: 20px 0; } .nextgen-gallery-wizard-license-key .license-cta-box>div:first-child { font-weight: 600; line-height: 1.4; } .nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row { margin-top: 12px; } .nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col { display: flex; align-items: center; } .nextgen-gallery-col.col-sm-6 { max-width: calc(50% - 20px * .5); flex-basis: calc(50% - 20px * .5); @media screen and (max-width: 768px) { max-width: calc(100% - 20px * 1); flex-basis: calc(100% - 20px * 1); } } .nextgen-gallery-col.col-sm-8 { max-width: calc(66.6666666667% - 20px * .3333333333); flex-basis: calc(66.6666666667% - 20px * .3333333333); @media screen and (max-width: 768px) { max-width: calc(100% - 20px * 1); flex-basis: calc(100% - 20px * 1); } } .nextgen-gallery-col.col-sm-4 { max-width: calc(33.3333333333% - 20px * .3333333333); flex-basis: calc(33.3333333333% - 20px * .3333333333) } .nextgen-gallery-col.col-sm-2{ max-width: calc(16.6666666667% - 20px * .1666666667); flex-basis: calc(16.6666666667% - 20px * .1666666667); @media screen and (max-width: 768px) { max-width: calc(40% - 20px * 1); flex-basis: calc(40% - 20px * 1); float: left; margin: 10px 20px 0 0; } } .nextgen-gallery-col.col-sm-1{ max-width: calc(3.3333333333% - 20px * .0833333333); flex-basis: calc(3.3333333333% - 20px * .0833333333); } .nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col svg { margin-right: 10px; } .nextgen-gallery-wizard-license-key .license-cta-box .nextgen-gallery-row .nextgen-gallery-col svg { width: 16px; height: 16px; color: #9FBC1A; } .nextgen-gallery-wizard-license-key, .nextgen-gallery-onboarding-step-5{ min-width: 850px; @media screen and (max-width: 768px) { min-width: 100%; } } .nextgen-gallery-onboarding-step-5{ @media screen and (max-width: 768px) { padding: 0 20px; max-width: 90%; min-width: 90%; .nextgen-gallery-onboarding-wizard-footer{ flex-direction: column-reverse; align-items: center; gap: 10px; } } } .btn-transparent{ background: transparent; color: #3C434ACC; border: 1px solid #3C434ACC; border-radius: 4px; font-size: 14px; flex-shrink: 0; line-height: 1; cursor: pointer; text-decoration: none; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; height: 40px; transition: background-color .2s ease; position: relative; overflow: hidden; outline: none; :hover{ outline: none; } } .nextgen-gallery-wizard-success { color: #141b38; padding-bottom: 40px; } .nextgen-gallery-wizard-success .actions > div { display: flex; align-items: center; } .nextgen-gallery-wizard-success .actions > div:not(.no-border) { border-bottom: 1px solid #e8e8eb; padding-bottom: 24px; margin-bottom: 24px; } .nextgen-gallery-wizard-success .actions > div .icon { min-width: 24px; } [dir="ltr"] .nextgen-gallery-wizard-success .actions > div .icon { margin-right: 16px; } [dir="rtl"] .nextgen-gallery-wizard-success .actions > div .icon { margin-left: 16px; } .nextgen-gallery-wizard-success .actions > div .icon svg { width: 24px; height: 24px; } .nextgen-gallery-wizard-success .actions > div .content { font-weight: 700; font-size: 14px; color: #141b38; flex: 1; } .nextgen-gallery-wizard-success .actions > div .content .social-button { color: #fff; } [dir="ltr"] .nextgen-gallery-wizard-success .actions > div .content .social-button { margin: 10px 10px 0 0; } [dir="rtl"] .nextgen-gallery-wizard-success .actions > div .content .social-button { margin: 10px 0 0 10px; } .nextgen-gallery-wizard-success .actions > div .content .social-button svg { width: 14px; height: 14px; } [dir="ltr"] .nextgen-gallery-wizard-success .actions > div .content .social-button svg { margin-right: 10px; } [dir="rtl"] .nextgen-gallery-wizard-success .actions > div .content .social-button svg { margin-left: 10px; } .nextgen-gallery-wizard-success .actions > div .content .social-button.facebook { background-color: #4064ac; } .nextgen-gallery-wizard-success .actions > div .content .social-button.twitter { background-color: #1da1f2; } .nextgen-gallery-wizard-success .actions > div .content .social-button.youtube { background-color: #d63e22; } .nextgen-gallery-wizard-success .actions > div:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; } .nextgen-gallery-wizard-success .nextgen-gallery-settings-row:last-child { border-bottom: none; margin-bottom: 0; } .nextgen-gallery-wizard-success .nextgen-gallery-settings-row.feature-grid .settings-name .name { font-size: 18px; } .nextgen-gallery-wizard-success .nextgen-gallery-settings-row.feature-grid .nextgen-gallery-col { display: flex; align-items: center; } .nextgen-gallery-wizard-success .go-back a { color: #434960; font-size: 14px; } .nextgen-gallery-wizard-success .cta { margin: 0 20px 40px; padding: 20px; border: 1px solid #e8e8eb; text-align: center; } .nextgen-gallery-wizard-success .cta .content { flex-direction: column; display: flex; align-items: center; justify-content: center; } .nextgen-gallery-wizard-success .cta .content .cta-header { font-size: 24px; font-weight: 700; line-height: 1.2; margin-bottom: 24px; margin-top: 20px; } .nextgen-gallery-wizard-success .cta .content .cta-description { line-height: 1.4; max-width: 630px; margin-bottom: 55px; } .nextgen-gallery-wizard-success .cta .content .nextgen-gallery-alert { width: 100%; } .nextgen-gallery-wizard-success .cta .content .feature-list { color: #141b38; font-size: 16px; width: 100%; max-width: 600px; margin-bottom: 50px; } .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col { display: flex; align-items: flex-start; margin: 2px 0; } .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check { color: #9FBC1A; width: 18px; min-width: 18px; min-height: 18px; } [dir="ltr"] .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check { margin-right: 10px; } [dir="rtl"] .nextgen-gallery-wizard-success .cta .content .feature-list .nextgen-gallery-col svg.nextgen-gallery-circle-check { margin-left: 10px; } .nextgen-gallery-wizard-success .cta .bonus-alert { margin: 24px auto; max-width: 650px; } #selected-add-ons .nextgen-gallery-col{ margin: 5px 0; } .nextgen-gallery-onboarding-input input[type="password"]#nextgen-gallery-settings-key { width: 92%; } .nextgen-gallery-pro-badge { height: 22px; border-radius: 3px; background: #e8e8eb; color: #666; font-size: 12px; line-height: 18px; font-weight: 600; display: inline-flex; padding: 0 4px; align-items: center; margin-left: 12px; } .tooltip-container svg.nextgen-gallery-circle-question-mark { width: 17px; height: 17px; color: #8c8f9a; cursor: pointer; } .tooltip-container { position: relative; display: inline-block; cursor: pointer; } .tooltip-text { visibility: hidden; width: 650px; background-color: #555; color: #fff; text-align: center; padding: 5px; border-radius: 6px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -325px; /* Half of the width to keep the tooltip centered */ opacity: 0; transition: opacity 0.3s; @media screen and (max-width: 768px) { width: 250px; margin-left: -250px; } } .tooltip-container:hover .tooltip-text { visibility: visible; opacity: 1; } .tooltip-text::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: #555 transparent transparent transparent; @media screen and (max-width: 768px) { margin-left: 116px; } } #license-key-message{ padding: 10px; margin: 10px 0; } .nextgen-gallery-error{ color: #333; background-color: #ffd2d2; border: 1px solid #e599a1; padding: 10px; margin: 10px 0; border-radius: 4px; } .nextgen-gallery-success{ color: #333; background-color: #d2ffd2; border: 1px solid #a1e599; padding: 10px; margin: 10px 0; border-radius: 4px; } .nextgen-gallery-onboarding-wizard .nextgen-gallery-button-dark:focus, .nextgen-gallery-onboarding-wizard .nextgen-gallery-button-dark:hover, .nextgen-gallery-onboarding-wizard-primary-btn:focus, .nextgen-gallery-onboarding-wizard-primary-btn:hover { background: #9FBC1A; border-color: #9FBC1A; color: #fff; box-shadow: none; } .spinner.nextgen-gallery-onboarding-spinner{ position: absolute; margin: 9px 10px 0; } .selected-plugins-names{ font-style: italic; max-width: fit-content; margin: 16px auto 0; font-size: 12px; text-align: center; color: #8c8f9a; line-height: 1.5; } .nextgen-gallery-onboarding-wizard .nextgen-desc{ font-style: italic; margin-top: 5px; font-size: 12px; color: #8c8f9a; } #ngg-pro-upsell{ background: #F7F8F7; padding: 7px; margin: 15px 0; border: 1px solid #ddd; border-radius: 5px; width: 100%; a{ color:#9FBC1A; text-decoration: underline; } } PK!V;%>%>#assets/js/dist/onboarding-wizard.jsnu[const prevBtns = document.querySelectorAll(".nextgen-gallery-onboarding-btn-prev"); const nextBtns = document.querySelectorAll(".nextgen-gallery-onboarding-btn-next"); const progress = document.querySelector(".nextgen-gallery-onboarding-progress"); const formSteps = document.querySelectorAll(".nextgen-gallery-onboarding-form-step"); const progressSteps = document.querySelectorAll(".nextgen-gallery-onboarding-progress-step"); let formStepsNum = 0; /* Event Listener for Next Button. */ nextBtns.forEach((btn) => { btn.addEventListener("click", () => { // Get data-next attribute from the button and set it as stepsNum. if(formStepsNum === 0){ saveFormData(); }else { let nextStep = btn.getAttribute("data-next"); if(nextStep){ formStepsNum = nextStep; updateFormSteps(); updateProgressbar(); } } }); }); /* Event Listener for Back Button. */ prevBtns.forEach((btn) => { btn.addEventListener("click", () => { // Get data-prev attribute from the button and set it as stepsNum. let prevStep = btn.getAttribute("data-prev"); if(prevStep){ formStepsNum = prevStep; updateFormSteps(); updateProgressbar(); } }); }); /* Updates Form Items */ function updateFormSteps() { formSteps.forEach((formStep) => { formStep.classList.contains("nextgen-gallery-onboarding-form-step-active") && formStep.classList.remove("nextgen-gallery-onboarding-form-step-active") }) formSteps[formStepsNum].classList.add("nextgen-gallery-onboarding-form-step-active"); // Show selected plugins div only on step 2. if(formStepsNum === "2"){ selectedPluginsdiv.style.display = "block"; }else{ selectedPluginsdiv.style.display = "none"; } } /* Updates Progress Bar */ function updateProgressbar() { progressSteps.forEach((progressStep, index) => { let spacer = progressStep.previousElementSibling; if(index <= formStepsNum){ progressStep.classList.add('nextgen-gallery-onboarding-progress-step-active'); spacer.style.borderColor = '#a0bc1a'; } else { progressStep.classList.remove('nextgen-gallery-onboarding-progress-step-active') spacer.style.borderColor = '#DCDDE1' } }) progress.style.width = ((formStepsNum) / (progressSteps.length - 1)) * 100 + "%"; } // when nextgen-gallery-onboarding-back-to-welcome or nextgen-gallery-get-started-btn is clicked, show and hide the onboarding wizard pages. const backToWelcomeBtn = document.querySelector("#nextgen-gallery-onboarding-back-to-welcome"); const getStartedBtn = document.querySelector("#nextgen-gallery-get-started-btn"); backToWelcomeBtn.addEventListener("click", () => { document.querySelector(".nextgen-gallery-onboarding-wizard-intro").style = {display: "flex"}; document.querySelector('.nextgen-gallery-onboarding-wizard-wrapper').style = 'height: 100vh'; document.querySelector(".nextgen-gallery-onboarding-wizard-pages").style.display = "none"; }); getStartedBtn.addEventListener("click", () => { document.querySelector(".nextgen-gallery-onboarding-wizard-intro").style.display = "none"; document.querySelector('.nextgen-gallery-onboarding-wizard-wrapper').style = 'height: auto'; document.querySelector(".nextgen-gallery-onboarding-wizard-pages").style = {display: "flex"}; }); // Disable click on no-clickable checkboxes with class no-clicks. const noClicks = document.querySelectorAll(".no-clicks"); noClicks.forEach((noClick) => { noClick.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation() }); }); // set height on page load. document.querySelector('.nextgen-gallery-onboarding-wizard-wrapper').style = 'height: 85vh'; function isValidEmail(email) { let emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } // Check if email_address is valid. const email = document.querySelector("#email_address"); const saveOptIn = document.querySelector("#save-opt-in"); let emailError = document.querySelector('.nextgen-gallery-email-error'); emailError.innerHTML = ""; const setEmailValid = () => { emailError.innerHTML = ""; saveOptIn.disabled = false; saveOptIn.classList.remove("nextgen-gallery-disabled"); } const setEmailInvalid = () => { emailError.innerHTML = "Please enter a valid email address."; saveOptIn.disabled = true; saveOptIn.classList.add("nextgen-gallery-disabled"); } // If the user opt in for email, then check if the email is valid or not empty. let email_opt_in = document.querySelector("#email_opt_in"); email_opt_in.addEventListener("change", (e) => { emailValidation(); }); let emailValidation = () => { // If email opt in is checked and email is invalid, show error message. if( ( email.value === "" || ! isValidEmail(email.value) ) && email_opt_in.checked ){ setEmailInvalid(); } // If email opt in is not checked and email is invalid, show error message. if( email.value !== "" && ! isValidEmail(email.value) && ! email_opt_in.checked ){ setEmailInvalid(); } // If email opt in is not checked and email is valid or empty, remove the error message. if( ( email.value !== "" && isValidEmail(email.value) ) || email.value === "" && ! email_opt_in.checked){ setEmailValid(); } } email.addEventListener("input", (e) => { emailValidation(); }); // Show others option when something else is selected for Drip. // if user_type radio buttons are not checked disable the save button. const userTypes = document.querySelectorAll("input[name='eow[_user_type]']"); userTypes.forEach((userType) => { userType.addEventListener("change", (e) => { if(e.target.value === "other"){ document.querySelector("#others_div").style.display = "block"; document.querySelector("#others").required = true; } else { document.querySelector("#others_div").style.display = "none"; document.querySelector("#others").required = false; } if(e.target.value === "online-store"){ document.querySelector("#ngg-pro-upsell").style.display = "block"; } else { document.querySelector("#ngg-pro-upsell").style.display = "none"; } let isAnyUserTypeChecked = Array.from(userTypes).some(radio => radio.checked); if(!isAnyUserTypeChecked){ saveOptIn.disabled = true; saveOptIn.classList.add("nextgen-gallery-disabled"); } else { saveOptIn.disabled = false; saveOptIn.classList.remove("nextgen-gallery-disabled"); } }); }); function saveFormData() { // post form data via WP admin-ajax. nggOnboardingWizard.ajaxUrl, const form = document.querySelector("#nextgen-gallery-general"); // Disable form submit. form.addEventListener("submit", async(e) => { e.preventDefault(); e.stopPropagation(); const formData = new FormData(form); formData.append("action", "save_onboarding_data"); formData.append("nonce", nggOnboardingWizard.nonce); try{ const response = await fetch(nggOnboardingWizard.ajaxUrl, { method: "POST", body: formData }); const data = await response.json(); if(data.success){ formStepsNum = 1; updateFormSteps(); updateProgressbar(); } else { formStepsNum = 0; console.log("Error saving the data"); } } catch(error){ formStepsNum = 0; console.log("Error:", error); } }); } // Get all the checkboxes with the class feature. const features = document.querySelectorAll(".feature"); let selectedFeatures = []; features.forEach((feature) => { feature.addEventListener("click", (e) => { if(e.target.checked){ if(!selectedFeatures.includes(e.target.value)){ selectedFeatures.push(e.target.value); } document.querySelector(`#${e.target.value}-desc`).style.display = "block"; } else { selectedFeatures = selectedFeatures.filter((feature) => feature !== e.target.value); document.querySelector(`#${e.target.value}-desc`).style.display = "none"; } }); }); // Save selected features to the database. const saveFeaturesBtn = document.querySelector("#nextgen-gallery-save-features"); saveFeaturesBtn.addEventListener("click", () => { // if user has not selected any features, return. if(selectedFeatures.length === 0){ return; } let requestData = { action: "save_selected_addons", addons:selectedFeatures, nonce: nggOnboardingWizard.nonce, }; fetch(nggOnboardingWizard.ajaxUrl, { method:"post", headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams(requestData).toString(), }).then((response) => response.json()) .then((data) => { if(data.success){ // Show success message. } }) .catch((error) => { console.error("Error:", error); }); displaySelectedAddons(); }); // Get all the checkboxes with the class recommended. const recommendedPlugins = document.querySelectorAll(".recommended"); let selectedRecommended = []; let selectedPluginsdiv = document.querySelector(".selected-plugins-names"); let selectedPluginsNames =[]; recommendedPlugins.forEach((recommended) => { recommended.addEventListener("click", (e) => { if(e.target.checked){ selectedRecommended.push(e.target.value); selectedPluginsNames.push(e.target.getAttribute("data-name")); document.querySelector(`#${e.target.value}-desc`).style.display = "block"; } else { selectedRecommended = selectedRecommended.filter((recommended) => recommended !== e.target.value); selectedPluginsNames = selectedPluginsNames.filter((name) => name !== e.target.getAttribute("data-name")); document.querySelector(`#${e.target.value}-desc`).style.display = "none"; } displaySelectedPlugins(); }); }); // Display selected recommended plugins based on selection. let displaySelectedPlugins = () => { selectedPluginsdiv.innerHTML = ""; if(selectedPluginsNames.length === 0){ // check if there are any selected recommended plugins. recommendedPlugins.forEach((recommended) => { // get the checked recommended plugins that are not in the selectedRecommended array. if(recommended.checked && !selectedRecommended.includes(recommended.value) && !nggOnboardingWizard.plugins_list.includes(recommended.value)){ selectedPluginsNames.push(recommended.getAttribute("data-name")); document.querySelector(`#${recommended.value}-desc`).style.display = "block"; } }); } if(selectedPluginsNames.length > 0){ selectedPluginsdiv.innerHTML = "The following plugins will be installed: "; } selectedPluginsNames.forEach((name) => { let plugin = document.createElement("span"); plugin.innerHTML = `${name}`; selectedPluginsdiv.appendChild(plugin); // Append comma after each plugin name but not after the last plugin name. if(selectedPluginsNames.indexOf(name) !== selectedPluginsNames.length - 1){ let comma = document.createElement("span"); comma.innerHTML = ", "; selectedPluginsdiv.appendChild(comma); } }); } displaySelectedPlugins(); // Install the selected recommended plugins. const installBtn = document.querySelector("#nextgen-gallery-install-recommended"); installBtn.addEventListener("click", () => { if(selectedRecommended.length === 0){ // check if there are any selected recommended plugins. recommendedPlugins.forEach((recommended) => { // get the checked recommended plugins that are not in the selectedRecommended array. if(recommended.checked && !selectedRecommended.includes(recommended.value)){ selectedRecommended.push(recommended.value); } }); } let requestData = { action: "install_recommended_plugins", plugins:selectedRecommended, nonce: nggOnboardingWizard.nonce, }; fetch(nggOnboardingWizard.ajaxUrl, { method:"post", headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams(requestData).toString(), }).then((response) => response.json()) .then((data) => { if(data.success){ // Show success message. } }) .catch((error) => { console.error("Error:", error); }); }); // Insert selected addons to #selected-add-ons div. let tickSvg = ` `; let selectedAddons = document.querySelector("#selected-add-ons"); function displaySelectedAddons() { // Find all the selected-addon-item divs and remove them, to avoid duplicates. let selectedAddonItems = document.querySelectorAll(".selected-addon-item"); selectedAddonItems.forEach((item) => { item.remove(); }); // Find all checkbox with class .feature and check if they are checked. let nggFeatures = document.querySelectorAll(".feature"); nggFeatures.forEach((feature) => { if(feature.checked){ const addon = document.createElement("div"); addon.classList.add("nextgen-gallery-col", "col-sm-6", "col-xs-12", "nextgen-gallery-col", "text-xs-left","selected-addon-item"); // Get data-name attribute from the checkbox by its name. let addonName = document.querySelector(`input[name="${feature.name}"]`).getAttribute("data-name"); if(addonName !== "") { addon.innerHTML = `${tickSvg}${addonName}` selectedAddons.appendChild(addon); } } }); } // Verify license key. const verifyBtn = document.querySelector(".nextgen-gallery-verify-submit"); const successMessage = document.querySelector("#license-key-message"); const installAddonsBtn = document.querySelector("#install-nextgen-gallery-addons-btn"); let loadingSpinner = document.querySelector(".nextgen-gallery-onboarding-spinner"); verifyBtn.addEventListener("click", (e) => { e.preventDefault(); // Show spinner. loadingSpinner.style.visibility = "visible"; verifyBtn.classList.add("nextgen-gallery-disabled"); // disable the continue button. installAddonsBtn.disabled = true; installAddonsBtn.classList.add("nextgen-gallery-disabled"); successMessage.classList.remove("nextgen-gallery-success", "nextgen-gallery-error"); successMessage.innerHTML = ""; let toggleButtonsVisibility = () => { loadingSpinner.style.visibility = "hidden"; verifyBtn.disabled = false; installAddonsBtn.disabled = false; installAddonsBtn.classList.remove("nextgen-gallery-disabled"); verifyBtn.classList.remove("nextgen-gallery-disabled"); } let licenseKey = document.getElementById('nextgen-gallery-settings-key').value; if(licenseKey === ''){ successMessage.classList.add("nextgen-gallery-error"); successMessage.innerHTML = "Please enter your license key."; toggleButtonsVisibility(); return; } let requestData = { action: 'ngg_plugin_verify_license_key', 'nextgen-gallery-license-key': licenseKey, nonce: nggOnboardingWizard.nonce, }; fetch(nggOnboardingWizard.ajaxUrl, { method:"post", headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams(requestData).toString(), }).then((response) => response.json()) .then((data) => { if(data.success){ successMessage.classList.add("nextgen-gallery-success"); successMessage.innerHTML = data.data; toggleButtonsVisibility(); }else{ successMessage.classList.add("nextgen-gallery-error"); successMessage.innerHTML = data.data ?? data.error; toggleButtonsVisibility(); } }) .catch((error) => { successMessage.classList.add("nextgen-gallery-error"); successMessage.innerHTML = data.data; toggleButtonsVisibility(); console.log("Error:", error); }); }); // Show body content once it is loaded. let domReady = (cb) => { document.readyState === 'interactive' || document.readyState === 'complete' ? cb() : document.addEventListener('DOMContentLoaded', cb); }; domReady(() => { // Display body when DOM is loaded document.body.style.visibility = 'visible'; }); PK!T5LLassets/js/dist/admin.jsnu[import Swal from 'sweetalert2'; /** * Handles: * - Copy to Clipboard functionality * - Dismissable Notices * * @since 1.5.0 */ (function($, window, document, nextgen_gallery_admin ) { let nextgen_notifications; window.nextgen_notifications = nextgen_notifications = { init() { var app = this; app.$drawer = $( '#nextgen-notifications-drawer' ); app.find_elements(); app.init_open(); app.init_close(); app.init_dismiss(); app.init_view_switch(); app.update_count( app.active_count ); }, should_init() { var app = this; return app.$drawer.length > 0; }, find_elements() { var app = this; app.$open_button = $( '#nextgen-notifications-button' ); app.$count = app.$drawer.find( '#nextgen-notifications-count' ); app.$dismissed_count = app.$drawer.find( '#nextgen-notifications-dismissed-count' ); app.active_count = app.$open_button.data( 'count' ) ? app.$open_button.data( 'count' ) : 0; app.dismissed_count = app.$open_button.data( 'dismissed' ); app.$body = $( 'body' ); app.$dismissed_button = $( '#nextgen-notifications-show-dismissed' ); app.$active_button = $( '#nextgen-notifications-show-active' ); app.$active_list = $( '.nextgen-notifications-list .nextgen-notifications-active' ); app.$dismissed_list = $( '.nextgen-notifications-list .nextgen-notifications-dismissed' ); app.$dismiss_all = $( '#nextgen-dismiss-all' ); app.$update_nav_count = $( '.ngg-menu-notification-indicator' ); }, update_count( count ) { var app = this; app.$open_button.data( 'count', count ).attr( 'data-count', count ); if ( 0 === count ) { app.$open_button.removeAttr( 'data-count' ); app.$update_nav_count.hide('slow').html(''); } app.$count.text( count ); if ( count > 0 ) { app.$update_nav_count.show('slow').html( count ); } app.dismissed_count += Math.abs( count - app.active_count ); app.active_count = count; app.$dismissed_count.text( app.dismissed_count ); if ( 0 === app.active_count ) { app.$dismiss_all.hide(); } }, init_open() { var app = this; app.$open_button.on( 'click', function ( e ) { e.preventDefault(); app.$body.addClass( 'nextgen-notifications-open' ); } ); }, init_close() { var app = this; app.$body.on( 'click', '.nextgen-notifications-close, .nextgen-notifications-overlay', function ( e ) { e.preventDefault(); app.$body.removeClass( 'nextgen-notifications-open' ); } ); }, init_dismiss() { var app = this; app.$drawer.on( 'click', '.nextgen-notification-dismiss', function ( e ) { e.preventDefault(); const id = $( this ).data( 'id' ); app.dismiss_notification( id ); if ( 'all' === id ) { app.move_to_dismissed( app.$active_list.find( 'li' ) ); app.update_count( 0 ); return; } app.move_to_dismissed( $( this ).closest( 'li' ) ); app.update_count( app.active_count - 1 ); } ); }, move_to_dismissed( element ) { var app = this; element.slideUp( function () { $( this ).prependTo( app.$dismissed_list ).show(); } ); }, dismiss_notification( id ) { var app = this; return $.post( ajaxurl, { action: 'nextgen_notification_dismiss', nonce: nextgen_gallery_admin.dismiss_notification_nonce, id: id, } ); }, init_view_switch() { var app = this; app.$dismissed_button.on( 'click', function ( e ) { e.preventDefault(); app.$drawer.addClass( 'show-dismissed' ); } ); app.$active_button.on( 'click', function ( e ) { e.preventDefault(); app.$drawer.removeClass( 'show-dismissed' ); } ); } }; // DOM ready $(function() { nextgen_notifications.init(); }); })(jQuery, window, document, nextgen_gallery_admin ); PK!Yassets/js/dist/about.jsnu[(function ($, nextgen_about) { $(function () { $('.nextgen-am-plugins-wrap').on( 'click', '.nextgen-am-plugins-install', function (e) { e.preventDefault(); var $this = $(this), url = $this.data('url'), basename = $this.data('basename'); spinner = $this.parent().find('.spinner'), message = $(this) .parent() .parent() .find('.nextgen-am-plugins-status'); var install_opts = { url: nextgen_about.ajax, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'nextgen_install_am_plugin', nonce: nextgen_about.install_nonce, basename: basename, download_url: url, }, success: function (response) { $this.text(nextgen_about.deactivate) .removeClass('nextgen-am-plugins-install') .addClass('nextgen-am-plugins-deactivate'); $(message).text(nextgen_about.active); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together spinner.css('visibility', 'hidden'); heading.html( [ first_part, ' ', last_word, '', ].join(''), ); // Proc }, error: function (xhr, textStatus, e) { console.log(e); }, }; console.log(spinner); spinner.css('visibility', 'visible'); $.ajax(install_opts); }, ); $('.nextgen-am-plugins-wrap').on( 'click', '.nextgen-am-plugins-activate', function (e) { e.preventDefault(); var $this = $(this), url = $this.data('url'), basename = $this.data('basename'), spinner = $this.parent().find('.spinner'), message = $(this) .parent() .parent() .find('.nextgen-am-plugins-status'); var activate_opts = { url: nextgen_about.ajax, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'nextgen_activate_am_plugin', nonce: nextgen_about.activate_nonce, basename: basename, download_url: url, }, success: function (response) { $this.text(nextgen_about.deactivate) .removeClass('nextgen-am-plugins-activate') .addClass('nextgen-am-plugins-deactivate'); $(message).text(nextgen_about.active); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together spinner.css('visibility', 'hidden'); heading.html( [ first_part, ' ', last_word, '', ].join(''), ); location.reload(true); }, error: function (xhr, textStatus, e) { console.log(e); }, }; console.log(spinner); spinner.css('visibility', 'visible'); $.ajax(activate_opts); }, ); $('.nextgen-am-plugins-wrap').on( 'click', '.nextgen-am-plugins-deactivate', function (e) { e.preventDefault(); var $this = $(this), url = $this.data('url'), basename = $this.data('basename'), spinner = $this.parent().find('.spinner'), message = $(this) .parent() .parent() .find('.nextgen-am-plugins-status'); var deactivate_opts = { url: nextgen_about.ajax, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'nextgen_deactivate_am_plugin', nonce: nextgen_about.deactivate_nonce, basename: basename, download_url: url, }, success: function (response) { $this.text(nextgen_about.activate) .removeClass('nextgen-am-plugins-deactivate') .addClass('nextgen-am-plugins-activate'); $(message).text(nextgen_about.inactive); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together spinner.css('visibility', 'hidden'); heading.html( [ first_part, ' ', last_word, '', ].join(''), ); location.reload(true); }, error: function (xhr, textStatus, e) { console.log(e); }, }; console.log(spinner); spinner.css('visibility', 'visible'); $.ajax(deactivate_opts); }, ); }); })(jQuery, nextgen_about); PK!r{55assets/js/min/admin-min.jsnu[(()=>{var n={455:function(t){if(t.exports=function(){"use strict";function i(t){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol")i=function(t){return typeof t};else i=function(t){return t&&typeof Symbol==="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};return i(t)}function q(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function M(t,e){for(var n=0;ne)return 1;else if(t1&&arguments[1]!==undefined?arguments[1]:"flex";e.style.display=n},O=function t(e){e.style.display="none"},jt=function t(e,n,o,a){var i=e.querySelector(n);if(i)i.style[o]=a},zt=function t(e,n,o){n?P(e,o):O(e)},E=function t(e){return!!(e&&(e.offsetWidth||e.offsetHeight||e.getClientRects().length))},Dt=function t(){return!E(b())&&!E(v())&&!E(y())},qt=function t(e){return!!(e.scrollHeight>e.clientHeight)},Mt=function t(e){var n=window.getComputedStyle(e);var o=parseFloat(n.getPropertyValue("animation-duration")||"0");var a=parseFloat(n.getPropertyValue("transition-duration")||"0");return o>0||a>0},$t=function t(e,n){if(typeof e.contains==="function")return e.contains(n)},It=function t(e){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var o=yt();if(E(o)){if(n){o.style.transition="none";o.style.width="100%"}setTimeout(function(){o.style.transition="width ".concat(e/1e3,"s linear");o.style.width="0%"},10)}},Ht=function t(){var e=yt();var n=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition");e.style.width="100%";var o=parseInt(window.getComputedStyle(e).width);var a=parseInt(n/o*100);e.style.removeProperty("transition");e.style.width="".concat(a,"%")},Vt=function t(){return typeof window==="undefined"||typeof document==="undefined"},Nt='\n

\n').replace(/(^|\n)\s*/g,""),Rt=function t(){var e=w();if(!e)return false;e.parentNode.removeChild(e);A([document.documentElement,document.body],[p["no-backdrop"],p["toast-shown"],p["has-column"]]);return true},Ut,S=function t(e){if(D.isVisible()&&Ut!==e.target.value)D.resetValidationMessage();Ut=e.target.value},Ft=function t(){var e=g();var n=B(e,p.input);var o=B(e,p.file);var a=e.querySelector(".".concat(p.range," input"));var i=e.querySelector(".".concat(p.range," output"));var r=B(e,p.select);var s=e.querySelector(".".concat(p.checkbox," input"));var l=B(e,p.textarea);n.oninput=S;o.onchange=S;r.onchange=S;s.onchange=S;l.oninput=S;a.oninput=function(t){S(t);i.value=a.value};a.onchange=function(t){S(t);a.nextSibling.value=a.value}},Yt=function t(e){return typeof e==="string"?document.querySelector(e):e},Zt=function t(e){var n=h();n.setAttribute("role",e.toast?"alert":"dialog");n.setAttribute("aria-live",e.toast?"polite":"assertive");if(!e.toast)n.setAttribute("aria-modal","true")},Wt=function t(e){if(window.getComputedStyle(e).direction==="rtl")C(w(),p.rtl)},Kt=function t(e){var n=Rt();if(Vt()){u("SweetAlert2 requires document to initialize");return}var o=document.createElement("div");o.className=p.container;if(n)C(o,p["no-transition"]);k(o,Nt);var a=Yt(e.target);a.appendChild(o);Zt(e);Wt(a);Ft()},Xt=function t(e,n){if(e instanceof HTMLElement)n.appendChild(e);else if(i(e)==="object")Qt(e,n);else if(e)k(n,e)},Qt=function t(e,n){if(e.jquery)Jt(n,e);else k(n,e.toString())},Jt=function t(e,n){e.textContent="";if(0 in n)for(var o=0;o in n;o++)e.appendChild(n[o].cloneNode(true));else e.appendChild(n.cloneNode(true))},Gt=function(){if(Vt())return false;var t=document.createElement("div");var e={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&typeof t.style[n]!=="undefined")return e[n];return false}(),te=function t(){var e=document.createElement("div");e.className=p["scrollbar-measure"];document.body.appendChild(e);var n=e.getBoundingClientRect().width-e.clientWidth;document.body.removeChild(e);return n},ee=function t(e,n){var o=gt();var a=ht();var i=b();var r=v();var s=y();if(!n.showConfirmButton&&!n.showDenyButton&&!n.showCancelButton)O(o);x(o,n,"actions");oe(i,"confirm",n);oe(r,"deny",n);oe(s,"cancel",n);ne(i,r,s,n);if(n.reverseButtons){o.insertBefore(s,a);o.insertBefore(r,a);o.insertBefore(i,a)}k(a,n.loaderHtml);x(a,n,"loader")};function ne(t,e,n,o){if(!o.buttonsStyling)return A([t,e,n],p.styled);C([t,e,n],p.styled);if(o.confirmButtonColor)t.style.backgroundColor=o.confirmButtonColor;if(o.denyButtonColor)e.style.backgroundColor=o.denyButtonColor;if(o.cancelButtonColor)n.style.backgroundColor=o.cancelButtonColor}function oe(t,e,n){zt(t,n["show".concat(X(e),"Button")],"inline-block");k(t,n["".concat(e,"ButtonText")]);t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]);t.className=p[e];x(t,n,"".concat(e,"Button"));C(t,n["".concat(e,"ButtonClass")])}function ae(t,e){if(typeof e==="string")t.style.background=e;else if(!e)C([document.documentElement,document.body],p["no-backdrop"])}function ie(t,e){if(e in p)C(t,p[e]);else{c('The "position" parameter is not valid, defaulting to "center"');C(t,p.center)}}function re(t,e){if(e&&typeof e==="string"){var n="grow-".concat(e);if(n in p)C(t,p[n])}}var se=function t(e,n){var o=w();if(!o)return;ae(o,n.backdrop);if(!n.backdrop&&n.allowOutsideClick)c('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');ie(o,n.position);re(o,n.grow);x(o,n,"container");var a=document.body.getAttribute("data-swal2-queue-step");if(a){o.setAttribute("data-queue-step",a);document.body.removeAttribute("data-swal2-queue-step")}},_={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},le=["input","file","range","select","radio","checkbox","textarea"],ce=function t(e,o){var a=g();var n=_.innerParams.get(e);var i=!n||o.input!==n.input;le.forEach(function(t){var e=p[t];var n=B(a,e);fe(t,o.inputAttributes);n.className=e;if(i)O(n)});if(o.input){if(i)ue(o);pe(o)}},ue=function t(e){if(!a[e.input])return u('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var n=he(e.input);var o=a[e.input](n,e);P(o);setTimeout(function(){_t(o)})},de=function t(e){for(var n=0;na)h().style.width="".concat(e,"px");else h().style.width=null};new MutationObserver(e).observe(n,{attributes:true,attributeFilter:["style"]})}return n},function t(e,n){var o=dt();x(o,n,"htmlContainer");if(n.html){Xt(n.html,o);P(o,"block")}else if(n.text){o.textContent=n.text;P(o,"block")}else O(o);ce(e,n);x(g(),n,"content")}),be=function t(e,n){var o=vt();zt(o,n.footer);if(n.footer)Xt(n.footer,o);x(o,n,"footer")},ve=function t(e,n){var o=kt();k(o,n.closeButtonHtml);x(o,n,"closeButton");zt(o,n.showCloseButton);o.setAttribute("aria-label",n.closeButtonAriaLabel)},ye=function t(e,n){var o=_.innerParams.get(e);var a=ct();if(o&&n.icon===o.icon){Ce(a,n);ke(a,n);return}if(!n.icon&&!n.iconHtml)return O(a);if(n.icon&&Object.keys(m).indexOf(n.icon)===-1){u('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"'));return O(a)}P(a);Ce(a,n);ke(a,n);C(a,n.showClass.icon)},ke=function t(e,n){for(var o in m)if(n.icon!==o)A(e,m[o]);C(e,m[n.icon]);Ae(e,n);xe();x(e,n,"icon")},xe=function t(){var e=h();var n=window.getComputedStyle(e).getPropertyValue("background-color");var o=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(var a=0;a\n \n
\n
\n ');else if(n.icon==="error")k(e,'\n \n \n \n \n ');else{var o={question:"?",warning:"!",info:"i"};k(e,Be(o[n.icon]))}},Ae=function t(e,n){if(!n.iconColor)return;e.style.color=n.iconColor;e.style.borderColor=n.iconColor;for(var o=0,a=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];o').concat(e,"")},Pe=function t(e,n){var o=ft();if(!n.imageUrl)return O(o);P(o,"");o.setAttribute("src",n.imageUrl);o.setAttribute("alt",n.imageAlt);Lt(o,"width",n.imageWidth);Lt(o,"height",n.imageHeight);o.className=p.image;x(o,n,"image")},T=[],Oe,Ee=function t(){return w()&&w().getAttribute("data-queue-step")},Se,_e,Te=function t(e){var n=document.createElement("li");C(n,p["progress-step"]);k(n,e);return n},Le=function t(e){var n=document.createElement("li");C(n,p["progress-step-line"]);if(e.progressStepsDistance)n.style.width=e.progressStepsDistance;return n},je=function t(e,a){var i=pt();if(!a.progressSteps||a.progressSteps.length===0)return O(i);P(i);i.textContent="";var r=parseInt(a.currentProgressStep===undefined?Ee():a.currentProgressStep);if(r>=a.progressSteps.length)c("Invalid currentProgressStep parameter, it should be less than progressSteps.length "+"(currentProgressStep like JS arrays starts from 0)");a.progressSteps.forEach(function(t,e){var n=Te(t);i.appendChild(n);if(e===r)C(n,p["active-progress-step"]);if(e!==a.progressSteps.length-1){var o=Le(a);i.appendChild(o)}})},ze=function t(e,n){var o=ut();zt(o,n.title||n.titleText,"block");if(n.title)Xt(n.title,o);if(n.titleText)o.innerText=n.titleText;x(o,n,"title")},De=function t(e,n){var o=bt();x(o,n,"header");je(e,n);ye(e,n);Pe(e,n);ze(e,n);ve(e,n)},qe=function t(e,n){var o=w();var a=h();if(n.toast){Lt(o,"width",n.width);a.style.width="100%"}else Lt(a,"width",n.width);Lt(a,"padding",n.padding);if(n.background)a.style.background=n.background;O(mt());Me(a,n)},Me=function t(e,n){e.className="".concat(p.popup," ").concat(E(e)?n.showClass.popup:"");if(n.toast){C([document.documentElement,document.body],p["toast-shown"]);C(e,p.toast)}else C(e,p.modal);x(e,n,"popup");if(typeof n.customClass==="string")C(e,n.customClass);if(n.icon)C(e,p["icon-".concat(n.icon)])},$e=function t(e,n){qe(e,n);se(e,n);De(e,n);ge(e,n);ee(e,n);be(e,n);if(typeof n.didRender==="function")n.didRender(h());else if(typeof n.onRender==="function")n.onRender(h())},Ie,He=function t(){return b()&&b().click()},Ve,Ne;function Re(){var t=this;for(var e=arguments.length,n=new Array(e),o=0;o0&&arguments[0]!==undefined?arguments[0]:"data-swal-template";nn[t]=this;if(!en){document.body.addEventListener("click",an);en=true}}var an=function t(e){for(var n=e.target;n&&n!==document;n=n.parentNode)for(var o in nn){var a=n.getAttribute(o);if(a){nn[o].fire({template:a});return}}},j={title:"",titleText:"",text:"",html:"",footer:"",icon:undefined,iconColor:undefined,iconHtml:undefined,template:undefined,toast:false,animation:true,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:true,heightAuto:true,allowOutsideClick:true,allowEscapeKey:true,allowEnterKey:true,stopKeydownPropagation:true,keydownListenerCapture:false,showConfirmButton:true,showDenyButton:false,showCancelButton:false,preConfirm:undefined,preDeny:undefined,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:undefined,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:undefined,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:undefined,buttonsStyling:true,reverseButtons:false,focusConfirm:true,focusDeny:false,focusCancel:false,returnFocus:true,showCloseButton:false,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:false,showLoaderOnDeny:false,imageUrl:undefined,imageWidth:undefined,imageHeight:undefined,imageAlt:"",timer:undefined,timerProgressBar:false,width:undefined,padding:undefined,background:undefined,input:undefined,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:true,inputAttributes:{},inputValidator:undefined,returnInputValueOnDeny:false,validationMessage:undefined,grow:false,position:"center",progressSteps:[],currentProgressStep:undefined,progressStepsDistance:undefined,onBeforeOpen:undefined,onOpen:undefined,willOpen:undefined,didOpen:undefined,onRender:undefined,didRender:undefined,onClose:undefined,onAfterClose:undefined,willClose:undefined,didClose:undefined,onDestroy:undefined,didDestroy:undefined,scrollbarPadding:true},rn=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],sn={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},ln=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],cn=function t(e){return Object.prototype.hasOwnProperty.call(j,e)},un,dn=function t(e){return sn[e]},fn=function t(e){if(!cn(e))c('Unknown parameter "'.concat(e,'"'))},pn=function t(e){if(ln.indexOf(e)!==-1)c('The parameter "'.concat(e,'" is incompatible with toasts'))},mn=function t(e){if(dn(e))tt(e,dn(e))},wn=function t(e){for(var n in e){fn(n);if(e.toast)pn(n);mn(n)}},hn=Object.freeze({isValidParameter:cn,isUpdatableParameter:function t(e){return rn.indexOf(e)!==-1},isDeprecatedParameter:dn,argsToParams:rt,isVisible:function t(){return E(h())},clickConfirm:He,clickDeny:function t(){return v()&&v().click()},clickCancel:function t(){return y()&&y().click()},getContainer:w,getPopup:h,getTitle:ut,getContent:g,getHtmlContainer:dt,getImage:ft,getIcon:ct,getInputLabel:wt,getCloseButton:kt,getActions:gt,getConfirmButton:b,getDenyButton:v,getCancelButton:y,getLoader:ht,getHeader:bt,getFooter:vt,getTimerProgressBar:yt,getFocusableElements:Ct,getValidationMessage:mt,isLoading:Pt,fire:Re,mixin:Ue,queue:function t(e){tt("Swal.queue()","async/await");var i=this;T=e;var r=function t(e,n){T=[];e(n)};var s=[];return new Promise(function(a){(function e(n,o){if(nwindow.innerHeight){o.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"));document.body.style.paddingRight="".concat(o.previousBodyPadding+te(),"px")}},yn=function t(){if(o.previousBodyPadding!==null){document.body.style.paddingRight="".concat(o.previousBodyPadding,"px");o.previousBodyPadding=null}},kn=function t(){var e=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;if(e&&!Ot(document.body,p.iosfix)){var n=document.body.scrollTop;document.body.style.top="".concat(n*-1,"px");C(document.body,p.iosfix);Cn();xn()}},xn=function t(){var e=!navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);if(e){var n=44;if(h().scrollHeight>window.innerHeight-n)w().style.paddingBottom="".concat(n,"px")}},Cn=function t(){var e=w();var n;e.ontouchstart=function(t){n=An(t)};e.ontouchmove=function(t){if(n){t.preventDefault();t.stopPropagation()}}},An=function t(e){var n=e.target;var o=w();if(Bn(e)||Pn(e))return false;if(n===o)return true;if(!qt(o)&&n.tagName!=="INPUT"&&!(qt(g())&&g().contains(n)))return true;return false},Bn=function t(e){return e.touches&&e.touches.length&&e.touches[0].touchType==="stylus"},Pn=function t(e){return e.touches&&e.touches.length>1},On=function t(){if(Ot(document.body,p.iosfix)){var e=parseInt(document.body.style.top,10);A(document.body,p.iosfix);document.body.style.top="";document.body.scrollTop=e*-1}},En=function t(){return!!window.MSInputMethodContext&&!!document.documentMode},Sn=function t(){var e=w();var n=h();e.style.removeProperty("align-items");if(n.offsetTop<0)e.style.alignItems="flex-start"},_n=function t(){if(typeof window!=="undefined"&&En()){Sn();window.addEventListener("resize",Sn)}},Tn=function t(){if(typeof window!=="undefined"&&En())window.removeEventListener("resize",Sn)},Ln=function t(){var e=l(document.body.children);e.forEach(function(t){if(t===w()||$t(t,w()))return;if(t.hasAttribute("aria-hidden"))t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden"));t.setAttribute("aria-hidden","true")})},jn=function t(){var e=l(document.body.children);e.forEach(function(t){if(t.hasAttribute("data-previous-aria-hidden")){t.setAttribute("aria-hidden",t.getAttribute("data-previous-aria-hidden"));t.removeAttribute("data-previous-aria-hidden")}else t.removeAttribute("aria-hidden")})},zn={swalPromiseResolve:new WeakMap};function Dn(t,e,n,o){if(Bt())Nn(t,o);else{We(n).then(function(){return Nn(t,o)});L.keydownTarget.removeEventListener("keydown",L.keydownHandler,{capture:L.keydownListenerCapture});L.keydownHandlerAdded=false}if(e.parentNode&&!document.body.getAttribute("data-swal2-queue-step"))e.parentNode.removeChild(e);if(At()){yn();On();Tn();jn()}qn()}function qn(){A([document.documentElement,document.body],[p.shown,p["height-auto"],p["no-backdrop"],p["toast-shown"]])}function Mn(t){var e=h();if(!e)return;t=$n(t);var n=_.innerParams.get(this);if(!n||Ot(e,n.hideClass.popup))return;var o=zn.swalPromiseResolve.get(this);A(e,n.showClass.popup);C(e,n.hideClass.popup);var a=w();A(a,n.showClass.backdrop);C(a,n.hideClass.backdrop);In(this,e,n);o(t)}var $n=function t(e){if(typeof e==="undefined")return{isConfirmed:false,isDenied:false,isDismissed:true};return r({isConfirmed:false,isDenied:false,isDismissed:false},e)},In=function t(e,n,o){var a=w();var i=Gt&&Mt(n);var r=o.onClose,s=o.onAfterClose,l=o.willClose,c=o.didClose;Hn(n,l,r);if(i)Vn(e,n,a,o.returnFocus,c||s);else Dn(e,a,o.returnFocus,c||s)},Hn=function t(e,n,o){if(n!==null&&typeof n==="function")n(e);else if(o!==null&&typeof o==="function")o(e)},Vn=function t(e,n,o,a,i){L.swalCloseEventFinishedCallback=Dn.bind(null,e,o,a,i);n.addEventListener(Gt,function(t){if(t.target===n){L.swalCloseEventFinishedCallback();delete L.swalCloseEventFinishedCallback}})},Nn=function t(e,n){setTimeout(function(){if(typeof n==="function")n();e._destroy()})};function Rn(t,e,n){var o=_.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function Un(t,e){if(!t)return false;if(t.type==="radio"){var n=t.parentNode.parentNode;var o=n.querySelectorAll("input");for(var a=0;a");Kt(t)}var oo=["swal-title","swal-html","swal-footer"],ao=function t(e){var n=typeof e.template==="string"?document.querySelector(e.template):e.template;if(!n)return{};var o=n.content||n;fo(o);var a=r(io(o),ro(o),so(o),lo(o),co(o),uo(o,oo));return a},io=function t(e){var o={};l(e.querySelectorAll("swal-param")).forEach(function(t){z(t,["name","value"]);var e=t.getAttribute("name");var n=t.getAttribute("value");if(typeof j[e]==="boolean"&&n==="false")n=false;if(i(j[e])==="object")n=JSON.parse(n);o[e]=n});return o},ro=function t(e){var n={};l(e.querySelectorAll("swal-button")).forEach(function(t){z(t,["type","color","aria-label"]);var e=t.getAttribute("type");n["".concat(e,"ButtonText")]=t.innerHTML;n["show".concat(X(e),"Button")]=true;if(t.hasAttribute("color"))n["".concat(e,"ButtonColor")]=t.getAttribute("color");if(t.hasAttribute("aria-label"))n["".concat(e,"ButtonAriaLabel")]=t.getAttribute("aria-label")});return n},so=function t(e){var n={};var o=e.querySelector("swal-image");if(o){z(o,["src","width","height","alt"]);if(o.hasAttribute("src"))n.imageUrl=o.getAttribute("src");if(o.hasAttribute("width"))n.imageWidth=o.getAttribute("width");if(o.hasAttribute("height"))n.imageHeight=o.getAttribute("height");if(o.hasAttribute("alt"))n.imageAlt=o.getAttribute("alt")}return n},lo=function t(e){var n={};var o=e.querySelector("swal-icon");if(o){z(o,["type","color"]);if(o.hasAttribute("type"))n.icon=o.getAttribute("type");if(o.hasAttribute("color"))n.iconColor=o.getAttribute("color");n.iconHtml=o.innerHTML}return n},co=function t(e){var o={};var n=e.querySelector("swal-input");if(n){z(n,["type","label","placeholder","value"]);o.input=n.getAttribute("type")||"text";if(n.hasAttribute("label"))o.inputLabel=n.getAttribute("label");if(n.hasAttribute("placeholder"))o.inputPlaceholder=n.getAttribute("placeholder");if(n.hasAttribute("value"))o.inputValue=n.getAttribute("value")}var a=e.querySelectorAll("swal-input-option");if(a.length){o.inputOptions={};l(a).forEach(function(t){z(t,["value"]);var e=t.getAttribute("value");var n=t.innerHTML;o.inputOptions[e]=n})}return o},uo=function t(e,n){var o={};for(var a in n){var i=n[a];var r=e.querySelector(i);if(r){z(r,[]);o[i.replace(/^swal-/,"")]=r.innerHTML.trim()}}return o},fo=function t(n){var o=oo.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);l(n.querySelectorAll("*")).forEach(function(t){if(t.parentNode!==n)return;var e=t.tagName.toLowerCase();if(o.indexOf(e)===-1)c("Unrecognized element <".concat(e,">"))})},z=function t(e,n){l(e.attributes).forEach(function(t){if(n.indexOf(t.name)===-1)c(['Unrecognized attribute "'.concat(t.name,'" on <').concat(e.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},po=10,mo=function t(e){var n=w();var o=h();if(typeof e.willOpen==="function")e.willOpen(o);else if(typeof e.onBeforeOpen==="function")e.onBeforeOpen(o);var a=window.getComputedStyle(document.body);var i=a.overflowY;vo(n,o,e);setTimeout(function(){go(n,o)},po);if(At()){bo(n,e.scrollbarPadding,i);Ln()}if(!Bt()&&!L.previousActiveElement)L.previousActiveElement=document.activeElement;wo(o,e);A(n,p["no-transition"])},wo=function t(e,n){if(typeof n.didOpen==="function")setTimeout(function(){return n.didOpen(e)});else if(typeof n.onOpen==="function")setTimeout(function(){return n.onOpen(e)})},ho=function t(e){var n=h();if(e.target!==n)return;var o=w();n.removeEventListener(Gt,t);o.style.overflowY="auto"},go=function t(e,n){if(Gt&&Mt(n)){e.style.overflowY="hidden";n.addEventListener(Gt,ho)}else e.style.overflowY="auto"},bo=function t(e,n,o){kn();_n();if(n&&o!=="hidden")vn();setTimeout(function(){e.scrollTop=0})},vo=function t(e,n,o){C(e,o.showClass.backdrop);n.style.setProperty("opacity","0","important");P(n);setTimeout(function(){C(n,o.showClass.popup);n.style.removeProperty("opacity")},po);C([document.documentElement,document.body],p.shown);if(o.heightAuto&&o.backdrop&&!o.toast)C([document.documentElement,document.body],p["height-auto"])},yo=function t(e,n){if(n.input==="select"||n.input==="radio")Bo(e,n);else if(["text","email","number","tel","textarea"].indexOf(n.input)!==-1&&(nt(n.inputValue)||ot(n.inputValue)))Po(e,n)},ko=function t(e,n){var o=e.getInput();if(!o)return null;switch(n.input){case"checkbox":return xo(o);case"radio":return Co(o);case"file":return Ao(o);default:return n.inputAutoTrim?o.value.trim():o.value}},xo=function t(e){return e.checked?1:0},Co=function t(e){return e.checked?e.value:null},Ao=function t(e){return e.files.length?e.getAttribute("multiple")!==null?e.files:e.files[0]:null},Bo=function t(e,n){var o=g();var a=function t(e){return Oo[n.input](o,Eo(e),n)};if(nt(n.inputOptions)||ot(n.inputOptions)){Fe(b());d(n.inputOptions).then(function(t){e.hideLoading();a(t)})}else if(i(n.inputOptions)==="object")a(n.inputOptions);else u("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(i(n.inputOptions)))},Po=function t(e,n){var o=e.getInput();O(o);d(n.inputValue).then(function(t){o.value=n.input==="number"?parseFloat(t)||0:"".concat(t);P(o);o.focus();e.hideLoading()})["catch"](function(t){u("Error in inputValue promise: ".concat(t));o.value="";P(o);o.focus();e.hideLoading()})},Oo={select:function a(t,e,i){var a=B(t,p.select);var r=function t(e,n,o){var a=document.createElement("option");a.value=o;k(a,n);a.selected=So(o,i.inputValue);e.appendChild(a)};e.forEach(function(t){var e=t[0];var n=t[1];if(Array.isArray(n)){var o=document.createElement("optgroup");o.label=e;o.disabled=false;a.appendChild(o);n.forEach(function(t){return r(o,t[1],t[0])})}else r(a,n,e)});a.focus()},radio:function r(t,e,s){var r=B(t,p.radio);e.forEach(function(t){var e=t[0];var n=t[1];var o=document.createElement("input");var a=document.createElement("label");o.type="radio";o.name=p.radio;o.value=e;if(So(e,s.inputValue))o.checked=true;var i=document.createElement("span");k(i,n);i.className=p.label;a.appendChild(o);a.appendChild(i);r.appendChild(a)});var n=r.querySelectorAll("input");if(n.length)n[0].focus()}},Eo=function o(n){var a=[];if(typeof Map!=="undefined"&&n instanceof Map)n.forEach(function(t,e){var n=t;if(i(n)==="object")n=o(n);a.push([e,n])});else Object.keys(n).forEach(function(t){var e=n[t];if(i(e)==="object")e=o(e);a.push([t,e])});return a},So=function t(e,n){return n&&n.toString()===e.toString()},_o=function t(e,n){e.disableButtons();if(n.input)jo(e,n,"confirm");else Mo(e,n,true)},To=function t(e,n){e.disableButtons();if(n.returnInputValueOnDeny)jo(e,n,"deny");else Do(e,n,false)},Lo=function t(e,n){e.disableButtons();n(f.cancel)},jo=function t(e,n,o){var a=ko(e,n);if(n.inputValidator)zo(e,n,a);else if(!e.getInput().checkValidity()){e.enableButtons();e.showValidationMessage(n.validationMessage)}else if(o==="deny")Do(e,n,a);else Mo(e,n,a)},zo=function t(e,n,o){e.disableInput();var a=Promise.resolve().then(function(){return d(n.inputValidator(o,n.validationMessage))});a.then(function(t){e.enableButtons();e.enableInput();if(t)e.showValidationMessage(t);else Mo(e,n,o)})},Do=function t(e,n,o){if(n.showLoaderOnDeny)Fe(v());if(n.preDeny){var a=Promise.resolve().then(function(){return d(n.preDeny(o,n.validationMessage))});a.then(function(t){if(t===false)e.hideLoading();else e.closePopup({isDenied:true,value:typeof t==="undefined"?o:t})})}else e.closePopup({isDenied:true,value:o})},qo=function t(e,n){e.closePopup({isConfirmed:true,value:n})},Mo=function t(e,n,o){if(n.showLoaderOnConfirm)Fe();if(n.preConfirm){e.resetValidationMessage();var a=Promise.resolve().then(function(){return d(n.preConfirm(o,n.validationMessage))});a.then(function(t){if(E(mt())||t===false)e.hideLoading();else qo(e,typeof t==="undefined"?o:t)})}else qo(e,o)},$o=function t(e,n,o,a){if(n.keydownTarget&&n.keydownHandlerAdded){n.keydownTarget.removeEventListener("keydown",n.keydownHandler,{capture:n.keydownListenerCapture});n.keydownHandlerAdded=false}if(!o.toast){n.keydownHandler=function(t){return Ro(e,t,a)};n.keydownTarget=o.keydownListenerCapture?window:h();n.keydownListenerCapture=o.keydownListenerCapture;n.keydownTarget.addEventListener("keydown",n.keydownHandler,{capture:n.keydownListenerCapture});n.keydownHandlerAdded=true}},Io=function t(e,n,o){var a=Ct();if(a.length){n=n+o;if(n===a.length)n=0;else if(n===-1)n=a.length-1;return a[n].focus()}h().focus()},Ho=["ArrowRight","ArrowDown","Right","Down"],Vo=["ArrowLeft","ArrowUp","Left","Up"],No=["Escape","Esc"],Ro=function t(e,n,o){var a=_.innerParams.get(e);if(!a)return;if(a.stopKeydownPropagation)n.stopPropagation();if(n.key==="Enter")Uo(e,n,a);else if(n.key==="Tab")Fo(n,a);else if([].concat(Ho,Vo).indexOf(n.key)!==-1)Yo(n.key);else if(No.indexOf(n.key)!==-1)Zo(n,a,o)},Uo=function t(e,n,o){if(n.isComposing)return;if(n.target&&e.getInput()&&n.target.outerHTML===e.getInput().outerHTML){if(["textarea","file"].indexOf(o.input)!==-1)return;He();n.preventDefault()}},Fo=function t(e,n){var o=e.target;var a=Ct();var i=-1;for(var r=0;r1&&arguments[1]!==undefined?arguments[1]:{};wn(r({},e,t));if(L.currentInstance)L.currentInstance._destroy();L.currentInstance=this;var n=ea(t,e);no(n);Object.freeze(n);if(L.timeout){L.timeout.stop();delete L.timeout}clearTimeout(L.restoreFocusTimeout);var o=oa(this);$e(this,n);_.innerParams.set(this,n);return na(this,o,n)}var ea=function t(e,n){var o=ao(e);var a=r({},j,n,o,e);a.showClass=r({},j.showClass,a.showClass);a.hideClass=r({},j.hideClass,a.hideClass);if(e.animation===false){a.showClass={popup:"swal2-noanimation",backdrop:"swal2-noanimation"};a.hideClass={}}return a},na=function t(n,o,a){return new Promise(function(t){var e=function t(e){n.closePopup({isDismissed:true,dismiss:e})};zn.swalPromiseResolve.set(n,t);o.confirmButton.onclick=function(){return _o(n,a)};o.denyButton.onclick=function(){return To(n,a)};o.cancelButton.onclick=function(){return Lo(n,e)};o.closeButton.onclick=function(){return e(f.close)};Wo(n,o,e);$o(n,L,a,e);yo(n,a);mo(a);aa(L,a,e);ia(o,a);setTimeout(function(){o.container.scrollTop=0})})},oa=function t(e){var n={popup:h(),container:w(),content:g(),actions:gt(),confirmButton:b(),denyButton:v(),cancelButton:y(),loader:ht(),closeButton:kt(),validationMessage:mt(),progressSteps:pt()};_.domCache.set(e,n);return n},aa=function t(e,n,o){var a=yt();O(a);if(n.timer){e.timeout=new Jn(function(){o("timer");delete e.timeout},n.timer);if(n.timerProgressBar){P(a);setTimeout(function(){if(e.timeout&&e.timeout.running)It(n.timer)})}}},ia=function t(e,n){if(n.toast)return;if(!et(n.allowEnterKey))return sa();if(!ra(e,n))Io(n,-1,1)},ra=function t(e,n){if(n.focusDeny&&E(e.denyButton)){e.denyButton.focus();return true}if(n.focusCancel&&E(e.cancelButton)){e.cancelButton.focus();return true}if(n.focusConfirm&&E(e.confirmButton)){e.confirmButton.focus();return true}return false},sa=function t(){if(document.activeElement&&typeof document.activeElement.blur==="function")document.activeElement.blur()};function la(e){var t=h();var n=_.innerParams.get(this);if(!t||Ot(t,n.hideClass.popup))return c("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");var o={};Object.keys(e).forEach(function(t){if(D.isUpdatableParameter(t))o[t]=e[t];else c('Invalid parameter to update: "'.concat(t,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))});var a=r({},n,o);$e(this,a);_.innerParams.set(this,a);Object.defineProperties(this,{params:{value:r({},this.params,e),writable:false,enumerable:true}})}function ca(){var t=_.domCache.get(this);var e=_.innerParams.get(this);if(!e)return;if(t.popup&&L.swalCloseEventFinishedCallback){L.swalCloseEventFinishedCallback();delete L.swalCloseEventFinishedCallback}if(L.deferDisposalTimer){clearTimeout(L.deferDisposalTimer);delete L.deferDisposalTimer}ua(e);da(this)}var ua=function t(e){if(typeof e.didDestroy==="function")e.didDestroy();else if(typeof e.onDestroy==="function")e.onDestroy()},da=function t(e){delete e.params;delete L.keydownHandler;delete L.keydownTarget;fa(_);fa(zn)},fa=function t(e){for(var n in e)e[n]=new WeakMap},pa=Object.freeze({hideLoading:gn,disableLoading:gn,getInput:bn,close:Mn,closePopup:Mn,closeModal:Mn,closeToast:Mn,enableButtons:Fn,disableButtons:Yn,enableInput:Zn,disableInput:Wn,showValidationMessage:Kn,resetValidationMessage:Xn,getProgressSteps:Qn,_main:ta,update:la,_destroy:ca}),ma,t=function(){function i(){q(this,i);if(typeof window==="undefined")return;if(typeof Promise==="undefined")u("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)");ma=this;for(var t=arguments.length,e=new Array(t),n=0;n:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}',n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}},311:t=>{"use strict";t.exports=jQuery}},o={};function a(t){var e=o[t];return void 0!==e||(e=o[t]={exports:{}},n[t].call(e.exports,e,e.exports,a)),e.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);(()=>{"use strict";a(455);var n,e,t,o=a(311);n=o,o=window,document,e=nextgen_gallery_admin,o.nextgen_notifications=t={init:function(){var t=this;t.$drawer=n("#nextgen-notifications-drawer"),t.find_elements(),t.init_open(),t.init_close(),t.init_dismiss(),t.init_view_switch(),t.update_count(t.active_count)},should_init:function(){return 0{function O(e){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function T(){"use strict";T=function(){return i};var l,i={},e=Object.prototype,u=e.hasOwnProperty,s=Object.defineProperty||function(e,t,n){e[t]=n.value},t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",n=t.asyncIterator||"@@asyncIterator",o=t.toStringTag||"@@toStringTag";function a(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{a({},"")}catch(l){a=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var o,a,i,c,t=t&&t.prototype instanceof v?t:v,t=Object.create(t.prototype),r=new k(r||[]);return s(t,"_invoke",{value:(o=e,a=n,i=r,c=g,function(e,t){if(c===f)throw new Error("Generator is already running");if(c===h){if("throw"===e)throw t;return{value:l,done:!0}}for(i.method=e,i.arg=t;;){var n=i.delegate;if(n){n=function e(t,n){var r=n.method,o=t.iterator[r];if(o===l)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=l,e(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;r=d(o,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,p;o=r.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=l),n.delegate=null,p):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}(n,i);if(n){if(n===p)continue;return n}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(c===g)throw c=h,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);c=f;n=d(o,a,i);if("normal"===n.type){if(c=i.done?h:y,n.arg===p)continue;return{value:n.arg,done:i.done}}"throw"===n.type&&(c=h,i.method="throw",i.arg=n.arg)}})}),t}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}i.wrap=c;var g="suspendedStart",y="suspendedYield",f="executing",h="completed",p={};function v(){}function m(){}function b(){}var t={},x=(a(t,r,function(){return this}),Object.getPrototypeOf),x=x&&x(x(_([]))),L=(x&&x!==e&&u.call(x,r)&&(t=x),b.prototype=v.prototype=Object.create(t));function w(e){["next","throw","return"].forEach(function(t){a(e,t,function(e){return this._invoke(t,e)})})}function S(i,c){var t;s(this,"_invoke",{value:function(n,r){function e(){return new c(function(e,t){!function t(e,n,r,o){var a,e=d(i[e],i,n);if("throw"!==e.type)return(n=(a=e.arg).value)&&"object"==O(n)&&u.call(n,"__await")?c.resolve(n.__await).then(function(e){t("next",e,r,o)},function(e){t("throw",e,r,o)}):c.resolve(n).then(function(e){a.value=e,r(a)},function(e){return t("throw",e,r,o)});o(e.arg)}(n,r,e,t)})}return t=t?t.then(e,e):e()}})}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function q(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function _(t){if(t||""===t){var n,e=t[r];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return n=-1,(e=function e(){for(;++n"),E.appendChild(t))}))});var m=document.querySelectorAll(".recommended"),b=[],x=document.querySelector(".selected-plugins-names"),L=[],w=(m.forEach(function(e){e.addEventListener("click",function(t){t.target.checked?(b.push(t.target.value),L.push(t.target.getAttribute("data-name")),document.querySelector("#".concat(t.target.value,"-desc")).style.display="block"):(b=b.filter(function(e){return e!==t.target.value}),L=L.filter(function(e){return e!==t.target.getAttribute("data-name")}),document.querySelector("#".concat(t.target.value,"-desc")).style.display="none"),w()})}),function(){x.innerHTML="",0===L.length&&m.forEach(function(e){!e.checked||b.includes(e.value)||nggOnboardingWizard.plugins_list.includes(e.value)||(L.push(e.getAttribute("data-name")),document.querySelector("#".concat(e.value,"-desc")).style.display="block")}),0{var e={311:n=>{"use strict";n.exports=jQuery}},t={};function s(n){var a=t[n];return void 0!==a||(a=t[n]={exports:{}},e[n](a,a.exports,s)),a.exports}var o,c,n;n=s(311),o=n,c=nextgen_about,o(function(){o(".nextgen-am-plugins-wrap").on("click",".nextgen-am-plugins-install",function(n){n.preventDefault();var s=o(this),n=s.data("url"),a=s.data("basename"),a=(spinner=s.parent().find(".spinner"),message=o(this).parent().parent().find(".nextgen-am-plugins-status"),{url:c.ajax,type:"post",async:!0,cache:!1,dataType:"json",data:{action:"nextgen_install_am_plugin",nonce:c.install_nonce,basename:a,download_url:n},success:function(n){s.text(c.deactivate).removeClass("nextgen-am-plugins-install").addClass("nextgen-am-plugins-deactivate"),o(message).text(c.active);var a=o(message),e=a.html().split(/\s+/),t=e.pop(),e=e.join(" ");spinner.css("visibility","hidden"),a.html([e," ",t,""].join(""))},error:function(n,a,e){console.log(e)}});console.log(spinner),spinner.css("visibility","visible"),o.ajax(a)}),o(".nextgen-am-plugins-wrap").on("click",".nextgen-am-plugins-activate",function(n){n.preventDefault();var s=o(this),n=s.data("url"),a=s.data("basename"),i=s.parent().find(".spinner"),l=o(this).parent().parent().find(".nextgen-am-plugins-status"),a={url:c.ajax,type:"post",async:!0,cache:!1,dataType:"json",data:{action:"nextgen_activate_am_plugin",nonce:c.activate_nonce,basename:a,download_url:n},success:function(n){s.text(c.deactivate).removeClass("nextgen-am-plugins-activate").addClass("nextgen-am-plugins-deactivate"),o(l).text(c.active);var a=o(l),e=a.html().split(/\s+/),t=e.pop(),e=e.join(" ");i.css("visibility","hidden"),a.html([e," ",t,""].join("")),location.reload(!0)},error:function(n,a,e){console.log(e)}};console.log(i),i.css("visibility","visible"),o.ajax(a)}),o(".nextgen-am-plugins-wrap").on("click",".nextgen-am-plugins-deactivate",function(n){n.preventDefault();var s=o(this),n=s.data("url"),a=s.data("basename"),i=s.parent().find(".spinner"),l=o(this).parent().parent().find(".nextgen-am-plugins-status"),a={url:c.ajax,type:"post",async:!0,cache:!1,dataType:"json",data:{action:"nextgen_deactivate_am_plugin",nonce:c.deactivate_nonce,basename:a,download_url:n},success:function(n){s.text(c.activate).removeClass("nextgen-am-plugins-deactivate").addClass("nextgen-am-plugins-activate"),o(l).text(c.inactive);var a=o(l),e=a.html().split(/\s+/),t=e.pop(),e=e.join(" ");i.css("visibility","hidden"),a.html([e," ",t,""].join("")),location.reload(!0)},error:function(n,a,e){console.log(e)}};console.log(i),i.css("visibility","visible"),o.ajax(a)})})})();PK!W7++8products/photocrati_nextgen/modules/ajax/module.ajax.phpnu[get_registry()->add_utility( 'I_Ajax_Controller', 'C_Ajax_Controller' ); } public function _register_hooks() { add_action( 'ngg_routes', [ $this, 'define_routes' ] ); add_action( 'init', [ $this, 'serve_ajax_request' ] ); } public function serve_ajax_request() { // This method only begins NextGEN's AJAX endpoint handler, individual endpoints are responsible for // their own nonce and other security checks. // // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( isset( $_REQUEST[ NGG_AJAX_SLUG ] ) ) { $controller = C_Ajax_Controller::get_instance(); $controller->index_action(); exit(); } } public function define_routes( $router ) { $app = $router->create_app( '/photocrati_ajax' ); $app->route( '/', 'I_Ajax_Controller#index' ); } /** * Pass PHP object or array to JS, preserving numeric and boolean value * * @param string $handle * @param string $var_name * @param object|array $data */ static function pass_data_to_js( $handle, $var_name, $data ) { $var_name = esc_js( $var_name ); return wp_add_inline_script( $handle, "let {$var_name} = " . json_encode( $data, JSON_NUMERIC_CHECK ) ); } public function get_type_list() { return [ 'C_Ajax_Controller' => 'class.ajax_controller.php' ]; } } new M_Ajax(); PK!uJ @products/photocrati_nextgen/modules/ajax/package.module.ajax.phpnu[implement('I_Ajax_Controller'); } public function index_action($return = false) { $retval = null; define('DOING_AJAX', true); // Inform the MVC framework what type of content we're returning. $this->set_content_type('json'); // Start an output buffer to avoid displaying any PHP warnings/errors. ob_start(); // Get the action requested & find and execute the related method. if ($action = $this->param('action')) { $method = "{$action}_action"; if ($this->has_method($method)) { $retval = $this->call_method($method); } else { $retval = ['error' => 'Not a valid AJAX action']; } } else { $retval = ['error' => 'No action specified']; } // Flush the buffer. $buffer_limit = 0; $zlib = ini_get('zlib.output_compression'); if (!is_numeric($zlib) && $zlib == 'On') { $buffer_limit = 1; } elseif (is_numeric($zlib) && $zlib > 0) { $buffer_limit = 1; } while (ob_get_level() != $buffer_limit) { ob_end_clean(); } // Return the JSON to the browser. wp_send_json($retval); } public function validate_ajax_request($action = null, $token = false) { // Security::verify_nonce() is a wrapper to wp_verify_nonce(). // // phpcs:disable WordPress.Security.NonceVerification.Recommended if (true === $token && (!isset($_REQUEST['nonce']) || !\Imagely\NGG\Util\Security::verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['nonce'])), $action))) { return false; } // phpcs:enable WordPress.Security.NonceVerification.Recommended return \Imagely\NGG\Util\Security::is_allowed($action); } }PK!:J%tt3products/photocrati_nextgen/modules/ajax/README.txtnu[AJAX MODULE ====================== == Introduction == ------------------- This module provides a means for executing AJAX actions through the C_Ajax_Controller class. This controller is registed as a route, trigged by "/photocrati_ajax" It's designed in mind with the intention that other modules will adapt this controller to provide custom AJAX actions. This module also adds some client-side variables to assist with executing your AJAX actions: => photocrati_ajax.url, the url used to post your AJAX requests to => photacrati_ajax.wp_site_url, the url of the WordPress site To call an AJAX method using jQuery, you'd do the following: jQuery.post(photocrati_ajax.url, {action: "get_gallery", id: 1}, function(response){ if (typeof response != 'object) response = JSON.parse(response); }); The above AJAX request will execute C_Ajax_Controller->get_gallery_action(), which is expected to return valid JSON (even if there is an error) == Caveats == ------------- This module does not currently have any built-in security mechanisms. Any actions you mixin using an adapter need to perform their own authorization checks.PK!J==^products/photocrati_nextgen/modules/nextgen_basic_album/package.module.nextgen_basic_album.phpnu[are_breadcrumbs_enabled($display_settings['original_settings'])) { $retval = true; } return $retval; } public function get_original_album_entities($display_settings) { $retval = []; if (isset($display_settings['original_album_entities'])) { $retval = $display_settings['original_album_entities']; } elseif (isset($display_settings['original_settings']) && $this->get_original_album_entities($display_settings['original_settings'])) { $retval = $this->get_original_album_entities($display_settings['original_settings']); } return $retval; } public function render_object() { $root_element = $this->call_parent('render_object'); if ($displayed_gallery = $this->object->get_param('displayed_gallery')) { $ds = $displayed_gallery->display_settings; if ($this->are_breadcrumbs_enabled($ds) && ($original_entities = $this->get_original_album_entities($ds))) { $original_entities = $this->get_original_album_entities($ds); if (!empty($ds['original_album_id'])) { $ids = $ds['original_album_id']; } else { $ids = $displayed_gallery->container_ids; } $breadcrumbs = $this->object->generate_breadcrumb($ids, $original_entities); foreach ($root_element->find('nextgen_gallery.gallery_container', true) as $container) { $container->insert($breadcrumbs); } } } return $root_element; } public function render_legacy_template_breadcrumbs($displayed_gallery, $entities, $gallery_id = false) { $ds = $displayed_gallery->display_settings; if (!empty($entities) && !empty($ds['template']) && $this->are_breadcrumbs_enabled($ds)) { if ($gallery_id) { if (is_array($gallery_id)) { $ids = $gallery_id; } else { $ids = [$gallery_id]; } } elseif (!empty($ds['original_album_id'])) { $ids = $ds['original_album_id']; } else { $ids = $displayed_gallery->container_ids; } // Prevent galleries with the same ID as the parent album being displayed as the root // breadcrumb when viewing the album page. if (is_array($ids) && count($ids) == 1 && strpos($ids[0], 'a') !== 0) { $ids = []; } if (!empty($ds['original_album_entities'])) { $breadcrumb_entities = $ds['original_album_entities']; } else { $breadcrumb_entities = $entities; } return $this->object->generate_breadcrumb($ids, $breadcrumb_entities); } else { return ''; } } public function find_gallery_parent($gallery_id, $sortorder) { $map = \Imagely\NGG\DataMappers\Album::get_instance(); $found = []; foreach ($sortorder as $order) { if (strpos($order, 'a') === 0) { $album_id = ltrim($order, 'a'); if (empty($this->breadcrumb_cache[$order])) { $album = $map->find($album_id); $this->breadcrumb_cache[$order] = $album; if (in_array($gallery_id, $album->sortorder)) { $found[] = $album; break; } else { $found = $this->find_gallery_parent($gallery_id, $album->sortorder); if ($found) { $found[] = $album; break; } } } } } return $found; } public function generate_breadcrumb($gallery_id, $entities) { $found = []; $router = \Imagely\NGG\Util\Router::get_instance(); $app = $router->get_routed_app(); if (is_array($gallery_id)) { $gallery_id = array_shift($gallery_id); } if (is_array($gallery_id)) { $gallery_id = $gallery_id[0]; } foreach ($entities as $ndx => $entity) { $tmpid = (isset($entity->albumdesc) ? 'a' : '') . $entity->{$entity->id_field}; $this->breadcrumb_cache[$tmpid] = $entity; if (isset($entity->albumdesc) && in_array($gallery_id, $entity->sortorder)) { $found[] = $entity; break; } } if (empty($found)) { foreach ($entities as $entity) { if (!empty($entity->sortorder)) { $found = $this->object->find_gallery_parent($gallery_id, $entity->sortorder); } if (!empty($found)) { $found[] = $entity; break; } } } $found = array_reverse($found); if (strpos($gallery_id, 'a') === 0) { $album_found = false; foreach ($found as $found_item) { if ($found_item->{$found_item->id_field} == $gallery_id) { $album_found = true; } } if (!$album_found) { $album_id = ltrim($gallery_id, 'a'); $album = \Imagely\NGG\DataMappers\Album::get_instance()->find($album_id); $found[] = $album; $this->breadcrumb_cache[$gallery_id] = $album; } } else { $gallery_found = false; foreach ($entities as $entity) { if (isset($entity->is_gallery) && $entity->is_gallery && $gallery_id == $entity->{$entity->id_field}) { $gallery_found = true; $found[] = $entity; break; } } if (!$gallery_found) { $gallery = \Imagely\NGG\DataMappers\Gallery::get_instance()->find($gallery_id); if ($gallery != null) { $found[] = $gallery; $this->breadcrumb_cache[$gallery->{$gallery->id_field}] = $gallery; } } } $crumbs = []; if (!empty($found)) { $end = end($found); reset($found); foreach ($found as $found_item) { $type = isset($found_item->albumdesc) ? 'album' : 'gallery'; $id = ($type == 'album' ? 'a' : '') . $found_item->{$found_item->id_field}; $entity = $this->breadcrumb_cache[$id]; $link = null; if ($type == 'album') { $name = $entity->name; if ($entity->pageid > 0) { $link = @get_page_link($entity->pageid); } if (empty($link) && $found_item !== $end) { $link = $app->get_routed_url(); $link = $app->strip_param_segments($link); $link = $app->set_parameter_value('album', $entity->slug, null, false, $link); } } else { $name = $entity->title; } $crumbs[] = ['type' => $type, 'name' => $name, 'url' => $link]; } } // free this memory immediately. $this->breadcrumb_cache = []; $view = new C_MVC_View('photocrati-nextgen_basic_album#breadcrumbs', ['breadcrumbs' => $crumbs, 'divisor' => apply_filters('ngg_breadcrumb_separator', ' » ')]); return $view->render(true); } } /** * Because enqueueing an albums child entities (for use in lightboxes) is slow to do inside of cache_action() and * we can't guarantee index_action() will run on every hit (thanks to page caching) we inline those entities into * our basic albums templates under a window.load listener. * * @mixin C_MVC_View * @adapts I_MVC_View */ class A_NextGen_Album_Child_Entities extends Mixin { protected static $_runonce = false; public static $_entities = array(); /** * The album controller will invoke this filter when its _render_album() method is called */ public function __construct() { if (!self::$_runonce) { add_filter('ngg_album_prepared_child_entity', [$this, 'register_child_gallery'], 10, 2); } else { self::$_runonce = true; } } /** * Register each gallery belonging to the album that has just been rendered, so that when the MVC controller * system 'catches up' and runs $this->render_object() that method knows what galleries to inline as JS. * * @param array $galleries * @param $displayed_gallery * @return array mixed */ public function register_child_gallery($galleries, $displayed_gallery) { if (!$this->is_basic_album($displayed_gallery)) { return $galleries; } $id = $displayed_gallery->ID(); foreach ($galleries as $gallery) { if ($gallery->is_album) { continue; } self::$_entities[$id][] = $gallery; } return $galleries; } public function is_basic_album($displayed_gallery) { return in_array($displayed_gallery->display_type, [NGG_BASIC_COMPACT_ALBUM, NGG_BASIC_EXTENDED_ALBUM]); } /** * Determine if we need to append the JS to the current template. This method static for the basic album controller to access. * * @param $display_settings * @return bool */ static function are_child_entities_enabled($display_settings) { $retval = false; if (empty($display_settings['open_gallery_in_lightbox'])) { $display_settings['open_gallery_in_lightbox'] = 0; } if ($display_settings['open_gallery_in_lightbox'] == 1) { $retval = true; } return $retval; } /** * Search inside the template for the inside of the container and append our inline JS */ public function render_object() { $root_element = $this->call_parent('render_object'); if ($displayed_gallery = $this->object->get_param('displayed_gallery')) { if (!$this->is_basic_album($displayed_gallery)) { return $root_element; } $ds = $displayed_gallery->display_settings; if (self::are_child_entities_enabled($ds)) { $id = $displayed_gallery->ID(); foreach ($root_element->find('nextgen_gallery.gallery_container', true) as $container) { $container->append(self::generate_script(self::$_entities[$id])); } } } return $root_element; } /** * Generate the JS that will be inserted into the template. This method static for the basic album controller to access. * * @param array $galleries * @return string */ static function generate_script($galleries) { $retval = ''; return $retval; } } /** * Class A_NextGen_Album_Descriptions * * @mixin C_MVC_View * @adapts I_MVC_View */ class A_NextGen_Album_Descriptions extends Mixin { // When viewing a child gallery the album controller's add_description_to_legacy_templates() method will be // called for the gallery and then again for the root album; we only want to run once. public static $_description_added_once = false; public function are_descriptions_enabled($display_settings) { $retval = false; if (isset($display_settings['enable_descriptions']) && $display_settings['enable_descriptions']) { $retval = true; } elseif (isset($display_settings['original_settings']) && $this->are_descriptions_enabled($display_settings['original_settings'])) { $retval = true; } return $retval; } public function render_object() { $root_element = $this->call_parent('render_object'); if ($displayed_gallery = $this->object->get_param('displayed_gallery')) { $ds = $displayed_gallery->display_settings; if ($this->are_descriptions_enabled($ds)) { $description = $this->object->generate_description($displayed_gallery); foreach ($root_element->find('nextgen_gallery.gallery_container', true) as $container) { // Determine where (to be compatible with breadcrumbs) in the container to insert. $pos = 0; foreach ($container->_list as $ndx => $item) { if (is_string($item)) { $pos = $ndx; } else { break; } } $container->insert($description, $pos); } } } return $root_element; } public function render_legacy_template_description($displayed_gallery) { if (!empty($displayed_gallery->display_settings['template']) && $this->are_descriptions_enabled($displayed_gallery->display_settings)) { return $this->object->generate_description($displayed_gallery); } else { return ''; } } public function generate_description($displayed_gallery) { if (self::$_description_added_once) { return ''; } self::$_description_added_once = true; $description = $this->get_description($displayed_gallery); $view = new C_MVC_View('photocrati-nextgen_basic_album#descriptions', ['description' => $description]); return $view->render(true); } public function get_description($displayed_gallery) { $description = ''; // Important: do not array_shift() $displayed_gallery->container_ids as it will affect breadcrumbs. $container_ids = $displayed_gallery->container_ids; if ($displayed_gallery->source == 'galleries') { $gallery_id = array_shift($container_ids); $gallery = \Imagely\NGG\DataMappers\Gallery::get_instance()->find($gallery_id); if ($gallery && !empty($gallery->galdesc)) { $description = $gallery->galdesc; } } elseif ($displayed_gallery->source == 'albums') { $album_id = array_shift($container_ids); $album = \Imagely\NGG\DataMappers\Album::get_instance()->find($album_id); if ($album && !empty($album->albumdesc)) { $description = $album->albumdesc; } } return $description; } }PK!# sxxVproducts/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.phpnu[get_registry()->add_adapter( 'I_MVC_View', 'A_NextGen_Album_Breadcrumbs' ); $this->get_registry()->add_adapter( 'I_MVC_View', 'A_NextGen_Album_Descriptions' ); $this->get_registry()->add_adapter( 'I_MVC_View', 'A_NextGen_Album_Child_Entities' ); } public function get_type_list() { return [ 'A_NextGen_Album_Breadcrumbs' => 'adapter.nextgen_album_breadcrumbs.php', 'A_NextGen_Album_Child_Entities' => 'adapter.nextgen_album_child_entities.php', 'A_NextGen_Album_Descriptions' => 'adapter.nextgen_album_descriptions.php', ]; } } new M_NextGen_Basic_Album(); PK!Rproducts/photocrati_nextgen/modules/nextgen_basic_album/templates/descriptions.phpnu[

PK!uvvQproducts/photocrati_nextgen/modules/nextgen_basic_album/templates/breadcrumbs.phpnu[
PK!3Nproducts/photocrati_nextgen/modules/nextgen_basic_album/static/breadcrumbs.cssnu[.ngg-breadcrumbs { list-style: none; overflow: hidden; margin: 0; padding: .5em 0 .5em 0; margin-left: 0 !important; text-transform: uppercase; font-size: 14px; margin: 30px 0 30px !important; } ul.ngg-breadcrumbs > li { float: left; padding: 0 .3em 0 .15em; margin: 0; vertical-align: middle; border: none; list-style-type: none; } .ngg-breadcrumbs li a { } .ngg-breadcrumbs .ngg-breadcrumb-divisor { margin: 0; padding: 0 0 0 .15em; }PK!KgkkRproducts/photocrati_nextgen/modules/nextgen_basic_album/static/breadcrumbs.min.cssnu[.ngg-breadcrumbs{list-style:none;overflow:hidden;margin:0;padding:.5em 0 .5em 0;margin-left:0!important;text-transform:uppercase;font-size:14px;margin:30px 0 30px!important}ul.ngg-breadcrumbs>li{float:left;padding:0 .3em 0 .15em;margin:0;vertical-align:middle;border:none;list-style-type:none}.ngg-breadcrumbs .ngg-breadcrumb-divisor{margin:0;padding:0 0 0 .15em}PK!b>>6products/photocrati_nextgen/modules/mvc/module.mvc.phpnu[get_registry()->add_utility( 'I_MVC_Controller', 'C_MVC_Controller' ); } public function _register_adapters() { $this->get_registry()->add_adapter( 'I_Component_Factory', 'A_MVC_Factory' ); } public function get_type_list() { return [ 'A_Mvc_Factory' => 'adapter.mvc_factory.php', 'C_Mvc_Installer' => 'class.mvc_installer.php', 'C_Mvc_Controller' => 'class.mvc_controller.php', 'C_Mvc_View' => 'class.mvc_view.php', 'C_Mvc_View_Element' => 'class.mvc_view_element.php', ]; } } new M_MVC(); PK!ۼNN>products/photocrati_nextgen/modules/mvc/package.module.mvc.phpnu[add_mixin('Mixin_MVC_Controller_Instance_Methods'); $this->implement('I_MVC_Controller'); } public function set_content_type($type) { switch ($type) { case 'html': case 'xhtml': $type = 'text/html'; break; case 'xml': $type = 'text/xml'; break; case 'rss': case 'rss2': $type = 'application/rss+xml'; break; case 'css': $type = 'text/css'; break; case 'javascript': case 'jscript': case 'emcascript': $type = 'text/javascript'; break; case 'json': $type = 'application/json'; break; case 'jpeg': case 'jpg': case 'jpe': $type = 'image/jpeg'; break; case 'gif': $type = 'image/gif'; break; case 'png': $type = 'image/x-png'; break; case 'tiff': case 'tif': $type = 'image/tiff'; break; case 'pdf': $type = 'application/pdf'; break; case 'webp': $type = 'image/webp'; break; } $this->object->_content_type = $type; return $type; } public function expires($time) { $time = strtotime($time); if (!headers_sent()) { header('Expires: ' . strftime('%a, %d %b %Y %H:%M:%S %Z', $time)); } } public function http_error($message, $code = 501) { $this->message = $message; $method = "http_{$code}_action"; $this->{$method}(); } public function is_valid_request($method) { return true; } public function is_post_request() { return 'POST' == $this->object->get_router()->get_request_method(); } public function is_get_request() { return 'GET' == $this->object->get_router()->get_request_method(); } public function is_delete_request() { return 'DELETE' == $this->object->get_router()->get_request_method(); } public function is_put_request() { return 'PUT' == $this->object->get_router()->get_request_method(); } public function do_not_cache() { if (!headers_sent()) { header('Cache-Control: no-cache'); header('Pragma: no-cache'); } } public function is_custom_request($type) { return strtolower($type) == strtolower($this->object->get_router()->get_request_method()); } /** * @return \Imagely\NGG\Util\Router */ public function get_router() { return \Imagely\NGG\Util\Router::get_instance(); } /** * @return C_Routing_App */ public function get_routed_app() { return $this->object->get_router()->get_routed_app(); } public function remove_param_for($url, $key, $id = null) { $app = $this->object->get_routed_app(); $retval = $app->remove_parameter($key, $id, $url); return $retval; } /** * Gets the absolute path of a static resource * * @param string $path * @param string|false $module (optional). * @return string */ public function get_static_abspath($path, $module = false) { return \Imagely\NGG\Display\StaticPopeAssets::get_abspath($path, $module); } /** * @param string $path * @param string|false $module (optional). * @return string */ public function get_static_url($path, $module = false) { return \Imagely\NGG\Display\StaticPopeAssets::get_url($path, $module); } /** * Renders a template and outputs the response headers * * @param string $name * @param array $vars (optional). * @param bool $return (optional). * @return string */ public function render_view($name, $vars = array(), $return = false) { $this->object->render(); return $this->object->render_partial($name, $vars, $return); } /** * @param string $template Path to the POPE module#filename. * @param array $params Array of parameters to be extract()ed to the template file. * @param bool $return When true results will be returned instead of printed. * @param null $context Application context. * @param string $new_template_path Path to the new non-POPE file located under the plugin root's '/templates' directory. * @return mixed */ public function render_partial($template, $params = array(), $return = false, $context = null, $new_template_path = '') { /** @var C_MVC_View $view */ $view = $this->object->create_view($template, $params, $context, $new_template_path); return $view->render($return); } } /** * Adds methods for MVC Controller * * @property C_MVC_Controller $object */ class Mixin_MVC_Controller_Instance_Methods extends Mixin { // Provide a default view. public function index_action($return = false) { return $this->render_view('photocrati-mvc#index', [], $return); } /** * Returns the value of a parameters * * @param string $key * @param string|null $prefix (optional). * @return string */ public function param($key, $prefix = null, $default = null) { return $this->object->get_routed_app()->get_parameter($key, $prefix, $default); } public function set_param($key, $value, $id = null, $use_prefix = false) { return $this->object->get_routed_app()->set_parameter($key, $value, $id, $use_prefix); } public function set_param_for($url, $key, $value, $id = null, $use_prefix = false) { return $this->object->get_routed_app()->set_parameter($key, $value, $id, $use_prefix, $url); } public function remove_param($key, $id = null) { return $this->object->get_routed_app()->remove_parameter($key, $id); } /** * Gets the routed url, generated by the Routing App * * @param bool $with_qs (optional) With QueryString. * @return string */ public function get_routed_url($with_qs = false) { return $this->object->get_routed_app()->get_app_url(false, $with_qs); } /** * Outputs the response headers * * TODO: Determine if this can be moved into C_MVC_Controller */ public function render() { if (!headers_sent() && !defined('DOING_AJAX') && !defined('REST_REQUEST')) { header('Content-Type: ' . $this->object->_content_type . '; charset=' . get_option('blog_charset'), true); } } /** * @param string $template Path to the POPE module#filename. * @param array $params Array of parameters to be extract()ed to the template file. * @param null $context Application context. * @param string $new_template_path Path to the new non-POPE file located under the plugin root's '/templates' directory. * @return mixed */ public function create_view($template, $params = array(), $context = null, $new_template_path = '') { if (!$context) { $context = $this->object->context; } return C_Component_Factory::get_instance()->create('mvc_view', $template, $params, null, $context, $new_template_path); } } /** * Class C_MVC_View * * @mixin Mixin_Mvc_View_Instance_Methods * @property C_MVC_View $object */ class C_MVC_View extends C_Component { public $_template = ''; public $_engine = ''; public $_params = array(); public $_queue = array(); public $_new_template = ''; public function __construct($template, $params = array(), $engine = 'php', $context = false, $new_template_path = '') { $this->_template = $template; $this->_params = (array) $params; $this->_engine = $engine; $this->_new_template = $new_template_path; $context = $context ? array_unique([$context, $template], SORT_REGULAR) : $template; parent::__construct($context); } public function define($context = false) { parent::define($context); $this->implement('I_MVC_View'); $this->add_mixin('Mixin_Mvc_View_Instance_Methods'); } /** * Returns the variables to be used in the template * * @return array */ public function get_template_vars() { $retval = []; foreach ($this->object->_params as $key => $value) { if (strpos($key, '_template') === 0) { $value = $this->object->get_template_abspath($value); } $retval[$key] = $value; } return $retval; } /** * @param string $value (optional). * @return string */ public function get_template_abspath($value = null) { if (!$value) { $value = $this->object->_template; } $new_template_path = !empty($this->object->_new_template) ? $this->object->_new_template : ''; if (strpos($value, DIRECTORY_SEPARATOR) !== false && @file_exists($value)) { // key is already abspath. } else { $value = $this->object->find_template_abspath($value, false, $new_template_path); } return $value; } public function rasterize_object($element) { return $element->rasterize(); } public function start_element($id, $type = null, $context = null) { if ($type == null) { $type = 'element'; } $count = count($this->object->_queue); $element = new C_MVC_View_Element($id, $type); if ($context != null) { if (!is_array($context)) { $context = ['object' => $context]; } foreach ($context as $context_name => $context_value) { $element->set_context($context_name, $context_value); } } $this->object->_queue[] = $element; if ($count > 0) { $old_element = $this->object->_queue[$count - 1]; $content = ob_get_contents(); ob_clean(); $old_element->append($content); $old_element->append($element); } ob_start(); return $element; } public function end_element() { $content = ob_get_clean(); $element = array_pop($this->object->_queue); if ($content != null) { $element->append($content); } return $element; } /** * Renders a sub-template for the view * * @param string $__template. * @param array $__params. * @param bool $__return Unused. * @return NULL */ public function include_template($__template, $__params = null, $__return = false) { // We use underscores to prefix local variables to avoid conflicts wth // template vars. if ($__params == null) { $__params = []; } $__params['template_origin'] = $this->object->_template; $__target = $this->object->get_template_abspath($__template); $__origin_target = $this->object->get_template_abspath($this->object->_template); $__image_before_target = $this->object->get_template_abspath('photocrati-nextgen_gallery_display#image/before'); $__image_after_target = $this->object->get_template_abspath('photocrati-nextgen_gallery_display#image/after'); if ($__origin_target != $__target) { if ($__target == $__image_before_target) { $__image = isset($__params['image']) ? $__params['image'] : null; $this->start_element('nextgen_gallery.image_panel', 'item', $__image); } if ($__target == $__image_after_target) { $this->end_element(); } extract($__params); include $__target; if ($__target == $__image_before_target) { $__image = isset($__params['image']) ? $__params['image'] : null; $this->start_element('nextgen_gallery.image', 'item', $__image); } if ($__target == $__image_after_target) { $this->end_element(); } } return null; } /** * Gets the absolute path of an MVC template file * * @param string $path * @param string|false $module (optional). * @param string $new_template_path Non-POPE path coming from 'templates' in the plugin root. * @return string */ public function find_template_abspath($path, $module = false, $new_template_path = '') { $fs = \Imagely\NGG\Util\Filesystem::get_instance(); $settings = \Imagely\NGG\Settings\Settings::get_instance(); // We also accept module_name#path, which needs parsing. if (!$module) { list($path, $module) = $fs->parse_formatted_path($path); } // Append the suffix. $path = $path . '.php'; // First check if the template is in the override dir. $retval = $this->object->get_template_override_abspath($module, $path); if (!$retval && $new_template_path) { $retval = path_join(NGG_PLUGIN_DIR, 'templates' . DIRECTORY_SEPARATOR . $new_template_path . '.php'); } else { $retval = $fs->join_paths($this->object->get_registry()->get_module_dir($module), $settings->mvc_template_dirname, $path); } if (!@file_exists($retval)) { throw new RuntimeException("{$retval} is not a valid MVC template"); } return $retval; } /** * @param null|string $module_id * @return string */ public function get_template_override_dir($module_id = null) { $root = trailingslashit(path_join(WP_CONTENT_DIR, 'ngg')); if (!@file_exists($root) && is_writable(trailingslashit(WP_CONTENT_DIR))) { wp_mkdir_p($root); } $modules = trailingslashit(path_join($root, 'modules')); if (!@file_exists($modules) && is_writable($root)) { wp_mkdir_p($modules); } if ($module_id) { $module_dir = trailingslashit(path_join($modules, $module_id)); if (!@file_exists($module_dir) && is_writable($modules)) { wp_mkdir_p($module_dir); } $template_dir = trailingslashit(path_join($module_dir, 'templates')); if (!@file_exists($template_dir) && is_writable($module_dir)) { wp_mkdir_p($template_dir); } return $template_dir; } return $modules; } /** * @param $module * @param $filename * @return string|null */ public function get_template_override_abspath($module, $filename) { $fs = \Imagely\NGG\Util\Filesystem::get_instance(); $retval = null; $abspath = $fs->join_paths($this->object->get_template_override_dir($module), $filename); if (@file_exists($abspath)) { $retval = $abspath; } return $retval; } } class Mixin_Mvc_View_Instance_Methods extends Mixin { /** * Renders the view (template) * * @param bool $return (optional). * @return string|NULL */ public function render($return = false) { $element = $this->object->render_object(); $content = $this->object->rasterize_object($element); if (!$return) { echo $content; } return $content; } public function render_object() { // We use underscores to prefix local variables to avoid conflicts wth // template vars. $__element = $this->start_element($this->object->_template, 'template', $this->object); $template_vars = $this->object->get_template_vars(); extract($template_vars); include $this->object->get_template_abspath(); $this->end_element(); if (($displayed_gallery = $this->object->get_param('displayed_gallery')) && $this->object->get_param('display_type_rendering')) { $triggers = \Imagely\NGG\DisplayedGallery\TriggerManager::get_instance(); $triggers->render($__element, $displayed_gallery); } return $__element; } /** * Adds a template parameter * * @param $key * @param $value */ public function set_param($key, $value) { $this->object->_params[$key] = $value; } /** * Removes a template parameter * * @param $key */ public function remove_param($key) { unset($this->object->_params[$key]); } /** * Gets the value of a template parameter * * @param $key * @param null $default * @return mixed */ public function get_param($key, $default = null) { if (isset($this->object->_params[$key])) { return $this->object->_params[$key]; } else { return $default; } } } class C_MVC_View_Element { var $_id; var $_type; var $_list; var $_context; public function __construct($id, $type = null) { $this->_id = $id; $this->_type = $type; $this->_list = []; $this->_context = []; } public function get_id() { return $this->_id; } public function append($child) { $this->_list[] = $child; } public function insert($child, $position = 0) { array_splice($this->_list, $position, 0, $child); } public function delete($child) { $index = array_search($child, $this->_list); if ($index !== false) { array_splice($this->_list, $index, 1); } } public function find($id, $recurse = false) { $list = []; $this->_find($list, $id, $recurse); return $list; } public function _find(array &$list, $id, $recurse = false) { foreach ($this->_list as $index => $element) { if ($element instanceof C_MVC_View_Element) { if ($element->get_id() == $id) { $list[] = $element; } if ($recurse) { $element->_find($list, $id, $recurse); } } } } public function get_context($name) { if (isset($this->_context[$name])) { return $this->_context[$name]; } return null; } public function set_context($name, $value) { $this->_context[$name] = $value; } public function get_object() { return $this->get_context('object'); } // XXX not implemented. public function parse() { } public function rasterize() { $ret = null; foreach ($this->_list as $index => $element) { if ($element instanceof C_MVC_View_Element) { $ret .= $element->rasterize(); } else { $ret .= (string) $element; } } return $ret; } }PK!9&}ff;products/photocrati_nextgen/modules/mvc/templates/index.phpnu[object; $template_dir = implode( DIRECTORY_SEPARATOR, [ $obj->get_class_definition_dir(), 'templates' ] ); $default_template_dir = $settings->mvc_template_dir; ?>

Welcome to Pope MVC!

You have not yet created a index.php file in:

So, you're being served the index.php from the default directory:

PK!X\$9products/photocrati_nextgen/modules/mvc/templates/404.phpnu[ Error 404: <?php echo esc_html( $message ); ?>

Error 404:

We're sorry, but the page you've requested cannot be found.

PK!Hl9products/photocrati_nextgen/modules/mvc/templates/500.phpnu[ Error 500 <?php echo esc_html( $message ); ?>

Error:

You requested something the server doesn't understand.

PK!m7 2products/photocrati_nextgen/modules/mvc/README.txtnu[ VIEW ELEMENTS Elements are sub-pieces of a template/view identified by a "unique" ID. The ID is unique in the sense that it uniquely defines the "origin" or creator for the element itself. For instance if you have a module called pro_lightbox and specific adapter for trigger buttons and you add an element for it the unique ID identifying the element could be nextgen_pro_lightbox.trigger_buttons The ID doesn't however need to be unique in the view itself, meaning you can have multiple elements with the same ID if for instance the element is being rendered for multiple images. We might add an extra "context" parameter to elements together to the ID if we want to uniquely identify element objects. Example of how elements are initiated: $elem = $this->start_element('flash_cont'); echo 'cont'; $this->start_element('flash_test'); echo 'test'; $this->start_element('flash_stuff'); echo 'stuff'; $this->end_element(); $this->end_element(); $this->end_element(); var_dump($elem); This would create this output: object(C_MVC_View_Element)#775 (3) { ["_id"]=>string(10) "flash_cont" ["_type"]=>string(7) "element" ["_list"]=>array(2) { [0]=>string(4) "cont" [1]=>object(C_MVC_View_Element)#768 (3) { ["_id"]=>string(10) "flash_test" ["_type"]=>string(7) "element" ["_list"]=>array(2) { [0]=>string(4) "test" [1]=>object(C_MVC_View_Element)#769 (3) { ["_id"]=>string(11) "flash_stuff" ["_type"]=>string(7) "element" ["_list"]=>array(1) { [0]=>string(5) "stuff" } } } } } } The way the MVC view will render these is by creating a root View Element that contains the entire template rendered in the view and which is then "rasterized" e.g. converted to markup/text ready for output The rendering from template to element will occur in the render_object() method while rasterization will occur in a method called rasterize_object() Elements created for templates will have ID corresponding to template name/path so for instance _id would equal 'photocrati-nextgen_basic_gallery#slideshow/index' this way adapters adapting rasterize_object() can easily distinguish between for which template rasterization is occurring and act accordingly (for instance trigger buttons being enabled only for certain display types) Sub-templates will also be automatically rendered to elements meaning image/before and image/after etc. will become sub-elements of the root template element. I don't think this will affect performance much but if so we could easily replace the before/after mechanism to use elements directly So for instance instead of: $this->include_template('image/before');
...
$this->include_template('image/after'); We would have: $this->start_element('nextgen_gallery.image'); $this->include_template('image/before');
...
$this->include_template('image/after'); $this->end_element(); Then you could have an adapter like: function rasterize_object($root_element) { if ($root_element->get_id() == 'photocrati-nextgen_basic_gallery#slideshow/index') { $list = $root_element->find('nextgen_gallery.image'); foreach ($list as $element) { $element->append('
description
'); } } } This would reduce the amount of elements overall and improve performance and possibly readability. Then the before/after templates could be left untouched as in the example above. PK!QYYDproducts/photocrati_nextgen/modules/datamapper/module.datamapper.phpnu[get_registry()->add_adapter( 'I_Component_Factory', 'A_DataMapper_Factory' ); } /** * Deserializes data * * @deprecated Used only by the Pro Lightbox * @param string $value * @return mixed * @throws Exception */ public static function unserialize( $value ) { return \Imagely\NGG\Util\Serializable::unserialize( $value ); } /** * Serializes the data * * @deprecated Used only by the Pro Lightbox * @param mixed $value * @return string */ public static function serialize( $value ) { return \Imagely\NGG\Util\Serializable::serialize( $value ); } public function get_type_list() { return [ 'A_Datamapper_Factory' => 'adapter.datamapper_factory.php', 'C_Custompost_Datamapper_Driver' => 'class.custompost_datamapper_driver.php', 'C_Customtable_Datamapper_Driver' => 'class.customtable_datamapper_driver.php', 'C_Datamapper_Driver_Base' => 'class.datamapper_driver_base.php', 'C_Datamapper_Model' => 'class.datamapper_model.php', ]; } } new M_DataMapper(); PK!??Lproducts/photocrati_nextgen/modules/datamapper/package.module.datamapper.phpnu[add_mixin('Mixin_DataMapper_Driver_Base'); $this->implement('I_DataMapper_Driver'); $this->_object_name = $object_name; } public function initialize() { parent::initialize(); $this->_cache = []; if ($this->has_method('define_columns')) { $this->define_columns(); } $this->lookup_columns(); } /** * Gets the object name * * @return string */ public function get_object_name() { return $this->_object_name; } /** * Gets the name of the table * * @global string $table_prefix * @return string */ public function get_table_name() { global $table_prefix; global $wpdb; $prefix = $table_prefix; if ($wpdb != null && $wpdb->prefix != null) { $prefix = $wpdb->prefix; } return apply_filters('ngg_datamapper_table_name', $prefix . $this->_object_name, $this->_object_name); } /** * Looks up using SQL the columns existing in the database, result is cached. */ public function lookup_columns() { // Avoid doing multiple SHOW COLUMNS if we can help it. $key = \Imagely\NGG\Util\Transient::create_key('col_in_' . $this->get_table_name(), 'columns'); $this->_table_columns = \Imagely\NGG\Util\Transient::fetch($key, false); if (!$this->_table_columns) { $this->object->update_columns_cache(); } return $this->_table_columns; } /** * Looks up using SQL the columns existing in the database */ public function update_columns_cache() { $key = \Imagely\NGG\Util\Transient::create_key('col_in_' . $this->get_table_name(), 'columns'); global $wpdb; $this->_table_columns = []; // $wpdb->prepare() cannot be used just yet as it only supported the %i placeholder for column names as of // WordPress 6.2 which is newer than NextGEN's current minimum WordPress version. // // TODO: Once NextGEN's minimum WP version is 6.2 or higher use wpdb->prepare() here. // // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared foreach ($wpdb->get_results("SHOW COLUMNS FROM {$this->get_table_name()}") as $row) { $this->_table_columns[] = $row->Field; } \Imagely\NGG\Util\Transient::update($key, $this->_table_columns); } /** * Determines whether a column is present for the table * * @param string $column_name * @return bool */ public function has_column($column_name) { if (empty($this->object->_table_columns)) { $this->object->lookup_columns(); } return array_search($column_name, $this->object->_table_columns) !== false; } /** * Sets the name of the factory method used to create a model for this entity * * @param string $method_name */ public function set_model_factory_method($method_name) { $this->_model_factory_method = $method_name; } /** * Gets the name of the factory method used to create a model for this entity */ public function get_model_factory_method() { return $this->_model_factory_method; } /** * Gets the name of the primary key column * * @return string */ public function get_primary_key_column() { return $this->_primary_key_column; } /** * Gets the class name of the driver used * * @return string */ public function get_driver_class_name() { return get_called_class(); } public function cache($key, $results) { if ($this->object->_use_cache) { $this->_cache[$key] = $results; } } public function get_from_cache($key, $default = null) { if ($this->object->_use_cache && isset($this->_cache[$key])) { return $this->_cache[$key]; } else { return $default; } } public function flush_query_cache() { $this->_cache = []; } /** * Used to clean column or table names in a SQL query * * @param string $val * @return string */ public function _clean_column($val) { return str_replace([';', "'", '"', '`'], [''], $val); } /** * Notes that a particular columns is serialized, and should be unserialized when converted to an entity * * @param $column */ public function add_serialized_column($column) { $this->object->_serialized_columns[] = $column; } public function unserialize_columns($object) { foreach ($this->object->_serialized_columns as $column) { if (isset($object->{$column}) && is_string($object->{$column})) { $object->{$column} = \Imagely\NGG\Util\Serializable::unserialize($object->{$column}); } } } /** * Fetches the first row * * @param array $conditions (optional) * @param object|bool $model (optional) * @return null|object */ public function find_first($conditions = array(), $model = false) { $results = $this->object->select()->where_and($conditions)->limit(1, 0)->run_query(); if ($results) { return $model ? $this->object->convert_to_model($results[0]) : $results[0]; } else { return null; } } /** * Queries all rows * * @param array $conditions (optional) * @param object|bool $model (optional) * @return array */ public function find_all($conditions = array(), $model = false) { // Sometimes users will forget that the first parameter is conditions, and think it's $model instead. if ($conditions === true) { $conditions = []; $model = true; } if ($conditions === false) { $conditions = []; } $results = $this->object->select()->where_and($conditions)->run_query(); if ($results && $model) { foreach ($results as &$r) { $r = $this->object->convert_to_model($r); } } return $results; } /** * Filters the query using conditions: * E.g. * array("post_title = %s", "Foo") * array( * array("post_title = %s", "Foo"), * * ) * * @param array $conditions (optional) * @return self */ public function where_and($conditions = array()) { return $this->object->_where($conditions, 'AND'); } /** * @param array $conditions (optional) * @return self */ public function where_or($conditions = array()) { return $this->object->where($conditions, 'OR'); } /** * @param array $conditions (optional) * @return self */ public function where($conditions = array()) { return $this->object->_where($conditions, 'AND'); } /** Parses the where clauses * They could look like the following: * * array( * "post_id = 1" * array("post_id = %d", 1), * ) * * or simply "post_id = 1" * * @param array|string $conditions * @param string $operator * @return ExtensibleObject */ public function _where($conditions, $operator) { $where_clauses = []; // If conditions is not an array, make it one. if (!is_array($conditions)) { $conditions = [$conditions]; } elseif (!empty($conditions) && !is_array($conditions[0])) { // Just a single condition was passed, but with a bind. $conditions = [$conditions]; } // Iterate through each condition. foreach ($conditions as $condition) { if (is_string($condition)) { $clause = $this->object->_parse_where_clause($condition); if ($clause) { $where_clauses[] = $clause; } } else { $clause = array_shift($condition); $clause = $this->object->_parse_where_clause($clause, $condition); if ($clause) { $where_clauses[] = $clause; } } } // Add where clause to query. if ($where_clauses) { $this->object->_add_where_clause($where_clauses, $operator); } return $this->object; } /** * Parses a where clause and returns an associative array * representing the query * * E.g. parse_where_clause("post_title = %s", "Foo Bar") * * @global wpdb $wpdb * @param string $condition * @return array */ public function _parse_where_clause($condition) { $column = ''; $operator = ''; $value = ''; $numeric = true; // Substitute any placeholders. global $wpdb; $binds = func_get_args(); $binds = isset($binds[1]) ? $binds[1] : []; // first argument is the condition. foreach ($binds as &$bind) { // A bind could be an array, used for the 'IN' operator // or a simple scalar value. We need to convert arrays // into scalar values. if (is_object($bind)) { $bind = (array) $bind; } if (is_array($bind) && !empty($bind)) { foreach ($bind as &$val) { if (!is_numeric($val)) { $val = '"' . addslashes($val) . '"'; $numeric = false; } } $bind = implode(',', $bind); } elseif (is_array($bind) && empty($bind)) { $bind = 'NULL'; } elseif (!is_numeric($bind)) { $numeric = false; } } if ($binds) { // PHPCS triggers a false positive on this; $condition is a string that contains the placeholders. // // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared $condition = $wpdb->prepare($condition, $binds); } // Parse the where clause. if (preg_match('/^[^\\s]+/', $condition, $match)) { $column = trim(array_shift($match)); $condition = str_replace($column, '', $condition); } if (preg_match('/(NOT )?IN|(NOT )?LIKE|(NOT )?BETWEEN|[=!<>]+/i', $condition, $match)) { $operator = trim(array_shift($match)); $condition = str_replace($operator, '', $condition); $operator = strtolower($operator); $value = trim($condition); } // Values will automatically be quoted, so remove them // If the value is part of an IN clause or BETWEEN clause and // has multiple values, we attempt to split the values apart into an // array and iterate over them individually. if ($operator == 'in') { $values = preg_split("/'?\\s?(,)\\s?'?/i", $value); } elseif ($operator == 'between') { $values = preg_split("/'?\\s?(AND)\\s?'?/i", $value); } // If there's a single value, treat it as an array so that we // can still iterate. if (empty($values)) { $values = [$value]; } foreach ($values as $index => $value) { $value = preg_replace("/^(\\()?'/", '', $value); $value = preg_replace("/'(\\))?\$/", '', $value); $values[$index] = $value; } if (count($values) > 1) { $value = $values; } // Return the WP Query meta query parameters. $retval = ['column' => $column, 'value' => $value, 'compare' => strtoupper($operator), 'type' => $numeric ? 'numeric' : 'string']; return $retval; } public function strip_slashes($stdObject_or_array_or_string) { /** * Some objects have properties that are recursive objects. To avoid this we have to keep track * of what objects we've already processed when we're running this method recursively */ static $level = 0; static $processed_objects = array(); ++$level; $processed_objects[] = $stdObject_or_array_or_string; if (is_string($stdObject_or_array_or_string)) { $stdObject_or_array_or_string = str_replace("\\'", "'", str_replace('\\"', '"', str_replace('\\\\', '\\', $stdObject_or_array_or_string))); } elseif (is_object($stdObject_or_array_or_string) && !in_array($stdObject_or_array_or_string, $processed_objects)) { foreach (get_object_vars($stdObject_or_array_or_string) as $key => $val) { if ($val != $stdObject_or_array_or_string && $key != '_mapper') { $stdObject_or_array_or_string->{$key} = $this->strip_slashes($val); } } $processed_objects[] = $stdObject_or_array_or_string; } elseif (is_array($stdObject_or_array_or_string)) { foreach ($stdObject_or_array_or_string as $key => $val) { if ($key != '_mixins') { $stdObject_or_array_or_string[$key] = $this->strip_slashes($val); } } } --$level; if ($level == 0) { $processed_objects = []; } return $stdObject_or_array_or_string; } /** * Converts a stdObject entity to a model * * @param object $stdObject * @param string|bool $context (optional) * @return object */ public function convert_to_model($stdObject, $context = false) { // Create a factory. $retval = null; try { $this->object->_convert_to_entity($stdObject); } catch (Exception $ex) { throw new E_InvalidEntityException($ex); } $retval = $this->object->create($stdObject, $context); return $retval; } /** * Determines whether an object is actually a model * * @param mixed $obj * @return bool */ public function is_model($obj) { return is_subclass_of($obj, 'C_DataMapper_Model') or get_class($obj) == 'C_DataMapper_Model'; } /** * If a field has no value, then use the default value. * * @param stdClass|C_DataMapper_Model $object */ public function _set_default_value($object) { $array = null; $field = null; $default_value = null; // The first argument MUST be an object. if (!is_object($object)) { throw new E_InvalidEntityException(); } // This method has two signatures: // 1) _set_default_value($object, $field, $default_value) // 2) _set_default_value($object, $array_field, $field, $default_value). // Handle #1. $args = func_get_args(); if (count($args) == 4) { list($object, $array, $field, $default_value) = $args; if (!isset($object->{$array})) { $object->{$array} = []; $object->{$array}[$field] = null; } else { $arr =& $object->{$array}; if (!isset($arr[$field])) { $arr[$field] = null; } } $array =& $object->{$array}; $value =& $array[$field]; if ($value === '' or is_null($value)) { $value = $default_value; } } else { list($object, $field, $default_value) = $args; if (!isset($object->{$field})) { $object->{$field} = null; } $value = $object->{$field}; if ($value === '' or is_null($value)) { $object->{$field} = $default_value; } } } public function get_defined_column_names() { return array_keys($this->object->_columns); } public function has_defined_column($name) { $columns = $this->object->_columns; return isset($columns[$name]); } public function cast_columns($entity) { foreach ($this->object->_columns as $key => $properties) { $value = property_exists($entity, $key) ? $entity->{$key} : null; $default_value = $properties['default_value']; if (!is_null($value) && $value !== $default_value) { $column_type = $this->object->_columns[$key]['type']; if (preg_match('/varchar|text/i', $column_type)) { if (!is_array($value) && !is_object($value)) { $entity->{$key} = strval($value); } } elseif (preg_match('/decimal|numeric|double|float/i', $column_type)) { $entity->{$key} = floatval($value); } elseif (preg_match('/int/i', $column_type)) { $entity->{$key} = intval($value); } elseif (preg_match('/bool/i', $column_type)) { $entity->{$key} = $value ? true : false; } } else { $entity->{$key} = $default_value; } } return $entity; } } /** * Provides instance methods for C_CustomPost_DataMapper_Driver * * @mixin C_CustomPost_DataMapper_Driver */ class Mixin_CustomPost_DataMapper_Driver extends Mixin { /** * Used to select which fields should be returned. NOT currently used by * this implementation of the datamapper driver * * @param string $fields * @return C_DataMapper_Driver_Base */ public function select($fields = '*') { $this->object->_query_args = ['post_type' => $this->object->get_object_name(), 'paged' => false, 'fields' => $fields, 'post_status' => 'any', 'datamapper' => true, 'posts_per_page' => -1, 'is_select' => true, 'is_delete' => false]; return $this->object; } /** * Destroys/deletes an entity from the database * * @param object|C_DataMapper_Model $entity * @param bool $skip_trash (optional) Default = true * @return bool */ public function destroy($entity, $skip_trash = true) { $retval = false; $key = $this->object->get_primary_key_column(); // Find the id of the entity. if (is_object($entity) && isset($entity->{$key})) { $id = (int) $entity->{$key}; } else { $id = (int) $entity; } // If we have an ID, then delete the post. if (is_integer($id)) { // TODO: We assume that we can skip the trash. Is that correct? // FYI, Deletes postmeta as wells. if (is_object(wp_delete_post($id, true))) { $retval = true; } } return $retval; } /** * Saves an entity to the database * * @param object $entity * @return int Post ID */ public function _save_entity($entity) { $post = $this->object->_convert_entity_to_post($entity); $primary_key = $this->object->get_primary_key_column(); // TODO: unsilence this. WordPress 3.9-beta2 is generating an error that should be corrected before its // final release. if ($post_id = @wp_insert_post($post)) { $new_entity = $this->object->find($post_id, true); if ($new_entity) { foreach ($new_entity->get_entity() as $key => $value) { $entity->{$key} = $value; } } // Save properties as post meta. $this->object->_flush_and_update_postmeta($post_id, $entity instanceof stdClass ? $entity : $entity->get_entity()); $entity->{$primary_key} = $post_id; // Clean cache. $this->object->_cache = []; } $entity->id_field = $primary_key; return $post_id; } /** * Starts a new DELETE statement */ public function delete() { $this->object->select(); $this->object->_query_args['is_select'] = false; $this->object->_query_args['is_delete'] = true; return $this->object; } /** * Returns the title of the post. Used when post_title is not set * * @param stdClass $entity * @return string */ public function get_post_title($entity) { return "Untitled {$this->object->get_object_name()}"; } /** * Returns the excerpt of the post. Used when post_excerpt is not set * * @param stdClass $entity * @return string */ public function get_post_excerpt($entity) { return ''; } } /** * Class C_CustomTable_DataMapper_Driver * * @mixin C_CustomTable_DataMapper_Driver_Mixin */ class C_CustomTable_DataMapper_Driver extends C_DataMapper_Driver_Base { /** * The WordPress Database Connection * * @var wpdb */ public $_where_clauses = array(); public $_order_clauses = array(); public $_group_by_columns = array(); public $_limit_clause = ''; public $_select_clause = ''; public $_delete_clause = ''; public $_use_cache = true; public function define($object_name = false, $context = false) { parent::define($object_name, $context); $this->add_mixin('C_CustomTable_DataMapper_Driver_Mixin'); $this->implement('I_CustomTable_DataMapper'); } public function initialize($object_name = false) { parent::initialize(); if (!isset($this->_primary_key_column)) { $this->_primary_key_column = $this->_lookup_primary_key_column(); } $this->migrate(); } /** * Returns the database connection object for WordPress * * @global wpdb $wpdb * @return wpdb */ public function _wpdb() { global $wpdb; return $wpdb; } /** * Looks up the primary key column for this table */ public function _lookup_primary_key_column() { $key = $this->_wpdb()->get_row("SHOW INDEX FROM {$this->get_table_name()} WHERE Key_name='PRIMARY'", ARRAY_A); if (!$key) { throw new Exception("Please specify the primary key for {$this->get_table_name()}"); } return $key['Column_name']; } /** * Gets the name of the primary key column * * @return string */ public function get_primary_key_column() { return $this->object->_primary_key_column; } /** * Determines whether we're going to execute a SELECT statement * * @return boolean */ public function is_select_statement() { return $this->object->_select_clause ? true : false; } /** * Determines if we're going to be executing a DELETE statement * * @return bool */ public function is_delete_statement() { return $this->object->_delete_clause ? true : false; } /** * Orders the results of the query * This method may be used multiple of times to order by more than column * * @param $order_by * @param $direction * @return object */ public function order_by($order_by, $direction = 'ASC') { // We treat the rand() function as an exception. if (preg_match('/rand\\(\\s*\\)/', $order_by)) { $order = 'rand()'; } else { $order_by = $this->object->_clean_column($order_by); // If the order by clause is a column, then it should be backticked. if ($this->object->has_column($order_by)) { $order_by = "`{$order_by}`"; } $direction = $this->object->_clean_column($direction); $order = "{$order_by} {$direction}"; } $this->object->_order_clauses[] = $order; return $this->object; } /** * Specifies a limit and optional offset * * @param integer $max * @param integer $offset * @return object */ public function limit($max, $offset = 0) { if ($offset) { $limit = $this->_wpdb()->prepare('LIMIT %d, %d', max(0, $offset), $max); } else { $limit = $this->_wpdb()->prepare('LIMIT %d', max(0, $max)); } if ($limit) { $this->object->_limit_clause = $limit; } return $this->object; } /** * Specifics a group by clause for one or more columns * * @param array|string $columns * @return object */ public function group_by($columns = array()) { if (!is_array($columns)) { $columns = [$columns]; } $this->object->_group_by_columns = array_merge($this->object->_group_by_columns, $columns); return $this->object; } /** * Adds a where clause to the driver * * @param array $where_clauses * @param string $join */ public function _add_where_clause($where_clauses, $join) { $clauses = []; foreach ($where_clauses as $clause) { extract($clause); if ($this->object->has_column($column)) { $column = "`{$column}`"; } if (!is_array($value)) { $value = [$value]; } foreach ($value as $index => $v) { $v = $clause['type'] == 'numeric' ? $v : "'{$v}'"; $value[$index] = $v; } if ($compare == 'BETWEEN') { $value = "{$value[0]} AND {$value[1]}"; } else { $value = implode(', ', $value); if (strpos($compare, 'IN') !== false) { $value = "({$value})"; } } $clauses[] = "{$column} {$compare} {$value}"; } $this->object->_where_clauses[] = implode(" {$join} ", $clauses); } /** * Returns the total number of entities known * * @return int */ public function count() { $retval = 0; $key = $this->object->get_primary_key_column(); $results = $this->object->run_query("SELECT COUNT(`{$key}`) AS `{$key}` FROM `{$this->object->get_table_name()}`"); if ($results && isset($results[0]->{$key})) { $retval = (int) $results[0]->{$key}; } return $retval; } /** * Run the query * * @param string|bool $sql (optional) run the specified SQL * @param object|bool $model (optional) * @param bool $no_entities (optional) * @return array */ public function run_query($sql = false, $model = false, $no_entities = false) { $results = false; $retval = []; // Or generate SQL query. if (!$sql) { $sql = $this->object->get_generated_query($no_entities); } // If we have a SQL statement to execute, then heck, execute it! if ($sql) { if ($this->object->debug) { var_dump($sql); } // Try getting the result from cache first. if ($this->is_select_statement() && $this->object->_use_cache) { $results = $this->object->get_from_cache($sql); } } if (!$results) { $this->_wpdb()->query($sql); $results = $this->_wpdb()->last_result; if ($this->is_select_statement()) { $this->object->cache($sql, $results); } } if ($results) { $retval = []; // For each row, create an entity, update it's properties, and add it to the result set. if ($no_entities) { $retval = $results; } else { $id_field = $this->get_primary_key_column(); foreach ($results as $row) { if ($row) { if (isset($row->{$id_field})) { if ($model) { $retval[] = $this->object->convert_to_model($row); } else { $retval[] = $this->object->_convert_to_entity($row); } } } } } } elseif ($this->object->debug) { var_dump('No entities returned from query'); } // Just a safety check. if (!$retval) { $retval = []; } return $retval; } /** * Converts an entity to something suitable for inserting into a database column * * @param object $entity * @return array */ public function _convert_to_table_data($entity) { $data = (array) $entity; foreach ($data as $key => $value) { if (is_array($value)) { $data[$key] = $this->object->serialize($value); } } return $data; } /** * Fetches the last row * * @param array $conditions * @return object */ public function find_last($conditions = array(), $model = false) { $retval = null; // Get row number for the last row. $this->select()->limit(1)->order_by('date', 'DESC'); if ($conditions) { $this->where_and($conditions); } $results = $this->run_query(); if ($results) { $retval = $model ? $this->object->convert_to_model($results[0]) : $results[0]; } return $retval; } public function get_column_names() { return array_keys($this->object->_columns); } /** * Migrates the schema of the database */ public function migrate() { if (!$this->object->_columns) { throw new E_ColumnsNotDefinedException("Columns not defined for {$this->get_table_name()}"); } $added = false; $removed = false; // Add any missing columns. foreach ($this->object->_columns as $key => $properties) { if (!in_array($key, $this->object->_table_columns)) { if ($this->object->_add_column($key, $properties['type'], $properties['default_value'])) { $added = true; } } } if ($added or $removed) { $this->object->lookup_columns(); } } public function _init() { $this->object->_where_clauses = []; $this->object->_order_clauses = []; $this->object->_group_by_columns = []; $this->object->_limit_clause = ''; $this->object->_select_clause = ''; } } /** * Provides instance methods for C_CustomTable_DataMapper_Driver * * @mixin C_CustomTable_DataMapper_Driver */ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin { /** * Selects which fields to collect from the table. * NOTE: Not protected from SQL injection - DO NOT let your users specify DB columns * * @param string $fields * @return object */ public function select($fields = null) { // Create a fresh slate. $this->object->_init(); if (!$fields or $fields == '*') { $fields = $this->get_table_name() . '.*'; } $this->object->_select_clause = "SELECT {$fields}"; return $this->object; } /** * Start a delete statement */ public function delete() { // Create a fresh slate. $this->object->_init(); $this->object->_delete_clause = 'DELETE'; return $this->object; } /** * Stores the entity * * @param object $entity * @return bool|object */ public function _save_entity($entity) { $retval = false; unset($entity->id_field); $primary_key = $this->object->get_primary_key_column(); if (isset($entity->{$primary_key}) && $entity->{$primary_key} > 0) { if ($this->object->_update($entity)) { $retval = intval($entity->{$primary_key}); } } else { $retval = $this->object->_create($entity); if ($retval) { $new_entity = $this->object->find($retval); foreach ($new_entity as $key => $value) { $entity->{$key} = $value; } } } $entity->id_field = $primary_key; // Clean cache. if ($retval) { $this->object->_cache = []; } return $retval; } /** * Destroys/deletes an entity * * @param object|C_DataMapper_Model|int $entity * @return boolean */ public function destroy($entity) { $retval = false; $key = $this->object->get_primary_key_column(); // Find the id of the entity. if (is_object($entity) && isset($entity->{$key})) { $id = (int) $entity->{$key}; } else { $id = (int) $entity; } // If we have an ID, then delete the post. if (is_numeric($id)) { $sql = $this->object->_wpdb()->prepare("DELETE FROM `{$this->object->get_table_name()}` WHERE {$key} = %s", $id); $retval = $this->object->_wpdb()->query($sql); } return $retval; } /** * Creates a new record in the database * * @param object $entity * @return boolean */ public function _create($entity) { $retval = false; $id = $this->object->_wpdb()->insert($this->object->get_table_name(), $this->object->_convert_to_table_data($entity)); if ($id) { $key = $this->object->get_primary_key_column(); $retval = $entity->{$key} = intval($this->object->_wpdb()->insert_id); } return $retval; } /** * Updates a record in the database * * @param object $entity * @return int|bool */ public function _update($entity) { $key = $this->object->get_primary_key_column(); return $this->object->_wpdb()->update($this->object->get_table_name(), $this->object->_convert_to_table_data($entity), [$key => $entity->{$key}]); } public function _add_column($column_name, $datatype, $default_value = null) { $sql = "ALTER TABLE `{$this->get_table_name()}` ADD COLUMN `{$column_name}` {$datatype}"; if ($default_value) { if (is_string($default_value)) { $default_value = str_replace("'", "\\'", $default_value); } $sql .= ' NOT NULL DEFAULT ' . (is_string($default_value) ? "'{$default_value}" : "{$default_value}"); } $return = $this->object->_wpdb()->query($sql) ? true : false; $this->object->update_columns_cache(); return $return; } public function _remove_column($column_name) { $sql = "ALTER TABLE `{$this->get_table_name()}` DROP COLUMN `{$column_name}`"; $return = $this->object->_wpdb()->query($sql) ? true : false; $this->object->update_columns_cache(); return $return; } /** * Returns the generated SQL query to be executed * * @param bool $no_entities Default = false * @return string */ public function get_generated_query($no_entities = false) { $sql = []; if ($this->object->is_select_statement()) { $sql[] = $this->object->_select_clause; } elseif ($this->object->is_delete_statement()) { $sql[] = $this->object->_delete_clause; } $sql[] = 'FROM `' . $this->object->get_table_name() . '`'; $where_clauses = []; foreach ($this->object->_where_clauses as $where) { $where_clauses[] = '(' . $where . ')'; } if ($where_clauses) { $sql[] = 'WHERE ' . implode(' AND ', $where_clauses); } if ($this->object->is_select_statement()) { if ($this->object->_group_by_columns) { $sql[] = 'GROUP BY ' . implode(', ', $this->object->_group_by_columns); } if ($this->object->_order_clauses) { $sql[] = 'ORDER BY ' . implode(', ', $this->object->_order_clauses); } if ($this->object->_limit_clause) { $sql[] = $this->object->_limit_clause; } } return implode(' ', $sql); } } /** * Class C_CustomPost_DataMapper_Driver * * @mixin Mixin_CustomPost_DataMapper_Driver * @implements I_CustomPost_DataMapper */ class C_CustomPost_DataMapper_Driver extends C_DataMapper_Driver_Base { public $_query_args = array(); public $_primary_key_column = 'ID'; public $_use_cache = true; public $_cache; public static $_post_table_columns = array(); public function define($object_name = false, $context = false) { if (strlen($object_name) > 20) { throw new Exception('The custom post name can be no longer than 20 characters long'); } parent::define($object_name, $context); $this->add_mixin('Mixin_CustomPost_DataMapper_Driver'); $this->implement('I_CustomPost_DataMapper'); } public function lookup_columns() { if (empty(self::$_post_table_columns)) { $columns = parent::lookup_columns(); foreach ($columns as $column) { self::$_post_table_columns[] = $column; } } else { foreach (self::$_post_table_columns as $column) { $this->_table_columns[] = $column; } } } /** * Gets the name of the table * * @global string $table_prefix * @return string */ public function get_table_name() { global $table_prefix; return $table_prefix . 'posts'; } /** * Returns a list of querable table columns for posts * * @return array */ public function _get_querable_table_columns() { return ['name', 'author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count']; } /** * Specifies an order clause * * @param string $order_by * @param string $direction * @return C_DataMapper_Driver_Base */ public function order_by($order_by, $direction = 'ASC') { // Make an exception for the rand() method. $order_by = preg_replace('/rand\\(\\s*\\)/', 'rand', $order_by); if (in_array($order_by, $this->object->_get_querable_table_columns())) { $this->object->_query_args['orderby'] = $order_by; } else { // ordering by a meta value. $this->object->_query_args['orderby'] = 'meta_value'; $this->object->_query_args['meta_key'] = $order_by; } $this->object->_query_args['order'] = $direction; return $this->object; } /** * Specifies a limit and optional offset * * @param int $max * @param int|bool $offset (optional) * @return object */ public function limit($max, $offset = false) { if ($max) { $this->object->_query_args['paged'] = true; if ($offset) { $this->object->_query_args['offset'] = $offset; } else { unset($this->object->_query_args['offset']); } $this->object->_query_args['posts_per_page'] = $max; } return $this->object; } /** * Specifies a list of columns to group by * * @param array|string $columns * @return object */ public function group_by($columns = array()) { if (!isset($this->object->_query_args['group_by_columns'])) { $this->object->_query_args['group_by_columns'] = $columns; } else { $this->object->_query_args['group_by_columns'] = array_merge($this->object->_query_args['group_by_columns'], $columns); } return $this->object; } /** * Adds a WP_Query where clause * * @param array $where_clauses * @param string $join */ public function _add_where_clause($where_clauses, $join) { foreach ($where_clauses as $clause) { // Determine where what the where clause is comparing. switch ($clause['column']) { case 'author': case 'author_id': $this->object->_query_args['author'] = $clause['value']; break; case 'author_name': $this->object->_query_args['author_name'] = $clause['value']; break; case 'cat': case 'cat_id': case 'category_id': switch ($clause['compare']) { case '=': case 'BETWEEN': case 'IN': if (!isset($this->object->_query_args['category__in'])) { $this->object->_query_args['category__in'] = []; } $this->object->_query_args['category__in'][] = $clause['value']; break; case '!=': case 'NOT BETWEEN': case 'NOT IN': if (!isset($this->object->_query_args['category__not_in'])) { $this->object->_query_args['category__not_in'] = []; } $this->object->_query_args['category__not_in'][] = $clause['value']; break; } break; case 'category_name': $this->object->_query_args['category_name'] = $clause['value']; break; case 'post_id': case $this->object->get_primary_key_column(): switch ($clause['compare']) { case '=': case 'IN': case 'BETWEEN': if (!isset($this->object->_query_args['post__in'])) { $this->object->_query_args['post__in'] = []; } $this->object->_query_args['post__in'][] = $clause['value']; break; default: if (!isset($this->object->_query_args['post__not_in'])) { $this->object->_query_args['post__not_in'] = []; } $this->object->_query_args['post__not_in'][] = $clause['value']; break; } break; case 'pagename': case 'postname': case 'page_name': case 'post_name': if ($clause['compare'] == 'LIKE') { $this->object->_query_args['page_name__like'] = $clause['value']; } elseif ($clause['compare'] == '=') { $this->object->_query_args['pagename'] = $clause['value']; } elseif ($clause['compare'] == 'IN') { $this->object->_query_args['page_name__in'] = $clause['value']; } break; case 'post_title': // Post title uses custom WHERE clause. if ($clause['compare'] == 'LIKE') { $this->object->_query_args['post_title__like'] = $clause['value']; } else { $this->object->_query_args['post_title'] = $clause['value']; } break; default: // Must be metadata. $clause['key'] = $clause['column']; unset($clause['column']); // Convert values to array, when required. if (in_array($clause['compare'], ['IN', 'BETWEEN'])) { $clause['value'] = explode(',', $clause['value']); foreach ($clause['value'] as &$val) { if (!is_numeric($val)) { // In the _parse_where_clause() method, we // quote the strings and add slashes. $val = stripslashes($val); $val = substr($val, 1, strlen($val) - 2); } } } if (!isset($this->object->_query_args['meta_query'])) { $this->object->_query_args['meta_query'] = []; } $this->object->_query_args['meta_query'][] = $clause; break; } } // If any where clauses have been added, specify how the conditions // will be conbined/joined. if (isset($this->object->_query_args['meta_query'])) { $this->object->_query_args['meta_query']['relation'] = $join; } } /** * Converts a post to an entity * * @param \stdClass $post * @param boolean $model * @return \stdClass */ public function convert_post_to_entity($post, $model = false) { $entity = new stdClass(); // Unserialize the post_content_filtered field. if (is_string($post->post_content_filtered)) { if ($post_content = $this->object->unserialize($post->post_content_filtered)) { foreach ($post_content as $key => $value) { $post->{$key} = $value; } } } // Unserialize the post content field. if (is_string($post->post_content)) { if ($post_content = $this->object->unserialize($post->post_content)) { foreach ($post_content as $key => $value) { $post->{$key} = $value; } } } // Copy post fields to entity. unset($post->post_content); unset($post->post_content_filtered); foreach ($post as $key => $value) { $entity->{$key} = $value; } $this->object->_convert_to_entity($entity); return $model ? $this->object->convert_to_model($entity) : $entity; } /** * Converts an entity to a post * * @param object $entity * @return object */ public function _convert_entity_to_post($entity) { // Was a model passed instead of an entity? $post = $entity; if (!$entity instanceof stdClass) { $post = $entity->get_entity(); } // Create the post content. $post_content = clone $post; foreach ($this->object->_table_columns as $column) { unset($post_content->{$column}); } unset($post->id_field); unset($post->post_content_filtered); unset($post->post_content); $post->post_content = $this->object->serialize($post_content); $post->post_content_filtered = $post->post_content; $post->post_type = $this->object->get_object_name(); // Sometimes an entity can contain a data stored in an array or object // Those will be removed from the post, and serialized in the // post_content field. foreach ($post as $key => $value) { if (in_array(strtolower(gettype($value)), ['object', 'array'])) { unset($post->{$key}); } } // A post required a title. if (!property_exists($post, 'post_title')) { $post->post_title = $this->object->get_post_title($post); } // A post also requires an excerpt. if (!property_exists($post, 'post_excerpt')) { $post->post_excerpt = $this->object->get_post_excerpt($post); } return $post; } /** * Returns the WordPress database class * * @global wpdb $wpdb * @return wpdb */ public function _wpdb() { global $wpdb; return $wpdb; } /** * Flush and update all postmeta for a particular post * * @param int $post_id */ public function _flush_and_update_postmeta($post_id, $entity, $omit = array()) { // We need to insert post meta data for each property // Unfortunately, that means flushing all existing postmeta // and then inserting new values. Depending on the number of // properties, this could be slow. So, we directly access the database. /* @var $wpdb wpdb */ global $wpdb; if (!is_array($omit)) { $omit = [$omit]; } // By default, we omit creating meta values for columns in the posts table. $omit = array_merge($omit, $this->object->_table_columns); // Delete the existing meta values. $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE post_id = %s", $post_id)); // Create query for new meta values. $sql_parts = []; foreach ($entity as $key => $value) { if (in_array($key, $omit)) { continue; } if (is_array($value) or is_object($value)) { $value = $this->object->serialize($value); } $sql_parts[] = $wpdb->prepare('(%s, %s, %s)', $post_id, $key, $value); } // The following $sql_parts is already sent through $wpdb->prepare() -- look directly above this line // // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared $wpdb->query("INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) VALUES " . implode(',', $sql_parts)); } /** * Determines whether the current statement is SELECT * * @return boolean */ public function is_select_statement() { return isset($this->object->_query_args['is_select']) && $this->object->_query_args['is_select']; } /** * Determines whether the current statement is DELETE * * @return bool */ public function is_delete_statement() { return isset($this->object->_query_args['is_delete']) && $this->object->_query_args['is_delete']; } /** * Runs the query * * @param string|bool $sql (optional) Run the specified query * @param object|bool $model (optional) * @param bool $convert_to_entities (optional) Default = true * @return array */ public function run_query($sql = false, $model = false, $convert_to_entities = true) { $retval = []; $results = []; // All of our custom fields are stored as post meta, but is also stored as a serialized // value in the post_content field. Because of this, we don't need to look up and cache the // post meta values. $this->object->_query_args['update_post_meta_cache'] = false; $this->object->_query_args['update_post_meta_cache'] = false; $this->object->_query_args['no_found_posts'] = false; // Don't cache any manual SQL query. if ($sql) { $this->object->_query_args['cache_results'] = false; $this->object->_query_args['custom_sql'] = $sql; } // If this is a select query, then try fetching the results from cache. $cache_key = md5(json_encode($this->object->_query_args)); if ($this->is_select_statement() && $this->object->_use_cache) { $results = $this->object->get_from_cache($cache_key); } // Execute the query. if (!$results) { $query = new WP_Query(['datamapper' => true]); if (isset($this->object->debug)) { $this->object->_query_args['debug'] = true; } $query->query_vars = $this->object->_query_args; add_action('pre_get_posts', [&$this, 'set_query_args'], PHP_INT_MAX - 1, 1); $results = $query->get_posts(); // Cache the result. if ($this->is_select_statement()) { $this->object->cache($cache_key, $results); } remove_action('pre_get_posts', [&$this, 'set_query_args'], PHP_INT_MAX - 1); } // Convert the result. if ($convert_to_entities) { foreach ($results as $row) { $retval[] = $this->object->convert_post_to_entity($row, $model); } } else { $retval = $results; } // Ensure that we return an empty array when there are no results. if (!$retval) { $retval = []; } return $retval; } /** * Ensure that the query args are set. We need to do this in case a third-party * plugin overrides our query * * @param $query */ public function set_query_args($query) { if ($query->get('datamapper')) { $query->query_vars = $this->object->_query_args; } $filter = isset($query->query_vars['suppress_filters']) ? $query->query_vars['suppress_filters'] : false; $query->query_vars['suppress_filters'] = apply_filters('wpml_suppress_filters', $filter); } /** * Fetches the last row * * @param array $conditions (optional) * @param object|bool $model (optional) * @return object */ public function find_last($conditions = array(), $model = false) { $retval = null; // Get row number for the last row. $table_name = $this->object->_clean_column($this->object->get_table_name()); $object_name = $this->object->_clean_column($this->object->get_object_name()); $sql = $this->_wpdb()->prepare("SELECT COUNT(*) FROM {$table_name} WHERE post_type = %s", $object_name); $count = $this->_wpdb()->get_var($sql); $offset = $count - 1; $this->select(); if ($conditions) { $this->where_and($conditions); } if ($offset) { $this->limit(1, $offset); } $results = $this->run_query(); if ($results) { $retval = $model ? $this->object->convert_to_model($results[0]) : $results[0]; } return $retval; } /** * Returns the number of total records/entities that exist * * @return int */ public function count() { $this->object->select($this->object->get_primary_key_column()); $retval = $this->object->run_query(false, false, false); return count($retval); } } /** * Provides instance methods for C_DataMapper_Driver_Base * * @mixin C_DataMapper_Driver_Base */ class Mixin_DataMapper_Driver_Base extends Mixin { /** * Serializes the data * * @param mixed $value * @return string */ public function serialize($value) { return \Imagely\NGG\Util\Serializable::serialize($value); } /** * Unserializes data using our proprietary format * * @param string $value * @return mixed */ public function unserialize($value) { return \Imagely\NGG\Util\Serializable::unserialize($value); } /** * Finds a partiular entry by id * * @param int|stdClass|C_DataMapper_Model $entity * @param object|bool $model (optional) * @return null|object */ public function find($entity, $model = false) { $retval = null; // Get primary key of the entity. $pkey = $this->object->get_primary_key_column(); if (!is_numeric($entity)) { $entity = isset($entity->{$pkey}) ? intval($entity->{$pkey}) : false; } // If we have an entity ID, then get the record. if ($entity) { $results = $this->object->select()->where_and(["{$pkey} = %d", $entity])->limit(1, 0)->run_query(); if ($results) { $retval = $model ? $this->object->convert_to_model($results[0]) : $results[0]; } } return $retval; } /** * Converts a stdObject to an Entity * * @param object $stdObject * @return object */ public function _convert_to_entity($stdObject) { // Add name of the id_field to the entity, and convert // the ID to an integer. $stdObject->id_field = $key = $this->object->get_primary_key_column(); // Cast columns to their appropriate data type. $this->cast_columns($stdObject); // Strip slashes. $this->strip_slashes($stdObject); // Unserialize columns. $this->unserialize_columns($stdObject); // Set defaults for this entity. if (!$this->has_default_values($stdObject)) { $this->object->set_defaults($stdObject); $stdObject->__defaults_set = true; } return $stdObject; } /** * Creates a new model * * @param object|array $properties (optional) * @param string|bool $context (optional) * @return C_DataMapper_Model */ public function create($properties = array(), $context = false) { $entity = $properties; $factory = C_Component_Factory::get_instance(); if (!is_object($properties)) { $entity = new stdClass(); foreach ($properties as $k => $v) { $entity->{$k} = $v; } } return $factory->create($this->object->get_model_factory_method(), $entity, $this->object, $context); } /** * Saves an entity * * @param stdClass|C_DataMapper_Model $entity * @return bool|int Resulting ID or false upon failure */ public function save($entity) { $retval = false; $model = $entity; $this->flush_query_cache(); // Attempt to use something else, most likely an associative array // TODO: Support assocative arrays. The trick is to support references // with dynamic calls using __call() and call_user_func_array(). if (is_array($entity)) { throw new E_InvalidEntityException(); } elseif (!$this->object->is_model($entity)) { unset($entity->__defaults_set); $model = $this->object->convert_to_model($entity); } // Validate the model. $model->validate(); if ($model->is_valid()) { $saved_entity = $model->get_entity(); unset($saved_entity->_errors); $retval = $this->object->_save_entity($saved_entity); } $this->flush_query_cache(); // We always return the same type of entity that we given. if (get_class($entity) == 'stdClass') { $model->get_entity(); } return $retval; } /** * Gets validation errors for the entity * * @param stdClass|C_DataMapper_Model $entity * @return array */ public function get_errors($entity) { $model = $entity; if (!$this->object->is_model($entity)) { $model = $this->object->convert_to_model($entity); } $model->validate(); return $model->get_errors(); } /** * Called to set defaults for the record/model/entity. * Subclasses and adapters should extend this method to provide their * implementation. The implementation should make use of the * _set_default_value() method * * @param object $stdObject */ public function set_defaults($stdObject) { } public function has_default_values($entity) { return isset($entity->__defaults_set) && $entity->__defaults_set == true; } public function define_column($name, $type, $default_value = null) { $this->object->_columns[$name] = ['type' => $type, 'default_value' => $default_value]; } } /** * Class C_DataMapper_Model * * @mixin Mixin_Validation * @mixin Mixin_DataMapper_Model_Instance_Methods * @mixin Mixin_DataMapper_Model_Validation */ class C_DataMapper_Model extends C_Component { var $_mapper; var $_stdObject; /** * Define the model */ public function define($mapper = null, $properties = array(), $context = false) { parent::define($context); $this->add_mixin('Mixin_Validation'); $this->add_mixin('Mixin_DataMapper_Model_Instance_Methods'); $this->add_mixin('Mixin_DataMapper_Model_Validation'); $this->implement('I_DataMapper_Model'); } /** * Creates a new entity for the specified mapper * * @param C_DataMapper_Driver_Base $mapper (optional) * @param array|object|bool $properties (optional) */ public function initialize($mapper = null, $properties = false) { $this->_mapper = $mapper; $this->_stdObject = $properties ? (object) $properties : new stdClass(); parent::initialize(); if (!$this->has_default_values()) { $this->set_defaults(); $this->_stdObject->__defaults_set = true; } } public function jsonSerialize() { return $this->get_entity(); } public function has_default_values() { return isset($this->_stdObject->__defaults_set) && $this->_stdObject->__defaults_set == true; } /** * Gets the data mapper for the entity * * @return C_DataMapper_Driver_Base */ public function get_mapper() { return $this->_mapper; } /** * Gets a property of the model * * @param string $property * @return mixed */ public function &__get($property) { if (isset($this->_stdObject->{$property})) { $retval =& $this->_stdObject->{$property}; return $retval; } else { // We need to assign NULL to a variable first, since only // variables can be returned by reference. $retval = null; return $retval; } } /** * Sets a property for the model * * @param mixed $property * @param mixed $value * @return mixed $value */ public function &__set($property, $value) { $retval = $this->_stdObject->{$property} = $value; return $retval; } public function __isset($property_name) { return isset($this->_stdObject->{$property_name}); } /** * Saves the entity * * @param array $updated_attributes * @return int|bool Object ID or false upon failure */ public function save($updated_attributes = array()) { $this->update_attributes($updated_attributes); return $this->get_mapper()->save($this->get_entity()); } /** * Updates the attributes for an object * * @param array $array (optional) */ public function update_attributes($array = array()) { foreach ($array as $key => $value) { $this->_stdObject->{$key} = $value; } } /** * Sets the default values for this model */ public function set_defaults() { $mapper = $this->get_mapper(); if ($mapper->has_method('set_defaults')) { $mapper->set_defaults($this); } } /** * Destroys or deletes the entity */ public function destroy() { return $this->get_mapper()->destroy($this->_stdObject); } /** * Determines whether the object is new or existing * * @return bool */ public function is_new() { return $this->id() ? false : true; } /** * Gets/sets the primary key * * @param null|int|string $value (optional) * @return mixed */ public function id($value = null) { $key = $this->get_mapper()->get_primary_key_column(); if ($value) { $this->__set($key, $value); } return $this->__get($key); } } /** * This mixin should be overwritten by other modules */ class Mixin_DataMapper_Model_Validation extends Mixin { public function validation() { return $this->object->is_valid(); } } class Mixin_DataMapper_Model_Instance_Methods extends Mixin { /** * Returns the associated entity */ public function &get_entity() { return $this->object->_stdObject; } }PK!`E^products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.phpnu[add_form( NGG_ADD_GALLERY_SLUG, 'upload_images' ); if ( ! is_multisite() || ( is_multisite() && $settings->get( 'wpmuImportFolder' ) ) ) { $forms->add_form( NGG_ADD_GALLERY_SLUG, 'import_media_library' ); $forms->add_form( NGG_ADD_GALLERY_SLUG, 'import_folder' ); } } public function check_upload_dir_permissions_requirement() { return wp_is_writable( \Imagely\NGG\DataStorage\Manager::get_instance()->get_upload_abspath() ); } public function check_domdocument_requirement() { return class_exists( 'DOMDocument' ); } function get_type_list() { return [ 'A_Import_Media_Library_Form' => 'adapter.import_media_library_form.php', 'A_Import_Folder_Form' => 'adapter.import_folder_form.php', 'A_Nextgen_Addgallery_Ajax' => 'adapter.nextgen_addgallery_ajax.php', 'A_Nextgen_Addgallery_Controller' => 'adapter.nextgen_addgallery_controller.php', 'A_Nextgen_Addgallery_Pages' => 'adapter.nextgen_addgallery_pages.php', 'A_Upload_Images_Form' => 'adapter.upload_images_form.php', ]; } function _register_adapters() { // AJAX operations aren't admin requests. $this->get_registry()->add_adapter( 'I_Ajax_Controller', 'A_NextGen_AddGallery_Ajax' ); if ( is_admin() ) { $this->get_registry()->add_adapter( 'I_Page_Manager', 'A_NextGen_AddGallery_Pages' ); $this->get_registry()->add_adapter( 'I_NextGen_Admin_Page', 'A_NextGen_AddGallery_Controller', NGG_ADD_GALLERY_SLUG ); $this->get_registry()->add_adapter( 'I_Form', 'A_Upload_Images_Form', 'upload_images' ); if ( ! is_multisite() || ( is_multisite() && \Imagely\NGG\Settings\Settings::get_instance()->get( 'wpmuImportFolder' ) ) ) { $this->get_registry()->add_adapter( 'I_Form', 'A_Import_Folder_Form', 'import_folder' ); $this->get_registry()->add_adapter( 'I_Form', 'A_Import_Media_Library_Form', 'import_media_library' ); } } } function _register_hooks() { add_action( 'admin_init', [ $this, 'register_requirements' ] ); add_action( 'admin_init', [ $this, 'register_scripts' ] ); } public function register_requirements() { \Imagely\NGG\Admin\RequirementsManager::get_instance()->add( 'nextgen_addgallery_xmlcheck', 'phpext', [ $this, 'check_domdocument_requirement' ], [ 'message' => __( 'XML is strongly encouraged for safely uploading images', 'nggallery' ) ] ); $directory = \Imagely\NGG\DataStorage\Manager::get_instance()->get_upload_abspath(); \Imagely\NGG\Admin\RequirementsManager::get_instance()->add( 'add_gallery_upload_dir_permission', 'dirperms', [ $this, 'check_upload_dir_permissions_requirement' ], [ 'message' => sprintf( __( 'Cannot write to %s: new galleries cannot be created', 'nggallery' ), $directory ) ] ); } function register_scripts() { if ( is_admin() ) { $router = \Imagely\NGG\Util\Router::get_instance(); $add_gallery_page_id = 'photocrati-nextgen_addgallery_page'; wp_register_style( 'nextgen_addgallery_page', $router->get_static_url( $add_gallery_page_id . '#styles.css' ), [], NGG_SCRIPT_VERSION ); wp_register_script( 'uppy', $router->get_static_url( $add_gallery_page_id . '#uppy/uppy.min.js' ), [], '1.27.0' ); wp_register_style( 'uppy', $router->get_static_url( $add_gallery_page_id . '#uppy/uppy.min.css' ), [], '1.21.1' ); wp_register_script( 'uppy_i18n', $router->get_static_url( $add_gallery_page_id . '#uppy/i18n.min.js' ), [ 'uppy' ], '1.21.1' ); wp_register_script( 'toastify', $router->get_static_url( $add_gallery_page_id . '#toastify.js' ), [], '1.9.2' ); wp_register_style( 'toastify', $router->get_static_url( $add_gallery_page_id . '#toastify.min.css' ), [], '1.9.2' ); wp_register_script( 'jquery.filetree', $router->get_static_url( $add_gallery_page_id . '#jquery.filetree/jquery.filetree.js' ), [ 'jquery' ], NGG_SCRIPT_VERSION ); wp_register_style( 'jquery.filetree', $router->get_static_url( $add_gallery_page_id . '#jquery.filetree/jquery.filetree.css' ), [], NGG_SCRIPT_VERSION ); wp_register_script( 'nextgen_media_library_import-js', $router->get_static_url( $add_gallery_page_id . '#media-library-import.js' ), [ 'jquery', 'ngg_progressbar' ], NGG_SCRIPT_VERSION ); wp_register_style( 'nextgen_media_library_import-css', $router->get_static_url( $add_gallery_page_id . '#media-library-import.css' ), [], NGG_SCRIPT_VERSION ); } } } new M_NextGen_AddGallery_Page(); PK!c)<8``fproducts/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.phpnu[call_parent('enqueue_static_resources'); } public function render() { return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_folder', ['browse_nonce' => \Imagely\NGG\Util\Security::create_nonce('nextgen_upload_image'), 'import_nonce' => \Imagely\NGG\Util\Security::create_nonce('nextgen_upload_image')], true); } } /** * Class A_Import_Media_Library_Form * * @mixin C_Form * @adapts I_Form for import_media_library context */ class A_Import_Media_Library_Form extends Mixin { public function get_title() { return __('Import from Media Library', 'nggallery'); } public function enqueue_static_resources() { wp_enqueue_media(); wp_enqueue_script('nextgen_media_library_import-js'); wp_enqueue_style('nextgen_media_library_import-css'); $url = admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid={gid}'; $i18n_array = ['admin_url' => admin_url(), 'title' => __('Import Images into NextGen Gallery', 'nggallery'), 'import_multiple' => __('Import %s images', 'nggallery'), 'import_singular' => __('Import 1 image', 'nggallery'), 'imported_multiple' => sprintf(__('{count} images were uploaded successfully. Manage gallery', 'nggallery'), $url), 'imported_singular' => sprintf(__('1 image was uploaded successfully. Manage gallery', 'nggallery'), $url), 'imported_none' => __('0 images were uploaded', 'nggallery'), 'progress_title' => __('Importing gallery', 'nggallery'), 'in_progress' => __('In Progress...', 'nggallery'), 'gritter_title' => __('Upload complete. Great job!', 'nggallery'), 'gritter_error' => __('Oops! Sorry, but an error occured. This may be due to a server misconfiguration. Check your PHP error log or ask your hosting provider for assistance.', 'nggallery'), 'nonce' => \Imagely\NGG\Util\Security::create_nonce('nextgen_upload_image')]; wp_localize_script('nextgen_media_library_import-js', 'ngg_importml_i18n', $i18n_array); } public function render() { $i18n = ['select-images-to-continue' => __('Please make a selection to continue', 'nggallery'), 'select-opener' => __('Select images', 'nggallery'), 'selected-image-import' => __('Import %d image(s)', 'nggallery')]; return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_media_library', ['i18n' => $i18n, 'galleries' => $this->object->get_galleries()], true); } public function get_galleries() { $galleries = []; if (\Imagely\NGG\Util\Security::is_allowed('nextgen_edit_gallery')) { $galleries = \Imagely\NGG\DataMappers\Gallery::get_instance()->find_all(); if (!\Imagely\NGG\Util\Security::is_allowed('nextgen_edit_gallery_unowned')) { $galleries_all = $galleries; $galleries = []; foreach ($galleries_all as $gallery) { if (wp_get_current_user()->ID == (int) $gallery->author) { $galleries[] = $gallery; } } } } return $galleries; } } /** * Class A_NextGen_AddGallery_Ajax * * @mixin C_Ajax_Controller * @adapts I_Ajax_Controller */ class A_NextGen_AddGallery_Ajax extends Mixin { public function cookie_dump_action() { foreach ($_COOKIE as $key => &$value) { if (is_string($value)) { $value = stripslashes($value); } } return ['success' => 1, 'cookies' => $_COOKIE]; } public function create_new_gallery_action() { $gallery_name = urldecode($this->param('gallery_name')); $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); $retval = ['gallery_name' => esc_html($gallery_name), 'gallery_id' => null]; if (!$this->validate_ajax_request('nextgen_upload_image', true)) { $action = 'nextgen_upload_image'; $retval['allowed'] = \Imagely\NGG\Util\Security::is_allowed($action); $retval['verified_token'] = !isset($_REQUEST['nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['nonce'])), $action); $retval['error'] = __('No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); return $retval; } if (strlen($gallery_name) > 0) { $gallery = $gallery_mapper->create(['title' => $gallery_name]); if (!$gallery->save()) { $retval['error'] = $gallery->validate(); } else { $retval['gallery_id'] = $gallery->id(); } } else { $retval['error'] = __('No gallery name specified', 'nggallery'); } return $retval; } public function upload_image_action() { $created_gallery = false; $gallery_id = intval($this->param('gallery_id')); $gallery_name = urldecode($this->param('gallery_name')); $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); $retval = ['gallery_name' => esc_html($gallery_name)]; if ($this->validate_ajax_request('nextgen_upload_image', true)) { if (!class_exists('DOMDocument')) { $retval['error'] = __('Please ask your hosting provider or system administrator to enable the PHP XML module which is required for image uploads', 'nggallery'); } else { // We need to create a gallery. if ($gallery_id == 0) { if (strlen($gallery_name) > 0) { $gallery = $gallery_mapper->create(['title' => $gallery_name]); if (!$gallery->save()) { $retval['error'] = $gallery->validate(); } else { $created_gallery = true; $gallery_id = $gallery->id(); } } else { $retval['error'] = __('No gallery name specified', 'nggallery'); } } // Upload the image to the gallery. if (empty($retval['error'])) { $retval['gallery_id'] = $gallery_id; $settings = \Imagely\NGG\Settings\Settings::get_instance(); $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); try { if ($storage->is_zip()) { if ($results = $storage->upload_zip($gallery_id)) { $retval = $results; } else { $retval['error'] = __('Failed to extract images from ZIP', 'nggallery'); } } elseif ($image_id = $storage->upload_image($gallery_id)) { $retval['image_ids'] = [$image_id]; // check if image was resized correctly. if ($settings->get('imgAutoResize')) { $image_path = $storage->get_full_abspath($image_id); $image_thumb = new \Imagely\NGG\DataTypes\LegacyThumbnail($image_path, true); if ($image_thumb->error) { $retval['error'] = sprintf(__('Automatic image resizing failed [%1$s].', 'nggallery'), $image_thumb->errmsg); } } // check if thumb was generated correctly. $thumb_path = $storage->get_image_abspath($image_id, 'thumb'); if (!file_exists($thumb_path)) { $retval['error'] = __('Thumbnail generation failed.', 'nggallery'); } } else { $retval['error'] = __('Image generation failed', 'nggallery'); } } catch (E_NggErrorException $ex) { $retval['error'] = $ex->getMessage(); if ($created_gallery) { $gallery_mapper->destroy($gallery_id); } } catch (Exception $ex) { $retval['error'] = sprintf(__('An unexpected error occurred: %s', 'nggallery'), $ex->getMessage()); } } } } else { $action = 'nextgen_upload_image'; $retval['allowed'] = \Imagely\NGG\Util\Security::is_allowed($action); $retval['verified_token'] = !isset($_REQUEST['nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['nonce'])), $action); $retval['error'] = __('No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } // Sending a 500 header is used for uppy.js to determine upload failures. if (!empty($retval['error'])) { header('HTTP/1.1 500 Internal Server Error'); } return $retval; } public function get_import_root_abspath() { if (is_multisite()) { $root = \Imagely\NGG\DataStorage\Manager::get_instance()->get_upload_abspath(); } else { $root = NGG_IMPORT_ROOT; } $root = str_replace('/', DIRECTORY_SEPARATOR, $root); return untrailingslashit($root); } public function browse_folder_action() { $retval = []; $html = []; if ($this->validate_ajax_request('nextgen_upload_image', true)) { if ($dir = urldecode($this->param('dir'))) { $fs = \Imagely\NGG\Util\Filesystem::get_instance(); $root = $this->get_import_root_abspath(); $browse_path = $fs->join_paths($root, $dir); if (strpos(realpath($browse_path), realpath($root)) !== false) { if (@file_exists($browse_path)) { $files = scandir($browse_path); natcasesort($files); if (count($files) > 2) { /* The 2 accounts for . and .. */ $html[] = ''; } $retval['html'] = implode("\n", $html); } else { $retval['error'] = __('Directory does not exist.', 'nggallery'); } } else { $retval['error'] = __('No permissions to browse folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } } else { $retval['error'] = __('No directory specified.', 'nggallery'); } } else { $retval['error'] = __('No permissions to browse folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } return $retval; } public function import_folder_action() { $retval = []; if ($this->validate_ajax_request('nextgen_upload_image', true)) { if ($folder = $this->param('folder')) { $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $fs = \Imagely\NGG\Util\Filesystem::get_instance(); try { $keep_files = $this->param('keep_location') == 'on'; $gallery_title = $this->param('gallery_title', null); if (empty($gallery_title)) { $gallery_title = null; } $root = $this->get_import_root_abspath(); $import_path = $fs->join_paths($root, $folder); if (strpos(realpath($import_path), realpath($root)) !== false) { $retval = $storage->import_gallery_from_fs($import_path, false, !$keep_files, $gallery_title); if (!$retval) { $retval = ['error' => 'Could not import folder. No images found.']; } } else { $retval['error'] = __('No permissions to import folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } } catch (E_NggErrorException $ex) { $retval['error'] = $ex->getMessage(); } catch (Exception $ex) { $retval['error'] = __('An unexpected error occured.', 'nggallery'); $retval['error_details'] = $ex->getMessage(); } } else { $retval['error'] = __('No folder specified', 'nggallery'); } } else { $retval['error'] = __('No permissions to import folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } return $retval; } public function import_media_library_action() { $retval = []; $created_gallery = false; $gallery_id = intval($this->param('gallery_id')); $gallery_name = urldecode($this->param('gallery_name')); $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); $image_mapper = \Imagely\NGG\DataMappers\Image::get_instance(); $attachment_ids = $this->param('attachment_ids'); if ($this->validate_ajax_request('nextgen_upload_image', true)) { if (empty($attachment_ids) || !is_array($attachment_ids)) { $retval['error'] = __('An unexpected error occured.', 'nggallery'); } if (empty($retval['error']) && $gallery_id == 0) { if (strlen($gallery_name) > 0) { $gallery = $gallery_mapper->create(['title' => $gallery_name]); if (!$gallery->save()) { $retval['error'] = $gallery->validate(); } else { $created_gallery = true; $gallery_id = $gallery->id(); } } else { $retval['error'] = __('No gallery name specified', 'nggallery'); } } if (empty($retval['error'])) { $retval['gallery_id'] = $gallery_id; $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); foreach ($attachment_ids as $id) { try { $abspath = get_attached_file($id); $file_data = @file_get_contents($abspath); $file_name = \Imagely\NGG\Display\I18N::mb_basename($abspath); $attachment = get_post($id); if (empty($file_data)) { $retval['error'] = __('Image generation failed', 'nggallery'); break; } $image = $storage->upload_image($gallery_id, $file_name, $file_data); if ($image) { // Potentially import metadata from WordPress. $image = $image_mapper->find($image); if (!empty($attachment->post_excerpt)) { $image->alttext = $attachment->post_excerpt; } if (!empty($attachment->post_content)) { $image->description = $attachment->post_content; } $image = apply_filters('ngg_medialibrary_imported_image', $image, $attachment); $image_mapper->save($image); $retval['image_ids'][] = $image->{$image->id_field}; } else { $retval['error'] = __('Image generation failed', 'nggallery'); break; } } catch (E_NggErrorException $ex) { $retval['error'] = $ex->getMessage(); if ($created_gallery) { $gallery_mapper->destroy($gallery_id); } } catch (Exception $ex) { $retval['error'] = __('An unexpected error occured.', 'nggallery'); $retval['error_details'] = $ex->getMessage(); } } } } else { $retval['error'] = __('No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery'); } if (!empty($retval['error'])) { return $retval; } else { $retval['gallery_name'] = esc_html($gallery_name); } return $retval; } } /** * Class A_NextGen_AddGallery_Controller * * @mixin C_NextGen_Admin_Page_Controller * @adapts I_NextGen_Admin_Page */ class A_NextGen_AddGallery_Controller extends Mixin { public function get_page_title() { return __('Add Gallery / Images', 'nggallery'); } public function get_required_permission() { return 'NextGEN Upload images'; } public function enqueue_backend_resources() { $this->call_parent('enqueue_backend_resources'); wp_enqueue_style('nextgen_addgallery_page'); wp_enqueue_script('nextgen_addgallery_page'); wp_enqueue_script('frame_event_publisher'); } public function show_save_button() { return false; } } /** * Class A_NextGen_AddGallery_Pages * * @mixin C_NextGen_Admin_Page_Manager * @adapts I_Page_Manager */ class A_NextGen_AddGallery_Pages extends Mixin { public function setup() { $this->object->add(NGG_ADD_GALLERY_SLUG, ['adapter' => 'A_NextGen_AddGallery_Controller', 'parent' => NGGFOLDER, 'add_menu' => true, 'before' => 'nggallery-manage-gallery']); return $this->call_parent('setup'); } } /** * Class A_Upload_Images_Form * * @mixin C_Form * @property C_MVC_Controller|A_Upload_Images_Form $object * @adapts I_Form for "upload_images" context */ class A_Upload_Images_Form extends Mixin { public function get_title() { return __('Upload Images', 'nggallery'); } public function enqueue_static_resources() { wp_enqueue_script('uppy'); wp_enqueue_script('uppy_i18n'); wp_enqueue_style('uppy'); wp_enqueue_script('toastify'); wp_enqueue_style('toastify'); wp_localize_script('uppy', 'NggUploadImages_i18n', $this->object->get_i18n_strings()); M_Ajax::pass_data_to_js('uppy', 'NggUppyCoreSettings', $this->object->get_uppy_core_settings()); M_Ajax::pass_data_to_js('uppy', 'NggUppyDashboardSettings', $this->object->get_uppy_dashboard_settings()); M_Ajax::pass_data_to_js('uppy', 'NggXHRSettings', $this->object->get_uppy_xhr_settings()); } public function get_uppy_note() { $core_settings = $this->object->get_uppy_core_settings(); $max_size = $core_settings['restrictions']['maxfileSize']; $max_size_megabytes = round((int) $max_size / (1024 * 1024)); return sprintf(__('You may select files up to %dMB', 'nggallery'), $max_size_megabytes); } public function get_uppy_xhr_settings() { return apply_filters('ngg_uppy_xhr_settings', ['timeout' => intval(NGG_UPLOAD_TIMEOUT) * 1000, 'limit' => intval(NGG_UPLOAD_LIMIT), 'fieldName' => 'file']); } public function get_uppy_core_settings() { $mime = apply_filters('ngg_allowed_mime_types', NGG_DEFAULT_ALLOWED_MIME_TYPES); return apply_filters('ngg_uppy_core_settings', ['locale' => $this->object->get_uppy_locale(), 'restrictions' => ['maxfileSize' => wp_max_upload_size(), 'allowedFileTypes' => $this->can_upload_zips() ? array_merge($mime, ['.zip']) : get_allowed_mime_types()]]); } public function get_uppy_dashboard_settings() { return apply_filters('ngg_uppy_dashboard_settings', ['inline' => true, 'target' => '#uploader', 'width' => '100%', 'proudlyDisplayPoweredByUppy' => false, 'hideRetryButton' => true, 'note' => $this->object->get_uppy_note(), 'locale' => ['strings' => ['dropPaste' => $this->can_upload_zips() ? __('Drag image and ZIP files here or %{browse}', 'nggallery') : __('Drag image files here or %{browse}', 'nggallery')]]]); } public function get_uppy_locale() { $locale = get_locale(); $mapping = ['ar' => 'ar_SA', 'bg' => 'bg_BG', 'zh-cn' => 'zh_CN', 'zh-tw' => 'zh_TW', 'hr' => 'hr_HR', 'cs' => 'cs_CZ', 'da' => 'da_DK', 'nl' => 'nl_NL', 'en' => 'en_US', 'fi' => 'fi_FI', 'fr' => 'fr_FR', 'gl' => 'gl_ES', 'de' => 'de_DE', 'el' => 'el_GR', 'he' => 'he_IL', 'hu' => 'hu_HU', 'is' => 'is_IS', 'id' => 'id_ID', 'it' => 'it_IT', 'ja' => 'ja_JP', 'ko' => 'ko_KR', 'fa' => 'fa_IR', 'pl' => 'pl_PL', 'pt-br' => 'pt_BR', 'pt' => 'pt_PT', 'ro' => 'ro_RO', 'ru' => 'ru_RU', 'sr' => 'sr_RS', 'sk' => 'sk_SK', 'es' => 'es_ES', 'sv' => 'sv_SE', 'th' => 'th_TH', 'tr' => 'tr_TR', 'vi' => 'vi_VN']; if (!empty($mapping[$locale])) { $locale = $mapping[$locale]; } return $locale; } public function can_upload_zips() { $global_settings = \Imagely\NGG\Settings\GlobalSettings::get_instance(); return !is_multisite() || is_multisite() && $global_settings->get('wpmuZipUpload'); } public function get_i18n_strings() { return ['locale' => $this->object->get_uppy_locale(), 'no_image_uploaded' => __('No images were uploaded successfully.', 'nggallery'), 'one_image_uploaded' => __('1 image was uploaded successfully.', 'nggallery'), 'x_images_uploaded' => __('{count} images were uploaded successfully.', 'nggallery'), 'manage_gallery' => __('Manage gallery > {name}', 'nggallery'), 'image_failed' => __('Image {filename} failed to upload: {error}', 'nggallery'), 'drag_files_here' => $this->can_upload_zips() ? __('Drag image and ZIP files here or %{browse}', 'nggallery') : __('Drag image files here or %{browse}', 'nggallery')]; } public function render() { return $this->object->render_partial('photocrati-nextgen_addgallery_page#upload_images', ['galleries' => $this->object->get_galleries(), 'nonce' => \Imagely\NGG\Util\Security::create_nonce('nextgen_upload_image')], true); } public function get_galleries() { $galleries = []; if (\Imagely\NGG\Util\Security::is_allowed('nextgen_edit_gallery')) { $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); $galleries = $gallery_mapper->find_all(); if (!\Imagely\NGG\Util\Security::is_allowed('nextgen_edit_gallery_unowned')) { $galleries_all = $galleries; $galleries = []; foreach ($galleries_all as $gallery) { if (wp_get_current_user()->ID == (int) $gallery->author) { $galleries[] = $gallery; } } } } return $galleries; } }PK!7@++Wproducts/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.phpnu[
PK!oDPW W Wproducts/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.phpnu[



PK!^products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.phpnu[ PK! Y_products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.cssnu[#ngg-importML-selected-image-import.hidden{display:none}#ngg-importML-select-opener.hidden{display:none}#ngg-importML-gallery-selection{display:inline-block}#ngg-importML-selected-image-import{vertical-align:middle}#ngg-importML-select-opener{vertical-align:middle}#ngg-importML-gallery-name{vertical-align:middle}#ngg-importML-gallery-select{vertical-align:middle}.ngg_settings_page .jqueryFileTree LI.directory{background-size:contain}.ngg_settings_page .jqueryFileTree LI.expanded{background-size:21px}PK!&Mproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.cssnu[@font-face { font-family: 'Lato'; src: url('../../nextgen_admin/static/Lato-Regular.ttf') format('truetype') } #ngg_page_content .ngg_page_content_main { min-height: 0; } #gallery_selection { display: flex; align-items: center; justify-content: left; padding: 20px 20px 25px !important; background: #f7f7f7; flex-wrap: wrap; } #gallery_selection label { font-weight: 600; position: relative; top: -1px; } #gallery_name { width: auto; min-width: 200px; } #gallery_name.error { border: solid 1px red; } #upload_images_content { padding: 0px; } /* Gritter customizations */ #gritter-notice-wrapper { background: rgba(56, 70, 82, .9); border: 1px solid #2a343d; margin: 10px 5px 0 0; border-radius: 3px; bottom: 20px; top: auto; } .gritter-top, .gritter-item, .gritter-bottom { background: none; } .gritter-item { padding: 2px 11px 0 11px; } .gritter-title { text-shadow: none; } #gritter-notice-wrapper a { color: #b8d433; text-decoration: none; padding-top: 5px; display: block; } .gritter-close { width: auto; height: auto; background: none; display: block !important; right: 10px; } .gritter-close:after { content: 'X'; font-weight: bold; font-size: 13px; } /* For Redesign */ .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu { width: 25%; } .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main { width: 75%; } #ngg_page_content #gallery_id, #ngg_page_content #gallery_name { min-width: 200px !important; font-size: 13px !important; font-family: "Lato", sans-serif; font-weight: 400; color: black !important; vertical-align: middle; } #ngg_page_content input#import_gallery_title { width: 250px; font-size: 13px; color: #aaa; } #ngg_page_content #gallery_create { background: black; margin-left: 2px; } .toast-close { opacity: 1 !important; color: white; margin-left: 10px; } /* This button will appear at lower resolutions despite the hidden class */ #ngg_page_content #gallery_create.hidden { display: none !important; } #ngg_page_content #gallery_create:hover { cursor: pointer; } /* Uppy specific styling and tweaks */ #ngg_page_content button.uppy-StatusBar-actionBtn, #ngg_page_content button.uppy-DashboardContent-back, #ngg_page_content button.uppy-DashboardContent-addMore, #ngg_page_content button.uppy-Dashboard-browse { background: black; } #ngg_page_content button.uppy-DashboardContent-addMore svg { height: 22px; width: 18px; margin-top: 7px; margin-right: 0; } #ngg_page_content .uppy-size--md span.uppy-DashboardContent-addMoreCaption { margin-left: 8px; } #ngg_page_content span.uppy-DashboardContent-addMoreCaption { float: right; } #ngg_page_content .uppy-Dashboard-Item-progressIndicator:hover { background: none !important; } #ngg_page_content .uppy-StatusBar-actions button { padding-right: 0; } #ngg_page_content button.uppy-StatusBar-actionBtn--retry { margin-right: 6px; padding-left: 27px !important; } #ngg_page_content .uppy-StatusBar-actionBtn--retry svg { top: 12px; } #ngg_page_content button.uppy-StatusBar-actionCircleBtn:hover { background: none !important; } #ngg_page_content button.uppy-StatusBar-actionCircleBtn { padding: 0 !important; } #ngg_page_content button.uppy-StatusBar-actionCircleBtn svg { vertical-align: middle; } #ngg_page_content button.uppy-DashboardContent-addMore svg, #ngg_page_content button.uppy-StatusBar-actions svg { line-height: initial; } #ngg_page_content button.uppy-Dashboard-Item-action--remove { background: none !important; padding: 0 !important; width: auto !important; margin: 0; } #ngg_page_content button.uppy-Dashboard-Item-action--remove svg { color: #1f1f1f !important; } #ngg_page_content div.uppy-Dashboard-AddFiles-title { max-width: 600px; } #ngg-create-gallery-default-text { } #ngg-create-gallery-waiting-text { } @media screen and (max-width: 1200px) { #gallery_selection { justify-content: center; } #ngg_page_content #gallery_name { flex-grow: 1; } #gallery_create { margin-top: 5px; } } @media screen and (max-width: 782px) { #ngg_page_content div.uppy-DashboardContent-title { } #ngg_page_content button.uppy-DashboardContent-addMore, #ngg_page_content button.uppy-DashboardContent-back { width: auto !important; margin: 0; } } /* Media Queries */ @media (max-width: 1380px) { .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu, .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main { width: 100%; } } @media (max-width: 1140px) { .gallery_page_ngg_addgallery #ngg_page_content button, .gallery_page_ngg_addgallery #ngg_page_content .button-primary, .gallery_page_ngg_addgallery #ngg_page_content .button-secondary { width: 201px !important; } } @media (max-width: 800px) { .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu, .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main { width: 100%; } .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main input, .gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main select { width: 100% !important; max-width: 100%; margin: 5px 0; box-sizing: border-box; } .gallery_page_ngg_addgallery #ngg_page_content input[type=checkbox] { width: 16px !important; } .gallery_page_ngg_addgallery #ngg_page_content button, .gallery_page_ngg_addgallery #ngg_page_content .button-primary, .gallery_page_ngg_addgallery #ngg_page_content .button-secondary { width: 100% !important; margin: 4px 0; display: block; text-align: center; } #ngg-importML-gallery-selection { display: block !important; } }PK!83[]]Rproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/toastify.min.jsnu["use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){"object"===("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=t():(void 0).Toastify=t()}(function(t){function o(t){return new o.lib.init(t)}function s(t,o){return o.offset[t]?isNaN(o.offset[t])?o.offset[t]:o.offset[t]+"px":"0px"}function p(t,o){return!(!t||"string"!=typeof o)&&!!(t.className&&-1
",i.className="toast-close",i.addEventListener("click",function(t){t.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this)),o=0>>ooo$2u {4= aă |ʠ̀X(1 M$n8 ؀pTۂVJ0S<|_   H l o5]Z jN b ]#NQ! ,???sss$2u {4= aă v2.FX(Eax,Ii L @o=:D(N D?A* t H.: CYa ^ ]-WOa#f#u ^! ,...ooo$2uz4= ă @5F X( H &qb 3I$&ش !((A,    H._  W( \$!  1!#_# \;PK!%=%=iproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/images/folder_open.pngnu[PNG  IHDRL@UP pHYs  9iTXtXML:com.adobe.xmp Adobe Photoshop CC 2015 (Macintosh) 2017-12-15T19:53:06-07:00 2017-12-15T19:57:42-07:00 2017-12-15T19:57:42-07:00 image/png 3 xmp.iid:e0d5da98-107c-4584-b509-2f1175cddae2 adobe:docid:photoshop:4f52f02e-229b-117b-9d9c-ddc7040f2fad xmp.did:43b600e4-dd2e-46ed-be88-7709361bb749 created xmp.iid:43b600e4-dd2e-46ed-be88-7709361bb749 2017-12-15T19:53:06-07:00 Adobe Photoshop CC 2015 (Macintosh) saved xmp.iid:e0d5da98-107c-4584-b509-2f1175cddae2 2017-12-15T19:57:42-07:00 Adobe Photoshop CC 2015 (Macintosh) / 1 720000/10000 720000/10000 2 65535 76 64 f cHRMz%u0`:o_FIDATxMkQ EAiY[n KqB.Auޭ MI[b\)HI&wVMr !sɐ{{ι7ɴmLf 3`&fr;߸vC2^%ph gOr-` n  ρCaS:d} ` ҧ慥0fLJ}"({v;-w,>%3XT *5pF w@XU~B 2X@TQoDԍբ`@V',|R ,rU%%EJ݊pܐ95w`KRt"<X|RwXQo|D C g.%5u(B`e)$>`'w(i%V|5o ,Böas5r)-MeEWߝLlg bǕw-$+D'J\v:|Tdk. k k jJ ! ܔ"j[PP `UtEI" qVK6J?^I鬌N2/A +\;`IENDB`PK!o=o=gproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/images/directory.pngnu[PNG  IHDRD@Ѥ pHYs  ;iTXtXML:com.adobe.xmp Adobe Photoshop CC 2015 (Macintosh) 2017-12-15T19:23:44-07:00 2017-12-15T19:52:15-07:00 2017-12-15T19:52:15-07:00 image/png 3 xmp.iid:6e3738de-4d57-463d-bb52-e823fb9c9001 adobe:docid:photoshop:87e7a78a-229a-117b-9d9c-ddc7040f2fad xmp.did:86d06f98-682e-4329-a687-291ca9679e82 created xmp.iid:86d06f98-682e-4329-a687-291ca9679e82 2017-12-15T19:23:44-07:00 Adobe Photoshop CC 2015 (Macintosh) saved xmp.iid:e21ee8dd-b7c4-491f-825c-2a635af5ce52 2017-12-15T19:38-07:00 Adobe Photoshop CC 2015 (Macintosh) / saved xmp.iid:6e3738de-4d57-463d-bb52-e823fb9c9001 2017-12-15T19:52:15-07:00 Adobe Photoshop CC 2015 (Macintosh) / 1 720000/10000 720000/10000 2 65535 68 64 zf cHRMz%u0`:o_F>IDATx?OPO` &jpbfr \50!\q!2@6M>xۜ_zOpqY$ " vwxfL3`LSY}b?>Pq10 X \yn8( 9rATr$̆8$ 4W}HhRY@=dg9DADADADA1" " " " Q@GI@jԺ m ]#ܯRbIENDB`PK!Ztfproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.cssnu[UL.jqueryFileTree { font-family: Verdana, sans-serif; font-size: 11px; line-height: 18px; padding: 0px; margin: 0px; } UL.jqueryFileTree LI { list-style: none; padding: 0px; padding-left: 20px; margin: 0px; white-space: nowrap; } UL.jqueryFileTree A { color: #333; text-decoration: none; display: block; padding: 0px 2px; } UL.jqueryFileTree A:hover { background: #BDF; } UL.jqueryFileTree A.selected_folder { background-color: #EEEEEE; } /* Core Styles */ .jqueryFileTree LI.directory { background: url(images/directory.png) left top no-repeat; } .jqueryFileTree LI.expanded { background: url(images/folder_open.png) left top no-repeat; } .jqueryFileTree LI.file { background: url(images/file.png) left top no-repeat; } .jqueryFileTree LI.wait { background: url(images/spinner.gif) left top no-repeat; } /* File Extensions*/ .jqueryFileTree LI.ext_3gp { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_afp { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_afpa { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_asp { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_aspx { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_avi { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_bat { background: url(images/application.png) left top no-repeat; } .jqueryFileTree LI.ext_bmp { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_c { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_cfm { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_cgi { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_com { background: url(images/application.png) left top no-repeat; } .jqueryFileTree LI.ext_cpp { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_css { background: url(images/css.png) left top no-repeat; } .jqueryFileTree LI.ext_doc { background: url(images/doc.png) left top no-repeat; } .jqueryFileTree LI.ext_exe { background: url(images/application.png) left top no-repeat; } .jqueryFileTree LI.ext_gif { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_fla { background: url(images/flash.png) left top no-repeat; } .jqueryFileTree LI.ext_h { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_htm { background: url(images/html.png) left top no-repeat; } .jqueryFileTree LI.ext_html { background: url(images/html.png) left top no-repeat; } .jqueryFileTree LI.ext_jar { background: url(images/java.png) left top no-repeat; } .jqueryFileTree LI.ext_jpg { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_jpeg { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_js { background: url(images/script.png) left top no-repeat; } .jqueryFileTree LI.ext_lasso { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_log { background: url(images/txt.png) left top no-repeat; } .jqueryFileTree LI.ext_m4p { background: url(images/music.png) left top no-repeat; } .jqueryFileTree LI.ext_mov { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_mp3 { background: url(images/music.png) left top no-repeat; } .jqueryFileTree LI.ext_mp4 { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_mpg { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_mpeg { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_ogg { background: url(images/music.png) left top no-repeat; } .jqueryFileTree LI.ext_pcx { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_pdf { background: url(images/pdf.png) left top no-repeat; } .jqueryFileTree LI.ext_php { background: url(images/php.png) left top no-repeat; } .jqueryFileTree LI.ext_png { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_ppt { background: url(images/ppt.png) left top no-repeat; } .jqueryFileTree LI.ext_psd { background: url(images/psd.png) left top no-repeat; } .jqueryFileTree LI.ext_pl { background: url(images/script.png) left top no-repeat; } .jqueryFileTree LI.ext_py { background: url(images/script.png) left top no-repeat; } .jqueryFileTree LI.ext_rb { background: url(images/ruby.png) left top no-repeat; } .jqueryFileTree LI.ext_rbx { background: url(images/ruby.png) left top no-repeat; } .jqueryFileTree LI.ext_rhtml { background: url(images/ruby.png) left top no-repeat; } .jqueryFileTree LI.ext_rpm { background: url(images/linux.png) left top no-repeat; } .jqueryFileTree LI.ext_ruby { background: url(images/ruby.png) left top no-repeat; } .jqueryFileTree LI.ext_sql { background: url(images/db.png) left top no-repeat; } .jqueryFileTree LI.ext_swf { background: url(images/flash.png) left top no-repeat; } .jqueryFileTree LI.ext_tif { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_tiff { background: url(images/picture.png) left top no-repeat; } .jqueryFileTree LI.ext_txt { background: url(images/txt.png) left top no-repeat; } .jqueryFileTree LI.ext_vb { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_wav { background: url(images/music.png) left top no-repeat; } .jqueryFileTree LI.ext_wmv { background: url(images/film.png) left top no-repeat; } .jqueryFileTree LI.ext_xls { background: url(images/xls.png) left top no-repeat; } .jqueryFileTree LI.ext_xml { background: url(images/code.png) left top no-repeat; } .jqueryFileTree LI.ext_zip { background: url(images/zip.png) left top no-repeat; }PK!--iproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.min.jsnu["use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}jQuery&&!function(o){o.extend(o.fn,{fileTree:function(n,s){null==(n=n||{}).root&&(n.root="/"),null==n.script&&(n.script="jqueryFileTree.php"),null==n.folderEvent&&(n.folderEvent="click"),null==n.expandSpeed&&(n.expandSpeed=500),null==n.collapseSpeed&&(n.collapseSpeed=500),null==n.expandEasing&&(n.expandEasing=null),null==n.collapseEasing&&(n.collapseEasing=null),null==n.multiFolder&&(n.multiFolder=!0),null==n.loadMessage&&(n.loadMessage="Loading..."),null==n.post_params&&(n.post_params={}),o(this).each(function(){function a(t,l){o(t).addClass("wait"),o(".jqueryFileTree.start").remove();var e=o.extend(n.post_params,{dir:l});o.post(n.script,e,function(e){"object"!=_typeof(e)&&(e=JSON.parse(e)),data=e.html,o(t).find(".start").html(""),o(t).removeClass("wait").append(data),n.root==l?o(t).find("UL:hidden").show():o(t).find("UL:hidden").slideDown({duration:n.expandSpeed,easing:n.expandEasing}),o(e=t).find("LI A").on(n.folderEvent,function(){return o(this).parent().hasClass("directory")?(o(this).parent().hasClass("collapsed")?(n.multiFolder||(o(this).parent().parent().find("UL").slideUp({duration:n.collapseSpeed,easing:n.collapseEasing}),o(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed")),o(this).parent().find("UL").remove(),a(o(this).parent(),escape(o(this).attr("rel").match(/.*\//))),o(this).parent().removeClass("collapsed").addClass("expanded")):(o(this).parent().find("UL").slideUp({duration:n.collapseSpeed,easing:n.collapseEasing}),o(this).parent().removeClass("expanded").addClass("collapsed")),s(o(this).attr("rel"),!0)):s(o(this).attr("rel"),!1),!1}),"click"!=n.folderEvent.toLowerCase&&o(e).find("LI A").on("click",function(){return!1})})}o(this).html('
  • '+n.loadMessage+"
"),a(o(this),escape(n.root))})}})}(jQuery);PK!f22eproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.jsnu[// jQuery File Tree Plugin // // Version 1.01 // // Cory S.N. LaViska // A Beautiful Site (http://abeautifulsite.net/) // 24 March 2008 // // Visit http://abeautifulsite.net/notebook.php?article=58 for more information // // Usage: $('.fileTreeDemo').fileTree( options, callback ) // // Options: root - root folder to display; default = / // script - location of the serverside AJAX file to use; default = jqueryFileTree.php // folderEvent - event to trigger expand/collapse; default = click // expandSpeed - default = 500 (ms); use -1 for no animation // collapseSpeed - default = 500 (ms); use -1 for no animation // expandEasing - easing function to use on expand (optional) // collapseEasing - easing function to use on collapse (optional) // multiFolder - whether or not to limit the browser to one subfolder at a time // loadMessage - Message to display while initial tree loads (can be HTML) // // History: // // 1.01 - updated to work with foreign characters in directory/file names (12 April 2008) // 1.00 - released (24 March 2008) // // TERMS OF USE // // This plugin is dual-licensed under the GNU General Public License and the MIT License and // is copyright 2008 A Beautiful Site, LLC. // if(jQuery) (function($){ $.extend($.fn, { fileTree: function(o, h) { // Defaults if( !o ) var o = {}; if( o.root == undefined ) o.root = '/'; if( o.script == undefined ) o.script = 'jqueryFileTree.php'; if( o.folderEvent == undefined ) o.folderEvent = 'click'; if( o.expandSpeed == undefined ) o.expandSpeed= 500; if( o.collapseSpeed == undefined ) o.collapseSpeed= 500; if( o.expandEasing == undefined ) o.expandEasing = null; if( o.collapseEasing == undefined ) o.collapseEasing = null; if( o.multiFolder == undefined ) o.multiFolder = true; if( o.loadMessage == undefined ) o.loadMessage = 'Loading...'; if (o.post_params == undefined ) o.post_params = {}; $(this).each( function() { function showTree(c, t) { $(c).addClass('wait'); $(".jqueryFileTree.start").remove(); var post_params = $.extend(o.post_params, {dir: t}); $.post(o.script, post_params, function(response) { if (typeof(response) != 'object') response = JSON.parse(response); data = response.html; $(c).find('.start').html(''); $(c).removeClass('wait').append(data); if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing }); bindTree(c); }); } function bindTree(t) { $(t).find('LI A').on(o.folderEvent, function() { if( $(this).parent().hasClass('directory') ) { if( $(this).parent().hasClass('collapsed') ) { // Expand if( !o.multiFolder ) { $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing }); $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed'); } $(this).parent().find('UL').remove(); // cleanup showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) ); $(this).parent().removeClass('collapsed').addClass('expanded'); } else { // Collapse $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing }); $(this).parent().removeClass('expanded').addClass('collapsed'); } h($(this).attr('rel'), true); } else { h($(this).attr('rel'), false); } return false; }); // Prevent A from triggering the # on non-click events if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').on('click', function() { return false; }); } // Loading message $(this).html('
  • ' + o.loadMessage + '
'); // Get the initial file list showTree( $(this), escape(o.root) ); }); } }); })(jQuery);PK!5jproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.min.cssnu[UL.jqueryFileTree{font-family:Verdana,sans-serif;font-size:11px;line-height:18px;padding:0;margin:0}UL.jqueryFileTree LI{list-style:none;padding:0;padding-left:20px;margin:0;white-space:nowrap}UL.jqueryFileTree A{color:#333;text-decoration:none;display:block;padding:0 2px}UL.jqueryFileTree A:hover{background:#bdf}UL.jqueryFileTree A.selected_folder{background-color:#eee}.jqueryFileTree LI.directory{background:url(images/directory.png) left top no-repeat}.jqueryFileTree LI.expanded{background:url(images/folder_open.png) left top no-repeat}.jqueryFileTree LI.file{background:url(images/file.png) left top no-repeat}.jqueryFileTree LI.wait{background:url(images/spinner.gif) left top no-repeat}.jqueryFileTree LI.ext_3gp{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_afp{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_afpa{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_asp{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_aspx{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_avi{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_bat{background:url(images/application.png) left top no-repeat}.jqueryFileTree LI.ext_bmp{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_c{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_cfm{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_cgi{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_com{background:url(images/application.png) left top no-repeat}.jqueryFileTree LI.ext_cpp{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_css{background:url(images/css.png) left top no-repeat}.jqueryFileTree LI.ext_doc{background:url(images/doc.png) left top no-repeat}.jqueryFileTree LI.ext_exe{background:url(images/application.png) left top no-repeat}.jqueryFileTree LI.ext_gif{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_fla{background:url(images/flash.png) left top no-repeat}.jqueryFileTree LI.ext_h{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_htm{background:url(images/html.png) left top no-repeat}.jqueryFileTree LI.ext_html{background:url(images/html.png) left top no-repeat}.jqueryFileTree LI.ext_jar{background:url(images/java.png) left top no-repeat}.jqueryFileTree LI.ext_jpg{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_jpeg{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_js{background:url(images/script.png) left top no-repeat}.jqueryFileTree LI.ext_lasso{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_log{background:url(images/txt.png) left top no-repeat}.jqueryFileTree LI.ext_m4p{background:url(images/music.png) left top no-repeat}.jqueryFileTree LI.ext_mov{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_mp3{background:url(images/music.png) left top no-repeat}.jqueryFileTree LI.ext_mp4{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_mpg{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_mpeg{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_ogg{background:url(images/music.png) left top no-repeat}.jqueryFileTree LI.ext_pcx{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_pdf{background:url(images/pdf.png) left top no-repeat}.jqueryFileTree LI.ext_php{background:url(images/php.png) left top no-repeat}.jqueryFileTree LI.ext_png{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_ppt{background:url(images/ppt.png) left top no-repeat}.jqueryFileTree LI.ext_psd{background:url(images/psd.png) left top no-repeat}.jqueryFileTree LI.ext_pl{background:url(images/script.png) left top no-repeat}.jqueryFileTree LI.ext_py{background:url(images/script.png) left top no-repeat}.jqueryFileTree LI.ext_rb{background:url(images/ruby.png) left top no-repeat}.jqueryFileTree LI.ext_rbx{background:url(images/ruby.png) left top no-repeat}.jqueryFileTree LI.ext_rhtml{background:url(images/ruby.png) left top no-repeat}.jqueryFileTree LI.ext_rpm{background:url(images/linux.png) left top no-repeat}.jqueryFileTree LI.ext_ruby{background:url(images/ruby.png) left top no-repeat}.jqueryFileTree LI.ext_sql{background:url(images/db.png) left top no-repeat}.jqueryFileTree LI.ext_swf{background:url(images/flash.png) left top no-repeat}.jqueryFileTree LI.ext_tif{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_tiff{background:url(images/picture.png) left top no-repeat}.jqueryFileTree LI.ext_txt{background:url(images/txt.png) left top no-repeat}.jqueryFileTree LI.ext_vb{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_wav{background:url(images/music.png) left top no-repeat}.jqueryFileTree LI.ext_wmv{background:url(images/film.png) left top no-repeat}.jqueryFileTree LI.ext_xls{background:url(images/xls.png) left top no-repeat}.jqueryFileTree LI.ext_xml{background:url(images/code.png) left top no-repeat}.jqueryFileTree LI.ext_zip{background:url(images/zip.png) left top no-repeat}PK!]WW[products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.cssnu[#ngg-importML-selected-image-import.hidden { display: none; } #ngg-importML-select-opener.hidden { display: none; } #ngg-importML-gallery-selection { display: inline-block; } #ngg-importML-selected-image-import { vertical-align: middle; } #ngg-importML-select-opener { vertical-align: middle; } #ngg-importML-gallery-name { vertical-align: middle; } #ngg-importML-gallery-select { vertical-align: middle; } .ngg_settings_page .jqueryFileTree LI.directory { background-size: contain; } .ngg_settings_page .jqueryFileTree LI.expanded { background-size: 21px; }PK!N]$]$Zproducts/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.jsnu[(function($) { var ngg_importml = { ml_data: null, import_ids: [], selectors: { ml_btn_import: $('#ngg-importML-selected-image-import'), ml_btn_select: $('#ngg-importML-select-opener'), gallery_select: $('#ngg-importML-gallery-id'), gallery_name: $('#ngg-importML-gallery-name') }, initialize: function() { this.methods.initialize(); this.methods.set_events(); }, methods: { initialize: function() { ngg_importml.ml_dialog = top.wp.media.frames.ngg_importml = top.wp.media({ multiple: true, title: ngg_importml_i18n.title, button: { text: ngg_importml_i18n.button_text } }); }, urlencode: function(str) { str = (str + '').toString(); return encodeURIComponent(str) .replace(/!/g, '%21') .replace(/'/g, '%27') .replace(/\(/g, '%28') .replace(/\)/g, '%29') .replace(/\*/g, '%2A') .replace(/%20/g, '+'); }, import: { import_count: 0, params: { action: 'import_media_library' }, start: function() { // prevent the impatient from causing simultaneous ongoing posts ngg_importml.selectors.ml_btn_import.attr('disabled', true); ngg_importml.selectors.ml_btn_select.attr('disabled', true); ngg_importml.methods.import.params.gallery_id = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_select.val()); ngg_importml.methods.import.params.gallery_name = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_name.val()); ngg_importml.progress_bar = $.nggProgressBar({ title: ngg_importml_i18n.progress_title, infinite: true, starting_value: ngg_importml_i18n.in_progress }); $(ngg_importml).trigger('send_ajax'); }, done: function() { ngg_importml.progress_bar.close(100); ngg_importml.selectors.ml_btn_import.attr('disabled', false); ngg_importml.selectors.ml_btn_select.attr('disabled', false); var msg = ngg_importml_i18n.imported_multiple; if (ngg_importml.methods.import.import_count == 1) { msg = ngg_importml_i18n.imported_singular; } msg = msg.replace('{gid}', ngg_importml.methods.import.params.gallery_id); msg = msg.replace('{count}', ngg_importml.methods.import.import_count); delete ngg_importml.methods.import.params.gallery_id; delete ngg_importml.methods.import.params.gallery_name; $.gritter.add({ title: ngg_importml_i18n.gritter_title, text: msg, sticky: true }); ngg_importml.methods.import.import_count = 0; // Empty the current selection & revert to the default state ngg_importml.ml_dialog.trigger('reset'); ngg_importml.import_ids = []; ngg_importml.selectors.ml_btn_import.fadeOut(); }, send_ajax: function() { var params = ngg_importml.methods.import.params; params.nonce = ngg_importml_i18n.nonce; params.attachment_ids = [ngg_importml.import_ids.pop()]; $.post(photocrati_ajax.url, params, function(data) { if (typeof data.error == 'undefined') { ngg_importml.methods.import.import_count++; // If we created a new gallery, ensure it's now in the drop-down list, and select it if (ngg_importml.selectors.gallery_select.find('option[value="' + data.gallery_id + '"]').length == 0) { ngg_importml.methods.import.params.gallery_id = data.gallery_id; var option = $('
get_saved_meta(); $exifdata = $meta->get_EXIF(); $iptcdata = $meta->get_IPTC(); $xmpdata = $meta->get_XMP(); $class = ''; ?>

$value ) { if ( in_array( $key, [ 'created_timestamp', 'timestamp' ] ) && is_numeric( $value ) ) { $value = date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $value ); } if ( is_array( $value ) ) { continue; } $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"'; echo ''; } ?>
' . esc_html( $meta->i18n_name( $key ) ) . ' ' . esc_html( $value ) . '
' . esc_html__( 'No meta data saved', 'nggallery' ) . '';} ?>

$value ) { if ( in_array( $key, [ 'created_timestamp', 'timestamp' ] ) && is_numeric( $value ) ) { $value = date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $value ); } if ( $key == 'created_date' ) { $value = date_i18n( get_option( 'date_format' ), strtotime( $value ) ); } $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"'; echo ''; } ?>
' . esc_html( $meta->i18n_name( $key ) ) . ' ' . esc_html( $value ) . '
' . esc_html__( 'No exif data', 'nggallery' ) . '';} ?>

$value ) { if ( in_array( $key, [ 'created_timestamp', 'timestamp' ] ) && is_numeric( $value ) ) { $value = date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $value ); } $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"'; echo ''; } ?>
' . esc_html( $meta->i18n_name( $key ) ) . ' ' . esc_html( $value ) . '

$value ) { if ( in_array( $key, [ 'created_timestamp', 'timestamp' ] ) && is_numeric( $value ) ) { $value = date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $value ); } $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"'; echo ''; } ?>
' . esc_html( $meta->i18n_name( $key ) ) . ' ' . esc_html( $value ) . '
PK!Ƙusrc/Legacy/admin/ajax.phpnu[reimport_metadata( $id ) ? '1' : '0'; break; case 'get_image_ids': $result = nggAdmin::get_image_ids( $id ); break; // This will read the EXIF and then write it with the Orientation tag reset. case 'strip_orientation_tag': $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $image_path = $storage->get_image_abspath( $id ); $backup_path = $image_path . '_backup'; $exif_abspath = @file_exists( $backup_path ) ? $backup_path : $image_path; $exif_iptc = @\Imagely\NGG\DataStorage\EXIFWriter::read_metadata( $exif_abspath ); foreach ( $storage->get_image_sizes( $id ) as $size ) { if ( $size === 'backup' ) { continue; } @\Imagely\NGG\DataStorage\EXIFWriter::write_metadata( $storage->get_image_abspath( $id, $size ), $exif_iptc ); } $result = '1'; break; default: do_action( 'ngg_ajax_' . $_POST['operation'] ); die( '-1' ); break; } // A success should return a '1'. die( $result ); } // The script should never stop here. die( '0' ); } add_action( 'wp_ajax_createNewThumb', 'createNewThumb' ); function createNewThumb() { // check for correct capability. if ( ! is_user_logged_in() ) { die( '-1' ); } // check for correct NextGEN capability. if ( ! current_user_can( 'NextGEN Manage gallery' ) ) { die( '-1' ); } if ( ! wp_verify_nonce( $_POST['nonce'], 'ngg_update_thumbnail' ) ) { die( '-1' ); } $id = (int) $_POST['id']; $x = round( $_POST['x'] * $_POST['rr'], 0 ); $y = round( $_POST['y'] * $_POST['rr'], 0 ); $w = round( $_POST['w'] * $_POST['rr'], 0 ); $h = round( $_POST['h'] * $_POST['rr'], 0 ); $crop_frame = [ 'x' => $x, 'y' => $y, 'width' => $w, 'height' => $h, ]; $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); // XXX NextGEN Legacy wasn't handling watermarks or reflections at this stage, so we're forcefully disabling them to maintain compatibility. $params = [ 'watermark' => false, 'reflection' => false, 'crop' => true, 'crop_frame' => $crop_frame, ]; $result = $storage->generate_thumbnail( $id, $params ); if ( $result ) { echo 'OK'; } else { header( 'HTTP/1.1 500 Internal Server Error' ); echo 'KO'; } exit(); } add_action( 'wp_ajax_rotateImage', 'ngg_rotateImage' ); function ngg_rotateImage() { // check for correct capability. if ( ! is_user_logged_in() ) { die( '-1' ); } if ( ! wp_verify_nonce( $_POST['nonce'], 'ngg-rotate-image' ) ) { die( '-1' ); } // check for correct NextGEN capability. if ( ! current_user_can( 'NextGEN Manage gallery' ) ) { die( '-1' ); } require_once dirname( __DIR__ ) . '/ngg-config.php'; // include the ngg function. include_once __DIR__ . '/functions.php'; $id = (int) $_POST['id']; $result = '-1'; switch ( $_POST['ra'] ) { case 'cw': $result = nggAdmin::rotate_image( $id, 'CW' ); break; case 'ccw': $result = nggAdmin::rotate_image( $id, 'CCW' ); break; case 'fv': // Note: H/V have been inverted here to make it more intuitive. $result = nggAdmin::rotate_image( $id, 0, 'H' ); break; case 'fh': // Note: H/V have been inverted here to make it more intuitive. $result = nggAdmin::rotate_image( $id, 0, 'V' ); break; } // recreate the thumbnail. nggAdmin::create_thumbnail( $id ); if ( $result == 1 ) { die( '1' ); } header( 'HTTP/1.1 500 Internal Server Error' ); die( $result ); } PK!Ŵ::$src/Legacy/admin/images/facebook.pngnu[PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWKhQI&ĚDPt#h[S7* hJ*sa? hA "[)e)ZIic1R]͛yyof=5~sl _^C:ް~(v3NӦ:XJ dž@&G!tr݊;20|ZH&5xWd <Q`)7.uBn]cihbaZ\7JMK@{Es18*l0?:4RĘB` Bޫ,yӜeX2@UsUØbxBdj.9p YsQѢ⁸3J_01: Ma4tL@Y:sLtLbSE$ڹ?;ؑͤW^2L 1<l[ehj:(2L΀րE)SzP wҙ Հar P !X<~q-I0mQԄ 6Cc81?='-KԀaKW-X-Cn}nE0 R+ݓP%A0XR%1 xSTFݹ'==Or !Xޜ7öCEq]=rOxu?~q4JGG0g|!Hu7 e:I&} ,=k1ZIG8<IK@X_x^=<--/}-C[maIGstM| DHIJj#**Wi'0LVlW4M(6Cr)L璺J U5,ֺol;nnسrٓG!!S1fР}@qmBR1L> D;`3nz\;ሹ ye F'`7b,B+ &Gx+r 0<k {!y`KWZuP}U+3dуd\ L[ xdj̏ɵ&dý4S`vz!ى_PNAýAECt7>.ɺWyamwmbxtxރ ~/pa?D5A|ͭԕP: fO}vÝd/qUUTUյvFlmm]2ƬXk;u]wʲ4UUMx Adobe Photoshop CC 2015 (Macintosh) 2019-03-15T15:09:41-06:00 2019-03-15T15:14:16-06:00 2019-03-15T15:14:16-06:00 image/png 3 xmp.iid:f347c3b3-221f-441c-9330-4de0f7b2d965 adobe:docid:photoshop:b0d8d0ad-87f5-117c-9530-dc0cd962cc77 xmp.did:847520e6-7b88-417e-8583-b2fb23206b30 created xmp.iid:847520e6-7b88-417e-8583-b2fb23206b30 2019-03-15T15:09:41-06:00 Adobe Photoshop CC 2015 (Macintosh) saved xmp.iid:4e5ee218-6462-4e96-a64d-1f8638544487 2019-03-15T15:14:16-06:00 Adobe Photoshop CC 2015 (Macintosh) / saved xmp.iid:f347c3b3-221f-441c-9330-4de0f7b2d965 2019-03-15T15:14:16-06:00 Adobe Photoshop CC 2015 (Macintosh) / 1 10000/10000 10000/10000 2 65535 120 120 O cHRMz%u0`:o_FIDATx{Uu?{֭ Q1Y:"N0k1L2f0q%G`sʈOP2"T| Qh^MWս;;n=G[]pZVխ_8쳷IbD^*.x+2I5Ff;%-vV2CX$ j`A`DYA`rA6R4?rc.NMQ22 lh-vLS&1݅6;n#*迷Cd(2DE,Y "f DJj#I)3 7:u78g{ 0CcKI{f v=ƆVM6W!j'' Lh.E/ l lp7|#`׺BA`g(iGz_ۀS~>SBׁ)LWS#f&Lg"6!{p=S%;9uP#~JO*g!*@΍shLK&|'bs]K\`둪] L{+%3G /5a|Uو KG.lHgJL,Z c鋒 }=_{ɿ`Bs.ٟ<P! kd}/ΦP_ {s$)Q\\IN><_Cŗ#?"+߬{W"3 .>lDP 8" ;ރ^UEz.Xo*/ sR:ˠTQ|j:`ZHQ 0:\9o7[/9EF*axJ8zA\i# n*?:_ .i,"KFTe'>td\~^p;tgO~Z{ޮZEkOyq9{v2< ,4ރ\-~%l֍#p[&\wswvݗC8 lNt)e@{?5=q~N2~I~;_Jy_neXNzjޘotA=u2cwWrsy̞?4o҈:fǍrhjiXʣCمUbRҝ9v77#<$7nŏ(#hi8*$ᖸn} tQɍoOq!Zڄ[7冣{ȱvB -&aY`6kV8y0Pg3zTk3B/2X!I枌Y t-6w)sf *9<%Xte0|E3ѝn?33>N)S =}HǗsksEjnX, –HqTtZaj>\C9}xnnjT:]!$N[ND0[^>}[V)qԘx xJgЈ=⽓QR!P V Fk6b_li-?NZS%IA7VYo\;E ڭJ|YlPU<3ڪh̩6tM6S/k〭~HnΨ,x6X9s_AotbV905ΉVIkMv 1ЫZ/#T J*bS,񓳁Ӈ `_.tJrWO[c0f"89Xu0pfvjmrNO,yb)[\4/r {򼐵luN>Sb$5+xVax6 y3ab?`?j=<Ջ Zl+Ҵ@Q#OUO_yY9a%Q9E6HՃ9 ]S^g%缣~Y^mi(͏S3Gig]'fZBQzb!ϘWs߮Ol3r˳ _M,vDѡ;Í')4/*]ج-G?MH:XdXg`ۑ=`hfBx`]leS}܃b.ðWadAI[f2i[MX6U:(iMh4iњ2) =4!ZV{1L+5z2~ V6IU-C&izm10aܻޘm?1W/yKNU !;z΋q4WJe|č4EՁ( {H?D+0};4!BF]O6V ,ca6Vd9bMSVZ`s*ڬeQΠ)ѿ}QC#:hHH#fxڈ?z^ Bط$ݨBTdBo15a i'`q]_9kgH6`#! oZDeٻ) MKgGo_zPN->E~nh\]x=fчxωHe }sؠB;zѷwOr/~r[zw #6:*&ۧtaLKFuԹ.s.vsкXgwm sS678}Kwin?It{D1dD,( \QC \T>AJCcE&0IݲO6cE`RKд}' k>{[~?UNݱJjjR:s&C9⮡,Dhǜ wɆ>@1v}+ծRiRkvFvff#Bþ I K:u-^S! V"ZyH;c9,=6 C0[QklмLie㾣&J`{;0&xid!2`l>!n@GMw)൏ R-> B[u lA~ O+0D50wdzq&Jx?;/60[ѦGŒr]|S.c`a5CrGUז)gh]>* Xxt}q(7Vsk򢋲_ˮ֚S}Mt71$$HS|,Ft_-+uXi ,E3WصͯJ]u뒺.3pQ%ƙ47HqmįuM$߰T3;本ւz=Z+ϴQ).?ceYڔ^AObyփT|:]H)ț^k˖vY%Ss0zjwzrT?cɺ6O|h1hΓsD>Z# hRM*ʰ2ɼ Oԝ49=qlc ULOHHͅ-EY܏Ts T@ai&,Y2avFNQ-`:Ң1ʹԒ@mlNݘ R6`g&jƊ ^CagcPb ܆wyxiQrF>[$7u\S]Jѭp=p;r7aAMm+IyX[}LKmJyH~j9U3^'S|ZJl)üzFXSj=O3CG9.ǫ_UCY{RY[\1Uh\"?=_q_57y^d: Xf"G{;fq|WC5ò~%]{+RRĿ{QI[/'mEp;k|(秀V5]X{^Tt zjZ跰xFo-綦Ք5iߚR~y~zi1T%$eLY_oM~Fq0eL!\d`GfxK4E>B8%F|< P9=dgcxSYOWT(ƒp#ԝK16#;=g"4YgSXn6woR)ֿr 3 rHq~1?('8ʵm 0݉gft}cr숕{ 3vC˸SnWئŪm9K4Aadt:1Лk&htwo? ܾ5IENDB`PK!jf"src/Legacy/admin/images/select.pngnu[PNG  IHDR$$gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxJ@w7zIR"\ ^ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-?iTXtXML:com.adobe.xmp 2016-02-20T15:50:05-07:00 2017-06-04T13:43:19-06:00 2017-06-04T13:43:19-06:00 Adobe Photoshop CC 2015 (Macintosh) image/png 3 sRGB IEC61966-2.1 xmp.iid:0a0ea03a-292c-48c7-bdfc-603d81fdfd18 adobe:docid:photoshop:d6683a1d-0fea-117a-8834-df3f7cfb76ae xmp.did:22a37fe0-9407-4d59-805e-f8bf053f45d6 saved xmp.iid:22a37fe0-9407-4d59-805e-f8bf053f45d6 2016-05-30T16:42:30-06:00 Adobe Photoshop CC 2015 (Macintosh) / converted from application/vnd.adobe.photoshop to image/png derived converted from application/vnd.adobe.photoshop to image/png saved xmp.iid:118a24b3-6bba-4ad5-83cf-767b8365204b 2016-05-30T16:42:30-06:00 Adobe Photoshop CC 2015 (Macintosh) / saved xmp.iid:0a0ea03a-292c-48c7-bdfc-603d81fdfd18 2017-06-04T13:43:19-06:00 Adobe Photoshop CC 2015 (Macintosh) / xmp.iid:22a37fe0-9407-4d59-805e-f8bf053f45d6 xmp.did:22a37fe0-9407-4d59-805e-f8bf053f45d6 xmp.did:22a37fe0-9407-4d59-805e-f8bf053f45d6 1 3000000/10000 3000000/10000 2 1 120 119 V cHRMz%u0`:o_F^IDATxyUǿVuLB@,!Y,D ~"('(xFy|*$HL&o/U5: 3]Ku&C>|{Ws=\aY%_#(\BJP"%.a8~q/z â<(inayj70LZ Nq  @OC`=JDx<Ʊp$p},6 ^+ cN`K>e_:X .\Nv8p}X<l)YH)8bK̛E;ܑpn/ A2eLd)(p.~O*< DҢ@y.j-TtOI@zH {+l{3خǕRBO_hDOApm?m/cC5B0MHMgGx=sQQs qh|;)6 ɓ3߰-#;< -/\j7uUJ b .,n@Ŋ- ܗNj?t,vw~( 0hjtK O\+ ,uI8jLYHIVw5WJAU*m11ДE}mW,d/jK/WL.4A8l+N}=:>ߓiâ?`)j?vkSU$݆ UI&S!(C٧|iv#g7ڲ RRHka!TRGnFI=| ~dC2 U0drhLx6^B |$e@VGDS갰\;ɵshB'e&Y"TXj^N>9>\2YOAn2|IO"d--BPx:'Z68)uT5e-TF^4g[Rlz+&~=HW ٭i8;6= P,6[Ԗ+9n#m+~( 'xL}dKl2%frvL> b)!TPRh۩{!dt7궧 _/Dz\.}2Y5X*fMdQW)CI-p܊JvB|X^Nj}SϦ"?6@0Bj9`Iŀe+zSCTUק T83DHʀiM{O,SqD[\M.(>hv=ti.gGJj#eķ#!3FJqdrh4፤R6ֳ}7<#G$*CfEy@*imI.4zHRLG"0` νæE@ (j܃ɷ!쥾| }pSk&4VYLkح|:` U2Yo\l |H~̼)iI,9H8c+ 0uhez%>ڲ ңVgt66IJH$$4Z&Ά`Z)5:!QEm{%,r}e0d+܆in´$Td+RLEЯ (B oݍKFE)GI Q[eEH'Ri DeZタ|۔등eʯx Z8*$CyծoQ]^9ʲzBY;;oݙͶźƽ45j^Eh"4"9W%B|%x*#W 6ݶ?&>7˴wufh?ٶΏ soPA̷41 ѩLW1ڤQac}#As]Cu)4j4QbC[9l/9ա#ßDmL!荴s!Wֿͺ3_Befezl)4O"ivy7RVfZ3~7Na F8 gKo!2)3+(w'm 8ML΅L_o9xgʄfɐǛ"/ 2~9J~~āLN"P1"HuW;!&g◭cfFXȚVZILkܛs9fŞhKW6F!n*}%嬦x0Fݖ n`01CO ~-3.B kŐ̌xߣ1B  P3.Q֞bgYHnUS\` "nw+ #GDAˎ1. ` T@!Ńc2J]&؋B&l,".WY^d\O^Iq=_: !_DKG5Q>e/:V ͶE$xK&EbY&7nRG̅`/,:66,-M$EMTqe#Cffv7LJzyw'}F©Մ@;P#xP_VjY߱M=kinvJ4? ^iAB2|ю&S7ۯd詝6܅$ uQs ]!2DF]"EVfr~]G'?؋lT(*ڠr"/{m+iqexndL"0FzOIA΁W٩fW0fhY& xqc ;"K3 |:,[Eu~' WvBW'z4|`^zk\)Mav턎L_V{hz#~I=7i}*hpO#og|@@Ũ|u *{tr ~ق=M84s"x5;J4|UI❻( a.Euamv¡BUB7a7y"pG8+T b)B@(d&SVNJUOr' I6iV&{:=?{}bM$SvR͠z5_ޒBlVEm[#cY ?\wwvb:<\J%eZ#'/L&r5$^ ! G`@@F&6%4FWѺ.ICu=e {6W.⵺Sf:bO$˗>,k7rKR|>a:mёb۶b{Oj?v9 M-Qrf:bO< nT!x4 7BpUEgg-[,n4+PEba͵ uqo Vcy&ۓnHYOԻ!׏.pY q+{|bA-[1M'S4q2eT塿EM]%;HnB4tK.gq[&ioO ;CJ׎OCo%yf zVz Z뚇.(z3?nyH.~bxp˦ }`!bmKhW2J\ _Ū[󄂬RSkf[I[&+!w>6/¸\ ~Pi>M,SX+hHs|4h@ y5Qjkd lDlfK'>^!)jY&'|dҤ3IB!cȽ9&:K T;M"}gabtQ ->xE/`j _Huk]5P|M`J {sO0MMHe!ך?dM7?CPAj@Z%Y=*&>rH !4[50M\)y>$Kn!+2X/W )I0D%&:pSNpO^r;alԁ%۫y==R/&Zh3Jquy-irɽ`&':z14b8!UKw'tCsՠ҅HUWnMࢨC«᧣z87>{2{} H.*E-r'٨䯣+"oNYj{_nMխD.Ln]MKm#0u-!E,T{#-QSI.~Qf"skNuyh(*a0>LKK>MǴ Zg=F>+s6Q|CB[хg8\EJW=t!7jl%i$) -E#Ps||^lzdάl"[ 1 | 5y. QY^4 5N?w}wQWQeU|;h5]S-{*w7-M5y_^xinxy$-}fc%l.ɖealc.&̲WAPgi)(g([ZCo*&~={ˌ2֕]D&(H6rOߗYgfB!CO4o˜!#~ygD-J~cq#Ь E͚`T'ٻ jzfr.QB- xemCToˠBD*>!EUR3lc#~X?\PڞȵA}x{| u6oEn1X! O,EQR$@g0#nѿFXnх!-޲sk:_"kJw>/H'~~q (X 3{ '', 'status' => 'ok', ]; if ( isset( $_POST['tag_action'] ) ) { check_admin_referer( 'nggallery_admin_tags' ); if ( $_POST['tag_action'] == 'renametag' ) { $oldtag = ( isset( $_POST['renametag_old'] ) ) ? $_POST['renametag_old'] : ''; $newtag = ( isset( $_POST['renametag_new'] ) ) ? $_POST['renametag_new'] : ''; $action_status = nggTags::rename_tags( $oldtag, $newtag ); Transient::flush( 'displayed_gallery_rendering' ); } elseif ( $_POST['tag_action'] == 'deletetag' ) { $todelete = ( isset( $_POST['deletetag_name'] ) ) ? $_POST['deletetag_name'] : ''; $action_status = nggTags::delete_tags( $todelete ); Transient::flush( 'displayed_gallery_rendering' ); } elseif ( $_POST['tag_action'] == 'editslug' ) { $matchtag = esc_html( ( isset( $_POST['tagname_match'] ) ) ? $_POST['tagname_match'] : '' ); $newslug = ( isset( $_POST['tagslug_new'] ) ) ? $_POST['tagslug_new'] : ''; $newslug = esc_html( \Imagely\NGG\DataStorage\Sanitizer::strip_html( $newslug ) ); $action_status = nggTags::edit_tag_slug( $matchtag, $newslug ); Transient::flush( 'displayed_gallery_rendering' ); } } // Som useful variables. $admin_base_url = admin_url() . 'admin.php?page=nggallery-tags'; $nb_tags = 50; // Number of tags to show on a single page. // Manage URL. $sort_order = ( isset( $_GET['tag_sortorder'] ) ) ? esc_attr( stripslashes( $_GET['tag_sortorder'] ) ) : 'desc'; $search_url = ( isset( $_GET['search'] ) ) ? '&search=' . esc_attr( stripslashes( $_GET['search'] ) ) : ''; $action_url = $admin_base_url . '&tag_sortorder=' . $sort_order . $search_url; // Tags Filters. $order_array = [ 'desc' => __( 'Most popular', 'nggallery' ), 'asc' => __( 'Least used', 'nggallery' ), 'natural' => __( 'Alphabetical', 'nggallery' ), ]; // Build Tags Param. $param = 'hide_empty=false'; switch ( $sort_order ) { case 'natural': $param .= '&number=' . $nb_tags . '&orderby=name&order=asc'; break; case 'asc': $param .= '&number=' . $nb_tags . '&orderby=count&order=asc'; break; default: $param .= '&number=' . $nb_tags . '&orderby=count&order=desc'; break; } // Search. if ( ! empty( $_GET['search'] ) ) { $search = sanitize_text_field( wp_unslash( $_GET['search'] ) ); $param .= '&name__like=' . $search; } // Offset. if ( ! empty( $_GET['offset'] ) ) { $param .= '&offset=' . intval( $_GET['offset'] ); } // Navigation urls. if ( empty( $_GET['offset'] ) ) { $offset = 0; } else { $offset = intval( $_GET['offset'] ); } $tag_count = (int) wp_count_terms( [ 'ignore_empty' => true, 'taxonomy' => 'ngg_tag', ] ); if ( $offset + $nb_tags < $tag_count ) { $next_offset = '' . min( $offset + $nb_tags, $tag_count - $nb_tags ); } else { $next_offset = ''; } if ( $nb_tags < $tag_count && $offset > 0 ) { $prev_offset = '' . max( $offset - $nb_tags, 0 ); } else { $prev_offset = ''; } ?>

$title ) { $output[] = ( $sort == $sort_order ) ? '' . $title . '' : '' . $title . ''; } echo implode( ' | ', $output ); $output = []; unset( $output ); ?>
    ' . $tag->name . ' ('.$tag->count.')'."\n";. echo '
  • ' . esc_html( $tag->name ) . ' ' . '(' . esc_html( $tag->count ) . ')
  • ' . "\n"; } unset( $tags ); ?>

Slug definition. You can specify multiple tags to rename by separating them with commas.', 'nggallery' ); ?>

PK!!**src/Legacy/admin/roles.phpnu[


:
:
:
:
:
:
:
:
:
:
role_objects; $sorted = []; if ( class_exists( 'RoleManager' ) ) { foreach ( $roles as $role_key => $role_name ) { $role = get_role( $role_key ); if ( empty( $role ) ) { continue; } $role_user_level = array_reduce( array_keys( $role->capabilities ), [ 'WP_User', 'level_reduction' ], 0 ); $sorted[ $role_user_level ] = $role; } $sorted = array_values( $sorted ); } else { $role_order = [ 'subscriber', 'contributor', 'author', 'editor', 'administrator' ]; foreach ( $role_order as $role_key ) { $sorted[ $role_key ] = get_role( $role_key ); } } return $sorted; } function ngg_get_role( $capability ) { // This function return the lowest roles which has the capabilities. $check_order = ngg_get_sorted_roles(); $args = array_slice( func_get_args(), 1 ); $args = array_merge( [ $capability ], $args ); foreach ( $check_order as $check_role ) { if ( empty( $check_role ) ) { return false; } if ( call_user_func_array( [ &$check_role, 'has_cap' ], $args ) ) { return $check_role->name; } } return false; } function ngg_set_capability( $lowest_role, $capability ) { // This function set or remove the $capability. $check_order = ngg_get_sorted_roles(); $add_capability = false; foreach ( $check_order as $the_role ) { $role = $the_role->name; if ( $lowest_role == $role ) { $add_capability = true; } // If you rename the roles, then please use a role manager plugin. if ( empty( $the_role ) ) { continue; } $add_capability ? $the_role->add_cap( $capability ) : $the_role->remove_cap( $capability ); } } ?>PK!w*6 6 src/Legacy/admin/rotate.phpnu[get_image_url( $id, 'full' ); ?>



PK!8q;q;!src/Legacy/admin/media-upload.phpnu[ __( 'NextGEN Gallery', 'nggallery' ) ]; return array_merge( $tabs, $newtab ); } function media_upload_nextgen() { // Not in use. $errors = false; // Generate TinyMCE HTML output. if ( isset( $_POST['send'] ) ) { $keys = array_keys( $_POST['send'] ); $send_id = (int) array_shift( $keys ); $image = $_POST['image'][ $send_id ]; $alttext = stripslashes( htmlspecialchars( $image['alttext'], ENT_QUOTES ) ); $description = stripslashes( htmlspecialchars( $image['description'], ENT_QUOTES ) ); // here is no new line allowed. $clean_description = preg_replace( "/\n|\r\n|\r$/", ' ', $description ); $img = nggdb::find_image( $send_id ); $thumbcode = $img->get_thumbcode(); $class = "ngg-singlepic ngg-{$image['align']}"; // Create a shell displayed-gallery so we can inspect its settings. $args = new stdClass(); $args->display_type = NGG_BASIC_SINGLEPIC; $displayed_gallery = new \Imagely\NGG\DataTypes\DisplayedGallery( $args ); $width = $displayed_gallery->display_settings['width']; $height = $displayed_gallery->display_settings['height']; // Build output. if ( $image['size'] == 'thumbnail' ) { $html = "{$alttext}"; } else { $html = ''; } // Wrap the link to the fullsize image around. $html = "{$html}"; if ( $image['size'] == 'full' ) { $html = "{$alttext}"; } if ( $image['size'] == 'singlepic' ) { $html = "[singlepic id={$send_id} w={$width} h={$height} float={$image['align']}]"; } media_upload_nextgen_save_image(); // Return it to TinyMCE. return media_send_to_editor( $html ); } // Save button. if ( isset( $_POST['save'] ) ) { media_upload_nextgen_save_image(); } wp_iframe( 'media_upload_nextgen_form', $errors ); die(); } function media_upload_nextgen_save_image() { global $wpdb; check_admin_referer( 'ngg-media-form' ); if ( ! empty( $_POST['image'] ) ) { foreach ( $_POST['image'] as $image_id => $image ) { // create a unique slug. $image_slug = nggdb::get_unique_slug( sanitize_title( $image['alttext'] ), 'image' ); $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->nggpictures} SET `image_slug` = %s, `alttext` = %s, `description` = %s WHERE pid = %d", [ $image_slug, $image['alttext'], $image['description'], $image_id, ] ) ); wp_cache_delete( $image_id, 'ngg_image' ); } } } function media_upload_nextgen_form( $errors ) { global $wpdb, $ngg; media_upload_header(); $from = isset( $_GET['from'] ) && 'block-editor' === $_GET['from'] ? 'block-editor' : 'classic-editor'; $post_id = intval( $_REQUEST['post_id'] ); $galleryID = 0; $total = 1; $picarray = []; $chromeless = isset( $_GET['chromeless'] ) ? $_GET['chromeless'] : null; $chromeless_url = $chromeless ? ( '&chromeless=' . $chromeless ) : null; $form_action_url = site_url( "wp-admin/media-upload.php?type={$GLOBALS['type']}&tab=nextgen&post_id=$post_id" . $chromeless_url, 'admin' ); // Get number of images in gallery. if ( isset( $_REQUEST['select_gal'] ) ) { $galleryID = (int) $_REQUEST['select_gal']; $total = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->nggpictures} WHERE `galleryid` = %d", [ $galleryID, ] ) ); } // Build navigation. $_GET['paged'] = isset( $_GET['paged'] ) ? intval( $_GET['paged'] ) : 0; if ( $_GET['paged'] < 1 ) { $_GET['paged'] = 1; } $start = ( $_GET['paged'] - 1 ) * 10; if ( $start < 1 ) { $start = 0; } // Get the images. if ( $galleryID != 0 ) { // Using %i in $wpdb->prepare() to signify column identifiers was only added in WP 6.2 // // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared $picarray = $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT `pid` FROM {$wpdb->nggpictures} WHERE `galleryid` = %d AND `exclude` != 1 ORDER BY {$ngg->options['galSort']}, `pid` {$ngg->options['galSortDir']} LIMIT {$start}, 10", [ $galleryID, ] ) ); // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared } // WP-Core code for Post-thumbnail. $calling_post_id = 0; if ( isset( $_GET['post_id'] ) ) { $calling_post_id = $_GET['post_id']; } ?>
add_query_arg( 'paged', '%#%' ), 'format' => '', 'total' => ceil( $total / 10 ), 'current' => $_GET['paged'], ] ); if ( $page_links ) { echo "
$page_links
"; } ?>


get_image_dimensions( $picid, 'thumb' ); extract( $dimensions ); $thumb_url = $storage->get_image_url( $picid, 'thumb' ); ?>
alttext ) ) ? wp_html_excerpt( esc_html( $picture->filename ), 60 ) : stripslashes( wp_html_excerpt( esc_html( $picture->alttext ), 60 ) ); ?>
<?php echo esc_attr( $picture->alttext ); ?>
filename ); ?>
alttext ) ); ?>
 
" . esc_html__( 'Use as featured image', 'nggallery' ) . ''; echo ""; ?>

gid = (int) $_GET['gid']; $this->gallery = GalleryMapper::get_instance()->find( $this->gid, true ); } if ( isset( $_GET['pid'] ) ) { $this->pid = (int) $_GET['pid']; } if ( isset( $_GET['mode'] ) ) { $this->mode = trim( sanitize_text_field( wp_unslash( $_GET['mode'] ) ) ); } // Check for pagination request, avoid post process of other submit button, exclude search results. // Nonce verification not necessary here: we are only determining which page to view, whose ID is always // cast to an integer. NextGEN has historically used POST in places it shouldn't, such as pagination here. // // phpcs:disable WordPress.Security.NonceVerification.Missing if ( isset( $_POST['post_paged'] ) && ! isset( $_GET['s'] ) ) { if ( $_GET['paged'] != $_POST['post_paged'] ) { $_GET['paged'] = absint( $_POST['post_paged'] ); return; } } // phpcs:enable WordPress.Security.NonceVerification.Missing // Should be only called via manage galleries overview. if ( isset( $_POST['nggpage'] ) && 'manage-galleries' === $_POST['nggpage'] && wp_verify_nonce( sanitize_key( wp_unslash( $_POST['_wpnonce'] ) ), 'ngg_bulkgallery' ) ) { $this->post_processor_galleries(); } // Should be only called via a edit single gallery page. if ( isset( $_POST['nggpage'] ) && 'manage-images' === $_POST['nggpage'] && wp_verify_nonce( sanitize_key( wp_unslash( $_POST['_wpnonce'] ) ), 'ngg_updategallery' ) ) { $this->post_processor_images(); } // Look for other POST process. if ( ! empty( $_POST ) || ! empty( $_GET ) ) { $this->processor(); } M_NextGen_Admin::emit_do_notices_action(); } public function controller() { switch ( $this->mode ) { case 'sort': include_once __DIR__ . '/manage-sort.php'; nggallery_sortorder( $this->gid ); break; case 'edit': $this->setup_gallery_fields(); $this->setup_image_rows(); include_once __DIR__ . '/manage-images.php'; nggallery_picturelist( $this ); break; case 'main': default: include_once __DIR__ . '/manage-galleries.php'; nggallery_manage_gallery_main(); break; } } public function processor() { global $ngg, $nggdb; // Delete a picture. if ( $this->mode == 'delpic' ) { // TODO:Remove also Tag reference. check_admin_referer( 'ngg_delpicture' ); $image = $nggdb->find_image( $this->pid ); if ( $image ) { do_action( 'ngg_delete_picture', $this->pid, $image ); if ( $ngg->options['deleteImg'] ) { $storage = StorageManager::get_instance(); $storage->delete_image( $this->pid ); } $mapper = ImageMapper::get_instance(); $result = $mapper->destroy( $this->pid ); if ( $result ) { nggGallery::show_message( __( 'Picture', 'nggallery' ) . ' \'' . $this->pid . '\' ' . __( 'deleted successfully', 'nggallery' ) ); } } $this->mode = 'edit'; // show pictures. } // Recover picture from backup. if ( $this->mode == 'recoverpic' ) { check_admin_referer( 'ngg_recoverpicture' ); // bring back the old image. nggAdmin::recover_image( $this->pid ); nggGallery::show_message( __( 'Operation successful. Please clear your browser cache.', 'nggallery' ) ); $this->mode = 'edit'; // show pictures. } // will be called after a ajax operation. if ( isset( $_POST['ajax_callback'] ) ) { if ( $_POST['ajax_callback'] == 1 ) { nggGallery::show_message( __( 'Operation successful. Please clear your browser cache.', 'nggallery' ) ); } } // show sort order. if ( isset( $_POST['sortGallery'] ) ) { $this->mode = 'sort'; } if ( isset( $_GET['s'] ) ) { $this->search_images(); } } public function setup_image_rows() { add_filter( 'ngg_manage_images_row', [ &$this, 'render_image_row' ], 10, 2 ); add_filter( 'ngg_manage_images_column_1_header', [ &$this, 'render_image_column_1_header' ] ); add_filter( 'ngg_manage_images_column_1_content', [ &$this, 'render_image_column_1' ], 10, 2 ); add_filter( 'ngg_manage_images_column_2_header', [ &$this, 'render_image_column_2_header' ] ); add_filter( 'ngg_manage_images_column_2_content', [ &$this, 'render_image_column_2' ], 10, 2 ); add_filter( 'ngg_manage_images_column_3_header', [ &$this, 'render_image_column_3_header' ] ); add_filter( 'ngg_manage_images_column_3_content', [ &$this, 'render_image_column_3' ], 10, 2 ); add_filter( 'ngg_manage_images_column_4_header', [ &$this, 'render_image_column_4_header' ] ); add_filter( 'ngg_manage_images_column_4_content', [ &$this, 'render_image_column_4' ], 10, 2 ); add_filter( 'ngg_manage_images_column_5_header', [ &$this, 'render_image_column_5_header' ] ); add_filter( 'ngg_manage_images_column_5_content', [ &$this, 'render_image_column_5' ], 10, 2 ); add_filter( 'ngg_manage_images_column_6_header', [ &$this, 'render_image_column_6_header' ] ); add_filter( 'ngg_manage_images_column_6_content', [ &$this, 'render_image_column_6' ], 10, 2 ); } public function render_image_column_1_header() { return ''; } public function render_image_column_2_header() { return __( 'ID', 'nggallery' ); } public function render_image_column_3_header() { return __( 'Thumbnail', 'nggallery' ); } public function render_image_column_4_header() { return __( 'Filename', 'nggallery' ); } public function render_image_column_5_header() { return __( 'Alt & Title Text / Description', 'nggallery' ); } public function render_image_column_6_header() { return __( 'Tags', 'nggallery' ); } public function render_image_column_1( $output = '', $picture = [] ) { return ""; } public function render_image_column_2( $output = '', $picture = [] ) { return $picture->pid; } public function render_image_column_3( $output = '', $picture = [] ) { $image_url = add_query_arg( 'i', mt_rand(), $picture->imageURL ); $thumb_url = add_query_arg( 'i', mt_rand(), $picture->thumbURL ); $filename = esc_attr( $picture->filename ); $output = []; $output[] = ""; $output[] = ""; $output[] = ''; return ( $output = implode( "\n", $output ) ); } public function render_image_column_4( $output = '', $picture = [] ) { $image_url = Router::esc_url( $picture->imageURL ); $filename = esc_attr( $picture->filename ); $caption = esc_html( ( empty( $picture->alttext ) ? $picture->filename : $picture->alttext ) ); $data_caption = esc_attr( $caption ); $caption = \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $caption ); $caption = esc_attr( $caption ); $date = mysql2date( get_option( 'date_format' ), $picture->imagedate ); $width = $picture->meta_data['width']; $height = $picture->meta_data['height']; $pixels = "{$width} x {$height} pixels"; $excluded = checked( $picture->exclude, 1, false ); $exclude_label = __( 'Exclude ?', 'nggallery' ); $output = []; $output[] = ""; $output[] = '
' . esc_html( $date ) . '
'; $output[] = "
{$pixels}
"; $output[] = "'; return ( $output = implode( "\n", $output ) ); } public function render_image_column_5( $output = '', $picture = [] ) { $alttext = \Imagely\NGG\Display\I18N::ngg_sanitize_text_alt_title_desc( $picture->alttext ); $desc = \Imagely\NGG\Display\I18N::ngg_sanitize_text_alt_title_desc( $picture->description ); $output = []; $output[] = ""; $output[] = ""; return ( $output = implode( "\n", $output ) ); } public function render_image_column_6( $output = '', $picture = [] ) { global $wp_version; $fields = version_compare( $wp_version, '4.6', '<=' ) ? 'fields=names' : [ 'fields' => 'names' ]; $tags = wp_get_object_terms( $picture->pid, 'ngg_tag', $fields ); if ( is_array( $tags ) ) { $tags = implode( ', ', $tags ); } $tags = esc_html( $tags ); return ""; } public function render_image_row( $picture, $counter ) { // Get number of columns. $class = ! ( $counter % 2 == 0 ) ? '' : 'alternate'; $columns = apply_filters( 'ngg_manage_images_number_of_columns', 6 ); // Get the valid row actions. $actions = []; $row_actions = apply_filters( 'ngg_manage_images_row_actions', [ 'view' => [ &$this, 'render_view_action_link' ], 'meta' => [ &$this, 'render_meta_action_link' ], 'custom_thumb' => [ &$this, 'render_custom_thumb_action_link' ], 'rotate' => [ &$this, 'render_rotate_action_link' ], 'recover' => [ &$this, 'render_recover_action_link' ], 'delete' => [ &$this, 'render_delete_action_link' ], ] ); foreach ( $row_actions as $id => $callback ) { if ( is_callable( $callback ) ) { $result = call_user_func( $callback, $id, $picture ); if ( $result ) { $actions[] = $result; } } } // Output row columns. echo ""; for ( $i = 1; $i <= $columns; $i++ ) { $rowspan = $i > 4 ? "rowspan='2'" : ''; echo ""; echo apply_filters( "ngg_manage_images_column_{$i}_content", '', $picture ); echo ''; } echo ''; // Actions row. echo ""; echo ''; echo ""; echo "
"; echo implode( ' | ', $actions ); echo '
'; echo ''; echo ''; } public function render_view_action_link( $id, $picture ) { $image_url = Router::esc_url( $picture->imageURL ); $label = esc_html__( 'View', 'nggallery' ); $alt_text = empty( $picture->alttext ) ? $picture->filename : $picture->alttext; $data_title = esc_attr( __( 'View', 'nggallery' ) ) . ' "' . esc_attr( $alt_text ) . '"'; $alt_text = \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $alt_text ); $title = esc_attr( __( 'View', 'nggallery' ) ) . ' "' . esc_attr( $alt_text ) . '"'; return "{$label}"; } public function render_meta_action_link( $id, $picture ) { $url = Router::esc_url( NGGALLERY_URLPATH . 'admin/showmeta.php?id=' . $picture->pid . '&nonce=' . \wp_create_nonce( 'ngg_meta_popup' ) ); $title = esc_attr__( 'Show meta data', 'nggallery' ); $label = esc_html__( 'Meta', 'nggallery' ); return "{$label}"; } public function render_custom_thumb_action_link( $id, $picture ) { $url = Router::esc_url( NGGALLERY_URLPATH . 'admin/edit-thumbnail.php?id=' . $picture->pid . '&nonce=' . \wp_create_nonce( 'ngg_edit_thumbnail' ) ); $title = esc_attr__( 'Customize thumbnail', 'nggallery' ); $label = esc_html__( 'Edit thumb', 'nggallery' ); return "{$label}"; } public function render_rotate_action_link( $id, $picture ) { $url = Router::esc_url( NGGALLERY_URLPATH . 'admin/rotate.php?id=' . $picture->pid . '&nonce=' . \wp_create_nonce( 'ngg_edit_rotation' ) ); $title = esc_attr__( 'Rotate', 'nggallery' ); $label = esc_html__( 'Rotate', 'nggallery' ); return "{$label}"; } public function render_recover_action_link( $id, $picture ) { if ( ! file_exists( $picture->imagePath . '_backup' ) ) { return false; } $url = wp_nonce_url( "admin.php?page=nggallery-manage-gallery&mode=recoverpic&gid={$picture->galleryid}&pid={$picture->pid}", 'ngg_recoverpicture' ); $title = esc_attr__( 'Recover image from backup', 'nggallery' ); $label = esc_html__( 'Recover', 'nggallery' ); $question = __( 'Recover', 'nggallery' ); $alttext = empty( $picture->alttext ) ? $picture->filename : $picture->alttext; $alttext = Sanitizer::strip_html( html_entity_decode( $alttext ), true ); $alttext = htmlentities( $alttext, ENT_QUOTES | ENT_HTML401 ); $alttext = \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $alttext ); $alttext = esc_attr( $alttext ); // Event handler is found in nextgen_admin_page.js. return "{$label}"; } public function render_delete_action_link( $id, $picture ) { $url = wp_nonce_url( "admin.php?page=nggallery-manage-gallery&mode=delpic&gid={$picture->galleryid}&pid={$picture->pid}", 'ngg_delpicture' ); $title = esc_attr__( 'Delete image', 'nggallery' ); $label = esc_html__( 'Delete', 'nggallery' ); $question = __( 'Delete', 'nggallery' ); $alttext = empty( $picture->alttext ) ? $picture->filename : $picture->alttext; $alttext = Sanitizer::strip_html( html_entity_decode( $alttext ), true ); $alttext = htmlentities( $alttext, ENT_QUOTES | ENT_HTML401 ); $alttext = \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $alttext ); $alttext = esc_attr( $alttext ); // Event handler is found in nextgen_admin_page.js. return "{$label}"; } public function render_image_row_header() { $columns = apply_filters( 'ngg_manage_images_number_of_columns', 6 ); echo ''; for ( $i = 1; $i <= $columns; $i++ ) { echo ""; echo apply_filters( 'ngg_manage_images_column_' . $i . '_header', "Column #{$i}" ); echo ''; } echo ''; } public function setup_gallery_fields() { add_filter( 'ngg_manage_gallery_fields', [ &$this, 'default_gallery_fields' ], 10, 2 ); } public function default_gallery_fields( $fields = [], $gallery = null ) { $fields['left'] = [ 'title' => [ 'callback' => [ &$this, 'render_gallery_title_field' ], 'label' => __( 'Title:', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_title', ], 'description' => [ 'callback' => [ &$this, 'render_gallery_desc_field' ], 'label' => __( 'Description:', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_desc', ], 'path' => [ 'callback' => [ &$this, 'render_gallery_path_field' ], 'label' => __( 'Gallery path:', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_path', ], 'gallery_author' => [ 'callback' => [ &$this, 'render_gallery_author_field' ], 'label' => __( 'Author', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_author', ], ]; $fields['right'] = [ 'page_link_to' => [ 'callback' => [ &$this, 'render_gallery_link_to_page_field' ], 'label' => __( 'Link to page:', 'nggallery' ), 'tooltip' => __( 'Albums will link this gallery to the selected page', 'nggallery' ), 'id' => 'gallery_page_link_to', ], 'preview_image' => [ 'callback' => [ &$this, 'render_gallery_preview_image_field' ], 'label' => __( 'Preview image:', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_preview_image', ], 'create_page' => [ 'callback' => [ &$this, 'render_gallery_create_page_field' ], 'label' => __( 'Create new page:', 'nggallery' ), 'tooltip' => null, 'id' => 'gallery_create_new_page', ], ]; return $fields; } public function render_gallery_field_label_column( $text, $for, $tooltip = null ) { $for = esc_attr( $for ); if ( ! empty( $tooltip ) ) { $tooltip = "title='{$tooltip}' class='tooltip'"; } echo ""; } public function render_gallery_fields() { // Get the gallery entity. $gallery = GalleryMapper::get_instance()->find( $this->gid ); // Get fields. $fields = apply_filters( 'ngg_manage_gallery_fields', [], $gallery ); $left = isset( $fields['left'] ) ? $fields['left'] : []; $right = isset( $fields['right'] ) ? $fields['right'] : []; // Output table. echo ''; $number_of_fields = max( count( $left ), count( $right ) ); $left_keys = array_keys( $left ); $right_keys = array_keys( $right ); for ( $i = 0; $i < $number_of_fields; $i++ ) { // Start row. echo ''; // Left column. if ( isset( $left_keys[ $i ] ) ) { extract( $left[ $left_keys[ $i ] ] ); // Label. $this->render_gallery_field_label_column( $label, $id, $tooltip ); // Input field. if ( is_callable( $callback ) ) { echo ''; } elseif ( WP_DEBUG ) { echo "

Could not render {$left_keys[$i]} field. No callback exists

"; } } else { $output[] = ''; } // Right column. if ( isset( $right_keys[ $i ] ) ) { extract( $right[ $right_keys[ $i ] ] ); // Label. $this->render_gallery_field_label_column( $label, $id, $tooltip ); // Input field.. if ( is_callable( $callback ) ) { echo ''; } elseif ( WP_DEBUG ) { echo "

Could not render {$right_keys[$i]} field. No callback exists

"; } } else { $output[] = ''; } // End. echo ''; } echo ''; } public function render_gallery_title_field( $gallery ) { include 'templates/manage_gallery/gallery_title_field.php'; } public function render_gallery_desc_field( $gallery ) { include 'templates/manage_gallery/gallery_desc_field.php'; } public function render_gallery_path_field( $gallery ) { include 'templates/manage_gallery/gallery_path_field.php'; } public function render_gallery_author_field( $gallery ) { $user = get_userdata( $gallery->author ); $author = isset( $user->display_name ) ? $user->display_name : $user->user_nicename; include 'templates/manage_gallery/gallery_author_field.php'; } public function render_gallery_link_to_page_field( $gallery ) { $pages = get_pages(); include 'templates/manage_gallery/gallery_link_to_page_field.php'; } public function render_gallery_preview_image_field( $gallery ) { $images = []; foreach ( ImageMapper::get_instance()->find_all( [ 'galleryid = %s', $gallery->{$gallery->id_field} ] ) as $image ) { $images[ $image->{$image->id_field} ] = "[{$image->{$image->id_field}}] {$image->filename}"; } include 'templates/manage_gallery/gallery_preview_image_field.php'; } public function render_gallery_create_page_field( $gallery ) { $pages = get_pages(); include 'templates/manage_gallery/gallery_create_page_field.php'; } public function post_processor_galleries() { global $ngg; check_admin_referer( 'ngg_bulkgallery' ); // bulk update in a single gallery. if ( isset( $_POST['bulkaction'] ) && isset( $_POST['doaction'] ) ) { switch ( $_POST['bulkaction'] ) { case 'no_action'; // No action. break; case 'recover_images': // Recover images from backup. // A prefix 'gallery_' will first fetch all ids from the selected galleries. nggAdmin::do_ajax_operation( 'gallery_recover_image', $_POST['doaction'], __( 'Recover from backup', 'nggallery' ) ); break; case 'set_watermark': // Set watermark // A prefix 'gallery_' will first fetch all ids from the selected galleries. nggAdmin::do_ajax_operation( 'gallery_set_watermark', $_POST['doaction'], __( 'Set watermark', 'nggallery' ) ); break; case 'import_meta': // Import Metadata // A prefix 'gallery_' will first fetch all ids from the selected galleries. nggAdmin::do_ajax_operation( 'gallery_import_metadata', $_POST['doaction'], __( 'Import metadata', 'nggallery' ) ); break; case 'delete_gallery': // Delete gallery. if ( is_array( $_POST['doaction'] ) ) { $deleted = false; $mapper = GalleryMapper::get_instance(); foreach ( $_POST['doaction'] as $id ) { $gallery = $mapper->find( $id ); if ( $gallery->path == '../' || false !== strpos( $gallery->path, '/../' ) ) { nggGallery::show_message( sprintf( __( 'One or more "../" in Gallery paths could be unsafe and NextGen Gallery will not delete gallery %s automatically', 'nggallery' ), $gallery->{$gallery->id_field} ) ); } elseif ( $mapper->destroy( $id, true ) ) { $deleted = true; } } if ( $deleted ) { nggGallery::show_message( esc_html__( 'Gallery deleted successfully ', 'nggallery' ) ); } } break; } } if ( isset( $_POST['addgallery'] ) && isset( $_POST['galleryname'] ) ) { check_admin_referer( 'ngg_bulkgallery' ); if ( ! nggGallery::current_user_can( 'NextGEN Add new gallery' ) ) { wp_die( esc_html_e( 'Cheatin’ uh?', 'nggallery' ) ); } // get the default path for a new gallery. $newgallery = $_POST['galleryname']; if ( ! empty( $newgallery ) ) { $gallery_mapper = GalleryMapper::get_instance(); $gallery = $gallery_mapper->create( [ 'title' => $newgallery ] ); if ( $gallery->save() && ! isset( $_REQUEST['attach_to_post'] ) ) { $url = admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery->gid; $message = sprintf( __( 'Gallery successfully created. Manage gallery', 'nggallery' ), $url ); nggGallery::show_message( $message, 'gallery_created_msg' ); } } do_action( 'ngg_update_addgallery_page' ); } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_ResizeImages'] ) ) { // save the new values for the next operation. $ngg->options['imgWidth'] = (int) $_POST['imgWidth']; $ngg->options['imgHeight'] = (int) $_POST['imgHeight']; // What is in the case the user has no if cap 'NextGEN Change options' ? Check feedback. update_option( 'ngg_options', $ngg->options ); $gallery_ids = explode( ',', $_POST['TB_imagelist'] ); // A prefix 'gallery_' will first fetch all ids from the selected galleries. nggAdmin::do_ajax_operation( 'gallery_resize_image', $gallery_ids, __( 'Resize images', 'nggallery' ) ); } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_NewThumbnail'] ) ) { // save the new values for the next operation. $settings = Settings::get_instance(); $settings->set( 'thumbwidth', (int) $_POST['thumbwidth'] ); $settings->set( 'thumbheight', (int) $_POST['thumbheight'] ); $settings->set( 'thumbfix', isset( $_POST['thumbfix'] ) ); $settings->save(); ngg_refreshSavedSettings(); // What is in the case the user has no if cap 'NextGEN Change options' ? Check feedback. $gallery_ids = explode( ',', $_POST['TB_imagelist'] ); // A prefix 'gallery_' will first fetch all ids from the selected galleries. nggAdmin::do_ajax_operation( 'gallery_create_thumbnail', $gallery_ids, __( 'Create new thumbnails', 'nggallery' ) ); } } public function post_processor_images() { global $wpdb, $ngg, $nggdb; check_admin_referer( 'ngg_updategallery' ); // bulk update in a single gallery. if ( isset( $_POST['bulkaction'] ) && isset( $_POST['doaction'] ) ) { check_admin_referer( 'ngg_updategallery' ); switch ( $_POST['bulkaction'] ) { case 'no_action'; break; case 'rotate_cw': nggAdmin::do_ajax_operation( 'rotate_cw', $_POST['doaction'], __( 'Rotate images', 'nggallery' ) ); break; case 'rotate_ccw': nggAdmin::do_ajax_operation( 'rotate_ccw', $_POST['doaction'], __( 'Rotate images', 'nggallery' ) ); break; case 'recover_images': nggAdmin::do_ajax_operation( 'recover_image', $_POST['doaction'], __( 'Recover from backup', 'nggallery' ) ); break; case 'set_watermark': nggAdmin::do_ajax_operation( 'set_watermark', $_POST['doaction'], __( 'Set watermark', 'nggallery' ) ); break; case 'strip_orientation_tag': nggAdmin::do_ajax_operation( 'strip_orientation_tag', $_POST['doaction'], __( 'Remove EXIF Orientation', 'nggallery' ) ); break; case 'delete_images': if ( is_array( $_POST['doaction'] ) ) { foreach ( $_POST['doaction'] as $imageID ) { $image = $nggdb->find_image( $imageID ); if ( $image ) { do_action( 'ngg_delete_picture', $image->pid, $image ); if ( $ngg->options['deleteImg'] ) { $storage = StorageManager::get_instance(); $storage->delete_image( $image->pid ); } $delete_pic = ImageMapper::get_instance()->destroy( $image->pid ); } } if ( $delete_pic ) { nggGallery::show_message( __( 'Pictures deleted successfully ', 'nggallery' ) ); } } break; case 'import_meta': nggAdmin::do_ajax_operation( 'import_metadata', $_POST['doaction'], __( 'Import metadata', 'nggallery' ) ); break; } } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_ResizeImages'] ) ) { // save the new values for the next operation. $ngg->options['imgWidth'] = (int) $_POST['imgWidth']; $ngg->options['imgHeight'] = (int) $_POST['imgHeight']; update_option( 'ngg_options', $ngg->options ); $pic_ids = explode( ',', $_POST['TB_imagelist'] ); nggAdmin::do_ajax_operation( 'resize_image', $pic_ids, __( 'Resize images', 'nggallery' ) ); } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_NewThumbnail'] ) ) { // save the new values for the next operation. $settings = Settings::get_instance(); $settings->set( 'thumbwidth', (int) $_POST['thumbwidth'] ); $settings->set( 'thumbheight', (int) $_POST['thumbheight'] ); $settings->set( 'thumbfix', isset( $_POST['thumbfix'] ) ); $settings->save(); ngg_refreshSavedSettings(); $pic_ids = explode( ',', $_POST['TB_imagelist'] ); nggAdmin::do_ajax_operation( 'create_thumbnail', $pic_ids, __( 'Create new thumbnails', 'nggallery' ) ); } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_SelectGallery'] ) ) { $pic_ids = explode( ',', $_POST['TB_imagelist'] ); $dest_gid = (int) $_POST['dest_gid']; switch ( $_POST['TB_bulkaction'] ) { case 'copy_to': $destination = GalleryMapper::get_instance()->find( $dest_gid ); $new_ids = StorageManager::get_instance()->copy_images( $pic_ids, $dest_gid ); if ( ! empty( $new_ids ) ) { $admin_url = admin_url(); $title = esc_html( $destination->title ); $link = "{$title}"; nggGallery::show_message( sprintf( __( 'Copied %1$s picture(s) to gallery: %2$s .', 'nggallery' ), count( $new_ids ), $link ) ); } else { nggGallery::show_error( __( 'Failed to copy images', 'nggallery' ) ); } break; case 'move_to': $destination = GalleryMapper::get_instance()->find( $dest_gid ); $new_ids = StorageManager::get_instance()->move_images( $pic_ids, $dest_gid ); if ( ! empty( $new_ids ) ) { $admin_url = admin_url(); $title = esc_html( $destination->title ); $link = "{$title}"; nggGallery::show_message( sprintf( __( 'Moved %1$s picture(s) to gallery: %2$s .', 'nggallery' ), count( $new_ids ), $link ) ); } else { nggGallery::show_error( __( 'Failed to move images', 'nggallery' ) ); } break; } } if ( isset( $_POST['TB_bulkaction'] ) && isset( $_POST['TB_EditTags'] ) ) { // do tags update. // get the images list. $pic_ids = explode( ',', $_POST['TB_imagelist'] ); $taglist = explode( ',', $_POST['taglist'] ); $taglist = array_map( 'trim', $taglist ); if ( is_array( $pic_ids ) ) { foreach ( $pic_ids as $pic_id ) { // which action should be performed ? switch ( $_POST['TB_bulkaction'] ) { case 'no_action'; // No action. break; case 'overwrite_tags': // Overwrite tags. wp_set_object_terms( $pic_id, $taglist, 'ngg_tag' ); break; case 'add_tags': // Add / append tags. wp_set_object_terms( $pic_id, $taglist, 'ngg_tag', true ); break; case 'delete_tags': // Delete tags. $oldtags = wp_get_object_terms( $pic_id, 'ngg_tag', 'fields=names' ); // get the slugs, to vaoid case sensitive problems. $slugarray = array_map( 'sanitize_title', $taglist ); $oldtags = array_map( 'sanitize_title', $oldtags ); // compare them and return the diff. $newtags = array_diff( $oldtags, $slugarray ); wp_set_object_terms( $pic_id, $newtags, 'ngg_tag' ); break; } } nggGallery::show_message( __( 'Tags changed', 'nggallery' ) ); } } if ( isset( $_POST['updatepictures'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'ngg_updategallery' ) ) { // Update pictures. $success = false; if ( nggGallery::current_user_can( 'NextGEN Edit gallery options' ) && ! isset( $_GET['s'] ) ) { $tags = [ '', '', '', '
', '', '', '', '', '
', '
', '
', '', '
', '', '', '', '', '
', '', '', '', '
', '
', '
', '', '
', '', '

', '

', '

', '

', '

', '
', '
', '', '', '', '

', '', '', '' ); ?>

Ecommerce Options

Good work. Keep making the web beautiful.

General Options

USD
 

SALES TAX NOTE: Sales tax is complex. CLICK HERE to learn more about sales tax and how NextGEN Pro calculates it. Because we use a third party service (TaxJar), an active Pro license is required to enable sales tax.

 
 

E-mail

 

Payment Gateway

 
 
 
 
 
 
 

Print Lab Integration

DO I NEED THIS? A credit card is needed only if you want to use automated print fulfillment.

WILL YOU CHARGE ME? You will not be charged now. Your card will only be charged if someone submits a print lab order on your site. At that point, you will be billed for print and shipping costs from the print lab. You would pay those costs yourself if you worked directly with the lab. We're just automating the process for you.

IS THIS SECURE? Assuming you've enabled SSL on your website, then yes. This form sends your card information directly to Stripe, one of the world's leading payment processors. It is stored securely at Stripe, not locally by WordPress or NextGEN Gallery. Note: Without SSL, this form is not 100% secure. You should also enable SSL before receiving payments from your own visitors.

AGREEMENT: By submitting your card here, you authorise Imagely to bill your card for the cost of print lab orders.

No card on file.

Proofing

 

PK!:mM9K9Ksrc/Admin/AMNotifications.phpnu[option && $cache ) { return $this->option; } $option = get_option( self::$option_name, [] ); $this->option = [ 'update' => ! empty( $option['update'] ) ? $option['update'] : 0, 'events' => ! empty( $option['events'] ) ? $option['events'] : [], 'feed' => ! empty( $option['feed'] ) ? $option['feed'] : [], 'dismissed' => ! empty( $option['dismissed'] ) ? $option['dismissed'] : [], ]; return $this->option; } /** * Fetch notifications from feed. * * @since 1.8.7 * * @return array */ public function fetch_feed() { $res = wp_remote_get( self::SOURCE_URL ); if ( is_wp_error( $res ) ) { return []; } $body = wp_remote_retrieve_body( $res ); if ( empty( $body ) ) { return []; } return $this->verify( json_decode( $body, true ) ); } /** * Verify notification data before it is saved. * * @since 1.8.7 * * @param array $notifications Array of notifications items to verify. * @return array */ public function verify( $notifications ) { $data = []; if ( ! is_array( $notifications ) || empty( $notifications ) ) { return $data; } $option = $this->get_option(); foreach ( $notifications as $notification ) { // The message and license should never be empty, if they are, ignore. if ( empty( $notification['content'] ) && empty( $notification['type'] ) ) { continue; } // Ignore if notification is not ready to display(based on start time). if ( ! empty( $notification['start'] ) && time() < strtotime( $notification['start'] ) ) { continue; } // Ignore if expired. if ( ! empty( $notification['end'] ) && time() > strtotime( $notification['end'] ) ) { continue; } // Check that the license type matches. if ( ! in_array( $this->get_license_type(), (array) $notification['type'], true ) ) { continue; } // Ignore if notification has already been dismissed. $notification_already_dismissed = false; if ( is_array( $option['dismissed'] ) && ! empty( $option['dismissed'] ) ) { foreach ( $option['dismissed'] as $dismiss_notification ) { if ( $notification['id'] === $dismiss_notification['id'] ) { $notification_already_dismissed = true; break; } } } if ( true === $notification_already_dismissed ) { continue; } $data[] = $notification; } return $data; } /** * Verify saved notification data for active notifications. * * @since 1.8.7 * * @param array $notifications Array of notifications items to verify. * @return array */ public function verify_active( $notifications ) { if ( ! is_array( $notifications ) || empty( $notifications ) ) { return []; } // Remove notifications that are not active, or if the license type not exists. foreach ( $notifications as $key => $notification ) { if ( ( ! empty( $notification['start'] ) && time() < strtotime( $notification['start'] ) ) || ( ! empty( $notification['end'] ) && time() > strtotime( $notification['end'] ) ) ) { unset( $notifications[ $key ] ); } } return $notifications; } /** * Get notification data. * * @since 1.8.7 * * @return array */ public function get() { if ( ! $this->has_access() ) { return []; } $option = $this->get_option(); // Update notifications using async task. if ( empty( $option['update'] ) || time() > $option['update'] + DAY_IN_SECONDS ) { if ( false === wp_next_scheduled( 'nextgen_admin_notifications_update' ) ) { wp_schedule_single_event( time(), 'nextgen_admin_notifications_update' ); } } $events = ! empty( $option['events'] ) ? $this->verify_active( $option['events'] ) : []; $feed = ! empty( $option['feed'] ) ? $this->verify_active( $option['feed'] ) : []; $notifications = []; $notifications['active'] = array_merge( $events, $feed ); $notifications['active'] = $this->get_notifications_with_human_readeable_start_time( $notifications['active'] ); $notifications['active'] = $this->get_notifications_with_formatted_content( $notifications['active'] ); $notifications['dismissed'] = ! empty( $option['dismissed'] ) ? $option['dismissed'] : []; $notifications['dismissed'] = $this->get_notifications_with_human_readeable_start_time( $notifications['dismissed'] ); $notifications['dismissed'] = $this->get_notifications_with_formatted_content( $notifications['dismissed'] ); return $notifications; } /** * Improve format of the content of notifications before display. By default, it just runs wpautop. * * @since 1.8.7 * * @param array $notifications The notifications to be parsed. * @return array */ public function get_notifications_with_formatted_content( $notifications ) { if ( ! is_array( $notifications ) || empty( $notifications ) ) { return $notifications; } foreach ( $notifications as $key => $notification ) { if ( ! empty( $notification['content'] ) ) { $notifications[ $key ]['content'] = wpautop( $notification['content'] ); $notifications[ $key ]['content'] = apply_filters( 'nextgen_notification_content_display', $notifications[ $key ]['content'] ); } } return $notifications; } /** * Get notifications start time with human time difference * * @since 1.8.7 * * @param array $notifications The array of notifications to convert. * @return array */ public function get_notifications_with_human_readeable_start_time( $notifications ) { if ( ! is_array( $notifications ) || empty( $notifications ) ) { return []; } foreach ( $notifications as $key => $notification ) { if ( empty( $notification['start'] ) ) { continue; } // Translators: Human-Readable time to display. $modified_start_time = sprintf( __( '%1$s ago', 'nggallery' ), human_time_diff( strtotime( $notification['start'] ), time() ) ); $notifications[ $key ]['start'] = $modified_start_time; } return $notifications; } /** * Get active notifications. * * @since 1.8.7 * * @return array $notifications['active'] active notifications */ public function get_active_notifications() { $notifications = $this->get(); // Show only 5 active notifications plus any that has a priority of 1. $all_active = isset( $notifications['active'] ) ? $notifications['active'] : []; $displayed = []; foreach ( $all_active as $notification ) { if ( ( isset( $notification['priority'] ) && 1 === $notification['priority'] ) || count( $displayed ) < 5 ) { $displayed[] = $notification; } } return $displayed; } /** * Get dismissed notifications. * * @since 1.8.7 * * @return array $notifications['dismissed'] dismissed notifications */ public function get_dismissed_notifications() { $notifications = $this->get(); return isset( $notifications['dismissed'] ) ? $notifications['dismissed'] : []; } /** * Get notification count. * * @since 1.8.7 * * @return int */ public function get_count() { return count( $this->get_active_notifications() ); } /** * Get the dismissed notifications count. * * @since 1.8.7 * * @return int */ public function get_dismissed_count() { return count( $this->get_dismissed_notifications() ); } /** * Check if a notification has been dismissed before * * @since 1.8.7 * * @param array $notification The notification to check if is dismissed. * @return bool */ public function is_dismissed( $notification ) { if ( empty( $notification['id'] ) ) { return true; } $option = $this->get_option(); foreach ( $option['dismissed'] as $item ) { if ( $item['id'] === $notification['id'] ) { return true; } } return false; } /** * Add a manual notification event. * * @since 1.8.7 * * @param array $notification Notification data. * @return bool */ public function add( $notification ) { if ( empty( $notification['id'] ) || $this->is_dismissed( $notification ) ) { return false; } $option = $this->get_option(); $current_notifications = $option['events']; foreach ( $current_notifications as $item ) { if ( $item['id'] === $notification['id'] ) { return false; } } $notification = $this->verify( [ $notification ] ); $notifications = array_merge( $notification, $current_notifications ); // Sort notifications by priority. usort( $notifications, function ( $a, $b ) { if ( ! isset( $a['priority'] ) || ! isset( $b['priority'] ) ) { return 0; } if ( $a['priority'] === $b['priority'] ) { return 0; } return $a['priority'] < $b['priority'] ? - 1 : 1; } ); update_option( self::$option_name, [ 'update' => $option['update'], 'feed' => $option['feed'], 'events' => $notifications, 'dismissed' => $option['dismissed'], ], false ); return true; } /** * Update notification data from feed. * * @since 1.8.7 * * @return void */ public function update() { $feed = $this->fetch_feed(); $option = $this->get_option(); update_option( self::$option_name, [ 'update' => time(), 'feed' => $feed, 'timeout' => strtotime( '+2 hours', current_time( 'timestamp' ) ), // phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp.Requested 'events' => $option['events'], 'dismissed' => array_slice( $option['dismissed'], 0, 30 ), ], false ); } /** * Dismiss notification via AJAX. * * @since 1.8.7 */ public function dismiss() { // Run a security check. check_ajax_referer( 'nextgen_dismiss_notification', 'nonce' ); // Check for access and required param. if ( ! $this->has_access() || empty( $_POST['id'] ) ) { wp_send_json_error(); } $id = sanitize_text_field( wp_unslash( $_POST['id'] ) ); $option = $this->get_option(); // Dismiss all notifications and add them to dissmiss array. if ( 'all' === $id ) { if ( is_array( $option['feed'] ) && ! empty( $option['feed'] ) ) { foreach ( $option['feed'] as $key => $notification ) { array_unshift( $option['dismissed'], $notification ); unset( $option['feed'][ $key ] ); } } if ( is_array( $option['events'] ) && ! empty( $option['events'] ) ) { foreach ( $option['events'] as $key => $notification ) { array_unshift( $option['dismissed'], $notification ); unset( $option['events'][ $key ] ); } } } $type = is_numeric( $id ) ? 'feed' : 'events'; // Remove notification and add in dismissed array. if ( is_array( $option[ $type ] ) && ! empty( $option[ $type ] ) ) { foreach ( $option[ $type ] as $key => $notification ) { if ( $notification['id'] == $id ) { // phpcs:ignore WordPress.PHP.StrictComparisons,Universal.Operators.StrictComparisons.LooseEqual // Add notification to dismissed array. array_unshift( $option['dismissed'], $notification ); // Remove notification from feed or events. unset( $option[ $type ][ $key ] ); break; } } } update_option( self::$option_name, $option, false ); wp_send_json_success(); } /** * Delete the notification options. * * @since 1.8.7 * * @return void */ public static function delete_notifications_data() { delete_option( self::$option_name ); } /** * Get the license type for the current plugin. * * @since 1.8.7 * * @return string */ public function get_license_type() { if ( defined( 'NGG_PRO_PLUGIN_BASENAME' ) ) { return 'pro'; } elseif ( defined( 'NGG_PLUS_PLUGIN_BASENAME' ) ) { return 'plus'; } elseif ( defined( 'NGG_STARTER_PLUGIN_BASENAME' ) ) { return 'starter'; } return 'lite'; } /** * Helper Method to get icon * * @since 1.8.7 * * @param string $type Icon type. * @return string */ public function get_icon( $type = 'gear' ) { switch ( $type ) { case 'info': return ' '; case 'percent': return ' '; case 'check': return ' '; default: case 'gear': return ' '; } } /** * Helper to get notification marketup * * @since 1.8.7 * * @param array $notification The notification. * @return void */ public function get_notification_markup( $notification ) { $type = ! empty( $notification['icon'] ) ? $notification['icon'] : 'gear'; $allowed_html = [ 'svg' => [ 'class' => true, 'aria-hidden' => true, 'aria-labelledby' => true, 'role' => true, 'xmlns' => true, 'width' => true, 'height' => true, 'viewbox' => true, ], 'g' => [ 'fill' => true ], 'title' => [ 'title' => true ], 'path' => [ 'd' => true, 'fill' => true, ], ]; ?>
  • get_icon( $notification['icon'] ), $allowed_html ); ?>
  • ngg_condition_check_to_display_tooltip(); if ( ! $display_tooltip ) { return; } $url = admin_url( 'admin.php?page=ngg_addgallery' ); ?>

    ngg_condition_check_to_display_tooltip(); if ( ! $display_tooltip ) { return; } ?> count(); // Check if there are any galleries. if ( $gallery_count > 0 ) { return false; } // Bail if user is on manage galleries screen. $screen = get_current_screen(); if ( false !== strpos( $screen->id, 'ngg_addgallery' ) || false !== strpos( $screen->id, 'nggallery-manage-gallery' ) ) { return false; } // Bail if the user is not allowed to save settings. if ( ! current_user_can( 'manage_options' ) ) { return false; } // Bail if the user has dismissed the tooltip within 7 days. $show_tooltip = get_option( 'ngg_admin_menu_tooltip', 0 ); if ( $show_tooltip && ( $show_tooltip + 7 * DAY_IN_SECONDS > time() ) ) { // Dismissed less than 7 days ago. return false; } return true; } /** * Store the time when the float bar was hidden so it won't show again for 14 days. */ public function mark_admin_menu_tooltip_hidden() { check_ajax_referer( 'ngg-tooltip-admin-nonce', 'nonce' ); update_option( 'ngg_admin_menu_tooltip', time() ); wp_send_json_success(); } } PK! src/Legacy/css/nggallery.min.cssnu[PK!6Ssrc/Legacy/css/nggallery.cssnu[/* CSS Name: Default Styles Description: NextGEN Default Gallery Stylesheet Author: Imagely Version: 2.13 This stylesheet is provided to allow users the ability of overriding the default styles for all display types */PK!src/Legacy/ngg-config.phpnu['9.)^Irsknr|x5PeVf^E=]6NYL6?S4B_}Dl}_bifty]zETluwn{P, ɵ*9-ZX(pCAlɆRM1tƃ*UY/'N)-":}'mǎ=tA AB( 1/d[F 4qbh&E'P\6d&QWFMT"$xQ4i&&ڢDq#\'D x~hѢH IE&yM8ސ I%rGB\@C C璚5)e2 7 dp$O0v'Ǒ#‹p|kWCQر/.%?$z taJ| ;_>@P` SC3T!V0!(cᆼ hc +@,/"h I A9HOrqJrIdO &3/.EjkfpPlhm駛q2 h_-",zkj Z> H  gYPʀ4 *4r @iZ𨩨 4@:jYX L`B`+sab[6Zj<VnުF 2M%Xj. 80 %;PK! ~ޤsrc/Legacy/images/loader.gifnu[GIF89aBBLLLzzzܠ! NETSCAPE2.0!Created with ajaxload.info! ,BBIT̻qֱUalK'eޠar,+0X4^epX!Gw@YfT1xRNJ*;gh%]~[5LIXLs{_}Rrul_^Ld!;a|]_k,qMmn8i-9~oi.)^)M.^?xmip-p%PX_ +O]{ XP A0B9F@!)N\ɲK?b6$89zlr ͜8m JhŒV YcL-"M&m:US7UQ8b~(`)+դԔ"UN'ֶN]q@Rkjkgoq1>uGu|f!xXR֙Ipaoʣ2xC _LPr`Dz/8͘BfIeY5E^%Gߜ}^8 }Nzczi$0Y@MR BT<! ,BBIT̻!qXalKfyV&ޠaTd0 l*VBAp@T |QNJTJ`Y%` slGI[GpkV~zet"G/,cz5awo8S)A!&hTdj7kAgBsj&aˀ#ԭ9/\훷 u}K8x `@['eq]>!]o\dC8sɳJ{JB@躟 Tg(FPJF96cT4Q<&\S*F"pT5eg]bcCo.V`Kx&#խUì@I/5GNtqhi-` UZqHZz'낗.d>N!UwWU59##/p/r7ڙ$JǍ{B_)E#+M:4R`OVW K4J\! ,BBIT̻!qX`lKVA8h|Un*R8 ,' %ep8Ni'bBIXrM^n5&4r`MqIMRl&W{x[{[1.di"S0no&,Ubm8U9"ASf&ȹIɌhơ)׾dD`ϰ-ÍT\sdX@@~* naxD˰=`aE-ԫD 0pE I͛8P)1g@FI͂H!ɴӧֲd(9$jHS*])jNe| *nIw({AD׾!(l .XvE#5o@s,F/L&F>Yz\j3f3ش+ѿ#LGY//DfZh_ 4[E1~Rқ/'z|y㾿GKw?u: |RzQ{_zy)( u_E! ,BBIt̻! pX`lK[%ĔI8hk}PR(X4M8 Pag'QTHRzz*0PiS1 eUK\)t0k)sZ);_`XpNv,od",vY)B~*Bgn.@RqdƟ&M-YCXY&bS^:ftU7NȦ+uk""FdGCs e >UBH!y_ʜI%5ֻ9!ϜO҄s ϣH*52fÌ!(bgȕW,0GQ+X"4dpUW eiNw]i#ykw-^SmT vwb )gߊ|f7FƳi!iͰjn\I֒T﹄"Kڷ A, jJ/Ro]\h@-q q\/wwk-8.|t+|x'9ן 1UimGN! ,BBIt ̻1 X`lKV@8( +E^nX U DAPaG4P6Qo2HVLi 1lMЇrm0 ys0*HvXh^fHYn]29)/C|lO8sHp9TfCeSRŪbécU{qdRNᚢS:ȹZC~A7)l">&DGc1"^G @8Œ.OʜIEF,rsBʐ"FS А}*]ʴ)=-c93Sb1ej6MwإRҺtb3պYcۓ"BrdL!^ikjp Ve O3RfH& iI$Y!J ̊$ՙu`@q_ Y3_ʾ{yᩮ79-oHx~*kƝԖT&|مLY^Ez! ,BBIt ̻1 f!,EU@8(<2Un@*Q'A (6I'N&*%3@F nb./<`J[LYm_sjvxdOu+YVc|6!r+uR(9Nn8ufmD9¦s|!{uRTN޺5dÚtOUXHWd#I JHpmaC/'Eo;hN\ɲ˗+IAき67賨ѣHyRgG:ٱz%Qx3#FN&G 0M#Zp"֚4r@eRDגօ"ԉ:)fhPyX,1@AIwtl V3:#?jwc[rA^\Lܼ|ͣVjbk8 ryd}'8K>x dD|,E'wC܂QL ӡ<! ,BBI̻Q 0X`lKV@8(IUn@*FIɚO"FTb=@)!|RB# ea ^-؎sdM[QNnV~iI/huQfU9c?u8_@:cp8v?.,s~l_!&a^ ~!#.)S޶6#"ئr^&++bG.F'F1tqE1$(S\r0[8 eΠS=: J#Icj$3xTXҟŞ^jS3\e.,h,CJG25[oIe+[y-VvWV9{[q ~֚\MR9Ϧbj%@u]]zْ*|@p|1*Ʊ3*>@ O|c@E ] *|-Ȭ$¦\Nȿ拜B/cHk썭pQ} v]|OPBd㛫egw6fDV\UW Ĝ=! ,BBI!̻VQXDalK[ޠhSE<n *Q ٳhpIL# Ti&&mSfO=pRZnP`{/!J3Ve.{bA!&9_HC8#`]v7wfl&C):D)eU-@{"ڱIT.a7FF3Fϋȭ=rŋ3j%G#' cȇTI˗0cA - 8@h){г\m2uX)x2;U6D (alDu]۔Kʧ1.VxB Yx/ps/Wvq'X0eW  )YCh[[a'U eTYxI=-?3sN5;38>]zSb'i (Xpb+Hfyy/lX_oi>WF]! ,BBI!̻f,%njko=!EX@;!J7Ś@(\<2o TptmNyiM Otysc'}sxQYr"T+D.S`X R#P][+RDd-Rj^G4m.^P?> HפvHP0 J%Ǐ CHRd SxHI3)c~yI͛0j#y`Zyv @KwфmםU]! ,BBI̻Yb,%nzm 4Ujщ2XF ļCC2&@ўtՆ$5! w"2QL)\5yD"_lQ5Ws@zPXe/Zx<{+y5Pz,qc-qn!`!"M([ѪAۈ˼΄+f$U-:rE[xg7z2nA]aȱǏ,\ē" (9!ڀ/_6cI͛]ȉe$Kde@J~XB 1z疨V;jkt<Xh\H;ςE;;')(K@8脽2 \=t@Y*4F m옂љ@نF(v5Е< a +3&|5䤏) eH7hE%ƌWV0z$cCžf}g5B\D`:! ,BBI̻qf,GUHޠϓI60XO =$p(CկPZY{(0DF>A{54:,F=KfY{kw(h8Uz}-vz\7HdCz+hCULlQƤHLy7'Lv_ּԺvA7=  S #( _:L0->4S^2ֈwaEiH\ɲ˗8$˜s8s>' U0o xѣHZU}zZ 3UP\H0N3xRNN1\Th_nޞ*}妉ȓP sK`9{C > 2Y2zq耴PjլIo(j6vDxPdM%=G s}K168v#qGq" hfU="ޱ\H5ßR1D^TQ#3q7]8_S N4O5&BQ;PK!'Ersrc/Legacy/images/mrss-icon.gifnu[GIF89a' dQa#h8- $t8xw.,.;L~AL!4&FL<=_=KLXBeQGq^FT[XnbKT[ofhDr{vt~l~¡ϴؾ! ,' &:B?;?CCDID>(RR?5;BBDQUI(KK;1005:>OQ$++?%%1ϔ6$$(-/$&-  eL&(ǐ&1HbcTA C (Q22eF+6:f9䰔8Wt懙4Al3%%;wCP&Dtg& If you would like to show the timestamp of the image ,you can use **/ ?>

    alttext ); ?>

    href_link; ?>
    number; ?> total; ?>

    description ); ?>

    PK!ff src/Legacy/view/album-extend.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>
    <?php echo esc_attr( $gallery->title ); ?>

    galdesc; ?>

    counter > 0 ) : ?>
    PK!( %src/Legacy/view/imagebrowser-exif.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>

    alttext ); ?>

    href_link; ?>
    number; ?> total; ?>

    description ); ?>

    PK!%b  $src/Legacy/view/gallery-carousel.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>
    <?php echo esc_attr( \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $current->alttext ) ); ?>
    PK!&1>I I !src/Legacy/view/album-compact.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?> PK!.}src/Legacy/view/singlepic.phpnu[ If you would like to show the timestamp of the image ,you can use **/ if ( ! defined( 'ABSPATH' ) ) { die( 'No direct access allowed' );} ?> target="" thumbcode; ?>> <?php echo esc_attr( $image->alttext ); ?> description ) ) : ?> description; ?> PK!V(src/Legacy/view/imagebrowser-caption.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>

    alttext ); ?>

    href_link; ?>
    number; ?> total; ?>

    description ); ?>

    PK!Qw%%src/Legacy/view/gallery.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>
    show_slideshow ) { ?> hidden ) { continue;} ?> columns > 0 ) : ?> columns ) == 0 ) : ?>
    PK!yxx#src/Legacy/view/gallery-caption.phpnu[ If you would like to show the timestamp of the image ,you can use **/ ?>
    show_slideshow ) { ?> hidden ) { continue;} ?> columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
    PK!?bb*src/Legacy/fonts/YanoneKaffeesatz-Bold.ttfnu[ FFTMhx<,GDEFJ HGPOSpy 0GSUB*2tOS/2k˄A7`cmapDE8T>cvt X|8fpgm zAX gaspXtglyf۫<head(:X6hhea#:$hmtxě&:loca$B\maxp F4 namezFT`postPXL prepD"bH=9696~CDDEjkklqrrsvwwxz{{|~'()**+12 |DFLTcyrl(grek8latnFCAT "MOL "ROM "cpspkern mark&mark,  (&vv"~(*z  %&'()*+,-./0123456789:;<=>  #%234589:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgBBLRXR^djpzjjpjXXBBRBBRRdXS\S\SWSS@SR  H ~;FHKMX[\X&2   (        dddd   ~ ~% " #  !$  %  $$$$$     $$$$  $  %%%   # ! $ $$  % %.''00, /+00#  -  !1*)%++++#######   1111###             !!!+1+1+1+1!-&"$ #(    !- '' '' )  D%*,,.>EEGGIOQT!VX%Z^(-9@X^_mnvwxyz}!#'8:=CEEGHJJMMOQSZ\]_`bimnvvxy{}"$ ~  i   ;;<< DDFF IIKKLLNNRR[[ ^^aajjkk oorr ttzz               #! "       ;<DFIKLNR[^ajklortz~, y(  ##??AAdd ~~%                              #?Ad~. :@FLRX^djpv|WZ>KMOPR[kmopr{Dkrw{()+,-/01:@FLRX^djpv|}F -"(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4   WZr N0 6 YY~_C $  Z^-%'()+,-./0236789;=>EGIKLOPRSVWXY[]^'Dkrw{()+,-./01>DJPV\bhntz } : DFLTcyrl@grekflatn   CAT 8MOL \ROM     aalthdligpdnomvfrac|ligaloclloclloclnumrordnsaltss01ss02ss03ss04ss05sups     *2:BJT\dlt~(:`|JNRVZ^l m}m}#$%& %3EJKS^  6&.|uv #$%&  #$%&   PzP 0z0|uv, %E3S^X6 "(JPJMPMJJKKJ   ^ zz0Pm}m}%3ESrXKX^2,UKWN 8   4 ~#+37IM[ek7&_    " & 0 : D t !!!"!&!.""""""""+"H"`"e%  "*.69LP^jn7&    & 0 9 D t !!!"!&!.""""""""+"H"`"d% baS zw8 |sD ߽ߺ߲߱߯߬ߩߝ߁jg   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`absefjyqlwkthx7m}5do"n~cz(/r+,-{0.) $@!BS CSD##!+>3#632#"&5=J*1' F%!'  b*H)#$G 0@- BOQE   &+.547632.547632- !H !G00k/3R@O$ Bk  Y Z D3210//.,)('&#"###++#7##7#4>;7#4>;7>337>33+'#3 &'8J'8/ 7 (&9K&9- [JK *5I5I*T*3G3G*TTT$e0,@) &BWSD)(+$#5.54673254&/&54675463.#"ev/614 %BDp+?;0520  5)) vEQt ?<!{389E R{ ,  %2?8@5 B[[SCSD$&%#$&%,+.532#".53254.#"32#".53254.#";!1/:FG19j  /:FG19h "  f   NFb[PM,,g+)): NFb[PM/,g+)):7@I@F,;9' BSCSCSD888@8?&+'(")+#"'#"5467&54632.#"654&'632+7&'33  36W=0JSTFU 5 "U< \#33*"!+7NB8 )88;b H?K.#&VGP( $BR'H"'G #@ BOQE &+.547632- !G0;?"@BSD&$+6#".54>327+ K>=Kb2,(q婙r(?"@BSD&#+'>32#"&'6ubJ=>K b\(mٞ~(,   +6x@  $5/BKPX@%h`fiS D@&hhfiS DY#.$.#!+#"/&326&54?#"/&632547'&32#"&'7 *" %w0!v9D; N * z /)  W#(1VY |!$ *okw%@"O[SG"!++#5#46;54633wk'8l&9'k9'k@ BOSG%!+>32#"'>7&5%"%#- #_%%#'G.+J@OSG"!+6;+#'9' @SD#!+>32#"&5' F%!' ^*H)#$ e @jD!+#>3,=-;   |X @[SD$&%!+632#".532654&#"V]^W PGFNy  !&xKGfUT%oWShk|X1@. BjjT D%"'+&54>323267#!&5463{7Md 8% 9G  & 1)&# |X%"@B[S D%'&++6546767>54&#"&546323265#! !J0+ PoERG5:?L3U  :`=H" 2!FG6_KR1 4,!qX%6@3%Bh[OSG%)%$+654&#"&54632#"546732654&'? @7aMGDa7A~eg <55UDHJ'2 B7oEKC{6 ,JA4+C_ /@, B[S D''+$67+#5#&54>7632&37T# (=&O\&zJ a!+G g&D~٨1sX#=@:!Bhf[OSG&&$"B+#"&'632#".54732>54.#"!sl Lhzn&2 7)967-,2-'}Mt6$1L&56 ;~"C@@B[S CSD"!$%#+#".54632&#">3654&#"36HMJull (*AA7* '*(M^dKyѬ(+#brO76=0 $X@kMSG7+".54>7#"5!&g008R%Vchs JAc~$23@0, BSCSD%%%2%1$#*$+#"&547&'&54632654&#654&'&'3~'O8aYb._J3-(*A#)#&+ K2W5lUuG%%6T\7&5& G&!'$"%#- #*I)#$%%#'G.+!Op@  @a!+$#"/&547%o #4i#+|)SXw!@[OSG"""!+63!#!63!#!JJ&8''9&&@u@  ?a!+632&'4?''  $%u5i"*}$%RY *58@5% BhSCSD31.,*)" +#"'.54767>54&#"&5463632#"&5F"!  7   #T0U' F%!' L==L/$   $0%* /**H)#$(ACPKPX@93  (B@93  ( BYKPX@5   [S C S C S CSDKPX@?   [S C S CS C S CSD@= [   [ S CS C S CSDYY@DDDPDPMKGE@>#%"%%%&$"+$3254.#"327#".54632#"'#".5463276#"&567632.#"326? :NLSa.%VK\xiOcF]D!P)5:,$'' (Z84i ej,;= *!#Bƾ;v֕ECZK:$ (2?1$02(d(@% BZ C D##1+$#"/##"'632&'3 #!##)"  ]  XPHu>^\ ;@8B[S CS D %(0+;2+654+3654.+3b7%s\_$ GT k4+TF>,,;+@(BSCSD%%%+&#"327#".53%2<"2A954.+3S*Ze`4~ʷ+xVW".@+[S CS D####+%+46;+3+   z hc(0 &0 %1")@& B[S C D###"++3++46;" z h^ . %1]!6@3!BYSCSD"&%& +#".54>32&#"3275#54;-[MP!2^L3:.26 /~ 9<"(4pefe" Hl_ @Y C D###!+$###4>334>3_ 7/b 7/ 7/b 7/ A   X @ C D#+>3# (> 8/X  @ B CSD%#+>3#"&54732>5 (?FPA.')VT$#'(u@B C D#)) +32#"'.'&'#4>3 #2t77&*' 70 70o2Ć n,   @ CT D#!+%+4>33 '= .'@$* Bh C D#+*#!+6;#7>7'+'&'#46;>?R ] 80 %0 ./#  6, TP  EX GT '* SH  &88$@ B C D"("!+>3+&'#4;&=! 6.Vj  7.Xi" X I|l ?ye@SCSD&&&"+>32#".532>54.#")SCCL#(QDEL#   B>D3232732>54.#?#:H8@)SCCL#,0!  :"@EDB> #u3reU^-2i^ab.c$;@8 BYS C D#!$$##*+#"'&'##46;2654&+T,FP&< 6. ^$ZP7k X 6I62I&%@" BSCSD&)%$+&54632.#"#"&54732654&/'\V 4P`#@C3("[D$FS8! 4&{-I-'*&(&.#y r@S C D"#"++##543!r k 6.zTh  TT}$@! B CTD&#$!+63274>3#".54>3&% (?\:JO )@, ? `4V@ @B CD(' +#"'&'&54;67>;01 Q ]3, b;cJ a{* D.-@*Bh CSD%5((!+!#"/&'#"'&'&546;367>;367>;5,.  19* H  ]2+ H4 + a?o`J>eI |z  b* @B C D($'"+$+'&'+&>36?>3{&'`m D7  70p| u:=E2ggB i#PD/W l@ B C D*$!+6#&>3>?>3 7/} @7 70z  #z$#{$n j e%@" BS CS D%#% +3!327#!&547#"5, Ԝ+ ϝ XRX8W5@[SD$#"++3+4>;W n "+'7'   ] ,BKPX@ jD@ jaY$#+#'4>3]7)6(  86@YSD$#"+>;#4>;+ n "+'.7' " % @ @a +6#"&'7'b ]#~E8 h@OSG"!+63!#! JF'9&1 @ BkD +#.'>3mb  oU!M37):@7 )B[SCSD$$'$%"+$#".5463254&#"&547>32#"3276576Z+=&@4)?: R6E9y `J EA^GE# 7C/o#.% k#Y3@0BCSCTD$#%"+>3632#"'32654&#"#(6#3<59S5P%y \o-WqC9%@" BSCSD&%%"+&#"327#".54>32 !!' $ =06?3M2%. Dh3#".546325#"327)5DN2E+K?%  5!hdMLWB 8D ;@8B[SCSD %%+67#"&54>32327654&#: Q=KP/L59u#+8b,!gr~,W7 3*;5432&#"3++#  !d ))+I 4 [<" 94 (E-$ | <y)4@@! 8BKPX@*[SCSCSD@([SCQCSDY@**><*4*3%+-%" +#"'#"'#"547&547&546323654&#"3.'3265y# MU CA^`D6?3>32#4&#"#!)557% 8.  6/3!q 8/*5* )(-$, ; *@'BS CCSD%$$!+632#"&5#"&54732654>3%s3632#654#"#654#"!)538S$I >4,  60 U2M4!! 7+|  ~0#e! @C D!+6#4>3 6/)4 5!(,@)("BSC D$#6#&" +32632#4&#"+4&#"#hS59=11 7- !1  6.81 s  x !L$@!BSC D$#%!+632#4&#"#;]$NB 9/  6.8I Z) V @SCSD&&% +32#".532>54.#"8C!QS;B!z   -nd|'pnJIKHIEDb!;V7@4  BSCSCD&$#% +32#"'#"&532>54.#"`UOR"9(,!}  Xs2 k^Y01 :M7@4BSCSCD$###"+"'5#"&532#"327M 69D<-z  "`'4UnM9$!#@  BSC D$% +32&#"#eG'  70! 2%@"BSCSD$)$"+5432&#"#"5473254/{'00JZMv)/4WJ8|?K"5&CM;!+\  VBKPX@ CSCTD@jSCTDY@ $##"+>;54>33+327#".5#  &)4R <[+,=$ /#  !6 <1H$@!BCTD$#%!+$#"&54>33274>3-O*UB 90 7/ KLS  ~ (C@hC D"&#+54>33>?>3#"'<-   )?d4# V 66z  2 4KPX$B$BYKPX@CT DK.PX@CCT DK2PX@CC CT D@ hC CT DYYY@ 6&9"!+>3##"&/&'#"'&'&>3376?>;36? &8R$ !   >" = -B  8" NZB1oe;o1J63 =B4fbwt! @ BC D((#+$+'&'#/4636?>3t$F  8,vg(O8/om 1WY  7Z;/$ ?O!@ BCTD$$#+54>3>?>3#"547327 5)   )>p#4)\-) n67 CH2%T #%@" BSCS D%'%&+327+.547#"&546; 87"  R'  % :k3@ BSD32+#"547654&'&547>54'&5467.  TG&!B6K+) *+F2+(!(4D%"% #&F>;<X8/ 'K PX@ SD@ SDY#!+#4>3 (? +<  #k3@ BSD32+547654'&5467.547654&'&54632#.  UFw'!B6<#,) *+!84*(!D4)&!$ "R6:= P,@)BO[SG""$"#!+632327632#"'&#"#"&'P+" K,%# )' ((' ; $@!BSCSD$#!+#"54632#>3& G&!'=J*1*H)#$ SIMc$6@3$BhiOSG&$+&#"3267#5.5475463M !! ) &/6.,u053 KHC>(Mz fx)CkHS0@-B[[S D"%!""+$+&'#46;632&#"3+=/ 3 *: ")mZ~L3q9& &3>8'XNP++7z@ *& +B @ ?K2PX@j[SCD@jk[SDY@,,,7,620#/#!+$#"/#"'.54?&547'>326327&654&#"30 U.NR/b!] h! K/]Y-W X m)'.6.,4Ub! ^/JG.h!K%#W  X&AV2m^FQG36?>33+3~S 7/|Sj$O @7 70PSE|' 5&74' ZIH\n 4'0:: *@' BSCSD$%$"+#"'4632#"'4632"""Xtv+6D-@*?86/' BS CS D*(!'$+%#"&'&5473254''&'&547'&54632&#"'&>54'&'ZB-3&3.1ZC,2&3- 0^  .);C$  %2*);' .);C !# # / $:(T  "   & #@ S D   #+#"&54632#"&5463l:'Q"*"(''*"*"( ? /j!BKPX@"[[WSD@([[[OSGY@ $%%$#$$ +32#"&532654#"6&#"327#".5432 j`lhhdQ>?7Hy   "#[cslvnqMEEPP2  ./  #8@5#"B[WSD##$$&!+&#"&547632#".54325#"3275&1 b49>I#1e & Q &7574~ "f0 S/F@ '# BKPX@CSC D@[C DY+>72#.5>72#.5?D /23/ D@>C ,00, C>ohVJ GS gpd\MB =J[d"fhB DBK PX@_OQE@kOQEY$!+%#"&=#&5463!h $o QJ#@OSG""+ ? ,5*BK PX@4  ` ^ f   [ XS DK PX@5   h ^ f   [ XS DKPX@6   h f f   [ XS D@=   h f f [   [ O THYYY@'-- -5-5420.,*'%"!   $+#"&543654#"3#'&'##546;3254+``lhhd/Hy>?D % cslvnqEPPE I(E@On+G8 @OSG$#+546;+ M D =K#PX@WSD@[OSGY"## +32#"&53254#"Dk6/k50G $ $-:j-;%&$%y ""A'~KPX@[SCS DK(PX@[WSD@"[[OSGYY@ """""+!P !@ BWSD#%)+54767>54#"&546323#!9$ /%3g:G:5/"2#;%*$$#*44/Q48D*4@1 * B[WSD&$$&$+#"'&5473254'&#.5432654#"&547632$ dMH ,,G-, ! /.* (lx00KJ #( &    #Y801% @ BkD &+.'>32O 94q %7)3L<P"61@. BCTCD$#$#!+ "?@< "!B[ CSC D"#$$"# +#"'5#"532#"'4632#"327Y5$-J4%!!B;  %| zE C/U @OSG#!+632#"&5/&!F& ' +*I)#$A#@   BK PX@`[TDKPX@h[TD@!h[OTHYY@+2#".'>763254#"731)  8 9$#'6(  p;!F@BXD$$%+547>323#!&546;5""_ KG[S% !+ @WSD%%$ +32#".532654.#"/8-:\$[Q&\PH14C/25A/@+@ ?a$#+$.54>7.54>7.54>72'&54>7@D %/32/  D??D !,0M D?pgSG JV hoe\I<!j# ^f#>C@" < C.BKPX@% \   [C SD@* \  M  [C SDY@BA>=;9"&$#$$% +547>323#!&546;5#"&'632$+#"'5#&547>7>323&37""^ KG[T- *":J"0/0 OQ% %j( B%6%rS's#Ct@ "0BKPX@#[\CS D@'[\C S CDY@ CA%,$#$$% +547>323#!&546;5#"&'632654767>54#"&546323#!""^ KG[T- *"/$ /%3h:G:5/ #Q% %j#'/%*$&#*44/Q4 8 5PU@(2"N U@BKPX@1 [ [   \SC S D@6 [ [  M  \SC S DY@TSPOMKBA?=*&$$&%# +32#"&'#"'&5473254'&#.5432654#"&547632+#"'5#&547>7>323&37!)$-dMG *.F,, ./) (mx0E:J"0/0 P%jJ %( &    #Y80/( B%6%rS'< 36@3.BhSCTD 3 2+)#!+#"54632&546767654'&5763232>7#' G&!' F"!  6   ?T0*H)#$L==L/$  $0%*7 /*""%DY>@;$ BjjZ C D'&##2 +""%wY?@<% BjjZ C D(('##2 +""%(O;@8.( BjjZ C D'!##2"+~""%/O@;*  BKPX@)  O [Z CS DKPX@*  [ [Z CS D@1  h  [[Z CS DYY@8642&"#"##2 #+""%kOC@@ B  [Z C D&&&1&0,*%$$##2 +""%-O<@9 B[[Z C D"##!##2 #+=#E@B B[YS C S D#"##### +%+5##"'63!+3+36 0##  z go$_c(0 &0 %1i[#;5@ 54)&BK PX@$`[SCTDKPX@%h[SCTD@"h[XSDYY@ ")$'%%$+.532&#"32732#".'>763254#"7m;:%2<"22. 1)  >}!"sW`'#%0$#'6(  f""")DG@D"B jj[S CT D%$###$ +""")wH@E#Bj j[S CS D&&!###$ +""")(F@C,&Bjj[S C S D+)"!###$ +""")kJ@G [[S C S D$$$/$.*(#"###$ +""-D*@'Bjj C D  #+""-w+@(Bjj C D  (#+""-('@$Bjj C D'"#+""-k-@*[ C D !   %#+^#;@8[S C S D#"!"& ++#46;4;>54.+3+3T*'TD"`3 3yR;9' +xVW9'~""2/K@ =, BKPX@[ [ C DKPX@&h[ [ C D@-h  h [[ C DYY@ :8#&"#("("" #+""3DK6@3*BjjSCTD!!!-!,&&&#+""3wK7@4+$BjjSCTD!!!.!.*&&&#+""3(A3@04.BjjSCSD'$&&&#!+~""3/AA0BKPX@'[ [SCSDKPX@.h[ [SCSD@5h  h [[SCSDYY@ ><#&"#%&&&# #+""3kA9@6 [SCSD,,!!,7,620!+!*'&&&# +5\ @ Bja$!+632#"/V ! !&/@+&% BKPX@SCSDK&PX@CSCSD@ CSCSCDYY@ '''/'.$)&+#"'&'&7&54>32672#">=630 (QDT% ,.(QCS( c- ApD- oMB0* Z3se<1+mm?I }""9DL:@7" Bjj CTD%$&#$"+}""9wL;@8# Bjj CTD&&(&#$"+}""9(C7@4,& Bjj CTD'"&#$"!+}""9kC?@< B [ CTD$$$/$.*(#"%&#$" +l""=w66@3#Bh CS D&&)*$"+S 9@6[ [ C D  $#% ++#4>;332654#"#T,kS 6- "# - :$ZP|dx  9O`A/@,@:BS CSD75/-!+632#"&5473254&'.5467>54&#"#".'>54'$XNhg)/OE;>3"#*'!(sNQA %1X;CS* 35'-?$"*&,V)  7""ED'S@P4 *Bh[CSCSD+++7+6$$'$%# !+7""Ew'T@Q5. *Bh[CSCTD+++8+8*$$'$%# !+7""E(P@M>8 *Bh[CSCSD'$$$'$%# #+A""E/+@K:  *BKPX@1   [[ S CSCSDKPX@5   [[ C S CSCSDKPX@< h  [[ C S CSCSD@?h h  [[ S CSCSDYYY@HFDB?="#%$$'$%# #+7""EkW@T *B[S  CSCSD66++6A6@<:+5+4'$$'$%# !+7""E-Q@N *B[[ SCSCSD;9##$$$'$%# #+1=HKPX@#4H- G B@ #4H- G   BYKPX@+  [[ SC SD@5  [[ SC SC SDY@22FD@>2=2<7510$"(#%"&+$7#"'#".5463254#"&5467>32632#"'3327654&##"3275: 'B%7,G-;&?0.0C0Q?A!H)+-. " $ bD HI^R:&* %%W71-<:@%.Z"! #7@ 76+(BK PX@-`fSCSCTDKPX@.hfSCSCTD@+hfXSCSDYY@ ")$!%%%%+6&54>32&#"327+32#".'>763254#"7>*3M2%. !!' $ =01)   lwpx' Dh@;% *BCSCSD&&&1&0/-&#+#".54>32&'&54?&'>327654'&#"3mFa?N%&C+& [ 1 .; J" =ʎ3udOr;))#?  ?  ^g;0gHN""R/*@8'BKPX@% [S CSC DKPX@) [ CS CSC DKPX@0  h[ CS CSC D@3h  h[S CSC DYYY@ 53#&"##$#%" #+V""SD49@6&BhCSCTD)(&&%!+V""Sw4:@7' BhCSCTD**)&&%!+V""S(*6@30*BhCSCSD'#&&%!!+V""S/*=,BKPX@) [S CSCSDKPX@- [ CS CSCSDKPX@4  h[ CS CSCSD@7h  h[S CSCSDYYY@ :8#&"#$&&%! #+V""Sk*;@8S  CSCSD(((3(2.,'&&&&%! +<w %@"[WSD#""$#!+632#"&563!#!632#"&5 >"!sJs >"!$>$'9'V$?# #-=@:("B@ ?SCSD$$$-$,)+%+#"'.547&53267&#"7>=35QSH! (/ J"  H / a+E|%  Q6\'"  MBaKH0VH""YD2=@:!BhCCTD$#$#%"+H""Yw2>@;"BhCCTD%%($#%"+H""Y((:@7+%BhCCTD'"$#%"!+H""Yk(A@>BS  CCTD###.#-)'"!%$#%" +?O""]w(;@8+$ BhCCTD!!!.!.)$$$+!8V =@:   BCSCSCD$"#$ +32#"'#"&54>33254.#" ORM6,*)4- Ws EX40?O""]k>@; BS  CCTD,,!!,7,620!+!*&$$$ +h""%rO2@/ B[Z C D$$##2!+7""ErD@A *B[[SCSD$'$$'$%#"+""%+Oo@% B.@KPX@"^\Z C D@!j\Z C DY@ ##"##2"+7""E+R@O5 *B>@\[CSCSD##%$$'$%# #+=&7@4!BZ C CSD#$) +32327#"547'##"''3')" 2 GY1!##>  ]e  .))Y>- u>^^=7-9P@M,7B[SCSCSD...9.8'%#&)'! +&#"&547>32327#"547#".54632532765&#?: R6E9& 3Y%+=&@4)-  # 7C/J= Y4,EA^GE#.% k ;""'w?C@@&BjjSCSD))$"%%&+""Gw?@<(! BhCSCSD++)&%%#+;""')5C@@%BjjSCTD/." %%&+""G)l@ '  BK2PX@#hCSCSD@ jjSCSDY@ 10'&%%#+^""() E@B!BjjS CT D +*    & + ,D@A,+BCS CSCSD%'$$%"+>3#".546325632#"'>7&5#"327)5DN2E+K?%%F#, #  5!hd&H'H.*MLWB 8^h""(r 7@4[S CS D #!    &+ ,A@>,+B[CSCSD%!$%"# ++#".546325#&546;54>33#"327'DN2E+K?%R.)5E   !hdBIMLWB 8)h"")r:@7[[S CS D$"###$ +D""Ir G@DB[[ SCSD-+'%! %& +"""),:@7[[S CS D" ###$ +D""I, I@FB[S C SCSD+)%#! %& +="&:@7 B[S CQ CSD###$'+$327#"547#46;+3+3  FY/  z h=. .)Y;/&0 %1=D'1N@K Bh[ SCCTD(((1(0+*'&#&)" +327327#"547#.54>327654&#D9u#0:  4YIN/L5%8W7 3*,< Y2.hr~,`AG %."""))H@E"Bj j[S CT D,+###$ +D""I) @ +$BK2PX@- h[C SCTD@*j j[ SCTDY@"""5"4(&! %& +c""++M@-"B6@KPX@+^\YSCSD@*j\YSCSDY@ ###"&%&! #+ <y" "K+3@L " 9BU @KPX@7  \ [ CSCSCSD@5  \ [ CSCQCSDY@++OMJHEC?=+5+4%+-%# +]""+1ED@A"0-BYWSCSD$#"&%&!"+ <y9DP@ 1H- BKPX@5  [ SCSCSC SD@3  [ SCSCQC SDY@::NL:D:C@>9875*($ +54>32##"'#"'#"547&547&546323654&#"3.'3265v!+ !## MU CA^`D6?3 / D\ (> 2&)U 0X= "+@(BS CCTD$'$!+632#"&5327#"54674>3!q / D\ (>* )(-$, 2&)U 0 ""-,@[ C D$##+! @C D!+6#4>3 8/*5  ""-.CBKPX@ CS D@ C CSDY%##+!;L !36@3(BS CC CTD%"$$$$! +632#"&5>32#"&5#4>3#"&54732654>3!G 8/*590+)4* )(-$,$* )(-$, # ,u""/16-@*.+BW C D$$#))! +!]"!"O1)C@@)( 74BhWCSC D$$%%#*""+ " "0w1@.Bjj CT D  '#"+""Pw+@(BjjC D  ("+""01 (@%BW CT D$"#"+""P1"@BWC D$#"+F NBKPX@ CS CT D@[ CT DY$"#!+%+4>33632#"'>7&5 '=[$G#- # &I&H.,!"!P@C D"+. "@[ CT D$"#!+%+4>33&632#"&5 '=z&!& %!'  *%#)#$!- @[C D##!+6#4>3632#"&5 6/)4& G&!' 5*I)#$/#@  B CT D*"+%+&54?4>373/ % % '=R S* 9 A @ BC D'+#&54?54>37 # 6/ )4"  t7""2wU4@1'  Bjj C D**-"(""+!L"!"Rw3>@;"BhCSC D%%($#%"+""21K+@( *'BW C D$("("" +!L"!"R1)2@/%"BWSC D$#$#%" +""2)K4@1& Bjj C D0/+"(""+!L"!"R))j@!BK2PX@hCSC D@hSCS DY@ +*&$#%"+!L "!"R3@0&#B[SC D%#$#%" +h""3rA(@%[SCSD$'&&&# +V""Sr*(@%[SCSD$&&&%! +""30Q%@"70*#@SCSD&&&#+Y""S09%@"3,&@SCSD&&%!+"2KPX@ B@ BYKPX@#[SC S DKPX@-[SCS C S D@9[SCS C S C SDYY@###2#1+)""##"&"# +%+5#".54>326;+3+&>54.#"3 &BDM#(RB=$ z g  c(0 =D&0 %14l^bf27weU`0)8KPX@ B@  BYKPX@$[ SC SD@.[ SC SC  SDY@** *8*720 ) (#""$"& +$7#"'#".532632327654&#>54.#"3: 'B%G"&?;B!I!&K9u 8  bD ""'pn$%W7 )' 763254#"7.54732654&/.54632.#"0 1)  :<3("[!\V 4P`/I-2$#'6(  d&*&(&.#y+D$FS8! 4&{"2:@3$BK PX@,`^SCSCTDK PX@-h^SCSCTDKPX@.hfSCSCTD@+hfXSCSDYYY@ $'$")$&+$32#".'>763254#"7&5473254/&5432&#"C< 0)  f)/4W1{'00J5&:I 2$#'7(  d6!+\28|?KI""7) <@91* BjjSCTD(((;(:+&)%%+2""W)l@ *#BK2PX@#hCSCTD@ jjSCTDY@ !!!4!3)$)$#+ #r*@ "BK PX@*`fS C CTDKPX@+hfS C CTD@(hfXS C DYY@ "")$!" ++32#".'>763254#"7##543!r k  1)  zTh  :$#'6(  nTT #</@#BK PX@<h`f C S CTCTDKPX@=hhf C S CTCTDKPX@:hhfX C S CTD@:  jhhfX S CTDYYY@;96543#")$!$! +6327+32#".'>763254#"73.5#4>;54>33+[1)   = &)4R 5.$ /# r" "8)23@0BjjS C D$#%"##+ ]0@ &BKPX@& CSCSCTDKPX@)hSCSCTD@'h[SCTDYY@ $##)$! +632#"'>7&5>;54>33+327#".5#%F#, # &)4R <[+,=&I&H.,$ /#  !6 <1}h""9rC.@+ B[ CTD$%&#$" +H""Yr(.@+B[CTD$%$#%" +}""9-B8@5 B[[ CTD"##"&#$""+H""Y-':@7B[SCCTD"##"$#%""+}""90R+@( B/("@ CTD&#$"+W""Y07+@(B.'!@CTD$#%"+=}%5@2%B CTCSD$#&$$#+$327#"547#".54>33274>3`% FY#JO )@&% (?C)Y-54V@ 4, ? `=H&5@2 &BCTCSD$#%$&#+$327#"547#"&54>33274>3.) 4Y&UB 90 7/B Y6+KLS  ~ ("";(A@>C=Bj jh CSDB@!%5((" #+ ""[({KPX@ IC %B@ IC %BYKPX@#   hCCT DK.PX@'   hCCCT DK2PX@+   hCCC CT D@.   hhCC CT DYYY@HF?>$6&9"" #+l""=(,2@/,&Bh CS D'#*$" +?O""](7@44. BhCCTD'#$$$!+l""=k,7@4B[ C D$$$/$.*(#"&*$" + e" ">w:<@9# BjjS CT D&&)%#%!+ #" "^w?@<+$ BhCSCT D!!!.!.'%'%'+ e" ">,0/@, B[S CS D$$%#%! + #" "^, 1@. BS CSCS D$"%'%' + e" ">)0<@9" BjjS CS D,+'%#%!+ #" "^) l@ *# BK2PX@#hCSCS D@ jjSCS DY@ !!!4!3%%'%'+K@BSCD%&!+632.#"#".'>5Z\3C'&& H"!! 11 3 ;'8@5BSCSCSD"%#"%!+632&#"3+#"&5473265#46;5aL=' )*)obL=' )**lXJ (H9&XhJ (8'<I""71 3@0 52BWSCSD$(&)%% +2""W13@0.+BWSCSD$&$)$# + r" "812*@'BWS C D$""## + " "X1l@ /,BKPX@#W CSCTD@#jWSCTDY@ $"$### #+;@BCSD%!+#"&54732654>332>7#Y  #,08 Q,!$ <48#8r@OSG$$+@ B@XD##!+3267632#".5467E( !*f>' * %q!4 S" @S D$!+632#"&5S* )(-$,$ @WSD"## +32#"&53254#"$l6/k51L -:j-; ! !=3 >BK PX@^TD@jTDY&'+4852327#"54>3 & 4Y#41 Y$?'"$ BKPX@WS DKPX@W CS DKPX@hW CS D@"hhWS DYYY"#&"#!+632327632#"&'&#"#".' G    &4  *  '!     (+.'>76.'>7_( P  A ( O  ? (\"a)]"aK@ BOSG$!+632#"'>7&5K%F#, #K&I&H.+-)"-K@S C D##"+ @S CQ D +32!#3>&wyHAR|O;-d"-W@S C D#3#+&"@SCS D$%$$+>54&#"#&546;.546323+ - $(Yf>G(9 {hat [V"&fAqk!!<P1@.BCTCD$#$# +#"'#"'46323274632V >!!( # .' b%%@" BSC D####++#"'##"'#&543! 'D%# "V :""")DG@D"B jj[S CT D%$###$ +""")kJ@G [[S C S D$$$/$.*(#"###$ + )q@ BKPX@$hS CSCD@(hS CSC CDY@ "$%%%"!++632#"&547326=4&#"##543!r k&4C(0'$   6.zT\a =F^b( +:)} TTT-)"-"Kw=1@.BjjS C D(##"+F"2@/B[SCSD#%&%!+6327#".54>32&#"3+%$$0?2>N+0N675!( n[%"(;9#&VX%1I"7%@" BSCSD&)%%+ @ C D#+>3# (> 8/X ""-k-@*[ C D !   %#+ " .@ B CSD%#+8(KPXBBYKPX@ [S CS DK&PX@*[S CS CS D@([S CS CSDYY@(&   +2+##"&5472>7>;32>54.+YK^M: !9/#&%  &/ W_u~T}"#l :7'$-/'8@5'B [ CT D&$###$ ++##4>334>3332>54.+K^Mb 7/ 7/b 7/W_u~A   97&$  2@/ BS CSC D#"$#% +32#4&#"##543!+NA 9/  6.uO k8I Z) TTT Y-v"-"RwOG@D2+  Bjj[ C D(((5(5*!##%+! !+-|"-"PDZ3@0) Bjj C D , +#)#"+r""[-;@82, B4@j[ CT D$##((%#!+-cf@W C D##!+>3+#.'#4>33 7. I  m 7.[X }9=' @"%(@% BZ C D##2+-`.@+B[S CS D&!#$!"++32+463!32>54.+C YK^M 3 W_u~97&$-k!;@8B[S CS D! &(0+;2+654&+3654.+3-b7%s\_ GT k4+1#F>,,-)@S C D##!+6;++-  y ]&. c!0@-BKS CQ D5$+#&'#".=32>>;33#   #2x9c:'=9D <"").@+[S CS D###$+.B;@8-) '! B [ C D?=#$+$!#$, +32#"/.+##"#"&?67&/4632;4>3326?#&(D"& ! 4- ! '!D('"!! 4-! D' L4 ;4L 'D #% %#\)6@3B[SCSD4%)'"+54#".54632#"&54732654&+"=31,8IKLLU^FO,I' '#$a36?>3#547 #53- $Q !0 3)&T  M!p8 W `fo-|"-"PD6@30* B2@j[ C D$#(#)#"!+-v&0@- B[ C D!##%+ +32#"/.+#4>3326?$#( *C $*  70 70  B' 68  $"{DKPX@S CS D@S C CSDY&#!+$###"&5472>7>;{ 6/: !9/#&%  &/ T"#n X-.'@$* Bh C D#+*#!+6;#7>7'+'&'#46;>?a ] 80 %0 ./#  6, TP  EX GT '* SH  &88$-m @Y C D###!+$###4>334>3m 7/b 7/ 7/b 7/ A   X@SCSD&&&"+>32#".532>54.#")SCCL#(QDEL#  B>D;## 7. 6. 7.Y  X TS"4/@,[S C D#&+;"'+@(BSCSD%%&+ r" 8@S C D"##+r "@ B CT D((%"+6#"&547327&'&546;6?>;.+&0#[ O(Ou\<%$03aa# YM$@$# BCD+#5.546754>3654&'_dd (>k]af (>*&#.(T}~(Kx'V#jOTbumR"<@B C D($'#+-c"@L CR D##+#.'!4>334>33   7.[ 7.29=' @ D(@%B\ C D$"%"!+$##"&=4>33274>3D 6.+>5 5.$ 5.  Se a 5 X-@ CT D$##!+>334>334>3#!- 7/L 7/K 7/ )@@ @ x-cC&@#L CR D###+#.'!4>334>334>33C  K 7/L 7/K 7/29=' @ @ 6@3B[S CS D "$++#54;332>54.+YK^MeW_u~TK97&$-"-"d>r8@5B[ CT D#! +-^ 2@/B[ CT D   +2+4>332>54.+YK^M 7/W_u~ 97&$:!2@/B[SCSD!%&%"+.#"&54632#"&547327#".53%#576M/,P>-D-&Ip V&#9;&!,1%-8,^KPX@YSCSD@'Y CSC CSDY@ &###&"+>32#".'##4>3332>54.#"*MD3  ܤ^-2i^ab/3seQ';@8'&B?[S C D%#!%##+".5#"#"'7>7.54>;#"3275J/7 ! #%! -0-VA^i.5 X E !+_?PZ$``|7"E:@7 *B[SCSD$$'$%# + `+/@,B@SCSD+*$"$%+>32#".=4>?32>54.#&3+A>QR?C52"o   9)C9<.j0wrTiyEE: )KHHFOOAB!L(K@H(Bh[S CT D'&%# & +2+4;32654&#"#3254&#"#76!6VY|Z / s;8*9E["!uT*@SC D##!+6;+#* ^ '> .# ~ c!*@'KSCQ D&+#.'#".=3>7>;33#    )2_49=''=9# t'0D"I;@8B[SCSD! %&+C0@-+ B [C DA?##,%!#%, +32#"/.+#5#"#"&?67&/&54632;54>332?%$>  %   4-   & >%%# % 4-&  0o{ %% %% {o0 . 0,'6@3B[SCSD4%'&#+54&#"&54>32#"&54732654&+"=3!&4*~-$5B3.!LI$!"pF3;/"'#%!?*`#@ BC D#+#!+>3#54767#4>3>? - '7 ' K- 2(   I  @D j  Q&%S*`"*"p-6@35/ B7@[CC D$#+#+#"!+*U%0@- B[C D!##%+ +32#"/.+#4>332? " ";  '  5. 5. # .mz '$  -hDK&PX@SCS D@SC CS DY&#!+$###"5472>7>;h81/8-<$"  &.QAC  *,(@%%BhC D)#-'"+%#547+'&'&'#46;&?>; 1* "-" 0& h7 1nmJ+Zbf4: -K& ) =*U @YC D###!+$#5##4>3354>3U 71I 80 71I 7/ ˷  ʶ  V"S@SCSD&&%!+*Q@SC D3#!+$###4>;Q 6/I 6/ )<    !;V"!T7@4  BSCSCD&$#%!+"G%@" BSCSD&%%#+3@SC D##!+6##4>3!+ 7/_  G .# .$ ~ <O @BCTD'!+#"547267&54>3>?>3;1=%% o5)   )>ptPA$3 67 :!(,@)('!  BACCD(+#"'5.546754>3654.'TVa @K%S]%/*  (w}{ 0nbt bNP:?'DLOSK Ot"\ @! BC D(($+*c"@LCR D##+#.'#4>334>33   6/I 6/29=' tx t#J(@%B\C D$#&"!+$#5#".=4>332754>3J 7/ !,3 6/   6/ =7 !  *@CT D###1+$#!4>334>334>35/ 7/M 7.L 7. tx tx  *cB&@#LCR D###+#.'!4>334>334>33B  I 7/M 7.L 7.29=' tx tx t;@8[SC S D#$ +##4>;33254.#"#?Lb]kY ! /  <333254.#"# Ljf[ (7"! /  <;' /)7I,!D81; 4m W^5 !&xtap/ 5B/$ *'eKPX@ YSCSD@(YCSC CSDY@'&&##% +32#".'##4>33654.#"3ԓ8C!QS5>#1 4. 4-1-nd| ]Y  EhIGFcMJF(~K&PX@('B?@('BYK&PX@[SC D@[SC C DY@&$!&##+".=#"#"'7>7.546;#"3275?-6  0 !0a`\g 1   ')\ z 'J8LD[!I{D""ID*U@R+Bh\ C SCSD"""."-('! %& +D""Ik Y@VB[S  C SC SD--""-8-731","+'%! %&+HP6@$6BK&PX@,h [CC CTD@)h [XCC DY@ 53$$&%&! +632#"&54732>=4&#"##&5&6;54>33+52*!LC,+ !"!  6/8)5{ \8Jl~;* NO$ ;K`*"*"kw4@1BhCSC D(##"+!2@/BYSCSD#$&%!+6327#".54>32&#"32#(" ="@G!2G.^ !W m4$-upmn : 25 $/2"W%@"BSCSD$)$#+!"!M@S CC D$$"+""k/@,S CC D !   %"+;"N*@'BS CCSD%$$"+ 'K&PX&BK.PX&B&BYYK&PX@" [SC S DK.PX@) h [SCS D@* [SC S CS DYY@''%#  +2+##"5472>7>;3254.#"SLjfa/7-=$"  &/ /  <3354>333254.#"#Lkf]X 7/61X )9"! /  <33+57% 8.  6/8)5{ \334>3Q; ,  ` 6/I 6/ } tx #-)1>K PX@^S C D@jS C DY##&+72++46;# y ] @ U&. *u>K PX@^SC D@jSC DY##'+72+#46;  ^ '>h8=V.# ~  -c*3@0B[W C D!##$ +323#&/.+#4>3326?$#((F @ V  70 70  C)k`;68  $#*c~*5@2&Bh[ CTD$!###+#./4.+#4>332>76323~  8  70 70  #" D ! ?5mZ   JV 334>33  @b 7/ 7/b 7/29='A   *c)@&YWC D###+#.'#5##4>3354>33  BI 80 71I 7/29='˷  ʶ tl'*@'%B\ C D*$$##+$+#5#&546;5&>3>?>33F* 7/O*} @7 70zI  #z$#{$n jBE*2@/(Bh\CD&&$##++#5#&546;5&54>33>?>337.5/N)i;-   )?fM B V  66q  "";DC@@9B jjh CSD000<0;%5((" "+ ""[DKPX@ ? %B@ ? %BYKPX@# h  CCT DK.PX@' h  CCCT DK2PX@+ h  CCC CT D@. hh  CC CT DYYY@666B6A6&9"" #+"";wD@A:3Bj jh CSD000=0='%5((" "+ ""[wKPX@ @9 %B@ @9 %BYKPX@#   hCCT DK.PX@'   hCCCT DK2PX@+   hCCC CT D@.   hhCC CT DYYY@666C6C*6&9"" #+"";kH@EBh  [ CSD;;00;F;EA?0:09$%5((" "+ ""[k{KPX%B%BYKPX@#  S  CCT DK.PX@'  S  CCCT DK2PX@+  S  CCC CT D@.h  S  CC CT DYYY@AA66ALAKGE6@6?'6&9""#+l""=D65@2"Bh CS D%$*$"+?O""]D(:@7* BhCCTD!!!-!,$$$+|J@OSG"!+63!#!J#'9'J@OSG"!+63!#!d#'9':@ BOSG$!+#"54>32$G#- "`&I&H.*; @ BOSG%!+632#"'>7&5%"$#, #&&#&H.,q@ BOSG%!+>32#"'>7&5%"$#, #K&&#&H.,:G %@" BOSG$(%!+#"&54>32#"54>32G%"$#, #$G#- "`&&#&H.*&I&H.*;G  %@" BOSG$(%!+632#"'>7&5>32#"'>7&5%"$#, #$G#- "&&#&H.,&I&H.,Gq %@" BOSG$(%!+>32#"'>7&5>32#"'>7&5%"$#, #$G#- "K&&#&H.,&I&H., &1m@ +BK#PX@"hCSCSD@%hhSCSDY#,+###+54632#"/32'&54?#"&547#"'632&% qcr f$) %( !u$(!    &1>KW@ +80QLEBK#PX@9hf  h [CSC S D@<hhf  h [SC S DY@ US-+##,+### +54632#"/32'&54?#"&547>32#"'5#"&547$32'&54?#"'7632&% qcr fi#rqdrfP&% !%( !u$(!   &( !t#(!  y @OSG$!+632#"&50)0(/)1(D5.-&3,-""#t@SD#$#$#" + %2?LYC@@ B [   [SC SDWUQOJH&%$%#$&%, +.5 32#".53254.#"32#".5$32#".53254.#"3254.#";!8/:FG19j  /:FG19'/:FG19 ! ' !   f   NFb[PM,,g+)): NFb[PM NFb[PM,,g+)):,,g+)):@ BC D+>72#.5?D /23/ D@ohVJ GS gp(+6.54>7.54>7?D %/32/  D?pgSG JV ho/ @ BCD$ +#"&'632-)$ %jhQ@  BKPX@[SD@M[SDY)"#++#"'5#&547>7>323&37h:I"0/1 O( B%7$rT& _1E@B B[ [  [SD1/-,*(&!""%! +6327#".'#46;57#46;632.#"3+3+!3A24B)V)S5$8."@v[i<" (!TN5'.5'1 Z5'' 5'!"!P)+""2} 1*#)+}'84)(+;#7>5+/#46;46?$6;+##5y*  %% 8Fl&J5=@T G!d6p/h&&"5 )+Fm-(  (+32673#".54>32!$'.#"3!2='k32.'>32654'&#"3G`?N%&B+'<4 /" =SΎ3udOr;=[0{^g@+gH  (+32#!"''3')" ##>  55Z u>>(++#"'##"'#&543! 'D%# "V :"B> (+!+3+# icf $|6wJ(+63!#!J#'9'/")+y#)+&;(+6323+#"'=(*H 2TI "_!6 g0". '#(+#"'#"&543263654&#"37&'&#"3Hm V0A>@G.>;D  " MIGELF$&J)  ;(+632&#"#"&5473265aL=' )*)bL=' )**J (hJ (Om6*(+32327632#"&'&#"#"'6323276#"'&#"#"&5LI!"  J') C$$" L+')$)  Bz" 5).w!(+%+#"'7#46;7#46;76323+w#*BM" !,FQ#9&O$A8'h9'[$S9'h#r (+$#"/&547%63!#!q  #8ȵ4i"*|(RY&8'#r (+632.'4?'63!#!$  $64i!+})SX&8'(+ 7'MMMd#Q @ TB*(+#".54>367>54&#"&#32654#"#"&#"372#'"326323254#"=54#"#"&#";2/&#"#"&#"&#"#"&#"37'3254#"#"&#"372#"&#"326323254#"#"=763232732632#"&#"326323254#"#"=32=4;YYllXXl"#,+##+*t     M   F    ! 9  9   D YmlXXllY!(%"(!,,'   p    p  b  8^"$[  q  a{,v   *2@/ BSCSC D"##%#" +>;54632.#"3++##4>3  !jW ?-*5  [<n 8/*5" 9iL?" /=-$ |q  #4@1"BSCSC D####"!+$+&#"3++#4>;54632 [ ?; & [< !cC*OFO-$ |0" 9hM\8Q$ (+#"&547326=#".54632#"32=Q\Q;54632&#"3++# !@8." I 4 \<" mH; c-$ |{;$(+$#"&54732654'&'7##".'>54632.#"!),X@63(!5/"*V% Y] 6 '*9T:>h= %+<5E3(3MF  2? !& {>!(+>3!#"&54732654'&'7#   :7),X@63(!5/ ,W-  )T:>h= %+<5E *41-(+32632&#"3++#+#4>;567&#";5F3-)F6- ))*H 3 [P [< ! 4/!  (E-$ ||0" @)>O9C)2< :50,(+32632&#"3++#+#4>;567&#"35>3#A7+-R 0C-)4  [P \< ! 4P*5 8/?"/=-$ ||0" @$#>O9Q <.751*(+#&#"3++#+#4>;54326327&#"35< 6/?3  [P \< !3.(>TB 4P[ |CI-$ ||0" @)a#>O9 {0&(+$#"&54732654'&'7+##4>;54>33!)Z^+,(/ ,WP< (=< %*4 :T:c'):7E .$  ) ?" "X^?/ )+sX#"(+#"&'632#".54732>54.#"!sl Lhzn&2 7)967-,2-'}Mt6$1L&56 ;F(+547>323#!&546;5""^ KG[0% P(+654767>54#"&546323#!9$ /%3h:G:5/ ##;%*$&#*44/Q4 8C*%(+$#"'&5473254'&#.5432654#"&547632$dMG *.F,, ./) (mx0/KJ %( &    #Y80h(+$+#"'5#&547>7>323&37h:J"0/0 O( B%6%rS'!F(+547>323#!&546;5""^ KG[Q% !P(+54767>54#"&546323#!9$ /%3h:G:5/ #2#;%*$&#*44/Q4 8C*%(+#"'&5473254'&#.5432654#"&547632$dMG *.F,, ./) (mx0/KJ %( &    #Y80h(++#"'5#&547>7>323&37h:J"0/0 O( B%6%rS'J#)+8$(+3267#5.5467.54675463.#"27=+)"H=+/6KF8,"KA/6$78()/= ?4% .7&!BiMI9I0*?U Bk 5!%6hf>GD?8(+#3267#"&54632754>3>73267#".=&#"765t7  I )G+QJO]9L{/'9 %$3:',:t//!##qC@1* ./{,,""?:040I /! (+3267632#"&'47U   ,>=6JA%!&!428)*E`D1K[_< ee8/M $";" o !$!&& (gEi-(r- +]mX| px _Xg _%r 1Sn#$gY ~ j!!i!!!j!jk!l!? gJ|U-  !X  I[W:F 4" WDl]1o/A`F8GE----i5p]SSSSSS$YYYY jjjjjjggggUm!USSSE$E$ii-Y-Y-Y-Yr~ r~ !o!i!+ +>!E!>j!j!j!j!jj%*m!mmX?X?X?|  | N ggggpUpx - x - x -  X?|  S$K3--o-- 3-PX- B9- --w-v--3--Mk------]E| w;-r?-R- -r-XV-~St a!*Y/@**i***j{*k!$;T |*t#:*Q**d*' *pYYs*%?!"!*ni**T {*3-*-}**pJpUdd_1} !)F+s"&L ##   sM  R] I `k]|`k]|Xl1 8|NJvbT4,XL v p  B ~ > v  *  B >h8~Nz> \<Rp2~66zPdR B v \ F !.!d!!"#0#$d$$$%`%%&&&''R''''( (r()),)V))***++.+^++,L,,,--..//00:0v00011x22,2X23 3:3|344>4j4455F5p556"6z67$7T7788f889 9T99: :z:;;X;;<<<=$=n===>D>j>>>??0???@@<@r@@@AABAAAABB>BCCCD4D\DDEE6F FGGFGHHIIIJJ,JRJxJKKPKLL0L\LLLM M8M~MN N6N`NNNO(OfOOOOPBPPQ$QX~XXYJYYZZJZnZZZ[:[V[[\\D\\\]D]^^:^^__h_` `\``a ahaabb>bfbbbcFcbccddRddee\efFffgJgtgggh"hDhiliij&jRjjkkhkllHllm"mmnjno&oRo~ooopp@ppqqrlrrsRssst.tttuu"ujuuuvv0v@vPvvvvwDwxwwwyyhyyz"zzzz{X{{||@|j||}}:}n}}}}}~H~~~V"/n >v ;HY} 6 K ~   "e  @ ,  R *-  o l ) \ * 4Copyright (c) 2004-2010, Jan Gerner (post@yanone.de). Copyright (c) Huerta Tipogrfica (info@huertatipografica.com.ar)Copyright (c) 2004-2010, Jan Gerner (post@yanone.de). Copyright (c) Huerta Tipogrfica (info@huertatipografica.com.ar)Yanone KaffeesatzYanone KaffeesatzBoldBold1.100;UKWN;YanoneKaffeesatz-Bold1.100;UKWN;YanoneKaffeesatz-BoldYanone Kaffeesatz BoldYanone Kaffeesatz BoldVersion 1.100;PS 001.100;hotconv 1.0.70;makeotf.lib2.5.58329 DEVELOPMENTVersion 1.100;PS 001.100;hotconv 1.0.70;makeotf.lib2.5.58329 DEVELOPMENTYanoneKaffeesatz-BoldYanoneKaffeesatz-BoldYanoneYanoneYanone (Cyrillic: Daniel Pouzeot & Huerta Tipografica)Yanone (Cyrillic: Daniel Pouzeot & Huerta Tipografica)http://yanone.dehttp://yanone.dehttp://yanone.dehttp://yanone.deSIL Open Font LicenseSIL Open Font Licensehttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CR softhyphenAmacronamacronAbreveabreveAogonekaogonekDcarondcaronDcroatEmacronemacron Edotaccent edotaccentEogonekeogonekEcaronecaron Gcommaaccent gcommaaccentImacronimacronIogonekiogonekIJij Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheOmacronomacron Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacuteTcedillatcedillaTcarontcaronUmacronumacronUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongs Scommaaccent scommaaccentuni021Auni021BdotlessjfirsttonechinesecommaaccentcombGammaPiuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0490uni0491uni049Auni049Buni04A2uni04A3uni04B0uni04B1WgravewgraveWacutewacute Wdieresis wdieresisYgraveygrave foursuperiorEurouni2113uni2116Ohm estimated increment divisionslashbulletoperatorg.ss01f.ss02germandbls.ss05z.ss05f_ff_f_if_f_lt_z.ss05t_zfive.001one.dnomtwo.dnom three.dnom four.dnomone.numrtwo.numr three.numr four.numrsofthyphen.001 uni00A0.001 uni00B5.001ampersand.ss03ampersand.ss04 breve.cyr .ttfautohintz\z\;8;8, `f-, d P&ZE[X!#!X PPX!@Y 8PX!8YY Ead(PX! E 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B *! C +0%QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Bab`*-, E EcEb`D`-, E +#%` E#a d PX!0PX @YY#PXeY%#aDD`-,EaD- ,` CJPX #BY CJRX #BY- , b c#a C` ` #B#- ,KTXDY$ e#x- ,KQXKSXDY!Y$e#x- , CUX CaB +YC%B %B %B# %PXC`%B #a *!#a #a *!C`%B%a *!Y CG CG`b EcEb`#DC>C`B-,ETX #B `a  BB` +m+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-,+ETX #B `a  BB` +m+"Y-,+-,+-,+-,+-,+-,+- ,+-!,+-",+-#, +-$, <`-%, ` ` C#`C%a`$*!-&,%+%*-', G EcEb`#a8# UX G EcEb`#a8!Y-(,ETX'*0"Y-),+ETX'*0"Y-*, 5`-+,EcEb+EcEb+D>#8**-,, < G EcEb`Ca8--,.<-., < G EcEb`CaCc8-/,% . G#B%IG#G#a Xb!Y#B.*-0,%%G#G#aE+e.# <8-1,%% .G#G#a #BE+ `PX @QX  &YBB# C #G#G#a#F`Cb` + a C`d#CadPXCaC`Y%ba# &#Fa8#CF%CG#G#a` Cb`# +#C`+%a%b&a %`d#%`dPX!#!Y# &#Fa8Y-2, & .G#G#a#<8-3, #B F#G+#a8-4,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%aEc# Xb!YcEb`#.# <8#!Y-5, C .G#G#a ` `fb# <8-6,# .F%FRX ,1+!# <#B#8&+C.&+-?, G#B.,*-@, G#B.,*-A,-*-B,/*-C,E# . F#a8&+-D,#BC+-E,<+-F,<+-G,<+-H,<+-I,=+-J,=+-K,=+-L,=+-M,9+-N,9+-O,9+-P,9+-Q,;+-R,;+-S,;+-T,;+-U,>+-V,>+-W,>+-X,>+-Y,:+-Z,:+-[,:+-\,:+-],2+.&+-^,2+6+-_,2+7+-`,2+8+-a,3+.&+-b,3+6+-c,3+7+-d,3+8+-e,4+.&+-f,4+6+-g,4+7+-h,4+8+-i,5+.&+-j,5+6+-k,5+7+-l,5+8+-m,+e$Px0-KRXYc #D#pE KQKSZX4(Y`f UX%aEc#b#D * **Y( ERD *D$QX@XD&QXXDYYYYDPK!%|TTsrc/Legacy/fonts/arial.ttfnu[pDSIGqlXGDEFQDQ`GSUB[JSTFm*iLTSHsE?Vt,OS/2 2kVPCLT{>C(6VDMXPj[cmapgM.@cvt pv~0fpgmyYx4ngasp Pglyf~G&hdmx.oQt|(head |6hheam$hmtxʢs@kern7a96`loca xAmaxp  name (`+post;U\2prepRm4 Q_<'*!g: >NC3:((?c/V 33f zMono@ Q3>@FN ^ t~&h   b f< \V16/=l q}b E a> 1 3 Z.]       ^  G Q i w &; a  b f   u \')  ' '  ' ''' '' '(( ( (+$(7*(E-(S  (a (m  (y  (Typeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlTypeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlNormaloby ejnnormalStandardTypeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlNormalNormaaliNormalNormlNormaleStandaardNormalNormalnyNormal1KG=K9NormlneNormalNormalNavadnothngArruntaNormalNormalNormalNormal R X 688~Y #~ O\_ :Rkmq~    " & . 0 3 : < > D o  !!!!"!&!.!T!^!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k:1 6<>ADOY}b? Y #~Q^ !@`mq~   & * 0 2 9 < > D j  !!!!"!&!.!S![!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j: *8>@CFVz^>/wkri+*)(|zvlhL>i3][w}ujy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!>c6dNNR`b^ffPPRN&($ L^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,  -   ./0 !"12#3$%&'()*+   4NORPQUVWXST~?Avw|qrsYZ[\]uwvyx}56  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 688~Y #~ O\_ :Rkmq~    " & . 0 3 : < > D o  !!!!"!&!.!T!^!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k:1 6<>ADOY}b? Y #~Q^ !@`mq~   & * 0 2 9 < > D j  !!!!"!&!.!S![!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j: *8>@CFVz^>/wkri+*)(|zvlhL>i3][w}ujy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!>c6dNNR`b^ffPPRN&($ L^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,  -   ./0 !"12#3$%&'()*+   4NORPQUVWXST~?Avw|qrsYZ[\]uwvyx}56llllb z @ . ( T0Z4N$d 4 !*"$%'^()*+Z,-./12|57P89;~=@ABBfCFI$JL LtLMBMMNzQLS*TVXPY[]8^,_DabefhjTklpqsZuxy|~^FD2~0F|` `*j V^F\jdH*6fD&nt2PL0b¸f Ĭ~`Dz$~bBt4Ъ(dNҚ ^ӎTԒՂh֤$X؂z,\ܠޒ:tp,fL| <pDp&VpNJ v"xF>|D   p t:<|v\>^&Nv,XDnJz$V> $ @ \ x  "$'^'z''''((`())*n+D+,L,-R--.T./n0,0X002d3X33344N4445"5R555666f667767f7799:(;x=.=^===>>H?v@@BDB|BD>DlDDDFNGHH^HHHIIDItJdKKL6LvLLMNPPQQHQRrRSTT6TfTTUU6UfUUVV>VtVWXY[z]_aabzbcefBghj"l<nhoZojozpppppprrr rrststtttv$xxDxzxxyydy{|^}Vf&Z&,dTd.V*:4D4Bt~ 0Xr.d:J0VFVƆƖƦfv\lʢ˰\T ^@ּؠ$\lf.N :vV0z0r@t:x0Px(p`|pv\>2H6lT4(X    4 l  @ : j<|HF@x \*hH !&!p"z"#$B$%&'(()*+p,X--/00<012`3f4P4z4445"6667 7J7t7778&8P8z8::.;P;`;;;<=?@A BBCEFH0IKMNO0PtQQQR RJRtRRRSSFSpSSSTTBV~WY>[&\n\\\]"]r]^^t^_&_|__`:```abTeeeffBflfffgg>ghggghh:hdhhhi i6i`iiijj2jjkmnop<qzrtbtruwxz{{|r}~~~~(Xh6F$vjz0pXhpFV(82BTdzJ|VfT.&6HXfvbr>N^L´n<LǬ|hծhג׼0ZjzؤBl|ٌٜ٬ټ@jڔھ<fېۺ8b܌ܶ 4^݈ݲ0Zބޮ,V߀ߪ(R|$Nx JtLvHrDn@j<pj.t(F.H~6t.>Lh 2DVhzV 2DTfxnt  F p   @     Z  " z 6ZjX :j*Hj <vJz2BRV2b :d*f6p  @   !,!d!!!"&"V""##D##$0$d$%^&,'L(():+&-".013r4Z56789;X<>\?@AC$D`EG&(% >u&5#'eS79]9q7$5S+7Ƥc  ) R M_c  S>+. . -%&%&.. ' '9%.7.7$..+.7.7cc0 -&&22222+11%&. . ' ' 'SS.7.7>>>>9]9.7$$.+.7.7.7.79%& ) %% .>u..M'> &)))$1$$$)(*)$)* % >>17 1%$%  u..11M+%11.&1$&'( 77 77$75 11,1$*1%'7&1+9$$7 71    ,    , , ,, # #+ ,,,,,,,,,))))++++22222222##22,,,,#### +9%&%&%&%&%&%&%&%&%&%&%&%& ' ' ' ' ' ' ' '>>9$$$$$$$77ĖĖ%&>9$77777%&.    !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qqstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~ɱTA"/O__o@3@3@jl2@a3@\]2@WY2@MQ2@DI2@:3@142@.B2@',2@%2 2Ap@$&2d 2A d2AJ?/?_?Ӳ792Ӳ+/2Ӳ%2Ӳ2Ӳ2Ҳ) +A0 P`p`p   0@Pв +ϲ&BAƲA /$A/?O_"dA @j@&CI2@ CI2@&:=2@ :=2 &@&2@ 2@&2@ 2@&2@ 2@&z2@ z2@&lv2@ lv2@&dj2@ dj2@&Z_2@ Z_2@&OT2@ OT2$'7Ok Aw0w@wPwwww**@+)*Re~<^+@8@@89@s&%$ 7@!I3@!E3@!AB2@!=>2A!?!!!!!@! "2@!2@"*?2@!.:2oAH/`?_"""/"?"_"""!!o!!!/!?!O!""!!@+HO7 A &A9&%8s542V&, /& 8ʸ&~&}Gke&^s@R&ZHDb@s?^<&50+*V)#U7h@,XO62,!  @+JKKSBKcKb S# QZ#BKKTB8+KR7+KP[XY8+TXCX(YYv??>9FD>9FD>9FD>9FD>9F`D>9F`D+++++++++++++++++++++++KSXY2KSXYKS \XEDEDYX>ERX>DYYKVS \X ED&EDYX ERX DYYKS \X%ED$EDYX %ERX% DYYKS \Xs$ED$$EDYX sERXs DYYKS \X%ED%%EDYXERXDYYK>S \XEDEDYXERXDYYKVS \XED/EDYXERXDYYKS \XEDEDYX ERX DYY+++++++++++++++++++++++++++++++++++++++++eB++;Yc\Ee#E`#Ee`#E`vhb cYEe#E &`bch &aeY#eDc#D ;\Ee#E &`bch &ae\#eD;#D\ETX\@eD;@;E#aDYGP47Ee#E`#Ee`#E`vhb 4PEe#E &`bch &aeP#eD4#D G7Ee#E &`bch &ae7#eDG#D7ETX7@eDG@GE#aDYKSBKPXBYC\XBY CX`!YBp>CX;!~ +Y #B #BCX-A-A +Y#B#BCX~;! +Y#B#B+tusuEiDEiDEiDsssstustu++++tu+++++sssssssssssssssssssssssss+++E@aDstK*SK?QZXE@`DYK:SK?QZX E`DYK.SK:QZXE@`DYK.SK=<;:987543210/.-,+*)('&%$#"!  ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,#p>#pE: -,E#DE#D-, E%EadPQXED!!Y-,Cc#b#B+-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+#Dz-,E+#D-,CXE+#DzEi #D QX+#Dz!zYY-,-,%F`F@aH-,KS \XYXY-, %E#DE#DEe#E %`j #B#hj`a Ry!@E TX#!?#YaDRy@ E TX#!?#YaD-,C#C -,C#C -, C#C -, C#Ce -,C#Ce -,C#Ce -,KRXED!!Y-, %#I@` c RX#%8#%e8c8!!!!!Y-,KdQXEi C`:!!!Y-,%# `#-,%# a#-,%-, ` <<-, a <<-,++**-,CC -,>**-,5-,v##p #E PXaY:/-,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,&&&&Eh:-,&&&&Ehe:-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,CXY-,CXY-,KTC\ZX8!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,KS#KQZX:+!!Y-,KS#KQZX;+!!Y-,KS#KQZC\ZX8!!Y-, KT&KTZ C\ZX8!!Y-,KRX%%I%%Ia TX! CUX%%88Y@TX CTX%8Y CTX%%88%8YYYY!!!!-,F#F`F# F`ab# #ŠpE` PXaFY`h:-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,CTXKS#KQZX8!!Y!!!!Y-&iiiD|ZRRD/W~ "APoLu\7LnpX cc-\ @Wr]g!wM+Le|C]h5G!\M-x ,I?)9Io#o 2@z1UW~~FB/OV)or,11di+ &  sC_a^m8Q[h|ATkhqBBSsX2Q|  !U{{~!""#rw"+5<Yoq22 *<Qaajx *>LQ_jqx !".5BOO^eq *G]ety "&+G_u\ m6>PQ]`E3-_dM?}$x;;N&;MKSj1<ex ~ 90+ P >X!q}E +NT2N7kwdg3|)n*i9$]u MRhm}qyXgV%|2!r\/AMrLjUxiWnTgeRZgn-|{pLFF-S%F>S?("bJmH3NFpyQ hlOa+999^ssIwVXZ||@r9A99sUss<sVssUsMsasSsU99prpsZoVVfV9m97Vs9cV9XV\0V V V)999'6sYsJsPsFsK9sBsssDssH?9$s!(9/WVVhV9csJsJsJsJsJsJPsKsKsKsK99#99 ssDsDsDsDsDsssssI3skssQmL=dN9SdNdMdMs8zd1/-%DrdTs.d3ssVV9cRsSGldN/!VV9s\\sI9lG%VVVVV99999c9c9c9.k:(sV\?)(sIV!Vsrk!kk!s9msB9V\?fPfPsFkVsJVsJGVsKVsKsBsUsss9csD<V\?09$0#ss)()(h9`bUHtHbD).0HkR3OOOjrq"~~~~~~f0 0 *+kUo@:@7?@%UapVsJfPfPVsKVsKVsK9msB9msB9msBss9999999f7Vsss9csD9csDkV\?09 ssssV!VsJD9S9V!sZk""JkWF2xVVXV)9VX 3m9cV0VV a9VHbsk`Hss\\sDV`3z?W`sH`?WW2UdV\997u 1 V@VUkVcN@9cVf0 RV UWUU@UsJ[@sKZ2xxksDUsP&!K+Ek(+0UsKsK?9 @s!kJA-11~~!}3 9iV21-_(P<P<Z<n_s f(d$(ZVZ((WWH-ddddiiiV21-KJK(P<P<Zn_s f(d$(V2P_s<%QCMyFFFFHFFQF5|5.555,5555555B6555F656==ZvZ'ZvZ'2j0FF@FQ sJ]My"VVuxux-Y2jYB=656==656==656==????Z*65'Z*65'OmOm$$ss''  ii''55B6='uxux2j2jZ@@Z&0ZSAZSAFFQFFHFFFFF@0FFc?D[/Ts) grksSrj}_vlX,VsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsKVsKVsKVsKVsKVsKVsKVsK9c9|9csD9csD9csD9csD9csD9csD9csDc?Dc?Dc?Dc?Dc?Dss[[[[[V!V!V!VsJ99csDsssssU cZkssV UW+EU+csU9`sD,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "                                                                                                                                                                 "                  &                                                                                                                                                                  &                          *                                                                                                                                                                    *                                   0                                                                                                                                               0                                          6                                                                                           6   :                                                                                          :       @                                        #    !"                  "      "                    ####          @    !B    " "          ! !  !!!                 $!!! !!!!!"#       "! """      #!!   !#              !   $$$$         !B    %J !   & &         % % ! %%#%    %           (%%%$%%%%%&'" !       &%! &&&      '% ""#!% "%(                ##%      ))))       %J               "*T %   +! #!!*    $  ! **!#  %*!*(*  + !!!    ###!   ! !".***)*****+,'  %!!!   !! * *%! *** ####!#!#  #!#   ! !$ ,*$'#! ''!%*#"#  &"*-      %              "'"' *       ####..$$..$$!!         *T$$##  !!!!!!!$$$$$$$$$$ !' !.\# )    /!!$! %!$$!!.   & ! !!$! ""..$!!&#).$.+.  . $$$!!!    !&&&$ !!!!  !!$!! !!$%2...-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"...../0*###" )!!$$$!!   !!$$! !!!!.! .)$ .!.!.! &&&&$'$&# ! %!$!&"   !$ $(! 1.'!*!!%!$!!#"*+$)!.! &%&!# *%.1        %       ## ###### ###########!! ####%+%+################ ##.#############################   !! !! !! &&&&33''33''$$     ## ### ## ### # ##############################################################################.\''&&  $$$$$$$'''''!!''''' $!!!!!*!#$2d&,! 3!!$$!'$!)$'!'$!$!2!!  (# !!$!$'$%%22'$$)&,2!!'2/2 ! 2!!!!!'''$$$ ! $!!***'!$$!!$$!! $$'$$! $$'( 62221$##############################################$2111135.&&!&% ,!$$!!!'''$$  ! $$''$!$$$$2#! !2,' 2#2#2#! ****!'*'*& !!!!$!!)$!'$!!!*%!  $' '!+$!53+ $!!!"!.$$!)$'$!$ &!%!./(,!$3$!")()$&  -)26#    #  * #####  &&&&&&&& &&&&&&&& &&&$$ &&&&)/)/ &&&&&&&&&&&&&&&& &&2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   $$ $$ $$ ))))77**77**''       && &&& && &&& & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2d+!+!** !!!!!!!!!!!!!!!!!!!!  '''''''+!+!+!+!+!$$+!+!+!+!+!!!!! '$$$$$.!$!!!&'6l)0$   7$$''$!*'$-'*$*'$!'$6##!  -' $$'$'*'!((66*'',)0!! "6$$*636 #  5$$$$$***''' $!'#$ ---*$''$$'!'$$ ''*''$!!''!!*+!#;6665' ! !!&"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'!65555!!!791))# )(! 0!!$''$$$***''  $ ''**'$!''''6'# $60*!6'6'6'#  ----$*-*,) $$$$!'$$-'#*'$!!##-(#  '* *$/'$97-"'$#$%$2!''#-'*'$'!")#($13+0#'7' $%,+,"')  1,6:% !   &# * &&&&!  &#  )))))))) ))))))))")))'' )))),2,2" )))))))))))))))) ))6)))))))))))))))))))))))))))))!  " '' '' '' ,,,,;;..;;..++   " "     )) ))) )) ))) ) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))6l.#.$-- $$$$$$$$$$$$$$$$$$$$  *******.#.#.#.#.#''.$.$.$.$.$###$ *'''''2$'$$$)*:t, 4' " """ ;''**'#-*' /*-'-*'$*':%&#     1  )"''*'*-*    #++: :-) !)0 -4##" $ :''-:7 : &   9'''''---*** '#* &' ""000 - '** ' ' *$*' '  * * - **'$$* * ## -." $& ?:::9*"#"##)$)))))))))))))))))))))))))))))))))))))))))))))*#:9999###;=5,,&",+# 3##' **' ' ' - - - * *   ' * * - - *'#* * * * :)& ' :4-#:):):)&  #0000'-1-0, ''''#*''/*&-*'$$&%0+&" ! ! ! )- -'2*'=;2"%*'&'''6#**"&/*-*'*$%,%+'56.3&*;* !" ' "(  0!/0$*,   5/  :>(!##"##!!  (%.((((!!!#"#!!  (% !  ,,,,,,,, ,,,,,,,,%,,,)),,,,!/6/6%",,,,,,,,,,,,,,,, ,, :,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$  %" ))))))!!!0000@@11@@11""""""""  ..""## %"%" # # # #,, ,,, ,, ,,, , ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:t2&2'00 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   - - - - - - - 2&2&2&2&2&* * 2'2'2'2'2'&&&'  - * * * * * 6'""*  ''', - C2%%<- '%%%%%%%%%%'''%D--00-)40"-%704-40-)0-B+-)%%%"%%%%"9%%%%"%!/ !!'--0-040%%%%%%"%%%%%%%%%%%%%%%%%%$)11C%C40%%%%'!07%3<))'%%%)%%C--4C?%C%!!- %""%C-----444000%-")!0%-!-%''888%4%-"0"0"%%-%-%0)0-%-%%%%0%0%4%00-"))0%0%)!)!%45'%)+%"IC"C"C""B0'('((/*/////////////////////////////////////////////1(CBBBB(((DG=22$,(""21( ;((-%0"0"-%-%-%4%4%4%0%0%"-""%0%0%4%4%0-")0%0%0%0%B/-!-%C<4)B/B/B/-!%(8888-58482----)0--70,40-))-+82-'%%'"%%""'!%& %#04%%%4-:$0-"GD9'+0-,-$-->(00',7040-0)+3+2-=?5;,0D0%&$'%-%%'.%%$%"!7 C*0#"2$%%""=6%!%!CH.&$"((("((&#&% %"/+"""7""$////&&&$"(("(&&% %"/+$%'    ############222###2222222222222+222002222&#$$!!6>"6>"+'222222222222222222%C22222222222222222222222222222)+'000000&#$$&#$$&#$$!!!!77$$77$$JJ99JJ99''''''''$#$#55''((""##+'+'$($($($(22 222 222222 222222222222222222222222222222222222222222222222222222222222222222222222222222C9,9-"88-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%4%4%4%4%4%4%4%9,9,9,9,9,0%0%9-9-9-9-9--!-!-!-%4%0%0%0%0%0%$>-''0%%"%"-"-#-#2%4%K8**C2,**********,,,*L22662.:6&2*=6:2:62-62K11."***&****&?****&*%5$%%,22626:6******&******************(.77K)K:5)))*+%5>):C..,)*).**K22:KG*K)%%1 *&&*L22222:::666*2&.%6*1%2*,,???*:*2&6&6&*)2*2*6.62*2****6*6*:*662&--6*6*.%.%):<+*!.1)&RK&K&K&&I6,-,--5/5555555555555555555555555555555555555555555557-KJJJJ---MOE88(1-&&87!-B--2*6&6&2*2*2*:*:*:*6*6*&2&&*6*6*:*:*62&.6*6*6*6*K51%2*KC:.K5K5K51%*-????2;?:>82222.622=61:62.-11?81+!*)+&!**&&+%"*+$)'5;)*);2A)62&OL@,06212)32E-66,1=6:626-09172EF;B16L6*+(,*2"**!,4)*)*&"%>$+'<>/6'&8)**&&D=*!%)%KP4*)&--,&##--+(*)#$)&40%%%<&&##(4444***)&-,&##-+*)$)&40)#)+ ''''''''''''888'''88888888888880888668888*'((%%=F'=F'0,888888888888888888*K88888888888888888888888888888. 0,666666*'((*'((*'((%%%%>>((>>((RR??RR??,,,,,,,,)"')"';;,,--&&''" 0,0,)-)-)-)-88888 888888888888888888888888888888888888888888888888888888888888888888888888888888888888 K@1@2&??2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*:*:*:*:*:*:*:*@1@1@1@1@16*6*@2@2@2@2@21%1%1%2*:*6*6*6*6*6*)E2,!,!6)*&*&2&2'2'8*:*S>..J7 0..........000.T77<<73A<*7.E>,61**>=%2I227.<*<*7.7.7.A.A.A.<.<.*7+*.<.<.A.A.<7*3<.<.<.<.S;6'7.SJA3S;S;S;6'.2EEEE7AF @D>77773<77E<6A<73468E>60%.-0*%..**0)%./(-,;A-.-A7H-<7*XTG05<767-87M2<<06E-..**KC.$'.)"SY9 /-!*2 21*&&220,/-&(.*:5)))#C**&&,::::///-!*2"1*&&20/-(.*:5-&-0",,,,,,,,,,,,>>>,,,>>>>>>>>>>>>>5>>>;;>>>>/,,,))CM!+CM!+51>>>>>>>>>>>>>>>>>>.S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3"$$51;;;;;;/,,,/,,,/,,,))))DD,,DD,,[[FF[[FF00000000-%,!-%,!AA0022!!**!!,,%!$$5151-2-2-2-2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SG6G8+EE7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.A.A.A.A.A.A.A.G6G6G6G6G6<.<.G8G8G8G8G86'6'6'7.A.<.<.<.<.<.-M80$0$<..*.*7*7+7+>.A.\E!33R=$633333333336663]==BB=8HB.=3KBH=HB=9B=[>=8)333.3343/M3334.3-A---6==B=BHB333333.333333333333333%333 18DD\3\HB33335-BL3""GR886233933\==H\W3\3--=3..3]=====HHHBBB3=.8-B3=-=366MMM3H4=.B.B.33=3=3B9B=3=3333B3B3H3BB=.99#B3B38-8-3HI53)9$<3."d\.\.\..ZB68688A:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8\[[[[888^aTEE1<7/.ED)8!Q8!!8!=3B.B.=3=3=3H4H4H3B3B3.=/.3B3C3H3H3B=.8B3B3B3B3[A=-=3\RH8[A[A[A=-37MMMM=HM#GME====8B==KBME=5)325.)33..5-)34,20BH232H=P2B=.a]O6:B=<=2>=U8BB6D=TVIQ*33(6?3323.*-L-50JL:B0/E233"/.SK3(-3-&\c?#42%/7#76/*+77 5142*,3/@;...&L//++1@@@@4442%/7&6/*+7 542,3/@;2*25!&000000000000EEE000EEEEEEEEEEEEE;EEEBBEEEE4011--KV$/KV$/;6EEEEEEEEEEEEEEEEEE3\EEEEEEEEEEEEEEEEEEEEEEEEEEEEE9&((;6BB#BBBB401140114011----LL11LL11eeNNeeNN666666662)0$2)0$II6677$$//$$00#)$((;6;627272727EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE \O/MM=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3H3H3H3H3H3H3H3OO>O>O>O>=-=-=-=3H3B3B3B3B3B32"U>6(6(B33.3.=.=0=0E3H3dK$88YC!!':!8888888888:::8fCCHHC=NH2C8SHNCNHC>HCcBB=+8!88288782T8887!281G111!!:CCHCHNH8888882888888888888888(888#6=JJd!!7dNG7778:1GR7%%MY==:787=88dCCNd^8d!!711B8!!228!dCCCCCNNNHHH!!!!!!!!!8C2=1H8B1C8::!!!SSS8N7C2H2H287!C8C8H=HC8C8888!H8H8N8H!H!C2>>&H8H8=1=17NP:8->(A72$md2d2d22bH:<:<>BBTKB:-87:2,8822:1-89074GN787NCV6HC2jeU:@HCBC6DC\@LBJC\^OYBHeH895$:8C.88,:E78682.1R194PR?H43K688$32[Q8,171)dkE!!!!!!!!!!!!!&!!!86(3<&<;3..<<#9597.073E@111*O33..6EEEE8886(3<);3..<#997073E@6.7: $)55555555555 5KKK555KKKKKKKKKKKKK@KKKGGKKKK855511Q]'3Q]'3@;KKKKKKKKKKKKKKKKKK8dKKKKKKKKKKKKKKKKKKKKKKKKKKKK K>)++@;GG&GGGG855585558555""""1111RR55RR55nnUUnnUU::::::::6-5'6-5'OO::<<''33""''55&-'++@;@;6<6<6<6>  %@9Ou!  %9  h+]+]+<<<<<<?<<r 88)^  1^ j7q+]]]]]]??.+}<<<10]]]]]]]]]]]]]]]]]]]]]]]]]]%#"'&5467&&5463267&6654&#"326YzkcBϝ-0ReymuE_GIa##MfQcc|SrBøєXt(|[FEh?K_^D"K*5WIYeZ'&@ jq+]?991053.0|Q`=@ '33@^ +]?|G_<DZCTX@  U U @ U @UUU U@    9/9//++++?+++210CTX@  U @ U @ UU  U@ U  9/9/++/++?++210@6;;I Y Tk dzz  @  O @ s@!#4 8@ ?_o$+]+<?<c`Ҋ~K|]Ya p@    @0 s@!#4O_os O__?_o+N]q54'#"5432#"&4&#"326p|aS}P66mƏ{z˥tx|}SznLp Vk4Ĝ&8@  << 54&#"'6632531$8wsZX6i$jM:;+b:i`tNJ`loQGW@W! !!%5 3EID!F$FIGVTz)%)& *&)569C%VY[!V)VIYVee%f)vzr$!&PS@ '0 P  HCKC: : +p++M'/H$@P>$$0p?8*$+ #@ 55XW+N]M]]/]???]99910]]%#"&&5463273327654$#"3 $73#"$$'&547!2#"&'&32>54&#"AQYirW9")5Vr}bX3CTdz@ra̶EU T8|qHa@qj@K[h؁?[]a'=P "g~ir啽 ɭ*'LCfAYgUU U@Y U U U/0gh ` YVPh         @ U   @ U   p@  @  @ eRP@ P    @+]q]q]q?<?<<.++}ć.++}9999ć10K SKQZX8888Yrq]++++++#3#!!&'3XݫF"3FDZw*@G UF#V#f#s iup s  ' '* **))& U@3U U U U U UT%& U U @ U ,   UU U U U@ U]+;\+++++++]<54&&#!&sfgW=8JKFm^&CZ:TYe^3'g`1RfMIo) 8kFRy1fvӵcj U@_ U 2 cpt  *(* G VWVhk{޲(9@-(9  &J& &  Uc\+N+]MN]M??910++]]q]++r#"$54$32&&#"326=כC,;3“\m憣1nU-銼Z@/ C& @ U U U  U @ U    UU U U U@ U];\+++++++]<<+++++]?<?rs^sg0pMQOa7" ع @4    U@ U U@ U U]    @ 4 UU U@ U U U@ U]  P ` p ;Y+]q++++++++]<<]+++++<<?CTX@  /33???910@$/*(% / 0 `  P  CTX  ??99@$     ee@ (9P@ @(9_@ P0` `+]q]q+]q+?<?<.+}ć.+}K SKQZX 888888YK(SK6QZX8YY10]q]]Y!3673A}."-׀pxx)Fv@&)&)&9696IGIGXWXWCTX@3+44 DD KTT [dd ktt { ?????9]99@  < <  <@Z         A Q QQ@Q +N]MNEeD?<<(7-@, * *) **9 67:*I*] ]*j i*`0 ) ( U'@ U((((D@ U U U5@U U+,*499,IH,VY+fi+v +74/$42!_)o))/? UU@U UU@ UE' 2 )aa U%!$U$@ U$ U$ U$ U$@ U$U$ U$[@'@&& &0&&9U&ֶU&19@ #409999@AU%"/$?U U U U U U U18+++++++]q+]q+++]++++++++<+??+?9/+++++]qq999910]++++q]++q%#"&546676767654'&#"'>32#&326765ZCTX@4 @Pp  U U U U/++++??]2]210@G CCSS``    jiju p  "_o@y0@P`p    $ U"$ +@ U@UH U UI$? U U U14++++]q++++]rKS#KQZX8Yr+r??9/9/]]10]q]qY#"4632&&#"326<r鉭Zj kl‚FU@  % 4 D 55WT RSgde c`+<<Kp.$ .:5 KE FIW V g     3%%@`@ U@ UU@UU U@ UU U@B Ut$?O U U U U U U4P+N++++++]qM++++++++++]q<<??S@U]] U eko e  U@R U U'1:1AMAQ\Ramaxx P`p U@U @ ܴ U U U @ '*4  %&4@A#403$@$*4?O U U U U U U47+N++++++]+MNq++q++++M?]++?9/]*o@` , %L E , &,#9 6J FVX h .#,'>#>'L',,6!6)?,F F!E)T!T)ic!c)`,,'!#'(@ 0`p}@2 E" 3%3 %@`,@ U,@ UU@UU U@ UU U@J Ut%"$?O U U" U U U U+,t!4P++N++++++]qM++++++++++]q<<??]??<10]q]q32676'#"5463253#"&32654&#"f 2Ct}vnэze۠Ꙧ}|zxXQ%2dZ7<ݘjx*a4@ U%5E @:4  % @364  @ U@U (U U @ U  U  U @ U U @ U U U N@464p%@364 U@U U U U@U U UNGP+++++++++]q+<<]q+++++++++++++]q+?#ǹ U U @M 4%    #  # # %%%%%UU@ U U@ U U UU U U]@ %U@ U U@ U U U@ U U U]@3#%?O@U U U U UU@U U U$%x!GP++N+++++++++]qrpXdL:&N_bX'l_:xxP>}@@< 4y   $@U@ U (U U @ U  U " U @ U U @ U U @ U @364   N@464p3%UU@U U U U@U U U@364 N]q++++++++++<<<]q+]q+++++++++++++<<? k U U@s U U  GHVYgi4::5EKKE\\ R]]Rmm dmmdw  [TT [ lee l  $@ U@ U@U U U U UU U@$%40 1@I#40$ U U U U U U U U@$%4?147+]+++++++++q+]]]++++++++++??10q]qC\X@ SS bb ]Y++++7632#"32654&#"D{'v i!>b@ -=K?  ) #22Bp ::JJY[ \\jk imk  #++5:FJZ   $  @ `  @ U @ U @ U  U U U U @# U t33%?O@U U U U UU@U U UG7+N+++++++++]qr6@ +*;Ky ??K44?DDSScc` )" +95 IF Zi    3%@`@ U@ UU@UU U@ UU U@? Ut$?O$ U U" U U Ut!4P++N+++++]qM++++++++++]q<<????9910]]qq#"466325332654&#",*Uo~q!xsvui;N.C>@;/#4CSft      (" "%@364 U@U U UU@U U UNG+++++++++]q+<]r???999999ɇ}10]r]336632&#">i?[^>BB;^&qH:'G?`r?>0@{"": J D$V"e"| $, 0K,U2 \\ \ \ \ \ jj j j j j &''&$'$)6$Z Y d&d(t#t$$ (,0 '(&&( U" U# U$ U( U" U# U$ U@9Z'%  & .@", U?O_oU@ U@4@4.\l UU@U. $@42@/UU U U U U U U[$*9** U*U* U* U*2@!'*4`22?222$ U U U U @U $ U U U@ U U U"?O147+N]qM+++++++++++rN]q+++++q+M+++++++++r?+++?q9/++]qr+]qr+99910Cy@@'-#,&"  (- !#"# ) (' +++<<+<<+++++*++++++++++]q]rq]732654'&'.54676632&&#"#"&?{|x5%ƙOA8*S}Z si|j/Vi}=kreD=#%2INGy(+H{gR\R7# $3A|\ZW$*ع #&4 @A#&4  +  "" % E E`p UUU U UU@ U U Uj6f++++++++++]q<<<??<<993310]++%#"&&5#5373#32LeclM,&O@ 4 4@34+$    3%@364@U(UU@ U U@ UU@ U U@ UN@464p % @364   U @U  U U @U  U  U NGP++++++++]q+]q+]q+++++++++++<???<99910Cy@    ++**]+++!5#"&&'&53326653?|^O nQQ;HmO5s1GQS9& CTX@   $U/+33???9105"9 @ 9 4444 @ !4(!4 @ "%4"%4 @~(.4 (.4 )( & 95 HG VVYX ffii xwwyx w   ,   (& 7 O@ @4@ 4CTX@  @ U U @ U U 9/++++/??910@7 %  %  /  "@@@  @@ @" +]]]9999?<<!4@J!4)( /99 IFFI O\TTZ Plccj {t{  &)+ 94,9 @#9:  % a+ a @ U + [@ U" @`@$ Ut ~Oo Ut!|++N+]q!4++++qY]C\X޲9 ޲9 9 = 9 @ 999++++++++Y35#!5!63!(sXOdoyjw^{ 9Q|*{@MG(44 4% 4')** %  %   %:%&:*':&**_i+ph+]<<<<<??9/9910++++q>7>7633#"33#"'.&&'9Ma  1H8&V8hD W]ncA_8b,@T aMdON5Tf= KEkt-.%D6ghPQY2~@v +N]2!)d+CTXA+@ @4 dH+++Y55Y&$?@ h+)++q55f[v&&"@0 0O0/0000H+)++]q5,&(Tj(@/H+!)++]]q5&1QKU@ UoO_zH+!)d++]]qqq++5c&2,#!)+CTX A+  dH++]Y55"&8@  A!)++55J&D@/;?;;H+;")++q5J&DC@999 H+9")++]5J&D6@&: :0:p::::::::@.24:=A>")+++]qr5J&D'@<@ Up<<<<bH+?")++]+55J&D8@I@ UI@ UI@4I@ 4IIIдH+G")++]++++5J&D@AAAh+A")++q55Po>&F7@U/0 H+)++]]qr+5K&H@!!! H+!")++]5K&HC&@ 4p H+")++]q+5K&H'@ @;5 @-24  # A$")++r++5K&H#@"@ U"" dH+%")++]+55.&2@ U4@"%4/ZH+")++]+++5#&C(@@4@"%4 H+")++]++5h&@  A ")++5 :&@ UH+ ")+++55&Q5&")+CTX# A+("$4O((H++]+Y5D'&R@H+")++]5D'&RC&@ 4pH+")++]q+5D'&R @@.24A ")++r+5D'&R*@ @U@ UnH+!")++++55D'&R0@/+?+++O++/+?++H+)")++]]]q5&X!@@4O p+]<<<<<<<<?<<<:+N]M<]]{?{@{AsIsJ->?@AHIJ)) )$)"1HC EB?9% ":/'<HCB?:9/'% 6'@-' <>+^2><)O++L"^><8E)OKq+N]MN]M??999910]]732654'&%.5467&&54632&&#"#"&6654'&'&'zifs$>uJxiG:ȥiY\q$87GCI*pPOdm3JI45CQE..FihF3+K[gL`DsAz`c<4,D`-54&#"YЂ$\d-@͠~/2d7Ll ['(g m[kpr3l?  AY6MiƇjH]HhF8(>r99<'PX">_!6@@6,-&')-)0+1 +++ e01/d/t//г&-4/b@.,..,-,+*).012601(3-,+*/))5b77 !@?b@!""".//6O  o   b b;b&T/b.@756!6b J bBb Az+NMNM<<<<??]q<<<]<<9/9/999.++q}910Cy@J<>%$%=&%&%&& %&%>#;,!! !!<%?, !! !!++++++++++++++++++++]q]2#"$54$"32$54$!2#'&'&##32654&&##jjӪ,,Li+1GcHU4$EMrS(G`hk}Ѥէ+/,-p?Y0q&D8$9:3@  036p !$/0..`+8b@O$$o$$$$2b@ ++++b b/b. b!5b'd b<b ;z+NMNM??]]q]10Cy@T37%*)&%&%&& %&%3*57%5!! !!4(26&8 !! !!+++++++++++++++++++++]2#"$54$"32$54$#"&546632&&#"326jjӪ,,T{Ëdw wuOspZhk}Ѥէ+/$}ʄcmJOh@] 95JF  i b@  b;;b b@ 0`ٹ.+]<<<<?<<<<<<999910]]!5!!!33##e|{yyJ/uTJOeȳ44@&4oooOP`S٧+NM?]<10]]]]+++3ޅ=nH@#<<<_o$p+N]M<<<<?<991053353=N@         ?  %  0   %   U >q+<<<<<<9/9/?TX8'l@Owvx % &D dsy%{&%& Uk:%E/)6#  =) &i(h+??9910]]]]]'6632#"&5476%.#"3276F^L{/-ڎ(`A>v}fDKUur@"#l vy+<<?<IlUk{`0H8 F0#A<"Yw=>w=2(,&):N9- C/| |@)ip) ih+]]??10]2#"&546"32654&uQceOPdeȰįȅr~uuzt*Y@%99EJJF%YVif|zt%&;. H@) +;::+';'''':*:)((::'(@ U( U/Ox@ & J(U U U@ Uj, (@((x)$&J)U)U) U)@ U`)) ))++]q++++]]++++<]++<<?<<<<]q]q?10Cy@ # "%& %&!$ #  ++++++++q]%&'&54$3 %!567>54&#"!5l9W^/PlW5`lP,Hd3cɏiC?`I]:?(&=gxHD>5<J{@5=9=HL)O9Z)^9z(@0"4%LCB%DH[VVS%iged#wt&$ U=U=@. U====F6....2: :'' F 2}@ 6%3=%.7@. U.@ U. U. U..?...ĵ+5$3+U+ U+޴ U+@ U+0+@+++@; %"C$  U " U  U  U  U  U  ? O  K47+N]q++++++M]++++M]q++++?<]?<9/]9/]+++10]]#"&'#"&5466767654&#"'>326632!3267!&&#"326762Mh{c–fiWx9iăf;(@sbCXgHz~Om,;jesE`ff`VN~e*MUuN2@FI}*Wvk"'"/LGarU4dg!+@", %FTdU(!"FI LLEK&Zfdf""+,+/"; =8&T-X \^&" !"!!|y!y"#j!i#z zlfm&u;"EJ&-,"9M CIF'z"v#"d mmh"""#@7 !}!#"(-(,  % [[% ($U U U U U@UU-4-@5 4---- ----$U U U U U@U,3+N]q++++++MN]q++]+++++++M??999999999.+}<<<<<<<<10C\X޲ 9!޶9""9#@ 9"%9@9++++++Y]]]]qq]]]]]]]]]]]]qqC\X@)"#"#$ ""-]q]qY]q+q]7#"''7&'&532&#"32654'&c`k?zi^l;(&R[d4?Nb FVFdԍqPGDDm- *Fʖe?L9*SO&"@7|k|`k]]KRLK:D ')"@!<^l $$<"^"^ v#+]<]?<71$7wrYY6&"nM:;+b:jatOJ`ll& vCTX@ <:<:/?/10@#< :8 8:<<  !++]<?/10KSX <F&7igq3x2*-@c$ #+$""%+-// "%!"%&!!5656EFEFVVeevv )-  )-$ #' p    : + p  '>$ >$##> > i/+>>>>i.+<<<<<<?]]10]]]]56323267#"&&#"56323267#"&&#"3j<{EE#A6@R .5@m&W DD#K&K*D-K2D4WWS#_&_*S-gh`$l&l*c-\2T4R[23#;&:*3->224 (% 53/+ 3 %}@& /@(@@3 U U U?IJ0@UUִ Uд Uִ UUU U˴ U U 4@@!$U U U U U U( U U?O647+N]q++++++++M+q++++++++++]q+++?<]?<9/]99999910]]]]]%#"46326632!3267#"&32654&#"!&&#"Lzu3@|c +볆G\WM-K vxcd sX]nӦooiĺa~bo[@5 z+N]/M105!sʑ[@ 5 z+<]</105!ʑSZ @\~~llZZ      < < P@/o8< <@4u8<<q+N] @4 u<8' jq+]<<+<<?<?<9910qqqqqqqqqqrq]53'667353'667W+[,65+[,65ѥ;Q)G_Sѥ;Q)G_SQ ~@6{ Zl  <8oP@8'<  y+N]º(z-Q0X[RM`Eb:xLl*1FXQe\H,L9@ 9@uu< 0jKZ+]/10]++#3# ;9\H!4@uup+]<<<<<<<<<<<<<<<</<<<<<<<MHDFJBM7!+5#2-)+/'2 T;QN?QGEILAI9 63$6,*.1&.  +++++++++++++++++++++++++++++++++]34632#"&7327654'&#"4632#"&7327654'&#"4632#"&7327654'&#"@YaOA; +,"<>!-BOA; +-";>!-OA; +,"<>!-6 ǵǺŘj-/.>ǵƹŗk-=>/.>Y,&$@j@oA!)d++r5,&(kj*@ @ 4 / _  H+!)++]q+5Y,&$?j!@ 4 H+!)d+++5&(lG@ U@4@ 4@4H+!)++]q++++55,&(Cj(@ o  @  H+ !)++]qq5,&,j+4@"%4/ZH+!)++]++5Y,&,j2 !)+CTX A+@@344@4aH++++Y55&,@ H+ !)++556,&,Cj9!)+CTX-A+@@4@"%4 H++]++Y5c,&2j$@4pH+!)++q+5c,&2j@ !A"!)++5c,&2Cj$@ 4PH+!)++]+5",&8j+@@ 4O/H+!)++]qq+5",&8j'!)+CTX A+5H'+Y",&8Cj#@@4H+!)++]q+5z&j @U% U U U U@ U U+++++++]<<+??<1033ƴ&I@d<=@ 4dd<h+NM+?<]<<<10#3#XqT@@ :??@  v Mv!z++NEeD?M910Cy@, %&22  222 2+++++<<+++]&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/_#@45h+N/M+105!p˔.} KU @ @@ A+]NM?<,+?:IjkLMjkO/@@--@?k[A : OZ@ : vM>Wy+? @^&>k U4Ks u:A@!<r<rp+NM]?<<M[4z-cxYKDT.w"xeV(H@d<=@ 4dd<z+NM+/<]<<<1073#3gn+ @     @$    T  e] U U U U U U  ;\+]++++++<<<<]?9/9/?<<10573!!Lf5{|ҭ @H p       E  @N 6 U U @U  U U  U U U @ U  N GP+]+++++++++]<<<<?9/9/?<10]5737#>nnss)\&&6(d@ 11H+4!)++]5?&V@ p11H+5")++q5)&&=d@ A!)++5(&])")d+CTXA+A+Y5QYOe~@# v  !++N]</l*Q {j=@ u  a '? a@:) )'h+NM<?]999CTX99Y10q]q676$7654&#"'6632!)? %FDBA;-S#99V)+0>/CoivUTK8s=$y!+v@##M'0a)@ '_o?a@) ')&)'),h+NM?]r]9/99910732654&#"#7654&#"'6632#"&! +;GVHW QK<;8?)}xGCYT<N72<n<+%4,:jTkP7VeD]ok *@/,3!?&D!T!(((@!(),+   @ :/?Ma(a)a@ **' 'c@)":**)i, )D+Wh+<<<<?<<]?<<<999999.+}ıCTX&*)99Y10]]q356673676$7654&#"'6632!M6fz>/l=*> %EEBA;-T#9 *Q {j=89W)+0=/BpivUTK8t=#yk @   )+::Vf fv@   @  :d@-' 5_5M  5 h+N]M<<<]<]<?<<<<<<<</lzhh9 *Q {j={l!-8;3/=@'=<% 23:% 1:20M @  0 @/?_o_oa a+@35449677/;9d0/.32@ 88.. 0@;1108:5363.)8N=)"" )0(((@ )")<|f+NM]<<?<<<<<<<<&V:2 )+CTX23..A+@ 3333343.&D@ 8'H'8 )++Z&&'d-@@U@U@ UH+!!)+++++5G (4@06'SS'bb'56-!: I CEI(Z j - # & C@4@@&H H @1#3   %U@UU U UU@ U U@> U@`t$ U U U U" U U?O)4+N]++++++M]+++++++++<<<<<&H='@`PH+ )++]]]5&&(3d*@ @ 4 / _  H+!)++]q+5K&H@  H'!")++*,&/Rj@  pH' !)++B&Od[<!)+CTXA+4@ "%4/ZH++]++Y5*  Q@3ee Q Ue    $U U @ U U @ U  ;\+N]+++++eclM,5F{"E*t0&&7d5 !)+CTX A+@ @%'4@ 4H++++Y5# "@*ol```ppr   !-@$@3 @@$+!  "0%EUU UUU U@ U#6f+N]+++++++M<<<??<<NM?<99993310]]53'667#"&&5#5373#32EHN-31LeclM,"+&8>;@:<4}?r+55CTX A+55h'+Y&X@ A"")++55",&8j3!)+CTX A+@ `UH++]]Y55&X1 ")+CTX A+4dH+++Y54),&=j(@@ 4YH+!)+++]]5(&]OiH+")d++]5)&=0j  H+ !)++]5(&].@@ U/H+")d++]q+58@  $UU U UUU U U;+N++++++++ @P "7GVVv u IFFI[TT[h h gy  %*5:o`  UU Uk@ U U@G UB7"@ U  U U  U % U  U? O  4!]++++++<q]++++++33????9]10qr]q]3#&'!"326%"32654&F;F;+S}D|&~d^,!eg#ĿH,@;X Z Uh h xEJJUZ '(78E3993[  ko c `coo`~ __ P PP_ZP+k j @3{0@[k@@!@ U!@ U@U U UU U@J$%40 1!@ U U U U U U U U?1 ]++++++++]]++++++++3/3/]99]r9]??3?3910q]]]r]]]q!!#"57&'32654&#"!dվ]Rzf@ Aʪܼ˼bc>$@7&_&}}&&!96"uy!!  @ 4? @ p  #@+  @ @"4  `&@@U U UO4%]+++]2/q3/+339/9??9/q3/]33/+3910]q]&#"327&#"327#"&547&54632={kXQxt# opM{h]^6F]nEGam~LSwD>$@=6699EEIISXTRT^ejdddm   $U UUUմ U U@! UP`p0@P`p @2 ?$ @$%4 U  U U  U U @U U  U U ?  1]++++++++++q]]q+++++++???9310]!#"32"32654&߅#K_&|}±.&@ P ` p O  p%U U U U@ UU U@- U p@p J/^]^rq]++++++++]]?L<;Ol#67!5!&&'VcM^g;L<;l%-0lea^vSh;5367#&&w^`elɐ/.%L;g^McVOn#67!#&&'56673!&'3^PE}}EP^^PE}}EP-++-,Ug3&'67#&&'5566-,,-+^PE~~DO^^OD~~EPg3&'67#&&'5566!!-,,-+3^PE~~DO^^OD~~EPbjk3!!jded#!F@  #!! "y+NM<32#4'.#"% D|wנE  5o\\s.mE}b]4t?rvLPh6r: j@< %?   %0%   WZ+N<<<<<<<<<</ON?2abu u??e!00!"//"!00!"//$$_dd #/! ! 4&#"326%4&#"3263267'#"'vu/"!00!"//"!00!"/2ba2?NOu u"//"!00!"//"!00_dd_$!FU/;3!!#&&''&&'!5!66776674#"32LfX"4I&P|9bkLpP3BD P BE0$e\$,-U?G5_J`]E2H9 Q>=3TjEjT9F=,-I '!!#!5!"&&546632"3254&&5;4gv~~n;I;yzzyoT&#"&&5432'"3254&&$93NXh v~~TfEK25yzzy:"#"&'!726'#"&54766766!lJ\N1K-TZ!-0IClE`a]c %%__[I;R6S73!!7676654'#"&54632&&5463267632#"&'&'J6Qg=[t^"#"3o|rvt3FG)rmYb(tx=3%X=)?&&'&'&&5463267632bsy.)mnQ=&!R>M[wh[|#N>CU.w=vgP~FfW@U6 UOp ~ E  E %U@U U U UU U@" U N]qr++++++++<<<M[uhet"N>CU.w&Q! A/+5]@^;4 ?A il{uru $$/q  /& $U Դ U U U @ U  V  UU U UU U U]+++++++<]+++++/]/?<@J$4Dr    %U@ U U U@ UU U@ U@364pE%@U U UU@U U U@364 N 9]q++++++++<<<]q+]q++++++++<<9?&U%/\&&6Ld@ 36A2!)++5?&V@ 36A2")++50@&  0  99   /@ UU U U U U@ U s+]+++++++<]<]<<<<??<<9/<<10]!5!!5!!!!#JHu #&4@[#&4/ + + 4 U 4 U   3  "" %EU@U U UUU@ U U@ UNG +]q+++++++++<<<<3/q3333++99??<<9/<<10]++#53#5373#3#327#"&&5%@ /I=jslU>Hu"&8d@ !A!)++5&X @@ST4%A")+++q5"&8d%!)+CTX A+H++Y5_&X@  A)++5"&8d@  A!)++5&X(")+CTX  A+ رH++Y5V""3XX"$@*4:;4!6"JJF!F"XV!f"v" " 4]  @  ]@ &U@ U U U@ U  P`p]$& UU U U U U UU 4]#;++]++++++++]]q+++++9/]q3//]?M[vebyIt۴NG*GT.w=xeFqPO^NW&%r "4'@ 4 4@@4 &5Dw*+ E #%   @pE %"!#0@%$@364'@U$(U$U$@ U$ U$ U$@ U$U$@ U$ U$@ U$$$N'@464''p'''''%U@U U U@U U U@364 N&GP+]q++++++++]q+]q++++++++++++<99/2//]<??L\uhbw|~;nS[0N>CU.wASPSS/SpSSS AAAA/qr55/]q5+55+5@,PDH+QRPSKO4S@``4S@884S`SSSSSS8?4S@ ,.4S)/4S'(4S#$4S"4S@4S@4S4S@+++++++++qr+++10+5Y,&j@ A!)++5D&X@ N%H'N")++S,&j@ 42H+4!)++5d&6@ ,H'/")++Y&$@<<+NM/<<1053Yv,&:Cj A!)++5&ZChA")++5v,&:j@ H+!)++5&Zh@ H+")++5v&:l+!)+CTX A+H++Y55&Z@ H+")++55F,&<CMj@ H'!)++!Q&\C@ UH+")+++5[ GP@ < i ? +N]J)yzk !-8@/:{wB\4@';4?%6a@ %/%?%%%+a@    }0a@  ")'.) @()'3)::9  )F9Wh+<<<99NM?<<<<99/]9/9/.+++}10]356673&54632#"&54732654&#"32654&#"M6fz7.l}F33IH67@GPVDFL9 *Q {m=/sPokVs-)j~d244-.7:E5:DE""6BMQ@/Oi&f*{&w*&*B\4@';4?!--:##Ka@ :/:?:::2@a(2a@ ! 0da!@/?_o_oa}Ea@2  7)%'C)5@/=)+'H)/OON)" )0(@' d)")N|h+NMr]9NM9?<l ` ٹ+9<</<<1053'67J^6]un&T(kk[K@ M   1@:M/8)j W+NM<]]10632#"'73254#"#|?M ,+2nHMt uLCO Z@8 @ P `  u@,/4_P/r]+q3/]3/?]q<<103#%3#%3#[u<֭[UUU U@e U U U/0gh ` YVPh         @ U   @ U   p@ RR@4@ 4T  @ eRP@ P    @ +]q]q]qr++?@'O_  b V b V ??9/]q10!!!!!!#^gyY&&c2" @4 U@ U U]   UU U U@ U U 4] @ U  P ` p ;Y+]q++]++++++]+++???10+3!#!~F 3 @< 66   &- 7:? I ij xx   U@ U  @6U U       1  ]<<<9??<<9.+++}ć.+++}10]qrq]!!!55y <!/07F< I;0 @J@O I@@`p  0@ 4 4## 44 ]  @ U   U U @ U 0 @ @ ` p  ]@ 4@ U UU U U ]]++++++]q]q+++9/+<<????9/<<10]++q]33663#$uO sb ;5 aw@[XYXW [TXXzu \P od v % KKFE   * ; --  ::@ U U/Ox@ & JU@ U U@ UU U@ Uj_ @x&JUU U UUU U@ U` ]q++++++++]]]+++++++<]++<<?<<<<<qui>)@Wrp %5F   %@ U U @ U  U  U @ U U @ U U @ Up  N%@U U U@U U U@364 N 9]q+++++++<<<]++++++++++<<9?9V=&L@ N% U U@ U U EG +]++++<<??<1033&& Z U U @> UD? ZYii   (8XYJ@  @R U%U U%  e     Pp % U @U  U  U U U U @364   N ]q++++++++</]9q?<RiE>  @dk jj`_bjl blP__ P_9579IFFIVWX Y h x    $@ $%4UU@ U0` 1@ #40 %@ U U@ U U@364 N]q+++++q+]]]++++3/???910]]]]]q32#"'"32654&s#i."}@VQ>"@K')69 FJ   & 7 G v  ! $ U U U U U @$%40    1$$@:#40$$$U U U UU U@$%4?1#]+++++++q+]]]++++++3/39/3??/10]]]&#"#"'732654&'&&54!2*pp‹|FަCU,:+`nO~Y${#t3%AsK S;69/d&@9DDTSP[cjs{ p  % @U U U @ U U U U @ U p  N%U@ U U@ U U@364 N]q++++++<<]++++++++<<?53#.5z05Mδȋ.&gYb ʗDW&$U@I&( &9H@&S\]Sdknavzuz$$&&& HH   00@#  P  0@ U #@ U@ U UU U@)$%4 0 0 @`1&&@ #40&&@#@ U#U#@U# U# U#@$%4#?##1%]++++++q+]]]rq++++++9/+qr99/9/????9/]910r]3326653326543#"'#"5c@p%%q@b۪ab&d~7{cհI"&( ")+CTX A+H++Y55&#@p A")++]54D'&R@H+")++]5&# ")+W&&@ %' A%")++5&(^  !)+2@*fv" ]J  J& д U U U U @ U 7 UUִ U U U U Uִ UUT+++++++++<+++++9/???<9/9910Cy@  66 66++++]!!632#"'732654&#"#!2hLR8c˲!%^X U,&=j@ H+!)++5dv@+;]o )) ) 5;5 ;GKE KVT V Tj wyx   `p T   &&b/ -& @U U  c\+]++]]q9/??9/9/9/]10]q]!3 ! 4$32!"Y ^Y 836S Kt1GJ23\6,5&,( !)+CTX A+H++Y557a- )&=@b&&  H@  U$U U U@ U U@UU!& U@$%40 1( @ U U:@J UU-'++++]]++9/]++++++++<???9/10Cy@,$&&%%#&, !6$!6, 6"%6+++++++++++!2#!!#"'73265!26654&&#!^bɾ+j@Z!0"BBjzW]ohM wc)w`[{&D@/+     U U U U@ U U@"UU& U U U U U U@$%40 1!  UU U U U UUU] ++++++++<]]+++++++9/++++++++<<?32"'&#"#&&##"#67&&'&'&#5632kS=OW_  ]-.;@^Y.by`b .OdE?--YN e`P?Ti~iwQ--s&(Rer' k((OwdN&@SN9Fe!uKZt( @P`p ?O_%0@P% H %HH@% & U U@UK&" U"@ U ""\(&b&1']++]+++9/??9/9/]9/]9]910Cy@#$6$66#6++++q]]q732654&##526654&#"'!2# N]mo32"'&#"#&&##…lT=OXp  ]-.;JfG.el~gĐwQ--a'{R  b H@  U@U& U U U@ U UU] U@U U U@ U U:@ J  U U U b+++++++++]++++++++???10Cy@ & ,,+++!#!#"'73265 +j@Z!0"BBF wc0"+c2! @ 4 U@ U U U@ U9    UU U@ U U U @4]  P ` p ]q+]++++++]+++++??<10+!#!#F 3fv&07 @fh@ U@ U ] J H@   \\9/]9999??<<<9.++}ć.++}ć10r]r]33#"'53267 g{KmNWGg>~ք#-[R@I !!O!p!!!%++%{ {0 o   ?p &U U@ U?oó &U@ U U0`p@   @   @ U U @ U  O  /]r+++D[D(@E9 5%9'I F%H'YYU[Q%\' = & #3  & $*@ U*@ U@U U U@ U U UU@$%40 1*@C#40***#$ U U U U U UU@$%4?1)]++++++++]q+]]++++++++++???9910q]#"6632#"&!264&#"326 IsߢGDrp(2kTVeeO$ P໹&#2@6%/%F#+##++ $ UUU$ U U U @ U U @$%40    1%%@#40%%% U U U@ U UUE$++++++<q+]]]++++++]+++??9/9910Cy@3!%% & !   " <+++<++++++++]!2#!326654&##32674&&##k??Kc Ļ!sVDwrBju&3_Lq&^gI3TBGW3W&d@ + %U@U U UU@ U U UE]++++++++<??10!!#cQ&ol& ;@ +  + @ U U U U@ U@    %@ UU+@UUU@ U U@ U U Uڴ UU@$U?ON+ U @U    <]qr++rq]+++++++++++9/]q++9/]]+++++?<H`&8@9' %%:/:?:`:p:: ::0:O:::::4;!!!533U3@JU3+)'))'U+% !!%"#""#53') %# "7 @?.3 0 H"!! %'5)3/#! " @  (@ %8 UU U U U@ U(@O//"""P"""p""""39]qrq]q++++++<<]qq9999?<<<=eI%W7 QD2b>& @] (U ;P`p    @HH H ! $!$U@$%40 1(@ U@[']q+]]++9/9??9/]q9/]9/q]910Cy@*$#&!$! "%<+++++++]]q5>54&#"'!2# 732654&&#"rrSJaM=P2~PPл:[[yLVq P\& R@Vg{@ U U@9 U U+ % @U @ U$UU@ U U UUU U@ U@364N @464 p  % U @ U  U @ U  U @364   N ]q++++++]q+]q++++++++++++CTX9999Y?@K>??DD /,//L^z KK ?{{@ U%   @* H    I %U@U U U U UUU@364 N]q+++++++++<]]99?<33'"#&&##VEC5BV_$2G+)DGtp;X=&5B~PmhP!Ic?#&F@+3  %@ U@ U(U@ U U@ U U U U@ UUU@364N@464@`p%U@UU U U U U U@UO_op | +9/]+++++++++]q+q+++++++++++++??10Cy@ &% ++++!#!#"'532665D#lf?RO80&vX2&  U@v U   FJEJ VZ      xx     @ U + U@' U+      %@ UU U U@! UU UN? %@ U U U@ U N ]++++<]]+++++++<9?<<R& @+ % @ U@U UU@ U U& U U@ UUU@364N @464  p  %UU@U U U UUU@364 N]q+++++++++]q+]q++++++++++++?SP>F&&@/ 0 @ _ + WW%@ U U U U U U@& UUPP`/]qr++++++++??<10]!!#!&_&o!Q&\KiJ)5D@bX  77[\ USY Y"Y&U,V.U4jj edj n"n&h(f,e.f4yvy vv #0'33!3-  U% U@ U$$ U U UU@$$%40 17@7P7`7777 707@777@4#4077*$ U# U UUU@$%4?16]++++++q+]]]]+++++9/++<+<???l&&aTYEl& @+  + $ U U U@ UU@7$%40 1?_ %@ U U U UUU@364 N]q+++++++<qr]]]++++++??9/10Cy@  ++++332#!732654&##>l&aTYEl+>S}@9@ UU U@UU7N+++++5>}@^ 4GZ_ PSS_[no eccon"+  $U U@ U U@ U0$ U U U U U @$%40    1!%UU@U U U U UUU@364 N ]q++++++++++<]]++++++9/]q+++++<????9/10]q336632#"'##"32654&yڴZ|{&D*˷̽& @& 4 D [T y $   U U@*U%    ++   %@ UU@ U U U U U@ UU"UN ($ U+++++++++++<9?<@:EUUk l ls s { tu_o "0@` @H 4+  $$7$U U U U U U@UU@$%4?14 +N]+++++++++MV<L :&@ UH+ ")+++55Q:M&" @$+"" ++ +  % @ U U U U ٴ U U @U@ `   $ U U@ UU@$%40 1$$@#40$$ %U U@" U U U UO_#]++++++q+]]]+++++9/]q+++++++<??<?9/10]32#!!#"'5326532654&##D> 'ohoG(?([k&a﯐G NnSZFk9&@(+ +  %U U@ U U@UU/ $ U UU@$%40 1@ #40 % @U  U  U U U U @364   N]q+++++++<q+]]]++++9/]++++++<99<?fkl)&FgOTBe@  %5Fz@2+4    %@ U@U (U U @ U  U  U @ U U U @364   N@464p%U@U U U UU@364 N]q+++++++<<<]q+]q+++++++++++/]/?@ + + U U U@U_o% @ U @ U U @ U U & U U U @ U U U @364   N @464 p  %UU@U U U UU@364 N ]q++++++++]q+]q++++++++++++9/]++++?<??<10!#!3!3.&nP@.U U U UU  UU U UU U U9+++++++9/+++++??/103!# @#+ %U U U UU@U  %U@U U U UUUE+++++++9/]++++++???103!#w0&o&A[@ /105!Aʑ@ !%:@'(/'  U@% U7fu8* f@(*M#"5$%u UU U@ U $%^ b@^ U>' UU U U&++++<<+9/++++<99?<<1_u=3oZ\%)gvۍG2)1v@,Tc   U U@ UU̴ 4 2/+3/++++2/?3//?<10]%3!5!4&&#"'63  BAjX1@V#/8 4K Y j {  #      @ @ U U/]++2}/]323/833/99?3??<<<|9/]399.+}ć.+}10]#"#76634&&#"'632bI{R;TKIVG=0Ca4o[VY6 f-%Q@   U U@U U̴ 0]]++++?1@ )6ZZij @K   U    U?_ @ U U U +++3/]+3/9?<<?B @*/7GSYY S S\\S  &@ U U@ U U@ U U U U UU@ & U@ U U U U UU+++++++++++++++++??10]432#"732654&#"Zؔpј6u1%@5 yyu u ;i@6U  U 3/]3/9/+3339/?<;+\%qHHn{mNL7YI(1h+ ; I @  / @ U UݴUU++++3/]3/?3??1088]63 #4&&#"(B>k \d*%!@F+/#15==1HHY\Zhjju r tvy! !@UU!U ! Ƶ# !"229/+++?<2 lg&&&&=3oZ\%)mpۜ>%%%%2)1& @ `A)++]51&F(@@$$ $P$$$$$A)++]q5-%&N @  A)++]5@1& @@pA)++]5%W ӷ  @U U@CD4@=5O@ /@4/+qqr++++??/10#2#"&5466š%&5&%%q&&+)%;%"@ $$Pb@ ' U  @+ UUU@4O@4̳$ /]+/]q++++3/+9/??/]10]"#54'&547!5!2#"&&546; %&%0TfjJ1q&&&#1@;&@ (!A)++5%f @  @"U U( U@CD4@=5O@ /  @4 /+qqr+++++?3/]9/10#2#"&5466š51#5&%%+)#1,(&(h1&@ A)++5PV7&("@ U"`"p"" A)++]+5<F&97!U! U!!@ 4!A)+++]++5P>1&?@ %A)++5<<1&b1 U 4A)++]++5Z>B (@!/*\\S 7GSYY S S"@ / @&O&_&&&&&&@ U U@ U U@ U U U U UU@ *& U@ U U U U UU)+++++++++++++++++9/]q??9/]qr10]]432#"732654&#"2#"&&546Zؔpј#%&%06u1Y&&&#1nh1(@ "4 4IK[)8=@!!l )  (4UӶ%U%@ U%@#&4%@4%%  U@ UU#U/@*  U U U )+++]++++9/+++++?3/?9/3/1088]]++327#"63 #4&&#"2#"&&5466&\-6D?~b %%&'z 5uN%%&%s7 -@MKz//==!@((l   #4>%+@ U+U+@!#4+@4++&UU U / @U U  U .+++]+++9/+++++3/3/?3/?3/9/3/10]]632!"'732654&#"327#"&52#"&546z8q.b¢TR{ 'Bb %0$#105G?Ĭ{I%$00$#1 f%&e+ U@ U AG )+q+++5h%&:@#U#@>C4#@374#@4#p##A)++]q++++5(1& @ UA)+++5d*%!.@Z/0 yjju r tvHHY\Zh+15==1"@((! !%Ӷo,,,@UU!U 0! Ƶ0 !/229/]+++9/]?<2 lg=3oZ5k%)mpۜ>$  ///10#$H %@ MM  4@   @ 4ض@??4@44 @4@[\4@&)4@4" 4 @+-4  @ @+-4   @+34 +-4+-4ַ"+34/3/+]+]+2/+]+]+/+3/++++<<3/+++<+</10]r#'7'77'$H1111m1111 _@6 rrr  "()4@ 4/++<<</<<9//10'7!#!'71GQ11b1Q# z@. @ 4r  r  r   ޳()4@ 4 @ 4  +++<<</<9//10+#!'7!#G11Q11C 4 4  4/3/+9/9/3?3/++310#"&54767P?MfX+V!;75Tkp7=76(G660] 4 @ 4 @  4/3/+9/9/33/?2/]3/++310#"&54767#"&54632P?MfX+V!;7C00GF11B5Tkp7=76(G660"/EE/0DBC'3̳4@ 4@4@ 4 %@ 41+(. @@4""(.$/3/3/]3/+9/9/?2/+?9/++10++#"&54654&#"'4774'&'&54632#"&54632$)@2Bn@4AS*@* =J~ KxI41HI43F>/5B,DD"*I51Lt"izBR 48BpYol3IJ24IJy3$ 4!@4@4# 4# #   @ ##&@ 44 /9/+3+3/3/9/9/9/?3/92/9/+9/+910++'6767'&54767632&'&#"60bq] t3(0>PQK1 (4%='0h0%P+(#FZ/:@ 9 %# -3 4339%%## @9 0%5)#0 4005@ )@ 4)) 44/++2/93/+2/+9/99999?2/9/9/2/+9/9910'#67654&#"6763267&'&5476324&#"6V.:GW(  ."&E?'+5&G %A"  /)C6$B % #F7B*/ //4&U&F[E  4 $/<3/<?3/3/+2/10%4764764Z,S4Z,S[/,#Q,(";/-#R+*#Fb1#$/3/?3/104764Z,S1.-#Q,(#H(' !@ 4!!' ' @  '$$ $4$4$4$/+++2/3/2/99?3/9/3/+9910'##6767&'&54632'4&#"6S2J2I5G@!M-*  K& ,}$27H83'Be8()7 ]."F#$/3/?3/10%4764Z,S0,#P+("F(@%&!&@ 4&&! &%%4 4/++3/23/299?9/3/]3/+9/999910#"&'#"&546773276773276573 #** +  &K06 $ 922 $ #8K1 2(+/FQ -  /3/?2/10#"&546324&#"326Q\C66P;6Jb<6MwZWD-# | @  4 /3/99+/3/10&'&'667U0 U#"89&Wle0"D[v_1,.%; @ 4 @ 4 /3/+9/9+??9/10#474'&'&'7":-O(J`O0D#*ZwsԸ~@Z_Qs%! @ @4@4 4@4@ 4/3/+9/9+3/++???9/9/+9CTX@4+Y10#"'#'&&'7327677!49h 8&L0BC4_jp+ nBHP/OԲCU_.TK)k#]%) 4$$ @ &A   !!'&@ 4&&  @ 4 4/+3/+9/9]33/+9/????9/9/]9/910+#"&'##4'&'73276733273_c9T"hI% (8D4I4!\UUeJ9mL]o%XKFGLD??DY ")=9<3B#W !-.LdMbDG)+$ !HBAM)0 !@@@4 4@ 44/3//2/10+++#"'&547676324'&'&#"326guyFP,2FV\vJPCe]/B,$E?|zq*0[Qbx9B7-)ZIHR&#I@G(o( 4' 4 4 @ #@4##/3/3/+993/??9/+9/9910++&'&'&54767#"'&5465732767G&A!8$0J/0&$.jOcU .$+%=[o:=  N!"7%g3WAnWH%@ 4&44 4@4@ 4   4 @    G/333/3/333?+??9/++9/CTX@ 4 4 @ 4+++Y10+++#'376)@ǣ$eb? 'YV^3=1@T4&44 4 4 4  4@   G/333/3/333?+??9/++9/CTX84j4 4+++Y10+++&'#6763$1+ *[tG[WFV]) [/@Z'*. 8 P@ 4    /9/3/9//3//3/10]+#"&54632%##"&54632L76ML77L>mDL87JK66N7NO65JHGz6LL66ON0"9 4 4 @  /3/9/9/3?33/+3/+10'6765&'&54632&;"J*E)1%)K69VUI;9!777-( $<6MP:dgs 4#@2 4 #0qe6kY 4B 4YBGN,9ak*qFU;`kGq 4qqTGkkkN@ 4\ 4 \_QahKn? 4&@ 4?&,P333FGTUn`ah;*n,ah@ 4hh9,n@/3/+999992/q99++99993/q99++?3/]3/+9992/99++999999++10#"''#"'#"&5467'#"&54767&'#"&5463267&'&546327&'&5463267632676324&#"326d,!5JJ vV%4j  ! !$"!.0$VqC!;+!+*",k3=z;E(* 3#'"D6`*<  it8K`A2k۴qF,{@# 4 4! * @4 *@ !* 4.',/3/9/39/+399?9/?+9910++7#"&'#"'&54732654'&'326Bi\AJk0,Y/_=APM(0AWP)0@'1D=+Gжxiw%47_q 3'J|+CYRgJ@J-{#y 4 4  @@4@ 4###"/3/3/39/39++??9/9/9/9910++47"&54676632&&#"3267XGQNK;v-5sK IM1}l_V{-b^hDM-.?>/YJRV_ C26<"8"Xa!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ FW:ι@ @ 4 @ @ 4 $*783./#*//$88$$*3* @ 4 /.'$#877/#$$/.4. 4.$/++3/23/299/+<3/<?9/3/2/9/99993/+3/3/+3/10476476#"&'#"&5476773276773276573[,S\,S3! #)++   &W.+%P+(#>0%P+(#L06 " 91$$ #8K1 2)-1!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %W/?10!5!WW%!!%!! @ !!%!! @ !!%!! @  $($44(4@ 44 4!#"$$%'&((@ o     A "$!##% &('%%A @*  4 */2/+2/9/9/993/993/99???93/]q993/993/9910+++++!"'&547673!54&'7'7'7''7Fr*9|oO6AM, DEJLJM"KN%CT]a#b..G8vA:p27pTVZU; µ44 @ 44 4  @ o   @ @ 4   */2/9/9/+993/993/99??3/]q993/993/9910++++%'7'7''7%!5!4'&'7JLJM"KNKNH8TVZUv>+Q[3M;!!!%!! @ !!%!! @ !!%!! @ !!%!! @ 6N u,04844.48@4) 4* 4y* 413244.57688-/.0@ 400  241335.0-//687@5@ 455 :'*/3/3/33/999]9/+993/993/99?9/99?999/+993/993/9910+]+++++"&#"676323263!3#"'&'&547676'7'7''7L@P4Z(#KB_Ep%Ӕ{F:؏XdOBFJ6F4@4J@4 4 * 4y 4GIHJJA?B@@CEF@DDD84=)%03"4-%%34=DFCEEAHJIGG@BA@?@4_????83@99""3433L))*/3/3/33/999]9/999/]+992/993/99??9/99?99999/]CTXDD]Y992/992/9910+]+++++#"&54767!3#"'&'&5476767&&#"67632326733'7'7''7{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KUJLJM"KN%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RۑTVZUyk"44"4! ""   "!@ T 4$/9/+9/9/993/993/99?<2/93/993/993/9910+++!5!&'&'&#"676323'7'7''7y%fFWHQS34/DhfEy+TN}Mb@()qzJUel/ *""sVj[Z4bZHnF)"+0s~9=XpTNT&m,!Z%E*ֳ4!4/4,40 4.@ 4;k= 4 44(4(ܳ 4(@ 4A(#A "  78@ (_((( ##8@AA 8G   4 */2/+9/9/9/]99?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3ow%9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk%m@4 4;k 44ܳ 4@ 4   @@o/_  */3/9/]]]99?TN}Mb@()qzJ%j[Z4bZHnF)"+0s~%d6ܹ/ֳ 4& 4441 45 43@ 4T+T2D+D2; k $ 4 4-4-ܳ 4-@ 4-"-(A ' "@ ---((8*/9/9/9/]99?<TN}Mb@()XG=5!e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%Z%,7@04/ 46 4@4 4;k 4*43 2 -... 4ܳ 4@ 4, A   %$ ,@ . 22@( A 9% $ 4$$( */2/+3/9/993/<?TN}Mb@()qzJUel/ *""sVJظ] j[Z4bZHnF)"+0s~9=XpTNT&m,!OYN?j$~FOZ%EP3@I4H 4O 4*ֳ4!4/4,40 4.@ 4;k= 4 44L#K"FGGG"(4(ܳ 4(@ 4A(#A "  78@ G#KK@ (_((( ##8@AA 8R   4 */2/+9/9/9/]993/<?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3owظ] %9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk˩OYN?j$~FO%m(@! 4' 4@4 4;k 4$#4ܳ 4@ 4  @ ##  @@o/_  **/3/9/]]]993/<?TN}Mb@()qzJaظ] %j[Z4bZHnF)"+0s~/OYN?j$~FO%d6A:A@4? 49 4@ 4/ֳ 4& 4441 45 43@# 4T+T2D+D2; k $ 4 4=(<'788'-4-ܳ 4-@ 4-"-(A ' @ 8(<<""@ ---((C*/9/9/9/]993/<?<TN}Mb@()XG=5!:ظ] e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%COYN?j$~FO2;&@4)44*4 4!' A 9' 4 03 @ ,$,@=! 4 $ 9/2/+3/3/99/??+??9910+++&&#"332!"'&54767673276654&##"&54767632 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TePj6 @ 455@ 4,," 45& / @8  4 9/2/+9/9/??+9/9/+3/910+#"32!"'&54767327654&#&&#"&54767633])0Q0{@b(&%9zՏm#s?6I?3:??4HH44:C%%:,@ TKQKKQ @ QQ(?>743!HGG?/344?>4> 4>$/++3/23/2993/2/3/2/999?9/3/2/9/99993/+3/9/3/+99910"'&'#"&'6767&'&54632#"&'#"&547677327677327657'4&#"66#'#9<8L0: G-/   3! #**+   &Q#1  1& "!+U)# K06 " 82$$ #8K2 2)-1( F)1@&'"''"@ @4 @ 4 0*,,0.@**.@%(4.'&&4 4$/++3/23/299/+3/?3/3/++9/3/2/9/999910#"&'#"&5476773276773276574763 #**+  &3Z,S}K/5 " 82# $ !7J1 2),1/-$P+(#!!%!! @ !!%!! @ ///10#!$HbGQ$///105!#QHG !@   /<//<10###!!!HrG !@   ///10!!5!###rHGS@ ////<]10###!H @@  @4   /9=/<<//<+9=/<<<10#'77'$Hb ׶yyx #@    ///103#5!3###HGG)@     ///103#5!#3###HGGG !@   ///<10!!!##HFHS///<10#!$H,l@ /9=///<10##$HSW$'@ /<<//9/9/10##$HHH'88W' @   ///1053#5!#3WGBGGGW'///10#Hnw W$'@ ///10]#'$H'0W'///103!$'wGJ!'@/) !)i.@%) .0@>")> > i@)!?O>>>8H(y+?N]M]<]<M]<]<9999999910]'76327'#"''7&5432654&#"ՋsjitGGtijsGkklkwHHwn}~nwIIwn~}}llk #.48DHLRY`h@wz&S%c%#%3%C%Y=i=)=9=I=YAiA)A9AIAV;f;&;6;F;VCfC&C6CFCfhbdV`f`Y[i[**c*****u***3*C*S*cBB(-Wo]?]O]_]]]'VP(/(?(O((/ OGG23/3g<^P''O'_'' '0'@''R F"OM7K R6JMap999@9P9`999'W0^^'''_'o'@f''''$U-e-%-5-E--S++_oZP$$o!6 5## ! #j0eeo??????O??IJN/MMN1EQ2FN/]/]qr]q]]]q3]]]qr]]]/<<<<]]q]/<<<<]]q9/qq910]]q]]qq]]]]]]]]]]]]]]q]]#5#5!!5!#3#"'73253!5!!5353!#32##!!5!#"&54632#3!5!!334##324##32%#"32dCC?ddV4I(_tC~dYwdC~CddCdYeo|~ddd~C-Od?d ĺ[6.C?d{C~ddCcm !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ S0HH 44 4 /3/</3?310+++&'&'&4767670,h3g9JJ:f5d.l8<"8-}N౞Sy*K]SHW|@!!%!! @ % /|O@#%-.)$%!%%...@ 4!)!@c~9W=@C~~IIPPwccWCk55W==C%$ .--%$@%%c9Zg_@ccwPgg0TFI~}@TLPPT4T@ 4TTF5n0s ww00F/3/3/999/++3/99/9/9/993/2/23/293/2/?<<9/2/<9/9/9/9993/9/3/+2/]9/99993/3/9910&'&'632#"&'#"&5467732677327677"'&'#"&'#"&5467&&547673267&'&547673267&'&54767'3263 6 %%5)%  !** / & " wL=.(80?A{(p5p   C9.3'; $ 'B#:$X.4#72<Q=5-*$9 *jHk 6-- 0#U(()&%2&#;DL<;M!TL4"*"&RR{j70< '#*"%3wrI&.-'* )"+%"To #8 !y3 +@@?4  ?4 @ @ 4'$' @  $''/9/39/2/33//3/??93/+3/9/+99/+910#"'&#"'67632327'6654'&'667)02-c   & d2!54F2!31v ! $  PK(W L hu{,f-rt"%-@+-@?4--'+#"?4""'+@ 4   @--""## @ 4 /2/9/2/+3/33//3/??3/+3/9/+99/+910#"'&&'.'&'733#"'&#"'67632327D)$%  '{' "!b)02-c   & d2!54%70q{'0$xh|2* ! $  V n 44 4%$-0@ *4004$@  -00(%$$ (;/9/39/9/2/3/9/99??2/3+/9993}/+910++47&'&547632&#"326'6654'&'667n*d5;- $+]!2!31f @.#8> 4PK(W L hu{,f-rtV% 6 4,-@ *4--46!@  @ -,@ 4,,--&11 8;2/9/2/+9/2/3/9/99??2/3+/9993}/+10+47&'&547632&#"326#"'&&'.'&'733n*d5;- $+]!̌D)$%  '{' "!f @.#8> 470q{'0$xh|2*xcq *J͹-@ 4@ 4@ 4@ 4@+B2H0:@BBH@4HH0@ 400  %%!  @ @2==E++E006EE(( !L 4 ;/+39/2/2/3/9/99?2/?2/93/+3/+3/99910++++#"'&'&'73276767"'&547632&'&#"47&'&547632&#"326zBF3RAA8{1zmUU+OCL08VW&?')XM*d5;- $+]!a # >1]/j+1pgXfeO`% %13 @.#8> 4xcq-@R4@ 4@ @44  4%$-0 /$$@  (-00(%$$ (;/9/39/3/3/2/9/99?]?93/+]+3/+3/99910+47&'&547632&#"326'6654'&'667E*d5;- $+]!+2!317 @.#8> 4gPK(W L hu{,f-rtY@6@ 4,.4&@ ..4@444 4   @ ,))11"@1@ 41@ 411 @ 4 8;2/9/2/+2/++2/3/9/99??3/+]3/+3/99910+#"'&&'.'&'73347&'&547632&#"326D)$%  '{' "!*d5;- $+]!%70q{'0$xh|2* @.#8> 42q;[> 4&@4)44*4 4Q1Cs}TePk @.#8> 4j6V9 4 @ 4L7N>TIIQ77Q< 4%:Y ,@ 44 4" $*@ $$*@4**@ "' '''.;/2/9/9/2/3/9/99??3/3/+3/99910++!5!4'&'747&'&547632&#"326:KNHl*d5;- $+]!%v>+Q[3M @.#8> 4%:Y R3   /9/39/??910'6654'&'667R2!31$PK(W L hu{,f-rtY%<   @ @ 4 2/9/2/+??10#"'&&'.'&'733D)$%  '{' "!%70q{'0$xh|2* @ 44 4   A  A @"  4 */2/+2/9/9/99???93/9910++!"'&547673!54&'7'7Fr*9|oO6AM, DNJ%CT]a#b..G8vA:p27pT: ]4 4  */2/9/9/99??3/9910+!5!4'&'7'7:KNHfNJ%v>+Q[3MT: , '@ 4%% @ "")"(/3/9/9993/993/99?2/99+3/]993/9910'7'7#"'&54767'74'&'326NKALJ.GI07# !=#xWn/6- 908ːVTGn!=F\NO_T&?1 '#39?=%F%&/ @@ 4'+( . ((.ﵐ& @ @+#('  +1+/9/]999/993/99?2/]2/2/9993/+993/9910]'7'7#"'&'#"&5467&&5476733'32INKALJH7)\3s  !Wd"81<АVT[{\8>VND"*"$>t>DhmC7 %$@ 44 4@ @ 4 A    A @&  4 */2/+2/9/9/993/99???93/+993/9910++'7'7!"'&547673!54&'7%NKALJ`Fr*9|oO6AM, DVTzCT]a#b..G8vA:p27p%%:V{4 4     */2/9/9/993/99??3/]993/9910+'7'7!5!4'&'7NKALJKNHVT*v>+Q[3M%:V% (@ 444@ 4"4 4  @ @ 4 $A #$  $$##A @ *  4*/2/+2/9/9/993/993/99???93/+993/993/9910+++++'7'7'7!"'&547673!54&'7`MJhNKALJ`Fr*9|oO6AM, DcVVTzCT]a#b..G8vA:p27p%%:  @ 44@ 44 4         */2/9/9/993/993/99??3/]993/993/9910++++'7'7'7!5!4'&'74MJhNKALJKNHVVT*v>+Q[3M%: 6N u0@- 4* 4y. 4@ 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?999/+9910+]++'7"&#"676323263!3#"'&'&547676UM}L@P4Z(#KB_Ep%Ӕ{F:؏XdOB@ 4 * 4y 4A?@B@ 4BB84=)%03"4-%%34=@BA??83@99""3433D))*/3/3/33/999]9/999/99??9/99?99999/+9910+]++#"&54767!3#"'&'&5476767&&#"67632326733'7{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KDMM%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RUyk\  @ T 4/9/+9/9/99?<2/93/9910!5!&'&'&#"676323'7y%fFWHQS34/DhfEy+<KN%O,7J-Ad2m yTyk6N u,u@) 4* 4y* 4  @ .'*/3/3/33/999]?9/99?9910+]++"&#"676323263!3#"'&'&547676L@P4Z(#KB_Ep%Ӕ{F:؏XdO@ 4 * 4y@ 484=)%03"4-%%34=83@99""3433@))*/3/3/33/999]9/99??9/99?999910+]++#"&54767!3#"'&'&5476767&&#"67632326733{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2K%Zh':$4%DVll^ (0jyǫdSZ b&T%  8R%yk<  @ T 4/9/+9/?<2/910!5!&'&'&#"676323y%fFWHQS34/DhfEy+<%O,7J-Ad2m %yk6N 0@- 4* 4y. 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?993/9910+]++'7"&#"676323263!3#"'&'&547676MKL@P4Z(#KB_Ep%Ӕ{F:؏XdOH:%B-&>%)m-U%j%mf @     */39/9/9/99?2/9/3/9910]'7!"&546733!4'&'7NI@9[  *2>H:VB-&>%)m-U%F/pr@ * 4* 4 4 4@ 44 4  :  /32/9/??910++++++#"'&'&'73276654'&'7/^RztKEP=UHGB:~.%C9R',%nvhKH ( RK\OWFJLLVjF/pF/"@ * 4* 4 4 4@ 44 4 : $/32/9/3/99??93/9910++++++'7#"'&'&'73276654'&'7MK9^RztKEP=UHGB:~.%C9R',ȑTnvhKH ( RK\OWFJLLVjF/lWF@ 4@4! 4&4 4AAB:45,BB(55'( :, A145@ 455A ((''''#, @ 4 ABB?AAA=A @H  4*/]2/+2/]9/9/+<2/]9/9/+99??<?9?9/9/99/10++++#"&'###"'&546767327654'&'7327654&'732654'&'7O<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ %!$& \WqBSFMVY6pE|CSdZGAR?Y4;# 7m>-Dq%5l Ro@ 44@ 4L 4*@4- 424 4  @ 4MMNF@A8NN4AA34 %+$F 8+ IM=@A@ 4AAM443333/8@ 4M(NN?MMMIA @ T% $ 4$$(*/]2/+2/]9/9/+<2/]9/9/+999/993/993/99??<?9?9/9/99/3/993/993/9910+++++++'7'7'7#"&'###"'&546767327654'&'7327654&'732654'&'7MJhNKALJO<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ cVVTz!$& \WqBSFMVY6pE|CSdZGAR?Y4;#6'256 466B#&'@ 4''BCCB@ 4BB> I/2/+9/9/+99/+9999/993/993/99?<<?9/9/9/99993/993/993/9910++++'7'7'7#"&'##"'&'##5327654&'73327654&'732654'&'7gMJhNKALJM@\&/#3YA44"20PZQ#:) &.@CK$(*'":!)*A)cVVTz# %  $E:$<\*I%-9:"<^o+&!8> 7m>-Dq%l W1>@44 44 45-- <";2""2A @@  4 */2/+9/3/2/9/9??<?9?9/10+++!!"'&546767327654'&'73276767676324&#"!26 \rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`r%hFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'l W% >%0[ !))-  -& &2 /9/999?<2/9/9910!"'&'##5327654&'73276767676324&#"!26 N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmd%$E;#l 5B̹@44 4 4 4"911!" @& @ ?6""!!&&6A @D  4 */2/+9/3/2/9/99/99??<?9?9/3/9910+++'7!!"'&546767327654'&'73276767676324&#"!26uLJ>\rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`rdTlhFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'l % )4z@ %  %--1 1 * *6 /9/9999/99?<2/9/993/9910'7!"'&'##5327654&'73276767676324&#"!26LJ N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmddTl$E;#9/I  #- 1jC=ibI_NXAE%5,e/k^B_9/I  #- 1jC=ibI_NXAEȑT5,e/k^B_E&#8gM3I;P-8xYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G % n4/  @4 4  /3/3/33/9+99?9/]?]9/910+##53&&54632&&#"66 Es$ś{P"QEn;cN]7K/w8v<b=21y//%mX(j@ $(4(  @$$$P  * /3/2/]9/9/9?<2/+9/9/99910#"'&'##532767'&#"#54763233mACP$CViZZTHRO* (:5qG]%H[%%BE&#8gM3I;P-8xȑTѠYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G % !4@ /   @ 4 4 # /3/3/33/9+999/99?9/]?]9/93/]9910+'7##53&&54632&&#"66eKLFEs$ś{P"QEn;cNȑT@7K/w8v<b=21y//%m,@ ( ,  4 ,@$ (((P$$$$./3/2/]9/9/99/99?<2/+9/9/9993/9910'7#"'&'##532767'&#"#54763233LKACP$CViZZTHRO* (:5qG]%H[ȑT%BFUc,%h/"!)XHNYwQ(W[%~ *0G]jwubW/8)%1m%s%j%t@  # # @  4  !! '/9/99+9/99?2/2/993/9910'7!5!4'#"'&547632&'&#"326MJ)4.#I.528ZzB7*&#X4yVVYN %*Oht$%2-P%`!j@  4    #/9/99/99?2/93/2/9910+]'7!5!267&'&547632'&'&#" XSW>W33s7>Yf5*Z):(OK`~ 2xi]igP'K,L gw5BѳT  4@ 4!@ 41::)@@ @ 6 4&6#-==#A @D  4*/]2/+9/99+9/993/99??99/3/2/993/9910+++]'7'7!"'&54767327654&'#"'&547632'&'&#"326xNKALJz&#A* nfՠ &M'X7C:AYuD: *0-:%-"VTh]PWvxxF6J5C?>9FQ3-(0aqgt>).#$gw%j)@@ 4" '""'  @  4   %%  + /9/99+9/993/99?2/2/993/+993/9910'7'7!5!4'#"'&547632&'&#"326JNKALJ4.#I.528ZzB7*&#X4VTYN %*Oht$%2-P%`%@  4  " ""  ' /9/99/993/99?2/93/2/993/9910+]'7'7!5!267&'&547632'&'&#"5U}ViO{SW>W33s7>Yf5*Z):(ORQ 2xi]igP'K,L s%3(I.84 @ /H# /&&&H@ @ 4 2:=>353%'IB@&>2SSQ!@ ('K-J.&D!OiN%mI#v@  4 4! 4   #    4 % /9/+99/9?<9/2/10+++#"'&'##5327676767'&'&'mhCTaJ:yt[G7-=YPCE)7s &0!$:%#=G7.$AXA:iTrG:8/2 !2'>%mIl{v$ 4@4 4 4 A ! @ 4!! A @&  4 */2/+2/9/9/+99??9?3/9910++++'7!"'&546767327654'&'7KHjt*$6(F-0S5($ViqFMVY6pE|CSfXN:Ql{v%:[ 4 4   */2/9/9/99??3/9910+'7!5!4'&'7LJKNH‘Tv>+Q[3M%:6 q=%F'n@ # & &@  #)# /9/]99?2/2/2/99910]#"'&'#"&5467&&5476733'32FH7)\3s  !Wd"81<%{\8>VND"*"$>t>DhmC7 Zp(5C@: 4:-=2-#4##--2 A @=:2)# 40##)00 )@ :@ 4:: 6E /3/9/+9/9/9+99999??9/2/3/+9/999+10#"'&'##53267&'&54677667&54767%4'&#"6764'&'326Z$'')pgGt5C[ZZ)LA c!E,@a{G^..Pz+8#3)%<=2 :GM40.B #/S7=ts+=+)C#J/51Umo)4&"."" 22@ *. &. &. * **6/9/9/9/3/999?<3/3/9910!#"'&57#536767632!%4#"6764'&'326m@-9@xdx#*5:C;/.(+<5[>H(t_\5@#%7EQN/;SdH]Pe@Jl=X7!C_^-i&,OI<nGVxc *u@ 4@ 4@ 4  %%!  (( !, 4 /+39/?2/?2/910+++#"'&'&'73276767"'&547632&'&#"zBF3RAA8{1zmUU+OCL08VW&?')Xa # >1]/j+1pgXfeO`% %13xc25j62V;?Cչ&@4)44*4 4<>?==@BCA!' A 9' 4 0=?<>>ACB@@$3 @ ,$,@E! 4 $ 9/2/+3/3/99/9/993/99??+??99?993/9910+++&&#"332!"'&54767673276654&##"&54767632'7'7 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TePߐVTjN6:>33 @ 4:44 4,./4,,"@ >79::88;=>>< 4<58:799<>=0;;;/& / @@  4 9/2/+9/9/9/]993/99?2/9?+]993/]993/]9/+9/+10]+++q#"32!"'&54767327654&#&&#"&54767633'7'7])0Q0{@b(&%9zՏm#s?6I+Q[3MDVTr:@DNe0@TVJOce@?4ee_c[WZ?4ZZS_WWc@'SS.<;K.7 4H7#K##@ 4##.KK?.@K@eeOZOZ[[#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 g@**/]3/++9/9/+2/3/93/3/9999993/33//3/???9/9/+]99+99993/3/9/+99/+910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'276#"'&#"'676323270;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U)02-c   & d2!54F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  ! $  @ >UH44ֳ4)ֳ 4(@ 4[+"@% 4+* 4*J 4)T 4(@ 4?SU@?4UUOSKGJ?4JJCOGGS@CC @ 4  0@ 4>03'&&>@ UU?J??JKK  4@ 4 7- 0033-77W&&/3/2/3/]99/+]+3992/33//3/?3/??9/+9/9/+92/3/9/+99/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'76733#"'&#"'67632327'8nzF:I,;)HtT3=`KY n!$)02-c   & d2!540}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ ! $  & DNn@Q@, 4TVJ<;K.7 4H7#K##@ 4##.K?K. 4..T?OdfVlTT4Tllf^@ 4^K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99??+2/3+/999?3/+9/9/+]99+999910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U4*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  @.#8> 40  >^RA 4)ֳ 4(@ 4[+"@/ 4+* 4*J 4)T 4(@ 4  @ 4 @ 4> >03'&&>4@ 4DT?VF\DD4D\\VN@ 4N@ TFQQY??YDDJYY  4@ 4 7- 0033-77`&&;/3/2/3/]99/+]+3992/2/3/9/99?+2/3+/9993/++?3/?9/9/+9/+]910+++++]]+++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"326'8nzF:I,;)HtT3=`KY n!$=*d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDNn@Q@ 4TVJdOfVlT^@ffl@4ll@TTT@* 4TT<;K.7 4H7#K##@ 4##.KK?.K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99???9/9/+]99+99993/+]3/+3/99910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ P @.#8> 4A >^_A 444ֳ4)ֳ 4(@ 4[+"@ 4+* 4*J 4)T 4(@ 4T?VF\DN@ VV\@4\\D4D@ 4DD& @ 4  0@ 4>03'&&>@ TFQQY??YDDJYY-&  4@ 4 7- 0033-77`&&;/3/2/3/]99/+]+3999/2/3/9/99?3/??9/+9/9/+93/++3/+3/99910+++++]++++++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"326'8nzF:I,;)HtT3=`KY n!$*d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDN@)TVJ<;K.7 4H7#K##@ 4##.KK?.@K@ #*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 P@**/]3/++9/9/+2/3/93/3/999999???9/9/+]99+999910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'2760;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2UF[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ A >44ֳ4)ֳ 4(@ 4[+"@- 4+* 4*J 4)T 4(@ 4 @ 4  0@ 4>03'&&>  4@ 4 7- 0033-77@&&/3/2/3/]99/+]+399?3/??9/+9/9/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'76733'8nzF:I,;)HtT3=`KY n!$0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$!!%!! @ !!%!! @ Fb1F=!!%!! @ !!%!! @ !!%!! @ FQ F!!%!! @ !!%!! @ HFZ!!%!! @ !!%!! @ !!%!! @ FIFWFKF=H@.J0wG!!%!! @ FF[!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ >@ 4 /3/9/?2/+?10#4'&'&54632#"&54632+9 %F79IH42HH42HCv~:~-=]\72HH23JJ"  /?10#"&54632O76LM58N6ON76ONW *  /3/?2/10#"&54632#"&54632N85LJ78NO75LK68N8NN87NN6ON76ON!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %F/?10!5!FF%%F/?10!5!FF%%:/?10!5!::%c, 4'@4' 4 4 4 4@F 4(  % (,,&U# U U U U8U&U U޴ U U U UҴU@ 4&! U !!c-]+/]++++++++3/++++++9/99???9/910+++++++3276'&#"%53#"$576!2676'+u߃&4Ŀ;_I[%rIѥ|B[Lly[h18-VD@,@Y' 4 4 4@4 4)  % (,,& U0U U$@U U UUӴUִ U@0 U $@$%4! U! U! U! U!U!@U! U! U! U!?!!1-]++++++++++/]+++++++3/+++9/99???9/910++++]327654'&#"%53#"'&763266'YTSYZTSYB&1v䅉ۋiD;lffmʿkfelѥ|BVHA'vm*ZU%%4 4 @ 4&!@6 %% U& UD U U UDUDU& U@ U U@ U U UӴU@U& UU U U U UUU4]&+++++++++/++++++++<3/+++++++9/????9/910]++53# &53327636765$c24gs8$"}V[œFѥ> ~PRO]YcafNl*v&$ 4@S4 4    $$& U U- U U U 3%,UU@ U U@ U U U޷U%U@U U U U UU@364 N%]q++++++++/++++++++<3/+++++9//????9/9910+++53#5#"&&'&533266536765\$\|]P #S:?Uѥ>GnO6r/T9a*vE+, 4S@`/]}?10+#'3/+, 4S@`/]}?10+#'3 #S 4@ 4//@ 4S@`p/]]/+]qr+10+#3 T+A44 4SO`/]+}?10++3#+@+84 4SO`/]+}?10+3#^+s #T4@ 4//@ 4SO`/]/+]qr+10+]3##),@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*Ce2p m,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7,@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*K]2pgm,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7I;0_ 4 @7 4 4  EE   @ 4?  v v@o/]3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|+ٳK @ 4 4@@ @^5 @OS4 @CE4 @+-4o    @a  / O _  _ o   @5 @jl4 @a5 @\]4 @WY4 @MQ4 @DI4 @:5 @144 @.B4 @',4 @%4 4  /3/}/+++++++++++++]qr3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,Lr s 4 @ 4 4  E@4!&4E / ? /  @ 4 @6>4?  v v@o/]3//]++qr3/]9/+]2/10+++&6323273#"'&#"sq[>k;#= ?gCN f~6W8$_f= 44 @#(4 /3/?q+10++&'3327673#"'&N;@AC@;OIMp#v#%H$&9O9@4 4/++9?r910#73#ЯC{{(@k;#= ?gCNIf~6W8$_I0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_IM0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_ri@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"s:9Y>k;# "mT?gC"h>>6#4rr8$/Hi@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/ji@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"k:9Y>k;# "mT?gC"h>>6#4rr8$/}}J}{}}e} b#S 4@ 4//@ 4S@`p/]]/+]qr+10+#3  #T4@ 4//@ 4SO`/]/+]qr+10+]3##`i@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/}_,}]vC}t}}l9}jX%}V]}},}*|+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]46323273#"'&#"p[>k;D= a?gC@Q|R[,F,LI0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|4+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,LI40k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_<&@@Op  % U U U@ U U U@ U /]+++++++??10]rq33&Y&$}4 5<44A+++5J>&D}@ 99:/7A+]5Y,&$t@ ##"A+]5J &D4:LUL@ULpLLPL`LLLLLLʱH++]qr++5Y+&$'|q0@*4H+A@(4/+5+5++]q5J#&D'KZ_BB@=4B;H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5++]5Y+&$'|n'@H+A@(4/+5+5+]q5J#&D'-Y@E?@&34?@4?<H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+++5Y,&$'|u1)@4)))(AA@(4/+5+5+]q+5J,&D'tHb@ SOSSS@>4SR;/>>_>>@ 4>/+]qr5++]qr5++]q5Y+&$'|<0@"@ 4@4 AA@(4/+5+5+]++5J&D'ztT@A?O??I:=A: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+]5Yh&$'|}455<44@AA@ (4/+5+5+++5J&D'}C@0@@A/7A: :0:p::::::::@.24:=A>")+++]qr5+]5Y+&$'{q4#AB4#@95##H+A @-4 /+5+5+q++5J#&D'H7@ `HpHH[HH@4HCH+<<h+<")++]5++]q5Y+&$'{n\ @-4 /+5CTX@T##AA+5+5@#@894#@)14#@ 4@#o####@ H+A+5+q+++5YJ#&D'\*IPIIC@H+<<h+<")++]5+]5Y,&$'{u;@ 6666*246@!(465AA @-4 /+5+5+++r5J,&D't\B@0PZ`ZZZZZ0ZpZZZZZZZYA<<h+<")++]5+]qr5Y+&$'{P,@###/##-AA @-4 /+5+5+]q5J&D'z+F@ 4FP?9A<<h+<")++]5++5Yf&$'{}45$5<4$4@$%AA @ -4 /+5+5+++5J&D'}&@GGH/7A<<h+<")++]5+]5&(}\@    A+]5K>&H}P`ش A+]5,&(t A+5K &H*@2222221 A+]q5&(|j@  A !)++5K&H@ * A)++5+&('|q0@*4H+A@(4/+5+5++]q5K#&H'LK_((@/4(!H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|n4@%@:5H+A@(4/+5+5+]qr+5K#&H'.Q@=%@U%@&34%@4%"H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++++5,&('|u1&@ 4&&&%AA@(4/+5+5+]q+5K,&H'tHQ@ O9999@0498!"A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|P$@AA@(4/+5+5+q5K&H'ztE@3%O%%/ #A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5+]5h&('|}\$@  AA@ (4/+5+5+]5K&H'}9P&`&@&'A @;5 @-24  # A$")++r++5+]5c,&,t:@ UA++5 &CTXA+O"H++qY5&,} A+5|I&L}z@ @mo4O  A+q+5c&2}  A+5D'>&R}  A+5c,&2t8@p00000/A+]q5D' &R*@....-A+]q5c+&2'|qn0&&&@*4&H+!A@(4/+5+5++]q5D'#&R'MD_$$@)4$H+@.24A/_@ 4/+]qr5+r+5++]5c+&2'|n@4@%#@:5###### H+!A@(4/+5+5+]qr+5D'#&R'/C@1!@&34!@4!H+@.24A/_@ 4/+]qr5+r+5+++5c,&2'|u`16@ 46665!A!A@(4/+5+5+]q+5D',&R'tHL@ O55555@*454A@.24A/_@ 4/+]qr5+r+5++]5c+&2'| @#-!A!A@(4/+5+5+5D'&R'zt>@-!O!!+A@.24A/_@ 4/+]qr5+r+5+]5ch&2'|} @$% A!A@ (4/+5+5+5D'&R'})@"# A@.24A ")++r+5+5c,&jj@0o000%H+-!)++]q5D&k!@0O0_000%1H+-")++]q5c,&jCj @ ...%H+-!)++]q5D&kC!@_.o. .0..%H+-")++]q5cE&jt8@PAAAAAA@%%A+]q5D &k*@AAAAA@%%A+]q5c&jQ@ -9%%A-!)++5D&k@ -9%%A-")++5c&j}@ ../A+q5D@&k} ./A+5"&8}p@ OA+q5&&X}@P`p A+]5",&8t@ % A+]5 &X2@P------P-`-p-----@ 4-, A++]q5,&lj)'@95p'/'_'''H+&!)++]r+5&m@O(((E4@.34@$)4/@4@4@ 4/+]+]+q+++++]<++</<<10!5!#53#53u4 4@% 4@ 4?@ 4 @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</+]+++9910#7#53#53炇燇44  0444@#%4@ 4 @144 d4 @#%4@ 4@4@ 4? @ 4 @#%4@4@+,4 @: 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r++++<+9+<++</+]++++++++99++910#53'#'37#53QȮؓɱbb4 @ @ 4 @ 4@ 4? @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</]+++9910#53'#'3#53`ؓU Z@  UU U@ U]  ??9/++++9/10!!!##53!Uo¤ e & b@ % U@U U UN +@ U+  ??9/+++++9/10!3###53!Q||ci[F@_817$G$E )9$&& ) )   EDEEDBDE1// ?=??=?=+6 E+ U U U @3U &/1$,76*?= *DF,B) *EF ??9/99999999/++++99+}99+}99+}99+}10]]]]]##&'&##"7#67&'&'&&56323276767632"&#"3[E].Z|`IBj .d:$6?\WN e])>M$DǖF%L>']_ 3 g9 36#:dki.ZR2-n')T3R<(M~O*;G&3S+'P&B1@;#h$&& U& U&%) U%)  0//@U/%;9;;9;9,5%BA@ U%A?A??>,A, % U @ U  U @; U U 9;5+0$&/,4*+*?A,>)+ * BA+ ??9/999999/+++++99++}99++}99++}99+++}10]]##&'&##"#67&'&'&&#"532332767633'&3P"0"5IJ4 1ovZ-808 (j)9.)91cd0q%:vB1L '%&NuomI-IQ 10SI)L3 K bB5A'=)c_$2$i'@%@/ U U &$&&$g$&$#'  7   '@ U')  U U U U U U @#U ](   $&#  & ??9/9999999++++++++99]+}9]+++}10]]]]##&'&##3276767632"&#"3E\,ZwF%J>']p 4 g9 37"9eki.\R~R+;G'1S)'v&&@ U%%#%%#F#"#%&@U% %&@ U &&( % U @U  U  U U U U @. U U  N'+  #%" + %+ ??9/9999999]+++++++++]+99++}9]++}10##&'&##327676767633'&3v/#5Id0:(,:+_$2K '%&Muom>-IQ 1&5A` I( d^%2$+$&&$&@8 U& IYi$$* U **) U@U U - U U U U U U @1U  ],&$ ! *)       ??99//99/999999]+++++++]9/+++29++}99]]++}]10!#&'#&##3273676767632"&#":/x3EG1x&/76NHYp 4 g9 37"9e_<R~An*X,(G'1S)'&(4i#!#@J U#%!!!!!'U%''& U * % U @U  U  U U U @; U U 0  N)#! + '&  +     ??99//99/999999]++++++++rr9/+29++}99]]r++}ıCTX@ -"=2]Y10]!#&'#&##3273676767633'&c#+-!c(,:+_$2K ')")6jpI7&5 D+9` I( dh(0i@   U UU@ U U@ U U   UU U U U@U]  ??9/+++++++++++++10##!#3!33†iMZW&@, %%@ U U U U U UU@ UU@ U U" UߴU U@ U %UU@U U U@ U U N + +??9/]++++++++++++++++++++++10##!#3!33W t-)&Fnm U @: U U    U U o UU@ U U U@U  &6??9/]9/++++++]+++}ć+}+++10#367m$ "09rHUE9ji& ֹ @ U U U @=U U  U %  U U%%UU@U U U U@U  $4Dt /?]?9/+++++++݇+++}ć++}+++++10#367nm.1&i&wmgmѹ U@HU U U    U  U    UU@ U UU@ U   ??9/9/++++++39Ƈ+++}9+++}9++10!!#!5!367mkUdaUj"099_UE9ji&@& F v &Fv@ U U U@GU U U U%  U U %  % U U @U U U @ U   + /??9/++++++Ƈ+++}ć++}++++++10]]!!#!5!367nBCm.1&ڄ&wmg iI@ UiDtI   U U@ U  UCTX  @ 4 4    ?Vw=I^M&@&F&FX&F @ U( U @( U  U U    @ U %%@ U U U0@ U%_o  U @ U   + /??9/]++333]]++}]]+++++}+++++10]]]]###367733I* #.$g-](@74A bW8@dEU6@ U U@ UUU@ U U@ U U U@ U UU U@- U U  UU U U U@U U U@! U]    ??99//3332229/]+++++++++++++++++++9/++++++10]]]!###"'&'&53733673¢xt,(±y xO< >FyocG>E&@te U U U U@ UU%@U U U U U@ UUU %@UU U@: U U UUUO_+ ??99//333229/]++++++++]]++++++++9/++++++10]]!##5#"'&'&533673ndcY^d$! ?,;cW{" 7;bYkt+T/! )@g[J U U Uд U U UU@U U U U U U U @U ]   ??9/32+++++++++++++++10]]]!#4'&#"#3$328Gċs,'\s[7a>Ezm&@ zh%U@ U UUU U@ U 0 % @ U  U U U @ U  U  N +  ??9/32]++++++]+++++++10]]]!#54'&'&#"#3632A:Zfo\c%!x(S0+6&T46:dYkc!@5 m \  J bUDw9Ivj   &U U U U@& U\#&& c"/   ??99//]3]+++++10]]]]]]]]]]]]]]]! '&5!&'&# '67632!32u u|S8ȟRGL T^~2pkbcU(> @-8HUey\lJ ( 8 l[cU $U U UU@G U"$$ U  U  U ? O  4!+    ??99//]3]]++++++++210]]]]]]]]]]]#"'&547!&'&#"'!2!3276({w LVN]v 8VSO `mWChXT`#@8Y""VuTFVy\IYx Y&@ UU U U U@/ U\%&  U  c$@U@ U   ??9/++]+++++++10]]]]]]]]]]]]]]]]!"'&'&576! &'&#"!3276ڹϧOJMEuאvwۆ~gjTۃxϋD'>!@D\ l ScdU7G[kH9iXf fUZj$#@ U#@ U@U U U U UU@/ U7#$U U U U U U@,UU U?O4"+  ??9/]]++++++++++++++++++10]]]]]]]]]]]]]]#"'&57632&'&#"!3276'u{놀BYYBjITSH"A'vJeeJano`'(  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !.nullnonmarkingreturnmu1pi1OhmEurodmacron overscoremiddotAbreveabreveAogonekaogonekDcarondcaronDslashEogonekeogonekEcaronecaronLacutelacuteLcaronlcaronLdotldotNacutenacuteNcaronncaron Odblacute odblacuteRacuteracuteRcaronrcaronSacutesacuteTcedillatcedillaTcarontcaronUringuring Udblacute udblacuteZacutezacuteZdotzdotGammaThetaPhialphadeltaepsilonsigmatauphi underscoredbl exclamdbl nsuperiorpeseta arrowleftarrowup arrowright arrowdown arrowboth arrowupdn arrowupdnbse orthogonal intersection equivalencehouse revlogicalnot integraltp integralbtSF100000SF110000SF010000SF030000SF020000SF040000SF080000SF090000SF060000SF070000SF050000SF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000upblockdnblockblocklfblockrtblockltshadeshadedkshade filledbox filledrecttriaguptriagrttriagdntriaglfcircle invbullet invcircle smileface invsmilefacesunfemalemalespadeclubheartdiamond musicalnotemusicalnotedblIJij napostropheminutesecond afii61248 afii61289H22073H18543H18551H18533 openbulletAmacronamacron Ccircumflex ccircumflexCdotcdotEmacronemacronEbreveebreveEdotedot Gcircumflex gcircumflexGdotgdotGcedillagcedilla Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonek Jcircumflex jcircumflexKcedillakcedilla kgreenlandicLcedillalcedillaNcedillancedillaEngengOmacronomacronObreveobreveRcedillarcedilla Scircumflex scircumflexTbartbarUtildeutildeUmacronumacronUbreveubreveUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexlongs Aringacute aringacuteAEacuteaeacute Oslashacute oslashacute anoteleiaWgravewgraveWacutewacute Wdieresis wdieresisYgraveygrave quotereversed radicalex afii08941 estimated oneeighth threeeighths fiveeighths seveneighths commaaccentundercommaaccenttonos dieresistonos Alphatonos EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaDeltaEpsilonZetaEtaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosbetagammazetaetathetaiotakappalambdanuxiomicronrhosigma1upsilonchipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonos afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061 afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109 afii10110 afii10193 afii10050 afii10098 afii00208 afii61352sheva hatafsegol hatafpatah hatafqamatshiriqtseresegolpatahqamatsholamqubutsdageshmetegmaqafrafepaseqshindotsindotsofpasuqalefbetgimeldalethevavzayinhettetyodfinalkafkaflamedfinalmemmemfinalnunnunsamekhayinfinalpepe finaltsaditsadiqofreshshintav doublevavvavyod doubleyodgeresh gershayim newsheqelsign vavshindot finalkafshevafinalkafqamats lamedholamlamedholamdageshaltayin shinshindot shinsindotshindageshshindotshindageshsindot alefpatah alefqamats alefmapiq betdagesh gimeldagesh daletdageshhedagesh vavdagesh zayindagesh tetdagesh yoddageshfinalkafdagesh kafdagesh lameddagesh memdagesh nundagesh samekhdagesh finalpedageshpedagesh tsadidagesh qofdagesh reshdagesh shindageshtavdagesvavholambetrafekafrafeperafe aleflamedzerowidthnonjoinerzerowidthjoinerlefttorightmarkrighttoleftmark afii57388 afii57403 afii57407 afii57409 afii57440 afii57451 afii57452 afii57453 afii57454 afii57455 afii57456 afii57457 afii57458 afii57392 afii57393 afii57394 afii57395 afii57396 afii57397 afii57398 afii57399 afii57400 afii57401 afii57381 afii57461 afii63167 afii57459 afii57543 afii57534 afii57494 afii62843 afii62844 afii62845 afii64240 afii64241 afii63954 afii57382 afii64242 afii62881 afii57504 afii57369 afii57370 afii57371 afii57372 afii57373 afii57374 afii57375 afii57391 afii57471 afii57460 afii52258 afii57506 afii62958 afii62956 afii52957 afii57505 afii62889 afii62887 afii62888 afii57507 afii62961 afii62959 afii62960 afii57508 afii62962 afii57567 afii62964 afii52305 afii52306 afii57509 afii62967 afii62965 afii62966 afii57555 afii52364 afii63753 afii63754 afii63759 afii63763 afii63795 afii62891 afii63808 afii62938 afii63810 afii62942 afii62947 afii63813 afii63823 afii63824 afii63833 afii63844 afii62882 afii62883 afii62884 afii62885 afii62886 afii63846 afii63849uni202Auni202Buni202Duni202Euni202Cuni206Euni206F;uni206Auni206Buni206C;uni206DuniF00AuniF00BuniF00CuniF00DuniF00EuniFFFC afii63904 afii63905 afii63906 afii63908 afii63910 afii63912 afii62927 afii63941 afii62939 afii63943 afii62943 afii62946 afii63946 afii62951 afii63948 afii62953 afii63950 afii63951 afii63952 afii63953 afii63956 afii63958 afii63959 afii63960 afii63961 afii64046 afii64058 afii64059 afii64060 afii64061 afii62945 afii64184 afii52399 afii52400 afii62753 afii57411 afii62754 afii57412 afii62755 afii57413 afii62756 afii57414 afii62759 afii62757 afii62758 afii57415 afii62760 afii57416 afii62763 afii62761 afii62762 afii57417 afii62764 afii57418 afii62767 afii62765 afii62766 afii57419 afii62770 afii62768 afii62769 afii57420 afii62773 afii62771 afii62772 afii57421 afii62776 afii62774 afii62775 afii57422 afii62779 afii62777 afii62778 afii57423 afii62780 afii57424 afii62781 afii57425 afii62782 afii57426 afii62783 afii57427 afii62786 afii62784 afii62785 afii57428 afii62789 afii62787 afii62788 afii57429 afii62792 afii62790 afii62791 afii57430 afii62795 afii62793 afii62794 afii57431 afii62798 afii62796 afii62797 afii57432 afii62801 afii62799 afii62800 afii57433 afii62804 afii62802 afii62803 afii57434 afii62807 afii62805 afii62806 afii57441 afii62810 afii62808 afii62809 afii57442 afii62813 afii62811 afii62812 afii57443 afii62816 afii57410 afii62815 afii57444 afii62819 afii62817 afii62818 afii57445 afii62822 afii62820 afii62821 afii57446 afii62825 afii62823 afii62824 afii57447 afii62828 afii57470 afii62827 afii57448 afii62829 afii57449 afii62830 afii57450 afii62833 afii62831 afii62832 afii62834 afii62835 afii62836 afii62837 afii62838 afii62839 afii62840 afii62841 glyph1021 afii57543-2 afii57454-2 afii57451-2 glyph1025 glyph1026 afii57471-2 afii57458-2 afii57457-2 afii57494-2 afii57459-2 afii57455-2 afii57452-2 glyph1034 glyph1035 glyph1036 afii62884-2 afii62881-2 afii62886-2 afii62883-2 afii62885-2 afii62882-2 afii57504-2 afii57456-2 afii57453-2 glyph1046 glyph1047 afii57543-3 afii57454-3 afii57451-3 glyph1051 glyph1052 afii57471-3 afii57458-3 afii57457-3 afii57494-3 afii57459-3 afii57455-3 afii57452-3 glyph1060 glyph1061 glyph1062 afii62884-3 afii62881-3 afii62886-3 afii62883-3 afii62885-3 afii62882-3 afii57504-3 afii57456-3 afii57453-3 glyph1072 glyph1073 afii57543-4 afii57454-4 afii57451-4 glyph1077 glyph1078 afii57471-4 afii57458-4 afii57457-4 afii57494-4 afii57459-4 afii57455-4 afii57452-4 glyph1086 glyph1087 glyph1088 afii62884-4 afii62881-4 afii62886-4 afii62883-4 afii62885-4 afii62882-4 afii57504-4 afii57456-4 afii57453-4 glyph1098 glyph1099 glyph1100 glyph1101 glyph1102 glyph1103 glyph1104 glyph1105 glyph1106 glyph1107 glyph1108 glyph1109 glyph1110 glyph1111 glyph1112 glyph1113 glyph1114 glyph1115 glyph1116 glyph1117 glyph1118 glyph1119 glyph1120 glyph1121 glyph1122 glyph1123 glyph1124 glyph1125 glyph1126 afii57440-2 afii57440-3 afii57440-4OhornohornUhornuhornf006f007f009combininghookabovef010f013f011f01cf015combiningtildeaccentf02cdongsignonethird twothirdsf008f00ff012f014f016f017f018f019f01af01bf01ef01ff020f021f022combininggraveaccentcombiningacuteaccentf01dcombiningdotbelowf023f029f02af02bf024f025f026f027f028f02df02ef02ff030f031 Adotbelow adotbelow Ahookabove ahookaboveAcircumflexacuteacircumflexacuteAcircumflexgraveacircumflexgraveAcircumflexhookaboveacircumflexhookaboveAcircumflextildeacircumflextildeAcircumflexdotbelowacircumflexdotbelow Abreveacute abreveacute Abrevegrave abrevegraveAbrevehookaboveabrevehookabove Abrevetilde abrevetildeAbrevedotbelowabrevedotbelow Edotbelow edotbelow Ehookabove ehookaboveEtildeetildeEcircumflexacuteecircumflexacuteEcircumflexgraveecircumflexgraveEcircumflexhookaboveecircumflexhookaboveEcircumflextildeecircumflextildeEcircumflexdotbelowecircumflexdotbelow Ihookabove ihookabove Idotbelow idotbelow Odotbelow odotbelow Ohookabove ohookaboveOcircumflexacuteocircumflexacuteOcircumflexgraveocircumflexgraveOcircumflexhookaboveocircumflexhookaboveOcircumflextildeocircumflextildeOcircumflexdotbelowocircumflexdotbelow Ohornacute ohornacute Ohorngrave ohorngraveOhornhookaboveohornhookabove Ohorntilde ohorntilde Ohorndotbelow ohorndotbelow Udotbelow udotbelow Uhookabove uhookabove Uhornacute uhornacute Uhorngrave uhorngraveUhornhookaboveuhornhookabove Uhorntilde uhorntilde Uhorndotbelow uhorndotbelow Ydotbelow ydotbelow Yhookabove yhookaboveYtildeytildeuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni0492uni0493uni0496uni0497uni049auni049buni049cuni049duni04a2uni04a3uni04aeuni04afuni04b0uni04b1uni04b2uni04b3uni04b8uni04b9uni04bauni04bbuni018funi0259uni04e8uni04e9\ N$7<  h$$7h$9h$:$D:A:E-:H:I:K:L`:M:N:Q`:W:Z:l:m:n:w-;:;A;H;K;L;M;N;O;Q;T;W;Y;e;m<:<><@<A<E<H<K<Lw<M<N<O<Q<T<Y<^<f<l<m<o<q<y===w=w==:w=>w=A=E=F=H=K=Y=Z=\=^w=_w=b=e=f=g=hw=j=mw=u=v=x=yw>M>N>Q>aD>h>m-?A?k@A@H@K@L@M-@T-@Z@_@h@mAEAHAKALAMANAQAYDADHDKDMDNENE[EmFNFQFZF_FhFkFmFqFwH:H>H@HEHMHOHQHYH^HeHoJ}J}JJJJ:wJ>wJ@JAJEJFJHJKJLJMJNJOJYJZJ^`J_JhJwJyK:K>KAKEKFKHKLKMKOKQKTKWKZK`-KqLLLLLL:L>L@LALELHLNLYLZL\L_LbLdLeLfLh`LiLjLkLmLoLsLuLvLxLyMMMMMMMM:wM>MAMEMHMNMWMYM[M\M]M^`M_wM`MaMbMcMdMewMfMgMhwMiMjMkwMoMpMrMsMxMywN:N>NENLNMNQNYNeOAOHOKONOWOhOmPHPZ-SZSm-TwTYV`V:V>V@VAVEVFVHVKVL3VOVQ`VWVYW>W@WAWEWOWYW^W`WeWfWyX:X>X@XEXHXKXLXOXQX^XeXfZaZlZmZq[Z[^[_[`[a[e[f[k[m[n[o[q[t[w[y\Z\[\^\_\`\a\e\f\h\k\l\m\n\q\t\y]]]Z]^]_]a]e]h]k]y^t^w_[_^_`_a_e_l_m_o_q`[`m`q`t-a[a^a_aaaeahakamanaqatdZ-d[-d_dadedhdkdldmdweheqf[fafmh^h`hahehlhmhohqj^jajejljmjojqjyk`khkqkwlllZl^l_l`Dlelhlklmm3m3mmZm[m^m_m`memfmhmjmkmnmwmyn[n^nenlnmnqnyoZo[o_oaohokolonoqp_paphpks_shsmvl`vqww^w_wawewhwlwowyx^x`xexfxlxoxq33``.13 "&+M"9&@M Arial ?ARLR00@   "'6GK|}  LNgi $Xarabinitmedi fina&liga, >>!)/3'-15>"*04'-15`- (,.26-'+-15 X 6  & : &,GHIJKarab ghiB:06 *H '0#10 *H 0` +7R0P0, +7<<<Obsolete>>>0 0 *H ytTA(&Xꠂ800%J8Y]s_]ܣ0  *H 010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.0 970512000000Z 040107235959Z010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.00  *H 0. h|,-.  WSu3* [4 Z%}XsjxqX)X^-bXq"X/6MJ;"V~!lJGj6 -Ӵ90  *H aU>{ǒ~"Գ+[D x~rȲ㉔LNaﳤF=P4 pV*cyis.(]  γ(y)gBHaSs?OUcc00kzm\obOC0  *H 010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.0 010228000000Z 040106235959Z010U VeriSign, Inc.10U VeriSign Trust Network1;09U 2Terms of use at https://www.verisign.com/rpa (c)011'0%UVeriSign Time Stamping Service0"0  *H 0 za벧c+aހ='9)fHOO^/Ǒ{!NXc-)pP햻@۾%BU狙1L$*MhaXr0HO/oc ىʂ{K(Łh@F:?6LTBZze{GT=3*^:.uk=`BO[?"1s+FLmP.K*xt=,G100@+40200+0$http://ocsp.verisign.com/ocsp/status0 U00DU =0;09 `HE0*0(+https://www.verisign.com/rpa0U% 0 +0 U0  *H -Oc`,$R 볼g#F M|z 02h2;'{>! Ř@W%误j;#)]@US6:9ess2үc@0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 970110070000Z 201231070000Z0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0"0  *H 0 p;N(x^0ꢩ%_L >|Q`2kBdyvT뜆fkzb#<Ŀ-fh&:, X&F >8,(9IBlUa|`-wL陴d;P1$+=c`Xe7RӿUE:TNzmtN̖ (!W`i7Kc@0  *H  5$w\`2 >:!W,Gb;;Z6Ti$m?̪|1=pjOiCZ Ob{+7%-e%cT!RnC2gl QRǽ0 1 )M[WeIRT(~ū7,zwvj?6A5jj5EZ38nM b T?FUp:uҠ00s a* 0  *H 01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2000 Microsoft Corp.1#0!UMicrosoft Code Signing PCA0 010329212726Z 020529213726Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2001 Microsoft Corp.10UMicrosoft Corporation00  *H 0oE1=ćNHV+cD0xrLFfbFnD;GQ^wg"{S*-"|N3va `4;I,َ.-kUnp`/@0<0U0U% 0 +0U@OE{uf50U#0)\3Y}. 4(tr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authorityj Oު@0JUC0A0?=;9http://crl.microsoft.com/pki/crl/products/CodeSignPCA.crl0  *H gqMGŽik_&ӞZ'i5+} WK 00j Oު@0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 001210080000Z 051112080000Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2000 Microsoft Corp.1#0!UMicrosoft Code Signing PCA0 0  *H  0S 04:/{m7#MҌ4$T~tG2XQ)8~:G9NnT1 :mPJ&?ˏIm>U7/`̀aBITJKٓ0ZGudӻݶ Os;:MON3 :doD4J#N`)*򄚙 p{4Af\3T?=tC9泬Hzk*ba9vn>KFGO%(0$0U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0 +70U)\3Y}. 4(0 +7  SubCA0 UF0U00  *H EXAHwwW_Ej9Y'-M88d"B߹/*Ϸ*|Q="mD_ddĩ,ې7Javv%$VT:>Ky_I^2i:TuMd0wz0>MLQ TS ۲9nDGLTזUs2uuIdsV/ǀ]VM= L0H *H  19050010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.zm\obOC0 *H Y0 *H  1  *H 0 *H  1 011109205623Z0 *H  18{Lf>0  *H IV5;n ͯ)y7F/PyV/Vhg Sڣ>Oݢ⸻/aUڽ Y5%8]z>/ {Ыm }cÚR #rvi(2$7 B—j j$ZicrkQо|T̫韅[v*T<]D[5_@qݭ(n)A^'3ɎsӴg#]g`\hpH4PK!tiSSsrc/Legacy/nggallery.phpnu[load_options(); $this->define_constant(); $this->define_tables(); $this->load_dependencies(); // Start this plugin once all other plugins are fully loaded. add_action( 'plugins_loaded', [ $this, 'start_plugin' ] ); add_action( 'wpmu_new_blog', [ $this, 'multisite_new_blog' ], 10, 6 ); // Add some links on the plugin page. add_filter( 'plugin_row_meta', [ $this, 'add_plugin_links' ], 10, 2 ); } public function start_plugin() { // Content Filters. add_filter( 'ngg_gallery_name', 'sanitize_title' ); // Check if we are in the admin area. if ( is_admin() ) { if ( get_option( 'ngg_init_check' ) ) { add_action( 'admin_notices', [ $this, 'output_init_check_error' ] ); } } else { $settings = \Imagely\NGG\Settings\Settings::get_instance(); if ( $settings->get( 'useMediaRSS' ) ) { add_action( 'wp_head', [ 'nggMediaRss', 'add_mrss_alternate_link' ] ); } } } public function output_init_check_error() { printf( "

    %s

    ", esc_html( get_option( 'ngg_init_check' ) ) ); } public function define_tables() { global $wpdb; $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures'; $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery'; $wpdb->nggalbum = $wpdb->prefix . 'ngg_album'; } public function define_constant() { define( 'NGG_LEGACY_MOD_DIR', implode( DIRECTORY_SEPARATOR, [ rtrim( NGG_PLUGIN_DIR, '/\\' ), 'src', basename( __DIR__ ), ] ) ); define( 'NGGVERSION', NGG_PLUGIN_VERSION ); define( 'NGGFOLDER', dirname( NGG_PLUGIN_BASENAME ) ); define( 'NGGALLERY_ABSPATH', rtrim( NGG_LEGACY_MOD_DIR, '/\\' ) . DIRECTORY_SEPARATOR ); define( 'NGGALLERY_URLPATH', plugin_dir_url( __FILE__ ) ); } public function load_dependencies() { // Load global libraries. require_once __DIR__ . '/lib/core.php'; require_once __DIR__ . '/lib/ngg-db.php'; require_once __DIR__ . '/lib/image.php'; require_once __DIR__ . '/lib/tags.php'; require_once __DIR__ . '/lib/post-thumbnail.php'; require_once __DIR__ . '/lib/sitemap.php'; // Load frontend libraries. require_once __DIR__ . '/lib/shortcodes.php'; // We didn't need all stuff during a AJAX operation. if ( defined( 'DOING_AJAX' ) ) { require_once __DIR__ . '/admin/ajax.php'; } else { require_once __DIR__ . '/lib/meta.php'; require_once __DIR__ . '/lib/media-rss.php'; if ( is_admin() && ! $this->is_rest_url() ) { require_once __DIR__ . '/admin/admin.php'; require_once __DIR__ . '/admin/media-upload.php'; $this->nggAdminPanel = new nggAdminPanel(); } } } public function is_rest_url(): bool { return strpos( $_SERVER['REQUEST_URI'], 'wp-json' ) !== false; } public function load_options() { $this->options = get_option( 'ngg_options' ); } public function multisite_new_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) { global $wpdb; include_once __DIR__ . '/admin/install.php'; if ( is_plugin_active_for_network( NGG_PLUGIN_BASENAME ) ) { $current_blog = $wpdb->blogid; switch_to_blog( $blog_id ); $installer = new C_NGG_Legacy_Installer(); nggallery_install( $installer ); switch_to_blog( $current_blog ); } } public function add_plugin_links( $links, $file ) { if ( $file == NGG_PLUGIN_BASENAME ) { $links[] = '' . __( 'Get help', 'nggallery' ) . ''; foreach ( $links as $key => $link ) { if ( false !== strpos( $link, 'Imagely' ) ) { $links[$key] = str_replace( 'remove_transients(); if ( is_multisite() ) { $network = isset( $_SERVER['SCRIPT_NAME'] ) ? $_SERVER['SCRIPT_NAME'] : ''; $activate = isset( $_GET['action'] ) ? $_GET['action'] : ''; $isNetwork = $network == '/wp-admin/network/plugins.php'; $isActivation = ! ( ( $activate == 'deactivate' ) ); if ( $isNetwork && $isActivation ) { $old_blog = $wpdb->blogid; // $wpdb->prepare() cannot be used just yet as it only supported the %i placeholder for column names as of // WordPress 6.2 which is newer than NextGEN's current minimum WordPress version. // // TODO: Once NextGEN's minimum WP version is 6.2 or higher use wpdb->prepare() here. // // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $blogids = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs", null ) ); foreach ( $blogids as $blog_id ) { \switch_to_blog( $blog_id ); \nggallery_install( $this ); } switch_to_blog( $old_blog ); return; } } // remove the update message. delete_option( 'ngg_update_exists' ); nggallery_install( $this ); } public function uninstall( $hard = false ) { include_once 'admin/install.php'; if ( $hard ) { delete_option( 'ngg_init_check' ); delete_option( 'ngg_update_exists' ); delete_option( 'ngg_options' ); delete_option( 'ngg_db_version' ); delete_option( 'ngg_update_exists' ); delete_option( 'ngg_next_update' ); } // now remove the capability. ngg_remove_capability( 'NextGEN Attach Interface' ); ngg_remove_capability( 'NextGEN Change options' ); ngg_remove_capability( 'NextGEN Change style' ); ngg_remove_capability( 'NextGEN Edit album' ); ngg_remove_capability( 'NextGEN Gallery overview' ); ngg_remove_capability( 'NextGEN Manage gallery' ); ngg_remove_capability( 'NextGEN Upload images' ); ngg_remove_capability( 'NextGEN Use TinyMCE' ); ngg_remove_capability( 'NextGEN Manage others gallery' ); ngg_remove_capability( 'NextGEN Manage tags' ); $this->remove_transients(); } public function remove_transients() { global $wpdb, $_wp_using_ext_object_cache; // Fetch all transients $transient_names = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", [ '%' . $wpdb->esc_like( 'ngg_request' ) . '%', ] ) ); // Delete all transients in the database $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", [ '%' . $wpdb->esc_like( 'ngg_request' ) . '%', ] ) ); // If using an external caching mechanism, delete the cached items. if ( $_wp_using_ext_object_cache ) { foreach ( $transient_names as $transient ) { wp_cache_delete( $transient, 'transient' ); wp_cache_delete( substr( $transient, 11 ), 'transient' ); } } } public function upgrade_schema( $sql ) { global $wpdb; // upgrade function changed in WordPress 2.3. require_once ABSPATH . 'wp-admin/includes/upgrade.php'; // add charset & collate like wp core. $charset_collate = ''; if ( version_compare( $wpdb->get_var( 'SELECT VERSION() AS `mysql_version`' ), '4.1.0', '>=' ) ) { if ( ! empty( $wpdb->charset ) ) { $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; } if ( ! empty( $wpdb->collate ) ) { $charset_collate .= " COLLATE $wpdb->collate"; } } // Add charset to table creation query. $sql = str_replace( $charset_collate, '', str_replace( ';', '', $sql ) ); // Execute the query. return dbDelta( $sql . ' ' . $charset_collate . ';' ); } } global $ngg; $ngg = new nggLoader(); PK!#ϒHHsrc/Legacy/lib/meta.phpnu[image = \Imagely\NGG\DataMappers\Image::get_instance()->find( $image_or_id ); } else { $this->image = $image_or_id; } $imagePath = \Imagely\NGG\DataStorage\Manager::get_instance()->get_image_abspath( $this->image ); if ( !file_exists( $imagePath ) ) { return false; } $this->size = @getimagesize( $imagePath, $metadata ); if ($this->size && is_array( $metadata )) { // get exif data if (is_callable( 'exif_read_data' ) && \Imagely\NGG\DataStorage\EXIFWriter::is_jpeg_file( $imagePath )) { $this->exif_data = @exif_read_data( $imagePath, null, true ); } // stop here if we didn't need other meta data if ($onlyEXIF) { return true; } // get the iptc data - should be in APP13 if ( is_callable( 'iptcparse' ) && isset( $metadata['APP13'] ) ) { $this->iptc_data = @iptcparse( $metadata['APP13'] ); } // get the xmp data in a XML format if ( is_callable( 'xml_parser_create' )) { $this->xmp_data = $this->extract_XMP( $imagePath ); } return true; } return false; } /** * return the saved meta data from the database * * @since 1.4.0 * @param string $object (optional) * @return array|mixed return either the complete array or the single object */ function get_saved_meta( $object = false ) { $meta = $this->image->meta_data; // Check if we already import the meta data to the database if (!is_array( $meta ) || !isset( $meta['saved'] ) || ( $meta['saved'] !== true )) { return false; } // return one element if requested if ($object) { return $meta[$object]; } // removed saved parameter we don't need that to show unset( $meta['saved'] ); // and remove empty tags or arrays foreach ($meta as $key => $value) { if ( empty( $value ) or is_array( $value )) { unset( $meta[$key] ); } } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $meta, 'esc_html' ); } return $meta; } /** * nggMeta::get_EXIF() * See also http://trac.wordpress.org/changeset/6313 * * @return bool|array Structured EXIF data */ function get_EXIF( $object = false ) { if ( !$this->exif_data ) { return false; } if (!is_array( $this->exif_array )) { $meta = array(); $exif = isset( $this->exif_data['EXIF'] ) ? $this->exif_data['EXIF'] : array(); if (count( $exif )) { if (!empty( $exif['FNumber'] )) { $meta['aperture'] = 'F ' . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 ); } if (!empty( $exif['Model'] )) { $meta['camera'] = trim( $exif['Model'] ); } if (!empty( $exif['DateTimeDigitized'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['DateTimeDigitized'] ); } elseif (!empty( $exif['DateTimeOriginal'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['DateTimeOriginal'] ); } elseif (!empty( $exif['FileDateTime'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['FileDateTime'] ); } if (!empty( $exif['FocalLength'] )) { $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __( ' mm', 'nggallery' ); } if (!empty( $exif['ISOSpeedRatings'] )) { $meta['iso'] = $exif['ISOSpeedRatings']; } if (!empty( $exif['ExposureTime'] )) { $meta['shutter_speed'] = $this->exif_frac2dec( $exif['ExposureTime'] ); $meta['shutter_speed'] =( $meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0 ) ? ( '1/' . round( 1 / $meta['shutter_speed'], -1 ) ) : ( $meta['shutter_speed'] ); $meta['shutter_speed'] .= __( ' sec', 'nggallery' ); } // Bit 0 indicates the flash firing status. On some images taken on older iOS versions, this may be // incorrectly stored as an array. if (isset( $exif['Flash'] ) && is_array( $exif['Flash'] )) { $meta['flash'] = __( 'Fired', 'nggallery' ); } elseif (!empty( $exif['Flash'] )) { $meta['flash'] = ( $exif['Flash'] & 1 ) ? __( 'Fired', 'nggallery' ) : __( 'Not fired', ' nggallery' ); } } // additional information if ( isset( $this->exif_data['IFD0'] ) ) { $exif = $this->exif_data['IFD0']; if (!empty( $exif['Model'] )) { $meta['camera'] = $exif['Model']; } if (!empty( $exif['Make'] )) { $meta['make'] = $exif['Make']; } if (!empty( $exif['ImageDescription'] )) { $meta['title'] = $exif['ImageDescription']; } if (!empty( $exif['Orientation'] )) { $meta['Orientation'] = $exif['Orientation']; } } // this is done by Windows if ( isset( $this->exif_data['WINXP'] ) ) { $exif = $this->exif_data['WINXP']; if (!empty( $exif['Title'] ) && empty( $meta['title'] )) { $meta['title'] = $this->utf8_encode( $exif['Title'] ); } if (!empty( $exif['Author'] )) { $meta['author'] = $this->utf8_encode( $exif['Author'] ); } if (!empty( $exif['Keywords'] )) { $meta['keywords'] = $this->utf8_encode( $exif['Keywords'] ); } if (!empty( $exif['Subject'] )) { $meta['subject'] = $this->utf8_encode( $exif['Subject'] ); } if (!empty( $exif['Comments'] )) { $meta['caption'] = $this->utf8_encode( $exif['Comments'] ); } } $this->exif_array = $meta; } // return one element if requested if ( $object == true ) { $value = isset( $this->exif_array[$object] ) ? $this->exif_array[$object] : false; return $value; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->exif_array, 'esc_html' ); } return $this->exif_array; } // convert a fraction string to a decimal function exif_frac2dec( $str ) { @list( $n, $d ) = explode( '/', $str ); if ( !empty( $d ) ) { return $n / $d; } return $str; } // convert the exif date format to a unix timestamp function exif_date2ts( $str ) { $retval = is_numeric( $str ) ? $str : @strtotime( $str ); if (!$retval && $str) { @list( $date, $time ) = explode( ' ', trim( $str ) ); @list( $y, $m, $d ) = explode( ':', $date ); $retval = strtotime( "{$y}-{$m}-{$d} {$time}" ); } return $retval; } /** * nggMeta::readIPTC() - IPTC Data Information for EXIF Display * * @param mixed $object (optional) * @return null|bool|array */ function get_IPTC( $object = false ) { if (!$this->iptc_data) { return false; } if (!is_array( $this->iptc_array )) { // --------- Set up Array Functions --------- // $iptcTags = array( "2#005" => 'title', "2#007" => 'status', "2#012" => 'subject', "2#015" => 'category', "2#025" => 'keywords', "2#055" => 'created_date', "2#060" => 'created_time', "2#080" => 'author', "2#085" => 'position', "2#090" => 'city', "2#092" => 'location', "2#095" => 'state', "2#100" => 'country_code', "2#101" => 'country', "2#105" => 'headline', "2#110" => 'credit', "2#115" => 'source', "2#116" => 'copyright', "2#118" => 'contact', "2#120" => 'caption', ); $meta = array(); foreach ($iptcTags as $key => $value) { if (isset( $this->iptc_data[$key] )) { $meta[$value] = trim( $this->utf8_encode( implode( ", ", $this->iptc_data[$key] ) ) ); } } $this->iptc_array = $meta; } // return one element if requested if ($object) { return ( isset( $this->iptc_array[$object] ) ) ? $this->iptc_array[$object] : null; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->iptc_array, 'esc_html' ); } return $this->iptc_array; } /** * nggMeta::extract_XMP() * get XMP DATA * code by Pekka Saarinen http://photography-on-the.net * * @param mixed $filename * @return bool|string XML data */ function extract_XMP( $filename ) { // TODO:Require a lot of memory, could be better ob_start(); @readfile( $filename ); $source = ob_get_contents(); ob_end_clean(); $start = strpos( $source, "" ); if (( !$start === false ) && ( !$end === false )) { $lenght = $end - $start; $xmp_data = substr( $source, $start, $lenght+12 ); unset( $source ); return $xmp_data; } unset( $source ); return false; } /** * nggMeta::get_XMP() * * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php * @author Alf Marius Foss Olsen & Alex Rabe * @return bool|array|object XML Array or object */ function get_XMP( $object = false ) { if (!$this->xmp_data) { return false; } if (!is_array( $this->xmp_array )) { $parser = xml_parser_create(); xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 ); // Dont mess with my cAsE sEtTings xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 ); // Dont bother with empty info xml_parse_into_struct( $parser, $this->xmp_data, $values ); xml_parser_free( $parser ); $xmlarray = array(); // The XML array $this->xmp_array = array(); // The returned array $stack = array(); // tmp array used for stacking $list_array = array(); // tmp array for list elements $list_element = false; // rdf:li indicator foreach ($values as $val) { if ($val['type'] == "open") { array_push( $stack, $val['tag'] ); } elseif ($val['type'] == "close") { // reset the compared stack if ($list_element == false) { array_pop( $stack ); } // reset the rdf:li indicator & array $list_element = false; $list_array = array(); } elseif ($val['type'] == "complete") { if ($val['tag'] == "rdf:li") { // first go one element back if ($list_element == false) { array_pop( $stack ); } $list_element = true; // do not parse empty tags if ( empty( $val['value'] ) ) { continue; } // save it in our temp array $list_array[] = $val['value']; // in the case it's a list element we seralize it $value = implode( ",", $list_array ); $this->setArrayValue( $xmlarray, $stack, $value ); } else { array_push( $stack, $val['tag'] ); // do not parse empty tags if ( !empty( $val['value'] ) ) { $this->setArrayValue( $xmlarray, $stack, $val['value'] ); } array_pop( $stack ); } } } // foreach // don't parse a empty array if ( empty( $xmlarray ) || empty( $xmlarray['x:xmpmeta'] ) ) { return false; } // cut off the useless tags $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description']; // --------- Some values from the XMP format--------- // $xmpTags = array( 'xap:CreateDate' => 'created_timestamp', 'xap:ModifyDate' => 'last_modfied', 'xap:CreatorTool' => 'tool', 'dc:format' => 'format', 'dc:title' => 'title', 'dc:creator' => 'author', 'dc:subject' => 'keywords', 'dc:description' => 'caption', 'photoshop:AuthorsPosition' => 'position', 'photoshop:City' => 'city', 'photoshop:Country' => 'country', ); foreach ($xmpTags as $key => $value) { // if the kex exist if ( isset( $xmlarray[$key] ) ) { switch ($key) { case 'xap:CreateDate': case 'xap:ModifyDate': $this->xmp_array[$value] = $this->exif_date2ts( $xmlarray[$key] ); break; default: $this->xmp_array[$value] = $xmlarray[$key]; } } } } // return one element if requested if ($object != false ) { return isset( $this->xmp_array[$object] ) ? $this->xmp_array[$object] : false; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->xmp_array, 'esc_html' ); } return $this->xmp_array; } function setArrayValue( &$array, $stack, $value ) { if ($stack) { $key = array_shift( $stack ); $this->setArrayValue( $array[$key], $stack, $value ); return $array; } else { $array = $value; } return $array; } /** * nggMeta::get_META() - return a meta value form the available list * * @param string $object * @return mixed $value */ function get_META( $object = false ) { if ($value = $this->get_saved_meta( $object )) { return $value; } if ($object == 'created_timestamp' && ( $d = $this->get_IPTC( 'created_date' ) ) && ( $t = $this->get_IPTC( 'created_time' ) )) { return $this->exif_date2ts( $d . ' ' . $t ); } $order = apply_filters( 'ngg_metadata_parse_order', [ 'XMP', 'IPTC', 'EXIF' ] ); foreach ($order as $method) { $method = 'get_' . $method; if (method_exists( $this, $method ) && $value = $this->$method( $object )) { return $value; } } return false; } /** * nggMeta::i8n_name() - localize the tag name * * @param mixed $key * @return string Translated $key */ function i18n_name( $key ) { $tagnames = [ 'aperture' => __( 'Aperture', 'nggallery' ), 'author' => __( 'Author', 'nggallery' ), 'camera' => __( 'Camera', 'nggallery' ), 'caption' => __( 'Caption', 'nggallery' ), 'category' => __( 'Category', 'nggallery' ), 'city' => __( 'City', 'nggallery' ), 'contact' => __( 'Contact', 'nggallery' ), 'copyright' => __( 'Copyright Notice', 'nggallery' ), 'country' => __( 'Country', 'nggallery' ), 'country_code' => __( 'Country code', 'nggallery' ), 'created_date' => __( 'Date Created', 'nggallery' ), 'created_time' => __( 'Time Created', 'nggallery' ), 'created_timestamp' => __( 'Date/Time', 'nggallery' ), 'credit' => __( 'Credit', 'nggallery' ), 'flash' => __( 'Flash', 'nggallery' ), 'focal_length' => __( 'Focal length', 'nggallery' ), 'format' => __( 'Format', 'nggallery' ), 'headline' => __( 'Headline', 'nggallery' ), 'height' => __( 'Image Height', 'nggallery' ), 'iso' => __( 'ISO', 'nggallery' ), 'keywords' => __( 'Keywords', 'nggallery' ), 'last_modfied' => __( 'Last modified', 'nggallery' ), 'location' => __( 'Location', 'nggallery' ), 'make' => __( 'Make', 'nggallery' ), 'position' => __( 'Author Position', 'nggallery' ), 'shutter_speed' => __( 'Shutter speed', 'nggallery' ), 'source' => __( 'Source', 'nggallery' ), 'state' => __( 'Province/State', 'nggallery' ), 'status' => __( 'Edit Status', 'nggallery' ), 'subject' => __( 'Subject', 'nggallery' ), 'tags' => __( 'Tags', 'nggallery' ), 'title' => __( 'Title', 'nggallery' ), 'tool' => __( 'Program tool', 'nggallery' ), 'width' => __( 'Image Width', 'nggallery' ), ]; if ( isset( $tagnames[$key] ) ) { $key = $tagnames[$key]; } return( $key ); } /** * Return the Timestamp from the image , if possible it's read from exif data * * @return string */ function get_date_time() { $date = $this->exif_date2ts( $this->get_META( 'created_timestamp' ) ); if (!$date) { $image_path = \Imagely\NGG\DataStorage\Manager::get_instance()->get_backup_abspath( $this->image ); if (file_exists( $image_path )) { $date = filectime( $image_path ); } } // Fallback if (!$date) { $date = time(); } // Return the MySQL format $date_time = gmdate( 'Y-m-d H:i:s', $date ); return $date_time; } /** * This function return the most common metadata, via a filter we can add more * Reason : GD manipulation removes that options * * @since V1.4.0 * @return bool|array */ function get_common_meta() { global $wpdb; $meta = array( 'aperture' => 0, 'credit' => '', 'camera' => '', 'caption' => '', 'created_timestamp' => 0, 'copyright' => '', 'focal_length' => 0, 'iso' => 0, 'shutter_speed' => 0, 'flash' => 0, 'title' => '', 'keywords' => '', ); $meta = apply_filters( 'ngg_read_image_metadata', $meta ); // meta should be still an array if ( !is_array( $meta ) ) { return false; } foreach ($meta as $key => $value) { $meta[$key] = $this->get_META( $key ); } // let's add now the size of the image $meta['width'] = $this->size[0]; $meta['height'] = $this->size[1]; return $meta; } /** * If needed sanitize each value before output * * @return void */ function sanitize() { $this->sanitize = true; } /** * Wrapper to utf8_encode() that avoids double encoding * * Regex adapted from http://www.w3.org/International/questions/qa-forms-utf-8.en.php * to determine if the given string is already UTF-8. mb_detect_encoding() is not * always available and is limited in accuracy * * @param string $str * @return string */ function utf8_encode( $str ) { $is_utf8 = preg_match( '%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $str ); if (!$is_utf8) { utf8_encode( $str ); } return $str; } } PK!SѰ4src/Legacy/lib/image.phpnu[meta_data = \Imagely\NGG\Util\Serializable::unserialize( $image->meta_data ); $this->_ngiw = new \Imagely\NGG\DataTypes\LegacyImage( $image, null, true ); } public function __set( $name, $value ) { $this->$name = $value; if ($this->_propogate) { $this->_ngiw->__set( $name, $value ); } } public function __isset( $name ) { return $this->_ngiw->__isset( $name ); } public function __unset( $name ) { return $this->_ngiw->__unset( $name ); } public function __get( $name ) { $this->_propogate = false; $this->$name = $this->_ngiw->__get( $name ); $this->_propogate = true; return $this->$name; } function get_thumbcode( $galleryname = '' ) { return $this->_ngiw->get_thumbcode( $galleryname ); } function get_href_link() { return $this->_ngiw->get_href_link(); } function get_href_thumb_link() { return $this->_ngiw->get_href_thumb_link(); } function cached_singlepic_file( $width = '', $height = '', $mode = '' ) { return $this->_ngiw->cached_singlepic_file( $width, $height, $mode ); } function get_tags() { return $this->_ngiw->get_tags(); } function get_permalink() { return $this->_ngiw->get_permalink(); } } PK!S"!src/Legacy/lib/post-thumbnail.phpnu[" * * @param string $content * @return string html output */ function admin_post_thumbnail( $content, $post_id = null ) { if ($post_id == null) { global $post; if ( !is_object( $post ) ) { return $content; } $post_id = $post->ID; } $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true ); // in the case it's a ngg image it return ngg- if ( strpos( $thumbnail_id, 'ngg-' ) === false) { global $wp_version; if (version_compare( $wp_version, '3.5', '>=' ) && $thumbnail_id <= 0) { $iframe_src = get_upload_iframe_src( 'image', $post_id ); $iframe_src = remove_query_arg( 'TB_iframe', $iframe_src ); $iframe_src = add_query_arg( 'tab', 'nextgen', $iframe_src ); $iframe_src = add_query_arg( 'chromeless', '1', $iframe_src ); $iframe_src = add_query_arg( 'TB_iframe', '1', $iframe_src ); $set_thumbnail_link = '

    %s

    '; $content .= sprintf( $set_thumbnail_link, esc_html__( 'Set NextGEN featured image', 'nggallery' ) ); } return $content; } // cut off the 'ngg-' $thumbnail_id = substr( $thumbnail_id, 4 ); return $this->_wp_post_thumbnail_html( $thumbnail_id ); } /** * Filter for the post content * * @param string $html * @param int $post_id * @param int $post_thumbnail_id * @param string|array $size Optional. Image size. Defaults to 'thumbnail'. * @param string|array $attr Optional. Query string or array of attributes. * @return string html output */ function ngg_post_thumbnail( $html, $post_id, $post_thumbnail_id, $size = 'post-thumbnail', $attr = '' ) { global $post, $_wp_additional_image_sizes; // in the case it's a ngg image it return ngg- if ( strpos( $post_thumbnail_id, 'ngg-' ) === false) { return $html; } // cut off the 'ngg-' $post_thumbnail_id = substr( $post_thumbnail_id, 4 ); // get the options $ngg_options = nggGallery::get_option( 'ngg_options' ); // get the image data $image = nggdb::find_image( $post_thumbnail_id ); if (!$image) { return $html; } $img_src = false; $class = 'wp-post-image ngg-image-' . $image->pid . ' '; if (is_array( $size ) || is_array( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[$size] )) { $class .= isset( $attr['class'] ) ? esc_attr( $attr['class'] ) : ''; if ( is_array( $size )) { // the parameters is given as an array rather than a predfined image $width = absint( $size[0] ); $height = absint( $size[1] ); if (isset( $size[2] ) && $size[2] === true) { $mode = 'crop'; } elseif (isset( $size[2] )) { $mode = $size[2]; } else { $mode = ''; } } else { $width = absint( $_wp_additional_image_sizes[$size]['width'] ); $height = absint( $_wp_additional_image_sizes[$size]['height'] ); $mode = ( $_wp_additional_image_sizes[$size]['crop'] ) ? 'crop' : ''; } // check fo cached picture if ( $post->post_status == 'publish' ) { $img_src = $image->cached_singlepic_file( $width, $height, $mode ); } // if we didn't use a cached image then we take the on-the-fly mode if ($img_src == false) { $img_src = trailingslashit( home_url() ) . 'index.php?callback=image&pid=' . $image->pid . '&width=' . $width . '&height=' . $height . '&mode=crop'; } } else { $img_src = $image->thumbURL; } $alttext = isset( $attr['alt'] ) ? $attr['alt'] : $image->alttext; $titletext = isset( $attr['title'] ) ? $attr['title'] : $image->title; $html = '' . esc_attr( $alttext ) . ''; return $html; } /** * nggPostThumbnail::ajax_set_post_thumbnail() * * @return void */ function ajax_set_post_thumbnail() { // This function does the following: // 1) Check if the user is logged in and has permission to edit the post // 2) Get the thumbnail id from the POST request. The thumbnail id is actually the NGG image id // 3)] global $post_ID; // check for correct capability if ( ! is_user_logged_in() ) { die( '-1' ); } if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( $_REQUEST['nonce'], 'ngg_set_post_thumbnails' ) ) { die( '-1' ); } // get the post id as global variable, otherwise the ajax_nonce failed later $post_ID = intval( $_REQUEST['post_id'] ); if ( ! current_user_can( 'edit_post', $post_ID ) ) { die( '-1' ); } $thumbnail_id = intval( $_REQUEST['thumbnail_id'] ); // delete the image if ( $thumbnail_id == '-1' ) { delete_post_meta( $post_ID, '_thumbnail_id' ); die( '1' ); } if ( ( $attachment_id = StorageManager::get_instance()->set_post_thumbnail( $post_ID, $thumbnail_id, TRUE ) ) ) { die( strval( $attachment_id ) ); } die( strval( 0 ) ); } /** * Output HTML for the post thumbnail meta-box. * * @see wp-admin\includes\post.php * @param int $thumbnail_id ID of the image used for thumbnail * @return string html output */ function _wp_post_thumbnail_html( $thumbnail_id = null ) { global $_wp_additional_image_sizes, $post_ID; $set_thumbnail_link = '

    %s

    '; $content = sprintf( $set_thumbnail_link, esc_html__( 'Set featured image', 'nggallery' ) ); $image = nggdb::find_image( $thumbnail_id ); $img_src = false; // get the options $ngg_options = nggGallery::get_option( 'ngg_options' ); if ( $image ) { if ( is_array( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) { // Use post thumbnail settings if defined $width = absint( $_wp_additional_image_sizes['post-thumbnail']['width'] ); $height = absint( $_wp_additional_image_sizes['post-thumbnail']['height'] ); $mode = $_wp_additional_image_sizes['post-thumbnail']['crop'] ? 'crop' : ''; // check fo cached picture $img_src = $image->cached_singlepic_file( $width, $height, $mode ); } // if we didn't use a cached image then we take the on-the-fly mode if ( $img_src == false ) { $img_src = trailingslashit( home_url() ) . 'index.php?callback=image&pid=' . $image->pid . '&width=' . $width . '&height=' . $height . '&mode=crop'; } $thumbnail_html = '' . $image->alttext . ''; if ( !empty( $thumbnail_html ) ) { $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_ID" ); $content = sprintf( $set_thumbnail_link, $thumbnail_html ); $content .= '

    ' . esc_html__( 'Remove featured image' ) . '

    '; } } return $content; } } $nggPostThumbnail = new nggPostThumbnail(); PK!Tnn#src/Legacy/lib/gd.thumbnail.inc.phpnu[errmsg = ''; $this->error = false; $this->currentDimensions = array(); $this->newDimensions = array(); $this->fileName = $fileName; $this->percent = 100; $this->maxWidth = 0; $this->maxHeight = 0; $this->watermarkImgPath = ''; $this->watermarkText = ''; // check to see if file exists if (!file_exists( $this->fileName )) { $this->errmsg = 'File not found'; $this->error = true; } // check to see if file is readable elseif (!is_readable( $this->fileName )) { $this->errmsg = 'File is not readable'; $this->error = true; } // if there are no errors, determine the file format if ($this->error == false) { @ini_set( 'memory_limit', -1 ); $data = @getimagesize( $this->fileName ); if (isset( $data ) && is_array( $data )) { $extensions = [ IMAGETYPE_GIF => 'GIF', IMAGETYPE_JPEG => 'JPG', IMAGETYPE_PNG => 'PNG', IMAGETYPE_WEBP => 'WEBP', ]; $extension = array_key_exists( $data[2], $extensions ) ? $extensions[$data[2]] : ''; if ($extension) { $this->format = $extension; } else { $this->errmsg = 'Unknown file format'; $this->error = true; } } else { $this->errmsg = 'File is not an image'; $this->error = true; } } // increase memory-limit if possible, GD needs this for large images // @ini_set('memory_limit', '128M'); if ($this->error == false) { // Check memory consumption if file exists $this->checkMemoryForImage( $this->fileName ); } // initialize resources if no errors if ($this->error == false) { switch ($this->format) { case 'GIF': $this->oldImage = ImageCreateFromGif( $this->fileName ); break; case 'JPG': $this->oldImage = ImageCreateFromJpeg( $this->fileName ); break; case 'PNG': $this->oldImage = ImageCreateFromPng( $this->fileName ); break; case 'WEBP': $this->oldImage = imagecreatefromwebp( $this->fileName ); } if (!$this->oldImage) { $this->errmsg = 'Create Image failed. Check memory limit'; $this->error = true; } else { $size = GetImageSize( $this->fileName ); $this->currentDimensions = array( 'width'=>$size[0], 'height'=>$size[1] ); $this->newImage = $this->oldImage; } } if ($this->error == true) { if (!$no_ErrorImage) { $this->showErrorImage(); } return; } } /** * Calculate the memory limit */ function checkMemoryForImage( $filename ) { if ( ( function_exists( 'memory_get_usage' ) ) && ( ini_get( 'memory_limit' ) ) ) { $imageInfo = getimagesize( $filename ); switch ($this->format) { case 'GIF': // measured factor 1 is better $CHANNEL = 1; break; case 'JPG': $CHANNEL = $imageInfo['channels']; break; case 'PNG': // didn't get the channel for png $CHANNEL = 3; break; case 'WEBP': $CHANNEL = $imageInfo['bits']; break; } $MB = 1048576; // number of bytes in 1M $K64 = 65536; // number of bytes in 64K $TWEAKFACTOR = 1.68; // Or whatever works for you $memoryNeeded = round( ( $imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $CHANNEL / 8 + $K64 ) * $TWEAKFACTOR ); $memoryNeeded = memory_get_usage() + $memoryNeeded; // get memory limit $memory_limit = ini_get( 'memory_limit' ); // PHP docs : Note that to have no memory limit, set this directive to -1. if ($memory_limit == -1 ) { return; } // Just check megabyte limits, not higher if ( strtolower( substr( $memory_limit, -1 ) ) == 'm' ) { if ($memory_limit != '') { $memory_limit = substr( $memory_limit, 0, -1 ) * 1024 * 1024; } if ($memoryNeeded > $memory_limit) { $memoryNeeded = round( $memoryNeeded / 1024 / 1024, 2 ); $this->errmsg = 'Exceed Memory limit. Require : ' . $memoryNeeded . " MByte"; $this->error = true; } } } return; } /** * Must be called to free up allocated memory after all manipulations are done */ function destruct() { if (is_resource( $this->newImage ) || $this->newImage instanceof GdImage) { @imagedestroy( $this->newImage ); } if (is_resource( $this->oldImage ) || $this->oldImage instanceof GdImage) { @imagedestroy( $this->oldImage ); } if (is_resource( $this->workingImage ) || $this->workingImage instanceof GdImage) { @imagedestroy( $this->workingImage ); } } /** * Returns the current width of the image * * @return int */ function getCurrentWidth() { return $this->currentDimensions['width']; } /** * Returns the current height of the image * * @return int */ function getCurrentHeight() { return $this->currentDimensions['height']; } /** * Calculates new image width * * @param int $width * @param int $height * @return array */ function calcWidth( $width, $height ) { $newWp = ( 100 * $this->maxWidth ) / $width; $newHeight = ( $height * $newWp ) / 100; return array( 'newWidth'=>intval( $this->maxWidth ), 'newHeight'=>intval( $newHeight ) ); } /** * Calculates new image height * * @param int $width * @param int $height * @return array */ function calcHeight( $width, $height ) { $newHp = ( 100 * $this->maxHeight ) / $height; $newWidth = ( $width * $newHp ) / 100; return array( 'newWidth'=>intval( $newWidth ), 'newHeight'=>intval( $this->maxHeight ) ); } /** * Calculates new image size based on percentage * * @param int $width * @param int $height * @return array */ function calcPercent( $width, $height ) { $newWidth = ( $width * $this->percent ) / 100; $newHeight = ( $height * $this->percent ) / 100; return array( 'newWidth'=>intval( $newWidth ), 'newHeight'=>intval( $newHeight ) ); } /** * Calculates new image size based on width and height, while constraining to maxWidth and maxHeight * * @param int $width * @param int $height */ function calcImageSize( $width, $height ) { $newSize = array( 'newWidth'=>$width, 'newHeight'=>$height ); if ($this->maxWidth > 0) { $newSize = $this->calcWidth( $width, $height ); if ($this->maxHeight > 0 && $newSize['newHeight'] > $this->maxHeight) { $newSize = $this->calcHeight( $newSize['newWidth'], $newSize['newHeight'] ); } // $this->newDimensions = $newSize; } if ($this->maxHeight > 0) { $newSize = $this->calcHeight( $width, $height ); if ($this->maxWidth > 0 && $newSize['newWidth'] > $this->maxWidth) { $newSize = $this->calcWidth( $newSize['newWidth'], $newSize['newHeight'] ); } // $this->newDimensions = $newSize; } $this->newDimensions = $newSize; } /** * Calculates new image size based percentage * * @param int $width * @param int $height */ function calcImageSizePercent( $width, $height ) { if ($this->percent > 0) { $this->newDimensions = $this->calcPercent( $width, $height ); } } /** * Displays error image */ function showErrorImage() { header( 'Content-type: image/png' ); $errImg = ImageCreate( 220, 25 ); $bgColor = imagecolorallocate( $errImg, 0, 0, 0 ); $fgColor1 = imagecolorallocate( $errImg, 255, 255, 255 ); $fgColor2 = imagecolorallocate( $errImg, 255, 0, 0 ); imagestring( $errImg, 3, 6, 6, 'Error:', $fgColor2 ); imagestring( $errImg, 3, 55, 6, $this->errmsg, $fgColor1 ); imagepng( $errImg ); imagedestroy( $errImg ); } /** * Resizes image to fixed Width x Height * * @param int $Width * @param int $Height */ function resizeFix( $Width = 0, $Height = 0, $deprecated = 3 ) { $this->newWidth = $Width; $this->newHeight = $Height; if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newWidth, $this->newHeight ); } else { $this->workingImage = ImageCreate( $this->newWidth, $this->newHeight ); } // ImageCopyResampled( $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newWidth; $this->currentDimensions['height'] = $this->newHeight; } /** * Resizes image to maxWidth x maxHeight * * @param int $maxWidth * @param int $maxHeight */ function resize( $maxWidth = 0, $maxHeight = 0, $deprecated = 3 ) { $this->maxWidth = $maxWidth; $this->maxHeight = $maxHeight; $this->calcImageSize( $this->currentDimensions['width'], $this->currentDimensions['height'] ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } else { $this->workingImage = ImageCreate( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } // ImageCopyResampled( $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newDimensions['newWidth']; $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } /** * Resizes the image by $percent percent * * @param int $percent */ function resizePercent( $percent = 0 ) { $this->percent = $percent; $this->calcImageSizePercent( $this->currentDimensions['width'], $this->currentDimensions['height'] ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } else { $this->workingImage = ImageCreate( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } $this->ImageCopyResampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newDimensions['newWidth']; $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } /** * Crops the image from calculated center in a square of $cropSize pixels * * @param int $cropSize */ function cropFromCenter( $cropSize ) { if ($cropSize > $this->currentDimensions['width']) { $cropSize = $this->currentDimensions['width']; } if ($cropSize > $this->currentDimensions['height']) { $cropSize = $this->currentDimensions['height']; } $cropX = intval( ( $this->currentDimensions['width'] - $cropSize ) / 2 ); $cropY = intval( ( $this->currentDimensions['height'] - $cropSize ) / 2 ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $cropSize, $cropSize ); } else { $this->workingImage = ImageCreate( $cropSize, $cropSize ); } $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $cropX, $cropY, $cropSize, $cropSize, $cropSize, $cropSize ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $cropSize; $this->currentDimensions['height'] = $cropSize; } /** * Advanced cropping function that crops an image using $startX and $startY as the upper-left hand corner. * * @param int $startX * @param int $startY * @param int $width * @param int $height */ function crop( $startX, $startY, $width, $height ) { // make sure the cropped area is not greater than the size of the image if ($width > $this->currentDimensions['width']) { $width = $this->currentDimensions['width']; } if ($height > $this->currentDimensions['height']) { $height = $this->currentDimensions['height']; } // make sure not starting outside the image if (( $startX + $width ) > $this->currentDimensions['width']) { $startX = ( $this->currentDimensions['width'] - $width ); } if (( $startY + $height ) > $this->currentDimensions['height']) { $startY = ( $this->currentDimensions['height'] - $height ); } if ($startX < 0) { $startX = 0; } if ($startY < 0) { $startY = 0; } if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $width, $height ); } else { $this->workingImage = ImageCreate( $width, $height ); } $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $startX, $startY, $width, $height, $width, $height ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $width; $this->currentDimensions['height'] = $height; } /** * Outputs the image to the screen, or saves to $name if supplied. Quality of JPEG images can be controlled with the $quality variable * * @param int $quality * @param string $name */ function show( $quality = 100, $name = '' ) { switch ($this->format) { case 'GIF': if ($name != '') { @ImageGif( $this->newImage, $name ) or $this->error = true; } else { header( 'Content-type: image/gif' ); ImageGif( $this->newImage ); } break; case 'JPG': if ($name != '') { @ImageJpeg( $this->newImage, $name, $quality ) or $this->error = true; } else { header( 'Content-type: image/jpeg' ); ImageJpeg( $this->newImage, null, $quality ); } break; case 'PNG': if ($name != '') { @ImagePng( $this->newImage, $name ) or $this->error = true; } else { header( 'Content-type: image/png' ); ImagePng( $this->newImage ); } break; case 'WEBP': if ($name != '') { $this->error = !@imagewebp( $this->newImage, $name ); } else { header( 'Content-type: image/webp' ); imagewebp( $this->newImage ); } break; } } /** * Saves image as $name (can include file path), with quality of # percent if file is a jpeg * * @param string $name * @param int $quality * @return bool errorstate */ function save( $name, $quality = 100 ) { $this->show( $quality, $name ); if ($this->error == true) { $this->errmsg = 'Create Image failed. Check safe mode settings'; return false; } if ( function_exists( 'do_action' ) ) { do_action( 'ngg_ajax_image_save', $name ); } return true; } /** * Creates Apple-style reflection under image, optionally adding a border to main image * * @param int $percent * @param int $reflection * @param int $white * @param bool $border * @param string $borderColor */ function createReflection( $percent, $reflection, $white, $border = true, $borderColor = '#a4a4a4' ) { $width = $this->currentDimensions['width']; $height = $this->currentDimensions['height']; $reflectionHeight = intval( $height * ( $reflection / 100 ) ); $newHeight = $height + $reflectionHeight; $reflectedPart = $height * ( $percent / 100 ); $this->workingImage = ImageCreateTrueColor( $width, $newHeight ); ImageAlphaBlending( $this->workingImage, true ); $colorToPaint = ImageColorAllocateAlpha( $this->workingImage, 255, 255, 255, 0 ); ImageFilledRectangle( $this->workingImage, 0, 0, $width, $newHeight, $colorToPaint ); imagecopyresampled( $this->workingImage, $this->newImage, 0, 0, 0, $reflectedPart, $width, $reflectionHeight, $width, ( $height - $reflectedPart ) ); $this->imageFlipVertical(); imagecopy( $this->workingImage, $this->newImage, 0, 0, 0, 0, $width, $height ); imagealphablending( $this->workingImage, true ); for ($i=0;$i<$reflectionHeight;$i++) { $colorToPaint = imagecolorallocatealpha( $this->workingImage, 255, 255, 255, ( $i/$reflectionHeight*-1+1 )*$white ); imagefilledrectangle( $this->workingImage, 0, $height+$i, $width, $height+$i, $colorToPaint ); } if ($border == true) { $rgb = $this->hex2rgb( $borderColor, false ); $colorToPaint = imagecolorallocate( $this->workingImage, $rgb[0], $rgb[1], $rgb[2] ); imageline( $this->workingImage, 0, 0, $width, 0, $colorToPaint ); // top line imageline( $this->workingImage, 0, $height, $width, $height, $colorToPaint ); // bottom line imageline( $this->workingImage, 0, 0, 0, $height, $colorToPaint ); // left line imageline( $this->workingImage, $width-1, 0, $width-1, $height, $colorToPaint ); // right line } $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $width; $this->currentDimensions['height'] = $newHeight; } /** * Flip an image. * * @param bool $horz flip the image in horizontal mode * @param bool $vert flip the image in vertical mode */ function flipImage( $horz = false, $vert = false ) { $sx = $vert ? ( $this->currentDimensions['width'] - 1 ) : 0; $sy = $horz ? ( $this->currentDimensions['height'] - 1 ) : 0; $sw = $vert ? -$this->currentDimensions['width'] : $this->currentDimensions['width']; $sh = $horz ? -$this->currentDimensions['height'] : $this->currentDimensions['height']; $this->workingImage = imagecreatetruecolor( $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $sx, $sy, $this->currentDimensions['width'], $this->currentDimensions['height'], $sw, $sh ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } /** * Rotate an image clockwise or counter clockwise * * @param string $dir Either CW or CCW */ function rotateImage( $dir = 'CW' ) { $angle = ( $dir == 'CW' ) ? 90 : -90; if (function_exists( 'imagerotate' )) { $this->workingImage = imagerotate( $this->oldImage, 360 - $angle, 0 ); // imagerotate() rotates CCW $this->currentDimensions['width'] = imagesx( $this->workingImage ); $this->currentDimensions['height'] = imagesy( $this->workingImage ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } $this->workingImage = imagecreatetruecolor( $this->currentDimensions['height'], $this->currentDimensions['width'] ); imagealphablending( $this->workingImage, false ); imagesavealpha( $this->workingImage, true ); switch ($angle) { case 90: for ( $x = 0; $x < $this->currentDimensions['width']; $x++ ) { for ( $y = 0; $y < $this->currentDimensions['height']; $y++ ) { if ( !imagecopy( $this->workingImage, $this->oldImage, $this->currentDimensions['height'] - $y - 1, $x, $x, $y, 1, 1 ) ) { return false; } } } break; case -90: for ( $x = 0; $x < $this->currentDimensions['width']; $x++ ) { for ( $y = 0; $y < $this->currentDimensions['height']; $y++ ) { if ( !imagecopy( $this->workingImage, $this->oldImage, $y, $this->currentDimensions['width'] - $x - 1, $x, $y, 1, 1 ) ) { return false; } } } break; default: return false; } $this->currentDimensions['width'] = imagesx( $this->workingImage ); $this->currentDimensions['height'] = imagesy( $this->workingImage ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } /** * Inverts working image, used by reflection function * * @access private */ function imageFlipVertical() { $x_i = imagesx( $this->workingImage ); $y_i = imagesy( $this->workingImage ); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { imagecopy( $this->workingImage, $this->workingImage, $x, $y_i - $y - 1, $x, $y, 1, 1 ); } } } /** * Converts hexidecimal color value to rgb values and returns as array/string * * @param string $hex * @param bool $asString * @return array|string */ function hex2rgb( $hex, $asString = false ) { // strip off any leading # if (0 === strpos( $hex, '#' )) { $hex = substr( $hex, 1 ); } elseif (0 === strpos( $hex, '&H' )) { $hex = substr( $hex, 2 ); } // break into hex 3-tuple $cutpoint = ceil( strlen( $hex ) / 2 )-1; $rgb = explode( ':', wordwrap( $hex, $cutpoint, ':', $cutpoint ), 3 ); // convert each tuple to decimal $rgb[0] = ( isset( $rgb[0] ) ? hexdec( $rgb[0] ) : 0 ); $rgb[1] = ( isset( $rgb[1] ) ? hexdec( $rgb[1] ) : 0 ); $rgb[2] = ( isset( $rgb[2] ) ? hexdec( $rgb[2] ) : 0 ); return ( $asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb ); } /** * Based on the Watermark function by Marek Malcherek * http://www.malcherek.de * * @param string $color * @param string $wmFont * @param int $wmSize * @param int $wmOpaque */ function watermarkCreateText( $color, $wmFont, $wmSize = 10, $wmOpaque = 90 ) { if ( empty( $this->watermarkText ) ) { return; } if (!$color) { $color = '000000'; } // set font path $wmFontPath = NGGALLERY_ABSPATH . "fonts/" . $wmFont; if ( !is_readable( $wmFontPath )) { return; } // This function requires both the GD library and the FreeType library. if ( !function_exists( 'ImageTTFBBox' ) ) { return; } $TextSize = @ImageTTFBBox( $wmSize, 0, $wmFontPath, $this->watermarkText ) or die; $TextWidth = abs( $TextSize[2] ) + abs( $TextSize[0] ); $TextHeight = abs( $TextSize[7] ) + abs( $TextSize[1] ); // Create Image for Text $this->workingImage = ImageCreateTrueColor( $TextWidth, $TextHeight ); ImageSaveAlpha( $this->workingImage, true ); ImageAlphaBlending( $this->workingImage, false ); $bgText = imagecolorallocatealpha( $this->workingImage, 255, 255, 255, 127 ); imagefill( $this->workingImage, 0, 0, $bgText ); $wmTransp = 127 -( $wmOpaque * 1.27 ); $rgb = $this->hex2rgb( $color, false ); $TextColor = imagecolorallocatealpha( $this->workingImage, $rgb[0], $rgb[1], $rgb[2], $wmTransp ); // Create Text on image imagettftext( $this->workingImage, $wmSize, 0, 0, abs( $TextSize[5] ), $TextColor, $wmFontPath, $this->watermarkText ); $this->watermarkImgPath = $this->workingImage; return; } /** * Modfied Watermark function by Steve Peart * http://parasitehosting.com/ * * @param string $relPOS * @param int $xPOS * @param int $yPOS */ function watermarkImage( $relPOS = 'botRight', $xPOS = 0, $yPOS = 0 ) { // if it's a resource ID take it as watermark text image if (is_resource( $this->watermarkImgPath ) || $this->watermarkImgPath instanceof GdImage) { $this->workingImage = $this->watermarkImgPath; } else { // Would you really want to use anything other than a png? $this->workingImage = @imagecreatefrompng( $this->watermarkImgPath ); // if it's not a valid file die... if (empty( $this->workingImage ) or ( !$this->workingImage )) { return; } } imagealphablending( $this->workingImage, false ); imagesavealpha( $this->workingImage, true ); $sourcefile_width =imageSX( $this->oldImage ); $sourcefile_height =imageSY( $this->oldImage ); $watermarkfile_width =imageSX( $this->workingImage ); $watermarkfile_height =imageSY( $this->workingImage ); switch (substr( $relPOS, 0, 3 )) { case 'top': $dest_y = 0 + $yPOS; break; case 'mid': $dest_y = ( $sourcefile_height / 2 ) - ( $watermarkfile_height / 2 ); break; case 'bot': $dest_y = $sourcefile_height - $watermarkfile_height - $yPOS; break; default: $dest_y = 0; break; } switch (substr( $relPOS, 3 )) { case 'Left': $dest_x = 0 + $xPOS; break; case 'Center': $dest_x = ( $sourcefile_width / 2 ) - ( $watermarkfile_width / 2 ); break; case 'Right': $dest_x = $sourcefile_width - $watermarkfile_width - $xPOS; break; default: $dest_x = 0; break; } // debug // $this->errmsg = 'X '.$dest_x.' Y '.$dest_y; // $this->showErrorImage(); // if a gif, we have to upsample it to a truecolor image if ($this->format == 'GIF') { $tempimage = imagecreatetruecolor( $sourcefile_width, $sourcefile_height ); imagecopy( $tempimage, $this->oldImage, 0, 0, 0, 0, $sourcefile_width, $sourcefile_height ); $this->newImage = $tempimage; } imagecopy( $this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height ); } /** * Modfied imagecopyresampled function to save transparent images * See : http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/ * * @since 1.9.0 * * @param resource $dst_image * @param resource $src_image * @param int $dst_x * @param int $dst_y * @param int $src_x * @param int $src_y * @param int $dst_w * @param int $dst_h * @param int $src_w * @param int $src_h * @return bool */ function imagecopyresampled( &$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) { // Check if this image is PNG or GIF, then set if Transparent if ( $this->format == 'GIF' || $this->format == 'PNG') { imagealphablending( $dst_image, false ); imagesavealpha( $dst_image, true ); $transparent = imagecolorallocatealpha( $dst_image, 255, 255, 255, 127 ); imagefilledrectangle( $dst_image, 0, 0, $dst_w, $dst_h, $transparent ); } imagecopyresampled( $dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); return true; } } PK!(;%%src/Legacy/lib/tags.phpnu[ 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $new ) ) ) == '' ) { $return_value['message'] = __( 'No new tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // String to array $old_tags = explode( ',', $old ); $new_tags = explode( ',', $new ); // Remove empty element and trim $old_tags = array_filter( $old_tags, 'nggtags_delete_empty_element' ); $new_tags = array_filter( $new_tags, 'nggtags_delete_empty_element' ); // If old/new tag are empty => exit ! if ( empty( $old_tags ) || empty( $new_tags ) ) { $return_value['message'] = __( 'No new/old valid tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } $counter = 0; if ( count( $old_tags ) == count( $new_tags ) ) { // Rename only foreach ( (array) $old_tags as $i => $old_tag ) { $new_name = $new_tags[$i]; // Get term by name $term = get_term_by( 'name', $old_tag, 'ngg_tag' ); if ( !$term ) { continue; } // Get objects from term ID $objects_id = get_objects_in_term( $term->term_id, 'ngg_tag', array( 'fields' => 'all_with_object_id' ) ); // Delete old term wp_delete_term( $term->term_id, 'ngg_tag' ); // Set objects to new term ! (Append no replace) foreach ( (array) $objects_id as $object_id ) { wp_set_object_terms( $object_id, $new_name, 'ngg_tag', true ); } // Clean cache clean_object_term_cache( $objects_id, 'ngg_tag' ); clean_term_cache( $term->term_id, 'ngg_tag' ); // Increment ++$counter; } if ( $counter == 0 ) { $return_value['message'] = __( 'No tag renamed.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( 'Renamed tag(s) «%1$s» to «%2$s»', 'nggallery' ), $old, $new ); } } elseif ( count( $new_tags ) == 1 ) { // Merge // Set new tag $new_tag = $new_tags[0]; if ( empty( $new_tag ) ) { $return_value['message'] = __( 'No valid new tag.', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // Get terms ID from old terms names $terms_id = array(); foreach ( (array) $old_tags as $old_tag ) { $term = get_term_by( 'name', addslashes( $old_tag ), 'ngg_tag' ); $terms_id[] = (int) $term->term_id; } // Get objects from terms ID $objects_id = get_objects_in_term( $terms_id, 'ngg_tag', array( 'fields' => 'all_with_object_id' ) ); // No objects ? exit ! if ( !$objects_id ) { $return_value['message'] = __( 'No objects (post/page) found for specified old tags.', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // Delete old terms foreach ( (array) $terms_id as $term_id ) { wp_delete_term( $term_id, 'ngg_tag' ); } // Set objects to new term ! (Append no replace) foreach ( (array) $objects_id as $object_id ) { wp_set_object_terms( $object_id, $new_tag, 'ngg_tag', true ); ++$counter; } // Test if term is also a category if ( term_exists( $new_tag, 'category' ) ) { // Edit the slug to use the new term $slug = sanitize_title( $new_tag ); self::edit_tag_slug( $new_tag, $slug ); unset( $slug ); } // Clean cache clean_object_term_cache( $objects_id, 'ngg_tag' ); clean_term_cache( $terms_id, 'ngg_tag' ); if ( $counter == 0 ) { $return_value['message'] = __( 'No tag merged.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( 'Merge tag(s) «%1$s» to «%2$s». %3$s objects edited.', 'nggallery' ), $old, $new, $counter ); } } else { // Error $return_value['message'] = sprintf( __( 'Error. Not enough tags provided to rename or merge.', 'nggallery' ), $old ); $return_value['status'] = 'error'; } do_action( 'ngg_manage_tags', $new_tags ); return $return_value; } /** * Delete tags */ static function delete_tags( $delete ) { $return_value = array( 'status' => 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $delete ) ) ) == '' ) { $return_value['message'] = __( 'No tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // In array + filter $delete_tags = explode( ',', $delete ); $delete_tags = array_filter( $delete_tags, 'nggtags_delete_empty_element' ); // Delete tags $counter = 0; foreach ( (array) $delete_tags as $tag ) { $term = get_term_by( 'name', $tag, 'ngg_tag' ); $term_id = (int) $term->term_id; if ( $term_id != 0 ) { wp_delete_term( $term_id, 'ngg_tag' ); clean_term_cache( $term_id, 'ngg_tag' ); ++$counter; } } if ( $counter == 0 ) { $return_value['message'] = __( 'No tag deleted.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( '%1s tag(s) deleted.', 'nggallery' ), $counter ); } do_action( 'ngg_manage_tags', $delete_tags ); return $return_value; } /** * Edit tag slug given the name of the tag */ static function edit_tag_slug( $names = '', $slugs = '' ) { $return_value = array( 'status' => 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $slugs ) ) ) == '' ) { $return_value['message'] = __( 'No new slug(s) specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } $match_names = explode( ',', $names ); $new_slugs = explode( ',', $slugs ); $match_names = array_filter( $match_names, 'nggtags_delete_empty_element' ); $new_slugs = array_filter( $new_slugs, 'nggtags_delete_empty_element' ); if ( count( $match_names ) != count( $new_slugs ) ) { $return_value['message'] = __( 'Tags number and slugs number isn\'t the same!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } else { $counter = 0; foreach ( (array) $match_names as $i => $match_name ) { // Sanitize slug + Escape $new_slug = sanitize_title( $new_slugs[$i] ); // Get term by name $term = get_term_by( 'name', $match_name, 'ngg_tag' ); if ( !$term ) { continue; } // Increment ++$counter; // Update term wp_update_term( $term->term_id, 'ngg_tag', array( 'slug' => $new_slug ) ); // Clean cache clean_term_cache( $term->term_id, 'ngg_tag' ); } } if ( $counter == 0 ) { $return_value['message'] = __( 'No slug edited.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( '%s slug(s) edited.', 'nggallery' ), $counter ); } return $return_value; } /** * Get a list of the tags used by the images */ static function find_all_tags() { return get_terms( 'ngg_tag', '' ); } /** * */ static function find_tags( $args = '', $skip_cache = false ) { $taxonomy = 'ngg_tag'; if ( $skip_cache == true ) { $terms = get_terms( $taxonomy, $args ); } else { $key = md5( serialize( $args ) ); // Get cache if exist // -- if ( $cache = wp_cache_get( 'ngg_get_tags', 'nggallery' ) ) { if ( isset( $cache[$key] ) ) { return apply_filters( 'get_tags', $cache[$key], $args ); } } // Get tags // -- $terms = get_terms( $taxonomy, $args ); if ( empty( $terms ) ) { return array(); } $cache[$key] = $terms; wp_cache_set( 'ngg_get_tags', $cache, 'nggallery' ); } $terms = apply_filters( 'get_tags', $terms, $args ); return $terms; } /** * Get images corresponding to a list of tags * * nggTags::find_images_for_tags() * * @param mixed $taglist * @param string $mode could be 'ASC', 'DESC' or 'RAND' * * @return array of images */ static function find_images_for_tags( $taglist, $mode = "ASC" ) { // return the images based on the tag global $wpdb; // extract it into a array $taglist = explode( ",", $taglist ); if ( ! is_array( $taglist ) ) { $taglist = array( $taglist ); } $taglist = array_map( 'trim', $taglist ); $new_slugarray = array_map( 'sanitize_title', $taglist ); $sluglist = implode( "', '", $new_slugarray ); // Treat % as a literal in the database, for unicode support $sluglist = str_replace( "%", "%%", $sluglist ); // first get all $term_ids with this tag $term_ids = $wpdb->get_col( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug IN (%s) ORDER BY term_id ASC ", $sluglist ) ); $picids = get_objects_in_term( $term_ids, 'ngg_tag' ); if ( $mode == 'RAND' ) { shuffle( $picids ); } // Now lookup in the database $mapper = \Imagely\NGG\DataMappers\Image::get_instance(); $images = array(); foreach ( $picids as $image_id ) { $images[] = $mapper->find( $image_id ); } if ( 'DESC' == $mode ) { $images = array_reverse( $images ); } return $images; } } /** * trim and remove empty element * * @param string $element * @return null|string */ if (!function_exists( 'nggtags_delete_empty_element' )) { function nggtags_delete_empty_element( $element ) { $element = stripslashes( $element ); $element = trim( $element ); if (!empty( $element )) { return $element; } return null; } } PK! { src/Legacy/lib/sitemap.phpnu[images = $images; // first get the content of the post/page $p = get_post( $post_id ); // Backward check for older images $p->post_content = NextGEN_shortcodes::convert_shortcode( $p->post_content ); // Don't process the images in the normal way remove_all_shortcodes(); // We cannot parse at this point a album, just galleries & single images \Imagely\NGG\Display\Shortcodes::add( 'singlepic', array( &$this, 'add_images' ) ); \Imagely\NGG\Display\Shortcodes::add( 'thumb', array( &$this, 'add_images' ) ); \Imagely\NGG\Display\Shortcodes::add( 'nggallery', array( &$this, 'add_gallery' ) ); \Imagely\NGG\Display\Shortcodes::add( 'imagebrowser', array( &$this, 'add_gallery' ) ); \Imagely\NGG\Display\Shortcodes::add( 'slideshow', array( &$this, 'add_gallery' ) ); // Search now for shortcodes do_shortcode( $p->post_content ); return $this->images; } /** * Parse the gallery/imagebrowser/slideshow shortcode and return all images into an array * * @TODO: replace or remove this function, it's return value isn't even linked to the queries it performs * @param string $atts * @return string */ function add_gallery( $atts ) { global $wpdb; $tmp = shortcode_atts( array( 'id' => 0 ), $atts, 'ngg' ); extract( $tmp ); $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); if (!is_numeric( $id )) { $tmp = $gallery_mapper->select()->where( array( 'name = %s', $id ) )->limit( 1 )->run_query(); if (( $gallery = array_shift( $tmp ) )) { $id = $gallery->{$gallery->id_field}; } else { $id = null; } } if ($id) { $gallery_storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $image_mapper = \Imagely\NGG\DataMappers\Image::get_instance(); foreach ($image_mapper->find_all_for_gallery( $id ) as $image) { $this->images[] = array( 'src' => $gallery_storage->get_image_url( $image ), 'title' => $image->title, 'alt' => $image->alttext, ); } } return ''; } /** * Parse the single image shortcode and return all images into an array * * @param array $atts * @return string */ function add_images( $atts ) { $tmp = shortcode_atts( array( 'id' => 0 ), $atts, 'ngg' ); extract( $tmp ); // make an array out of the ids (for thumbs shortcode)) $pids = explode( ',', $id ); // Some error checks if ( count( $pids ) == 0 ) { return ''; } $images = nggdb::find_images_in_list( $pids ); foreach ($images as $image) { $newimage = array(); $newimage['src'] = $newimage['sc'] = $image->imageURL; if ( !empty( $image->title ) ) { $newimage['title'] = $image->title; } if ( !empty( $image->alttext ) ) { $newimage['alt'] = $image->alttext; } $this->images[] = $newimage; } return ''; } } $nggSitemaps = new nggSitemaps(); PK!_ǣf""src/Legacy/lib/media-rss.phpnu[\n"; } /** * Get the URL of the general media RSS */ public static function get_mrss_url(): string { return NGGALLERY_URLPATH . 'xml/media-rss.php'; } /** * Get the URL of a gallery media RSS */ public static function get_gallery_mrss_url( $gid, $prev_next = false ): string { return self::get_mrss_url() . '?' . ( 'gid=' . $gid . ( $prev_next ? '&prev_next=true' : '' ) . '&mode=gallery' ); } /** * Get the URL of the media RSS for last pictures */ public static function get_last_pictures_mrss_url( $page = 0, $show = 30 ): string { return self::get_mrss_url() . '?' . ( 'show=' . $show . '&page=' . $page . '&mode=last_pictures' ); } /** * Get the XML node corresponding to the last pictures registered * * @param int $page The current page (defaults to 0) * @param int $show The number of pictures to include in one field (default 30) */ public static function get_last_pictures_mrss( $page = 0, $show = 30 ) { $images = nggdb::find_last_images( $page, $show ); $title = stripslashes( get_option( 'blogname' ) ); $description = stripslashes( get_option( 'blogdescription' ) ); $link = site_url(); $prev_link = ( $page > 0 ) ? self::get_last_pictures_mrss_url( $page-1, $show ) : ''; $next_link = count( $images )!=0 ? self::get_last_pictures_mrss_url( $page+1, $show ) : ''; return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node corresponding to a gallery * * @param $gallery (object) The gallery to include in RSS * @param $prev_gallery (object) The previous gallery to link in RSS (null if none) * @param $next_gallery (object) The next gallery to link in RSS (null if none) */ public static function get_gallery_mrss( $gallery, $prev_gallery = null, $next_gallery = null ) { $ngg_options = nggGallery::get_option( 'ngg_options' ); // Set sort order value, if not used (upgrade issue) $ngg_options['galSort'] = ( $ngg_options['galSort'] ) ? $ngg_options['galSort'] : 'pid'; $ngg_options['galSortDir'] = ( $ngg_options['galSortDir'] == 'DESC' ) ? 'DESC' : 'ASC'; $title = stripslashes( \Imagely\NGG\Display\I18N::translate( $gallery->title ) ); $description = stripslashes( \Imagely\NGG\Display\I18N::translate( $gallery->galdesc ) ); $link = self::get_permalink( $gallery->pageid ); $prev_link = ( $prev_gallery != null ) ? self::get_gallery_mrss_url( $prev_gallery->gid, true ) : ''; $next_link = ( $next_gallery != null ) ? self::get_gallery_mrss_url( $next_gallery->gid, true ) : ''; $images = nggdb::get_gallery( $gallery->gid, $ngg_options['galSort'], $ngg_options['galSortDir'] ); return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node corresponding to an album * * @param object $album The album to include in RSS */ public static function get_album_mrss( $album ) { $nggdb = new nggdb(); $title = stripslashes( \Imagely\NGG\Display\I18N::translate( $album->name ) ); $description = ''; $link = self::get_permalink( 0 ); $prev_link = ''; $next_link = ''; $images = $nggdb->find_images_in_album( $album->id ); return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node */ public static function get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ) { if ($prev_link != '' || $next_link != '') { $out = "\n"; } else { $out = "\n"; } $out .= "\t\n"; $out .= self::get_generator_mrss_node(); $out .= self::get_title_mrss_node( $title ); $out .= self::get_description_mrss_node( $description ); $out .= self::get_link_mrss_node( $link ); if ($prev_link != '' || $next_link != '') { $out .= self::get_self_node( self::get_mrss_url() ); } if ($prev_link!='') { $out .= self::get_previous_link_mrss_node( $prev_link ); } if ($next_link!='') { $out .= self::get_next_link_mrss_node( $next_link ); } foreach ($images as $image) { $out .= self::get_image_mrss_node( $image ); } $out .= "\t\n"; $out .= "\n"; return $out; } /** * Get the XML node */ public static function get_generator_mrss_node( $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_title_mrss_node( $title, $indent = "\t\t" ) { return $indent . "<title>" . $title . "\n"; } /** * Get the XML node */ public static function get_description_mrss_node( $description, $indent = "\t\t" ) { return $indent . "" . $description . "\n"; } /** * Get the XML node */ public static function get_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_self_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_previous_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_next_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "
    ' . "\n"; } /** * Show a system messages */ static function show_message( $message, $message_id = null ) { echo '

    ' . $message . '

    ' . "\n"; } /** * nggGallery::get_option() - get the options and overwrite them with custom meta settings * * @param string $key * @return array $options */ static function get_option( $key ) { global $post; // get first the options from the database $options = get_option( $key ); if ( $post == null ) { return $options; } // Get all key/value data for the current post. $meta_array = get_post_custom(); // Ensure that this is a array if ( !is_array( $meta_array ) ) { $meta_array = array( $meta_array ); } // assign meta key to db setting key $meta_tags = array( 'string' => array( 'ngg_gal_ShowOrder' => 'galShowOrder', 'ngg_gal_Sort' => 'galSort', 'ngg_gal_SortDirection' => 'galSortDir', 'ngg_gal_ShowDescription' => 'galShowDesc', 'ngg_ir_Audio' => 'irAudio', 'ngg_ir_Overstretch' => 'irOverstretch', 'ngg_ir_Transition' => 'irTransition', 'ngg_ir_Backcolor' => 'irBackcolor', 'ngg_ir_Frontcolor' => 'irFrontcolor', 'ngg_ir_Lightcolor' => 'irLightcolor', 'ngg_slideshowFX' => 'slideFx', ), 'int' => array( 'ngg_gal_Images' => 'galImages', 'ngg_gal_Columns' => 'galColumns', 'ngg_paged_Galleries' => 'galPagedGalleries', 'ngg_ir_Width' => 'irWidth', 'ngg_ir_Height' => 'irHeight', 'ngg_ir_Rotatetime' => 'irRotatetime', ), 'bool' => array( 'ngg_gal_ShowSlide' => 'galShowSlide', 'ngg_gal_ImageBrowser' => 'galImgBrowser', 'ngg_gal_HideImages' => 'galHiddenImg', 'ngg_ir_Shuffle' => 'irShuffle', 'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay', 'ngg_ir_ShowNavigation' => 'irShownavigation', 'ngg_ir_ShowWatermark' => 'irWatermark', 'ngg_ir_Kenburns' => 'irKenburns', ), ); foreach ($meta_tags as $typ => $meta_keys) { foreach ($meta_keys as $key => $db_value) { // if the kex exist overwrite it with the custom field if (array_key_exists( $key, $meta_array )) { switch ($typ) { case 'string': $options[$db_value] = (string) esc_attr( $meta_array[$key][0] ); break; case 'int': $options[$db_value] = (int) $meta_array[$key][0]; break; case 'bool': $options[$db_value] = (bool) $meta_array[$key][0]; break; } } } } return $options; } /** * Renders a section of user display code. The code is first checked for in the current theme display directory * before defaulting to the plugin * Call the function : nggGallery::render ('template_name', array ('var1' => $var1, 'var2' => $var2)); * * @autor John Godley * @param string $template_name Name of the template file (without extension) * @param string $vars Array of variable name=>value that is available to the display code (optional) * @param bool $callback In case we check we didn't find template we tested it one time more (optional) * @return void **/ static function render( $template_name, $vars = array(), $callback = false ) { $vars['template'] = $template_name; echo \Imagely\NGG\DisplayedGallery\Renderer::get_instance()->display_images( $vars ); } /** * Captures an section of user display code. * * @autor John Godley * @param string $template_name Name of the template file (without extension) * @param string $vars Array of variable name=>value that is available to the display code (optional) * @deprecated Use Imagely\NGG\DisplayedGallery\Renderer class * @return string **/ static function capture( $template_name, $vars = array() ) { $vars['template'] = $template_name; return \Imagely\NGG\DisplayedGallery\Renderer::get_instance()->display_images( $vars ); } /** * Returns the path to lib/gd.thumbnail.inc.php * * @return string Path to the selected library */ static function graphic_library() { return NGGALLERY_ABSPATH . '/lib/gd.thumbnail.inc.php'; } /** * Support for i18n with wpml, polyglot or qtrans * * @param string $in * @param string $name (optional) required for wpml to determine the type of translation * @return string $in localized */ static function i18n( $in, $name = null ) { if ( function_exists( 'langswitch_filter_langs_with_message' ) ) { $in = langswitch_filter_langs_with_message( $in ); } if ( function_exists( 'polyglot_filter' )) { $in = polyglot_filter( $in ); } if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' )) { $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); } if (is_string( $name ) && !empty( $name ) && function_exists( 'icl_translate' )) { $in = icl_translate( 'plugin_ngg', $name, $in, true ); } $in = apply_filters( 'localization', $in ); return $in; } /** * Check the memory_limit and calculate a recommended memory size * * @since V1.2.0 * @return string message about recommended image size */ static function check_memory_limit() { if ( ( function_exists( 'memory_get_usage' ) ) && ( ini_get( 'memory_limit' ) ) ) { // get memory limit $memory_limit = ini_get( 'memory_limit' ); if ($memory_limit != '') { $memory_limit = substr( $memory_limit, 0, -1 ) * 1024 * 1024; } // calculate the free memory $freeMemory = $memory_limit - memory_get_usage(); // build the test sizes $sizes = array(); $sizes[] = array( 'width' => 800, 'height' => 600 ); $sizes[] = array( 'width' => 1024, 'height' => 768 ); $sizes[] = array( 'width' => 1280, 'height' => 960 ); // 1MP $sizes[] = array( 'width' => 1600, 'height' => 1200 ); // 2MP $sizes[] = array( 'width' => 2016, 'height' => 1512 ); // 3MP $sizes[] = array( 'width' => 2272, 'height' => 1704 ); // 4MP $sizes[] = array( 'width' => 2560, 'height' => 1920 ); // 5MP // test the classic sizes foreach ($sizes as $size) { // very, very rough estimation if ($freeMemory < round( $size['width'] * $size['height'] * 5.09 )) { $result = sprintf( __( 'Note : Based on your server memory limit you should not upload larger images then %d x %d pixel', 'nggallery' ), $size['width'], $size['height'] ); return $result; } } } return ''; } /** * Check for extended capabilites. Must previously registers with add_ngg_capabilites() * * @since 1.5.0 * @param string $capability * @return bool $result of capability check */ static function current_user_can( $capability ) { global $_ngg_capabilites; if ( is_array( $_ngg_capabilites ) ) { if ( in_array( $capability, $_ngg_capabilites ) ) { return current_user_can( $capability ); } } return true; } } PK!7Wsrc/Legacy/xml/media-rss.phpnu[find_all(); if ( count( $galleries ) == 0 ) { header( 'content-type:text/plain;charset=utf-8' ); print esc_html( __( 'No galleries have been yet created.', 'nggallery' ) ); exit; } // Get additional parameters $gid = isset( $_GET['gid'] ) ? (int) $_GET['gid'] : 0; // if no gid is present, take the first gallery if ( $gid == 0 ) { $first = current( $galleries ); $gid = $first->gid; } // account for the the odd logic used in selecting galleries here if ( $gid == 1 ) { $gid = 0; } elseif ( $gid > 1 ) { --$gid; } // Set the main gallery object $gallery = $galleries[ $gid ]; if ( ! isset( $gallery ) || $gallery == null ) { header( 'content-type:text/plain;charset=utf-8' ); print esc_html( sprintf( __( 'The gallery ID=%s does not exist.', 'nggallery' ), intval( $gid ) ) ); exit; } // show other galleries if needed $prev_next = 'true' === $_GET['prev_next']; $prev_gallery = $next_gallery = null; // Get previous and next galleries if required if ( $prev_next ) { reset( $galleries ); while ( current( $galleries ) ) { if ( key( $galleries ) == $gid ) { break; } next( $galleries ); } // one step back $prev_gallery = prev( $galleries ); // two step forward... Could be easier ? How ? next( $galleries ); $next_gallery = next( $galleries ); } $rss = nggMediaRss::get_gallery_mrss( $gallery, $prev_gallery, $next_gallery ); } elseif ( $mode == 'album' ) { // Get additional parameters $aid = isset( $_GET['aid'] ) ? (int) $_GET['aid'] : 0; if ( $aid == 0 ) { header( 'content-type:text/plain;charset=utf-8' ); print esc_html( __( 'No album ID has been provided as parameter', 'nggallery' ) ); exit; } // Get the album object $nggdb = new nggdb(); $album = $nggdb->find_album( $aid ); if ( ! isset( $album ) || $album == null ) { header( 'content-type:text/plain;charset=utf-8' ); printf( __( 'The album ID=%s does not exist.', 'nggallery' ), intval( $aid ) ); exit; } $rss = nggMediaRss::get_album_mrss( $album ); } else { header( 'content-type:text/plain;charset=utf-8' ); echo __( 'Invalid MediaRSS command', 'nggallery' ); exit; } // Output header for media RSS header( 'content-type:text/xml;charset=utf-8' ); echo "\n"; echo $rss; PK!нl  src/Legacy/admin/wpmu.phpnu[set( $option_name, $option_value ); } if ( isset( $_POST['gallerypath'] ) ) { $new_gallerypath = trailingslashit( $_POST['gallerypath'] ); $fs = \Imagely\NGG\Util\Filesystem::get_instance(); $root = $fs->get_document_root( 'galleries' ); if ( $root[0] != DIRECTORY_SEPARATOR ) { $root = DIRECTORY_SEPARATOR . $root; } $gallery_abspath = $fs->get_absolute_path( $fs->join_paths( $root, $new_gallerypath ) ); if ( $gallery_abspath[0] != DIRECTORY_SEPARATOR ) { $gallery_abspath = DIRECTORY_SEPARATOR . $gallery_abspath; } if ( strpos( $gallery_abspath, $root ) === false ) { $messagetext[] = sprintf( __( 'Gallery path must be located in %s.', 'nggallery' ), $root ); } elseif ( preg_match( '\.+[/\\]', $new_gallerypath ) ) { $messagetext[] = __( 'Gallery path cannot include relative paths.', 'nggallery' ); } else { $ngg_options->set( 'gallerypath', $new_gallerypath ); $ngg_options->save(); } } $ngg_options->save(); $messagetext[] = __( 'Updated successfully.', 'nggallery' ); $messagetext = implode( ' ', $messagetext ); } // message windows. if ( ! empty( $messagetext ) ) { echo '

    ' . esc_html( $messagetext ) . '

    '; } ?>


    wp-content/uploads/sites/%BLOG_ID%/nggallery/', __( 'The default setting should be %s', 'nggallery' ) ); ?>
    : get( 'wpmuQuotaCheck' ) ); ?> />
    : get( 'wpmuZipUpload' ) ); ?> />
    : get( 'wpmuImportFolder' ) ); ?> />
    : get( 'wpmuRoles' ) ); ?> />
    id ) ) { $image = $image->id; } elseif ( isset( $image->pid ) ) { $image = $image->pid; } } $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); // XXX NextGEN Legacy wasn't handling watermarks or reflections at this stage, so we're forcefully disabling them to maintain compatibility. $params = [ 'watermark' => false, 'reflection' => false, ]; $result = $storage->generate_thumbnail( $image, $params ); if ( ! $result ) { // XXX there isn't any error handling unfortunately at the moment in the generate_thumbnail functions, need a way to return proper error status. return __( 'Error while creating thumbnail.', 'nggallery' ); } // success. return '1'; } /** * nggAdmin::resize_image() - create a new image, based on the height /width * * @class nggAdmin * @param object|int $image Contain all information about the image or the id * @param integer $width optional * @param integer $height optional * @return string result code */ static function resize_image( $image, $width = 0, $height = 0 ) { if ( is_object( $image ) ) { if ( isset( $image->id ) ) { $image = $image->id; } elseif ( isset( $image->pid ) ) { $image = $image->pid; } } $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); // XXX maybe get rid of this...it's needed to get width/height defaults, placing these directly in generate_image_size could have unwanted consequences. $settings = \Imagely\NGG\Settings\Settings::get_instance(); // XXX NextGEN Legacy wasn't handling watermarks or reflections at this stage, so we're forcefully disabling them to maintain compatibility. $params = [ 'watermark' => false, 'reflection' => false, ]; if ( $width > 0 ) { $params['width'] = $width; } else { $params['width'] = $settings->get( 'imgWidth' ); } if ( $height > 0 ) { $params['height'] = $height; } else { $params['height'] = $settings->get( 'imgHeight' ); } $result = $storage->generate_image_size( $image, 'full', $params ); if ( ! $result ) { // XXX there isn't any error handling unfortunately at the moment in the generate_thumbnail functions, need a way to return proper error status. return __( 'Error while resizing image.', 'nggallery' ); } // success. return '1'; } /** * Rotated/Flip an image based on the orientation flag or a definded angle * * @param int|object $image * @param string|bool $dir (optional) CW (clockwise)or CCW (counter clockwise), if set to false, the exif flag will be used * @param string|bool $flip (optional) Either false | V (flip vertical) | H (flip horizontal) * @return string result code */ static function rotate_image( $image, $dir = false, $flip = false ) { if ( is_object( $image ) ) { if ( isset( $image->id ) ) { $image = $image->id; } elseif ( isset( $image->pid ) ) { $image = $image->pid; } } $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); // XXX NextGEN Legacy wasn't handling watermarks or reflections at this stage, so we're forcefully disabling them to maintain compatibility. $params = [ 'watermark' => false, 'reflection' => false, ]; $rotation = null; if ( $dir === 'CW' ) { $rotation = 90; } elseif ( $dir === 'CCW' ) { $rotation = -90; } // if you didn't define a rotation, we look for the orientation flag in EXIF. elseif ( $dir === false ) { $meta = new nggMeta( $image ); $exif = $meta->get_EXIF(); if ( isset( $exif['Orientation'] ) ) { switch ( $exif['Orientation'] ) { case 5: // vertical flip + 90 rotate right. $flip = 'V'; case 6: // 90 rotate right $rotation = 90; break; case 7: // horizontal flip + 90 rotate right. $flip = 'H'; case 8: // 90 rotate left. $rotation = -90; break; case 4: // vertical flip. $flip = 'V'; break; case 3: // 180 rotate left. $rotation = -180; break; case 2: // horizontal flip. $flip = 'H'; break; case 1: // no action in the case it doesn't need a rotation. default: return '0'; break; } } else { return '0'; } } if ( $rotation != null ) { $params['rotation'] = $rotation; } if ( $flip != null ) { $params['flip'] = $flip; } $result = $storage->generate_image_size( $image, 'full', $params ); if ( ! $result ) { // XXX there isn't any error handling unfortunately at the moment in the generate_thumbnail functions, need a way to return proper error status. return __( 'Error while rotating image.', 'nggallery' ); } // success. return '1'; } /** * nggAdmin::set_watermark() - set the watermark for the image * * @class nggAdmin * @param object|int $image Contain all information about the image or the id * @return string result code */ static function set_watermark( $image ) { if ( is_object( $image ) ) { if ( isset( $image->id ) ) { $image = $image->id; } elseif ( isset( $image->pid ) ) { $image = $image->pid; } } $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); // XXX NextGEN Legacy was only handling watermarks at this stage, so we're forcefully disabling all else. $params = [ 'watermark' => true, 'reflection' => false, 'crop' => false, ]; $result = $storage->generate_image_size( $image, 'full', $params ); if ( ! $result ) { // XXX there isn't any error handling unfortunately at the moment in the generate_thumbnail functions, need a way to return proper error status. return __( 'Error while applying watermark to image.', 'nggallery' ); } // success. return '1'; } /** * Recover image from backup copy and reprocess it * * @class nggAdmin * @since 1.5.0 * @param object|int $image Contain all information about the image or the id * @return string result code */ static function recover_image( $image ) { return \Imagely\NGG\DataStorage\Manager::get_instance()->recover_image( $image ); } /** * Add images to database * * @class nggAdmin * @param int $galleryID * @param array $imageslist * @return array $image_ids IDs which have been successfully added */ public static function add_Images( $galleryID, $imageslist ) { global $ngg; $image_ids = []; if ( is_array( $imageslist ) ) { foreach ( $imageslist as $picture ) { // filter function to rename/change/modify image before. $picture = apply_filters( 'ngg_pre_add_new_image', $picture, $galleryID ); // strip off the extension of the filename. $path_parts = \Imagely\NGG\Display\I18N::mb_pathinfo( $picture ); $alttext = ( ! isset( $path_parts['filename'] ) ) ? substr( $path_parts['basename'], 0, strpos( $path_parts['basename'], '.' ) ) : $path_parts['filename']; // save it to the database. $pic_id = nggdb::add_image( $galleryID, $picture, '', $alttext ); if ( \Imagely\NGG\Settings\Settings::get_instance()->imgBackup && ! empty( $pic_id ) ) { $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $storage->backup_image( $pic_id ); } if ( ! empty( $pic_id ) ) { $image_ids[] = $pic_id; } // add the metadata. self::import_MetaData( $pic_id ); // auto rotate. self::rotate_image( $pic_id ); // Autoresize image if required. if ( $ngg->options['imgAutoResize'] ) { $imagetmp = nggdb::find_image( $pic_id ); $sizetmp = @getimagesize( $imagetmp->imagePath ); $widthtmp = $ngg->options['imgWidth']; $heighttmp = $ngg->options['imgHeight']; if ( ( $sizetmp[0] > $widthtmp && $widthtmp ) || ( $sizetmp[1] > $heighttmp && $heighttmp ) ) { self::resize_image( $pic_id ); } } // action hook for post process after the image is added to the database. $image = [ 'id' => $pic_id, 'filename' => $picture, 'galleryID' => $galleryID, ]; do_action( 'ngg_added_new_image', $image ); } } // delete dirsize after adding new images. delete_transient( 'dirsize_cache' ); do_action( 'ngg_after_new_images_added', $galleryID, $image_ids ); return $image_ids; } /** * Import some meta data into the database (if avialable) * * @class nggAdmin * @param array|int $imagesIds * @return string result code */ static function import_MetaData( $imagesIds ) { global $wpdb; require_once NGGALLERY_ABSPATH . '/lib/image.php'; if ( ! is_array( $imagesIds ) ) { $imagesIds = [ $imagesIds ]; } foreach ( $imagesIds as $imageID ) { // Get the image. $image = null; if ( is_int( $imageID ) ) { $image = \Imagely\NGG\DataMappers\Image::get_instance()->find( $imageID ); } else { $image = $imageID; } if ( $image ) { $meta = self::get_MetaData( $image ); // get the title. $alttext = empty( $meta['title'] ) ? $image->alttext : $meta['title']; // get the caption / description field. $description = empty( $meta['caption'] ) ? $image->description : $meta['caption']; // get the file date/time from exif. $timestamp = $meta['timestamp']; // first update database. $result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->nggpictures SET alttext = %s, description = %s, imagedate = %s WHERE pid = %d", $alttext, $description, $timestamp, $image->pid ) ); if ( $result === false ) { return ' ' . esc_html( $image->filename ) . ' ' . __( '(Error : Couldn\'t not update data base)', 'nggallery' ) . ''; } // this flag will inform us that the import is already one time performed. $meta['common']['saved'] = true; $result = nggdb::update_image_meta( $image->pid, $meta['common'] ); if ( $result === false ) { return ' ' . esc_html( $image->filename ) . ' ' . __( '(Error : Couldn\'t not update meta data)', 'nggallery' ) . ''; } // add the tags if we found some. if ( $meta['keywords'] ) { $taglist = explode( ',', $meta['keywords'] ); wp_set_object_terms( $image->pid, $taglist, 'ngg_tag' ); } } else { return ' ' . esc_html( $image->filename ) . ' ' . __( '(Error : Couldn\'t not find image)', 'nggallery' ) . ''; // error check. } } return '1'; } /** * nggAdmin::get_MetaData() * * @class nggAdmin * @require NextGEN Meta class * @param int|object $image_or_id * @return array metadata */ static function get_MetaData( $image_or_id ) { require_once NGGALLERY_ABSPATH . '/lib/meta.php'; $meta = []; $pdata = new nggMeta( $image_or_id ); $meta['title'] = trim( $pdata->get_META( 'title' ) ); $meta['caption'] = trim( $pdata->get_META( 'caption' ) ); $meta['keywords'] = trim( $pdata->get_META( 'keywords' ) ); $meta['timestamp'] = $pdata->get_date_time(); // this contain other useful meta information. $meta['common'] = $pdata->get_common_meta(); // hook for addon plugin to add more meta fields. $meta = apply_filters( 'ngg_get_image_metadata', $meta, $pdata ); return $meta; } /** * nggAdmin::import_gallery() * TODO: Check permission of existing thumb folder & images * * @param string $galleryfolder contains relative path to the gallery itself * @param int $gallery_id * @return void */ public static function import_gallery( $galleryfolder, $gallery_id = null ) { global $wpdb, $user_ID; // get the current user ID. wp_get_current_user(); $created_msg = ''; // remove trailing slash at the end, if somebody use it. $galleryfolder = untrailingslashit( $galleryfolder ); $fs = \Imagely\NGG\Util\Filesystem::get_instance(); if ( is_null( $gallery_id ) ) { $gallerypath = $fs->join_paths( $fs->get_document_root( 'content' ), $galleryfolder ); } else { $storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $gallerypath = $storage->get_gallery_abspath( $gallery_id ); } if ( ! is_dir( $gallerypath ) ) { nggGallery::show_error( sprintf( __( 'Directory %s doesn`t exist!', 'nggallery' ), esc_html( $gallerypath ) ) ); return; } // read list of images. $new_imageslist = self::scandir( $gallerypath ); if ( empty( $new_imageslist ) ) { nggGallery::show_message( sprintf( __( 'Directory %s contains no pictures', 'nggallery' ), esc_html( $gallerypath ) ) ); return; } // take folder name as gallery name. $galleryname = basename( $galleryfolder ); $galleryname = apply_filters( 'ngg_gallery_name', $galleryname ); // check for existing gallery folder. if ( is_null( $gallery_id ) ) { $gallery_id = $wpdb->get_var( $wpdb->prepare( "SELECT gid FROM {$wpdb->nggallery} WHERE path = %s", [ $galleryfolder ] ) ); } if ( ! $gallery_id ) { // now add the gallery to the database. $gallery_id = nggdb::add_gallery( $galleryname, $galleryfolder, '', 0, 0, $user_ID ); if ( ! $gallery_id ) { nggGallery::show_error( __( 'Database error. Could not add gallery!', 'nggallery' ) ); return; } else { do_action( 'ngg_created_new_gallery', $gallery_id ); } $created_msg = sprintf( _n( 'Gallery %s successfully created!', 'Galleries %s successfully created!', 1, 'nggallery' ), esc_html( $galleryname ) ); } // Look for existing image list. $old_imageslist = $wpdb->get_col( $wpdb->prepare( "SELECT `filename` FROM {$wpdb->nggpictures} WHERE `galleryid` = %d", [ $gallery_id, ] ) ); // if no images are there, create empty array. if ( $old_imageslist == null ) { $old_imageslist = []; } // check difference. $new_images = array_diff( $new_imageslist, $old_imageslist ); // all images must be valid files. foreach ( $new_images as $key => $picture ) { // filter function to rename/change/modify image before. $picture = apply_filters( 'ngg_pre_add_new_image', $picture, $gallery_id ); $new_images[ $key ] = $picture; if ( ! @getimagesize( $gallerypath . '/' . $picture ) ) { unset( $new_images[ $key ] ); @unlink( $gallerypath . '/' . $picture ); } } // add images to database. $image_ids = self::add_Images( $gallery_id, $new_images ); do_action( 'ngg_after_new_images_added', $gallery_id, $image_ids ); // add the preview image if needed. self::set_gallery_preview( $gallery_id ); // now create thumbnails. self::do_ajax_operation( 'create_thumbnail', $image_ids, __( 'Create new thumbnails', 'nggallery' ) ); // TODO:Message will not shown, because AJAX routine require more time, message should be passed to AJAX. $message = $created_msg . sprintf( _n( '%s picture successfully added', '%s pictures successfully added', count( $image_ids ), 'nggallery' ), count( $image_ids ) ); $message .= ' ['; $message .= __( 'Edit gallery', 'nggallery' ); $message .= ']'; nggGallery::show_message( $message ); return; } /** * Capability check. Check is the ID fit's to the user_ID * * @class nggAdmin * @param int $check_ID is the user_id * @return bool $result */ static function can_manage_this_gallery( $check_ID ) { global $user_ID, $wp_roles; if ( ! current_user_can( 'NextGEN Manage others gallery' ) ) { // get the current user ID. wp_get_current_user(); if ( $user_ID != $check_ID ) { return false; } } return true; } /** * Initate the Ajax operation * * @class nggAdmin * @param string $operation name of the function which should be executed * @param array $image_array * @param string $title name of the operation * @return string the javascript output */ static function do_ajax_operation( $operation, $image_array, $title = '' ) { if ( ! is_array( $image_array ) || empty( $image_array ) ) { return ''; } $js_array = implode( '","', $image_array ); // send out some JavaScript, which initate the ajax operation. ob_start(); ?> find( $galleryID ) ) ) { if ( ! $gallery->previewpic ) { $image_mapper = \Imagely\NGG\DataMappers\Image::get_instance(); $image = $image_mapper->select() ->where( [ 'galleryid = %d', $galleryID ] ) ->where( [ 'exclude != 1' ] ) ->order_by( $image_mapper->get_primary_key_column() ) ->limit( 1 ) ->run_query(); if ( $image ) { $gallery->previewpic = $image->{$image->id_field}; $gallery_mapper->save( $gallery ); } } } } /** * Return a JSON coded array of Image ids for a requested gallery * * @class nggAdmin * @param int $galleryID * @return string|int (JSON) */ static function get_image_ids( $galleryID ) { if ( ! function_exists( 'json_encode' ) ) { return( -2 ); } $gallery = nggdb::get_ids_from_gallery( $galleryID, 'pid', 'ASC', false ); header( 'Content-Type: text/plain; charset=' . get_option( 'blog_charset' ), true ); return json_encode( $gallery ); } /** * Deprecated function, restored to fix compatibility with "NextGen Public Uploader" * * @deprecated * @class nggAdmin * @param string $filename * @return bool $result */ function chmod( $filename = '' ) { $stat = @stat( dirname( $filename ) ); $perms = $stat['mode'] & 0000666; if ( @chmod( $filename, $perms ) ) { return true; } return false; } } // END class nggAdmin // XXX temporary...used as a quick fix to refresh I_Settings_Manager when the nextgen option is updated manually in order to run Hooks etc. function ngg_refreshSavedSettings(): bool { $settings = \Imagely\NGG\Settings\Settings::get_instance(); if ( $settings != null ) { $width = $settings->get( 'thumbwidth' ); $height = $settings->get( 'thumbheight' ); $new_dimension = "{$width}x{$height}"; $dimensions = (array) $settings->get( 'thumbnail_dimensions' ); if ( ! in_array( $new_dimension, $dimensions ) ) { $dimensions[] = $new_dimension; $settings->set( 'thumbnail_dimensions', $dimensions ); $settings->save(); return true; } } return false; } PK!4, . . +src/Legacy/admin/css/jquery.ui.tabs.min.cssnu[@media projection,screen{.ui-tabs-hide{display:none}}@media print{.ui-tabs-nav{display:none}}#slider{border-color:#ebebeb #ccc #ccc #ebebeb;border-style:solid;border-width:1px;margin:15px 15% 0 15px;padding:2px}#tabs{display:block;background:#f1f1f1 none repeat scroll 0;font-size:14px;overflow:hidden}.ui-tabs-nav{list-style:none;margin:0;padding:0 0 0 10px}.ui-tabs-nav:after{display:block;clear:both;content:" "}.ui-tabs-nav li{float:left;padding:6px 5px;min-width:84px;margin:2px 2px 0 1px!important;text-decoration:none;list-style:none}.ui-tabs-nav a,.ui-tabs-nav a span{display:block;padding:0 1px}.ui-tabs-nav a{margin:1px 0 0;padding-left:0;color:#2583ad;line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap;outline:0}.ui-tabs-nav .ui-tabs-selected{background:#6d6d6d url(../images/menu-bits.gif) repeat-x scroll left top;border-color:#6d6d6d;color:#fff;text-shadow:0 -1px 0 #666;-moz-border-radius-topright:6px;-khtml-border-top-right-radius:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-topleft:6px;-khtml-border-top-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px}.ui-tabs-selected a,.ui-tabs-selected a:hover{color:#fff!important}.ui-tabs-nav .ui-tabs-selected a,.ui-tabs-nav .ui-tabs-selected a:hover{position:relative;top:1px;z-index:2;margin-top:0}.ui-tabs-nav li a:hover{color:#d54e21}.ui-tabs-nav a span{width:64px;min-width:64px;height:18px;min-height:18px;padding-top:6px;padding-right:0}*>.ui-tabs-nav a span{width:auto;height:auto}.ui-tabs-nav .ui-tabs-selected a span{padding-bottom:1px}.ui-tabs-nav .ui-tabs-selected a,.ui-tabs-nav a:active,.ui-tabs-nav a:focus,.ui-tabs-nav a:hover{background-position:100% -150px}.ui-tabs-nav .ui-tabs-disabled a:active,.ui-tabs-nav .ui-tabs-disabled a:focus,.ui-tabs-nav .ui-tabs-disabled a:hover,.ui-tabs-nav a{background-position:100% -100px}.ui-tabs-nav .ui-tabs-selected a span,.ui-tabs-nav a:active span,.ui-tabs-nav a:focus span,.ui-tabs-nav a:hover span{background-position:0 -50px}.ui-tabs-nav .ui-tabs-disabled a:active span,.ui-tabs-nav .ui-tabs-disabled a:focus span,.ui-tabs-nav .ui-tabs-disabled a:hover span,.ui-tabs-nav a span{background-position:0 0}.ui-tabs-nav .ui-tabs-disabled a:link,.ui-tabs-nav .ui-tabs-disabled a:visited,.ui-tabs-nav .ui-tabs-selected a:link,.ui-tabs-nav .ui-tabs-selected a:visited{cursor:text}.ui-tabs-nav .ui-tabs-unselect a:active,.ui-tabs-nav .ui-tabs-unselect a:focus,.ui-tabs-nav .ui-tabs-unselect a:hover,.ui-tabs-nav a:active,.ui-tabs-nav a:focus,.ui-tabs-nav a:hover{cursor:pointer}.ui-tabs-disabled{opacity:.4}.ui-tabs-panel{border-top:1px solid #97a5b0!important;padding:1em 8px;background:#fff;border:none!important;height:100%!important;margin:0!important;overflow:visible!important}.ui-tabs-panel a{display:inline}* html .ui-tabs-nav{display:inline-block}PK!S&src/Legacy/admin/css/nggSorter.min.cssnu[.imageBox,.imageBoxHighlighted{width:130px;height:160px;float:left}.imageBox_theImage{width:110px;height:125px;background-position:center;background-repeat:no-repeat;margin:0 auto;margin-bottom:2px}.imageBox .imageBox_theImage{border:1px solid #ddd;padding:2px}.imageBoxHighlighted .imageBox_theImage{border:3px solid #316ac5;padding:0}.imageBoxHighlighted span{background-color:#316ac5;color:#fff;padding:2px}.imageBox_label{text-align:center;font-family:arial;font-size:11px;padding-top:2px;margin:0 auto}#insertionMarker{height:150px;width:6px;position:absolute}#insertionMarkerLine{width:6px;height:145px}#insertionMarker img{float:left}#dragDropContent{opacity:.4;position:absolute;z-index:10;display:none}PK!ߛJ!src/Legacy/admin/css/nggadmin.cssnu[/* ** NextGEN Gallery Style for Wordpress 3.3 */ #iframely h2.title { display: none; } /* OVERVIEW PAGES */ .toplevel_page_nextgen-gallery #ngg_page_content { width: 98%; } .toplevel_page_nextgen-gallery #ngg_page_content .about-wrap.ngg_overview { width: 100%; } .toplevel_page_nextgen-gallery #ngg_page_content .ngg_page_content_main { padding-right: 40px !important; } #newversion { border-color:#CCCCCC; border-style:solid; border-width:1px; margin-right:7px; margin-top:10px; padding:2px; } .ngg-dashboard-widget ul.settings span { padding-left : 10px; color:#2583AD; font-weight:bold; } .ngg-overview .postbox .handlediv { float:right; height:24px; width:24px; } #ngg_page_content .ngg_overview .ngg_page_content_header h2 { padding-top: 2px; } #ngg_page_content .ngg_overview .ngg_page_content_main h2 { text-align: left; font-size: 22px; font-weight: 400; color: black; margin: 20px 0 20px; text-transform: uppercase; letter-spacing: 2px; } #ngg_page_content .ngg_overview .ngg_page_content_main .about-text { font-size: 17px; max-width: none; margin: 20px 0; color: black; font-weight: 400; } #ngg-gallery-wizard { min-height: auto; position: absolute; top: 0; right: 0; text-align: right; margin: 0 20px 0 0; line-height: 80px; color: #fff; font-size: 14px; margin-right: 0; color: black; font-weight: 400; letter-spacing: .5px; } #ngg_page_content #ngg-gallery-wizard a { font-weight: bold; text-decoration: none; margin-left: 20px; height: 50px !important; line-height: 50px; } .warning { color: #9F6000; background-color: #FEEFB3; border: 1px solid; margin: 5px 0px; padding:5px; } #donator_message { margin:5px 0 15px; background-color:#BDE5F8; border-color:#00529B; -moz-border-radius-bottomleft:3px; -moz-border-radius-bottomright:3px; -moz-border-radius-topleft:3px; -moz-border-radius-topright:3px; border-style:solid; border-width:1px; margin:5px 15px 2px; padding:0 0.6em; } #donator_message p{ line-height:1; margin:0.5em 0; padding:2px; padding-bottom:10px; } #donator_message span{ padding-top:10px; float:right; } #plugin_check img { float: right; } #plugin_check p.message { font-size: 90%; color: #666; } .toplevel_page_nextgen-gallery .feature-video iframe { box-shadow: 0 0 8px 4px rgba(0,0,0,.03); width: 800px; height: 450px; max-width: 100%; } div[data-id="welcome-link"] .about-text { margin: 0 0 40px !important; } div[data-id="pro-link"] .feature-section { position: relative; margin: 40px 0; padding-bottom: 56.25%; } div[data-id="pro-link"] .feature-section iframe { width: 900px; height: 506px; max-width: 100%; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } #ngg_page_content .button-primary.ngg-pro-upgrade { height: 50px !important; padding: 0 40px !important; line-height: 50px; } div[data-id="videos-link"] .feature-section, div[data-id="videos-link"] .feature-section .col, div[data-id="genesis-link"] .feature-section, div[data-id="genesis-link"] .feature-section .col { padding: 0; margin: 0; } /* COMMON STYLING FOR DIALOGS */ .ngg-admin .ui-dialog { max-width: 100%; } /* OPTIONS TABLE */ .ngg-options th { width:22%; } a.switch-expert { text-decoration:none; } /* WATERMARK */ #wm-preview { float:right; font-size:90%; width:35%; border-color:#EBEBEB rgb(204, 204, 204) rgb(204, 204, 204) rgb(235, 235, 235); border-style:solid; border-width:1px; margin-bottom:10px; margin-left:10px; margin-right:8px; padding:2px; } #wm-preview h3{ background:#F9F9F9 none repeat scroll 0%; font-size:14px; font-weight:bold; margin:0pt 0pt 10px; padding:8px 5px; } #wm-position { width:100%; margin-left:40px; } .wm-table { border-collapse:collapse; margin-top:1em; width: 60%; clear:none; } .wm-table td { border-bottom:8px solid #FFFFFF; line-height:20px; margin-bottom:9px; padding:10px; } .wm-table th { border-bottom:8px solid #FFFFFF; padding:10px; text-align:left; } .wm-table tr { background:#F9F9F9 none repeat scroll 0%; } /* MANAGE GALLERY */ .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content .notice, .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated, .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.error { margin: 10px 0 40px 0; } .ngg_admin_notice ul { list-style: circle inside; margin: 0; padding: 0; } .gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main { padding-top: 30px; } .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated#message { margin-bottom: 35px; } .gallery_page_nggallery-manage-gallery #ngg_page_content > .wrap > h2 { display:none; } #ngg_page_content .ngg_manage_galleries .tablenav { margin: 0 0 30px; } #ngg_page_content .ngg_manage_images .handlediv { float: none; width: 100%; height: 50px; } #gallerydiv h3 { margin-left: 10px; display: inline-block; height: 50px; float: left; margin: 0; line-height: 50px; text-transform: uppercase; font-size: 16px; letter-spacing: 1.5px; } #gallerydiv span.toggle-indicator { display: inline-block; float: left; line-height: 50px; } #gallerydiv span.toggle-indicator:before { font-size: 24px; margin: 12px 20px 0 10px; } #gallerydiv span.toggle-indicator:hover { cursor: pointer; } #gallerydiv h3:active, #gallerydiv h3:focus, #gallerydiv span.toggle-indicator:active, #gallerydiv span.toggle-indicator:focus { outline: 0; border: none; -moz-outline-style: none; } #ngg_page_content .ngg_manage_images .tablenav { margin: 50px 0 30px; } #ngg_page_content .ngg_manage_galleries .tablenav.top > div, #ngg_page_content .ngg_manage_images .tablenav.top > div { margin-bottom: 10px; } #ngg_page_content .ngg_manage_galleries .search-box-wrapper { display: flex; flex-direction: row; justify-content: center; width: 100%; } #ngg_page_content .ngg_manage_galleries div.search-box { display: flex; flex-direction: row; justify-content: center; } #ngg_page_content .ngg_manage_galleries div.search-box:last-of-type { } #ngg_page_content .ngg_manage_galleries .search-box input[type=text] { width: calc(100% - 150px) !important; height: 35px !important; margin-right: 4px !important; } #ngg_page_content .ngg_manage_galleries .search-box input[type=submit].button-primary { width: 150px !important; height: 35px !important; padding: 0 !important; } #ngg_page_content .ngg_manage_galleries form.search-form { width: 100%; } #ngg_page_content .ngg_manage_galleries form.search-form:first-of-type { padding-right: 25px; } #ngg_page_content #editgalleries .displaying-num { margin-right: 7px !important; font-size: 14px; letter-spacing: 1px; } #ngg_page_content #editgalleries #bulkaction { min-height: 35px; max-height: 35px; } #ngg_page_content .ngg_manage_galleries .tablenav.bottom { margin: 15px 0 0; } #ngg_page_content .ngg_manage_images .tablenav.bottom { margin: 25px 0 0; } .ngg-admin #ngg_page_content .ngg_manage_images td { vertical-align: top; } #ngg_page_content .ngg_manage_galleries .tablenav input { height: 28px; width: 50px; padding: 0 3px; } #ngg_page_content .ngg_manage_galleries .tablenav input.current-page { width: 50px !important; } #ngg_page_content .ngg_manage_images .tablenav .tablenav-pages { margin-top: 0; } #ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages { margin-top: 6px; } #ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages a, #ngg_page_content .ngg_manage_images .tablenav .tablenav-pages a { background: black; border: none; color: #fff !important; margin: 0 2px; text-decoration: none; font-size: 20px; padding: 4px; line-height: 20px; padding: 2px 8px 6px 8px; } #ngg_page_content .ngg_manage_images .tablenav input, #ngg_page_content .ngg_manage_images .tablenav select { width: auto; margin-top: 0; } #ngg_page_content .ngg_manage_images .tablenav input.current-page, #ngg_page_content #ngg-manage-images-items-per-page { padding: 4px !important; text-align-last: center; background-image: none; } #ngg_page_content .ngg_manage_galleries table { box-shadow: none; border: 1px solid rgba(159, 187, 26, 0.08)!important } #ngg_page_content .ngg_manage_galleries table thead, #ngg_page_content .ngg_manage_galleries table tfoot { background-color: black; } #ngg_page_content .ngg_manage_galleries table thead th, #ngg_page_content .ngg_manage_galleries table thead td, #ngg_page_content .ngg_manage_galleries table tfoot th, #ngg_page_content .ngg_manage_galleries table tfoot td { background-color: transparent; border: none; } #ngg_page_content .ngg_manage_galleries table th, #ngg_page_content .ngg_manage_galleries table td { padding: 12px 10px; font-size: 14px; } #ngg_page_content .ngg_manage_galleries table th { font-weight: bold !important; color: #fff; } .ngg_manage_galleries th#id { width: 33px; } .ngg_manage_galleries th#title { min-width: 140px; } .ngg_manage_galleries td.title { text-transform: uppercase; font-weight: 400; font-size: 13px !important; } .ngg_manage_galleries th#author { min-width: 80px; } .ngg_manage_galleries th#page_id { min-width: 60px; } #ngg_page_content .ngg_manage_galleries table tr.alternate { background-color: #f7f7f7; } #ngg_page_content .ngg_manage_galleries th a { padding: 0 !important; color: #fff; } div#poststuff { min-width: auto; } div#poststuff #gallerydiv { cursor:pointer; } p#ngg-inlinebutton { float:right; margin:0pt; position:relative; top:-25pt; } #gallery_fields { width: 100%; } #gallery_fields td{ padding: 5px; min-width: 105px; } #gallery_fields tr td:nth-of-type(2) { padding-right: 60px; } #gallery_fields input[type=text], #gallery_fields textarea, #gallery_fields select { min-width: 220px; width: 99%; color: #888; } table#ngg-listimages { border: 1px solid #f7f7f7; } #ngg-listimages thead, #ngg-listimages tfoot { background: black; } #ngg-listimages tfoot { background: black; } #ngg-listimages.widefat thead th, .ngg-admin #ngg_page_content .widefat tfoot th { padding: 12px 10px !important; } #ngg-listimages tr.alternate { background-color: #f7f7f7; } #ngg-listimages td { padding: 15px 5px !important; } #ngg-listimages .iedit, #ngg-listimages .iedit td, #ngg-listimages th { border: none; } #ngg-listimages th, #ngg-listimages .iedit td { padding: 15px 5px; } #ngg-listimages th { font-size: 12px; font-weight: bold; } #ngg-listimages .column select { width: 100% !important; } #ngg-listimages .column-1 input { margin: 0 0 0 8px; } #ngg-listimages .column-1 { width: 24px; } #ngg-listimages .column-2 { width: 30px; } #ngg-listimages .column-3 { min-width: 80px; width: 15%; } #ngg-listimages .column-3 .thumb { max-height: 100%; max-width: 100%; } #ngg-listimages .column-4 { width: 15%; max-width: 220px; } #ngg-listimages .column-4 { font-size: 12px; } #ngg-listimages .column-4 .meta, #ngg-listimages .column-4 label { font-size: 10px; color: #888; } #ngg-listimages .column-4 label input[type=checkbox] { margin: -2px 4px 0 0; } #ngg-listimages .column-5 input[type=text], #ngg-listimages .column-5 textarea, #ngg-listimages .column-6 textarea { width: 100%; padding: 3px 5px; font-size: 12px; color: #888; border: 1px solid #eee; margin: 1px 0; box-shadow: none; } #ngg-listimages .column-5 input[type=text] { height: 25px; } #ngg-listimages .column-5 textarea { height: 70px; } #ngg-listimages .column-6 textarea { height: 97px; } #ngg-listimages .column-7 select { font-size: 12px; } #ngg-listimages .row-actions { padding: 0 0 6px 4px; margin-bottom: -2px; position: relative; bottom: 4px; left: 0; right: 0; } #ngg-listimages .row_actions, #ngg-listimages .row_actions td { border-top: none; padding: 0 !important; } #ngg-listimages .row-actions a { font-size: 12px; } /* Updating Imagify for color consistency. * To Imagify: hope you guys don't mind, * but given our redesign, we'd like the colors * to be consitent on these pages. */ #ngg-listimages ul.imagify-datas-list .big { color: #9fbb1a; } #ngg-listimages .imagify-datas-more-action a { background: #9fbb1a; color: #fff; } .gallery_page_nggallery-manage-gallery .ui-dialog { border: none; padding: 0; max-width: 95% !important; z-index: 10000 !important; margin: 0 auto !important; } .gallery_page_nggallery-manage-album .ui-dialog { border: none; padding: 0; z-index: 10000 !important; width: 650px !important; max-width: 98% !important; } .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button, .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary, .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary, .gallery_page_nggallery-manage-gallery .ui-dialog button, .gallery_page_nggallery-manage-gallery .ui-dialog .button-primary, .gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary, .gallery_page_nggallery-manage-album .ui-dialog .button-primary, .gallery_page_nggallery-manage-album .ui-dialog .button-secondary { background-color: #9fbb1a !important; color: #fff !important; border: none !important; box-shadow: none !important; text-shadow: none !important; height: 35px !important; padding: 0 15px !important; line-height: 35px; width: auto !important; margin-right: 10px; text-transform: uppercase; letter-spacing: 1px; } .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button:hover, .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary:hover, .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary:hover, .gallery_page_nggallery-manage-gallery .ui-dialog button:hover .gallery_page_nggallery-manage-gallery .ui-dialog .button-primary:hover, .gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary:hover, .gallery_page_nggallery-manage-album .ui-dialog .button-primary:hover, .gallery_page_nggallery-manage-album .ui-dialog .button-secondary:hover { background-color: #A9C524 !important; } .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar, .gallery_page_nggallery-manage-album .ui-dialog-titlebar{ background: black; padding: 10px; } .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar .ui-dialog-title, .gallery_page_nggallery-manage-album .ui-dialog-titlebar .ui-dialog-title { text-transform: uppercase; letter-spacing: 1px; } .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button, .gallery_page_nggallery-manage-album .ui-dialog-titlebar button { background: #fff !important; border: none !important; box-shadow: none !important; text-shadow: none !important; height: 24px !important; width: 24px !important; padding: 0 !important; line-height: 1; float: none; margin-right: 0; border-radius: 50%; top: 17px; right: 10px; } .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:hover, .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:active, .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:focus, .gallery_page_nggallery-manage-album .ui-dialog-titlebar button:hover, .gallery_page_nggallery-manage-album .ui-dialog-titlebar button:active, .gallery_page_nggallery-manage-album .ui-dialog-titlebar button:focus { background: #fff !important; } .gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog, .gallery_page_nggallery-manage-album .ui-dialog .ngg-overlay-dialog { padding: 30px 20px; box-sizing: border-box; width: 100% !important; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog table { border: none; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #ngg-overlay-dialog-main, .gallery_page_nggallery-manage-album .ngg-overlay-dialog #ngg-overlay-dialog-main { width: 70%; padding: 20px 20px 0; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog td small { margin-left: 10px; display: block; text-align: center; width: 200px; margin: 0 auto 20px; } .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom { text-align: center; padding: 30px 0 0 0; } .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom input[type="button"] { float:none; margin-right: 0; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #thumbMsg { color: #669933; display: none; font-size: 11px; width: 100%; display: inline-block; height: 35px; line-height: 35px; margin: 10px 0; } .gallery_page_nggallery-manage-gallery .ui-dialog form { margin-top: 30px; margin-left: 30px; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:focus { border: 1px solid #b4b9be; box-shadow: none; } .gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before { color: #9fbb1a; } .gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:checked:before { background: #9fbb1a; width: 14px; height: 14px; margin: 0; } /* SETTINGS FOR PROGRESS BAR */ div .progressborder { border:1px solid #DDDDDD; display: block; height: 30px; background-color: #464646; width: 100%; margin-top: 15px; margin-bottom: 15px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } div .progressbar { border: medium none ; display: block; height: 30px; background-color: #9fbb1a; width: 0%; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } div .progressbar span { display: inline; position: absolute; color: white; font-weight: bold; padding: 5px 0 0 5px; } .show_details { height: 16px; line-height: 20px; overflow: hidden; min-width: 8em; padding: 3px; cursor:pointer; } .show_details span { border-bottom:1px solid #999; white-space:pre; } .show_details:hover { height: auto; overflow: visible; border: 1px solid #999; } /* SETTINGS FOR ALBUM PAGE */ .gallery_page_nggallery-manage-album .wrap>h2:first-child { display:none; } .gallery_page_nggallery-manage-album #ngg_page_content div.updated { margin: 0 0 15px 0; } .gallery_page_nggallery-manage-album #ngg_page_content div.updated#message { margin-bottom: 35px; } .ngg_manage_albums .widget { box-sizing: border-box; border: 1px solid #eee; padding: 10px 10px 20px; margin: 0 1% 0 0; width: 100%; } .ngg_manage_albums .widget:last-of-type { margin-right: 0; } .container { margin-top: 10px; } .ngg_manage_albums .container { margin-top: 30px; display: flex; flex-direction: row; justify-content: center; } .ngg_select_album { margin: 0 50px 0 2px; vertical-align: middle; } #newalbum, .ngg_new_album { vertical-align: middle; } .albumnav select[name="act_album"] { width:150px; } #editalbum select[name='pageid'] { width: 95%; } #ngg_page_content .ngg_manage_albums .widget-top { box-shadow: none; background: transparent; border: none; margin: -10px -10px 20px -10px; background: #f7f7f7; } div .groupItem { cursor: move; padding: 2px; line-height: 1.5; width: 100%; margin: 0; box-sizing: border-box; } div .innerhandle { background-color:#FBFBFB; } .groupItem .item_top { background-color:#9fbb1a; color: #FFFFFF; font-weight:400; line-height: 28px; height: 28px; padding: 0 5px; border-radius: 0; height: 40px; padding: 0 10px; line-height: 40px; } #ngg_page_content .groupItem .album_obj { background-color: black; } #ngg_page_content .groupItem .item_top a { color:#FFFFFF; float:right; text-decoration: none; } .groupItem .item_top a:hover { color:#FFFFFF; } .itemContent { border-color:#DFDFDF; border-style:none solid solid; border-width:0 1px 1px; padding:2px 0 20px 2px; } .itemContent p { border: 0; margin: 0; padding: 0; } .inlinepicture { float:left; display:inline; margin:0pt; padding:0pt 3px 1px; } .inlinepicture img { margin:3px; max-height:60px; } .sort_placeholder { border:1px dashed #bba !important; margin: 5px; background: #F9F9F9; } .widget-holder { min-height: 400px; padding-top:1px; } .target { background-color: transparent; } div.widget-top h3 { text-align:center; line-height:25px; margin: 0; padding: 5px 12px; font-size: 13px; letter-spacing: .5px; text-transform: uppercase; } div.widget-top { text-shadow:0 1px 0 #FFFFFF; background-repeat: repeat-x; background-position: 0 0; font-size: 13px; } .ui-autocomplete-start { background-position: 99% center; } /* SETTINGS FOR SORT GALLERY */ #ngg_page_content .ngg_gallery_sort .tablenav { margin: 15px 0; } #ngg_page_content .ngg_gallery_sort ul.subsubsub { margin: 10px 0 15px; } #ngg_page_content .ngg_gallery_sort .imageBox_theImage { width: auto; } #sortGallery { position:relative; } p#sortButton{ margin:0; position:absolute; right:0; top:0; } #ngg-sort-gallery-container { display: flex; flex-wrap: wrap; } .imageBox,.imageBoxHighlighted { width:130px; /* Total width of each image box */ height:160px; /* Total height of each image box */ overflow: hidden; text-overflow: ellipsis; padding: 5px; } .imageBox_theImage{ width:110px; /* Width of image */ height:125px; /* Height of image */ background-position: center; background-repeat: no-repeat; margin: 0 auto; margin-bottom:2px; } .imageBox_label{ /* Title of images - both selected and not selected */ text-align:center; font-family: arial; font-size:11px; padding-top:2px; margin: 0 auto; } /* DIV that indicates where the dragged image will be placed */ #insertionMarker{ height:150px; width:6px; position:absolute; } #insertionMarkerLine{ width:6px; /* No need to change this value */ height:145px; /* To adjust the height of the div that indicates where the dragged image will be dropped */ } #insertionMarker img{ float:left; } /* DIV that shows the image as you drag it */ #dragDropContent{ opacity:0.4; /* 40 % opacity */ filter:alpha(opacity=40); /* 40 % opacity */ /* No need to change these three values */ position:absolute; z-index:10; display:none; } /* UPGRADE PAGE */ .error_inline { background:#FFEBE8 none repeat scroll 0%; border:1px solid #CC0000; margin:5px auto; padding:10px; } /* ABOUT PAGE */ .ngg-list { font-size:11px; margin-left:15px; list-style-position:inside; list-style-type:disc; } #ngg-manage-images-items-per-page-label { float: right; line-height: 35px; margin-right: 5px; } #ngg-manage-images-items-per-page { float: right; margin-right: 30px; } /* Media Queries */ @media (max-width: 1200px) { div[data-id="details-link"] .two-col .col { width: 100%; min-width: 100%; } } @media (max-width: 1420px) { } @media (max-width: 1100px) { } @media (max-width: 1080px) { #ngg-gallery-wizard > span { display: none; } /* Manage Galleries */ .ngg_manage_galleries .tablenav.bottom { display: none; } .ngg_manage_images #gallery_fields td:nth-of-type(even) { margin-bottom: 8px; } .ngg_manage_images #gallery_fields td:nth-of-type(odd) { background: #f7f7f7; padding-left: 10px; font-weight: bold; } .ngg_manage_images #gallery_fields, .ngg_manage_images #gallery_fields tbody, .ngg_manage_images #gallery_fields tr, .ngg_manage_images #gallery_fields td { display:block; width: 100%; box-sizing: border-box; } .ngg_manage_images #gallery_fields td { padding: 10px 5px; border: 1px solid rgb(247, 248, 243); margin: 0; } } @media (max-width: 900px) { .ngg_manage_galleries tfoot { display:none; } .ngg_manage_galleries .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { display: table-cell; } .ngg_manage_galleries th#id, .ngg_manage_galleries th#author, .ngg_manage_galleries th#page_id, .ngg_manage_galleries td.id, .ngg_manage_galleries td.author, .ngg_manage_galleries td.page_id { display: none !important; } #ngg-listimages thead .column-1, #ngg-listimages thead .column-2, #ngg-listimages thead .column-4, #ngg-listimages thead .column-5, #ngg-listimages thead .column-6, #ngg-listimages thead .column-7, #ngg-listimages thead .column-8, #ngg-listimages tfoot, #ngg-listimages td.column.column-2, #ngg-listimages td.column.column-8, #ngg-listimages td.column.column-6 { display: none; } #ngg-listimages .column-3 { min-width: 200px; } table#ngg-listimages, table#ngg-listimages thead { display: block; } #ngg-listimages .iedit td { padding-bottom: 30px !important; } } @media (max-width: 800px) { /* Manage Galleries */ table#ngg-listimages, table#ngg-listimages tbody, table#ngg-listimages tr, table#ngg-listimages td { display: block; } table#ngg-listimages tr { padding: 10px 5px !important; } #ngg-listimages thead, #ngg-listimages thead th { display: block; width: 100%; box-sizing: border-box; } #ngg-listimages .row_actions td:first-of-type { display:none; } #ngg-listimages tfoot { display:none; } #ngg-listimages .row_actions { display:none; display:block; clear: both; padding: 0 8px 10px !important; border-bottom: 1px solid #c1c97c; } .ngg-listimages tr.iedit td { display: block !important; float: left; box-sizing: border-box; padding-bottom: 10px !important; } #ngg-listimages td.column-1, #ngg-listimages td.column-2 { width: 10% !important; height: 150px; float: left; box-sizing: border-box; display:none; } #ngg-listimages td.column-3 { width: 55%; max-width: 300px; float: left; box-sizing: border-box; padding-bottom: 10px !important; } #ngg-listimages td.column-4 { width: 40% !important; float: left; box-sizing: border-box; } #ngg-listimages td.column-5, #ngg-listimages td.column-6, #ngg-listimages td.column-7 { padding: 0 5px !important; } #ngg-listimages td.column-6 { margin-top: -5px; margin-bottom: -8px; } .ngg-listimages td.column-7 { padding-bottom: 15px; } #ngg-manage-images-items-per-page, #ngg-manage-images-items-per-page-label { display: none; } #ngg-listimages .column-6 textarea { height: 60px; } .ngg_manage_images .tablenav.bottom .displaying-num { display:none; } } @media (max-width: 782px) { #ngg-gallery-wizard { display: none; } #ngg_page_content .ngg_manage_galleries .tablenav.top > div { display: block; width: 100%; } #ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages { margin-top: 20px; margin-bottom: 28px !important; } #ngg_page_content .ngg_manage_galleries .search-box input[type=text] { width: calc(100% - 150px) !important; } #ngg_page_content .ngg_manage_galleries .search-box input[type=submit].button-primary { height: 40px !important; } #ngg_page_content .ngg_manage_galleries .search-box-wrapper { flex-direction: column; } #ngg_page_content .ngg_manage_galleries form.search-form { width: 100%; } #ngg_page_content #editgalleries div.tablenav.top div.alignleft.actions input.button-primary { width: auto !important; display: inline-block; } #ngg_page_content #editgalleries div.tablenav.top div.alignleft.actions input.button-primary:first-of-type { margin-left: 5px; } #ngg_page_content #editgalleries div.tablenav.top div.tablenav-pages { display: none; } #ngg_page_content #editgalleries #bulkaction { width: auto !important; } } @media (max-width: 737px) { .gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before { font-size: 22px; } .ngg-overlay-dialog input[type="radio"] { height: 16px; width: 16px; } #ngg-gallery-wizard { display: none; } } @media (max-width: 640px) { /* Manage Galleries */ .ngg_manage_galleries th#description, .ngg_manage_galleries td.description { display: none !important; } /* Manage Albums */ .ngg_manage_albums .tablenav .actions { width: 100%; float: none; } .ngg_manage_albums .tablenav span { display: block; } .ngg_manage_albums .target-album, .ngg_manage_albums .widget.widget-right { width: 32% !important; margin: .5% !important; padding: 5px 5px 10px; } .groupItem .item_top { height: auto !important; line-height: 1.5; padding: 8px; font-size: 12px; } #ngg_page_content .groupItem .item_top a { display: none; } .ngg_manage_albums div[style="float:right;"] { float: none !important; } .gallery_page_nggallery-manage-gallery .ui-dialog { width: 95% !important; left: 2.5% !important; } .gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog { padding: 30px 10px; } .ngg-overlay-dialog td { display: block; width: 100% !important; padding: 0 !important; } .ngg-overlay-dialog input[type="radio"] { margin: 2px 5px; height: 16px; width: 16px; } } /** * @TODO : Remove all of the following Thickbox specific rules once the Manage Gallery page no longer uses Thickbox. * This whole section was added as an annoying hack workaround to the fact that the Manage Gallery page seemingly cannot * be forced to correctly enqueue thickbox.css when inside of the attach-to-post controller once the latter was refactored * to no longer rely on POPE. */ #TB_overlay { background: #000; opacity: 0.7; filter: alpha(opacity=70); position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 100050; /* Above DFW. */ } #TB_window { position: fixed; background-color: #fff; z-index: 100050; /* Above DFW. */ visibility: hidden; text-align: left; top: 50%; left: 50%; -webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } #TB_window img#TB_Image { display: block; margin: 15px 0 0 15px; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; border-top: 1px solid #666; border-left: 1px solid #666; } #TB_caption{ height: 25px; padding: 7px 30px 10px 25px; float: left; } #TB_closeWindow { height: 25px; padding: 11px 25px 10px 0; float: right; } #TB_closeWindowButton { position: absolute; left: auto; right: 0; width: 29px; height: 29px; border: 0; padding: 0; background: none; cursor: pointer; outline: none; -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; transition: color .1s ease-in-out, background .1s ease-in-out; } #TB_ajaxWindowTitle { float: left; font-weight: 600; line-height: 29px; overflow: hidden; padding: 0 29px 0 10px; text-overflow: ellipsis; white-space: nowrap; width: calc( 100% - 39px ); } #TB_title { background: #fcfcfc; border-bottom: 1px solid #ddd; height: 29px; } #TB_ajaxContent { clear: both; padding: 2px 15px 15px 15px; overflow: auto; text-align: left; line-height: 1.4em; } #TB_ajaxContent.TB_modal { padding: 15px; } #TB_ajaxContent p { padding: 5px 0px 5px 0px; } #TB_load { position: fixed; display: none; z-index: 100050; top: 50%; left: 50%; background-color: #E8E8E8; border: 1px solid #555; margin: -45px 0 0 -125px; padding: 40px 15px 15px; } #TB_HideSelect { z-index: 99; position: fixed; top: 0; left: 0; background-color: #fff; border: none; filter: alpha(opacity=0); opacity: 0; height: 100%; width: 100%; } #TB_iframeContent { clear: both; border: none; } .tb-close-icon { display: block; color: #666; text-align: center; line-height: 29px; width: 29px; height: 29px; position: absolute; top: 0; right: 0; } .tb-close-icon:before { content: "\f158"; font: normal 20px/29px dashicons; speak: never; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #TB_closeWindowButton:hover .tb-close-icon, #TB_closeWindowButton:focus .tb-close-icon { color: #006799; } #TB_closeWindowButton:focus .tb-close-icon { -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } PK! l7src/Legacy/admin/css/images/ui-icons_cccccc_256x240.pngnu[PNG  IHDRIJPLTENtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?sn~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s R!!,c $PxB +*-[dඁ+i@ )`L ?'I`JGb Ph XB)0׸XQ# } No "tI+ZI!!,\ $P`8* 1h0rx8BQaV  !MDl!4%BBe PDY00!!,] $$I>Q] d"28 GqH9 A2ȀB", DH('4C \0`UL"r(!! ,d $dI`ìkBB m A72, (PX鲪 8@R%a K*D2E {$ft5C%!;PK!\7src/Legacy/admin/css/images/ui-icons_ffffff_256x240.pngnu[PNG  IHDRIJPLTE NtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?sh2:first-child{display:none}.gallery_page_nggallery-tags #ngg_page_content div.updated{margin:0 0 15px 0}.gallery_page_nggallery-tags #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_tags,.ngg_manage_tags label{color:#666}.ngg_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px}.ngg_wrap .list_tags{width:280px;vertical-align:top;padding:20px!important;background:#f7f7f7}.ngg_wrap .list_tags #search{width:200px}.ngg_wrap .list_tags .navigation{margin:25px 0 20px}#ngg_page_content .list_tags .navigation .button-primary{width:48%!important;text-align:center;margin:.5%;font-size:9px;padding:0!important}.ngg_wrap .forms_manage{vertical-align:top;padding-left:30px}.ngg_wrap .forms_manage h3{margin-bottom:5px;margin-top:30px}.ngg_wrap .forms_manage td{padding:0}.ngg_wrap .forms_manage td p{margin-bottom:20px}.ngg_wrap .forms_manage .form-table{margin-top:0}.ngg_wrap .forms_manage .form-table td,.ngg_wrap .forms_manage .form-table th{vertical-align:middle;padding:0}.ngg_wrap .sort_order h3{margin:30px 0 10px}.ngg_wrap #ajax_area_tagslist ul{list-style:square;margin:10px 0 10px 20px;padding:0}.ngg_wrap #ajax_area_tagslist ul li{margin:0;padding:0;line-height:1.4}.ngg_wrap #ajax_area_tagslist ul li span{cursor:pointer}@media (max-width:640px){.ngg_wrap .list_tags{width:100%;display:block;box-sizing:border-box}.ngg_wrap .forms_manage{width:100%;display:block;box-sizing:border-box;padding:20px}.ngg_wrap .list_tags #search{width:200px;width:100%}}PK!O<<#src/Legacy/admin/css/tags-admin.cssnu[.gallery_page_nggallery-tags .wrap>h2:first-child { display:none; } .gallery_page_nggallery-tags #ngg_page_content div.updated { margin: 0 0 15px 0; } .gallery_page_nggallery-tags #ngg_page_content div.updated#message { margin-bottom: 35px; } .ngg_manage_tags, .ngg_manage_tags label { color: #666; } .ngg_wrap .auto_list{ width: 98%; margin: 3px 0; padding: 3px 5px; } .ngg_wrap .list_tags { width: 280px; vertical-align: top; padding: 20px !important; background: #f7f7f7; } .ngg_wrap .list_tags #search{ width: 200px; } .ngg_wrap .list_tags .navigation { margin: 25px 0 20px; } #ngg_page_content .list_tags .navigation .button-primary { width: 48% !important; text-align: center; margin: 0.5%; font-size: 9px; padding: 0 !important; } .ngg_wrap .forms_manage { vertical-align: top; padding-left: 30px; } .ngg_wrap .forms_manage h3 { margin-bottom: 5px; margin-top: 30px; } .ngg_wrap .forms_manage td { padding: 0; } .ngg_wrap .forms_manage td p { margin-bottom: 20px; } .ngg_wrap .forms_manage .form-table { margin-top: 0; } .ngg_wrap .forms_manage .form-table th, .ngg_wrap .forms_manage .form-table td { vertical-align: middle; padding: 0; } /*.ngg_wrap .forms_manage .form-table tr:nth-of-type(2) th, .ngg_wrap .forms_manage .form-table tr:nth-of-type(3) th { padding-left: 20px; }*/ .ngg_wrap .sort_order h3 { margin: 30px 0 10px; } .ngg_wrap #ajax_area_tagslist ul { list-style: square; margin: 10px 0 10px 20px; padding: 0; } .ngg_wrap #ajax_area_tagslist ul li { margin: 0; padding: 0; line-height: 1.4; } .ngg_wrap #ajax_area_tagslist ul li span { cursor: pointer; } /* Media Queries */ @media (max-width: 640px) { .ngg_wrap .list_tags { width: 100%; display: block; box-sizing: border-box; } .ngg_wrap .forms_manage { width: 100%; display: block; box-sizing: border-box; padding: 20px; } .ngg_wrap .list_tags #search { width: 200px; width: 100%; } }PK! k//"src/Legacy/admin/css/nggSorter.cssnu[.imageBox,.imageBoxHighlighted{ width:130px; /* Total width of each image box */ height:160px; /* Total height of each image box */ float:left; } .imageBox_theImage{ width:110px; /* Width of image */ height:125px; /* Height of image */ /* Don't change these values * */ background-position: center; background-repeat: no-repeat; margin: 0 auto; margin-bottom:2px; } .imageBox .imageBox_theImage{ border:1px solid #DDD; /* Border color for not selected images */ padding:2px; } .imageBoxHighlighted .imageBox_theImage{ border:3px solid #316AC5; /* Border color for selected image */ padding:0px; } .imageBoxHighlighted span{ /* Title of selected image */ background-color: #316AC5; color:#FFFFFF; padding:2px; } .imageBox_label{ /* Title of images - both selected and not selected */ text-align:center; font-family: arial; font-size:11px; padding-top:2px; margin: 0 auto; } /* DIV that indicates where the dragged image will be placed */ #insertionMarker{ height:150px; width:6px; position:absolute; } #insertionMarkerLine{ width:6px; /* No need to change this value */ height:145px; /* To adjust the height of the div that indicates where the dragged image will be dropped */ } #insertionMarker img{ float:left; } /* DIV that shows the image as you drag it */ #dragDropContent{ opacity:0.4; /* 40 % opacity */ filter:alpha(opacity=40); /* 40 % opacity */ /* No need to change these three values */ position:absolute; z-index:10; display:none; }PK!'src/Legacy/admin/css/jquery.ui.tabs.cssnu[/* Caution! Ensure accessibility in print and other media types... */ @media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */ .ui-tabs-hide { display: none; } } /* Hide useless elements in print layouts... */ @media print { .ui-tabs-nav { display: none; } } /* Skin */ #slider { border-color:#EBEBEB rgb(204, 204, 204) rgb(204, 204, 204) rgb(235, 235, 235); border-style:solid; border-width:1px; margin:15px 15% 0pt 15px; padding:2px; } #tabs{ display: block; background:#F1F1F1 none repeat scroll 0%; font-size:14px; overflow:hidden; } .ui-tabs-nav { list-style: none; margin: 0; padding: 0 0 0 10px; } .ui-tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */ display: block; clear: both; content: " "; } .ui-tabs-nav li { float: left; padding: 6px 5px; min-width: 84px; /* be nice to Opera */ margin: 2px 2px 0px 1px !important; text-decoration: none; list-style: none; } .ui-tabs-nav a, .ui-tabs-nav a span { display: block; padding: 0 1px; } .ui-tabs-nav a { margin: 1px 0 0; /* position: relative makes opacity fail for disabled tab in IE */ padding-left: 0; color: #2583AD; line-height: 1.2; text-align: center; text-decoration: none; white-space: nowrap; /* required in IE 6 */ outline: 0; /* prevent dotted border in Firefox */ } .ui-tabs-nav .ui-tabs-selected{ background: #6D6D6D url(../images/menu-bits.gif) repeat-x scroll left top; border-color: #6D6D6D; color: #FFFFFF; text-shadow:0 -1px 0 #666666; -moz-border-radius-topright: 6px; -khtml-border-top-right-radius: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-topleft: 6px; -khtml-border-top-left-radius: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; } .ui-tabs-selected a, .ui-tabs-selected a:hover { color:#FFFFFF !important; } .ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav .ui-tabs-selected a:hover { position: relative; top: 1px; z-index: 2; margin-top: 0; } .ui-tabs-nav li a:hover { color:#D54E21; } .ui-tabs-nav a span { width: 64px; /* IE 6 treats width as min-width */ min-width: 64px; height: 18px; /* IE 6 treats height as min-height */ min-height: 18px; padding-top: 6px; padding-right: 0; } *>.ui-tabs-nav a span { /* hide from IE 6 */ width: auto; height: auto; } .ui-tabs-nav .ui-tabs-selected a span { padding-bottom: 1px; } .ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active { background-position: 100% -150px; } .ui-tabs-nav a, .ui-tabs-nav .ui-tabs-disabled a:hover, .ui-tabs-nav .ui-tabs-disabled a:focus, .ui-tabs-nav .ui-tabs-disabled a:active { background-position: 100% -100px; } .ui-tabs-nav .ui-tabs-selected a span, .ui-tabs-nav a:hover span, .ui-tabs-nav a:focus span, .ui-tabs-nav a:active span { background-position: 0 -50px; } .ui-tabs-nav a span, .ui-tabs-nav .ui-tabs-disabled a:hover span, .ui-tabs-nav .ui-tabs-disabled a:focus span, .ui-tabs-nav .ui-tabs-disabled a:active span { background-position: 0 0; } .ui-tabs-nav .ui-tabs-selected a:link, .ui-tabs-nav .ui-tabs-selected a:visited, .ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */ cursor: text; } .ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active, .ui-tabs-nav .ui-tabs-unselect a:hover, .ui-tabs-nav .ui-tabs-unselect a:focus, .ui-tabs-nav .ui-tabs-unselect a:active { /* @ Opera, we need to be explicit again here now... */ cursor: pointer; } .ui-tabs-disabled { opacity: .4; filter: alpha(opacity=40); } .ui-tabs-panel { border-top: 1px solid #97a5b0 !important; padding: 1em 8px; background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */ /* overwrite wp-admin */ border:none !important; height:100% !important; margin:0pt 0pt 0pt 0px !important; overflow:visible !important; } .ui-tabs-panel a { display:inline; } /* Additional IE specific bug fixes... */ * html .ui-tabs-nav { /* auto clear, @ IE 6 & IE 7 Quirks Mode */ display: inline-block; } *:first-child+html .ui-tabs-nav { /* @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */ display: inline-block; } PK! ;;'src/Legacy/admin/css/nggColorPicker.cssnu[#colorSelector{ background:transparent url(../images/select.png) repeat scroll 0 0; height:36px; position:relative; width:36px; } #colorSelector div{ background:transparent url(../images/select.png) repeat scroll center center; height:30px; left:3px; position:absolute; top:3px; width:30px; }PK!X0ee%src/Legacy/admin/css/nggadmin.min.cssnu[#iframely h2.title{display:none}.toplevel_page_nextgen-gallery #ngg_page_content{width:98%}.toplevel_page_nextgen-gallery #ngg_page_content .about-wrap.ngg_overview{width:100%}.toplevel_page_nextgen-gallery #ngg_page_content .ngg_page_content_main{padding-right:40px!important}#newversion{border-color:#ccc;border-style:solid;border-width:1px;margin-right:7px;margin-top:10px;padding:2px}.ngg-dashboard-widget ul.settings span{padding-left:10px;color:#2583ad;font-weight:700}.ngg-overview .postbox .handlediv{float:right;height:24px;width:24px}#ngg_page_content .ngg_overview .ngg_page_content_header h2{padding-top:2px}#ngg_page_content .ngg_overview .ngg_page_content_main h2{text-align:left;font-size:22px;font-weight:400;color:#000;margin:20px 0 20px;text-transform:uppercase;letter-spacing:2px}#ngg_page_content .ngg_overview .ngg_page_content_main .about-text{font-size:17px;max-width:none;margin:20px 0;color:#000;font-weight:400}#ngg-gallery-wizard{min-height:auto;position:absolute;top:0;right:0;text-align:right;margin:0 20px 0 0;line-height:80px;color:#fff;font-size:14px;margin-right:0;color:#000;font-weight:400;letter-spacing:.5px}#ngg_page_content #ngg-gallery-wizard a{font-weight:700;text-decoration:none;margin-left:20px;height:50px!important;line-height:50px}.warning{color:#9f6000;background-color:#feefb3;border:1px solid;margin:5px 0;padding:5px}#donator_message{margin:5px 0 15px;background-color:#bde5f8;border-color:#00529b;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 .6em}#donator_message p{line-height:1;margin:.5em 0;padding:2px;padding-bottom:10px}#donator_message span{padding-top:10px;float:right}#plugin_check img{float:right}#plugin_check p.message{font-size:90%;color:#666}.toplevel_page_nextgen-gallery .feature-video iframe{box-shadow:0 0 8px 4px rgba(0,0,0,.03);width:800px;height:450px;max-width:100%}div[data-id=welcome-link] .about-text{margin:0 0 40px!important}div[data-id=pro-link] .feature-section{position:relative;margin:40px 0;padding-bottom:56.25%}div[data-id=pro-link] .feature-section iframe{width:900px;height:506px;max-width:100%;position:absolute;top:0;left:0;width:100%;height:100%}#ngg_page_content .button-primary.ngg-pro-upgrade{height:50px!important;padding:0 40px!important;line-height:50px}div[data-id=genesis-link] .feature-section,div[data-id=genesis-link] .feature-section .col,div[data-id=videos-link] .feature-section,div[data-id=videos-link] .feature-section .col{padding:0;margin:0}.ngg-admin .ui-dialog{max-width:100%}.ngg-options th{width:22%}a.switch-expert{text-decoration:none}#wm-preview{float:right;font-size:90%;width:35%;border-color:#ebebeb #ccc #ccc #ebebeb;border-style:solid;border-width:1px;margin-bottom:10px;margin-left:10px;margin-right:8px;padding:2px}#wm-preview h3{background:#f9f9f9 none repeat scroll 0;font-size:14px;font-weight:700;margin:0 0 10px;padding:8px 5px}#wm-position{width:100%;margin-left:40px}.wm-table{border-collapse:collapse;margin-top:1em;width:60%;clear:none}.wm-table td{border-bottom:8px solid #fff;line-height:20px;margin-bottom:9px;padding:10px}.wm-table th{border-bottom:8px solid #fff;padding:10px;text-align:left}.wm-table tr{background:#f9f9f9 none repeat scroll 0}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content .notice,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.error,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated{margin:10px 0 40px 0}.ngg_admin_notice ul{list-style:circle inside;margin:0;padding:0}.gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main{padding-top:30px}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated#message{margin-bottom:35px}.gallery_page_nggallery-manage-gallery #ngg_page_content>.wrap>h2{display:none}#ngg_page_content .ngg_manage_galleries .tablenav{margin:0 0 30px}#ngg_page_content .ngg_manage_images .handlediv{float:none;width:100%;height:50px}#gallerydiv h3{margin-left:10px;display:inline-block;height:50px;float:left;margin:0;line-height:50px;text-transform:uppercase;font-size:16px;letter-spacing:1.5px}#gallerydiv span.toggle-indicator{display:inline-block;float:left;line-height:50px}#gallerydiv span.toggle-indicator:before{font-size:24px;margin:12px 20px 0 10px}#gallerydiv span.toggle-indicator:hover{cursor:pointer}#gallerydiv h3:active,#gallerydiv h3:focus,#gallerydiv span.toggle-indicator:active,#gallerydiv span.toggle-indicator:focus{outline:0;border:none;-moz-outline-style:none}#ngg_page_content .ngg_manage_images .tablenav{margin:50px 0 30px}#ngg_page_content .ngg_manage_galleries .tablenav.top>div,#ngg_page_content .ngg_manage_images .tablenav.top>div{margin-bottom:10px}#ngg_page_content .ngg_manage_galleries .search-box-wrapper{display:flex;flex-direction:row;justify-content:center;width:100%}#ngg_page_content .ngg_manage_galleries div.search-box{display:flex;flex-direction:row;justify-content:center}#ngg_page_content .ngg_manage_galleries .search-box input[type=text]{width:calc(100% - 150px)!important;height:35px!important;margin-right:4px!important}#ngg_page_content .ngg_manage_galleries .search-box input[type=submit].button-primary{width:150px!important;height:35px!important;padding:0!important}#ngg_page_content .ngg_manage_galleries form.search-form{width:100%}#ngg_page_content .ngg_manage_galleries form.search-form:first-of-type{padding-right:25px}#ngg_page_content #editgalleries .displaying-num{margin-right:7px!important;font-size:14px;letter-spacing:1px}#ngg_page_content #editgalleries #bulkaction{min-height:35px;max-height:35px}#ngg_page_content .ngg_manage_galleries .tablenav.bottom{margin:15px 0 0}#ngg_page_content .ngg_manage_images .tablenav.bottom{margin:25px 0 0}.ngg-admin #ngg_page_content .ngg_manage_images td{vertical-align:top}#ngg_page_content .ngg_manage_galleries .tablenav input{height:28px;width:50px;padding:0 3px}#ngg_page_content .ngg_manage_galleries .tablenav input.current-page{width:50px!important}#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages{margin-top:0}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages{margin-top:6px}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages a,#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages a{background:#000;border:none;color:#fff!important;margin:0 2px;text-decoration:none;font-size:20px;padding:4px;line-height:20px;padding:2px 8px 6px 8px}#ngg_page_content .ngg_manage_images .tablenav input,#ngg_page_content .ngg_manage_images .tablenav select{width:auto;margin-top:0}#ngg_page_content #ngg-manage-images-items-per-page,#ngg_page_content .ngg_manage_images .tablenav input.current-page{padding:4px!important;text-align-last:center;background-image:none}#ngg_page_content .ngg_manage_galleries table{box-shadow:none;border:1px solid rgba(159,187,26,.08)!important}#ngg_page_content .ngg_manage_galleries table tfoot,#ngg_page_content .ngg_manage_galleries table thead{background-color:#000}#ngg_page_content .ngg_manage_galleries table tfoot td,#ngg_page_content .ngg_manage_galleries table tfoot th,#ngg_page_content .ngg_manage_galleries table thead td,#ngg_page_content .ngg_manage_galleries table thead th{background-color:transparent;border:none}#ngg_page_content .ngg_manage_galleries table td,#ngg_page_content .ngg_manage_galleries table th{padding:12px 10px;font-size:14px}#ngg_page_content .ngg_manage_galleries table th{font-weight:700!important;color:#fff}.ngg_manage_galleries th#id{width:33px}.ngg_manage_galleries th#title{min-width:140px}.ngg_manage_galleries td.title{text-transform:uppercase;font-weight:400;font-size:13px!important}.ngg_manage_galleries th#author{min-width:80px}.ngg_manage_galleries th#page_id{min-width:60px}#ngg_page_content .ngg_manage_galleries table tr.alternate{background-color:#f7f7f7}#ngg_page_content .ngg_manage_galleries th a{padding:0!important;color:#fff}div#poststuff{min-width:auto}div#poststuff #gallerydiv{cursor:pointer}p#ngg-inlinebutton{float:right;margin:0;position:relative;top:-25pt}#gallery_fields{width:100%}#gallery_fields td{padding:5px;min-width:105px}#gallery_fields tr td:nth-of-type(2){padding-right:60px}#gallery_fields input[type=text],#gallery_fields select,#gallery_fields textarea{min-width:220px;width:99%;color:#888}table#ngg-listimages{border:1px solid #f7f7f7}#ngg-listimages tfoot,#ngg-listimages thead{background:#000}#ngg-listimages tfoot{background:#000}#ngg-listimages.widefat thead th,.ngg-admin #ngg_page_content .widefat tfoot th{padding:12px 10px!important}#ngg-listimages tr.alternate{background-color:#f7f7f7}#ngg-listimages td{padding:15px 5px!important}#ngg-listimages .iedit,#ngg-listimages .iedit td,#ngg-listimages th{border:none}#ngg-listimages .iedit td,#ngg-listimages th{padding:15px 5px}#ngg-listimages th{font-size:12px;font-weight:700}#ngg-listimages .column select{width:100%!important}#ngg-listimages .column-1 input{margin:0 0 0 8px}#ngg-listimages .column-1{width:24px}#ngg-listimages .column-2{width:30px}#ngg-listimages .column-3{min-width:80px;width:15%}#ngg-listimages .column-3 .thumb{max-height:100%;max-width:100%}#ngg-listimages .column-4{width:15%;max-width:220px}#ngg-listimages .column-4{font-size:12px}#ngg-listimages .column-4 .meta,#ngg-listimages .column-4 label{font-size:10px;color:#888}#ngg-listimages .column-4 label input[type=checkbox]{margin:-2px 4px 0 0}#ngg-listimages .column-5 input[type=text],#ngg-listimages .column-5 textarea,#ngg-listimages .column-6 textarea{width:100%;padding:3px 5px;font-size:12px;color:#888;border:1px solid #eee;margin:1px 0;box-shadow:none}#ngg-listimages .column-5 input[type=text]{height:25px}#ngg-listimages .column-5 textarea{height:70px}#ngg-listimages .column-6 textarea{height:97px}#ngg-listimages .column-7 select{font-size:12px}#ngg-listimages .row-actions{padding:0 0 6px 4px;margin-bottom:-2px;position:relative;bottom:4px;left:0;right:0}#ngg-listimages .row_actions,#ngg-listimages .row_actions td{border-top:none;padding:0!important}#ngg-listimages .row-actions a{font-size:12px}#ngg-listimages ul.imagify-datas-list .big{color:#9fbb1a}#ngg-listimages .imagify-datas-more-action a{background:#9fbb1a;color:#fff}.gallery_page_nggallery-manage-gallery .ui-dialog{border:none;padding:0;max-width:95%!important;z-index:10000!important;margin:0 auto!important}.gallery_page_nggallery-manage-album .ui-dialog{border:none;padding:0;z-index:10000!important;width:650px!important;max-width:98%!important}.gallery_page_nggallery-manage-album .ui-dialog .button-primary,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button,.gallery_page_nggallery-manage-gallery .ui-dialog .button-primary,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery .ui-dialog button{background-color:#9fbb1a!important;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 15px!important;line-height:35px;width:auto!important;margin-right:10px;text-transform:uppercase;letter-spacing:1px}.gallery_page_nggallery-manage-album .ui-dialog .button-primary:hover,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery .ui-dialog button:hover .gallery_page_nggallery-manage-gallery .ui-dialog .button-primary:hover{background-color:#a9c524!important}.gallery_page_nggallery-manage-album .ui-dialog-titlebar,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar{background:#000;padding:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar .ui-dialog-title,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar .ui-dialog-title{text-transform:uppercase;letter-spacing:1px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button{background:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:24px!important;width:24px!important;padding:0!important;line-height:1;float:none;margin-right:0;border-radius:50%;top:17px;right:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:hover{background:#fff!important}.gallery_page_nggallery-manage-album .ui-dialog .ngg-overlay-dialog,.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 20px;box-sizing:border-box;width:100%!important}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog table{border:none}.gallery_page_nggallery-manage-album .ngg-overlay-dialog #ngg-overlay-dialog-main,.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #ngg-overlay-dialog-main{width:70%;padding:20px 20px 0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog td small{margin-left:10px;display:block;text-align:center;width:200px;margin:0 auto 20px}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom{text-align:center;padding:30px 0 0 0}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom input[type=button]{float:none;margin-right:0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #thumbMsg{color:#693;display:none;font-size:11px;width:100%;display:inline-block;height:35px;line-height:35px;margin:10px 0}.gallery_page_nggallery-manage-gallery .ui-dialog form{margin-top:30px;margin-left:30px}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:focus{border:1px solid #b4b9be;box-shadow:none}.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{color:#9fbb1a}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:checked:before{background:#9fbb1a;width:14px;height:14px;margin:0}div .progressborder{border:1px solid #ddd;display:block;height:30px;background-color:#464646;width:100%;margin-top:15px;margin-bottom:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar{border:medium none;display:block;height:30px;background-color:#9fbb1a;width:0%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar span{display:inline;position:absolute;color:#fff;font-weight:700;padding:5px 0 0 5px}.show_details{height:16px;line-height:20px;overflow:hidden;min-width:8em;padding:3px;cursor:pointer}.show_details span{border-bottom:1px solid #999;white-space:pre}.show_details:hover{height:auto;overflow:visible;border:1px solid #999}.gallery_page_nggallery-manage-album .wrap>h2:first-child{display:none}.gallery_page_nggallery-manage-album #ngg_page_content div.updated{margin:0 0 15px 0}.gallery_page_nggallery-manage-album #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_albums .widget{box-sizing:border-box;border:1px solid #eee;padding:10px 10px 20px;margin:0 1% 0 0;width:100%}.ngg_manage_albums .widget:last-of-type{margin-right:0}.container{margin-top:10px}.ngg_manage_albums .container{margin-top:30px;display:flex;flex-direction:row;justify-content:center}.ngg_select_album{margin:0 50px 0 2px;vertical-align:middle}#newalbum,.ngg_new_album{vertical-align:middle}.albumnav select[name=act_album]{width:150px}#editalbum select[name=pageid]{width:95%}#ngg_page_content .ngg_manage_albums .widget-top{box-shadow:none;background:0 0;border:none;margin:-10px -10px 20px -10px;background:#f7f7f7}div .groupItem{cursor:move;padding:2px;line-height:1.5;width:100%;margin:0;box-sizing:border-box}div .innerhandle{background-color:#fbfbfb}.groupItem .item_top{background-color:#9fbb1a;color:#fff;font-weight:400;line-height:28px;height:28px;padding:0 5px;border-radius:0;height:40px;padding:0 10px;line-height:40px}#ngg_page_content .groupItem .album_obj{background-color:#000}#ngg_page_content .groupItem .item_top a{color:#fff;float:right;text-decoration:none}.groupItem .item_top a:hover{color:#fff}.itemContent{border-color:#dfdfdf;border-style:none solid solid;border-width:0 1px 1px;padding:2px 0 20px 2px}.itemContent p{border:0;margin:0;padding:0}.inlinepicture{float:left;display:inline;margin:0;padding:0 3px 1px}.inlinepicture img{margin:3px;max-height:60px}.sort_placeholder{border:1px dashed #bba!important;margin:5px;background:#f9f9f9}.widget-holder{min-height:400px;padding-top:1px}.target{background-color:transparent}div.widget-top h3{text-align:center;line-height:25px;margin:0;padding:5px 12px;font-size:13px;letter-spacing:.5px;text-transform:uppercase}div.widget-top{text-shadow:0 1px 0 #fff;background-repeat:repeat-x;background-position:0 0;font-size:13px}.ui-autocomplete-start{background-position:99% center}#ngg_page_content .ngg_gallery_sort .tablenav{margin:15px 0}#ngg_page_content .ngg_gallery_sort ul.subsubsub{margin:10px 0 15px}#ngg_page_content .ngg_gallery_sort .imageBox_theImage{width:auto}#sortGallery{position:relative}p#sortButton{margin:0;position:absolute;right:0;top:0}#ngg-sort-gallery-container{display:flex;flex-wrap:wrap}.imageBox,.imageBoxHighlighted{width:130px;height:160px;overflow:hidden;text-overflow:ellipsis;padding:5px}.imageBox_theImage{width:110px;height:125px;background-position:center;background-repeat:no-repeat;margin:0 auto;margin-bottom:2px}.imageBox_label{text-align:center;font-family:arial;font-size:11px;padding-top:2px;margin:0 auto}#insertionMarker{height:150px;width:6px;position:absolute}#insertionMarkerLine{width:6px;height:145px}#insertionMarker img{float:left}#dragDropContent{opacity:.4;position:absolute;z-index:10;display:none}.error_inline{background:#ffebe8 none repeat scroll 0;border:1px solid #c00;margin:5px auto;padding:10px}.ngg-list{font-size:11px;margin-left:15px;list-style-position:inside;list-style-type:disc}#ngg-manage-images-items-per-page-label{float:right;line-height:35px;margin-right:5px}#ngg-manage-images-items-per-page{float:right;margin-right:30px}@media (max-width:1200px){div[data-id=details-link] .two-col .col{width:100%;min-width:100%}}@media (max-width:1080px){#ngg-gallery-wizard>span{display:none}.ngg_manage_galleries .tablenav.bottom{display:none}.ngg_manage_images #gallery_fields td:nth-of-type(even){margin-bottom:8px}.ngg_manage_images #gallery_fields td:nth-of-type(odd){background:#f7f7f7;padding-left:10px;font-weight:700}.ngg_manage_images #gallery_fields,.ngg_manage_images #gallery_fields tbody,.ngg_manage_images #gallery_fields td,.ngg_manage_images #gallery_fields tr{display:block;width:100%;box-sizing:border-box}.ngg_manage_images #gallery_fields td{padding:10px 5px;border:1px solid #f7f8f3;margin:0}}@media (max-width:900px){.ngg_manage_galleries tfoot{display:none}.ngg_manage_galleries .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}.ngg_manage_galleries td.author,.ngg_manage_galleries td.id,.ngg_manage_galleries td.page_id,.ngg_manage_galleries th#author,.ngg_manage_galleries th#id,.ngg_manage_galleries th#page_id{display:none!important}#ngg-listimages td.column.column-2,#ngg-listimages td.column.column-6,#ngg-listimages td.column.column-8,#ngg-listimages tfoot,#ngg-listimages thead .column-1,#ngg-listimages thead .column-2,#ngg-listimages thead .column-4,#ngg-listimages thead .column-5,#ngg-listimages thead .column-6,#ngg-listimages thead .column-7,#ngg-listimages thead .column-8{display:none}#ngg-listimages .column-3{min-width:200px}table#ngg-listimages,table#ngg-listimages thead{display:block}#ngg-listimages .iedit td{padding-bottom:30px!important}}@media (max-width:800px){table#ngg-listimages,table#ngg-listimages tbody,table#ngg-listimages td,table#ngg-listimages tr{display:block}table#ngg-listimages tr{padding:10px 5px!important}#ngg-listimages thead,#ngg-listimages thead th{display:block;width:100%;box-sizing:border-box}#ngg-listimages .row_actions td:first-of-type{display:none}#ngg-listimages tfoot{display:none}#ngg-listimages .row_actions{display:none;display:block;clear:both;padding:0 8px 10px!important;border-bottom:1px solid #c1c97c}.ngg-listimages tr.iedit td{display:block!important;float:left;box-sizing:border-box;padding-bottom:10px!important}#ngg-listimages td.column-1,#ngg-listimages td.column-2{width:10%!important;height:150px;float:left;box-sizing:border-box;display:none}#ngg-listimages td.column-3{width:55%;max-width:300px;float:left;box-sizing:border-box;padding-bottom:10px!important}#ngg-listimages td.column-4{width:40%!important;float:left;box-sizing:border-box}#ngg-listimages td.column-5,#ngg-listimages td.column-6,#ngg-listimages td.column-7{padding:0 5px!important}#ngg-listimages td.column-6{margin-top:-5px;margin-bottom:-8px}.ngg-listimages td.column-7{padding-bottom:15px}#ngg-manage-images-items-per-page,#ngg-manage-images-items-per-page-label{display:none}#ngg-listimages .column-6 textarea{height:60px}.ngg_manage_images .tablenav.bottom .displaying-num{display:none}}@media (max-width:782px){#ngg-gallery-wizard{display:none}#ngg_page_content .ngg_manage_galleries .tablenav.top>div{display:block;width:100%}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages{margin-top:20px;margin-bottom:28px!important}#ngg_page_content .ngg_manage_galleries .search-box input[type=text]{width:calc(100% - 150px)!important}#ngg_page_content .ngg_manage_galleries .search-box input[type=submit].button-primary{height:40px!important}#ngg_page_content .ngg_manage_galleries .search-box-wrapper{flex-direction:column}#ngg_page_content .ngg_manage_galleries form.search-form{width:100%}#ngg_page_content #editgalleries div.tablenav.top div.alignleft.actions input.button-primary{width:auto!important;display:inline-block}#ngg_page_content #editgalleries div.tablenav.top div.alignleft.actions input.button-primary:first-of-type{margin-left:5px}#ngg_page_content #editgalleries div.tablenav.top div.tablenav-pages{display:none}#ngg_page_content #editgalleries #bulkaction{width:auto!important}}@media (max-width:737px){.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{font-size:22px}.ngg-overlay-dialog input[type=radio]{height:16px;width:16px}#ngg-gallery-wizard{display:none}}@media (max-width:640px){.ngg_manage_galleries td.description,.ngg_manage_galleries th#description{display:none!important}.ngg_manage_albums .tablenav .actions{width:100%;float:none}.ngg_manage_albums .tablenav span{display:block}.ngg_manage_albums .target-album,.ngg_manage_albums .widget.widget-right{width:32%!important;margin:.5%!important;padding:5px 5px 10px}.groupItem .item_top{height:auto!important;line-height:1.5;padding:8px;font-size:12px}#ngg_page_content .groupItem .item_top a{display:none}.ngg_manage_albums div[style="float:right;"]{float:none!important}.gallery_page_nggallery-manage-gallery .ui-dialog{width:95%!important;left:2.5%!important}.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 10px}.ngg-overlay-dialog td{display:block;width:100%!important;padding:0!important}.ngg-overlay-dialog input[type=radio]{margin:2px 5px;height:16px;width:16px}}#TB_overlay{background:#000;opacity:.7;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100050}#TB_window{position:fixed;background-color:#fff;z-index:100050;visibility:hidden;text-align:left;top:50%;left:50%;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3)}#TB_window img#TB_Image{display:block;margin:15px 0 0 15px;border-right:1px solid #ccc;border-bottom:1px solid #ccc;border-top:1px solid #666;border-left:1px solid #666}#TB_caption{height:25px;padding:7px 30px 10px 25px;float:left}#TB_closeWindow{height:25px;padding:11px 25px 10px 0;float:right}#TB_closeWindowButton{position:absolute;left:auto;right:0;width:29px;height:29px;border:0;padding:0;background:0 0;cursor:pointer;outline:0;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#TB_ajaxWindowTitle{float:left;font-weight:600;line-height:29px;overflow:hidden;padding:0 29px 0 10px;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 39px)}#TB_title{background:#fcfcfc;border-bottom:1px solid #ddd;height:29px}#TB_ajaxContent{clear:both;padding:2px 15px 15px 15px;overflow:auto;text-align:left;line-height:1.4em}#TB_ajaxContent.TB_modal{padding:15px}#TB_ajaxContent p{padding:5px 0 5px 0}#TB_load{position:fixed;display:none;z-index:100050;top:50%;left:50%;background-color:#e8e8e8;border:1px solid #555;margin:-45px 0 0 -125px;padding:40px 15px 15px}#TB_HideSelect{z-index:99;position:fixed;top:0;left:0;background-color:#fff;border:none;opacity:0;height:100%;width:100%}#TB_iframeContent{clear:both;border:none}.tb-close-icon{display:block;color:#666;text-align:center;line-height:29px;width:29px;height:29px;position:absolute;top:0;right:0}.tb-close-icon:before{content:"\f158";font:normal 20px/29px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#TB_closeWindowButton:focus .tb-close-icon,#TB_closeWindowButton:hover .tb-close-icon{color:#006799}#TB_closeWindowButton:focus .tb-close-icon{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}PK!Xf88src/Legacy/admin/overview.phpnu[ '', 'status' => 'ok', ]; \Imagely\NGG\Display\DisplayManager::enqueue_fontawesome(); if ( $action_status['message'] != '' ) { ?>

    ' . __('Launch Gallery Wizard', 'nggallery') . ''; ?>
    */ ?>

    NextGEN Gallery University on YouTube to see all available vidoes.', 'nggallery' ), esc_url( 'https://www.youtube.com/playlist?list=PL9cmsdHslD0vIcJjBggJ-XMjtwvqrRgoM' ) ); ?>

    NextGEN Gallery University on YouTube.', 'nggallery' ), esc_url( 'https://www.youtube.com/playlist?list=PL9cmsdHslD0vIcJjBggJ-XMjtwvqrRgoM' ) ); ?>

    [ __( 'Filmstrip Gallery', 'nggallery' ) => [ true, false ], __( 'Masonry Gallery', 'nggallery' ) => [ true, false ], __( 'Mosaic Gallery', 'nggallery' ) => [ true, false ], __( 'Tiled Gallery', 'nggallery' ) => [ true, false ], __( 'Film Gallery', 'nggallery' ) => [ true, false ], __( 'Blogstyle Gallery', 'nggallery' ) => [ true, false ], ], __( 'Ecommerce', 'nggallery' ) => [ __( 'Ecommerce', 'nggallery' ) => [ true, false ], __( 'Paid Digital Downloads', 'nggallery' ) => [ true, false ], __( 'Coupons', 'nggallery' ) => [ true, false ], __( 'Price Lists', 'nggallery' ) => [ true, false ], __( 'Automated Tax Calculations', 'nggallery' ) => [ true, false ], __( 'Automated Print Fulfillment', 'nggallery' ) => [ true, false ], __( 'Proofing', 'nggallery' ) => [ true, false ], ], __( 'Interface', 'nggallery' ) => [ __( 'Hover Captions', 'nggallery' ) => [ true, false ], __( 'Lazy Loading', 'nggallery' ) => [ true, false ], __( 'Infinite Scroll', 'nggallery' ) => [ true, false ], ], __( 'Image Upload / Processing', 'nggallery' ) => [ __( 'Lightroom Plugin', 'nggallery' ) => [ true, false ], ], __( 'Other', 'nggallery' ) => [ __( 'Digital Downloads', 'nggallery' ) => [ true, false ], __( 'Image Protection', 'nggallery' ) => [ true, false ], __( 'Image Commenting', 'nggallery' ) => [ true, false ], __( 'Image Deeplinking', 'nggallery' ) => [ true, false ], __( 'Full-Screen Lightbox', 'nggallery' ) => [ true, false ], __( 'Image Social Sharing', 'nggallery' ) => [ true, false ], __( 'Lightbox Slideshow', 'nggallery' ) => [ true, false ], ], ]; ?> $block ) { ?> $supports ) { ?>

    Get NextGEN Pro Today and Unlock all the Powerful Features

    Bonus: NextGEN Gallery users get 50% off the regular price using in the link above.

    $preset ) { if ( $current === 1 ) { ?>