pax_global_header00006660000000000000000000000064134650622510014516gustar00rootroot0000000000000052 comment=038ea4a60bf777528d105283785118bac2ee9a3a lektor-3.1.3/000077500000000000000000000000001346506225100130225ustar00rootroot00000000000000lektor-3.1.3/.codecov.yml000066400000000000000000000002701346506225100152440ustar00rootroot00000000000000# https://codecov.io/gh/lektor/lektor/ comment: false coverage: precision: 2 range: - 70.0 - 100.0 round: down status: changes: false patch: true project: true lektor-3.1.3/.gitignore000066400000000000000000000003501346506225100150100ustar00rootroot00000000000000.DS_Store *~ *.pyc *.egg-info *.pex .cache #* build dist venv lektor/admin/static/gen example-project coverage/ .coverage coverage.xml coverage.lcov .nyc_output .pytest_cache node_modules gui/build gui/node_modules gui/static/gen lektor-3.1.3/.travis.yml000066400000000000000000000023571346506225100151420ustar00rootroot00000000000000language: python branches: only: - master matrix: include: # Node 6 - python: 3.6 env: TRAVIS_NODE_VERSION=6 # Node 7 is End-of-Life # Node 8 - python: 3.6 env: TRAVIS_NODE_VERSION=8 # Node 9 - python: 3.6 env: TRAVIS_NODE_VERSION=9 # Node 10 - Py 2.7, 3.5-3.6 - python: 2.7 env: TRAVIS_NODE_VERSION=10 - python: 3.5 env: TRAVIS_NODE_VERSION=10 - python: 3.6 env: TRAVIS_NODE_VERSION=10 - python: 3.7 env: TRAVIS_NODE_VERSION=10 dist: xenial sudo: true cache: directories: - lektor/admin/node_modules before_install: - rm -rf ~/.nvm - git clone https://github.com/creationix/nvm.git ~/.nvm - (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) - source ~/.nvm/nvm.sh - nvm install $TRAVIS_NODE_VERSION install: - travis_retry pip install --upgrade pytest - travis_retry pip install --upgrade codecov - travis_retry pip install --editable .[test] - travis_retry make build-js before_script: - python --version - pip list - node --version - npm --version script: make coverage after_success: - codecov notifications: webhooks: urls: - https://webhooks.gitter.im/e/f0c538cdfc9883f81e34 lektor-3.1.3/CHANGES000066400000000000000000000163131346506225100140210ustar00rootroot00000000000000Changelog ========= These are all the changes in Lektor since the first public release. 3.1.3 Release date 26th of January, 2019 - Release with universal build. 3.1.2 Release date 7th of September 2018 - Fix pagination and virtual pathing for alts - Fixing deply from local server in Python 3 - Now passing server_info to publisher from local server, providing better support for plugin provided publishers. - Added a more full-featured example project. - Adding Jinja2 `do` extension. - Better new-plugin command. - More tests. - Added the ability to sort child pages in admin according to models. - Better image handling and info detection for JPGs and SVGs - Lektor can now be ran with `python -m lektor` - New plugins now come with a more full featured setup.py 3.1.1 ----- Release date 18th of April 2018 - Better Image dimension detection. - Fix backwards compatibility with thumbnail generation. - Adding safety check when runnning new build in non-empty dir since that could delete data. - Adding command aliases. 3.1.0 ----- Release date 29th of January 2018. - Adding ability to use Lektor Themes. - Adding Markdown event hook between instantiating the Renderer and creating the Markdown Processor - Improving tests for GitHub deployment. - Added the ability to use IPython in the lektor dev shell if it's available. - Added ability to publish from different filesystems. - Adding new option to turn disable editing fields on alternatives. - Added automated testing for Windows. - Expanded automated testing environments to Python 2.7, 3.5, 3.6, & Node 6, 7, 8. - Windows bugfixes. - Improved exif image data. - Improved date handling in admin. - Make GitHub Pages branch detection case insensitive. - Set sqlite isolation to autocommit. - Fixed errors in the example project. - Enabling pylint and standard.js. - Improved image rotation. - Now measuring tests and pull requests with code coverage. - Thumbnails can now have a defined quality. - Moved Windows cache to local appdata. - README tweaks. - Beter translations. - Better file tracking in watcher. - Upgraded many node dependencies. - Upgraded from ES5 to ES6. - Added mp4 attachment type. - Bugfixes for Python 3. 3.0.1 ----- Released on 13th of June 2017. - Bugfixes and improved Python 2 / 3 compatibility 3.0 --- Released on 15th of July 2016. - Switch to newer mistune (markdown parser). - Rename `--build-flags` to `--extra-flags`, allow the deploy command to also accept extra flags. 2.4 --- Released on 7th of July 2016. - Resolved an issue with unicode errors being caused by the quickstart. 2.3 --- Released on 31st of May 2016 - Fixed an issue with `get_alts` not being available in the template environment. 2.2 --- Released on 12th of April 2016 - Corrected an issue where certain translations would not make the admin panel load. 2.1 --- Released on 12th of April 2016 - Fixed a code signing issue on OS X 10.10.3 and lower. 2.0 --- Released on 11th of April 2016 - Added `_discoverable` system field which controls if a page should show up in `children`. The default is that a page is discoverable. Setting it to `False` means in practical terms that someone needs to know the URL as all collection operations will not return it. - Added `for_page` function to pagination that returns the pagiantion for a specific page. - Make pagination next_page and prev_page be None on the edges. - Allow plugins to provide publishers. - Added `|markdown` filter. - Added French translations. - Unicode filenames as final build artifacts are now explicitly disallowed. - Serve up a 404.html as an error page in the dev server. - Improvements to the path normalization and alt handling. This should support URL generation in more complex cases between alts now. - Show a clearer error message when URL generation fails because a source object is virtual (does not have a path). - Empty text is now still valid markdown. - Lektor clean now loads the plugins as well. - Basic support for type customization. - Fields that are absent in a content file from an alternative are now pulled from the primary content file. - Development server now resolves index.html for assets as well. - Markdown processing now correctly adjusts links relative to where the rendered output is rendered. - Added Dutch translations. - Added Record.get_siblings() - Added various utilties: build_url, join_path, parse_path - Added support for virtual paths and made pagination work with it. - Added support for Query.distinct - Add support for pagination url resolving on root URL. - Server information can now also contain extra key/value pairs that can be used by publishers to affect the processing. - The thumbnails will now always have the correct width and height set as an attribute. - added datetime type - added support for the process_image utility functions so that plugins can use it directly. - added support for included_assets and excluded_assets in the project file. - added Spanish translations. - added Japanese translations. - added support for discovering existing alts of sources. - added support for image cropping. - added preliminary support for publishing on windows. - children and attachments can now have a hidden flag configured explicitly. Attachments will also no longer inherit the hidden flag of the parent record as that is not a sensible default. - changed internal sqlite consistency mode to improve performance on HDDs. - allow SVG files to be treated as images. This is something that does not work in all situations yet (in particular thumbnailing does not actually do anything for those) 1.2.1 ----- Released on 3rd of February 2016 - Bugfix release primarily for OS X which fixes a code signing issue. 1.2 --- Released on 1st of February 2016 - Fixed an error that caused unicode characters in the project name to be mishandled in the quickstart. - Do not create empty folders when the quickstart skips over files. - Empty values for the slug field now pull in the default. - Corrected a bug in hashing in the FTP publisher that could cause files to not upload correctly. - Improved error message for when imagemagick cannot be found. - Fixed scrolling in the admin for firefox and some other browsers. - Fixed a problem with deleting large projects due to sqlite limitations. - Fixed admin preview of root page in firefox. - Changed FTPS data channel to use TLS. 1.1 --- Released on 27th of December 2015 - Fixed a bug where resolving URL paths outside of alts did not fall back to asset resolving. - verbose mode now correctly displays traceback of build failures. - Fixed a bug that caused build failures not to be remembered. - Fixed a bad EXIF attribute (longitude was misspelt) - Use requests for URL fetching instead of urllib. This should fix some SSL errors on some Python versions. - Parent of page now correctly resolves to the right alt. - Publish from a temporary folder on the same device which solves problems on machines with `/tmp` on a different drive. 1.0 --- Released on 21st of December 2015 - Improved ghpages and rsync deployments. - Implemented options for default URL styles. - All artifacts now depend on the project file. - Fixed an issue with renames from tempfile in the quickstart. 0.96 ---- Initial test release. Release date 19th of December 2015 lektor-3.1.3/LICENSE000066400000000000000000000027361346506225100140370ustar00rootroot00000000000000Copyright (c) 2015-2016 by the Armin Ronacher. Some rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. lektor-3.1.3/MANIFEST.in000066400000000000000000000004031346506225100145550ustar00rootroot00000000000000recursive-include lektor/quickstart-templates * recursive-include lektor/translations * recursive-include lektor/admin * recursive-exclude lektor/admin/node_modules * global-exclude *.py[cdo] __pycache__ *.so *.pyd .DS_Store include LICENSE include README.md lektor-3.1.3/Makefile000066400000000000000000000017241346506225100144660ustar00rootroot00000000000000all: build-js build-js: @echo "---> building static files" @cd lektor/admin; npm install . @cd lektor/admin; npm run webpack pex: virtualenv pex-build-cache pex-build-cache/bin/pip install --upgrade pip pex-build-cache/bin/pip install pex requests wheel pex-build-cache/bin/pip wheel -w pex-build-cache/wheelhouse . pex-build-cache/bin/pex \ -v -o lektor.pex -e lektor.cli:cli \ -f pex-build-cache/wheelhouse \ --disable-cache \ --not-zip-safe Lektor rm -rf pex-build-cache test-python: @echo "---> running python tests" py.test . --tb=long -svv --cov=lektor coverage-python: test-python coverage xml test-js: build-js @echo "---> running javascript tests" @cd lektor/admin; npm run lint @cd lektor/admin; npm test coverage-js: test-js @cd lektor/admin; npm run report-coverage test: test-python test-js coverage: coverage-python coverage-js osx-dmg: $(MAKE) -C gui osx-dmg install-git-hooks: ln -sT $(PWD)/bin/pre-commit .git/hooks/pre-commit lektor-3.1.3/README.md000066400000000000000000000043361346506225100143070ustar00rootroot00000000000000# Lektor [![Unix Build Status](https://api.travis-ci.org/lektor/lektor.svg?branch=master)](https://travis-ci.org/lektor/lektor) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/lektor/lektor?branch=master&svg=true)](https://ci.appveyor.com/project/lektor/lektor) [![Code Coverage](https://codecov.io/gh/lektor/lektor/branch/master/graph/badge.svg)](https://codecov.io/gh/lektor/lektor) [![PyPI version](https://badge.fury.io/py/Lektor.svg)](https://pypi.org/project/Lektor/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/Lektor.svg)](https://pypi.org/project/Lektor/) node:? [![Join the chat at https://gitter.im/lektor/lektor](https://badges.gitter.im/lektor/lektor.svg)](https://gitter.im/lektor/lektor?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Lektor is a static website generator. It builds out an entire project from static files into many individual HTML pages and has a built-in admin UI and minimal desktop app. To see how it works look at the ``example`` folder which contains a very basic project to get started. For a more complete website look at [lektor/lektor-website](https://github.com/lektor/lektor-website) which contains the sourcecode for the official lektor website. We also have the example project at the top level of this repository `example/` that is a lean example of the wide variety of the features of Lektor. ## How do I use this? For installation instructions head to the official documentation: * [Installation](https://www.getlektor.com/docs/installation/) * [Quickstart](https://www.getlektor.com/docs/quickstart/) ## Want to develop on Lektor? This gets you started: ``` $ git clone https://github.com/lektor/lektor $ cd lektor $ virtualenv venv $ . venv/bin/activate $ pip install --editable . $ make build-js $ make install-git-hooks $ export LEKTOR_DEV=1 $ cp -r example example-project $ lektor --project example-project server ``` If you want to run the test suite: ``` $ virtualenv venv $ . venv/bin/activate $ pip install --editable ".[test]" $ make test ``` lektor-3.1.3/appveyor.yml000066400000000000000000000033751346506225100154220ustar00rootroot00000000000000# https://ci.appveyor.com/project/lektor/lektor matrix: fast_finish: true branches: only: - master # Cache imagemagick cache: - C:\ProgramData\chocolatey\bin -> appveyor.yml - C:\ProgramData\chocolatey\lib -> appveyor.yml environment: matrix: # Node 6 - PYTHON: "C:\\Python37" NODE_JS_VERSION: "6" # Node 7 is End-of-Life # Node 8 - PYTHON: "C:\\Python37" NODE_JS_VERSION: "8" # Node 9 - PYTHON: "C:\\Python37" NODE_JS_VERSION: "9" # Node 10 - Py 2.7, 3.5-3.7 - PYTHON: "C:\\Python27" NODE_JS_VERSION: "10" - PYTHON: "C:\\Python35" NODE_JS_VERSION: "10" - PYTHON: "C:\\Python36" NODE_JS_VERSION: "10" - PYTHON: "C:\\Python37" NODE_JS_VERSION: "10" install: # some tests require imagemagick - choco install --timeout 600 imagemagick.tool || true # Install lektor, dependencies and test package requirements - "%PYTHON%\\python.exe -m pip install --upgrade pytest" - "%PYTHON%\\python.exe -m pip install --upgrade codecov" - "%PYTHON%\\python.exe -m pip install --editable .[test]" # Get the latest stable version of Node.js - ps: Install-Product node $env:NODE_JS_VERSION # Install node modules - cd lektor\admin - npm install . - npm run webpack - cd .. - cd .. # Not a .NET project build: false test_script: # Run Python tests - "%PYTHON%\\python.exe --version" - "%PYTHON%\\python.exe -m pip list" - "%PYTHON%\\Scripts\\pytest.exe . --tb=long -svv --cov=lektor" # Run JS tests - cd lektor\admin - node --version - npm --version - npm run lint - npm test # on_failure: # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) lektor-3.1.3/bin/000077500000000000000000000000001346506225100135725ustar00rootroot00000000000000lektor-3.1.3/bin/pre-commit000077500000000000000000000002611346506225100155730ustar00rootroot00000000000000#!/bin/bash touched_js_admin_files=`git diff --cached --name-only | egrep '\.jsx?$' || true` if [ -n "$touched_js_admin_files" ]; then cd lektor/admin/ && npm run lint fi lektor-3.1.3/example/000077500000000000000000000000001346506225100144555ustar00rootroot00000000000000lektor-3.1.3/example/Example.lektorproject000066400000000000000000000004041346506225100206570ustar00rootroot00000000000000[project] name = Example [alternatives.en] name = English primary = yes locale = en_US [alternatives.fr] name = French url_prefix = /fr/ locale = fr [alternatives.de] name = German url_prefix = /de/ locale = de [packages] lektor-markdown-highlighter = 0.1 lektor-3.1.3/example/assets/000077500000000000000000000000001346506225100157575ustar00rootroot00000000000000lektor-3.1.3/example/assets/static/000077500000000000000000000000001346506225100172465ustar00rootroot00000000000000lektor-3.1.3/example/assets/static/favicon.png000066400000000000000000000132721346506225100214060ustar00rootroot00000000000000PNG  IHDR))@CyiCCPICC Profile(}M+DaBCaYLs͋;WFYb6Ȇ'`#J),$eoAHy r<9ꦙ*tƶ"AmrjZs㦉*Ս9"%*^v(Z\,k@IpaZpm*Vz|JxMqy~ԌG'šoFJK{j8Z4>&e&Tx Y"D#t'|t ;lb'6 i|]~P{bnA}\1݇4s[SST+ {|Gq o8o{|gŽ>ػU=-hw7gF ` pHYs  YiTXtXML:com.adobe.xmp 1 L'YIDATx_UWևO231yΤb%cD-"M)*H *PQ D40wLD)s>s{v'>====================ACmg''g$g'_>r:𩜃'O\ڟ/)uS!_MC== J.{𼳫xZIc!ۦ{-ȃOY Okoqt::2喸|Ըn~10+>Ynn=Ώ}q_=C_|&yWWE.+Od`M{쑶+x3K{zx;u_ܸiB.iEsNn/=|)ZuIvuIjY)\GSUJޱ4uOW[.()@4eᚁX]1jWlJHɺW+ͭS=ĸgG[ٌgilD۹W{ ,?$Eqq  -PXn~g1;?xc^:ڞIg=>|==5LCUM=?Ks'@s5>u)owE81}\^{rI-dE ~=pi/=xy"ّq~T.g ㆳ/#q^M7l@ `&܃-^m0?s p %Qˋ=ٽh2>^ir\. [pț-߿=#JX@<{m)}S{!G<.mȾl03Od/CP=)JˤmiNڶ}Wk^߼iFsjq3Ѭ~qԷ{(tC~H)m{qq1*.91A3LZY &.`2I=215UʕgqOx\_+=IKs]`]G=Uq5w+cE:|&Jvq*XD=%9?pώ^; 8g;PGp^,ȃ&Ȫ-g/ңK")g#?ɕ$'lD>2%{=L؅+q&=bAv=[m"I,GD F9zgmL-a3pb< Z4-{{* Ѵ|qfZԢii=0n> LEQ)YL~rh`n=+S,wvQ&P*YIZ>HYɓT9,c%[{L S=f"WNGޣ?s79nNYÓsY!ᑙtgG޸gR|&G {fտ&cT$2%xS|h9x,I\X#$|lܳQqE3p/}gxJ3qO9u/Y@቙{Pxgr_h:{Uw?|$ܓe;;?sq1ܳ5n)>-= ȄFN"g(A3;{QWYE{OB3s`zܳiX LWG|V%'4} q:sPL=!?9ʶy;6tL4=ɥtOԷm#u{Ӧ-4*ad+:'l@CAKs{efe'Տx&p2=a<!rns !ҷ6aˑ8d`aGb o|T$+>uO4a!}Oif6MwO8\G K4׺(-uOpdxɅˈɕ&." rR4<x5 7R&"3ѱs~ޛsUy-r2ӕF2qTʍ,fk8$M5u#f ˕gg '78tހc*>՛+>(`&}cTe 9O>noBrɎ2<gTHՏȔQv{,D½>nܪһ4<}_x{}nxOFI݊m^Xj:ҕ9n^w P^!nw*l T9S:)s`ke½^>rvlf~:0Jd?{~Wxm;Ewqw.zx8*mͭlplUr1PG\^F?Gz<܃|䴜0$._{:A$J{$N]yƽ_d߽hge)2N dҁw5*yiT:t!Yrx~G#~r3vLaC R{lB3lͤS0)plulАoF>5}3=5~'gXLKf(|oDDfftܳ/2UV{ ˻eAA(~eU`M/r {\^)埁Q}bø<#jnW%넲b;kiy,u1{ +іX).J^8jћk&Lyӳ,NZldlAo J.}&YI18utE/+4[I7?):k%ʸV}>ח@|,;]|DsG3Qί)?]e.{AH*\iLLH`q ]RF3Y7bvYV+/O#8*˞dfGuVLy&$-'e6l@XKٌ8dFulWw27imS*0p䩯Y W) &.Y$Sc9Փ nܻE.NvL.0={ى'h'˲ٚe_Dũ։D+M}\THq͝ 4;KꝊ:wN:MH1{AiwL.2prZ/r I'K',g,r^'8 RӾާrךWF1M7rSs[9][KV/{ e~S*]t ᠰ[ؓ_7*Q/q&.00AgD!^YQ#_cCb5u1X#E=nJI2!om䀿|s_-gYߧU,Cr_؇wU{]j3C3b%!ݞL9DuSx#gvP pHYs   IDATx}-Yku=sι q%+\#a-,*#) v@"ccH1)RJ\VaQ*!CdX1]!0_=k׳kz4sU93{^Yz^B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B![j҃9::3C !4M2M(9gQUQWDU% ""): 4s~^~>1S!XkfR}/1FQUI)8ulӜs]O:QU9v}/"bZv9uQlkW{uu;b-n/IAVv !Hg&I)Iy!l-ӈHV+~0 s}/JܺuK̬qEU[}xx(1F9c?ڶ?8ׯ͛7el#X~u}cƍ""30 g ywQiZ^aB!B!KF׃Ne%Ȗ :1V5%FCԊV^m?uٖ`B3!\z^nDK"f^kV-ZQ·~vB} zBǤ3!z!ۋ8$1ؾWm01kj#`ċ~[c/o> 惶x ӆTDI.i!B!BmzJx:i 4A*z:{Ԋ;3KnF8mEX8R l3tX qŸ'ܘKb5n,>h: r zg+*׳öio! qt^Kι:ovzY G?֭>[~8qsN^rP/yyuCm'~"lin3Z߹Ps,okK!B!s*}"[n>B"Rb:;uz![`0T>ۺg1lVrhH=$m䷇_$Jpea/ciXN:Ck&#/:)yI9q|CnEw}ߟu.qxia;]m[l/J1 >Xh5?],>k-m;9UZ׺l(B!B!du@!Rx3M"PED<.V@U;HϢB^kEٔl6-qӋas~8-*0,滞%zAq( `B۝v;yA_;tmg ǩ ^ۂF63{l KB:x+![KYKY߾}nݪ/9_[ \^}Q0l#/mȖZߦ-^jzt}|VӶ/^VlsCy|Ԅf[/}wZv.ԥj_q/m _>;|z1>,o x{SUu4lFu} !B!Bs7^mDB-ði *\q.`K-ssk`SҊ"Rp!.9'];%p.EQwo9B1%,[˥yKo_+BYJIz] byt^W/ajݜKNg/"f) 8LEDKПRt ۷Uϊ"aɭourppP5`ǰeٜ*emhU׻+0HYCr^UeP%B!Bs]xCU-n=X[%p+R2OљSYmuvQ LKV]R>c=P#Vk^"/?+"ڒ[u%|VMd{~mj; ~9i/B֊u.E\%7_iݶKեyw.iaSgKXOw=8z8 !wjsVJ1΋W1ZJ kP.ƨ)%B!ByNp]7t[""8Q iӈqEt5! aɑ.:ժJ)ɭ[$缕:(rBXįjUHmn]<^;C>waoC|<<<U-!g{xSVFFZqfk|j^$Y|eWȫmVoi폵6~8̿px%7ۯ fHfc=NviI[nTJA33+N^+̥moʐ;V}/GGGgnB!B!wKZ{ABzRJ:M\^P]'U!&Acu6½aQxՙ sxgzѻ<b0=2ߊ|KX/ o/ԶNc]@T,/|ylW/X'Yh ލ$Yٽ^nV8Eˑx79qa"*puOӴ/}u^b_g̣4Lf!ηlwRJrm+Il,"s"ΪovN}m!B!BBje*JvMU5J5`[E(Q)Q NԭgZ h݃wzG(N9c!l];}aOd;fɵ$D#)vxqЋ9S\!c>ο]?ϊirr֊(FfB_r⨟fzӷǩ? ڷui~z/H/( gA;%G8ma}f/mo] ]dj1"ffyMUB;)`w޼y1 B!B\+\zEX,7 "aPD܀򾊈+2 (α$$fE[B$Z!i1zjϛRajW= b@׺!ba  1 PB FmE ` 6*C4#؋v):gz!Ol֑F|~9C =Zv+sn[׵M1/AaHu> ^kcJ&SXf~T)A෕ m.q}EnwEJN-h*-SJ:sP.B0dwlc!cruuE^B!B!5.Lu:Grf4J9R(QU58OT`U Eܩ^E 6"8>^8yx'wz;!I?t/NjޑBfl^`E޺lX o i?v{[^{R1-~Bq"r?M['(DQ/&۩ Xv{cimN}}i>v>3M[u9h!lfR> =b>}M)Y !B!B. xƒ{׉*BВi )h0 "1 78"WB^4MUsn!͖[q".Y/t"ayq.[ͦNz5QU}vubmKcr1mH .Nj^x 't+A"f9X\!8ChkQպV(bfq A|Ygbp Xw=<-|9v.[l7:{k1U_<sfn=co/ Ch.RJv||,!SU[Vu]VU1OӔsRD"~&g3 8f9)(iw1B!B!nr!!t\ubܻ*'N^`f!,"F2BH)2_L-lY)1@"KBwP|-պ3[ȉpyk"Xmݕ^`lnO/lY>B{^|($y1o!|.rmC~[-ڶm36lrKߗQt- `V9q{yiY5+q VS^UBPsVFSUw&+B!B!\4"j&\y|(2a "!B/ү?x,\tցN a*ZZLR_19s^ɶ0nN,^7="ɶH=̩., 'S{JV湵~>l$n ۦο~["ޭW#p!Oߴ{nl;mgf[[hۼcuX:Vݴd8Vsx "s=eRr,X,T4>w?m.~BXV984M:t^͛gmAB!B!sq!o "s5jo2tnøzEBcNhf"⧠++U1>WK4CB6)^XB99g0 9FƬuoB!B!Kz2.+7fB!S`Zi.-9筢x8u:Ualebf2Mt_4Mu!^TUi=|;pUU}6/B! +o .ƨ9gUՐsaB^BȥNJ!ƨiŭSiنaf#w !<5 -E}s^x:?U-B0z-!;>>-#1-x^T,\B!ܳ[V7Y W\nQxYdr9[FUC N-oVB!习*DD{D(OrĊ!RFy!"X~Z\AVUth!-[څ@ afu^t !rOrnw^-_`-*'B%ƴ:UUQSJsax !Iu:J0jf茬V!6:BgB9fEDj&wu#PgZrxxX[nQ%B=Å8xn[n"5kȫ)#!R2M)!n>, (6!B.rzIF2Tޡ[m lu5>"9,_\2e= SU+M!"1/B'8+sT7QΚ5!\0!;M"П ˩}%B.G@-X)N$ƨezx[ㆈT)-bU݊`1jZ)soyAD0d7Y*@E@8k8AB]@SJu]V(¬T="> n_/Ǜ6Ph-X\??'Rtxw䊈7kR2EDDqdX1*xB!#xa7n1FY>G)*Xx !q[QWDN3BEcqEU{-: 4_UU\e"A`|m^D\\a75?8y oy߼+' lZXI" E !B sf&C JqF buw]./^QK !+J}7E4 +^7端!rRT;`YMlV4/b0DڥSUfD[68|Urd\ݼ%®]ořB!{ɅeԬ]1 *2DJ͗!*%EݥgVB 2t54Mtk -'& !@[+{8/p"[39KN5M+o~J\圭vsh, 8Zq2[JIOo޼ɋ2!B x}QZ0;B8حفxg i !\}%u- E wK Pu&/x\rז ,^Fu8{!b:\gs7`%v^8x3B 'N_/JK!B dR`|/L 7/!\r^%ǒRRTGpTGfCBȹ9<<p<'f,GoTJeQU5C^ߜʚ_g !ANT}ATUVl6i+lG1j2Ui,7Lfj.Bv.iBuĽG!W[ENP-])*4Q%\;s:A{PI!SeZUvѩXӔYP KossAUC^KVVƼx8"`0g[L5s<;^wyrEFA,"'b%C=::B!{Ź޾sMdK) 3-:o!n!N@Uqsw]'׮]~zgm'r#ɃjR۷oiB֍"T5t]T5 !Hl6Af4F֩vA-hR4Q{Ŵ0HW@-""ͦMd:K"b1,"yg;o.QBO) Q8J:#E^B! 7ɟB.g9\,e !\m)d{Dd !Dݻw )PYp- IDAT6]m\[{}Dăl3+2}N)Yb9cD0d3KX_X^upjia!-־"B x+ kz}^+ w@*l:;c}p1OPDD{Zd{prxx(Z!"pkw%QDq+;)$j~f 2G8bJ nB^䅸+'4<RJlĻgqD禈B^xv(#^LJf.j]eU4qJpR՚ynu: 󯪪mEeB!/n0zp\ w CBSgˑ_o"ep]X(BD\urppP t]Waq0!A}78rtBT++K^D3F]n>+~x;~5` ƈl^EVj!D)B!xQ7 0ʹɄrPlfVB C9fb^70L\K܅Ջ=KY `qٲ${Ȝ-Xr4Yw#us} _v]ZMfnPc7;U]}e,ŭ]r1aVYy"ouZp}{M!=B2xE+^v7{2sKerεC^:Źe+ ԉ8v!tC 7TݸЊc~ޙ{Cطk>:ñb|Nn7gX/lhX[rʺX#Z­̣vCrpp`]8:͆"/!{H^eG9>>c.m:M4ƨ%AWSJ1Mr5}o^##hB!}w0*>>>FFau]#l!rornA;(J /XYm]>OUDF~zuBH-V*aR\Sũ.bCR\pÅ&r: >}oow+Dk`2WDd+zb[<'r+D$rAgk5B!d0 z-4fm~"DKHgGiQ-G>d?C5;7\ t]DEnNWYASJ{"lppQ pbEf# "s~%>2B=:vUU01 #wڪ92 [qYيפ)%[VB0WqAi2+yy ܨws^95ZwWDBQshhGB!¹^\\^2hsxi.r79ó|No.긼ݭX4!RDspwX79Q ?mhϭ-#?,9OBY~8tCV2y3X1fš6WNј'w !v䛏yU$rغk:A!r9}K${p샫r/p"sS}8mypt9f ep14M[BoJpꌄחS.\/|l69/-XiY5 %uB.nf1XJ2f7H0,"yG9KupY\N'윾eSה뤌5ys)jfZ^k 'EU3f#@!/[fjQ "B !22뼻E=lW'XVq%1 "TUc⹔jepn]C4ը \CP\ 9-ğ[S|;ZŽտnykD6"ZQ1m%RvYUCqǛ}c]0 W#{c=LSG촵w];u+A!O[C/TA`[dQ%\뵤]?V2^!]cib~~T,!h!rAD"~)j!)%UUd'4M2 "!pcuo6_Cr K< ?:±^.suynR'X4J۬l !&\Mql;Pk}o"")%K)Ysa6^e-#$jE)B!YrjN>GB9NJlU zppT-]-NSM)#B9YTՠ1(NWosyʼn$Bh~{cO^458_[vwJ׶sEaUUz!G?J+?i|v=Ϡ8{+hEt#B!Ws pFM+vwgy&f/\^ňjH)U.2pºsb48V17CQDBYЍ"tvP) E4B~{JDZžEU}>C~[oܝ,deă*b^E"1} 8'Տ๒B!¹^KE|Ε7)y;J*V-]/B~_u_u 5z 8Yǒ>O/~HUIh5⏆x%dH)Y3#Nrp v\ BG-o+;{EN\O,Fj抋"h;LADn dv+Tuc|xB7_URJv||l8¡Wc3i"ZEL\ro !XuR1Kȍ_2rQ\.y*Ny &rs KÎp׳.Ny !*qVfR._t⇹apֿ+"; CYQļQԮd'+B_ LUkۿ fpclBK羫nǫa Gwq='(\W^98d8 xsy\m@Yc 5r>ΪTU77?_}w}׋_׼/|+|߸qT>+sYf|5BCu5 np]._DGB>Ɓ=ax'{ C,:YVRYC.;/|K'>GY/G^4% w?ԓ)O}7'S~W>(ܺAu$X+V ݇8{SJi~(4B(BcH)LC>uJC<{?|HU53)d3K8裏>?~}Q/q h/Hu*&݁X~Xtx:1Mnx?WB$hh3n !9x17T=bŇMrx3'/' e_rrVE~կM(DG纔LӴ.9 Nb_ͽx[S )%Q"1\eC !Wٶ_)%[:ڲ|:k&"1\2~,CJ)<ַ'xً_=#/}^zppm !>, n<WCw6 յ [= wr,O~!Zq[)g33M)Z%=/ ʜk׾zu pg.nKs%G>.C;|b|~8չ}߾<"ϰ9ce̴*~g!C<48 ɻ\BuTU%d'e+ c̫Jr6 Cu4M뺠9i 4R93 ˿|}{/qO8F_p➳tXܻRFTrZu2O[l6u2nRJ57^> $ yq?9ϚxcU?Vy|?{r 0G$eZm9Pߠc8nC|+)E 3ɹ}jbzttǿ\vMo߾ B3-Ba[J^ǾD^/ Wx<|~-\~kn=v,?̫/"wV﫻—QPܱ ."B6\8EU:۪d5UE/VD^qEU5YN)eU%GE`Nþq# l3#ɝ9-[SJ d= /KD9P:pMk R5_7a]VU!2^7LhJ~()!^Boj#rx]7Bq?#O~7?؆៛Fa,`t]!Ys6UվĽ %*8Ylff6 C}]iqg^uI pG,E5\ePqUTBVoE[)Bfc׮]Si#Wȋ~DVgyU5o+9e~Qyn̯Cag'[q_>Γ![PmCAsΡ:KB$UY"Zof:sY7{=9 @!{ą9xSJ:xí|^8N>Yy |kag!ɻ]7ăȜC."[]:gj]5x*._f]> 庙PDEd~3/hx*|_Ktu](!fkEPiR)c ZJ4ƨ]ׅ#.jⲪ8dvFHh0RA4XoׂVd^9wc|9go0k !\}έʞj/1CŅ=`.b-ěLo<\j.9IA0uQYT}_xbNRJRZBɈRqU++N4F 3 ð }HddQwPw!r)%+YVߝoƽmq5R59j)* gYi&p\`-t]D$>RJȳV35`|WӢ 28KJ1F?Ѧi"*pj&0Bs m/.X!$φ?|~쵟\U/CI?ӻno y{;&i]ğ2_-(!Z]J),bvT5*~[gcᬇFBN{a('k1](F`ѩ\6Gd3⮔sC 缓vvQ6~Z#׮]J.:]=!H4W/zыg~+_?͹/fqUrl/!;(48"8vEjVPZt[^ۿVb8O *o Zw.^% 8nU~8؃GTb>(!1?~||㪺\5q77o"J7DsGK)YuZ<ŝ!Ķ9!#pj9ʈ +QEdtU>h8?GS~/ϡZqڢ)\pg8̬Zxm09 GBq!J+ꝋ9y^+_MOuS4*_)ߖ_uspP?$Ͽ2uDl  g wO_׼5| ^|oܸg=8u֓O?>]zׯゥ)cf6oAAz*!D !!Ӱ"nY1iXي(Z޾]|Wl6zÏ?F/_uq׃s:Ky/C#)U͛}2!31}x%ٟ#'z'?3?3x{W8IUS1suYD0 T7ղl 4߻KX/H/H문,`Rfμ#/ ڷ (cG~ȶsWHsVu]Swǘs9 w?vs !\}-zQRl- {$~gI7o/|c]_',?tMkc{C[KU[Y.nu9"4QDR95¿}S_L^=7ezի^裏y{c>gVszG>~'__OOέ[ƜsNsHe@Q*HZR< Y*Wwrn3Ri݊(Y]%SJ!SP`UXlf?&"9wfs7緲/ʼn"R#v'OHՐOk8bRk;/õ}I"r xx3EnWE"]!W,3c1jqBq´"b׮]۷oL!\\XkɽywMU3C~.+O9W9PVբK^ũ~-!z^}Md" 1F8LK?<,Ugx"4M;_SI"2$sRšxZijMU_SJYʈhevDg}ZD38ǝC!C9>>>qu]u4{Ipzt]w}DONXBD]ϥ%ZSJcj9gEivv7c1jqҖMG]B!`9KK<(owguSIU/oV}7o CBt"!B4,3~wYboNrΚR$y3~rm.`lײUfau'rΓM)IUR9c*n-wnqBWWnYW1Y#*s}N¥^!W;/bzV=9٣uR%%d8r9 E n@[vզiwB x}$ \~_O#)4~5_pN0duσjfV*GW'W`D uE%Bm<+՞Y2ı@VudG~w)jD$m6)4 0$%wIDrJuݖpc1F(^ުHIj(P^!W[nm@^o] ^ŵ 9ժupf"k_o߾u #^뵨 À[F8SqiBP|Ѿr/VG@u]'}W/!Ϲ^ӽp- t/*_JۿV4\}>/ rt֮re%q凳ElD ̖RRhE ?YSW$t>kj3}wruYU8)4M4T&3KV>zY-DR2X4 ;uxʒ# κq Ʒ,C%DDqV.(t:7 wj?~B5. 3A\,i7>g7Wn q\?6nʕ紥|S$;퓛̬{]VsYϜ nH`qH!AcZRfSJpf+A"q-l]W/Wx }R5UM!B@n1)ƘaH4nZ&Եg4݋Jnc$ < OO+4RJRk%"u#m.8M.}KY1;9RJ: C;k0 Ztڞm3x 1wF!jq;?,w)_qc8ƸþNr?vD^]/!fSo_; ?|Y!WUo׽-_Jsd>|R< ^ͦ:fSWdaRDjFc,%n7*Fw9'fPQQä^0q0E uH!HEЊ1*<~`$Bw9gcu޽TCUS<穪3[< V<w:&2e'"1Y8EHs!z5"r^o= CYٍEK~چkvs}4&a2 ǎBN^s}nۚE 8ԼM!2.RUuhB-Z 7['5 ޷-SS]z]E8qMJĚM蔧=_kP Ǐhx CFDol@B-'o#O9æe`SڢE ((MXeٜ9"AZ(j:XĭNiJι{RYآYul4Mbd?DsKs}@E-w-&L~ b9eYW~n{=dcӇlv%ޭZ ݽEp<ڤnCb՛E%< X+{7`ARCU-Zhjq ט cy"KoL&ZTp pQ5*_/M6z%Ql'~ТE+Պ\= 2Vmex'GroXKg>YolP̭f5-E%P>``T0M_W٭^cfxcCQMr-Z,1 '(̯b-XYkijjfff( J$mGYdc-u)=eYF~Y&x5Yz >fG{!B3NJMJEcЗn+æe|æzCs6`=UJ%s.hPa{$I&Hv5uҭ> 㪮RI։2| C={4hqDn\l}bV1L@UҞ? `>WZ@ԮC& NDqz5{{=_ |>33'IRCR_-W5xzLDFXeۨ^cA&y'?^)MJEtҭe1N/F ,^X#IOc\dS@$ኂ#cLTɥiJ^ƎE`Nd4MǑLTNSjZv7OT T.:;#KFD;/9#O h?uz|Ƙ7YcQ9GIDSW$OOJ!)$q>4MiժUDDk׮ec?n:&Cq{OᐉׇE$N3&- AD aq-'w&nK c x۟eQ_-zR:(prԺwb{,bܱkDgʱOK QkE3|> _!ƪuj%1&()H@D1kVv ZB-3UաVM&XD~~n9UK_cHcѮn]ubdϲ&u ԆJ54tsyN G0EngaIR ÛюK?q.EQ"GX# Ƙ཯k)uNZwَD455 4yG{LtԔ=q~> Zܧ_/]㔨ƙ'1q#m *ٚ5kp8D;Aׁ}9 |VM!Ny\vHQ;aJNLwVkJV5)_v$I8˲F~Y·3E/Zr#~|K> /v d[30.HZvQKۚXX@ /jUW.Z,zkO?QYѯ5bfXcGR&@f>랏ԮATPA>a0H:C)`.KU<&O+|tJZ9æx^N.$I$l8HHIDާ/Ǒ>C?Pb1s?~Bhs$&io]6n:qiJL333( y2RSY^8iae!{o Lc5B33;XYN$I<Ԅ!vd٠ctM~F4R koMM]%~ED %Xhu.;g$Ճ>w*߯4zje.eV1Ј0=RǭB(<ͽ^s{ \ʞx]cހB[[s[58qUW3z(cC}Ub% {$Y0k#X8׫Z/c W"9䜃i1$ u]~衇k /s={ w"?}34iPZ4m{. g:ptfc%15u- V04 ,pWX%8nb1ᜋ6%vu)(θhjA4TW/6<DEQ6]rycL9jS R^SDյ<&7n7ܠ]d!pM6"_X!{/4yE}`D _ȪW)s1<1iD`.V>{A Xx(5Me`Igj*cFΥ ֈʱm(`5Zc1r !W46 U_*BŲ P*'pcUBP}Vەt뎹)B!ľ*?gC$yfC+ԽD'+z>Ą+D^f:Q5E7Q5Fq>Av3s4^juu]tJF%"YYͳsb>fq4MZpH"Ltk1MXNTΎ07qa@T͌ξhИeu 0 |Jz3 VftHy᳁( /KHJup@@c "92$%ZѨz>JV:G_xߤiC?`w}hUTi c w]FЪʵZI=*޽Vj5EJ߰W>_ߜNkcnfggQ:/%BW|q$d r.M\W\TŤ7MؔE"`k %yAD(wsi ̧r.Q.C;DRNz$gbDcжF-14elT+sM%ysT@v+ qsKD+Ou]㈞Hv:N>q*rTJ } 550 ""cLe./3¢($4)oB4իW7]y.ҋXԓyЍtهuk> s|0wFNxXkŨVK=[$.tϘjJm(@ JcZ!APP&# ';hR>!Tv')y+1mAwjRAMO@!TOp B!*p0t'TI W!W+YeEaY"Dd}i`C A6&EQъAMq/ nl IZHz?ev$I2z#$H 6̌)J@A3`0/Ź]%κ( ʲ H,,l`^$Tfdy(&T<L^soL mV Z2QPE$iPg?W/F?z% }'uPΩ$ ƑM>U[CkS-Z /(r$訩"@y&=%(R}սBߑMق_=T={e>勒dV1|?g3m5qmk(ky_Lb]2._bJzNxϸ9ڀ%z6mFD+U0^"W}y|uud >6-횊<^ܗ̞ *!#䤴%_?. n8\vM6?⸦ń'=%xA$IT-|JW+P%KN9J$*_ZT?sSjz,MXQ$?^$} ŋ;&?p,43xB WU))d1;✬ǣ)cje,TN@ʋX $CFrNJ~*wSNy'쬓DTY6}L1WCzskժ,cTn]Y &^s7Uϗz> c އ~jދ>~pc 4&|2 M" SD?q#/12F+4@D孴B{o1VH mz={HHwkmkO%gDd@Py=]lB$Yk.DstMb`\&@z5F6R-&\]"])w^kTƱ]qF^gHDQzךOȍk1Ej܍Cfff*XQTN'>_Dz֢91ež,8A$D1 "2ZFʂFA5%+BD4"` $j.^H Mzx"0PY%x T<F0VYzS7ub~Wa$ TG4M9`A LG2G1εuV|EMy3""c(}u_>Effx,`0j7+. xxDs.eEQ@ 6gEQcqQZ ť1ƀuЕZfn-Kebk!{QnnJ:FdJ˸饽{ a$Di:mPN0搻ҟ*jo) ]CeQFqUdWܼQ{"vq*2h1H:C8@KT ZnPW7-9OκB Km";ǧ&bIJP#j4&E/3B4ER=R7t9#G>SG}͛ׯ_?jժή]>`{_~{?02/}cNHiKJHCpz_z wg#Jr$Ew)UFxfff/fDs8M΃A)Pq:9cx7Ǎ $|G6j| \N$e! }OF)jkr ~:)]\O}y?HTH!K"/!(Wjf!DLEY)jGD^)Z {ɣqJE18'\1^CTU@z>Mɼ{*-'^b(׫\א$Ik|Tbż 19 I+R2~ĹהV<̗2qVZeG=ةC=tjӦMkz^k׮?}3?g~_F=7[$^_H$pIG#\AH|s(7*$ljhdq{Io {?4,gQF"deL.gY1&s!H7q QSף(xff&1P UJBGHSp#s \w]hӓ#>-|֭2==l41ޞ~ v

*D"GU|d12zkmcͲ ^HbIS/>!3^ϐWB܂%E5͛7w8S6o|ʚ5k'I9w}(y?;;wmwqǎ;nF WH⾧i4 < lnl.'klL]M/ytXrqtgØ(0UwUƸI[N"@P=W{x7vHpxpznbwjȸ%YFO2(9*F"BE).O8ǜvigz衏z[1{M>yNMMmݸq#mݺ5vWP׿w;v 7~qH :#KDA( Y,;RhE0%+Bɫ%.4=vMawǀYoZ 'HR]f+IJV?+،*):8z_w*^܈ʄ < ThbB[&+cS%T<ص2Ym#Bq V,(r%/5D6ൡLqM}y.bP >QHDѣ~hx523IQcb>rsPU&/׵jwN X Xk㼪I?xe/{a_|c9Ǭ_ny_܇1c$InժUr!tӓdzK^B>}og|K짾( Zex (ў8TU^]LF}Vқ) $,U+(A*Bhk:vBzlW {ڎpp.HJu\ZDBLa]D2M7^pJN"qgBy>իW_ZZl>eƍؾ};=O,|~!%A7dM+~sIEǂu&B&6C ~MJe'oo&=q FP삄ėMDc0TF8P63Jܧܢ8tA9"҆( vαx|2<DWo]/иX&Q? 7Ikf33n:0ι6l8sÆ gtIۿa׮]wWq׿ n$RaCB!DTE*={ı IК5klEAιXj:EezТ&@Qu k` m -`6{뜳N|c{d7fYf<7ʼnBX)_g?繦h&D)^׳<M5]ޑ쁂4M9/ AB*@f0+ɨ󜡂D!u֭QFw֏64c$x( ޛ͛ l=Xk (̠ *>McU*ws9/|_~C9 A,hl !)}ӞD P5)S'* !*h<+3W?}̶mqGw" Ƙtzzcl>w{O}SЇ>YyR3Ix![uL@IFkizQEi{oc`0/jFĪ#`o㭵pheSc &4<_>/ySzX 0>'.|!I8|{߻|/C1%f 6(S:)ef̓VW䆭I:̳ox.ؾ}SSS,$I:{o||e\E%Ak yp86 IP$s>L"ZWgzufY/ &W ueG5}-9f %eAӇ2QE8Ykuy(E+\:n:8"~> @BZwi-رuR ɔr @Lp0lԛy=,@T\e {eAOFH^B^x罜BD15 hszM%H*KxzzNwIpUW쭗_~sHU<}4\vuUӞ&YZFJ:lXJJY_ͩPjUd.b+߶m۳zQ\}@=|˖-oٲ傳>wo žCH>H^*aխ.&!xg|*E7j&ImJGdGBTR톈9&}Ǹ{;η=6i1I.r]xTm1ܕ?Ǟwy۴i9v`$C(d}ĀK7keW8lO,UT<љ/8h`#N<~/?hP&ı~ĞkUMh+{\UH2zNDUxʖC=ᷘ08 oY/Mx bMI$u0d9}>u衇 3'6m:)OyY{nk_;S_#sDGΔJ7 6I) [HFaE[c*+'mS@U>$IDe!DB=iewC#,OoV {K4`L"B2Zr g܋/9ρ{oGy?Z;::ӿoꗿ~_mb@R])m$0E 5Zhh)v/d$njuMaTif+j\t:Gs$<ͪkFX=3Vx㍯ܶm y-:;+gEȊsU(KHX8~ -K]zR MÑT6,zwL<kT$ߞ'=uiEvmwCE2_!F=i׃~/<+,v$b  Ӛ7}-1M`h6WԦ- $Vj C;MB޴"(Bɒ.D%Q yn@%"kuZ'OI!!t:3̹?>@ w5K?O?O+_ι9c.)frC 3Vc佧N b3 h[59k1(V|w3ŝPT<9g)F2JJkICh QZkrG/6 }k)V^u9;I9Z(mKey].sʼ{uם_؁FֱnݺG_z;9~wxEኢpT["+$e:I\%Id& .nFhZ]qsvݣը^)IÆ\r}Qٯ"rZgq!=nݝw{'%"馛~V'v1ܕcS"W+s1T6XԓZfX~.{>xן ^!]eN% l$Zk,3~^T#eYƲӢONZ䃊l'ZbF~(ui-;Z@R FR" #kwY3SO=uէ?ݺus&駟{v۳/{=B]'eQ(}k3qhp$?Qk-E1^In]^3\[:|\A|0%M!jg5=B;ԼW+H$H(A{7Ki*yq,r5U2EY̵x0=S?Oc}@n!aÆ33//e/{W죹Uzޅ7W{&W؜-:*cuEb.LA$ 9KuhNw8VnF ј,gsg^kn4bff.\0a,ӱj\j~/lBJ^:ὧ2 *rń ӺZVߣxD4t\T+c^I4V}s o^w@cgz 4ʓPA FQ_nbM`zp8teI$?=VZuk^^'>q(L\Q{B.s;p8tY26M]R4MHiZ[(@7]>i v[Yir4NTUg2Zw^cLn 5 J<24;;K0*2 8˲9qŃdYᰒ ջaMz(qoLB š<"Jnr->CDYH$IOD N+wݮq\++j]K//7wqR;76o5 IDAT|>|<&ιl $Ib$x%1d0uQ[q ] yR￁ᾒk֬9dCBc>UQ2 !,}oGy?]= U>,7JįKii  ŠBzk[łUz~wlP q`[,:z-ZWaY`>`3($taf/|w[1iS`I>?'<=կZYI@ TZˁPɺ8 އ( 9Q6F(%M:٪ p8|c~${7 [aP+^61c,!] <`aT-c=*QTL$[KO;ߡ]Pi /~ǎ7qrZKk*fH,[ 9=ߗ\)1==}]o\X-"}画>9n3˲\ϲE`Ds#xB~Z+;BAk>+oYEeɯUTQ_Rt8(.އ2F%IKF.ɆCZ6UT1:[3$I\InWtIl,Wm _W~$9Ykh$̬+"B>^ j^(&ƴZQ=æ^"18 2A[w*] ZE%01wPE%F ,}1"I`1-!-wHr1+VR(v1;Z$C=o~MGu ~-"n[.o%͍8ڎJ6EQxIÅL¼ц"q&W"z!9yk *kff{뭷n۶m1)n滘9`? Jq={wdE|; m+a/% i7}-V(~HӇ0QЁl={ `D_W Sr蹄i:p3Ǖs-Ԓ@1@ jP-GbT ?֭[\ג?ӟ_o'an^lq`{@s8猂uE(bBpozӛ}qڵjz-Їn6$,CMDPkC)"7XA!LԆkƪq~$ :T|l5A&%C`$[y A36ƓhGjVLmP\53 v ^]EK#?{V( {U=OO>:55ûh=F$?曟FJU-:l$؛ڤ}6zdNg`ǂ A$$v EQO>T 1iREy׼f\MbΝ?cfOVӉҖhw#M 3,*v9yzMMM)OY.B-CzVt{=o |who|%I:jժ'?'?y @"iPjkX@DяW)xyR ]gt]5[3M>rANE}h !+]r z PG_A#ε @}Rt}RsE Py 3$Iօfj!wמƘeGDP9~cpDt YSn>k4FzcQe%ڿ0l,&xr:S]u>@mUnV<{x#B!ױ*ulP'h7 *.^6#V{v Pg=/3seQY"97޻,^o{nHtCgw`c'}ӟ~_s ;aRJJy/M'GJoRFD0E 3WBQs*"TooY8Ȝ0OE#DU:K>zhu.z-,ݶ: `LӾN18nI=C]=+v '(p/;/546GwdI;\LOO3z2}Ϙrϗ(1$IbB62о/?xt:6}~-F8_|%\rK(Y{tIE;0EK- (Q&Uj&Q'ᯨ 22)4(4($IE[Y! Ts8wߓR}TխL{w-|`ҥynVኢ |kX*1DZB_c<ǻ`AxY{ ~"MSyBH$"4WyÇWϝ;wQoݐR}ӟpҥr)B+EQ(<y)C즶z'_8aƍqI{Cu^H)-SO=u&lFc&E7x? Bo4t)|vC>7c+7tRL܂I,4^֡"j$;c 9n,-N)w0䭷0zxm#gưM$nJ,;u]UU}p.\X~ ݠKF}3DAYĊ~~ٜRsyZ444beFc|8MӍ$@O?|-2K/$#"_g)jP (Cq,# ՟.WgU%}w/WTnI)/Bh~%SLo[l[ oFq62v4}MyBC/~'xn{ߩ$\ *6Ǜds+4w9>AGm2dz#x33DdSAc[VZ5?Yg#Dh{ڇ՗隈я nj\Z<_jī(kmn&I2Fkݧ$FuBk=c_ą^yRi@qBϜjCl7B]gF9!%"1}Ks~Gy6)Som6h[';v4Mue?ɓ'OV)!ebq!QgBm6sSLؿ+&{e˫I6v`݇1ͺaTQeDD22|qN (Q[+$BDu\ j?u+z^EB&rW)sκ[??h+vRJ11@?ӯs.m 7co:Jd`XYuU߫\t=cCC܄EJ$qDd1B!k]pOyRC^,!"-oy[6c=S?O|:IQkZ/]^xG}뮻n IVRZuVe1Εe@r^Y'?,Lr{ k^BuB4uEQX[ޘlR:'*yJԿR!9WdY&sBeUι@&Ig?;ioޫ`Yx?/Zɧ~{+GydHDH`ZTxiv|dwySn馛n馛S٭$SO >裏x)3H7VvK)`x %k6Fcyx"BF_:tQG=qRo}똃>xwyiӦm;iҤm'Lmј.@JwmIZ3wyuϺbppiXP-: y}ױI3]To"b2t\O GPH>^)xK$hU-o&0Wߐv4al]4+߉_=Ηs:uxw}wП9|vɒ%RHy2 l$M"G[DD:wRJwq;@Bș3gNG?N;ԩStM0ai e3O~rNvW*^ s/$I:谋U%9Fגpnwuo-jHXaCE\ qy\F~܅c|1yEe59.=liDY{VFC !1F[kΎno6aҥ^xYgj…K.M<(p2QBjD%뭵lvڮ~߽vu%mݡ_tIQ{"OVτ>I)dQDr q7MӠ6kyk-ZشL{hLNvWR[k}$*fxw1qY/MY¡ 71}]uU{͘1z> ,?{2e/Z${e (wAWgoׄ)R'O!=QJf)HZ-齗IHY>$Z+ZID:@i蜓eUD$Rhh"R{n^[oEc :q^k퉈y]&w!AƎޗDKBb[&nm@LʊTBJ)${iķ9>MR~K_Ҷ'>V[OJ9*fozӛg}>n IDATR{km!^XkRͦm4PiRk_k4d V{kȲ;#izCNwOi\RUJ)y]w?}DR2MS5{M{mwambvۙFc°]ļyq=w}`ɒ%Or|EHjW+DcaNO>.=wJ1z m`o6V1Frt &Fe=~ՍH*vv8ZAP &&H&" AMDD{c;(|WZ;oC—ڊF;KGtP\x"kٗ};9|m+FB~_9>988XRqeɒ"Wφ%넸.U4g18z³˜q~XIj$(:Jqxqyrë7x͂Oxy <9V+xrM}n֕RzĄ6_\]uAY3Q[şw(E$:V"uCy)Pw )e:$;T6rZGD*RJ7L&խr!XWP|\"s|/0uʍ2|taeYF d)%H~ cTJ{^I)ٳ7>#B$xV{翾/]]wSm̄yHJ)Q9bGq/ZF x ؐ#wޙ{N>vi&u\Ua֬Y_׾7G(쉯"ȏ7N,_|K5.螯YD ){86JdQeCJ)rR8筷޺nz{?RJOLb-1̗U1cƌ#?rg*%RXj0,M<],~]1;v?iid_^#[6ĭ؃0dʣ޳gxĊxsx:h=ly5nR"˲خ&oVqZk$BYk(; w4Us;l>Ei0jO/<#p—1adO(7' MV j\ׄ؜S'AMDˢ(RJvmַu1_7tQcaFpW{VZi*jɢ($rYm|L'IxGEޕMA@8yp F܈běMkHFQ>-TJ)o}o}[g~7*3gܹso_*xH@ὧcNJ pOUaQ_&Qg5QoT:gW5{]P.{ D9_l9a?0u+8le;{ 1KrcFy )R|d?ޕ_8>$Dt_$ܥȿ">p^zmGe˖=/>?[nGydhhhcIJ9q41I)]$Z͛7M/~q;xЈ_ ./]{'$B$Z }`QPr)rmxsΑ֚xWDDQz*C5HDaY97|Xib} inI&m?g-`m}^s53QhS _WDwιV3mo]oґBIx$(CrI̋$Ps"2$^͆B7k|M I(B\߫m眳RJ$5RTk(,ҭy@$ (v|h؆Fk0 %E 7]ٚneZ(*Uפ U!HBוZN8mf̘c^C9QJ4M-+1Aq MI(y8TbsN +vxRV!#omS]t_|~1k\2e?'?ܹso2 )V*J8{*1'̻D)g眓7<N wcp_'bY5ÈVkyزe˂98u QrߓV߷~߾>rF !\Q֗NJi4u{繳%>umˏڪU^-TV渱4Ra.͈7qgFY^[9b"Z񱪍@lWu4MJRfP/,H?fyܹ^Ȳ+5sRhgO=3.;f̘qH^n6mھ{O=yoy#|9*"s"p(8FDAcMNSQ+)GEE! ǎ]mɕI(Kנx |0GnFMSk'xBC犏RJ++^؍΀m*b5A*_ >1@:5j:$| >ZǷ+.b(UsPM"գ(Kk[0礔%"ٗWp3z#N>x.3&Yz*iLHkfWc "uDINZk}QG}E|Ǟ{OJcq7f IL{TQ;<>xvhFyH,ኢpoqyI'=v '|lnV 3gΗwm?yK1(WcpNx&Z\ {ւmLV 7uXDcBx\ ulwT >@#j'g&56HXk[>mկ~_{`` P-"Jb5UHTE%oѿPuyuyx!E@ y:Iv0f2ƄXQϡ 4fuF=)xE _ٵz6DZ k<Ҟ,seYPE^7dJ60쩶"2QYvCVSNmq~…8R&I8,ooPoP#HAΨ~ʍ 6o^k)5k%vy~D.Ƽy>uI'( yKNgdzJ eD+X@2Ɛ֚fH Vn$RJ*=.G8^Zkv 眸袋>{%s=T(I^+ZutlyBՄhk!Jΐ͈,Ykihh($c 7ND iYj\kḲ3~.٧SrRkmek#SVa ;{ TR t~` KV)@HVdY&ps"sVfSYkА",XϤIFT7,ZOx~K Z aż$}HڱoՖe=wi=|w/?cҤIt94|e}vѭVKv>ǠU( ?vXo?r|TV(],1)"yT_c)9I)l6 74'x↣> ,X bnYYP#8n;WBe u|$SJ(ޅZV-u',pb)~f, G Mڈg[̊Q2v8r`żWufv{@}!V], ռꗿaƍ n﾿BDTx "*&MSIH) !D!ڪ#2vFse{osxY|NDFJiRιZksXkKš_fmI'=E> &$ 3^YǥjŦ8Y'⸊L4|6MS0P?ˈE[ADBk]UJ!<æ~S:7gY8sQ!(RFJidZ( F)(E߷ {2Z}ۯ5)$#XԍXY|Ǽj)Pƍ K)c *ex4k['qA^ x/1c}s.w^2^|Zx1ywBס2WJXRV̭׎sౕ+ =PDL4O`PJu;o]dg)]kM'^>1ʦzo4MÄ A$hY&:ЍªHVr` "RUb?;*{Xw(:T܋ Ur$_3qwd]͟?$);# 7qUZI3)a9CS$)T,; @&`͞=o_C׾{0MS)yCȉbJ9jZ{J)J^a-Ww 4X.I5#$~ou! ](Y)n 2IAB `iƞs9g&I2a}\5ҥKӊ\H)4M°'qi1P&gI=_wݢ(BU7dY&.A)W^ZC_߰LK&c.i: \튢7Ńx "^^{3rN2=CR!˲@I)m,sAJ\BdL Y=W" HD J1F !dQJi>{9wԻᄏ9Wu?wwY(I)Z k6!H},[++˗x*bB!i _R0yW6cx*( gˇDYk]`1]wYtЯAsy[V;!A_EhOp -De 叏$Lsyy̳ZGc-(ưf#j+{ X#?rhOL(, B$XAT~+QEp x"vbrll}xnv.v zUQ !GuQ5?SԂBmW؄/~?xjm$5 EV?8mDjC]cf?;؁)S2at<7B*"<;L@QxDF>k bjUAk{BV{%K]tWc1FyR 8~muYZO?=HO7|>ucle TBo+Kd-|q/֫$wcԡnj˰o#o]$X!0,[Ԏa-c-"̯AX+,^8s=OZxu^g"x5|N7x#&Jlķs.To bXv,갯+Լ |uY7aVOwqx7cr)eͭ1sR%,)LA)O^xlyv`G*6rb2UK}/!Ͳ,4g?}vtT1, C(GBҊӂ]zqni/}yO4f̘,Cp4dA$IDT+T\QJPM%JG5… Ow}zϱ5 !LN)e7+*9ADP8bV VAFTT.<;R{VA0I)ž_>Ds'o~E &w $a  @]__cjC dtVtM"8wC&EQWT;ҳBZ9 [$IΏo|\UZ;tg5EHEa$n| $Ț ":6Pk5-[l'š!)nPij⒀W>bQ90Y'X)9iz9- 1o 39+Dkڋcc(8I:电VYkUL>P].]{y 5czn t IDAT1\ry7ݎCEE ]Y!#$R01$kgh}9oĉ2Wr1cƌϙ3뮻E*BBGXk/(ETV!IL $g@T k`eix>\e[4<Ї>?Oo19_/JEoXRwSXuD k h EG2|D\]a> j_ؠHi@=GciSm^=؞wZ(Wⶇ7(G@Q(be51E/ۂG%+|5[kC{jB=,"?:"2J)ˍZ[6u}MA4"*򟢲|: @qxZ>ѣ~qêz0޿t!$eI?kpM\O)_箻z!V?I~#JBkmVkmZkPxBLw\?wι5"w<.E065H8^yVcAC,ħ@Qw8Z \PAY MDJcžܢTy?K\pRjgqg]RJWZQm9pB2 !V2a\ŕԶU q'&1 ޿/?n펿_*(xEXk [7 =Yin:p//wBƜ6(1&T0IǽsS7K4L/~%LI^UR#_= =oFF qHd}$ 7`CMx+:_xPbb!G찡a„ Bho nМ`->\?$I$ OͲfYf1Fa45f4M$ޛ&+/Y \(BdY&<y(dQA)qiVJc=v8T뮻{Aʪ)h4L__I(Yh7K cG%LV]ā$I|izJByڥiͦZ;a-k^cV_kO118&;~?DDM<,АoZ!m&PR=uB kRJ{~z]p'?ɩ7p"kmˆQFa8qj6Ih4l$9gIeiF4u0qQ0 4w4 բ(̂ ?:L0nv?RJl4{@Nc܍?Nq1H!&D8dvWJ)h4 k4; [V.օPMph7UuY)%<@zl)0'$9!|Տ4Z:Ƞ^CYTI}`dFcz~Ta 0yO#Vlb3-QUuPn c%v(eu"Vk$}Ib/$#$<[Uqnر#,@qL-xg5ssE܍Ṣ`~ AM@CSIq+xw$qI8b;q%H?L` rh^Lرrmu&!ёĮ75}=_u!2bfʲ,-<~sDM1c Zy6$A֍~AAIP$A)FVβsz{؀cnBk-{/_*z'YgIԘ:'P"*LĦiF(lR(_P`l[kC@Iutq3t* (79ZmZ6s㜳d+8̗峬5\j;v춧~L_!Rh*Clt琪H#VVp%#:fVg0v좽`D@'7T*I5nܸꫯ>u̘1oZW/߻{~3˲m1V˴Z-c ~lE@{` d˗/K.kcX|k "<)dSyL#{AbB1+۾#tz]N88OQVx8GIiώ~Vz(QQkZh53F4 U5Rh%{J)Z+)*!3gNgE\ ! ϩV)e( jle{֮h>l}LzR/&٩#JD'c;462j³'byА+,֗62344VT"2sҥK^Y&fY&,C>g !DEcFAcƌIV獹 &=5$`W(`/is/v}S-[VPƘ}ލՂRʤijJ]n$hIWGIfV2P+ `T]a¤EN: ѳ$ R;ܷ衇_C&(@ůX2eoɂX_x.h~nHDg(O蹩>umHdɒ{f͚u9-P2^!,΅HeV+b %Jtx Jű]hLj},{Y^qqphOJuhܰ"f_3fzaksĴ%nP7Wܼڱ&I"fjxR ;ɓ'16zv޼y>CP¿1g0,׿~… PgexnD]+ rRP۳WD>P!vk8XCcBϕ۞:&ZjZ#z.gDe ƘP%CDUUZk{>]s=w)sMj,*ަiAAbdS|Sk]}vrFxq2Rj\Ֆ o75sGy޺6E;pО{ywsNy{هD"29w$Ǐ#Y린hV .8\NgHPЅWpVgqEX{:z|?7k~f$~7.Q{2a[Az}C衇wWDD`tH!V z&6q6nbE!8Z6 @'hŤ T BkC9diӦ}[sW,gF:V v[՟fw_<9_Dg__1[J xi*^{}I'M>pJ=W{ӟoe%ahXC;. ]j+C?A>7Tr@DvtVF=k Gima„:サ袋C𐧲hNgC Ƚe˖˗ y%jyh<8*@|6Q$79W[c~JObxNh;D$J)j4~!ztHT= jAnң,XVZ-=k֬M/j;;4MCCEZCϕi|{ÚdPwVխxVIYF(wT1ZmHW+!c}l`·޳RJ͙3:駟>ZךPlqqV")%O`!DDCY(@9&]$V)e6 ީ3zz}`s4EE֢F:derppPcBBe<u`Q!xCLVEօK>2$o&r]l: =mA *?۞gI}X ?.j`WdլxUF7i2 sGłG!"Nj@\;0!ܜĄZ #|& Ѳ a e_ T(h VH!dM߾M~ɲe Vt(m bŞe4(w(ZCճ Z Jx[^M5+w߽'q}0yZk~Y8񷈨0U:4'U2,>Oj7US{8,T)"ғ&Mj\~g4)?ճgϾUuFJiRF)UU9Z$IjaC)[)˲FknMxkx#m?"ӈh|G"C9gΜ'O]ױ{3>:() b[kwqZkFh6.h·d`k0@f*O6<` tsyc(I38_θZden\ ~#JS_U 'Y(|o:4T8Kȃ#.ƴXaJ#.ste |CCC=j d518x^S444DV+4-0/am<:<EQ>眀'o#}{4}C]?00Լyn&I ]XɲdiGC<ω>e ˗/`*'exL:ni$IG?}ݐ䣏>zkjsFCpx|$ZyqKcz9oB/U%y c Q>脯Q)RFv)k)~M6dG%Kqg+ O]bTٴcƌqIeP5M.Q[юp޶ҷD3 URX"i5h86HDjDQh`HRU'|G^7{ $^Dxo4.I4Z*!Jr(:H^S@vʕeKl$IsEao{MTi⹔MqC8EQVG2g q7BԾ?""z'^tE7M ɎU .2j/oRH4]PB+yZv1,Oh1{++""z4 szXoyFRu݀Aj`Aґ^k>Ɏ5ELC}{ȲRqэc ?#Ur&n\[JNw#ume˖*"(xTݠTeB3l xל:53dQP~||ɒ%g}f !RJ`C (q3;xo}VuKEDz_cQs L5rC  .kmivIxUT ,o?щ>^z饌<1}q?9Qz<$ھ۳ZALV˞AOX"H@UP'ג.peae xK)rvuN-Ӛ)+X Q)SAyk O d7©sg3:7sw"c|=ъ%#9ޫS{W =3/l3C^ j8got/yZ$jL#^`ULXNo?8C衇Ubc $IT}}}(Cɨ1FE!czҤIuLDP .B IDAT(C1UpG-h,6Q9إ)~ZfRJ$LD!sNc|xsJס c̲~G׿~9sc5J)Z+"xZk]CCCZѴ7ա2( xM`qbn_ zWB7j3Tu4D.yq HrF !OiǏߡ衇~z 7,'9Ͳ,(vܕeϲsyJZdI ]\/ɶ˲ ,˂/Y~wsRz{gY&(QF ~'&mb>Xx_z˲eYf!E;'7ֺ \*u)k{"[ٵndt_ v݁&n^[f=z Nı.,V n1vn@ KD+ HԺU'$>/v{>zk g J"p^mC9V~ޱ&x.u*w.oj{h k9(:|n"_54[4iۧM֠b7^3Gi''cı<;渘ܭZLT⯈G{Ʋ,2|iE~hrWD01pߪ<ޛ. .sZkd1Dds֔Y![1?ӃlZ ]'%|iN+b{8qUB+e'xD SJ)<ԻƘ{ۓ=k IGj+=*V "yFCCC恲B<$/q"Id̻Pl !ܡV|];qʹW6<Զh D#T^$qZ߇k9W|߸LJg!GZ+FlHp€O+LkLF*ۢ ߥ]7C衇WEZ'z+B  =:V5MOm\@5w,uQ0+^0, 5:|C9a[xz޼y73;Jĥi$wrCN@*$Gacy,sy;c 6o[tGR}'|y,ˤsHl Pu 7q`l!ʲVY\B)g¼֢lJȲLyv1|O !"4V6mZ%\F1yϽn>1I"MS#4{Sjmm$OcА7Ƅlu&y7Nޓ֚&ιC d4Yp|DZaTms.񣁜&GTJ4MRE!A'sr7Oru>wq+ BPEB?(1fj{WRC*@%^*ݔI)=7j M>3??<&N5Wȡ!988('G|߁*hbTˣGHaɒ%_/rBWp\x9yIF@g81QvW*xQaëb٢%u¨b[iu=ݔWxб:ݼvcye=~," (+!Va=!<묳vIdb]??W)Z['IPbb28n|>&3F D{{3,wF91?we 48nh)%b&Íxo[pIDP% uG-g&Ik-$U={ow5*{w;qĝ9N<#WD/-39A/@]<(^ӛn7<[19ɄGU86Ku2ZkZu":'AeUMh轗Zq駿ι+xL<YԻMD1|B]*`ʖH?EQOQB}­.puqu{ Q]/ *VEy֚4˗`b34Us PJ "EQ ZYfͮ/[$ M,|9|Q^͔jX^'DL6{_0Vxw}.#~m@:d27$ xAx$Ý4ZP#4MgI*fԅʉb%]/Z8,sRk-$Q9yK{d뭷JhѢ߽=n$cR^%yJ>ۃl :Kԙܰ`G'~.`}c11qS)EywH&xE *JX U!dWxW]Ǽ|';'$ H R0GKfu6T{5F)[k}e.I cTJF5nmE8yZۛw%Irc+-*xRE,H$I#2~$M<:jq ?Dy vZs}$Aŋ qƾs!p#T7&G/~>|b&fRӣeɜ<˾WՉLмU(պz#2/~AtI9u:Sfhرv(dXk;%l`.Ks<3ϚI=QeY RM$AHJKZ(RzC#mN0 7?:kf<Xv΁֑f F|6Mh=H&Ia_n\DR$Ku[拋;!}urmˏƀCwߛzs#yt2om|;8!f0sS)ۈp-VVV968ZF?dR4HĜ 3oocRg@ B6:{G[FرvIKKK!SH]/k=–261IQ#:DH :( T/#z#GlXZZK/y;(@di#]snǤkQx6;D$?/?/@3ܺ,KӶ-TXl=ɛ1s&"d p//'jޤ7[ny,KPeZۢk9.EQ‚dYe;є $(: ަn&"oLdHC eYvje#i@b+"Uzy;vxl#MT/ͰJK%E|m%QW $sNVVVd<N[YYGG,sc;/H&%l7Cy[w5kFؾfQZIs>"z{HL, Nt\ LP*" 8Խ06;){CZ˗^zi R Akoi<)""T%QPkPg o^58DPF#ZYY A`ani@%1OHQ4/Mz5\a6T]LD컔:yhfv !A5MkX4}A׶Ҏ<ϩi>z-Š-2c,my^|3yݻu4" C v7aUi4Vt9 몪h<&aڶ,;&t0O5 )׾Y^@Jfh 쳝BCEVdwy1 ̖|]kսY1F4ڊiu]K>Bd˜jb/Խ'U—ho^wu?b.:ZcLh܇y>LŦ2r>ZD.OxKPEfP.85;kɧ#zXzQSA@Ox֏ƀ'?1Son 8y {p`>UYjE6K^AJQn$/8<#?=c޽OI5o7C5@jޠtgP(7M+X Á\*8(@iŌ?\qUU'4M4LH=|fb?UDn;O /| q"V [D<=o(k|>=c52M5"b1mZ%"?&Ϝsd__~E=7ַnxID[i;cE7≥r]iKs1ћ ڷջ@\&>RPBqs)#Wx;oۗ۷IODWY|<ūvq4uﭸ6\ p_AM^y[E\&raa׿!=<ڻ75/--}_^t0n&>KoŠǼ`CuʇV("rлD{U/RcBDP+!MSPPk8@ZUUQYCzsc.mȌkX;נ7_Υk]OEV 4~ T_wE)/f8tw/ drFQ$hE&g'&4:'с4nX}}i Є@u&"nqXYs[7] Z==Xdv̓+'V 3,ˬ qe-MU9gE6McLι5yc^򗿝nÇs,<ϛ4Uk!6zdr2a'B{y +SZ!w2V,":.Xk^)v"0VEե5\$'sĤ)Y7G@&|3B CoEcW9կ~/xA.R&A &M*Åmyߌ}*4QLSE{ :ϧ yNz-ԟ6b[dπ' >8& '&=L& =F )Ext/HH=kԖ?gL0X\\$($i9 h4⺮sMF>80{jDxC(QaM!lVM`'2ZXX f.t&"|vr6H7eNg,h4:m[QJ"㼌P x5`U4yv)Im@ WKQʕlA9I9/pUWz;,v'P~׾?cǎ3iЄh,k1iCKWU:t!έtYd-;]Fy+%@=Ձ!m?:oWh4 e ~]s=$'|#/(o!C/t__.y""Zk|c-q>H~gvlYݻrv=9کݎ&~ ="BpYflsmƹS:Xx e`ܡ,˨X77LQ׊Xt:`{K/N=NC~D$A-")p,.XGScMpk,z챓6`{cN*/cc Hߠeݳg7gNMk2OkDDJߵV*A:C⃉)XqPJ] yE('ʊ4Ms8M%,}W8Pv@ :gZiG^k"t$˲$Z=י!ȴr IDAT%GmϘ T ^KxeteY`/f"a1YQNF>dO}S[!,FDvA:fvڠ`}ӣLGZD:PsXpDFd:J9ɵyTȲDF xM4|饗.,--]b܇m[Z<霯mh4(%r6ag6V,,sN꺖m/J8q?p̯ʯ<׿~->i G>s}iӴbZxaޘ{l|7džCKĊ{Mzě, &k1Hy9"hy_h:\~Uyk.M#P% ޾5 }ie#CHߙn xׇuHF#MXvå;`9G|뻩1@R8CK4Qu(4<<$IҾII=N c̨Iv|](5uΛH5e]<Ç9p@l5 Z|@zRylI:Scʣ+1Z٦ m4p/"b_"8cK+1>|F b'WHs/d w>d z-ˆ5/(UsUj)FD &zT-c >GN4 O2ưJ0re&2ffӶIi̙y%"rt#⬳ڇ@`4qm*BH'f_uJ{ֶaf˾.4)Њ͚dZk;KE]:t[~&6V ] ]CmB P|D)hۤDQۥӵ=OZ++cƬHC T*}/d ־}A#`cNTTIiz3=zt[?_dADDMӈO+mۊ1c3nGf3ϼ8Kk7{/tc/TxC A};<?C[hE4u}N0mu'}@M1)A &xo?8̜eF#rqUUFRc /..^jsKKK*㜳PN֮떈( m[%Z5^]d$bCMHV2V >_(ln]סņL۶4iֶmks^d^۶I ;ǡy*lV:{+֋U6I۶ qS^n6,c"j2W|#nkQb?WB3C|ƀnξ h4,//Key(#"b;seyyޥc߹seguVvСMi 5YY@jټq. l,*/ձ1@\;h.۝3 J?O=EL\fYb"[ :mX UHN/DȀ:ݒ)Ps9h4:;՘oӤI|C39Y4! zxBbZ)È(Cp5Y+=׾'Y79gj&"̌k3}&k!˲Q]?\F"~n@>mۚm30/"sdCHӃ&y_>rڶ]y׻o Oj64U𶓏AKD(ˀuQ!50ZY&xA躗'y1 {r")j5`ՖKKKAr4a9DyϚAvAۍBG% Hnf]3ˡCJAceL>CKڐ!D:bofqҤ \ҽy ^`px<^uȆBM4gvgx/2YȀ'={8԰{PQLwlyNEQP۶TUU']#J q{b5y~xLDf^H?$8ш溮 ?~x<6DĨ4'Q4F]Iw񘙪Z_b| "t@À%_w4eyYk %J}pZ,`ee㤅rn^AS~%/y:恝ߕI*q ٳ笫.ECn{{1m; Mu] %WPĉQג襠p-ή H=J8wvt2, ?Vb Lp]!eZ̲lWq9)24#D"U/=sAa qgKPXcbEMx?sEMITY3rޜsG8'>w9\GÇGXI/|:.H=N+wߓzs lFhQA#D=KY#sV<{Mhʀ1=}P9~Sz^-oop{ijs v5%֧}c2cׇ Tb5? ÙR ܶѩ{=dF!˲:Z0|*O4ل@Fxֲ)m3'3׾܊H.i9́q%~BGC/MZVUDD!PfJ,C.~~>Ml|.Po=T}voo(ר=LS(%/w꫓ />W !-2&?v2 8i(Q](3MQQ~/z["}S ptM 59tOxS;$|_U t샚Ýd:즍炱bfԧ>uK_&>mY8TUmi@Ky P<=ILסy X6$ V3i"D?<| `Mqc7̀ڱ+4aΜ&&Sl`iqǵ>Un0Нӱvuc?uEB5j>;wAe?G \sG}pK-oN4>Tř ̜B*tD_+{x|ڶ > lT<):9 Xki޽I<٫+ID( 2ưuƛP5Z:ke`ee^{˴n˓ -3Y9fnqM8AIڶנ6hZkYA?d/L Q4(7eJ,Y@PjJc E؋ۗs>SDPhMŬu]SUU)?s,4Aw&"JQ✓{ٳgǽk׮sQ:,K !Y^ %P 7׍&S3dd""]>kZDq>"^:(xl gP A!I8ʋkN<9z^DHm*2 =3J2Kx-u{w9(x#mz|OV*h[?Mj^zh9LPB`gNطuIDTim|(l== QwڕD4͑mь5hBz/%vRҗfqD$u]Q-..# %&ά3lV$nJľ  o8bu[랍KB4M i^G;K+9^Ja琵@4ݤbǀ)[ !=(걪*5MCsɳ*|cǎTQ]z*סlW5eEA""u]HY,,,H]I uy3 MӰ*9i1S:UUuF#j7ƅmҜ!|k|cC 4Hi0{̅1` [zs(66Sjj ]?.DY3(ZhPGeTH#]H} `ϜsD ǯ9 ߍ.3{1ыvl?W_Q ]'"ND1 :Bz83 DYkȑ#7-|xkEΒՄ&NY*4t3^@VjUq4*M.,,$#xH*J=j.V$ܮ10V۶1^-ܑD-⬥%s=1=|VEV;H2gD4`։uZePa`g^p"0 8!_O=&Yڶ!:Nv`tzT&DSgANRg`D]/>jMFY,"et=Z;N` մ"V=g#n0>h2zko$eH1RXksyW@ d(M<M54 ?%ui<wP#X1TUUš?rda,iֶǗ,8˲6XԽȧ/̀Ī8Q=?!"jV p~IJ4UU12)UUrcш>s赁,yIxBgF>WrQol7V[M#1ԊyQ_ .ԻqIN=9G2tՎ>H lR:o'h4D&=͆&h^ XQ|N?zk1fl=L76V1Zpjg>2I&C]]Z+dMջu]o&":p; ^COvĄPJ? >P\L!pJXkM 9N&xm'vI4?dE]"qIݷWJlN<zB0j wuImKM~q]LYaY{SaTX`P^}QaZZHvtϚ8)Ix<5S SG jVVV4K9Vρp+DIk#lmRbt V:p]qGmhZRڶ ,˄iiFTeYXX<1B4yk:dHTO-|(B!HywT+#E#__A4٪@+jx@RB7Z.XGyS4 e) < ree%=QDC`s~S,:kʲp*ZYY {<<:8uU3wL=NwPdӷ&}Jx{pqݨmI 5 # % } /ݸI˺F޴JVW=xBQ;?3:+H3-\zxOVҾ>hTC뵺X%^LhrmN#S5Ǝ'"|$Ԫ`/J=LEQߋN` -ܛGr= Ly{=< Ѽ̱u M`ĉN$ywJ= _ja=ch41&t'?ؽ:I@Y j?(کűz!95~|aqqW "%_?s%]3beYv$)Z G;_rCЪmV`K 81FW^yxʿL;3-PʲES¡,A'bdjb]!0n`[ 5D#[T~ݻwToYG78O? 8h{e2|;)u pt'2Z\\眬ѣG4Y#":3FQ{}o4͆_ u4 -//S4;zscm 6Xa3 ~XԧMM"}l(nB73jCD1y̠pmXTUd-;o z; .HV~ee(Ƅld47lFb"hJžvDL2z{&s*;%3~8Y]v-dYƣ{-GauTgluMP{`Rsm<Ł$3=G`Y0dr20~>k x?RaK6MъGSuP x 8.Z2`eG]SMWQ`BktZiiVek H;T^{x1d3"bsxs:wBGt fVtPc7ٝ7l98`fAψ&Ͱ6q9r&b9'y.>JsńZ=}9x`2(V;8xYڌ<'5ۧ>^V†4Y;/튥=C jyLw/eDNEb;ujm~Vi_V@f)eY&~@9 yWXk 3"ռDddYf,3>@6ASa9I)άx?V"?/H?iIMDF,/A՘5[d7OF-VL Q,=}c:+̱ge"YItXyXiHU l~lwRA+煘 h2/X:/~1.}yVu]R%}DԻ^=r7^316;`;bCfkƶ 1k4>Pu^oZpQpܵ#CwGp41¼@Db3^|FZūUr564cfg"rm:_P(*J DY7^Z4G*yys򶷽i9'L^KD]g3iǞJ472rCɛ[=k;?I_5ڷiդ)2%s2CRPN(;] ehҗ+tyqA,s jx u-4mi5}W!5`hBs.xڎZ,R~8C=l6Ƙ?""7tk[Vw"øv9P{kFe.bb VeˊT~2(PMzE bZ 埩<#&JRH}Mz?xF0ڿDvy(DDw@8ax2eV|C-q8`BI4=R)U׎O1`o߾>,2efKXe1ڶ {&U4 :CUgzmǦT V$[z۶✣?jqqqnbOGߗyD9@C_X3H=rHIiEW(g~ƶrǽ1:'XQޮܦ~󩇰%PFp`FL֭ G0k#iYH8 GR Oy(,:!Dپ;>`+ZݠͲcPAtsYNcEH4Nff*:t辶m+Oc@1)!޽{c1@j4c[~y.,Ko21RPVSŤЄm\?͓ uEQC=T*ﰙXZZډ~wQl,9+k4YD݀+ݹiffs'Eٓ=zhIv)B C+1~Yehnq`}Dp EY=m`UuYcv8 8*⴨?CDT sG}|;%7̊ӎhUj3V[qRj z&MÀ|zmv"0sr_>bqZա@*߸ʱ>Z{8beZ_qc{UA럅dY欵ѣ۶ǔx9KBF۶͉ y ^׿n8`m,kefȭH۶_̓oڶe1loƟ~ ^𦄗^]k3"xNle&*KKK3Ĥhd@N/}*n_~{۶2s4,lXG٫W}F}[IiQЂ>Uud?_UG޹sg2??: ^|ּg?٦i6cŒ<1mgizc݇݅xLDt!AmS97ob!lYyN:|_zNXmC .iS꺦x ڹ[G, L<3he>06sNfh$eitmYz֟UUՈHciun-3:4QvRIAVD]r,ˠȲ,4Qʲ]J*bfZXX6CwQvOdZZǁyu3HeBDk'"Z.2,K񝼵2(5gy;P^h[ÆDau8ڦiZ"js-3+++Bs2眨yyӶ1ƴ?s?n'>/JvQ ڥ7|_WK4#>@D$Niq4=h!XmPw5``7t Q'"VbMs4uzꦍ5"BUUuM j(RڶJEym`s\%33eA=OsfMS(2dii)i=1~28'dYFmʬ"蔎Wm'еv1ĸxcCD'wz(0` "O}!0,+vcr"&jm( u)zL u9󁾀* UM?Xk>w} ۊHJJ%JWu]m`Z֤~/7_KY&(cXAM7k( _֊L:k1{ ysq hZR7XV v>JhqG*@+"h4m]-Mv:olOOYgdtɍ7\rɛ|pm۶O eD&Tk8Va܊[Ux? y}|)"23EUUmuS-s,2]ŝ<䀃~PQpc,dք&=U^3R~^SJݰ!>?E$g|Sa]K=-, Z;1Q7]9sR4C VˆLXh?uUeާvZ,5> d'Xڶ,15Zѝ{af$1ikEġ\ODG((=}b}-AIW UU:}1鋿EV`}c F$3ƄBU0?q;Odsι,3;utsʉON;/j}Ȳy%/fm[=&i9g-GyĽ?>я~p4bʧ?)#^l<,3c 2hx[ftH& Si{P3c/Ku8Ұ}W,$Jg~{H=:zw=:h( *Y}40N@%vp /h"R4R!{ Q۶NoW\q.f̍Lc+G5e!"p6n>cA.PMu>K6%tN\ /Ѷ,ugY&fyjl dVz 亮QM7t}oo|1f.-'*xÜ ~Reh ypuHM6}<Xs}c" m߯v#z7ci6Xē a"b?X+?w`ns))QE q/s4R c(QAO]t@M}z̺$؀Sú ^l"ɪhx`=tQlχ};`~P]⳩j\8(ԑB_vuÀ~FzO=yZ+rՄp܀r {a4^ɱgVE X(Osnc'K.dG@z5MӶmf^ƫ ^54q]:x=M<y|CE迩yܜC+n&`jTDԩ˲\S;d2$'%3Cq|ʢY4ҁxJ+M2nh!&󖙝k rWr۶e5pOsdF-{'EHR>裨}朿UQ\[b_ٍ\͓gP;u=N[c+,9u]/}#|ʼ~t۶rС:wE#} 7M~d"XHt%>Y`~S_3*8x+СCɌ={oն-:䮵Ͳ-ɲͲ^FU UZc"jin|9>MUs뺩jw,kcLǏza } EDM۶M۶ODZfn72ѴSPY:H{=N2d%4:ι9bN9x4'1ϱ;xʯگ&.n馗F|9眑Ia$n馵0?P,8+6Sa G!Z=F2lJXZ~${1f,˘7ռa\07]IYh@]@2)~ȑ*F_C'XK_wV>-r{>6&.ہpjXQD04'^ @iػ;0Sa[`qq1jCMWfj,..RYa5½ʙ(R?uZQ("4ZK+++Tup|~ġfh6_Їx]Lw%V>ֽC=]ZZ!FQjfY抢p qbS]>|<(kL+L5҇QwCԾ Όk{3;lLQ&"Ŀ'w_/ы^tMum۲/96pQleF#G!' "l cT'/|YEQb>ARAVT"i֝jkV<(޵?5Ai*Vֺ<]ahJW׵71{ QhԮE#5(vJrΗ֊/w! }hӌVkZeT +25_\$|#/a]C߼0F`fW_ڶ͜sX"Y٢(103Hlc&*D΁"k?7t#&(EuJ#lKI6u-(a2cб޿Cǁ }gBrYvE7["XI@9rd(j)*SY Ti6""mjuA4UsN=Qbe4 k?v]w=K.yak(}_}}-4M#cdee6Me/4QQvxop{CjRSH r6SgmhE٢(tq8ӟ>f"s=qs(eY1*vαy >ۄ۶e#?ZEkb?K1n" }U,e,,,HeT%g=sؚiB]mWkٯοڷ}9]:_#kcCz9og|o€/ƶN3ðmqQUUԪݵ'(lR"VI&= (wp˲x-:Mvo5ӣ˰ "kn鳫%v5CQ**r75\EagPEZxγbJ !DR0rJ@> MB`5g8N/k'0̻cM ; 4["3*?5|<:gNmz_ԟOGld1wnsp}w7 dS$t&s~$keTh3HӪRl0T,ot]_Src nw_2~Ƀ*h'vK`YStw{s .+c=5eg}0mt6h2?mOWspbrboip\5WUeYrUU4 {'tw!*d8R:E}[J$j&hfQ\ZZyW>0s 'wC9szA^I gT#)w1FP1KLsNOGdMq 3Ln+i_{be)d(IM&GhPh05489}xG>WIB7gum}{_[fLooo}룲,sZBpM#"B{+^3J#;K ']J<-ΝƖ9j)AhXs^HǺD 3;Ut;N!Z6p^'WabӒ>1|J3ʯJx`cߺu ?kR>N,'@ᐊ<{ J`8hE]q:I+dXoh,L /13knem&B e 04ЯM%P 4tvaea& \"J`@YM4fy3,ߵdH(RCJqhT"I4N8!GqHIG%On;RL%1 Fo=GtfbN?I4 `i&swnk}cYZ6 }3$ ώϑ.erV8Lj1d*oĘ5. Wl!HjQ4M sg m u^ ofr8_0U$ Vn۾W h`X4i0PQ)UuO* (e9u1gcjR-C"(BMӴZш+|7@϶> chɋt##0 Kci3 1 ccXަEwoڴiSccpMQc<<+̀=hBvefXsz*2s`\jն[&V$iyQKDŅd_{L-Piϐia"|Ϊ5!"%,;?g#<}[oTrg4z-o,$~_׿,lov4l8Tuj=fv^C{23wW?t{k$Í,!CsbpvWbv18K741M4_k--//5j7nd"@$<leݝƺ<"z}s|#Etm+! I)e1F   1sK'mƍ5YV np  Ny]״o명b1ƩH{3ߓt6b~ }Β3J4{@946n$;J7=-,#"v`y42$Okz+}w@٦M _vᇿ{|KWFVԸm8{&oG{}B^7V䕊j6=t҇) .18Ī{O<1.j=~4qڈte|C&f^\C$~I*H)d(UW]]R >$XZkiw&9j&YЗaoF)牎_s> ,nְ3DkߥjyD?z/}aiӬ.C_68F8't Hex~o1L}qǽ|ü.i4k "I2h]a.;L05: nC<͹3fPFI;S,} ^p3'nW:zy_\M\UUj $gׯEayy.lvH驤N4Aѻ͐ ;lkZ5fNТ(h0LCVsq%/]ں~A]ƛ׺]~:nwz;}O=5ki4ݐ/%h4۶Y̸ tÐ.EY طܵnur,u1FBMh0lgjBJ7O]?$?h{|647)Tɉ5kcn{un: {Vi iZM45Љ ȭt1BB!OlC̞N:[^zW٬׼5o}Hg۲+I`,w:8O (McRۭZA>#j6I3'?Iog _'rl#OlWULFHJݑι}]wu+=ξ{wum; i _߇L]c]^^[TWAGqwO3vָ]}4þ'!; M!uvOAh}=@Tӷfr#C?'t/]fZu,%k-yySe9CS!"nTUe2MXaYB :cc挈Bs!cs\fmBe0U/:Q&>!@HLѸ`r_'fy'y ff c cM 6ik:@9kˆ9oTO`҆?u'9g16s繑\Z_`!RQkn AWtIv Ѹi~%Wc&dR"UQ" _~U}1#՜eC3 8s ,ffۇ& &I3 tG=?1&96a(8 6J>^-1(0_ۺݦ_cK 5K.U}jd,4M_p\u&㶡bcL|k_{~Kcw}'' $c<5<;h:90˪~p@?]i . ػ8ui+ wQ:Yhp9.ѤED+okٮv]=5o`AA4 eI1t`m gkmbbuٱ}HkF'åCF*^ZZ⪪40Բ7,6skuu],͚ɼ{BΈ(3Ƹ(\QZ2dctMتlY,KS`PMP*։n$5QGH 87]WUzyDW``,3pf6EQ`0HC =Iأm'kƐԺg_skZD-cwii{I yqqq1 Ceϲe'&ȿk]z_Wu]ߵOcvaǟuYGh4r6Mk[U !L4]# K`ᬓj5aTwg0}N`^eA4:5WK4ʚp_PΗi,}ܢ(BQ1˲ӟ~}ͲKׄ*lʲ, &8V#yݺu{:Y *d%mh;cj!a&:S@ ptpji^gf `h4Nj4lkЀ\XXXQn=ٌ1"Lk<D$fP0VL@Zm͘9c1sn͊AeYcFQ9.kl,KxY,4|OaɉeYz{FQ++!"7Z檪LYf4 d gc Dܤ5muet@U$߾^CG:Ϩ26؅FDD|l&.//Ǫ"cgf4ZKs~0߼Ksfι}o-~>9; `0pZh[nXi1iޛ,Y51SMnC0iEb~Mkׇ]ZrZ_F}>Ys+ TN1pYg}[چ1Ea!lÄ I$pUc֭TK_ϲVj$ qQf0!2ؼy}W_ fN;AyBHz,s7nFfΦe &iNsoUUuִ/vvDzjjRgɮT-֐]Э|a{O4V*J۬*9bZ辔CMcɦ Y9bt׼Fؼ5& [ksa6D  δ-w ݆VrrbbD @Qyi]"^ӚA#;<{nL4{ǃ7s۶ah20L7Ӻ>q?ȝk&`bi1s flA16\?Ͼ[.Xg-[\\=_6DF2`,H+pOib9?4VrHk/--y{ޱ+h❐8]|di=JZ $aЬ]$\REd0'|㬵 =B8/~3NsD+cՈC'm$Dݷ}13{/dvv:K{x9G O+'YVJ'.{(s[>{{R_]5f((s*˒Fybg[e:YPPRU]KR7y{ƽ;i^ZZJRpM 0hdB6`O?/xZ s^\ZwQ>O۸w9a+y睗oڴC9~cwXq,b( " !ĺI8koN15ȃ+L>"hxzNYM_W:iDd0)a]wkUaSs9i[^Zn;С;\rC׭[xfzЃ|E:s. 5zʲ4ffk$" 6apMF vHgzkDrHZ pثؗ='ڄR~}CyHc?CeMxEJMbiy]MWk̟Bk*:$#kiVX0'pwuC{j"nBU|QD2UOL؏pm&UnVU}}O]-GSiqz_yw};na5egB) :{>= Ȼ%.g"Ӭ YV z?,T(У#>_x}7 qp@Wn05܅o/nZ^KӶE`5i  m4\k {&+p e*rYO\0涇ۭ|p9}cn ,ˉ@^dQg1k& hImeY l&B 4=]eLDZ -@<ύh 65c$-,,,3 8˲ F|R1CSXZ#0u]ÿۿKD23Mט<99TFnyyٍF#뽷 9ggbk.˒by~ov_Rx{i5yqqYk>+)L{i֭}9yyl>UV4k}sI~@ݩI8Z[Wg}tR0nNkSj+}㽷!sꩧ>Z;^.Aa8(\?>%siZFv wv{8 R<GIX/2(SN&%]=9Wk.~ϵE涃T5}o0޵huI7E3(snB5sW!]W9ZpZ7auړM@ x͊41wMkvqqqU*K`aVƁNΩ -;Qz(QއBx[í[&qH"¦5E(%`f6I>F\R:7 &.IS bC)(AUOOMhڲ>Lk]VjW@fd̈́>74+2b Ac`65]16!c9Zۼe/.{ת<`Ymx:hi[׵޻ !ؖZcawڔ_@o7 sWW_ca, ;c`&`IIg*Qc7RˊMBo7G=Q/*I3Z)i>KfNC>;KMwٓu/[l114C@\$F4 q)`l7d 8s5K,haaT ]meʍ1{~w~B}cn{}΢ۿwS,ˉ#r}]?Dnt,$v5hm((ɦpә4McBeZk`0X7HUU٭[-[%޳E!FD\؝`{@!V+0|;ոm ^ kI^mu x *PH@}gw8s9(iAN<%QÊSAhk6-aK%&i"gt5 g>K,K\V~O9}Ρ9Ay("fYs`0h1O~nϭӹw[~#.W{vpUUٲ,~z\~%;}BOD~8}.q=F#޺u+F#I2UFDmܮfN}A0Dh4J:9@my}8><{+@[9*Du=}4FQ:zTf 0񾇱WZ7ӺН۶MāJBuR`]fmgM3\tϽFmQ !Xi4A31E)4ƉRm1 1F׽S!ju==qefH3c8Ғ:.=ɋe4z""r1ƖޛM!b`6&}BjPMs34lھ7n}_RDRIQU^h ><֥E5J>Mst rGz,c*eD<4uTUTU4M㯽-7i~;Gw3sws62C$vHܰ#9s$0/aXzsHC$VʁGc`}]eYȲ,w" \s'voIeԅ 4zF%QZG}'IҜVP-7p%=묳6X;/׾vB&JhZu}viB>UU0I_qWUE4&z֠JY_l<=@Z y:Q0涇gna{by$\Wh6-ͺVH_UΪwF1hX{g35P]IgAc&XF0%ے";&- y7" g]ܖ|O{[z)-<ͮ|CpsBcSRFed\1&5K+IK̐rSBDdV5JgIdi2g >Y"ktK2!4 VMxh̞Zu훦!OD 5|9?#z7fN87c6XjHښXs$:(ў=͟sI Q)-[,[oj^|WFR{"|Ծ "_W+ Z k䜍17{˞z衿?Aϔmذ׭[אbYky8`0`H#"s1m]שA_&1ZksI*SUFn \S3ܰO ݊ nHt f4}5T^HUFD85Ol!4u]ϲq_ߵVgyi|`}iFLnj)d'3@^Dv0 (Ե^h?϶5<@%bInϓ^8Y&[DDz,4ARfMӄ|3w'?Dr)+{M^Cv5mniu7, JKc:%16seYw|*UU%߀n4 ͐$ ^9!ػ/4$X?kק CZ\\LG*ZZZS7ZtiLg4 fjpVX}ۗ?p.vfتJ6rc7 IDAT6mMk3|>M"hRmR#BkQK1,xaaagYEQp8L`0HA0k|E)%IMx 80#I}l,Ypc$JL{<gwED}u]af4kzmnݺ?O>+hM8"cI SՈ 33;8˲x R|@ \J0bz(yU%:V捕 <!B@ɭ%;Hߡ9;YxnDl%R׌ &%qjw儽]0I$BMӄiC{'&fs}~'.7_җ_fv!'\!AЫAxI=_UDp*)&4_ pk7nGKĄ. b psibg=|msӔ@ m$xC_|Ž6+9蠃W`zI5\a1@{TRp=%H|6V|+kyne9gs3c=vaGqj7p'lxrъe&]ge {dL\cp})풧Ѥ~*RLާCto}F?ٵOtǭ=4p=&OK5>ܦC R.}h^W tWw^Y>~fA# :iDcv.28@:z4& Vل) L]f4, Ox¾j=vS{m'`B0 \eQ( EDS%jfz'C q/zы^t%6256in5I1r3z\Uv:]4UM)2IQmH@nmͲ,-$檪,ה$wPeiiFC/}Q: a1$ NK=-}B -HDjA*_UՄTC4S7lݺ{=a{'?kWU4 %n0 }+X>߷e[n,+gCtE$H4m&tM")=`k{OI;H70$x}wd(ul˲̌Fkayi _K8vsI'@flkWT!ITeA"]_$( g}xqqqpEQLhŃk᪪EE"cEI؞~/._ן'> H8Q}/Jc>p [^iƘWfYu`<.6,h0`0Hl`;c E ֵb5izQ&˲J}a䂝-kumʳr6r9LZ{gbi3r=Y4+{Љ44{ Z8s5MP_K$.?3{X1믺ꪻ_U4];c_s)<{bփU&k 477BRcUUsQ$[J!f+7ׯ5a0j~ xв3x~ƍ9};s/5 ]DiW3[}`iF~1Ζ}]~Ӿ1;o ڷ=AKK0!㤶 UcӇ=@S0K,#;q],:X9[k{r& W5@< j}rUUdOQ\K@% (Z~ +!<蠃VMWL EER6s.B?,Ƙ~N۱($` ι` `_K|<G"Ol^c zδz9gMRSfaDBa@-敞øsŜ# f8 -LIEQ<]1kƅ1mܸ1{ֳ&k:ե+9Xfsy]=~;y??<#'o R Xj*+z*0w5{@[D-..&T9+`} 1>&(>_OIm uYq\i#Dt6obO;qaf>i}ڃJMrFgi033޼yÝs Ej~E+׬ffw?cKhģшNMv>_u>D`s/ 3cY$_UUWu9O$1[ ^뽷1Fk5y(ʝ Y*Sh> PHXgj>#|"w]tFXHp}sY=ܟ6M@Dxg[S2/ƃ^|E5/L-J,`u 0G~Me`p$vhWq% _#p}h䗿g:zRKKKDmЇΐ$ ֚M6KDIsSFIg`x΋ b]A9A>>9nA׊߹{#񈿼;#/I"ܫgfVK4R(6:K$$R:e249r@1BRbwE Y%'uc4UU w-..>袋.:Z07PD0FUUy q(3s,˲^9Gu]s.`EcR|V${a`]a`v1o=9beiȜg&ζtn?2ߢ6 +;u=!N"k_v_OI1jI"<[?`:l.--(3'-oyayc^ӣ'"Buꩧ~iZ(њs.y $B꺎|( ~.ln>?F#6xIq.liL6l`=---rb|H#!Ռ1 b 9-9}[vBNyDa ]߿6z2S/t.{sc)JZUU1nBnp.H(s"0=1 9tI!ecGK7mҬ}eESq<#ɄNsWM@$%KD] %>Ɯ_Хߛ_#@1S9I11*׭[72+ih=]:(4 ir;/Ӗzn*/w>t5A|_G>odK3L2y TMӤ*xF"J@s?BTe UMDXK9K @-I+mI+)KQwyAq<я.QǵE({_@@S7.O|r].?Iͼ5odܕcn1?j|yn1A90iwzЛ3jY4$V7U7g< Z\\|>kk/>v\BOP'[JH2s6yn68Żhq0ƍe==gZiB2="{a>կ~gyۢ(<` 2gH ?c4*|J:A ?Q2DKj潾OvsE{b$I"Q(FK_ҙOyS޲{}?y3y#룞_ :Pwx,4PRF73$XH|E`r2 ~8Laf4Rc߆%;ꨣ6e/{|o|#;<"U-ҁ"{*4H%@ ψ@^l46s;mQZNZk`0H 1EaA[^s5y0<-;Nݐc6;m#牭~E+^ yYE F1W oY/ݫthy҇?cֺt!+ҍF#y6eF${ d4ϫ =~{oi&ˢ(k45X'NBc̼y4>>Ow>?3򐇼O~hNg^rF/.ۗ<ύ4LGK8faեwF0˪Zh2 fF(.ʲ|;oG?z H5k^oƾEᬵ{ESB+50O%6LRL9vp-sJ<_I{x'BȎF#BH>%眭<%k0:`2eY&7u]`1ZF5=w88c4PUܥJ*zѨ>D=?_t>UU9}FDY t9cloUKӶ\'E75Użt\UUY]i!lÆ ť^zD?OzlW]uՙo1!|I}XHްT2M &eV+I_b "  E1H𹰧qЊqYGA78eeT1(l5c3āAѓE0Ֆ֦|u73}涛nWln;`簯afXޭR 0-05SAD"YF͜bHҵ@*_f:b0iHn)(tX40c8n_70Buyj+3Fi8ne:ckX3: -$b ӟs~_^a13?8 .]cLfpEab8 5*9a &];A1ub[k<ϭuM`#cj !u$l]a eD1seYq{y~I'7EQdssnIZDA$[PƁy;@4FY5{1YS|=5 ڈJ,7EQ(L)WGgvm]?[WAoO_Z}V&ւmذ!| E4q f8i`<`Ą}YViͲeY1`>,QP"4ާ $1İ&UUUs|-ƘvGei˲t`}g8P6i(UxPh,}}o,䄖:CK? -z۽Qց.D mUUv4%-xMev8T9bJycM@!$hў<!XUU,2uP09sdOHBȾ@DE " DAdO⧠ (A"`ٲ@ trQܾݙtg&>O?3=kխ{y{2K9h>[hbԨQ,XDcLPNQ]1BP((.CTI8m|_R{Oے8W'$[M0"\diJW2oR^|ZTp0gk|Ѻzja23)eW++Pj`QH0 {Ԣ)؅9D t$goZk2ޛ/_OГcZ9sg/^D@"PJZk5 {Iqȯ=`e|C80"*8!p.ؤ Hݐ#ʎ5koˬmC=s{$a"G&\$bJž+)))3!@`E9I):^WC)kz}usUrc_> dBsͪfZ)M${{{͛_hv]wu rvق5*a@sbCc|y>uDs7 S?яUFc=Ze{߭<7>y>aUF\q_GGZ)5Zk0`@W7۫ {yQǽOZDY z}}'a̘1=}e:iTW/zjwk2:{ ̙3,]'O@ǪU~ug> hWP3/VߋJmmB?;0 ! CgW@BW-@ę8~CnYuH$+\[YSIn`.W'1vFہqX.UFLtEpc .Mt epҿ>Ci0Y?7aտ4Px%b|ڤ\>yzwnPJ֦Ҩ}_GWpH|P{~3R%J)@ 5^o49q0AE#H!WmQQJPZkCkm"Rޡ!"@*D~!b&Ii*BD ,so , $ B---AE;3΁=(TZ*25u6:!8\.WuI?9Z͛7˕{+Pa - .DDï|Xރxӛt3'|_iڰyVz*9р 'JQ1_} ^ۼK"˒'$"}{""{2h]}/HW* eٖe$I~L1>NJ*Rf}exE&a_&XkcL|fw}ȑ# 4]g^%xDCnc$q[k-*0",B|mND+W䀧.RBPQ JuƏ|OrTAD_k\d?6A窆*8sHEy b/}Y,$ Z4/p JHE:w#KR`h4Q'dI?`5Px3>+tj%Mx'N1-E24+v.0U '|2X`77X) )#Rn.׌1eQs{7 5/KHv)J˄>3G/@Uպ> D?MSVx`eL:جשER6Ag߿W`ذatMz뭇ZkATh:o[~T5yc&y!$uOL.qR.92cƌA{O<g;nӦM;ϟ`ϖTRkA(''lLl1$/d.{JVq.q@5%@P/؝OWs' `rCA9$D-bD^U~j 믿~~Ⱦ xW~mڴi:DI?G0q 6fgUs/M8BXX%IRU ]%kw#yɏ!p 3Rqfif_Yk{-DQ4sϽOaF?Kn3[Ly%[(>K?CZ?3[UNZoþoommݭzo.X`H)RY̋1cP|=\܄ar a֨+ =>'*Da(|9봫TuYޕe]U/JϺ%`hu$DbӐG$N!ɗZZZ :6еo!Kkx?&7}bx^Dn ·dL)v9x㍪O e![;gZT;IrY'Ib) 4o\R.{D156lWTa6Rt^N/>QL^up`1_)DQDQ#m}RVQ.ΠT*4 , Zk88Z?)(&QO4iXO_+gT)&_QaT*rH,L9ҥKNAG}e.>ꨣveZ b'f~@.^I9yqe>D zvD >OLXx-|AE#5fB\Pк PEliiR#z>`V ߣQB^/Me1w>Kj̓tNO؆&ڔR[IGEP(0>gDγB8?#1)W^FUeR X,W;wV_u1n\5V<蓍P!y]2O/b|xGqYϟ'?8,B#g[^IQZJ"y2d_z*6wqǡP] ߽Ԝ=G]Ykr{P2Eo!_,\VT6R^Lҽ攋t>1RH^B'5O@pF*o_KvO^?~w}QL8 [̈́3J7y׬rN:nU|x6X+} = C)g x!cDξAM<,@J)[, bժUSO=[oGaMUZH)7MnWz]wݵVP#TSR PJD4`ȉ2?{qZB!1FнZe?@{d wuh޼yo;;vAa={{?61AHDϟ|T:q{օ1J8DH)%ǪR$3F'B$Ԋ-%TR)%i~v y$7)cLa O, bM~ $IbM1RA`I/aIzB&9L`  ube[3:}@pe8gΜ.\1~=̚5+ .I!LTaҚmlk6 CKe$B,ˬ0"/25J%afuuk5 0"4@\FD PPhʧO9L b}+f\}ϛ7o ])$IPaiEڟ`$4|6Z숬fȐ!0uTxs@",=Q$ > .J^Rj O^k-Kx͛ӣ:꒻{ZX5B1}>K.몫mbǖh*X.1MSg۷{߼&:ofΜ9h޼y{ ^7֦ϿR*B, 1RJIӔrt߻>$˲mP8Ze4CueL&I⚰OP(KBȖI{lj` q0۵\!8v! ))dh>5XUZGyLc,QȢCtspT2t geNrâ'tTv.0\|6s +V }^m_Cib;P6#}TubM1EZcRcLFbRJe YDK)qV'jyI"^\we& 1dTL#C:4;w}wI&9rСC' 0`F65Ƥ[V_$oGqg r<$J)()eqiyP`ZZZlE62Kڼk>2SC Y TXT8wGk|gؓc@D ~uYg-ȀN"P]xmq _A{I@D;#ƘHo g͚53w}5zY>lٲM-H B\EfLk&?~҈#& :tBE1{ IDATRiݺuVYfʕ+W<~=sZkBEUJY̕eeWJi J)WK`uZk+@ 8hOƄ? To.t}cnyA1n~ c,BF)e0J1^BXkP$ED, r!$65Ez-\*kPFQJYmնNqQcz-:o޼7m^[5 $EV2pq G>2eڴiSF1mjPbŊoLuH)mcHfzRɛo:34A@TAFҜΛ7o.5{~wyDž^rY!l27vD VtvvdU qKDgǟviGM4iR.\xfYZkS7X˲,ˤYX4J)S.M$n>D9okm2%Ud5/ݣZ+rD+=<{#w]N:q>aРAdnУ@D~^y啕W^lٲ{ﳿ/V[k3$2DZk ukbiJnNZW[y8G:q !:]gJ@%0EMw;OAlr e+ӿ_YCib;Q2#yꏧJ)DL2BdYUp p˝ ^t{u(YVr!.QL˲,mmmnx &L1bĤOjmmKkJMalڴ#FOI2kmjuoE6$MӔշpk`LR c 7r{*veLgS{Çrtq'xb~ ,XTP"#/* |;%i_O 0yg9msܸq3:X,ژQ^z⋗1 9ٛ)2CR6JjGR J6Lpey-Xjy"~J+RJ TǼGw<`9~ܹs'>Sƍ7y 4X,jАn }Æ +֮]?|ѢE|+׭[k="BNnRNVYpTˊ"WO $eV ! _aUq+@ @i/!"ꫮj>VP*^Zn%<3/뮻^L%Ib,"P(%ؒĈ̅:췔R#00 LӔ+ȚrpҥM2c=$Iֵ?O?#,_tGydݲeA;ֽ{رc=z4h`kkAmmmMZwYnݺ_60Zk[ggMӔ/RbņaZk0=}z d@{Ъ 0 "r?ٜ>}*$BDJj!Dijɠ5ʈcVyJ1(Z P]PUP'|C=t 1bʠA&NŊ&6mȑ#&D& #$yx]gԩ@/ _qωR^+s}~ĉG6mZvڧ׮]Š+_x zk/[X8{[m!Ţ|7l̙&O.2jȐ!0`L uџJ$B%˲̐͊R,JP.qȐ!nf#6|'wyv6 J)eBÇԧϜ9sq㦌1b'(oYgg 6lxvڵϮ\rC=_qƔ?&g- ) %\%[R=h4W异bRG>aEAgg'wmmmѻQo}[L4iѣwy~HKKƍC/oذa/s=nʸy@NsQJcfH¹7BQ(U&]{/K.=6FˋBLQ+!DDZa5""Z^ö6W͐ {BNIR+ qY_:vw{h7l̺ur+~8 fq쾔R"1s'wu׉Æ 0dȐ7i:蠏? Ȣ(JY\β,D^5`oV" q3z~oxD4+y}OKRJqBϯ,jiya :ꨣL>}ڨQ&2dr[[ R-#͛7?~gۗ/Ydٝw޹{]Ov2+>kTl1I$,+ U#q./ 36ZK"ťP1W Bv Mb)īCwmHr] snZ3eMȷXp*$RDJ*"xi3WB*/ze@GY8EYj'k#ԧr9s>a„iÆ 6uRl&شi3Æ ; b UCBd\*l5`AnzsyrVDJZ)1c O>~",6fYV2Ɣ,̲RR RT(,ٳ'̴֩R*SJe@" !ޑs-@~A 1"IW=TA7xMN{cgΜرc :tZ[[۔b8HڸM6-_nUV-k8N(LȕsL )z=wYJ)80ƨDs.3g?v݆>vРA0`b8?<,o޼W_}'x]|+yIz*5dZ* `oYJ)As Pi**"eQqkcL A"Vnذat{Y޲pRʌK jÒ aR5aP"Je/v"$UI0YiD!WYF`ƌ= zsO ΎƘ,:4̲$EuֺUkݢӪ4M_|ş˗s┒)vDZͲJ|C9ٌX&ڦ}&9 Qe"?i]veڠAN pdǭ!I57lذl͚5K,Yo^lFČ|F@u)}Qa~ՈدmBz^Y(1FeeT׹S:{xIW~&M>&jyxee'\ mha5Q6#])#x1K X(k=]ɸ͛IR)J"8rWJR>E4)e/Mn*Kᆵy'Y2y$ERP6/sr P͛O~0 w p"ji7MR/˧^BVREm#x;::liIp3$EU)a bx뭷2wܫt,} ?O?|1Yn %E )1ZÆ ^:u\]&=*[Ib^eٳg;0`ڎ&cLW_? *,TceaoOg8iZRn:E')S.@O ب!x%[dY^vmmmaԇYIڼy߆~LR)IlCa$I_uIZ JC7q@~:o|up4ykCw ߹/eE2x_K/wڜMxe5%2LJ4qc\5g53f֝QD/?BTUwiVJn4 -nwf@ZRbRͳ/}C򗿼m: G= F|gL4i4tCT-|R#t)t^P=(ZE5bĈIbq:~)e[KKF9gZJuq_7#DW55jжy Rʶnj3ZE{[kVXk_/}[ *͗p,Re!kG̉'М9s], v}bBNj!""&I,!ɻ8~a  C0`r J)@ MTP%`ow}z꩟n(w̨4]Xko,"w3D6d甽iF.rm8 |Tn | Ca8p`(4McZFh@eQJ J)VuP2zjC9~D}a?}v`>&! 540眓_^;pi.{NZzޑ>x~c<Ժρ˛@}$_R!l& Q Szh~UI@-Tk9J !,W>7o޼tbԨQ=Bc p#(~h:PDXkYkA0 '\ rJ)ٿjcuYwvw碋.:=vȠ4- bSN9!vLZk45i"wٞv}發"Pk_MtUykoZX?.7N2@\c P'`[pk;k;꣉ލ]&N=w_|}0rn>&X7>c '2 G/p 9˝ۅBA R4 y \Ñ$Iu|maKMUD̛ _5 rǞye&zix-p2TePYA$[ܧ+ ` *EBAje2Mf@D#IP wK ) kty}1FEQ "ς$I cAs#U *E~H nkh-y /1T#4h EN"j^<@ͱ*J9%6 Cg !2 2!Dm6/4]cGm'pRJep$A`0d2abOۭ¼&e(J"I@DZj,˪z0Km*)%b*Ajau-@q,*.fW[2ew{Ml;?^Zч6`S> ;FN.Y+x2|[o^͹MS8`M4jHVzmKeٚ=#m.DjZE-I){ 'pjGGdz}PM(:;;y=S ]@2P~J@tM5z *ZP1 ƹ9Ϡk!RMVeS;ke=X1]uּ::-٬/ˆUV.ԇP,'mok0 ERBk2JZ(ȮO"_Ymڑcs.zN*^_Q<lUP;N΃ v& V+)w%'d'"Ӻժ۲,Rq/[lgsN͛Im|;y?.#@;u@8ETaǸۭ `277IcIh`L5DQě-Y.{fy(0 Q jP#4ZkC 0 8N ց5ñnݺg^W ܚEE!+#HTjY5D7Ap @RJE b5P("IVt$IU &ݘs{N ք-|\$M Rn6D)g)]uAX,k ^O}  pjkJ֚՚rlLZCyLk@/rl@XkwΞ=HMq0̢(ʴ֎GDeMB 4$I^¿[Z$@DP(݌Uf{T-#4 CZCP& +VC]6> +ykjk0Y\w|O;FN >3~{ٍ>|}XI_w}Oy4cbŊssyN̻:;@(4^?^O{K Y! ^UWQ!H Yˊ,RPHxU\ ٍ%T #z6N+@K +bO?=ӗ{)DnY2nz$/3k]j%rψ͛c=ax4mHd^{G,2kmҐ;Rrr~K14h ~)!˒&Zg?2o lǪ³8Suo.FP+|Jm5^⤉m5/6\ugn}mÇQ FN#:TS[BZ[[(j́~" KPƦ& N:RJGU1J)1MS)\bM\rdYf ZgReYXswtѢE_üQLItwib;^3\ Y:dP"%*|6煕mM2*O$"]V{T~uW#'hb;?gA.Zk@N>[5LǞ>qzes>&B y%>&iz]w7~/>[ZZbh(2RJk5qrlU䮵'Ɵg1)+DG4dYUU\R'~ר cD$5y f=_]PbBAD*ņah162c5J)S,MX.'.\8nQ,'-R JcQ(IyqCǐ$  Zk ;;;T*Yk-' k"GJ25$oy[?ῌ1u&o>}970˕Kl9k45iZ(,_M]%oIT5GUiB\3ftj_'xM;[&7EU䗺4Xurƍ1.HuRʲR5BW-7ec>seML}ŝ.USP^/]m0އg8vIA~? LCWP)<+xx5ŦrH{FQE L5ы$Zс,]iד( /nI$I0cyJidM$ɞz꩎=.؍7>Qnb _k'No~5~4M3Rk!@naIm8F)% lmmVȑi"lL5%"( j6}~ SqU~DrKXK75<"_~G;A1z*04@$a40 mKKiiiJ)C1&C-oy˷֬Y`/ě\&1MS$''=ZZJu [ZZ0k6B(2!L)j믿~ըQNTv+WC=SB Tze3T&^W6I[*2HRIw'w9{sY&{lEI rEUgTjO])$k0-3# _p?$g(k+ݮ<>/$}9HS5iHSmM4tEHl& Y*0r}xcrdeX>@ J)/ό?ć~ƘRO`'FTz;c &I(J O bё>\d/èQfkOy׹8WӚs^2'SzZ*hZ!DirqYgnݺE?B;/rzĉ/[hDt~@{ȕ+!GDYa$$-5-n-|9#k?rs>ksa *(Үpoee p3geMkC ~0>~FNuB0g//.`,vJ < x} VJ1ԞTrbn^.@ϑjF J)7o({ǺGR 43V^]8qW.\|H/[4h~HU ʷZeYAt5RXkd$]$44M$#Ky"~wh̙jrvŊ?G?ŋoNQfA!HyfY&7iϞED TGǤ @&)QE meO^kaÆcGSyOM2 P!|kpXVѽAXOiqS [kB*='R%ؘDM M>1y# &+|'r.N4Qͻ[ṈBaˤ8Cm",)&rB䍡\ (ÓO>yc=v%\rUKK:ٰ@H?7$o2T{?2|&/G(!bӢ^Q;c5,ls/&8xM Oyp 9;`G̈́09~i=vW裏>yȑz?uYsFinXH *Y=SrXڭ.ibEM0Ay9KcOA~Sy/RϲTXw Jj>]*.d!ю, ;^^V:; x׮vOKwe; &y[sp2z+Y߰iÐڏVVZ!gZku{w+<~ԩ)u;>5ko_R^CbΎh yUJd9{;~҆oAȪ4aW q sOchCqG 0gUەcmǠu #G mP "l\ /ڕ>"ھLj Ig6+kOe cvޜc߽'迾oǞVkl=&X־NfO47얕7A4&zS-@%TUaԼG $b/A7lTfIIĔ9y9}饗N;?0nܸ#0ObƍO.[믿~ 7^\)Z  s~ +%\Vqc5kyHi@fQH%kBMh@^؆E@T#\ ʄt{& in'Hg{%HR`dO{e:(q-h,Bl˳hѢ y}!CCOdc{9c%HD5+Ya݋/XkVIܕ/ϿiJMŏL1fLz;wϷÂܺG Y$/χO+}29H!BJ)m ]sQyJ]ʡ7 ",|5@XpprO@E!C)ɘ#IKK~kG>nڴe˖s7e 's YNr  OzSƻNoWA'86HBaQ{pˮ\cι֪ wT"rQQ"ގx"[n~ll}x@Ӣxh[<A@!HHBr*Tus|c~X{${u'+{՚s9ƴ뺳A;"ۈhwGуR<\X}a3ƨ)KK{ ^KsEgNNAU׿͟/l۶-ȍӶmz1玗M(~ Uߦn$"]}B`!7몷_{yoo?Yz]4N+7|{/|G>NNl> k?Pv!d-]YmELpz:"Z:DB=sk6h6lLۥձP\VN6 UUr|;1v\Mٛm#({cq?tqJIvVr'.Rn:`5_u])]v|*ϻ</ r])'ɗ?}\xا3xp, Z2x*T "'a&J!0jzolrqrc*~SjBryme]ٷ^'Hl2u0k_QuC!>mtUg?{~xG^t>tZn{_O~1 t6ġIޔq}xr=N65^RDxn8 A_P j\.9f鯈e}G]Hҝʨc#5\۶dҩjǼ`By 6]ѣGOX>,꽒F[i#RXoO]ץ<9N{k_]tѯnw{ Kܝ.oKoo|+_SJ-)3;~X͇nwhW<3Au]X."VU%vDǞ.`*u][pcUUEz??~ħSqMJiyСO~SzK_w}#9,fcm[3+fGSJiJm&,fH;`Tڶf7j&j)]5mi&}B4mn\~^U7M{ͫz,_/m~UDrd!X,r?1Lr3ì95+\.|>)hZ1PjRjBu1Nb<[g={I91g\${m7)}ʞнJIji{\pyS |ߎ=^,_ҍ;y5W/!TuIȫBcBy S[&4:jhR:N*PmD$Vc*DRJaZEU 14Mh&؀-&ڠ*U1FZөlll*P|RJX,:I4M3nd:惏r2cw,]e: XOUU2$ 6M#" HNhmw2 ".sIDrZp?A0 !v`&-ʂC?7Op)Vc]ded2Ѫt\BQW6L&\VJު ۶ )(ko^m"ڶbq2DU"j*6Mi.f%/yɅ{>Q{9gc>p-|oԥ^z+_ʫjFfU.5YȏM_j96M}m4o߾R H⍶%۞Vޞ[yr 9 3yb/bUU1 ebɍ<ʒ#q/`<z^iRѿ"VUUS^d2I!&×@uԮhPh}n=?$DrĂvTu] "LTX'cwbħ?=}̅^׽[Uuu/>|rn/o}Mf ,tfYWU\F''W'IBUU㙨X!x9۷z ^pɟ .<?LNuэo/_^nX EμP1e{{?#(]Di=if3a=)  T6[l'窪R\.U"Q$>]< 461(YE4 cls {|I2 P>,;;@/^!g$1ߺM$;iZulzgHcW8K&xF|aE?ObpKgBʗFr?.jӷm(k /}9.O'}߽0mo1<3 FD:,`Nm%YXbIBٙ'^bXȦÇo[n馛nnz[rW\!FYP?m;lq mRqm<е+N*WU%"u]׍m6) {8ȏ<=Q"vMr.?x9t^GC==Gm;7wbubޭ.|/2TՕ,cm]׫ZO~ڶM&IjFWڶ=l4"EB?B )h+~,mPUUĖr)oG!`y %&q_0RdʠHˀlII e/ʼngmy³ bʁɋ+ ,յ;l&)%ؐj5 J \= oxbτ+iG< Q׵۷OBp*=6H+҉da⌷sS1ٖnXhJ)f3zaz>Nv4 R _(-r4!@eka4 o~ G6l^8:\uUo|d2Д ŔbՔ\.ME$-M!?sև` .Vr[$s;؉ɨMiN2AZdk9︐,MvK# v:0P5M#u]K2e.l|G~j[CȮ7ԖA&u eD$jM۶"Ķ򣿴'2l"e"鏶SyÄ6 6^_b;"]"e]Pv_;""hE ]7!;[ xa>sPs+"띈|,8~=BЮgݷovػhжmEmLpԟr"D~7֕m+?FyNbWU妫 Wr./M8^"|RyE?,O~v~ ; tNl+k:nCp"@۠Lc/SU@1 6ىu'#BXs 4w $0HAxhXU<()#VKAuDM1ۊXfU>u#2Wdbb:҂a;2?8^oVXIz5_նcbiVe KXVi+V+j8z /b C xsS| fǩ1nau7f%[ѧg&-; f\2G%M D5, {V)%%XQd 'g>R'BXb;EC$rDߕuš\:tH>mM}'}r[>iZEcײ Xط P Oز";jz{R՟]~=.-e@Xܿ=y/-lMmj jw\||:JgTU.oP't¹C$=o>Q`#Jg'H~V#t֙hf~{nll TA:e$,@(6M9CجUQ%d> @xZL)s*ExP=X]G%$t|-į:NRs:X׹3]Q6rq <͔&Xlc(Ry <#.OdѣGu66!o"+|yՅb4(; &?$2Z6RpĄRRnO"9+jf#p- /Q]aQcx04(t۶rpɠt:ŤFDD(@\,x.j-p[G͆& m>ѱȆ7+q\jV"(B2mvv;CRME6 OV+f.rȃ)(q]Bcs2lml)dVrx'p?{O&Ea[1ctTz9R*]a҄mšL [1g38k1]8#x z0tobBEJ(.OO<Щjm'bJLVpz'ÚtI*$yADJwػC e;)dy}sP ȧms{E'1l]cu]=Xi,ďk"}F&\3}LbINv I/ٞs&َX<ok; aP=)!+'!{n Ԟ"C+ޱgH pdu1jvDF^MCh)uD}\"Y %D0>̓ucむ Pa5vcp̷jke~!Ds=% KQ]7ESRm (}E; O{ᡈL:yzAUHXC_`ƾc4 y1'1tpRd |+#gx~ڥRaq8$_FCbu BL,H(cRIzCet0~`W>4GcLe=emllw"=4nX N+)7K&PJ"39Hg? tt;d-||Ȼ< f2EO4IL2bVUԙr Ѡ-[xrDd@s=L&J>Qh2/0RI+GTo'6y0l۶acc#O,NޛtMtBHS4MPky)" S[(xoPMX*a?X(?kex.f31jҮ͞U~Bmv.ѺC[JQE0%e|N)!>HҿI`' wLniamD:E;#ΦʴG9.Fe-""Є=Aj$`Jn&;!ЍvHaq)δ̶2.(/E./m=ORI[H))YgmHj=梿k }al lF1*~hXԂ$ŦBq}mvd3QKDK1FL&lgNԕ@;`v0[JI9rx'0O3>I:hjs$K[Dp߰ x")ig>B_C$E6(fP&IޙgSU;0F/m\!`3Eýy)׏O|8tҷW.|q8nZyuyC.C,l?]wj+"Cĩb%JJ50Gm>>|dMCٟ؃bJ,'<($`xm51u IDAT~TNnKRul8Ćxo'eJpZ:)x6'&OGi+R?8}""1=U\.o^#>0Kv'v>dZ[$䶞j v&z>_8NA "JOXyh}b7fr_J u -Hb0wQbd/ԡ FlHv@dESD6kLdxCiGBXd0Lz ,k#3F>ARA()0 |^yqe7(T߲^cqpH)ຓm3ܾr-۲/m*wRJ2BHePsË-GjmfpgٯoxT>MNXjD! \DXTrNFrP>ŏܶ-Ӡ̅ˤl8 {^sl`<Z!P "2h'aiˉyydX|[#wm~N^|yփcaZM# UxƂKʼ{x΋_;藹~X ٥򎯃%_ ./b l7灇LLOwۿE?/{n\߾K'N rLm_s^!QWfb>+!<љL&:ԞcS6j[H?p$9\0MDNL($ރW a0#Ա%(luVMRlT>SyG]Vrd2(  3  }"/&mߝjtIMbHu]t:UzW8L2ً2?Xx̅ tD#Ab*^~DU9QedD،\'ik$Yzr 2ܩ!"w(叶m:$r|#;s%$ KxoYNHw\sl^in|Z9bЦiN 1-"mڨ+b0LBJ)sáZ X,rF{ uҢ \(1[lHak?cT#p6\_=i>b\lS ~`R!+nCWvVg:_˝ov•=_aazI2U’<y_UUFtf%6XbMhwj9!6 oOK^G9 ZDy< vD5ϗ~~q/1 Q˲-q=hn3./ dDb,wc/:  cI33߽߅'=?'-{5_]^GqR?y=y/vwO`Npk* ~0rWlr|`O5RhZ(ѾhDŽ-(CF,nS}n^O$ B$R01nJ)SѣGcVLB4_ D_._z@.?c6uFK.yq_.k۔vqt:]أl)FH^ ![MӰ++~e6'aᜀklKo/O9<~*=4Oڛآ* c;RMۨx,@_io'w<1d#r;|쿼K|5{aX]^/zF],_ '8f&0y%صR\.Y6 N't]dQ@|X +x psؘx $` DtB{.Qm%D ]NuO:Ů.|-OdXu? cpO]%G1;j  ;&DƷYd2Pae0rRYE[ ;Za }nȾͿ H9jGSCOEq at(G6 '?vm˻D}va}& 2î+ =(0 Q W^KxçMoG}|4d [!w v ^ (K^U#b178Bv}r9LQѿ 3wd#F܇p˟\W3Xf>e!Z~Y?%?gˍ\wdȩr@ Ukc92H1<9mM$?~_J婿\9 ͛*;e𑽎㫟^.W/_/\$n^G1wAM,2T?B$z}<-AV 'Vc*&;YJ,+YErbOuLxBjJOMjlq?1*U"2OlJiI<,ˁ[ Trs`OQPUWo31wqE|=‹jjWutN) AGrK1}Ecd,FoD/RYʓR:>t_r՚p9O\%CdMΔqq؜u˦ܙ( 2-*(,m8` =h'u+6pzQu޾/]p" .]!lXeH߇o3 ,ir@fr{þ0KL*ڵȚDD(˒Ig{^NW;{'=WL&wpA/"v )%xE-vg2!}G87e>~F~m*/Z !~}-/qv8pU(*UD|SrBRN#N=zwaTsFJI:Di RP u ؂ǀY)x(ZLY(KS!"kW"2*=&;"n- ^2̪wwQ A؃%|Wyi ƞ-tDnD{;(o;awwcxiXȁc Esb.!}+ȽqY~/ܠ"*)G_I 79ڦ;2_ߑ@ޕgbی$aT.lo7(B}興8$~C{Aj <[^ƶ;ǩ&uEք/O8aH8TVR 6u}̅$8p-4ު/bЊ*/Ա&m۞>Uw~v2 H}wp8( \ Կ"öD6+1K%gy&/8ɱkc xУK[ϓ]ཎt;'Mn`-"Cϼ-p8NoHsc6>;õh<[O]Ip8mޅ p[(]ڌkx>~k:*"rQUN}]73Wq:a/+rG:nC vS蘵sy<ɏ;)/yk$W#{>Tuo+/x;3J+pɰup||+W0vtZСÇovxwp6[RJyapZɎf:'w?+OxH3ut䋟Bgo?x^G8c"ÓJykZp8p8ƶ Vw0%y3 ?$_ss=ʵ\-{ ڢ]2 (}H:p8pMnuK7m7>A/y<ߵPUȻKjOp ey`S] N:p8-l:v 0~^p"'clc׻M*W=&k,-)C ywp8p8N`ȚeB*Tv1;#(?̧ɿ埗}w;kRO?O]gp8C2W v]cԈ:p8pz6Z6(TU4MUU5߼Bž3˽=\1|/Y<8`xXuD$/]98p8p$M _&ph#x< Oɣ#{+ɵ|p8 ZXwp8p6vEX[ՔV #;rED5|߻gqp8GѮ4l*@Omp8p8v ;B_]:ZwW1rWU:'g| _jw~y,vړ88; ]ץR&wݔ&?p8p8Nc/L&NZm[cԺUUm[I""N 'K_ g{zݪr{qWOUS!feW "Bj 9p8p8v;BZMz&$5 !.UU]դD=ܳw=鱻Q|=?7iOp8UM!cLUUiUU|P$[:p8p*MI25ZU@fDo1j ް G=|?nfK|߿ureWN BL&Zuٿm[/^U*^p8p8 ju][ Mh1omVU !$I".)xvs_xF7I^/!BBHf4.@䪪'`s8p8.v䐵!_UN&ZEDWUmۤIDnޟz<ϕ}tőC{]=w8; Ab)VU2,*oF IDAT᧬9p8ctRcbݪ:xp;ssO7k? ].ox/GNǮBDK)c5HYp8p8Q0DUeZI۶b'U mFөR4AUC۶R]$Oysdz`NwIogk'jJ"u]5> ;(p8p8cW2RtZj1sLi~,C}x Ѡ"QE*҇$H˦p+O}/|؉c&UUR%~鲒zpzMmnT-ZNصMwa42>x7{c **AewdM@G˗KIG}[e/ x`PPE!c HLu\.mۜr9P\>(kDXeHgYI)IqP޻JQgVUmrL] \]2pNzTUUiuIzUUI۶p8p8Ǯ`GmjƃFiJށ2~dퟷ28oJ)dMLLZd*fRYDVqDa 5&^/HW (ޭxcˀX{J"߉T%A L1ǁq9:VJq:+yjemLٌA~tŽmjÁ؅ 75nJ)uvJ*ap8p8%xDQ՞BH,}A\4e]߆h%AfB*@Y y ‡kad,?DVw+2o,*ɺ7yY\cJ2ń";F21iby.$ǀaJTw+bL ݙDު|w97˶Q+<[eH_VR׵LB c$R/ˍVCL'tB*]qOAU7p8p8v ;F=zTgY`_!`>.jNYi׃pH twUFR#\@=ߦ΂D*3R|g gUڇ,@DBuȾW]DXŪD1y0^</+Wզ+}禔r> ~PD#e8x'439b>:%S9YY )+2珥v-߉z`77fY* >5.eZ693Lyl \ee>VUX`27 ˅B2[BO7q0 ŮA{N)9p8p8cWc|>d'=ph}}و7Uz7IAA[AF -I?5)ȤTPe#IR%1:&EYZ޿\KIXW/eR2 m,ݜt(Kv]P1~. ba♉AH?eUU$>sre2#2RJY 1o[]ײo>v]7Y>pc2ǵbWUU~>EJ,r1L>&rO˱c/u܇w.i77[0.>z3jn_t\j۶AlMH۶cp8p8cWo6+x Q|S1T@6&j$w6?D$RJ*դL+] L w˃8R}22mcw3K%, LxXQ74A$d{j(9%<,t._.W{r gyq; e96 _(FZ/">߲X9,>,6纮+4X8!s@/^կ8zJp8p8c7ÇkR׵CJI[;_`rAO#o[] ̠d:kc&1t:̈́"L81x0x<+ +)831|,E9 ?ĸΊ`V|PZxmf@2ZJg< k&J%)IUgnD$?(cW._+3mV=s9 ط1,cwV]M&Y,e=F\s]+ J\a6Ҏ\,vJrQQVUUt:A7mW.F r;r3p8p8NviVYU+ujv `,e J^B5_.,Ba ^T]t]%T 00TW&xRヰBظƮH<S[YlG]$K5nz1Z. >Ve1קޔJj D,#&bEG&Fދ:PV<8 VwsNy_C.\) \\f1FeLu-p`iP|'W>h=]p8p8'BH@jM5[3xL$/ԅPLA!H#eU%EzDء\ 8dr~Z`H !r%VxI>c{. ["6] c b7|޲*u'ƮƔ[~t{0/߃ SbaBq_,rz J1)(c~`6-7M&"Bց wcE~ox?]ƺoⅎ'v8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8[Bi-IENDB`lektor-3.1.3/example/content/plugin-use/000077500000000000000000000000001346506225100202175ustar00rootroot00000000000000lektor-3.1.3/example/content/plugin-use/contents.lr000066400000000000000000000005521346506225100224150ustar00rootroot00000000000000_model: page --- title: Plugin Use --- body: Here the lektor-markdown-highlighter is being used for a very serious Python snippet. ```python from sys import exit def say_hi(): print("Hello World!") # Engage in conversation def ignore_everything(): exit(0) # Successful exit if being_looked_at is True: say_hi() else: ignore_everything() ``` lektor-3.1.3/example/content/project-categories/000077500000000000000000000000001346506225100217205ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-1/000077500000000000000000000000001346506225100236735ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-1/contents.lr000066400000000000000000000000361346506225100260660ustar00rootroot00000000000000name: Category 1: Single Fish lektor-3.1.3/example/content/project-categories/category-2/000077500000000000000000000000001346506225100236745ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-2/contents.lr000066400000000000000000000000401346506225100260620ustar00rootroot00000000000000name: Category 2: Pairs of Fish lektor-3.1.3/example/content/project-categories/category-3/000077500000000000000000000000001346506225100236755ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-3/contents.lr000066400000000000000000000000331346506225100260650ustar00rootroot00000000000000name: Category 3: Red Fish lektor-3.1.3/example/content/project-categories/category-4/000077500000000000000000000000001346506225100236765ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-4/contents.lr000066400000000000000000000000341346506225100260670ustar00rootroot00000000000000name: Category 4: Blue Fish lektor-3.1.3/example/content/project-categories/category-5/000077500000000000000000000000001346506225100236775ustar00rootroot00000000000000lektor-3.1.3/example/content/project-categories/category-5/contents.lr000066400000000000000000000000321346506225100260660ustar00rootroot00000000000000name: Category 5: Cthulhu lektor-3.1.3/example/content/project-categories/contents.lr000066400000000000000000000000721346506225100241130ustar00rootroot00000000000000_model: project-categories --- _slug: projects/categories lektor-3.1.3/example/content/projects/000077500000000000000000000000001346506225100177605ustar00rootroot00000000000000lektor-3.1.3/example/content/projects/contents.lr000066400000000000000000000001651346506225100221560ustar00rootroot00000000000000_model: projects --- title: Projects --- body: This is a list of the projects: * Project 1 * Project 2 * Project 3 lektor-3.1.3/example/content/projects/project-a/000077500000000000000000000000001346506225100216445ustar00rootroot00000000000000lektor-3.1.3/example/content/projects/project-a/contents.lr000066400000000000000000000001631346506225100240400ustar00rootroot00000000000000name: Project A --- date: 2017-09-13 --- description: Project A description --- categories: category-1, category-2 lektor-3.1.3/example/content/projects/project-b/000077500000000000000000000000001346506225100216455ustar00rootroot00000000000000lektor-3.1.3/example/content/projects/project-b/contents.lr000066400000000000000000000001771346506225100240460ustar00rootroot00000000000000name: Project B --- categories: category-3, category-4, category-2 --- date: 2017-09-19 --- description: Project B description lektor-3.1.3/example/content/projects/project-c/000077500000000000000000000000001346506225100216465ustar00rootroot00000000000000lektor-3.1.3/example/content/projects/project-c/contents.lr000066400000000000000000000001141346506225100240360ustar00rootroot00000000000000name: Project C --- date: 2017-09-18 --- description: Project C description lektor-3.1.3/example/content/types/000077500000000000000000000000001346506225100172735ustar00rootroot00000000000000lektor-3.1.3/example/content/types/contents.lr000066400000000000000000000013431346506225100214700ustar00rootroot00000000000000body: This page is an example of every built-in field type Lektor has. --- title: Types --- boolean1: yes --- date: 2018-07-04 --- datetime: 2018-07-04 05:02:22 EST --- checkboxes: choice1, choice3 --- float: 2.71828 --- floataddon: 3.14 --- int: 1729 --- intaddon: 137 --- flow: #### text #### text: Text from text only flow block. #### text_and_html #### text: Text from text_and_html flow block. ---- html: html from text_and_html flow block. --- html:

--- markdown: - kg - m - s - A - K - mol - cd --- sort_key: 2 --- strings: string1 string2 string3 --- text: Here is some sample text. lektor-3.1.3/example/flowblocks/000077500000000000000000000000001346506225100166225ustar00rootroot00000000000000lektor-3.1.3/example/flowblocks/text.ini000066400000000000000000000001321346506225100203030ustar00rootroot00000000000000[block] name = Text Block button_label = Text [fields.text] label = Text type = markdown lektor-3.1.3/example/flowblocks/text_and_html.ini000066400000000000000000000002201346506225100221470ustar00rootroot00000000000000[block] name = Text and HTML Block button_label = Text+HTML [fields.text] label = Text type = markdown [fields.html] label = HTML type = html lektor-3.1.3/example/models/000077500000000000000000000000001346506225100157405ustar00rootroot00000000000000lektor-3.1.3/example/models/attachment.ini000066400000000000000000000002121346506225100205640ustar00rootroot00000000000000[model] name = Attachment label = Attachment [fields.description] label = {{ site.get('types') }} type = string default = {{ this.body }}lektor-3.1.3/example/models/blog-post.ini000066400000000000000000000005741346506225100203550ustar00rootroot00000000000000[model] name = Blog Post label = {{ this.title }} hidden = yes [fields.title] label = Title type = string size = large [fields.author] label = Author type = string width = 1/2 [fields.twitter_handle] label = Twitter Handle type = string width = 1/4 addon_label = @ [fields.pub_date] label = Publication date type = date width = 1/4 [fields.body] label = Body type = markdown lektor-3.1.3/example/models/blog.ini000066400000000000000000000002751346506225100173700ustar00rootroot00000000000000[model] name = Blog label = Blog hidden = yes [fields.title] label = Title type = string [children] model = blog-post order_by = -pub_date, title [pagination] enabled = yes per_page = 3 lektor-3.1.3/example/models/page.ini000066400000000000000000000002711346506225100173550ustar00rootroot00000000000000[model] name = Page label = {{ this.title }} [fields.title] label = Title type = string [fields.alt_note] label = Alt Note type = markdown [fields.body] label = Body type = markdown lektor-3.1.3/example/models/project-categories.ini000066400000000000000000000002171346506225100222320ustar00rootroot00000000000000[model] name = Project Categories label = Project Categories hidden = yes protected = yes [children] model = project-category order_by = name lektor-3.1.3/example/models/project-category.ini000066400000000000000000000003071346506225100217220ustar00rootroot00000000000000[model] name = Project Category label = {{ this.name }} hidden = yes [children] replaced_with = site.query('/projects').filter(F.categories.contains(this)) [fields.name] label = Name type = string lektor-3.1.3/example/models/project.ini000066400000000000000000000004551346506225100201130ustar00rootroot00000000000000[model] name = Project label = {{ this.name }} hidden = yes [fields.name] label = Name type = string [fields.date] label = Date type = date [fields.description] label = Description type = markdown [fields.categories] label = Categories type = checkboxes source = site.query('/project-categories') lektor-3.1.3/example/models/projects.ini000066400000000000000000000001711346506225100202710ustar00rootroot00000000000000[model] name = Projects label = Projects hidden = yes protected = yes [children] model = project order_by = -date, name lektor-3.1.3/example/models/types.ini000066400000000000000000000023401346506225100176040ustar00rootroot00000000000000[model] name = Field Types label = {{ this.title }} inherits = page [fields.title] label = Title type = string [fields.boolean1] type = boolean checkbox_label = If true, then some sample text will render. default = false [fields.boolean2] type = boolean checkbox_label = If true, then some sample text will render. default = false [fields.checkboxes] label = Checkboxes type = checkboxes choices = choice1, choice2, choice3, choice4 choice_labels = choice_label1, choice_label2, choice_label3, choice_label4 [fields.date] label = Date type = date [fields.datetime] label = Datetime type = datetime [fields.float] label = Float type = float [fields.floataddon] label = FloatAddon type = float description = Percentage mark added addon_label = % [fields.flow] label = Flow type = flow flow_blocks = text_and_html, text [fields.int] label = Int type = integer [fields.intaddon] label = IntAddon type = integer description = px mark added addon_label = px [fields.html] label = HTML type = html [fields.markdown] label = Markdown type = markdown [fields.sort_key] label = Sort_Key type = sort_key [fields.markdown] label = Markdown type = markdown [fields.strings] label = Strings type = strings [fields.text] label = Text type = text lektor-3.1.3/example/templates/000077500000000000000000000000001346506225100164535ustar00rootroot00000000000000lektor-3.1.3/example/templates/blocks/000077500000000000000000000000001346506225100177305ustar00rootroot00000000000000lektor-3.1.3/example/templates/blocks/text.html000066400000000000000000000000371346506225100216020ustar00rootroot00000000000000{# intentionally left blank #} lektor-3.1.3/example/templates/blocks/text_and_html.html000066400000000000000000000001341346506225100234460ustar00rootroot00000000000000{{ this.html }} - color applied in block's template file. lektor-3.1.3/example/templates/blog-post.html000066400000000000000000000003011346506225100212410ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/blog.html" import render_blog_post %} {% block title %}{{ this.title }}{% endblock %} {% block body %} {{ render_blog_post(this) }} {% endblock %} lektor-3.1.3/example/templates/blog.html000066400000000000000000000006111346506225100202620ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/blog.html" import render_blog_post %} {% from "macros/pagination.html" import render_pagination %} {% block title %}{{ this.title }}{% endblock %} {% block body %} {% for child in this.pagination.items %} {{ render_blog_post(child, from_index=true, blog_post=false) }} {% endfor %} {{ render_pagination(this.pagination) }} {% endblock %} lektor-3.1.3/example/templates/layout.html000066400000000000000000000043651346506225100206660ustar00rootroot00000000000000 {% block title %}Welcome{% endblock %} — Example

Example

{% if this._path == '/' %}
    Available alts: {% for alt in get_alts() %}
  • {{ alt }}
  • {% endfor %}
{{ this.alt_note }} {% endif %} {% block body %}{% endblock %}
Recursive tree navigation of this example site:
© Copyright 2015 by Armin Ronacher.
lektor-3.1.3/example/templates/macros/000077500000000000000000000000001346506225100177375ustar00rootroot00000000000000lektor-3.1.3/example/templates/macros/blog.html000066400000000000000000000030711346506225100215510ustar00rootroot00000000000000{% macro render_blog_post(post, from_index=false, blog_post=true) %}
{% if from_index %}

{{ post.title }}

{% else %}

{{ post.title }}

{% endif %}

written by {% if post.twitter_handle %} {{ post.author or post.twitter_handle }} {% else %} {{ post.author }} {% endif %} on {{ post.pub_date }}

{{ post.body }}
{# display nav links to other blog posts, but hide on parent blog page #} {% if blog_post %} {{ render_blog_sibling_nav(post) }} {% endif %} {% endmacro %} {% macro render_blog_sibling_nav(post, from_index=false) %} {% from "macros/pagination.html" import render_pagination %}

{% set siblings = post.get_siblings() %} {# prev/next are swapped since blog children ordered_by is negative {# nav logic for previous page #} {% if siblings.next_page %} {% set prev = siblings.next_page %} {% endif %} {# nav logic for next page #} {% if siblings.prev_page %} {% set next = siblings.prev_page %} {% endif %} {# previous / nex nav links #} {% if prev %} « Previous {% endif %} {% if prev %} | {% endif %} {{ post.title }} {% if next %} | {% endif %} {% if next %} Next » {% endif %}
{% endmacro %} lektor-3.1.3/example/templates/macros/pagination.html000066400000000000000000000007331346506225100227610ustar00rootroot00000000000000{% macro render_pagination(pagination) %} {% endmacro %} lektor-3.1.3/example/templates/macros/projects.html000066400000000000000000000007311346506225100224570ustar00rootroot00000000000000{% macro render_category_nav(active=none) %} {% endmacro %} {% macro render_project_list(projects) %} {% endmacro %} lektor-3.1.3/example/templates/page.html000066400000000000000000000002321346506225100202520ustar00rootroot00000000000000{% extends "layout.html" %} {% block title %}{{ this.title }}{% endblock %} {% block body %}

{{ this.title }}

{{ this.body }} {% endblock %} lektor-3.1.3/example/templates/project-categories.html000066400000000000000000000003621346506225100231330ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_category_nav %} {% block title %}Project Categories{% endblock %} {% block body %}

Project Categories

{{ render_category_nav(active=none) }} {% endblock %} lektor-3.1.3/example/templates/project-category.html000066400000000000000000000005251346506225100226240ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_category_nav, render_project_list %} {% block title %}Project Category {{ this.name }}{% endblock %} {% block body %}

Project Category {{ this.name }}

{{ render_category_nav(active=this._id) }} {{ render_project_list(this.children) }} {% endblock %} lektor-3.1.3/example/templates/project.html000066400000000000000000000002761346506225100210140ustar00rootroot00000000000000{% extends "layout.html" %} {% block title %}{{ this.name }}{% endblock %} {% block body %}

{{ this.name }}

{{ this.description }}
{% endblock %} lektor-3.1.3/example/templates/projects.html000066400000000000000000000004401346506225100211700ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_project_list, render_category_nav %} {% block title %}Projects{% endblock %} {% block body %}

Projects

{{ render_category_nav(active=none) }} {{ render_project_list(this.children) }} {% endblock %} lektor-3.1.3/example/templates/types.html000066400000000000000000000036131346506225100205100ustar00rootroot00000000000000{% extends "page.html" %} {% block body %} {{ super() }} {# super duper! #}

The title of this page is a string field. ^^

{# bool1 #}

booleans:
{% if this.boolean1 %} Boolean1 caused True text! {% else %} Boolean1 caused False text! {% endif %} Boolean1 = {{ this.boolean1 }} {# bool2 #}
{% if this.boolean2 %} Boolean2 caused True text! {% else %} Boolean2 caused False text! {% endif %} Boolean2 = {{ this.boolean2 }}

{# checkboxes #}

Of the checkboxes 1-4, boxes {% for box in this.checkboxes %} {{ "and " if loop.last }} {{ box }}{{ ", " if not loop.last }} {% endfor %} are checked.

{# dates #}

A date: {{ this.date }}
A datetime: {{ this.datetime }} formatted one way, {{ this.datetime.strftime('%Y-%m-%d %H:%M') }} and another {{ this.datetime.strftime('%m/%d/%Y %H:%M') }}.

{# numbers #}

A float: {{ this.float }} and {{ this.floataddon }}
A int: {{ this.int }} and {{ this.intaddon }}

{# flow blocks #}

These flow blocks are called manually from the main template for this page:
{% for blk in this.flow.blocks %} {{ blk.text }} {% endfor %} and all 'html' blocks with the additional templates in templates/blocks/:
{{ this.flow }}

Raw HTML:
{{ this.html }}

markdown: {{ this.markdown }}

strings: {{ this.strings }}
{% for string in this.strings %} {{ "and " if loop.last }} {{ string }}{{ ", " if not loop.last }} {% endfor %}

Unformatted text: {{ this.text }}

sort_key: {{ this.sort_key }}

{% endblock body %} lektor-3.1.3/example/themes/000077500000000000000000000000001346506225100157425ustar00rootroot00000000000000lektor-3.1.3/example/themes/README.md000066400000000000000000000007261346506225100172260ustar00rootroot00000000000000# About this theme in the example project There are several ways to add themes to a project, including using submodules. This theme is a copy of the lektor-theme-nix at ff71ea6cd2dd8ff83268891f9cdd60b344517064 and is not a repository or submodule. It is not intended to change often, and is a simple copy to keep cloning lektor very simple - without someone having to know how to manage submodules, or have to follow additional instruction steps to populate the theme. lektor-3.1.3/example/themes/lektor-theme-nix/000077500000000000000000000000001346506225100211365ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/LICENSE.md000066400000000000000000000021371346506225100225450ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2016 Matúš Námešný Copyright (c) 2017 Rafael Laverde Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. lektor-3.1.3/example/themes/lektor-theme-nix/README.md000066400000000000000000000024741346506225100224240ustar00rootroot00000000000000# Nix Nix is a simple, minimal theme for [Lektor](https://www.getlektor.com/) based in [Nix hugo theme](https://github.com/LordMathis/hugo-theme-nix) # Configuration Create a `404.html/contents.lr` content file pointing to 404.html, using a none model [see Lektor docs](https://www.getlektor.com/docs/guides/error-pages) Create a `contents.lr` content file pointing to index.html, using a none model Add lektor-disqus-comments plugin an configure it https://github.com/lektor/lektor-disqus-comments#lektor-disqus-comments Add params in the `.lektorproject file` ```ini [theme_settings] githubID = "your_github" gitlabId = "your_gitlab" twitterID = "your_twitter" codepenID = "your_codepen" linkedInID = "your_linkedin" googleplusID = "your_googleplus" facebookID = "your_facebook" instagramID = "your_instagram" telegramID = "your_telegram" name = "your_name" headerusername = "username" headerhostname = "hostname" email = "your_email" about = "info_about_you" profilepicture = "profile_picture_asset_url" googleanalytics = "your_google_analytics_id" slackURL = "https://join.slack.com/..." comments = "yes" ``` Add your proofile picture in the assets folder and set the path in `profilepicture` (e.g. `img/myprofilepicture.png`) ## License Nix is licensed under the [MIT License](LICENSE.md) lektor-3.1.3/example/themes/lektor-theme-nix/assets/000077500000000000000000000000001346506225100224405ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/assets/static/000077500000000000000000000000001346506225100237275ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/assets/static/css/000077500000000000000000000000001346506225100245175ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/assets/static/css/nix.css000066400000000000000000000033701346506225100260320ustar00rootroot00000000000000* { margin: 0; } html { height: 100%; } body { background-color: #fdfdfd; height: 100%; font-family: 'Open Sans', sans-serif; font-size: 1.5em; padding-top: 70px; } #green-terminal { color: #00ff00; } .font-header { font-family: 'Inconsolata', monospace; } .font-paragraph { font-family: 'Open Sans', sans-serif; } nav { font-size: 1.5em; } h1,h2,h3,h4,h5,h6 { font-family: 'Concert One', cursive; } #user-name { font-size: 5em; } .user-description { border-style: solid; border-width: 5px; border-color: #292929; margin-top: 20px; margin-bottom: 1em; padding: 15px; font-size: initial; } .user-profile { padding: 0; } .user-picture { border-style: solid; border-width: 5px; border-color: #292929; margin-top: 20px; } i { margin: 10px 20px 10px 20px; color: #333; } .post-link { float: left; } .post-date { float: right; } .post-header { background-color: #F5F5F5; overflow: hidden; padding: 0 5px 0 5px; } .post-summary, .post-content{ clear: both; } .post-summary { padding: 0 5px 0 5px; } .post-list-footer { padding-bottom: 5px; } #post-list { list-style: none; padding-left: 0; } .post-list-item { margin-top: 20px; border-style: solid; border-width: 0 0 3px 0; border-color: #292929; } .post-comments { padding-top: 10px; border-top-style: solid; } .wrapper { min-height: 100%; margin: 0 auto -50px; } .footer { background-color: #F5F5F5; display: block; width: 100%; padding: 10px; height: 50px; } .push { height: 50px; } .col-centered{ float: none; margin: 0 auto; } div p { text-align: justify; } td { margin: 0 20px 0 20px; } lektor-3.1.3/example/themes/lektor-theme-nix/models/000077500000000000000000000000001346506225100224215ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/models/blog-post.ini000066400000000000000000000005741346506225100250360ustar00rootroot00000000000000[model] name = Blog Post label = {{ this.title }} hidden = yes [fields.title] label = Title type = string size = large [fields.author] label = Author type = string width = 1/2 [fields.twitter_handle] label = Twitter Handle type = string width = 1/4 addon_label = @ [fields.pub_date] label = Publication date type = date width = 1/4 [fields.body] label = Body type = markdown lektor-3.1.3/example/themes/lektor-theme-nix/models/blog.ini000066400000000000000000000002761346506225100240520ustar00rootroot00000000000000[model] name = Blog label = Blog hidden = yes [fields.title] label = Title type = string [children] model = blog-post order_by = -pub_date, title [pagination] enabled = yes per_page = 10 lektor-3.1.3/example/themes/lektor-theme-nix/models/page.ini000066400000000000000000000002051346506225100240330ustar00rootroot00000000000000[model] name = Page label = {{ this.title }} [fields.title] label = Title type = string [fields.body] label = Body type = markdown lektor-3.1.3/example/themes/lektor-theme-nix/models/showcase-item.ini000066400000000000000000000005021346506225100256670ustar00rootroot00000000000000[model] name = Site label = {{ this.name }} hidden = yes [fields.name] label = Name type = string size = large [fields.url] label = URL type = url width = 1/2 [fields.cover_image] label = Cover Image type = select source = record.attachments.images width = 1/2 [fields.description] label = Description type = markdown lektor-3.1.3/example/themes/lektor-theme-nix/models/showcase.ini000066400000000000000000000002241346506225100247340ustar00rootroot00000000000000[model] name = Showcase label = Showcase hidden = yes [fields.title] label = Title type = string [children] model = showcase-item order_by = name lektor-3.1.3/example/themes/lektor-theme-nix/templates/000077500000000000000000000000001346506225100231345ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/templates/404.html000066400000000000000000000012211346506225100243250ustar00rootroot00000000000000 {{ config.PROJECT.name }} {% include "partials/head.html" %} {% include "partials/header.html" %}
{% if this.title %}

{{ this.title }}

{% else %}

Uhm... WHAT?

{% endif %}
{% if this.body %} {{ this.body }} {% else %}

Looks like you're lost. This page doesn't exist.

{% endif %}
{% include "partials/footer.html" %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/blog-post.html000066400000000000000000000010251346506225100257260ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %} {% with post = this %}

{{ post.title }}

{{ post.body }}
{% if config.THEME_SETTINGS.comments == 'yes' %}
{{ render_disqus_comments() }}
{% endif %} {% endwith %} {% endblock content %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/blog.html000066400000000000000000000016371346506225100247540ustar00rootroot00000000000000{% from "macros/pagination.html" import render_pagination %} {% extends "layout.html" %} {% block content %}

{{ this.title }}

    {% for post in this.pagination.items %}
  • {{ post.title }}

    {{ post.summary }}

    Read More
  • {% endfor %}
{{ render_pagination(this.pagination) }} {% endblock content %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/index.html000066400000000000000000000016141346506225100251330ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %} {% if config.THEME_SETTINGS.profilepicture %}
profile-picture
{% endif %}
{% include "partials/social.html" %}

{{ config.THEME_SETTINGS.about }}

{% endblock content %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/layout.html000066400000000000000000000005761346506225100253470ustar00rootroot00000000000000 {{ this.title }} · {{ config.PROJECT.name }} {% include "partials/head.html" %} {% include "partials/header.html" %}
{% block content %} {% endblock%}
{% include "partials/footer.html" %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/macros/000077500000000000000000000000001346506225100244205ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/templates/macros/pagination.html000066400000000000000000000023651346506225100274450ustar00rootroot00000000000000{% macro render_pagination(pagination) %} {% if pagination.pages > 1 %}
    {% with first = pagination.for_page(0) %}
  • {% endwith %}
  • {% for page in this.pagination.pages %}
  • {{ page }}
  • {% endfor %}
  • {% with last = pagination.for_page(pagination.pages) %}
  • {% endwith %}
{% endif %} {% endmacro %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/page.html000066400000000000000000000002571346506225100247420ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

{{ this.title }}

{{ this.body }}
{% endblock content %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/partials/000077500000000000000000000000001346506225100247535ustar00rootroot00000000000000lektor-3.1.3/example/themes/lektor-theme-nix/templates/partials/footer.html000066400000000000000000000005261346506225100271420ustar00rootroot00000000000000

Copyright © 2017 {{ config.THEME_SETTINGS.name }} - Powered by Lektor and Nix theme.

lektor-3.1.3/example/themes/lektor-theme-nix/templates/partials/head.html000066400000000000000000000034161346506225100265460ustar00rootroot00000000000000 {% if config.THEME_SETTINGS.googleanalytics %} {% endif %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/partials/header.html000066400000000000000000000023601346506225100270720ustar00rootroot00000000000000
lektor-3.1.3/example/themes/lektor-theme-nix/templates/partials/social.html000066400000000000000000000041571346506225100271220ustar00rootroot00000000000000{% if config.THEME_SETTINGS.slackURL %} {% endif %} {% if config.THEME_SETTINGS.twitterID %} {% endif %} {% if config.THEME_SETTINGS.googleplusID %} {% endif %} {% if config.THEME_SETTINGS.facebookID %} {% endif %} {% if config.THEME_SETTINGS.githubID %} {% endif %} {% if config.THEME_SETTINGS.gitlabId %} {% endif %} {% if config.THEME_SETTINGS.codepenID %} {% endif %} {% if config.THEME_SETTINGS.linkedInID %} {% endif %} {% if config.THEME_SETTINGS.instagramID %} {% endif %} {% if config.THEME_SETTINGS.telegramID %} {% endif %} {% if config.THEME_SETTINGS.email %} {% endif %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/showcase-item.html000066400000000000000000000002651346506225100265750ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

{{ this.name }}

{{ this.description }}
{% endblock content %} lektor-3.1.3/example/themes/lektor-theme-nix/templates/showcase.html000066400000000000000000000012701346506225100256360ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

Talks

{{ this.intro }}

{% endblock %} lektor-3.1.3/example/themes/lektor-theme-nix/theme.ini000066400000000000000000000011161346506225100227400ustar00rootroot00000000000000name = "Nix" license = "MIT" licenselink = "https://github.com/rlaverde/lektor-theme-nix/blob/master/LICENSE.md" description = "Simple, minimal theme for Lektor " homepage = "https://github.com/rlaverde/lektor-theme-nix" tags = ["simple", "minimal", "unix", "terminal", "blog"] features = ["blog"] lektor_required_version = 3.1 [author] name = "rlaverde" homepage = "http://rlaverde.github.io/" [original] author = "Matúš Námešný" homepage = "https://namesny.com" repo = "https://github.com/LordMathis/hugo-theme-nix" [packages] lektor-disqus-comments = 0.2 lektor-3.1.3/gui/000077500000000000000000000000001346506225100136065ustar00rootroot00000000000000lektor-3.1.3/gui/.gitignore000066400000000000000000000000151346506225100155720ustar00rootroot00000000000000node_modules lektor-3.1.3/gui/Makefile000066400000000000000000000105201346506225100152440ustar00rootroot00000000000000OSX_ARCH=x64 BUILD_DIR=build OSX_BUNDLE_BASE=$(BUILD_DIR)/Lektor-darwin-$(OSX_ARCH) OSX_BUNDLE=$(OSX_BUNDLE_BASE)/Lektor.app OSX_BUNDLE_RES=$(OSX_BUNDLE)/Contents/Resources # The identity to use for code signing CODESIGN_IDENTITY='Developer ID Application' CODESIGN_FLAGS=--force --verbose --strict --sign $(CODESIGN_IDENTITY) --preserve-metadata=i,e,req --timestamp=none REBUILD_CMD=./node_modules/.bin/electron-rebuild -w runas npm-install: cd ../lektor/admin/; npm install npm install $(REBUILD_CMD) run-only: ./bin/run run: npm-install run-only $(BUILD_DIR)/Python.framework: ./bin/compile-python-framework build-wheels: $(BUILD_DIR)/Python.framework ./bin/build-wheels build/Lektor.icns: ./bin/make-mac-icons build/ProjectFile.icns: ./bin/make-mac-icons icons: build/Lektor.icns build/ProjectFile.icns build/imagemagick/convert: ./bin/compile-imagemagick osx-bundle: build/imagemagick/convert icons build-wheels cd ../lektor/admin; npm install npm install npm install --production $(REBUILD_CMD) cd static; ../node_modules/.bin/webpack mkdir -p $(OSX_BUNDLE_BASE) && rm -rf $(OSX_BUNDLE) cp -RH node_modules/electron-prebuilt/dist/Electron.app $(OSX_BUNDLE) mv $(OSX_BUNDLE)/Contents/Frameworks/{Electron,Lektor}\ Helper\ EH.app mv $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper\ EH.app/Contents/MacOS/{Electron,Lektor}\ Helper\ EH sed -i '' s/Electron/Lektor/ $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper\ EH.app/Contents/Info.plist mv $(OSX_BUNDLE)/Contents/Frameworks/{Electron,Lektor}\ Helper\ NP.app mv $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper\ NP.app/Contents/MacOS/{Electron,Lektor}\ Helper\ NP sed -i '' s/Electron/Lektor/ $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper\ NP.app/Contents/Info.plist mv $(OSX_BUNDLE)/Contents/Frameworks/{Electron,Lektor}\ Helper.app mv $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper.app/Contents/MacOS/{Electron,Lektor}\ Helper sed -i '' s/Electron/Lektor/ $(OSX_BUNDLE)/Contents/Frameworks/Lektor\ Helper.app/Contents/Info.plist mkdir -p $(OSX_BUNDLE_RES)/app/static cp -R package.json $(OSX_BUNDLE_RES)/app cp -R static/{images,gen,index.html} $(OSX_BUNDLE_RES)/app/static cp resources/Lektor-Info.plist $(OSX_BUNDLE)/Contents/Info.plist cp build/Lektor.icns $(OSX_BUNDLE_RES) cp build/ProjectFile.icns $(OSX_BUNDLE_RES) cp build/File.icns $(OSX_BUNDLE_RES) mkdir -p $(OSX_BUNDLE_RES)/local/bin cp build/imagemagick/convert $(OSX_BUNDLE_RES)/local/bin cp resources/lektor-mac-proxy $(OSX_BUNDLE_RES)/local/bin/lektor-proxy cp resources/lektor $(OSX_BUNDLE_RES)/lektor rm $(OSX_BUNDLE_RES)/atom.icns rm -rf $(OSX_BUNDLE_RES)/default_app # Manually copy over native modules we depend on mkdir -p $(OSX_BUNDLE_RES)/app/node_modules cp -R node_modules/runas $(OSX_BUNDLE_RES)/app/node_modules/runas cp -R node_modules/nan $(OSX_BUNDLE_RES)/app/node_modules/nan cp -R $(BUILD_DIR)/Python.framework $(OSX_BUNDLE)/Contents/Frameworks/Python.framework rm $(OSX_BUNDLE)/Contents/Frameworks/Python.framework/Versions/2.7/bin/python{w,w2,w2.7} ./bin/make-python-framework-relocatable $(OSX_BUNDLE)/Contents/Frameworks/Python.framework ./bin/install-wheels $(OSX_BUNDLE)/Contents/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages find $(OSX_BUNDLE)/Contents -name '.DS_Store' -exec rm {} \; osx-signed-bundle: osx-bundle find $(OSX_BUNDLE) -name '*.dylib' -exec codesign $(CODESIGN_FLAGS) {} \; find $(OSX_BUNDLE) -name '*.so' -exec codesign $(CODESIGN_FLAGS) {} \; find $(OSX_BUNDLE) -type f -perm +0111 -exec codesign $(CODESIGN_FLAGS) {} \; codesign --force --verbose --sign $(CODESIGN_IDENTITY) $(OSX_BUNDLE)/Contents/Frameworks/Python.framework/Versions/Current/Resources/Python.app find $(OSX_BUNDLE) -name '*.app' -exec codesign $(CODESIGN_FLAGS) {} \; find $(OSX_BUNDLE) -name '*.framework' -exec codesign $(CODESIGN_FLAGS) {} \; codesign $(CODESIGN_FLAGS) $(OSX_BUNDLE)/Contents/MacOS/Electron codesign $(CODESIGN_FLAGS) $(OSX_BUNDLE_RES)/local/bin/lektor-proxy codesign $(CODESIGN_FLAGS) $(OSX_BUNDLE) codesign --verify --verbose --deep $(OSX_BUNDLE) node_modules/.bin/appdmg: npm install appdmg osx-dmg-only: rm -rf $(OSX_BUNDLE_BASE)/Lektor.dmg ./node_modules/.bin/appdmg dmg-config.json $(OSX_BUNDLE_BASE)/Lektor.dmg osx-dmg: node_modules/.bin/appdmg osx-signed-bundle osx-dmg-only .PHONY: npm-install run-only run build-wheels icons osx-bundle osx-dmg-only osx-dmg lektor-3.1.3/gui/bin/000077500000000000000000000000001346506225100143565ustar00rootroot00000000000000lektor-3.1.3/gui/bin/build-wheels000077500000000000000000000005441346506225100166730ustar00rootroot00000000000000#!/bin/bash HERE="$(cd "$(dirname "$0")"; pwd)" BASE="$HERE/.." OUT="$(cd "$BASE/build"; pwd)" TMP="$OUT/tmp" rm -rf "$TMP" "$OUT/wheels" VENV="$TMP/venv" virtualenv "$VENV" -p "$OUT/Python.framework/Versions/Current/bin/python" . "$TMP/venv/bin/activate" pip install --upgrade pip pip install wheel pip wheel "$BASE/.." -w "$OUT/wheels" rm -rf "$TMP" lektor-3.1.3/gui/bin/compile-imagemagick000077500000000000000000000033451346506225100201750ustar00rootroot00000000000000#!/bin/bash set -e HERE="$(cd "$(dirname "$0")"; pwd)" BASE="$HERE/.." BUILD="$BASE/build/imagemagick" TEMP=$(mktemp -d) PREFIX="$TEMP/out" cd "$TEMP" # The minimum version of OSX we want to compile for export MACOSX_DEPLOYMENT_TARGET=10.9 # Download all the things wget "http://ftp.nluug.nl/ImageMagick/ImageMagick.tar.gz" -O imagemagick.tar.gz mkdir imagemagick (cd imagemagick; tar --strip-components=1 -xzf "../imagemagick.tar.gz") wget "http://www.ijg.org/files/jpegsrc.v7.tar.gz" -O libjpeg.tar.gz mkdir libjpeg (cd libjpeg; tar --strip-components=1 -xzf "../libjpeg.tar.gz") wget "http://downloads.sourceforge.net/project/libpng/libpng16/1.6.21/libpng-1.6.21.tar.gz" -O libpng.tar.gz mkdir libpng (cd libpng; tar --strip-components=1 -xzf "../libpng.tar.gz") # Compile libpng (cd libpng; ./configure --prefix="$PREFIX"; make && make install) # Compile libjpeg (cd libjpeg; ./configure --prefix="$PREFIX" --enable-shared; make && make install) # Compile imagemagick cd imagemagick autoconf ./configure \ --prefix=/opt/local \ --without-xml \ --without-threads \ --without-x \ --without-pango \ --without-modules \ --without-freetype \ --without-perl \ --without-gvc \ --without-fontconfig \ --without-magick-plus-plus \ --without-tiff \ --without-lzma \ --enable-delegate-build \ --enable-static \ --enable-shared=no \ --disable-dependency-tracking \ --prefix="$PREFIX" \ CFLAGS="-I$PREFIX/include" \ CPPFLAGS="-I$PREFIX/include" \ LDFLAGS="-L$PREFIX/lib"; # Unbreak the makefile sed -i '' -E 's/^LDFLAGS = /LDFLAGS = -all-static /' Makefile make make install # Copy out the only executable we care about: convert mkdir -p "$BUILD" cp "$PREFIX/bin/convert" "$BUILD" # Clean up cd "$HERE" rm -rf "$TEMP" lektor-3.1.3/gui/bin/compile-python-framework000077500000000000000000000047031346506225100212520ustar00rootroot00000000000000#!/bin/bash set -e HERE="$(cd "$(dirname "$0")"; pwd)" BASE="$HERE/.." PYTHON_VERSION="2.7.10" PYTHON_VERSION_MAJOR="${PYTHON_VERSION:0:3}" ARCHIVE="Python-${PYTHON_VERSION}.tgz" PYTHON_DOWNLOAD_URL="https://www.python.org/ftp/python/$PYTHON_VERSION/$ARCHIVE" OUT="$BASE/build" TEMP="$BASE/build/tmp" TEMP_OUT="$TEMP/out" FRAMEWORK="$TEMP/out/Python.framework" USELESS_LIBRARIES="ensurepip bsddb config idlelib lib-tk lib2to3 test lib-dynload/_Qt.so lib-dynload/_tkinter.so" rm -rf "$TEMP" # Resolve temp out so that we have no funny business later. We need to make sure # path is reproducible at a later point so that we can rewrite the paths with # install_name_tool. See make-python-framework-relocatable:ORIGINAL_FRAMEWORK_PATH # for more information. mkdir -p "$TEMP_OUT" TEMP_OUT="$(cd $TEMP_OUT; pwd)" cd "$TEMP" # Compile settings export MACOSX_DEPLOYMENT_TARGET=10.9 # Download archive and unpack wget "$PYTHON_DOWNLOAD_URL" tar --strip-components=1 -xzf "$ARCHIVE" # Fix up setup.py for ssl python -c ' s = open("setup.py").read() s = s.replace("/usr/local/ssl", "/usr/local/opt/openssl") open("setup.py", "w").write(s) ' patch -p1 < "$BASE/resources/setup.py.patch" # If you change this stuff here, you also need to change the corresponding # bits in make-python-framework-relocatable export CFLAGS="-I/usr/local/opt/openssl/include" export CPPFLAGS="-I/usr/local/opt/openssl/include" export LDFLAGS="-L/usr/local/opt/openssl/lib" export LD_LIBRARY_PATH="/usr/local/opt/openssl/lib" # Compile ./configure \ --prefix="$TEMP_OUT" \ --enable-framework="$TEMP_OUT" \ --without-ensurepip \ --without-gcc \ CFLAGS=$CFLAGS \ CPPFLAGS=$CPPFLAGS \ LDFLAGS=$LDFLAGS \ LD_LIBRARY_PATH=$LD_LIBRARY_PATH \ MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET make make frameworkinstall # Install sitecustomize cp \ "$BASE/resources/sitecustomize.py" \ "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/lib/python$PYTHON_VERSION_MAJOR" # Delete pyc files find "$FRAMEWORK" -name '*.py[co]' -exec rm '{}' \; # Delete stupid libraries for lib in $USELESS_LIBRARIES; do rm -rf "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/lib/python$PYTHON_VERSION_MAJOR/$USELESS_LIBRARIES" done # Delete other unwanted things rm -rf "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/lib/pkgconfig" rm -rf "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/Mac" rm -rf "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/share" # Move framework out mkdir -p "$OUT" mv "$FRAMEWORK" "$OUT" # Clean up rm -rf "$TEMP" lektor-3.1.3/gui/bin/install-wheels000077500000000000000000000002461346506225100172410ustar00rootroot00000000000000#!/bin/bash HERE="$(cd "$(dirname "$0")"; pwd)" BASE="$HERE/.." OUT="$BASE/build" WHEELS="$OUT/wheels" for wheel in $WHEELS/*.whl; do unzip "$wheel" -d "$1" done lektor-3.1.3/gui/bin/make-mac-icons000077500000000000000000000117631346506225100171000ustar00rootroot00000000000000#!/usr/bin/env python import re import os from subprocess import Popen HERE = os.path.abspath(os.path.dirname(__file__)) BASE = os.path.dirname(HERE) OUT = os.path.join(BASE, 'build') TMP = os.path.join(OUT, 'tmp') GENERIC_ICON = ( '/System/Library/CoreServices/CoreTypes.bundle/Contents/' 'Resources/GenericDocumentIcon.icns' ) GENERIC_VOL_ICON = ( '/System/Library/Extensions/IOStorageFamily.kext/Contents/' 'Resources/Removable.icns' ) FONT = '/System/Library/Fonts/SFNSText-Bold.otf' DOC_ICON = os.path.join(TMP, 'GenericDocumentIcon.iconset') REMOVABLE_DISK_ICON = os.path.join(TMP, 'Removable.iconset') APP_ICON = os.path.join(BASE, 'resources', 'Icon.iconset') APP_ICNS = os.path.join(BASE, 'build', 'Lektor.icns') FT_ICON = os.path.join(TMP, 'File.iconset') FT_ICNS = os.path.join(BASE, 'build', 'File.icns') FTP_ICON = os.path.join(TMP, 'ProjectFile.iconset') FTP_ICNS = os.path.join(BASE, 'build', 'ProjectFile.icns') VOL_ICON = os.path.join(TMP, 'Volume.iconset') VOL_ICNS = os.path.join(BASE, 'build', 'Volume.icns') for _path in TMP, FT_ICON, FTP_ICON, VOL_ICON: try: os.makedirs(_path) except OSError: pass def find_blend_source(target_size, retina): size = (target_size[0] / 2, target_size[1] / 2) if retina: fn = os.path.join(APP_ICON, 'icon_%dx%d@2x.png' % (size[0] / 2, size[1] / 2)) if os.path.isfile(fn): return fn fn = os.path.join(APP_ICON, 'icon_%dx%d.png' % size) if os.path.isfile(fn): return fn fn = os.path.join(APP_ICON, 'icon_%dx%d.png' % target_size) if os.path.isfile(fn): return fn Popen(['iconutil', '--convert', 'iconset', '--output', DOC_ICON, GENERIC_ICON]).wait() Popen(['iconutil', '--convert', 'iconset', '--output', REMOVABLE_DISK_ICON, GENERIC_VOL_ICON]).wait() def scale_coords(coords, size): return [ ((a[0] * size[0], a[1] * size[1]), (b[0] * size[0], b[1] * size[1])) for a, b in coords ] def make_icon(path, text=None, alpha=1.0, offset_func=None, resize_func=None, perspective=None, base_icon=DOC_ICON): if offset_func is None: offset_func = lambda s: (s[0] / 4, s[1] / 4) if resize_func is None: resize_func = lambda s: (s[0] / 2, s[1] / 2) for filename in os.listdir(base_icon): if not filename.endswith('.png'): continue size = tuple(map(int, re.search('(\d+)x(\d+)', filename).groups())) actual_size = size retina = False if '@2x' in filename: actual_size = tuple(x * 2 for x in size) retina = True blend_source = find_blend_source(actual_size, retina) if blend_source is None: print('missing source for {} {}'.format(size, retina)) continue offset = offset_func(actual_size) resize_to = resize_func(actual_size) commands = [ os.path.join(base_icon, filename), '(', blend_source, '-resize', '%dx%d' % resize_to, '-sharpen', actual_size[1] <= 16 and '0x2' or '0x0', '-channel', 'A', '-evaluate', 'multiply', str(alpha), ] if perspective is not None: commands.extend([ '-virtual-pixel', 'transparent', '+distort', 'Perspective', ' '.join('%s,%s %s,%s' % (tup[0] + tup[1]) for tup in scale_coords(perspective, resize_to)), ]) commands.extend([ '-geometry', '+%d+%d' % offset, ')', '-composite', ]) if size[1] >= 128 and text is not None: text_block = (actual_size[0] / 5 * 3, actual_size[1] / 7) offset_text = actual_size[1] / 3 commands.extend(( '(', '-background', 'transparent', '-size', '%dx%d' % text_block, '-geometry', '+0+%d' % offset_text, '-gravity', 'center', '-font', FONT, '-fill', '#636363', 'label:' + text, ')', '-composite' )) commands.append(os.path.join(path, filename)) Popen(['convert'] + commands).wait() make_icon(FT_ICON, 'TEXT', alpha=0.65) make_icon(FTP_ICON, 'PROJECT') make_icon(VOL_ICON, base_icon=REMOVABLE_DISK_ICON, offset_func=lambda s: (int(s[0] * 0.1), int(s[0] * 0.07)), resize_func=lambda s: (int(s[0] * 0.8), int(s[0] * 0.8)), perspective=[((0.0, 0.0), (0.2, 0.3)), ((1.0, 0.0), (0.8, 0.3)), ((0.0, 1.0), (0.0, 1.0)), ((1.0, 1.0), (1.0, 1.0))]) Popen(['iconutil', '--convert', 'icns', '--output', FT_ICNS, FT_ICON]).wait() Popen(['iconutil', '--convert', 'icns', '--output', FTP_ICNS, FTP_ICON]).wait() Popen(['iconutil', '--convert', 'icns', '--output', APP_ICNS, APP_ICON]).wait() Popen(['iconutil', '--convert', 'icns', '--output', VOL_ICNS, VOL_ICON]).wait() lektor-3.1.3/gui/bin/make-openssl-relocatable000077500000000000000000000031401346506225100211530ustar00rootroot00000000000000#!/usr/bin/env python import os import re import sys import stat from subprocess import Popen, PIPE devnull = open('/dev/null', 'a') here = os.path.abspath(os.path.dirname(__file__)) lib_dir = os.path.abspath(sys.argv[1]) py_version = '%s.%s' % sys.version_info[:2] bad_prefix = '/usr/local' good_prefix = '@rpath/lib/python%s/lib-dynload/' % py_version def find_bad_lib_references(filename): c = Popen(['otool', '-L', filename], stdout=PIPE) lines = c.communicate()[0].splitlines() rv = [] for line in lines: match = re.match('^\t(.*?\.(?:dylib|so))\s+\(', line) if match is not None: lib = match.group(1) if lib.startswith(bad_prefix + '/') and '/openssl' in lib: rv.append(lib) return rv def rewrite_bad_libs(base): libs = find_bad_lib_references(base) rv = set() if not libs: return rv os.chmod(base, os.stat(base).st_mode | stat.S_IWRITE) for bad_lib in libs: good_lib = good_prefix + os.path.basename(bad_lib) Popen(['install_name_tool', '-change', bad_lib, good_lib, base]).wait() rv.add(bad_lib) good_lib = '@rpath/' + bad_lib[len(bad_prefix) + 1:] Popen(['install_name_tool', '-id', good_prefix + os.path.basename(base), base]).wait() return rv def rewrite_dylibs(): for filename in os.listdir(os.path.join(lib_dir)): if not filename.endswith(('.dylib', '.so')): continue filename = os.path.join(lib_dir, filename) if os.path.islink(filename): continue rewrite_bad_libs(filename) rewrite_dylibs() lektor-3.1.3/gui/bin/make-python-framework-relocatable000077500000000000000000000034361346506225100230140ustar00rootroot00000000000000#!/bin/bash set -e HERE="$(cd "$(dirname "$0")"; pwd)" FRAMEWORK="$(cd "$1"; pwd)" PYTHON_VERSION_MAJOR=$(readlink "$FRAMEWORK/Versions/Current") # When rewriting the paths we need to reference the original framework # location as it was used for building. ORIGINAL_FRAMEWORK_PATH="$(cd "$HERE/../build"; pwd)/tmp/out/Python.framework" install_name_tool \ -change "$ORIGINAL_FRAMEWORK_PATH/Versions/$PYTHON_VERSION_MAJOR/Python" \ @rpath/Python \ "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/bin/python" install_name_tool \ -add_rpath @executable_path/../ \ "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/bin/python" install_name_tool \ -change "$ORIGINAL_FRAMEWORK_PATH/Versions/$PYTHON_VERSION_MAJOR/Python" \ @rpath/Python \ "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/Resources/Python.app/Contents/MacOS/Python" install_name_tool \ -add_rpath @executable_path/../../../../ \ "$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/Resources/Python.app/Contents/MacOS/Python" chmod u+w "$FRAMEWORK/Python" otool -D "$FRAMEWORK/Python" install_name_tool -id @rpath/Python "$FRAMEWORK/Python" SITE="$FRAMEWORK/Versions/$PYTHON_VERSION_MAJOR/lib/python$PYTHON_VERSION_MAJOR" DYLD_SITE="$SITE/lib-dynload" # At this point we need to rewrite SSL to work the way we want. cp /usr/local/opt/openssl/lib/*.dylib $DYLD_SITE "$HERE/make-openssl-relocatable" "$DYLD_SITE" # Trash unwanted things. This should be more specific but honestly, this is just # for saving space so every little bit helps. rm -rf "$SITE/plat-mac" rm -rf "$SITE/lib2to3" rm -rf "$SITE/lib-tk" rm -rf "$SITE/idlelib" rm -rf "$SITE/ensurepip" rm -rf "$SITE/bsddb" rm -rf "$SITE/lib-dynload/_Qt.so" rm -rf "$SITE/lib-dynload/_CF.so" rm -rf "$SITE/lib-dynload/_File.so" for testdir in $(find "$SITE" -type d -name 'test'); do rm -rf "$testdir" done lektor-3.1.3/gui/bin/run000077500000000000000000000020451346506225100151110ustar00rootroot00000000000000#!/usr/bin/env python import os from subprocess import Popen base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) bin = os.path.join(base, 'node_modules', '.bin') app_path = os.path.join(base, 'static') shell = os.name == 'nt' def main(): Popen([os.path.join(bin, 'webpack')], cwd=app_path, shell=True).wait() webpack = electron = None try: webpack = Popen([os.path.join(bin, 'webpack'), '--watch'], cwd=app_path, shell=shell) try: electron = Popen([os.path.join(bin, 'electron'), '.'], cwd=base, shell=shell) electron.wait() except KeyboardInterrupt: try: if electron is not None: electron.kill() except OSError: pass finally: for proc in webpack, electron: if proc is not None: try: proc.kill() except OSError: pass if __name__ == '__main__': main() lektor-3.1.3/gui/dmg-config.json000066400000000000000000000011141346506225100165100ustar00rootroot00000000000000{ "title": "Lektor", "icon": "build/Volume.icns", "background": "resources/dmg-background.jpg", "icon-size": 128, "contents": [ { "x": 230, "y": 220, "type": "file", "path": "build/Lektor-darwin-x64/Lektor.app" }, { "x": 460, "y": 220, "type": "link", "path": "/Applications" }, { "x": 50, "y": 400, "type": "position", "path": ".background" }, { "x": 1000, "y": 400, "type": "position", "path": ".DS_Store" }, { "x": 1150, "y": 400, "type": "position", "path": ".Trashes" }, { "x": 1200, "y": 400, "type": "position", "path": ".VolumeIcon.icns" } ] } lektor-3.1.3/gui/package.json000066400000000000000000000022271346506225100160770ustar00rootroot00000000000000{ "name": "lektor-gui", "version": "1.0.0", "description": "Lektor graphical user interface", "private": true, "main": "static/gen/host.js", "scripts": {}, "devDependencies": { "electron-prebuilt": "0.34.3", "electron-rebuild": "^1.0.2", "bootstrap": "~3.3.0", "css-loader": "^0.9.1", "file-loader": "^0.8.1", "url-loader": "^0.5.6", "babel": "^6.1.0", "babel-core": "^6.1.0", "babel-loader": "^6.1.0", "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-plugin-transform-object-rest-spread": "^6.1.0", "babel-plugin-transform-runtime": "^6.1.0", "babel-preset-es2015": "^6.1.0", "babel-preset-react": "^6.1.0", "babel-preset-stage-0": "^6.1.0", "babel-register": "^6.1.0", "extract-text-webpack-plugin": "^0.3.8", "webpack-target-electron-renderer": "^0.1.1", "jquery": "^2.1.3", "jsx-loader": "^0.12.2", "less": "^1.7.5", "less-loader": "^0.7.8", "json-loader": "^0.5.2", "react": "^15.3.0", "react-dom": "^15.3.0", "style-loader": "^0.8.3", "webpack": "^1.12.2", "history": "^1.13.0" }, "dependencies": { "runas": "^3.1.1" } } lektor-3.1.3/gui/resources/000077500000000000000000000000001346506225100156205ustar00rootroot00000000000000lektor-3.1.3/gui/resources/Icon.iconset/000077500000000000000000000000001346506225100201535ustar00rootroot00000000000000lektor-3.1.3/gui/resources/Icon.iconset/icon_128x128.png000066400000000000000000000226741346506225100226410ustar00rootroot00000000000000PNG  IHDR>aiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATx}yxյo2AB IRjA@Ыꭔ{+ϡV:hXũ$d0e y~x霜~9{kk c01a c 4,<Ȇ@f )eu9c 13̥(T{}fÆ d ?o83`̜"Y .3#55ՉMV0vH'NjUjxoa槞za~<70d^ _J95qdHMH%4c3C*҉== ?zF8q:8p3fg~sk!aR 0B]4'Edip'bS{T ftɓ=M̏?gC^/6ɼ̏08ҘEӻ\JdWufYwW&pRJTUU9}_u[{ I)7bE+YB**5*]]h=׀3z P;w@0C@ `Q-l4_mS0{ oa8<=Ht@JbӦM[bP୿G$0 Y0͢]_Wg'™#8 gj$"B0b\F$"xhEM%,@<57on V[md3E}fffF+ѵ玖6|W\ (:, c<. &UUff.p?ҁ3l%f, R5&NM܃E*3s 8_S8[vRuJB (n1 0UU01A;UR_|EN83oa%Y?iugh<}ދK9ls {Ϯx9 Po0''GhkĻ#ʐ Ee)MtMg|vf%"03rrrԎG* hnHZ BT"G* TD/]Sgqڵ;BDW7 8y>vߌ ʳE BgHhjj"%iӦm3ߨKVT,gMnn.tx?D^@g[@%ѶOD&>iƏMR",U>vMoD`rss bAD ߯)(`7 L JFM2ЏO}k +/o1s0KFNNyI=V=mhpM^ z`!իWyۧ/TF0d43-7aMw^w)hi|09@Dm^eޮ|fl'Й@;yՇ{;^# (fNńLDF#"6ca EMQ/?Xӵ~SD^3$l4`T`.߸q〃Df6>R!;; BH)gdßQg@9aʢkpܫ0"ldaf6k~b#1= Y@ee9G0!r/0@ hH?m0!.=٣~puȼ2O7EPEky5G!tR jz Dhy!z%GANA"u?@DuDH߰Wd2x5H0%7$߿i~fP0;zd+Q:C&$LID `QVs13Op?qk7+DaٖG= -F(늮f4WAWPe-wDrݺiK*GB06L-mO;=nڗ0$R.Ͷ"o): ()L0ABhm{;vn'8:6a^13h=ɗdc+#*!&\<ߛ?>v43\B=F D귿pO d-Cp%"C 7᛿I>%?^/Dx$sӗηܑƪqlNJ`Avov(,z#w/#DaE)pRRRt&#~u; 0Kӽ}?ODU>=?pҔqhV/C J6l٩Bom\~õH~v7K|U~Ihw m6"+A0ľ9K FGKBѽ>2/(h>!\Ag;@\iDah@VVg 02ңJC8ih"~@5"rgɨ.(Ž {H\~:/41`v 5;OCO` ;-~k);C3ß\0TcH%aK\[zt_*t/_"lJ&f0$A˔y*ҽ@U|u/}b s*ZAKk>?uM")Y8g5qnP秜sVį/6 T? @a*͞=Iq`ߩpͦ gjT3aj |L "Bg' %,dG㙼a6$@0ԯN'lE=۶m  YY i 0&%cR,8{گ)NbNl"BzzȾisN^!x87&b _\iKNC;6@Ղa>M 1)/UEWvBw!L+0F=̌ࠁ-IoiB3MAva*znN)]Q$*Tk*^@EQE-f NF=e(3pۊ+z~^l EХðTaTڷU/vi Rs3{OD}%}2p^\m w < eThRXg=iGn e K_-\碊/ppǃү="Y!d>'Tݯ@*g)(бp?بn 8a.A,H $ںP2Ǿ)[1Wƪ5!VuPO})KRGC؄%m탾 dp 0i1uR:!R*P 8TA ح}'0*R,% Ӭ=!:cc g)EQj%JJKJT'~Z|ޢxOf~wI)d(] t)HEf}04jmh‡A?6'jY+v`+M ,(P]D1}M{_z wI #OGz?gf.aSR(--2 5Yӯ-i{;u:"1R _@YQ5`{whR@ K  "9em{ f]wdءWlӭ~;5+c}[f)ao*K(ACN#&;mR\/rH)ѥ(o@Qjm{/BeƧoǾ?o1ӥ@YY. h;m c}+&wF!2:) _>5ٍ⏾_H{dsQ$R{-O~V¦'"_ _^^n_jL6 ZFlk-NPU|yqG> @⫍8@InnnTe)?P@ Xs ]N Q8uq竿K6 jY?fĥ'7ツV49էQY|e8y -o~8aQN i-nj#ۦ%{z` @*c"Q_aAJg 'H$NδB( @ A(^Waܤ4tn5} R؂q$֞_?vwQMg*``3!""ܱm\ D ,%Z 23|>FXT$bS'X_o6$sB=VsU4!Բ}tu[ZZ/'۶n};1>kfyn*!FI M(xoJ>9шJ\d,DF|>`Ō{n-0 GюgznIW59sfKΟ;p-.0H6p)L -h=5ߡD5;V( 三!|vɭshXza-[nb׀~?Rf5)1t[)96So_q8P8s gWjtB *1)HD~\xqobdHYF~(*./}[o]ib1s$$0% RU{6)ud͜Є8e|yUzYrqHĹbgoG6]܉؉)Nc+CuoV\n fޤg %$$~a4G$6nb*f} &^u[79o>=20iU2pOX{.Bd̞fÊ[nu@GlEaW`sh;\3Ю JoA{mGK ۇov~~ 03 Gu,FE{s+ڛ[ϼ/~ףfGkR]jfF^X=Ae˗,]ãuM̼B/'?.~Qhu|f<2W/[σ'p;9*-u 10w`i|l;.f|%+k1j0%Kb-اâ~$̟~9<]j{wPg/k~s5=A<-V+|1yW,%`0#.>^KIfFW9t|.Ĝ ,\s7gzMkc3Mg|q "~H40\ 4yFSofiY#qqq`fcGHWw,p޲<28>`;^RaOaT] 9H0ny/ EJ9%@ee%Ǝ !6Aca #.3.u@Dl ? #jWnC`m0%[ _3ÿhV+|4DJKc]6Іk_ͪ#?jk.8V* G{37xϪQ|ޕI 4;/Z(= ga3t_ qYv݃2'3б|7}@KVܳ"1s>u&6P9P+\ żi`f|쟓HI?,$Q|x3f,^6._| }@Dz~\n@W 6 MB[A/= :̙U ^xWɊFus=3l#AnՄu7M[Nu)mSQy)OV.E|VH]6tB=_eyĊ+$btџ&031r _zV"dT8޺pź8T f>`uY2u%uޕѻD3?[m{!H4E ^K IƔf!l,Fu[Ӊ)q뮳r}q &PNd$jqZ;QU y@r]LjuI,GބMpBZs[ND/R3ՃIaי@X^a`aԸXfq / ܽpB9=e!`'f*dk֠HN[P#yj./EhTd7cj3}^`_Eܠ|&M!Dܻ$P#\>s tu)ԗWH>r|;. ecLM*\8̈́7wLy-x/Z0{&$9N? 4;OhhF[m=Z֡QMV;wBѲu#fIDATFxhf5PPl/;oހ3y|!klBeD{"D%Pz!.l6pbk烗U=יoFe:k8g!Q u0>#x+(P~&$8E8tٕfb1jk:!P$O\;gǩVb1un4"/Dtb"v'3l'=^/**r3`%!4=;g\!:~oÉh b8ū E)u3 ]m3s2Kwp 5%%%' HҩKCt_B,QwDNkPIz^wPZV у7 !^%` vRflذNBILqBzWB] e!!@YY!Ul&2DԆp5.y `RqA2}DftE@63K fvbZ"K^"*..xpœO>I(2G&Dˆ(LafvmB4HNJRBڥrAr .^x@=QZvׅsF01a c01a PǁADIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_128x128@2x.png000066400000000000000000000534601346506225100232100ustar00rootroot00000000000000PNG  IHDR\rfiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATxwUgi P'7Q "D)ҿC"El5@@j&6R6dc̜; w̙{{@9C9C9C9C9C9C9C9C9C9C9C9C9P& [n: #lJ*_5p(FEd 31y'jv;9DjRJJX*R-@D 7mm9!'2=JD 2a40ڶgdA@e^S*x?mK W((Em 7|siHCw߽LB"I"jddsfd m;(w]!^6y"2[[oNDNx dw`-DkugaX[aO wa"۶ÌlkYbE`~|hAoEd6mfCJ)C?2ݵMMÇǚ{ s180 %XrAw"꽫>,"o"ːd@`98W"A_]D691k&a9-759W1sV҂AaGOq,r x, sA_S`#G8m9/>v8ؼMQLŸ{Z*0ן O+[k ??LsN@-FknQ~g&}f欁 ӊJh??MwW1\ؠ] ( (9G/}g2u8-7rhvE MmKfZ }aUpY'"O˝w޹B 8\La rpԨQL]37hN87"7^,p."Y: ({ݱ뮹-堑OD"r,9aFЙ0f7!F 4a+!@)eXa=M :k"=r]w=6xO(#Ж-RqCߒ94͍l|掵9NAX +"wEwsO@B~?50z~r}UE.r i"'`gi 8f̘hXcV@H AoEƺ:jhyuzD**GWX**,**GW\-QU|Q 6}{;c{yڵ xN9g> G?l;fLLC*D0qHˇF`jοlJm -Syyv@aNtHaw@aXkhWAoBÎcL!d|3_v-"6"x /p<"_P gl"?~)H1cnj 2gǷ.AXS 7xٺ/ʩXPթb׾®)ڑ~)ߝEa FK{AAѮMjq҆|tG6-ܳ{!<%h2ܘc|Sܹ#"y7b~G^Ŗ/ټl5[XC7rZ(߃=)וvE^cpܴs=#X9@p>q"L@=:qpnj ~a7~I5ֳyj6/[嫩\1_KBQнSԯECEU1)BQ@մq-ZԉU=P@:9 w䤰??̦4; P0|ü7FP>w!?[Jcm蘥 h7/GOWPf5a_qD ûiCsDy~xk\6Ѧ /0 galƍMf-B~}7[D͖=C1F݈u!h7}S3!aݺuq8MC L?W!cǎMa!Zx;(5.bT}i)ޗaQnfA5$ƎZi!`"Rrp#Ydxi?- r"c;nhB7y4X Tc܅+O%(E>t(չ=AaS[&p#:3 td wKƗ62ysB#,zy_/*O۶PЧ+߻K(F`hy5jW'.+lGyqjwTCϲ$9$ yS`(  (vfDZ13*0QgY: x̿E|fD2ELqX[>םc3;?Lړ /*^{} ?Є SJyq _f;49$4ބ*Gums9c:ufJ W`u}y?L֓ &[Zr󏦙DMKA{V%j޺ɟ6V!PQ=3<ӿw7 `pk" `k(6{e"XJ^-i+5Tb>,CۇfveϕΝ;SYY+>k>Ohi/f*I@!,ń dpSLTnej;6z0~bMA R8n}>H]:&#AQhc3͗yڲ-яCCPQuk=5Ӷ@ ^UlDYj(> _mX3(=D]UMҞ'ϣ軣RlOH kͱJ]wݝ(UQNĉ>{lީ>c6ҵ9$аzVu3s.]:SY]OWP~x`;)ɇR\:8 T)P 9c _{n}Ɔ7i%8I)~U PZ$eD(߄ ̵.~ cA;̾梅ӟCxa?M:ir<,YJzp䆉'}~-r^) _޼͎wco*`*t,ݢ`JqiI$*-}u/P n_/$[ h*s?\?*.a9?Aa͚r^@ww|W[E(p_AGl^߈h7%PUnSsh5:q7nZ>X73A\suQ*D0ZV)_{.ѿwjغ.#=Ҭَj*ZncY, VA3h$,R,--HYXK&2?k+Pk̺Qx/`%Rtӓ~=^CRԡEQP\D*6-زv뗭`پ9w.܋#㾚.hk֬1KRj~E2D=@؎_iҕ}^!z'W1ǰ3({=EoPꍉ-t _ߘ@SUP]cD2pA\! (esy`z!Y2M)%Kff KG7,[?C. PJ1x&xه]:Y~Yg(ˢ1{Rнak ;~J)k`v/'LDYj`„`h-,XkD5[RV^%}>A%%jxyRW= :qQM ի+z[U"EA@JJ{w, +BׅA ϽO昿sYӹG8k9ҳ5t@R>3hf2~ⰵ0x`sl(Nǫ#Kg)yYݻ7@ב~yUm ,(+ُ1xӍqw:t^Oal\v7d*v׮^])A4 |WmۆWxxwڍ6U ,JJJn/{K}uڭ6@.ҡ[ YTԭL^w(27EiBJA׮]ٺu'O)xOλI{d'Sk3\'F&@Ac}=h.RU|I'Gy')גf2JJJ<W(ou#XnZEl"p˚9@~a!_z?ǽ *=q~ʈ'4lAhN 2İ,ړ"JK_U u6~ ϶mW/m;[o3gscꅧ9I:gJ&U~_{*T,b%!;1\1_Iiuȉ_8MT>3d$dН`Kx+Ŗ?B gwy.$={{ +N5)¸Ca`{tkS3dМpPZAJbWnt{FԲ,Ӂ>]ʎ,+-,i?i?ȳ2q1{tM5FcU-[?Z޼ b^>uPiN~rz? {̖_^6Xg3L4iŜs/ǧ}N~&#.6u+ 58b"n$T:Yצbzc nw~Mt݃MN5) ӥOTz]iW|}_q㍿J<z_̋6b-7e/hw=3<դ$ y|I&#.Yug+.&L+R8Ro6B"_g_KiߕuO:*+҂-k6#`"<6dPsnDљH 1:8&-P~/U~%_泴`5aw>YUp)WT [y-$y3!|Aƻ ~Qk[c^ύ|Abc1q5YUqܡXyie h7#?皟PgtM R"l*T_kY_p,/V]?Tttэj2_nS"{SAcBR@EUQ5/mSwٝ<𛸷$q졩&!n4q_=X쵰Y& WK_,"'j&_2>{HKw?oYmgQ_ӭ_TRLُ\VN}sGhyÇ5݂~]+] v1}ݻ_gl/m1W9w^G݆OJ5qæyK[".~CWc~Z,{{nIK[(Kqo~ȽOjmKVX] ÙuNixCDP7I_zx;a7c~}v?*ed5.M-+.64}a{ "Yf)ī@0d/8{:sbH; 72 [ܥ*pJ0#PY+ng*s_2>kfnez^2^d5F]uAHKgd\]JQ~3u[{?p 6l1ν喛V7`Y`>n[ hf jڿ]玜rORMFZcPI*@5Ah`Lh)ƭO('&`v ,}mb:ʎD!W:NE1xu(E %PL j{]cm{~`۶Y;97nI銉Gw>8d=)PkpĔx+/[*ؔ"N} xZ(X 'ѹWwNT5l Eڧb 43bU`1|0O@vۭqݸ H7MK p>h5?9i 3nGt_" IDATM~(4~TɈ+*V@P[Bcx +S=.@XmtV^R"l 5 'm#^;lul_e`ߌ>2(7 ^۶]^*m3/)iR~-@SMBܱ}q$ hxWV2$ZLeY۟Ru+;fW r~LÇ[^ZZZ-&!t4}Xl;ٴ-I }lHdްƚZ# 8@):'[-t_} s_rzl%#mk@4՛m ;``/()n0Ŷ)qԮAØ[P=䬬iO6 -WNso&)dB m6 l%`YwggߨL<}ZCG\hp]W~Й/N?`HoxW.T .sL@PۇjUt8@Yx=3گ(("_eHHW~Ivu(βr`U !\BBc //L ftpp˚!!-1xh{٨w. /r^U7**Jė>r ^Rߎ r0s\qM[f=0W6Zd|}tPPlvG!!0tqoTUȶ۫bN:Њο#GBj̙3a@@vp;0-ZC{ZKN5 YںT0lJvr"B`w-Zc>fYe4h{"'MH5Y-RMBP:,5SJhFKoٯ[0PjAP&,jU[Xltϲ.A-vZ"*P/x߅c[~O3t+۶^j2@`T_e R!W&l7kȕ&U%mX&;~~+\أT=ץzAֵGjlTo氼 j]| "p޹ߚ@'o 0>k_ eP[YEc}}+>>}c`?ˮu邪,Ka7PS2`R0\8oqVq>T5fW[=~]Ofhm *g gܿGhh ~h|4g';*B>੨@g;Mk6,dd-ڂoM+|m{ @K@_/ 6iG&Dp"|S>!ަ[l [\ݏp/H 3|a(.XE;@l-1-TF-1IZ\?mue1:B}ͯTms !(->s"aʬnf"hq=]@N>;Wo7 }2}cc#"0;b&7 #0J]T]rɥ-mT;]u1؀کKw@bfa!hDAvF{K@Sh.@8Lh}+nC ZESMFV- <#h@PF? * ["R~:>:(IX^uM~aҟho`+SMFҐ_\17M-ϔR}G.awq&L{&`KhˎnQBgtK P-:h"۶m7f6yDmǙ |ڜTTy=+Tx1O'%OTС|ZABjА% m?讀! ExA?Cp0v6\TeN%n ESLZʎ-zMKƢ}n1)e* -" bh7:6W{.8:ҏO)s.@^yK&[L[l&|w7Q@.47SMFRѱOw%6xnYgj`%`YK?~@)(26d$KޝG&#`(AS{e AH/pzcJY~CDh߫[K?>[s^{;$${w54|[PU*hDI-{S}ak{] }2oUװy&#` ZapN_]xE-^5՚R`Re/Yہc$ l(ԡ5$ ;xT`fEo(h+e,];V?Rض]$Gx lFOtP+`gSMBV6j _T//aN8Gdv϶]+'e(mX7૏AuTttgn@ /"uWZY d+`#Mm؀֑"tQI}6S>r#ZP=@*-)s` (b{B@F/6mDf.UTokQ 4_j2R |?&k& <8-0|"O :ց 83/(\Tnڒj2}zPWʫ`? 6Ԇ*p "4C/)+*<72 7_]a}dfvYI.؍&#%9z@h1ft={~+c 0Q`UOn9nOrqgST=$40٭"ϯ  봠}xf,Zf:b oT2x?]h%[ "2O^EN \k ]l-)IGc}Aga㪵&#%2V,}!$+Z]:jË/Gdt@oN7g%a ~&wB!u5&#e?|Vaˠ̨緺1E]719q7鬶Wٺ~cHz?e~MM?I`=P&l۶66|yi(̡ilXy9d Ņ Yz[2wJ "mo}ėg&F @@ yŃVpRMFF[TX pfU/47Y~`3y<艋я~d z鲥n_ ?oW :>trR7GIH{{m>u:x MAi}bҥ7%/-x4+ ΃P%3/^>J5i[2SMFJѾ{z0>?o^욀&z+@a "@#FROa7hƬ3Mu}&,G Ǐ w)~,ʼ?6 m#vsB 5K5i=$?,d8A@Q Bs KjIhŶ'ĶYl^{PC(FC0`ztC+ _ҷRMFڠy\|t#X. <@y-?PWi@=o10"d%" uVc˺/2ﻻwlvεopS+dxـe˗@heYW  25&\錀+XRď+[O*\ի}iH3=6.3k46^߯cH ?k.K5)iNcPMkhm27mq^t?3Wt@M}ǛcgRMFR_MLKn`JUqo-x#8b0ADزy3ݺus}nC N1oWHƭlW-nld䉩&%yY&%m0hxF29{Z>c|ɒ@g={7}p't67g "~<[w33= /0h|%DG:[rYon?Žix*u [n{w@ޙ'bPprP[G]u *&}m6vW+lt'/9& \>ցO"hLXo8L?l0o l(ng)A9TZ _d͢/ZƊO~ي\My}G_- %K>wsι$Ƅnya?vc<%X0*HHUUi[ԏ#C)E]?f8c̾B^ݩ޶Y!ϸ;`ubƍ~Apы/ 9l=1[8B[ڀSP<_K=s{.Z(R0d7 }N c8KCm߬Xݘ t鷻7~uw`IsOs%΄o=u/.Dk./޳ۆAyX Q+InQh9#@^ݙ|tѕ|n#˰~'PE?a6V_xᅸp0{SL9 l۶ktt&U&{AW(Rjk%_;Bz@^~LiG{v];qeg`LzuJP)Eْ2Ox笳ξ)4'ִmfjaN3*`Qs/APyyn ,\y'7v./Pɝ7Fq3w3d&%{u EE`V @AsRN ^jW 2hk[-fi?<3|֠Kߞ3hqdZd &jWQvG5۫! N)؁)ܑnzzg.8؏~4ڜoHNr@]GH_)竏WnԲj~Yi 1y"9Jݏf/朻OʍBbѹJ>^M_V `!ɢ=]7nSDY2XW@rzYr9sv] 26pt:~*E%kjY"9__M#ӂ"7Ψإ{V|G.>e{ tӃco'%3zXۇ_],^ci)gyfvMM R(Zg7,+Еڍ[ʇ ԏC?=P3U/?yzR3 2|<MӹE^I*+?~} ܾ>>Td-^d qg&)}n|@ <0Ճ~ 1mضMUjz?pWsp\x9搄17ks(??p|:07>4iAg`^x:8 zR>yM>{6ێNg:V/c `qgy %&`4{S08N?㌔D0qD8^Y9/:L)4q]C`ZcT<qe27I|[I5u^ wc;7KI-/^l~SԮ?p3aժU 8r<__m^V@D(ї[_)RؾC?91z)oX,6Q(/tۋ +x$i?t 9|߀=!A`n-J J+B|HzA~}jJWbS&{5- *KчpOΣSqyOo?įzh=aEȏO=I".~۶fQ"cչK[TJ1I 1_G|r~y_+O0:`z9PN@=pWv>a 0 P&lZpx_?F-" cWk@Bv|:Xg|9o~.PJ11t 1'/a{c` Xp%)6i%镓yp@qF>]t093O_;c{?pE0zA7݀5 ~5E{ND{ʩ~ii'~\.=0`@oFXG R4OW4a4V߱e+o<s_|#ggR)/@ LBpB;SN9=ͮ!}bl{N􊂌W4~ppa@ިj>"qĥgqY'uUC]=}%si2 9sτ`n-րyl K0(Q/ ܣ5HK . |"P?Rl> eZ+_Rka{p/ouڟ[~ݪ!y(lW^@#b5}b4x$oDdϓO9"&#AQ~D`c{[U,0/.vlh]^ãiѣ.]G9?R}=OUh"'<7O2ǗMKo'޿ k(7oc:4oگu_|}{r܍ұw@-  G5(N1k ^K/۷oL61c-ykwT1g/Pw2z+l.@*3N>D/dĖ3sxҤISuetرY73M Y kk5wSZ>xnI.w8RԱߡla`33NS2H,@pXnIHL=s̙-ls~̆7p٧_XI%_o|qj{2Xy;Rvw / ߃p["O2и["$pB!˲bR7eEM`{ ̠[^X}M-o<}zfNg(:W^z7 |\Q~3--Z8isN:iFƴ(Ë~X("(_eY/-˰5܂vyTF|gK@nync{rȏΠ}^dZ>Z`,X `O:)B'.NJJI@9²MˡsZ?CW#C;eQ od"L9񤓶'⇌^oPA~#4%7WR߁K^yoj𨥻I+<߷8O& wdG(^E13ۀ<9WA_ 4XWd.Dm y9< #4# 9@.XG1N<1chp%t]A>h6 JՄy**_LMys c,_|:]9ܘ;. >7$8d 'qf\rI!𸥬3M*NmS3|ߪSbr]|{t Oaw}}Qbs-X p xFDΛ~ BVK/,u@v@39Og}m Vx_9$ʲcT9@ަ4yn c tC=6}zVY#~t鏔RJ)ղ۪):;0] ZmQ6$&!N,ŷ.\W r-pӳFgи25vZ29 :(5k7eT`p`ccX2ʳȣ}57/l_0aN6-{'Y). 4 A@`v#̱گ+RvHfmӎ^ +`ӦM֫Z_vdYPS4ɾþ7APЩF6meG˨\&9PS簁1Y]ͥcN=~ڴ]Zd+VJYˠY%hAv:m9XΦyel+[np`Y:x2N>n4cuDFi㏟|ⅬW\~,Q_/w$F-.҂$`Yy=R[OEj.^IIzBQC}ތ/uwvmkppqM䧓gQ st@rP܊8f5e?D-f@_ j7oclY6^bܱg7F<ٛ{0MeoӄE`MWJaBzqǥUDM +zeWԣ 00pW@F8vc ;ʿa¯([]א (hWİ}wgA7neߍ};ߧ.fkS3}%./XU\pqǥͦ@W]yK-˺(4c "_eaa[A!a m1GCf l_ &tҟ~%#7n$KF_T}S! HM-Mo_'ԉȕw\֛aIqՕWzZYj4xRAqT,v-sћ?t_5TZOT\GRL]?c{>F8僮U\}?w΃ʀ39ؔқ*ipϮ.BqKj|РAMh5{e:eA?pU l_m+Si+5R==]:ҹoO:E3vu)n* ܜ{ Ο@5[c9M/h@㚫 ܣk 6|AS)b.MټTmJ 7VP;N[kӱO:A=Էsoh;qPx6*$QY0{Z?ܗ 8cV{t@?+ş@ -L"?ʼ:P)VH"RP4TX[Oc]=v]u4X[OCm@~q!EE:/*}EE+CADKTޔG°8y9fC 9]) @~_Ss;j0Bc݁`@a|kJ0͋cʣ#&pj$F<~pO#1 lj9+B@N)kaV2S7Fb]+iJOenkFΏw(k~:T)<᝚{b{ϟogFMgVŋ2BEzB6-G[ ~NJEq^  Y*`1`&!ZMv #SyAk`~Qļgɒg1ԛJ'R/L>2."I7> K'N8Uqsh9z- ԡԡ(+Ӳb =r(w^xؠ[L3xKhB/QMD4cF.d@oLS3+31>jH3Q~}B,K, 󬐉Kk H])60[)5SN9w{9@MA1Y:.狈b)tMJ}ßɨY4SxH.R6JJ"i;fi0^t;TlbDh@p@|N׽pZ\&iZ ƍV?LJ! ~=k;h}P ym0qwi*IдIf$)@I(G p6E؛_Ow<$^L~C13fsp)$XloK%I$I$I$I$I$I$| Or2 ZIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_16x16.png000066400000000000000000000026261346506225100224640ustar00rootroot00000000000000PNG  IHDRaiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+IDAT8}RMHa~f]¤%R!7. !C!t (uC ?Ҫ:3;AY͞|<_a~ҥ+#X,Mj6k?Y`iZ.|#tJ` ,>hD+˲(&0LzXMNKR& !E9>F`M".HxgS6iFsmm^LE40++_ >yW"/ZMn\בN]EĺgY3&v;wh0 O`Jv>Ɔy[d)0D^}ڎsCVl){,0F""d(<b Xh hDN2ŽM^Fhzl 45݌ I*a {#.+.XY@N=?ޜ]$ÙoxC3~p_vLNRTǺ xޖ.T`?"LX!(hXW'Z"$應G035E@0W w #dkv|;%vs#!x8׮Qg==_juIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_16x16@2x.png000066400000000000000000000045061346506225100230350ustar00rootroot00000000000000PNG  IHDR szziTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+?IDATXŗ}lW?}זByMeAXth6 /Ɩ[RP`3n*@c  1-.k4~[_hyk k)Nrx9~{.||m۞1ؔc09ꫫ77{ny,Ƙq0Xkb5rߺs }096rc ql0N18-0bŘkڗ<|OLkMlĴ]#v\ëD$Pc hįdoDLd[k׮Gvv11xiϥ ]THKi>F)N);w[mUVVACJ#%qOzXqC+:ќRuRJ|V[y׏4OrO'p&y\C2htsmjCTVqKjɐA e ؊ 䜭[bxiAVʧ@e#CŮk(Z,'$ef ạw!bۗ=aQ67E YkA!F@u4N Nyx%G@EAut=9FM 1GST_8)%{իtFaH^ v&|?SῃG @ ΓO>P: iqW61*W/8QwH)p1yOzֆ )XP2kѽS5!"Ǔ'O6ϛ7ojgR܀EZ➹)izso_ʻ0󑇨XPɻ3CI[W'{W\5Pc+ %FVMGG8{ _Hˉ `ΒG(,O"RMH)#ݳ7gd7n2UlbF;h8}8Q)V0r&ysU|אVޯSJjMmf/=N%DpἯYdIFK{+%[2Q0L+fP؂<^wٖoذJ)C)J\fLJw}3a{S&I&LL sv -YJRZktB"5"hH"HBkR/9}tC?٦MkJ%' ;(J::pѢOiMvlߞ#*RJ$ uZ+V3sjIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_256x256.png000066400000000000000000000534601346506225100226420ustar00rootroot00000000000000PNG  IHDR\rfiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATxwUgi P'7Q "D)ҿC"El5@@j&6R6dc̜; w̙{{@9C9C9C9C9C9C9C9C9C9C9C9C9P& [n: #lJ*_5p(FEd 31y'jv;9DjRJJX*R-@D 7mm9!'2=JD 2a40ڶgdA@e^S*x?mK W((Em 7|siHCw߽LB"I"jddsfd m;(w]!^6y"2[[oNDNx dw`-DkugaX[aO wa"۶ÌlkYbE`~|hAoEd6mfCJ)C?2ݵMMÇǚ{ s180 %XrAw"꽫>,"o"ːd@`98W"A_]D691k&a9-759W1sV҂AaGOq,r x, sA_S`#G8m9/>v8ؼMQLŸ{Z*0ן O+[k ??LsN@-FknQ~g&}f欁 ӊJh??MwW1\ؠ] ( (9G/}g2u8-7rhvE MmKfZ }aUpY'"O˝w޹B 8\La rpԨQL]37hN87"7^,p."Y: ({ݱ뮹-堑OD"r,9aFЙ0f7!F 4a+!@)eXa=M :k"=r]w=6xO(#Ж-RqCߒ94͍l|掵9NAX +"wEwsO@B~?50z~r}UE.r i"'`gi 8f̘hXcV@H AoEƺ:jhyuzD**GWX**,**GW\-QU|Q 6}{;c{yڵ xN9g> G?l;fLLC*D0qHˇF`jοlJm -Syyv@aNtHaw@aXkhWAoBÎcL!d|3_v-"6"x /p<"_P gl"?~)H1cnj 2gǷ.AXS 7xٺ/ʩXPթb׾®)ڑ~)ߝEa FK{AAѮMjq҆|tG6-ܳ{!<%h2ܘc|Sܹ#"y7b~G^Ŗ/ټl5[XC7rZ(߃=)וvE^cpܴs=#X9@p>q"L@=:qpnj ~a7~I5ֳyj6/[嫩\1_KBQнSԯECEU1)BQ@մq-ZԉU=P@:9 w䤰??̦4; P0|ü7FP>w!?[Jcm蘥 h7/GOWPf5a_qD ûiCsDy~xk\6Ѧ /0 galƍMf-B~}7[D͖=C1F݈u!h7}S3!aݺuq8MC L?W!cǎMa!Zx;(5.bT}i)ޗaQnfA5$ƎZi!`"Rrp#Ydxi?- r"c;nhB7y4X Tc܅+O%(E>t(չ=AaS[&p#:3 td wKƗ62ysB#,zy_/*O۶PЧ+߻K(F`hy5jW'.+lGyqjwTCϲ$9$ yS`(  (vfDZ13*0QgY: x̿E|fD2ELqX[>םc3;?Lړ /*^{} ?Є SJyq _f;49$4ބ*Gums9c:ufJ W`u}y?L֓ &[Zr󏦙DMKA{V%j޺ɟ6V!PQ=3<ӿw7 `pk" `k(6{e"XJ^-i+5Tb>,CۇfveϕΝ;SYY+>k>Ohi/f*I@!,ń dpSLTnej;6z0~bMA R8n}>H]:&#AQhc3͗yڲ-яCCPQuk=5Ӷ@ ^UlDYj(> _mX3(=D]UMҞ'ϣ軣RlOH kͱJ]wݝ(UQNĉ>{lީ>c6ҵ9$аzVu3s.]:SY]OWP~x`;)ɇR\:8 T)P 9c _{n}Ɔ7i%8I)~U PZ$eD(߄ ̵.~ cA;̾梅ӟCxa?M:ir<,YJzp䆉'}~-r^) _޼͎wco*`*t,ݢ`JqiI$*-}u/P n_/$[ h*s?\?*.a9?Aa͚r^@ww|W[E(p_AGl^߈h7%PUnSsh5:q7nZ>X73A\suQ*D0ZV)_{.ѿwjغ.#=Ҭَj*ZncY, VA3h$,R,--HYXK&2?k+Pk̺Qx/`%Rtӓ~=^CRԡEQP\D*6-زv뗭`پ9w.܋#㾚.hk֬1KRj~E2D=@؎_iҕ}^!z'W1ǰ3({=EoPꍉ-t _ߘ@SUP]cD2pA\! (esy`z!Y2M)%Kff KG7,[?C. PJ1x&xه]:Y~Yg(ˢ1{Rнak ;~J)k`v/'LDYj`„`h-,XkD5[RV^%}>A%%jxyRW= :qQM ի+z[U"EA@JJ{w, +BׅA ϽO昿sYӹG8k9ҳ5t@R>3hf2~ⰵ0x`sl(Nǫ#Kg)yYݻ7@ב~yUm ,(+ُ1xӍqw:t^Oal\v7d*v׮^])A4 |WmۆWxxwڍ6U ,JJJn/{K}uڭ6@.ҡ[ YTԭL^w(27EiBJA׮]ٺu'O)xOλI{d'Sk3\'F&@Ac}=h.RU|I'Gy')גf2JJJ<W(ou#XnZEl"p˚9@~a!_z?ǽ *=q~ʈ'4lAhN 2İ,ړ"JK_U u6~ ϶mW/m;[o3gscꅧ9I:gJ&U~_{*T,b%!;1\1_Iiuȉ_8MT>3d$dН`Kx+Ŗ?B gwy.$={{ +N5)¸Ca`{tkS3dМpPZAJbWnt{FԲ,Ӂ>]ʎ,+-,i?i?ȳ2q1{tM5FcU-[?Z޼ b^>uPiN~rz? {̖_^6Xg3L4iŜs/ǧ}N~&#.6u+ 58b"n$T:Yצbzc nw~Mt݃MN5) ӥOTz]iW|}_q㍿J<z_̋6b-7e/hw=3<դ$ y|I&#.Yug+.&L+R8Ro6B"_g_KiߕuO:*+҂-k6#`"<6dPsnDљH 1:8&-P~/U~%_泴`5aw>YUp)WT [y-$y3!|Aƻ ~Qk[c^ύ|Abc1q5YUqܡXyie h7#?皟PgtM R"l*T_kY_p,/V]?Tttэj2_nS"{SAcBR@EUQ5/mSwٝ<𛸷$q졩&!n4q_=X쵰Y& WK_,"'j&_2>{HKw?oYmgQ_ӭ_TRLُ\VN}sGhyÇ5݂~]+] v1}ݻ_gl/m1W9w^G݆OJ5qæyK[".~CWc~Z,{{nIK[(Kqo~ȽOjmKVX] ÙuNixCDP7I_zx;a7c~}v?*ed5.M-+.64}a{ "Yf)ī@0d/8{:sbH; 72 [ܥ*pJ0#PY+ng*s_2>kfnez^2^d5F]uAHKgd\]JQ~3u[{?p 6l1ν喛V7`Y`>n[ hf jڿ]玜rORMFZcPI*@5Ah`Lh)ƭO('&`v ,}mb:ʎD!W:NE1xu(E %PL j{]cm{~`۶Y;97nI銉Gw>8d=)PkpĔx+/[*ؔ"N} xZ(X 'ѹWwNT5l Eڧb 43bU`1|0O@vۭqݸ H7MK p>h5?9i 3nGt_" IDATM~(4~TɈ+*V@P[Bcx +S=.@XmtV^R"l 5 'm#^;lul_e`ߌ>2(7 ^۶]^*m3/)iR~-@SMBܱ}q$ hxWV2$ZLeY۟Ru+;fW r~LÇ[^ZZZ-&!t4}Xl;ٴ-I }lHdްƚZ# 8@):'[-t_} s_rzl%#mk@4՛m ;``/()n0Ŷ)qԮAØ[P=䬬iO6 -WNso&)dB m6 l%`YwggߨL<}ZCG\hp]W~Й/N?`HoxW.T .sL@PۇjUt8@Yx=3گ(("_eHHW~Ivu(βr`U !\BBc //L ftpp˚!!-1xh{٨w. /r^U7**Jė>r ^Rߎ r0s\qM[f=0W6Zd|}tPPlvG!!0tqoTUȶ۫bN:Њο#GBj̙3a@@vp;0-ZC{ZKN5 YںT0lJvr"B`w-Zc>fYe4h{"'MH5Y-RMBP:,5SJhFKoٯ[0PjAP&,jU[Xltϲ.A-vZ"*P/x߅c[~O3t+۶^j2@`T_e R!W&l7kȕ&U%mX&;~~+\أT=ץzAֵGjlTo氼 j]| "p޹ߚ@'o 0>k_ eP[YEc}}+>>}c`?ˮu邪,Ka7PS2`R0\8oqVq>T5fW[=~]Ofhm *g gܿGhh ~h|4g';*B>੨@g;Mk6,dd-ڂoM+|m{ @K@_/ 6iG&Dp"|S>!ަ[l [\ݏp/H 3|a(.XE;@l-1-TF-1IZ\?mue1:B}ͯTms !(->s"aʬnf"hq=]@N>;Wo7 }2}cc#"0;b&7 #0J]T]rɥ-mT;]u1؀کKw@bfa!hDAvF{K@Sh.@8Lh}+nC ZESMFV- <#h@PF? * ["R~:>:(IX^uM~aҟho`+SMFҐ_\17M-ϔR}G.awq&L{&`KhˎnQBgtK P-:h"۶m7f6yDmǙ |ڜTTy=+Tx1O'%OTС|ZABjА% m?讀! ExA?Cp0v6\TeN%n ESLZʎ-zMKƢ}n1)e* -" bh7:6W{.8:ҏO)s.@^yK&[L[l&|w7Q@.47SMFRѱOw%6xnYgj`%`YK?~@)(26d$KޝG&#`(AS{e AH/pzcJY~CDh߫[K?>[s^{;$${w54|[PU*hDI-{S}ak{] }2oUװy&#` ZapN_]xE-^5՚R`Re/Yہc$ l(ԡ5$ ;xT`fEo(h+e,];V?Rض]$Gx lFOtP+`gSMBV6j _T//aN8Gdv϶]+'e(mX7૏AuTttgn@ /"uWZY d+`#Mm؀֑"tQI}6S>r#ZP=@*-)s` (b{B@F/6mDf.UTokQ 4_j2R |?&k& <8-0|"O :ց 83/(\Tnڒj2}zPWʫ`? 6Ԇ*p "4C/)+*<72 7_]a}dfvYI.؍&#%9z@h1ft={~+c 0Q`UOn9nOrqgST=$40٭"ϯ  봠}xf,Zf:b oT2x?]h%[ "2O^EN \k ]l-)IGc}Aga㪵&#%2V,}!$+Z]:jË/Gdt@oN7g%a ~&wB!u5&#e?|Vaˠ̨緺1E]719q7鬶Wٺ~cHz?e~MM?I`=P&l۶66|yi(̡ilXy9d Ņ Yz[2wJ "mo}ėg&F @@ yŃVpRMFF[TX pfU/47Y~`3y<艋я~d z鲥n_ ?oW :>trR7GIH{{m>u:x MAi}bҥ7%/-x4+ ΃P%3/^>J5i[2SMFJѾ{z0>?o^욀&z+@a "@#FROa7hƬ3Mu}&,G Ǐ w)~,ʼ?6 m#vsB 5K5i=$?,d8A@Q Bs KjIhŶ'ĶYl^{PC(FC0`ztC+ _ҷRMFڠy\|t#X. <@y-?PWi@=o10"d%" uVc˺/2ﻻwlvεopS+dxـe˗@heYW  25&\錀+XRď+[O*\ի}iH3=6.3k46^߯cH ?k.K5)iNcPMkhm27mq^t?3Wt@M}ǛcgRMFR_MLKn`JUqo-x#8b0ADزy3ݺus}nC N1oWHƭlW-nld䉩&%yY&%m0hxF29{Z>c|ɒ@g={7}p't67g "~<[w33= /0h|%DG:[rYon?Žix*u [n{w@ޙ'bPprP[G]u *&}m6vW+lt'/9& \>ցO"hLXo8L?l0o l(ng)A9TZ _d͢/ZƊO~ي\My}G_- %K>wsι$Ƅnya?vc<%X0*HHUUi[ԏ#C)E]?f8c̾B^ݩ޶Y!ϸ;`ubƍ~Apы/ 9l=1[8B[ڀSP<_K=s{.Z(R0d7 }N c8KCm߬Xݘ t鷻7~uw`IsOs%΄o=u/.Dk./޳ۆAyX Q+InQh9#@^ݙ|tѕ|n#˰~'PE?a6V_xᅸp0{SL9 l۶ktt&U&{AW(Rjk%_;Bz@^~LiG{v];qeg`LzuJP)Eْ2Ox笳ξ)4'ִmfjaN3*`Qs/APyyn ,\y'7v./Pɝ7Fq3w3d&%{u EE`V @AsRN ^jW 2hk[-fi?<3|֠Kߞ3hqdZd &jWQvG5۫! N)؁)ܑnzzg.8؏~4ڜoHNr@]GH_)竏WnԲj~Yi 1y"9Jݏf/朻OʍBbѹJ>^M_V `!ɢ=]7nSDY2XW@rzYr9sv] 26pt:~*E%kjY"9__M#ӂ"7Ψإ{V|G.>e{ tӃco'%3zXۇ_],^ci)gyfvMM R(Zg7,+Еڍ[ʇ ԏC?=P3U/?yzR3 2|<MӹE^I*+?~} ܾ>>Td-^d qg&)}n|@ <0Ճ~ 1mضMUjz?pWsp\x9搄17ks(??p|:07>4iAg`^x:8 zR>yM>{6ێNg:V/c `qgy %&`4{S08N?㌔D0qD8^Y9/:L)4q]C`ZcT<qe27I|[I5u^ wc;7KI-/^l~SԮ?p3aժU 8r<__m^V@D(ї[_)RؾC?91z)oX,6Q(/tۋ +x$i?t 9|߀=!A`n-J J+B|HzA~}jJWbS&{5- *KчpOΣSqyOo?įzh=aEȏO=I".~۶fQ"cչK[TJ1I 1_G|r~y_+O0:`z9PN@=pWv>a 0 P&lZpx_?F-" cWk@Bv|:Xg|9o~.PJ11t 1'/a{c` Xp%)6i%镓yp@qF>]t093O_;c{?pE0zA7݀5 ~5E{ND{ʩ~ii'~\.=0`@oFXG R4OW4a4V߱e+o<s_|#ggR)/@ LBpB;SN9=ͮ!}bl{N􊂌W4~ppa@ިj>"qĥgqY'uUC]=}%si2 9sτ`n-րyl K0(Q/ ܣ5HK . |"P?Rl> eZ+_Rka{p/ouڟ[~ݪ!y(lW^@#b5}b4x$oDdϓO9"&#AQ~D`c{[U,0/.vlh]^ãiѣ.]G9?R}=OUh"'<7O2ǗMKo'޿ k(7oc:4oگu_|}{r܍ұw@-  G5(N1k ^K/۷oL61c-ykwT1g/Pw2z+l.@*3N>D/dĖ3sxҤISuetرY73M Y kk5wSZ>xnI.w8RԱߡla`33NS2H,@pXnIHL=s̙-ls~̆7p٧_XI%_o|qj{2Xy;Rvw / ߃p["O2и["$pB!˲bR7eEM`{ ̠[^X}M-o<}zfNg(:W^z7 |\Q~3--Z8isN:iFƴ(Ë~X("(_eY/-˰5܂vyTF|gK@nync{rȏΠ}^dZ>Z`,X `O:)B'.NJJI@9²MˡsZ?CW#C;eQ od"L9񤓶'⇌^oPA~#4%7WR߁K^yoj𨥻I+<߷8O& wdG(^E13ۀ<9WA_ 4XWd.Dm y9< #4# 9@.XG1N<1chp%t]A>h6 JՄy**_LMys c,_|:]9ܘ;. >7$8d 'qf\rI!𸥬3M*NmS3|ߪSbr]|{t Oaw}}Qbs-X p xFDΛ~ BVK/,u@v@39Og}m Vx_9$ʲcT9@ަ4yn c tC=6}zVY#~t鏔RJ)ղ۪):;0] ZmQ6$&!N,ŷ.\W r-pӳFgи25vZ29 :(5k7eT`p`ccX2ʳȣ}57/l_0aN6-{'Y). 4 A@`v#̱گ+RvHfmӎ^ +`ӦM֫Z_vdYPS4ɾþ7APЩF6meG˨\&9PS簁1Y]ͥcN=~ڴ]Zd+VJYˠY%hAv:m9XΦyel+[np`Y:x2N>n4cuDFi㏟|ⅬW\~,Q_/w$F-.҂$`Yy=R[OEj.^IIzBQC}ތ/uwvmkppqM䧓gQ st@rP܊8f5e?D-f@_ j7oclY6^bܱg7F<ٛ{0MeoӄE`MWJaBzqǥUDM +zeWԣ 00pW@F8vc ;ʿa¯([]א (hWİ}wgA7neߍ};ߧ.fkS3}%./XU\pqǥͦ@W]yK-˺(4c "_eaa[A!a m1GCf l_ &tҟ~%#7n$KF_T}S! HM-Mo_'ԉȕw\֛aIqՕWzZYj4xRAqT,v-sћ?t_5TZOT\GRL]?c{>F8僮U\}?w΃ʀ39ؔқ*ipϮ.BqKj|РAMh5{e:eA?pU l_m+Si+5R==]:ҹoO:E3vu)n* ܜ{ Ο@5[c9M/h@㚫 ܣk 6|AS)b.MټTmJ 7VP;N[kӱO:A=Էsoh;qPx6*$QY0{Z?ܗ 8cV{t@?+ş@ -L"?ʼ:P)VH"RP4TX[Oc]=v]u4X[OCm@~q!EE:/*}EE+CADKTޔG°8y9fC 9]) @~_Ss;j0Bc݁`@a|kJ0͋cʣ#&pj$F<~pO#1 lj9+B@N)kaV2S7Fb]+iJOenkFΏw(k~:T)<᝚{b{ϟogFMgVŋ2BEzB6-G[ ~NJEq^  Y*`1`&!ZMv #SyAk`~Qļgɒg1ԛJ'R/L>2."I7> K'N8Uqsh9z- ԡԡ(+Ӳb =r(w^xؠ[L3xKhB/QMD4cF.d@oLS3+31>jH3Q~}B,K, 󬐉Kk H])60[)5SN9w{9@MA1Y:.狈b)tMJ}ßɨY4SxH.R6JJ"i;fi0^t;TlbDh@p@|N׽pZ\&iZ ƍV?LJ! ~=k;h}P ym0qwi*IдIf$)@I(G p6E؛_Ow<$^L~C13fsp)$XloK%I$I$I$I$I$I$| Or2 ZIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_256x256@2x.png000066400000000000000000001640671346506225100232220ustar00rootroot00000000000000PNG  IHDRxiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATxw`ŵWŲ ƸKBI^ TK! z1`cMP$ɤC ` n+M{fv+YҽW:hwvfvvuuϙsΜAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA[Q õ^SIDJTJEP P* hZ9E)lҟATDG 0@C@J!*!D C "UFG;f"|`3@(:HD+/ tB8`,?Ak9MHfǂ "uRN%B*+E`%hR}"zJ"+%^ ](̘q`8" j8q()r(<)̍;nA,]]\` Ы^WlK tB'q뭷TDD 4]AtYޔC ){ ƍK4&O~-(\)_ JUq8&> 5W^٩ BAμU0?)gIl t$>?Í~ @?LH籛!YW VZ鸧Fj?c" [^ UW]4AHEA(YfVXN'0ԞsKl(u|((-M-2ѯ&$ǰjjeJDV‹W]uuK ٳoHD >`Y]no @ Dhc].6r 4C.ӿ>%3xW=={O{W*'YzuTemp B " W_}`# =6QN'  `GB$}xr6K[K z!洱%=it/~WiPaxYz*^a_YQ)4+\s, Q^˜9)t" ^VMag衰&"[LGfv(0p,z~+B)"+1v[wիQXõ^' ^(B;xp<ӂ.}_?mO~e r ıÃacYzMTz6RBu]/W У;EMDg0`9`| GL0fy2GADt#Dc?0a7['ք+ ~͚5+< <_`>_xOj.C@q̝;Wt4lAm GԍюYnקG,Z&~'ۄMB$[ *XkNP A9>be_/ʀг@̛7WPP nA9 :\py̭iվ.e[ \sݣm_' 0v5C'%]W^[_7p(B# Py|':U`;#7M:pc5KHGevrOZoW>EZ۴z\X; `e7WJT҄i9k׮ s 7I l@(;~;+ Ciro &$2yc.4[>\c 4V '/r3~gˢGT/횩qށXQ1MT'KnmBl뮟'oFDB2/'$LU>Qή>N<3x=Yr[ .K“J=>c4};|8g^5kZt>z>yM7 %]wU /8ǹ_>!8L00 ,"g\|2$W$%w?fB9(+'@3:gf_nžɱH m&, \?ao&II,,%]wu8| !Ai. L01*ӤΚ-߿3/ t)QbV/'poc2#$DDk&R*>ԽftMAJ Q: "^P`S }rng9*c2D]SPWOq07el12 ;8l ME3dCaƌKP,D=,~>kv5qDY{ L %[ ń]5[qePX> {5_P?y/ DZݯ9 O*IKY?9SwK7k&vo{@~,1cd(BŽԀu]`IMޞ버e,Ec `rZV$l =Ңw 4_taʀ--wR'9W{f\t;s{\k֬A&Θq\@v;P!@4i!SҎs Cf9ߞ[MM W (+r ||u'r2Nr+ʿ0EIy'{p}cM.;W׈mn79* B! m{/F$6 'Mk"=7fr^ 1 .w)0})eϵc_~!iڗKe\)ӟ>p) u>۝ ZSS;\s7 t]νw(8D563~CH0fz]cF߼Y_Kt aG߶w(F_B.=gOF,ܾu c'HV~\z{0 nv ALD_ꗃ"/7:'Md^B33jKYD&|;_xRht5VW\AG^vkmjOҮ,>u[w_WXD]Y\G>@#iMgnJsݢn[BQNWr'5._&f~>3N94OoS[#\rmt{NDcp kD7ȥ,Ă%xckm ano>Gr|JR,-:s@4~u/@A]LIs>0ye3n;z"Hkk+@k|Sѷ7 Ie.w.iE}͝!+=_p|SX xY p]x\>9kIA+ftVq@b[fΜ~"Aߗ!й aL `9 lmB8!PӖ9F[ٗ7{^?~͂w3䙉b p ӳno}==^䌟'$˒1",op Ϝ93 A8b@(oEuDɓAk *vQ[*>SO#>X]D`(PNbrEg?K0+8Ln_%20g,Sb+Vfb}z+Ϭ{!{Yׇ\p߂ F,Bǁz@e|O![BƬKT(s2e,7dRĻ`}$aʵwKugr}?- u~s-gs2JC3{}=@Dhnne;Ϝ9(Bx?B2Lј|u?m8 >9=@>ƬǒPpL?\'B\ n%ʵ0(Kэ5k.G%Ap" P?~9k,g@ȋ(B^|0HF;p -w-l Z?"\N}/zִw>_/D q) r)#?")2^؎ $k cŤ>|]/| ]~9L˜+܌o%\c_hn^g.3nMvr" ʯ?x] |*eSNN4>Kf.Ae <~$Gheأ5[ANwAxٶ6߾m{[кgmo =ۂ=-[[Am>l6~aB*WYLM5*T!SS O*jSO2qEPHFdz_[QLAm iS٥Xɽ}ys,mcv]^8gn@ɯ?x&v}N28l|e׷ ]2sԇ-Y.S{v)>/Oؿs~ {7o}lG˶pV苪Aj`TꏪAr`T\-؇[zsl?%fV`Ete&5"`(jߝ={vcBoG`_ 4d)m`w uC&ft f)N$1N>F}[R )ݶ:dbX ִ_OYUVr`H!?8d`ΌJat.XG5t\ns[I>HF$o?ٮ)iΞ=[v"DW+3&?&m8vKǑz?y'K7|>#Ďηۄw`ػ)-c6]T Q9_ EoUd 4OY\7g2?jRx<@!X 칕NSSsB(3gFB/C3sl$0eʔ/*5u ^`S1U'*s(- i 7wŶuEX=A8fP95CUW&ܽ.kDIvX['wr^6>sY{+ל$%a}X9iK]>}W.Xr[`غb-X]6:!gPԌაd.:ml?H݋[\ A0pAo>SRAhnn9gY2K>ae)s\R3ik6;&au) 9\ pއlklƖkuZ\p݈R>Շ Aͨ!V U.r&޺B23`\?ieHcޏ9|.H>gΜ BE^o~; J; $Ngi>TA$m׆( Ƹ2W{vlGgmؾj=._-UgeRDyDC!CPy@yp N 9OIMٺY6\ ҅cs`t}Rsy8qQшЋ~A߷X6ujrF;?=뎚u?6%BO3'rݵlxm,_m5!ږFRFUdP=|``!3 9I sϦ݊_e&~+½/y?w,ۥ`c+֭sQ o]%KC=}&_ lKњ^4D ?v닑o_TwF ob(=Uע#Q3n>A0a ]onk>0 0.mn:Ww|o١УCe.P_S_cϾSY5f{M}U@q?5\|ob+{g)T:}8Շer7ʝ7NY?$d>)߫Vvm.!w`D<K}N̠8.6w)%o+.eϬ DE [W6ccKouϾB^C*QspԌʃka|a*K8.[yleC_K }W8V-zw#}0L* a>e ]O%v̞u]U'VLuXؽik/R5T 苚#P3~~5).߽H_guB|RqHkc҃ ͅm%sΝX{Qz?G(p"SNkKͩ\YQZ?|OPPؿg_^K_ǖks6A0>5GϘ*ϡJ\|gʃ"9?Yf $$W P\s?YBÏ㇣D 6:wz i~u@/ljjv}W, ͛7o{.B9" @G&B4`ڴ_8m/\9`;OfiiW Zw{"Zv) Bx}w(L:*4߽Oi=B;pY`5@[ ,'͛:G | :-䗋>6SLFY@پ*H8oٱ+7ѶoW%̠f(r(TuUXj pE:fp`.K@T?>Dz𾷮^eBo=5u!3_X-\5v`#M\ZFDX~QZ¼yOt", .*G~>t!ǹf^|ײַ֯>aˊxsXڻCJCohd=WJβ]!H*֭3Rl( -PDD)\f~M-hú9VhE.$XoAaxkʂߏ :k| IDATjQ3m4*ɄKuJCwN!_Õ8 +Ν+6GgU& WB W* J BGa.l|g%^dz0CBFf~8FcX#_!sFf. #OR7Vޗc v_[k.ĖrAdGͱ#3?E5?N~Hkcc~]|oe%(%EG= xG, <-y|.wem^O /t Vc^ps) >:玸o__ ! @ aщT-z֯S|8|kbXO~bD "x%hٹ}/Ez}1;c"峷D%,`0Ie+lրmJ3̙\PD(`!92mw T r~r(k{Ȳ>Ah1 x36 lݾ+?휻u2%.`7̙3QJg>|Z]REYR-՗s>_~ۇW-yK~Ah7JjTM=x3yt\kJ4siD"p`eK,.؇X"+{(5B18tpX?ȯ3}. 9ss B @ihlRzOzٽ+?@b' 6W ѼK(ֽBdע+ R+}= ߌ>7.b[ Jo̞=Λ ](EqIÿwBsAz/Fx%۲-)T׍F#n v<&WП뺾YcdL={GQ@㒆]^pԥ}9b}p-9%Y+Ef T;ȇ6ev_Z8:Bss3XQ%5`>Q=s'ʸ uޛYo?LݨU>n9k,ň4.i8ZA &Q@j U4JRA(eBŔCU*wF,wO\!Hk%mJᴙ3g](]ȒxP^iѳ }g5ʬ};wa< 7nj%m!?v @x'u_/ kK*͉<RΜ9S](]Ē3Dyk6|wle`|Tw_>|ӽسELPn>PF*/ `E<~I3g\y# @ƁDRj.#"C1e Pnwk bF)d&D#D`M,UߜGV%oqZp̙3eq'# @'Ӹ A-~(녮 ط}r믰FLc @1cʌs{vK=WC >R˴%gg̜9sE&P4(~6 .oj PkSwI_~eo' Ru{сsN~qJKB=BQJ]q#C >4#=2_J@ZF.8}\2SC}h}f9h!X-k+M WVbAD5j=ߢzAʋS*\e犧^ֶU2~Vxk\?HN sckIRqٮ];Y_ N;W,]!BNqI@F0ӧO}w1k~|KHR$E_g? !B6 xH t^ѫx4ҟN\W[JG|Ν;mKgO8'.]#/HҸa g ګ,\ \`/s-c_-˿C\rbHTL9İL8d pσi3d8(455YmIr8D8<8 R"BϺޞU D:]~s[x,B#3f(I\wOr/򮶹c5m.[V%k D;boߵ(n lӾ.s)\_j Tt?v/!A σ0A,(Hܣٻ[WKqiA‚܆};vг {PUdx%{a\㙽Mi˂@1cd3+qHԯR'ӿg:)_K2W0`_~ 2 wW#BO#mfd5ٷy O &0˒ 0夓NIb@(”̟ o[Hrn}?@R&HO)}.}w |}z|Q-P*K؛~8}g_TvP >q@㒆4kz<߶mrl<<\w t&rP̜33N;0Y'8nkr8㦛f<־}  g _ `KX{v-}TY=g*`vh 2V&~="A4]m]ɸ QNd.cA=q)_tхӞG  ( Gܟ (Dim?r!a=`( -y/A'}f[u097gJ.];C= ]tĹ@\] ©zYPW7-۾( Ln)/o |rja;h Xp,k Bm><h>+&e07sn*aؽp衣v=d/CbRhhlgA(|f>T|eeڄ[kv} :ܸS߁ ׷?Y h}Gwn:._v-oQr; % @_)T(0GB]DǠ'<@e LOڃG|AO vMPh'c~r`T+i`*v mMBR?_{7 "P&sS6mNѮz@X/xOsعtlk^6H?A=[]|ntEk! wD5cxr!o`"NTJԱ'HŒ@>] fD:xgDWϷ7r}iJ)YWe;lAO {Q}HA{dҕ,nR";ycO>Wye}ޞ04*&3fuZH~;F N&u[7L'AQ}p;^L8ckA2W@}}ߦ쾴P_LCҸ#~A> 5w?fz\ϏÎ~}\{$hyo .!2f|ܢH0  _|Ƚy!DOqӍ<#5l6CZM2Ho.ʂK:A:owk}.L+x0H5T$lA$Zq~.(z60 o/<>LEX GTzk ]Vx캻%  O1>O])en5k Bu]gz @Ccp}ᣴ ɏL2^l6jk+6D5/?} gFߌiZXJ{+ W>;Łƒ<(EUlD[ُ @h1Tg.BW=7 6d?u]=`$ѣ|WQ{a0o)Oԅ| Ex67Vx =v ~qB1#'!Lj cp-*TO5*T&8~f*+в{/4o֦ ڼ[Ÿ[6`K[:o5y,>amO;qO`-{Sy0֮]\wu:NEPdf(%ʋ<Zx{#Ꮈ?*0D??7-_( SyOyA}&"8t'hEoz_ O>q&|,j{Hٶ6+xc} Oav j@7LĮ1>]+5k]s͵ܭz.p%07RR,iY=붕@evc\e\)#? *TT`IbIS xx#V @OA9^u+ H춦R紐 aqˍ^ghhh8g'"J e~z d2A|x*\A- aŸކU/ѩ-J)6}2>CO*3\l^݌fދLj-5?^(/2gDʘtmWB0 &ԉ\s>[9S#S}%#SlH:_b?nE`DN%#zdAɠ'ᔯ|'{8ƚF^/P8#Я0V?W'- ^as ڵk88ꫯ5Ҵu_pA]?.8 <\e>  BAg2־Ѯ B~8 I|CIϯƲ'G㭿wW{HBvjQ56*}_ 4T.~?m87UX`W_+{?F yXHOocl!|>v(hP/Fç/GֿQ28 0jx,~$XdwOg6f2+ @X2qg o% ȧT5Z`|Wbӽ\Oq^?t"]:FuطQQUAgoW_]l+P7v>LvY+^zG )W_}O |@u/6'MBo_/ VDQ۰S' *g~L>t\`.Nֿ{T7i=!/;nl9WggDxZ >S9- ?BA!VT|dc 3Ji_yu@g ً.6_hN<\ ?bLRoCWK\21OF'b`J^8yo2Xꪫڑg+2@Wа8C}@7wJ ja+ GǮ96.ep>g_q!{_A=d0'"SU{, m(k'bb] . K8;vlp)|tޓO>cM @":W)u$z`kC_4/Mz"Nx+!t? oA T|6B^Nֿ`϶x򗲯Fo&z}׍A2\miGQ#·eL,nX /}O: R3?.ky#\5OR qq1ģDJ iL<lZل +Vj_}ǏW]0dzx>筹h۷nя2'l=G,YzTBA6 ;YV<<@[#- h>^_ߵ`sgAvy^g(JtO~+JV? ξ O9]G IDATC1xzQm;rA/V̌UT1O:W`Zl߾L18S?zO<҉\L BapdGxGya^Ƌ1aWxF e82Q0? ` ۇ]>PTTU| ߻z 3qToS )Rce@[6@|O~oҊ`T)Yk"ü-ѳC^ϏbVQ@OE%"s.Ʒ!L:ߜSdw!}k0cʒ'ڲB jFf<_rM@?_9W$tOmm-oqG?zO<~b,PD~@宎~D``'7V 0WR [W+_Pvx%M1al+6n4ιbQJoB]\O 3d]px{ҧGYUPWuuuQb7XG+pbK%!GbMh^^"hhݲ' %g\\JAX sO9,z7R?"@ M:?!y_ ~|3k`^!AJ7,ֽ^PN87N8C|s1`ؐbC`ߊ˛n?݂W~~3@Eu4|7f?J44,Ao7G2@OKq&?3}6 ۱-&Gq*0xbWӧ?|W@m۠{;>NZ xa=\rI1 oFo3nZ<#_4md|@Q + d/_CTVW{8ɧX!0{c e]Z>\>1cJ/{=BhhX<X?=K3(T+ ~,Cz/cBU>}]7!2ٗ㔯~C,>AC{c盫v$gn\!^5]qYX|K/9UR@B=QJߠbtnm}?l6k }CA<@ $܋U^Ǩ)q3$]R3?>W@GߡI9O&0wVH0%H+/}_iv0T)R @Cb?Ȍo(@dv{/6Q,Q3w?{걅2</{(B;8h`(0ҊKEZ2V۱' -&D_ |t:OX泭yQވBk˱Ou%B_83=|bC`\-ʀwۧ>SKV1PWWfދgՈv6;7~( "3ȚLU>-bO)PR;|(O{h~?=Y3.nj֋D2lŋ#>  y^a,LkyʋM/džWvJ ']i瞍LeE!0Z6lžѹ&\9骟 w(ꔟ;<@*PȧXOEk˷0b~" KمvP|k1~R"tGcbC؞ m;}pp^.짇T|OM5:$Lݯ xʋs*g7 nJCNw5=3N-0/$S\[.@2@T(k~Ȕа״ >(q^fZ+@??Agԫ6XU/Q!uq+obE">~ޗ P|vڀMۣ\\nH֍P~~ZG):e!@0 =[/3Щ}Q:_&N)3 z*}#߈￷1rX|Pݯ쓁 92z$K/-w sG~Db @0PeG)fzFUlvөCeE-kaųt{cG=8ZK]6c֝yߟ_S_qvAћy]yz"RV ŋu@ϰѮ^H}?p!/zieß^QqWbE&>qXzJ/.7]A9W _6U'.|PV oz}}Ho:Ÿ[~붕ZgI̊0?vv-e%aڴiQ~&{m?R(}-zY# `_}Bϥo|pȤ!tJ) PPǖ޵4Z8{ e ‚ m7X , `E)Nh_޸'~4[z9.Kt پm ؽe;XT(TVW7_$<͹\(.^m{{̯ 󴥃v߿+,҂@D=nâX1d3S %Gj^]8v EG)bE(1#'+0 jbWpBݡ ƎzJ{E*m~]< ܗg| `_~Gˮ=xm "H!GbAp"i3y=!t)>LL,ιK\T Aa/G/O z/>?/0L}TE^3DY9JsIo\BH }#(uqWR_ҳ~(`괩q[6裤?~mCaU2ጮ?= D1a$*Q"5E:%3_n+q K|nE*(|)OŁ}zeYt 揄? X[ػ=N?),jG gUeW(Ci I.Mr^'G__+J P R(J)dL/z<ϋ¶q&`w3BЊ[7=Tor)X%>CR֪k ?O93U A@􇥤}IoC MW^4WƛByN>>nzr;Q—Dx 1^ef-Υ{Dݜ姻nާs5J P b/o_qQ %"zyF_xXȶu  S?v|! CF{jbǻMr>z.E+mZd+YɺJVp@g~֏_BO0L!0P+n|t8>SPf(Uxd~p ˕Q@V*fBqPg=[gS t6___Wnx_h Me&{}G ~naPJa-X&_b"FO/9q.{nBݬD,ތb\.d!'qcٝlMI*-<ϋ^=&?| ,x/2i!SQQeMϻL(\ [X\˕^]X-" Gʒ@D?:^2ߡI+m^Ƌ M~:P!Q@} NS^,eٹOx@Dgz6k?cFNX*#7#WŖ׃8̏C+?1{B2e_l̙>t pA1fu2aӒsp}W1jbCH `_#f s3/Yޘ7q1 (17@I) :A3r T[@*i6._%(t&#_|!`$ٳl f&'٫l k DppႁP8Q뙸N|F?Yfdc(Ʉb'soY^-@bʃuD5 $!#pҵ^3)YP|#'?Z#([2?BKM`'SqFL[a=CߠbCî?, &d܀nd|ٔvT4 Fp!MPԎ @yk冄67qBW<ᇏ㖁jts%(O7z>_.[FmU\[x ٖyQyWAͻZU($,ɒ$AllD0`c9;9>c$aL6)kVݮzgl}3igG<<6ڜ۷.0(opC 0 l %8c'H?4} :^%H$C7O; /ҹ .vWn&_K*1S1Q2ԀwhVg!T,ԹEq4 auxq;SLOWz}7e]?BBT( @U,}&|sQ2@)4eݖ.8uB_փ7f8^T驂@?ɏC $rs>sp̙j&+OO1cL{ *DsmM}~ŶDF 6B^!ʴĉyC6%ηc|Y9$,/5i$TWy`"OvT 0Є%-qcјwERu״ 0 -GhmG0gʧ`_!&< 拙xe|_n '?{h` ]/8OȈzLfvrspѰ}/=O9RhP_`H;PYu6 0A:]݉pU%1YyQbR[vG %~0x_I5DZXbE6fP5%-퓡"|c'gRX#6J-pnz +L%<97{c95fDfۿ$+7C"u4pd1Pf͞/ur2t= "H|6绵ē9gkh,@栤hfԢ "*O_S?=mI&v!1L{.:9](aP(3 /ϣ"3;޺,aX,LDJqdP*_>BTDzJlQ|ZH@FHuVerAvv}dT┫.DaQb8VJL~S& E]fzIn+|'S' ]٨ pw msUbuA`̋$)C^q!|vqðX4ꓩ.4- գ>Y?9p#0&?^*/U9f@Z i6$%H=Z5A^PZpG@NPan&Od8L0~*݈% ,U`PMwm6"(q0,Pz4mMpx}fO m"LDpKh$ s9i#iW_jg%jRaꅅ=% kCq0x R5{U\cY/ ~q8YK@ fFad''}Ꜩa$3FR,p0AoF z~r:| 1}Y T*.݋*֧@!)PGk;?7k'/كs'FRp5zH u?M;wW=#'Wp`s)s]d> u~؟d'{p/8aX,a#)Isau0/w*@o\Ͽ.L7 "b߬ܥەO@KJd`fGA9a$fUE=X @jچ֣ux>L{菪Н} NxT'g܈y|Õq/Fu]-$d0L:cQb6m64FrFoiifuQ䘀`|<嗢$X|oYDžs/oY"HR 2OuȖ&-'\0bI^l ui(~"+yDsD`9|/~񳄯sE`|sGlEQJ B]1C60KE= GX u"_nN zuNxEvn{DaB˥6CgL{NT\>Xvt<FI'AaQbVxVii}z^u+OcFuE̛j].C?Ċ?)@rbgTFR},\]Yn_h$ c(e={_=z )05m eAAq~{K쳋% 0{)Qb1H]PEޓHgݐ%n̽`=5sҁ` aARL#*,Z2ݨs'e=cL^\#HCޠ23D= w !XH&Q32,hy 8L;Zl qIQb5V %,qL<>Vx" "WBHݿ H|Ў㨶>2cl@r1Qb5654394'b9L JWEV|{$`ibz\S`5CR1)aX,jRN10s"y}Ps>{(Vy_4Y6(v-HzbCXzM{k*JZ ^v;xh MdÚoX (honX[R=z#$-m:=Ui0V"Z{|tq Y%Ev mۙdfgcʼckl?=n6)%9U?!翓6]yf5A?FGu'BVNBK\9}WCS;tIL@Z> ُ+/+,X YKg֨`n{|k6o ЈO?g %:@~#`LŇJ2an[,Kʳ:i]8ю;S ujTbls:Hq;5#d԰a H܎pdJh\p,bUur!5wCamfaaעKt55!X,}z8ẞm;f@Ћ2te64t?Vm{nQ>:f0!: <̈ b0GW96^*o~z|,t@RP>sJCX 6uNg4X}7溣gfV0Ϙ0,>g㶨`#"=ۨNXT;s[zW\Wۋ籼A8rQ %CǕ#;7'aX,}bFHGh7X kx` Z1}X+]?#-6oIl ~v]ѓ fgtBq  @h>(pسe쁰b9NFFܙXW#QGa,_$V< ]&"5S]i 5^yO1H3p2#zXc`Iq0p23zdn .#hU3g3za9w8'P4Y.8Ӧ$#+#MzKY)!XG-Y`tB@݈6< y]AkEd3A@ #i6a 2'|>!X∓<3:k0ιݘZ95B_ ЌaGDQb3[?z8bD{ZE֙N vP͆@Dspls}mJiI\_{Π rWcpi4':QQ<:f{%8A lHg~zN&&49Oh )ƼF@ !f ~qx0*} TLpY-5(-eQb߷@ ;Sҽr_أy;3qxSc5hLE䇨J뫐BXij@vAn"oBK*sp^0,q&;pOK+gI6w0G;_{/~ݿB]xu<7(? `j?X{.3(p?ޠ%ÆD=4-Qd6A@?,ihh6&`~'=#87^ & ԛ y@4d KyGْVd'44oOC qh[M )oCK\Wi{OBKAie@$ؕ-L+oG=K?7XbiK ˰?t#vK,QZK?DkRVNt9%pH 0lKnDpof~؞*(Mq νhURj"|])GDݲ@ti/:1( 9E\Pj Zt DP&@lPF\_ Dka0dZAnu,CKC6Að#J>eo lh`D. lLD)l`1@P r=q8-c*Z|' ߖ&XR5 m-Qҏ,M /UA=A$H874,90iux\Wo{Xo5'VF=K?ЙAH%\1&& x0B'%g#~81!E?HA(FXRꨇagkS0^PB!yotKnD[)4`@/JnV@OCh$;/<\~-E٧L.#Ufd8^9IFxH4%`ٲev~ee%h |h}\ǬwI?y^r)D֎ƨatсz)aX@>zn! 4D.&P]]_` ;o񦖾MωJpl"?q]x1fZ)@Wt31 w>9ZgT$7z~OK dn6ea@[H.Et4ug] 9{4* Ԓl,Ny%u"zs{_Ȁ!\ߣǑYD~T'~RGras-ufWMdή%Gס%+U|h$,hԹz ߫\70|&Q.RAz{yKj$#jJjkhN#SW`,UeKvtD= K^ 8SifG27rs@z|d@)^>(WUy n*)Q}gAB4~x_̥6Gm ,kk "Л05[ܤk(iBbH$`m<'D\ uvm^ː%~Rv]W.+," fG,rvZ`뎮~l?afЎ}-" w:~ƃeZd*/>T.tD;P-&*dY1!޵\Α]۩_˱{C$%KQ G ANA-lIVNf ä,Dx75Q} \G[c?WF 8D!B 2yl؂V`I.nڎu/0, l8m6/i>-Rm8\@;kŇ(b# :پgiQP)cs.X~0Zҝ '5C@śSwխ,D[2sGɃ݃Az H:79!Hzv70D^pM7qp%?CW싴 RoC.C8) 8Gd$X=ƨaI0C#~oXj'&w1a 7|&X?`"w'Ar -&@C\3-_ƍ߷kٷueԌUzdft:0ۚЈm<$UZ!b@.r,P8wqP@I%~瀓q#roaY̛4D= K)8Y PۼCbu x"Cuc5f IDATZĄڟ{' A#I vs\&N=[qMsf$ @ 6ZJ"p?O؋32 w tƏ盵PĮ-QÒp6 <N/? S 3 ]8nxMM  gf,_6$T2Ѧ oxe[mƳSðDȏM{C0c-0 p I#BIiX&:%\UF&Q`ї C QP>Ԣ،w{>aXҐmdh(i?XU?5%&: | *Pa6sN~~` P@\yL\ aMZ%zgR3&,/ g|Zh^ :2fp]Á= c\?jcLm|AYxҞxz4u]<ӈcB4 `>F#*$4F0`75}TgBk'׎kh藥&9(:==0,ik~{6lz>{ au&2BgFP2e 2۵?^},}bŏ樇a1k2ԛB̂Y=TUV@ʸXI:`[[r'U>hkp*dj GXffML[xۧaIQ< ֽFðDL #33b5CnhP>o޼sg#Kę}_'gBȥFTwcIAKTjx?aXRo2o2;o,c0~hT?G.&H2 );lظQhE%`Ru>*xKߦ 9G)-YcOƵt֦fJQ:a4? <`\>#} {BUU:a|HV=p3~iީX Y\" CLNm[(u;:aXRGKݼ=aXq'ϑ%z20GΛNS&a0K 8VIJ[ou<),] }X )+i@F,muQޓ/^z$獇šg^z$a2,`a=sL?#yxx٧?9t`ƍ^h_'JFϵZ% `ߤK8x#N?cITwQÒ$M!źa~0b]* ['>}~"i|3 SWUG UqȹV  aIBֶbIƝ<{"~@~絙>W3~:H$: .C:vh+glȋ Ɨz?.b8N<jկdð$sޟ}QŒ$ddeb x/x/V ?Hȟڊ9a!&mHb!cYH>!r5КK"Q2mLBn?mjC~=)Uu4dh{q'uZ' #ڀZL(Uզ3Po/$i6 h}TH(TG JmSHikio68P,Sx7z$cs H#v>%L9M` lvn΀̚ߠ8 Ӻ~nD~m8/8 y9MK8k/[hm[wo.n *= 4ўs-K?p!ZaF{t(}!^d??n-vTlăwH]np>X q<2V?+ Kc-'LS UUs ?We_֪|RPK۩ Eka'N?7k6UVWð$CၛE[ddc҂u]z#F@!T0~E;wy'Wx1y m#~F+ ';C{tۏ>'iKl-q஽QŒL^psspD+#ms̲A*h-ӿ^wݲ)شi^zS (kM Y+8Pz 'NiKx練9r ~{}P,IHFv&.:YH)a"? Ey!VVV ҿ?)y۸\Ӱ gDp^U~$/E~̮ poWP,@z SCH i@A%h9!-KE)RM\\.X[D,HJ(h#RȀa'sRKk܎[?ǫxCđ#ݏRNf}|-3N@X^Ih?ϠfxJX0ΘkD.@A*)4h 8Gf`ΚokOQ6w7 jD=K3c1@@H?FMK!~cVT/o'ᤌp]wqVOfTXE%"2v-P}|Fh}%8xGT%uhih P,I s8TAց?d>=j2HRfą8?M6aĉJᯎ~C..8ht*$PQ>šQKxg|(|NddWppB{k_+ZZ-h8t:w{ mo؏Fް}m?gd @F_Rn'),eM_9_x0 ëp9wڀ"20vt[i scgsOGG{n# xϘ6PU?5zUOaM%~ow )wp`JI7?f̘PVhJ%Α?Xz w]lxM<#F=$K[\ż+à\\Ʀ5`9K?DCqRO#H)fCʪJu}K^)|a厅 .0Ve?YĻS~M!@iZ@/1*C=h?j Ruz 8c;كs%I aȘU GրbȤ1Ʌo5 }a~ R@ֿ1߷_^z}IY-\XίsCk Z/Sa~-eL/42@)Ůx0(/LiKLi1dd`Gp;lj r++ 7!{Knf>BB80n} ) 8O*=D?DEK XG9p]XK Ucq8t(WW ?z8$'3;>_z1k)ig&zN.B#i _MOe?dt^ .lpV\\TM|Z w+]Sɐ˜_ö%M5ûO<5[0d(-zH$fpA}w vTl@vd ]AYu>sC8h$"2pww'Xpz :trVHh up#y$/d&%,4lOwmW8wvؾ x ZbS:z>~yŦwתUE-}c8/V^hȟ}Z"˔CPYYIӏ>X{|2Rx.Xd俨~oDCe!)?/%TVm{ϟ?9}VXM|aeR>"!Y}l;o$N]j@ךO ?jڕĒ,\p[398t J}"s#c@$-ʒC^Z8/b yb<gՃjT0褢 yԂ}z{k$X+xpEÇ"0aYA8Omo51& Θ$L>s Z,ߣ4Q`>=k헛N0iO||gz/POůiCH@N@4R@ux#9rFH6pE,hih–͇B.ƍBfvVC$ 1L0jDT.:ڢRʐSӗ_,5#'hB=Wi_F_}ȹHE79#m9Y:Ägb鏾;o:!!hmjN%z̞1 /$=æS2﯅nXAPCE^`ŹUTKp1~H;ӷr>mʀ@/LbE@ᡫ c5AbSGZG^J -K{8e1e|I:88{܋ h9ڈ&mDsCZ|- hihBsCq '?9à\xs{j_^q!ƎB?j𻛿#iA;,߾e=5~7\;79sw.k$%3-6_td,8.Ww/$Y%(5n$0o8Eɷ طem݁[jv.GKCZP,ˇa?9sJPrJԧ9TgPߝ&io}[_-1#Jپ^ 5b뺱=Q!0$pGk;v+7@8zN^rrBI8nGjwKoK-o7էT1111:<ؾ ho.ށ̜>ާ:ʅxh4@:P**+{}}ҫL&.3p~RESM=DD2Ɖ6b?' p&c(7^ QKa P:zx'- غ[T`WfZ=hOg9l7xzW\gc?IH1܄G~Tk.@Q뀪?:^[k YPC)vIDZF=;FVCٿshtCާFv1z${F҉ l]Sk*w6mR94w=cr#y~dg)XpקOP?'u_0=Hߪٿ䞥K(^Lk_ _ߋy ¹Jǽ*O{ok: %ݏ“L^4\y!Ιp6Ԯ}}Xuv}uxO??qyg~|fقu5rT.d;m+F1뗍}(Qs5QGX g@چi6oc;vP **I{_@.$ayZ♊HWh+NeӆAyq p՗$j/pcۇZ.6!vVnu轀1YSqƲ0k)q~J',=3;57~GPOҡytܴtz|S)BF<81@"b5)4Hk*CsYϓ͟9-м}_bUk.EnQAÉGDP]ԼU90kv IDATŸΞn(U?.R~ 8g}Osf;H kH?Y)0V;aq}` ~M::_䜿D;V}Ohy(OTr6OF@) 4RͭطM[@r0p5`pa~3b^UƮq1L?D{1|خO&??%;yCqwcP~nL7g!BBRMb}93.]xk|k_;;Nic OD bЋnxh{~Wy~apA_} N┯?UFժLD8/ZnE|F|wq韐 ~s(6i7 ^#z߿_t="S>ws/0|1ˇo%e|EASsd+Bqd'E8upz}uXkװmm''Vb3pP^.~>ZG\MD~\ȉY'SNQ S`p9oauĀ=ؽs=A R?(\}sHR!3z㮋C/Z[/r pڵ+/ QW9pk_Ͽ-F?ərqwIS/+OVs(?n:>qu#TJ"dBɵ**?߻j{})`˯0RLE_EAHWur,7GT:9'߂O ]IBdD=s >*~R7/ W5WH'AjyCps=OSdm/) D\H6-UKp(.007 Ǝ#"v*cd ]mZ銌9}` _w->كS7:VW,} 3; |38y=>woK?*zN@MioCx{iY054Yp2Wˮ?NS2/rlۺ cǎ T?52'꺮tP9Zc'zLb2̻|d z8ݦ^|X oF?hom?5߾U׮\Տ#㗜S=/g4t/9KH_b}E I|Ϸ?P={]ހg=$4 Mh^qR!*5^*VocкZwӐR2|5(uތw{<2D=K?S/1߹[ق󨢡8Ӵ\'Zlf~+jopW^5rn* ~\偱c̀G?w;+77-i._q7Q(߆\iC ;f>v8VW!e$:PYYI8/z{ʀ8w%G) 0}vQʼ$`7D,! ,2/|h>Æ/I쬨-6!}y|+Q )i~21<4qpTޠ|D1{,]!~sIv)ĀWy)^sp3& sb̩?(DQт@i 7 )jhEpà\y8KRbxJ^z8$9 }}gKe:.<{aNLA- #PI`\G$=ɕW>[Li_WR@y 170`?}_tApW # Z+ж`=q220g㬛F~iQ o@ի=K(X16l0m3iXt Z(61e$BtƟv?+"2 9|*(BKKB?b %w}k?o*yn!30u 0l☨)xObw͖cIr:ׯnQ2j4E8W<㟷ɯ=M a"mrc{ 4e@G{sc-Mw?nMJX}#.9u. cJW7z o? z8d0\x׍سa+N9(~(X.s-#V׭M1v%KTٟur?0}yyy ,O4C% p2vDk@-Zx-Nxaz7?k>Vc$NF}3E rPԁ:0|;C,CR 8o%6|/gx{+rn| 4ڒ~mu9׾t@O}hz+} ӗ]3]M|\_êW`ڪc$/[b)^f<}#@-#r =1s%[{u|/9~FXJ֮r=J kK!C8MU2KȌs 8u48/^sx JN(G#͇=Œ~)?Fz3.~qⷕq,^ Rb XZ/^f`u~/PlU!dі3y+[7;  ZAp=kMmhoD2+ȩJ(uKhk,0҅q|Zk|27N~|Δ\  {om<6@G@". 9|3|趐v9Zۄ-p%H1οzႨʾ-xƚg^}-0u1O1G紊*~hπ̨@f/^xgo3wIK@ Xw"܉0د B H`qAN~^'$]5[a }; :8NNzB]}J \x㽼մ:!u]p#=\?5dw'3{<%Pw#XoEӪJp_J5xշ bt'{o2Z}*⣹zw0D'q֯_/O/ŋ.N6X @8w8Sϰo߾G"?AE4#r͛W+n]ljB{ۧ1ҳJT7Ok%QJ ƞkƝ17KcH<Y& :UR_9u]' 垓 SdC4BƬM!J Zjxcƹ˗apa~c1Cؼ#k->?}g9rK zse?H\tVE8h0oR@';@S>|l_lj(UL_wkێ6JhԔ3{3gNcQڻx၇ҲݪŒhr pwpDnȹ@A)Aa~yunRuZ矱bCCX҂A8Q4j(':[g^_siE.A<E(T~zyeO!H_$Kw|i _={مO>a<<CzY-cع/߄~}ju{i ,G߲|J'"@P1_lw'f* Yb뺾PP; U;qWl|C<fKX},̽|PS@# tfCkz@: tJ8'"}:q/r&d/>upm"a5a>A0XQ8'܅ʡ3oJRI$!s%UDD BT0 *!BaT!Gmk{=ЯQćm'UI1 94\Wi^j`jE@v#۶F?KͿ䒧a%*k cgc5jW.ϖ |*bԣC߱gx't#E9d55ຏ`9qރ}} ̓.P5rROme<< ;-~?Ύ}ےXQ}gi'>~ Lo#/{K_fUر~)fSZT8,Zhg`p??rte_ekK.4 +/G~~zQl~SUC e,:~=fx_$K ػV&Bni^ AbѢE`!р| ֽm+s~v=lWk1ÐhYp հuWr]EQC࢛?'6y2º*?؞I( hk }Y---kepYt)Ƙ0 { dW.0 ,wYƳ#?Įm۫(ʁc{N(22}p[Ö^r^kmkxKK?HpYxSG_lg( ,BP(ضdO|`ɫഉSpܙQE֟_|CWeμsa\nUbލZe YMg>v\Ǯ̀T8,jƘ#3zR`M 0ľu^'+ T[x 31~,`Z|$(rP?+wЀ0Xu$]WA[H㶶6o 0婮΁uT8,ja#mFuKbº%/یՑ !" v_` UQ倓d8cspj1:Pu_o*zAfKeX0g^K˓T8,j|?qA;jԨ Z1m—+%rǩ} :6lAs}EQAKĈGA|>9H%}VfncL'ZZ+ U ZxJAP5Z)R \bkt`3+O(ESqqxe2S! Sbx< ͝7O??iO{l.\mۆc9o|xɭza>A9 L5MO/Y)FTQӫ\KЫֽ+%JHX[_ks 1`yz#W/cD}&Fc)? 0i' _.Iw? :gWak^E wK1dp-x{]Vy [5P*ý`O̝7oҭ(U3^4߁ЛkݣG fNۗeSugk[UܡUe!8¤N.;c'PnZR`es՘aDn5<6fZ.t B9@5+RĶ,l?c[Z (>d8upƇ5S]v%ek)7|Uz TqktMxٕPz.#Os'OJ0(dڸ nB -~ P~fc0Xـ?P(AݻN5b)beMw,*`CX[z<67)P;A,v |u 2r .}\R)A1"^|Oܵn6%Xf)QnMôS0F2t+~Wdxd&#{\ܬ/9BPcGC?ЬhqɁTZWn]\ca/۷_&wݵ~3O 0wcڂ8nb]rSR}Z|G>[6WSKDr Z[[E}@;OGoV閨px)~Nz[9vؠ|,1}ȕ2+ 2'y '~޳i+~%l}5?HQ e8i8C3qlȨҕ5k1c!ym-.oU] ivs.;P 70?!yRۼ:W>lp9{h PرoKho] Yt)W8y98b 8vloJO6,+f{eYpr}p_$ >Ɣn*=믻R#Η/JC n^6tp-{+ 2T s߅)Cܹ'lZ2 {9|z닩Ma1KcJ%tu_9bʁ\[쾶O͞xJG]2#}ټT ~'eaZO*}_&dBQL BR={Ѿ_Bǎ];E~ᔦcj@E_&]ēB\ !9V `mPxTAxÍ@wcF.K a|%,mccNky vW?e .x/ƾd5YpUYL:J!WZoC"O>>kl}GA ߐ<#S829P&eyrR[a[ ˎy9?d@tڋ/+`k0Ψ&NEߨ}Jȗr>_mƒ 5{f TxÍcyEC-|r@ޞ{ڗ_"ÇP۱uWAؽik5 u?& ?% ʤ^m-=k>I- @Gϯm|܄rģ @n ']uuubʁsǓO,[5ஹq8!sdYFFlj[UsnU~4S;?&nL~4 <eކl P޵Wb>uY o׳ܝS+R*uy\cpPo`Sjlyuz7ԝv&w:=5{yY߿sT칔@x7Yc^V?kYfkMF%7.9Q\%e]]]b?} (.{l)~!@ KVG`ʵԶ;D4;w*j >\uKS˽O#TDÕծOcmYy\4k*GKn\2˲31+Zci^y~Yܝ/b VpEO܂vm܂-z [׾m^_HWmo8aFsƽd 3y<^5Ik<>}Rկi۶,y}x@=Xڊ`FnljiqǢ QMKnMD? AQڰt0.fu-k;._9O+ <]tպsXߎ!oC]1`: y[׮7T*2 0#O'OˆǣWmZ<sIb+,;' Rx2_x|I_y Qқo,6_& _Eغx@:筂kagx`]hغf6y;mr ±FaI0I~|=z-}2iW9evSl>ާRoBox;~LWy=X{|RAa5C츚U%v⏄ G9QMJUz˭!-l0njkO{L7u-|@6׵i?pED YwJWx] %> PȕY ޽e5 0ْcs>Ra 7&}!\y:c S 1溙KP@Jn F.@?ng[$]oY(({Ⱦ`k|ܪmNH)]ٟTyicpaa.r9:l')ח'[6T"(][oH_݅l-/B˜TnuIu׷@J xV; Ԙۚ\I%C8Wжsa{9Jyc?#˞硜 r[e|Ksq0 ;1yP0^],8W/C.rnWZ`$H~"R$!+ ]6]W.\rUGLqs_(tmBOY2)@S&˗ {c-3f\*()TPo<_'лy7.B8T Nr(Ql/8 j(Coq 8.9? юTg&wV^mкizO&KJeM2?V#c}~)OCJTƘ? gxR\j s޲ˆW^yp}1a_g9gisIt^9q8!W׶߮ ʉ}Sq8[z 'W8@5}BP(9%^!2wܳϡgޗ'|.pT,~7 Vre_2?"*t;Zn!c5i @a\]Eݦ7r,P%iEȽ.a!<,fE,,B}dAY%=Oa߳9^ shǕ!Yr)v 8T 0& CMnኄE;,P6b]y=B-%,2%Ͼ 1|[ .>RmH+3ҭp\*#\KOFav"#~OV#TPd=9º#f"z#OE^TAq>!ſ+>.]v)a8}˒ VUx} ;??!yZļ/_3m /+tmursn۷MEXAZw^Fq->gR>lmmmAx0ӧoTP:wy0-b؃vܸJ_s^ c)b_UZ| ٹsrJw`C!<._* \k4vS+Rx[ac^jKrb>H) nߣ^;,1kg /*ʁDq]wp%p!>@, ],O 7I-quܦ16{ J<_Vʙ؆9V1qH:.1-9LigytJx|L84y鍐K.yy>[P0z"EDx`oBQ(8(3,BԽgx[vmd}\r#< G /&7 9'={V,Sz,u&6u}^{+)Thr_[D-c̷gC*a B?|(3ٞ^}}C ^uk!H!o.Tx_V o8TlԎK~s5*_rp u+~DZ_>lE9żav}j^\ǡ¯OګSBrbM"of66TP;_3c,"~YC}BAHgi۾JF9;4 nbhQ-K=]mXb" ^/O(S C!#'J/ Hw!oj׫6TWؿ6O_ Ԥ+Un>MDPf44Xe[jk23N|פ7) Ĕ8OFZKOSTX6zϓ+;& LLy%Mqs W9sJ8˷ Ԗn#':@DOxIЧtTP%w \ /=h= R 0i]xY'-\_mOx%-t{=<92Q)o{! %x#<#^^oB3n-p|hŇw,'حP{.|׺ EpA(rŃB6dHE&n._.ߘ1+V6eD;ٳwCQ)(G w}ČOc> `$wK=h¾xpR r܃ʅpw;aegY Ys8܋ۑMпrc,>glPy!ү3}yhkk (:uOf77 E9P@9_MDM>CV ohh1 .Ԛo)Stۏ/E~}Ujpon$17?V"С"߾PK#Iҏ>DP#U#{tO}> `JH&8NX7& 7̑IldB w*'z; My1[*1-T^& ʺ1+>Y9P)ӏ!cs}5^CQ?(=;hKA,DR_Z&L q̭p{R< еlGZdtG t׎nQ%"z̝br Sa.\|\&3„g ] -MW&\ko9ʸCUχVy{K}c^D[?v}$)fJv/3"GBz6ʅTdJIG}cFJ8/r mNA.$e/DWzTP_W89MP ,^1`EkY'Nv[ e;OJ <`u!tWl\cHMlgF)-Z 7 ;Ef^c,~o )Z/]ze(]DE9@)6TPz_"\'z@z xAZϋacꅞߋ.Y&)[ A)k+UqE9(ݔo<l<P" 0 1hMI~|y]HL`K› `#m06x"z ڏ}(ߨ(=o&cL!Z"1DZDn{(L{-W~J+((((((((((((((((((((((((((((((((((((((((((((((((((((((]BigaIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_32x32.png000066400000000000000000000045061346506225100224570ustar00rootroot00000000000000PNG  IHDR szziTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+?IDATXŗ}lW?}זByMeAXth6 /Ɩ[RP`3n*@c  1-.k4~[_hyk k)Nrx9~{.||m۞1ؔc09ꫫ77{ny,Ƙq0Xkb5rߺs }096rc ql0N18-0bŘkڗ<|OLkMlĴ]#v\ëD$Pc hįdoDLd[k׮Gvv11xiϥ ]THKi>F)N);w[mUVVACJ#%qOzXqC+:ќRuRJ|V[y׏4OrO'p&y\C2htsmjCTVqKjɐA e ؊ 䜭[bxiAVʧ@e#CŮk(Z,'$ef ạw!bۗ=aQ67E YkA!F@u4N Nyx%G@EAut=9FM 1GST_8)%{իtFaH^ v&|?SῃG @ ΓO>P: iqW61*W/8QwH)p1yOzֆ )XP2kѽS5!"Ǔ'O6ϛ7ojgR܀EZ➹)izso_ʻ0󑇨XPɻ3CI[W'{W\5Pc+ %FVMGG8{ _Hˉ `ΒG(,O"RMH)#ݳ7gd7n2UlbF;h8}8Q)V0r&ysU|אVޯSJjMmf/=N%DpἯYdIFK{+%[2Q0L+fP؂<^wٖoذJ)C)J\fLJw}3a{S&I&LL sv -YJRZktB"5"hH"HBkR/9}tC?٦MkJ%' ;(J::pѢOiMvlߞ#*RJ$ uZ+V3sjIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_32x32@2x.png000066400000000000000000000107041346506225100230260ustar00rootroot00000000000000PNG  IHDR@@iqiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+IDATx[{tE[_i H@KHPy((<$YuՁAEu*::3U xг( `" <~}tM1&s:5oc4DL@kZuO=摒]NK/1݈h4SVk#"-~; q1q4F3FsϕteW^}9hyX;#h80p{T:t(H b ""BkhU]&u1fyHkSD`k ,h[C|kF4Tעgj`Dyxn :|IIIuTbc+W6xoNڼ"bL|01۶QGvŨ-9LS:9>T Jkf;AR@n^ͱ3k׮62dHx7oG=>Xk$$dE|v?9PVVlsիWRkyw%"m1#:l3Wk էbOn$LG\Fq˲u2f_늀 }b #fRh6l1(ٹ;^GMQw'yM$203̼W\Um}Q  "2IWm}?&b5Ԑ~̌J}f|,],I;* 3ޕ߀C@ZZYN "8hh e]C#ir.ȲpHEp*MDy-d#;*Fl\%O C35*Ba7\?|FQVVf%Kt,Y*yO ́1%>.n:^2-x(ں#G$t/<ݑ\,0怈ph{~tEԝj=Sbċ;-c]H3R|v0|CmoxUgZc@P,xcET#=w6j>-b3C)RuT]y"9#{?؆ڌQ1g&vZBޯQZ)W233{Gm?EŃ1Fl{;/W>OwkٴY3ԕ AFVfM<'JCD(7>wg%$c&*o5vO R!̜^6t@D+:'E߁pۊI> B)YG/Zڳ<@DԟEeA "w-}]O0 '(EZAD$OAJ8鮘:=r7*& "$ZTq,KYHuNo+\ #Fݮ&`}s\E1ƵL;R03["OX:"N#{nsf9}\EhԕR*9y؍MhwsKmv# ЍM #PÎ3ie!tUF]2ʊxĈ X`["? Ycschge  8C* ?4ƠΥCL4&'FBéӨ1t! pȲ;&IS a9Y31FB_KA˝_ }G_1z{&aǵGy"4Uc#a'011Z! n|]8qUe1{}`g(9@€nhhGwoy=x 0ShwkA@mPk}LkZذ6|ndy "ƘhhѱeZps-Zk|w/lFQ7xI:%i{Ƚ+BQC@DطopsmP9 jciۆm6|C;cJҶ+gUѺe`:[kh^z.!vo_W쎐ۗp"E5yPz+v>tNK;6(*,7,#Ek@cpxk ;̌"vzmm.[mۙZömr!G#xQY>SS/C!$MW' zmG 9zc6ڨĤD+}}X*l_ R5<ж ÈkSݗˢ7ME4'5kִ9ݵK|PseB땈rN4}w"{(xzD,xյhj8e)R& s1zD|jX*r%{:/oooWÃz݈9¡8q{ŸYWSY݉j şBopPOׇ|R0ht\5-z+nv)Pʂ2jwT>]_?`^bDO6j?/];Q.~:.U-NǪEbfT:!'?ࣗ/[.wD9 "=_q

wݽ3Ok4'f3'Oݥm]s{3 h.w#x+ꫯe4uD5ܫND*++ѿزqաr>l}흘CWn1)sb$E;~P&`fGQuq~faÝq.QsLW͜%C-f^JDig;agb@Bاϸ:"z7/7w wAdጼls,傹̼-bbFFFAWȞ[gHF x£nsYZ]W^9,sJW()0 @uaԕԕ& ep:2ƎDؑHݫY}Y肗7(MSMEY0zSJ=̾P5fe)(e>}vz%Go ae-3{W^DZDSN0 JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATxw`ŵWŲ ƸKBI^ TK! z1`cMP$ɤC ` n+M{fv+YҽW:hwvfvvuuϙsΜAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA[Q õ^SIDJTJEP P* hZ9E)lҟATDG 0@C@J!*!D C "UFG;f"|`3@(:HD+/ tB8`,?Ak9MHfǂ "uRN%B*+E`%hR}"zJ"+%^ ](̘q`8" j8q()r(<)̍;nA,]]\` Ы^WlK tB'q뭷TDD 4]AtYޔC ){ ƍK4&O~-(\)_ JUq8&> 5W^٩ BAμU0?)gIl t$>?Í~ @?LH籛!YW VZ鸧Fj?c" [^ UW]4AHEA(YfVXN'0ԞsKl(u|((-M-2ѯ&$ǰjjeJDV‹W]uuK ٳoHD >`Y]no @ Dhc].6r 4C.ӿ>%3xW=={O{W*'YzuTemp B " W_}`# =6QN'  `GB$}xr6K[K z!洱%=it/~WiPaxYz*^a_YQ)4+\s, Q^˜9)t" ^VMag衰&"[LGfv(0p,z~+B)"+1v[wիQXõ^' ^(B;xp<ӂ.}_?mO~e r ıÃacYzMTz6RBu]/W У;EMDg0`9`| GL0fy2GADt#Dc?0a7['ք+ ~͚5+< <_`>_xOj.C@q̝;Wt4lAm GԍюYnקG,Z&~'ۄMB$[ *XkNP A9>be_/ʀг@̛7WPP nA9 :\py̭iվ.e[ \sݣm_' 0v5C'%]W^[_7p(B# Py|':U`;#7M:pc5KHGevrOZoW>EZ۴z\X; `e7WJT҄i9k׮ s 7I l@(;~;+ Ciro &$2yc.4[>\c 4V '/r3~gˢGT/횩qށXQ1MT'KnmBl뮟'oFDB2/'$LU>Qή>N<3x=Yr[ .K“J=>c4};|8g^5kZt>z>yM7 %]wU /8ǹ_>!8L00 ,"g\|2$W$%w?fB9(+'@3:gf_nžɱH m&, \?ao&II,,%]wu8| !Ai. L01*ӤΚ-߿3/ t)QbV/'poc2#$DDk&R*>ԽftMAJ Q: "^P`S }rng9*c2D]SPWOq07el12 ;8l ME3dCaƌKP,D=,~>kv5qDY{ L %[ ń]5[qePX> {5_P?y/ DZݯ9 O*IKY?9SwK7k&vo{@~,1cd(BŽԀu]`IMޞ버e,Ec `rZV$l =Ңw 4_taʀ--wR'9W{f\t;s{\k֬A&Θq\@v;P!@4i!SҎs Cf9ߞ[MM W (+r ||u'r2Nr+ʿ0EIy'{p}cM.;W׈mn79* B! m{/F$6 'Mk"=7fr^ 1 .w)0})eϵc_~!iڗKe\)ӟ>p) u>۝ ZSS;\s7 t]νw(8D563~CH0fz]cF߼Y_Kt aG߶w(F_B.=gOF,ܾu c'HV~\z{0 nv ALD_ꗃ"/7:'Md^B33jKYD&|;_xRht5VW\AG^vkmjOҮ,>u[w_WXD]Y\G>@#iMgnJsݢn[BQNWr'5._&f~>3N94OoS[#\rmt{NDcp kD7ȥ,Ă%xckm ano>Gr|JR,-:s@4~u/@A]LIs>0ye3n;z"Hkk+@k|Sѷ7 Ie.w.iE}͝!+=_p|SX xY p]x\>9kIA+ftVq@b[fΜ~"Aߗ!й aL `9 lmB8!PӖ9F[ٗ7{^?~͂w3䙉b p ӳno}==^䌟'$˒1",op Ϝ93 A8b@(oEuDɓAk *vQ[*>SO#>X]D`(PNbrEg?K0+8Ln_%20g,Sb+Vfb}z+Ϭ{!{Yׇ\p߂ F,Bǁz@e|O![BƬKT(s2e,7dRĻ`}$aʵwKugr}?- u~s-gs2JC3{}=@Dhnne;Ϝ9(Bx?B2Lј|u?m8 >9=@>ƬǒPpL?\'B\ n%ʵ0(Kэ5k.G%Ap" P?~9k,g@ȋ(B^|0HF;p -w-l Z?"\N}/zִw>_/D q) r)#?")2^؎ $k cŤ>|]/| ]~9L˜+܌o%\c_hn^g.3nMvr" ʯ?x] |*eSNN4>Kf.Ae <~$Gheأ5[ANwAxٶ6߾m{[кgmo =ۂ=-[[Am>l6~aB*WYLM5*T!SS O*jSO2qEPHFdz_[QLAm iS٥Xɽ}ys,mcv]^8gn@ɯ?x&v}N28l|e׷ ]2sԇ-Y.S{v)>/Oؿs~ {7o}lG˶pV苪Aj`TꏪAr`T\-؇[zsl?%fV`Ete&5"`(jߝ={vcBoG`_ 4d)m`w uC&ft f)N$1N>F}[R )ݶ:dbX ִ_OYUVr`H!?8d`ΌJat.XG5t\ns[I>HF$o?ٮ)iΞ=[v"DW+3&?&m8vKǑz?y'K7|>#Ďηۄw`ػ)-c6]T Q9_ EoUd 4OY\7g2?jRx<@!X 칕NSSsB(3gFB/C3sl$0eʔ/*5u ^`S1U'*s(- i 7wŶuEX=A8fP95CUW&ܽ.kDIvX['wr^6>sY{+ל$%a}X9iK]>}W.Xr[`غb-X]6:!gPԌაd.:ml?H݋[\ A0pAo>SRAhnn9gY2K>ae)s\R3ik6;&au) 9\ pއlklƖkuZ\p݈R>Շ Aͨ!V U.r&޺B23`\?ieHcޏ9|.H>gΜ BE^o~; J; $Ngi>TA$m׆( Ƹ2W{vlGgmؾj=._-UgeRDyDC!CPy@yp N 9OIMٺY6\ ҅cs`t}Rsy8qQшЋ~A߷X6ujrF;?=뎚u?6%BO3'rݵlxm,_m5!ږFRFUdP=|``!3 9I sϦ݊_e&~+½/y?w,ۥ`c+֭sQ o]%KC=}&_ lKњ^4D ?v닑o_TwF ob(=Uע#Q3n>A0a ]onk>0 0.mn:Ww|o١УCe.P_S_cϾSY5f{M}U@q?5\|ob+{g)T:}8Շer7ʝ7NY?$d>)߫Vvm.!w`D<K}N̠8.6w)%o+.eϬ DE [W6ccKouϾB^C*QspԌʃka|a*K8.[yleC_K }W8V-zw#}0L* a>e ]O%v̞u]U'VLuXؽik/R5T 苚#P3~~5).߽H_guB|RqHkc҃ ͅm%sΝX{Qz?G(p"SNkKͩ\YQZ?|OPPؿg_^K_ǖks6A0>5GϘ*ϡJ\|gʃ"9?Yf $$W P\s?YBÏ㇣D 6:wz i~u@/ljjv}W, ͛7o{.B9" @G&B4`ڴ_8m/\9`;OfiiW Zw{"Zv) Bx}w(L:*4߽Oi=B;pY`5@[ ,'͛:G | :-䗋>6SLFY@پ*H8oٱ+7ѶoW%̠f(r(TuUXj pE:fp`.K@T?>Dz𾷮^eBo=5u!3_X-\5v`#M\ZFDX~QZ¼yOt", .*G~>t!ǹf^|ײַ֯>aˊxsXڻCJCohd=WJβ]!H*֭3Rl( -PDD)\f~M-hú9VhE.$XoAaxkʂߏ :k| IDATjQ3m4*ɄKuJCwN!_Õ8 +Ν+6GgU& WB W* J BGa.l|g%^dz0CBFf~8FcX#_!sFf. #OR7Vޗc v_[k.ĖrAdGͱ#3?E5?N~Hkcc~]|oe%(%EG= xG, <-y|.wem^O /t Vc^ps) >:玸o__ ! @ aщT-z֯S|8|kbXO~bD "x%hٹ}/Ez}1;c"峷D%,`0Ie+lրmJ3̙\PD(`!92mw T r~r(k{Ȳ>Ah1 x36 lݾ+?휻u2%.`7̙3QJg>|Z]REYR-՗s>_~ۇW-yK~Ah7JjTM=x3yt\kJ4siD"p`eK,.؇X"+{(5B18tpX?ȯ3}. 9ss B @ihlRzOzٽ+?@b' 6W ѼK(ֽBdע+ R+}= ߌ>7.b[ Jo̞=Λ ](EqIÿwBsAz/Fx%۲-)T׍F#n v<&WП뺾YcdL={GQ@㒆]^pԥ}9b}p-9%Y+Ef T;ȇ6ev_Z8:Bss3XQ%5`>Q=s'ʸ uޛYo?LݨU>n9k,ň4.i8ZA &Q@j U4JRA(eBŔCU*wF,wO\!Hk%mJᴙ3g](]ȒxP^iѳ }g5ʬ};wa< 7nj%m!?v @x'u_/ kK*͉<RΜ9S](]Ē3Dyk6|wle`|Tw_>|ӽسELPn>PF*/ `E<~I3g\y# @ƁDRj.#"C1e Pnwk bF)d&D#D`M,UߜGV%oqZp̙3eq'# @'Ӹ A-~(녮 ط}r믰FLc @1cʌs{vK=WC >R˴%gg̜9sE&P4(~6 .oj PkSwI_~eo' Ru{сsN~qJKB=BQJ]q#C >4#=2_J@ZF.8}\2SC}h}f9h!X-k+M WVbAD5j=ߢzAʋS*\e犧^ֶU2~Vxk\?HN sckIRqٮ];Y_ N;W,]!BNqI@F0ӧO}w1k~|KHR$E_g? !B6 xH t^ѫx4ҟN\W[JG|Ν;mKgO8'.]#/HҸa g ګ,\ \`/s-c_-˿C\rbHTL9İL8d pσi3d8(455YmIr8D8<8 R"BϺޞU D:]~s[x,B#3f(I\wOr/򮶹c5m.[V%k D;boߵ(n lӾ.s)\_j Tt?v/!A σ0A,(Hܣٻ[WKqiA‚܆};vг {PUdx%{a\㙽Mi˂@1cd3+qHԯR'ӿg:)_K2W0`_~ 2 wW#BO#mfd5ٷy O &0˒ 0夓NIb@(”̟ o[Hrn}?@R&HO)}.}w |}z|Q-P*K؛~8}g_TvP >q@㒆4kz<߶mrl<<\w t&rP̜33N;0Y'8nkr8㦛f<־}  g _ `KX{v-}TY=g*`vh 2V&~="A4]m]ɸ QNd.cA=q)_tхӞG  ( Gܟ (Dim?r!a=`( -y/A'}f[u097gJ.];C= ]tĹ@\] ©zYPW7-۾( Ln)/o |rja;h Xp,k Bm><h>+&e07sn*aؽp衣v=d/CbRhhlgA(|f>T|eeڄ[kv} :ܸS߁ ׷?Y h}Gwn:._v-oQr; % @_)T(0GB]DǠ'<@e LOڃG|AO vMPh'c~r`T+i`*v mMBR?_{7 "P&sS6mNѮz@X/xOsعtlk^6H?A=[]|ntEk! wD5cxr!o`"NTJԱ'HŒ@>] fD:xgDWϷ7r}iJ)YWe;lAO {Q}HA{dҕ,nR";ycO>Wye}ޞ04*&3fuZH~;F N&u[7L'AQ}p;^L8ckA2W@}}ߦ쾴P_LCҸ#~A> 5w?fz\ϏÎ~}\{$hyo .!2f|ܢH0  _|Ƚy!DOqӍ<#5l6CZM2Ho.ʂK:A:owk}.L+x0H5T$lA$Zq~.(z60 o/<>LEX GTzk ]Vx캻%  O1>O])en5k Bu]gz @Ccp}ᣴ ɏL2^l6jk+6D5/?} gFߌiZXJ{+ W>;Łƒ<(EUlD[ُ @h1Tg.BW=7 6d?u]=`$ѣ|WQ{a0o)Oԅ| Ex67Vx =v ~qB1#'!Lj cp-*TO5*T&8~f*+в{/4o֦ ڼ[Ÿ[6`K[:o5y,>amO;qO`-{Sy0֮]\wu:NEPdf(%ʋ<Zx{#Ꮈ?*0D??7-_( SyOyA}&"8t'hEoz_ O>q&|,j{Hٶ6+xc} Oav j@7LĮ1>]+5k]s͵ܭz.p%07RR,iY=붕@evc\e\)#? *TT`IbIS xx#V @OA9^u+ H춦R紐 aqˍ^ghhh8g'"J e~z d2A|x*\A- aŸކU/ѩ-J)6}2>CO*3\l^݌fދLj-5?^(/2gDʘtmWB0 &ԉ\s>[9S#S}%#SlH:_b?nE`DN%#zdAɠ'ᔯ|'{8ƚF^/P8#Я0V?W'- ^as ڵk88ꫯ5Ҵu_pA]?.8 <\e>  BAg2־Ѯ B~8 I|CIϯƲ'G㭿wW{HBvjQ56*}_ 4T.~?m87UX`W_+{?F yXHOocl!|>v(hP/Fç/GֿQ28 0jx,~$XdwOg6f2+ @X2qg o% ȧT5Z`|Wbӽ\Oq^?t"]:FuطQQUAgoW_]l+P7v>LvY+^zG )W_}O |@u/6'MBo_/ VDQ۰S' *g~L>t\`.Nֿ{T7i=!/;nl9WggDxZ >S9- ?BA!VT|dc 3Ji_yu@g ً.6_hN<\ ?bLRoCWK\21OF'b`J^8yo2Xꪫڑg+2@Wа8C}@7wJ ja+ GǮ96.ep>g_q!{_A=d0'"SU{, m(k'bb] . K8;vlp)|tޓO>cM @":W)u$z`kC_4/Mz"Nx+!t? oA T|6B^Nֿ`϶x򗲯Fo&z}׍A2\miGQ#·eL,nX /}O: R3?.ky#\5OR qq1ģDJ iL<lZل +Vj_}ǏW]0dzx>筹h۷nя2'l=G,YzTBA6 ;YV<<@[#- h>^_ߵ`sgAvy^g(JtO~+JV? ξ O9]G IDATC1xzQm;rA/V̌UT1O:W`Zl߾L18S?zO<҉\L BapdGxGya^Ƌ1aWxF e82Q0? ` ۇ]>PTTU| ߻z 3qToS )Rce@[6@|O~oҊ`T)Yk"ü-ѳC^ϏbVQ@OE%"s.Ʒ!L:ߜSdw!}k0cʒ'ڲB jFf<_rM@?_9W$tOmm-oqG?zO<~b,PD~@宎~D``'7V 0WR [W+_Pvx%M1al+6n4ιbQJoB]\O 3d]px{ҧGYUPWuuuQb7XG+pbK%!GbMh^^"hhݲ' %g\\JAX sO9,z7R?"@ M:?!y_ ~|3k`^!AJ7,ֽ^PN87N8C|s1`ؐbC`ߊ˛n?݂W~~3@Eu4|7f?J44,Ao7G2@OKq&?3}6 ۱-&Gq*0xbWӧ?|W@m۠{;>NZ xa=\rI1 oFo3nZ<#_4md|@Q + d/_CTVW{8ɧX!0{c e]Z>\>1cJ/{=BhhX<X?=K3(T+ ~,Cz/cBU>}]7!2ٗ㔯~C,>AC{c盫v$gn\!^5]qYX|K/9UR@B=QJߠbtnm}?l6k }CA<@ $܋U^Ǩ)q3$]R3?>W@GߡI9O&0wVH0%H+/}_iv0T)R @Cb?Ȍo(@dv{/6Q,Q3w?{걅2</{(B;8h`(0ҊKEZ2V۱' -&D_ |t:OX泭yQވBk˱Ou%B_83=|bC`\-ʀwۧ>SKV1PWWfދgՈv6;7~( "3ȚLU>-bO)PR;|(O{h~?=Y3.nj֋D2lŋ#>  y^a,LkyʋM/džWvJ ']i瞍LeE!0Z6lžѹ&\9骟 w(ꔟ;<@*PȧXOEk˷0b~" KمvP|k1~R"tGcbC؞ m;}pp^.짇T|OM5:$Lݯ xʋs*g7 nJCNw5=3N-0/$S\[.@2@T(k~Ȕа״ >(q^fZ+@??Agԫ6XU/Q!uq+obE">~ޗ P|vڀMۣ\\nH֍P~~ZG):e!@0 =[/3Щ}Q:_&N)3 z*}#߈￷1rX|Pݯ쓁 92z$K/-w sG~Db @0PeG)fzFUlvөCeE-kaųt{cG=8ZK]6c֝yߟ_S_qvAћy]yz"RV ŋu@ϰѮ^H}?p!/zieß^QqWbE&>qXzJ/.7]A9W _6U'.|PV oz}}Ho:Ÿ[~붕ZgI̊0?vv-e%aڴiQ~&{m?R(}-zY# `_}Bϥo|pȤ!tJ) PPǖ޵4Z8{ e ‚ m7X , `E)Nh_޸'~4[z9.Kt پm ؽe;XT(TVW7_$<͹\(.^m{{̯ 󴥃v߿+,҂@D=nâX1d3S %Gj^]8v EG)bE(1#'+0 jbWpBݡ ƎzJ{E*m~]< ܗg| `_~Gˮ=xm "H!GbAp"i3y=!t)>LL,ιK\T Aa/G/O z/>?/0L}TE^3DY9JsIo\BH }#(uqWR_ҳ~(`괩q[6裤?~mCaU2ጮ?= D1a$*Q"5E:%3_n+q K|nE*(|)OŁ}zeYt 揄? X[ػ=N?),jG gUeW(Ci I.Mr^'G__+J P R(J)dL/z<ϋ¶q&`w3BЊ[7=Tor)X%>CR֪k ?O93U A@􇥤}IoC MW^4WƛByN>>nzr;Q—Dx 1^ef-Υ{Dݜ姻nާs5J P b/o_qQ %"zyF_xXȶu  S?v|! CF{jbǻMr>z.E+mZd+YɺJVp@g~֏_BO0L!0P+n|t8>SPf(Uxd~p ˕Q@V*fBqPg=[gS t6___Wnx_h Me&{}G ~naPJa-X&_b"FO/9q.{nBݬD,ތb\.d!'qcٝlMI*-<ϋ^=&?| ,x/2i!SQQeMϻL(\ [X\˕^]X-" Gʒ@D?:^2ߡI+m^Ƌ M~:P!Q@} NS^,eٹOx@Dgz6k?cFNX*#7#WŖ׃8̏C+?1{B2e_l̙>t pA1fu2aӒsp}W1jbCH `_#f s3/Yޘ7q1 (17@I) :A3r T[@*i6._%(t&#_|!`$ٳl f&'٫l k DppႁP8Q뙸N|F?Yfdc(Ʉb'soY^-@bʃuD5 $!#pҵ^3)YP|#'?Z#([2?BKM`'SqFL[a=CߠbCî?, &d܀nd|ٔvT4 Fp!MPԎ @yk冄67qBW<ᇏ㖁jts%(O7z>_.[FmU\[x ٖyQyWAͻZU($,ɒ$AllD0`c9;9>c$aL6)kVݮzgl}3igG<<6ڜ۷.0(opC 0 l %8c'H?4} :^%H$C7O; /ҹ .vWn&_K*1S1Q2ԀwhVg!T,ԹEq4 auxq;SLOWz}7e]?BBT( @U,}&|sQ2@)4eݖ.8uB_փ7f8^T驂@?ɏC $rs>sp̙j&+OO1cL{ *DsmM}~ŶDF 6B^!ʴĉyC6%ηc|Y9$,/5i$TWy`"OvT 0Є%-qcјwERu״ 0 -GhmG0gʧ`_!&< 拙xe|_n '?{h` ]/8OȈzLfvrspѰ}/=O9RhP_`H;PYu6 0A:]݉pU%1YyQbR[vG %~0x_I5DZXbE6fP5%-퓡"|c'gRX#6J-pnz +L%<97{c95fDfۿ$+7C"u4pd1Pf͞/ur2t= "H|6绵ē9gkh,@栤hfԢ "*O_S?=mI&v!1L{.:9](aP(3 /ϣ"3;޺,aX,LDJqdP*_>BTDzJlQ|ZH@FHuVerAvv}dT┫.DaQb8VJL~S& E]fzIn+|'S' ]٨ pw msUbuA`̋$)C^q!|vqðX4ꓩ.4- գ>Y?9p#0&?^*/U9f@Z i6$%H=Z5A^PZpG@NPan&Od8L0~*݈% ,U`PMwm6"(q0,Pz4mMpx}fO m"LDpKh$ s9i#iW_jg%jRaꅅ=% kCq0x R5{U\cY/ ~q8YK@ fFad''}Ꜩa$3FR,p0AoF z~r:| 1}Y T*.݋*֧@!)PGk;?7k'/كs'FRp5zH u?M;wW=#'Wp`s)s]d> u~؟d'{p/8aX,a#)Isau0/w*@o\Ͽ.L7 "b߬ܥەO@KJd`fGA9a$fUE=X @jچ֣ux>L{菪Н} NxT'g܈y|Õq/Fu]-$d0L:cQb6m64FrFoiifuQ䘀`|<嗢$X|oYDžs/oY"HR 2OuȖ&-'\0bI^l ui(~"+yDsD`9|/~񳄯sE`|sGlEQJ B]1C60KE= GX u"_nN zuNxEvn{DaB˥6CgL{NT\>Xvt<FI'AaQbVxVii}z^u+OcFuE̛j].C?Ċ?)@rbgTFR},\]Yn_h$ c(e={_=z )05m eAAq~{K쳋% 0{)Qb1H]PEޓHgݐ%n̽`=5sҁ` aARL#*,Z2ݨs'e=cL^\#HCޠ23D= w !XH&Q32,hy 8L;Zl qIQb5V %,qL<>Vx" "WBHݿ H|Ў㨶>2cl@r1Qb5654394'b9L JWEV|{$`ibz\S`5CR1)aX,jRN10s"y}Ps>{(Vy_4Y6(v-HzbCXzM{k*JZ ^v;xh MdÚoX (honX[R=z#$-m:=Ui0V"Z{|tq Y%Ev mۙdfgcʼckl?=n6)%9U?!翓6]yf5A?FGu'BVNBK\9}WCS;tIL@Z> ُ+/+,X YKg֨`n{|k6o ЈO?g %:@~#`LŇJ2an[,Kʳ:i]8ю;S ujTbls:Hq;5#d԰a H܎pdJh\p,bUur!5wCamfaaעKt55!X,}z8ẞm;f@Ћ2te64t?Vm{nQ>:f0!: <̈ b0GW96^*o~z|,t@RP>sJCX 6uNg4X}7溣gfV0Ϙ0,>g㶨`#"=ۨNXT;s[zW\Wۋ籼A8rQ %CǕ#;7'aX,}bFHGh7X kx` Z1}X+]?#-6oIl ~v]ѓ fgtBq  @h>(pسe쁰b9NFFܙXW#QGa,_$V< ]&"5S]i 5^yO1H3p2#zXc`Iq0p23zdn .#hU3g3za9w8'P4Y.8Ӧ$#+#MzKY)!XG-Y`tB@݈6< y]AkEd3A@ #i6a 2'|>!X∓<3:k0ιݘZ95B_ ЌaGDQb3[?z8bD{ZE֙N vP͆@Dspls}mJiI\_{Π rWcpi4':QQ<:f{%8A lHg~zN&&49Oh )ƼF@ !f ~qx0*} TLpY-5(-eQb߷@ ;Sҽr_أy;3qxSc5hLE䇨J뫐BXij@vAn"oBK*sp^0,q&;pOK+gI6w0G;_{/~ݿB]xu<7(? `j?X{.3(p?ޠ%ÆD=4-Qd6A@?,ihh6&`~'=#87^ & ԛ y@4d KyGْVd'44oOC qh[M )oCK\Wi{OBKAie@$ؕ-L+oG=K?7XbiK ˰?t#vK,QZK?DkRVNt9%pH 0lKnDpof~؞*(Mq νhURj"|])GDݲ@ti/:1( 9E\Pj Zt DP&@lPF\_ Dka0dZAnu,CKC6Að#J>eo lh`D. lLD)l`1@P r=q8-c*Z|' ߖ&XR5 m-Qҏ,M /UA=A$H874,90iux\Wo{Xo5'VF=K?ЙAH%\1&& x0B'%g#~81!E?HA(FXRꨇagkS0^PB!yotKnD[)4`@/JnV@OCh$;/<\~-E٧L.#Ufd8^9IFxH4%`ٲev~ee%h |h}\ǬwI?y^r)D֎ƨatсz)aX@>zn! 4D.&P]]_` ;o񦖾MωJpl"?q]x1fZ)@Wt31 w>9ZgT$7z~OK dn6ea@[H.Et4ug] 9{4* Ԓl,Ny%u"zs{_Ȁ!\ߣǑYD~T'~RGras-ufWMdή%Gס%+U|h$,hԹz ߫\70|&Q.RAz{yKj$#jJjkhN#SW`,UeKvtD= K^ 8SifG27rs@z|d@)^>(WUy n*)Q}gAB4~x_̥6Gm ,kk "Л05[ܤk(iBbH$`m<'D\ uvm^ː%~Rv]W.+," fG,rvZ`뎮~l?afЎ}-" w:~ƃeZd*/>T.tD;P-&*dY1!޵\Α]۩_˱{C$%KQ G ANA-lIVNf ä,Dx75Q} \G[c?WF 8D!B 2yl؂V`I.nڎu/0, l8m6/i>-Rm8\@;kŇ(b# :پgiQP)cs.X~0Zҝ '5C@śSwխ,D[2sGɃ݃Az H:79!Hzv70D^pM7qp%?CW싴 RoC.C8) 8Gd$X=ƨaI0C#~oXj'&w1a 7|&X?`"w'Ar -&@C\3-_ƍ߷kٷueԌUzdft:0ۚЈm<$UZ!b@.r,P8wqP@I%~瀓q#roaY̛4D= K)8Y PۼCbu x"Cuc5f IDATZĄڟ{' A#I vs\&N=[qMsf$ @ 6ZJ"p?O؋32 w tƏ盵PĮ-QÒp6 <N/? S 3 ]8nxMM  gf,_6$T2Ѧ oxe[mƳSðDȏM{C0c-0 p I#BIiX&:%\UF&Q`ї C QP>Ԣ،w{>aXҐmdh(i?XU?5%&: | *Pa6sN~~` P@\yL\ aMZ%zgR3&,/ g|Zh^ :2fp]Á= c\?jcLm|AYxҞxz4u]<ӈcB4 `>F#*$4F0`75}TgBk'׎kh藥&9(:==0,ik~{6lz>{ au&2BgFP2e 2۵?^},}bŏ樇a1k2ԛB̂Y=TUV@ʸXI:`[[r'U>hkp*dj GXffML[xۧaIQ< ֽFðDL #33b5CnhP>o޼sg#Kę}_'gBȥFTwcIAKTjx?aXRo2o2;o,c0~hT?G.&H2 );lظQhE%`Ru>*xKߦ 9G)-YcOƵt֦fJQ:a4? <`\>#} {BUU:a|HV=p3~iީX Y\" CLNm[(u;:aXRGKݼ=aXq'ϑ%z20GΛNS&a0K 8VIJ[ou<),] }X )+i@F,muQޓ/^z$獇šg^z$a2,`a=sL?#yxx٧?9t`ƍ^h_'JFϵZ% `ߤK8x#N?cITwQÒ$M!źa~0b]* ['>}~"i|3 SWUG UqȹV  aIBֶbIƝ<{"~@~絙>W3~:H$: .C:vh+glȋ Ɨz?.b8N<jկdð$sޟ}QŒ$ddeb x/x/V ?Hȟڊ9a!&mHb!cYH>!r5КK"Q2mLBn?mjC~=)Uu4dh{q'uZ' #ڀZL(Uզ3Po/$i6 h}TH(TG JmSHikio68P,Sx7z$cs H#v>%L9M` lvn΀̚ߠ8 Ӻ~nD~m8/8 y9MK8k/[hm[wo.n *= 4ўs-K?p!ZaF{t(}!^d??n-vTlăwH]np>X q<2V?+ Kc-'LS UUs ?We_֪|RPK۩ Eka'N?7k6UVWð$CၛE[ddc҂u]z#F@!T0~E;wy'Wx1y m#~F+ ';C{tۏ>'iKl-q஽QŒL^psspD+#ms̲A*h-ӿ^wݲ)شi^zS (kM Y+8Pz 'NiKx練9r ~{}P,IHFv&.:YH)a"? Ey!VVV ҿ?)y۸\Ӱ gDp^U~$/E~̮ poWP,@z SCH i@A%h9!-KE)RM\\.X[D,HJ(h#RȀa'sRKk܎[?ǫxCđ#ݏRNf}|-3N@X^Ih?ϠfxJX0ΘkD.@A*)4h 8Gf`ΚokOQ6w7 jD=K3c1@@H?FMK!~cVT/o'ᤌp]wqVOfTXE%"2v-P}|Fh}%8xGT%uhih P,I s8TAց?d>=j2HRfą8?M6aĉJᯎ~C..8ht*$PQ>šQKxg|(|NddWppB{k_+ZZ-h8t:w{ mo؏Fް}m?gd @F_Rn'),eM_9_x0 ëp9wڀ"20vt[i scgsOGG{n# xϘ6PU?5zUOaM%~ow )wp`JI7?f̘PVhJ%Α?Xz w]lxM<#F=$K[\ż+à\\Ʀ5`9K?DCqRO#H)fCʪJu}K^)|a厅 .0Ve?YĻS~M!@iZ@/1*C=h?j Ruz 8c;كs%I aȘU GրbȤ1Ʌo5 }a~ R@ֿ1߷_^z}IY-\XίsCk Z/Sa~-eL/42@)Ůx0(/LiKLi1dd`Gp;lj r++ 7!{Knf>BB80n} ) 8O*=D?DEK XG9p]XK Ucq8t(WW ?z8$'3;>_z1k)ig&zN.B#i _MOe?dt^ .lpV\\TM|Z w+]Sɐ˜_ö%M5ûO<5[0d(-zH$fpA}w vTl@vd ]AYu>sC8h$"2pww'Xpz :trVHh up#y$/d&%,4lOwmW8wvؾ x ZbS:z>~yŦwתUE-}c8/V^hȟ}Z"˔CPYYIӏ>X{|2Rx.Xd俨~oDCe!)?/%TVm{ϟ?9}VXM|aeR>"!Y}l;o$N]j@ךO ?jڕĒ,\p[398t J}"s#c@$-ʒC^Z8/b yb<gՃjT0褢 yԂ}z{k$X+xpEÇ"0aYA8Omo51& Θ$L>s Z,ߣ4Q`>=k헛N0iO||gz/POůiCH@N@4R@ux#9rFH6pE,hih–͇B.ƍBfvVC$ 1L0jDT.:ڢRʐSӗ_,5#'hB=Wi_F_}ȹHE79#m9Y:Ägb鏾;o:!!hmjN%z̞1 /$=æS2﯅nXAPCE^`ŹUTKp1~H;ӷr>mʀ@/LbE@ᡫ c5AbSGZG^J -K{8e1e|I:88{܋ h9ڈ&mDsCZ|- hihBsCq '?9à\xs{j_^q!ƎB?j𻛿#iA;,߾e=5~7\;79sw.k$%3-6_td,8.Ww/$Y%(5n$0o8Eɷ طem݁[jv.GKCZP,ˇa?9sJPrJԧ9TgPߝ&io}[_-1#Jپ^ 5b뺱=Q!0$pGk;v+7@8zN^rrBI8nGjwKoK-o7էT1111:<ؾ ho.ށ̜>ާ:ʅxh4@:P**+{}}ҫL&.3p~RESM=DD2Ɖ6b?' p&c(7^ QKa P:zx'- غ[T`WfZ=hOg9l7xzW\gc?IH1܄G~Tk.@Q뀪?:^[k YPC)vIDZF=;FVCٿshtCާFv1z${F҉ l]Sk*w6mR94w=cr#y~dg)XpקOP?'u_0=Hߪٿ䞥K(^Lk_ _ߋy ¹Jǽ*O{ok: %ݏ“L^4\y!Ιp6Ԯ}}Xuv}uxO??qyg~|fقu5rT.d;m+F1뗍}(Qs5QGX g@چi6oc;vP **I{_@.$ayZ♊HWh+NeӆAyq p՗$j/pcۇZ.6!vVnu轀1YSqƲ0k)q~J',=3;57~GPOҡytܴtz|S)BF<81@"b5)4Hk*CsYϓ͟9-м}_bUk.EnQAÉGDP]ԼU90kv IDATŸΞn(U?.R~ 8g}Osf;H kH?Y)0V;aq}` ~M::_䜿D;V}Ohy(OTr6OF@) 4RͭطM[@r0p5`pa~3b^UƮq1L?D{1|خO&??%;yCqwcP~nL7g!BBRMb}93.]xk|k_;;Nic OD bЋnxh{~Wy~apA_} N┯?UFժLD8/ZnE|F|wq韐 ~s(6i7 ^#z߿_t="S>ws/0|1ˇo%e|EASsd+Bqd'E8upz}uXkװmm''Vb3pP^.~>ZG\MD~\ȉY'SNQ S`p9oauĀ=ؽs=A R?(\}sHR!3z㮋C/Z[/r pڵ+/ QW9pk_Ͽ-F?ərqwIS/+OVs(?n:>qu#TJ"dBɵ**?߻j{})`˯0RLE_EAHWur,7GT:9'߂O ]IBdD=s >*~R7/ W5WH'AjyCps=OSdm/) D\H6-UKp(.007 Ǝ#"v*cd ]mZ銌9}` _w->كS7:VW,} 3; |38y=>woK?*zN@MioCx{iY054Yp2Wˮ?NS2/rlۺ cǎ T?52'꺮tP9Zc'zLb2̻|d z8ݦ^|X oF?hom?5߾U׮\Տ#㗜S=/g4t/9KH_b}E I|Ϸ?P={]ހg=$4 Mh^qR!*5^*VocкZwӐR2|5(uތw{<2D=K?S/1߹[ق󨢡8Ӵ\'Zlf~+jopW^5rn* ~\偱c̀G?w;+77-i._q7Q(߆\iC ;f>v8VW!e$:PYYI8/z{ʀ8w%G) 0}vQʼ$`7D,! ,2/|h>Æ/I쬨-6!}y|+Q )i~21<4qpTޠ|D1{,]!~sIv)ĀWy)^sp3& sb̩?(DQт@i 7 )jhEpà\y8KRbxJ^z8$9 }}gKe:.<{aNLA- #PI`\G$=ɕW>[Li_WR@y 170`?}_tApW # Z+ж`=q220g㬛F~iQ o@ի=K(X16l0m3iXt Z(61e$BtƟv?+"2 9|*(BKKB?b %w}k?o*yn!30u 0l☨)xObw͖cIr:ׯnQ2j4E8W<㟷ɯ=M a"mrc{ 4e@G{sc-Mw?nMJX}#.9u. cJW7z o? z8d0\x׍سa+N9(~(X.s-#V׭M1v%KTٟur?0}yyy ,O4C% p2vDk@-Zx-Nxaz7?k>Vc$NF}3E rPԁ:0|;C,CR 8o%6|/gx{+rn| 4ڒ~mu9׾t@O}hz+} ӗ]3]M|\_êW`ڪc$/[b)^f<}#@-#r =1s%[{u|/9~FXJ֮r=J kK!C8MU2KȌs 8u48/^sx JN(G#͇=Œ~)?Fz3.~qⷕq,^ Rb XZ/^f`u~/PlU!dі3y+[7;  ZAp=kMmhoD2+ȩJ(uKhk,0҅q|Zk|27N~|Δ\  {om<6@G@". 9|3|趐v9Zۄ-p%H1οzႨʾ-xƚg^}-0u1O1G紊*~hπ̨@f/^xgo3wIK@ Xw"܉0د B H`qAN~^'$]5[a }; :8NNzB]}J \x㽼մ:!u]p#=\?5dw'3{<%Pw#XoEӪJp_J5xշ bt'{o2Z}*⣹zw0D'q֯_/O/ŋ.N6X @8w8Sϰo߾G"?AE4#r͛W+n]ljB{ۧ1ҳJT7Ok%QJ ƞkƝ17KcH<Y& :UR_9u]' 垓 SdC4BƬM!J Zjxcƹ˗apa~c1Cؼ#k->?}g9rK zse?H\tVE8h0oR@';@S>|l_lj(UL_wkێ6JhԔ3{3gNcQڻx၇ҲݪŒhr pwpDnȹ@A)Aa~yunRuZ矱bCCX҂A8Q4j(':[g^_siE.A<E(T~zyeO!H_$Kw|i _={مO>a<<CzY-cع/߄~}ju{i ,G߲|J'"@P1_lw'f* Yb뺾PP; U;qWl|C<fKX},̽|PS@# tfCkz@: tJ8'"}:q/r&d/>upm"a5a>A0XQ8'܅ʡ3oJRI$!s%UDD BT0 *!BaT!Gmk{=ЯQćm'UI1 94\Wi^j`jE@v#۶F?KͿ䒧a%*k cgc5jW.ϖ |*bԣC߱gx't#E9d55ຏ`9qރ}} ̓.P5rROme<< ;-~?Ύ}ےXQ}gi'>~ Lo#/{K_fUر~)fSZT8,Zhg`p??rte_ekK.4 +/G~~zQl~SUC e,:~=fx_$K ػV&Bni^ AbѢE`!р| ֽm+s~v=lWk1ÐhYp հuWr]EQC࢛?'6y2º*?؞I( hk }Y---kepYt)Ƙ0 { dW.0 ,wYƳ#?Įm۫(ʁc{N(22}p[Ö^r^kmkxKK?HpYxSG_lg( ,BP(ضdO|`ɫഉSpܙQE֟_|CWeμsa\nUbލZe YMg>v\Ǯ̀T8,jƘ#3zR`M 0ľu^'+ T[x 31~,`Z|$(rP?+wЀ0Xu$]WA[H㶶6o 0婮΁uT8,ja#mFuKbº%/یՑ !" v_` UQ倓d8cspj1:Pu_o*zAfKeX0g^K˓T8,j|?qA;jԨ Z1m—+%rǩ} :6lAs}EQAKĈGA|>9H%}VfncL'ZZ+ U ZxJAP5Z)R \bkt`3+O(ESqqxe2S! Sbx< ͝7O??iO{l.\mۆc9o|xɭza>A9 L5MO/Y)FTQӫ\KЫֽ+%JHX[_ks 1`yz#W/cD}&Fc)? 0i' _.Iw? :gWak^E wK1dp-x{]Vy [5P*ý`O̝7oҭ(U3^4߁ЛkݣG fNۗeSugk[UܡUe!8¤N.;c'PnZR`es՘aDn5<6fZ.t B9@5+RĶ,l?c[Z (>d8upƇ5S]v%ek)7|Uz TqktMxٕPz.#Os'OJ0(dڸ nB -~ P~fc0Xـ?P(AݻN5b)beMw,*`CX[z<67)P;A,v |u 2r .}\R)A1"^|Oܵn6%Xf)QnMôS0F2t+~Wdxd&#{\ܬ/9BPcGC?ЬhqɁTZWn]\ca/۷_&wݵ~3O 0wcڂ8nb]rSR}Z|G>[6WSKDr Z[[E}@;OGoV閨px)~Nz[9vؠ|,1}ȕ2+ 2'y '~޳i+~%l}5?HQ e8i8C3qlȨҕ5k1c!ym-.oU] ivs.;P 70?!yRۼ:W>lp9{h PرoKho] Yt)W8y98b 8vloJO6,+f{eYpr}p_$ >Ɣn*=믻R#Η/JC n^6tp-{+ 2T s߅)Cܹ'lZ2 {9|z닩Ma1KcJ%tu_9bʁ\[쾶O͞xJG]2#}ټT ~'eaZO*}_&dBQL BR={Ѿ_Bǎ];E~ᔦcj@E_&]ēB\ !9V `mPxTAxÍ@wcF.K a|%,mccNky vW?e .x/ƾd5YpUYL:J!WZoC"O>>kl}GA ߐ<#S829P&eyrR[a[ ˎy9?d@tڋ/+`k0Ψ&NEߨ}Jȗr>_mƒ 5{f TxÍcyEC-|r@ޞ{ڗ_"ÇP۱uWAؽik5 u?& ?% ʤ^m-=k>I- @Gϯm|܄rģ @n ']uuubʁsǓO,[5ஹq8!sdYFFlj[UsnU~4S;?&nL~4 <eކl P޵Wb>uY o׳ܝS+R*uy\cpPo`Sjlyuz7ԝv&w:=5{yY߿sT칔@x7Yc^V?kYfkMF%7.9Q\%e]]]b?} (.{l)~!@ KVG`ʵԶ;D4;w*j >\uKS˽O#TDÕծOcmYy\4k*GKn\2˲31+Zci^y~Yܝ/b VpEO܂vm܂-z [׾m^_HWmo8aFsƽd 3y<^5Ik<>}Rկi۶,y}x@=Xڊ`FnljiqǢ QMKnMD? AQڰt0.fu-k;._9O+ <]tպsXߎ!oC]1`: y[׮7T*2 0#O'OˆǣWmZ<sIb+,;' Rx2_x|I_y Qқo,6_& _Eغx@:筂kagx`]hغf6y;mr ±FaI0I~|=z-}2iW9evSl>ާRoBox;~LWy=X{|RAa5C츚U%v⏄ G9QMJUz˭!-l0njkO{L7u-|@6׵i?pED YwJWx] %> PȕY ޽e5 0ْcs>Ra 7&}!\y:c S 1溙KP@Jn F.@?ng[$]oY(({Ⱦ`k|ܪmNH)]ٟTyicpaa.r9:l')ח'[6T"(][oH_݅l-/B˜TnuIu׷@J xV; Ԙۚ\I%C8Wжsa{9Jyc?#˞硜 r[e|Ksq0 ;1yP0^],8W/C.rnWZ`$H~"R$!+ ]6]W.\rUGLqs_(tmBOY2)@S&˗ {c-3f\*()TPo<_'лy7.B8T Nr(Ql/8 j(Coq 8.9? юTg&wV^mкizO&KJeM2?V#c}~)OCJTƘ? gxR\j s޲ˆW^yp}1a_g9gisIt^9q8!W׶߮ ʉ}Sq8[z 'W8@5}BP(9%^!2wܳϡgޗ'|.pT,~7 Vre_2?"*t;Zn!c5i @a\]Eݦ7r,P%iEȽ.a!<,fE,,B}dAY%=Oa߳9^ shǕ!Yr)v 8T 0& CMnኄE;,P6b]y=B-%,2%Ͼ 1|[ .>RmH+3ҭp\*#\KOFav"#~OV#TPd=9º#f"z#OE^TAq>!ſ+>.]v)a8}˒ VUx} ;??!yZļ/_3m /+tmursn۷MEXAZw^Fq->gR>lmmmAx0ӧoTP:wy0-b؃vܸJ_s^ c)b_UZ| ٹsrJw`C!<._* \k4vS+Rx[ac^jKrb>H) nߣ^;,1kg /*ʁDq]wp%p!>@, ],O 7I-quܦ16{ J<_Vʙ؆9V1qH:.1-9LigytJx|L84y鍐K.yy>[P0z"EDx`oBQ(8(3,BԽgx[vmd}\r#< G /&7 9'={V,Sz,u&6u}^{+)Thr_[D-c̷gC*a B?|(3ٞ^}}C ^uk!H!o.Tx_V o8TlԎK~s5*_rp u+~DZ_>lE9żav}j^\ǡ¯OګSBrbM"of66TP;_3c,"~YC}BAHgi۾JF9;4 nbhQ-K=]mXb" ^/O(S C!#'J/ Hw!oj׫6TWؿ6O_ Ԥ+Un>MDPf44Xe[jk23N|פ7) Ĕ8OFZKOSTX6zϓ+;& LLy%Mqs W9sJ8˷ Ԗn#':@DOxIЧtTP%w \ /=h= R 0i]xY'-\_mOx%-t{=<92Q)o{! %x#<#^^oB3n-p|hŇw,'حP{.|׺ EpA(rŃB6dHE&n._.ߘ1+V6eD;ٳwCQ)(G w}ČOc> `$wK=h¾xpR r܃ʅpw;aegY Ys8܋ۑMпrc,>glPy!ү3}yhkk (:uOf77 E9P@9_MDM>CV ohh1 .Ԛo)Stۏ/E~}Ujpon$17?V"С"߾PK#Iҏ>DP#U#{tO}> `JH&8NX7& 7̑IldB w*'z; My1[*1-T^& ʺ1+>Y9P)ӏ!cs}5^CQ?(=;hKA,DR_Z&L q̭p{R< еlGZdtG t׎nQ%"z̝br Sa.\|\&3„g ] -MW&\ko9ʸCUχVy{K}c^D[?v}$)fJv/3"GBz6ʅTdJIG}cFJ8/r mNA.$e/DWzTP_W89MP ,^1`EkY'Nv[ e;OJ <`u!tWl\cHMlgF)-Z 7 ;Ef^c,~o )Z/]ze(]DE9@)6TPz_"\'z@z xAZϋacꅞߋ.Y&)[ A)k+UqE9(ݔo<l<P" 0 1hMI~|y]HL`K› `#m06x"z ڏ}(ߨ(=o&cL!Z"1DZDn{(L{-W~J+((((((((((((((((((((((((((((((((((((((((((((((((((((((]BigaIENDB`lektor-3.1.3/gui/resources/Icon.iconset/icon_512x512@2x.png000066400000000000000000005242161346506225100232040ustar00rootroot00000000000000PNG  IHDR+iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs+ IDATxy]u= 3،Nw8TOԮ/U҉IwgU3#x 6ٖ$ nqM<'$ Ihǽ^k$*xz|Z{B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!\~b'8<sc778BȮň!mF?1=!=1~wc#vP^1fmc !;KpBB!E|NpZDß}!ScccѿU6,,uۄFCw@@Dx@x"w{3 BȁC!2 ^c<pb#a߼pw VzIc}Dד#G@Dc OPqݵ !B!"+8yΏ1q>"Y2G1F o0fE[̪ZߵZB8m梍/56w}'B!@!ꫯ>xlTP^4DBS# [DmEջ"-~ev/X6ۏv0 ;a ns1s饗r!c:!u\s!xn1K\8FĄRB~x3^ExзƓ4D)eD#e~{ bl?-xK/!r@!#k_ ^3y)i|1ZDGS-` w^o1.ҁ}V@W>[a/=;`Mwx?QWixfzb4zK/BaBqE$_bO|xG7g^P !d[ iDWםO߾vB`00-4EۓM6A.d.mA99C?ҿVB!=tB9Nڈ-e;.Sk#tG @;JlĿC){5oEړnSc׃VDX.03t{OG~2gz0t=}kB!䥄B!/+_@|Qd?"Nݶ_}9_aedkGlv``@P7!$sh}&(6mV=eP? FM|=yB!:!d,_~8KbCīm!'ĴV]gT~ zRr%CGL^ί]-@m_kagtVޙ !szzQn3p{ins/KcSBB !o=B!/ tByX/1?#~ B˜HcE]n(Sڹq޼ľKgG-"/=V.n'&Sig١kn{~_?۹{zifҜk0="6:.l!r@!q 8L"~86+ t];F\xH~_}~$6"3@/@Ds}kS@ 黢68۔ܙco] 8s}9) UeF0.B!:!7a<Ƹ, .m:/BFɰ /M:}xBc{@!+z_/+++{&uRT>vlKբHebhAk h}eq!YC!^Xq㜈S(1J[rfX(-L6(EaD~֗:(];GQ&8hW6u@0Yy@~d ~)(6xY)0/VЈ@΀—/}}B9vBˊ+pbU\Doࢋ.UhlNY 6-Z;|@þPe{d,t͡oWY6CWd#];lg?Юoehy&tIy}e7i ~ΦWB!G/tB1Ί+A L !nQ\j 2/ ᎶG/yڞuw%+C2e-9y;^wHDpFxck}:=>O%@ٷ`E=۵ίٖoig8dv ~1~/GBR c77xC.ɳ2ģJ".*ƫ[<#[{2JG{ kޞêۧz\-{۲"Rma6[$,5-#oMe|^u{-w24WQYmO_G!B9XyӊWx"ހ Qh9CeTEӈz/H- 2hZ|w-ss'@Z:|06Ym0?}n@~:>nsbXr$h=;e^;NvLnAxH Y |I= rC!4rB,~#G\x>7v^=C󄝲R}ų)}37,AGק#Z3y_({렟$0~{V'X +׽uΓz NHg|ᅡgBQr0=}?W\lDJۗRG5]|aE^m6]"WΖr.Xs5d>嵨|W|ݶ|A}v-Pj,ھ(o#3;n9?tTC-z:b g#mm?z| !@!G0ӫn?߄_p߾Tه'nU]QP4)lsf/دk?: u1c-#>Z>}Bo^]}_+kCmeVٶF;!7R/j@z`Mvx)kJh΋>k<=;XWn !:!0eժUO`@|uS@ /-Wң-Iux٘ :fH4# ,+Bufm{ƫ>O=[ouK-x?dz.}~oہE|GY.k:s:87W5mޡ֬6u|B9<B#V^##.,k)Q#Vd4J[_f2qc]6_-kwVhTpDy>]c & Dy:sW?x^{z}d_ySW1z@$cl[d@n%̻#痯I͛DqJ:!0B9 Xz2oB[^7眈~CGu6AVw8H[S E]\:j; Gk՝m}+',~5ɶm[;O:|]oX9ס QyM9gV(Yg eƃ57{l=~. 3XF uW\q!@!/׬Z߂a!x )|/8>Hꦲy=)xQm5LY7 lD)ڦ϶OݮXHMNO/XV@*Ko[G4ik$˝+yښKc,jTg+r{#B!/tBKȚ5~ [bo !ofK /HҖO>T&P]FBfsvm_}~y(3>#_~Gx%$yq8}"Z"ŲK}` w)kol/#cTQ]=r<#-dv?`uUW]!R |`)~k_tށ{~~B Sr-3:w S74UC@{u+zonXҳG6[ΕbN1+g,2Eu~{~(CH.KqZY\hX?-ŻZ`(#C&Hk a}fzK!^@!o7b @y}=avDsVFۆY),EYz#[ܺ]kRYYVtY kOw)]}tH4{\mw@ڔ>ЮVSA-x!)SJݱ#lyD4yo@\#>}5쳬 bC![n>9F>nhK[pa+r!)RL[h{5_\lpy8#Du-c[اA AN9!۞1 Q[t[TоSȽo)<<09Hcg(}诌Ҏ[rmnG^;NJ.{7"Eg+ߛ-1byk1!B:喛CD8ξo҈E BPl!LTu10WYPJgs5EdՉrdZ 5OD_zZʮibL ky݊J2]N ` vVHGV@ȣڵL NS}d-jer};NhnkXiL!}AS޵mKqͺoDOREz-V| @9_''rk9 !@!~𖱈 $ ^/nn-Z q! .tq-^uٌwE䥰S- !%Z{΅:thI˘U_:K`08.]ZcӶlQ:*R?2Jg-JUg+5r%s.#Y-׾r-}ۯ@O>=eYI!Er Y-c\ O]s͵|z!B|CoD,(@y C"I7Pu9)bwr 뜃L\[kE^y!S4~`\jez|#Zt%jS2?Ϯzu赶[+z{@8|^Q::ӡ+Gu6r'W5\BWeB9ڡrL[?x"kp:,R1b$tb~(K!Q`)s!Cho g /"✐6[NY׼mW+gZl_EaIkk$Cd|z-k};*W>`Q:7jB^cek~igɷLt b6ʉ׿tĕ\s[BQcGL5eh.^Ȍ{yx٨5:"o$}o^JNjsi}q0gI-cݹbg9xj}SG_,v Gʺϯi!Zֵt٩m΁.;l ?#\+/^{~ B9rrx [foG =Ư{n1`F-6-z.F2 AaE-\*l"kw~%9˲yնz8`:8po j?JQK 9<skRGm (/"ȯ'OO{sSR؜ؘt.xihȯ3斏uy,+#ZKZb`ey]6!.眯Gik\sd k4z뮻I"# :!G<! ]^ @{:7ȣ8*i~cD?=DiGySC|2Ӻ{_3B#lkf`Ķ]W4=C>߶]b*MC:¬>/o>u{}l2aeo; x8uZ;ww@m1뛅ac-eu]~>t:Vֆ^OV a ^kS_z[$ҺDlݺձC_ve5!@9K#ϗХȴ¢^˟~ юPkA"?j[u t9C͹&Sf.E=~8ԏs픟+bjcZb&eف> v!ֺyUO[ P莊vVn}m<=Ħ$he2A~.Zv5^~KoeI|,&#w~lD!!tBnL q#x>O!j5Cx^F2>/ r h;GC2s#@0Z涞\zG8lb.M'I@{(`n]b>jw@`hjӕE/D}nr^֖o,=n P9_bn{-ʵiZH|ѮSAY/E[$<#@ED+ *!0Bamx7_l -*n/^ ]hW9sϻ)z>f=nϼ^I7Et*yeG?=o=eKY[A=P٤``"3<9687o9f;Vmi@keߞvzטLGn+k@\أfT)u>O;,/\r;ϵ?'6sjm+˾rʹD괶Ĉ{cy5 !Bav jgZE)/4}ٟr$i⺾6X\h뼁Z|XZ}56wowtVt~',B+MҷZk:oEkwPD>kQv|uʴ}Yj;nȷ!U_<>BZ}vz ,l:gXw._ۅ2C!{<.Eŋ2kb]!"\ͺYzTk+_"ELXK1i̦%̳k {R] jMlu v^^_Ϳy}M)g[f=U@׷pF|{}ͫ}m(&,išgvH³O׳LaGGեݥKɷyH|T¼S^Пy htE1bl>wB4-_|3!0BaڵEķMŋ tM+]ԅ!`;SkuKvKD$]KKyw>!AI3?-V՜~K"[5t1ﴎI$:\<wvZAmz(5#ѳʸ0ťuǏzI[Bwpx2-p05϶۲}/j_.O>I9}B=_dI}Cg /˗/ߡ/BK koop)ԽEIҦ(:n1F] TWeTj_ԷkmXչE%M͍~BBm"0{T?I"^vEYF z쬁owy ݲm)dKy5L^.ŪΞpNbgtc-2;.m ~{CO2q,Xhd !d/[/k/_I!EBڵ$u]ŋ C^{G1G :F;eF5KoKߔfeZ>z )xZ{u~ZɛkWVOi, ,rn5f_GH,蘿,E]QT_].N˱ggIxYvy~k߶ϻ^V^/ s8ȾNr^+ˡ0?x1?Y?^~v$\9C;w˖-N/˗/!/ tB^r֮]{ZDT3lʵ(4o6h4Sno ǑFU,'Blښr.)5qaFsAí\:lZTf8s̎wyK!E"k%ecixNZ/K8KNj5߇6|}y Ɛ;8{e9_9EsپtȧԈ1޶| [{5 CkNc 1g!/Y (tV_OYc; o]eWJ7Ὕ FUP yWNes\߇'n.mD`0](l ୃ:7:]˅l.kٶlU~mCLcֶAHE+Pr| "g9%ϧ1zղkAݽZNə`;J䜆賈DڪlK^W/_> !`󑏮 1q%W7YԢŋ˙i1/k#W{.WviS At3]z<-*+C&u턽Yv)Vb۫CYޜ}A:^eiZwk^}{[D>m쯌2Kk hO[]󶍶!wtͅm_h!}ПQk39I5n|Pr@@9|k'v -uNr%6qDL}/}ч2es†Bxܬ̅YOتX$3gTl.3mgޅmgTrRxmDS?`6qjXug#~.W%m# f~91%|{ZC*ێYEY7]vͭ=6K[ͩ_wm-u{on|K[[# }aCnqk4!:!~#pQ:^db[KjD.&Tyx]U9uH}M8b;~-s>3,x2+طPIO/Y#/]nͻ& -~6WA1'Z@ڕ΃P98n.\Bۢާ@imhŦkҼr~rƼ'MںF ZoK>P/ۦ^K6[ })fse1=- cğoBHO 4G.BčqsIJOHhCJ4]"W׌g^\hS"Uk>BE/\RsݐmCۧն*4s@ydw9-@OOs}Wu !0co?c?`tFX8ǁ0g al a~l|lV)teRؖm,Q5's_ E;+mO[G{yymѵ޲;`ʮzn%ve5abےS? [oAupBBя}d?.D̓,ѻd9ؑR%4eAc&:k)m5tTꙎ)x|۲ɲ| ke3AwEh~t_z}vo}0g=ط۵vޝw]/`=;C?/ߔ ,x`0>c@8X̙y3599Ss1>wsOblD?{}Zlr!)۹-~|6H+~96Ze+⮅ej[G:4,3 d9^wy8YO6?QX-XGo"*6r\"^ 4X0 F "}d~`nq0(_ԯ˱tց5w^9[eNES\[ s=|=|{߅<~N|~݁8{E s|L,w|9 &$EG$+J҈B##ȮɈd(֣"ܞC)Xk8z'?o?2cC^/NJge [-@ڨo? !oۢB1ɺu;?k͍H-Ydt!Eo#jl/ ]S=* Rx+9ӝX *f LjM7n, }Ȃ3v jn5noͻp?>>۞ Oog`b|r1`  0hŰv)΅djt?Zm=2JЎ$_[ܖazw}(#B!>Z?zPۯFG {B@YǘWZۏ+V[x V\ś=!؅BHƺuƀ@ 5 S4֍*Yt"ȝ{׽qS%-{ ua nEߎ![z_r1쳶bcu_g><]ؾy , IDATdԳwa0yp ) 0̓1>5 C@-kJoZEm Lto~da&r6VBy͋vm%^?:,־"I| ]vshR?W\T'BHu-Bj?t3!B\dq:67h^4^c(oچg7 E]ˎ9L;gyggy:)_ Uy YZzh\^AP^`Pؗ6NP{sme'k!m-碝!mߥ&: \ +W*B gdD5مXIɓ;#%g{iy^&Y'^+y-ZoC-:;a6Y ) BPoYn9"-bFB>4>M |ʼnS`ld!vD۫O܁V׭d՟2 (ۇuCؗF> a=UoP3 \VBV wK)F b~?1KrKV]n'G7;8]]xo!F`[B}dXkKukOhR50k>rMȆA`OM3xf 8]O>[GQĉ1S0̓0S0mwDorTu2 Pipۖ{_:J[yZ1w^ ?"ߵ\Kwg"uˌLM7Պ#:9}G#՞$.]G,]EiQ f7*BnT݇]{<;n(cT6uVANl3!_Ool(mx⁍x⁍xԌMN`٧b9bW$$=1m\(["\{@x@V- qS;r^vھ~/-s{Ҙ:kBgu1nrB!G)XkpyC 5n =% ,yi麍NK*m ]b!2۟/az|cXp׽l=u!uNO|M7}VrdB!GXG1 B@V+'HgDurvBMc w>E %zoFZflC[M_#K'^ s=Sxc'널Ógbgb΂U1M^^ǬM4?ۺޙ=2)~hYa S60,2#e _ٟKn Ўvxk !Gtrw MDﯯ-8""R}kQq"f4[ئ#?^#P+s0 r$dki%v>,}AlAl~~Bx&N=S矉K"DiZP o}zl<ЎzdqGK[omQlu?߿vkuh<`iǒ333Sβ;74rDB!G X/#i@-oT֜&мIQbݺ)Yxv|NG|[ \lX7Zwue9C>U[8Mzz;=}b-!G-h+k8,/Z٦uhťI4ccJGAi!mDz\Psw;63?_cfb[1?OOO[5rD@!G8X|WJ-XdI~ Pq&r-nj.n ,#ʢ ~g&uz* %-ۇ2g}`ЄOygbg`|T'/zy;?Uk^M+hŻ\XiK}ww[yB:?Z:==;!B`߹Kj{/²^ڗ٩`˫o 'I>,')=tso|[BLq2?^}:O`K-}E|rryRQO v(e$!eB߹70]h0o|,]5Sn [Wo:hUiͅ&o^:v1L\[ H{:"@O?eؿg/! ǼNgc'Jݣ" aۼTf- }-]z}t}C; Ƕv rte|r.3™! G x 7`~BIW3N-~bd﵃&KegamԺ}בB=9)jZ{Э~o$|^f<_78S!G!`N%b bRp"k9c#w%:z]y)bu_i|k+Y;He3K; 2ү;Q"""߳>MoO>[K!G2%bEg"PF[O:􁒘^|,7ڡsr,nlO-0}喀bWa BKu<=[Þ"R8["i#+SvQK\R;No@oDϗÝlN~1/l?C{w !9ZxI_ܭ 9I횫YXe?yfAEn/ugGikFKIM6?G<UV:!EB^FpX^; `%˜AHeYʺ|r̼ p":w)A^'QLfN17eF]XX>1௿G- s?!c,`g`jɹsq14K/^-䕧p"Hl' `+tR9@8m-,ZV@Y7wl>["w/]f 2A!/womXڋK{yoNq3M]wԩN‹{m2%Ycalo\Ʋ 1x;?*H! g%b'ȝ)}XGeJ|BR0?^ t/SkgOu|(֣,e6 F߶mA1}2[Wmy7cXOh沥|%j>RZ{n-~PY\~*5q`~t_ҖR`|_}>ha?!`cj9Ӂ<92E.pS/Dzno}E_>%fffG~e͚52rȠ7|Bbs_@=D^h'M{WVɮlۀDv8$G1G]V]F z@fBGD۵??szBi?SƼ^01>? <2Y?@}C(j(l3ʃ˾lDž7Nwy~95k>Nrȡ  _/[Vǰd;}`@ST e/ z9d_ެjߖQ}}x,@9"Cb;~w_þvB$Lcgas uUys!}ӏ#]7"x^5C}^BqڡAТ0{֬YcE ! lp$۩Lހo>OXbUFgtB%7D>g4Qy-šy蠕 lhO""V);_?|LO!01y%gsUO?Ź`{<=Ooȝu{\ "_uBغ}ס[nutKYfo"!䠡 6;[z?=762{ڻ_d(Mm<|Ъ+׶9}Mu_Kػ#09SKEg#)-o/ۣm]뱱y2]?lnv ȺrK¯^jDŽB^D6ܳՈYכm_q>tB{l6"^*~P;cn^~ˈ{gC!N`j9wYXq]·0v}4uU3qt_5QaA]> mo\zN#!Hlg?p/"%7QpW IPg#:.z^~w(΄lc+`}iiaOۻ}xS >o΁BȋؼI[v.^xxv-7Nw^+Ew@4ԷeQJ;? c"G- / /^]! s_0)r/[,KwqDcdҩ0,՗m2.8:v [MS@ϓ΅o;~^΍BKZv.]x&bwT;φK炼;z>ldz[cqiEqX[իW=!d6@!f=uĘ{]T\K"限DymDecY;]G)ۗv߲wr$辤b艃6~=Oza ^POo0˿Շ#&]bBVHBHo qϽ\߻!.Yڹ~&px Q__^K7vjFIi9K9c((q0}G$rX1~]*L& IDAT4砼O]x:]_?j-Jڷvm_]>)=^D `8UV BC=n6ʬ\;W6ohU@Xv;[mv'j;HPi:jNagxk[lm#!Úc%9OoCw~_WԾfXX ~*_-2ZD 0q}ᷦy.! $ܻ d*K.Ye zI[6*ayƸ}2嵬4='A߳6j̞O=_SxG6B9s 0E]"΁z}|i[w߅=cm׾göm _ !ӏu[B{7,){u.C8O^(ݓiR{ݯr8cqofWۗe4O7(^z7h3O| wB\&;^jMM6elExNЇmzy- -h?EeKAy8.PA!Ƚcw8Imj7Dw2A}nAe 319 -̄4H۳O۽sB\œq]r.: a|LDl< R^4?CוgY ޙ][d_ e 0i2==#d@p'M7HeEGLW"e2ݯ_`¢8-ֲi7xo|/IO!cԏsO-D#m?u]g <@Wh  B@D-]ON^3==}{ :~[?ykL׿+' h>}6 ʃ3fĂ@E=y~];!yL?x /Kml,YO۫:n'CxҮlO`jt8!tM %@H_>{wŕ3AB &I 8>z X5^k p 0kGޑ   (Όz讪SU}{F]g}SI)AEro|~ 8|;qm2$kLyPkI}uBכ@pU Xwt[ꥏ=I1 0#c'ate:ĨfQhzoL7R׹Jc@ Ig[zh8T?x㍼M  SEM-˼3g)c@~> 9Ɂ+W>7zhzpD<$ }O)':^Az6Cw~&_JE%8Xf-yR|W gq \9:g~o'0#v0LF%\_|XLSM%cyL@*@fmv#p <}J6ᱟTqaM0cPjKkWsQ31]Cܤs&N @^G#mC?p/ %p{.aF(`C%. q}}!BF c ג+|]zTʁnɛI類={-wa՝+ cNda!rd*Oh*nwdKo9Ӗ:cU$xQK(\q`ƍ[|tc ;C0 6JgןC>qLyK3][u/22\ m2 ? O;o0 P0c4 mDd7^T5|F{t?s7{-8d…; /aF`juDp>`G ᗩt cZWJn4/krDIiyz}ZiϽk~Exu 0 0yD:D@76Nmgyc?H @gSRԀ/ҷ8f@U< .\x 3`G B]۷PTwq2fn@`5 a@-Z1QC^?'5۹y;ޯ0 0ɇaoC4vTzdhl7 PTGiThHcv{<|u7Mpx .\Z 3B`֪'RN U)We'JD[?/JpZ}~M usoѻww 0 V "#!">:9_ƿ[T04;;[?3T7N>}o뎛7/uxX ;Ìxj]&̆r8 ^V/Xfz~ֺ|>@#5 `OsMx۷`a武4P:XDcyRn|j̿as e#tgN0v0#jz&%&dN2J& 4B,lsyN\_~-% ( ,Xt:.\%~^<;~ 0 $h9hh b{zHEMguќ"PF4Pl >;8 cXjDUaÆR⒅ >p":p;N}cSNh$۟yQzkiTH(Lڋ~^ê;W0 0&ͥm9拸r29"|F} P}h1%6lx:0vI,\𮆋ea;G!*_Zz.74NIOEq?WD@ץ X_a׶N| 0 3cZ04-,8F}yho,(bEʉ^K`cG-@ ̣R… Ȼ^nQ% e7˻͓7*Xb܇ ;3{=ⱟְy 0h9(%j{y6З}Ѿۚu6lm<΅^)n̈̈cI]RH#(Ҧt>'q3굷~0\U/8 S|׺mF,]Sl_[aa$QX)G/Vj>_(ҟ7~~'/F>1 7̈̈cI|$Ǫc]R),jO sj붞~z"&7Wߺ^)rr_k@Qþ*9KG/L;-@)g0 {!2v0Þ%3-l }qV*9m@wP/$+:/U2E_h׶N

'Q6Y5A#?/rڨqc1`b5@0.(.X -a`%Kj3Bm QB|Cn)'qƿn(!M/ȫ oر u1 0H$7g Qܢ.>y<͗~Ƣu V|lp~mPU:wB`׿\ Q ;jգ,BG/%/bvcYt>c[PiH)D!C]\C\afD 4<MMR/7%*;_~ER[w wfH)_Jg0Cv0Ê%HrO_N?h= /52B9F~&MPڶ-^Ut 0 ӈV4~ 1fC%o'n_ oqy(3+FO%f~k[Y˳`ffбv{_24y-ח=V'#_Im37 @PcxZS9^{_`o3 0 c-Mh>mJGy_knmTs3꺀vT-gS Vc.Z`00̰Q=Tꘕ.}E6רoz9?4̝V@^A@"8=x;0 4 EEӨ|Ͼ1Ԁ5€i/5b^.{,X1Cv0C%DZH9u}E^j~i5byj_d>rS#{k vnގCҚF0 0ĹcHh7cG/mc9Ev 뀠" 9~zd-g|7.X`OE1 ̐V@V!|f o ޟ\~:~0khd:N΅r@y G]ZaiՄ3EVR+("?cjNv^ scP@2ql_\ rJ/nQ/՟>GByiR}1jM_%pn=),Y,>~7w܇ nF} 0 0LǨ j#9~ɻ"Ft(zf ugkQՁ<79j1n\+Ϯ"oĉfͺ.aA;!IǒZArTߒ!lx/+//O.Y{hӇDD=7Ksaa#~ kJZ!JQ!iF@sݜ"Vap57.u CYfNf(fѱ&8PƿG#/FiysR̗w=?{|E$:7ڗnVZ;0 0ڃ( 42vqjHSBǓs@b\"2Dm'_H u8HTg͚U{ᇃ`H4 `~y@ hdq'>ßP;sv)5[vl ۯe:aJ>4~o}&a98Ȯ={7nQ1 SQ~]ݳT\WkKu$L2%/=5 3va%O#-D{{{W}y_+OO=mO_ &o`}Y۔BJiqG~Zœ]hnaa&tdBB?/ 1/*|챩_04и`R0ȧϟB3 ̐cIBwJ)qXJW/89_>O{r4py_VNӹ\#rUp.aaZ#Zt1@s~foqwl_۬%T5nرaͥך<_tߗ{ 3H`3$XR; r`1ci!:EkE}d>4&P96^;>7o ^0 0ӂ泎Zq_Qh?gl'cмb3nFO>vQ` 9NmΝ? 3X`3uT' !VH)yxUk/E$"5KO'XoꞇMB78/0 0L$> Ѵ3봍>ԯ9b3d|y`΅8R"/gϟ?P t,RNq~WjPZ J R؟syOWa}X[0 0 1MVL!?=߸u!GJhlB!)qw5a:%!τI٩Fͭ"vSjږ їZ<;t.4W1P3qS]MxeS0 0B؅xk7mMŠPwȘQ1鳊܋r0yQF;6'RiWWBYC=TZ3ü6`j)kg H肀4گ^8ΌK0 p7sd/h!:7nퟻ?۟aaҍWAڛۮQ?jxv}҆rlߌgv 6v[{lw)yc0 +AIǒ?*u_3ClmKUEoy[ kZ˦^Ţ/\۽a"쫣nb*(=/mO?LAudžOXsvv|kk+:;,'9Y6?Ca4A ұ!PQFo{{{zP1DŔEM *b @W!A$'qϼ\0 0C(BǠt`CM[5mlCؾ=fy5{:ׯRu](w fPQ먞!Xr,D@KDQr# q Ηs@cy[u>oŃ?=cafX4s*&/q"^mh+Գ雾;JvYcvC;  \p=m0;AC:CJ3UJſڪ%DG(o9biU0us{x;๎s0 0Ч#\4~6 Is 9jgQ"I˾iN 6u׭.ab :ڤiKؓhR1^4w07]_'5OοOԂFi>E}sًgsbafMjC˙Ms9ʴu>yOϹ~#3y{l^!_A~zox]{u;3[;cIEƲ*U@\֕}_FqKoȮaOwU IDATEU94qd1C1lG/ ^0 0Óm,>ј~ZX>}O4ZgJvrW75nXns].k36̀Qq,oT?HyHR)Q(5*Ua.:HWo@>4ρA[^ۀ|a;vaU ~/edM4Fy'ycvp j ty:E ?wz]B|9 (`G+2QF}{tKqliWePӴZYߕػhPdHpS|Eװqۿ~[x?aw*ot/`#Yn$&s 7 \y^)S=kү 0{Q3HL)9s%Wz&- O?[d`P5|8 ScAw 3aah9uJ3&Cy)Le>i쟶iIvr +hA]P=='暟0v0Bz II핕K}/+/GWL\9~C9 B?8O_.ɝaaKӉG)%אo]H l;?Η<'c ^WvL3n@}5>]D:2`+(<-Uu?B}nϰ9[B$1~7'XuCkaai>- k;{N+‘{w", zB6lX,^gΛwͶ24 `FjW8w#"UpOU몯ŧtN(o]qoGaaF&]vu5nL`Hfv[3V)BK$sZ[[M֮rglŊ A12o5 AIB$.UDn qFe*8HJ82Η Wm^{C+7Oeaq߆=+^%1v1dGpW9M~B#Y~ֹ)(ͼkrϻk㨾SMn&.y30́[F)q*zr4i@Z7G۰M>iU+9u}{L "<C=~F}yyaa| tG]$ 0`_v۽ w شaaM8{;Dsu5 ӪXz@:';'[]ۻ/ 0 0.QX> ߰6Uȿ韍Ƈ0IcAf51:֞_9@=y,a \9jU! @EBfeI^S co,l#P?Yjھwn9o?޼ }n 0 PgJ`o#& =Q}gɜnjYKf^ l֫;uzPt>YM^z)h ;?8GQ^1xrT(Mt }vy>U76N6{A[_Lе |cBtnڂ[mݘi0 0 ]Gl>lzI΅|vMF62QH^n,p87)SN 1~QUϗP^%IUٌ>uY;tWfwjH 21(o}zye tBo[ 7йq-0 0́@܋>{}<3}J⍑L(08+21h; {~V/7/5bQ;JB>&cLVJ)Q)W@4(SPfl}|:E =܂q|5bi-83c-ǯwe@ 0 01cfQ`ξ48>{X֥eBL޻f<יa_u`#͛zv0j"B cg-2>/ 8 58>ǀk!5p\\'aaҔ8;@ F9`n}\uw h`X0`ޚNV6t<y 5`)́GoXe0J+\ ~!yqfWn҅`QS $2_{Boο~ eó/~  0 r_/v߷nyY#&>G95Fxla^Gx ?ԉ 1)z^_/:#Z~ ByʅJj+O! ;_LoJZ*Fb8+2(`Р;ƚV+þ{2?3aa [Ǯe+ѻi>>ҙ(3^>KvyovyP)v㴠1ԵIКtC.S ?p sV"" 1Q.M,Qi$"B,qrUnw )|QvM:G0xN޾0j4jn@ 0 0o5߁ImN~9yKu.8ڹ?X_.0v8ߜdh$ `ZuĭPD䥔h?ݤɣQ(~jK؊;EaԶm4 a9W񨄟ίyE(tJ_j,B6a\X.yYdZ~ UfY Eע]v=]T3a [/ oj?B w(ٜz^`j>u\&ͱKc jЫ1 |kͤ]u@ŶAGȫ7W|az4U0 0 ücZ8PYvAEt_aAzTuJc?vc9\*c\bEӻh\`JFr#icO?C H`# GwZp S`+qp?0 0[Ǯ+HqA#8vs}m`Ϗ{H|j໎#ŧ ':DpS SV$Kg_%fuTO0WD ,͝iDc[㤲\M`Pc[ӆSMI@Sx?5Yə89hmk7saar_/v.}; \> ~6ڞMK%#\p L* l~h:dß 31^~ez&f°7Zuq 1@H`̙`4{%F@@ׯpv ѝ9@S>Ֆ: h{o>)84::7mmw}0 0 4rOv,{$07mgہ3i}YRdl&7dRD `9͗_~Xl Sv0FJ| '4 |b\]0RͷǓVD= &IVjQiFY=Im0kU ޣdpĬTsy޼m?~; 0 0C{v{mg|aQs]y#ߛ9L:=Mp紕3A n ԳԩSq vaR0CZAau0NU+ *UߕTOdD5@ $BR2dQYovvrnޅ>MlF/aaf#wvLYn.'I!?ԻFwF)M7nW gҼVtvv0kM9}t_0y3Zug*ܓ[;7lZ'Wql9T@\]UqlE^?~|O5QkT=ݻpbڍ 0 0Cs7v.}^{Ըs|}_?+͕5) j,MrNAד}S/~5s^G %^>]4L֪B¤[7JE+W5$OѺ*?+t"LQR\Pkꀀ T{U ~=K"RJ۽x5=0 0̐CAh~D)1N c>kԇ񴝰5Ah*:o fzV@ǧ`TKw˗?a' OJI WTi/ؗSyjK0}Av+7DnPBZڻjCR$Pw_i!6>J~' 0 0.\^O2/{!~9wN3p{{~&o;:^9y̎!0}LajՊN:dI]yH>c cV.^JmU_k>qw|ajSEt~ޫp {6g>Ծz=)\ 0 _z؁]by1via~n"X"rlE#}O>/*.$NnQ( X4O ~7ՀIN"LtN=Y/O@ϻmBeŏ~'︷Oaa@}N@͓KR|;RFv+*Fa |~c kLzs@YGmM ۪y|[@~ >Av!9s>{D`2&juTo%̙MOɧ7;Z]_CV=$^~DdUq>=OzT!"%܀zBiߪ]?~S<baaa̮G^Bh>SOadYեFgc8ts^vv=)gd7ӨnJ_7cCϤ3dk#3Ɣ)fk@g'?  ev0~IK0;p_"Lm(X&>9Tt8/:ܭ 6ytmކsG0 0 3b=ut,=y Cu#"עe蟰qd&AlܜkEV} D\qwE0 0 Ì ۺ*@?Өk2} ˒<+; (et:m"SN{)rx5HEx >LM5EV!?V!c,>Ms$d0Ub t&" X]Zc,#3 0 Ìlz6lŮGWC=YmSɼm&d% icϻu^ׯ"N g50F ?(9z|Μ9g5jČ,Jf𰸺%E& <^mUN< OE} nZE@ƨp}]Wwڰ')k|5Xf!.[aa9nF܄90$ŨnaCosacQn=]e:1Z]";,_P3XXVZʕ2qKE$,C9ss@_W*/!3{Tm*Eנ/tOix| 0 0L}k\C:*yU$~4e"TA5C[b*4k*촃iӦ"@E dF u#ȠQ}$Z}r\.[s_/UO}ToUt? Q26v`_ڵ2{)W_U3#V0VGR&xꝌH2x+tky}*&S@J5ҩqZ*uA5_0P#!2 ;^w|6aaYy3w!%=g5ymDܥU d7kL4 j"Qnö{TV8b~*nU$Ⱥ#@jXT:!@:,h_;9']c?taa&xo}r_/H!Z Wv$͘v:@c)IEPzLwTΑ6mw R) gF0©֪S J@sML*rکkЫPEv{+Oq=SŁU"Xi)"w+N*]@ۺ|XLo IDATIdzO/n5K`alZZPj,pHg^0Æ#C]I"7m+ }/S\)OnO/p7^gSi>N꯭w9`SU5 ?sUe~.vRɤ4@ )C@~N2کSAqkt _!w n3e0 3i3O; qca6o!bl[:ͣZ YŮ޺;m޺;@Ntoކ7^Y60C'qޞ~ Y=]WFx5-aۭe;F֮]K[ϵ]}14 CJ|\|XJdܔJٺmr3ݣt1A6q 8Qji uh]0"uA/cV׹@?l3 8DQGOGc)8))h4Wjj¸0nvaش5l|5lz5l\:7ma b:&bqGAIF=Rڒ~;02iFd 9̐Qk6mjpwpKE0VPj2+$`a$Pi/7ܫV|X}e!R 5݈|ljc@#nK-\C&N&xq ~٫Qaf86i"+'bzrhjief]XKx'CO`լ`A(E8콧i¡p% @n7V PM߹vZp䫮z[_fcTB-z+Wgdw|eR=-3U^EKw}{][) ʿ1Q%GU uՍz.!3 SZZ00Lo?3߁#ePvwvc#OOb˺zI (2]rQ͙<y~ էG@ሻݶxZffBB`͚8 {UWMh&fHV]3Z̴ra6b~9?ӭ̔2•CAoϗ: ҉>E#"S s>/%nX~ 0C!&?'wN< 8$FV⃏Ɏj70o=-GGEIQ@T=Q͝|>`򞙽풱ÑJΫzW]u=ٙ ;Fq1H4DS<m|*H8^LY;mHGu>0Z:&@NZB_t0@318Spg8(yCmccw܃-kY0!8䴷RENv"+Ϧvڲ _]=op Zk]-*W^ynOf2  q\b8G6<4R/\&Z$>CtKAIatD_3c^S k/Z  P+`aaSpg1Rϟw! jR 16mq(g %_o̰#jz:}(YT+I#hw+ʗR_绾Ʃ @xW^xa;FZIJ4EJ%1}mh+>lNz]X"*)j2@T]Z͐~v׭8N}ӥ? v.[n/af0P/>B{f&S~|xgrr ?Mm`%g@4p6-OѼ|3OnkK#BP|nQ$Z]uWV#eB$ =i%ʠwS5S>ڰ܃=IA$LZLӚd=Ƽn@Ȭ@d0̐y(t;q%;:ǟu ^{b%0;ѹy]09 T 諯_I@QUNw<[MVdO5kX.ܫeTOC*_Da~Jj*,n%xj1b}(7+m+g%׷r@Nө>v{`&?g%8QH֯\{sɧ|sY O9֮]@9Ҷ{Tν0Üj*$5D1T/Wʙyw dПkaꀝ eg=ZLѕUuO¯?-Go2P\N/rM`׿W<1KaS2y?=χ;Sx z&[_ 4vereldwʂJ]y;a0Z~R&Hw)xjh+_KĻӂe#Vw+?ݷL.1]\֑7'*: %cڲ?Wna4M>g}}8cšz9L]شy0Êht3&|h:tt bGC2~}k9|m^$?dgǧGA-Hs\"fhaLVm,̖uBock#Szo]B!~VY7\=kپ+Wh޽rxL?R(:h{!W`=_M/cfPD$p٧?']p)~ jރS<ߠu@<w:D)r={^5Ύ2mEAṜ#0׮Bʇνr_ '2%eV*F*"cGQ QOeMu)?{2 \{FԄ9u_'q=6E ["2 yB,l3 3h)55!.뿈`C1qg p왕^ z6w=gzWҢn?=JMμot|9~:ncyy&.1kSތІ)^ZKT*Jvs{*QRJ]OS (:JnOWt^8_a-yT q_| :r ݇.l0̰?`#Ov*|lɽ]ϝ:%BN/tZ$ / +!Z4H< 5#;76'TD^QǩۢOKE޻h>5t, R8"i_9-Z_q>51  m89>^b?Bk0rS!s 85s4n[~y>:ym킀z=ϝ{%o[2( KX pD.s)PGa$t^;HMzt*Oқg)*jdB]0pSӝT-8mwڲa0c} W.qlGSK@/yqIx9c#Oa7B0޽ -Gi6ƳsF-m2}N6MljO֡&tʴ8i?Ý!nqؿ1+$/LiT?iX"Yy%F|TruQAH Nן:8P MZJm1},X& 6i[^݀k`/M-͘|s6ć< ȴ?w?Ka!Mѻ vmri?7FA":VR~3`s1_*hӦMs֧]c ! #<)QN"{zs%x~ 0}B/qԣz9 [:p׿={z) 3$ij;?tDS#Ox[vgiSh =~Җ9+„n,Y-*Ν?3`2HєkGQe4O~zl'"MWSA$UB#Aw7O#t?bpB+~>^?0ԓO}g.>ϱd8ޕw^ IzwDրn?.blGX}o}:ڪ> ]?;WfM8F\]3$a0Z]|!W+Hu"Va=Qr5HZ%_OhN3!P^㿮?` aMӟ@/l_0̐dŧbԴC^"5~K r $m*=}+LTB`'s7]!3xa0AB`+?%Wan*z.WQ+x_HT^9za`W@ZlP92Tn?l`_߮kG0 gZƎƻO⳷0>_1kvm">㟎 lૹ xa@Z%B`̓u\߰b"W"7cScbmU4ߣSTWDj J%"R:ڕƖWaQ_?yc;Qjao4jz^ )do=ۻ1ɠUDgDHǯ e\v"8Rѭ@ M5PsߧGM Fۗb> mi Ү_!3XaZ]\pR?L{U _sY{+J8vR}sIV]K "J@e`ql9Ա{+=Ւ9L:n:rp/p*eَ}{'WRfH {z!{z1f4zq>܎+ ydS "ƿO]{n_G[[+:;;Xz} .}˲eh03'!R|[j=SG4ʮڪȺM$[Q~bJX;TUnV-q#x}xz}0 $ cOŔ0 2fZ۴=sJ6€{ۧ>H}zVk>}_`b,.:MqMz{;$Rs-QHVB쪙 ;ZuCMQк_D XmW-`; n(E%{nMq0:f m'5c7Cr/*8x0̈G]e|G0LCJMyWmā^ |wf3nn1;O AnJC}WEtrÂD?CW\r&eJH%U/1RQyȦQx}C0IAdON6I~tQ($*՞Hj=Vn4 zDQJAꐐ݂ 0A3?.\qY rOzao^N+)%.{"̟%1}6i/?,]VSGˬl=-gUC0DV7 9H]e1]ERdy-KM%3]CZ c1v/Pз327A@[Џ~s~ ÌD;jNos>.?e0̐`#/޽;DIoءbLQ柇yWא#C \:6cƌd_˜C y L?=Je_$t@ǖc@el !"Qq=n^z7>Y%uJ ī: @ԟSv^Sٷ?yaF"֊O^ĕmz9 sx$;`AcƋao4nn~mYhQ,v Ӿ+>Q1NT1$ic?uB3H|2aM=|-Wmt;W/$:Ov!8Jگ$kHJRs沜 bG-wϝa_%L+}0.8 A9KaAMo.4 Hg4݂}Ep!Mo .p|ҥ H8(2E؎+iwOdl>t튀^~\hUp%6j|r1{҆M !8 /{~8?98#[? ؿ}@ uDN|_9FNU I:}^nǿCUCEC`௝xu{ږc Njl}KeDQ0C׈V~I?m}{l+.-eA(+֭u"[=siS$ly>6D+b ݜm8, @k^uk  OBXK?Na⃛6YǂELg^Į7||{*>uc@,/D{+R-vۭz 2*Pڦ@{Х˱a zbA8{Ƿ',\|0nzOӦ2Yqq%MAȬgLNۚ cɑOzm=n@2s00XvM ?{l|PȇrƥsR_gY@b@W`wP_v7E_ wM.~~u !(GWq%6m !s?,:dIf2ٷu^S]E -P_ts5j_nDlemJݹYc[".onꋀ^bs.+3V Aߦ}pŹARr€vEOQ_W*_J' J>][__߁29s?*9iS3,>P\Q&-?|]{PJљ#_-Ǘ> %P?ӛF_~\$61+[z= fcVf楔^z]pă~엿/@~'Ir qu1&Thyn  "n( lX9kwASB(CM_ .^Դ99ι 4 dVǖ}]Wv//k׽{ߩj ˖l'j/NY{לo`Γ,dC?<@F@Zged`@2﨩}y}qCA䜺_霄_eeA?eP+P:o;ݏrhb[q):LT1ma+v K<: R:׭+yn-Ho/k,V\ |pޝsE㋠dۥ@ge_~eWpskm mG^ }@MGHje5$JjY~>_+/:iSrwUMAȬgw~%i6Oټ@'Y^kxԝkwu;. Nc,Y_n}e'%m׎}_r:W> *D];֯+LIV }~>g_Q'ߴ)07bQG4m!7auثԸާi~_ܮ Zm{^_#߽jmv) 3kQ@x@:Zhd%X t !T:.d{EGtrBT5aw?>Orro{i,8M!bE$6}C?:{eSAnθYt,`XwV7p5 >)hkW| !U@0)ϗ{Ux= Pb9%*ٖ@@4(࢒+($AV0!9e?j2^ڰ>!dbU{63p6Yva돟@^U;u:5ՀANSֿ^n#{2 C~QRf/<߻_,g$D=d]V#Gj"6"Y} DODd"AikсuZFks63 BZE7iS91شz=DnRz] υ ' jnmFFFlXdPNjYvAR/>x](ڗ_lPG\$ :*DpM: Pޫ|+۽w4!@aނx?rYӦ2<$d66]eǤ[~l~Hvן:auV켏~mks?:v|p[kQїj$( šꗋ1J^JU5SSm2y<Гx9!dsВx݁/9iS*M@ȬgC`φ-dt_|{^:ǿnϯ922R9c ӛ X{?ؐQ1?P Z6;b9})'zX46def^lR_A>އO!*B['1y>oB)羺i3l;CkS;9:k_ׇNuf׺7?.;~І*Nq,_jUїohey _^/!rqQe^nZkmP Ȅq@ ur~Gx'B G2|?} ǟiSZ͛'}$df|9個ؖkLԯ-vί?}>Q@?N\Bd`0%b<Ȟl?%6du löl/X{@KG6GR # $вgy_҇K908#%yqMBPs+O7m!s>C/e;es16}NN~c~@wѓ!00{}:JC=p6 nq"cMGt/(5A@ λ"86 pCglyvC>vB⌫._iS!vj2lϳd^%DuuCZe6Sgo"/00x?朳z%ϋA5EIs🜫K6^F4/=Xλדd-Za \O\kp]m6RIcMAȬgN'Pw:[@&Id+HH!lHi-coNdJ00w0U]LSX QwmKo-^דD P |;5\$P8B5mƁ[Bfߋk>M!LE7i۶/=@gz2׾{">^W㳇t XGy"cTO{_dsEޗη1&dzA|O'*xUAlIm QP Tp{B k-;7rCӦBzcԴz6!;e"1jkekVge[H%A!w90.;>;o#H``W8+WDTe/ Q `K#7k8OUtIR:yۂ6P }::Yً_9!dp"rV^vAӦB&W_CNB&b߮W7^3KԞJO\0*[ !9nbVŋ#RPOK^%î@ڟdmJ?|tF-<( %AsrТ vny:!dVp"|)羺iS!S5o.x5MAȬsI D~^^mGH>%Q?/N)`qK/ pkOu8_;͕{(?#qu/qQ@b@!g-/[;.>  lp@U+X=HKE&@C{@`- P(GHnp~T5F@d7{>}ℐJk<+glB49hbꊋ6YO{^lw+럚`]? E*WdHeue)}*B ظQjvn{ ?Ls&^1x?3~}ӦB٬ 'ڻ^ߋ? R]#-LªH} -a`Yc[^j!n؟.+qef_i>tˀC] dλ-A~)ﯔKCU R T0U}v\w\ٴ)qկ 6YۻhE/_'z j]fU5qt|ݭ5A' ;8n ㍯2btLf ʑVUx`Lz&:Z eEA˶*P^9WJ~EΓM.D\s]o$ڻִhb_vAf2''j\տΩ[_ IDATeΓkKƿwaY+jc02,;@;8XkCV b,%`b@hۏF_?sBU{_fBf3qԲ69?T[-ҬΠ׵ t{ `mͲyATlٲ$Q |Q2))XUy8P:JA@!+=k"6Xo[6*RY.l_kL01Dc>ꄐko62p$ !./m:9j=?Q05keGԈ<S/)8 k֮>\Et 68!ktUd%H{tOt;r΅%.(3 Rqn.!d6 ffBoBHGD Ȓ~}&dɏ?^cc??ڷ_n8aiUC; ${P2Ohv_2R8oAzz6jO)&b56{_&v[ڋC}? =@':G;(UU9:PT'>~-' ?k(T\Ix8gOöZMBiUoi3leyxs-䧏55wvmta~lA1@ǘV)A_7ꕗzԗj'[q/{򵣝Th$@M-n1zO@?uBH4bނMBiKg سq[xUδd֠lU&?O??7(8єёl-{8wRF a[P)Tʼn>{)}bKėE$j0A_@ Ii~(7q.Bs\tdM+2iBӖX蠦M!~( GjVd?g^=SYnmbΩQ_B1>@Yf!ƘCnXNqzy!˟ޣe[_ &!߫} T!AA=>0 Ua(ohǦxϟ:!)Y~>-Yܴ)Y7 ^:߱W-H,xP=rFɈuoU@5)z>w!^t>by?8NGqvC\ iO)OY?IKkbچy1uĎB@m?]Mvϟ:! <8'Ʉ@Hx'\z h-%E`*|dd.r0wMB,?kef2g' Exw&Wm{]k@KO-H216>@Xv3se^JJdڭ!Eز@e])(>90 Dhm#D_n|v1v ]`,aώ] !њ7д)Y ;=Oş"&@ZM\5 _W%05S{|sw>0?~{Q YsVK\l&eU"b)?úu%_O Y}}^(7ik]upö`T1Ab5M!r/=y69æt_[_g{w5K`fLk@޵ λΰgػG^P~iAVƻ5 6Ǹϓe e1}Gxi Bfn >t)MAȜa߶سq%{M? _kǤk۪59u`xU8U/JIysNs. LzC ѽ/y&>*_ۤE aߏ 8L\6m!dUM@Ȝb}ϲr_8=M 0_'}u~ak޶켨`tt4n4P\07rr[GY<D2zVAlF*t?P9\W+2b _WZ;sކj U^C9 k˚>7T"ifj㽿>dKYy]/{ibNsޅz0b|@pũH2} ];%@ZBOE(B )NU ;N!v~o7m !dqW`5m!sM=s'"ǟ/}ZIJⱓ\]zL̨?11M&L@\2d$ g_Yfb Dm?. z50زW_DJ!plY B&T!xeԎM[?dʟ-!YZ_48ئM!Al3ƚ69ǟ{.+X^M+PO%*SkV uFFF*A c)Ƙ3:[Jzio̷;{yWs.{п}56W"|5OzJ y];_HtNU { a?|$91x~g7m !dSCylS]3mrX''ub"_8?ȫ>ڤ0Mk֮6>)AE.#j<\>: yȯdP g9 T_)=4QBfV˚62PB&ϖ=1N7XڟE=?Ku2>I-bt``x1, =ri9Lq@XRPS7z:@Fm?\K>\ѻa5[Z^m 2O;~Gu !ŕ{_fB;ui3Sݲ;wt*Nj9|uj6N9 lوXpv00 $KI "x ,76֋S^fsG\ ~ǵl+Sz @.HT .e[i""ĠE/; !W_d!gqr!eOH^W{w֑}q?[ uR{{[ Sd5׉vmx&;炳,N|UInSi!;˲2{C~XGyL2IndK;wGKiG_۰`U !:Lm<g_~4c e鱝:6O& ^Sc?su06Ur.K;KpXT@w6n/}twq (  ^Ŋ_hk}Bɼ p~{TӦB0N9gU&2m-xxEſYYK+?H%Nd%K "yhmu###mN /Lja`xo0:br~Qׂyց,͗ik'ºJ31Ti8!WYbs2i|MԦM!=r"9Ȧ dαlfGb :|5RmQӭ0A%M&mS)v zq^0/˼>#ޞD7g0ႦM! {48ئ d 8>sAyfe(WҀ@/h^_WԵ4$grgda`]f> gyJD3OW@t$OWmǫ>~ݖ+~sU@>@iKhO(-BZKoygfB笢!SdObՌd,v@]I~m_p_gb@L6y[@U-v@45Zbq__T0KV<gO&JIYHYiG>H*rH{hV⸇q&, UeVE· ֏oמ}cw~ ;BHsp !Sݏ }ÞR,T[@g{uhGOp mO}Y0pEu &Ǖ(DlZ4X\:Q;U%!H kJ\hZ!PZ 1:ءmeυ} N 9Vִ Y>tMƃVu]+Ӷ}yqy 2& re =v횓ʻill,8z,&鑗zqۮJz}@*\%Hy# $P Hk2A&Ⱦٟ=2ϜN{96B'7m!s6`΢6f2~!054_1յG}\iTNT!hc_]'v%@8 b~E@Tܘl5|]2#mDŽA^9 A)zp FPAǿwˀ28hbO5o^ӦB9*cCuNv̴Y#*P I]uR{&"KJiC@*aW/UP\2E׭,/Aܘ嚈>>J @g Ua@<aB1ȯqĉ6m !Zȓk B,1"=+G}#&VjA;y0A y4 Hijq`G5kW/0\ZޗoBXup/o Bȑ' %Bɖ:8-_kE*j@R]|r.V1+ 'tHfJ.zU5 3kޕA0]o GHUB>Q@އǨOȬŵ~i3!+=zbf2Z:_`]'Ul3@gg}yB6mCCjsh>xNkHh?ޛt  e[$/ݟϗZw ܴ)2! dz|nnݑ9YձR7J\AfŎ*P\ޮ؟B*Yjz肇RkX AEA\e֝sG:eL a`©µD0P`EM)k:`e?!k-y'C6B&CB wǘIϔǑ zS]z q<߹ ڎ =cͩ:fpW\8yY+銒~ N5w:w![M(LU_s> $hA=-#dp WcY+6B˖Դ y6NH_4ˢS?O3:s4;:وreSZ۪߇OΗ6 /W@:c-WvT'JIird\tK<76ٟIU@شA-s~|irqԴ2e(H޸լQι~l׏Ѯṣݩ] ϯ*ckQN :")G,ͷ-dǽK#QZ\襗}E\l+jHTl}D-a3Pف1ȯ`AMB!SBT gytҫNsꌧySkAq;S?Q@ V1 t֬Y=Cε}ekK9]ق(6 R }$8Zd-m>hۅ..OIB«8̦ i2 >ºB.˟;y@Z)POD*P* |[/=g#j޿sWbޡ'. v].R.fV%whZI[56(K@y3Z; Ğ2!Zkq5kqb㓿NŇk>yKfBȴa !a׆ؿcW;N3/]*`){QWڟ&8N}ՂAl(v:8nǰ@ ƚuŔdmˆ|ҷ/y.ιP/}O P|p'ZL*mtA.LZAx_ S'5i3!d,=pN1!Ol{|}Ł:cLx,V{u ]r;I!yG ! q8Tص, %*Y}}I@@YcM"J(/۴ 0Q>ܗR/k6\'`S??pBH/+/n Bl ?l{l$3k$̸wvO[R>M'ǥSk5.ga c͚-wHzꃃ_F@̘R}e^DBA8XܖT @E AGJAkٿw?~|)p"w~i3!yM@KO>BK{וlȝ4PK?UWPg @Ӝ/M7H30-& <>U7y>O<'8*sio~NR3H֔r~1&ٮ+ Nȓػ2S\pG5m!G޴ wg_89RW_}^t=?:y?wcK\Gï`rǡZ;0P傤QA?DwW΋#YڻT?dMtCp@AHM@%?dոd1@>C$^JwMA!}g /=rr~TkGڻ_Gyj|_}&g *qYv]2J?/I1P``D>T hґDhs?T Yc`i@@Bcނv# + NWIBylb3#;q Wb^ 2DžyS6w8}8X8B?8bl t&^W h}1 L'zM]3 tE;6oŋ٢_cFOj B |nq:GrU纊@:t]uuUI אjQt\Xk{9D(豱1]Pd( G?)Ap|V+#U.5 )@&Ag~`>_Bxي\״20uX&r@QTzݤYڱ۲r|^P_lm˗(µF/RmTrTDiy)"شJ@}A)5 rӔDŽQN~ Th,&(6 :h fZ5m ! G~2^&?K^URҧڎNZ>me# h|0-eC/2 Ntї ˶}p ͽԁПTH7Q '3(sB;/Z BI+Om B( > >i39`xX^̼Yu٧u6>pFL%0Pm:uҠC+HUcP0rT(`S^Fe AW|!+A@="P/wM(RY`AJp(B9GĞ;Bzi3!dF`!cص~cJgs&uqq ql.ĵ86uk,kG%HիYbyux(PUUD@RdTd} rM$NmLh!!*(u=Ϗ3ƂËB_>KK~/&_F:jnWguՀW,_3/.  D-ϧ{kk ~./6f*_@SQЭ>}}O436Bf N l{ٚ,yg#VZos:XFϫk/HzA۹eI,~@@1گ{BvU^[:߈5*EQ_ Ye@Io6z_#Q .{vH !dOҴ2,=BɎnݫ_=pD%:i?[3V:l(a{G9/00-!C8G۵A/@'_ -^mL2 ( << ik>y >tifBȌ B϶'8uzyVZWj@_7*H[b%Bd5 n.`{ZƘ8i||,f],e@vB& JC{93_&/Y{X/L!P =*(B}6b?!3ʩW_yqfBȌ BNJqz$_#U]اUn#;WN\OG\ɒaƘqR_:ή,>|-S:dW}aT 0G_*1y\W-%PοZk{mxGLњ?o6Ba +;J8=:_Ͷct08g^S>1Vז-9Xn0`KZfKzBADO * ,8x;9{JU z& 9צ=oBHʹ^#O:i3!r !}g=ؽ%CXlC'{:ʁr|i%H֯wA]Z u@A) g'@Xcc] ^~z!:! NzR FcѱWY$PV6$ $8PCO &,Zw5m!45 ۟P!7C鏯Ӿb{Q;iU@5Ė|_'mta]AU py.CEB 8@>s.Q7w &~=Puda^k=>BBTQ2,9d2!?l_!/ܐG'G<>˖qOKe[F[ :);L-!^+=2mX0k9,eqe@@tP_Y/P Z_,kT$6mwx_MZ8@ X@Lpwi3!QZa%MAg^;uYaNl|FK :`P) .TSӯ C+F/_Yd<.d/K,/pF9#XcJJu ŨAn@}#.א`dZ/9:;7m/S&pGn¼6B?7mԗǼ$S]*R(E+upSۀ1XY]qV r8t4nQ\O ξV*5pޅ@4Sk`BAcM @(+ dмs0zxfBȬa +Ed1_[Nz|ONz>*0[oOu}ɺNJǪYh|TN}C9F9(\ߣp]RQ@/uP y: ZhP݋[ןRKk<\5m!*>P;oߞ_?3u=sJ}^Z]E Br'5N)_!fVJ"(WzU/Iߗ+'7LL|zYFJ ,^yEC!A ~ GKk/QNh BƯ?i9 adz/jg5k'spK_czMyZC V${6xx_(GYx]e[HdYD@y֔Aұm -1?H@BAK YGBg6Tz]OOy8@:ptURVb Ry诿0pޅc!j/z1V+U&_ĒݖL)@pmB%vHfBȬ5#Q ")lՓ״ H)MScd >ڒ ʱݝ`u:Uzμr\9&P} Ͱ{(t^pre*AJsL0LjQ0/= Ba Y +۟yqcQ1#60;iY~RI_K_Oɵ|uۂw`h+瞖 2oUATs>}$<%<`[5ES# sᚹ+3  .6={gL\1o3\R `mm,u{+ysf./rʳk$+_naH1Xa9۴RRF s 屮b~_)ZenXyZ T0gw}+c<< ^g\ Y E ,=_[6l~ez.Hȿz'>/T_w^7MW+-zr"1 m*-`8ܦC=|sL~pˌ˚"'mz]nZs00a_Tϭ'd cp@fBȬ5R mHJ3P@+t[@|z(54X+bТmVyW~,. )8:c/T &XcPD\W$@2P 2N{YX~PBȄ}݆L/͜esrG=לуeu9>d[I- +̀7؟.:Euv!/LJ׾`Ik$7v)]=\''MpxӴ2' !g׆M':/'q\_8^vTW|+_Y e"eK0(}%;@)z nq*:(އ-~~v,9Ц 9E <;\G$(~^Zʟ{C>֓_%2cVI?`)N8eMF\$.μccI_vu7׷-[qÏ'*ye>\BZ 95<;߄;Bo L8fO{}OJϭm>Ô*+ [z8u2_įU%9b}S$ˎb_^-ݧ# 1@)D(>ݗS)PĮ2x}u= 'J,\|pfBȜ5մ ܾ{At u;9>[SeuZ 5iA^MP"b%TsG82e`*bwl)X"9D'?Y_Z)#BB)Ton|ٺ B`.|[6Bl d^\\_ʀ^܇_uO?w%3uA7@Iv4r(.p=J ci H⠷]Bʰ1*LZ/Xk]F]ř*XKDMP?Ϙa5o~yXfBȜ- ;7lxAY*|;jOjA#iutvv@+V}_RC\f08 @](-2va B "Vq{#Ura? ::{2L IDATHv=ea /loi3!d!3 ؿ_c;@E O$iIgJ%vFv˹<|`!|7E|/Rz-ާ{r|qiZK 2~8c6BHPVI:k}] }XKCߛ5Tvku> x},$Nq?iObn }d|ZtPDֿ4(lGl U!R OcpѴ2'a!3Î7S2e(UҧYJ:9VT=yi?ԑַԭRu0]_KJ'߶J~{u.E_{)P)MZO4>ǘX`B!~D58JCUQbڪ1.x|yktK>,j):Y-3bm@Or5!2ud2!dxnSүMpq2iF>wM_gӶ<~SX7 ` oQ/fll,)b}EWt]`I!9a[Y~ IiL~~(X T76dܠ lb?!}䕧bYC9IBvmFyzu+Ym2 DĀemqNJd5ofӂ2"ȗIg%;4]IQTHF@+V1^;دבjo !}bf !dڴ `G)X̗~}. V&+t_?ڜgI15Xak_PCf=w1/x]${ⴻ |L\t1pm8Q@\=!0T#R ſ68​/7@"c`M2ZZMBϾVpLnvZI;b_*6=-!.9^޴r@oמM g͟-yD$)HH9%[V*NTG"8 T*UTd)J%KdIEA 8  z^᜵Zks}w;j{g^Kr]=)νeWيO^^eL+nhOS05 y$obqɗ;rwӗi^V։B96mmn9YI"xPH- L]hii؍qU~=ڴuQp&g߳{t_-dBQq'x珕Jts=c%+wP{9Pp/=6.vueIn%$C;Av !akn|>K`lں?^\x4} -ٗ>^*1R )kDzN ԓΟL?sV0cXy g$Q~Hv*}ݯ/={SAm9q>٠M %,&NW~ޟYڶ{р7O7} $ߓ9!^SˏсV@ZkEh3+<ed!!fۿ+Ժ_y\s"ߗ ~ii)ͣwHʂ,Җ~~6 9&; Ͻq/_޿rF҆ ?? ,3O9hxJ}gߗ߅Z_wVh^U-֗c|-@[g2 f1w21tϖ" UJuu]'-ck~Hگ{#d2"6ƅ2Tj~;t-7 P\zt̫cZodž5]U.k9~VѤ'Q$ԒeIq؝$B/=mϽ/--ؚ=}gH嘗{BL'V[,Wj@ǡ V o!_)W|/H]1QJd3A_m&03)r`JxS|T ]g1- @'&@|^Nڵ0!ď62`tU\yyjI Դe*/>2kIݭBoC*(FGtX??Nn_s74:XH _pդ+] |#;W'CJBlj'%`չi{_>SL!XKk;(Tw z^Сr`l0J%BDaծ@%sK{|6%cLcj0:zR'Ry`jBf/#Jٺkz0Js `Cifےɦgl= E%P[Tp5$Fȝ:#DDtлC%O-7R{%˗:0 3#C} %LK>ПҎ2ߩO\/)7۟ 6 %H4-D:׆yB7ʼuoCnų5j}}C t0ubM!`TlnN^O*RA׭&\߿_UksiA-a̴| 92(`x HمHYz~+Ho&|\Y~ԆJ㿲I$(׫Qjr3.ڤTEzhaf !QN>vժg= Bt(.{^(X}x93*r:K@^7"o;(וqm`h{V~;p$L$w53QzU>Qw^LtP;y+>/ ]FQ<T v*xݡ P8j~s\>]+ l{UQН&&0@oktY1WlϽ7s)RDN$gT_!aV+03X!6m{Qb2*Pfn<RSrKVuC`MTy @_ާ-Cr?UU߉}ثQS*HK_ IBH+pOMڶ{Qs v+ZUKP~-r|#2͑eB8ngsٱ13kcf˼$\o~?G[f6J#͖fdP_m mQ A\?WuÕCtwI];XEM(}ݫHH6GKR\? &N g=qAoAt/" >e`͇@ *e&7`Qvݴ32` 0\x܀\׶8^ JK7}P_Vzr(B0Bh9mr]f&WC'$Y`{%@d (%t+N ȼDP&|naX5>uɽ9Jo}uWX-VWu "I(6 ՀSki~s }r@?$e>oW(6=_K@/B 8F:ڛW+`rg^L( 'E&i>"f]1K~?縦뻚 >r.%dVt CpСހgc Z!0JyU7~}i=Μxӟ`Eue$t ICR2,U$V~TvP[Š瞃0"xk6r}1龾Vo(Πր4[x />~??g^{\zLK'ϦLGɨ\N2'Yg_Yf1 1p/=jh6s {y}-^DN!|6oJ?_Ip0$]Hh_CzxSsl@zwOYϾWK}+O@{>b R}݂ (W}r@nfsBvfJ~g6n<2`|K`\>M8u^KuvD@[ ̓l_Ygۥ˘g%rRM̈9O0‰T`~|$PWCƠOk.2>rOV*QHٌ.E`P.@]VOm" 'e9!)` <ρ"s1''~@vKreE6 y6 !j[DW PJ[_23]8 wed@aL8%f:>L[Iy{/tw`r 'Zl_K:` vY S~0q"2;ffW?'}R@%Dp ?w^L/#\n:(.jOs15t~s]jU~tB fqʧ ^$"dH禍$ ^+jШ8]VID] fՁzYڰWC/&LIHpE>!p-K \ͽ+X I>jzWZ_%jfZ}.ƦW_l A+|"0T?G.^v )N @J <5^x_`7#DAHm/:W`4JZ=$`>?f%8* W/./ ]S qo ] uOl4!^TRBA.6 UtX%&; Fy@nLs~6lH?32`R\<{.=?24j~f]]y|Cs [)S RM mWS%g_V#m @w!ڴmI )cgUvy^iܯu NT?gC%RY(kjiHIpNPaO 5]p7Hv//&߿F@aRСC|C&t>Vg$|o Q3i~'Z[YAW3El@'!q W]L<Z~{v 8M`\[tKVҕj|\[yA^5{yN{22`rA`*0O=\~l{U2`=sψ| @h$@VQ!5]5tjpl@70` @z'~zj*}~~]~=}%**}_} ͨD3U\>BLm;XmՓ ~N@740AN]}K_ rmZBka\gR.QY1,ۨ}YU{_ Y_.: ɱuvk+mORU_i@>򁾞syixs뜱'X{h}0׺* A !4Iw'RmM][{ ϭtxOX6Aཫ%O7vM& |26wD.F gHUv~mB@ӊf6mzZ߯SK}L:? W웧^.=?W[̫_k:G`yÜK]Z3L33yce K XX&tb(f3zIrs0(pH5[dx{nӊow ٛ@*dk[vcq4XĽR~}?|*Nڶ{I?kxʊ%.)"t]5WWET.L}¨`jNtw__d'ڼ]~ɠnICOpCw%<.|nk96gZ!\Tr503-_^? t;z0YNk+,"ůUg__i<ݷo|Nu ?Azk[-j@eξ̖>~ˀo^WGˋ6w׹>P{"`&.1PtDd,α۞M]Tu7v s'~6l1%^Y61<ӽ.~|%y; Ԓ}@4rQ'y~~j[S]Wr}}vZ"6v5zv .d ay{?z xtUWw']l+/9+ F]%{ f_9zxu9/ sA. t@C00/%<13OZj[8Mk IDATh~P_}ǺUK[WMץ,{I(+̼}63:C_ˊժ2c5/9L /:J t'+j9n?]?jѨ7[Ղ/-]=.51w_ ZDLݗǻܼ9%0U &"˿y|Nz\8Q%JZտ~H@a&oz0iP`R-f Uj ~% DA]^/ctlovQ6_|mF7` ;iiػ`m>6=>4uF`K+I?ʾ "TySҕlc-F=n`. KDt}*1lfCy]ݻ=CDtqSF jDMʾz"}-|.-uL@EbEXxM_ښZ!?J&}Y${غ]_9clS Kt0۰dL=>WLc_ W3-Pc~0׌ Ȍ f~#l -`l޾nIƋų^4%}>g]*ڽֵ=_s\/怟IwA*{^ͫ<]kY_YTyoimPki6BX,m0YXڥJZEޫk>";yQxƍZ0Ұ4nj8u^|MP^KobPt_W3V2=y 0l{t]j1Lbݧ}ߧֆ=o=`ԑaJ6/= qΜLP`waH%?D_X\( ڻ{,LĹ (X]jM_u_]]9w\s</!K!~|9g3BNt{䔆fU vh~6?li!lC-Xu)}okswy xWLJ-Pc.֌r[!tԮ`j,ͱlnO ceݴ綛^LgKG @afW[_ZȱE}>X"`Q7)_˿/3R]sqY<lʁw3`Z03_ utj~I s aqb. 蛏y]L5%+(W4K7& 1x)q&ھgIs;`6,z ~X]~ B1 +D ;&jJ]I`2ɠ3Ře+Cb&n03SC/0RY,kUD_ k >7}K Q+F2%yFP^{MG)P/yʁ{RϗqݦyMf|&.`@g3C/0ZhZz9k~l~x׌Z0@ _?XL^?h12'o/P=}(q(23h4 !WuQ+Gd-P<X+H1 "^c5ؼ]jkU@hh?B{skH,}MA֢@YA߅(ƨ]{pCn6n\v9P{j^~<Uky~@@ױv nu6e})lic3w3 ^5*|y/gd$2/Ԧ[~ F 0,0`}q޷){ϷU׮ϴNwW f`M(_.rY?U0.]_hH>g1]i_ 7^xN|be`b+ѝOq< NjsHV+T"a Q{ otmX!c|~d^"6ϕ{4pNi|R0bn g[٘knիbp.,r p%A~ ~>נbQ'Ʈx3Sg}vz\ru#> 7'vꅔhhoy6`J X?lڶ5.^ 4OMoENA$]|bElءSnYak}';#OIfYB l߾kސRZo(8ze- 6aHiuڴu a-FElv˳ mTo#ZL}FP;ծfbdy0?(^j~hH%"p~Fy`~s@ agrA{4uo 0-qStٿzٴ.슥RV4&|OK 0u|USUϾNW൏|ߺf :>ĕp ~u3 }#S~_[BuMA01v? G&naJЪ.>6קN6hdU#CB) ;j?|=S9o򘛠>=<+ >$lH&$m[=0bT`0I]̍D]$9Iurzo]nѦm0D .ҋzٸmio.ІX:_T< \Fa7 5Wڥ@}2@Wmz'PxM_nom}:/c\X}vA,9f1F ?d;0`<Ӵ|,Ȧm[M0̯1,Oڏ~$CwYS-uAW" I+ܛD`ƉR?ބ"75P7hFy׷#ͤw" C/&qXWYޓ~5t:zs>ʃbBԙO7M֧{ 쳹>U]+PѦH鰴ai%$9o ظ}Kg*:I>|*BP n]9;I(F >Z;3Z/2߼z}Kx٫q/J>X<)Y`B,m8`r>:=đX@|u]$ISWmi>m|<ڡP}ﯩަ^XpTLЯS> ϑ5Yo$Q5Ks8͊gaDv1'h3`B@S_|8!@@o+Ir`{9Ffʊ23ڻCy K{\J]yF%׫~ݚ"sksAIEjIPɅG~ݴc= /><+d-&p7\Rg2~vr(Cܺziuo XQ%YI?Lmsm-|3>̔L_4i* ҖH~T*f`*v.`Z6 ɥziV#O3+>Vj**s` ROYЧjs6&`!p02}ym{@ r ]B_hdҧ/IhWZ ۓŞLbʥKC/Bd| R/LAbsB^J9r&xjTHDo'?'D? >Wl7uȶqi$ PTwLw6Τ8gb̭B`@S.ٸmKMl H̸{?b>ƀ)b00F#稈?\-E/scT% ?HI~%AxL=܃a*%4% *=6DZzpdzz` ;M/8;{j}lWK&Z CmL7$^Ot_]wId!kI'r,B$Fk= dLm9[`#VyξyjeVHE¢:_0:UFLV=ji۫GO40zQi 1*,{#1au^mowE_iZoo@?rT[5 |3P_Azd ;),:k^́z}ZˀfzOtNWS"o-h(FD-s_zC1K}k|"+%Ue]V,\\T/EHmoX&@KUɿK\[aƯ>ҹb/zl6+CR38#B62nskPǡ)S=lRzR_EW#sgrq^/5yޟp7gَ?$|9z^*غowzy?nt@u"e(.LB0k$IL&_g"--4U3MDf҆!X? 9E D:R?qZ` @Ǔ_K\%6 k^z\WRSIN+VP|`,0 Ҏ)njt" ͩ$T/MrZ uVJ)Ǩ'L=-v'g>$V'?mJtyf{/]~fnS>3$H~@*pO2ۓ[꼜'U&J*|*Z>1+Lr^<< ܴ<V3I=qdeAmg"/*ﻏ9P|oۘqL%33=['"Q͓H7L~sfbj< GN; 01im97(OZ ?/w˔,c[ԗέuֽ66Њmϩ#w|[=خkLD 0 X$oJHU%/1k来"K`sP=_5I&Ca>([o40z_Ҍڙ?Ss]m/3,JB&zo8& ?]dDm|XKJ .lΧU#S{Z҃s1?eh9lJx(,@Fl\o._HǾ\%[JѠ.NgS"fv~U ]JwW2}CŹ?D9o)~zPt>{/(CT=s{E`i6 վ $#@0v.9;`y|\%[3'Ȯvg;t`@;zܕk~0@TO}cǟx7}ߗo?%/2 69\ #@0vΟ:2+76BS^bE֒L+Hq]â|@FDD'PVzUu_L//y+)& jR~*HBb٤>I^*~fL6L3#?ufeh92om` Hh@ctI,B`_KM(@Du vO2Y`\pi.:%wEYe?AWA `l3v(rғg,dR^#w>K/ Jf1FZ؊0ξ\/[uenƅxwVO@>s9.Bg-Tw|#aJe?LDDq @*mЮ5~ $ސOzk|tI/U0DÖ];ha广4+ׅ|0 C/m@wno>HGδ}7l c `z'j2tVӄ" vvcqp5^<12׀ߘ%{g9u,?~,639)vHR@idM+%ϒ~vo!8GvYs]ΔI߶D.W/2-^iaPEǎlib`RC \SnaiF;nܫ>|"Juа#>@ME`}67^Enٞ>ޱQ2-^6\ լM_ ąR @IE\hѸgeXE \382}>?2׀짰aVӜ%z+|44H&~'}6)TwB /r˺_KpVm|jxm F"7UPoTߥ©uTuÚ6 I$u;xplj8oѩW^zk_`^B_B.JjW4nP)˟3\aRI%~~I1Iyh6R}I+uK oOD }vt/ " bFMΟ>32`|㓟z kp!'2髧z>̋J,jxeuv5l?;~dL*@DBxF>brYW0m+U󝱅ߞR@r@MD(9[5S?@%AP `FsSԗzk.%'`bvKT4mʹ:*jH|%=F;1?|ܞC ;0#Z|eeo&kQHTQH*fOup*)+jRV,z 8=G!`\g:P#иhyuo~|s~. 6' ځffސ\Yc뮝i91/oKu7¦[i}{s_J@'D1`b(=l[v2y~Ecr :/ؚכ]C<3׵;~tPRs2HYSNB{ $D,5f"T`ԼxKus=; `]S}4: /W-кYk#.Amښz6tbr -Ce+rJu >'ԗ9UsL'HhZX_$ DR3[Ókk7Q`Tܒ%T։Ps5mѫ[ VtU^3R TZLIbQe쵍@#Wrte 򥅀܁ӯ՜iHBV0pkX\0楣Hr%z/ 5dm7eus0WL5R20*h]$~+]+ln 71?ù䩧V&j_t_cŔ':|Ꟍl G 혔P7ƅZ%񙽔@cqstFpU|3҅3g^fp_񈮔~N-bsq'χ@SnHW*@9bic>-0.& " w>h?$@R~#@eR2+99|RBT)?$%bB쫛}0^:r|e1B7怼C5SAXT^ex]]~RL&!ܬD1Xd3I}ӯz7!IR;Ah^yLd:ǑV(DMh=XwxmR^%zۓ`lq-mh]ȪxAwD@)DOu3t 3uIɐ&O4=fM \O9]%>B~Z~U @!{0u~B|F͋?1R 7URNDFƐ B:-BO݁>=jVj"7k1B`BTSکϞ(Zo_ S?htר>}!ی6쓻Vx^ :;gHq foƈW*8ysœ \ kN>^ +giAUv"a2I&N@߯2DazʲKקALrSm bFJ/+ŀPc?O1ơ놣}N|be1E?'UmId6$ (K4W;M|!}:y3sipU-UrC+eXmubuP@5=7fehF%$ m~UX\t^}fr;UO~v%{| @oqUx,*p=VOc>~;uNh "h(e v}d/rfa"̫$彪~%!Ermi$e6ڶXWtKuɗOГ_\c߸ܑ> _+wY(t36 Nڅ??x (Z %rs}'rp}ԕuJysu]V}.5WL?,Fz[$@) vKLc>#x>_iʕv"l];־ȵ"@)"@ڳBVrgi@`r-+=+YEh~"A_{oTX d@' ` S6R@{>pD/!sx=beHz{3rk?ͼ*<utYc I [ۛ!05|ߗy')W_@ߎ"IS?I]Lp_6.\6oϝP`>__ų^:Iz |aSK峮WUۀa %R:qwkD0B8Oe?~&x?LDOxÇz*Vaw伇$CP%!I+5ZF1ȴ潴q떹7#OANzf?2ׁ۶I>\>Y~lE߿j6*Z*3gD8|pJ$m>\xL6Xz|sTOlTby-s m''z@dDɄP%0_% X< D򾀔t"3/ #P@>%:`t#2"okF}͔@90)k{kvPpm&a[ &+'x}ÓATY2ڝrN$ygZm[ /` ر)D!r@X`Fƣ_C^7܉xAtK\'ּ\~n+UCjUk!KdR0o 0a9xJ!_[OS Q_% &jQȌA@LQrIZf=w~uEGK5ɱ^8aǪ9|@KtTOb9 @=J<I+ܼN,\'FIЪ]o 0V勗^9<׉ҌvJ~*;uT9ğZ~RoMXMPD&ɡ HL2[K3Ƭ)Q&_9̜ 9iR%} r;ў_K5ŗ~K7oh{.񄮼tq-t2 ctW@1n}DdTroR=z4 "z,gi|zRS d,O{ n.˦~d: o -F @:\G#*_2kv 9vA0 T#- *1w@9ޫd/7OfQ\N:%dvgfwH@3=vΝ<=2`0Ο>K_O uƘ{WzHm2&dD&q @0Bq3lNgpshE~ߎ| @JQ' $I ྑ3@T&+@PU~KHjt39yN)c#_1?}ve3{H;3k=&[Wܖoé;QI:PU "B(cMz䁝-*50')<׹;,|ğ_Hا -5(Oc4_m7۷^S_zx% ;y^:iVq"^YߴpyNBS$@rJOpӕپf j B@xNO6H}֗T}s.kEZGF#}RmM 98msiW>H?<0[g u{Y%ɽ.@.B:V)Ɓ_]g&8Ocl¢QBͭ@SB?A>-R9 n#VNd &'9ڿ?CxsGƅ&'jTij; Ea TYΥ~}?s'Oӳ>52`U9Iz|eVuQWQ1LqJ%{? ISKSV浩+"=Zz?˘H$+KT7xn\䡴R-=I~,R4rƐ0prgji|9CJ}``7#t\oB&OL&Psw~W,*f:`9Wni D+?д@A͘~~yԷO* 9U?$J CrT['׎U6!rǘ~;Ү7~y+z jzu}zeVv+m޹~91K@yӇ)'VUz:ä! ேZY!W9 CAz@4f f(m?A/<ϖ $hcɗN XH/^zUC(i<ʜqj9p52WuOx2 P&$$ye $Z>Ꮬ% 39zYND;_(mx3S9y Sp{-Gْhft_C3eQDړ+_dA 0bW^\wNt92M@o^IB=$TAʚqURRB-]y Gkhwi  f~PdzK>rQW-$u>6}*Yy;$޷6H"#_N&g,Ɇ9䒟9rz8fQiup(ɚ $9?ɭr!:󺊀IlN 7O}a:C/9?y^`޻meY_ZU>#7Z:RsZp~g}ʯ` `#~Q2 D (bT |K\~%Yݎ1}A$ kQN^ȽiÎ-+'zpד0~nڴk[Ѵ{(zSN%ٯC֠P=5xr?I,|O$J̍W^^x**NA_Q+>59kc 9dծ IDATjU v q!y?塗׌G=^`Ax몹6KsxHlz[A}fn?Tc3;KdI|{ma /ʬV݄D#u&fJNb {^}CC/ /^OzUwR~V}~ >Gҡ|>m{.x޴ '=r ~ĞuoeU@IhS:&ׅ]Z9{nm PqL ^s&ڰeC!ᧆ^\[/zUd-Rrsx#W~d쯩Pn79(j#$'#!9^燙 kի-/JFӐy ^NGLD3$횚~&&{$2%s Xpmٵ*mrlk@Ā Pq(YZԎ]@J 9B7*қDdAG?+DOkhʼT}sgK;N(e8(Yc5KJ2P|ܺ%1c߽w-`=5!ߺsG^`n?*֎N*/SY(0$R|@PKB7HtèQEv MHUN LN䮛B׉Gȝ2ϤhM{h{X<0>oNx}e`7[fz+үԼh>.eWM<jiy]v5S%f$@~/ѣmi?}; h7'ip)&f1F\_<j~? ۇ]7-䃘 *q/ks13ys_?xae\^>,}reKș^1ȨT'W\gcVtRlT@[o\Tìud+FxǘqI4hw Ι9YPJyv!+^82|mL}Wz$ꏇs\ ϭлܛ J`nNwܱF9ӕ3 ^ ċgYJ~6mD+KW'@Vט@;Ԇd>*]:ae{--:w Pr$ )r~{(iO|W &㔊+t"'2 hB3w y0HUޥWy"n:G"`Z$ܺɕ$O|6_z9zi[cZ1.C(m{wюo\灏;C/g{?62hW]87ChKak\}l23TSH́ Rz"F0sL\iP@_nG %gɇWXyϜvw L?xGz@DDON12s{%WI^ =Ax>V(h>1ZŐUs@`>|d~\:=v,'vi_UWe!y@5Bj0]+}B@Ϟz@?5?}ve{-~0Ƀ)[y;4m?yH"AUK_9/}],X§&r6xQʱQzp9% B#'{>UBn#׫sbsF DA^K1;h7/+`]sS862ںg9zC&i}0ޕ(TV&%O Ϧh@`AUSM_*D*Vre@en{Y v cbSOZm?nE A@;ƒw?|Lׯ {ke`\ޚmr\'t2V+e %:Aa @`11Ic;~aUe? :Lu]@n[ 8:xgu2cvP~+*uDu`Nwߡ /^L? ~퍡к ;+79꿦(ж2[~X9*it8|p@غiX}c($EsMo͂H뉒bl`.\?%$'R%c:af! b2Q$)lB A`A>IQsw1,!h,RwV䵜\m/َ$ *r@TI(_/vHI"ڸ} ~;/[1oH~tee׎ϫoUK%ac[؀mLuJՖ $d7!BY I6}SXRwlhv$:6T[{]"[ǽ3sf/R;:X#q* pF$-@3ztVZE> tb6}T?Cf0 ӎ(%WIJ$[ƊƱ$%)y2@o?] G \V}7sp%Qw2$2ATcĿ5 @Pg^qFfr5< H)gIJss/ǦW&m0榦MaIVFsԥ9'rhpH? v>Sx ]U@}'jZz Gƫrqڵ|_X]jqU ПT BaOoz"e,cT DŽ"3}N?9EcHsS>iSd'ؽy{f0 ӎ4nrzy&Yt:i}Nq{YciJ}MiگSۣ߿K@I oB̷6:X {byY;؈ v}Uu7t%2,U D[x ڸI0L'b_,06']8ǖ#\Mbқ3`+m:4t|+HAt~[#EǴL;#zU@j\* :};?]6uj&S68@祽 ,@xc ]5鴼3y$i3Tm܂yf0 (,;e$ba'`+w}*NK5v-LG `-wXfn'Tt7-[i}aztǭ' !MpBhՂYB0]->E_V0])%z?7/0Ԅp.iSig [2kuX\Vo9Ϫ/@D%?vΣ{(e@,P*1V0#cx?!_W$ HSOh#z%W6U|`%!}Ov" W~l,@{IHeeedN{?N a:0o|Mf0 ܖkWV kc4!AVw#*ɛn5tpx cm9:襚#@{}L3t o^҅0 , N<]+,@tYB7h?3rkd]QT?ɫ0 s|kxN a!9 Y99ٞ,U;/MMՠ`ϓ|`N`:*Cp++pQDl;,? 8pt."|蠯YF]OHƹ&4^5tT8 >>+~c GB-I0LbKZ<6bkSzKί~") PǪFki+sr@ԎEݧHԿسlL p(W,I켺?Tb-a7#0VV Y~f%OB8H,`0 sn} ^;4CkNatV/'0'E!LmGA^d)oWj9 *]`|7t3p8J ;F{U 9щi$NNzN=.qTM(6K~XHasþc;a:=,_~I0L; wQmgҦ0 NrXˡf545&O7sfmq|~5] 4D:`hQ"! TߪP,D/@Yu5/@RgNpH@͡D!U >d W麼'Ê`e˓6avJ*3%Έ;1%uw"ۧ)e@ڱSOnj>:`z&~\D(AU Iv´{iGw't_du=~] W^/N~ zGWv 3蔒ú  طy1 '%O= ôc=Yp^,˾ jC",pٸJPcEQ+Dˡw-i)ԁI]L_ma܎V?9V-IhzhR5fLg'[ԃ ô3.|Ѥ`scc}!9¿?V. so"w% + ]@ `,p\" @;ϫW"9 Yt\_N{4VP%C/ O9PNt>W8* P(鏜0]o6avB7榦Maӽ_/^j6HǑg|˸n@I3ua- 2DYkr) Z;qÅ_SY•Ճ|T:{]߇N}`8R;\@YqԎ{s&7dW~?R_4x{6avΐ Ɔ^z͆JSKpSc28{9$fD> [OiR4o4uc1whv=.iv6̎X_Hs@0 ; p 4'E #9*_7iSIwl].i3iT %G_X~O;ڞC[ X2{5s3@d7KK}4 4Lkh&]J73Fhy?[M`ξp$`9jn{9uո)aCP80]燱|MҦ0 Q|`p#3?rP{$cϰ1' H#c &̠A PJ{jy spQeJbyd%qAZO*ݸJ&ciq fV}I*5?خFH~л0]}/?j6aË?]f0 A5d \r~+{{9lGܩРAczJc>#L 04VJ)+= ^8Ѐ'|hL2q@{+IݭKn@=Й~|ǁJb'`j]5Z~h;Cc`)>k0]u>{f0 FY!߆ IDAT>0!ScOٶK'<⬧ui.&{) 1*PQC<68 pxܷq͚5V<ثVS@+-!y߸:E `~Ӻ!ܸ5|p/Wmf0 l._wИ) t O;"cKI[oj<@*xjcS{I X= HXʀH\YG{}-@+q]w-,V럦mu;2}x9iҮnݿGp0hc "}AXT>ddf/tQ^SXߒ6aVjQ_{ iS@d3K[:duYv%-oGT4KH@3\;@ bܹ7J(@(L9Y:띮Y_K>Y}^zQ||*ͧEI;}sO=# B%Q2 ݺk8c}Hv>[K]#= cY=/qiݓ@[@@ x9kD(mbF47>>Y*iS9Jݏ_~>Toe>92R) 2n[b: ; rF ?c?@869*A(B0@_)썵"wu^,O!D^S5qiv^wU;ZNC QKgI߲+r9- @'HRDcľ\,Mp{nI0r`>]SOty>:O5Rd՘[x4% Z)R8B+he-g_mg2/8@,qy.D!^?47ww}˞]) ;w[əa``?Awڱw3X]/;?>DJg8߫$s8~eJH+VB<Gz*Y~P'O }T8M\9iStbAe=No>_)NejLo 㜻}&O .Q bѹsS@ _)e}YvS_z+R9؁ϩVj@U㌛@*yTɁig/ X6Zh Gt/9 2LA_⅟oҦ0 듭xsĮO&m 0w+Nb(Gxiz$Aμ ywq܀]06v0c= 798| )+NQ'?:VbTY|ic&j ng=~d)0'3*!0g aZBJExןY acO-wz+wgqĘcmeڝ&zkrK.%P su=lј`JLVCCܹ7>܃Çmǣނf6[5Q~OQ(l$@;- }'LA@Aޭ0 _ǻ9iSK}g8UdϿ/hOlXWMҦ0 >mRZO*ם $j}I2Ǥ aBV3_+-]`ߐR~_QV}Ȑ!wnVH7!`램( TNH@ UՔ' 3'%hhB#O#hhJ !>7#?iSK}߽M ho@SC#؈F464ؿ{܍;w@]?a?YrMF^cMԻ| :+,PEug^֘n]+)A(o̝;6926S#o|GYTҿn:4d%mGla9E@vHss lTo=xȍ U TDTv&z9 ;{mafxo▟C>6a ' - 0N}Avޝogj t8ovajDah4Ǻd~_>BEeD%[0m+ژ~ !u4K' 3t6]Un>Iʃd Ϋq(fnTU F5txU sA4 iSiך]رvـm7fN02t ô;@N~HSu?̹7 V!"V_҂ҀnLׁtRR Ӟ;w ւmQHynv캧#fY|UO/,4.N׈P P~ˎHU#BE‡ d-0ۢ Km O )-}o-?K0]ݟlO~7>t'O<+isier#{> p. وk6` ضz#C3|ڹyM<٧I[N<9N 7BKK{ X}8dph _ 6N ` RvO:$~|rL?!mB9|u[ C@9TQLxi #f &0\߈x-]JaDJ࢛%A*=]+s`>l_,_u˖c{+p`Ͼb&";˵3k!&+C~3}J ߘ߷9sz1EFtv.\(NC6aa9PGLj_e {j _%,zc]( f4m3恴ƟF5a"Rh>ȍh/*} 'Ma)5vFXl9v8=WNddǺ+\;'/y٧}::=yܱٮ$DS lT@ܹsiSXpxq}ӦM;Y>rb5fL*iAӐbM$` 0 0+ا:h @g2 s4^AS}N:xa<1`X)NpνrLn:z ƺ^i#NdQje_M UKw& kna+ <]$h`AEƩUGxvܹ\qbڴiԞuI)~:Q0cM-r@F T0@ۡoRHC+theun",_W`K9r1a8)pt4M J `V!;&z-R?b|^.l}WZ uJlO~wj|! hr`-]Kuqbԩk@4^SS?mAp9k(T| r!sگ1aE/ʊ JamwQRu'=2 +ET 0&[.WLƄ>>'{UCa3>Ëmړ2/$`Vvfs\>b+ 8lvwLEEE|~n[`?l8N,\06uj*I\HKc~ tpQ!ͭ}8ʖ[鍈K'ԑp>سbV0̱% -ٹ9xP|νr-ƦP9lz`#nn_}pPoʙwJR`}t}h 3g׼iu8p:erB6·rlgA2ƍ(-LB< K:T)+ױ a. `1_7^~C#hnF `Cp אATxk{ӌhC|riOW:u(  ~\p$,XP繄L—M:@N1(c_- h73X}?:ɾυ ; ܨc|-'PSEQ;E4)D } b#C_Ta 0 dd'a5"+; ;nBc0.}p> Jw+W|vm1J_k= k{Nwؼtoծx`Cs}:CǙSV!nG ի,쯃`9I'A{xvYę8$H# a*"\ 2RHegbڭ}]iUP%gDVNv&1 Ӂ놓ǍęW>صi K,i79E%'l杝xp34rs-YƏk@* LYWpp]u׎+,9m֞r9/oI@q{_yD&UVTZJR li @,|iᖩSNc WQQQfOڮ' zrc;H)MoTK!gz0}B(M$"XMAe^x5r{[|k -ٶK激dJ$a:=zbg.Afv6v݈zV1]p+?}q_&!FQ|{c>n@2^QC*.9s~76p !NR%(S}:sN;wq"7qu0@* (_@(!Zn4ο i"2&!fh̼[*i+a%=zCK6aNBN^7 7x92|5y_ss+Q0ɔa$ rG:OqQji;s-W]U1Ճm2m b)̐R|)Q]SH`UғH;ܠQ?75YZPJHA7#]y/]O4Z'!fj65 wOn؎qE9/u-G#_3i$dde⤳O9W_ƺ:l\ǥL8Kβ]?H }w >~Ϧ>-Ipm69;Is@vس|}iM7oǒϣ`=JG̤Mb-\pF_v!UUcO6aZo; dڭ峥yW8n#>:^Ǖ ulLQsnf apqvefgϞL"p A&Ob޴!  Ӧ<|ulh%I0L'_oi(8ֿM(ddg!37;2 S{a;1Zn JW@q-(9s~s@D*oԠP;Ѯ&$resqYy]*2.WniOFFHC\QaZ]bSϡfNpr1잴I t"z2ξj*jWaMI0G̨'{/m6ߣNqlT1Vw0Ar$}g~N;PQYaB(?7J$̢EL2eqZηBP/$3謿~XuFR犩۷'T 4 dB5'':&_A}cKa6 h| zڸ B~QOd9 rq0xplx&m} 1#JCt!c͟ W @y8ԼyU;bv GgϞd0Lmpn2C^/si? tR>"e`UuAbK<1R)iiu@R잋 ô-RJl[o?Wl[}GbЧD2454Ն2sWpPo]}WrOāv${i9z.*X%pH8pKt_EE' )!g͟`B2 -Z{)!pD7laQ!`g!-ͷsx2B""e9z(:P/B-ipm^=qpN4c$vۄ%Ǧ*PؿoV1 sळGap.iK8KSߡ6_|jG3lev:7`g)ϠM]{ua-k> fϞCRIh~o+}b%'H0)|YKoC,e~ @2>T璥AJ SsH+rp>Js 9H)QRsn^~&1 I2vn(32iS&;S@HYxOmUqwKd;U vHg}=?m?.`@;aѢELr) Y‚֩oү IDATHZ`O<ߒ@ϥykHi~`F8GR&PhcNESmw Ӟ޺˞}o,Eޅ[:(iu+Alhe0fgcEa Xdc[?b_Kл|tªǥS*jY#]v(sip1e7кzٳxRwo5uS-b@"E#臖,@=TT)vU0wfڛasb׳\00!B`ı7d0V ͍|8,Yrpc-e9q-]8c[yzS/tS*:obɰxjr0.hW?I`vi=Aa*r2@+lYϚNTmW}*AT 9lIۣ9 9~P0^?Rޑ>C*FtL*-w*iBK(|* O͟7i;E/L<R^#RBCJ٣>2” Lq[SWeյ5J宅 DL oJKLك$!VqeiOW~7 ־DJOL4a:gFcKQfڞL{,$]5a`=A} Pt)u-WI}L4}֬f hL5YP/DJrpȡ'|K`Rk8JB+[ܵHhdvaFN~7 ?\prfd▟<1#6)Nqԩ22[|7q*Lt;Ś#P]6o@1a}PT+$I8>wA(-)%G k?N4T2蒄R= Á>$€$6; $uoh`M;KZ ôgN<$v:|bd&m0u՗V$m Ӊ0a h*}vޑ݆|iMŗw)\[w4VEEGy.5kpvKȳTPݷty @fY"RB n}U!R'CJ [C?(> 11O EPw݇ U*tb`u1aI0^ЈF474BJ,dfg!#+Trïo{-O010*'S4۬̾O @vq9hmum:@B:gHc,|[IVs|1H[sDIi}U}DïY7N d`mdlTj@5=_2W\pWa$?㯽 ca:M ރ꽨~V@^4գ hnhBSc#T߈F4752t!@FV&2 r{{ޅޫW:3i8X_6q 2sÕ߻9bTjyTwN|;lgܟokL7{wWQQ^f=wIVw|[87NmY@Jy6sh}{2%y#)PX&+ex0P *6 t`xNFn6?0Lӧ OG$mٿ{7oC޺wׄN>uk`w۶BJ&476uG=N*#=@o5?DA(8O+Zy ׷=K9gϺ^4&wwTVF]/m\\ ؋Hy Gv LxQs_Tg5mBnϧ5ip0o޼)Z(_߷ı=NA$sAFO!R=j ,G(EVv<n齞 _ ]WLF}e=ݛcVl@w; 9Чx w ->%Cc]=~yXGIt0NtݟyT*o VѧSW#i},0iSBfN6W߻PoKCһ6Iyhјn$`Ԁ ?`8Ă ^6k$b ̛7eKJJ 3ܱ"Ҋ$,}:g40 Iƶ磍!E1A~V>~oq`93WOcǣs`>l[VǶUmzl_6 R}KtH3OEA6+/=9Wb 4Yv[dƳ6v)v>m]|\9]ul֬=1 t ͛sx g1#q)'w{zsس*iSvLq=_pb EӢdtK(:}wݮ ϗ]Cļ`@uM&S8*JKw@gg@\-@w#Ǒ~.+]G@c>l]p 98}y8֧y .B\:YݟlC>idx8,6\?iڔM#|M I´CRC``?~c][)@lg9inɁշ-5Q7+Ȅ1ʖx@xFWh9}t󖔖kG>ZyR"r<2A;96Ti3 rOBh/<(i y`u+^sg\}{%mF475aKl>(džʱwb!NZ.&`''mR;?I rՓ1퇣fuOs]o{?MW_  &`p/W(3eeeWޏg `>)qUV~(--`N9ohSˀ4%󖳭GN Ž yEAM H]W郬p`V4Ԧ ~' eWa앓9L+S[7t+V!i㈔2*X# ȋ'I0QT`uaǕxiKL~ufC a1JW?l{ZAǡӤ :xJZF67i<k,JKKT/b(xB] 7O|!€^f~7ALr9G.t`wy&,R۪`)aٟưs$mӊl__36m}&-y=p0KXi3M dK WZ;cnr1kGWײ^߶'P}nyte}j|luYv : <(Hv. pGd7SeS\O@:/v[Ìc f}tsCn*" \ėlvD~ўAc?Ե|q Sп&p9]{잴9QRe~9ހ9iNFN~Μ~!]s):4isՋǯt?7*߻Y9[3mr*_57OyRln l-CYY٬IAw }r"A:yJ8.!GRQ󯷁* d@J0$c 3# @HeeӰ녥+0]ni|lĪܬ9''SOƸk.+ +:LLl<_)LBL'uѶI?-{rޠˮhScH{O8M~ +:08.))ʋ|WgsF14PsPr4:h\Z'@ؿKF1a-cıIz|c)*\=x]s}нW.}5ν duw巓69Μzy8kpwB^}Vm:{ELG?@% w^/-qÚ}ۿ70!D(Hd@F1ڧ@j9f~ a헐@gFc./tZq٘t(}j0UwQ2l͍MI0i+f]f^IsHk;;oN8Q8?2h\UҤW-čb/戟 lh9oϡ>;+0e3eeeH?+tOu@Ii~چ%V=4ejmgd*OdRf&oi+8Ő\tRNv>.z ];;Q9{wJ$9brcq쫑W#isZdM;x.@Ff&˗Q4?cRma 1\'xƈ 5&yG: :"S5qC:8{& փD ,Hqi@o#O]A n話`VP F҇\mFY\2L'!3; c>{-z9L l\7bKJ47qdYƤ[nh=^?/?ef0m9s)LFl>~H t~]cSz{a{0--ah`@UWS#z-Ns\L4e*'>UJ,[h`(cD POb̲w3 t ?%f&ۖdzTo5K $R)a5Iګ q4~+ X=`v<:18 LyevE6FPƻJ^ 7W}7dpҦX sL#W~tHGίUx#бijc%n0M1|l(l;fL$D^ tڱ$Ccˑ!)Bg?PNhz`BRjA!D$ 5pOȦ_c"n0:Yy)!r3QxH~C]bi ̹ޡowv7X2UI 8|p;&μSXnI)3O%m Luݼ1'9zՙxkfzNDQX8 ]E,ɵף-e3οymķ_Y# NĽmY#XVtOS`KT$F}+ qƁjo7T@N?WWG`<}ߡli8PI0^㢛ٟfbo^s~i}zSw܌1OJ ?=Xf0ȈibMW S9D d̀-fcO$ R1})W=sfٿz0~S\Jm/?BE!HK "QT4q¥C}xjh#?N #8ԃ˵۩:)H ءhZ= q?:°lIڃX a1iCj7Gx[ҥ1*;Oկ.&lE]x Sr؅k,,WR% ѻq@b=B$c'{M<|eo  M/&|Fޤ79qc9 MPw ôOI܀S/)]uXb|kX{hj~" s, ?x'M83iS08Tf2zD g-hI5k{Otu-.nK;Oyy=͜YT+:)@ C'<6n؈b ίU']JI?4Y~$@@Gfk wY[,SݔE!!-uAXdl,cOƾwWaBǍ[oIg9]ƺz:*_ gVd՗y3ޜhYS IDATpbmb3/CQ{ߧdAqkU+E;Dx*~؎zZU D(S p/=$;$qοK@>qL tLu)"g Kz/V‰Țc/U2BöC^k9^ ; |y6=-iS, xu >|uT.6a:-2xOc͒PFAؑ_TȼL1`PryHđS&ܦ{̧֕ `Jg;洂JOcu!:>@YOEJw̜YNtR#ĒɞOځ6OPu;XXEy;L=h2QiYEz/ j%~I/ưs$mJ_|uI0]({0|>/^^̫uTrށR~ݫ(-Geg[]Xo,giw}%3fgd ΊHSeMSB -WyDpX=<@% WFSRAnt]VTNU*/=&W>n3L1`\\M |c)>|5Tk&mti7?ͼνw:ӺkW~|wRjs]g_ 3vl+q[bڵWB@ZB[דsZAowz.+ `@'{:$~`;a|IIIx]O"%Mffѽ0Ɋ L4B\ ! FKRKȧ۴F-U[3̱o`L2>MR475aዯc@&1 auT:^<3m$Ӿ>e<&|3*wwU~Nņ~ʼ;ǚZQy<+3#+:3R' `} !qF .L@ԏwQNP+<܌"::XDJO"}HZM0*|Vi[+B_}I[R)mqwÄu Qv^r0Lpu_BWE^#)%4xi`@PI\;bgra!>iܺ{_T`"X<1c4$po} \%zyz8wyi}܇'ي Οs5.u5r6SS_{El._b0\ ㆯUcElҊŞ|/Q>Kc| tӌ3вeLg]!C@p`ri4rɠPQZ@T/'`ɟCOTaȟ:+SA \ X#TS!9|#YuA/aM;Z;yWݬPaptUܼۿuO#+w}XKĺL2o=cJiB5v Mşw-@.u{b K0lLS! is:-{w?/ĻO/ĮM[6a?_UVKy Ohd򇾂4z_Qό&ǚ`4*LpuT )T*+97Θ^˳3t1uKs &F+is:%As3V}1ӋX{90LȋcΏm9H˞Uo%A;6g̻YsIK,=ď!XJij{́P^^n3f~t1$0N`=6m8E*oTDQ8 :2.A&x*F7YFY \Yz8b\r iތރ$mNdMxO/ཿ$m0_~;\zۜ#>~OOF٧ŶI%ڰOo?]3>}pރ}HoC~ev=},nw9nݿLX7`b|=pwK=C@BDhN]uCg\IhvC^QjQUR D A@/rRi鿴 &N/AhV}d0A _C_Bc@>xUlx%7cWO>ǪoC3cb~בPV} Q zxbXSۜϴg $%iϬ;}o1 .tQ_ܛѠ Ԉ+I}>} l+weOj,W*fA J 7S{meY E僢@= Xn}^X ;f_rJ=%?Ϲ?ʣ~[z5&ʁPu.Jmy_9&P"6>҂GRzuKo>خ^Jէ%w/=l(.f1agﭏ>;oF1q_DUE(һd,2Ɣj\= U/~P FWZ0ƿƘ#f]vP,Ppm10;}ǔ6짅PF/4KUrcTt,/po1{\j'趀B@5Pk/ZAb>cKQܠ̞нE ۡ6GWQr G'~;3҃V&| qJ20N=/LiCǮ@p%*4ƜY]/>(00߱pV^VBCK9d{lѿ2O&w,fɷLxj:d`Xi" xw50ñe۶R3htiпY'x➟֪:FQw2N2``L X:yߔ r 2Z>zW.@edFi@ȋ; O1ZĒqxiE*;|Wmz(qwWo̘1G-WP岦N<n:DR$,;z}uh+С; Nl<λ2bcwVVEQv~`MR>c}wZ6gs5*)qv 69DއwVyYbŊ`. ̱ͳfPPn?Wy8Z^EU~%Jugӂ|ATї;WP#>f~wm;{lO`iAz)=bGz SZWEQ>¾'Uvlb9O1Qx1iJAyJޱػ2fb[?W67ZtO) ~1 Ѯʿ-{U ͓Gw$E\P+iCT% wK6 {M_.zX堘lh &IE*~#1ɕ.cťC<ңټn/?uQEQz\1 r&5;s8پPUws2fy)jR}麽hQ@4ŀVbˬߨ+}U(r)&KRh-yTr|rv1.; l(E~?!/Y_*` o݌!{s)M%*,xG}붮^(K83pa*]I4޵c:Ut?Ҹ\wT Ŗ%++; c ,L1jdW/DZxSAmQEQz9οsoaQ@Nj`~ltW+uǼGsў8XM+^ɟp)X)h?ʫW*P2[ {شFjTL1\g@s*8|i4 t|=F'Wv)AKq{#/>(ZBQEٽ=$5gHi>˅"遡 R} "!WR!x5ʖV777/N*Pr;-Q.^,a W. ?2 Yr@d> Wmj9 ,J9dH2:nPhӿ  w59(Qas0z)=_},hI}(N?y]s齏.G>ȫg1KWs w0WA^-,m$VPvJ^DA TU([ /w̘4y[w wTY@g܌ԁ촘`8Dõ_EP<kqPU˼UѧEQEՌ9pÔHd/zF5} xF~4hM)!?k05C%Z.aWDQ| at644xyr>o_iD7ϐ;4-H%*EpN϶w`ۓ9o#jV-} ΅TEQ]AۯA- IDATUMugC#бBܠA"o=!%U0`!Ph)"m'tt %Ec9T'YiRssϳ5E Qx20@) QлB~!74M 1l7Ëy+}$%Aq3حJQ7&r-ZW/cŲ߻Ǯ^(x gOL| 9f=C=gDԹL<){s@ FT F VAk\jnn߹YPvsv< R[R\ϏӜXj'z`ǀ&$+|`~iKx@@P6 0Qs!%%~58i8Y_آŋ>~^|[]EQE p\s1h0jS#sXρ||RQ icYc偼1\H` j7NkKkyr-pKMQ"@TtMYk$iӛsC}=0BUa5{k JiXxY-cI!l؂%/n.109_}W/S_[KQEQĿa{zjЋ<Ei.sT;Sc 㷶z ڬũ/fϤ(q|j/^|?S|@ 켚4yrPV˜64_.o'E3#YA9cl 'b ärQ EVw;^39V(5T쏋:ܷ΋l{;2]; X(EÐ9,-oKt-lH[fysy8i`U(;ŋ,$PJdo,E6x7Nxw dGe7_g#Y91@ @GI l>9ㄮ^Jf{W߾/({sEQSUSK4;{y0U+mGB{;Xi3f^DNe tzvu.H_BI}jKND1Û&*'ƥ[HmǶ^QJ=jqtR-۷;G>lݸ((׿n  4ƒ g1%hL3:=޳2)?_5_kk_45rE)ʎewv>s]?5Pÿţ4^V=,ؕ wR;k-lĶǻMB3.|VP,}!IW/GQEQrS=?._a$}1!"]MR7QP1X,viPKa yk1MZ1(bxeT|tN?B!,3B]cLX[[ mخ+(TUNÄ9A^N䵧7ny((f=pɟj QO e/ NfLi8/f̜n(Pv7,aߢ4Fqigr:@b\cAXjWrd],Q(U^ ,+)n܊-_ Վ3K閼u<W|"DQEQ#q=( @:tW/`<~)#]luP?3f\E@٥,Zh!nuuu3Y=Ss7(fTӯK_*ЍM?R?((nڊmѹv%Upga53Q5tg>Y~_>ZRQEQ;Cq=5"9ǔ"yIcr?)"v2]?-@ƺ&1qΘ1/(jũ0 o(ۉ PE9BPt@/RɠwVR_R pEAa 8pl}l%J_^}o:~ tlEQ%#F?A#%<ڤl}7i^7oO"$I \mj I^G2Y"'k  U*]΢ X͍Wk/ P"- *kkS$VX o#u ߷mǖ%+Q\뷑_ /ٟSmVYdR:_>4_w\X g̘Y^]-,Z  Gߵ˒yu6ߟ-fy%cr 4WKd8`̿\QWn܇hoǓ>~ld]W/GQEQ>5?.P3x`p3\)ALB/)!1J;)-|ɻ)@畜2v-,N1sk(;u(E M3ڒ Bw]Fqs=B(ȓ۟U/KpS$0iށ-DLJ׹# |g\6):_Zx}.|]EQE)5v UD+]mBN v40~K_1c*_[_{)w˾۩ @FeiOJrm$H-ybjZځ pT0CW}\y0d0.8e;B{[ã~omEQeWqȹ'칗 }B0 ݩg͗^D޲~7[]='':<83f %Eu@.Xpx~UMb>9߿X~^V {hm6 C\_Zg~q`Ӛu]EQE% 5lܷ֏n t=9 $I<0%e=*w{7F`jLH -ZWz^Z`E(.FJ3jc&|c7ui<+'1AwxX~KG\HH(niCՊw8j~)<}UK_O`u+]EQEe:~-9˻)bR}JۊsȾCXPX׫W \#5 7zܜ\:}ƌ(u(݂ .6IpOBnj~ɁG2Ƴq$I%9&ا[SkAvD9klx  >%EQE{8ϡz@qMyL3+Z$Uj,. `^VS@ZsK+RXA^s-VX[rX>cJ .GJaxh |hzȷ *sYh?GR |ɑ?ӱ|?? =A1WU N; Ǟ}Zp }v,xmtrEQer%pafrg/فt@ȩ ٻd(|L8=X:}ƌUх*nDJb'Zkg$=:S/Ey-ωU΁JlJrP\̀Oʥ\-sŇ|((cpI콢t l[ȎH}E/6˵Ndmў.?G r~Lr ҼROw ^ `#ԫ.CǫϾ]gs9yEQ'SU]o vl+bǢ\^s o}!mU?"8!k<5E")Mӧ,s`Eͨ@̻~<~(@ #fUKڗɊ2p>>V̠ST2/JHKJ=ƌ/ѣlߺ =?F{QEQz?%r?RGұ/.E=1lxG{ŎbW/GQEQv9,ҠI71sbn}d  $mi`59QI@ޡZ[ZN>+ %(J{18ZLgĊ.QyzLjW) K- [)}.9lss'1[l`»pu$Y:w-]EQEmy0.틨<?˱H~g4G( C^ '/}6QEQFUu?={=T#I],VtTp6<B9sߩQJ?O`9kQ#;wa0\z9%̍C%ӹHN ZWN|Q@0̸l&K\{w`ղ~ FW/EQEQv+{5~ F0&8 YP>V$/fKs[2DPPHoHF i5v 9 Tn:ܹsjw9 )qU%_:ϹYQ]bBR(OǔՠKck*mڂ_xU(9= n1tˤj=,*$ :O1Atn%cK5&o~eɻW`.hjj]kQң;g > ;Ȇ8R+JFtLu/) Ei^,бR@ڏ'e)WUN9ǝ}ZޮXG]EQE0BrD?G` rBndd-Xp)[sESSPn(}e'tr˦M0d/G#9?ry?=㾇Nr__ =8s]Ɇ>?ߍΎ(ҷu.v(-~WwWEQ;rc+P=rLG$Oo@&#g^A򹊅7tH:㮳W_ljjCJCJe9UqHF-7];=w* w $196РqGAT 6Gg6*ގ|(twL?;6O,-g`(3'TiA|FC*'juqnɜ*vZWp+:ĉG35BGIcZR?vP959 r;TNy0? wU3SvVo<߂M|;mLEQEI :D໅E〟A u!p%9ڒ# w^; IN  p755iDB鱨@̾n?7ƜG /}cP*"Ylߵ-9lr,} K@r=ׯp3>]J !b(B.ci԰ו̨H"z7G%GEl /#h~--r&555m^ f_7{_Zkdo2wP~RT"E% =?NF=}JfGKm5q~H+(Z]?&|f UO Xp׿ t_EQE-y8yt12 99<1_s68QҟQ X/u"D< (ZZ[Xzwz.Ԥ:^f>l9!Or޳d; bpL9O|Қ*Ϫg~xL =*:.e{OXgrWEQȀ=c+)G89G%bzR4 WZ$nNd hYBb p޴uWqݵ׍(#;PRHFgUuT*g P,(>;Lkc~X58sXkǯNl۴%NQEQz;c; ^!#{ǃ"vH&Fg @g\ P! klm_Z;飊)JAJk{ȖĻ15=_@^x)GKy_/&Y?ٲ~ݱf}gWeq,EQE T?7GO:3ʥHv% ׉<Έ},e95R'wJtW= S:^u^JN1an}Z0N4ŜܿP0^>L ΉXAVC?>>CcF {O!=EQE3t5F_,'DE$?[ r-k-D֚U/!QYD` Κ6iE@\wucQrstpm_T,ߝ c"~;OUn\)K;e)_]8˽x:EQQ3>? jݙ8'əj0)/%|]B PIr]㢵5vP]`j1cFť8?njE?H%3¥ K xAJ5b)mouUUEQ W–K8g- ؙ>4s+69@N)&9b;mZʿLz̞s7Ƙ8}`q%@^<\y@ xiYH{T ikCޗ~.niú[3ף((N<-  U|cgxhds})NH,oY.:ʬp޴iMeN(=u(}9猳3r)Yڧt4>}cӶPI!@YM+VasvREQNUu?yulQʗ;/p~ϒDOǏϳ|~^?F3 Ơ{*AmǷI,^8mZӒ*JEJau'c~&֦]"KRGVJJi͂<|' #7_lX݈[k6fOQEQz"{W o#l'I-bA{SgPH9CډTсPanΘ%N6\T:>Ŝs&ZۏGtq1b~:6PR@xqA,%zYdE+#/ZlxUljՂ(JpgPO r{F+Hc@^zGʣ"< hDXdt-!u0h:m٣*JAJƘlV4cHK`0v ki+>;^tRll{c}Fס((ݝ!c+ GdΎv ^ r>O%}-pLR J_y͙BN3BrLp~Ig_ڧ}Fym\(NFzϿ{fTT^gi g A:)\t>XQqPCR. fs/_\70uڴ|)JD`9cM< 1w8%>x=4nS rck#!hWWɏsnp ,6x }#8((qggj<| JH3ꝝ+3 ca_⸈9`Zd1)S}Q;g~05cmjegy.;}(sdI%O?[<Ԏ+5/]F.}}}bEQeg߉Gb`F{ s+)^RX9\Ɵ wBXsVJl*W*N + (s̭-;iy ARǤi:ER8D%4L ZYcwP֩kWEQa!8gv39[A#H *+ \{Z+%[7:"}`.lm10L:ҷP0Ν; /aqR Ę|+\ηEc>>_#7+>__v7O@i6y%l~u)(ʧbg`а=gfǢҳbs]O.5QxJfJJl>{BKKKRy {ԩT.(u(ܹsx4vEPjKiz,C%cR_ rHiԐCMT5k}({=ͿpD`y)?+;Sz /_Q/Ϫ FsDxHƤX?8Z[ZqkSMPD;w?10h-Hblw4.H"{ (r+9 )Mm;}92u((;)p\xzdT/ɒ{/jG J:m}w9Oꬨ~f=v E[DNJA$o?X/mmfyZ;eԩ*.BQ P Ν;ka'I9c jkk:vvQkU~n|;e" љ /][]R' _Oɩ^5Vl}:EQ%ƾcj$N#n^} &E~ @Rt#:JmESf\Q.P \?jwZfY^RײeA)ax9._gcHٹAxsT%Oo[V}5OuPEQ*3noř8)kG gj }6\jᨧ^Cl|iAp"XkH tTH#1\8e\(}u(J{}/q/wi]umJh\i_)r/9Gc/ 1Al~:|\tB4}BH:Gba .QQE S.c'GU~޹hA?wEydm\YqJ\3] tkJm&HD/n )SvtJEɼhUWWKzhu~j&uO(<.sUdR0PoS11t+D@MI* 9־cK>_z+((} cpEpUS0pؐdg9,2#3 E=_/g4˯*k"<.m+96oWvє)SBE{@Q: +X}e%orI9 x?JgeyɚKr&PA )h~(EҎG~=JXD+IDQE}4}Ι= {_+LN7O==#R{a@uPn_~RVNQna=g LٱCQ P`cPՕxߵ)aqFx-oύOJuΑp~y3"{hߠ*%'κf:8 ND&5lH޼`wՓ6Yuz0@kN%,/46N+BE P ;XS(F7|V~j~4~(r?I !t 4~ 9|뗾/ ۮi(qKp ޡz^#ZLkcJilkh~q~A`X޲t$ҡ508ъW%@)wÌ18@:o!J0Wہ0P2*IbyP kR76;C>v/\37T qᓧ_ƗW)(=?g|n*9<8WU\ 9 G?=ꠒ@S DƦ赕zKLY)/^QJ@Q>%ZSc̩LW aJUs4Ÿy1ߟ $>dARZc1ڵ}-iH((=9gaCOIFl.Y($sښ@yq?F^i?sB}>@ŌlMK\plj=} @c)d^(@QvdLNk40[dqԗz(=??&߯>k8T7͡] p(Jfp;E[1r=2ZDu4dO1$[#VZ'ﻼ| >W6N{SEI̟7u7&3}Փ}va;X ={9sU[t :Sv-6>2WEQ#iWLسNɨCIcm{"o4D+(bXaBQ St$L *YF?^pkccn(;u(Nf jIO#䲱ڹRV |{[}>kON 7VJA ڞĜ LXؾ~sxEQ:zN|*U%;mȣ)3VAA9hT9K}Ƽr!;!Z ށĚ^AֶVEQv>I3/1AgLp̐w8R|)ARuE̚Y[w]_0\&666.^QO:e`a~|wP6D}LØL㿒Q/e9\M p *ڟP]65%mc;c͋m{EQA8q8vxT菱U3y hO޶luLAr4xF@C^j#:pg<㸒_Z4oj`[Q+'9 ]7sQ:m(nێ5/u^WG(R3pt.N~!i 2JD쳌]KD*2/~C11˖-#'|mrccb0P /70-, xw<)Y2HcRcT2 % IDATxzs6-ǽ7f6fs) َR(c]˛XWѾik'VEQCFqᨋơf+W ٨8헗ؒ kJF~GOH==s: 麒y-frcGWegE.XxI/ Nd;cu,p'@8l<YQzgP^btt4U0Zlxe5ּ*}i(lS'N*9r}n!]I}4U/H Fz԰ 'bڗ1Vj(EE,\p;\*GKc$9Ԟϑ$$#6k~Y<^O T1@ *ktÁ_ۦ>Ě^7AQ/߉Gp!0_%ZU"Ih>+6F%Ay~!@Q-ʆg&/Ge~ sWMnl\ө)SPt!.*3 A߬- hx e?.GR3+~I|Yںv._r8䘻mo^oo(қ)TU)c侵Y}bAGǧr*Pg@"YDS %]K]W'76OQu(J7`ႅ1wI8/XI uI*8}\ϝB%]VH[iMǓ!CS )`-X5]::t AEQz9 Qc&#EgG%nƐ48PdW/h;3c_P H3ϯZWLnl| 䊢2(݄E >HCbR8;dPRb< s$F1/&OWބ*J$s~%UCz=hIv_ 2,^(JOe>{pQ=r>_+qYgGryJ,ݙ1ccmnұJtYsJ:2R4MZ*;Pt#nXt pE/AC6wO\KIvYن|x7x9Ynܰu{^{?2l6z,U+9to1:y^|v_rbTJy%5I. `ɓջ(u(J7c MXoy.CyMi_6:FhŠ?e \XiQ! dtխ_߁-v29TQ(TpIFBG8?M{ɠ2w4 z]7Af1*k'-if1oM/@ HJ"5biXue5lPVkO?_p8PKvvR0m/ҳKĜҳ>'kBRΐe˖E^1 ^~$ԁKorNuN ə!: qH/U 22H+@XMY:}.FEQ]}kqgsOAVOk*!}RImJ<ꂘŸ& O8`Q|fȋuƊ94wQ@T˖-d ɓu[Eƨ@Qz7,J1 L L#9cbGc԰#~z~^ ձ5#rhwNќ~=1q@B)9Vf`c/TA[[O+Wv(;~kpЙ DHC}שdsй*9wİRbkT9P~֓qJ1HTRA%ha-Ƙk'NtWSEA,a(mx;F1 c2#ҋN`?,43 엽9-o/w=z\~ڦ; ΰ6? Z6Slkڗec(;Q6 㐳OFp ?9)R|ٯԗϓb99'*J$χ<9$_}l1#Z?u4i&M^vEQu(Jc#`q'K@0^s<̥I9-/-7傁{ٗUV*X;B|ǁ-O+D](z`=$vu`C`'{7|gKNnKQ|)^δϊg)(AllcPE)=WN E|5cP*a$\%3%hHx$rdRƸ;m߸_^5/w>(}}v<8 9kw{XdCW^ޡG޳C7_u eoxAZ#~`![q_d߅@{ˬFޱ5VˎO\`)͝_Fgsu Q7}nㄐ:9xϻBN ܴWWW1K1t/f}f+uj.\%Yv,\ojM;Itq0eANȽsM'BvZۂ _*lWs_g+v63Sc]1oKӋmoʍ3=0t?sώ"wrt@!y{ 61 冿^"Acm9+3^_́ϲo*@딐+lhhvhe,[X>^g64{v|17gJ{ENsOgY,skQei}#ogOog0!䈄BQ xym_]]mDv8h_x0kZ^X7ghT}r6BfWԽH/.ZBsxh~t;#o13#l;~eXW Λo; WV2S>kQn3/}Ih*g,#e{Ne v{?vx.[:B\s5ϛN)zۖ?h=nJ\&»E'aG6eUȢV}h6Xhqb@Vg/`>fc2ݎu2 ,[کҟz <Ɐ}}8|`7!e'a+.ƖK^-||g;*>Ų>[A>g,K|~mQYF,Pz-ް.e!䨃B~՗2=\^,:{ ypc_uj7]ñ>K@Kݞ"|׶e{*ΝՂ\GBgL$R^]8dtVS<׾PBY۷`+^Wg؊J4oG.3:w;X]^7h2Q,L8|_FmT΀={?ϵ?/bBQ '\)|z9`Ŷ]eزeK7G6c0u5GA]Hoў_+ RW|E ro6Vm7 lNXyA<쀯x2IYͧ_blyK/gR>&{FiPe#Co[6}o^]i[Z8? w2B1G\K)0$(p15?iQY^[?Dʼ==>KIa$^ڌo1E~|,E먿 Y ;h8`[Wã_BF(go߂-|)ο%8 0Y,-?Vo' }6EMl,Blkl^uUDo{틢;5wݻ$!䨆BCPkdLϷ`U'<q:#yM`ڐ3Bc#Qr\{X֢Z?@"Y_L}L&*f;#}϶}/ۖyEašOⱯ΀GvRB6v \r1ο%8yXR{bG7>,~JilD?|_7DAK_M@x,m(!䘀BSͥ6\ YDzww`fX*"8{j[;~]>7A9DZaGZ;>뎑cY@;9>-zE欰ʘz?=|豴K³q܋ᜋ  {js ˮ2,Q>_ױ.rFl"2oFXL쏵LulEO|Mws!!trsTϣfGrwX`x]`^J'*: "VX^AGfj/x}z|B"e̽iy}_;Wr[|qAu?PSr2YYY۷܋p΋biG;͢(^)/׶]oA^6vugN |Ǣ˰`" P[wц $3@\{"k `s2İnia8lGv*"V FdHRXĺs-m-0vj]eq~d1D-v̘ΣӋB@~~0|L?۷YL2N1G/ s۳e.F3W6ܳg(?d< KD9f2k} >?N<'#bE[m66Ķu;hv$ {"wQ:tTF@A\?Lфy >k.'c^i׈.H?|{p<9mX96cN?X{5˿2oLGv غ垨՟uz}q?qb,_ƙ;>kmH?co׊{Uq!xBk]%-ֱ:V"GrL/F{Xle{>M^v܂xe}dO۩Q?KQ˲fMD'@`-̰mN]+O A!!| gJ)w\=Ͽ8c_֦ڱMWg9q`98c(yFC13?:3*ۭsS͝o Kԓq g36oJ[{XrOiu7cW_f{ݾ>^ok}{L{&3.cfG/މ1 0_oֲbL"3KՎ z}};B1 .^{m)|Tåd OoeE4kySo)mUh=0y 9EzC],sh'D"P*q>@;Es5YmK1mL>z`Z'gK?z N?zOsOF1Dؐ6ZR>7Ymw62}ko:-wdƜweDːqw2~Z~:s!)tBrמYP>wh+ S"'ÃOCs$>Ϳgx9Oяi6>:|C/u֎Wm`#emybTߖS%`Ώudjeӥk7f ^i1iŁƁ>9X9|8[/ę/)}w.wߧv`~예Lu,slOEGG/coQ?s fyߧ^kQ1'Y6A8|?PW/r\C!di{(]JH@Ã@\]= HdWOIH?YZcAcżuV J_~e6R ̂XV|}{=ave06l[Py &N:q,S[DKm&PaqI}푍O1}];"$3VL <c},#)3OMτ)g By? L`zGvw:Ze1:es_=![4 u׶_c"<߶Ey睡O |ןذQ:!ψ{^XU.Q/{e-mXa"P)>{'El\q9}m,|Z걶 l:M1:?0?GZċSB"$: hmhߧA6#'-EͯQ-a:8COOO''z] 䓰锓ԓ锓ԓq)SOotI8ygN\QגdS֢NFߛrǔ=>ۖ;؍fdecfud1>og8E%1~ߛN0]vBFy=n<%M"[nhN/%.7+-2=1;Y|v@:bi3|Qlv-m};qEvZM1sA'&-#ǽ] $Պx N9 '8Ә:Ø:zxjOFmώGL &++;eeW6MM66O;'hhTfđk} fXj.#R:B221aW&QP}=`eVX|_ˀ};fe}kO靻vmB:@yuQkRkm(32'm$x,joI<X3:m ~ϯL.uh!ڋ /ipubD];8>kXBʟ鿝bSYsH1{sh(}SBt6s&:@3!S>tCS`:`r d+'~ VNm?>QMl̈́;qb:^e1NuOu=N>1e MyR]KsN{.l)9slvoml {o_,; zvzqlж5.'?W׿q@!Y^W. z{@,>?|I=l5hC}Q̄ʜ>--Ɉo~E}T ?N/Rx~߄/;߶\6*v'q;i@tg_3[|vK_Cbs9k'anݗ&Pfgo\_β)m}ㆹ}67˜1?.1u{Gnǿp >ǯOaWnϞ=m ';wZ1BBȳnP:n P']"@6 +bS\ J͆MMv,7 ~)foPZĢ}l,۬D-֬ `DHOi3 msv(<3v9v۱"+(x/}2o;B/Ch,wZzcN6FcN?N|}mRgl^)>KwoW}?XQ9A=b\L_5Z= ݶ/֙#Q<Zgw?խB6]s]eRJſfV?k8k6RZ(Z2ۗkaSp#8/\Ԣ܋h[O,-݊o&|lį'QTv2 c_>Nv8zcK6[Olꅭ>/sGQM mW'&t-O&:L퀰;􎠞meٲRFD=Xca래qkȦ1^v{3OS4l0DRM;wҕBȒ@yNyu{e)XФ#6كw eGe:zqJjtZGq |c4]zxtX_.4zC{)mq=6|ǭFe{D.`Yǁܙhb 󨯽E2Vc eClu_CkJXϻSsׄL%V3.Yvm mʶ-s9Zz,hg~}]~a Wʤ\Xw҄s{cbS^,o-̚i6 '·Ay@) 3,Tբ^/'cf1h{v|X؈lk_<^0 LnVyAw47Ĭ;_E }@k}],lŕVȯ!(b9&hO웽~'j\mrgÌ8tfco.sheپe|0+ }'<@q?bF7+mz-_ 얦&E- V.>gX2 3eVkwh64~݂VW|㬾! %/zlz /mG%ɹi|ξaun[H.ޛhaA֖d̯/AT.hy.䒱ţH}rm 2v!KD%Mɰ{oVv|t=rԡE~fۢ~YԿj|w"?k)vt΃!YBȏw(bq͈y`㴈s>E<}Bu{2 \ZFa㎂~+|[::qed[ܹez4렰΀T+p- D?V0BX;bJޱs~b0nyfC&lvƢ~~ʆ:gYb`z| s#]; }X"ڽm˦/<3Gc(s7EoØ@[Z?Kwo!ـBȏ믿|N0 ktyV@#U_;' Cv*6/ :Zn&v1Ҏm m+&-^0FMND"(̽IsK:Y:Lkm;>+=|44% -{=ߡSڻ1&29\qq<=.pq'f^&S}z4$}D؟9Xm~>]A\6LI z}M.XM##No߿tξBc p xLGkk%MTƢV^D )з;ً ݏ`۲}QvW V x=w_d-3#eV?V>ܟO fEĚvة)2>v]\Pgvr~ Pemj^_#`m[w-m[˝ 1Lt_㧷M1A۴dDz2Hk"gE~L)돷yc Vk=c>vΝjBC Qp |{:9@IG I+m!Nj ڲ=DD蓴-\m[n ;YGbCAϽq2BՋv[#Z-![Q_;d"SKCTkTקl({///F12_^Tߖ3"{\bҋ:ɐZOH{Hz,t}жR6ocg/G}Vǘ;zcs<,Ӈ2;: wj7\s7D!?" xÍ/ъ:8<qZyQѪs0Xh?=zmSGFEe_("أ󡵧YQELspΞVz-^k.N:J2AxFFwEoq4t9yUoo_7z +^6!VVQPǂuV~; GлNxM -iȾ|@vסOz )㝃?{w/VnϞ=mj.ݹsߨQcB͍7RptZ_#}Mr`[|+}hx.{mG3c} Lz3(|tҗv1Ys+1ө>?~]LP UO+>{Q`Qž8N)f鋬X֎mu-ud}T)KPȳ(F2hiI։be|zz>Rv\̸;u YG>~g+v_k7_s[j`!xO׊R^۶iMCl۶M=ͰVmٔ :⠉ݎ+>k[},Eٲz]ՕPmy"^W]W.~m_IpsMh̞s]Ɵ۾W6.,mm),#J_1M;.}`z{Saa/ER9scQmtqfr~pL˜~qp-mFzn~reBx6m"E˶[1&~EۊE(xb(^\cZ}VG'fPYP E|Aڣdxbڶ\_><hS`v/Ȳl_u`鉭!"dq]ᕍVb2^W~LvM59aE~И=1&Rmgme'e峈sLS_WK/? !BQo|Z_ И mۆE|D_ p?/] 3=An}6; 9$=u}V1]юS]$ Kw 8-`b߇|s}U`; ?i[3յ H]kx8^;z}>P"U_šCT_˳8eUpw62'߾!A̫#GcDu}8Y߷RMൗ^{!BQM`)$N΢`֭A>(jtV"'3e ]gM[1 n봈egQjuTİvl?\䱝(zzQK̏{S:u=a0^E'wV}V t^οw3Cſv׶4Qqm6~,.hэ8^`Gx軾 q] 9HJ)͵|Ν:! 7t܊ZB{.(p-ꌊkkb=l#g Vkl=^=}2>֩SۛHmDm֞&JɣVUչܢczv^ ZEѢ}B/ ėiYˉ췠ƹP+f88m&fk|z/3c1ZY0 YT>ך{&nhnL&K/B stM+;҉^m`=AEh}FhCфr\#% {QPoY!6<^;={&B3E7nP:8m:ADb4ڞbeQ9ߞ ;6ס_6>?\e8v"=11/2\ fv5A|GL쎉켎};eoHǮɜ+Vsy)R;w)N!GtBYn H?eQS}[ηgGr.5ӛuu 1VE&3煏D%SqJ/g06~[xq1),}A轔toQ攑T|?;fvO{-m-6oU~ͷ@{S@v=/^n:6t}߈PXY'cQh}zs#qMN*YDɳ^to_۾n=}ѿeuiD0u|z{)عkסt!(B1,#(.:{Y@nz2K>߷1q=.\照vj&.|tDnh>*EOGg=dN=$p+ݏ>f<2L=uYݗYŹ7c!|, zP?܏>u9ő?{g{MUص}5+|o5]os,L/7ۿ0~PCGs+R  _)|v3O9r\qM7leRdM۷>"Lİoeciemf y~m`nhSxu6@&}d`#zB`Z"Z4 ==ZLgm߳ש2-l:$B0.d"< \Gnm׶Q*k~ezNwpjuzY@~`ͬޱ^_8.1?OM}B~|[,ۥ놹 *ܵ0XrB!䖛ow@=iLmֺQ&h8o '-~d;212q$*<^.|zV`Ŋe5mR^l1TkzP4jE:.ݿ:Jt9[L9Ӯx¾'uI BѾ;^?W6HKmڏWQV0Y~u[fn#}۲=./Їޱ}]k`$O IDAT(gϞ(l6`x4B] rg/ۋg`mL,K[g뺇9׼kS-{ۄ J4oO I' y7l,HYS-l\^|י \۷\f: ⴇlqA e"v݋HifMh1]r  c{|~txxkD]y2:o S 7drNJ8 u]06;ep[Z@)k}}pB9Br-6Wh93ݱm8) ȃ__Dh_#m˂eҦzv{`l d ˆT_-qm(XŎx}.D) Dž ۰FWeL{b/)"KicYt^v+!(A0j%f0u&iӶߢd+Oq0 q9h[ۦ9ɲ r(طO}A)Do}@Bq[&ZՓIK^ЦEsR_̏bdWl%;FEvMJb|GHlWѷʲ/D@֑(Z˶vD# bC/1Ԗa)0 BRo.Jw~|v2EoCE:l_:R︓C|fA} ;?f3) rqbcNa{u8J/OBq|/V ?7o_ލ5tԻ'ԵXb f_9[/](^fy϶_A}ujmrEOd"CDmm_GXGyd2B[-ۜooq) 3#? =_!-k[ף_էmkDO:K}ט\x[X]۠4Y=ڷx[5:TwnYfG)pd'B!,ܺj).(>h|^[>+{X"؊soI|ba,jmb6hjǀ&_ 2hj>,6EDŽvXqϝ9"܎/+Xėy5ukgB֎_3 D9t5٘X'Xd6ߋH=6=al{=^12.ޑd#g=`Q&WVNl},b߯0L&سgOh`q(K)Y߽BB|Rk@olтM23z:_1u'hτPF{Cu4!!mxCgLYE,.2-ߛq12?/Vy픀fsC2-FlNLYQ׺^/迶 ¬NCN6R_vl2ݱ10fv++Z]7 :z2){r{L9c L&ߜNo_ %B6ȭB) 0y޶m[*mZjqc{=/g-ᣊP 姉@cV>JY~ֶg^ Ɛt rv @\'ŽGLVbIυ}~N#x.]l."J6|ѲXx >Axvwrd΂!wVhd/$(L}R: 0P P?/]B@!?z֊[ sREMjWc햇p?^fQg)E ,6[e|t*dn}Lom(x+udc]=AS1^l:=z癣ȣB`clӶgD1GKOu!S.]6s:b=YFBed{G? w]lkMkEQJ|!.tBȳ:)^t>RfEښ++b:>f@&?1ZeLm Ϭ|ah%o_-{rfs;Ld ^LJy6y>4{}ЙùYSf,~3v em5-N?f=l2;kyYYiagSǧKCe{W':!Yvn1d\ܶK N$Fa6Lb Vv%q/tuHFq} S_>%Bub1y1A9"·>\gHvfʘʊiLPHwo>:#3˿ѷ]'6 _0CookR`6yz6D'S###;Y^޼xI>WJ/{wBy@!ϗRUk}S)e3E]kjm&";zl1:P@_c{e`EK N1\{;_=:f^c6Pu]صc-c WH\~JEo,hk H39o2[_fVz^{G}d'|9E.hύ.m3"msYF(e"a < 9.<I!䇆Bpo{A)x[xWeYT,; oO32E{l,|XJK M mO[g dvبnOڗvN8c+{7I׫W#u{gP.xnu.v$R|UPܘFÎM{}Ώ͜24|;r~_oLge@7cc8)j9/gB~d@!?&nЇNo.GE竒ؾ}ME,\u1z^E3bp:ӬEj1gӢ:a4^tfLϢ^ mm3E7=+%YtZ}rwxh1ɦsȾ<,c؁c뱙$I5Fc}yflFLJޢƻXחR"߳HXn!_? ByΡB>tmJ)W%ó#gM(`:X%jX`El"<}uғuڦ6ȭ=+ljz\hꨰ~m;f|"A3=l8m )t{f8.g;6`wD/mɮƱl93fN%c3?ţ8yt?;Q~@DtAR~.; !hB nЇ *^"G)ࢹ^x*K5qzh_?JЊU^GݥԌ,CnM5c+یENדoƦG31AD 5aiJHYgQ̄_[a<ű fߟ֋mvfZz" ө,O./R\3şB #?t{PUD脀6>۾}{.-%s)Bj 9FG}۫ϴͦMŷB١ >9~qZXfE:VEn&,<+¶ 5 NDc6:nEsY:U9_6>cL Lm=~3xo>~mm3A~_~B9BnDU}ť=t/ V\XemE} qy%uZdTl٢pm3#{qSD8ult|D`QsJc6k1'm(T"ډq+1}c%.3b T@knGs4˜#[/ZPJ77PBroTg pP li"FĶ 2S{׏Dgz ~_.3/*@әɌTc1מv }6ny_ 0ݖ}ѿvd2޽{Ι.m,mVpÐ~ o+"rA!|O\) D/ޮ?(kG031MEy̰uh.'f V\J}Qi} {追AK2雝vϝ 6?;^j|ϳO'NZ7LӤn85k;~ށao Sren]wzW{+BR cJ)?*oe=aW/?nдDaŜN9vs$[^ (et}GfʯE?:9sHHޢcQb!Fzl3O߈i=gFxv(;W_ONshwٸZ{|ygjN\ƌ9d\mMRq-?-G[ W\qBz c|#'yN?@'],oЉhٍVFvvրng,p)VFG_ZYAnhQ cնH8 y3*Eߖ[]Dۋ^$92g~h6[gσq꾶6΋^c\bH?l{bX&C܇ZK+xz߄B> 』~[VTVLJ/=(W HRv2y|8:; D7;hb6}JN5g{kӮ֮E 6R}G>!sDL,|y&\c6Gg Qxdm,AκS$w|B-ޗ$zSFx/| |+f8B1rя|dS)grq4E/xtQ_ |>=N P,ȣ6]>F=󽥗 [}d5K9Ef'>S Ltj3 u߽s9:&.UB+e޴3Hqv}c2Ð9:vL&_C+o|ӛO!䘃B9ιV\Z&e* Ne-`x'eǎ(km:[(dhl8@"V°-7.h5oO dr^o+: q-6ꌍ,R#s}LǮ *vIO׌'M2]#^Ͻ1hyw;|e6 C!uc7_L&_oNj!:!̹;NDūQCv+WC~MU (zs3ўvZ#ϭ~&<Vy] +:m<: t}1۶US.'ȍ&Eq`9.@-z]/ cS Ǝɜ<͆;z^Z/֊/7s !BwqNj33Qh?G{&W&SZ^\46ŗ/m7g`2}GmEipR6<.0.tX;=+c:KeYVA@vHh,gsHc)T{3*WՋGS| |囿!B@!%;N(O?Rj|^_-'e?š`MmYS#XhJnL՝g+}ƅwC HcitIgʦzLjucǎdv{Q(|n9Vėw ھ, Pmc?8deǸ8(s$Fݿ{嵭~!_#qdRZK)_GW^ujB!䇆B!?2>OR~ /WPPQ113-":S՛@&u '2P@iy~z@6oﭕ|?!=66~m7  >"s#nW^Is"I=Hs 7Rf)~ B!&tBO~| ,ˁrIE="6ſ3`ٳS*oǎ*_MN|q7k[[3 p/:Sa֥i#2f{ds1?F/eEf{՞GɆ1? Ώ)s;o|BA!#'R\2e@9i(!B"Ӌݰ }ZBQ߱y6Nu1;Vh㥯i6@[ǜbɽCIQ3H^8&^\b[;=oy[!rA!OoZK%@Bv:B=4[CmD` cǎͪy;.CvU{vÈQ`3@gWΉRk`)2؎ameR6%V5[GBv6E~b#YSesmj]U0_6k!t.MYGiOG[I GYМ)oN~/ͯnH!@!3̤(3@ݎR08XGZ y1k3 zQj٤K{YD=F۾leocIDAT,hk +#E0oo륔oz)iz)~闦5B!tB!oP .VewRikRz\O):hzR ծ3B\/,X0"ۖ6ͽ$361o! wJ)_:`~oBqBZj)e{ud29g8VUJ JS}\Vn.5ɛ `A^I8 &3g)y*<Ae>X~L BHBso}+e29RήzV)8(glg8g_Yt/כą,(e<zA}2d:xVI)Zʃ@ }<_y;>!@!rߜtUJ\+6O&eS MM6׊M@\dS)IٌZ7 `JٌT3d*oySIyV<'K)jmm+OIOR;~W!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B'HOIENDB`lektor-3.1.3/gui/resources/Lektor-Info.plist000066400000000000000000000062541346506225100210350ustar00rootroot00000000000000 CFBundleExecutable Electron CFBundleIconFile Lektor.icns CFBundleIdentifier org.pocoo.lektor CFBundleInfoDictionaryVersion 6.0 CFBundleName Lektor CFBundlePackageType APPL CFBundleDevelopmentRegion English CFBundleShortVersionString 0 CFBundleSignature ???? CFBundleVersion 0 LSApplicationCategoryType public.app-category.developer-tools LSMinimumSystemVersion 10.8 NSAppleScriptEnabled NO NSMainNibFile MainMenu NSPrincipalClass AtomApplication NSSupportsAutomaticGraphicsSwitching CFBundleDocumentTypes CFBundleTypeExtensions lektorproject LSItemContentTypes org.pocoo.lektor.project CFBundleTypeIconFile ProjectFile.icns CFBundleTypeName Lektor Project CFBundleTypeRole Editor CFBundleTypeExtensions lr LSItemContentTypes org.pocoo.lektor.contentfile CFBundleTypeIconFile File.icns CFBundleTypeName Lektor Content File CFBundleTypeRole Editor UTExportedTypeDeclarations UTTypeIdentifier org.pocoo.lektor.project UTTypeConformsTo public.data public.content UTTypeDescription Lektor Project UTTypeIconFile ProjectFile.icns UTTypeTagSpecification public.filename-extension lektorproject UTTypeIdentifier org.pocoo.lektor.contentfile UTTypeConformsTo public.data public.content UTTypeDescription Lektor Content File UTTypeIconFile ProjectFile.icns UTTypeTagSpecification public.filename-extension lr lektor-3.1.3/gui/resources/dmg-background.jpg000066400000000000000000001235651346506225100212220ustar00rootroot00000000000000JFIFHHExifMM*bj(1r2iHHPixelmator 3.42015:11:10 23:11:21 http://ns.adobe.com/xap/1.0/ 8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC C  , ?NqGo; VN!NRJ0O^M;O~)`CzTqN BciHmZ1z+E/.{SޔqHzR '_Scާ8~;v\hIǭ@=c=(Qޜ}qFz`7⎆Rch`=)=( i0Zpq@7.1ɥ(zccqKK`RQڝF;S11G_Ɲ&310E&;Q`c9Q(=;ю2?ޗ HN)Jz=)qқG.RҎkhƁޗn8{ю0i }1SIzcg4(4QSh1ҟb@BJwJx47Ɨ8=04vci>tҌcv9ڋCH2x> ].r):SbR`wzR(cG@Q@r8(ǽ׊^M/|ӭ7m4ZAHcdB10E={SJJ,@1):QpKN4c64z9h\N>`@ #cyj0ibMԸv<jq4ځK9JA#Q3K 4:1)ǚAL'^(hh=ip=iir҂3JA!!z揥7ڏzp0:=(&1 w9֤tZq0{ѷҁ ;\M 94u3@@u7❃IMR;RIhsItIkЀz}hJ\qKE4>dɣ4Ҟ4&0~TiGO)@ƁڀqKÎ[R FI$!QA,ǀ$gߊz|i|azwgse,,$I$BF395~ K߆yt_(T$\Y[OyG#lBv"-zx?@u<{o7O-|T%Q")U(|$}u 6!>4el%/ߴ ,N1RixóAt"ȳ^s,;(~x')gF%rũ_jm*uӤ3$,SkVBF _/^|u} M.tEƩlaKIx\Xl?D{xK$e1o>/x\s2j1[,ʆVPǑ /~\xNԞ-.I 9YuIß?AW4]rOmDf9D3 A|>Inwu kc $eqB]6ӌ[ڕoɩA5u$Q{b.D:+x23?gcY^ [ 5m|5,6AAH.Y W~>~a/u[|WK9ț듆#'v$M?r zdb@ZbAc=qX>~&Mn ,/!h |'b0HS |h?_jsmiIyG# ÍwX| caMOڽzuqK-$KBa+ eT4z{W~#|>w7^?t++P,1WPdd 13l,m17Nͤ g?'?>)ivޭc⋿ -IqĐG(ady$+='%>aBM<@aZIḊ8*qfsQkGռ[A.)%D+ A\ zZV:`~f~> W|E M[r$U&8U"] s> eiSp4M>0R7$Q@`G8^=(n{T÷NOLSQ1:ΐip:҅ <AARLZ^i{L9IS4 vZ_RpiRq GqAyG!LcL)A^)y7qޗE7QaA 88_J8+ .SϿbxqm8)GZ j^1B4zpJ@)ݩ@Z:t'v3ڌdX4/j2G/"RO#.qG9 vfQbcIڟ@gޓ)y.7'8b(@7=)p{@ #4:Rt;>Լ>hiN6F3R`Ԁbs=!: ӈ4hbG|v3kV4z._1ejO/,dx2g#篈n} Sě|1u؛) ,QfqLl+xr ȧ~ϑ~"| ㏈iM&3vey?fcc<^Ln=='C/ūwHf9"h愲yI8 xǥ+Oe_?-ίZVӭmM&!G[ Śwb˶WlPʨ<5xƩ៍?:Ҽ/xk:Vlݥa#[i(G3G UVnkWx?^G𾓯Mn"QsjW<:c Kߎ?_' DH8@[٘?Y|}o⏋ >mi.n,[^)$[}૳8 g#Ӽ=xCF,->JkiA `$qU$Cw>Zg][_40c[z6}F-fOrUr>pOPԷmٯߍx"Ov!{FNk#k\ lGpK_җIE ris Lh 9)zhI~4fbJFh%!f u}Tt4G#z(4u#Aqt dFx=v=QqJ)O`)q@xJ^ICJfqڌc@u=;QמzPx4 8Tl.=i‸RsNaFC@&߭;Fq@ 8ڎM;c4f.sɣ׽111i>㎘RȤx4בKnS(;0czQi}i:kcKҡF][O#I[ٛ*$X-(Hk׺֝e.qk 8L2sݺ ]j-{lS\o& lGw5ßxMo]C52D_0"g-Ù$n-5]-KPp5+X* ]т`\};w<;-2M]tyXe5/#BڪNXֿI Ax5)8v3|U[YI/G_ߴ2KG#}6Q7^Íυ ~-~&fEk/isnP[$ xlj|z-}+0Eo]a:1̱rq O;xSPOiVm(hq 6IS ?rX?I] %/ZPpjmtq,{@;@lM3= Pӯtmfk+m/pc.)#e[#8=@`> ]#wk+RQ;RXC a6X |3ռqW$M9RN|k1wgr*8 g}ǭ~RAy&_V'l"m+ų)-P]ٹfM Pr[hʒa፾yׂ/-Bm=`I.fmMv//n1aÜR`^u]oXF:wrR Y1Rhq^إi@ f`tALGSG)B=;xt@i<Lbxi(` N8!i`,2I'baW0S OKv|j0LڧhR=KD;6 ʒHah2tpUA+/l?jVN-GmɤCBBlrs֚?>&5}%^=5".2qyuwvWNH䍃# ) 3_oOK/_t=^|Iؖ`쬴뗴EYcTH0P ˖8cm_ů>>W<;ye$խZkx"'7u#޾*[~^6зHh|60k71a%f.9\aX8CG-r[XZ. )Q\;Nh]I5gy`nI8dvdWwO_\\Y|^xUx|XhvZϨ\m|ghyYT|MB;'3д Q>0K hjK4."U YAi&;|)jgLJl]-<i\7milL*%r( ^GoŮ. j"/ ^fq^G7Ҿo UL7]\AԖ+ d @p<埳wg[L^𦥧%|6fXI.r3Ykmk\^v Ruu+ӕ"UweWh|eAmA<ڞ~yb$-wv$f$I<[Pgպ+5 u?wRJҴwr% s}:W?OH?*Zzv0xonhRM/4C>q֓恉J;Ӈ֎3 9S)y 7? h 1 Lw Pqii$&8r)Bh;hԸҍ! sK)w<юoҏҝ␎qB@iÞzQҐH@RcBS\R#4F JF:R֘$7ZB;K C Nا X.;vwR`Ԥ~4c1/o~#20 2᫝@"5Xu ]3UIb[أua,"E@RF3>?i>բo![e"Icz{qEx\_kIn"y7xSt&8eꨀf\>ĚӴ)R[\Ml$nD;~As1#'\g4OQxG׵mZ6qX{Xh̃'/:'<xZm4|7I=̡ĉ$M 6v8c:{KKق̈2F@p9RG#5sh4#56:t_[7B+R$DIe3/GI-4d>7};|ϟޯ\x\xrMN4ff8)} O~> !yڛbJ w~˹9t_iz歠__A]·1ş,rAe u{QN.6y] ~f"xXFR48by[^ vO :ܢG-UAB%c^9$Sl Ky=|OcZxT֑'I/,e2E庈@'x7ſ>'x&񎗦KYg[o,B))!2}jIi0G#埏$|e<+xO-+[kP6%lFɿg  |_;^_; bI5+GNk:!+kUlm >i |G<_Ÿ?/ֽk=WSmU4ObY$1, u=i1ڎa|~˿cwk??Fil4k$^TpMwX(Ug5E9Mo{Kg񾜖V63_Fk[ZAImXIϏ/|nQIڕ]4)gyLMcd;U1`X8"eEEŬFya7F!E-8zsGAJc'I4iAW:_4:+uKހ&88yď |2U38FY6fڋA, -(c5wpf込E mIp3r U,@ kk>NZ[mdCVZY2ʨX$ iW=/4|;Ҽ-.jz@T :`we`p8OVA:<]f`n~;km'O+:|OCT|<%x԰PyYw2|sOx$E׎sG;⧃ƥpEޑh/.`G!'c=x8tX`>|d >M%x0FmB=m̱#Uf],N3ҹg_hw_WXfmsBlQ *-ʍG/]w~=N|uoZ I ~T2C'\Gg5| .S5ńd0G ڷ%Ei"<2NO^kL4>/u{M/UDnV{kMS`)1ȯ?gROV{fR02+[CF#osL<=w6"M*5uv4fVgpH,ox\cG4W|9.?hk]^iO3M"B&Fb(\ o/ '|Uk!g-Kl2W>>$ SZ\dHICH& x ful(hczRAc~7):␎zQ`}8F)gvt#ҁy3֓:~! G~)Z8;ьuGC)@8 1E.0qN?j|Y/i i$#%!28w B)`؞f?DЮtoL0}.%VrwF+5~2_~5{CPQn 9Gf%UB 3`WN9ZX6 \*NZv}p~s>]"ak-Νi~:/tm"\ANwk,R]HF@X(g;od(֥,̌T˜pH#uxF SQ$~nE߃Ƭ&Z i B\!(i 71 >SW?5Z藶t2y!ak`̎!Li} FUF);ҺGfge>x{7:!hIpGp$۞5,BV >:q>9fK[6+4/:.ʞZ7N> QEhug7mʥIO~%t/EMF[Ldwl*QF p>$'‹K6ޠks;B2>ª5=GSmKUnM'4Dm5Abz>>/Ioӎa CPkv/ 0la yL.|qz4FU,'ˉƲFnI;XWlpi)̽+t٣AEn'LI0G!f\g>ZxK9Ѽ-q ao5L$ʉyp|K8fnX^ 𷇼Yfwm#UE(܅8, `GJ.#ZWuE@FYwde'ּw%}&]V][UӬl؄Vtyk*e͊8(@UP`;;T8GP??4}?e𞋠[kh^bYP1-2}ck?k ϺdS 6. #y(2Edc|i|eoگ|9%gӴS6E # qgnL>*F[Wx h!r1T2p4c(P -n|7)R9ayo0]#q?7>>&x⿋49\Sݱ"|8PI }Î!j1ڗ4jlPqFҝHA40g֝3Gzj<HOcҝS@ z:fH&au0s1~zMzRSi8Cg?zR8c:f;R┃ցY iAOzo.֔z 3@1>n1$7)6;4u4KÊp(j3.@O>=89cR(J8ҳFG-w. MDžp2zWpigo j6Kto1Kn>}׌qKWz?x➡iG3^ߴk1CBug$p6?|'V.V6*b8Bi]"c Hi}JC|||7wykqh-jJ hV|VS? >,x~)>M}F07911& Ɠ_h~2kD? nocc ^j1_V_^Xc C<`m+=+o?0Fe`X̻2bg>H;e-O,Nh#XVQ2cf!85O?v q4z\z'Ǩ .)8I!:qGRbKNzwA8{P@KivIF3;Nh穢q Jv֌.&:Qiy63 ӽ'jb٣;b7c=M(QFxlhR4c-.=(@ƀ;ҜGj>o8sKǭKKƐ֗94cwK:Rc8◵ #:R_Dgtb)b]0F#stϭ|g̞+_Zo&6>3ۆnGbgbx |WC,黎$Y4a.7 Fsc=GֶVƱCDE 0@8tg̶_޿|K׼i{ H$rJ$Ip7p0@5/>*O$并ҙY/ %=q }ICJG}$ᎍ-w^4%nJڍXʒA?f]RVGn-3HY^@Pͱ'?[;ۥ?g-K>ּakH J)4&ŝr9=+n~/\Z}@w^IvnvN 9a잘),| [Fyռ%$HڸB*GQOVD!'5bO-aEHPsBNk zqJG_짨x7JiVMH{[vKmy3L+T9Z?migq" 7g! `̻~|moXu`J<[h~P\7F=T@=F4ڭp8 @6Bh,g[ۿڧkrMglt#䒀( pJ;ٟZ'Mn(|Yq &`.]crU[G m|7B EAܞIaziL)E4\$#NzvCҗQȠh^K? ,~i54kzţgNGڏW2.zқ9:_ kK$XsskJCwh /ڲ1Qs+֚/9Hv:cr j:W3G(N8;s&=9gqֆK}W7O4l ; Jn~ՏzMj C /0;#5}c';c֕{\'4}N'H.7 r s_l 4KSGH⹯zh қk7;,;!#R}c(ÔEFsIodu=i>ٞXҽiE\cJޔIҗ#5:GLnGSI}k`Jo(7څ's\ټ4߶Z~Cӛ^isjgjךl,tj\Ұth#\Z_h$ti>\G=(C:SrOikf{YhN+4}\}}(r/ڨJ}'4l>4;!W\ػ'.SNx#3ҏɢ:_g5`h)ҏW5p l擈thzSs*EjӰXУ'ֹx;֏1J±}?1NpJ~Z>:cHfzQwhN$FFz5Z>׻hu7U zҋ2i۠N9ܜ\GMh~hhɋ:o?Zn'X/R޹/hg4X9N8ljE>wP u7>َiMk֏dRHI_@7 Ix ub4l>}ޏhN7~l Od&g494lz4X9N4P{IӜ Sg/y\=(4.Sf8')MnX|WA rm>k>mٚ_~Ny@Oi 穢ulhOgh7sZorlkub=(orfޏarg}pz'ZSzzX9^ G۫glΐ)4mk7m>%eK֗탹aX?sfHB:xqSxC\=ha:Gq\4}Fu}L^q/ru_m(\SH/(HN^g\8ȥ^N(ul(hkK)4lzރw,Yu=hoP^q )}/;Oԟlufc&ֹ?tɣhumC\sޏ^8 zq:imk`}zΎ^ub=)~5}җM)՛(mr_kN7BhI`5țӅsژ:}IStj>硥a}7@ws~8J_sEctOc4x]{}5n }hAnGڏAXz>ў ^{F:_?oG>ԟhaX>Փk\f\ZtjCAv{~uϙM 7Fdqzn;@X>z Ɠ>X,t?kMYՅ}h;n}M(s~;gG@n'ڽk\1HnH:{{}) ֘X_9/:ёM4XhWsҏ{X&uGC4 H&"<ڱޏc? >ՎV:M7/Ұ3sރwѱ}ސ\W?  ,t^xZ>ӚVu7|P5ɥFFkX ' ЋR~W:.җ|? GZ w:\'y4 Cf;)Ejt?hk_/ E.2ӭ$yc[`"Ȯ |!E|cpYXX‹x_Wi_>3demATSԞ*GOI |&mY !Mw0oy?_[d?^[ڦ '4J_i#a_wS{?6Y`?iCƣ95&L1HBIV܋ŝ˟zHY_,/,h~tF K3Sk_k )pԗ3EG_WV-tO 7_kM+Ogc4oyA{:_3HxQJܾ|8(=c{xh3}Q]irtO  yYwkc8A~C|q:gKwn-@Ww6םOO|R IQO azmy+diT? ?*nO}(i.ꥧԍz'(?f=`5d؍ÞBYx:WetmD0 {WQKsA@}}@{IZ-íZ9>lVdV>[kὙ?fSp) ~o>PG9D76GydlERԮtolx9ZH9zf#mZH!ߴѼ7˅\[]*U!IoN|+C@[m5'б>Tvxqґ=~[Thye &+[c_~~>t2e}w^+K= ?pZ\$>3@{I6SS^k6 jY V?-%JJ#(<ӒIou+<6%j"V_h=Ы)=VŴdIWU|pO u q_&AjЪo?gsK8l|9#o"5e;o.Һ6,9?kNS#H8eB=i#" [#Lm+A[p \?*k)_mASKL{Ռ\οxGa Fͭ,G?֋RM>0Kfa>]pU_)YV c*9l%K a|n뵃tIxa<`~t?_\Yɥh8Ht QgJ|Au·kpja*g{\inlۆ9c=?F,[k+Aa?QI>2: JA?*65S%о/G5浨o%Yi?OO)9BǥhF92y?֖ cP#43__6 sn?cA+u|G{IRM=:N>uߡο:B^y.6 ʒh6>?#$~~>ttGWn?UqhrLs?ﯥ~a yCG,Vf3#H}Q@{IPu\Th 2޼{_qw#?q*dR(hH߂~w}: E@qA{G|W-UNOȟ_0SrѐrC@{F~hb9MxzJlV0@1+ٮW,CU 2QzcwlkΞ2P?r8'ן޿1tr=j;2paE$V߲aT ŕTn;ym$|6~|oWǾ)"HI'ǡ5V%,Y6?;{Мb}nh6Z\SHM=i|ץs Z|W;ǵu4!XȤ\'1@1IO5}v::#q3K\CK‹=i|\=3k4BgZQu\YXp#i>;>یG۲zX}wqnz>E`/I4 +֏ҰunJC{>ۊ>4;}=wmCEum8ӍWқ9NkqK Sw° rs_P-_uqS4Vۨ\H?咑T4Y(OlS>3Em)m"{2z  F݌~Qj@ CL!uV b<{;ƸZ8 p"; %<! ~'ۘ71AF+ά51mlevnOI{-Oa@;ulk&oQi$*>XZ z}D7W֗%ڨ8XvCd^fnZK$i `ɀ~U_hR6pիY}|gݛZ=,KPA17?(;w>8(Uҩp^\^g- Fkբʙs΀;9ǤOq ?ZTWK9GcXEbkJ[;q,cf'Jߑ$~һ B5Ymlb5!Ss!Elfџ "#ߝ|NN?UyFv S! Qi-7ޚ je p DQRp ;VAy5V>ϙ1@"Z#xtw;H&eO'R5 $e ۟ײ|yunrsnUdQ$RXrT;PGnS>plN;H*&y?7ZE -H? ƿǀ|!.boؼM–+ir]>VeLm +9GE:g1[7:ftQ5td`C+FA0kk앀>ր5UY8d05nn.VF<ϛ92}m>M["o?4 ߺ#Hp>v&1jo![l}.V{y_}`xIwDqP#"amN+81H;n=*eq%>^{HQ sî;ΥX1=~t:7RFA#G)_pZCbc?ʲψTx#8tRW2d =ʏ\1H Grn?y퇈Av7OXqhn1os!CqDk Fs2ף{|22#l7Iѻ(ne0r=OȑN5Cl˹*-=G(цNqr{E4b9^y%s tϧZǼPKם&rc>Ӭ. #u;yyt;T!GgNN9?«F{{wGQ0-LA#-enz#xch20 };9+2sG@9rnzO8Ȥq{SNg|0nN2i~~hYsF&v.ˡm&)'J~k_glIu)gy\Xu{z3i+ȿo>|#}r[?^_x֏ dM̎w}j,4m?53ֵjW0 `'LKK\`C jaA ր=ڵ"mؼrKgx A0,A 랕cȪ4--Å$Ӡ,gPnK`}N?^Ekg~ifᏋpY1V.-r J`sjZg?UJ81ۯZY&Uc٧̀p_@t C@]'SVy7wO7cHY ^Y?9?ʾ]ŧt[-ُY^gG%@IgE)|u,@oIc~ߵ#t|H^/,>(DMJA8'ޙxoFx39Jxs/xL5-aK7YcaQn)BlECo\y}"y#ZTj{_ּVՖF4ksg x?p`ͮ?"&)KF}=@ۨ1g 9QTrk4_)5"Ip77QB ힾƀ:mX}EvW)cJu]ldOr?A ,Jõ}։ԕ}0.jt4m5\`qGJ/3ޗgֹDwuI3)~=hX)cӰr(>lkXsG/`:sy)~rjBΕ  3qgXR}=^DOJ79O@>h#$'=c}zQ@myG b>z.6Gsޱ~>EØA D}rhp_5[iIA(6iOE^⟌~7/=|1+?hgκOo[l]H؇HM|Vp[Tg&yXb \3XV#iKԖ%(C~R +V=&!fl*3">Z~tae{yO*Vfß[W6R+yB J"&B tF!)iUW67ҴmR!絤=洴=<j6LȐv6t0 Q,7 a]xX bƸ^!lc»cm <hQJϽ5l%l9~hƔ^Yu5Bؑ+'5CVޱvʲ /x^x#i?hfG Hc['^¾ւ33ۏW$1;S (=xp͛?+|) i%G??J4"=]KnlEӿxn$|Vxjޓ -^ ƟpIrXsR3sZI7"Ο K)mb}sPaUr>?sD:UDEHpc =2[i5Uz*W<cȮ/WI|?>VujZƫ>.#qAmz{H1{7vFxWvMdbj[v 2Xڦ]* "oŏ@Knu0G:%>#v5sl^yu?Z}j7it@eHo\G;q2̼ŽКA5#p?ֽBm!{fo]鈇n5/5^RAx$Wyx5r]e~k!nPwm0xODlz\q?Cq^ fw |cZs/U /hǯ40V,z;-Z#ï_ExG\JB}k1<t.gg~72q1N5YR?~ =ωriw>S6Wh_.hmpCt"<#5,r>V>tvLdILdv?ҽB?*\,d;ְc,A<:g3Zַm~>ޫWit}CVᇎ՝l$pH8O ng[vHKnx}һ[㦝0S 0;Xxvr/?ՙ䳐oS;W|%y Sۊmyp>P3/_e ܛ{\wֱ (i\W6|q_7kQrG9t6ͯ;c}ށp{P684w9_Z9sk+\_@k-'=*nnN:u/zw ;hXF#}f scm!߭l=3M0OD+u^:u;ΧW0rhi6BQAw 8U{gX؈aA?`o٭0FHORx5퐑Ł'W?5g `Sbק] ka9>Vѭ'_2-ۏfDӢ ɎZ}Q?7WA>!dcDր6AHܐ2V.1Pco;]rհHX02~ ~=)Kȣ8'eh!0A.kv+/ܺ$JI῟Zqi){5cP#ff&!&p9CVl#V%I#!l=iFݓ|_ "2Uމ!R\.1<^4}r)olQ(w5zJbn tUb4<'`߼1\eP&ZY_3݊oc$O=<^J!nٌW4٥LII%UI,k} ,ObWvI N |ܘۜwֈ<d-fפĪF8ۂz\[Vznmu(c߽y埃4-mMG+f?hр4褁cg#JmM9e8HPNqUyͣݒ!>7[OÒ:>3Q]M"ݐzVd]S{ɩpcٹܸ8h"i3ƞq9[a8ȫ:M~\kZ@^ X TYCn? ^g2L3ǖE=).e+IB$n|1V9f 13`q1:ycӶHW%ޘMqeS9t= NcBmgnFz{i=KX:UG̈́3,o4Fw,+H4ڧ8YXN CL,`x]I<;Ϊh`|z]52w9A*YtH;BXXǠn_ ̄Gq*B2sbj% V~qwK5qB9ԩJT4'! h>Yίqۧjpc:溫2q`Kgp`xǚ,O '`}hΠ&8 wmR?&>+/^E.2=sY6lN8y:Z˔<ӒxXK"r d`6 Fۧ:Cf\icS8c9>x'J4fYTNHQ# |rL~'t.#eO S#I _\==p Jnzt֭|=\yyܷ?zDX1"FrB{<yRJW1Noxyb/; .S+Ѥn34У{X*cy/23+p·ߊ [[t<H:4seg`M')i# x|RNSqMddNك<9,Z"hir>p3@<:3Ҵ-ᨐZ@zG42`VGB͛rx9ؼ=nM#1]ZKQ:`GZF$ɇtd4d{B<SqFႜXlA%N}!CY bYH:Ppj;֢]foNCa5gsK#r{gyet7DǥqXl=iEnҗZ_}拊nzX^4cqJe~qH#*3qcfѳց [_ӊRf;PdzvӶS u W<}+BD̺^(9mNI5$jעlU^+di~gxCTdbop1;{d\1f=C߆ RH.',jԾ"mϘRH#}P(XfPǖ{WAD>)#S:+RGӢR sq}W5|1&.56ۈՏ!l׊=8]Jys[|]ҖC4ɅU'RG.hYnTrDdi@p.^ֈ5ܤ~?5bX$~@cOT}ꄟʴ?fYg1}+ƯDkɰ:d㯇w6wg2w.Gs3*F 捏mZ rq*+_^{?\15QwHU2P^{wݺb\Fi˃v޼h18'oQ|T~~ sKT9A9 cc"גB+F5[鑇N%M\__gW 2cl@(>Ǿ mkoe*H? arJ"}rJ7 [?E+9}(G2c##;7RQLJr/ڇ1c2t?EemS-`#|#}!n|B in*Qf>ϫh7wc >@OAI/i;Vᬾ "L~@r>j)n'ip2jwv\3+ko٦.\_`l9!>}"PK$?4QGkKpH=Aa|,!v:Ϝ~Ia|"uUk=3v9cM7<!h1^ $:~> &v ĉ1>kY3P ieisvy80yldwwl?J'E^)1@r>MՀn.ǒLj[`S. zqҾl_/Doow@f*Se|glNހ}j&;>\Z;$77`|_7/h~H@w6%?s'r}WC2[xCӢ>/2'>aoBqRxA߶Ox ŖSj>mÛ,F]<>Ŗ{3}E|⟶?}NqN> ོC#l>utU?H<2Q* }kXlo"\cuqc|Yv0t#}5>0%1i>X 陸w+&˝ڵOMBTڥ1߮c9c8? <ԉSI;?ZOਓ̋T9lgV_[MN3l~GA(t5 ~t?|'߳zHWMVx&9~}"rKswTc0. ˹8|'˫\GHuFNpw@r>Rhn!XÈRqG־c Fq'9cߵu;g$1\>B[aii)A._5_|'Vz.N Vv#!b}DilgCM3g$MGmqESAUY0=?吠9c) +$ ;gy='J: )H+vs6uS>xJKYH9cui$ s*6Pk ] ^#GA;kA%mfZq޴LP4)/=Sc͒Ի(yO5ɧgh)Rdc/Ӛ6sak_;e.zu J5'٦hBOioz_M^vD$E1i>7{G"vD$fޏM^ݣ ?IfޗW ݤ>OӸ1i4OD$7f޽ ?G"v<_{i?I.}oz>7{O!v :mfޗ{׳!! ݢ>5f޽xAIݡfޏM^Jݥ`<_{i?!'i,ԟf޽'"vfޗ{׳!'i5'٦hBC4IMG٦gBOr<_{-hAU ;-x٦4H:G"6{i?IMKY!'i4e ?QiYe֏M^|ݥ>O-ǵjZ[͸q^|ei[xI AZ'HkѼ.v~Z {O!!W=+#fan^(ك+vKd! 1ب~[>XҫYh Ffq^c`#w\~q)#myOsSU6>.g^Wo uҁr,O#G!?DF|q}WG(=?;G?Jx?J7s+C-(r N9O(tWGG" v>T|oG #Ҿ=?KrwZ5T|oG _W'h=?Q8(sǃKrv;G =~?!xJ<vQr:l)??CCJwa|oxҾ9;'!zI6?~@+vQq@(Ҿ=G!AcsԧH|~I|c((v~WJ?L9Q #/ ?~@|g(9?҇p>7Oҗ?JCj|U| x=?S'cSm?{+ӴO ^UOݮs.#^=-P+U4uSJ›v+=OJ6`U/h)Hi6`կ/hqXun9<՟,t+m!ZsFBAbZ)ړg!diy~xGAL;.ГZ8\1 jzWGd|$rRi{U6ҔjS ?:+HtEڏ8H,pE^AW?w>̝~Ξ4ʎOAOe붻lGӂ)\vG 6sezQ~pEOIݮu1EG*煤QZ~̼O- ztw?f_J=(Qc(<ت32c>΂7*6t-쩊m,p˞p-(\s!872ثVn(2SL|῱W_P?>̇gSBapE/*]t=(Rc.>w_fZO.8 ]ɶ_ΏF:sNpت9һ'}@"pq]ғhQXΈEL ̝i~̄SN@ޔbeIt4Fp?]ِmfpأHtd?]ɶ^ۧ\SLG ֗I{R8oe鶗g;k2v揳 GNh9ASWpmW(21EÕ774c.x}}gCژNtҏElf_J.'_tQ]ٓ/ٗ/*h2c8*fpب8NQJO)PB1VNUWN-Ҟ S;5{^M,^]Tny3|zO{Ѱ*67ދ`9FjIҀ,@*G4`> 9_}I:I4bjGC,ԛ׊6/_K'(Ҕ[(\m,l4yP2=(:_H.9i2 /1i ?a OsxG:VOz_.7E}9sϥi7~?*_{O4hV1ҏ47z>5i~i'{zSAsJny (E`ޗ9=ߴq>`h} u&CuXwo4ߴcW?J>ӎXWo}OqX_j#> >9\`flSOQR}?\R^`o}'Eh I+ =ZO@sG=+Kpi{}&E\{?\3Vȣ44W>zUO?qhZCp{F(707}< کksKҰ>zc4j>ъC9f}f>y4 .i~qX>~:hLxy9??;Hw7לQJF=7fG~hFzV0qI Mi+|.=MwX?h<nZqX?hOJ7I4}(4\w7Q+u5a#w&\d3&Px}ްqn O'/c=ɤ7D{=i>юz7MNG=+ 瞔Xx\G}M`Hf{Pnk c 43{'X?i'҃?9 L7}'03L\i~5RqiGzAJu84}9a}h&7Gxr{_?f6n/ڸ~t 775)9!O^i>@M}u h +tk )l7EG;fhz/?JGR Es{#Mayy7ӊ>`KѨi4A@66"tnDz>wP 4qU4Ů)8')<ӼTtRk{78(b,y1ޓ5XvQ#dhr} *n5`ځ75Xu4kc4u4\cyVM $5^iΪǨR\%fJdlqGsUrϚh2Uqcdnjt4%?i|U=*^7 |:@`Li =j CP)Kq olqҎ6%cdw at,yfAMoB,cު)rg8AM=E&lvΨ(qq6M'V^i"כI~5i?=;<8W=E Re8y”Rǝ 8Photoshop 3.08BIM8BIM%ُ B~Px" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC C  X ?OJ;j\"5>ъ@◎wj0;~T sG8(P4& sK00Ҏw!0{)h(4iîhy1Nr}#֗1=hLCK:QN ր``g.FiN)0Ic&r(&i~4j\cZ3P N:c>=?vp(`f{RjQɠ֝Ҁ1Lc'~8 8L 4@$&xAqHҌǽQғҝӥ1!})0OJzqKKi)_ ݎ /G4 P:\q(l!AMSi9@׵/t+G|Ri:ёbi'HsI=0l0@⎔3N9(ޜQ?O0^bBx@7nx` \ b ϥ(Kӥ'Q8KZ8i^hFLPŸ=8p(>cF11Q{@ԸJsL.0Ҝq{9◿"q@ J#4cR0Jy9֐֣=` ҁz(ґ0M1j9GJSvc<) `ъ\q=Ȧ66^{`A (bg:("1Iӱ'Z@!g<+GK @r1F"9G=7RFsҗ94'Z@ ;搌dat'xϭ/i )iG^)1@ !P @K֔4(&8ьP0@\R)L('f18~j`"n'j\qK(4 O'QN#b=(=6{R:bw?Jbғbt<)=) (sJqP9HciHgSP0pixwqz:Rю=(r("@i߅Ali3N9ڂ;G~)ǯ41Ȥ0h֗C@N vG4)G@1—QFM.v7٥@H.7iN ~c:QҐyN(ҏÊcHJ\' i;ҏJ^n3J^@旑֗iJ:RGZGIҞxޓJw^c8WҗiJ8@%\z2)AGlҀ) 1?ZpуAɦ!NZ"Ġiq1L, ޜ3G8ǭ cfA㩧 fL p9>sR($с׭Ҁ)qޗ0⎣w B9(z^i;RhȠI֝QCCzQtcR{94`GN)0H0yZ\bȤ&&})=G@1Gޥh OҎ]AMs1?);SFsH:? N.'J\zw㰠wGl^6 dR3O'~hҌcR9r( 8  884v;sRm擶1vsҐcs(3җԸj`c ~Ҝzi1ց&C:)H$sנ\NzI<)xqI8 { N8 4dK;ӽM'#A=?HAi;SiztcA4?z`< Kiy< 3./=)Ozo'#J3Ҝ (@&>lRv杴J_qҀ.Oj^ZǨhcG#=F:R9?7=(< `'N@#i{{Q 4`s;R("'SE'JSRڋ o'ANbO|qARԑ@()!678u<\h98(G|ҝ(>߅JbhL`z0zw1P0(E0czFjw#K`+GR{`g.^H=M/#!@ uR p G/= -.8h8Rw+1KA/)AZ\{~t ɤ:Ҏ8<ю EKނ>Ԇ'86!iyҀ=)*iށ&&HqJ=xǭ7> Ps@ yӰGZ@4Iҝ٣h" j:S Zv=z\`q1';>r8Zn1N4pxn RsK׭/ Z 4N*cZN39zLjC(KA_izR.1.@XE捣Q@3/~ݩ1@Qڝ8y  M;?ɠ}( F1Iޝ/=MB`v)H1)LcG$村ߥ4SZN惎y<⎇=8ӾoZB8Ɠ3R"P1;ftBaOJv;rGJ0i49ɤ+)sKZ`S{S'9v1Ҍb Ey^;т[cprxKdʁ\fxaN㨠&:sIOz\Z?'ڎvN)`]8ӱ and4 <Zzb4(w4jޘX "3"JzЉp)1@'֌h:tSb.4u@`Iҗw9<;St@OJN}1N3M8 `tG=@7 QuIu8=48ڀsKsAKh ֗~P(֌iqEӂiM.@t, '9 /ҁEarOA'3A49(iIǽqIS/QcxۑKHy1)q\/z7sJ84 QӍ&}h0hN)8wڛڟf&&'9ɣ:!NhHyL^94t44p/#\֓4 0~;Ԝ@.iv>Zv1Fr1Hzgҁ)?(p)A֎q8Qҁf9❁GcF3@="" 3qabJOHhp=#NHzR v=i0;/jicJ09֣O'4u4r9go48bjR/c0OJv3lLc1җހʃ);R$8Ž1cJ8F;@ѷ9;tpROh&\gO4Jx4㞜9~ QKSI?:rxG=)JL 7n('vz8)Ҕ㎝)yCq.'9@Rh(4ǧF?`s&Z\Ҕuz:b49E/9%&0hsN 8ޏz` sGNA{R:tBAjQ/"BԜ ґGN}(a=i1Nu=调:Jj^A1='JZ04 ^chJxGNE 8ɤ#GlRf('ޗKH 4{Px/|Rڐ_@)^)q{ #=h#i}iJ:4@◑ҁ4(׊zPxǭ%.9& izR`!q(ڜ &;k /w&3F3//7({;sLAތQJ3@ K9)=MɥRR+3 @)␃!=.;;f{ E.3K@ =x΀@񢐌֗J(c4g֐Q@,.9.8ȣ&f( n9hZaa:/zc^Ҏ4^dҘGi9H.6fژؘ\`)1JhbuޔqHBqHyN44ڈzIE4gQژ11G8p8w֗<ў(Qa!)Gj1_Όzьuhj8R)m/|t4iq(KH=(J\Rc'4Rh8I9sQh :R Gҋ=4qGJ3'z_j9ry/>b\Nю8_=)v{ʔ >ZAthizGץab:8 9)>Z(IhNg"FMC9K K V4;R) (4Jzf9:qހ8ry&-Z.14v:vxisT ~w΀G(F Sހ=qG$ץ94=)c9(q(:P){; Nhǥ/Nq@Lw4R23׽nԠdӲqMh 펔G.?ƌL=Q8҂s@!84gc<◓4c4 Nأ(⁁KEj^R{Ѐ\dSiHH, G =i~g= c=Gҗ'\buƃڔPy斁4!RSKӟJ qF1KIAV`^r;cSch8'"x:qJhGJ f:zJR٣ZLq@9'Z_/: CH?٥נbuJ\#@=(Qh>(Y#.=hсހbp(;t@!9'4~v(;挂(GԸ?>KӜzzV@=ip;P}ֆHxIE.&3֔?HF9?@A"=KhHb{P9KƁ ":NqF9ɠ}R /u)9ɧ`CN sAHcO`44ǓLFzR0rhE ~i9w`{?1s)#ZpBh^uh@ 8s!ڋaE-c @OjwZNE0AҀO^w&Jp4m/8\ѓF08Z\cRJ xZqӊ(`&"Iځ ӈ)4gƔ@F^(ap<>R;P$t4 ua:z\4l@3ӭ4P DNKڗ[9]"ep~2ĺ>wZմKˋpDR H0F9滬q+3Cִh~!g[BmNVHPxe &~|C[4 D2Oss" H:*$ LF<2FbXuS? pKs&ݎ}m_W>&^kAsړޗӭ== yP84x4c@:9XfJ\zR‿Q>Ԅ0(zR֤9Hsڏ`sKX"!4G4gG=@>ҐP+"LvK׭'4L Rqc޹n{g N挞\/9SA(!Mõ) {QץJ /ibu~z4sGl(L{ R=hG砠R{[qGZJAӥ.psN@Zcǭ!>Z|+j5r'[|tˈe2I1 rBX`񏀼K]aؤe-dP$+0 H&?e>:~?᷆Yys>hM7W"(EFT:G5GJMcUkM'B0米 ,(pYTr@=kǺǿYǭVub$,@2 n OèzH{]K[6z\r": @b"33nPY$BhSe_E÷<:-&B0 0JhPs_߰{8~c^7yعi(rx[O-shoZy >h4 §fYex;|e(]VkdyU͋"gQH\5@{⧍4Wka+ZhaѤ\}51_B|f>-g*>'& O5(6'__5p?o*7Ǣ~Ϟ >~4_mſZ._.#t\tQfe9٣M_G~sŬ?PKNKQjdݷ$?Wq\ WAO6j0up1+!ew~o|W1+/@VLS5Lh x$ymė K8?p7 P?Ɵ~ %*Q#j?t9]d2H߶4G؏Uu+i~5G%ƥg-,#X@UFwnt 7SbW8k橰G_' 8fn~g4($hP# ?,r!_h_Tms#Oj .ʮ*zƾ\i~zIE¹?\~57=WM- ?\ɾE[h=I+4Ϗ4 9-z `fhb3P078˽O쯏b['xD25Т0<Lf(98d$?%?)no͞-7ᖽ.m3gw̆0E@쾛~~F;?jsƨR0zRhOLqQ'8F<)CGFҀ4qF(~4)BqJ9$G~i LP;Ǹ␎v z@!yzRrOҐIsN硤yLN>c$t4c @X=/Z1szB@wqIBiprx.E!=< ^sZLqF8Aڎ`FGAMwiE{R)ԹLZ Nqi]'Bvx?7۵)q(A`v`Rc}(u@)z0I16sK`dg1IP^'GLQށ gҔRf ړ.1֍@x4SۚoQJFFM( ucR)8(y8.OzN}qE\`vIߚQK BHvh (1IӉ)/zQ@yR`49PG=hdf֓ҬAip>#Ut5U~;Cb9$ûix&cDK ~\fgQ#[>k+Yu 90񗌼-7zvB\KƽIIOfv~?&]sda岝LɎ$`=Q'?x֏0[j1W$%f?GvYWW~~?1q~пeOwqk66̵!VEM&JRH\ډv~/WjO[o-@r.acx!qϥ$6| ~_2|8Ϯxg }o-Ѕ:nk3 9!9.ѝ! }+-4@ z9izRcJHH;{pi={Rv;j84lo#?ԝwP|ǵzъ!NiG4|zlB8N=)9Ҁ!PJ^'|zRNӹSodq$ȠV:_ KsWԓR-2:A{{o('¯m~g֎j\ D`w'ic@9֊Aazus@ģ=F{R=GJ6.)Nh QqG4`u ץ ɥp{IizA c=ilJ;r1Na (Q (җ=)Rzњ\bBQF9tGNE.2(4Py$Ps֠I(Hw9▖0xt`E!=y \!:HNZA7=Ǿ)9L,`R1X 4 h7%إo-H%.ƒc+^|+ :Wʰ* G`6YF_͟utϿiw}&R[Q7HF\ p޵?<~j-gR\^O> O?mlv*6s֩/# 'u㏈ٌsrTTugc¢x~ַkVq}c%0}(?'ZO_~^4A[VHbܲBܚ' $m@u9\:_x|!ػ|-Gyunz誙ο2_C_SzGk7ۙF|bs{~:Z8 Kw~|FޥMV徟 ml.nS~.~|v۔~&ɨ1V$%|;G\r1~vYGJ ؑԞ/nxZQ@Aӓ)G( JN;ӾPo)>J'҂;vc(@4r~ Lt^Gh@1ҁZZ)z4юv:QI@ޗ߭!p#8;qIL^fԸ9O"1F=h ޗ/JOj`㩠G^(\LK)~ޘ4c40?bQ@)?.{c4RZ:֥LCGKӑKGz@4▎H(<K(S/h Oœ)恡q;t/CzPH^F1&sIڝ@z 9izҀAތe}/ n1߽&zwlP=+PR SIL{}{Z LcG8ސ1>4J1@F(ӟE[H,Y|"O>,xK\]FH6P51vjk_?Q~91SD˨ާ)+p̨NW,N|e񟊯>%xZlĶGu4W|쿻_8b8|=fį Z vAW׭~j_FC M4x1."->v3`$5W^藦=5OoÏ'EpK/,5 ~i95?_??k"o6۩t-<ȱb2TȊXm ŝlϷ~߱$bc%QQd~ Wo[⦱N(ive7chǨH/"oُ'mn2iyC*KeVB[kRP V&z_~CH_^L>d/͒FU d/łL]\GZ\ji֑nc[xQ 0:;U?;◆3kOŝRMbM5dkK*H;$p1_q|\| 4u1)?=|WMG±C41;yJc I9 !7@xC7_4߉l̰gfh]%.Ǚ~u_VoK.geDZ +B ݝ׭}wVO+ M=m$=CmZZ >uukYZ? \0z`bo[qK/ j1fy'Ԙ/\)?) fg-'T!NJ jç&st_$0iF_ٿ|fĽWRԴ1K Iԅv2*?u~1Ѽmm|4,P| z'a_,ׅ; R>3ȯߊ|DYexK2/jVi- I=!GhŒ1+ϓ_?_Ou,, }ޱ3GAмC{᫈e[w`̒mݒ7u1sx^6ϊ[MjēYs͌tA2ǦH9$=k }φ!YsKxw߃mx}NfMRcs,eeeR.9/?_ǿx*SUtxhwK3*ݡHқI<M㲃G@=GIr`ϿwmOBu?K]FmnnlCyڍ -,۸Zi?Gh:EWfvQ9ht3ȕJ:*F[_n'W~x:ӹ~WQxo N>ӟG;=߀KZ=ɍ'{/)[wŏxibkY 't]ڻA%i|eω~'y1-M(Gsp8>0x^4 spc/ާ)+v2vB:3ۂ^>hWV7[iыC"wv3֩Xog?[X|EZ=3cI A!V(@O : \C0v!b;U=?"ܟQ' /vbddrESw̑$rme/_o9hQ_F4cc$H ?)ŭ'njn;ǫ\io0N8ʱ°*Hq_DAo÷ZxR]-3YH|6mn1:W9O/RaŮgUU.܄\~};__1J6Bb>\x(~XDF3ms۷y/vjy,Fl-b>|p{kkމ6kK 7\ȑAvHB| ~||B^׼G?_ rs떂!9b'}ma۰(gywBgB' _隽|b S?ʬI;qҜs_*_jem3_)xgZtiY5%v|Dűv( 2I6n>2}v,~nt$"IPE6@kO~-|w-h/f⫥. &1pQD y O U YB"'_/^>`<3>\xR]X//e,YNK6XpG_?Ca'~4O/LHu+k]ziO*h#b+ 1@9ZE|z޳U{k12<[%L8漳ǟwNK\4V4~rB)L ÜҿR1AhRşeiB]@jF)C{AG9 x? |=Nյ%fDEg_7EvRoPB$t^JGjW_JFsCu bc2K6bg Iϡ|;hh}#-{I՟NXO-4 $gNU&|U~#.+5ѻ(,*XGC! ؿx7o^.o"T:D2I*+@Z/+~̟gw7+̱8< #xZ ьq( 7Nz)94ԼRMO>ғiќ> t:ӎj,`rxF20iqizd:H1^hx@iރ ,!=. QJwCQ99 =:Qғڌbs@掜Ӿ9]2S[T{Gj > 5W,ʯnA`V5OcSxOEgm-TXUd_!eG+S!UpLf|V?lF&džh5 :P{J*EFt#pfBtPyx?2XۏxV6jZ#H@9Iq$W^{яZ~vhlڿG_[谘|1d#Y.#˵¢"8N<Iޓc9)MO cu6kgeupaF*7&ݨbkKş2kkO>MCJ{G&O# ޸SP.<G f# [4'?iLG} o'?pq_,ca[Huς=LŶHVBLT6_О:сN3o|2kR[A˥i~!|]q=~3xcUyKDzh%aҡM"o.]OٛAiA3O7'ko =:VEaem4e \iG87ʮ05࡟V?zK*]Yܴ tY"_$CxtwtSKB_jocE:qqTC 8lp6(]PsyQA DU@8 qIKxǿN↷o /}@j֚+4V0U$GGuoYAR3Sl~vc]nam̐M$`*YRQ*Fk>~-~şlgswûl5Mэwm T09^4no߃C᷁RSVvmZNYo H0Z9# g⯈>5~<_ _hGQ$Kx]bIBgnB1'oi>?#>!ke&ncr"~yB}F|?WV=sïh!`4[d@\a44){zs@du=Gt 1ޗ'h.N88xPrxP! 0zGԬ z;b4>é&9ij%apirsGP!Hv2sI{d#4{QߓJI{c')q84:rNE.=k '; ?_O/~?{}QJC;g1 Q.s7`O,|O/׊#qN ~S~?j2ŖEׯ.o I12I $+'5ExN;/Ŷ;Ouʆ0,Toc4l#?a/1I-34v/\cM?hUI7eW t H eh#TȌ\t[o/N=+_7&~؊N N)p(lwƎ~44GN8 )Iړۥ8gP= = bz\phzQ4LҐs@8Kڋ3)@NhƜzv FJ0G4pNh,&3J(BuH`GN( ўi{&37 w/lJ9QHlL(LBc?8{upiZvc) R8LdfO@3K`ljy ьtbr4w<A(K׊1P ތFZJ ץ.=sMǧJAҗh>$qIS}(i灜H&nH9NqISI8u9)P1?ZNw@RAK`Rc<(hk0PA;8s1knsK&46F9҂z(_Ɨ85'ƯDe:\x-y-'dP^)yLcoo|-׉a59䷲3,`S A|6uo|[adInJd)PA1QNL{(ORԬ4{ ]ZdC$QFIbx 6tk^Gu~ guHcU,YF@֔z~ÛxWE d%컓b? nkOړ'*xz5khYSu]Aq쉞7(Hgt@no_êrV;. V8]>fLqc)|aO#OŷpL6ʹs8wf!GJIRi^|?~jZ3h˧x"EPv1 T//?9.rB5*<A#xi1\g_}7߀n|czi`'o;jo`{G+',?[&4;;l@Y Kӭ~-Jm>n'fK80Y+7nm ,F=$g XW=+9|7l@MiK*LDR$YFlNam{FDžiy~XѢ$ >a1(<0w y'kU ;e.%2W噈Q| ύ_eݟM %iFUR@'9 v+fNƿɾ~x'J]_S]3$v%DFy'>!|_t۟= 6.m]qXv `qEK:Wj|B?EäZEq%ܭ+n8;V`(a ׵T_ Z6mz!s|0FlnN}9KZKώ&ºDإ:\NcXGqzyPj_EcK[kssQ]Pn9pAQnϱ:t|Bx[[+@gHDQcHfxP :E\\2Υ"K @,A°o3S}~?viG?u,Ԑq>+4h~c9@,H  |s⿅~w|N:uo%U3FpUK0۸s e,Me usP_Q]q֏W0In 's]]ir {'Ai?ς"ű/=fv IuS?(;XlCyPW/K "l5m*fIA],Ӟ@|/Ŀ(m "K٘mǍ&ݏ'pW<iX|2]vΠr9?=WwF⯃>0zuVi;\Z,b'j $n*\&. fzVq^7+L7!dﺐr1}Ahԏ=NyI~4*ெ#K %y*щeߌW՟wPꗐSPvX/2F9 Dz*~Ξ bԻu;V>k72Ap[=[Wy??ľE1q=,('iTقYF>m/g&Mn@#S%BdARq5D]>KW'br a | c߆$ %DM!Ӹu:~<\_/ >'wӑ>uPH#8eҿ/?|nƝ.y8@db3diB6#V W?W_Pe՝LwVlUM}qL_|OQ#*RGc2;Vxd'$X=>#W]jF7QӊZIgғ^\? яz\qEqqIץ PsJyQ(/Az@z ($R0a9ƗtELPGsI@9r('=h1ޗҎ:f4$tҚ(B9;֌)?t _z1ژ Ҍbph@6GBF;Ӈ}(~.sюhSRiǵ B{P(Z>8=iqJ@JJAZAa; @! .2p(xǵKRP oAK ,QQ@4g'OҀuh Rs\cڊ`Fi)shfڗ)1\m.1uTs_=akj/j2$3lK> W7jGo~fxh--[Y|m[ *h-ڪ Ϧ>oןmMã9{%`pr3۷q+?b j~8Z2)ONpBV/]$ϡ|6ѭ%]=ݳ"HƑ?+Ҟºoٓ?i(ɾktS'Xj0@s>g)xR[:D#ib! #۝ Zg("$w! W̭PN|Fӭӯ60XE,CfvO^џ<=e+I ֳ(b6[ o?|PtnZli00w9'7 ڎo_hbTaQ#l@1z 4 ?g2yk`W/+kĮIO5m5XZ5Zm;N;]T0 ?Ů|M#b|4Br ڪ]g_ | Եk@x8xPXN=0]/ٻė6_Ƣq?;$'*c!vqp3mr_wk^?m件V0X7W  QN.`_ֺZ[Zy7\M |8cE 빊~~^Y+ j[E6;S* rOk^Ӿ/ll? q)PHZGMIIRKyS˗$*3I\6G=;MbvFV>}1AAx: sJd u&N޹5_- s'-@RiUOGႸG@L`0?,[=%dta1Yf$\${4j? MΓqdE[P븧3WftՔH,!c*;7}KWKsNVr-ʊHHc;(zٿKw:ח;<ˈq[eBU9<%ώ4 m}\_]&ܞ%A ^q{#K?~ ՠwSIJ0 yjڻGguoPBVHI7}Ъ),rN[^ßo>\xuOMB|rMs 3((JǸ`䍩 &xGml̀V_ZCqE>ڬ!;A$e̥r{Ǔ|d~(*[h7.dyV&Ҹh®s8RNѿf\{_6vٲF>TR?rztt{ߴEZPi# Fk~,_5|6.9""F#=W~_ >.x^D_ΏutP@Xd+NyW:RqI/ ,Cm~ry$΃Ov? o8-Unpdy i>1ڿ,4ONmq|}рUϠ(_zjg&R-!]]($#O-@+pÁ'aG~tt M*ӣ!GQTԭA\x6 sJ2N͆F+zמ? ӤFh:D$q\[u,S Oxei:Y,K#1%Nr +jn~ xUeyQI cseo{/sY_~Կ#QK8X9[噫߄ k}m> .&tueU] p,s+> |k *V*WRghUqrNI&|Bzwï~;oLqB ]_=v5~.ͯ\G,6pwl#rw|vJCcgGkѶ3A"ȡbTi~X~V:^6&ӖdU8hٯ-Ygȟ:Ň CaP->K쥀, 9C3Oj~:d3 ] ٶv~Ϯ_to~EchKFA-d;Q>*⇊K] 9Iy2LIV$+9=Cm9xBk}Cuͼ-X5Ϊ gUTn To'?Lg鎓܋ӡ'2=NFv1~ƾ*Ÿ M49,aK} ,P߲gaƫ6Opţl|w!:sk/izGHvpWVٯ~]#w}cj4j[ͻpqv"_'~?5Ok6,6d3 sa*Cwr9SM>vt47RwmHj# c#G 1_xNFn5rm sr/B8_>,u]ʚH% 2Gy_JԴZƜ0ZGseqbOZDUڂk%yq47&A$2$^χk/Ai>[%X-.Zijƍ!(f;ؾ/ՄfIfDn%;)ŔUj.>3o> |s\I|H$:28nx9 ۻ.N5 ]6{2q,lǹ$˭Z *PK3i&1XƘesKQzKwоYiZC: (F=I ;zݗgm8x4XL"`V6c*#¶ ~|mEvccs/Y]p686+x5EX%C*P0q@5?_A]Λ&׷h4q#UTH8Pxɯ5o??'|Esgw 75Jau!m8oٓ^I_P}>Ws}OFUR0\*v -z73ߋ6P42eۃic Ǟ~d7tKJk^w\>UrȯeKзD$#t|dITW߆$N?={xח]m" q__}.oN}cSϻ3;cG &HAix:ܡ49AjaZ=r /oQ0iyI 3ڃ/Jq4GN(( #57К;A8P9KJz ()/A@Q41L{ҐHɣ|Gu/ xNզȖv^itDP $ҿ%_^ R(My/`nqׯf? Nx?O<{OR+5QCakrVI$v笆F<2qǺ.Vo.`8X_ExD.I;IQ},sS2~;[|2 V:@g$;8\ӭ}EM'Ǐ )Vsw{hnEi~eФ cI9~m߶oM_E½Yuh2. wQ>xÛRgI0o&8T 8A>ӣ/gg1|IKUi)1m&H"x_%b'ZamOCދiŧ]%KFYcݹe%F9(@$E=@|jړ㥗t/ ״XlVI[4X%( ۤP?N'{|C棪}me[5xiĞXC #9svЏǯf_ǀ5߳x^൚H2(xFF[' ih¬?_θ5 E!yhUɻf7q_Uu4 ?Mσ~+4?>4k(^E/&Tyc/ۧRf^&<j)k4~FAoJdw>l'mO+ xz#M6X5xO셒32^OQ5u^Jn,EQ1@Dp* ?W?ҭto~ ^RgVxH 4NIݱDɮxbǃj9:ۂn<`|qpsI[?~/lV)#`d~߳~!ͣ|ZNq d6֚(O,Kpv}-s(x/Wض:Kn%c#mͅ瑌p {OcOxxo};>//b8I 4|OڣhhO6 w zqI3KzA'֔q@RS ^ !.0sR4я” h?7A@=(ENbpiqK34◜qF B ;b1@ K(8Lvi0=i=:h;fƗfXhӵ;SI"x0(u\P1IÚ^(# ;Kґ; `Rj:rh> q8#"B}i)h9(c҃w@ #PqJ^٢zz1ьRs!杷~җӊ64sN#қ(Δ:wJ^ZOoZxC9){Q3ڎphaa9(ԸvjJv=;E1h'n(iN3Glh‰vN㠤wVҗ{ҕ qJ:`)dbtֲu GS.,4Ӯ$\Gqg=B |j^1Ѿ[IMYuE࿅w}+8EnYG'>ƾ{b?U^~j7'|3%n1_K?!=_Pա|JjQ!ۀ898Szi11Kߞ*Fp)4Px A)9$1JSւ;.4)GJJv31f ;ށA=x$(zZw&I <%^YO2'0A#| G_ p}e&88+ ˊ ⰲA0"Ɗ:*+<:]Ø#Ug3cUCqaqwekpr~Ÿ\`m(˞H zc.sNs@Z:S) KaGҋLzwn{S'pB߭\ 0 OFA:Qb!r1G ,!旐hQ B1F8g\ M⟓HI'4t08H3֝M>EqK:RfzRE/C֔p8@ GniqNϵ.4<ݩpqKӥx֎Թ)F>Li%4{Hw't4K}) cEZ14B`dށМRQ`QKקZPi/QspC'qJø1B8I9&EҏE!11ƗIi:\& )y98s@&8Q>tt^\oNR‚3@p9N&?oKӌf^t<Ӏ(@!NhG4!8iz{SGNpqHAhq@Əz=sJyAޠWbcўs֏a@ƓQJZ\ƋZCZ})ތ/j0q07{GN ޽ Hc3*;MӇN((@ڎP3֔7uMҗ6!L hN۟—4cإQלsHhoPi/  Γ(q9ǽ';74 E.1ց8i9?Ν:R`10!jq(,'Ҕ2hF3R*0=!')S4u^)12?tyjq`RJA㯥2s@(E;^1M1$/78iF) nyڜ8g6AKiOZLSB=8GZ_jQ5bC7?B4ڐvi8=F1A9<(1J3ކ >qԛA<Ӿ&OьKך'Gqހ otq@8KޓP>GJ9PI994! >)ztp((9 1ڊí%җ+랔g&$h9PRuq qJF:#ҁ\Lv('Z.$zg4 <@){P>#`JNy =;hHJO)'V& 4^0CvFA4PK^}i9@FGZN3֎2qJ1 ?5ɥ>`!fzRڛBxH)89p(ﺆA<)h; n3}u_ه^ӔqD{=O~5V5 gLtqȽC+ x?i/~{}HEyhJI,ORynWhtGإ܃^+ ƟֹˢB{d`bwo x٬k/֥Y:pFz}XQcwH!?>kG^e37s;^O} mq .¦+YJ X6DOtnF@ʂGӿ >?|7{u2WO132d.P C n5o79X?F>3$_j>_.*~V_&a,9q"zr5hS{ᗂu [J 0{ ƹ/?ÿ {$i =$j l6? ~|,kRE&^e+q4<ywmn1Շ$k?a:bYldD w Z >%iqg񦠰 VIDc_ze;_<*/̖G„udr0A<pr+|'ODi8j2gYcF!Q@Jo_`mUf5o.\sq&˹sprϪ-N|3Ǐ}i -F+cq pIwy"J]UUI;'oKmIlHɌFy:/ T#n.!X Np,zY~K-.RYm.v@)k|;=4"^].!g|f:#Yf~2v`Sm]o-L PP>W<1}!ahiV,y {*}x5qmo/ vH/m(p[m~|Ma㵼~ 6~"bNշC%@$pO*>,Ik"(ʅyI`?O4WM5dE)PYAx0juGV$ *8Ծ~#k}gZth$R G%(I#ߒcB .y$|j,ž]%9$cx9?%`?R{ |3.tEGs¢(&1 o܆ӦV2@SfC H9b-k7&176:LHX޹}c 药]=sq,p\m3o2QN9Jm8}Okǩtm-.{=wk&|iq9fAq׮1 j cs`p~J^8gKIiybO$+N7؜A 4SIȣ旽+/ja9&Kȣ' gҗ擨׏Z_l(j1ށ;8AsIA_Jw|Nz A.8>=QG#ڛGH9ɥ8 @0z(#'@àZvqA4t@y //h><ҎҏҎGZC4}iG11@Ҟ9BRc)@4߭;BBsQ)JCց:ьPJ1 a0hK>ךZZ(cʎMhwxNR= Gǽ@ hRRRzuH){(#ҀqFri@4PfތsC@!H%/cGJ@w=(QB=RQqF1ޗZR֗( h8;`z)}11qI@1?.;xJQXwьr)hvKցߊLQxIh(=K9ދ =i1qR4K4t⎼+=iqGh1I~sҌҁy0y?Q`4;iM dtҎ)zуP!=~:ބ NsR2h?/J8@\L :ihK׭1Ig8@ E8hh Nh:(T4^;RQ׃ڏ@ >}izP1? Px)~OJBcsKLlNQ=h q@ m:Za0INx._~wH W~溸aT@?هt2>Zz[Fp{G!H9|'x.E3m)lXt# kG<3DvQA:ycԒI派`ՠ ⷐ|g=+>>zߵi^UO[Xemlʡ]|Q?/QM}E3Ia-6 B81Bq0˜ 㚗-:m!MN)_MD|1u@4Qy{傪c@$<2H95?mB[s{xLv?#8v#%6KMiɃt8;Xw0kk^<[\xsvueve9AA?íOxLPo1) q[w8|>-(_R\/_w< +(-Ts13pqMu♼gw˨I$K96&=ǩm'Rl]|<%<-a,%j٘"4+XPd/ɿ>1ާKω/ֵ-J)+U '$T0A^3}j3i)=c)etaOp K\;GisUܳ?jiZdmdf5ͼM $Xȟ4љeռ;a%/k=UIPێr޹`xzzV4h[?/vlݸ)9\kC[i_ĿD&G#"/ ֹ;I⟊@y 0{ 8P֯x|Z|W2dXgpMe>)ƩVw5FPrP 3X]Kp #)s[4Mkڃ a%fd۵W#޼~5||2ޫ4Fiy02H:RUöiI-崱sh z#Y7º} 9eP1lw>@ Kᯆv b'_ x컩k nkitn$Ve Zۅ[9yvl,[8~xᇀ$-MM@Y34;ԡ|nNAhYobP[ƊmllnN}{͠?Uxúڍc&Iʼn ŷmv$AڿH~#x ?gS=_H+xa%+!sƭ!$<^<SIҨ/&U/8#¾?ѿ0I7nck>-9zP8_jԵˀ+Xa$9& $ܿ^4I%=&+lR9e`Ur$$[Ek}2|zt!J)BqAq) {4}_0m Qg NzZ: sGni{рp(I/|PIJ9EQh8bc1NJ1HiAӺrM&rxHQK:hBuIy=)sQJN ƛZ,&;`B;P!1(ϭNM'isK⃊J\("h{4:PO֔{#'vR(:sIKi}1\iɥz@)q):❄i=h=~ZZ RZ1)2i(ǥx掔14%//?fh@ Ks@~fw=gQRI>~t Z\`Hi;sK6Pg(8Xwړ/CGQJqG''J:G"'?Zi^)õy@ցh8u4u4x'n)@4 vxȣ$ZLHB=i{QĢR߭”zE{PiGtsߥ ;;})M“,.3M @bӀu:ڀ zqNzP3R 1)3KhyԜS( ,#3!_+ .9~'db02@X:?ʏr)q&riFqJGoƓE< \v~cG4 \֐z F(AH0O"=s@ cv8擯 H9Iz`=hz'Q; ^:RLi3K@ǽGhAדIZ]O 4Ҏ})A֏FqIHaQR4s. ԙӹ$ B= |RJ>\sA4`({ޔFGJsގ;PhƒKzCc&iq'iR9gP+ތqK7{q)I֗.FxQG9@Q>1I=:$ a\Lp)3^v bNrs@&)=RZ J^1@'=qN4h 8ƌb ')H8HC{-N;Qҍ֗Qq IۊQIӀhcp}9i QבE\ьt@^PF:zP!=hsK@ .{b(19"v=hG4p9\d=h@u8$(ǽ& 44IbAM;(E izsG?J1H9G֌sFE4җ:u:FqK׏J :@T㷥!҄@p4)}H^b`J ?=OzcIJ1ZvGJ@)}){bJ:Q@ g\gތ₄G.^i@=(BN/IJ1ގ(?w}3Ҟx4 cRiO'*(ƚ^Oi?;_lS{3uҁbK_@9=)A'E/"ю(>AK׌ўM/8ðߔjvE&8旧^qGqriri2iLJFzqH,Ҕ} {b ӹILMzC^3/SHcqJA48OZ.:ۊ\wCOpѓlLg84qI;tJLqp#4@.פ⌟CHMOL5:1דXn .R+&\4N4N=i1Fp@=h']"cJ8<aޓqX8Ɠ` <ҳNh 0hyyVGM DxϥgP2zGzhyIk8IsG(7MnPz`i 4cO8v?zjcGڗ'YoI5Ca. g4$)|2j恐cq+?NfNsoozC'P}) 4)$(; rqG@ߑ <Ӛ RGj_;`J_AH;3y4<ҏ7=M )|y< gG9ɠKXy_^x3ҝgk8InNsB+)w0ZO9*Lg|yqi<ՓGA&YfRF}i|~G4y vƧ$'e9B@e3V_4Q(AcPK֏;eJƧ@5ĹQYq4ozư /cBi|iƷ:ֲӌHvky<Xv5 ygH3 j7L☍0#4 dހ5ݽ)p1IzQ`y%

vy5)FzӼy5fGNѭo&ƿ<+''H,kGZ_9~cTWi~yIqC7d8⎀Ս7=Mp:VGn$;pk#=谍_;; '(,ky޴v9;y 5ݻqY"^yYs>FA5yZc_ͤ 3w ?'4vNk#A?j,;l*wH3/5b;֟@5|@ HV5 wY>~^w&OZJ_705zv4v}֏7޲hI xIdǽ/xQ&>wY>=iiLo7ޗ@wRyҗ&a/=hMdץ h5s[ dإ5<޲(i0屫f8(zO85tkyG묯4(qcWhg*~J$)i)LP7Zv85Dyw.@ Q1o84tE(U0֔˓@|Qzg/]2GީyO34-R{2Z_ʝ0RL 4ji|@<)D cQ'c .yOy3n~D a֏0 dq@wsTHd@ jRP3֔ߥP2g2=)xsHTy_Ɲa7Jb^|#cַuiҥuy|x]1?qx_s[S#QXaĝ5nȵè[7SZK d F j =?~h7'Ku/EdG?~__Kk/ģI{r#~IJ^OCu/E?R؝>VSu/EY!OTIϥ_)J? Կ(bWpSEq+r;Z/g]6?X=?yOV?tvȴ*S/EZ^!/81}8Z)GX#4-ط;G?Կ>i`|R!=? |cGj%ŮƟ0?ENKWm{L7r?x=?_SKF]D?csP@+c_̍,4b4/ZMl@{fRc E 3]xq?GwVvahvb+'aN?bkOVg1i.z_n+G7wo>s]$~@2~۳HmyGc0zU(g)ŻXvV濚oE37g9:Zt:ٟҙ~ƫ7ό~OG"Qw5_^g9E@{vJsE?cd0VP&i|Y[#-RkW"9#۴}hn|C?d5FX #2114n]Qy0@nuooE\D*>?o?F+LrB_㧽8(9e:-w`~@{vFs~}yUoWW/=+> Y+-yǂ]cS3DX>*G8oQ|mNJv>%_KU{uouPٟ\qKaP?W^FyS9ݶl~!to&nbxS㝽y6&axutYl.dj8|ۉl=?}nكMm'z ,y>)ޣoOD./W ૦=?ۃaӐIy}P`eXrOXV"r>g €"eID^*aϽ'7 J__~懩R?V5"mNv۳17y^)\gԣ(fWI/<6?AZ>W@{vBSD)oe'}~{+_CלPsۨ{vB1~Q?}~ݟLOo3Oz9}{~5q5y(lrۻW}:h~|:~Ϗ֭GpC秉_R٤x+9LZlc0^˥#.F[ +1Uoo/KLA%{+s_B.-WG9?֠=?ۛ\ xnr?ޛ-ʞbx wJ5m$sv! yc%Ui|Qz^Mo/L'FF{BO.rhT@{vG tgo:uBz,l3z[ot"]jPՙt3'K2_J|Wzq3Bc{ ӹq˨~=?d_x G|e^azkˑv}7l瘺=?YnZC⭠Ӎ#gdؘ#_ztվ`rG_β荛<]=~Rd'31_JŜpjj- T?iWQ!(nb?(76vx8 F7D7? Cu M-Wb FRAoOpzX?_EFKeGR,/Wet6Hs֩,KSPٟCB?d1n??xg~&1>55Vra@eEhg_Ug6L?/~żz7EIc?/=F 1? PG~ngܜt?Vl䶓tggQfe+ĿPjA˕ǟ?_i0QEm{n@{vM O2gEʿb̕ӟj__]n"FҲ I: )vPjvRqy3(FjJtIB\y 99*Qs@wbNh9eRߧ^)d@iL GX3/47cYBn x,jG' 3s_4>SO 3y@5|JO7ӵf @%4I+¶]<9jdS̿w4Bfp3}+u;i 4>qd6aB?C]vK8r~\S߻s],M/;sQw=3nѽ,$rf$/|Svz\=^v,3r_kդh4(-@}5궶1s@;2z[c1\ޘZGfZuGI,4MPF%lcj[lǞyTX&S~ mAf9kMj?V'<.vw:UG nCJ/'=g1[C=ɽF"K&" ӂC@Xq]=qBmf@3] % bx3_D?*#MTCo'EoĦUfPƮGxEx߅]*of쮝~{?y_gݥɑMuΦe=^UQ7#=pA3湟JB: Q=?|Hx5+>wGfRM>6F}ꔷR%YԖ dPH1::4ް."kUܼjlr]$ Kf߇J/XĨx)T+xns׮&s8۟`}:frXc?ΓX-pgwҩ} yG_ƨC26qҶ/~APrlnLn9ګkm>o"M=1I3%O/~;k W0mi[ҟrnɦH ?FVgaj}fdZq_OneȶTZgʺCy팓ZnOi'3AA.'=k//&G޲~P5|sG ;yjyh@5`Ryg4)hEfyL O7p>OӊO8,8ˎ+/=sM3zAcWzO4ceƧ3e'bMcOGk7;#cS5k34yݳ@5<)<hoʁX3AqI{Vg:ٚq) ih@&<XwV78 a<zzP5쎴y>)<@$kyuY?h#ÿ<q~@j6'?6YWMõ<4;0RA :6y6|noO}R$|jPo.3#ϩR} =雎DQ<4q*Zyy4Lv'5[;T_ˇzз\-X<2 =O0:S7OS@!~[/x-- 桶RpU8OO~ݝ p)K$sX?'ِ@1D+AϴˌVJ1(Q*->I֨\Wb5֮6b>(YFr:L{_J2娭 B F>Qk6ak-Ƨ˯!hInEi>/O[7WFE1hFǚ͖:V9T u|,4֙~c q] hfU7/W*ų}͓raV. u?ub4 zPa5vZ7euU q(U@i7ٴpc&[%N}t`GVFbw!ڀ=öL(Ic\w߆TԌ=>?NkmI=bi1ʀ44~s¤gYuENV?è@nzm9[8J_:~]p>ĶeաXbjޠNìCf7WݷSF }s#Vmmt&\c8ᾞsF_z5zt#]fO|/A}~jbF#?€;q7eL,0AMdAu5 O/P߇l痯?Yǚ~Jiߢ۱( ߊg jXY:m?Gf7lg"t}rW c\vt?3&H'acNC@ڏq1{|usnݹ^_? hC%-Go6Z6d+ֳ|CGmW-QUXu@:`蚄{G|#ndܯ^ߙ@2yMO+s*@tL>_%QgO?(vFoB? ? BsПP\_hoC\F1 + 'qU.|\T~yei~60/oS|}./ qjX'T^6ah6gӟqO;?:']R>q+w~QEnNkJW_nL3_5Z3%xi4+ךُq +LOi>3j:1/o&p|w&b3}hVKiZ՛{xѭNO9?T.,XGM,sOֳ֤rz7Q=~ez~=hV1?[rzW.k~qUb09OْC ^;Kfp Q qܮu);}(Fo>>T A5wK,M@J&9µ`[q\l\iwyw-H='EXRʳǖ:nı ^^ }G> jW]oe!Xca濣<CWN|FTaWֿݥNƽ?]~$N/wjI`W#=4Sؘ:Thm㯂խN۸&$0^v.x= Nӭc|*Ʒ8MڱQ940w9<_J&sq 6 ޴Sdy߀ w8h<J< y'y<;s֋`b$V7( ǛZ<+#yÔ})D=k#(v#_McDg5np d@,k3ʛ6<잴yk#'G F=hzG69ho?<_9GZ{.033oGiqOAQXbOsIgܞo;c\Muڐx)|{)@ky;o?=Ks[)~0;/)rƹzGOJQ1 8hNkZiFǝ O8GGhX3i/oAX7k*]N8urOk*]?6hCLiy' :&/AW&X#b Ȟw_2F*3!MQoo*@ʷsX/AZVQq;r݇UPۏ5'?JF38fXyX y^%1xv7u(R#?CY8+aל:կ[*ShSG=?,(oG F.F?+h-x ck؃7~ͥyMeyBFrEv޼zR835eANJa/Gµ4VAcl:'?s- \?]|h5&TqckpFtI?Y3q i?+[*Bs [n?r"/Y7zGq8kXci{?r~M] Ypxyz­i&M(AA٨9cWS-b}5nSQ쇞@ zHt5<)N:0pGHK3ʠne'@M, lҾ\xxCEi{ ̃$S@=;kO4i!f7D5%2+oֿ`F1~fi?g0!ܒ-WOVx ??O&fip?_J$ MsMϑK1H[(5~Z~\2bm2a)R9C&cwlǃ氞Kkkxߟҽ'mOޯ-oB#ȯɣcc@_ڷ 嚥g"ém«:YYtrGs%WYQ֬<7CV..#yӮ@\u&?tIs:>!P灝ߑCkN?m5ÌUy5Kcd\]->[[&9jAv?cN639>ӼGw&۴}nP(rQ0\%.w~+V$˼b_;qp.,hӵMM/`]B.8x_AxoRV%/6&ɨ1ր=6-I.48xdp13_dҲɐQ[kOjmFgct? yDusubOhU?oηvOOl[>AQHq%*.T:WH/+9cOV_c}3Xm/Q6~Ci{y \W˨4_|W_h9 dgKp_kDx=?* ,ll~ Jȸ?O@otnMoV ҸmM]}\c^"OүiZE4TE nTpJ )?ּvk|D9p!8aI-O\ L>MpjꑢՅk!xQZg\ Q/׭tבG"yP+[ Twɏf~%? ЂMUŋxٜ0,bE*jBh%6@C~|AGQkc!YG%[ݞL_>%?3?()G8czڿ֘LdUL]uiiCfBqW+k:ޝ$Qa3`bL6~ўG 9:(8֔OEc7ly F8qX~9)فf~ dyڄƿGƲpGޕ.&Y^u'Ry;f_8GpxMo:8tJ iX,j@t7yQ6)L+i9N-O@3Iy6V4vzͶ r)vI@|HC3ߥfIr]'mXyƀ4FfU"!nbˋֵl,㷇ΔsP-niTϱzzYeY0YaV* FLT2ʰBOsހ3n1Cw,`i~8Pͅ޺Էx[(}@ڧe~\yrt<ҼFcJjH>Z{4Tqݫ<.v;SrQKH]*ؙ&X3ހ:+ۖٵ7V3lC9<-fAtN뇠 _(ֲI)k[ӆ㯋?u64qo'Fg=7͂$n’9=k\z\c U]@ju*PKA. ܯW>8hi-χ$Xȗ#yƾ4uծ&g=:#?}CizVV:%m^1ōy kZE<qv}hK}zu.yd7Tjiݿƭ? 2kϫhEinJ`~hqu[ WYQ*`S_ȯ/->+̋-! ?{f+[^|FI#6n-~n,wq;Vi,qlj34Z͠!ddc̕.^xz &,>>aK`?!,Jxw!bݜwXPA>!6sO?h8͌1ϱ;ީmjsnc۽ O~l+lG wDZ/!N>W_/GþȞ'Wo"4kxBTmd#\7T^I1O k#߄׌qti̫dfIXL: $Hώ Fܖu(݈SRp9$ ~hߴֿ3˶ aa Eznve`auko,j; bB| ,|en`n3V5r˞,Wd$)\[1wvȾ_ۥte#J691\&o|~sU=:MF'bjOg^P;Y߷CW^d2:l~xV^¦E8.spjHg9\!0dTl@S'ZEx?9N(SzyXTWmsnmAVӴDr\ 09%ʹ<tf^?zNb+?yψUSK 5PCa0'<ޥiqo6KJz7^}+a>AN1n̟Qék+37 2p$ I .At[q=RIAC'OϚkwg?ʪ|-oJOʀ;彷籬+'VL7fZ`? ԃQ<~T-59,. Oƹ+[n-w2?2ZκR&]VnO-JKƶ7? "TsOI67z'q$~JΫAνh}K N*Ap䠿'OZ{nM_jc-Isrq [W:V}:4 rݽ[]jm:~WFJ띅^cjXܙ#%Qg|n#?\66W?s[:]tӑ'Xkr S~%NPX\}X7Iu+Fcv.m8@e'٘'4f̋¤$3o'QOk!dMnRq 㱠 wWp>u>ʼnLpI)i\C\IJGySt¸ᗍn'GLy7LHk].VD +dá7سzD^T3Gɑ QRgvg闟Mwd84ym_;4n٬7<А4jt5z+) weyO7(?yY>uwaEgk,J(`MYFQ y@o6;ey|Vr}s޲i<45Ԟyǽd})|9,ky֏8b R Ns֋_8ScyŽ[/Ix7jC.:VǼiyP;sHd~(@hqڗ̬'%ĺ܅明8UWyR!5uTy~dj[4@ w7'ˆIq6+y:P!sl_%?V/(M陏'+[ğP: 7H}kb8*HȾQZ?hד_;{Z@88ZO$붰 +2ᘛz<3@_7!OE+C^c:0}8-v)կ6xQ!4`@5y kˬ_VufVnBh m̐!;ySWQjwp?rw^٫tI<ĔA#λM GMmoĸ,'/jpGu'>.|W!Fog1N+;3d:3@U8tAu J\;oOVZHhO@?]=ۯ&wJ;]&jL̴#8uyP đwQ*<6욃 mߩ5oK;WMIIA;[~Gկ#UVdi*_W㟀g{kxMCmdyR/ ԐwYdj_nM5}r(ys[od\HO0N1 S}1ƹ菜X K\=Je6n`%1R,f@q^Y1uXZz~TKOf1Q_1D[.V;VDRmS\3I G[Xc$kf{1̋[t?{V3nsV ƀm&c!qUNXaz?Ri__?Z9jas8}h-"y^!t! MX\ `W[JY~C]~t^$_]pڽfSmdxV?^?o$9n?=sҺdd1䎵pn^ QkLcߌ3@">|f Unrm?տloCOCҳ˻c@WVy Yⵗ{'_l~j]:f5bXT%yQ-N'Z&mfl9c*zt>Bxt[տ\e֫)&Z2JQ=(ɐߑ@>a4y[Gބ!J}g?=hZ-owjl4bipz?jP qxp:ui7J*O^iǸ#wPFW1b2ǽOq7K5Vsu=+,ڼmsTfl"qN"Be#Afr87 %~J頰; ̥}:Pmk]{ Zm*˅A7Z*§@}MrXv 괭0ש4X`|W6[r1@}d_0ԄS^X<>?g r+c`jgls`d}bɷ<%&0uH2'\x>U5Zء(p3ȶ19ǰkʊ8]:./E аwYK;?\b$GWg"2io?@3JQkt?Üמi滛hkL ]s"bӝu23uu&/DXעn%[87?Iz Eq)I=5LcԿZ>aytx\~dT^6mk$~Px5?@:Ol:82-nШ%6+I G\3\ D"w;ogh0OȬrh?ίxԜBhIǠ? 7.v@ttj=+CPg7f--}]ާduZ9zu>AS4g:Á3&&fD?Za w+tK=v<@whtǴ1֟!G$Y*|ox-ޅ  Ki1S?MuuAEy}ϏW\[﵊:ky[9VΡ)mmIqo]FJĀ~SivKW-{ !.?E{-H&1ku,P~ CN&S*y*ָGRm@\,C[ao+֮ 0 q\&i vR- \=>dLr~=+O6f&(^$xnO5HG<i a9fb5o 1l!y?I-K3y`ØqēWL0HwFRt6sVV`25}44NUW6U? 8`2k?HaGio4JA(6 %, ʸf1<9]t:Ep;#iPCi PA:b9ހ9 ķĹk$iuj`e;p+}Ş6Tt n3/#wYvăEM>hmw,|O)[]ms]0i]{G#o8U>\>x\Wg}ڹl8vz-C"(>ǭvFA7jtKO@ڥKf'Jb (?ߥGsiNt(XS=j9V~*h:m%q&_ D}tV?hI:{b@m$ MiXyWp9?ʀ"ZufO~k9[y %[2m-C//Oƀ,kZ=qSMJ|?=sS'2'C |-^s˿]/'_VdUmHq@G>[3?x*ρ&=i+YSOzŮMqO@ :_+ٛGXӮ%_LھV&](*K.>rpbʄwG+&մ2NG0o3<sa?9DžRNI nY;QA*q)|Ag-ҀUH2ign OSIZ1@sޫy&恖GȪNƐErיړ8(EYx~W|Y3ɪAچ3.ZҜgrzyҋg'Ai@o xnmڵ}ͥVSoZ g.匒Hrs~ jlop**Ǡklp-YsƭUǔ%EOQL'ob:gZº7gY8V{ s^[[c?'G<);ZbՋwR:V#1[{?iE_Ea*~iEaldW'#u1fz.,7pp2 / J#Pl?{.+YMhN{Z p7@ mG0xfz~'m/Ux (2eca[IxWĻvjsnZm/r*oDf9-N; WDz=JùVmҷS\,NzZx+S!(B7,eԡ)Z+XI=U^|/ns=|ɷ!GA€9}R%q <{Lx@q|3~'ܴ4r6[(hN ?EPZ? ~JU_ q_hPe`"FGJ.B1W7I4ETu']㇐I $7~R0(Ov&aX/?@w~\TZO6ѲE^V5O(MI.߅x: ʌ*biW=f'=FSѶc㴃ʷ&~TvbI{zt?v%"(H')ZIvqhTׯ[q! p,J>i?Go'DJ^¥_nτ?@Gd?C^K5mE<1Tw |wsub.Pvn+r kfD>S}p2{sZHMz? ]-E?"3 9w%rvpy;AzMZmWi OӔg+{،kpz4^vG#]&,?:޶OՕFG}/+?wy7 f?(Fw4^(8i~4_ϑ,%z :+ROTl2/Wy=@ uws}:n egq®^|1;wBѷ~g-+[~^x%*S5q1 [,$'.cϧf? +euC`vGNBwԚ|+ B[f[H#椽5*ZE4i6^ /?ֹvS>|y}ZPW€1B1D[jߦ&|8uh;Fb'Zo`t[a zS\oY|Zlc _uß2-LgWoHNץKB:ʩ.p3ִ߇LUv:s1@<8W˸f|g0Ge%q!9I|7թKԃ9Lׯ@(cscw?;5p)vf 'cJ?|p5,?.8=vZף\[^^h2rw Ftf E _t6YUX[͚o vnj;x|9i*ۆvC19?kB@zOz$ +M"ECY ~(K\+i}9ϚPG'ÏRH#3)⌖YNG(SP F|s? g>/GקC,!# ΛO(a9@l45 ,5>魜tF]C-/ݎU>[o:Ra/pf'kIFv^k7N%qxzÏS?o1|cOB;}f~X zPNx9F=ִN6C5IzQs6;bLhI*P۔8o.^ 9\mU?#mD} ۇxE޸(ƚ*>YZƗMdÚ;_._hg)CM>r=P`Z>:CP[u?J~C)F:̸GI_L%r-d~&Ky?xz? > ZANq}2|d |*] ,ܩᇯjNc`v~*cT1@-iX6+4?{s|ԻPRW0[g8OǚDkKy]C{_?Zͻ?^kU2Υ=?}7 mj{_>Vķb_z 1&k 7_B^"6;j9>xX|mG 4KuX."*?v#l?gMS3uh*ٱK\IG\׼<밯$ Q^$R`C+o'Odj4O8uBYzz~ >,#}s@ juؒ>T&ˬZ/a7D|Du;00k]=$$ת GNGJiҪO9px Z\y0)L& }*EW/3g5C4 ;N\A.Fk?4ydGֳ)<ʫoU\E |]ksTsF(be0cO2יN=y{941ܶdz =b-ߊ4]rhڪ)àfH xzyWo$7glY~P[hbQ2jXqa=]Mθj^kkul!Q(2ETQ9b 5! j^J>ɯiI}{X޻x`1 w):)i&v;dP$|6c9j>QSoXeM^[t˶;lhptcTifb=8z%JYnYN3ۀXl[/snzJ=xXՄd U֖]ov<&Љ [^q^=ֽ3vL_x2wl<;l)U=xp6x'p4gK|xۂ䟧6mQU";z+o#F*&]*K\y2xVwǂ;qW@D=A{ GcZ[eQڹ̽|(L -xS)*wp c_WlYok̿y<>QjH{uSi|-LWZZi-:Wye>q*_FrQSē`ij͏GrXJpޙSӥjMF5{tXMmm ^zsW[gڅHGSZ5I',:%3[>ӎ=x"#_ j5Ck.ǐQu+xKT**t9^4w-n"]fD w+S@ c@n'RHR_RkԮB7T2^KZ{_ O< c~>]"|Z-+@y! @J{u+^ \uWŨ_8CTq(shǁu9$KmBg+c ZH廊u)9FGx[[ϸ= l(5)hBp5&1{W`.` jĞۍߑ^4I-H>`?F`C>Kk[P1*fu ;s^os/Cjo听=4[gق ՙq;\Ezo.(0?´.Y`1p @x>kpeS,<>i/`*WO̽ iq>~EhZ!$Q*@7 ]^(-Kݸ.ac+ՠH8 > 8|1 Ɏcmwu. ]ŗ ]b «;2/ \ӕ^k{̷f`e4qNѸ>BxU+0x*e񎦒0=FGP\x&Q/_n+53v0`+݉:Mjy1/_]e ~Oݸ ?jیuj_jH`(Ϣy|oqNϟz4WpzeGq[fh8@<|um񞜊֏yn;q]ψ5 ;vӑ^'{ySP}R$ioM\>e?Ʀ7Юcq>Z{r$Uq'P²n1azЋ7͐?ƀ5kT_i ֲK)uk"K8W<v&o hx4iwj\nAm?gY7 #?`\Oe{(;ﰞbW_^!%sqzmW$s"n|1n;쎘)<&8%~mc8M͓~v;"bW3\MZqKq9~o,~aj3h"I-:TrYhkI(|qhx6T}4Khw {w}/c׎}Eei\aӃWgq9jχyVP]>CO?i9%^&?Ʒ,\WsWc5DZ-S}=CbiWS2hmX"~[]#AyzyiI|'^1e-w&T{C/wu0bXBFzM yQ?ƀ;Ayli'2VT")' kjxͤLSKokۤ~4e"o0-4k(h$ƥm,FZxQ&rz.?hdCGogf 1g=ֺ ݭbA`g jwςNC@v:O^z:*X1g?7qڷ7Yo \[s'{DNT Ҵ"9#XK&28PC[o<pw.)sOթ|%e mr>O jZ| {t/ ^]T˂>׽r?QFWfP5Zo i̹w>ԥ[6Q ?#h%؟ےiS4]Ak~{#qԚA `Ch$;y`gւxBD21NXcGM~A@ӭ5!4H7p6)"'_ma~o]߇  UsӠ׽qk ح N̢Tֻ)-q-jpU?ƀ9֟ ڼ dd^öWlN{?#jkIF1P͢j2)ᾔ Z3u;hY:Vܜ ǃ'Hُ?3{@7 >jƟ.$xrƺ[ ;E6%z?6wSD)6\g3%5K^I |1e6݉= I[Cc-̡*sZ oG_j%vrw72_\ˢʛUN3rok;_(5zF!-dۏנxl] {z%er}h= XeS$G59Vi7tdm9i֐kH0~L<7w?ƣڼ@sp=Ʀ n#t!>} NtU?/@! py/˟ҮEdyQIb0+D1~Yeǧ'kCb ]Dɱ>a>'9ߙz{5-,uړE{q19˫,m8PM8ǶsjX<=L?zۡfjkmS@qs5V] Ʒ%ӮF>F{ueϡDSz/תBeߜZ[X<;$vPk A(ʀC%mN0h(\'L~"׏,QHG4 є^5 C,\ׯ@|>=+篈,2c@-5@+ly5Z*fuۥqp]׊iZ<WQHGB(ɔ\a@bϙ 'j08ids^cd0$ip?6=)ST>mpFE`]pE\|ufFQ(^c=>2kԮ&'|m}uf!? =n ǡq^!E(^DZ=9ZGtӓZ.uW1ea=v;; Ƀܟʀ:cүןqh" {_VN +s@~"cTŗQWZfLEct xr޹Z`_>''"D|Ax7\#6m72}&dCm[Zq$?U_Mt. />caG *kX-4ao?fcM_][*z^4 Ẕpr6ܔ o`}*FV#Z!ӄ~a޶bXH)#ҁ\I G$>Ro~S +\R8?QOyGk@{_jS2ONV{Si'`OmG%kLZ;o_@1xYn*[xVD*qU`Zb$ ^ڲ_߳,Ҵ>ï,7syXj@x^nNҀ-bpS⧶o-1f0x2ZȎ)zU񵌶yc@Y\y3|{OzDKnPV->skW^UMX(kJ67'UkKOڳ= 5j-]@8gF)Lk77NJ|J\?d 1ºoG }GO3ooVZֺ80P{kG$Hžvj^#{13Lp:܍j;ֶX=sk=[fݟ7@4o% R:plSj]c~{Vn"_IpN=Jڶ7g*ݸSRKuyggx mg$֘Lk.Izz}i,/&*ծO-1JFtU 6!vaI'ʵڛkM]cS b`.nc~q@ Mq"j}*%bB$һ1kY,7]b8 WL1-Oc?:rw?»i%mþ%zy3J1\+M_Oqn*fԠw8|R'&U~A@!;o+^x>/23睪1nh,b 9fx?8QxPugVnxPLӅPdH]8*Cf?+c?8 1-?£~V҈`ui|Ci~qQR}[,m I+:ܐԧì\[U {W!,x8}+ëznP&H#KNQ _0{SλEIm–S[H ̖BK^Hfȟ֛.Pe/ vz]y<,{qQ[j,W7?,I<{:- ;J}RRHUm6;U{IWO^sJ~ lKtp>D皂R͔~[_1oHR2Fq޳mHL'{\ dWCEAcy{^\jM 3޵3]GMkz<{DS;ձ? ]޻V,&\Ik5I)L_-u=x1GSA w^N+ЌW1*3n*myhf9b όlDis8+ U^DPDSo\#OSk._ivRfX^/M}ߜU7[d:@sEWΚmToǛDq]A?k6P|W2)'w yl29P^w%d'u ]J]#njs{n{(Oz*xEWm]ֺaf%_L?]?)]Ts<97ޙm{~O}f]a6,buP;!hsMAl &4\zD*AK#z@x7v9K̩+] ? 3{GEy`Qȵe?Z3PKu:B{䅟7YQZˊqJdk"ks%մJ{<0T{0p;mq"RYYxV`z_]|wR]=C@c-nsVǦe^5]\cr} >p>Z.tn59aih"S.~_VS%®~o(E4vVɢ{\Z]~^NJXOa[PŤY7$h+|ʽaQ k =[oҀ93Gy_Eס5MUCst!~ր8; `UW|@u͛+WjqμuVkG+(톣5ޓMxtH{NNR=ӭn3[db)3mt͑VL4${U"zGZSc#4"ǛK\׵ hJi.3ڵ7W{5!~aj O`׵׶\_CSkf?TS"{I}<Ԭy]YFӅM%0M:K_6:cfo&M4 K)RMDnM|Tp]d\HRE+x;gc!5g H譅ռKmk^ťy?cTr˰7%³.OVy[|K˨m]}>Zjk'3q]iϿCr$Othg.^""ю>5Ljŕg0|\>1 w:~.fEi;@{9v>ǃ]9$[6ϊKyxW<6X3ը~8_GD1]S $#킼膾%f4MQմ?˱jd&~UxNlÞ/WьF,p6)F;,0/7l~GK_d v_V +q|ddww_rEE1bW ˱uƿE#6-|?h e?aOoWGBnwү~%6۟T4m6)-h]V DwP]Ј_o(!:pk?V{ d?ҿ>uHA9'!2==c)Ehp:Jlzߋ[ W_g Fl71huX~Һ[ o@{9v?A,|O)r,{ 8!A?cѺ􋵭 (g.rŷ;#`R_Ѱ^8a6b=Ӛ);LgG?/(0UkW+`O_MJĵG?!k<*ϊFOpBtֿ*[,:k"Ymo8@{9v?Uo-#;aZd$ba _~>#]Tkr%od<˱$0b:pOD޿,b|C]?M)ekVy?*r~.⛵k}*(APF\n=G_bx~Tg<`t?`'o˅ST:D28J' trX֙ݏj='1Nxk:]o7?U~X'N+U\( t~߷6cFH4pB/. aH?@{9v?QnqZu$Zju{?ۏXmˢ+F#E=>?LUFF0I@QQ_~H=>?H?nhߢ#@4csht\v:dw&I =/u}hq~ZԄx?~k7rmmQֳ>!z镯vѶhԧh#P ]#yl~[> <7Ft?P4u6hg.̭ZmӅƹ ZN|?iujD&M;k]~X[_H\猏k nWbж}94tjChg. xwZ-A@TW d7/FۣUomO@{9v?Md,$уuiknMU]M[T '?g.bd}Wջ}\/=ƿ6#OpjLk4X=maG]gtzg BCO ~xc_J1i:@{9v>sAV >#^mmK^ݍLاPC4 ^c˱i3+tzWhxרi,N*=3l$ -rEqq]xqzqZ9Pn"(vvhV ^8iScz6@Ai@&@RvѴ`AvK` (69\QK׵K?ɤ+LѲێc@WhہMo!XzTxoja{Sv-Xkt*m#V f}JH5>⍸q\oI5> ]1=)6Ucf6L}mlq2loL@Jnpi@[o֍8aqov5!9{VfjsR1$05֧3j\ ƍZ?eo+U035j#zʐڟj]W F?sQC!?nj!?>35> F?sQ@@Zd?GP~sVQCTCsReC!?eC!?nj!?>s€35>ꡁաCT}U F?sQC!??sQG>Zd?GR?sQC!?eC!?`gj75h}Ud?H F?sQ?sQC)?*HJ>35> sVQCTաCT}U?sQC!?@gj75h}Ud?L F)?nj!?>37Z75h}Ue?@Ze=?sRjCT}Ugj75h}Ud?@Ze?GOP~ZZd?GOP~-Zd?GZ35j!?>35>gj2ՠmQCTաCT}Ugj75h}Ue?@j75h}Uejnj)?>~sVI?j>35> F?sQC)J`gj]Ze?G+CT F @qRE[R- !98 FҴ49M\՝-: Wלi0J=4`x^yM"#4\P+WN@ mv+J5UHkF5)`&F *(ONԻqҋvARVE6I\(*z @ҕn;i6mJldN6He}FެmnF @H&5co{l 6qp&hOg$ړ`8i?./z]V dp V _ʐ(Sm&ԇoqSmJ1@v*}h@Cn  BoASm)P (oPyKtvhZ`BWjuwQk!S[=b;Zsyޫer)x.fyU''ﺮWZY$IZX.^{ڹkFn'O{VtYSڢ!c[K=FtEzhL:!+^Qm>P<(RezC?ݢy_Q(WaaJyW[zQz4ؘv YޔezݣJyW[v)j3ihX>ga(W}(>~G?vǕeS?ݥ?ݧaUqҏ^Ht3[P<(Q}+?MC?ݤWqҗ,Waa`gC@y_SQsҽOv ӰW}(>gCf3<(WaK+0_Gҗ,WaKO*oJ_죞aG/P<)(>gaC@yWY9^{/G?GҽS Z?i+#GҽS vJy_QqI}+Kr_gҏU?(gʿҗ,WaaGQS< Zvʿҗ)+AI <(Qޕgbce(z'4Ұ+oJ_^GGҏ^OaӰXtIqҽS ҝ\+> (Wa~a}ҋMGQTf`<(Rezm/7<(QޕCfv/SzWam1K}+g#ҏ^})٣Q/QS?ݥ:gJ>eJA@U})z:!+:Y>g}Ӱ+>mO3R(ԿGҽS vgaO^Km5=?ҽWڏ2:m^O @V@yjdv}+})zcɦsҴ`ߦZނXt1uvF8]k"*1^ٟ Ӵ`bJb:-M+bM+((4豎+AX+0&9A ~UsC* x.X ;t6osI u!1zTpy1SmZ]Qam⍘uӂQ6{qS㎘h]ƈ6.Sl+؃oS#zA;ySi=\6 N֐z@Cv+Mq(7=3` QN(< O4#85&14bbaH9Hf(ڤ&9;K>'16Gv .GPsVB]x )dvrGNFU>\q\cz3ί8{DVBGk3Ґ>ԙ*'`hl:`@x9'#?aq`h|c׵v㝴.S?Gk?٦` 'hxvv@x#_G]?H1Aٯk:?v@@O_  {_9J4i '=`5?4 9O|uA5?HxwZ?/G]׵acavLO|c붽h9?v AV?G#}ЃOGm=4?GiﶽvZO.~!?Gm=V?Gr)^4i١ /Gmxvh9G8Fc}~)p>:kIX9O?ݯk`㝴)5A?ݥg\`qҏGk?;L|h^t,KH,}iNx#`^m/ vÐ?Gm?OUr(|>;sh3i)|>:k`c)^tis.?贿^4Oh)4?{_`cir'/#cm{Y٣6v 3?3h|k?٥UZ.#.lx3ҳgiX{WKeϖ9X򩴁bѱڽYW3@X٨[DyVm,g0`v杄yG ?mz҇\Ptai=aI;Qp<i?;W(zRdAEAתeQ:b+tu+^4Re{Sgbh&y^tvR Y-؃+j?_؃=)N1We)?yg'?v@ݯTP?i8+^=( <H41mzPS(/J3תd'PD6z_=(:RSl*8h_C8/XAc|aשeJ_Fy_)cJ1GPAUOjpMGJiQqU:ҍ u^졎؟azXqE1ԭ؀ zҗ(qF1JWLsV A\,WڗoZiJS'+4ࣥK47 chS⍄i`dHjri)_nr*&{hێ- 0F Bq֢֓iXh=jj%6jYҘIEFrfZة9uFsMkoNhAc6$oxpk6qHִ\Mz`1]Wٳɥ74 #M:x]gٸ.y9_AWYQSEhM Ԋ{RZc!S+(i>(v9_>͞ƐڏJB9CJ?})>;r`}}+6[(bgJͰ_֚}AQzWYPGyEc`+(!@rЊ?Eue9OGxRr`^=}+(4G'Q:bk"Z9OJ}q(vzb#Һ Ohe3_Jq]Y (~Bh!ǥuv}wZhrhq]YX9CLRr`1Jlu_e)~ˑqz(WYR'ٻH,rzҏ5}R}zPg)`_J;@r_+69揳t8(*'8<HsA\qҔi;P-G5HΞ Rc]X⏳g$5=(IQ.$WHVG&txZ(7G')EK\gac6 g+6x x+6v+Q{WW^g09?;Q֚mGAGxZOP+(ac=GA]`d=$9_1IخZgewXF:Q*  _y"Kl,rҁbWW^촘S ⃧ Ű0 cZiKq4W߭Nj}&@8f*Q@h*犓kzΤ;фJ.:`O R8=z n .i&`cM8)h\4m=n@8=iqڀX,@z6{v\!.sS?: y(Hmg#y hmHW<qNqhmhh?W_۽.xF(G'Aִ6F6(y#Vސ<$)vq@3_+^ IJ(E0no8W) ^ԾA*Nԅ@)\e?'Qz]SdiM*R) G&ާ476Ҥ";S9m =.G)qOsG fI)@-sҗc( +j:Q!r)6RvfȶK'ڤHEzR&3' h&AI8!N(اTai( hN^69Iq&`T>m1RsGU=*AQ@ȶ4l'h =҂=QaI) hd{o6 sI/^`cހ#3ғhJ@ :)5 @(ؠI"Hw5/.;(-J3`zA(Q*Oo֍m 1ȩp4)FjN)zi_>/cSqL(;/|P"=`8q4r)PGN*Ng0"+)B(8?Τ&ds@ Z.+(e2ZN:ƕȤh #&jNNh3gOivN"21ѷڟڐB¹)GytqޓҐ 8!`S0ۊsM{R ZC8 ޓhOS8"Bt RTbVsKU;ؾur*ri<|&3@[Z@g~n"zP[Uz]0-nItÛ$Nj@vUԻ c,֍b)7.sҪ1(,ɪ㚩P\+jӥ&2s֔jz -!֫nAb"~8Ftq#& wZc&YsIg7:zU_3zP$&F㚩K@/W̠9ZZ."qBC-.:]o [7&}(B-Uw/hC,E.ƪ2g@2ԁV(/ހ-yWߞ)4!vnj?ye~OJ$C= -R8=ߎM1s7x-==j SL {n-Z7HdȠe0oށ\\fJz7@[( UwMBl7TJd(kvGϭUzx?I3H$<33.Gg;tH1K֨Ѽ4(Q?s/TL2zbT|{0 G̣&^9Ie.(v 3ӼÌR8⨙8e3<{U39EKn9.ɥި34 <ʡs) 0q]i( Yg4@M1gj @G@m`Tojtw/1̪Nz q֘hyhc2ғN)$WjC( _ZgaGE_G( PEfy~(yo&rn94vKb/80QNM;CDޓȪg4`V2zt5({A*zRypi$̪Nye'5`g֗S<+8GzRd(=*% `R$h=*ځ'9m<ӥg1N¹qPqҏ3P;3P%5`A@4<(2{VGB <{%ph`ҔHG&Yn(2,#DsIU&iLPZA Pi`hyqAVAP$7cK{;H5%hCIYni|Ԙ\wG1gK_)|^IE`oa,4`Pߊh J<ӊRpsNùsG;qHO{i nE'ށ\Jdws@6^8N1Yg^qE_ ys޳֏0!bȤ2C)< 3gzQ CpK&Ȫ>g{yTP$.jn~)2qU7JWgjP޼R,V Lz>+h9V4o [ϥ֪@zc-ojѿI1|u2ve٣W ۥ&h m4-oyrj48❄ZO0jZ]ԒoZ@Q aT8҇\ů0O09wPie}Vzo""pFx<֗~xpE'Un o[x=iPhsKު 4űd3A|qUr҇9 V-'P2sMUw.zXnh.{S z5Wp<ҰP\UKZ1Fp*x~3CbO35Sq,Ѽo㯵Eu8TNE)J%:UCJ_҅Z“}VI&ܵco.1FoW\q\c BѻW[875X=iXw-U\҆/1wqFddR\kyiCMZck~)< v~9+ xj_PX [QuUҗx(sIgךP鍖wѿ#_O2-yVr|PoJXọxު{Z3FJ{-ozUm4nI Ei ]5^gj<ʬ-0 4o{77g7mƛJ_35P5.i,Y (UM(ݎK~gnԻiQU]h[3FUR ( QWvyl٣jEZF*|Ѻh/ڪ]Sojt?9kޫoA%yW})|M-neUh:RqQ5Wxh1-oo qJXbwJdow9C ~z`Rnza[3O2H BLt< _4=))7!҉*7w[/U?348b RiCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs  IDAT8!KCQ "âE4.kV1L~6aM fA5a>, {r9ߒ 8 0Ssa4zhyFX+h W.@=n`!.S | cy<',Y0U\ 0gcg6:Qp ]a3twpJ;<,IENDB`lektor-3.1.3/gui/static/images/TrayTemplate@2x.png000066400000000000000000000031521346506225100220360ustar00rootroot00000000000000PNG  IHDR()GkiTXtXML:com.adobe.xmp iCCPsRGB IEC61966-2.1(u+DQ?f(bfD6̤A4Fg~^=I~dCf'R +)[YP6sɜ۽ss=ɂV4k{lh؛?QVJi>255IUFͷ߿ָ15itY]aO- e~Q+CxD#/FQ_W,j?Q/qgg.8Qxg!z1D ݲJ|cEb5u1X"G =#sV􌴂x?[[3,g~ڲ#:joW4!4oeEK6=)#U,B,܀k\}!װ߼ 8}gQZ pHYs  IDATX׽kAϝXH*AQAD6XYYXERFBD|CX,˞3Xm~ϗgwfwhiiiiN(Na .kW1w&0Blp|Ը6i\9.Sn r~~,LeP)`B .r3 <1g:89U4(QN FUśpTS0_ŝH8*.b. y5O6Oܑ&JNfc =bk2%{v̺av~)֐[p1xXT?388彮0R18 퐶6+K+)qf]cVod3; 6/8rs-&N IENDB`lektor-3.1.3/gui/static/index.html000066400000000000000000000004321346506225100170710ustar00rootroot00000000000000 Lektor

lektor-3.1.3/gui/static/js/000077500000000000000000000000001346506225100155115ustar00rootroot00000000000000lektor-3.1.3/gui/static/js/app.jsx000066400000000000000000000272741346506225100170330ustar00rootroot00000000000000'use strict' import remote from 'remote' import React from 'react' import ReactDOM from 'react-dom' import ipc from 'ipc' import shell from 'shell' import Component from './components/Component' import { LektorInterop, installShellCommands } from './lektorInterop' import i18n from './i18n' import { isDevMode, attachDevMenu } from './utils' const app = remote.require('app') const dialog = remote.require('dialog') const Menu = remote.require('menu') i18n.setLanguageFromLocale(app.getLocale()) class App extends Component { constructor(props) { super(props); this.state = { lektorState: 'initializing', projectPath: null, projectState: 'closed', projectData: null, projectServer: null, projectServerStatus: [], buttonTitle: null }; this.onRequestOpenFiles = this.onRequestOpenFiles.bind(this) this.onBeforeUnload = this.onBeforeUnload.bind(this) this.lektorInterop = new LektorInterop() } openProject(path, filesToOpen) { this.closeProject(); this.setState({ projectPath: path, projectState: 'loading', projectData: null, projectServerStatus: [] }, () => { this.lektorInterop.analyzeProject(path).then((project) => { if (project === null) { this.setState({ projectState: 'failed' }); } else { this.setState({ projectState: 'loaded', projectData: project, }, this.openFilesAsync.bind(this, filesToOpen)) this.spawnServerForProject(project.project_path) } }, (failure) => { this.setState({ projectState: 'failed' }); dialog.showErrorBox(i18n.trans('FAILED_TO_LAUNCH_LEKTOR'), failure.toString()); }); }); } browseForProject() { dialog.showOpenDialog(null, { title: 'Open Lektor Project', filters: [ { name: 'Lektor Projects', extensions: ['lektorproject'] } ], properties: ['openFile'] }, (files) => { if (files) { this.openProject(files[0]); } }); } closeProject() { if (this.state.projectServer) { this.state.projectServer.shutdown() } this.setState({ projectPath: null, projectState: 'closed', projectData: null, projectServerStatus: [], filesToOpen: [] }); } openFilesAsync(filesToOpen) { if ((filesToOpen || []).length == 0) { return; } let projectPath = this.state.projectData ? this.state.projectData.project_path : null const couldNotOpen = (message) => { dialog.showErrorBox(i18n.trans('FAILED_TO_OPEN_CONTENT_FILE'), message.toString()) } this.lektorInterop.discoverProjectForFiles(filesToOpen) .then((result) => { if (result.success) { if (projectPath !== null && result.project.project_path == projectPath) { let server = this.state.projectServer; if (server) { result.paths.forEach((path) => { shell.openExternal(server.getAdminEditUrl(path)); }); } } else if (projectPath === null) { this.openProject(result.project.project_path, filesToOpen); } else { let btn = dialog.showMessageBox(null, { type: 'question', buttons: [i18n.trans('YES'), i18n.trans('NO')], cancelId: 1, message: i18n.trans('OPEN_OTHER_PROJECT'), detail: i18n.trans('OPEN_OTHER_PROJECT_QUESTION').replace( /%s/g, result.project.name) }); if (btn == 0) { this.openProject(result.project.project_path, filesToOpen); } } } else { couldNotOpen(result.error); } }, (failure) => { couldNotOpen(failure); }); } browseWebsite() { let server = this.state.projectServer; if (server) { shell.openExternal(server.getUrl()); } } viewAdminPanel() { let server = this.state.projectServer; if (server) { shell.openExternal(server.getAdminUrl()); } } spawnServerForProject(projectPath) { if (this.state.projectServer !== null) { this.state.projectServer.shutdown(); } this.state.projectServer = this.lektorInterop.spawnServer(projectPath, { statusLineCallback: (statusLine) => { this.setState({ projectServerStatus: Array.prototype.concat.call( this.state.projectServerStatus, statusLine) }); } }); } uiIsLocked() { return this.state.projectState === 'loading'; } componentDidMount() { super.componentDidMount(); ipc.on('requestOpenFiles', this.onRequestOpenFiles); window.addEventListener('beforeunload', this.onBeforeUnload); let menu = this.buildMenu(); Menu.setApplicationMenu(menu); this.resizeWindow(); this.lektorInterop.checkLektor() .then((version) => { this.setState({ lektorState: 'initialized' }); }, (failure) => { this.setState({ lektorState: 'failed' }); dialog.showErrorBox(i18n.trans('FAILED_TO_LAUNCH_LEKTOR'), failure.toString()); app.quit(); }); } componentWillUnmount() { window.removeEventListener('beforeunload', this.onBeforeUnload); ipc.removeListener('requestOpenFiles', this.onRequestOpenFiles); super.componentWillUnmount(); } componentDidUpdate() { super.componentDidUpdate(); if (this.refs.log) { this.refs.log.scrollTop = this.refs.log.scrollHeight; } this.resizeWindow(); } buildMenu() { let submenu = [{ label: i18n.trans('INSTALL_SHELL_COMMAND'), click: () => { let btn = dialog.showMessageBox(null, { type: 'question', buttons: [i18n.trans('YES'), i18n.trans('NO')], cancelId: 1, message: i18n.trans('INSTALL_SHELL_COMMAND'), detail: i18n.trans('INSTALL_SHELL_COMMAND_QUESTION') }); if (btn == 0) { if (!installShellCommands()) { dialog.showErrorBox(i18n.trans('ERROR'), i18n.trans('FAILED_TO_INSTALL_SHELL_COMMANDS')); } else { dialog.showMessageBox(null, { type: 'info', buttons: [i18n.trans('OK')], message: i18n.trans('OPERATION_SUCCESS'), detail: i18n.trans('INSTALL_SHELL_COMMAND_SUCCESS'), }); } } } }]; if (isDevMode()) { attachDevMenu(submenu); } submenu.push({ type: 'separator' }), submenu.push({ label: i18n.trans('QUIT_LEKTOR'), accelerator: 'Command+Q', click: () => { app.quit(); } }); return Menu.buildFromTemplate([ { label: process.platform == 'darwin' ? app.getName() : i18n.trans('FILE'), submenu: submenu, }, { label: i18n.trans('EDIT'), submenu: [ { label: i18n.trans('UNDO'), accelerator: 'CmdOrCtrl+Z', role: 'undo' }, { label: i18n.trans('REDO'), accelerator: 'Shift+CmdOrCtrl+Z', role: 'redo' }, { type: 'separator' }, { label: i18n.trans('CUT'), accelerator: 'CmdOrCtrl+X', role: 'cut' }, { label: i18n.trans('COPY'), accelerator: 'CmdOrCtrl+C', role: 'copy' }, { label: i18n.trans('PASTE'), accelerator: 'CmdOrCtrl+V', role: 'paste' }, { label: i18n.trans('SELECT_ALL'), accelerator: 'CmdOrCtrl+A', role: 'selectall' }, ] }, { label: i18n.trans('HELP'), role: 'help', submenu: [ { label: i18n.trans('VISIT_WEBSITE'), click: () => { shell.openExternal('https://www.getlektor.com/'); } } ] }, ]); } resizeWindow() { let win = remote.getCurrentWindow(); let [width, height] = win.getContentSize(); let app = this.refs.app; win.setContentSize(width, app.scrollHeight); } onRequestOpenFiles(pathsToOpen) { let projectToOpen = null; const filesToOpen = []; pathsToOpen.forEach((path) => { if (path.match(/\.lektorproject$/)) { projectToOpen = path; } else { filesToOpen.push(path); } }); if (projectToOpen !== null) { this.openProject(pathsToOpen[0], filesToOpen); } else { this.openFilesAsync(filesToOpen); } } onBeforeUnload(event) { let server = this.state.projectServer; if (server !== null) { server.shutdown(); } } showButtonTitle(title) { this.setState({ buttonTitle: title }); } renderNav() { let rv = []; const uiLock = this.uiIsLocked(); let addButton = (state, icon, title, callback) => { let disabled = uiLock; if (state !== null && this.state.projectState === state) { disabled = true; } rv.push( ); }; addButton(null, 'folder-open-o', i18n.trans('OPEN_PROJECT'), this.browseForProject.bind(this)); addButton('closed', 'times', i18n.trans('CLOSE_PROJECT'), this.closeProject.bind(this)); addButton('closed', 'eye', i18n.trans('BROWSE_WEBSITE'), this.browseWebsite.bind(this)); addButton('closed', 'pencil', i18n.trans('VIEW_ADMIN_PANEL'), this.viewAdminPanel.bind(this)); addButton(null, 'power-off', i18n.trans('QUIT'), () => { app.quit(); }); return rv; } renderProjectStatus() { if (this.state.projectState === 'closed') { return null; } else if (this.state.projectState === 'failed') { return

{i18n.trans('FAILED_TO_LOAD_PROJECT')}

; } else if (this.state.projectState === 'loading') { return

{i18n.trans('LOADING_PROJECT')}

; } return (
{i18n.trans('PROJECT')}
{this.state.projectData.name}
    { this.state.projectServerStatus.map((item, idx) => { return
  • {item}
  • ; }) }
); } renderTitle() { if (process.platform != 'win32') { return (

Lektor

); } return null; } renderLektorInit() { let spinner = null; if (this.state.lektorState === 'initializing') { spinner =

; } return (

{i18n.trans('INITIALIZING_LEKTOR')}

{spinner}
); } render() { if (this.state.lektorState !== 'initialized') { return this.renderLektorInit(); } return (
{this.renderTitle()}
{this.renderNav()}

{this.state.buttonTitle}

{this.renderProjectStatus()}
); } } ReactDOM.render(, document.getElementById('root')); lektor-3.1.3/gui/static/js/components/000077500000000000000000000000001346506225100176765ustar00rootroot00000000000000lektor-3.1.3/gui/static/js/components/Component.jsx000066400000000000000000000003371346506225100223710ustar00rootroot00000000000000// We actually re-export the same component as we use in the main admin here. import BaseComponent from '../../../../lektor/admin/static/js/components/BaseComponent' let Component = BaseComponent export default Component lektor-3.1.3/gui/static/js/host.jsx000066400000000000000000000042201346506225100172120ustar00rootroot00000000000000'use strict' import app from 'app' import Tray from 'tray' import BrowserWindow from 'browser-window' import i18n from './i18n' const BASE_PATH = __dirname.match(/^(.*?)[\/\\][^\/\\]+$/)[1] const initWindow = () => { let loadedOnce = false; let win = new BrowserWindow({ width: 400, height: 200, show: false, 'title-bar-style': 'hidden-inset', resizable: false, fullscreen: false, 'standard-window': false }); // open delayed to hide the ugly flash win.webContents.on('did-finish-load', () => { setTimeout(() => { if (!loadedOnce) { win.show(); loadedOnce = true; } }, 50); }); win.loadUrl('file://' + BASE_PATH + '/index.html'); win.on('closed', () => { // XXX: do something here }); win.setVisibleOnAllWorkspaces(true); return win; } const initAppIcon=(win) =>{ let appIcon = new Tray(BASE_PATH + '/images/TrayTemplate.png'); appIcon.on('clicked', (e, bounds) => { if (win.isVisible()) { win.hide(); } else { win.show(); } }); appIcon.setToolTip('Lektor'); } const main = () => { let filesToOpen = []; let win = null; let appIcon = null; let windowIsListening = false; let requestOpenFiles = (paths) => { if (win) { win.send('requestOpenFiles', paths); } } app.on('open-file', (event, pathToOpen) => { event.preventDefault(); if (windowIsListening) { requestOpenFiles([pathToOpen]); } else { filesToOpen.push(pathToOpen); } }); app.on('window-all-closed', () => { // delay this call so that we do not start unloading until the window // actually went away to hide a white flash. setTimeout(() => { app.quit(); }, 0); }); app.on('ready', () => { // we can only set it once the app is loaded as at least on osx the // locale is not initialized at an earlier point. i18n.setLanguageFromLocale(app.getLocale()); win = initWindow(); appIcon = initAppIcon(win); win.webContents.on('did-finish-load', () => { windowIsListening = true; if (filesToOpen.length > 0) { requestOpenFiles(filesToOpen); } }); }); } main(); lektor-3.1.3/gui/static/js/i18n.jsx000066400000000000000000000001761346506225100170220ustar00rootroot00000000000000// reuse the same i18n system as in the admin ui import i18n from '../../../lektor/admin/static/js/i18n' export default i18n lektor-3.1.3/gui/static/js/lektorInterop.jsx000066400000000000000000000123251346506225100211030ustar00rootroot00000000000000import remote from 'remote' import path from 'path' import fs from 'fs' import childProcess from 'child_process' import i18n from './i18n' const app = remote.require('app') const dialog = remote.require('dialog') const getResourceFolder = () => { // XXX: windows support return path.dirname(app.getAppPath()); } const getBundleBase = () => { return path.dirname(getResourceFolder()) } const findBundledLektorExecutable = () => { let res = getResourceFolder() try { if (process.platform === 'darwin') { let macExe = path.join(res, 'lektor') fs.accessSync(macExe, fs.X_OK) let stats = fs.lstatSync(macExe) if (stats.isFile()) { return macExe } } } catch (e) { } return null } const findGlobalLektorExecutable = () => { let rv if (process.platform === 'win32') { rv = childProcess.spawnSync('where.exe', ['lektor']) } else { rv = childProcess.spawnSync('which', ['lektor']) } if (rv.status === 0) { return (rv.output[1] + '').split('\n')[0].trim() } return null } export const findLektorExecutable = () => { return findBundledLektorExecutable() || findGlobalLektorExecutable() } export const findLektorProxyExecutable = () => { if (process.platform == 'darwin') { return path.join(getBundleBase(), 'Resources', 'local', 'bin', 'lektor-proxy') } else { return findLektorExecutable() } } export const installShellCommands = () => { let runas = require('runas') let exe = findLektorProxyExecutable() let rv = runas(exe, ['--install-shell-command'], { admin: true, catchOutput: true }) return rv.exitCode == 0 } class LektorServer { constructor (child, options) { this._child = child this.state = 'starting' this.options = options this._statusLineCallback = options.statusLineCallback child.stdout.on('data', (data) => { const lines = (data + '').split(/\r?\n/) lines.forEach((line) => { this._statusLineCallback(line.trimRight()) }) }) child.on('close', (code) => { this._statusLineCallback('Server shut down with code ' + code) }) } getUrl () { return 'http://localhost:' + this.options.port + '/' } getAdminUrl () { return this.getUrl() + 'admin/' } getAdminEditUrl (path) { let p = ('root' + (path || '/').replace(/\//g, ':')).match(/^(.*?):?$/)[1] return this.getAdminUrl() + p + '/edit' } shutdown () { this._child.kill('SIGHUP') } } const spawnLektor = (exe, args) => { let env = {} Object.keys(process.env).forEach((key) => { env[key] = process.env[key] }) env.LEKTOR_RUN_FROM_UI = '1' env.LEKTOR_UI_LANG = i18n.currentLanguage return childProcess.spawn(exe, args, {env: env}) } export class LektorInterop { constructor () { this._lektorExecutable = null } getLektorExecutable () { if (this._lektorExecutable !== null) { return this._lektorExecutable } return this._lektorExecutable = findLektorExecutable() } /* Loads lektor once to pre-initialize it (this will ensure that it unpacks the pex) and it also gives us back the version number. */ checkLektor () { let exe = this.getLektorExecutable() return new Promise((resolve, reject) => { if (!exe) { return reject(new Error('Cannot locate Lektor executable')) } let child = spawnLektor(exe, ['--version']) let buf = '' child.stdout.on('data', (data) => { buf += data }) child.on('close', () => { let match = buf.match(/\s+version\s+(.*?)\s*$/i) if (match) { resolve(match[1]) } else { reject(new Error('Failed to launch Lektor executable')) } }) }) } /* given a path to a project this analyzes the project there and returns the data as object. Since this loading can take time it's returned as a promise */ analyzeProject (path) { let exe = this.getLektorExecutable() return new Promise((resolve, reject) => { if (!exe) { return reject(new Error('Cannot locate Lektor executable')) } let child = spawnLektor( exe, ['--project', path, 'project-info', '--json']) let buf = '' child.stdout.on('data', (data) => { buf += data }) child.on('close', (code) => { if (code === 0) { resolve(JSON.parse(buf)) } else { resolve(null) } }) }) } /* finds the project for a set of files. */ discoverProjectForFiles (files) { let exe = this.getLektorExecutable() return new Promise((resolve, reject) => { if (!exe) { return reject(new Error('Cannot locate Lektor executable')) } let child = spawnLektor( exe, ['content-file-info', '--json'].concat(files)) let buf = '' child.stdout.on('data', (data) => { buf += data }) child.on('close', (code) => { resolve(JSON.parse(buf)) }) }) } /* spawns the server for a project */ spawnServer (projectPath, options) { options.port = options.port || 5000 let exe = this.getLektorExecutable() let child = spawnLektor( exe, ['--project', projectPath, 'server', '--port', options.port + '']) return new LektorServer(child, options) } } lektor-3.1.3/gui/static/js/utils.jsx000066400000000000000000000011031346506225100173720ustar00rootroot00000000000000'use strict' export const isDevMode = () => { return process.env.LEKTOR_DEV === '1' } export const attachDevMenu = (menu) => { menu.push({ label: 'Reload', accelerator: 'CmdOrCtrl+R', click: (item, focusedWindow) => { if (focusedWindow) { focusedWindow.reload(); } } }) menu.push({ label: 'Toggle Developer Tools', accelerator: process.platform == 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', click: (item, focusedWindow) => { if (focusedWindow) { focusedWindow.toggleDevTools(); } } }) } lektor-3.1.3/gui/static/less/000077500000000000000000000000001346506225100160435ustar00rootroot00000000000000lektor-3.1.3/gui/static/less/main.less000066400000000000000000000034061346506225100176620ustar00rootroot00000000000000// reuse the same setup we use for the main admin. @import "../../../lektor/admin/static/less/bootstrap-overrides.less"; body { background: @header-taint; color: #eee; margin: 0; padding: 0; overflow: hidden; // make sure selects are disabled -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: default; } h1 { font-weight: normal; margin: 0 0 10px 0; font-size: 24px; text-align: center; } .app { padding: 15px; } .app-initializing { text-align: center; } .main-nav { .list-group { font-size: 0; margin: 0; button { font-size: 15px; display: inline-block; text-align: center; width: 20%; } button[disabled=disabled], button:disabled { cursor: not-allowed; background: #ccc; } button:focus, button:active { outline: none; } } p.explanation { margin: 10px 0; height: 1em; font-style: italic; } } div.project-status { dl { background: lighten(@header-taint, 10); border: 1px solid lighten(@header-taint, 20); padding: 10px 15px; dt { font-weight: bold; display: inline-block; &:after { content: ": "; } } dd { display: inline-block; margin: 0; padding: 0 0 0 8px; } } ul.log { height: 150px; background: darken(@header-taint, 10); border: 1px solid darken(@header-taint, 20); font-size: 13px; font-family: @font-family-serif; overflow: auto; list-style: none; word-wrap: break-word; margin: 15px 0 0 0; padding: 8px 15px; li { margin: 0; padding: 0; & + li { margin-top: 5px; } } } } lektor-3.1.3/gui/static/webpack.config.js000066400000000000000000000041461346506225100203200ustar00rootroot00000000000000var webpack = require('webpack'); var path = require('path'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var webpackTargetElectronRenderer = require('webpack-target-electron-renderer'); var options = { entry: { 'app': './js/app.jsx', 'host': './js/host.jsx', 'styles': './less/main.less' }, output: { path: __dirname + '/gen', filename: '[name].js' }, devtool: '#source-map', resolve: { modulesDirectories: ['../node_modules'], extensions: ['', '.jsx', '.js', '.json', '.node'] }, resolveLoader: { root: path.join(__dirname, '..', 'node_modules') }, node: { __dirname: false }, module: { loaders: [ { test: /\.jsx$/, loader: 'babel-loader' }, { test: /\.node$/, loader: 'node-loader', }, { test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!less-loader') }, { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') }, { test: /\.json$/, loader: 'json-loader' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' } ] }, plugins: [ new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), new ExtractTextPlugin('styles.css', { allChunks: true }) ], // native modules currently require some hackery :-/ More hackery that // needs synching in the makefile externals: { 'runas': 'commonjs runas' } }; options.target = webpackTargetElectronRenderer(options); module.exports = options; lektor-3.1.3/lektor/000077500000000000000000000000001346506225100143225ustar00rootroot00000000000000lektor-3.1.3/lektor/__init__.py000066400000000000000000000000001346506225100164210ustar00rootroot00000000000000lektor-3.1.3/lektor/__main__.py000066400000000000000000000001161346506225100164120ustar00rootroot00000000000000if __name__ == '__main__': from .cli import main main(as_module=True) lektor-3.1.3/lektor/_compat.py000066400000000000000000000040041346506225100163140ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ lektor._compat ~~~~~~~~~~~~~~ Some py2/py3 compatibility support based on a stripped down version of six so we don't have to depend on a specific version of it. Taken from jinja2/_compat.py """ # pylint: disable=invalid-name, import-error, unused-import, undefined-variable, reimported import sys PY2 = sys.version_info[0] == 2 _identity = lambda x: x if PY2: unichr = unichr text_type = unicode range_type = xrange string_types = (str, unicode) integer_types = (int, long) iterkeys = lambda d: d.iterkeys() itervalues = lambda d: d.itervalues() iteritems = lambda d: d.iteritems() from cStringIO import StringIO as BytesIO, StringIO import Queue as queue NativeStringIO = BytesIO exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') # pylint: disable=exec-used else: unichr = chr range_type = range text_type = str string_types = (str,) integer_types = (int,) iterkeys = lambda d: iter(d.keys()) itervalues = lambda d: iter(d.values()) iteritems = lambda d: iter(d.items()) from io import BytesIO, StringIO import queue NativeStringIO = StringIO def reraise(tp, value, tb=None): if value.__traceback__ is not tb: raise value.with_traceback(tb) raise value def python_2_unicode_compatible(klass): """ A decorator that defines __unicode__ and __str__ methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a __str__ method returning text and apply this decorator to the class. """ if PY2: if '__str__' not in klass.__dict__: raise ValueError("@python_2_unicode_compatible cannot be applied " "to %s because it doesn't define __str__()." % klass.__name__) klass.__unicode__ = klass.__str__ klass.__str__ = lambda self: self.__unicode__().encode('utf-8') return klass lektor-3.1.3/lektor/admin/000077500000000000000000000000001346506225100154125ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/__init__.py000066400000000000000000000000651346506225100175240ustar00rootroot00000000000000from .webui import WebAdmin __all__ = ['WebAdmin'] lektor-3.1.3/lektor/admin/modules/000077500000000000000000000000001346506225100170625ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/modules/__init__.py000066400000000000000000000002711346506225100211730ustar00rootroot00000000000000from werkzeug.utils import find_modules def register_modules(app): for module in find_modules(__name__): app.register_blueprint(__import__(module, None, None, ['bp']).bp) lektor-3.1.3/lektor/admin/modules/api.py000066400000000000000000000225201346506225100202060ustar00rootroot00000000000000import os import posixpath import click from flask import Blueprint, jsonify, request, g, current_app from lektor._compat import iteritems, itervalues from lektor.utils import is_valid_id from lektor.admin.utils import eventstream from lektor.publisher import publish, PublishError from lektor.environment import PRIMARY_ALT bp = Blueprint('api', __name__, url_prefix='/admin/api') def get_record_and_parent(path): pad = g.admin_context.pad record = pad.get(path) if record is None: parent = pad.get(posixpath.dirname(path)) else: parent = record.parent return record, parent @bp.route('/pathinfo') def get_path_info(): """Returns the path segment information for a record.""" tree_item = g.admin_context.tree.get(request.args['path']) segments = [] while tree_item is not None: segments.append({ 'id': tree_item.id, 'path': tree_item.path, 'label_i18n': tree_item.label_i18n, 'exists': tree_item.exists, 'can_have_children': tree_item.can_have_children }) tree_item = tree_item.get_parent() segments.reverse() return jsonify(segments=segments) @bp.route('/recordinfo') def get_record_info(): pad = g.admin_context.pad request_path = request.args['path'] tree_item = g.admin_context.tree.get(request_path) children = [] attachments = [] alts = [] for child in tree_item.iter_children(): if child.is_attachment: attachments.append(child) else: children.append(child) primary_alt = pad.db.config.primary_alternative if primary_alt is not None: for alt in itervalues(tree_item.alts): alt_cfg = pad.db.config.get_alternative(alt.id) alts.append({ 'alt': alt.id, 'is_primary': alt.id == PRIMARY_ALT, 'primary_overlay': alt.id == primary_alt, 'name_i18n': alt_cfg['name'], 'exists': alt.exists, }) child_order_by = pad.query(request_path).get_order_by() or [] return jsonify( id=tree_item.id, path=tree_item.path, label_i18n=tree_item.label_i18n, exists=tree_item.exists, is_attachment=tree_item.is_attachment, attachments=[{ 'id': x.id, 'path': x.path, 'type': x.attachment_type, } for x in attachments], children=[{ 'id': x.id, 'path': x.path, 'label': x.id, 'label_i18n': x.label_i18n, 'visible': x.is_visible, } for x in sorted( children, key=lambda c: pad.get(c.path).get_sort_key(child_order_by)) ], alts=alts, can_have_children=tree_item.can_have_children, can_have_attachments=tree_item.can_have_attachments, can_be_deleted=tree_item.can_be_deleted, ) @bp.route('/previewinfo') def get_preview_info(): alt = request.args.get('alt') or PRIMARY_ALT record = g.admin_context.pad.get(request.args['path'], alt=alt) if record is None: return jsonify(exists=False, url=None, is_hidden=True) return jsonify( exists=True, url=record.url_path, is_hidden=record.is_hidden ) @bp.route('/find', methods=['POST']) def find(): alt = request.values.get('alt') or PRIMARY_ALT lang = request.values.get('lang') or g.admin_context.info.ui_lang q = request.values.get('q') builder = current_app.lektor_info.get_builder() return jsonify( results=builder.find_files(q, alt=alt, lang=lang) ) @bp.route('/browsefs', methods=['POST']) def browsefs(): alt = request.values.get('alt') or PRIMARY_ALT record = g.admin_context.pad.get(request.values['path'], alt=alt) okay = False if record is not None: if record.is_attachment: fn = record.attachment_filename else: fn = record.source_filename if os.path.exists(fn): click.launch(fn, locate=True) okay = True return jsonify(okay=okay) @bp.route('/matchurl') def match_url(): record = g.admin_context.pad.resolve_url_path( request.args['url_path'], alt_fallback=False) if record is None: return jsonify(exists=False, path=None, alt=None) return jsonify(exists=True, path=record['_path'], alt=record['_alt']) @bp.route('/rawrecord') def get_raw_record(): alt = request.args.get('alt') or PRIMARY_ALT ts = g.admin_context.tree.edit(request.args['path'], alt=alt) return jsonify(ts.to_json()) @bp.route('/newrecord') def get_new_record_info(): # XXX: convert to tree usage pad = g.admin_context.pad alt = request.args.get('alt') or PRIMARY_ALT ts = g.admin_context.tree.edit(request.args['path'], alt=alt) if ts.is_attachment: can_have_children = False elif ts.datamodel.child_config.replaced_with is not None: can_have_children = False else: can_have_children = True implied = ts.datamodel.child_config.model def describe_model(model): primary_field = None if model.primary_field is not None: f = model.field_map.get(model.primary_field) if f is not None: primary_field = f.to_json(pad) return { 'id': model.id, 'name': model.name, 'name_i18n': model.name_i18n, 'primary_field': primary_field } return jsonify({ 'label': ts.record and ts.record.record_label or ts.id, 'can_have_children': can_have_children, 'implied_model': implied, 'available_models': dict( (k, describe_model(v)) for k, v in iteritems(pad.db.datamodels) if not v.hidden or k == implied) }) @bp.route('/newattachment') def get_new_attachment_info(): ts = g.admin_context.tree.edit(request.args['path']) return jsonify({ 'can_upload': ts.exists and not ts.is_attachment, 'label': ts.record and ts.record.record_label or ts.id, }) @bp.route('/newattachment', methods=['POST']) def upload_new_attachments(): alt = request.values.get('alt') or PRIMARY_ALT ts = g.admin_context.tree.edit(request.values['path'], alt=alt) if not ts.exists or ts.is_attachment: return jsonify({ 'bad_upload': True }) buckets = [] for file in request.files.getlist('file'): buckets.append({ 'original_filename': file.filename, 'stored_filename': ts.add_attachment(file.filename, file), }) return jsonify({ 'bad_upload': False, 'path': request.form['path'], 'buckets': buckets, }) @bp.route('/newrecord', methods=['POST']) def add_new_record(): values = request.get_json() alt = values.get('alt') or PRIMARY_ALT exists = False if not is_valid_id(values['id']): return jsonify(valid_id=False, exists=False, path=None) path = posixpath.join(values['path'], values['id']) ts = g.admin_context.tree.edit(path, datamodel=values.get('model'), alt=alt) with ts: if ts.exists: exists = True else: ts.update(values.get('data') or {}) return jsonify({ 'valid_id': True, 'exists': exists, 'path': path }) @bp.route('/deleterecord', methods=['POST']) def delete_record(): alt = request.values.get('alt') or PRIMARY_ALT delete_master = request.values.get('delete_master') == '1' if request.values['path'] != '/': ts = g.admin_context.tree.edit(request.values['path'], alt=alt) with ts: ts.delete(delete_master=delete_master) return jsonify(okay=True) @bp.route('/rawrecord', methods=['PUT']) def update_raw_record(): values = request.get_json() data = values['data'] alt = values.get('alt') or PRIMARY_ALT ts = g.admin_context.tree.edit(values['path'], alt=alt) with ts: ts.update(data) return jsonify(path=ts.path) @bp.route('/servers') def get_servers(): db = g.admin_context.pad.db config = db.env.load_config() servers = config.get_servers(public=True) return jsonify(servers=sorted([x.to_json() for x in servers.values()], key=lambda x: x['name'].lower())) @bp.route('/build', methods=['POST']) def trigger_build(): builder = current_app.lektor_info.get_builder() builder.build_all() builder.prune() return jsonify(okay=True) @bp.route('/clean', methods=['POST']) def trigger_clean(): builder = current_app.lektor_info.get_builder() builder.prune(all=True) builder.touch_site_config() return jsonify(okay=True) @bp.route('/publish') def publish_build(): db = g.admin_context.pad.db server = request.values['server'] config = db.env.load_config() server_info = config.get_server(server) info = current_app.lektor_info @eventstream def generator(): try: event_iter = publish(info.env, server_info.target, info.output_path, server_info=server_info) or () for event in event_iter: yield {'msg': event} except PublishError as e: yield {'msg': 'Error: %s' % e} return generator() @bp.route('/ping') def ping(): return jsonify( project_id=current_app.lektor_info.env.project.id, okay=True ) lektor-3.1.3/lektor/admin/modules/common.py000066400000000000000000000016271346506225100207320ustar00rootroot00000000000000import os from flask import Blueprint, g, request, current_app, url_for from werkzeug.utils import cached_property from lektor.db import Tree bp = Blueprint('common', __name__) class AdminContext(object): def __init__(self): self.admin_root = url_for('dash.index').rstrip('/') self.site_root = request.script_root self.info = current_app.lektor_info def get_temp_path(self, name=None): if name is None: name = os.urandom(20).encode('hex') dirname = self.info.env.temp_path try: os.makedirs(dirname) except OSError: pass return os.path.join(dirname, name) @cached_property def pad(self): return current_app.lektor_info.get_pad() @cached_property def tree(self): return Tree(self.pad) @bp.before_app_request def find_common_info(): g.admin_context = AdminContext() lektor-3.1.3/lektor/admin/modules/dash.py000066400000000000000000000026211346506225100203540ustar00rootroot00000000000000from werkzeug.wsgi import extract_path_info from flask import Blueprint, render_template, abort, redirect, request, \ g, url_for from lektor.admin.utils import fs_path_to_url_path from lektor.environment import PRIMARY_ALT bp = Blueprint('dash', __name__, url_prefix='/admin') endpoints = [ ('/', 'index'), ('/publish', 'publish'), ('//edit', 'edit'), ('//delete', 'delete'), ('//preview', 'preview'), ('//add-child', 'add_child'), ('//upload', 'add_attachment'), ] @bp.route('/edit') def edit_redirect(): record = None # Find out where we wanted to go to. We need to chop off the leading # /admin on this URL as this is where the admin thinks it's placed. path = extract_path_info(request.url_root.rstrip('/').rsplit('/', 1)[0], request.args.get('path', '/')) if path is not None: record = g.admin_context.pad.resolve_url_path(path, alt_fallback=False) if record is None: abort(404) path = fs_path_to_url_path(record.path.split('@')[0]) if record.alt != PRIMARY_ALT: path += '+' + record.alt return redirect(url_for('dash.edit', path=path)) def generic_endpoint(**kwargs): """This function is invoked by all dash endpoints.""" return render_template('dash.html') for path, endpoint in endpoints: bp.add_url_rule(path, endpoint, generic_endpoint) lektor-3.1.3/lektor/admin/modules/serve.py000066400000000000000000000102071346506225100205600ustar00rootroot00000000000000import mimetypes import os import posixpath from zlib import adler32 from flask import (Blueprint, Response, abort, current_app, render_template, request) from werkzeug.datastructures import Headers from werkzeug.wsgi import wrap_file from werkzeug.exceptions import NotFound from lektor._compat import BytesIO, string_types bp = Blueprint('serve', __name__) def rewrite_html_for_editing(fp, edit_url): contents = fp.read() button = u''' ''' % { 'edit_url': edit_url, } return BytesIO(contents + button.encode('utf-8')) def send_file(filename): mimetype = mimetypes.guess_type(filename)[0] if mimetype is None: mimetype = 'application/octet-stream' headers = Headers() try: file = open(filename, 'rb') mtime = os.path.getmtime(filename) headers['Content-Length'] = os.path.getsize(filename) except (IOError, OSError): abort(404) rewritten = False if mimetype == 'text/html': rewritten = True new_file = rewrite_html_for_editing(file, edit_url=posixpath.join('/', request.script_root, 'admin/edit')) file.close() file = new_file del headers['Content-Length'] headers['Cache-Control'] = 'no-cache, no-store' data = wrap_file(request.environ, file) rv = Response(data, mimetype=mimetype, headers=headers, direct_passthrough=True) if not rewritten: # if we know the file modification date, we can store it as # the time of the last modification. if mtime is not None: rv.last_modified = int(mtime) rv.cache_control.public = True try: rv.set_etag('lektor-%s-%s-%s' % ( os.path.getmtime(filename), os.path.getsize(filename), adler32( filename.encode('utf-8') if isinstance(filename, string_types) else filename ) & 0xffffffff, )) except OSError: pass return rv def handle_build_failure(failure): return render_template('build-failure.html', **failure.data) def serve_up_artifact(path): li = current_app.lektor_info pad = li.get_pad() artifact_name, filename = li.resolve_artifact('/' + path, pad) if filename is None: abort(404) if artifact_name is None: artifact_name = path.strip('/') # If there was a build failure for the given artifact, we want # to render this instead of sending the (most likely missing or # corrupted) file. ctrl = li.get_failure_controller(pad) failure = ctrl.lookup_failure(artifact_name) if failure is not None: return handle_build_failure(failure) return send_file(filename) @bp.route('/', defaults={'path': ''}) @bp.route('/') def serve_artifact(path): return serve_up_artifact(path) @bp.errorhandler(404) def serve_error_page(error): try: return serve_up_artifact('404.html') except NotFound as e: return e lektor-3.1.3/lektor/admin/package-lock.json000066400000000000000000007363131346506225100206430ustar00rootroot00000000000000{ "name": "lektor", "version": "0.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "abab": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", "dev": true }, "acorn": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", "dev": true }, "acorn-dynamic-import": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, "requires": { "acorn": "^4.0.3" }, "dependencies": { "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true } } }, "acorn-globals": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", "dev": true, "requires": { "acorn": "^2.1.0" } }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { "acorn": "^3.0.4" }, "dependencies": { "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } } }, "ajv": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", "json-schema-traverse": "^0.3.0", "json-stable-stringify": "^1.0.1" } }, "ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", "dev": true }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" } }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { "micromatch": "^2.1.5", "normalize-path": "^2.0.0" } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { "sprintf-js": "~1.0.2" } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "^1.0.1" } }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { "array-uniq": "^1.0.1" } }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "array.prototype.find": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.7.0" } }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, "asn1.js": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "dev": true, "requires": { "util": "0.10.3" } }, "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, "assertion-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", "dev": true }, "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { "lodash": "^4.14.0" } }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", "js-tokens": "^3.0.2" } }, "babel-core": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", "babel-helpers": "^6.24.1", "babel-messages": "^6.23.0", "babel-register": "^6.26.0", "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", "convert-source-map": "^1.5.0", "debug": "^2.6.8", "json5": "^0.5.1", "lodash": "^4.17.4", "minimatch": "^3.0.4", "path-is-absolute": "^1.0.1", "private": "^0.1.7", "slash": "^1.0.0", "source-map": "^0.5.6" } }, "babel-generator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "detect-indent": "^4.0.0", "jsesc": "^1.3.0", "lodash": "^4.17.4", "source-map": "^0.5.6", "trim-right": "^1.0.1" } }, "babel-helper-builder-react-jsx": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "esutils": "^2.0.2" } }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, "babel-helper-define-map": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "lodash": "^4.17.4" } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-helper-regex": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "lodash": "^4.17.4" } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { "babel-helper-optimise-call-expression": "^6.24.1", "babel-messages": "^6.23.0", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" } }, "babel-loader": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", "dev": true, "requires": { "find-cache-dir": "^1.0.0", "loader-utils": "^1.0.2", "mkdirp": "^0.5.1" } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-istanbul": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", "dev": true, "requires": { "find-up": "^2.1.0", "istanbul-lib-instrument": "^1.7.2", "test-exclude": "^4.1.1" } }, "babel-plugin-syntax-flow": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", "dev": true }, "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", "dev": true }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { "babel-helper-define-map": "^6.24.1", "babel-helper-function-name": "^6.24.1", "babel-helper-optimise-call-expression": "^6.24.1", "babel-helper-replace-supers": "^6.24.1", "babel-messages": "^6.23.0", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { "babel-helper-replace-supers": "^6.24.1", "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { "babel-helper-call-delegate": "^6.24.1", "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-flow-strip-types": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { "babel-plugin-syntax-flow": "^6.18.0", "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "^6.8.0", "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-react-display-name": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { "babel-helper-builder-react-jsx": "^6.24.1", "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-self": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-source": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", "babel-plugin-transform-es2015-block-scoping": "^6.24.1", "babel-plugin-transform-es2015-classes": "^6.24.1", "babel-plugin-transform-es2015-computed-properties": "^6.24.1", "babel-plugin-transform-es2015-destructuring": "^6.22.0", "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", "babel-plugin-transform-es2015-for-of": "^6.22.0", "babel-plugin-transform-es2015-function-name": "^6.24.1", "babel-plugin-transform-es2015-literals": "^6.22.0", "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", "babel-plugin-transform-es2015-modules-umd": "^6.24.1", "babel-plugin-transform-es2015-object-super": "^6.24.1", "babel-plugin-transform-es2015-parameters": "^6.24.1", "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", "babel-plugin-transform-es2015-spread": "^6.22.0", "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", "babel-plugin-transform-es2015-template-literals": "^6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", "babel-plugin-transform-regenerator": "^6.24.1" } }, "babel-preset-flow": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, "requires": { "babel-plugin-transform-flow-strip-types": "^6.22.0" } }, "babel-preset-react": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.3.13", "babel-plugin-transform-react-display-name": "^6.23.0", "babel-plugin-transform-react-jsx": "^6.24.1", "babel-plugin-transform-react-jsx-self": "^6.22.0", "babel-plugin-transform-react-jsx-source": "^6.22.0", "babel-preset-flow": "^6.23.0" } }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", "core-js": "^2.5.0", "home-or-tmp": "^2.0.0", "lodash": "^4.17.4", "mkdirp": "^0.5.1", "source-map-support": "^0.4.15" } }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" } }, "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", "lodash": "^4.17.4" } }, "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", "debug": "^2.6.8", "globals": "^9.18.0", "invariant": "^2.2.2", "lodash": "^4.17.4" } }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", "lodash": "^4.17.4", "to-fast-properties": "^1.0.3" } }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, "binary-extensions": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", "dev": true }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.x.x" } }, "bootstrap": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", "dev": true }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "^1.8.1", "preserve": "^0.2.0", "repeat-element": "^1.1.2" } }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, "browser-stdout": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, "browserify-aes": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.3", "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", "evp_bytestokey": "^1.0.0" } }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", "inherits": "^2.0.1" } }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { "bn.js": "^4.1.1", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "create-hmac": "^1.1.2", "elliptic": "^6.0.0", "inherits": "^2.0.1", "parse-asn1": "^5.0.0" } }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { "pako": "~0.2.0" } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" } }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { "callsites": "^0.2.0" } }, "callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" } }, "chai": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "requires": { "assertion-error": "^1.0.1", "deep-eql": "^0.1.3", "type-detect": "^1.0.0" } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { "anymatch": "^1.3.0", "async-each": "^1.0.0", "fsevents": "^1.0.0", "glob-parent": "^2.0.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", "is-glob": "^2.0.0", "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0" } }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "clean-css": { "version": "2.2.23", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.2.23.tgz", "integrity": "sha1-BZC1R4tRbEkD7cLYm9P9vdKGMow=", "dev": true, "optional": true, "requires": { "commander": "2.2.x" } }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { "restore-cursor": "^1.0.1" } }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { "center-align": "^0.1.1", "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true } } }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz", "integrity": "sha1-F1rUuTF/P/YV8gHB5XIk9Vo+kd8=", "dev": true, "optional": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" } }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { "date-now": "^0.1.4" } }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, "convert-source-map": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", "dev": true }, "core-js": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "create-ecdh": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" } }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", "ripemd160": "^2.0.0", "sha.js": "^2.4.0" } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", "inherits": "^2.0.1", "ripemd160": "^2.0.0", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" } }, "create-react-class": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=", "dev": true, "requires": { "fbjs": "^0.8.9", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.x.x" } }, "crypto-browserify": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "dev": true, "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", "create-ecdh": "^4.0.0", "create-hash": "^1.1.0", "create-hmac": "^1.1.0", "diffie-hellman": "^5.0.0", "inherits": "^2.0.1", "pbkdf2": "^3.0.3", "public-encrypt": "^4.0.0", "randombytes": "^2.0.0" } }, "css-loader": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.9.1.tgz", "integrity": "sha1-LhqgDOfjDvLGp6SzAKCAp8l54Nw=", "dev": true, "requires": { "csso": "1.3.x", "loader-utils": "~0.2.2", "source-map": "~0.1.38" }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", "json5": "^0.5.0", "object-assign": "^4.0.1" } }, "source-map": { "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { "amdefine": ">=0.0.4" } } } }, "csso": { "version": "1.3.12", "resolved": "https://registry.npmjs.org/csso/-/csso-1.3.12.tgz", "integrity": "sha1-/GKGlKLTiTiqrEmWdTIY/TEc254=", "dev": true }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", "dev": true }, "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { "cssom": "0.3.x" } }, "ctype": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", "dev": true, "optional": true }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { "es5-ext": "^0.10.9" } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { "ms": "2.0.0" } }, "debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "deep-eql": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { "type-detect": "0.1.1" }, "dependencies": { "type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", "dev": true } } }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { "foreach": "^2.0.5", "object-keys": "^1.0.8" } }, "deglob": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", "dev": true, "requires": { "find-root": "^1.0.0", "glob": "^7.0.5", "ignore": "^3.0.9", "pkg-config": "^1.1.0", "run-parallel": "^1.1.2", "uniq": "^1.0.1" } }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { "globby": "^5.0.0", "is-path-cwd": "^1.0.0", "is-path-in-cwd": "^1.0.0", "object-assign": "^4.0.1", "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "rimraf": "^2.2.8" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "^2.0.0" } }, "diff": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", "dev": true }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" } }, "domain-browser": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" } }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" } }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, "encoding": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { "iconv-lite": "~0.4.13" } }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.4.0", "object-assign": "^4.0.1", "tapable": "^0.2.7" } }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", "dev": true, "requires": { "prr": "~0.0.0" } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.2.tgz", "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", "dev": true, "requires": { "es-to-primitive": "^1.1.1", "function-bind": "^1.1.1", "has": "^1.0.1", "is-callable": "^1.1.3", "is-regex": "^1.0.4" } }, "es-to-primitive": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { "is-callable": "^1.1.1", "is-date-object": "^1.0.1", "is-symbol": "^1.0.1" } }, "es5-ext": { "version": "0.10.30", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", "dev": true, "requires": { "es6-iterator": "2", "es6-symbol": "~3.1" } }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.14", "es6-symbol": "^3.1" } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14", "es6-iterator": "~2.0.1", "es6-set": "~0.1.5", "es6-symbol": "~3.1.1", "event-emitter": "~0.3.5" } }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14", "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", "event-emitter": "~0.3.5" } }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14" } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.14", "es6-iterator": "^2.0.1", "es6-symbol": "^3.1.1" } }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "escodegen": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.5.6" } }, "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { "es6-map": "^0.1.3", "es6-weak-map": "^2.0.1", "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, "eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, "requires": { "babel-code-frame": "^6.16.0", "chalk": "^1.1.3", "concat-stream": "^1.5.2", "debug": "^2.1.1", "doctrine": "^2.0.0", "escope": "^3.6.0", "espree": "^3.4.0", "esquery": "^1.0.0", "estraverse": "^4.2.0", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", "glob": "^7.0.3", "globals": "^9.14.0", "ignore": "^3.2.0", "imurmurhash": "^0.1.4", "inquirer": "^0.12.0", "is-my-json-valid": "^2.10.0", "is-resolvable": "^1.0.0", "js-yaml": "^3.5.1", "json-stable-stringify": "^1.0.0", "levn": "^0.3.0", "lodash": "^4.0.0", "mkdirp": "^0.5.0", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.1", "pluralize": "^1.2.1", "progress": "^1.1.8", "require-uncached": "^1.0.2", "shelljs": "^0.7.5", "strip-bom": "^3.0.0", "strip-json-comments": "~2.0.1", "table": "^3.7.8", "text-table": "~0.2.0", "user-home": "^2.0.0" }, "dependencies": { "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } }, "eslint-config-standard": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", "dev": true }, "eslint-config-standard-jsx": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", "dev": true }, "eslint-import-resolver-node": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", "dev": true, "requires": { "debug": "^2.2.0", "object-assign": "^4.0.1", "resolve": "^1.1.6" } }, "eslint-module-utils": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", "dev": true, "requires": { "debug": "^2.6.8", "pkg-dir": "^1.0.0" }, "dependencies": { "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" } } } }, "eslint-plugin-import": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", "dev": true, "requires": { "builtin-modules": "^1.1.1", "contains-path": "^0.1.0", "debug": "^2.2.0", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.2.0", "eslint-module-utils": "^2.0.0", "has": "^1.0.1", "lodash.cond": "^4.3.0", "minimatch": "^3.0.3", "pkg-up": "^1.0.0" }, "dependencies": { "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" } } } }, "eslint-plugin-node": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz", "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==", "dev": true, "requires": { "ignore": "^3.0.11", "minimatch": "^3.0.2", "object-assign": "^4.0.1", "resolve": "^1.1.7", "semver": "5.3.0" }, "dependencies": { "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } } }, "eslint-plugin-promise": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", "dev": true }, "eslint-plugin-react": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", "dev": true, "requires": { "array.prototype.find": "^2.0.1", "doctrine": "^1.2.2", "has": "^1.0.1", "jsx-ast-utils": "^1.3.4", "object.assign": "^4.0.4" }, "dependencies": { "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" } } } }, "eslint-plugin-standard": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", "dev": true }, "espree": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", "dev": true, "requires": { "acorn": "^5.1.1", "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", "dev": true } } }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, "esquery": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { "estraverse": "^4.0.0" } }, "esrecurse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { "estraverse": "^4.1.0", "object-assign": "^4.0.1" } }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14" } }, "event-source-polyfill": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-0.0.5.tgz", "integrity": "sha1-1jXwlXg9VBGX9OXWoeDeo6h60vY=", "dev": true }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", "dev": true }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "^0.1.0" } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "^2.1.0" } }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "extract-text-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz", "integrity": "sha1-kMqnkHvESfM1AF46x1MrQbAN5hI=", "dev": true, "requires": { "async": "^2.4.1", "loader-utils": "^1.1.0", "schema-utils": "^0.3.0", "webpack-sources": "^1.0.1" } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "fast-deep-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fbjs": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.15.tgz", "integrity": "sha1-TwaV/fzBbDfAsH+s7Iy0xAkWhbk=", "dev": true, "requires": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", "loose-envify": "^1.0.0", "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", "ua-parser-js": "^0.7.9" }, "dependencies": { "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", "dev": true } } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" } }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" } }, "file-loader": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", "dev": true, "requires": { "loader-utils": "^1.0.2" } }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", "randomatic": "^1.1.3", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } }, "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^1.0.0", "pkg-dir": "^2.0.0" } }, "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" } }, "flat-cache": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", "dev": true, "requires": { "circular-json": "^0.3.1", "del": "^2.0.2", "graceful-fs": "^4.1.2", "write": "^0.2.1" } }, "font-awesome": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=", "dev": true }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" } }, "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.5", "mime-types": "^2.1.12" } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fsevents": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { "nan": "^2.9.2", "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { "version": "1.2.0", "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, "dev": true, "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, "balanced-match": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "debug": { "version": "2.6.9", "bundled": true, "dev": true, "optional": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.5.1", "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.0", "object-assign": "^4.1.0", "signal-exit": "^3.0.0", "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" } }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", "bundled": true, "dev": true, "optional": true, "requires": { "safer-buffer": "^2.1.0" } }, "ignore-walk": { "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true, "optional": true }, "ini": { "version": "1.3.5", "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true, "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true, "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.2.0", "bundled": true, "dev": true, "optional": true, "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { "version": "0.10.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", "needle": "^2.2.0", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", "rc": "^1.1.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" } }, "npm-bundled": { "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" } }, "npmlog": { "version": "4.1.2", "bundled": true, "dev": true, "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", "gauge": "~2.7.3", "set-blocking": "~2.0.0" } }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", "bundled": true, "dev": true, "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { "deep-extend": "^0.5.1", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", "bundled": true, "dev": true, "optional": true } } }, "readable-stream": { "version": "2.3.6", "bundled": true, "dev": true, "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "rimraf": { "version": "2.6.2", "bundled": true, "dev": true, "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.1", "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.1", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", "minipass": "^2.2.4", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.1", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, "optional": true, "requires": { "string-width": "^1.0.2" } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, "dev": true } } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", "dev": true }, "generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { "is-property": "^1.0.0" } }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", "dev": true }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.2", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "^2.0.0" } }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { "array-union": "^1.0.1", "arrify": "^1.0.0", "glob": "^7.0.3", "object-assign": "^4.0.1", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, "growl": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true }, "har-validator": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "requires": { "ajv": "^4.9.1", "har-schema": "^1.0.5" }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { "co": "^4.6.0", "json-stable-stringify": "^1.0.1" } } } }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { "function-bind": "^1.0.2" } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { "inherits": "^2.0.1" } }, "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.0" } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.x.x", "cryptiles": "2.x.x", "hoek": "2.x.x", "sntp": "1.x.x" } }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, "history": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/history/-/history-1.17.0.tgz", "integrity": "sha1-xUg8qlodH+oAoafY0ZuHQBZxHSk=", "dev": true, "requires": { "deep-equal": "^1.0.0", "invariant": "^2.0.0", "query-string": "^3.0.0", "warning": "^2.0.0" } }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "hoist-non-react-statics": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", "dev": true }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { "assert-plus": "^0.2.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } }, "https-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, "ieee754": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", "dev": true }, "ignore": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "inquirer": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, "requires": { "ansi-escapes": "^1.1.0", "ansi-regex": "^2.0.0", "chalk": "^1.0.0", "cli-cursor": "^1.0.1", "cli-width": "^2.0.0", "figures": "^1.3.5", "lodash": "^4.3.0", "readline2": "^1.0.1", "run-async": "^0.1.0", "rx-lite": "^3.1.2", "string-width": "^1.0.1", "strip-ansi": "^3.0.0", "through": "^2.3.6" } }, "interpret": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", "dev": true }, "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "^1.0.0" } }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { "binary-extensions": "^1.0.0" } }, "is-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "dev": true }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" } }, "is-callable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", "dev": true }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "^2.0.0" } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "is-my-json-valid": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { "generate-function": "^2.0.0", "generate-object-property": "^1.1.0", "jsonpointer": "^4.0.0", "xtend": "^4.0.0" } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" } }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", "dev": true }, "is-path-in-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { "is-path-inside": "^1.0.0" } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", "dev": true, "requires": { "path-is-inside": "^1.0.1" } }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { "has": "^1.0.1" } }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", "dev": true, "requires": { "tryit": "^1.0.1" } }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" } }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "dev": true, "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" } }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "istanbul-lib-coverage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-instrument": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz", "integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=", "dev": true, "requires": { "babel-generator": "^6.18.0", "babel-template": "^6.16.0", "babel-traverse": "^6.18.0", "babel-types": "^6.18.0", "babylon": "^6.18.0", "istanbul-lib-coverage": "^1.1.1", "semver": "^5.3.0" } }, "jquery": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=", "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "dependencies": { "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true } } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "jsdom": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-8.5.0.tgz", "integrity": "sha1-1Nj12/J2hjW2KmKCO5R89wcevJg=", "dev": true, "requires": { "abab": "^1.0.0", "acorn": "^2.4.0", "acorn-globals": "^1.0.4", "array-equal": "^1.0.0", "cssom": ">= 0.3.0 < 0.4.0", "cssstyle": ">= 0.2.34 < 0.3.0", "escodegen": "^1.6.1", "iconv-lite": "^0.4.13", "nwmatcher": ">= 1.3.7 < 2.0.0", "parse5": "^1.5.1", "request": "^2.55.0", "sax": "^1.1.4", "symbol-tree": ">= 3.1.0 < 4.0.0", "tough-cookie": "^2.2.0", "webidl-conversions": "^3.0.1", "whatwg-url": "^2.0.1", "xml-name-validator": ">= 2.0.1 < 3.0.0" } }, "jsdomify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/jsdomify/-/jsdomify-2.2.0.tgz", "integrity": "sha1-sprqmg0Vv5AuD+y4nMIVRgf3kXk=", "dev": true, "requires": { "jsdom": "8.5.0" } }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { "jsonify": "~0.0.0" } }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "jsx-ast-utils": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", "dev": true }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" } }, "less": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/less/-/less-1.7.5.tgz", "integrity": "sha1-TyIM9yiKJ+rKc5325ICKLUwNV1Y=", "dev": true, "requires": { "clean-css": "2.2.x", "graceful-fs": "~3.0.2", "mime": "~1.2.11", "mkdirp": "~0.5.0", "request": "~2.40.0", "source-map": "0.1.x" }, "dependencies": { "asn1": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", "dev": true, "optional": true }, "assert-plus": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", "dev": true, "optional": true }, "async": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", "dev": true, "optional": true }, "aws-sign2": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", "dev": true, "optional": true }, "boom": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", "dev": true, "requires": { "hoek": "0.9.x" } }, "combined-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", "dev": true, "optional": true, "requires": { "delayed-stream": "0.0.5" } }, "cryptiles": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", "dev": true, "optional": true, "requires": { "boom": "0.4.x" } }, "delayed-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", "dev": true, "optional": true }, "forever-agent": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=", "dev": true, "optional": true }, "form-data": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", "dev": true, "optional": true, "requires": { "async": "~0.9.0", "combined-stream": "~0.0.4", "mime": "~1.2.11" } }, "graceful-fs": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "optional": true, "requires": { "natives": "^1.1.0" } }, "hawk": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", "dev": true, "optional": true, "requires": { "boom": "0.4.x", "cryptiles": "0.2.x", "hoek": "0.9.x", "sntp": "0.2.x" } }, "hoek": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=", "dev": true }, "http-signature": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", "dev": true, "optional": true, "requires": { "asn1": "0.1.11", "assert-plus": "^0.1.5", "ctype": "0.5.3" } }, "mime-types": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=", "dev": true, "optional": true }, "natives": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.3.tgz", "integrity": "sha512-BZGSYV4YOLxzoTK73l0/s/0sH9l8SHs2ocReMH1f8JYSh5FUWu4ZrKCpJdRkWXV6HFR/pZDz7bwWOVAY07q77g==", "dev": true, "optional": true }, "node-uuid": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", "dev": true, "optional": true }, "oauth-sign": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=", "dev": true, "optional": true }, "qs": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=", "dev": true, "optional": true }, "request": { "version": "2.40.0", "resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz", "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=", "dev": true, "optional": true, "requires": { "aws-sign2": "~0.5.0", "forever-agent": "~0.5.0", "form-data": "~0.1.0", "hawk": "1.1.1", "http-signature": "~0.10.0", "json-stringify-safe": "~5.0.0", "mime-types": "~1.0.1", "node-uuid": "~1.4.0", "oauth-sign": "~0.3.0", "qs": "~1.0.0", "stringstream": "~0.0.4", "tough-cookie": ">=0.12.0", "tunnel-agent": "~0.4.0" } }, "sntp": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", "dev": true, "optional": true, "requires": { "hoek": "0.9.x" } }, "source-map": { "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "optional": true, "requires": { "amdefine": ">=0.0.4" } }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true, "optional": true } } }, "less-loader": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-0.7.8.tgz", "integrity": "sha1-jFNRo+4iwwtbwzH6DMP6sdri5EM=", "dev": true, "requires": { "loader-utils": "^0.2.5" }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", "json5": "^0.5.0", "object-assign": "^4.0.1" } } } }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" } }, "loader-runner": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", "dev": true }, "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", "json5": "^0.5.0" } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "lodash._baseassign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { "lodash._basecopy": "^3.0.0", "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, "lodash._basecreate": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", "dev": true }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", "dev": true }, "lodash.cond": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", "dev": true }, "lodash.create": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { "lodash._baseassign": "^3.0.0", "lodash._basecreate": "^3.0.0", "lodash._isiterateecall": "^3.0.0" } }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", "dev": true }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", "lodash.isarray": "^3.0.0" } }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "^3.0.0" } }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" } }, "make-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", "dev": true, "requires": { "pify": "^2.3.0" } }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" }, "dependencies": { "hash-base": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } } } }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" } }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" } }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", "braces": "^1.8.2", "expand-brackets": "^0.1.4", "extglob": "^0.3.1", "filename-regex": "^2.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.1", "kind-of": "^3.0.2", "normalize-path": "^2.0.1", "object.omit": "^2.0.0", "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" } }, "miller-rabin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", "dev": true, "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" } }, "mime": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", "dev": true, "optional": true }, "mime-db": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, "mime-types": { "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { "mime-db": "~1.30.0" } }, "mimic-fn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimalistic-assert": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", "dev": true }, "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" } }, "mocha": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, "requires": { "browser-stdout": "1.3.0", "commander": "2.9.0", "debug": "2.6.8", "diff": "3.2.0", "escape-string-regexp": "1.0.5", "glob": "7.1.1", "growl": "1.9.2", "he": "1.1.1", "json3": "3.3.2", "lodash.create": "3.1.1", "mkdirp": "0.5.1", "supports-color": "3.1.2" }, "dependencies": { "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" } }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { "has-flag": "^1.0.0" } } } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "mute-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", "dev": true }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true, "optional": true }, "native-promise-only": { "version": "0.7.6-a", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.7.6-a.tgz", "integrity": "sha1-skvQRRQJzDRA91W/QNJAKHkgaNA=", "dev": true }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dev": true, "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" } }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", "dev": true, "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.1.4", "buffer": "^4.3.0", "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", "events": "^1.0.0", "https-browserify": "0.0.1", "os-browserify": "^0.2.0", "path-browserify": "0.0.0", "process": "^0.11.0", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", "readable-stream": "^2.0.5", "stream-browserify": "^2.0.1", "stream-http": "^2.3.1", "string_decoder": "^0.10.25", "timers-browserify": "^2.0.2", "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" } }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "nwmatcher": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", "dev": true }, "nyc": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-8.4.0.tgz", "integrity": "sha1-ZgNxyAfK7wQn+5sJSPdBgGJOpuQ=", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", "caching-transform": "^1.0.0", "convert-source-map": "^1.3.0", "default-require-extensions": "^1.0.0", "find-cache-dir": "^0.1.1", "find-up": "^1.1.2", "foreground-child": "^1.5.3", "glob": "^7.0.6", "istanbul-lib-coverage": "^1.0.0", "istanbul-lib-hook": "^1.0.0-alpha.4", "istanbul-lib-instrument": "^1.2.0", "istanbul-lib-report": "^1.0.0-alpha.3", "istanbul-lib-source-maps": "^1.0.2", "istanbul-reports": "^1.0.0", "md5-hex": "^1.2.0", "micromatch": "^2.3.11", "mkdirp": "^0.5.0", "resolve-from": "^2.0.0", "rimraf": "^2.5.4", "signal-exit": "^3.0.1", "spawn-wrap": "^1.2.4", "test-exclude": "^2.1.3", "yargs": "^6.0.0", "yargs-parser": "^4.0.2" }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" } }, "amdefine": { "version": "1.0.1", "bundled": true, "dev": true }, "ansi-regex": { "version": "2.0.0", "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", "bundled": true, "dev": true }, "append-transform": { "version": "0.3.0", "bundled": true, "dev": true }, "archy": { "version": "1.0.0", "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.0.1" } }, "arr-flatten": { "version": "1.0.1", "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", "bundled": true, "dev": true }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.16.0", "bundled": true, "dev": true, "requires": { "chalk": "^1.1.0", "esutils": "^2.0.2", "js-tokens": "^2.0.0" } }, "babel-generator": { "version": "6.18.0", "bundled": true, "dev": true, "requires": { "babel-messages": "^6.8.0", "babel-runtime": "^6.9.0", "babel-types": "^6.18.0", "detect-indent": "^4.0.0", "jsesc": "^1.3.0", "lodash": "^4.2.0", "source-map": "^0.5.0" } }, "babel-messages": { "version": "6.8.0", "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.0.0" } }, "babel-runtime": { "version": "6.18.0", "bundled": true, "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.9.5" } }, "babel-template": { "version": "6.16.0", "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.9.0", "babel-traverse": "^6.16.0", "babel-types": "^6.16.0", "babylon": "^6.11.0", "lodash": "^4.2.0" } }, "babel-traverse": { "version": "6.18.0", "bundled": true, "dev": true, "requires": { "babel-code-frame": "^6.16.0", "babel-messages": "^6.8.0", "babel-runtime": "^6.9.0", "babel-types": "^6.18.0", "babylon": "^6.11.0", "debug": "^2.2.0", "globals": "^9.0.0", "invariant": "^2.2.0", "lodash": "^4.2.0" } }, "babel-types": { "version": "6.18.0", "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.9.1", "esutils": "^2.0.2", "lodash": "^4.2.0", "to-fast-properties": "^1.0.1" } }, "babylon": { "version": "6.13.1", "bundled": true, "dev": true }, "balanced-match": { "version": "0.4.2", "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.6", "bundled": true, "dev": true, "requires": { "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, "braces": { "version": "1.8.5", "bundled": true, "dev": true, "requires": { "expand-range": "^1.8.1", "preserve": "^0.2.0", "repeat-element": "^1.1.2" } }, "builtin-modules": { "version": "1.1.1", "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", "mkdirp": "^0.5.1", "write-file-atomic": "^1.1.4" } }, "camelcase": { "version": "1.2.1", "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" } }, "chalk": { "version": "1.1.3", "bundled": true, "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } }, "cliui": { "version": "2.1.0", "bundled": true, "dev": true, "optional": true, "requires": { "center-align": "^0.1.1", "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { "wordwrap": { "version": "0.0.2", "bundled": true, "dev": true, "optional": true } } }, "code-point-at": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "convert-source-map": { "version": "1.3.0", "bundled": true, "dev": true }, "core-js": { "version": "2.4.1", "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" } }, "debug": { "version": "2.2.0", "bundled": true, "dev": true, "requires": { "ms": "0.7.1" } }, "decamelize": { "version": "1.2.0", "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" } }, "detect-indent": { "version": "4.0.0", "bundled": true, "dev": true, "requires": { "repeating": "^2.0.0" } }, "error-ex": { "version": "1.3.0", "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { "version": "1.0.5", "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", "bundled": true, "dev": true }, "expand-brackets": { "version": "0.1.5", "bundled": true, "dev": true, "requires": { "is-posix-bracket": "^0.1.0" } }, "expand-range": { "version": "1.8.2", "bundled": true, "dev": true, "requires": { "fill-range": "^2.1.0" } }, "extglob": { "version": "0.3.2", "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "filename-regex": { "version": "2.0.0", "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", "bundled": true, "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", "randomatic": "^1.1.3", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } }, "find-cache-dir": { "version": "0.1.1", "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", "mkdirp": "^0.5.1", "pkg-dir": "^1.0.0" } }, "find-up": { "version": "1.1.2", "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "for-in": { "version": "0.1.6", "bundled": true, "dev": true }, "for-own": { "version": "0.1.4", "bundled": true, "dev": true, "requires": { "for-in": "^0.1.5" } }, "foreground-child": { "version": "1.5.3", "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", "signal-exit": "^3.0.0" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", "bundled": true, "dev": true }, "glob": { "version": "7.1.1", "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.2", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-base": { "version": "0.3.0", "bundled": true, "dev": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" } }, "glob-parent": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "is-glob": "^2.0.0" } }, "globals": { "version": "9.12.0", "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.9", "bundled": true, "dev": true }, "handlebars": { "version": "4.0.5", "bundled": true, "dev": true, "requires": { "async": "^1.4.0", "optimist": "^0.6.1", "source-map": "^0.4.4", "uglify-js": "^2.6" }, "dependencies": { "source-map": { "version": "0.4.4", "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" } } } }, "has-ansi": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "has-flag": { "version": "1.0.0", "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.1.5", "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true }, "invariant": { "version": "2.2.1", "bundled": true, "dev": true, "requires": { "loose-envify": "^1.0.0" } }, "invert-kv": { "version": "1.0.0", "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.4", "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" } }, "is-dotfile": { "version": "1.0.2", "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", "bundled": true, "dev": true, "requires": { "is-primitive": "^2.0.0" } }, "is-extendable": { "version": "0.1.1", "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-glob": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "is-number": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" } }, "is-posix-bracket": { "version": "0.1.1", "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true }, "isexe": { "version": "1.1.2", "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" } }, "istanbul-lib-coverage": { "version": "1.0.0", "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.0.0-alpha.4", "bundled": true, "dev": true, "requires": { "append-transform": "^0.3.0" } }, "istanbul-lib-instrument": { "version": "1.2.0", "bundled": true, "dev": true, "requires": { "babel-generator": "^6.18.0", "babel-template": "^6.16.0", "babel-traverse": "^6.18.0", "babel-types": "^6.18.0", "babylon": "^6.13.0", "istanbul-lib-coverage": "^1.0.0", "semver": "^5.3.0" } }, "istanbul-lib-report": { "version": "1.0.0-alpha.3", "bundled": true, "dev": true, "requires": { "async": "^1.4.2", "istanbul-lib-coverage": "^1.0.0-alpha", "mkdirp": "^0.5.1", "path-parse": "^1.0.5", "rimraf": "^2.4.3", "supports-color": "^3.1.2" }, "dependencies": { "supports-color": { "version": "3.1.2", "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" } } } }, "istanbul-lib-source-maps": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.0.0-alpha.0", "mkdirp": "^0.5.1", "rimraf": "^2.4.4", "source-map": "^0.5.3" } }, "istanbul-reports": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" } }, "js-tokens": { "version": "2.0.0", "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", "bundled": true, "dev": true }, "kind-of": { "version": "3.0.4", "bundled": true, "dev": true, "requires": { "is-buffer": "^1.0.2" } }, "lazy-cache": { "version": "1.0.4", "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" } }, "load-json-file": { "version": "1.1.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" } }, "lodash": { "version": "4.16.6", "bundled": true, "dev": true }, "longest": { "version": "1.0.1", "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.0", "bundled": true, "dev": true, "requires": { "js-tokens": "^2.0.0" } }, "lru-cache": { "version": "4.0.1", "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.1", "yallist": "^2.0.0" } }, "md5-hex": { "version": "1.3.0", "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { "version": "0.1.1", "bundled": true, "dev": true }, "micromatch": { "version": "2.3.11", "bundled": true, "dev": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", "braces": "^1.8.2", "expand-brackets": "^0.1.4", "extglob": "^0.3.1", "filename-regex": "^2.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.1", "kind-of": "^3.0.2", "normalize-path": "^2.0.1", "object.omit": "^2.0.0", "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" } }, "minimatch": { "version": "3.0.3", "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.0.0" } }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "0.7.1", "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.3.5", "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { "version": "2.0.1", "bundled": true, "dev": true }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true }, "object-assign": { "version": "4.1.0", "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" } }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "wrappy": "1" } }, "optimist": { "version": "0.6.1", "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" } }, "os-homedir": { "version": "1.0.2", "bundled": true, "dev": true }, "os-locale": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "lcid": "^1.0.0" } }, "parse-glob": { "version": "3.0.4", "bundled": true, "dev": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.0" } }, "parse-json": { "version": "2.2.0", "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" } }, "path-exists": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "pify": { "version": "2.3.0", "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" } }, "pkg-dir": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" } }, "preserve": { "version": "0.2.0", "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, "randomatic": { "version": "1.1.5", "bundled": true, "dev": true, "requires": { "is-number": "^2.0.2", "kind-of": "^3.0.2" } }, "read-pkg": { "version": "1.1.0", "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" } }, "read-pkg-up": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" } }, "regenerator-runtime": { "version": "0.9.5", "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.3", "bundled": true, "dev": true, "requires": { "is-equal-shallow": "^0.1.3", "is-primitive": "^2.0.0" } }, "repeat-element": { "version": "1.1.2", "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "is-finite": "^1.0.0" } }, "require-directory": { "version": "2.1.1", "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "align-text": "^0.1.1" } }, "rimraf": { "version": "2.5.4", "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" } }, "semver": { "version": "5.3.0", "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.1", "bundled": true, "dev": true }, "slide": { "version": "1.1.6", "bundled": true, "dev": true }, "source-map": { "version": "0.5.6", "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.2.4", "bundled": true, "dev": true, "requires": { "foreground-child": "^1.3.3", "mkdirp": "^0.5.0", "os-homedir": "^1.0.1", "rimraf": "^2.3.3", "signal-exit": "^2.0.0", "which": "^1.2.4" }, "dependencies": { "signal-exit": { "version": "2.1.2", "bundled": true, "dev": true } } }, "spdx-correct": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { "version": "1.0.4", "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", "bundled": true, "dev": true }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-bom": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" } }, "supports-color": { "version": "2.0.0", "bundled": true, "dev": true }, "test-exclude": { "version": "2.1.3", "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", "micromatch": "^2.3.11", "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" } }, "to-fast-properties": { "version": "1.0.2", "bundled": true, "dev": true }, "uglify-js": { "version": "2.7.4", "bundled": true, "dev": true, "optional": true, "requires": { "async": "~0.2.6", "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" }, "dependencies": { "async": { "version": "0.2.10", "bundled": true, "dev": true, "optional": true }, "yargs": { "version": "3.10.0", "bundled": true, "dev": true, "optional": true, "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", "decamelize": "^1.0.0", "window-size": "0.1.0" } } } }, "uglify-to-browserify": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "spdx-correct": "~1.0.0", "spdx-expression-parse": "~1.0.0" } }, "which": { "version": "1.2.11", "bundled": true, "dev": true, "requires": { "isexe": "^1.1.1" } }, "which-module": { "version": "1.0.0", "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1" } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.2.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", "imurmurhash": "^0.1.4", "slide": "^1.1.5" } }, "y18n": { "version": "3.2.1", "bundled": true, "dev": true }, "yallist": { "version": "2.0.0", "bundled": true, "dev": true }, "yargs": { "version": "6.3.0", "bundled": true, "dev": true, "requires": { "camelcase": "^3.0.0", "cliui": "^3.2.0", "decamelize": "^1.1.1", "get-caller-file": "^1.0.1", "os-locale": "^1.4.0", "read-pkg-up": "^1.0.1", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^1.0.2", "which-module": "^1.0.0", "window-size": "^0.2.0", "y18n": "^3.2.1", "yargs-parser": "^4.0.2" }, "dependencies": { "camelcase": { "version": "3.0.0", "bundled": true, "dev": true }, "cliui": { "version": "3.2.0", "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wrap-ansi": "^2.0.0" } }, "window-size": { "version": "0.2.0", "bundled": true, "dev": true } } }, "yargs-parser": { "version": "4.0.2", "bundled": true, "dev": true, "requires": { "camelcase": "^3.0.0" }, "dependencies": { "camelcase": { "version": "3.0.0", "bundled": true, "dev": true } } } } }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, "object.assign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", "dev": true, "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.0", "object-keys": "^1.0.10" } }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" } }, "onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "wordwrap": "~1.0.0" } }, "os-browserify": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", "dev": true }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", "lcid": "^1.0.0", "mem": "^1.1.0" } }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" } }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3" } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.0" } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" } }, "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", "dev": true }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "pbkdf2": { "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", "ripemd160": "^2.0.1", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" } }, "performance-now": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" } }, "pkg-conf": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", "dev": true, "requires": { "find-up": "^2.0.0", "load-json-file": "^2.0.0" }, "dependencies": { "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" } }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } }, "pkg-config": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", "dev": true, "requires": { "debug-log": "^1.0.0", "find-root": "^1.0.0", "xtend": "^4.0.1" } }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { "find-up": "^2.1.0" } }, "pkg-up": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", "dev": true, "requires": { "find-up": "^1.0.0" }, "dependencies": { "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" } } } }, "pluralize": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "dev": true }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "private": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", "dev": true }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, "requires": { "asap": "~2.0.3" } }, "prop-types": { "version": "15.5.10", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "dev": true, "requires": { "fbjs": "^0.8.9", "loose-envify": "^1.3.1" } }, "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "public-encrypt": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1" } }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true }, "query-string": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", "dev": true, "requires": { "strict-uri-encode": "^1.0.0" } }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "randombytes": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "dev": true, "requires": { "safe-buffer": "^5.1.0" } }, "react": { "version": "15.6.1", "resolved": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", "integrity": "sha1-uqhDTsZ4C96ZfNw4C3nNM7ljk98=", "dev": true, "requires": { "create-react-class": "^15.6.0", "fbjs": "^0.8.9", "loose-envify": "^1.1.0", "object-assign": "^4.1.0", "prop-types": "^15.5.10" } }, "react-addons-update": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/react-addons-update/-/react-addons-update-15.6.0.tgz", "integrity": "sha1-Z/jVo9PYrHzPpFJWWoMQBlF450g=", "dev": true, "requires": { "fbjs": "^0.8.9", "object-assign": "^4.1.0" } }, "react-dom": { "version": "15.6.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", "integrity": "sha1-LLDtQZEDjlPCCes6eaI+Kkz5lHA=", "dev": true, "requires": { "fbjs": "^0.8.9", "loose-envify": "^1.1.0", "object-assign": "^4.1.0", "prop-types": "^15.5.10" } }, "react-router": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-2.8.1.tgz", "integrity": "sha1-c+lJH2zrMW0Pd5gpCBhj43juTtc=", "dev": true, "requires": { "history": "^2.1.2", "hoist-non-react-statics": "^1.2.0", "invariant": "^2.2.1", "loose-envify": "^1.2.0", "warning": "^3.0.0" }, "dependencies": { "history": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", "dev": true, "requires": { "deep-equal": "^1.0.0", "invariant": "^2.0.0", "query-string": "^3.0.0", "warning": "^2.0.0" }, "dependencies": { "warning": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", "dev": true, "requires": { "loose-envify": "^1.0.0" } } } }, "warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "dev": true, "requires": { "loose-envify": "^1.0.0" } } } }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" } } } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~1.0.6", "safe-buffer": "~5.1.1", "string_decoder": "~1.0.3", "util-deprecate": "~1.0.1" } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "minimatch": "^3.0.2", "readable-stream": "^2.0.2", "set-immediate-shim": "^1.0.1" } }, "readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "mute-stream": "0.0.5" } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { "resolve": "^1.1.6" } }, "regenerate": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", "dev": true }, "regenerator-runtime": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "^6.18.0", "babel-types": "^6.19.0", "private": "^0.1.6" } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", "regjsparser": "^0.1.4" } }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, "regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } } }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "^1.0.0" } }, "request": { "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "requires": { "aws-sign2": "~0.6.0", "aws4": "^1.2.1", "caseless": "~0.12.0", "combined-stream": "~1.0.5", "extend": "~3.0.0", "forever-agent": "~0.6.1", "form-data": "~2.1.1", "har-validator": "~4.2.1", "hawk": "~3.1.3", "http-signature": "~1.1.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.7", "oauth-sign": "~0.8.1", "performance-now": "^0.2.0", "qs": "~6.4.0", "safe-buffer": "^5.0.1", "stringstream": "~0.0.4", "tough-cookie": "~2.3.0", "tunnel-agent": "^0.6.0", "uuid": "^3.0.0" } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" } }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { "path-parse": "^1.0.5" } }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { "exit-hook": "^1.0.0", "onetime": "^1.0.0" } }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { "align-text": "^0.1.1" } }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" } }, "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { "hash-base": "^2.0.0", "inherits": "^2.0.1" } }, "run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { "once": "^1.3.0" } }, "run-parallel": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz", "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=", "dev": true }, "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", "dev": true }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "schema-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "dev": true, "requires": { "ajv": "^5.0.0" } }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, "sha.js": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", "dev": true, "requires": { "inherits": "^2.0.1" } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" } }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.x.x" } }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { "source-map": "^0.5.6" } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", "dashdash": "^1.12.0", "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "standard": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz", "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==", "dev": true, "requires": { "eslint": "~3.19.0", "eslint-config-standard": "10.2.1", "eslint-config-standard-jsx": "4.0.2", "eslint-plugin-import": "~2.2.0", "eslint-plugin-node": "~4.2.2", "eslint-plugin-promise": "~3.5.0", "eslint-plugin-react": "~6.10.0", "eslint-plugin-standard": "~3.0.1", "standard-engine": "~7.0.0" } }, "standard-engine": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz", "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=", "dev": true, "requires": { "deglob": "^2.1.0", "get-stdin": "^5.0.1", "minimist": "^1.1.0", "pkg-conf": "^2.0.0" }, "dependencies": { "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", "readable-stream": "^2.2.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" } }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" } }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "style-loader": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.8.3.tgz", "integrity": "sha1-9Pkut9tjdodI8VBlzWcA9aHIU1c=", "dev": true, "requires": { "loader-utils": "^0.2.5" }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", "json5": "^0.5.0", "object-assign": "^4.0.1" } } } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, "table": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, "requires": { "ajv": "^4.7.0", "ajv-keywords": "^1.0.0", "chalk": "^1.1.1", "lodash": "^4.0.0", "slice-ansi": "0.0.4", "string-width": "^2.0.0" }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { "co": "^4.6.0", "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, "tapable": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "^1.0.1", "micromatch": "^2.3.11", "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" } }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "timers-browserify": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", "dev": true, "requires": { "setimmediate": "^1.0.4" } }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "requires": { "punycode": "^1.4.1" } }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "tryit": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", "dev": true }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { "prelude-ls": "~1.1.2" } }, "type-detect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", "dev": true }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "ua-parser-js": { "version": "0.7.14", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=", "dev": true }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" }, "dependencies": { "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", "decamelize": "^1.0.0", "window-size": "0.1.0" } } } }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "uglifyjs-webpack-plugin": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { "source-map": "^0.5.6", "uglify-js": "^2.8.29", "webpack-sources": "^1.0.1" } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" }, "dependencies": { "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true } } }, "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", "dev": true, "requires": { "os-homedir": "^1.0.0" } }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { "inherits": "2.0.1" }, "dependencies": { "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true } } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "~1.0.0", "spdx-expression-parse": "~1.0.0" } }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", "dev": true, "requires": { "indexof": "0.0.1" } }, "warning": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", "dev": true, "requires": { "loose-envify": "^1.0.0" } }, "watchpack": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { "async": "^2.1.2", "chokidar": "^1.7.0", "graceful-fs": "^4.1.2" } }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, "webpack": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", "dev": true, "requires": { "acorn": "^5.0.0", "acorn-dynamic-import": "^2.0.0", "ajv": "^5.1.5", "ajv-keywords": "^2.0.0", "async": "^2.1.2", "enhanced-resolve": "^3.4.0", "escope": "^3.6.0", "interpret": "^1.0.0", "json-loader": "^0.5.4", "json5": "^0.5.1", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", "memory-fs": "~0.4.1", "mkdirp": "~0.5.0", "node-libs-browser": "^2.0.0", "source-map": "^0.5.3", "supports-color": "^4.2.1", "tapable": "^0.2.7", "uglifyjs-webpack-plugin": "^0.4.6", "watchpack": "^1.4.0", "webpack-sources": "^1.0.1", "yargs": "^8.0.2" }, "dependencies": { "acorn": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", "dev": true }, "ajv-keywords": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", "dev": true }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { "has-flag": "^2.0.0" } } } }, "webpack-sources": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", "dev": true, "requires": { "source-list-map": "^2.0.0", "source-map": "~0.5.3" } }, "whatwg-fetch": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", "dev": true }, "whatwg-url": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-2.0.1.tgz", "integrity": "sha1-U5ayBD8CDub3BNnEXqhRnnJN5lk=", "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { "mkdirp": "^0.5.1" } }, "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "dev": true }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { "camelcase": "^4.1.0", "cliui": "^3.2.0", "decamelize": "^1.1.1", "get-caller-file": "^1.0.1", "os-locale": "^2.0.0", "read-pkg-up": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^7.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } } } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" } }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { "pify": "^2.0.0" } }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", "path-type": "^2.0.0" } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" } }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } }, "yargs-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } } } } lektor-3.1.3/lektor/admin/package.json000066400000000000000000000034271346506225100177060ustar00rootroot00000000000000{ "name": "lektor", "version": "0.0.0", "private": true, "dependencies": {}, "devDependencies": { "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-istanbul": "^4.1.4", "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-register": "^6.26.0", "bootstrap": "~3.3.0", "chai": "^3.5.0", "css-loader": "^0.9.1", "event-source-polyfill": "^0.0.5", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.2", "font-awesome": "^4.3.0", "history": "^1.17.0", "jquery": "^2.1.3", "jsdomify": "^2.1.0", "json-loader": "^0.5.2", "less": "^1.7.5", "less-loader": "^0.7.8", "mocha": "^3.1.2", "native-promise-only": "^0.7.6-a", "nyc": "^8.4.0", "prop-types": "^15.5.10", "querystring": "^0.2.0", "react": "^15.3.0", "react-addons-update": "^15.3.0", "react-dom": "^15.3.0", "react-router": "^2.6.0", "standard": ">8.5.0", "style-loader": "^0.8.3", "webpack": "^3.6.0" }, "scripts": { "lint": "standard", "test": "nyc mocha static/js/**/*.test.js", "report-coverage": "nyc report --reporter=lcov > coverage.lcov", "webpack": "webpack --config ./static/webpack.config.js --context ./static" }, "babel": { "presets": [ "es2015", "react" ], "plugins": [ "transform-object-rest-spread" ], "env": { "test": { "plugins": [ "istanbul" ] } } }, "nyc": { "extension": [ ".jsx" ], "require": [ "babel-register" ] }, "standard": { "ignore": [ "static/gen/" ], "globals": [ "$LEKTOR_CONFIG" ] }, "author": "", "license": "ISC" } lektor-3.1.3/lektor/admin/static/000077500000000000000000000000001346506225100167015ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/static/js/000077500000000000000000000000001346506225100173155ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/static/js/bootstrap-extras.jsx000066400000000000000000000004761346506225100233730ustar00rootroot00000000000000import $ from 'jquery' $(document).ready(function () { $('[data-toggle=offcanvas]').click(function () { const target = $($(this).attr('data-target') || '.block-offcanvas') const isActive = target.is('.active') target.toggleClass('active', !isActive) $(this).toggleClass('active', !isActive) }) }) lektor-3.1.3/lektor/admin/static/js/components/000077500000000000000000000000001346506225100215025ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/static/js/components/BaseComponent.jsx000066400000000000000000000010111346506225100247560ustar00rootroot00000000000000// the base component. This really should not exist in the first place // but react is a bit meh when it comes to what's on the base component // which breaks super. This is why we do this here. Note that this is // also used by the standalone admin UI app. 'use strict' import React from 'react' class BaseComponent extends React.Component { componentDidMount () { } componentWillUnmount () { } componentDidUpdate () { } componentWillReceiveProps (nextProps) { } } export default BaseComponent lektor-3.1.3/lektor/admin/static/js/components/BreadCrumbs.jsx000066400000000000000000000110401346506225100244150ustar00rootroot00000000000000'use strict' import React from 'react' import RecordComponent from './RecordComponent' import Link from './Link' import utils from '../utils' import i18n from '../i18n' import dialogSystem from '../dialogSystem' import FindFiles from '../dialogs/findFiles' import Publish from '../dialogs/publish' import Refresh from '../dialogs/Refresh' import makeRichPromise from '../richPromise' class BreadCrumbs extends RecordComponent { constructor (props) { super(props) this.state = { recordPathInfo: null } this._onKeyPress = this._onKeyPress.bind(this) } componentDidMount () { super.componentDidMount() this.updateCrumbs() window.addEventListener('keydown', this._onKeyPress) } componentDidUpdate (prevProps, prevState) { super.componentDidUpdate(prevProps, prevState) if (prevProps.params.path !== this.props.params.path) { this.updateCrumbs() } } componentWillUnmount () { window.removeEventListener('keydown', this._onKeyPress) } updateCrumbs () { const path = this.getRecordPath() if (path === null) { this.setState({ recordPathInfo: null }) return } utils.loadData('/pathinfo', { path: path }, null, makeRichPromise) .then((resp) => { this.setState({ recordPathInfo: { path: path, segments: resp.segments } }) }) } _onKeyPress (event) { // meta+g is open find files if (event.which === 71 && utils.isMetaKey(event)) { event.preventDefault() dialogSystem.showDialog(FindFiles) } } _onCloseClick (e) { utils.loadData('/previewinfo', { path: this.getRecordPath(), alt: this.getRecordAlt() }, null, makeRichPromise) .then((resp) => { if (resp.url === null) { window.location.href = utils.getCanonicalUrl('/') } else { window.location.href = utils.getCanonicalUrl(resp.url) } }) } _onFindFiles (e) { dialogSystem.showDialog(FindFiles) } _onRefresh (e) { dialogSystem.showDialog(Refresh) } _onPublish (e) { dialogSystem.showDialog(Publish) } renderGlobalActions () { return (
) } render () { let crumbs = [] const target = this.isRecordPreviewActive() ? '.preview' : '.edit' let lastItem = null if (this.state.recordPathInfo != null) { crumbs = this.state.recordPathInfo.segments.map((item) => { const urlPath = this.getUrlRecordPathWithAlt(item.path) let label = item.label_i18n ? i18n.trans(item.label_i18n) : item.label let className = 'record-crumb' if (!item.exists) { label = item.id className += ' missing-record-crumb' } lastItem = item const adminPath = this.getPathToAdminPage(target, { path: urlPath }) return (
  • {label}
  • ) }) } else { crumbs = (
  • {i18n.trans('BACK_TO_OVERVIEW')}
  • ) } return (
      {this.props.children} {crumbs} {lastItem && lastItem.can_have_children ? (
    • +
    • ) : null} {' ' /* this space is needed for chrome ... */}
    • {this.renderGlobalActions()}
    ) } } export default BreadCrumbs lektor-3.1.3/lektor/admin/static/js/components/Component.jsx000066400000000000000000000042111346506225100241700ustar00rootroot00000000000000'use strict' import dialogSystem from '../dialogSystem' import BaseComponent from './BaseComponent' class Component extends BaseComponent { constructor (props) { super(props) this._unlistenBeforeLeavingRoute = null } /* helper function for forwarding props down the tree */ getRoutingProps () { return { history: this.props.history, location: this.props.location, params: this.props.params, route: this.props.route, routeParams: this.props.routeParams, routes: this.props.routes } } /* helper that can generate a path to a rule */ getPathToAdminPage (name, params) { let parts = this.props.routes.map((x) => x.name) if (name !== null) { if (name.substr(0, 1) === '.') { parts[parts.length - 1] = name.substr(1) } else { parts = name.split('.') } } const rv = [] let node = this.props.routes[0] if (node.name !== parts.shift()) { return null } rv.push(node.path) parts.forEach((part) => { for (let i = 0; i < node.childRoutes.length; i++) { if (node.childRoutes[i].name === part) { node = node.childRoutes[i] rv.push(node.path) return } } node = null }) return rv.join('/').replace(/:[a-zA-Z]+/g, (m) => { const key = m.substr(1) return params[key] || this.props.params[key] }) } /* helper to transition to a specific page */ transitionToAdminPage (name, params) { this.props.history.pushState(null, this.getPathToAdminPage(name, params)) } componentDidMount () { super.componentDidMount() if (this.props.history !== undefined) { this._unlistenBeforeLeavingRoute = this.props.history.listenBeforeLeavingRoute( this.props.route, this.routerWillLeave.bind(this)) } } componentWillUnmount () { super.componentWillUnmount() if (this._unlistenBeforeLeavingRoute) { this._unlistenBeforeLeavingRoute() } } routerWillLeave (nextLocation) { if (dialogSystem.preventNavigation()) { return false } else { dialogSystem.dismissDialog() } } } export default Component lektor-3.1.3/lektor/admin/static/js/components/DialogSlot.jsx000066400000000000000000000026741346506225100243020ustar00rootroot00000000000000'use strict' import React from 'react' import Component from '../components/Component' import dialogSystem from '../dialogSystem' import { DialogChangedEvent } from '../events' import hub from '../hub' class DialogSlot extends Component { constructor (props) { super(props) this.state = { currentDialog: null, currentDialogOptions: null } this.onDialogChanged = this.onDialogChanged.bind(this) } componentDidMount () { super.componentDidMount() hub.subscribe(DialogChangedEvent, this.onDialogChanged) } componentWillUnmount () { super.componentWillUnmount() hub.unsubscribe(DialogChangedEvent, this.onDialogChanged) } onDialogChanged (event) { this.setState({ currentDialog: event.dialog, currentDialogOptions: event.dialogOptions || {} }) } initDialogInstance (dialog) { dialogSystem.notifyDialogInstance(dialog) window.scrollTo(0, 0) } render () { let dialog = null if (this.state.currentDialog) { dialog = this.initDialogInstance(ref)} {...this.getRoutingProps()} {...this.state.currentDialogOptions} /> } else { dialogSystem.notifyDialogInstance(null) } if (!dialog) { return null } return (
    {dialog}
    ) } } export default DialogSlot lektor-3.1.3/lektor/admin/static/js/components/Link.jsx000066400000000000000000000010101346506225100231150ustar00rootroot00000000000000'use strict' import PropTypes from 'prop-types' import React from 'react' import { Link } from 'react-router' import Component from './Component' class LektorLink extends Component { render () { let path = this.props.to if (path.substr(0, 1) !== '/') { path = $LEKTOR_CONFIG.admin_root + '/' + path } return ( {this.props.children} ) } } LektorLink.propTypes = { to: PropTypes.string } module.exports = LektorLink lektor-3.1.3/lektor/admin/static/js/components/RecordComponent.jsx000066400000000000000000000046621346506225100253410ustar00rootroot00000000000000'use strict' import Component from './Component' import utils from '../utils' /* a react component baseclass that has some basic knowledge about the record it works with. */ class RecordComponent extends Component { /* checks if the record preview is active. */ isRecordPreviewActive () { const routes = this.props.routes return ( routes.length > 0 && routes[routes.length - 1].component.name === 'PreviewPage' ) } /* this returns the current record path segments as array */ getRecordPathSegments () { const path = this.props.params.path return path ? utils.urlPathToSegments(path) : [] } _getRecordPathAndAlt () { const path = this.props.params.path if (!path) { return [null, null] } const items = path.split(/\+/, 2) return [utils.urlToFsPath(items[0]), items[1]] } /* this returns the path of the current record. If the current page does * not have a path component then null is returned. */ getRecordPath () { const [path] = this._getRecordPathAndAlt() return path } /* returns the current alt */ getRecordAlt () { const [, alt] = this._getRecordPathAndAlt() return !alt ? '_primary' : alt } /* return the url path for the current record path (or a modified one) by preserving or overriding the alt */ getUrlRecordPathWithAlt (newPath, newAlt) { if (newPath === undefined || newPath === null) { newPath = this.getRecordPath() } if (newAlt === undefined || newAlt === null) { newAlt = this.getRecordAlt() } let rv = utils.fsToUrlPath(newPath) if (newAlt !== '_primary') { rv += '+' + newAlt } return rv } /* returns the parent path if available */ getParentRecordPath () { return utils.getParentFsPath(this.getRecordPath()) } /* returns true if this is the root record */ isRootRecord () { return this.getRecordPath() === '' } /* returns the breadcrumbs for the current record path */ getRecordCrumbs () { const segments = this.getRecordPathSegments() if (segments === null) { return [] } segments.unshift('root') const rv = [] for (let i = 0; i < segments.length; i++) { const curpath = segments.slice(0, i + 1).join(':') rv.push({ id: 'path:' + curpath, urlPath: curpath, segments: segments.slice(1, i + 1), title: segments[i] }) } return rv } } export default RecordComponent lektor-3.1.3/lektor/admin/static/js/components/RecordEditComponent.jsx000066400000000000000000000007061346506225100261420ustar00rootroot00000000000000'use strict' import RecordComponent from './RecordComponent' import i18n from '../i18n' class RecordEditComponent extends RecordComponent { hasPendingChanges () { return false } routerWillLeave (nextLocation) { const rv = super.routerWillLeave(nextLocation) if (rv !== undefined) { return rv } if (this.hasPendingChanges()) { return i18n.trans('UNLOAD_ACTIVE_TAB') } } } export default RecordEditComponent lektor-3.1.3/lektor/admin/static/js/components/ServerStatus.jsx000066400000000000000000000027541346506225100247120ustar00rootroot00000000000000'use strict' import React from 'react' import Component from '../components/Component' import utils from '../utils' import i18n from '../i18n' import makeRichPromise from '../richPromise' class ServerStatus extends Component { constructor (props) { super(props) this.state = { serverIsUp: true, projectId: null } this.intervalId = null this.onInterval = this.onInterval.bind(this) } componentDidMount () { super.componentDidMount() this.intervalId = window.setInterval(this.onInterval, 2000) } componentWillUnmount () { if (this.intervalId !== null) { window.clearInterval(this.intervalId) this.intervalId = null } super.componentWillUnmount() } onInterval () { utils.loadData('/ping', {}, null, makeRichPromise) .then((resp) => { if (this.state.projectId === null) { this.setState({ projectId: resp.project_id }) } this.setState({ serverIsUp: this.state.projectId === resp.project_id }) }, () => { this.setState({ serverIsUp: false }) }) } render () { if (this.state.serverIsUp) { return null } return (

    {i18n.trans('ERROR_SERVER_UNAVAILABLE')}

    {i18n.trans('ERROR_SERVER_UNAVAILABLE_MESSAGE')}

    ) } } export default ServerStatus lektor-3.1.3/lektor/admin/static/js/components/Sidebar.jsx000066400000000000000000000224221346506225100236030ustar00rootroot00000000000000'use strict' /* eslint-env browser */ import React from 'react' import utils from '../utils' import i18n from '../i18n' import hub from '../hub' import { AttachmentsChangedEvent } from '../events' import RecordComponent from './RecordComponent' import Link from '../components/Link' import makeRichPromise from '../richPromise' const getBrowseButtonTitle = () => { const platform = utils.getPlatform() if (platform === 'mac') { return i18n.trans('BROWSE_FS_MAC') } else if (platform === 'windows') { return i18n.trans('BROWSE_FS_WINDOWS') } else { return i18n.trans('BROWSE_FS') } } const CHILDREN_PER_PAGE = 15 class ChildPosCache { constructor () { this.memo = [] } rememberPosition (record, page) { for (let i = 0; i < this.memo.length; i++) { if (this.memo[i][0] === record) { this.memo[i][1] = page return } } this.memo.unshift([record, page]) if (this.memo.length > 5) { this.memo.length = 5 } } getPosition (record, childCount) { for (let i = 0; i < this.memo.length; i++) { if (this.memo[i][0] === record) { let rv = this.memo[i][1] if (childCount !== undefined) { rv = Math.min(rv, Math.ceil(childCount / CHILDREN_PER_PAGE)) } return rv } } return 1 } } class Sidebar extends RecordComponent { constructor (props) { super(props) this.state = this._getInitialState() this.childPosCache = new ChildPosCache() this.onAttachmentsChanged = this.onAttachmentsChanged.bind(this) } _getInitialState () { return { recordAttachments: [], recordChildren: [], recordAlts: [], canHaveAttachments: false, canHaveChildren: false, isAttachment: false, canBeDeleted: false, recordExists: false, lastRecordRequest: null, childrenPage: 1 } } componentDidMount () { super.componentDidMount() this._updateRecordInfo() hub.subscribe(AttachmentsChangedEvent, this.onAttachmentsChanged) } componentDidUpdate (prevProps, prevState) { super.componentDidUpdate(prevProps, prevState) if (prevProps.params.path !== this.props.params.path) { this._updateRecordInfo() } } componentWillUnmount () { super.componentWillUnmount() hub.unsubscribe(AttachmentsChangedEvent, this.onAttachmentsChanged) } onAttachmentsChanged (event) { if (event.recordPath === this.getRecordPath()) { this._updateRecordInfo() } } _updateRecordInfo () { const path = this.getRecordPath() if (path === null) { this.setState(this._getInitialState()) return } this.setState({ lastRecordRequest: path }, () => { utils.loadData('/recordinfo', { path: path }, null, makeRichPromise) .then((resp) => { // we're already fetching something else. if (path !== this.state.lastRecordRequest) { return } const alts = resp.alts alts.sort((a, b) => { const nameA = (a.is_primary ? 'A' : 'B') + i18n.trans(a.name_i18n) const nameB = (b.is_primary ? 'A' : 'B') + i18n.trans(b.name_i18n) return nameA === nameB ? 0 : nameA < nameB ? -1 : 1 }) this.setState({ recordAttachments: resp.attachments, recordChildren: resp.children, recordAlts: alts, canHaveAttachments: resp.can_have_attachments, canHaveChildren: resp.can_have_children, isAttachment: resp.is_attachment, canBeDeleted: resp.can_be_deleted, recordExists: resp.exists, childrenPage: this.childPosCache.getPosition( path, resp.children.length) }) }) }) } fsOpen (event) { event.preventDefault() utils.apiRequest('/browsefs', { data: { path: this.getRecordPath(), alt: this.getRecordAlt() }, // eslint-disable-next-line indent method: 'POST' }, makeRichPromise) .then((resp) => { if (!resp.okay) { alert(i18n.trans('ERROR_CANNOT_BROWSE_FS')) } }) } renderPageActions () { const urlPath = this.getUrlRecordPathWithAlt() const links = [] const deleteLink = null links.push(
  • {this.state.isAttachment ? i18n.trans('EDIT_METADATA') : i18n.trans('EDIT')}
  • ) if (this.state.canBeDeleted) { links.push(
  • {i18n.trans('DELETE')}
  • ) } links.push(
  • {i18n.trans('PREVIEW')}
  • ) if (this.state.recordExists) { links.push(
  • {getBrowseButtonTitle()}
  • ) } if (this.state.canHaveChildren) { links.push(
  • {i18n.trans('ADD_CHILD_PAGE')}
  • ) } if (this.state.canHaveAttachments) { links.push(
  • {i18n.trans('ADD_ATTACHMENT')}
  • ) } const title = this.state.isAttachment ? i18n.trans('ATTACHMENT_ACTIONS') : i18n.trans('PAGE_ACTIONS') return (

    {title}

      {links} {deleteLink}
    ) } renderAlts () { if (this.state.recordAlts.length < 2) { return null } const items = this.state.recordAlts.map((item) => { let title = i18n.trans(item.name_i18n) let className = 'alt' if (item.is_primary) { title += ' (' + i18n.trans('PRIMARY_ALT') + ')' } else if (item.primary_overlay) { title += ' (' + i18n.trans('PRIMARY_OVERLAY') + ')' } if (!item.exists) { className += ' alt-missing' } const path = this.getPathToAdminPage(null, { path: this.getUrlRecordPathWithAlt(null, item.alt) }) return (
  • {title}
  • ) }) return (

    {i18n.trans('ALTS')}

      {items}
    ) } renderChildPagination () { let pages = Math.ceil(this.state.recordChildren.length / CHILDREN_PER_PAGE) if (pages <= 1) { return null } let page = this.state.childrenPage let goToPage = (diff, event) => { event.preventDefault() let newPage = page + diff this.childPosCache.rememberPosition(this.getRecordPath(), newPage) this.setState({ childrenPage: newPage }) } return (
  • {page > 1 ? « : «} {page + ' / ' + pages} {page < pages ? » : »}
  • ) } renderChildActions () { const target = this.isRecordPreviewActive() ? 'preview' : 'edit' const children = this.state.recordChildren.slice( (this.state.childrenPage - 1) * CHILDREN_PER_PAGE, this.state.childrenPage * CHILDREN_PER_PAGE) const items = children.map((child) => { const urlPath = this.getUrlRecordPathWithAlt(child.path) return (
  • {i18n.trans(child.label_i18n)}
  • ) }) if (items.length === 0) { items.push(
  • {i18n.trans('NO_CHILD_PAGES')}
  • ) } return (

    {i18n.trans('CHILD_PAGES')}

      {this.renderChildPagination()} {items}
    ) } renderAttachmentActions () { const items = this.state.recordAttachments.map((atch) => { const urlPath = this.getUrlRecordPathWithAlt(atch.path) return (
  • {atch.id} ({atch.type})
  • ) }) if (items.length === 0) { items.push(
  • {i18n.trans('NO_ATTACHMENTS')}
  • ) } return (

    {i18n.trans('ATTACHMENTS')}

      {items}
    ) } render () { const sections = [] if (this.getRecordPath() !== null) { sections.push(this.renderPageActions()) } sections.push(this.renderAlts()) if (this.state.canHaveChildren) { sections.push(this.renderChildActions()) } if (this.state.canHaveAttachments) { sections.push(this.renderAttachmentActions()) } return
    {sections}
    } } export default Sidebar lektor-3.1.3/lektor/admin/static/js/components/SlideDialog.jsx000066400000000000000000000031211346506225100244050ustar00rootroot00000000000000'use strict' import PropTypes from 'prop-types' import React from 'react' import Component from '../components/Component' import dialogSystem from '../dialogSystem' import i18n from '../i18n' class SlideDialog extends Component { constructor (props) { super(props) this._onKeyPress = this._onKeyPress.bind(this) } componentDidMount () { super.componentDidMount() if (this.props.closeOnEscape) { window.addEventListener('keydown', this._onKeyPress) } } componentWillUnmount () { window.removeEventListener('keydown', this._onKeyPress) super.componentWillUnmount() } _onKeyPress (event) { if (event.which === 27 && this.props.closeOnEscape) { event.preventDefault() dialogSystem.dismissDialog() } } _onCloseClick (event) { event.preventDefault() dialogSystem.dismissDialog() } render () { let { children, title, hasCloseButton, className, ...props } = this.props className = (className || '') + ' sliding-panel container' return (
    { hasCloseButton && { i18n.trans('CLOSE') } }

    {title}

    {children}
    ) } } SlideDialog.propTypes = { title: PropTypes.string, hasCloseButton: PropTypes.bool, closeOnEscape: PropTypes.bool } export default SlideDialog lektor-3.1.3/lektor/admin/static/js/components/ToggleGroup.jsx000066400000000000000000000021131346506225100244630ustar00rootroot00000000000000'use strict' import PropTypes from 'prop-types' import React from 'react' import Component from './Component' class ToggleGroup extends Component { constructor (props) { super(props) this.state = { isVisible: props.defaultVisibility } } toggle (event) { event.preventDefault() this.setState({ isVisible: !this.state.isVisible }) } render () { let { className, groupTitle, children, defaultVisibility, ...otherProps } = this.props className = (className || '') + ' toggle-group' if (this.state.isVisible) { className += ' toggle-group-open' } else { className += ' toggle-group-closed' } return (

    {groupTitle}

    {children}
    ) } } ToggleGroup.propTypes = { groupTitle: PropTypes.string, defaultVisibility: PropTypes.bool } export default ToggleGroup lektor-3.1.3/lektor/admin/static/js/components/ToggleGroup.test.js000066400000000000000000000031351346506225100252560ustar00rootroot00000000000000/* eslint-env mocha */ import { expect } from 'chai' import ToggleGroup from './ToggleGroup' import jsdomify from 'jsdomify' let React, ReactDOM, ReactTestUtils describe('ToggleGroup', () => { beforeEach(() => { jsdomify.create('
    ') React = require('react') ReactDOM = require('react-dom') ReactTestUtils = require('react-dom/test-utils') }) afterEach(() => { jsdomify.destroy() }) describe('when rendered with defaults', () => { beforeEach(() => { ReactDOM.render(
    Rick Astley rulz
    , document.getElementById('container') ) }) it('renders a closed toggle group', () => { expect(document.getElementById('container').innerHTML).to.contain('toggle-group-closed') }) describe('when toggled', () => { beforeEach(() => { ReactTestUtils.Simulate.click(document.querySelector('.toggle')) }) it('renders an open toggle group', () => { expect(document.getElementById('container').innerHTML).to.contain('toggle-group-open') }) }) }) describe('when rendered with a default visibility of true', () => { beforeEach(() => { ReactDOM.render(
    Rick Astley rulz
    , document.getElementById('container') ) }) it('renders an open toggle group', () => { expect(document.getElementById('container').innerHTML).to.contain('toggle-group-open') }) }) }) lektor-3.1.3/lektor/admin/static/js/dialogSystem.jsx000066400000000000000000000024531346506225100225130ustar00rootroot00000000000000'use strict' import hub from './hub' import { DialogChangedEvent } from './events' class DialogSystem { constructor () { this._dialogInstance = null } // invoked by the application once the dialog has been created. notifyDialogInstance (dialog) { this._dialogInstance = dialog } // given a dialog class this will instruct the application to bring up // the dialog and display it. showDialog (dialog, options) { // if the current dialog prevents navigation, then we just silently // will not show the dialog. if (!this.preventNavigation()) { hub.emit(new DialogChangedEvent({ dialog: dialog, dialogOptions: options || {} })) } } // tells the application to dismiss the current dialog. dismissDialog () { if (!this.preventNavigation()) { hub.emit(new DialogChangedEvent({ currentDialog: null })) } } // indicates if a dialog is shown dialogIsOpen () { return !!this._dialogInstance } // returns true if the current dialog prevents navigation. preventNavigation () { return ( this._dialogInstance && this._dialogInstance.preventNavigation !== undefined && this._dialogInstance.preventNavigation() ) } } const dialogSystem = new DialogSystem() export default dialogSystem lektor-3.1.3/lektor/admin/static/js/dialogs/000077500000000000000000000000001346506225100207375ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/static/js/dialogs/Refresh.jsx000066400000000000000000000037651346506225100230760ustar00rootroot00000000000000'use strict' import React from 'react' import Component from '../components/Component' import SlideDialog from '../components/SlideDialog' import utils from '../utils' import i18n from '../i18n' import dialogSystem from '../dialogSystem' import makeRichPromise from '../richPromise' class Refresh extends Component { constructor (props) { super(props) this.state = { currentState: 'IDLE' } } componentDidMount () { super.componentDidMount() this.syncDialog() } preventNavigation () { return !this.isSafeToNavigate() } isSafeToNavigate () { return this.state.currentState === 'IDLE' || this.state.currentState === 'DONE' } onRefresh () { this.setState({ currentState: 'CLEANING' }) utils.apiRequest('/clean', { method: 'POST' }, makeRichPromise).then((resp) => { this.setState({ currentState: 'DONE' }) }) } onCancel () { dialogSystem.dismissDialog() } render () { let progress = null if (this.state.currentState !== 'IDLE') { progress = (

    {this.state.currentState !== 'DONE' ? i18n.trans('CURRENTLY_REFRESHING_BUILD') : i18n.trans('REFRESHING_BUILD_DONE')}

    ) } return (

    {i18n.trans('REFRESH_BUILD_NOTE')}

    {progress}
    ) } } export default Refresh lektor-3.1.3/lektor/admin/static/js/dialogs/errorDialog.jsx000066400000000000000000000016211346506225100237360ustar00rootroot00000000000000'use strict' import PropTypes from 'prop-types' import React from 'react' import RecordComponent from '../components/RecordComponent' import SlideDialog from '../components/SlideDialog' import dialogSystem from '../dialogSystem' import i18n from '../i18n' class ErrorDialog extends RecordComponent { onClose () { dialogSystem.dismissDialog() } render () { return (

    {i18n.trans('ERROR_OCURRED')}{': '} {i18n.trans('ERROR_' + this.props.error.code)}

    ) } } ErrorDialog.propTypes = { error: PropTypes.object } export default ErrorDialog lektor-3.1.3/lektor/admin/static/js/dialogs/findFiles.jsx000066400000000000000000000063641346506225100234010ustar00rootroot00000000000000'use strict' import React from 'react' import RecordComponent from '../components/RecordComponent' import SlideDialog from '../components/SlideDialog' import utils from '../utils' import i18n from '../i18n' import dialogSystem from '../dialogSystem' import makeRichPromise from '../richPromise' class FindFiles extends RecordComponent { constructor (props) { super(props) this.state = { query: '', currentSelection: -1, results: [] } } componentDidMount () { super.componentDidMount() this.refs.q.focus() } onInputChange (e) { const q = e.target.value if (q === '') { this.setState({ query: '', results: [], currentSelection: -1 }) } else { this.setState({ query: q }) utils.apiRequest('/find', { data: { q: q, alt: this.getRecordAlt(), lang: i18n.currentLanguage }, method: 'POST' }, makeRichPromise).then((resp) => { this.setState({ results: resp.results, currentSelection: Math.min(this.state.currentSelection, resp.results.length - 1) }) }) } } onInputKey (e) { let sel = this.state.currentSelection const max = this.state.results.length if (e.which === 40) { e.preventDefault() sel = (sel + 1) % max } else if (e.which === 38) { e.preventDefault() sel = (sel - 1 + max) % max } else if (e.which === 13) { this.onActiveItem(this.state.currentSelection) } this.setState({ currentSelection: sel }) } onActiveItem (index) { const item = this.state.results[index] if (item !== undefined) { const target = this.isRecordPreviewActive() ? '.preview' : '.edit' const urlPath = this.getUrlRecordPathWithAlt(item.path) dialogSystem.dismissDialog() this.transitionToAdminPage(target, { path: urlPath }) } } selectItem (index) { this.setState({ currentSelection: Math.min(index, this.state.results.length - 1) }) } renderResults () { const rv = this.state.results.map((result, idx) => { const parents = result.parents.map((item, idx) => { return ( {item.title} ) }) return (
  • {parents} {result.title}
  • ) }) return (
      {rv}
    ) } render () { return (
    {this.renderResults()}
    ) } } export default FindFiles lektor-3.1.3/lektor/admin/static/js/dialogs/publish.jsx000066400000000000000000000101151346506225100231310ustar00rootroot00000000000000'use strict' /* eslint-env browser */ import React from 'react' import Component from '../components/Component' import SlideDialog from '../components/SlideDialog' import utils from '../utils' import i18n from '../i18n' import dialogSystem from '../dialogSystem' import makeRichPromise from '../richPromise' class Publish extends Component { constructor (props) { super(props) this.state = { servers: [], activeTarget: null, log: [], currentState: 'IDLE' } } componentDidMount () { super.componentDidMount() this.syncDialog() } componentWillUnmount () { super.componentWillUnmount() } componentWillReceiveProps (nextProps) { this.syncDialog() } preventNavigation () { return !this.isSafeToPublish() } syncDialog () { utils.loadData('/servers', {}, null, makeRichPromise) .then(({ servers }) => { this.setState({ servers: servers, activeTarget: servers && servers.length ? servers[0].id : null }) }) } isSafeToPublish () { return this.state.currentState === 'IDLE' || this.state.currentState === 'DONE' } onPublish () { if (this.isSafeToPublish()) { this._beginBuild() } } onCancel () { dialogSystem.dismissDialog() } _beginBuild () { this.setState({ log: [], currentState: 'BUILDING' }) utils.apiRequest('/build', { method: 'POST' }, makeRichPromise).then((resp) => { this._beginPublish() }) } _beginPublish () { this.setState({ currentState: 'PUBLISH' }) const es = new EventSource(utils.getApiUrl('/publish') + '?server=' + encodeURIComponent(this.state.activeTarget)) es.addEventListener('message', (event) => { const data = JSON.parse(event.data) if (data === null) { this.setState({ currentState: 'DONE' }) es.close() } else { this.setState({ log: this.state.log.concat(data.msg) }) } }) } onSelectServer (event) { this.setState({ activeTarget: event.target.value }) } componentDidUpdate () { super.componentDidUpdate() const node = this.refs.log if (node) { node.scrollTop = node.scrollHeight } } render () { const servers = this.state.servers.map((server) => { return ( ) }) let progress = null if (this.state.currentState !== 'IDLE') { progress = (

    {this.state.currentState !== 'DONE' ? i18n.trans('CURRENTLY_PUBLISHING') : i18n.trans('PUBLISH_DONE')}

    {i18n.trans('STATE') + ': ' +
                i18n.trans('PUBLISH_STATE_' + this.state.currentState)}
    {this.state.log.join('\n')}
    ) } return (

    {i18n.trans('PUBLISH_NOTE')}

    {i18n.trans('PUBLISH_SERVER')}
    {progress}
    ) } } export default Publish lektor-3.1.3/lektor/admin/static/js/events.jsx000066400000000000000000000015731346506225100213550ustar00rootroot00000000000000'use strict' class Event { get type () { return Object.getPrototypeOf(this).constructor.getEventType() } toString () { return '[Event ' + this.type + ']' } } Event.getEventType = function () { return this.name } class RecordEvent extends Event { constructor (options) { super(options = options || {}) this.recordPath = options.recordPath } } class AttachmentsChangedEvent extends RecordEvent { constructor (options) { super(options = options || {}) this.attachmentsAdded = options.attachmentsAdded || [] this.attachmentsRemoved = options.attachmentsRemoved || [] } } class DialogChangedEvent extends Event { constructor (options) { super(options = options || {}) this.dialog = options.dialog this.dialogOptions = options.dialogOptions } } export { Event, RecordEvent, AttachmentsChangedEvent, DialogChangedEvent } lektor-3.1.3/lektor/admin/static/js/hub.jsx000066400000000000000000000025051346506225100206230ustar00rootroot00000000000000'use strict' class Hub { constructor () { this._subscriptions = {} } /* subscribes a callback to an event */ subscribe (event, callback) { if (typeof event !== 'string') { event = event.getEventType() } let subs = this._subscriptions[event] if (subs === undefined) { this._subscriptions[event] = subs = [] } for (let i = 0; i < subs.length; i++) { if (subs[i] === callback) { return false } } subs.push(callback) return true } /* unsubscribes a callback from an event */ unsubscribe (event, callback) { if (typeof event !== 'string') { event = event.getEventType() } const subs = this._subscriptions[event] if (subs === undefined) { return false } for (let i = 0; i < subs.length; i++) { if (subs[i] === callback) { subs.splice(i, 1) return true } } return false } /* emits an event with some parameters */ emit (event) { const subs = this._subscriptions[event.type] if (subs !== undefined) { subs.forEach((callback) => { try { callback(event) } catch (e) { console.log('Event callback failed: ', e, 'callback=', callback, 'event=', event) } }) } } } const hub = new Hub() export default hub lektor-3.1.3/lektor/admin/static/js/i18n.jsx000066400000000000000000000014571346506225100206310ustar00rootroot00000000000000const loadTranslations = () => { const ctx = require.context('../../../translations', true, /\.json$/) const rv = {} ctx.keys().forEach((key) => { const langIdMatch = key.match(/([a-z]+)/) rv[langIdMatch[1]] = ctx(key) }) return rv } const i18n = { translations: loadTranslations(), currentLanguage: 'en', setLanguageFromLocale (locale) { if (locale) { let lang = locale.split(/[-_]/)[0].toLowerCase() if (this.translations[lang] !== undefined) { this.currentLanguage = lang } } }, trans (key) { let rv if (typeof key === 'object') { rv = key[i18n.currentLanguage] if (rv === undefined) { rv = key.en } return rv } return i18n.translations[i18n.currentLanguage][key] || key } } export default i18n lektor-3.1.3/lektor/admin/static/js/main.jsx000066400000000000000000000040411346506225100207660ustar00rootroot00000000000000'use strict' import PropTypes from 'prop-types' import React from 'react' import ReactDOM from 'react-dom' import { Router, Route, IndexRoute } from 'react-router' import Component from './components/Component' import i18n from './i18n' import { useBeforeUnload } from 'history' import createBrowserHistory from 'history/lib/createBrowserHistory' /* eslint-disable no-unused-vars */ import Bootstrap from 'bootstrap' import BootstrapExtras from './bootstrap-extras' import FACss from 'font-awesome/css/font-awesome.css' // polyfill for internet explorer import PromiseOnly from 'native-promise-only' import EventSource from 'event-source-polyfill' /* eslint-enable no-unused-vars */ // route targets import App from './views/App' import Dash from './views/Dash' import EditPage from './views/EditPage' import DeletePage from './views/DeletePage' import PreviewPage from './views/PreviewPage' import AddChildPage from './views/AddChildPage' import AddAttachmentPage from './views/AddAttachmentPage' i18n.currentLanguage = $LEKTOR_CONFIG.lang class BadRoute extends Component { render () { return (

    Nothing to see here

    There is really nothing to see here.

    ) } } BadRoute.contextTypes = { router: PropTypes.func } const routes = (() => { // route setup return ( ) })() const dash = document.getElementById('dash') if (dash) { ReactDOM.render(( {routes} ), dash) } lektor-3.1.3/lektor/admin/static/js/metaformat.jsx000066400000000000000000000043201346506225100222010ustar00rootroot00000000000000'use strict' const lineIsDashes = (line) => { line = line.match(/^\s*(.*?)\s*$/)[1] return line.length >= 3 && line === (new Array(line.length + 1)).join('-') } const processBuf = (buf) => { const lines = buf.map((line) => { if (lineIsDashes(line)) { line = line.substr(1) } return line }) if (lines.length > 0) { const lastLine = lines[lines.length - 1] if (lastLine.substr(lastLine.length - 1) === '\n') { lines[lines.length - 1] = lastLine.substr(0, lastLine.length - 1) } } return lines } const tokenize = (lines) => { let key = null let buf = [] let wantNewline = false const rv = [] const flushItem = () => { rv.push([key, processBuf(buf)]) key = null buf = [] } for (let i = 0; i < lines.length; i++) { const line = lines[i].match(/^(.*?)(\r?\n)*$/m)[1] + '\n' if (line.match(/^(.*?)\s*$/m)[1] === '---') { wantNewline = false if (key !== null) { flushItem() } } else if (key !== null) { if (wantNewline) { wantNewline = false if (line.match(/^\s*$/)) { continue } } buf.push(line) } else { const bits = line.split(':') if (bits.length >= 2) { key = bits.shift().match(/^\s*(.*?)\s*$/m)[1] const firstBit = bits.join(':').match(/^[\t ]*(.*?)[\t ]*$/m)[1] if (!firstBit.match(/^\s*$/)) { buf = [firstBit] } else { buf = [] wantNewline = true } } } } if (key !== null) { flushItem() } return rv } const serialize = (blocks) => { const rv = [] blocks.forEach((item, idx) => { const [key, value] = item if (idx > 0) { rv.push('---\n') } if (value.match(/([\r\n]|(^[\t ])|([\t ]$))/m)) { rv.push(key + ':\n') rv.push('\n') const lines = value.split(/\n/) if (lines[lines.length - 1] === '') { lines.pop() } lines.forEach((line, idx, arr) => { if (lineIsDashes(line)) { line = '-' + line } rv.push(line + '\n') }) } else { rv.push(key + ': ' + value + '\n') } }) return rv } export default { tokenize: tokenize, serialize: serialize } lektor-3.1.3/lektor/admin/static/js/richPromise.jsx000066400000000000000000000013021346506225100223230ustar00rootroot00000000000000import ErrorDialog from './dialogs/errorDialog' import dialogSystem from './dialogSystem' const bringUpDialog = (error) => { if (!dialogSystem.dialogIsOpen()) { dialogSystem.showDialog(ErrorDialog, { error: error }) } } const makeRichPromise = (callback, fallback = bringUpDialog) => { const rv = new Promise(callback) const then = rv.then let hasRejectionHandler = false rv.then(null, (value) => { if (!hasRejectionHandler) { return fallback(value) } }) rv.then = (onFulfilled, onRejected) => { if (onRejected) { hasRejectionHandler = true } return then.call(rv, onFulfilled, onRejected) } return rv } export default makeRichPromise lektor-3.1.3/lektor/admin/static/js/userLabel.jsx000066400000000000000000000013671346506225100217700ustar00rootroot00000000000000'use strict' import React from 'react' import i18n from './i18n' const userLabel = { // formats a user label appropriately format (inputConfig) { let label = null if (typeof inputConfig === 'string') { label = inputConfig } else { label = i18n.trans(inputConfig) } if (!label) { return } let iconData = label.match(/^\[\[\s*(.*?)\s*(;\s*(.*?))?\s*\]\]$/) // eslint-disable-line no-useless-escape if (iconData) { let className = 'fa fa-' + iconData[1] if ((iconData[3] || '').match(/90|180|270/)) { className += ' fa-rotate-' + iconData[3] } return } return {label} } } export default userLabel lektor-3.1.3/lektor/admin/static/js/utils.jsx000066400000000000000000000252271346506225100212130ustar00rootroot00000000000000import jQuery from 'jquery' const slug = (string, opts) => { opts = opts || {} string = string.toString() if (typeof opts === 'string') { opts = { replacement: opts } } opts.mode = opts.mode || slug.defaults.mode const defaults = slug.defaults.modes[opts.mode]; ['replacement', 'multicharmap', 'charmap', 'remove'].forEach((key) => { opts[key] = opts[key] || defaults[key] }) if (typeof opts.symbols === 'undefined') { opts.symbols = defaults.symbols } const lengths = [] Object.keys(opts.multicharmap).forEach((key) => { const len = key.length if (lengths.indexOf(len) === -1) { lengths.push(len) } }) let result = '' for (let char, i = 0, l = string.length; i < l; i++) { char = string[i] if (!lengths.some((len) => { const str = string.substr(i, len) if (opts.multicharmap[str]) { i += len - 1 char = opts.multicharmap[str] return true } else return false })) { if (opts.charmap[char]) { char = opts.charmap[char] } } char = char.replace(/[^\w\s\-._~]/g, '') // allowed if (opts.remove) char = char.replace(opts.remove, '') // add flavour result += char } result = result.replace(/^\s+|\s+$/g, '') // trim leading/trailing spaces result = result.replace(/[-\s]+/g, opts.replacement) // convert spaces return result.replace(opts.replacement + '$', '') // remove trailing separator } slug.defaults = { mode: 'pretty' } slug.multicharmap = slug.defaults.multicharmap = { '<3': 'love', '&&': 'and', '||': 'or', 'w/': 'with' } // https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/media/js/urlify.js slug.charmap = slug.defaults.charmap = { // latin 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'Ae', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': 'Oe', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'Ue', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'ae', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'oe', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'ue', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y', 'ẞ': 'SS', // greek 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y', // turkish 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ğ': 'g', 'Ğ': 'G', // russian 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': 'u', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', 'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': 'U', 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya', // ukranian 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i', 'ї': 'yi', 'ґ': 'g', // czech 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z', // polish 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ś': 's', 'ź': 'z', 'ż': 'z', 'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ś': 'S', 'Ź': 'Z', 'Ż': 'Z', // latvian 'ā': 'a', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', 'ņ': 'n', 'ū': 'u', 'Ā': 'A', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L', 'Ņ': 'N', 'Ū': 'U', // lithuanian 'ė': 'e', 'į': 'i', 'ų': 'u', 'Ė': 'E', 'Į': 'I', 'Ų': 'U', // romanian 'ț': 't', 'Ț': 'T', 'ţ': 't', 'Ţ': 'T', 'ș': 's', 'Ș': 'S', 'ă': 'a', 'Ă': 'A', // currency '€': 'euro', '₢': 'cruzeiro', '₣': 'french franc', '£': 'pound', '₤': 'lira', '₥': 'mill', '₦': 'naira', '₧': 'peseta', '₨': 'rupee', '₩': 'won', '₪': 'new shequel', '₫': 'dong', '₭': 'kip', '₮': 'tugrik', '₯': 'drachma', '₰': 'penny', '₱': 'peso', '₲': 'guarani', '₳': 'austral', '₴': 'hryvnia', '₵': 'cedi', '¢': 'cent', '¥': 'yen', '元': 'yuan', '円': 'yen', '﷼': 'rial', '₠': 'ecu', '¤': 'currency', '฿': 'baht', '$': 'dollar', '₹': 'indian rupee', // symbols '©': '(c)', 'œ': 'oe', 'Œ': 'OE', '∑': 'sum', '®': '(r)', '†': '+', '“': '"', '”': '"', '‘': "'", '’': "'", '∂': 'd', 'ƒ': 'f', '™': 'tm', '℠': 'sm', '…': '...', '˚': 'o', 'º': 'o', 'ª': 'a', '•': '*', '∆': 'delta', '∞': 'infinity', '♥': 'love', '&': 'and', '|': 'or', '<': 'less', '>': 'greater', '=': 'equals' } slug.defaults.modes = { pretty: { replacement: '-', symbols: true, remove: /[.]/g, charmap: slug.defaults.charmap, multicharmap: slug.defaults.multicharmap } } const utils = { slugify: slug, getCanonicalUrl (localPath) { return $LEKTOR_CONFIG.site_root.match(/^(.*?)\/*$/)[1] + '/' + utils.stripLeadingSlash(localPath) }, isValidUrl (url) { return !!url.match(/^(https?|ftp):\/\/\S+$/) }, stripLeadingSlash (string) { return string.match(/^\/*(.*?)$/)[1] }, stripTrailingSlash (string) { return string.match(/^(.*?)\/*$/)[1] }, joinFsPath (a, b) { return utils.stripTrailingSlash(a) + '/' + utils.stripLeadingSlash(b) }, flipSetValue (originalSet, value, isActive) { if (isActive) { return utils.addToSet(originalSet || [], value) } else { return utils.removeFromSet(originalSet || [], value) } }, addToSet (originalSet, value) { for (let i = 0; i < originalSet.length; i++) { if (originalSet[i] === value) { return originalSet } } const rv = originalSet.slice() rv.push(value) return rv }, removeFromSet (originalSet, value) { let rv = null let off = 0 for (let i = 0; i < originalSet.length; i++) { if (originalSet[i] === value) { if (rv === null) { rv = originalSet.slice() } rv.splice(i - (off++), 1) } } return (rv === null) ? originalSet : rv }, urlPathsConsideredEqual (a, b) { if ((a == null) || (b == null)) { return false } return utils.stripTrailingSlash(a) === utils.stripTrailingSlash(b) }, fsPathFromAdminObservedPath (adminPath) { const base = $LEKTOR_CONFIG.site_root.match(/^(.*?)\/*$/)[1] if (adminPath.substr(0, base.length) !== base) { return null } return '/' + adminPath.substr(base.length).match(/^\/*(.*?)\/*$/)[1] }, getParentFsPath (fsPath) { return fsPath.match(/^(.*?)\/([^/]*)$/)[1] }, getApiUrl (url) { return $LEKTOR_CONFIG.admin_root + '/api' + url }, loadData (url, params, options, createPromise) { options = options || {} return createPromise((resolve, reject) => { jQuery.ajax({ url: utils.getApiUrl(url), data: params, method: options.method || 'GET' }).done((data) => { resolve(data) }).fail(() => { reject({ code: 'REQUEST_FAILED' }) }) }) }, apiRequest (url, options, createPromise) { options = options || {} options.url = utils.getApiUrl(url) if (options.json !== undefined) { options.data = JSON.stringify(options.json) options.contentType = 'application/json' delete options.json } if (!options.method) { options.method = 'GET' } return createPromise((resolve, reject) => { jQuery.ajax(options) .done((data) => { resolve(data) }) .fail(() => { reject({ code: 'REQUEST_FAILED' }) }) }) }, fsToUrlPath (fsPath) { let segments = fsPath.match(/^\/*(.*?)\/*$/)[1].split('/') if (segments.length === 1 && segments[0] === '') { segments = [] } segments.unshift('root') return segments.join(':') }, urlToFsPath (urlPath) { const segments = urlPath.match(/^:*(.*?):*$/)[1].split(':') if (segments.length < 1 || segments[0] !== 'root') { return null } segments[0] = '' return segments.join('/') }, urlPathToSegments (urlPath) { if (!urlPath) { return null } const rv = urlPath.match(/^:*(.*?):*$/)[1].split('/') if (rv.length >= 1 && rv[0] === 'root') { return rv.slice(1) } return null }, scrolledToBottom () { return document.body.offsetHeight + document.body.scrollTop >= document.body.scrollHeight }, getPlatform () { if (navigator.appVersion.indexOf('Win') !== -1) { return 'windows' } else if (navigator.appVersion.indexOf('Mac') !== -1) { return 'mac' } else if (navigator.appVersion.indexOf('X11') !== -1 || navigator.appVersion.indexOf('Linux') !== -1) { return 'linux' } return 'other' }, isMetaKey (event) { if (utils.getPlatform() === 'mac') { return event.metaKey } else { return event.ctrlKey } } } export default utils lektor-3.1.3/lektor/admin/static/js/views/000077500000000000000000000000001346506225100204525ustar00rootroot00000000000000lektor-3.1.3/lektor/admin/static/js/views/AddAttachmentPage.jsx000066400000000000000000000061221346506225100244770ustar00rootroot00000000000000'use strict' /* eslint-env browser */ import React from 'react' import RecordComponent from '../components/RecordComponent' import hub from '../hub' import { AttachmentsChangedEvent } from '../events' import utils from '../utils' import i18n from '../i18n' import makeRichPromise from '../richPromise' class AddAttachmentPage extends RecordComponent { constructor (props) { super(props) this.state = { newAttachmentInfo: null, currentFiles: [], isUploading: false, currentProgress: 0 } } componentDidMount () { this.syncDialog() } componentWillReceiveProps (nextProps) { this.syncDialog() } syncDialog () { utils.loadData('/newattachment', { path: this.getRecordPath() }, null, makeRichPromise) .then((resp) => { this.setState({ newAttachmentInfo: resp }) }) } uploadFile (event) { this.refs.file.click() } onUploadProgress (event) { const newProgress = Math.round((event.loaded * 100) / event.total) if (newProgress !== this.state.currentProgress) { this.setState({ currentProgress: newProgress }) } } onUploadComplete (resp, event) { this.setState({ isUploading: false, newProgress: 100 }, () => { hub.emit(new AttachmentsChangedEvent({ recordPath: this.getRecordPath(), attachmentsAdded: resp.buckets.map((bucket) => { return bucket.stored_filename }) })) }) } onFileSelected (event) { if (this.state.isUploading) { return } const files = this.refs.file.files this.setState({ currentFiles: Array.prototype.slice.call(files, 0), isUploading: true }) const formData = new FormData() formData.append('path', this.getRecordPath()) for (let i = 0; i < files.length; i++) { formData.append('file', files[i], files[i].name) } const xhr = new XMLHttpRequest() xhr.open('POST', utils.getApiUrl('/newattachment')) xhr.onload = (event) => { this.onUploadComplete(JSON.parse(xhr.responseText), event) } xhr.upload.onprogress = (event) => { this.onUploadProgress(event) } xhr.send(formData) } renderCurrentFiles () { const files = this.state.currentFiles.map((file) => { return (
  • {file.name} ({file.type})
  • ) }) return
      {files}
    } render () { const nai = this.state.newAttachmentInfo if (!nai) { return null } return (

    {i18n.trans('ADD_ATTACHMENT_TO').replace('%s', nai.label)}

    {i18n.trans('ADD_ATTACHMENT_NOTE')}

    {this.renderCurrentFiles()}

    {i18n.trans('PROGRESS')}: {this.state.currentProgress}%

    ) } } export default AddAttachmentPage lektor-3.1.3/lektor/admin/static/js/views/AddChildPage.jsx000066400000000000000000000126151346506225100234360ustar00rootroot00000000000000'use strict' /* eslint-env browser */ import React from 'react' import RecordComponent from '../components/RecordComponent' import i18n from '../i18n' import userLabel from '../userLabel' import utils from '../utils' import widgets from '../widgets' import makeRichPromise from '../richPromise' const getGoodDefaultModel = (models) => { if (models.page !== undefined) { return 'page' } const choices = Object.keys(models) choices.sort() return choices[0] } class AddChildPage extends RecordComponent { constructor (props) { super(props) this.state = { newChildInfo: null, id: undefined, selectedModel: null } } componentDidMount () { super.componentDidMount() this.syncDialog() } componentWillReceiveProps (nextProps) { super.componentWillReceiveProps(nextProps) this.syncDialog() } syncDialog () { utils.loadData('/newrecord', { path: this.getRecordPath() }, null, makeRichPromise) .then((resp) => { let selectedModel = resp.implied_model if (!selectedModel) { selectedModel = getGoodDefaultModel(resp.available_models) } this.setState({ newChildInfo: resp, id: undefined, primary: undefined, selectedModel: selectedModel }) }) } onValueChange (id, value) { const obj = {} obj[id] = value this.setState(obj) } getAvailableModels () { const rv = [] for (const key in this.state.newChildInfo.available_models) { const model = this.state.newChildInfo.available_models[key] rv.push(model) } rv.sort((a, b) => { return a.name.toLowerCase().localeCompare(b.name.toLowerCase()) }) return rv } onModelSelected (event) { this.setState({ selectedModel: event.target.value }) } getImpliedId () { return utils.slugify(this.state.primary || '').toLowerCase() } getPrimaryField () { const model = this.state.selectedModel return this.state.newChildInfo.available_models[model].primary_field } createRecord () { const errMsg = (text) => { alert(i18n.trans('ERROR_PREFIX') + text) } const id = this.state.id || this.getImpliedId() if (!id) { errMsg(i18n.trans('ERROR_NO_ID_PROVIDED')) return } const data = {} const params = { id: id, path: this.getRecordPath(), data: data } if (!this.state.newChildInfo.implied_model) { data['_model'] = this.state.selectedModel } const primaryField = this.getPrimaryField() if (primaryField) { data[primaryField.name] = this.state.primary } utils.apiRequest('/newrecord', { json: params, method: 'POST' }, makeRichPromise) .then((resp) => { if (resp.exists) { errMsg(i18n.trans('ERROR_PAGE_ID_DUPLICATE').replace('%s', id)) } else if (!resp.valid_id) { errMsg(i18n.trans('ERROR_INVALID_ID').replace('%s', id)) } else { const urlPath = this.getUrlRecordPathWithAlt(resp.path) this.transitionToAdminPage('.edit', { path: urlPath }) } }) } renderFields () { const fields = [] if (!this.state.newChildInfo.implied_model) { const choices = this.getAvailableModels().map((model) => { return ( ) }) fields.push(
    {i18n.trans('MODEL')}
    ) } const addField = (id, field, placeholder) => { let value = this.state[id] const Widget = widgets.getWidgetComponentWithFallback(field.type) if (Widget.deserializeValue) { value = Widget.deserializeValue(value, field.type) } fields.push(
    {userLabel.format(field.label_i18n || field.label)}
    ) } const primaryField = this.getPrimaryField() if (primaryField) { addField('primary', primaryField) } addField('id', { name: '_id', label: i18n.trans('ID'), type: { name: 'slug', widget: 'slug' } }, this.getImpliedId()) return fields } render () { const nci = this.state.newChildInfo if (!nci) { return null } return (

    {i18n.trans('ADD_CHILD_PAGE_TO').replace( '%s', this.state.newChildInfo.label)}

    {i18n.trans('ADD_CHILD_PAGE_NOTE')}

    {this.renderFields()}
    ) } } export default AddChildPage lektor-3.1.3/lektor/admin/static/js/views/App.jsx000066400000000000000000000025571346506225100217310ustar00rootroot00000000000000'use strict' import React from 'react' import BreadCrumbs from '../components/BreadCrumbs' import Sidebar from '../components/Sidebar' import Component from '../components/Component' import DialogSlot from '../components/DialogSlot' import ServerStatus from '../components/ServerStatus' class App extends Component { render () { return (
    {this.props.children}
    ) } } export default App lektor-3.1.3/lektor/admin/static/js/views/Dash.jsx000066400000000000000000000005131346506225100220560ustar00rootroot00000000000000'use strict' import Component from '../components/Component' class Dash extends Component { componentDidMount () { super.componentDidMount() const rootPreview = $LEKTOR_CONFIG.admin_root + '/root/preview' this.props.history.pushState(null, rootPreview) } render () { return null } } export default Dash lektor-3.1.3/lektor/admin/static/js/views/DeletePage.jsx000066400000000000000000000143451346506225100232060ustar00rootroot00000000000000'use strict' import React from 'react' import RecordComponent from '../components/RecordEditComponent' import utils from '../utils' import i18n from '../i18n' import hub from '../hub' import { AttachmentsChangedEvent } from '../events' import makeRichPromise from '../richPromise' class DeletePage extends RecordComponent { constructor (props) { super(props) this.state = { recordInfo: null, deleteMasterRecord: true } } componentDidMount () { super.componentDidMount() this.syncDialog() } componentWillReceiveProps (nextProps) { super.componentWillReceiveProps(nextProps) this.syncDialog() } syncDialog () { utils.loadData('/recordinfo', { path: this.getRecordPath() }, null, makeRichPromise) .then((resp) => { this.setState({ recordInfo: resp, deleteMasterRecord: this.isPrimary() }) }) } deleteRecord (event) { const path = this.getRecordPath() const parent = utils.getParentFsPath(path) let targetPath if (parent === null) { targetPath = 'root' } else { targetPath = this.getUrlRecordPathWithAlt(parent) } utils.apiRequest('/deleterecord', { data: { path: path, alt: this.getRecordAlt(), delete_master: this.state.deleteMasterRecord ? '1' : '0' }, // eslint-disable-next-line indent method: 'POST' }, makeRichPromise) .then((resp) => { if (this.state.recordInfo.is_attachment) { hub.emit(new AttachmentsChangedEvent({ recordPath: this.getParentRecordPath(), attachmentsRemoved: [this.state.recordInfo.id] })) } this.transitionToAdminPage('.edit', { path: targetPath }) }) } cancelDelete (event) { const urlPath = this.getUrlRecordPathWithAlt() this.transitionToAdminPage('.edit', { path: urlPath }) } onDeleteAllAltsChange (event) { this.setState({ deleteMasterRecord: event.target.value === '1' }) } isPrimary () { return this.getRecordAlt() === '_primary' } render () { const ri = this.state.recordInfo if (!ri || !ri.can_be_deleted) { return null } const elements = [] let children = [] const alts = [] let attachments = [] let altInfo = null let altCount = 0 for (let i = 0; i < ri.alts.length; i++) { if (ri.alts[i].alt === this.getRecordAlt()) { altInfo = ri.alts[i] } if (ri.alts[i].exists) { altCount++ } } if (ri.is_attachment) { elements.push(

    {this.isPrimary() ? i18n.trans('DELETE_ATTACHMENT_PROMPT') : i18n.trans('DELETE_ATTACHMENT_ALT_PROMPT')}{' '}

    ) } else { elements.push(

    {this.isPrimary() ? i18n.trans('DELETE_PAGE_PROMPT') : i18n.trans('DELETE_PAGE_ALT_PROMPT')}{' '} {ri.children.length > 0 && this.isPrimary() ? i18n.trans('DELETE_PAGE_CHILDREN_WARNING') : null}

    ) if (ri.children.length > 0) { children = ri.children.map((child) => { return (
  • {i18n.trans(child.label_i18n)}
  • ) }) if (ri.child_count > children.length) { children.push(
  • ...
  • ) } } attachments = ri.attachments.map((atch) => { return (
  • {atch.id} ({atch.type})
  • ) }) } if (altCount > 1 && this.getRecordAlt() === '_primary') { ri.alts.forEach((item) => { if (!item.exists) { return } let title = i18n.trans(item.name_i18n) if (item.is_primary) { title += ' (' + i18n.trans('PRIMARY_ALT') + ')' } else if (item.primary_overlay) { title += ' (' + i18n.trans('PRIMARY_OVERLAY') + ')' } alts.push(
  • {title}
  • ) }) elements.push(

    {i18n.trans('DELETE_PRIMARY_ALT_INFO')}

    ) elements.push(
    • {' '}
    • {' '}
    ) } let label = ri.label_i18n ? i18n.trans(ri.label_i18n) : ri.id if (this.getRecordAlt() !== '_primary' && altInfo != null) { label += ' (' + i18n.trans(altInfo.name_i18n) + ')' } return (

    {i18n.trans('DELETE_RECORD').replace('%s', label)}

    {elements}
    0 ? 'block' : 'none' }}>

    {i18n.trans('ALTS_TO_BE_DELETED')}

      {alts}
    0 ? 'block' : 'none' }}>

    {i18n.trans('CHILD_PAGES_TO_BE_DELETED')}

      {children}
    0 ? 'block' : 'none' }}>

    {i18n.trans('ATTACHMENTS_TO_BE_DELETED')}

      {attachments}
    ) } } export default DeletePage lektor-3.1.3/lektor/admin/static/js/views/EditPage.jsx000066400000000000000000000141301346506225100226610ustar00rootroot00000000000000'use strict' import React from 'react' import update from 'react-addons-update' import RecordEditComponent from '../components/RecordEditComponent' import utils from '../utils' import i18n from '../i18n' import widgets from '../widgets' import makeRichPromise from '../richPromise' class EditPage extends RecordEditComponent { constructor (props) { super(props) this.state = { recordInitialData: null, recordData: null, recordDataModel: null, recordInfo: null, hasPendingChanges: false } this._onKeyPress = this._onKeyPress.bind(this) } componentDidMount () { super.componentDidMount() this.syncEditor() window.addEventListener('keydown', this._onKeyPress) } componentWillReceiveProps (nextProps) { /* if (nextProps.params.path !== this.props.params.path) { this.syncEditor(); } */ } componentDidUpdate (prevProps, prevState) { if (prevProps.params.path !== this.props.params.path) { this.syncEditor() } } componentWillUnmount () { window.removeEventListener('keydown', this._onKeyPress) } hasPendingChanges () { return this.state.hasPendingChanges } _onKeyPress (event) { // meta+s is open find files if (event.which === 83 && utils.isMetaKey(event)) { event.preventDefault() this.saveChanges() } } isIllegalField (field) { switch (field.name) { case '_id': case '_path': case '_gid': case '_alt': case '_source_alt': case '_model': case '_attachment_for': return true case '_attachment_type': return !this.state.recordInfo.is_attachment } return false } syncEditor () { utils.loadData('/rawrecord', { path: this.getRecordPath(), alt: this.getRecordAlt() }, null, makeRichPromise) .then((resp) => { this.setState({ recordInitialData: resp.data, recordData: {}, recordDataModel: resp.datamodel, recordInfo: resp.record_info, hasPendingChanges: false }) }) } onValueChange (field, value) { let updates = {} updates[field.name] = { $set: value || '' } const rd = update(this.state.recordData, updates) this.setState({ recordData: rd, hasPendingChanges: true }) } getValues () { let rv = {} this.state.recordDataModel.fields.forEach((field) => { if (this.isIllegalField(field)) { return } let value = this.state.recordData[field.name] if (value !== undefined) { const Widget = widgets.getWidgetComponentWithFallback(field.type) if (Widget.serializeValue) { value = Widget.serializeValue(value, field.type) } } else { value = this.state.recordInitialData[field.name] if (value === undefined) { value = null } } rv[field.name] = value }) return rv } saveChanges () { const path = this.getRecordPath() const alt = this.getRecordAlt() const newData = this.getValues() utils.apiRequest('/rawrecord', { json: { data: newData, path: path, alt: alt }, // eslint-disable-next-line indent method: 'PUT' }, makeRichPromise) .then((resp) => { this.setState({ hasPendingChanges: false }, () => { this.transitionToAdminPage('.preview', { path: this.getUrlRecordPathWithAlt(path) }) }) }) } deleteRecord (event) { this.transitionToAdminPage('.delete', { path: this.getUrlRecordPathWithAlt() }) } getValueForField (widget, field) { let value = this.state.recordData[field.name] if (value === undefined) { value = this.state.recordInitialData[field.name] || '' if (widget.deserializeValue) { value = widget.deserializeValue(value, field.type) } } return value } getPlaceholderForField (widget, field) { if (field['default'] !== null) { if (widget.deserializeValue) { return widget.deserializeValue(field['default'], field.type) } return field['default'] } else if (field.name === '_slug') { return this.state.recordInfo.slug_format } else if (field.name === '_template') { return this.state.recordInfo.default_template } else if (field.name === '_attachment_type') { return this.state.recordInfo.implied_attachment_type } return null } renderFormField (field, idx) { const widget = widgets.getWidgetComponentWithFallback(field.type) return ( ) } renderFormFields () { return widgets.renderFieldRows( this.state.recordDataModel.fields, this.isIllegalField.bind(this), this.renderFormField.bind(this) ) } render () { // we have not loaded anything yet. if (this.state.recordInfo === null) { return null } let deleteButton = null if (this.state.recordInfo.can_be_deleted) { deleteButton = ( ) } const title = this.state.recordInfo.is_attachment ? i18n.trans('EDIT_ATTACHMENT_METADATA_OF') : i18n.trans('EDIT_PAGE_NAME') const label = this.state.recordInfo.label_i18n ? i18n.trans(this.state.recordInfo.label_i18n) : this.state.recordInfo.label return (

    {title.replace('%s', label)}

    {this.renderFormFields()}
    {deleteButton}
    ) } } export default EditPage lektor-3.1.3/lektor/admin/static/js/views/PreviewPage.jsx000066400000000000000000000046451346506225100234270ustar00rootroot00000000000000'use strict' import React from 'react' import utils from '../utils' import RecordComponent from '../components/RecordComponent' import makeRichPromise from '../richPromise' class PreviewPage extends RecordComponent { constructor (props) { super(props) this.state = { pageUrl: null, pageUrlFor: null } } componentWillReceiveProps (nextProps) { super.componentWillReceiveProps(nextProps) this.setState({}, this.syncState.bind(this)) } componentDidMount () { super.componentDidMount() this.syncState() } shouldComponentUpdate () { return this.getUrlRecordPathWithAlt() !== this.state.pageUrlFor } syncState () { const alt = this.getRecordAlt() const path = this.getRecordPath() if (path === null) { this.setState(this.getInitialState()) return } const recordUrl = this.getUrlRecordPathWithAlt() utils.loadData('/previewinfo', { path: path, alt: alt }, null, makeRichPromise) .then((resp) => { this.setState({ pageUrl: resp.url, pageUrlFor: recordUrl }) }) } getIntendedPath () { if (this.state.pageUrlFor === this.getUrlRecordPathWithAlt()) { return this.state.pageUrl } return null } componentDidUpdate () { const frame = this.refs.iframe const intendedPath = this.getIntendedPath() if (intendedPath !== null) { const framePath = this.getFramePath() if (!utils.urlPathsConsideredEqual(intendedPath, framePath)) { frame.src = utils.getCanonicalUrl(intendedPath) } frame.onload = (event) => { this.onFrameNavigated() } } } getFramePath () { const frameLocation = this.refs.iframe.contentWindow.location if (frameLocation.href === 'about:blank') { return frameLocation.href } return utils.fsPathFromAdminObservedPath( frameLocation.pathname) } onFrameNavigated () { const fsPath = this.getFramePath() if (fsPath === null) { return } utils.loadData('/matchurl', { url_path: fsPath }, null, makeRichPromise) .then((resp) => { if (resp.exists) { const urlPath = this.getUrlRecordPathWithAlt(resp.path, resp.alt) this.transitionToAdminPage('.preview', { path: urlPath }) } }) } render () { return (