pax_global_header00006660000000000000000000000064122627247370014526gustar00rootroot0000000000000052 comment=2b1d98b0e098518171211fe98e447449f73dadf8 django-debug-toolbar-1.0.1/000077500000000000000000000000001226272473700155135ustar00rootroot00000000000000django-debug-toolbar-1.0.1/.gitignore000066400000000000000000000001631226272473700175030ustar00rootroot00000000000000*.pyc *.DS_Store *~ build .coverage dist django_debug_toolbar.egg-info docs/_build example/db.sqlite3 htmlcov .tox django-debug-toolbar-1.0.1/.travis.yml000066400000000000000000000006071226272473700176270ustar00rootroot00000000000000language: python python: - "2.6" - "2.7" - "3.2" - "3.3" env: - DJANGO_VERSION=1.4.10 - DJANGO_VERSION=1.5.5 - DJANGO_VERSION=1.6.1 matrix: exclude: - python: "3.2" env: DJANGO_VERSION=1.4.10 - python: "3.3" env: DJANGO_VERSION=1.4.10 install: - pip install -e . - pip install Django==$DJANGO_VERSION django-discover-runner sqlparse script: make test django-debug-toolbar-1.0.1/.tx/000077500000000000000000000000001226272473700162245ustar00rootroot00000000000000django-debug-toolbar-1.0.1/.tx/config000066400000000000000000000003611226272473700174140ustar00rootroot00000000000000[main] host = https://www.transifex.com lang_map = sr@latin:sr_Latn [django-debug-toolbar.master] file_filter = debug_toolbar/locale//LC_MESSAGES/django.po source_file = debug_toolbar/locale/en/LC_MESSAGES/django.po source_lang = en django-debug-toolbar-1.0.1/LICENSE000066400000000000000000000030061226272473700165170ustar00rootroot00000000000000Copyright (c) Rob Hudson and individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. 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. 3. Neither the name of Django nor the names of its contributors may 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. django-debug-toolbar-1.0.1/MANIFEST.in000066400000000000000000000002411226272473700172460ustar00rootroot00000000000000include LICENSE include README.rst recursive-include debug_toolbar/locale * recursive-include debug_toolbar/static * recursive-include debug_toolbar/templates * django-debug-toolbar-1.0.1/Makefile000066400000000000000000000015161226272473700171560ustar00rootroot00000000000000.PHONY: flake8 example test coverage translatable_strings update_translations flake8: flake8 debug_toolbar example tests example: DJANGO_SETTINGS_MODULE=example.settings \ django-admin.py runserver test: DJANGO_SETTINGS_MODULE=tests.settings \ django-admin.py test tests test_selenium: DJANGO_SELENIUM_TESTS=true DJANGO_SETTINGS_MODULE=tests.settings \ django-admin.py test tests coverage: coverage erase DJANGO_SETTINGS_MODULE=tests.settings \ coverage run --branch --source=debug_toolbar `which django-admin.py` test tests coverage html translatable_strings: cd debug_toolbar && django-admin.py makemessages -l en --no-obsolete @echo "Please commit changes and run 'tx push -s' (or wait for Transifex to pick them)" update_translations: tx pull -a --minimum-perc=10 cd debug_toolbar && django-admin.py compilemessages django-debug-toolbar-1.0.1/README.rst000066400000000000000000000027151226272473700172070ustar00rootroot00000000000000==================== Django Debug Toolbar ==================== .. image:: https://secure.travis-ci.org/django-debug-toolbar/django-debug-toolbar.png :alt: Build Status :target: http://travis-ci.org/django-debug-toolbar/django-debug-toolbar The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/response and when clicked, display more details about the panel's content. Here's a screenshot of the toolbar in action: .. image:: https://raw.github.com/django-debug-toolbar/django-debug-toolbar/master/example/django-debug-toolbar.png :width: 908 :height: 557 In addition to the built-in panels, a number of third-party panels are contributed by the community. The current version of the Debug Toolbar is 1.0.1. It works on Django 1.4, 1.5 and 1.6. If you're using Django 1.4, you will need Django ≥ 1.4.2 and Python ≥ 2.6.5. If you're using Django 1.5 or 1.6, there aren't any restrictions. Documentation, including installation and configuration instructions, is available at http://django-debug-toolbar.readthedocs.org/. The Django Debug Toolbar is released under the BSD license, like Django itself. If you like it, please consider contributing! The Django Debug Toolbar was originally created by Rob Hudson in August 2008 and was further developed by many contributors_. .. _contributors: https://github.com/django-debug-toolbar/django-debug-toolbar/graphs/contributors django-debug-toolbar-1.0.1/debug_toolbar/000077500000000000000000000000001226272473700203235ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/__init__.py000066400000000000000000000006651226272473700224430ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals __all__ = ['VERSION'] try: import pkg_resources VERSION = pkg_resources.get_distribution('django-debug-toolbar').version except Exception: VERSION = 'unknown' # Code that discovers files or modules in INSTALLED_APPS imports this module. # Reference URLpatterns with a string to avoid the risk of circular imports. urls = 'debug_toolbar.toolbar', 'djdt', 'djdt' django-debug-toolbar-1.0.1/debug_toolbar/locale/000077500000000000000000000000001226272473700215625ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/ca/000077500000000000000000000000001226272473700221455ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/ca/LC_MESSAGES/000077500000000000000000000000001226272473700237325ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/ca/LC_MESSAGES/django.mo000066400000000000000000000055331226272473700255370ustar00rootroot00000000000000=S8 9CJQV^diow}      $ ) 5BGK Q[cl p}     &/@     ' - 4 ; A H Q \ f t             * ; ? C L Y a f j s          ) / 8 @ I  &2!)/+(1 = 5 <-30$*94"#, '.7:6;%8(unknown)ActionActiveBackBackendCacheCallCallsChannelCloseCommandsConnection:CountDatabaseElapsed timeErrorExecuted SQLHeadersHideHide toolbarIn transactionKeyLevelLocationLocation:Log messagesLoggingMessageNameNo GET dataNo POST dataNonePerQueryReceiversRequestResourceSQLSerializableSettingSettingsShow toolbarSignalSignalsSummaryTemplatesTimeTime (ms)TimelineTotTimeTotal callsTotal timeTotal: %0.2fmsTypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-toolbar/language/ca/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ca Plural-Forms: nplurals=2; plural=(n != 1); (desconegut)AccióActiuTornarAdministracióCaxèCridarCridesCanalTancarComandesConnexió:RecomptarBase de dadesTemps empratErrorSQL ExecutatEncapçalamentsAmagarAmagar barra d'einaEn transaccióClauNivellUbicacióUbicació:Registre de missatgesEntrantMissatgeNomSense dades GETSense dades POSTCapPerPeticióDestinatarisDemanarFontSQLSeriableConfiguracióConfiguracióMostrar barra d'einesSenyalSenyalsResumPlantillesHoraTemps (ms)Línia temporalTempsTotalTotal cridesTotal tempsTotal: %0.2fmsTipusDesconegutValorVariableVersióVersionsVeure informaciódjango-debug-toolbar-1.0.1/debug_toolbar/locale/ca/LC_MESSAGES/django.po000066400000000000000000000343461226272473700255460ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Libre El Chaval , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-toolbar/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Caxè" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "Encapçalaments" #: panels/logging.py:64 msgid "Logging" msgstr "Entrant" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "Registre de missatges" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "Demanar" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configuració" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:49 msgid "Signals" msgstr "Senyals" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Hora" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Temps emprat" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versions" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Seriable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Actiu" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "En transacció" #: panels/sql/panel.py:39 msgid "In error" msgstr "" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Desconegut" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Plantilles" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Amagar barra d'eina" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Amagar" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Mostrar barra d'eines" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Tancar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Ubicació:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resum" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total crides" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Total temps" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Crides" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Temps (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipus" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Administració" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clau" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivell" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Missatge" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ubicació" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Cridar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TempsTotal" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Recomptar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Veure informació" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sense dades GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sense dades POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuració" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Senyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Destinataris" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Petició" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línia temporal" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acció" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connexió:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(desconegut)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Tornar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executat" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de dades" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Cap" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Plantilles" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Font" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versió" django-debug-toolbar-1.0.1/debug_toolbar/locale/cs/000077500000000000000000000000001226272473700221675ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/cs/LC_MESSAGES/000077500000000000000000000000001226272473700237545ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/cs/LC_MESSAGES/django.mo000066400000000000000000000225221226272473700255560ustar00rootroot00000000000000d J $  l7 N . ." Q c u  )     !&."=`Ff   $)17N?(  ' # (5:CRfw{  -  1 AL_o t~      . ; H Ubjs h /"P s5 &@ ' 6 BM\pu~   43,hx;XM [m- ! * 4?EM"g .CLU\ e o7y Q 7!Acr!   5GNenu}*:<'T|     & ; G Y j n   #   !i!4z!_!Y"i"C{""""7".#>#,G#t#.$ 3$ =$J$R$d$m$$ $$$$ $ $$$ $%% %"%A%}S@Y])!,'9uj?(F1m+r=JyR5< i{\#GWPC-KQZp%VXN_cHdhk8[;2B^g :|*E T3 "$o>/wO0zt4&Mnfsq UI A.LaDxb76~el`v%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 09:30+0000 Last-Translator: Vlada Macek Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-toolbar/language/cs/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: cs Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %(cache_calls)d volání během %(time).2fms%(cache_calls)d volání během %(time).2fms%(cache_calls)d volání během %(time).2fms%(count)s zpráva%(count)s zprávy%(count)s zpráv%(num)s dotaz%(num)s dotazy%(num)s dotazů%(num_receivers)d příjemce %(num_signals)d signálů%(num_receivers)d příjemci %(num_signals)d signálů%(num_receivers)d příjemců %(num_signals)d signálů%(num_receivers)d příjemce 1 signálu%(num_receivers)d příjemci 1 signálu%(num_receivers)d příjemců 1 signálu%(num_used)s soubor použit%(num_used)s soubory použity%(num_used)s souborů použito%(payload_count)s soubor%(payload_count)s soubory%(payload_count)s souborů%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně(prefix %(prefix)s)(neznámé)<žádný pohled>AkceAktivníArgumentyAutocommitZpětBackendČasování prohlížečeCPU: %(cum)0.2fms (%(total)0.2fms)MezipaměťVolání mezipaměti z %(count)d backenduVolání mezipaměti z %(count)d backendůVolání mezipaměti z %(count)d backendůNalezení v mezipamětiNebylo v mezipamětiVoláníVoláníKanálZavřítPříkazySpojení:Procesor kontextuProcesory kontextuProcesory kontextuPřepnutí kontextuSoubory cookiePočetKumulČasData pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova.DatabázeVypnout pro následné požadavkyUplynulý časPrázdná sadaZapnout pro následné požadavkyChybaSpuštěné SQLData typu GETZáhlavíSkrýtSkrýt lištuV klidu (idle)V chybovém stavuUvnitř transakceZachycení přesměrováníÚroveň izolace:KlíčKlíčované argumentyÚroveňAdresaAdresa:Zprávy protokoluProtokolZprávaMilisekund od začátku navigace (+délka)NázevŽádná data typu GETŽádná data typu POSTPro tento požadavek nebyl zaznamenán žádný dotaz SQL.Žádné soubory cookieNebyly protokolovány žádné zprávy.Žádná data sezeníŽádnéData typu POSTCestaCelk. za voláníProfilováníPoskytujeDotazRead committedRead uncommittedPříjemciRepeatable readPožadavekZáhlaví požadavkuProstředekVyužití zdrojůZáhlaví odezvySQLVysvětlené SQLProfilované SQLVybrané SQLSerializableData sezeníNastaveníSettingsNastavení z modulu %sZobrazit lištuSignálSignályNíže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru.Statický souborStatické souboryStatické souboryAplikace se statickými souboryAplikace se statickými souboryAplikace se statickými souboryCesta ke statickým souborůmCesty ke statickým souborůmCesty ke statickým souborůmStatické souboryStatické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)SouhrnSystémový čas CPUŠablonaŠablonyŠablonyCesta k šabloněCesty k šablonámCesty k šablonámZdroj šablony:ŠablonyŠablony (renderovaných: %(num_templates)s)Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše.ČasČas (ms)Časová osaAtributZap./vyp. kontextCelkČasCelkový čas CPUCelkem voláníCelkový časCelkem: %0.2fmsStav transakce:TypNázev URLNeznáméUživatelský čas CPUHodnotaProměnnáVerzeVerzePohledová funkceInformace o pohledových funkcíchProstředí WSGIdjango-debug-toolbar-1.0.1/debug_toolbar/locale/cs/LC_MESSAGES/django.po000066400000000000000000000421731226272473700255650ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Vlada Macek , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 09:30+0000\n" "Last-Translator: Vlada Macek \n" "Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-toolbar/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova." #: panels/cache.py:189 msgid "Cache" msgstr "Mezipaměť" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volání během %(time).2fms" msgstr[1] "%(cache_calls)d volání během %(time).2fms" msgstr[2] "%(cache_calls)d volání během %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Volání mezipaměti z %(count)d backendu" msgstr[1] "Volání mezipaměti z %(count)d backendů" msgstr[2] "Volání mezipaměti z %(count)d backendů" #: panels/headers.py:35 msgid "Headers" msgstr "Záhlaví" #: panels/logging.py:64 msgid "Logging" msgstr "Protokol" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s zpráva" msgstr[1] "%(count)s zprávy" msgstr[2] "%(count)s zpráv" #: panels/logging.py:73 msgid "Log messages" msgstr "Zprávy protokolu" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilování" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Zachycení přesměrování" #: panels/request.py:18 msgid "Request" msgstr "Požadavek" #: panels/request.py:27 msgid "" msgstr "<žádný pohled>" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Settings" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Nastavení z modulu %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d příjemce 1 signálu" msgstr[1] "%(num_receivers)d příjemci 1 signálu" msgstr[2] "%(num_receivers)d příjemců 1 signálu" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d příjemce %(num_signals)d signálů" msgstr[1] "%(num_receivers)d příjemci %(num_signals)d signálů" msgstr[2] "%(num_receivers)d příjemců %(num_signals)d signálů" #: panels/signals.py:49 msgid "Signals" msgstr "Signály" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Statické soubory" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s soubor použit" msgstr[1] "%(num_used)s soubory použity" msgstr[2] "%(num_used)s souborů použito" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Celkem: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" #: panels/timer.py:42 msgid "User CPU time" msgstr "Uživatelský čas CPU" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systémový čas CPU" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Celkový čas CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Uplynulý čas" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "Přepnutí kontextu" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně" #: panels/versions.py:25 msgid "Versions" msgstr "Verze" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "V klidu (idle)" #: panels/sql/panel.py:37 msgid "Active" msgstr "Aktivní" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Uvnitř transakce" #: panels/sql/panel.py:39 msgid "In error" msgstr "V chybovém stavu" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Neznámé" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Šablony" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablony (renderovaných: %(num_templates)s)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Skrýt lištu" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Skrýt" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Vypnout pro následné požadavky" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Zapnout pro následné požadavky" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Zobrazit lištu" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Zavřít" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Adresa:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Souhrn" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkem volání" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový čas" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Nalezení v mezipaměti" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Nebylo v mezipaměti" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Příkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volání" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Čas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Klíčované argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Záhlaví požadavku" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Klíč" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Záhlaví odezvy" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Prostředí WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Níže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Úroveň" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanál" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Zpráva" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Adresa" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nebyly protokolovány žádné zprávy." #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volání" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "KumulČas" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Celk. za volání" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "CelkČas" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Počet" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Informace o pohledových funkcích" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Pohledová funkce" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Název URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Soubory cookie" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Proměnná" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Žádné soubory cookie" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Data sezení" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Žádná data sezení" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Data typu GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Žádná data typu GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Data typu POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Žádná data typu POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavení" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Poskytuje" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Příjemci" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dotaz" msgstr[1] "%(num)s dotazy" msgstr[2] "%(num)s dotazů" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Dotaz" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Časová osa" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akce" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Spojení:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Úroveň izolace:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stav transakce:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(neznámé)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Pro tento požadavek nebyl zaznamenán žádný dotaz SQL." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Zpět" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "Vysvětlené SQL" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Spuštěné SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáze" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Profilované SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Vybrané SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdná sada" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta ke statickým souborům" msgstr[1] "Cesty ke statickým souborům" msgstr[2] "Cesty ke statickým souborům" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Žádné" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikace se statickými soubory" msgstr[1] "Aplikace se statickými soubory" msgstr[2] "Aplikace se statickými soubory" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statický soubor" msgstr[1] "Statické soubory" msgstr[2] "Statické soubory" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s soubor" msgstr[1] "%(payload_count)s soubory" msgstr[2] "%(payload_count)s souborů" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdroj šablony:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šabloně" msgstr[1] "Cesty k šablonám" msgstr[2] "Cesty k šablonám" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablona" msgstr[1] "Šablony" msgstr[2] "Šablony" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Zap./vyp. kontext" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesor kontextu" msgstr[1] "Procesory kontextu" msgstr[2] "Procesory kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využití zdrojů" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Prostředek" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Časování prohlížeče" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisekund od začátku navigace (+délka)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Název" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Verze" django-debug-toolbar-1.0.1/debug_toolbar/locale/de/000077500000000000000000000000001226272473700221525ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/de/LC_MESSAGES/000077500000000000000000000000001226272473700237375ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/de/LC_MESSAGES/django.mo000066400000000000000000000212721226272473700255420ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f      " F a ly~ $NB(K t '  +/AG P Zgo-w  1 # (27 ; EOUd u     ' ERYha " '54jr &   $)2 :HNW_ hv PJ% s[V71,<Q+a     "Hhz  %V _;i 9  &1DKRg| , B+ n |     3; JTix |   !p !68# @5 v     ' !! !!!!!!" ""."B"F" O"Y"k"p"y" " "" "/6Q#WiZx=T!a8eNy<\dG20np3|@"5Jz]If KPMt^wl ck~B4?hO:Hg>'`A7)(o*b9+{vL%FD , mV;1u.E_RsrqS- XU [C}j&Y$%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: German (http://www.transifex.com/projects/p/django-debug-toolbar/language/de/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: de Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d Abfrage in %(time).2fms%(cache_calls)d Abfragen in %(time).2fms%(count)s Eintrag%(count)s Einträge%(num)s Abfrage%(num)s Abfragen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von einem Signal%(num_receivers)d Empfänger von einem Signal%(num_used)s Datei benutzt%(num_used)s Dateien benutzt%(payload_count)s Datei%(payload_count)s Dateien%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig(unbekannt)AktionAktivArgumenteAutocommitZurückBackendBrowserzeitCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache-Aufrufe von %(count)d BackendCache-Aufrufe von %(count)d BackendsCache erfolgreichCache verfehltAufrufAufrufeKanalSchließenBefehleVerbindung:Context-ProzessorContext-ProzessorenKontextwechselCookiesAnzahlGesamtDie Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu.DatenbankFür nächste und die darauffolgenden Anfragen deaktivierenVerstrichene ZeitLeeres SetFür nächste und die darauffolgenden Anfragen aktivierenFehlerAusgeführtes SQLGET-DatenHeaderAusblendenToolbar ausblendenWartetFehlerIn einer TransaktionUmleitungen abfangenIsolationsebene:NameSchlüsselwort-ArgumenteLevelOrtZiel:LogeinträgeLoggingEintragMillisekunden seit Seitenaufruf (plus Dauer)NameKeine GET-DatenKeine POST-DatenEs wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet.Keine CookiesKeine Logbucheinträge vorhandenKeine Sitzungsdaten-POST-DatenPfadPerProfilingStellt bereitAbfrageLesend, ausgeführtLesend, nicht ausgeführtEmpfängerWiederholtes LesenAnfrageAnfrage-HeaderRessourceRessourcenverwendungAntwort-HeaderSQLSQL erklärtSQL durchleuchtetSQL ausgewähltVariableSitzungsdatenEinstellungEinstellungenEinstellungen von %sToolbar einblendenSignalSignaleDa sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt.Statische DateiStatische DateienApp mit statischen DateienApps mit statischen DateienPfad mit statischen DateienPfade mit statischen DateienStatische DateienStatische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)ZusammenfassungCPU-Zeit SystemTemplateTemplatesTemplate-PfadTemplate-PfadeTemplate-Quelle:TemplatesTemplates (%(num_templates)s gerendert)Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden.ZeitZeit (ms)VerlaufTiming-AttributContext zeigenTotalCPU-Zeit gesamtAufrufe gesamtZeit gesamtGesamt: %0.2fmsTransaktionsstatus:TypURL-NameUnbekanntCPU-Zeit BenutzerWertVariableVersionVersionenView-FunktionView-InformationenWSGI-Umgebungdjango-debug-toolbar-1.0.1/debug_toolbar/locale/de/LC_MESSAGES/django.po000066400000000000000000000406211226272473700255440ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Jannis Leidel , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: German (http://www.transifex.com/projects/p/django-debug-toolbar/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu." #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d Abfrage in %(time).2fms" msgstr[1] "%(cache_calls)d Abfragen in %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache-Aufrufe von %(count)d Backend" msgstr[1] "Cache-Aufrufe von %(count)d Backends" #: panels/headers.py:35 msgid "Headers" msgstr "Header" #: panels/logging.py:64 msgid "Logging" msgstr "Logging" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s Eintrag" msgstr[1] "%(count)s Einträge" #: panels/logging.py:73 msgid "Log messages" msgstr "Logeinträge" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Umleitungen abfangen" #: panels/request.py:18 msgid "Request" msgstr "Anfrage" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Einstellungen" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Einstellungen von %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d Empfänger von einem Signal" msgstr[1] "%(num_receivers)d Empfänger von einem Signal" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" msgstr[1] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" #: panels/signals.py:49 msgid "Signals" msgstr "Signale" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Statische Dateien" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s Datei benutzt" msgstr[1] "%(num_used)s Dateien benutzt" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Gesamt: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Zeit" #: panels/timer.py:42 msgid "User CPU time" msgstr "CPU-Zeit Benutzer" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "CPU-Zeit System" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU-Zeit gesamt" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Verstrichene Zeit" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Kontextwechsel" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" #: panels/versions.py:25 msgid "Versions" msgstr "Versionen" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Lesend, nicht ausgeführt" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Lesend, ausgeführt" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Wiederholtes Lesen" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Wartet" #: panels/sql/panel.py:37 msgid "Active" msgstr "Aktiv" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "In einer Transaktion" #: panels/sql/panel.py:39 msgid "In error" msgstr "Fehler" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Unbekannt" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerendert)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Toolbar ausblenden" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Ausblenden" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen deaktivieren" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen aktivieren" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Toolbar einblenden" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Schließen" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Ziel:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zusammenfassung" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Aufrufe gesamt" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Zeit gesamt" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache erfolgreich" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Cache verfehlt" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Befehle" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Aufrufe" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Zeit (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumente" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Schlüsselwort-Argumente" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Anfrage-Header" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Name" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wert" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Antwort-Header" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-Umgebung" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Level" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Eintrag" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ort" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Keine Logbucheinträge vorhanden" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Aufruf" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Gesamt" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Anzahl" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View-Informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View-Funktion" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL-Name" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Keine Cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Keine Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET-Daten" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Keine GET-Daten" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST-Daten" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Keine POST-Daten" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Einstellung" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Stellt bereit" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Empfänger" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s Abfrage" msgstr[1] "%(num)s Abfragen" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Abfrage" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Verlauf" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Aktion" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Verbindung:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Isolationsebene:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Transaktionsstatus:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(unbekannt)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Es wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Zurück" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL erklärt" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Ausgeführtes SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Datenbank" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL durchleuchtet" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fehler" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL ausgewählt" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Leeres Set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Pfad mit statischen Dateien" msgstr[1] "Pfade mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "-" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App mit statischen Dateien" msgstr[1] "Apps mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statische Datei" msgstr[1] "Statische Dateien" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s Datei" msgstr[1] "%(payload_count)s Dateien" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Pfad" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Template-Quelle:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template-Pfad" msgstr[1] "Template-Pfade" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Context zeigen" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context-Prozessor" msgstr[1] "Context-Prozessoren" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Ressourcenverwendung" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Browserzeit" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Timing-Attribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisekunden seit Seitenaufruf (plus Dauer)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Name" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.0.1/debug_toolbar/locale/en/000077500000000000000000000000001226272473700221645ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/en/LC_MESSAGES/000077500000000000000000000000001226272473700237515ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/en/LC_MESSAGES/django.mo000066400000000000000000000005761226272473700255600ustar00rootroot00000000000000$,8D9Project-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2012-03-31 20:10+0000 Last-Translator: Language-Team: Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1) django-debug-toolbar-1.0.1/debug_toolbar/locale/en/LC_MESSAGES/django.po000066400000000000000000000330041226272473700255530ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2012-03-31 20:10+0000\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:49 msgid "Signals" msgstr "" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "" django-debug-toolbar-1.0.1/debug_toolbar/locale/es/000077500000000000000000000000001226272473700221715ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/es/LC_MESSAGES/000077500000000000000000000000001226272473700237565ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/es/LC_MESSAGES/django.mo000066400000000000000000000110441226272473700255550ustar00rootroot00000000000000JlePJQ$lNL)  *18"=`fkqy $        -( V [ g 1t           + 2 : B _ &i             P $ "6 oY O +=T+f " /"R Yg {   7 '86o "!&* Q+\   D.@3G7>1+:& ( ;$!H'EI,J5F-)*6B"A0=# 2C<8 9%/4 ?%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveBackCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallCallsChannelCloseCommandsConnection:Context processorContext processorsCountDatabaseElapsed timeEmpty setErrorExecuted SQLHideIdleIn errorKeyLevelLocationLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNonePerQueryReceiversRepeatable readResourceSQLSerializableSettingSettingsSettings from %sSignalSignalsSummaryTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTotal CPU timeTransaction status:TypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Spanish (http://www.transifex.com/projects/p/django-debug-toolbar/language/es/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d llamada en %(time).2fms%(cache_calls)d llamadas en %(time).2fms%(count)s mensaje%(count)s mensajes%(num)s consulta%(num)s consultas%(num_receivers)d receptor de %(num_signals)d señales%(num_receivers)d receptores de %(num_signals)d señales%(num_receivers)d receptor de 1 señal%(num_receivers)d receptores de 1 señal%(stime)0.3f mseg%(total)0.3f mseg%(total_time)0.3f mseg%(utime)0.3f mseg%(vcsw)d voluntario, %(ivcsw)d involuntario(desconocido)AcciónAcciónRegresarCPU: %(cum)0.2fms (%(total)0.2fms)CacheLlamarLlamadasCanalCerrarComandosConexiónProcesador de contextoProcesadores de contextoContarBase de datosTiempo transcurridoSet VacíoErrorSQL EjecutadoOcultarInactivoErrorClaveNivelUbicaciónRegistrosMensajeMilisegundos desde inicio de la navegación (+longitud)NombreSin datos GETSin datos POSTNo se registraron consultas SQL durante ésta petición.No hay mensajes registradosNingunoPorQueryReceptoresLectura repetibleRecursoSQLVariableConfiguraciónConfiguracionesConfiguraciones en %sSeñalSeñalesResúmenRuta de plantillasRutas de plantillasPlantillasPlantillas (%(num_templates)s renderizadas)TiempoTiempo (ms)Línea de tiempoTiempo total de CPUEstado de la transacción:TipoDesconocidoValorVariableVersiónVersionesInformación de Vistadjango-debug-toolbar-1.0.1/debug_toolbar/locale/es/LC_MESSAGES/django.po000066400000000000000000000360111226272473700255610ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Leonardo J. Caballero G. , 2013 # marcelor , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/django-debug-toolbar/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d llamada en %(time).2fms" msgstr[1] "%(cache_calls)d llamadas en %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Registros" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s mensaje" msgstr[1] "%(count)s mensajes" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configuraciones" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Configuraciones en %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 señal" msgstr[1] "%(num_receivers)d receptores de 1 señal" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d señales" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d señales" #: panels/signals.py:49 msgid "Signals" msgstr "Señales" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tiempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f mseg" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f mseg" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tiempo total de CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f mseg" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tiempo transcurrido" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f mseg" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" #: panels/versions.py:25 msgid "Versions" msgstr "Versiones" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Lectura repetible" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Inactivo" #: panels/sql/panel.py:37 msgid "Active" msgstr "Acción" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "Error" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Desconocido" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Plantillas" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Plantillas (%(num_templates)s renderizadas)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Cerrar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resúmen" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Llamadas" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tiempo (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivel" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensaje" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ubicación" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "No hay mensajes registrados" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Llamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Por" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Información de Vista" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sin datos GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sin datos POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuración" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Señal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línea de tiempo" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acción" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Conexión" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Estado de la transacción:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(desconocido)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "No se registraron consultas SQL durante ésta petición." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Regresar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Ejecutado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de datos" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Set Vacío" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Ninguno" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ruta de plantillas" msgstr[1] "Rutas de plantillas" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Plantilla" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesador de contexto" msgstr[1] "Procesadores de contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisegundos desde inicio de la navegación (+longitud)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nombre" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versión" django-debug-toolbar-1.0.1/debug_toolbar/locale/fi/000077500000000000000000000000001226272473700221605ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/fi/LC_MESSAGES/000077500000000000000000000000001226272473700237455ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/fi/LC_MESSAGES/django.mo000066400000000000000000000111231226272473700255420ustar00rootroot00000000000000NkJ$l7N. @JQ Xc"h $    ' , 5 D U Y _ h p x } 1          % . L S [ h x  &       ! ) 7 = F N W h F #f  u Y z    " +18>'Fn       )77o  % (@!Tv/  %*3:B+ F%;/J&=<( G37,>96E481*BLM C:I)0.#$ A5N"-? HK 'D2@!%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(unknown)ActionActiveAutocommitBackCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallChannelCloseConnection:Context processorContext processorsContext switchesCountCumTimeDatabaseElapsed timeEmpty setErrorExecuted SQLHideIn errorIn transactionIsolation level:KeyLevelLocationLoggingMessageNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNonePathPerProfilingQueryReceiversResourceSQLSerializableSettingSettingsSettings from %sSignalSignalsStatic filesSystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-toolbar/language/fi/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fi Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d kutsu %(time).2fms%(cache_calls)d kutsua %(time).2fms%(count)s viesti%(count)s viestiä%(num)s kysely%(num)s kyselyä%(num_receivers)d vastaanotin %(num_signals)d signaalille%(num_receivers)d vastaanotinta %(num_signals)d signaalille%(num_receivers)d vastaanotin 1 signaalille%(num_receivers)d vastaanotinta 1 signaalille%(stime)0.3f msek%(total)0.3f msek%(total_time)0.3f msek%(utime)0.3f msek(tuntematon)TapahtumaTapahtumaAutocommitTakaisinCPU: %(cum)0.2fms (%(total)0.2fms)VälimuistiKutsuKanavaSuljeYhteys:KontekstiprosessoriKontekstiprosessoriKontekstin vivutMääräCumTimeTietokantaKulunut aikaTyhjä joukkoVirheSuoritettu SQLPiilotaVirheTapahtuman tila:Eristystaso:AvainTasoSijaintiLokiViestiNimiEi GET-dataaEi POST-dataaTämän pyynnön aikana ei tehty yhtään SQL-kyselyä.Ei viestejä lokissaNonePolku/ProfilointiKyselyVastaanottimetResurssiSQLMuuttujaAsetusAsetuksetAsetukset tiedostosta %sSignaaliSignaalitStaattiset tiedostotJärjestelmän CPU-aikaSivupohjaSivupohjaSivupohjan polkuSivupohjan polkuAsettelupohjatAsetttelupohjat (%(num_templates)s renderöity)AikaAika (ms)AikajanaTotTimeCPU-aika yhteensäTapahtuman status:Tyyppi(tuntematon)Käyttäjän CPU-aikaArvoMuuttujaVersioVersiotNäkymän tiedotdjango-debug-toolbar-1.0.1/debug_toolbar/locale/fi/LC_MESSAGES/django.po000066400000000000000000000356421226272473700255610ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # nanook , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-toolbar/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Välimuisti" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d kutsu %(time).2fms" msgstr[1] "%(cache_calls)d kutsua %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Loki" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s viesti" msgstr[1] "%(count)s viestiä" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilointi" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Asetukset" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Asetukset tiedostosta %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d vastaanotin 1 signaalille" msgstr[1] "%(num_receivers)d vastaanotinta 1 signaalille" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d vastaanotin %(num_signals)d signaalille" msgstr[1] "%(num_receivers)d vastaanotinta %(num_signals)d signaalille" #: panels/signals.py:49 msgid "Signals" msgstr "Signaalit" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Staattiset tiedostot" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Aika" #: panels/timer.py:42 msgid "User CPU time" msgstr "Käyttäjän CPU-aika" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" #: panels/timer.py:43 msgid "System CPU time" msgstr "Järjestelmän CPU-aika" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU-aika yhteensä" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Kulunut aika" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" #: panels/timer.py:46 msgid "Context switches" msgstr "Kontekstin vivut" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versiot" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Muuttuja" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Tapahtuma" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Tapahtuman tila:" #: panels/sql/panel.py:39 msgid "In error" msgstr "Virhe" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "(tuntematon)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Asettelupohjat" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Asetttelupohjat (%(num_templates)s renderöity)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Piilota" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Sulje" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Aika (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tyyppi" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Avain" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Arvo" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Taso" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanava" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Viesti" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Sijainti" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Ei viestejä lokissa" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Kutsu" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "/" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Määrä" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Näkymän tiedot" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Muuttuja" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Ei GET-dataa" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Ei POST-dataa" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Asetus" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaali" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Vastaanottimet" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s kysely" msgstr[1] "%(num)s kyselyä" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Kysely" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Aikajana" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Tapahtuma" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Yhteys:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Eristystaso:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Tapahtuman status:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(tuntematon)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Tämän pyynnön aikana ei tehty yhtään SQL-kyselyä." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Takaisin" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Suoritettu SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Tietokanta" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Virhe" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tyhjä joukko" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Staattiset tiedostot" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Polku" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Sivupohjan polku" msgstr[1] "Sivupohjan polku" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Sivupohja" msgstr[1] "Sivupohja" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Kontekstiprosessori" msgstr[1] "Kontekstiprosessori" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurssi" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nimi" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versio" django-debug-toolbar-1.0.1/debug_toolbar/locale/fr/000077500000000000000000000000001226272473700221715ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/fr/LC_MESSAGES/000077500000000000000000000000001226272473700237565ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/fr/LC_MESSAGES/django.mo000066400000000000000000000213561226272473700255640ustar00rootroot00000000000000Dl8 J9 $  l N4 . .     ). X b l z     "  F ) 4AFLTZ c$oN ( < I'S{     "/7-?m r ~1    , =GW_ox      !h) " 5!1 B&Ls )2CRZ i u   L$":l]N=4W+ )0 6BRY`"zP$* 1 ;.Hw ] (E T$b   -2F MYh|;A6Ec~      )DZ ^ ly   p D~8G W ` v  & ! ! !!! !! " #"/"@"[" `" j"x""""""""n &xkuo7cLptMs1 E<q!Zz2%Q0=F}?j/Jm>Y "SV_r#]{ W8^TfN-Rvh$ *B:[\43UP. G|)w,X+gOl`'~dyCD;b(H@i56eKA9aI%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: French (http://www.transifex.com/projects/p/django-debug-toolbar/language/fr/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fr Plural-Forms: nplurals=2; plural=(n > 1); %(cache_calls)d appel en %(time).2fms%(cache_calls)d appels en %(time).2fms%(count)s message%(count)s messages%(num)s requête%(num)s requêtes%(num_receivers)d receveur de %(num_signals)d signaux%(num_receivers)d receveurs de %(num_signals)d signaux%(num_receivers)d receveur d'un signal%(num_receivers)d receveurs d'un signal%(num_used)s fichier utilisé%(num_used)s fichiers utilisés%(payload_count)s fichier%(payload_count)s fichiers%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d volontaire, %(ivcsw)d involontaire(indéterminé)ActionActifParamètresAuto validationRetourMoteurChronologie du navigateurCPU: %(cum)0.2fms (%(total)0.2fms)CacheAppels au cache depuis %(count)d moteurAppels au cache depuis %(count)d moteursSuccès de cacheDéfauts de cacheAppelAppelsCanalFermerCommandesConnexion :Processeur de contexteProcesseurs de contexteBasculements de contexteCookiesCompteTemps cumuléLes données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau.Base de donnéesDésactiver pour les requêtes suivantesTemps écouléEnsemble videActiver pour les requêtes suivantesErreurSQL ExécutéDonnées GETEn-têtesMasquerMasquer la barre d'outilsInactifErreurTransaction en coursInterception des redirectionsNiveau d'isolation :CléParamètres nommésNiveauEmplacementEmplacement :Messages du journalJournauxMessageMillisecondes depuis le début de la navigation (+longueur)NomAucune donnée GETAucune donnée POSTAucune requête SQL n'a été enregistrée durant cette requête.Pas de cookiesAucun message dans le journalPas de données de sessionAucunDonnées POSTCheminParProfilageFournissantRequêteLecture validéeLecture non validéeReceveursLecture répétableRequêteEn-têtes de requêteRessourceUtilisation des ressourcesEn-têtes de réponseSQLSQL expliquéSQL profiléSQL sélectionnéSérialisableDonnées de sessionParamètreParamètresParamètres de %sAfficher la barre d'outilsSignalSignauxComme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous.Application de fichiers statiquesApplications de fichiers statiquesChemin de fichier statiqueChemins de fichiers statiquesFichiers statiquesFichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))RésuméTemps CPU du systèmeSource du gabarit :GabaritsGabarits (%(num_templates)s affichés)La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection.TempsTemps (ms)ChronologieAttribut mesuréAfficher/masquer le contexteTemps totalTemps total du CPUNombre total d'appelsTemps totalTotal : %0.2fmsÉtat de la transaction :TypeNom d'URLIndéterminéTemps CPU de l'utilisateurValeurVariableVersionVersionsFonction de vueAfficher l'informationEnvironnement WSGIdjango-debug-toolbar-1.0.1/debug_toolbar/locale/fr/LC_MESSAGES/django.po000066400000000000000000000413241226272473700255640ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Pingax , 2013 # claudep , 2013 # David Paccoud, 2009 # drivard , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: French (http://www.transifex.com/projects/p/django-debug-toolbar/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Les données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau." #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d appel en %(time).2fms" msgstr[1] "%(cache_calls)d appels en %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Appels au cache depuis %(count)d moteur" msgstr[1] "Appels au cache depuis %(count)d moteurs" #: panels/headers.py:35 msgid "Headers" msgstr "En-têtes" #: panels/logging.py:64 msgid "Logging" msgstr "Journaux" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s message" msgstr[1] "%(count)s messages" #: panels/logging.py:73 msgid "Log messages" msgstr "Messages du journal" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilage" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Interception des redirections" #: panels/request.py:18 msgid "Request" msgstr "Requête" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Paramètres" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Paramètres de %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receveur d'un signal" msgstr[1] "%(num_receivers)d receveurs d'un signal" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receveur de %(num_signals)d signaux" msgstr[1] "%(num_receivers)d receveurs de %(num_signals)d signaux" #: panels/signals.py:49 msgid "Signals" msgstr "Signaux" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Fichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Fichiers statiques" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s fichier utilisé" msgstr[1] "%(num_used)s fichiers utilisés" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total : %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Temps" #: panels/timer.py:42 msgid "User CPU time" msgstr "Temps CPU de l'utilisateur" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "Temps CPU du système" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Temps total du CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Temps écoulé" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Basculements de contexte" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" #: panels/versions.py:25 msgid "Versions" msgstr "Versions" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Auto validation" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Lecture non validée" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Lecture validée" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Lecture répétable" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Sérialisable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Inactif" #: panels/sql/panel.py:37 msgid "Active" msgstr "Actif" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Transaction en cours" #: panels/sql/panel.py:39 msgid "In error" msgstr "Erreur" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Indéterminé" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Gabarits" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Gabarits (%(num_templates)s affichés)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Masquer la barre d'outils" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Masquer" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Désactiver pour les requêtes suivantes" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Activer pour les requêtes suivantes" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Afficher la barre d'outils" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Fermer" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Emplacement :" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Résumé" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Nombre total d'appels" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Temps total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Succès de cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Défauts de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Commandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Appels" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Temps (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Paramètres" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Paramètres nommés" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Moteur" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "En-têtes de requête" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clé" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valeur" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "En-têtes de réponse" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Environnement WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Niveau" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Message" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Emplacement" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Aucun message dans le journal" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Appel" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Temps cumulé" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Par" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Temps total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Compte" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Afficher l'information" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Fonction de vue" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nom d'URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Pas de cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Données de session" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Pas de données de session" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Données GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Aucune donnée GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Données POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Aucune donnée POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Paramètre" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Fournissant" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receveurs" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s requête" msgstr[1] "%(num)s requêtes" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Requête" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Chronologie" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Action" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connexion :" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Niveau d'isolation :" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "État de la transaction :" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(indéterminé)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Aucune requête SQL n'a été enregistrée durant cette requête." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Retour" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL expliqué" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Exécuté" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de données" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilé" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erreur" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL sélectionné" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ensemble vide" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Chemin de fichier statique" msgstr[1] "Chemins de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Aucun" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Application de fichiers statiques" msgstr[1] "Applications de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s fichier" msgstr[1] "%(payload_count)s fichiers" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Chemin" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Source du gabarit :" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Chemin du gabarit" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Gabarit" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Afficher/masquer le contexte" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Processeur de contexte" msgstr[1] "Processeurs de contexte" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Utilisation des ressources" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Chronologie du navigateur" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attribut mesuré" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisecondes depuis le début de la navigation (+longueur)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.0.1/debug_toolbar/locale/he/000077500000000000000000000000001226272473700221565ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/he/LC_MESSAGES/000077500000000000000000000000001226272473700237435ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/he/LC_MESSAGES/django.mo000066400000000000000000000030721226272473700255440ustar00rootroot00000000000000%`ahot z     $*3<    2=L U`ipy      +   ActionActiveBackCloseEmpty setErrorExecuted SQLHideIn errorKeyLevelLocationLoggingMessageNo GET dataNo POST dataNo messages loggedSerializableSignalSignalsTemplatesTimeTypeValueVariableVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-toolbar/language/he/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: he Plural-Forms: nplurals=2; plural=(n != 1); פעילותפעילותחזרהסגורקבוצה ריקהשגיאהSQL שבוצעהסתרשגיאהמפתחרמהמקוםרישום יומןהודעהאין נתוני GETאין נתוני POSTאין הודעותמשתנהסיגנלסיגנליםתבניותזמןסוגערךמשתנהגירסאותdjango-debug-toolbar-1.0.1/debug_toolbar/locale/he/LC_MESSAGES/django.po000066400000000000000000000337401226272473700255540ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # shaib , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-toolbar/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "רישום יומן" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:49 msgid "Signals" msgstr "סיגנלים" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "זמן" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "גירסאות" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "משתנה" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "פעילות" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "שגיאה" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "תבניות" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "הסתר" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "סגור" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "סוג" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "מפתח" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ערך" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "רמה" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "הודעה" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "מקום" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "אין הודעות" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "משתנה" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "אין נתוני GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "אין נתוני POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "סיגנל" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "פעילות" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "חזרה" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL שבוצע" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "שגיאה" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "קבוצה ריקה" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "תבנית" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "" django-debug-toolbar-1.0.1/debug_toolbar/locale/id/000077500000000000000000000000001226272473700221565ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/id/LC_MESSAGES/000077500000000000000000000000001226272473700237435ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/id/LC_MESSAGES/django.mo000066400000000000000000000056441226272473700255530ustar00rootroot000000000000008O$ ">CK Q]ck t        $19B`go     !'08AR  ' , 1 "9 \ d j r {             & : W a e n z ~        & . = O U g y     / (6#75 & !- 0)+.2 *",%3148'$ %(count)s message%(count)s messages(unknown)ActionActiveBackCPU: %(cum)0.2fms (%(total)0.2fms)CallChannelCloseConnection:CountCumTimeDatabaseElapsed timeEmpty setExecuted SQLHideIn transactionIsolation level:KeyLevelLocationMessageNo GET dataNo POST dataNo messages loggedNonePerReceiversResourceSQLSerializableSettingSettingsSettings from %sSignalSignalsStatic fileStatic filesStatic filesSystem CPU timeTemplate pathTemplate pathsTemplatesTimeTime (ms)TotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-toolbar/language/id/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: id Plural-Forms: nplurals=1; plural=0; %(count)s pesan(tidak diketahui)AksiAksiKembaliCPU: %(cum)0.2fms (%(total)0.2fms)PanggilKanalMenutupKoneksi:HitungCumTimeBasis dataWaktu terlampauiHimpunan kosongSQL TereksekusiMenyembunyikanStatus transaksi:Tingkat isolasi:KunciTingkatLokasiPesanTidak ada data GETTidak ada data POSTTidak ada pesan yang dicatatTidak adaPerPenerimaSumber dayaSQLVariabelPengaturanPengaturanPengaturan dari %sSinyalSinyalBerkas statikBerkas statikCPU time sistemTemplate pathTemplateWaktuWaktu (milidetik)TotTimeCPU time totalStatus transaksi:Jenis(tidak diketahui)CPU time penggunaNilaiVariabelVersiVersiLihat informasidjango-debug-toolbar-1.0.1/debug_toolbar/locale/id/LC_MESSAGES/django.po000066400000000000000000000341421226272473700255510ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Muhammad Panji , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-toolbar/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s pesan" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Pengaturan" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Pengaturan dari %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" #: panels/signals.py:49 msgid "Signals" msgstr "Sinyal" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Berkas statik" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Waktu" #: panels/timer.py:42 msgid "User CPU time" msgstr "CPU time pengguna" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "CPU time sistem" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU time total" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Waktu terlampaui" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versi" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Aksi" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Status transaksi:" #: panels/sql/panel.py:39 msgid "In error" msgstr "" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "(tidak diketahui)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Menyembunyikan" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Menutup" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Waktu (milidetik)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Jenis" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kunci" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Nilai" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Tingkat" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Pesan" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Lokasi" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Tidak ada pesan yang dicatat" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Panggil" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Hitung" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Lihat informasi" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Tidak ada data GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Tidak ada data POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Pengaturan" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Penerima" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Aksi" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Koneksi:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Tingkat isolasi:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status transaksi:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(tidak diketahui)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Kembali" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Tereksekusi" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Basis data" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Himpunan kosong" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Tidak ada" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Berkas statik" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template path" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Sumber daya" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versi" django-debug-toolbar-1.0.1/debug_toolbar/locale/it/000077500000000000000000000000001226272473700221765ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/it/LC_MESSAGES/000077500000000000000000000000001226272473700237635ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/it/LC_MESSAGES/django.mo000066400000000000000000000207711226272473700255710ustar00rootroot00000000000000L|H JI $  l ND . .    , )> h r |      "  F 9 DQV\dj s$N(# L Y'c   ( 2?G-O}  1     '-< MWgo      *1h9 " 5)1A^ o&yG LV_p     " 3@Q&IpoS/P-+ '5DV] d ny "Q$9BKRY a$nQ2J Z0h  $ )7? HRb j7t> &BZ blu y    &4 DQ b o|a!+? k8y+ & ?   !!"!*!;! K!X!h!{!! !!! !!! !! !o &ykvp7cLquMt1 E<r!Z{2%Q0=F~?j/Jn>Y "SV_s#]| W8^TfN-Rwh$ *B:[\43UP. G})x,X+gOm`'ldzCD;b(H@i56eKA9aI%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Italian (http://www.transifex.com/projects/p/django-debug-toolbar/language/it/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: it Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d chiamata in %(time).2fms%(cache_calls)d chiamate in %(time).2fms%(count)s messaggio%(count)s messaggi%(num)s query%(num)s query%(num_receivers)d ricevitore di %(num_signals)d segnali%(num_receivers)d ricevitori di %(num_signals)d segnali%(num_receivers)d ricevitore di 1 segnale%(num_receivers)d ricevitori di 1 segnale%(num_used)s file usato%(num_used)s file usati%(payload_count)s file%(payload_count)s file%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d volontario, %(ivcsw)d involontario(sconosciuto)AzioneAzioneArgomentiAutocommitIndietroBackendTempo browserCPU: %(cum)0.2fms (%(total)0.2fms)CacheChiamate alla cache da %(count)d backendChiamate alla cache da %(count)d backendTrovati in cacheNon trovati in cacheChiamataChiamateCanaleChiudiComandiConnessione:Context processorContext processorsCambi di contestoCookiesNumeroCumTimeNon sono più disponibili dati per questo pannello. Ricarica la pagina e riprova.DatabaseDisattiva per la prossima requests e le successiveTempo TrascorsoInsieme vuotoAbilita per la prossima requests e le successiveErroreSQL eseguitaDati GETIntestazioniNascondiNascondi ToolbarIdleErroreStato transazione:Intercetta ridirezioniIsolation level:NomeParole chiaveLivelloLocationLocation:Messaggi di logLoggingMessaggioMillisecondi dall'inizio della navigazione (+lunghezza)NomeNessun dato in GETNessuno dato in POSTNessuna Query SQL è stata registrata durante questa richiestaNessun cookieNessun messaggio registratoNessun dato in sessioneNessunoDati POSTPercorsoPerProfilazioneFornitiQueryRead committedRead uncommittedRicevitoriRepeatable readRequestHeader della requestRisorsaUso risorsaHeader della responseSQLSQL spigatoSQL profilatoSQL selezionatoSerializableDati di sessioneImpostazioneImpostazioniImpostazioni da %sMostra ToolbarSegnaleSegnaliVisto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa.App file staticiApp file staticiPercorso file staticiPercorsi file staticiFiles staticiFile statici (%(num_found)s trovati, %(num_used)s usati)SommarioTempo CPU sistemaPercorso dei templatePercorsi dei templateSorgente del templateTemplateTemplates (%(num_templates)s rendered)Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione.TempoDurata (ms)TimelineAttributoCambia contestoTotTimeTempo Totale CPUChiamate totaliTempo TotaleTotale: %0.2fmsStato transazione:TipoNome URL(sconosciuto)Tempo CPU utenteValoreVariabileVersioneVersioniFunzione ViewVedi InformazioniAmbiente WSGIdjango-debug-toolbar-1.0.1/debug_toolbar/locale/it/LC_MESSAGES/django.po000066400000000000000000000406341226272473700255740ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Dario Agliottone , 2012 # Flavio Curella , 2013 # yakky , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Italian (http://www.transifex.com/projects/p/django-debug-toolbar/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Non sono più disponibili dati per questo pannello. Ricarica la pagina e riprova." #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chiamata in %(time).2fms" msgstr[1] "%(cache_calls)d chiamate in %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chiamate alla cache da %(count)d backend" msgstr[1] "Chiamate alla cache da %(count)d backend" #: panels/headers.py:35 msgid "Headers" msgstr "Intestazioni" #: panels/logging.py:64 msgid "Logging" msgstr "Logging" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s messaggio" msgstr[1] "%(count)s messaggi" #: panels/logging.py:73 msgid "Log messages" msgstr "Messaggi di log" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilazione" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Intercetta ridirezioni" #: panels/request.py:18 msgid "Request" msgstr "Request" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Impostazioni" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Impostazioni da %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ricevitore di 1 segnale" msgstr[1] "%(num_receivers)d ricevitori di 1 segnale" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ricevitore di %(num_signals)d segnali" msgstr[1] "%(num_receivers)d ricevitori di %(num_signals)d segnali" #: panels/signals.py:49 msgid "Signals" msgstr "Segnali" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "File statici (%(num_found)s trovati, %(num_used)s usati)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Files statici" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s file usato" msgstr[1] "%(num_used)s file usati" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Totale: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "Tempo CPU utente" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Tempo CPU sistema" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tempo Totale CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tempo Trascorso" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "Cambi di contesto" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" #: panels/versions.py:25 msgid "Versions" msgstr "Versioni" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Idle" #: panels/sql/panel.py:37 msgid "Active" msgstr "Azione" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Stato transazione:" #: panels/sql/panel.py:39 msgid "In error" msgstr "Errore" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "(sconosciuto)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s rendered)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Nascondi Toolbar" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Nascondi" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Disattiva per la prossima requests e le successive" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Abilita per la prossima requests e le successive" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Mostra Toolbar" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Chiudi" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Location:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sommario" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Chiamate totali" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo Totale" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Trovati in cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Non trovati in cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandi" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chiamate" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Durata (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argomenti" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Parole chiave" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Header della request" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nome" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valore" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Header della response" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Livello" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canale" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Messaggio" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Location" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nessun messaggio registrato" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chiamata" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Numero" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Vedi Informazioni" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Funzione View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabile" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Nessun cookie" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dati di sessione" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Nessun dato in sessione" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Dati GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Nessun dato in GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Dati POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Nessuno dato in POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Impostazione" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Segnale" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Forniti" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Ricevitori" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s query" msgstr[1] "%(num)s query" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Timeline" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Azione" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connessione:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Isolation level:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stato transazione:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(sconosciuto)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Nessuna Query SQL è stata registrata durante questa richiesta" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Indietro" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL spigato" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL eseguita" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilato" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Errore" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selezionato" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Insieme vuoto" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Percorso file statici" msgstr[1] "Percorsi file statici" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nessuno" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App file statici" msgstr[1] "App file statici" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Files statici" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s file" msgstr[1] "%(payload_count)s file" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Percorso" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Sorgente del template" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Percorso dei template" msgstr[1] "Percorsi dei template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Template" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Cambia contesto" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processor" msgstr[1] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso risorsa" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Risorsa" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Tempo browser" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attributo" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisecondi dall'inizio della navigazione (+lunghezza)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versione" django-debug-toolbar-1.0.1/debug_toolbar/locale/nl/000077500000000000000000000000001226272473700221735ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/nl/LC_MESSAGES/000077500000000000000000000000001226272473700237605ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/nl/LC_MESSAGES/django.mo000066400000000000000000000103221226272473700255550ustar00rootroot00000000000000Kte`$alNBTf})   "$ *6< E R\ box }        # 0 8 A _ l s {    &     # 2 F K S a g p x   %G rm T 5 G Y p .      " &- 5AH Q_hm}     +0 4B R ] j  '( - 7AIYi{  (>-H2<,&6@ * 7!BI#EJK90F '4$%D1;A?+ 8) / GC:35".=%(count)s message%(count)s messages%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveBackCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallChannelCloseConnection:CountDatabaseElapsed timeEmpty setErrorExecuted SQLGET dataHideHide toolbarIn errorKeyLevelLocationMessageNameNo GET dataNo POST dataNo messages loggedNonePOST dataProfilingQueryReceiversResourceSQLSQL explainedSerializableSettingSettingsSettings from %sShow toolbarSignalSignalsSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTotTimeTotal CPU timeTotal: %0.2fmsTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-toolbar/language/nl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nl Plural-Forms: nplurals=2; plural=(n != 1); %(count)s bericht%(count)s berichten%(num_receivers)d ontvanger van %(num_signals)d signalen%(num_receivers)d ontvangers van %(num_signals)d signalen%(num_receivers)d ontvanger van 1 signaal%(num_receivers)d ontvangers van 1 signaal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig(niet gekend)ActieActiefTerugCPU: %(cum)0.2fms (%(total)0.2fms)CacheOproepenKanaalSluitenVerbinding:AantalDatabaseVerlopen tijdLege setFoutUitgevoerde SQLGET dataVerbergenVerberg toolbarFoutiefSleutelNiveauLocatieBerichtNaamGeen GET dataGeen POST dataGeen berichten gelogdNonePOST dataProfileringQueryOntvangersBronSQLSQL uitgelegdSerializeerbaarInstellingInstellingenInstellingen van %sBekijk toolbarSignaalSignalenSamenvattingSysteem CPU tijdTemplateTemplatesTemplatepadTemplatepadenTemplatesTemplates (%(num_templates)s gerenderd)TijdTijd (ms)TijdslijnTotTijdTotaal CPU tijdTotaal: %0.2fmsTransactiestatus:TypeNiet gekendGebruikers CPU tijdWaardeParameterVersieVersiesBekijk informatiedjango-debug-toolbar-1.0.1/debug_toolbar/locale/nl/LC_MESSAGES/django.po000066400000000000000000000353611226272473700255720ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ingo Berben , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-toolbar/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s bericht" msgstr[1] "%(count)s berichten" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Instellingen" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Instellingen van %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ontvanger van 1 signaal" msgstr[1] "%(num_receivers)d ontvangers van 1 signaal" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ontvanger van %(num_signals)d signalen" msgstr[1] "%(num_receivers)d ontvangers van %(num_signals)d signalen" #: panels/signals.py:49 msgid "Signals" msgstr "Signalen" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Totaal: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tijd" #: panels/timer.py:42 msgid "User CPU time" msgstr "Gebruikers CPU tijd" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systeem CPU tijd" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Totaal CPU tijd" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Verlopen tijd" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" #: panels/versions.py:25 msgid "Versions" msgstr "Versies" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Serializeerbaar" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Actief" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "Foutief" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Niet gekend" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerenderd)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Verberg toolbar" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Verbergen" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Bekijk toolbar" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Sluiten" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Samenvatting" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tijd (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Sleutel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Waarde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Niveau" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanaal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Bericht" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Locatie" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Geen berichten gelogd" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Oproepen" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTijd" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Aantal" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Bekijk informatie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Parameter" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET data" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Geen GET data" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST data" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Geen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Instelling" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Ontvangers" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Tijdslijn" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Actie" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Verbinding:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Transactiestatus:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(niet gekend)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Terug" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL uitgelegd" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Uitgevoerde SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fout" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Lege set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Templatepad" msgstr[1] "Templatepaden" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Bron" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Naam" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versie" django-debug-toolbar-1.0.1/debug_toolbar/locale/pl/000077500000000000000000000000001226272473700221755ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pl/LC_MESSAGES/000077500000000000000000000000001226272473700237625ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pl/LC_MESSAGES/django.mo000066400000000000000000000113521226272473700255630ustar00rootroot00000000000000Ida0J1$|lN,{    "3F9       # + 0 < 1I {             0 &: a f p y         | A8 4z uR  .=C KV]"ex  $ , 6D L Xel    D#Im r    ;  H+R~   B:F, - ?485+D)10@<#=I 3EG7 92H*$ ;/>%('&C"6.A!%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(unknown)ActionActiveAutocommitBackBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCallCallsChannelCloseCommandsConnection:CountDatabaseEmpty setErrorExecuted SQLHideIn errorIn transactionIsolation level:KeyLevelLocationLoggingMessageNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNoneProfilingQueryReceiversResourceSQLSettingSettingsSettings from %sSignalSignalsSummaryTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTransaction status:TypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-toolbar/language/pl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pl Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %(cache_calls)d wywołanie w %(time).2fms%(cache_calls)d wywołania w %(time).2fms%(cache_calls)d wywołań w %(time).2fms%(count)s wiadomość%(count)s wiadomości%(count)s wiadomości%(num)s zapytanie%(num)s zapytania%(num)s zapytań%(num_receivers)d odbiora %(num_signals)d sygnału%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d orbiorca 1 sygnału%(num_receivers)d odbiorców 1 sygnału%(num_receivers)d odbiorców 1 sygnału%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(nieznany)AkcjaAktywneAutocommitWsteczBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheWywołań z cache z %(count)d backenduWywołań z cache z %(count)d backendówWywołań z cache z %(count)d backendówWywołanieWywołaniaKanałZamknijPoleceniaPołączenie:IlośćBaza danychPusty zbiórBłądWykonane zapytanie SQLUkryjW błędzieW transakcjiPoziom izolacji:KluczPoziomLokalizacjaLogiWiadomośćNazwaBrak danych GETBrak danych POSTŻadne zapytania SQL nie zostały odnotowane podczas tego zapytania.Nie zalogowano żadnych wiadomościBrakProfilowanieZapytanieOdbiorcyZasóbSQLUstawienieUstawieniaUstawienia z %sSygnałSygnałyPodsumowanieTemplatkiTemplatkiTemplatkiŚcieżka templatkiŚcieżki templatekŚcieżki templatekTemplatkiTemplatki (%(num_templates)s wyrenderowano)CzasCzas (ms)Oś czasuStatus transakcji:TypNieznaneWartośćZmiennaWersjaWersjePokaż informacjedjango-debug-toolbar-1.0.1/debug_toolbar/locale/pl/LC_MESSAGES/django.po000066400000000000000000000365731226272473700256020ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Konrad Mosoń , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-toolbar/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d wywołanie w %(time).2fms" msgstr[1] "%(cache_calls)d wywołania w %(time).2fms" msgstr[2] "%(cache_calls)d wywołań w %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Wywołań z cache z %(count)d backendu" msgstr[1] "Wywołań z cache z %(count)d backendów" msgstr[2] "Wywołań z cache z %(count)d backendów" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Logi" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s wiadomość" msgstr[1] "%(count)s wiadomości" msgstr[2] "%(count)s wiadomości" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilowanie" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Ustawienia" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Ustawienia z %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d orbiorca 1 sygnału" msgstr[1] "%(num_receivers)d odbiorców 1 sygnału" msgstr[2] "%(num_receivers)d odbiorców 1 sygnału" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d odbiora %(num_signals)d sygnału" msgstr[1] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" msgstr[2] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" #: panels/signals.py:49 msgid "Signals" msgstr "Sygnały" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Czas" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Wersje" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Aktywne" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "W transakcji" #: panels/sql/panel.py:39 msgid "In error" msgstr "W błędzie" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Nieznane" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templatki" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templatki (%(num_templates)s wyrenderowano)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Ukryj" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Zamknij" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Podsumowanie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Polecenia" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Wywołania" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Czas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Klucz" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wartość" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Poziom" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanał" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Wiadomość" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Lokalizacja" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nie zalogowano żadnych wiadomości" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Wywołanie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Ilość" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Pokaż informacje" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Zmienna" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Brak danych GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Brak danych POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ustawienie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sygnał" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Odbiorcy" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s zapytanie" msgstr[1] "%(num)s zapytania" msgstr[2] "%(num)s zapytań" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Zapytanie" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Oś czasu" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akcja" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Połączenie:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Poziom izolacji:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status transakcji:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(nieznany)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Żadne zapytania SQL nie zostały odnotowane podczas tego zapytania." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Wstecz" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Wykonane zapytanie SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Baza danych" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Błąd" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Pusty zbiór" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Brak" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ścieżka templatki" msgstr[1] "Ścieżki templatek" msgstr[2] "Ścieżki templatek" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Templatki" msgstr[1] "Templatki" msgstr[2] "Templatki" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Zasób" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nazwa" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Wersja" django-debug-toolbar-1.0.1/debug_toolbar/locale/pt/000077500000000000000000000000001226272473700222055ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pt/LC_MESSAGES/000077500000000000000000000000001226272473700237725ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pt/LC_MESSAGES/django.mo000066400000000000000000000035111226272473700255710ustar00rootroot00000000000000",/<   "/4=AGPX ` ly   & #,  !).4 ;IQ Zh|   *#( .8@ "!    ActionActiveBackCloseEmpty setErrorExecuted SQLHideIn errorKeyLevelLocationLoggingMessageNo GET dataNo POST dataNo messages loggedNoneReceiversResourceSerializableSettingSettingsSignalSignalsTemplatesTemplates (%(num_templates)s rendered)TimeTypeValueVariableVersionVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt Plural-Forms: nplurals=2; plural=(n != 1); AcçãoAcçãoVoltarFecharSet vazioErroSQL ExecutadoOcultarErroChaveNívelLocalizaçãoRegistoMensagemSem dados GETSem variáveis POSTNenhuma mensagem registadaNenhumReceptoresRecursoVariávelConfiguraçõesConfiguraçõesSinalSinaisTemplatesTemplates (%(num_templates)s renderizados)TempoTipoValorVariávelVersãoVersõesdjango-debug-toolbar-1.0.1/debug_toolbar/locale/pt/LC_MESSAGES/django.po000066400000000000000000000337661226272473700256130ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Registo" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configurações" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:49 msgid "Signals" msgstr "Sinais" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versões" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Acção" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Fechar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nível" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensagem" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nenhuma mensagem registada" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sem dados GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sem variáveis POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configurações" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acção" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Voltar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Set vazio" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Caminho da Template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador de Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versão" django-debug-toolbar-1.0.1/debug_toolbar/locale/pt_BR/000077500000000000000000000000001226272473700225705ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/000077500000000000000000000000001226272473700243555ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo000066400000000000000000000215211226272473700261550ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f       "(F. u  N1(: c p'z   06 ? IV^-f  1  !& * 4>DS dn~       4AHhP " 5#Yaq &   ! )7=FN We vPB&"kMI?4 ,A-Q   " /N5 in&}&   <CHWu  4/>F      & 7D`hx   #;BqI%4< S Ng    ( ! %!*/!Z!!" '"2"A"["m"u"" """" " ""# ### $#2# C#/6QWiZx=T"a8eNy<\dG20np3|@# 5Jz]If KPM^wl ck~B4?hO:Hg>'`A7)(o*b9+{vL%FD t, mV;1u.E_RsrqS- XU![C}j&Y$%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2014-01-01 13:00+0000 Last-Translator: Fábio Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt_BR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_BR Plural-Forms: nplurals=2; plural=(n > 1); %(cache_calls)d chamada em %(time).2fms%(cache_calls)d chamadas em %(time).2fms%(count)s mensagem%(count)s mensagens%(num)s consulta%(num)s consultas%(num_receivers)d receptor de %(num_signals)d sinais%(num_receivers)d receptores de %(num_signals)d sinais%(num_receivers)d receptor de 1 sinal%(num_receivers)d receptores de 1 sinal%(num_used)s arquivo utilizado%(num_used)s arquivos utilizados%(payload_count)s arquivo%(payload_count)s arquivos%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntário, %(ivcsw)d involuntário(prefixo %(prefix)s)(unknown)AçãoAçãoArgumentosAutocommitVoltarBackendCronometragem do NavegadorCPU: %(cum)0.2fms (%(total)0.2fms)CacheChamadas ao cache de %(count)d backendChamadas ao cache de %(count)d backendsAcessos ao cacheFalhas de cacheChamarChamadasCanalFecharComandosConexão:Mudanças de contextoCookiesContagemCumTimeOs dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente.Banco de dadosDesativar para próximas requisiçõesTempo decorridoConjunto vazioHabilitar para próximas requisiçõesErroSQL ExecutadaDados de GETCabeçalhosEsconderOcultar barra de ferramentasOciosoErroNa transaçãoInterceptar redirecionamentosNível de isolamento:ChaveArgumentosNívelLocalizaçãoLocalização:Mensagens de logLogsMensagemMilissegundos desde início de navegação (+length)NomeNão há dados de GETNão há dados de POSTNenhuma consulta SQL foi registrada durante esta requisição.Sem CookiesNenhuma mensagem logadaSem dados de SessãoNenhumDados de POSTCaminhoPerProfilingFornecendoQueryRead committedRead uncommittedRecebedoresLeitura repetidaRequisiçãoCabeçalhos de RequisiçãoRecursoUso de recursosCabeçalhos de RespostaSQLSQL explicadaSQL perfiladoSQL selecionadaVariávelDados de SessãoConfiguraçãoConfiguraçõesConfigurações em: %sMostrar barra de ferramentasSinaisSinaisUma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo.Arquivo estáticoArquivos estáticosArquivo estático de appArquivos estáticos de appsCaminho do arquivo estáticoCaminho dos arquivos estáticosArquivos estáticosArquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)ResumoTempo de CPU do sistemaTemplateTemplatesCaminho do TemplateCaminho do TemplatesOrigem do Template:TemplatesTemplates (%(num_templates)s renderizados)O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente.TempoTempo (ms)Linha do tempoAtributo de CronometragemAlternar contextoTotTimeTempo total de CPUTotal de chamadasTempo totalTotal: %0.2fmsStatus da transação:TipoNome da URLDesconhecidoTempo de CPU do usuárioValorVariávelVersãoVersõesFunção ViewVer informaçãoAmbiente WSGIdjango-debug-toolbar-1.0.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po000066400000000000000000000411441226272473700261630ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Fábio , 2013-2014 # Percy Pérez-Pinedo, 2009 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2014-01-01 13:00+0000\n" "Last-Translator: Fábio \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Os dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente." #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chamada em %(time).2fms" msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chamadas ao cache de %(count)d backend" msgstr[1] "Chamadas ao cache de %(count)d backends" #: panels/headers.py:35 msgid "Headers" msgstr "Cabeçalhos" #: panels/logging.py:64 msgid "Logging" msgstr "Logs" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s mensagem" msgstr[1] "%(count)s mensagens" #: panels/logging.py:73 msgid "Log messages" msgstr "Mensagens de log" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Interceptar redirecionamentos" #: panels/request.py:18 msgid "Request" msgstr "Requisição" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configurações" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Configurações em: %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 sinal" msgstr[1] "%(num_receivers)d receptores de 1 sinal" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d sinais" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d sinais" #: panels/signals.py:49 msgid "Signals" msgstr "Sinais" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Arquivos estáticos" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s arquivo utilizado" msgstr[1] "%(num_used)s arquivos utilizados" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "Tempo de CPU do usuário" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "Tempo de CPU do sistema" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tempo total de CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tempo decorrido" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Mudanças de contexto" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" #: panels/versions.py:25 msgid "Versions" msgstr "Versões" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Leitura repetida" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Ocioso" #: panels/sql/panel.py:37 msgid "Active" msgstr "Ação" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Na transação" #: panels/sql/panel.py:39 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Desconhecido" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Ocultar barra de ferramentas" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Esconder" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Desativar para próximas requisições" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Habilitar para próximas requisições" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Mostrar barra de ferramentas" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Fechar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Localização:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total de chamadas" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Acessos ao cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Falhas de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chamadas" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tempo (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Cabeçalhos de Requisição" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Cabeçalhos de Resposta" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nível" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensagem" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nenhuma mensagem logada" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contagem" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Ver informação" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Função View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome da URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Sem Cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dados de Sessão" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Sem dados de Sessão" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Dados de GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Não há dados de GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Dados de POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Não há dados de POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuração" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinais" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Fornecendo" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Recebedores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Linha do tempo" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Ação" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Conexão:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Nível de isolamento:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status da transação:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(unknown)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Nenhuma consulta SQL foi registrada durante esta requisição." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Voltar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explicada" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executada" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Banco de dados" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL perfilado" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selecionada" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Conjunto vazio" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Caminho do arquivo estático" msgstr[1] "Caminho dos arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefixo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Arquivo estático de app" msgstr[1] "Arquivos estáticos de apps" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Arquivo estático" msgstr[1] "Arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s arquivo" msgstr[1] "%(payload_count)s arquivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Caminho" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Origem do Template:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Caminho do Template" msgstr[1] "Caminho do Templates" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Alternar contexto" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador do Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso de recursos" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Cronometragem do Navegador" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atributo de Cronometragem" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milissegundos desde início de navegação (+length)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versão" django-debug-toolbar-1.0.1/debug_toolbar/locale/ru/000077500000000000000000000000001226272473700222105ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/ru/LC_MESSAGES/000077500000000000000000000000001226272473700237755ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/ru/LC_MESSAGES/django.mo000066400000000000000000000232741226272473700256040ustar00rootroot00000000000000~  J $ ! l? N    6 )H r |      "  F C N [ ` f n t } $     N $(- V c'm   #) 2?G-O}  1    - >HX`py      "h* &   *9MR[ cqw  V]D? -;Rct   "    o/+ A!!?= }   %  1R)e P5F^w #' K R W f   #  ! !' !H!h! l! x!%! ! !!!'!%" C"P"_" <#I#*Y#V# ##7 $C$ ,%7%%I%o%~%%%%%%"%&&(& =&K&\& q& ~&&&& 3 e$p:&dCNX[\8anoMI^B{9|O<" %7],5KuH=~x)G!lAmPQ E'*Yh.-#4cR >@`1Z/r_TFVJ+Dt wzgLik;}W2fS06vyU?s(qjb%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLog messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Russian (http://www.transifex.com/projects/p/django-debug-toolbar/language/ru/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ru Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %(cache_calls)d обращение за %(time).2fms%(cache_calls)d обращения за %(time).2fms%(cache_calls)d обращений за %(time).2fms%(count)s сообщение%(count)s сообщений%(count)s сообщений%(num)s запрос%(num)s запроса%(num)s запросов%(num_receivers)d получатель %(num_signals)d сигнала(ов)%(num_receivers)d получателя %(num_signals)d сигнала(ов)%(num_receivers)d получателей %(num_signals)d сигнала(ов)%(num_receivers)d получатель 1 сигнала%(num_receivers)d получателя 1 сигнала%(num_receivers)d получателей 1 сигнала%(stime)0.3f мс%(total)0.3f мс%(total_time)0.3f мс%(utime)0.3f мс%(vcsw)d намеренных, %(ivcsw)d вынужденных(неизвестно)<нет view><недоступно>ДействиеДействиеАргументыAutocommitНазадБэкендБраузерное времяCPU: %(cum)0.2fms (%(total)0.2fms)КэшОбращения к кэшу от %(count)d бэкендаОбращения к кэшу от %(count)d бэкендовОбращения к кэшу от %(count)d бэкендовCache хитовПромахи кэшаВызовВызовыКаналЗакрытьКомандыСоединение:Контекст процессорКонтекст процессорыКонтекст процессорыПереключений контекстаCookiesКол-воКумулВремДанные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и попробуйте ещё раз.База данныхОтключить для последующих запросовЗатраченное времяНичего, ноль строкВключить для последующих запросовОшибкаЗапросGETЗаголовкиСкрытьСкрыть панельОжиданиеОшибкаВ транзакцииПерехват редиректовУровень изоляции:ЗаголовокИменованные аргументыУровеньМестоСообщения в логеЛогиСообщениеС начала навигации в мс (+продолжительность)НазваниеНет GET данныхНет POST данныхВо время обработки этого HTTP-запроса не было записано ни одного SQL-запроса.Нет cookiesСообщений нетНет данных в сессииНетPOSTЗаВызовПрофилированиеЗапросRead committedRead uncommittedПолучатели сигналаRepeatable readЗапросЗаголовки запросаРесурсПотребление ресурсовЗаголовки ответаSQLSQL ExplainПрофилирование SQLВыбранные SQL-запросыSerializableСессияПараметрНастройкиНастройки из %sПоказать панельСигналСигналыТак как WSGI-окружение наследует окружение сервера, ниже отображены лишь те из переменных, которые важны для нужд отладки.СводкаSystem CPU timeШаблонШаблоныШаблоныПуть к шаблонамПути к шаблонамПути к шаблонамИсточник шаблона:ШаблоныШаблоны (обработано %(num_templates)s)Django Debug Toolbar в перехватил редирект на адрес, указанный выше. Вы можете нажать на ссылку, чтобы выполнить переход самостоятельно.ВремяВремя (мс)Временная диаграммаСобытиеКонтекстИтогВремяTotal CPU timeВсего вызововОбщее времяИтого: %0.2fmsСтатус транзакции:ТипURL NameНеизвестноUser CPU timeЗначениеПеременнаяВерсияВерсииView функцияViewWSGI-окружениеdjango-debug-toolbar-1.0.1/debug_toolbar/locale/ru/LC_MESSAGES/django.po000066400000000000000000000441661226272473700256120ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ilya Baryshev , 2013 # Mikhail Korobov, 2009 # Алексей Борискин , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Russian (http://www.transifex.com/projects/p/django-debug-toolbar/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Данные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и попробуйте ещё раз." #: panels/cache.py:189 msgid "Cache" msgstr "Кэш" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d обращение за %(time).2fms" msgstr[1] "%(cache_calls)d обращения за %(time).2fms" msgstr[2] "%(cache_calls)d обращений за %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Обращения к кэшу от %(count)d бэкенда" msgstr[1] "Обращения к кэшу от %(count)d бэкендов" msgstr[2] "Обращения к кэшу от %(count)d бэкендов" #: panels/headers.py:35 msgid "Headers" msgstr "Заголовки" #: panels/logging.py:64 msgid "Logging" msgstr "Логи" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s сообщение" msgstr[1] "%(count)s сообщений" msgstr[2] "%(count)s сообщений" #: panels/logging.py:73 msgid "Log messages" msgstr "Сообщения в логе" #: panels/profiling.py:126 msgid "Profiling" msgstr "Профилирование" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Перехват редиректов" #: panels/request.py:18 msgid "Request" msgstr "Запрос" #: panels/request.py:27 msgid "" msgstr "<нет view>" #: panels/request.py:39 msgid "" msgstr "<недоступно>" #: panels/settings.py:20 msgid "Settings" msgstr "Настройки" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Настройки из %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d получатель 1 сигнала" msgstr[1] "%(num_receivers)d получателя 1 сигнала" msgstr[2] "%(num_receivers)d получателей 1 сигнала" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d получатель %(num_signals)d сигнала(ов)" msgstr[1] "%(num_receivers)d получателя %(num_signals)d сигнала(ов)" msgstr[2] "%(num_receivers)d получателей %(num_signals)d сигнала(ов)" #: panels/signals.py:49 msgid "Signals" msgstr "Сигналы" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Итого: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Время" #: panels/timer.py:42 msgid "User CPU time" msgstr "User CPU time" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f мс" #: panels/timer.py:43 msgid "System CPU time" msgstr "System CPU time" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f мс" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Total CPU time" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f мс" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Затраченное время" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f мс" #: panels/timer.py:46 msgid "Context switches" msgstr "Переключений контекста" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" #: panels/versions.py:25 msgid "Versions" msgstr "Версии" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Ожидание" #: panels/sql/panel.py:37 msgid "Active" msgstr "Действие" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "В транзакции" #: panels/sql/panel.py:39 msgid "In error" msgstr "Ошибка" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "Неизвестно" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Шаблоны" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблоны (обработано %(num_templates)s)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Скрыть панель" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Скрыть" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Отключить для последующих запросов" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Включить для последующих запросов" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Показать панель" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Закрыть" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar в перехватил редирект на адрес, указанный выше. Вы можете нажать на ссылку, чтобы выполнить переход самостоятельно." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Сводка" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Всего вызовов" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Общее время" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache хитов" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Промахи кэша" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Команды" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Вызовы" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Время (мс)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Аргументы" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Именованные аргументы" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Бэкенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Заголовки запроса" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Заголовок" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Значение" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Заголовки ответа" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-окружение" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Так как WSGI-окружение наследует окружение сервера, ниже отображены лишь те из переменных, которые важны для нужд отладки." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Уровень" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Канал" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Сообщение" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Место" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Сообщений нет" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Вызов" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "КумулВрем" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "ЗаВызов" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "ИтогВремя" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Кол-во" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View функция" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL Name" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Переменная" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Нет cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Сессия" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Нет данных в сессии" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Нет GET данных" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Нет POST данных" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Параметр" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Получатели сигнала" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s запрос" msgstr[1] "%(num)s запроса" msgstr[2] "%(num)s запросов" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Запрос" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Временная диаграмма" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Действие" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Соединение:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Уровень изоляции:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Статус транзакции:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(неизвестно)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Во время обработки этого HTTP-запроса не было записано ни одного SQL-запроса." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Назад" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL Explain" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Запрос" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База данных" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Профилирование SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Ошибка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Выбранные SQL-запросы" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ничего, ноль строк" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Нет" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Источник шаблона:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Путь к шаблонам" msgstr[1] "Пути к шаблонам" msgstr[2] "Пути к шаблонам" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблоны" msgstr[2] "Шаблоны" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Контекст" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Контекст процессор" msgstr[1] "Контекст процессоры" msgstr[2] "Контекст процессоры" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Потребление ресурсов" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ресурс" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Браузерное время" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Событие" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "С начала навигации в мс (+продолжительность)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Название" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Версия" django-debug-toolbar-1.0.1/debug_toolbar/locale/sk/000077500000000000000000000000001226272473700221775ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/sk/LC_MESSAGES/000077500000000000000000000000001226272473700237645ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/sk/LC_MESSAGES/django.mo000066400000000000000000000222331226272473700255650ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f       "(F. u  $NV(_  '   .?CU[ d n{-  1 '7 <FK O Ycix      *2; Yfmhu " "5/em} &    $- 5CIRZ cq wb3-<vaWN,C3U    " .j4   A6IQXd` 1 0N T b lv}  (/.7fk}D#   (39< EOUd u    ' 1 @ K V s   f b!Si!!G!" "5"5S"" "+""~# # ###### ##$$$ $$/$H$ P$Z$a$ h$u$$07R$Xi[x>U"b9fOy=]eH31np4|A# 6Kz^J LQN_wl dk~C5@hP;Ig?(aB8*)o+c:,{vM&GE t- mW<2u/F`SsrqT. YV!\D}j'Z%%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-29 21:50+0000 Last-Translator: Juraj Bubniak Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sk Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %(cache_calls)d volanie za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(count)s správa%(count)s správ%(count)s správ%(num)s dopyt%(num)s dopytov%(num)s dopytov%(num_receivers)d príjemca %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemca 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_used)s použitý súbor%(num_used)s použitých súborov%(num_used)s použitých súborov%(payload_count)s súbor%(payload_count)s súborov%(payload_count)s súborov%(stime)0.3f msek%(total)0.3f msek%(total_time)0.3f msek%(utime)0.3f msek%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných(prefix %(prefix)s)(neznámy)AkciaAkciaArgumentyAutocommitSpäťBackendČas prehliadačaCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache volania z %(count)d backenduCache volania z %(count)d backendovCache volania z %(count)d backendovVolaní cacheVynechania cacheVolanieVolaniaKanálZatvoriťPríkazyPripojenie:Spracovateľ kontextuSpracovateľ kontextuSpracovateľ kontextuPrepnutí kontextuCookiesPočetCumTimeDáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova.DatabázaZakázať pre ďalšie a nasledujúce požiadavkyUplynutý časPrázdny radPovoliť pre ďalšie a nasledujúce požiadavkyChybaVykonané SQLGET dátaHlavičkySkryťSkryť panel nástrojovNečinnýChybaStav transakcie:Zachytiť presmerovaniaÚroveň izolácie:KľúčKľúčové argumentyÚroveňPolohaPoloha:Správy zápisuZápisSprávaMilisekúnd od spustenia navigácie (+dĺžka)MenoŽiadne GET dátaŽiadne POST dátaV priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty.Žiadne cookiesŽiadne správy neboli zaznamenanéŽiadne dáta relácieŽiadnyPOST dátaCestaZaAnalýzaPoskytujeDopytRead committedRead uncommittedPríjemcoviaOpakovateľné čítaniePožiadavkaHlavičky požiadavkyProstriedokVyužitie prostriedkovHlavičky odpovedeSQLSQL vysvetlenéSQL profilovanéSQL označenéPremennáDáta relácieNastavenieNastaveniaNastavenia z %sZobraziť panel nástrojovSignálSignályKeďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina.Aplikácia pre statické súboryAplikácie pre statické súboryAplikácie pre statické súboryCesta k statickému súboruCesty k statickým súboromCesty k statickým súboromStatické súboryStatické súbory (%(num_found)s nájdených, %(num_used)s použitých)ZhrnutieSystémový čas CPUŠablónaŠablónaŠablónaCesta k šablóneCesta k šablóneCesta k šablóneZdrojový kód šablóny:ŠablónyŠablóny (%(num_templates)s spracovaných)Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz.ČasČas (ms)Časová osČasový atribútPrepnúť kontextTotTimeCelkový čas CPUCelkovo volaníCelkový časCelkovo: %0.2fmsStav transakcie:TypURL meno(neznámy)Užívateľský čas CPUHodnotaPremennáVerziaVerzieView funkciaZobraziť informácieWSGI prostrediedjango-debug-toolbar-1.0.1/debug_toolbar/locale/sk/LC_MESSAGES/django.po000066400000000000000000000422071226272473700255730ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Juraj Bubniak , 2012 # Juraj Bubniak , 2013 # Rastislav Kober , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-29 21:50+0000\n" "Last-Translator: Juraj Bubniak \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova." #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volanie za %(time).2fms" msgstr[1] "%(cache_calls)d volaní za %(time).2fms" msgstr[2] "%(cache_calls)d volaní za %(time).2fms" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache volania z %(count)d backendu" msgstr[1] "Cache volania z %(count)d backendov" msgstr[2] "Cache volania z %(count)d backendov" #: panels/headers.py:35 msgid "Headers" msgstr "Hlavičky" #: panels/logging.py:64 msgid "Logging" msgstr "Zápis" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s správa" msgstr[1] "%(count)s správ" msgstr[2] "%(count)s správ" #: panels/logging.py:73 msgid "Log messages" msgstr "Správy zápisu" #: panels/profiling.py:126 msgid "Profiling" msgstr "Analýza" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "Zachytiť presmerovania" #: panels/request.py:18 msgid "Request" msgstr "Požiadavka" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Nastavenia" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Nastavenia z %s" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d príjemca 1 signálu" msgstr[1] "%(num_receivers)d príjemcov 1 signálu" msgstr[2] "%(num_receivers)d príjemcov 1 signálu" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" #: panels/signals.py:49 msgid "Signals" msgstr "Signály" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické súbory (%(num_found)s nájdených, %(num_used)s použitých)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Statické súbory" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s použitý súbor" msgstr[1] "%(num_used)s použitých súborov" msgstr[2] "%(num_used)s použitých súborov" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Celkovo: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" #: panels/timer.py:42 msgid "User CPU time" msgstr "Užívateľský čas CPU" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systémový čas CPU" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Celkový čas CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Uplynutý čas" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" #: panels/timer.py:46 msgid "Context switches" msgstr "Prepnutí kontextu" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" #: panels/versions.py:25 msgid "Versions" msgstr "Verzie" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "Opakovateľné čítanie" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Premenná" #: panels/sql/panel.py:36 msgid "Idle" msgstr "Nečinný" #: panels/sql/panel.py:37 msgid "Active" msgstr "Akcia" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "Stav transakcie:" #: panels/sql/panel.py:39 msgid "In error" msgstr "Chyba" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "(neznámy)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Šablóny" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablóny (%(num_templates)s spracovaných)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "Skryť panel nástrojov" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Skryť" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "Zakázať pre ďalšie a nasledujúce požiadavky" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "Povoliť pre ďalšie a nasledujúce požiadavky" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "Zobraziť panel nástrojov" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Zatvoriť" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Poloha:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zhrnutie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkovo volaní" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový čas" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Volaní cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Vynechania cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Príkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volania" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Čas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Kľúčové argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Hlavičky požiadavky" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kľúč" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Hlavičky odpovede" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI prostredie" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Úroveň" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanál" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Správa" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Poloha" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Žiadne správy neboli zaznamenané" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volanie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Za" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Počet" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Zobraziť informácie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View funkcia" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL meno" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Premenná" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Žiadne cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dáta relácie" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Žiadne dáta relácie" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET dáta" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Žiadne GET dáta" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST dáta" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Žiadne POST dáta" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavenie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Poskytuje" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Príjemcovia" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dopyt" msgstr[1] "%(num)s dopytov" msgstr[2] "%(num)s dopytov" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Dopyt" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Časová os" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akcia" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Pripojenie:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Úroveň izolácie:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stav transakcie:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(neznámy)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "V priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Späť" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL vysvetlené" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Vykonané SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáza" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilované" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL označené" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdny rad" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta k statickému súboru" msgstr[1] "Cesty k statickým súborom" msgstr[2] "Cesty k statickým súborom" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Žiadny" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikácia pre statické súbory" msgstr[1] "Aplikácie pre statické súbory" msgstr[2] "Aplikácie pre statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "Statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s súbor" msgstr[1] "%(payload_count)s súborov" msgstr[2] "%(payload_count)s súborov" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdrojový kód šablóny:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šablóne" msgstr[1] "Cesta k šablóne" msgstr[2] "Cesta k šablóne" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablóna" msgstr[1] "Šablóna" msgstr[2] "Šablóna" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Prepnúť kontext" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Spracovateľ kontextu" msgstr[1] "Spracovateľ kontextu" msgstr[2] "Spracovateľ kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využitie prostriedkov" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Prostriedok" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Čas prehliadača" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Časový atribút" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisekúnd od spustenia navigácie (+dĺžka)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Meno" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Verzia" django-debug-toolbar-1.0.1/debug_toolbar/locale/sv_SE/000077500000000000000000000000001226272473700226015ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/000077500000000000000000000000001226272473700243665ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo000066400000000000000000000045321226272473700261710ustar00rootroot00000000000000/C $ >HOV[a gsy        $,5< DQY lv {*    "07= CNSbrx        % , 5 = G '/-&# , * + !%$". )( %(count)s message%(count)s messages(unknown)ActionActiveBackCacheCloseConnection:CountDatabaseEmpty setErrorExecuted SQLHideIn errorKeyLevelLocationMessageNameNo GET dataNo POST dataNonePathProfilingQueryReceiversResourceSQLSerializableSettingSettingsSignalSignalsStatic filesSummaryTemplateTemplatesTemplatesTimeTime (ms)UnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-debug-toolbar/language/sv_SE/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sv_SE Plural-Forms: nplurals=2; plural=(n != 1); %(count)s meddelande%(count)s meddelanden(okänd)ÅtgärdÅtgärdBakåtCacheStängAnslutning:RäknaDatabasTomt setFelmeddelandeUtförd SQLDöljFelmeddelandeNyckelNivåPlatsMeddelandeNamnIngen GET dataIngen POST dataIngetSökvägProfileringFrågaMottagareResursSQLVariabelInställningInställningarSignalSignalerStatiska filerSammanfattningMallMallarMallarTidTid (ms)(okänd)VärdeVariabelVersionVersionerVisa informationendjango-debug-toolbar-1.0.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po000066400000000000000000000342611226272473700261760ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Alex Nordlund , 2012-2013 # Alex Nordlund , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-debug-toolbar/language/sv_SE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv_SE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Cache" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s meddelande" msgstr[1] "%(count)s meddelanden" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Inställningar" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:49 msgid "Signals" msgstr "Signaler" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "Statiska filer" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tid" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versioner" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "Åtgärd" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "Felmeddelande" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "(okänd)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Mallar" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Dölj" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Stäng" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sammanfattning" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tid (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nyckel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Värde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivå" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Meddelande" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Plats" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Räkna" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Visa informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Ingen GET data" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Ingen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Inställning" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Mottagare" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Fråga" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Åtgärd" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Anslutning:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(okänd)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Bakåt" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Utförd SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databas" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Felmeddelande" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tomt set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Inget" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Statiska filer" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Sökväg" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Mall" msgstr[1] "Mallar" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurs" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Namn" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.0.1/debug_toolbar/locale/uk/000077500000000000000000000000001226272473700222015ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/uk/LC_MESSAGES/000077500000000000000000000000001226272473700237665ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/uk/LC_MESSAGES/django.mo000066400000000000000000000037611226272473700255740ustar00rootroot00000000000000)   , 2<ELT g&q   - 6 CNWp! # ,+X5g         ActionBackCacheCloseDatabaseErrorHideKeyLevelLocationLoggingMessageNo GET dataNo POST dataNo messages loggedQueryReceiversSettingsSignalSignalsTemplateTemplatesTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TypeValueVariableVersionVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-toolbar/language/uk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: uk Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); ПодіяНазадКешЗакритиБаза данихПомилкаСховатиКлючРівеньМісцеЛогиПовідомленняНемає GET данихНемає POST данихПовідомлень немаєЗапитОтримувачі сигналаНалаштуванняСигналСигналиШаблонШаблониШаблонівШаблониШаблони (оброблено %(num_templates)s)ЧасЧас (мс)ТипЗначенняЗміннаВерсіяВерсіїdjango-debug-toolbar-1.0.1/debug_toolbar/locale/uk/LC_MESSAGES/django.po000066400000000000000000000346711226272473700256030ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Sergey Lysach , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-toolbar/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:189 msgid "Cache" msgstr "Кеш" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Логи" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:126 msgid "Profiling" msgstr "" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:27 msgid "" msgstr "" #: panels/request.py:39 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Налаштування" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:49 msgid "Signals" msgstr "Сигнали" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:115 msgid "Static files" msgstr "" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Час" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Версії" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "" #: panels/sql/panel.py:36 msgid "Idle" msgstr "" #: panels/sql/panel.py:37 msgid "Active" msgstr "" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "" #: panels/sql/panel.py:39 msgid "In error" msgstr "" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Шаблони" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблони (оброблено %(num_templates)s)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "Сховати" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "Закрити" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Час (мс)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Ключ" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Значення" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Рівень" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Повідомлення" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Місце" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Повідомлень немає" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Змінна" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Немає GET даних" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Немає POST даних" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Отримувачі сигнала" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Запит" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Подія" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Назад" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База даних" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Помилка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблони" msgstr[2] "Шаблонів" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Версія" django-debug-toolbar-1.0.1/debug_toolbar/locale/zh_CN/000077500000000000000000000000001226272473700225635ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/000077500000000000000000000000001226272473700243505ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo000066400000000000000000000204321226272473700261500ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f      " F a ly~ $NB(K t '  +/AG P Zgo-w  1 # (27 ; EOUd u     ' ERYha " '54jr &   $)2 :HNW_ hv .R8) *FZn!    7 X)_  ??Q - -$5>EU\cj z  "8)bq!   '7 >H O \fj}   ^ n{ B  '4';c   ( !8 Z l |          !/6Q#WiZx=T!a8eNy<\dG20np3|@"5Jz]If KPMt^wl ck~B4?hO:Hg>'`A7)(o*b9+{vL%FD , mV;1u.E_RsrqS- XU [C}j&Y$%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2013-12-23 12:40+0100 PO-Revision-Date: 2013-12-24 08:56+0000 Last-Translator: Jannis Leidel Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-debug-toolbar/language/zh_CN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: zh_CN Plural-Forms: nplurals=1; plural=0; %(time).2f 毫秒内 %(cache_calls)d 次调用%(count)s 条消息%(num)s 个查询%(num_signals)d 个信号 %(num_receivers)d 个接收者1个信号 %(num_receivers)d 个接收者%(num_used)s 个文件被使用%(payload_count)s 个文件%(stime)0.3f 毫秒%(total)0.3f 毫秒%(total_time)0.3f 毫秒%(utime)0.3f 毫秒%(vcsw)d 主动, %(ivcsw)d 被动(未知)<没有 view><不可用>功能活跃参数自动提交返回后端浏览器计时CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)缓存来自 %(count)d 个后端的缓存调用缓存命中缓存未命中调用调用频道关闭命令连接:Context processors上下文切换Cookies总的调用次数调用该函数及其内部调用其他函数花费的总时间当前面板的数据暂不可用。请刷新页面并重试。数据库针对下一个连续的请求禁用该功能耗时空集合针对下一个连续的请求启用该功能错误执行的 SQL 语句GET 请求数据HTTP 头隐藏隐藏工具栏空闲错误事务拦截重定向隔离级别键关键字参数级别位置位置:日志信息日志消息导航开始后的毫秒 (+长度)名称没有 GET 请求数据没有 POST 请求数据在处理这个请求期间没有记录到 SQL 查询。没有 cookies没有消息被记录没有 session 数据空POST 请求数据路径平均每次调用花费的时间性能分析提供查询读取已提交的读取未提交的接收者可重复读取请求请求头资源资源使用响应头SQLSQL explain 分析SQL 性能分析选中的 SQL 语句可序列化Session 数据设置项设置来自 %s 的设置显示工具栏信号信号由于 WSGI 的环境变量继承自 server,所以下面只显示了一些重要的子集。静态文件包含静态文件的应用静态文件路径静态文件静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)摘要系统 CPU 时间模板模板路径模板源:模板模板 (%(num_templates)s 个被渲染)Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。时间时间(毫秒)时间线计时属性切换上下文调用该函数花费的总时间总的 CPU 时间总调用次数总耗时总共:%0.2f 毫秒事务状态:类型URL 名称未知用户 CPU 时间值变量版本版本View 函数View 信息WSGI 环境变量django-debug-toolbar-1.0.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po000066400000000000000000000375141226272473700261640ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # mozillazg , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-23 12:40+0100\n" "PO-Revision-Date: 2013-12-24 08:56+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-debug-toolbar/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "当前面板的数据暂不可用。请刷新页面并重试。" #: panels/cache.py:189 msgid "Cache" msgstr "缓存" #: panels/cache.py:194 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" #: panels/cache.py:202 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "来自 %(count)d 个后端的缓存调用" #: panels/headers.py:35 msgid "Headers" msgstr "HTTP 头" #: panels/logging.py:64 msgid "Logging" msgstr "日志" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s 条消息" #: panels/logging.py:73 msgid "Log messages" msgstr "日志信息" #: panels/profiling.py:126 msgid "Profiling" msgstr "性能分析" #: panels/redirects.py:22 msgid "Intercept redirects" msgstr "拦截重定向" #: panels/request.py:18 msgid "Request" msgstr "请求" #: panels/request.py:27 msgid "" msgstr "<没有 view>" #: panels/request.py:39 msgid "" msgstr "<不可用>" #: panels/settings.py:20 msgid "Settings" msgstr "设置" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "来自 %s 的设置" #: panels/signals.py:41 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1个信号 %(num_receivers)d 个接收者" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)d 个信号 %(num_receivers)d 个接收者" #: panels/signals.py:49 msgid "Signals" msgstr "信号" #: panels/staticfiles.py:90 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)" #: panels/staticfiles.py:115 msgid "Static files" msgstr "静态文件" #: panels/staticfiles.py:120 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s 个文件被使用" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "总共:%0.2f 毫秒" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "时间" #: panels/timer.py:42 msgid "User CPU time" msgstr "用户 CPU 时间" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f 毫秒" #: panels/timer.py:43 msgid "System CPU time" msgstr "系统 CPU 时间" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f 毫秒" #: panels/timer.py:44 msgid "Total CPU time" msgstr "总的 CPU 时间" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f 毫秒" #: panels/timer.py:45 msgid "Elapsed time" msgstr "耗时" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f 毫秒" #: panels/timer.py:46 msgid "Context switches" msgstr "上下文切换" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" #: panels/versions.py:25 msgid "Versions" msgstr "版本" #: panels/sql/panel.py:21 msgid "Autocommit" msgstr "自动提交" #: panels/sql/panel.py:22 msgid "Read uncommitted" msgstr "读取未提交的" #: panels/sql/panel.py:23 msgid "Read committed" msgstr "读取已提交的" #: panels/sql/panel.py:24 msgid "Repeatable read" msgstr "可重复读取" #: panels/sql/panel.py:25 msgid "Serializable" msgstr "可序列化" #: panels/sql/panel.py:36 msgid "Idle" msgstr "空闲" #: panels/sql/panel.py:37 msgid "Active" msgstr "活跃" #: panels/sql/panel.py:38 msgid "In transaction" msgstr "事务" #: panels/sql/panel.py:39 msgid "In error" msgstr "错误" #: panels/sql/panel.py:40 msgid "Unknown" msgstr "未知" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "模板" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "模板 (%(num_templates)s 个被渲染)" #: templates/debug_toolbar/base.html:17 msgid "Hide toolbar" msgstr "隐藏工具栏" #: templates/debug_toolbar/base.html:17 msgid "Hide" msgstr "隐藏" #: templates/debug_toolbar/base.html:23 msgid "Disable for next and successive requests" msgstr "针对下一个连续的请求禁用该功能" #: templates/debug_toolbar/base.html:23 msgid "Enable for next and successive requests" msgstr "针对下一个连续的请求启用该功能" #: templates/debug_toolbar/base.html:45 msgid "Show toolbar" msgstr "显示工具栏" #: templates/debug_toolbar/base.html:51 msgid "Close" msgstr "关闭" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "位置:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "摘要" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "总调用次数" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "总耗时" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "缓存命中" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "缓存未命中" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "命令" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "调用" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "时间(毫秒)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "类型" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "参数" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "关键字参数" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "后端" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "请求头" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "键" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "值" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "响应头" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI 环境变量" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "由于 WSGI 的环境变量继承自 server,所以下面只显示了一些重要的子集。" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "级别" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "频道" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "消息" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "位置" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "没有消息被记录" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "调用" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "调用该函数及其内部调用其他函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "平均每次调用花费的时间" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "调用该函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "总的调用次数" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View 信息" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View 函数" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL 名称" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "变量" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "没有 cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Session 数据" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "没有 session 数据" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET 请求数据" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "没有 GET 请求数据" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST 请求数据" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "没有 POST 请求数据" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "设置项" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "信号" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "提供" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "接收者" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s 个查询" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "查询" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "时间线" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "功能" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "连接:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "隔离级别" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "事务状态:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(未知)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "在处理这个请求期间没有记录到 SQL 查询。" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "返回" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explain 分析" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "执行的 SQL 语句" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "数据库" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL 性能分析" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "错误" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "选中的 SQL 语句" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "空集合" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "静态文件路径" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "空" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "包含静态文件的应用" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "静态文件" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s 个文件" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "路径" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "模板源:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "模板路径" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "模板" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "切换上下文" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "资源使用" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "资源" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "浏览器计时" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "计时属性" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "导航开始后的毫秒 (+长度)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "名称" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "版本" django-debug-toolbar-1.0.1/debug_toolbar/management/000077500000000000000000000000001226272473700224375ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/management/__init__.py000066400000000000000000000000001226272473700245360ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/management/commands/000077500000000000000000000000001226272473700242405ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/management/commands/__init__.py000066400000000000000000000000001226272473700263370ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/management/commands/debugsqlshell.py000066400000000000000000000014571226272473700274570ustar00rootroot00000000000000from __future__ import absolute_import, print_function, unicode_literals from time import time # 'debugsqlshell' is the same as the 'shell'. from django.core.management.commands.shell import Command # noqa from django.db.backends import util import sqlparse class PrintQueryWrapper(util.CursorDebugWrapper): def execute(self, sql, params=()): start_time = time() try: return self.cursor.execute(sql, params) finally: raw_sql = self.db.ops.last_executed_query(self.cursor, sql, params) end_time = time() duration = (end_time - start_time) * 1000 formatted_sql = sqlparse.format(raw_sql, reindent=True) print('%s [%.2fms]' % (formatted_sql, duration)) util.CursorDebugWrapper = PrintQueryWrapper django-debug-toolbar-1.0.1/debug_toolbar/middleware.py000066400000000000000000000104341226272473700230140ustar00rootroot00000000000000""" Debug Toolbar middleware """ from __future__ import absolute_import, unicode_literals import threading from django.conf import settings from django.utils.encoding import force_text from django.utils.importlib import import_module from debug_toolbar.toolbar import DebugToolbar from debug_toolbar import settings as dt_settings _HTML_TYPES = ('text/html', 'application/xhtml+xml') # Handles python threading module bug - http://bugs.python.org/issue14308 threading._DummyThread._Thread__stop = lambda x: 1 def show_toolbar(request): """ Default function to determine whether to show the toolbar on a given page. """ if request.META.get('REMOTE_ADDR', None) not in settings.INTERNAL_IPS: return False if request.is_ajax(): return False return bool(settings.DEBUG) class DebugToolbarMiddleware(object): """ Middleware to set up Debug Toolbar on incoming request and render toolbar on outgoing response. """ debug_toolbars = {} def process_request(self, request): # Decide whether the toolbar is active for this request. func_path = dt_settings.CONFIG['SHOW_TOOLBAR_CALLBACK'] # Replace this with import_by_path in Django >= 1.6. mod_path, func_name = func_path.rsplit('.', 1) show_toolbar = getattr(import_module(mod_path), func_name) if not show_toolbar(request): return toolbar = DebugToolbar(request) self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar # Activate instrumentation ie. monkey-patch. for panel in toolbar.enabled_panels: panel.enable_instrumentation() # Run process_request methods of panels like Django middleware. response = None for panel in toolbar.enabled_panels: response = panel.process_request(request) if response: break return response def process_view(self, request, view_func, view_args, view_kwargs): toolbar = self.__class__.debug_toolbars.get(threading.current_thread().ident) if not toolbar: return # Run process_view methods of panels like Django middleware. response = None for panel in toolbar.enabled_panels: response = panel.process_view(request, view_func, view_args, view_kwargs) if response: break return response def process_response(self, request, response): toolbar = self.__class__.debug_toolbars.pop(threading.current_thread().ident, None) if not toolbar: return response # Run process_response methods of panels like Django middleware. for panel in reversed(toolbar.enabled_panels): new_response = panel.process_response(request, response) if new_response: response = new_response # Deactivate instrumentation ie. monkey-unpatch. This must run # regardless of the response. Keep 'return' clauses below. # (NB: Django's model for middleware doesn't guarantee anything.) for panel in reversed(toolbar.enabled_panels): panel.disable_instrumentation() # Check for responses where the toolbar can't be inserted. content_encoding = response.get('Content-Encoding', '') content_type = response.get('Content-Type', '').split(';')[0] if any((getattr(response, 'streaming', False), 'gzip' in content_encoding, content_type not in _HTML_TYPES)): return response # Collapse the toolbar by default if SHOW_COLLAPSED is set. if toolbar.config['SHOW_COLLAPSED'] and 'djdt' not in request.COOKIES: response.set_cookie('djdt', 'hide', 864000) # Insert the toolbar in the response. content = force_text(response.content, encoding=settings.DEFAULT_CHARSET) try: insert_at = content.lower().rindex(dt_settings.CONFIG['INSERT_BEFORE'].lower()) except ValueError: pass else: toolbar_content = toolbar.render_toolbar() response.content = content[:insert_at] + toolbar_content + content[insert_at:] if response.get('Content-Length', None): response['Content-Length'] = len(response.content) return response django-debug-toolbar-1.0.1/debug_toolbar/models.py000066400000000000000000000040551226272473700221640ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.conf import settings from django.conf.urls import include, patterns, url from django.core.urlresolvers import clear_url_caches, reverse, NoReverseMatch from django.utils.importlib import import_module import debug_toolbar from debug_toolbar import settings as dt_settings from debug_toolbar.middleware import DebugToolbarMiddleware def is_toolbar_middleware(middleware_path): # Replace this with import_by_path in Django >= 1.6. try: mod_path, cls_name = middleware_path.rsplit('.', 1) mod = import_module(mod_path) middleware_cls = getattr(mod, cls_name) except (AttributeError, ImportError, ValueError): return return issubclass(middleware_cls, DebugToolbarMiddleware) def is_toolbar_middleware_installed(): return any(is_toolbar_middleware(middleware) for middleware in settings.MIDDLEWARE_CLASSES) def prepend_to_setting(setting_name, value): """Insert value at the beginning of a list or tuple setting.""" values = getattr(settings, setting_name) # Make a list [value] or tuple (value,) value = type(values)((value,)) setattr(settings, setting_name, value + values) def patch_internal_ips(): if not settings.INTERNAL_IPS: prepend_to_setting('INTERNAL_IPS', '127.0.0.1') prepend_to_setting('INTERNAL_IPS', '::1') def patch_middleware_classes(): if not is_toolbar_middleware_installed(): prepend_to_setting('MIDDLEWARE_CLASSES', 'debug_toolbar.middleware.DebugToolbarMiddleware') def patch_root_urlconf(): try: reverse('djdt:render_panel') except NoReverseMatch: urlconf_module = import_module(settings.ROOT_URLCONF) urlconf_module.urlpatterns = patterns('', # noqa url(r'^__debug__/', include(debug_toolbar.urls)), ) + urlconf_module.urlpatterns clear_url_caches() if dt_settings.PATCH_SETTINGS: patch_internal_ips() patch_middleware_classes() patch_root_urlconf() django-debug-toolbar-1.0.1/debug_toolbar/panels/000077500000000000000000000000001226272473700216055ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/panels/__init__.py000066400000000000000000000111101226272473700237100ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import warnings from django.template.loader import render_to_string class Panel(object): """ Base class for panels. """ def __init__(self, toolbar): self.toolbar = toolbar # Private panel properties @property def panel_id(self): return self.__class__.__name__ @property def enabled(self): return self.toolbar.request.COOKIES.get('djdt' + self.panel_id, 'on') == 'on' # Titles and content @property def nav_title(self): """ Title shown in the side bar. Defaults to :attr:`title`. """ return self.title @property def nav_subtitle(self): """ Subtitle shown in the side bar. Defaults to the empty string. """ return '' @property def has_content(self): """ ``True`` if the panel can be displayed in full screen, ``False`` if it's only shown in the side bar. Defaults to ``True``. """ return True @property def title(self): """ Title shown in the panel when it's displayed in full screen. Mandatory, unless the panel sets :attr:`has_content` to ``False``. """ raise NotImplementedError @property def template(self): """ Template used to render :attr:`content`. Mandatory, unless the panel sets :attr:`has_content` to ``False`` or overrides `attr`:content`. """ raise NotImplementedError @property def content(self): """ Content of the panel when it's displayed in full screen. By default this renders the template defined by :attr:`template`. Statistics stored with :meth:`record_stats` are available in the template's context. """ if self.has_content: return render_to_string(self.template, self.get_stats()) # URLs for panel-specific views @classmethod def get_urls(cls): """ Return URLpatterns, if the panel has its own views. """ return [] # Enable and disable (expensive) instrumentation, must be idempotent def enable_instrumentation(self): """ Enable instrumentation to gather data for this panel. This usually means monkey-patching (!) or registering signal receivers. Any instrumentation with a non-negligible effect on performance should be installed by this method rather than at import time. Unless the toolbar or this panel is disabled, this method will be called early in :class:`DebugToolbarMiddleware.process_request`. It should be idempotent. """ def disable_instrumentation(self): """ Disable instrumentation to gather data for this panel. This is the opposite of :meth:`enable_instrumentation`. Unless the toolbar or this panel is disabled, this method will be called late in :class:`DebugToolbarMiddleware.process_response`. It should be idempotent. """ # Store and retrieve stats (shared between panels for no good reason) def record_stats(self, stats): """ Store data gathered by the panel. ``stats`` is a :class:`dict`. Each call to ``record_stats`` updates the statistics dictionary. """ self.toolbar.stats.setdefault(self.panel_id, {}).update(stats) def get_stats(self): """ Access data stored by the panel. Returns a :class:`dict`. """ return self.toolbar.stats.get(self.panel_id, {}) # Standard middleware methods def process_request(self, request): """ Like process_request in Django's middleware. Write panel logic related to the request there. Save data with :meth:`record_stats`. """ def process_view(self, request, view_func, view_args, view_kwargs): """ Like process_view in Django's middleware. Write panel logic related to the view there. Save data with :meth:`record_stats`. """ def process_response(self, request, response): """ Like process_response in Django's middleware. Write panel logic related to the response there. Post-process data gathered while the view executed. Save data with :meth:`record_stats`. """ # Backward-compatibility for 1.0, remove in 2.0. class DebugPanel(Panel): def __init__(self, *args, **kwargs): warnings.warn("DebugPanel was renamed to Panel.", DeprecationWarning) super(DebugPanel, self).__init__(*args, **kwargs) django-debug-toolbar-1.0.1/debug_toolbar/panels/cache.py000066400000000000000000000156021226272473700232260ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import inspect import sys import time from django.conf import settings from django.core import cache from django.core.cache import cache as original_cache, get_cache as original_get_cache from django.core.cache.backends.base import BaseCache from django.dispatch import Signal from django.template import Node from django.utils.translation import ugettext_lazy as _, ungettext try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from debug_toolbar.panels import Panel from debug_toolbar.utils import (tidy_stacktrace, render_stacktrace, get_template_info, get_stack) from debug_toolbar import settings as dt_settings cache_called = Signal(providing_args=[ "time_taken", "name", "return_value", "args", "kwargs", "trace"]) def send_signal(method): def wrapped(self, *args, **kwargs): t = time.time() value = method(self, *args, **kwargs) t = time.time() - t if dt_settings.CONFIG['ENABLE_STACKTRACES']: stacktrace = tidy_stacktrace(reversed(get_stack())) else: stacktrace = [] template_info = None cur_frame = sys._getframe().f_back try: while cur_frame is not None: if cur_frame.f_code.co_name == 'render': node = cur_frame.f_locals['self'] if isinstance(node, Node): template_info = get_template_info(node.source) break cur_frame = cur_frame.f_back except Exception: pass del cur_frame cache_called.send(sender=self.__class__, time_taken=t, name=method.__name__, return_value=value, args=args, kwargs=kwargs, trace=stacktrace, template_info=template_info, backend=self.cache) return value return wrapped class CacheStatTracker(BaseCache): """A small class used to track cache calls.""" def __init__(self, cache): self.cache = cache def __repr__(self): return str("") % repr(self.cache) def _get_func_info(self): frame = sys._getframe(3) info = inspect.getframeinfo(frame) return (info[0], info[1], info[2], info[3]) def __contains__(self, key): return self.cache.__contains__(key) def __getattr__(self, name): return getattr(self.cache, name) @send_signal def add(self, *args, **kwargs): return self.cache.add(*args, **kwargs) @send_signal def get(self, *args, **kwargs): return self.cache.get(*args, **kwargs) @send_signal def set(self, *args, **kwargs): return self.cache.set(*args, **kwargs) @send_signal def delete(self, *args, **kwargs): return self.cache.delete(*args, **kwargs) @send_signal def has_key(self, *args, **kwargs): return self.cache.has_key(*args, **kwargs) @send_signal def incr(self, *args, **kwargs): return self.cache.incr(*args, **kwargs) @send_signal def decr(self, *args, **kwargs): return self.cache.decr(*args, **kwargs) @send_signal def get_many(self, *args, **kwargs): return self.cache.get_many(*args, **kwargs) @send_signal def set_many(self, *args, **kwargs): self.cache.set_many(*args, **kwargs) @send_signal def delete_many(self, *args, **kwargs): self.cache.delete_many(*args, **kwargs) @send_signal def incr_version(self, *args, **kwargs): return self.cache.incr_version(*args, **kwargs) @send_signal def decr_version(self, *args, **kwargs): return self.cache.decr_version(*args, **kwargs) def get_cache(*args, **kwargs): return CacheStatTracker(original_get_cache(*args, **kwargs)) class CachePanel(Panel): """ Panel that displays the cache statistics. """ template = 'debug_toolbar/panels/cache.html' def __init__(self, *args, **kwargs): super(CachePanel, self).__init__(*args, **kwargs) self.total_time = 0 self.hits = 0 self.misses = 0 self.calls = [] self.counts = OrderedDict(( ('add', 0), ('get', 0), ('set', 0), ('delete', 0), ('get_many', 0), ('set_many', 0), ('delete_many', 0), ('has_key', 0), ('incr', 0), ('decr', 0), ('incr_version', 0), ('decr_version', 0), )) cache_called.connect(self._store_call_info) def _store_call_info(self, sender, name=None, time_taken=0, return_value=None, args=None, kwargs=None, trace=None, template_info=None, backend=None, **kw): if name == 'get': if return_value is None: self.misses += 1 else: self.hits += 1 elif name == 'get_many': for key, value in return_value.items(): if value is None: self.misses += 1 else: self.hits += 1 self.total_time += time_taken * 1000 self.counts[name] += 1 self.calls.append({ 'time': time_taken, 'name': name, 'args': args, 'kwargs': kwargs, 'trace': render_stacktrace(trace), 'template_info': template_info, 'backend': backend }) # Implement the Panel API nav_title = _("Cache") @property def nav_subtitle(self): cache_calls = len(self.calls) return ungettext("%(cache_calls)d call in %(time).2fms", "%(cache_calls)d calls in %(time).2fms", cache_calls) % {'cache_calls': cache_calls, 'time': self.total_time} @property def title(self): count = len(getattr(settings, 'CACHES', ['default'])) return ungettext("Cache calls from %(count)d backend", "Cache calls from %(count)d backends", count) % dict(count=count) def enable_instrumentation(self): # This isn't thread-safe because cache connections aren't thread-local # in Django, unlike database connections. cache.cache = CacheStatTracker(original_cache) cache.get_cache = get_cache def disable_instrumentation(self): cache.cache = original_cache cache.get_cache = original_get_cache def process_response(self, request, response): self.record_stats({ 'total_calls': len(self.calls), 'calls': self.calls, 'total_time': self.total_time, 'hits': self.hits, 'misses': self.misses, 'counts': self.counts, }) django-debug-toolbar-1.0.1/debug_toolbar/panels/headers.py000066400000000000000000000037511226272473700236000ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class HeadersPanel(Panel): """ A panel to display HTTP headers. """ # List of environment variables we want to display ENVIRON_FILTER = set(( 'CONTENT_LENGTH', 'CONTENT_TYPE', 'DJANGO_SETTINGS_MODULE', 'GATEWAY_INTERFACE', 'QUERY_STRING', 'PATH_INFO', 'PYTHONPATH', 'REMOTE_ADDR', 'REMOTE_HOST', 'REQUEST_METHOD', 'SCRIPT_NAME', 'SERVER_NAME', 'SERVER_PORT', 'SERVER_PROTOCOL', 'SERVER_SOFTWARE', 'TZ', )) title = _("Headers") template = 'debug_toolbar/panels/headers.html' def process_request(self, request): wsgi_env = list(sorted(request.META.items())) self.request_headers = OrderedDict( (unmangle(k), v) for (k, v) in wsgi_env if is_http_header(k)) if 'Cookie' in self.request_headers: self.request_headers['Cookie'] = '=> see Request panel' self.environ = OrderedDict( (k, v) for (k, v) in wsgi_env if k in self.ENVIRON_FILTER) self.record_stats({ 'request_headers': self.request_headers, 'environ': self.environ, }) def process_response(self, request, response): self.response_headers = OrderedDict(sorted(response.items())) self.record_stats({ 'response_headers': self.response_headers, }) def is_http_header(wsgi_key): # The WSGI spec says that keys should be str objects in the environ dict, # but this isn't true in practice. See issues #449 and #482. return isinstance(wsgi_key, str) and wsgi_key.startswith('HTTP_') def unmangle(wsgi_key): return wsgi_key[5:].replace('_', '-').title() django-debug-toolbar-1.0.1/debug_toolbar/panels/logging.py000066400000000000000000000047701226272473700236150ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import datetime import logging try: import threading except ImportError: threading = None from django.utils.translation import ungettext, ugettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.utils import ThreadCollector MESSAGE_IF_STRING_REPRESENTATION_INVALID = '[Could not get log message]' class LogCollector(ThreadCollector): def collect(self, item, thread=None): # Avoid logging SQL queries since they are already in the SQL panel # TODO: Make this check whether SQL panel is enabled if item.get('channel', '') == 'django.db.backends': return super(LogCollector, self).collect(item, thread) class ThreadTrackingHandler(logging.Handler): def __init__(self, collector): logging.Handler.__init__(self) self.collector = collector def emit(self, record): try: message = record.getMessage() except Exception: message = MESSAGE_IF_STRING_REPRESENTATION_INVALID record = { 'message': message, 'time': datetime.datetime.fromtimestamp(record.created), 'level': record.levelname, 'file': record.pathname, 'line': record.lineno, 'channel': record.name, } self.collector.collect(record) # We don't use enable/disable_instrumentation because logging is global. # We can't add thread-local logging handlers. Hopefully logging is cheap. collector = LogCollector() logging_handler = ThreadTrackingHandler(collector) logging.root.setLevel(logging.NOTSET) logging.root.addHandler(logging_handler) class LoggingPanel(Panel): template = 'debug_toolbar/panels/logging.html' def __init__(self, *args, **kwargs): super(LoggingPanel, self).__init__(*args, **kwargs) self._records = {} nav_title = _("Logging") @property def nav_subtitle(self): records = self._records[threading.currentThread()] record_count = len(records) return ungettext("%(count)s message", "%(count)s messages", record_count) % {'count': record_count} title = _("Log messages") def process_request(self, request): collector.clear_collection() def process_response(self, request, response): records = collector.get_collection() self._records[threading.currentThread()] = records collector.clear_collection() self.record_stats({'records': records}) django-debug-toolbar-1.0.1/debug_toolbar/panels/profiling.py000066400000000000000000000113161226272473700241520ustar00rootroot00000000000000from __future__ import absolute_import, division, unicode_literals from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe from debug_toolbar.panels import Panel import cProfile from pstats import Stats from colorsys import hsv_to_rgb import os class DjangoDebugToolbarStats(Stats): __root = None def get_root_func(self): if self.__root is None: for func, (cc, nc, tt, ct, callers) in self.stats.items(): if len(callers) == 0: self.__root = func break return self.__root class FunctionCall(object): def __init__(self, statobj, func, depth=0, stats=None, id=0, parent_ids=[], hsv=(0, 0.5, 1)): self.statobj = statobj self.func = func if stats: self.stats = stats else: self.stats = statobj.stats[func][:4] self.depth = depth self.id = id self.parent_ids = parent_ids self.hsv = hsv def parent_classes(self): return self.parent_classes def background(self): r, g, b = hsv_to_rgb(*self.hsv) return 'rgb(%f%%,%f%%,%f%%)' % (r * 100, g * 100, b * 100) def func_std_string(self): # match what old profile produced func_name = self.func if func_name[:2] == ('~', 0): # special case for built-in functions name = func_name[2] if name.startswith('<') and name.endswith('>'): return '{%s}' % name[1:-1] else: return name else: file_name, line_num, method = self.func idx = file_name.find('/site-packages/') if idx > -1: file_name = file_name[(idx + 14):] file_path, file_name = file_name.rsplit(os.sep, 1) return mark_safe( '{0}/' '{1}' ' in {3}' '({2})'.format( file_path, file_name, line_num, method)) def subfuncs(self): i = 0 h, s, v = self.hsv count = len(self.statobj.all_callees[self.func]) for func, stats in self.statobj.all_callees[self.func].items(): i += 1 h1 = h + (i / count) / (self.depth + 1) if stats[3] == 0: s1 = 0 else: s1 = s * (stats[3] / self.stats[3]) yield FunctionCall(self.statobj, func, self.depth + 1, stats=stats, id=str(self.id) + '_' + str(i), parent_ids=self.parent_ids + [self.id], hsv=(h1, s1, 1)) def count(self): return self.stats[1] def tottime(self): return self.stats[2] def cumtime(self): cc, nc, tt, ct = self.stats return self.stats[3] def tottime_per_call(self): cc, nc, tt, ct = self.stats if nc == 0: return 0 return tt / nc def cumtime_per_call(self): cc, nc, tt, ct = self.stats if cc == 0: return 0 return ct / cc def indent(self): return 16 * self.depth class ProfilingPanel(Panel): """ Panel that displays profiling information. """ title = _("Profiling") template = 'debug_toolbar/panels/profiling.html' def process_view(self, request, view_func, view_args, view_kwargs): self.profiler = cProfile.Profile() args = (request,) + view_args return self.profiler.runcall(view_func, *args, **view_kwargs) def add_node(self, func_list, func, max_depth, cum_time=0.1): func_list.append(func) func.has_subfuncs = False if func.depth < max_depth: for subfunc in func.subfuncs(): if subfunc.stats[3] >= cum_time: func.has_subfuncs = True self.add_node(func_list, subfunc, max_depth, cum_time=cum_time) def process_response(self, request, response): if not hasattr(self, 'profiler'): return None # Could be delayed until the panel content is requested (perf. optim.) self.profiler.create_stats() self.stats = DjangoDebugToolbarStats(self.profiler) self.stats.calc_callees() root = FunctionCall(self.stats, self.stats.get_root_func(), depth=0) func_list = [] self.add_node(func_list, root, 10, root.stats[3] / 8) self.record_stats({'func_list': func_list}) django-debug-toolbar-1.0.1/debug_toolbar/panels/redirects.py000066400000000000000000000027121226272473700241450ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.core.handlers.wsgi import STATUS_CODE_TEXT from django.shortcuts import render from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class RedirectsPanel(Panel): """ Panel that intercepts redirects and displays a page with debug info. """ @property def enabled(self): default = 'on' if self.toolbar.config['INTERCEPT_REDIRECTS'] else 'off' return self.toolbar.request.COOKIES.get('djdt' + self.panel_id, default) == 'on' has_content = False nav_title = _("Intercept redirects") def process_response(self, request, response): if 300 <= int(response.status_code) < 400: redirect_to = response.get('Location', None) if redirect_to: try: # Django >= 1.6 reason_phrase = response.reason_phrase except AttributeError: reason_phrase = STATUS_CODE_TEXT.get(response.status_code, 'UNKNOWN STATUS CODE') status_line = '%s %s' % (response.status_code, reason_phrase) cookies = response.cookies context = {'redirect_to': redirect_to, 'status_line': status_line} response = render(request, 'debug_toolbar/redirect.html', context) response.cookies = cookies return response django-debug-toolbar-1.0.1/debug_toolbar/panels/request.py000066400000000000000000000032701226272473700236510ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.core.urlresolvers import resolve from django.http import Http404 from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.utils import get_name_from_obj class RequestPanel(Panel): """ A panel to display request variables (POST/GET, session, cookies). """ template = 'debug_toolbar/panels/request.html' title = _("Request") def process_response(self, request, response): self.record_stats({ 'get': [(k, request.GET.getlist(k)) for k in sorted(request.GET)], 'post': [(k, request.POST.getlist(k)) for k in sorted(request.POST)], 'cookies': [(k, request.COOKIES.get(k)) for k in sorted(request.COOKIES)], }) view_info = { 'view_func': _(""), 'view_args': 'None', 'view_kwargs': 'None', 'view_urlname': 'None', } try: match = resolve(request.path) func, args, kwargs = match view_info['view_func'] = get_name_from_obj(func) view_info['view_args'] = args view_info['view_kwargs'] = kwargs view_info['view_urlname'] = getattr(match, 'url_name', _("")) except Http404: pass self.record_stats(view_info) if hasattr(request, 'session'): self.record_stats({ 'session': [(k, request.session.get(k)) for k in sorted(request.session.keys(), key=force_text)] }) django-debug-toolbar-1.0.1/debug_toolbar/panels/settings.py000066400000000000000000000015701226272473700240220ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.conf import settings from django.views.debug import get_safe_settings from django.utils.translation import ugettext_lazy as _ try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from debug_toolbar.panels import Panel class SettingsPanel(Panel): """ A panel to display all variables in django.conf.settings """ template = 'debug_toolbar/panels/settings.html' nav_title = _("Settings") def title(self): return _("Settings from %s") % settings.SETTINGS_MODULE def process_response(self, request, response): self.record_stats({ 'settings': OrderedDict(sorted(get_safe_settings().items(), key=lambda s: s[0])), }) django-debug-toolbar-1.0.1/debug_toolbar/panels/signals.py000066400000000000000000000070601226272473700236220ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.core.signals import ( request_started, request_finished, got_request_exception) from django.db.backends.signals import connection_created from django.db.models.signals import ( class_prepared, pre_init, post_init, pre_save, post_save, pre_delete, post_delete, post_syncdb) from django.dispatch.dispatcher import WEAKREF_TYPES from django.utils.translation import ugettext_lazy as _, ungettext from django.utils.importlib import import_module from debug_toolbar.panels import Panel class SignalsPanel(Panel): template = 'debug_toolbar/panels/signals.html' SIGNALS = { 'request_started': request_started, 'request_finished': request_finished, 'got_request_exception': got_request_exception, 'connection_created': connection_created, 'class_prepared': class_prepared, 'pre_init': pre_init, 'post_init': post_init, 'pre_save': pre_save, 'post_save': post_save, 'pre_delete': pre_delete, 'post_delete': post_delete, 'post_syncdb': post_syncdb, } def nav_subtitle(self): signals = self.get_stats()['signals'] num_receivers = sum(len(s[2]) for s in signals) num_signals = len(signals) # here we have to handle a double count translation, hence the # hard coding of one signal if num_signals == 1: return ungettext("%(num_receivers)d receiver of 1 signal", "%(num_receivers)d receivers of 1 signal", num_receivers) % {'num_receivers': num_receivers} return ungettext("%(num_receivers)d receiver of %(num_signals)d signals", "%(num_receivers)d receivers of %(num_signals)d signals", num_receivers) % {'num_receivers': num_receivers, 'num_signals': num_signals} title = _("Signals") @property def signals(self): signals = self.SIGNALS.copy() for signal in self.toolbar.config['EXTRA_SIGNALS']: mod_path, signal_name = signal.rsplit('.', 1) signals_mod = import_module(mod_path) signals[signal_name] = getattr(signals_mod, signal_name) return signals def process_response(self, request, response): signals = [] for name, signal in sorted(self.signals.items(), key=lambda x: x[0]): if signal is None: continue receivers = [] for (receiverkey, r_senderkey), receiver in signal.receivers: if isinstance(receiver, WEAKREF_TYPES): receiver = receiver() if receiver is None: continue receiver = getattr(receiver, '__wraps__', receiver) receiver_name = getattr(receiver, '__name__', str(receiver)) if getattr(receiver, '__self__', None) is not None: receiver_class_name = getattr(receiver.__self__, '__class__', type).__name__ text = "%s.%s" % (receiver_class_name, receiver_name) elif getattr(receiver, 'im_class', None) is not None: # Python 2 only receiver_class_name = receiver.im_class.__name__ text = "%s.%s" % (receiver_class_name, receiver_name) else: text = "%s" % receiver_name receivers.append(text) signals.append((name, signal, receivers)) self.record_stats({'signals': signals}) django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/000077500000000000000000000000001226272473700224045ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/__init__.py000066400000000000000000000001171226272473700245140ustar00rootroot00000000000000from debug_toolbar.panels.sql.panel import SQLPanel # noqa django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/forms.py000066400000000000000000000050751226272473700241130ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import json import hashlib from django import forms from django.conf import settings from django.db import connections from django.utils.encoding import force_text from django.utils.functional import cached_property from django.core.exceptions import ValidationError from debug_toolbar.panels.sql.utils import reformat_sql class SQLSelectForm(forms.Form): """ Validate params sql: The sql statement with interpolated params raw_sql: The sql statement with placeholders params: JSON encoded parameter values duration: time for SQL to execute passed in from toolbar just for redisplay hash: the hash of (secret + sql + params) for tamper checking """ sql = forms.CharField() raw_sql = forms.CharField() params = forms.CharField() alias = forms.CharField(required=False, initial='default') duration = forms.FloatField() hash = forms.CharField() def __init__(self, *args, **kwargs): initial = kwargs.get('initial', None) if initial is not None: initial['hash'] = self.make_hash(initial) super(SQLSelectForm, self).__init__(*args, **kwargs) for name in self.fields: self.fields[name].widget = forms.HiddenInput() def clean_raw_sql(self): value = self.cleaned_data['raw_sql'] if not value.lower().strip().startswith('select'): raise ValidationError("Only 'select' queries are allowed.") return value def clean_params(self): value = self.cleaned_data['params'] try: return json.loads(value) except ValueError: raise ValidationError('Is not valid JSON') def clean_alias(self): value = self.cleaned_data['alias'] if value not in connections: raise ValidationError("Database alias '%s' not found" % value) return value def clean_hash(self): hash = self.cleaned_data['hash'] if hash != self.make_hash(self.data): raise ValidationError('Tamper alert') return hash def reformat_sql(self): return reformat_sql(self.cleaned_data['sql']) def make_hash(self, data): params = (force_text(settings.SECRET_KEY) + force_text(data['sql']) + force_text(data['params'])) return hashlib.sha1(params.encode('utf-8')).hexdigest() @property def connection(self): return connections[self.cleaned_data['alias']] @cached_property def cursor(self): return self.connection.cursor() django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/panel.py000066400000000000000000000172131226272473700240610ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import uuid from copy import copy from django.conf.urls import patterns, url from django.db import connections from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ from debug_toolbar.panels import Panel from debug_toolbar.panels.sql.forms import SQLSelectForm from debug_toolbar.utils import render_stacktrace from debug_toolbar.panels.sql.utils import reformat_sql from debug_toolbar.panels.sql.tracking import wrap_cursor, unwrap_cursor def get_isolation_level_display(engine, level): if engine == 'psycopg2': import psycopg2.extensions choices = { psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT: _("Autocommit"), psycopg2.extensions.ISOLATION_LEVEL_READ_UNCOMMITTED: _("Read uncommitted"), psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED: _("Read committed"), psycopg2.extensions.ISOLATION_LEVEL_REPEATABLE_READ: _("Repeatable read"), psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE: _("Serializable"), } else: raise ValueError(engine) return choices.get(level) def get_transaction_status_display(engine, level): if engine == 'psycopg2': import psycopg2.extensions choices = { psycopg2.extensions.TRANSACTION_STATUS_IDLE: _("Idle"), psycopg2.extensions.TRANSACTION_STATUS_ACTIVE: _("Active"), psycopg2.extensions.TRANSACTION_STATUS_INTRANS: _("In transaction"), psycopg2.extensions.TRANSACTION_STATUS_INERROR: _("In error"), psycopg2.extensions.TRANSACTION_STATUS_UNKNOWN: _("Unknown"), } else: raise ValueError(engine) return choices.get(level) class SQLPanel(Panel): """ Panel that displays information about the SQL queries run while processing the request. """ def __init__(self, *args, **kwargs): super(SQLPanel, self).__init__(*args, **kwargs) self._offset = dict((k, len(connections[k].queries)) for k in connections) self._sql_time = 0 self._num_queries = 0 self._queries = [] self._databases = {} self._transaction_status = {} self._transaction_ids = {} def get_transaction_id(self, alias): if alias not in connections: return conn = connections[alias].connection if not conn: return engine = conn.__class__.__module__.split('.', 1)[0] if engine == 'psycopg2': cur_status = conn.get_transaction_status() else: raise ValueError(engine) last_status = self._transaction_status.get(alias) self._transaction_status[alias] = cur_status if not cur_status: # No available state return None if cur_status != last_status: if cur_status: self._transaction_ids[alias] = uuid.uuid4().hex else: self._transaction_ids[alias] = None return self._transaction_ids[alias] def record(self, alias, **kwargs): self._queries.append((alias, kwargs)) if alias not in self._databases: self._databases[alias] = { 'time_spent': kwargs['duration'], 'num_queries': 1, } else: self._databases[alias]['time_spent'] += kwargs['duration'] self._databases[alias]['num_queries'] += 1 self._sql_time += kwargs['duration'] self._num_queries += 1 # Implement the Panel API nav_title = _("SQL") @property def nav_subtitle(self): return __("%d query in %.2fms", "%d queries in %.2fms", self._num_queries) % (self._num_queries, self._sql_time) @property def title(self): count = len(self._databases) return __('SQL queries from %(count)d connection', 'SQL queries from %(count)d connections', count) % {'count': count} template = 'debug_toolbar/panels/sql.html' @classmethod def get_urls(cls): return patterns('debug_toolbar.panels.sql.views', # noqa url(r'^sql_select/$', 'sql_select', name='sql_select'), url(r'^sql_explain/$', 'sql_explain', name='sql_explain'), url(r'^sql_profile/$', 'sql_profile', name='sql_profile'), ) def enable_instrumentation(self): # This is thread-safe because database connections are thread-local. for connection in connections.all(): wrap_cursor(connection, self) def disable_instrumentation(self): for connection in connections.all(): unwrap_cursor(connection) def process_response(self, request, response): if self._queries: width_ratio_tally = 0 factor = int(256.0 / (len(self._databases) * 2.5)) for n, db in enumerate(self._databases.values()): rgb = [0, 0, 0] color = n % 3 rgb[color] = 256 - n / 3 * factor nn = color # XXX: pretty sure this is horrible after so many aliases while rgb[color] < factor: nc = min(256 - rgb[color], 256) rgb[color] += nc nn += 1 if nn > 2: nn = 0 rgb[nn] = nc db['rgb_color'] = rgb trans_ids = {} trans_id = None i = 0 for alias, query in self._queries: trans_id = query.get('trans_id') last_trans_id = trans_ids.get(alias) if trans_id != last_trans_id: if last_trans_id: self._queries[(i - 1)][1]['ends_trans'] = True trans_ids[alias] = trans_id if trans_id: query['starts_trans'] = True if trans_id: query['in_trans'] = True query['alias'] = alias if 'iso_level' in query: query['iso_level'] = get_isolation_level_display(query['engine'], query['iso_level']) if 'trans_status' in query: query['trans_status'] = get_transaction_status_display(query['engine'], query['trans_status']) query['form'] = SQLSelectForm(auto_id=None, initial=copy(query)) if query['sql']: query['sql'] = reformat_sql(query['sql']) query['rgb_color'] = self._databases[alias]['rgb_color'] try: query['width_ratio'] = (query['duration'] / self._sql_time) * 100 query['width_ratio_relative'] = ( 100.0 * query['width_ratio'] / (100.0 - width_ratio_tally)) except ZeroDivisionError: query['width_ratio'] = 0 query['width_ratio_relative'] = 0 query['start_offset'] = width_ratio_tally query['end_offset'] = query['width_ratio'] + query['start_offset'] width_ratio_tally += query['width_ratio'] query['stacktrace'] = render_stacktrace(query['stacktrace']) i += 1 if trans_id: self._queries[(i - 1)][1]['ends_trans'] = True self.record_stats({ 'databases': sorted(self._databases.items(), key=lambda x: -x[1]['time_spent']), 'queries': [q for a, q in self._queries], 'sql_time': self._sql_time, }) django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/tracking.py000066400000000000000000000132741226272473700245670ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import sys import json from threading import local from time import time from django.template import Node from django.utils.encoding import force_text from django.utils import six from debug_toolbar.utils import tidy_stacktrace, get_template_info, get_stack from debug_toolbar import settings as dt_settings class SQLQueryTriggered(Exception): """Thrown when template panel triggers a query""" pass class ThreadLocalState(local): def __init__(self): self.enabled = True @property def Wrapper(self): if self.enabled: return NormalCursorWrapper return ExceptionCursorWrapper def recording(self, v): self.enabled = v state = ThreadLocalState() recording = state.recording # export function def wrap_cursor(connection, panel): if not hasattr(connection, '_djdt_cursor'): connection._djdt_cursor = connection.cursor def cursor(): return state.Wrapper(connection._djdt_cursor(), connection, panel) connection.cursor = cursor return cursor def unwrap_cursor(connection): if hasattr(connection, '_djdt_cursor'): del connection._djdt_cursor del connection.cursor class ExceptionCursorWrapper(object): """ Wraps a cursor and raises an exception on any operation. Used in Templates panel. """ def __init__(self, cursor, db, logger): pass def __getattr__(self, attr): raise SQLQueryTriggered() class NormalCursorWrapper(object): """ Wraps a cursor and logs queries. """ def __init__(self, cursor, db, logger): self.cursor = cursor # Instance of a BaseDatabaseWrapper subclass self.db = db # logger must implement a ``record`` method self.logger = logger def _quote_expr(self, element): if isinstance(element, six.string_types): return "'%s'" % force_text(element).replace("'", "''") else: return repr(element) def _quote_params(self, params): if not params: return params if isinstance(params, dict): return dict((key, self._quote_expr(value)) for key, value in params.items()) return list(map(self._quote_expr, params)) def _decode(self, param): try: return force_text(param, strings_only=True) except UnicodeDecodeError: return '(encoded string)' def _record(self, method, sql, params): start_time = time() try: return method(sql, params) finally: stop_time = time() duration = (stop_time - start_time) * 1000 if dt_settings.CONFIG['ENABLE_STACKTRACES']: stacktrace = tidy_stacktrace(reversed(get_stack())) else: stacktrace = [] _params = '' try: _params = json.dumps(list(map(self._decode, params))) except Exception: pass # object not JSON serializable template_info = None cur_frame = sys._getframe().f_back try: while cur_frame is not None: if cur_frame.f_code.co_name == 'render': node = cur_frame.f_locals['self'] if isinstance(node, Node): template_info = get_template_info(node.source) break cur_frame = cur_frame.f_back except Exception: pass del cur_frame alias = getattr(self.db, 'alias', 'default') conn = self.db.connection # HACK: avoid imports if conn: engine = conn.__class__.__module__.split('.', 1)[0] else: engine = 'unknown' params = { 'engine': engine, 'alias': alias, 'sql': self.db.ops.last_executed_query( self.cursor, sql, self._quote_params(params)), 'duration': duration, 'raw_sql': sql, 'params': _params, 'stacktrace': stacktrace, 'start_time': start_time, 'stop_time': stop_time, 'is_slow': duration > dt_settings.CONFIG['SQL_WARNING_THRESHOLD'], 'is_select': sql.lower().strip().startswith('select'), 'template_info': template_info, } if engine == 'psycopg2': # If an erroneous query was ran on the connection, it might # be in a state where checking isolation_level raises an # exception. try: iso_level = conn.isolation_level except conn.InternalError: iso_level = 'unknown' params.update({ 'trans_id': self.logger.get_transaction_id(alias), 'trans_status': conn.get_transaction_status(), 'iso_level': iso_level, 'encoding': conn.encoding, }) # We keep `sql` to maintain backwards compatibility self.logger.record(**params) def callproc(self, procname, params=()): return self._record(self.cursor.callproc, procname, params) def execute(self, sql, params=()): return self._record(self.cursor.execute, sql, params) def executemany(self, sql, param_list): return self._record(self.cursor.executemany, sql, param_list) def __getattr__(self, attr): return getattr(self.cursor, attr) def __iter__(self): return iter(self.cursor) django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/utils.py000066400000000000000000000022631226272473700241210ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import re from django.utils.html import escape import sqlparse from sqlparse import tokens as T class BoldKeywordFilter: """sqlparse filter to bold SQL keywords""" def process(self, stack, stream): """Process the token stream""" for token_type, value in stream: is_keyword = token_type in T.Keyword if is_keyword: yield T.Text, '' yield token_type, escape(value) if is_keyword: yield T.Text, '' def reformat_sql(sql): stack = sqlparse.engine.FilterStack() stack.preprocess.append(BoldKeywordFilter()) # add our custom filter stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings return swap_fields(''.join(stack.run(sql))) def swap_fields(sql): expr = r'SELECT (...........*?) FROM' subs = (r'SELECT ' r'••• ' r'\1 ' r'FROM') return re.sub(expr, subs, sql) django-debug-toolbar-1.0.1/debug_toolbar/panels/sql/views.py000066400000000000000000000076661226272473700241320ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import HttpResponseBadRequest from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt from debug_toolbar.panels.sql.forms import SQLSelectForm @csrf_exempt def sql_select(request): """Returns the output of the SQL SELECT statement""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] cursor = form.cursor cursor.execute(sql, params) headers = [d[0] for d in cursor.description] result = cursor.fetchall() cursor.close() context = { 'result': result, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } return render(request, 'debug_toolbar/panels/sql_select.html', context) return HttpResponseBadRequest('Form errors') @csrf_exempt def sql_explain(request): """Returns the output of the SQL EXPLAIN on the given query""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] cursor = form.cursor conn = form.connection engine = conn.__class__.__module__.split('.', 1)[0] if engine == "sqlite3": # SQLite's EXPLAIN dumps the low-level opcodes generated for a query; # EXPLAIN QUERY PLAN dumps a more human-readable summary # See http://www.sqlite.org/lang_explain.html for details cursor.execute("EXPLAIN QUERY PLAN %s" % (sql,), params) elif engine == "psycopg2": cursor.execute("EXPLAIN ANALYZE %s" % (sql,), params) else: cursor.execute("EXPLAIN %s" % (sql,), params) headers = [d[0] for d in cursor.description] result = cursor.fetchall() cursor.close() context = { 'result': result, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } return render(request, 'debug_toolbar/panels/sql_explain.html', context) return HttpResponseBadRequest('Form errors') @csrf_exempt def sql_profile(request): """Returns the output of running the SQL and getting the profiling statistics""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] cursor = form.cursor result = None headers = None result_error = None try: cursor.execute("SET PROFILING=1") # Enable profiling cursor.execute(sql, params) # Execute SELECT cursor.execute("SET PROFILING=0") # Disable profiling # The Query ID should always be 1 here but I'll subselect to get # the last one just in case... cursor.execute(""" SELECT * FROM information_schema.profiling WHERE query_id = ( SELECT query_id FROM information_schema.profiling ORDER BY query_id DESC LIMIT 1 ) """) headers = [d[0] for d in cursor.description] result = cursor.fetchall() except Exception: result_error = "Profiling is either not available or not supported by your database." cursor.close() context = { 'result': result, 'result_error': result_error, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } return render(request, 'debug_toolbar/panels/sql_profile.html', context) return HttpResponseBadRequest('Form errors') django-debug-toolbar-1.0.1/debug_toolbar/panels/staticfiles.py000066400000000000000000000136721226272473700245020ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from os.path import normpath, join try: import threading except ImportError: threading = None from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.core.files.storage import get_storage_class from django.contrib.staticfiles import finders, storage from django.contrib.staticfiles.templatetags import staticfiles from django.utils.encoding import python_2_unicode_compatible from django.utils.functional import LazyObject from django.utils.translation import ungettext, ugettext_lazy as _ try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from debug_toolbar import panels from debug_toolbar.utils import ThreadCollector @python_2_unicode_compatible class StaticFile(object): """ Representing the different properties of a static file. """ def __init__(self, path): self.path = path def __str__(self): return self.path def real_path(self): return finders.find(self.path) def url(self): return storage.staticfiles_storage.url(self.path) class FileCollector(ThreadCollector): def collect(self, path, thread=None): # handle the case of {% static "admin/" %} if path.endswith('/'): return super(FileCollector, self).collect(StaticFile(path), thread) collector = FileCollector() class DebugConfiguredStorage(LazyObject): """ A staticfiles storage class to be used for collecting which paths are resolved by using the {% static %} template tag (which uses the `url` method). """ def _setup(self): configured_storage_cls = get_storage_class(settings.STATICFILES_STORAGE) class DebugStaticFilesStorage(configured_storage_cls): def __init__(self, collector, *args, **kwargs): super(DebugStaticFilesStorage, self).__init__(*args, **kwargs) self.collector = collector def url(self, path): self.collector.collect(path) return super(DebugStaticFilesStorage, self).url(path) self._wrapped = DebugStaticFilesStorage(collector) _original_storage = storage.staticfiles_storage class StaticFilesPanel(panels.Panel): """ A panel to display the found staticfiles. """ name = 'Static files' template = 'debug_toolbar/panels/staticfiles.html' @property def title(self): return (_("Static files (%(num_found)s found, %(num_used)s used)") % {'num_found': self.num_found, 'num_used': self.num_used}) def __init__(self, *args, **kwargs): super(StaticFilesPanel, self).__init__(*args, **kwargs) self.num_found = 0 self._paths = {} def enable_instrumentation(self): storage.staticfiles_storage = staticfiles.staticfiles_storage = DebugConfiguredStorage() def disable_instrumentation(self): storage.staticfiles_storage = staticfiles.staticfiles_storage = _original_storage @property def has_content(self): if "django.contrib.staticfiles" not in settings.INSTALLED_APPS: raise ImproperlyConfigured("Could not find staticfiles in " "INSTALLED_APPS setting.") return True @property def num_used(self): return len(self._paths[threading.currentThread()]) nav_title = _('Static files') @property def nav_subtitle(self): num_used = self.num_used return ungettext("%(num_used)s file used", "%(num_used)s files used", num_used) % {'num_used': num_used} def process_request(self, request): collector.clear_collection() def process_response(self, request, response): used_paths = collector.get_collection() self._paths[threading.currentThread()] = used_paths self.record_stats({ 'num_found': self.num_found, 'num_used': self.num_used, 'staticfiles': used_paths, 'staticfiles_apps': self.get_staticfiles_apps(), 'staticfiles_dirs': self.get_staticfiles_dirs(), 'staticfiles_finders': self.get_staticfiles_finders(), }) def get_staticfiles_finders(self): """ Returns a sorted mapping between the finder path and the list of relative and file system paths which that finder was able to find. """ finders_mapping = OrderedDict() for finder in finders.get_finders(): for path, finder_storage in finder.list([]): if getattr(finder_storage, 'prefix', None): prefixed_path = join(finder_storage.prefix, path) else: prefixed_path = path finder_cls = finder.__class__ finder_path = '.'.join([finder_cls.__module__, finder_cls.__name__]) real_path = finder_storage.path(path) payload = (prefixed_path, real_path) finders_mapping.setdefault(finder_path, []).append(payload) self.num_found += 1 return finders_mapping def get_staticfiles_dirs(self): """ Returns a list of paths to inspect for additional static files """ dirs = [] for finder in finders.get_finders(): if isinstance(finder, finders.FileSystemFinder): dirs.extend(finder.locations) return [(prefix, normpath(dir)) for prefix, dir in dirs] def get_staticfiles_apps(self): """ Returns a list of app paths that have a static directory """ apps = [] for finder in finders.get_finders(): if isinstance(finder, finders.AppDirectoriesFinder): for app in finder.apps: if app not in apps: apps.append(app) return apps django-debug-toolbar-1.0.1/debug_toolbar/panels/templates/000077500000000000000000000000001226272473700236035ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/panels/templates/__init__.py000066400000000000000000000001171226272473700257130ustar00rootroot00000000000000from debug_toolbar.panels.templates.panel import TemplatesPanel # noqa django-debug-toolbar-1.0.1/debug_toolbar/panels/templates/panel.py000066400000000000000000000167331226272473700252660ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from os.path import normpath from pprint import pformat import django from django import http from django.conf import settings from django.conf.urls import patterns, url from django.db.models.query import QuerySet, RawQuerySet from django.template import Context, RequestContext, Template from django.template.context import get_standard_processors from django.test.signals import template_rendered from django.test.utils import instrumented_test_render from django.utils.encoding import force_text from django.utils import six from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.panels.sql.tracking import recording, SQLQueryTriggered # Monkey-patch to enable the template_rendered signal. The receiver returns # immediately when the panel is disabled to keep the overhead small. # Code taken and adapted from Simon Willison and Django Snippets: # http://www.djangosnippets.org/snippets/766/ if Template._render != instrumented_test_render: Template.original_render = Template._render Template._render = instrumented_test_render # Monkey-patch to store items added by template context processors. The # overhead is sufficiently small to justify enabling it unconditionally. def _request_context__init__( self, request, dict_=None, processors=None, current_app=None, use_l10n=None, use_tz=None): Context.__init__( self, dict_, current_app=current_app, use_l10n=use_l10n, use_tz=use_tz) if processors is None: processors = () else: processors = tuple(processors) self.context_processors = OrderedDict() updates = dict() for processor in get_standard_processors() + processors: name = '%s.%s' % (processor.__module__, processor.__name__) context = processor(request) self.context_processors[name] = context updates.update(context) self.update(updates) RequestContext.__init__ = _request_context__init__ # Monkey-patch versions of Django where Template doesn't store origin. # See https://code.djangoproject.com/ticket/16096. if django.VERSION[:2] < (1, 7): old_template_init = Template.__init__ def new_template_init(self, template_string, origin=None, name=''): old_template_init(self, template_string, origin, name) self.origin = origin Template.__init__ = new_template_init class TemplatesPanel(Panel): """ A panel that lists all templates used during processing of a response. """ def __init__(self, *args, **kwargs): super(TemplatesPanel, self).__init__(*args, **kwargs) self.templates = [] def _store_template_info(self, sender, **kwargs): template, context = kwargs['template'], kwargs['context'] # Skip templates that we are generating through the debug toolbar. if (isinstance(template.name, six.string_types) and template.name.startswith('debug_toolbar/')): return context_list = [] for context_layer in context.dicts: temp_layer = {} if hasattr(context_layer, 'items'): for key, value in context_layer.items(): # Replace any request elements - they have a large # unicode representation and the request data is # already made available from the Request panel. if isinstance(value, http.HttpRequest): temp_layer[key] = '<>' # Replace the debugging sql_queries element. The SQL # data is already made available from the SQL panel. elif key == 'sql_queries' and isinstance(value, list): temp_layer[key] = '<>' # Replace LANGUAGES, which is available in i18n context processor elif key == 'LANGUAGES' and isinstance(value, tuple): temp_layer[key] = '<>' # QuerySet would trigger the database: user can run the query from SQL Panel elif isinstance(value, (QuerySet, RawQuerySet)): model_name = "%s.%s" % ( value.model._meta.app_label, value.model.__name__) temp_layer[key] = '<<%s of %s>>' % ( value.__class__.__name__.lower(), model_name) else: try: recording(False) pformat(value) # this MAY trigger a db query except SQLQueryTriggered: temp_layer[key] = '<>' except UnicodeEncodeError: temp_layer[key] = '<>' except Exception: temp_layer[key] = '<>' else: temp_layer[key] = value finally: recording(True) try: context_list.append(pformat(temp_layer)) except UnicodeEncodeError: pass kwargs['context'] = [force_text(item) for item in context_list] kwargs['context_processors'] = getattr(context, 'context_processors', None) self.templates.append(kwargs) # Implement the Panel API nav_title = _("Templates") @property def title(self): num_templates = len(self.templates) return _("Templates (%(num_templates)s rendered)") % {'num_templates': num_templates} template = 'debug_toolbar/panels/templates.html' @classmethod def get_urls(cls): return patterns('debug_toolbar.panels.templates.views', # noqa url(r'^template_source/$', 'template_source', name='template_source'), ) def enable_instrumentation(self): template_rendered.connect(self._store_template_info) def disable_instrumentation(self): template_rendered.disconnect(self._store_template_info) def process_response(self, request, response): template_context = [] for template_data in self.templates: info = {} # Clean up some info about templates template = template_data.get('template', None) if not hasattr(template, 'origin'): continue if template.origin and template.origin.name: template.origin_name = template.origin.name else: template.origin_name = 'No origin' info['template'] = template # Clean up context for better readability if self.toolbar.config['SHOW_TEMPLATE_CONTEXT']: context_list = template_data.get('context', []) info['context'] = '\n'.join(context_list) template_context.append(info) # Fetch context_processors from any template if self.templates: context_processors = self.templates[0]['context_processors'] else: context_processors = None self.record_stats({ 'templates': template_context, 'template_dirs': [normpath(x) for x in settings.TEMPLATE_DIRS], 'context_processors': context_processors, }) django-debug-toolbar-1.0.1/debug_toolbar/panels/templates/views.py000066400000000000000000000027641226272473700253230ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import HttpResponseBadRequest from django.conf import settings from django.shortcuts import render from django.template import TemplateDoesNotExist from django.template.loader import find_template_loader from django.utils.safestring import mark_safe def template_source(request): """ Return the source of a template, syntax-highlighted by Pygments if it's available. """ template_name = request.GET.get('template', None) if template_name is None: return HttpResponseBadRequest('"template" key is required') loaders = [] for loader_name in settings.TEMPLATE_LOADERS: loader = find_template_loader(loader_name) if loader is not None: loaders.append(loader) for loader in loaders: try: source, display_name = loader.load_template_source(template_name) break except TemplateDoesNotExist: source = "Template Does Not Exist: %s" % (template_name,) try: from pygments import highlight from pygments.lexers import HtmlDjangoLexer from pygments.formatters import HtmlFormatter source = highlight(source, HtmlDjangoLexer(), HtmlFormatter()) source = mark_safe(source) source.pygmentized = True except ImportError: pass return render(request, 'debug_toolbar/panels/template_source.html', { 'source': source, 'template_name': template_name }) django-debug-toolbar-1.0.1/debug_toolbar/panels/timer.py000066400000000000000000000065501226272473700233050ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals try: import resource # Not available on Win32 systems except ImportError: resource = None import time from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class TimerPanel(Panel): """ Panel that displays the time a response took in milliseconds. """ def nav_subtitle(self): stats = self.get_stats() if hasattr(self, '_start_rusage'): utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime return _("CPU: %(cum)0.2fms (%(total)0.2fms)") % { 'cum': (utime + stime) * 1000.0, 'total': stats['total_time'] } elif 'total_time' in stats: return _("Total: %0.2fms") % stats['total_time'] else: return '' has_content = resource is not None title = _("Time") template = 'debug_toolbar/panels/timer.html' @property def content(self): stats = self.get_stats() rows = ( (_("User CPU time"), _("%(utime)0.3f msec") % stats), (_("System CPU time"), _("%(stime)0.3f msec") % stats), (_("Total CPU time"), _("%(total)0.3f msec") % stats), (_("Elapsed time"), _("%(total_time)0.3f msec") % stats), (_("Context switches"), _("%(vcsw)d voluntary, %(ivcsw)d involuntary") % stats), ) return render_to_string(self.template, {'rows': rows}) def process_request(self, request): self._start_time = time.time() if self.has_content: self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) def process_response(self, request, response): stats = {} if hasattr(self, '_start_time'): stats['total_time'] = (time.time() - self._start_time) * 1000 if hasattr(self, '_start_rusage'): self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) stats['utime'] = 1000 * self._elapsed_ru('ru_utime') stats['stime'] = 1000 * self._elapsed_ru('ru_stime') stats['total'] = stats['utime'] + stats['stime'] stats['vcsw'] = self._elapsed_ru('ru_nvcsw') stats['ivcsw'] = self._elapsed_ru('ru_nivcsw') stats['minflt'] = self._elapsed_ru('ru_minflt') stats['majflt'] = self._elapsed_ru('ru_majflt') # these are documented as not meaningful under Linux. If you're running BSD # feel free to enable them, and add any others that I hadn't gotten to before # I noticed that I was getting nothing but zeroes and that the docs agreed. :-( # # stats['blkin'] = self._elapsed_ru('ru_inblock') # stats['blkout'] = self._elapsed_ru('ru_oublock') # stats['swap'] = self._elapsed_ru('ru_nswap') # stats['rss'] = self._end_rusage.ru_maxrss # stats['srss'] = self._end_rusage.ru_ixrss # stats['urss'] = self._end_rusage.ru_idrss # stats['usrss'] = self._end_rusage.ru_isrss self.record_stats(stats) def _elapsed_ru(self, name): return getattr(self._end_rusage, name) - getattr(self._start_rusage, name) django-debug-toolbar-1.0.1/debug_toolbar/panels/versions.py000066400000000000000000000033521226272473700240320ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import sys import django from django.conf import settings from django.utils.importlib import import_module from django.utils.translation import ugettext_lazy as _ try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from debug_toolbar.panels import Panel class VersionsPanel(Panel): """ Shows versions of Python, Django, and installed apps if possible. """ @property def nav_subtitle(self): return 'Django %s' % django.get_version() title = _("Versions") template = 'debug_toolbar/panels/versions.html' def process_response(self, request, response): versions = [('Python', '%d.%d.%d' % sys.version_info[:3])] for app in list(settings.INSTALLED_APPS) + ['django']: name = app.split('.')[-1].replace('_', ' ').capitalize() app = import_module(app) if hasattr(app, 'get_version'): get_version = app.get_version if callable(get_version): version = get_version() else: version = get_version elif hasattr(app, 'VERSION'): version = app.VERSION elif hasattr(app, '__version__'): version = app.__version__ else: continue if isinstance(version, (list, tuple)): version = '.'.join(str(o) for o in version) versions.append((name, version)) versions = sorted(versions, key=lambda version: version[0]) self.record_stats({ 'versions': OrderedDict(versions), 'paths': sys.path, }) django-debug-toolbar-1.0.1/debug_toolbar/settings.py000066400000000000000000000114061226272473700225370ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import warnings from django.conf import settings from django.utils import six # Always import this module as follows: # from debug_toolbar import settings [as dt_settings] # Don't import directly CONFIG or PANELs, or you will miss changes performed # with override_settings in tests. CONFIG_DEFAULTS = { # Toolbar options 'INSERT_BEFORE': '', 'RENDER_PANELS': None, 'RESULTS_STORE_SIZE': 10, 'ROOT_TAG_EXTRA_ATTRS': '', 'SHOW_COLLAPSED': False, 'SHOW_TOOLBAR_CALLBACK': 'debug_toolbar.middleware.show_toolbar', # Panel options 'EXTRA_SIGNALS': [], 'ENABLE_STACKTRACES': True, 'HIDE_IN_STACKTRACES': ( 'socketserver' if six.PY3 else 'SocketServer', 'threading', 'wsgiref', 'debug_toolbar', 'django', ), 'INTERCEPT_REDIRECTS': False, 'SHOW_TEMPLATE_CONTEXT': True, 'SQL_WARNING_THRESHOLD': 500, # milliseconds } USER_CONFIG = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}) # Backward-compatibility for 1.0, remove in 2.0. _RENAMED_CONFIG = { 'RESULTS_STORE_SIZE': 'RESULTS_CACHE_SIZE', 'ROOT_TAG_ATTRS': 'ROOT_TAG_EXTRA_ATTRS', 'HIDDEN_STACKTRACE_MODULES': 'HIDE_IN_STACKTRACES' } for old_name, new_name in _RENAMED_CONFIG.items(): if old_name in USER_CONFIG: warnings.warn( "%r was renamed to %r. Update your DEBUG_TOOLBAR_CONFIG " "setting." % (old_name, new_name), DeprecationWarning) USER_CONFIG[new_name] = USER_CONFIG.pop(old_name) if 'HIDE_DJANGO_SQL' in USER_CONFIG: warnings.warn( "HIDE_DJANGO_SQL was removed. Update your " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) USER_CONFIG.pop('HIDE_DJANGO_SQL') if 'TAG' in USER_CONFIG: warnings.warn( "TAG was replaced by INSERT_BEFORE. Update your " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) USER_CONFIG['INSERT_BEFORE'] = '' % USER_CONFIG.pop('TAG') CONFIG = CONFIG_DEFAULTS.copy() CONFIG.update(USER_CONFIG) if not isinstance(CONFIG['SHOW_TOOLBAR_CALLBACK'], six.string_types): warnings.warn( "SHOW_TOOLBAR_CALLBACK is now a dotted path. Update your " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) PANELS_DEFAULTS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', ] try: PANELS = list(settings.DEBUG_TOOLBAR_PANELS) except AttributeError: PANELS = PANELS_DEFAULTS else: # Backward-compatibility for 1.0, remove in 2.0. _RENAMED_PANELS = { 'debug_toolbar.panels.version.VersionDebugPanel': 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerDebugPanel': 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings_vars.SettingsDebugPanel': 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeaderDebugPanel': 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel': 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLDebugPanel': 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.template.TemplateDebugPanel': 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CacheDebugPanel': 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalDebugPanel': 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logger.LoggingDebugPanel': 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.InterceptRedirectsDebugPanel': 'debug_toolbar.panels.redirects.RedirectsPanel', 'debug_toolbar.panels.profiling.ProfilingDebugPanel': 'debug_toolbar.panels.profiling.ProfilingPanel', } for index, old_panel in enumerate(PANELS): new_panel = _RENAMED_PANELS.get(old_panel) if new_panel is not None: warnings.warn( "%r was renamed to %r. Update your DEBUG_TOOLBAR_PANELS " "setting." % (old_panel, new_panel), DeprecationWarning) PANELS[index] = new_panel PATCH_SETTINGS = getattr(settings, 'DEBUG_TOOLBAR_PATCH_SETTINGS', settings.DEBUG) django-debug-toolbar-1.0.1/debug_toolbar/static/000077500000000000000000000000001226272473700216125ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/000077500000000000000000000000001226272473700244225ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/css/000077500000000000000000000000001226272473700252125ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/css/toolbar.css000066400000000000000000000546571226272473700274070ustar00rootroot00000000000000/* http://www.positioniseverything.net/easyclearing.html */ #djDebug .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } #djDebug .clearfix {display: inline-block;} /* Hides from IE-mac \*/ #djDebug .clearfix {display: block;} * html #djDebug .clearfix {height: 1%;} /* end hide from IE-mac */ /* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */ #djDebug {color:#000;background:#FFF;} #djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe, #djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre, #djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code, #djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp, #djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var, #djDebug b, #djDebug u, #djDebug i, #djDebug center, #djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li, #djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend, #djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td, #djDebug button { margin:0; padding:0; min-width:0; width:auto; border:0; outline:0; font-size:12px; line-height:1.5em; color:#000; vertical-align:baseline; background-color:transparent; font-family:sans-serif; text-align:left; text-shadow: none; -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } #djDebug button { background-color: #eee; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee), color-stop(100%, #cccccc)); background-image: -webkit-linear-gradient(top, #eee, #cccccc); background-image: -moz-linear-gradient(top, #eee, #cccccc); background-image: -ms-linear-gradient(top, #eee, #cccccc); background-image: -o-linear-gradient(top, #eee, #cccccc); background-image: linear-gradient(top, #eee, #cccccc); border: 1px solid #ccc; border-bottom: 1px solid #bbb; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; color: #333; line-height: 1; padding: 0 8px; text-align: center; text-shadow: 0 1px 0 #eee; } #djDebug button:hover { background-color: #ddd; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ddd), color-stop(100%, #bbb)); background-image: -webkit-linear-gradient(top, #ddd, #bbb); background-image: -moz-linear-gradient(top, #ddd, #bbb); background-image: -ms-linear-gradient(top, #ddd, #bbb); background-image: -o-linear-gradient(top, #ddd, #bbb); background-image: linear-gradient(top, #ddd, #bbb); border-color: #bbb; border-bottom-color: #999; cursor: pointer; text-shadow: 0 1px 0 #ddd; } #djDebug button:active { border: 1px solid #aaa; border-bottom: 1px solid #888; -webkit-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; -moz-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; } #djDebug #djDebugToolbar { background-color:#111; width:200px; z-index:100000000; position:fixed; top:0; bottom:0; right:0; opacity:0.9; overflow-y: auto; } #djDebug #djDebugToolbar small { color:#999; } #djDebug #djDebugToolbar ul { margin:0; padding:0; list-style:none; } #djDebug #djDebugToolbar li { border-bottom:1px solid #222; color:#fff; display:block; font-weight:bold; float:none; margin:0; padding:0; position:relative; width:auto; } #djDebug #djDebugToolbar input[type=checkbox] { float: right; margin: 10px; } #djDebug #djDebugToolbar li>a, #djDebug #djDebugToolbar li>div.contentless { font-weight:normal; font-style:normal; text-decoration:none; display:block; font-size:16px; padding:10px 10px 5px 25px; color:#fff; } #djDebug #djDebugToolbar li>div.disabled { font-style: italic; color: #999; } #djDebug #djDebugToolbar li a:hover { color:#111; background-color:#ffc; } #djDebug #djDebugToolbar li.active { background: #333 no-repeat left center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgFJREFUeNqUlE1LAmEQx11fesNeDLt08hZ4KcgvIF7EgxcR9CT4IQwErx47WhFBdvPgwUNQeOiogiLRQSQUQaKD6Vpba7ar20izMe4+bjTwY5/Zl//OMzPPcCaTaRUwAxbTjynAdAHq84XGARuADQXN+MGEIJG1QmCaOZVK7WKUdmCdYMf7K/hDKwagwjRLPp9/cLvdzUKh8Ab+GgosExGz5hvFSJAbDAYKmFSpVM4DgUABX57l6wsYAR/AO64/MQUyyauiE1SdTqdTC4fDZ61W6x0FRUAAXvEqElGJCP5qzG3H5XIdFovFdCgUOgB3B3AC28AmyekSKSDH3LL2piRJcjabvU4kEnfg8sAL0Me1GulYE+ViQdWq1ep9NBrN9vv9J3B7KPyKOf3EtNAe1VVwzjwez36pVDoKBoMu3KpNs13dlg0FZ+ZwOJx+v3+PHATO6H2r0UOe54fJZPIil8vVSLtMjE7LQsFGo/EYiUSuut3uM/aimjPJSFQnCE0+hVNzE4/Hb1FoyOjBCasHdYKiKPLpdPo0k8k0GY1NKyvTyjIFe71eLRaLHZfLZYFx9AS8jhgR6gXb7faJ1+u9FATBglWU8cMxRjki0RmOMmu9Xo/4fL4y9pmVzEMZBcakGPJfw3YWzRY2rA19dWLLBMNCaAXXNHNPIVFO/zOtZ/YtwADKQgq0l7HbRAAAAABJRU5ErkJggg=="); padding-left:10px; } #djDebug #djDebugToolbar li.active a:hover { color:#b36a60; background-color:transparent; } #djDebug #djDebugToolbar li small { font-size:12px; color:#999; font-style:normal; text-decoration:none; font-variant:small-caps; } #djDebug #djDebugToolbarHandle { position:fixed; background-color:#fff; border:1px solid #111; top:30px; right:0; z-index:100000000; opacity:0.75; } #djDebug #djShowToolBarButton { display:block; height:75px; width:30px; border-right:none; border-bottom:4px solid #fff; border-top:4px solid #fff; border-left:4px solid #fff; color:#fff; font-size:10px; font-weight:bold; text-decoration:none; text-align:center; text-indent:-999999px; background: #000 no-repeat left center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAYAAAACnsWZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAATCSURBVGiB7ZlvSBtnHMe/sckZY5aMw06r7aTLjGOwTKOMEWYs7M2EaaUdjG6+GDoQ9mIyupUxGIONwVZfDHwxg2E4igym24s5sFB0oDRq1yi1G0RijTjhjJBI86fR/LvbC+nFs7ncXR7jMsgXDp67e57vffI8v/s9z3NRAeBQxCr7rwGkVAIkVQmQVCVAUpUASVX0gGqxGxaLBTabDVqtFn6/H5OTk4jFYifJxovLdgwNDXGH1dDQkLVeoY+iH+KiBxSNwaOy2+0wmUyKzH0+H7xer2Koo5IVg/loZGSkuGOwtraW2KOggHt7e8QesmMwEomAZVlF5uvr64qBjko2YEtLC9bW1ogfqFRFn2b+v4CpVIovsyyrOP6OSyrksS8uKysDTdNQq9XY3d1FIpEoAFpGshJma2sr53A4OI/Hw7EsK0jIDMNw4+PjXFdXVyEWDLkr6PV6bmJiQvbs4XK5uJqampMBpCiKW1hYUDzF+Xw+zmAwFB5wcHBQMdxjDQ8PHwug6EtC0zS2trag0+kE16enp7G4uAiv14tUKgWz2Qyr1YrOzk6oVCq+XjweR11dHYLBYDZ7RcpK3tvbK+iRcDjMdXR0iP5Sm83GMQwjaNPX11e4IR4dHRU8bGBgQNKsp6dH0MbpdBYO0OVyCR5mNBolzTQaDZdOp/k2c3NzxICiMwlN03x5e3sboVBIrCqvZDIJhmH4c6PRKNlGSqKrGYqi+HJFRQX6+/tlGWq12qxlEmXt2pWVlbxTzGMtLS0VbogjkQjxLw+Hw8QeooA7OzvE5n6/n9hDNAbdbrfibeZRLS8vE7UH8lxunaSKfkUte9MEAAa6EhrqVNZ7HAc8DETBpo935a1oiJ1zH6O5rUH0fmI/iQ2PH1Nji/jpuxlwHHn0KOpBKVFaDRqbz6Gx+RysdjOudn9P7FmwGGy/+DLa3rQQ++QNmEykEA3t8UcsGn+izhvvvEIEBxAM8c2xO/iy74bgWu35KjhmPkLt+SoAwFnTaTI6HPMQMxsBLM1mvgdqdVSO2vKkqAdvXL+FuzOrYFkOd/9YzVqHfsbAlze95NNlnht3FQx0JU6pyxDejSGZyHyFOGs6DWu7GVVnjLh3+wGWZ8m+sMoGfLG1Ht3vvwZruxn1jdWCDVJgO4R7tx9gauwO5iZXiIAUA+r05fhi9D28/pZVluH9+XV8ctmBoJ98qQVIAGooNUZmr+KlV59TZMpsBHCl6Ss8Cu+T8uV+iz/4+qJiOOAg3Xz47eW8oQ5LtAcNdCWmtr55IlX8Oe3BX4sb2PTuIJ1Ko95cjResz6Kt0yKIy0Q8hY66awgFHxEBiqaZC91NArhYZB+fvu3E/M2/s9a32Ey4/ks/qs4c7OSocjUudDfhtx9cRICiQ9zc9rzgfPjzSVE44ODlGLr2q+BaPuFxVKKA9eZqwfnvP85Lmt362Q2WzURMfWN1jtryJApooCv5cmA7hGhI+j+PVDKNAPOQP9cbKwjxcsSghsrcKq/Q4FK/XZYhpdVk2h0q5ytRwFg0k8OeelqHzxzvKjbPtgRTKtEhjkXIzQuaqIM75FNV0C/9wUlKokPscW8SLzhXl/8hag+UNu7kKgGSqgRIqhIgqUqApCp6wH8B9cAOKo9Os8wAAAAASUVORK5CYII="); opacity:0.5; } #djDebug #djShowToolBarButton:hover { background-color:#111; border-top-color:#FFE761; border-left-color:#FFE761; border-bottom-color:#FFE761; cursor:move; opacity:1.0; } #djDebug code { display:block; font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; font-size: 12px; white-space:pre; overflow:auto; } #djDebug .djDebugOdd { background-color:#f5f5f5; } #djDebug .panelContent { display:none; position:fixed; margin:0; top:0; right:200px; bottom:0; left:0px; background-color:#eee; color:#666; z-index:100000000; } #djDebug .panelContent > div { border-bottom:1px solid #ddd; } #djDebug .djDebugPanelTitle { position:absolute; background-color:#ffc; color:#666; padding-left:20px; top:0; right:0; left:0; height:50px; } #djDebug .djDebugPanelTitle code { display:inline; font-size:inherit; } #djDebug .djDebugPanelContent { position:absolute; top:50px; right:0; bottom:0; left:0; height:auto; padding:5px 0 0 20px; } #djDebug .djDebugPanelContent .scroll { height:100%; overflow:auto; display:block; padding:0 10px 0 0; } #djDebug h3 { font-size:24px; font-weight:normal; line-height:50px; } #djDebug h4 { font-size:20px; font-weight:bold; margin-top:0.8em; } #djDebug .panelContent table { border:1px solid #ccc; border-collapse:collapse; width:100%; background-color:#fff; display:block; margin-top:0.8em; overflow: auto; } #djDebug .panelContent tbody td, #djDebug .panelContent tbody th { vertical-align:top; padding:2px 3px; } #djDebug .panelContent tbody td.time { text-align: center; } #djDebug .panelContent thead th { padding:1px 6px 1px 3px; text-align:left; font-weight:bold; font-size:14px; white-space: nowrap; } #djDebug .panelContent tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; } #djDebug .djTemplateHideContextDiv { background-color:#fff; } /* #djDebug .panelContent p a:hover, #djDebug .panelContent dd a:hover { color:#111; background-color:#ffc; } #djDebug .panelContent p { padding:0 5px; } #djDebug .panelContent p, #djDebug .panelContent table, #djDebug .panelContent ol, #djDebug .panelContent ul, #djDebug .panelContent dl { margin:5px 0 15px; background-color:#fff; } #djDebug .panelContent table { clear:both; border:0; padding:0; margin:0; border-collapse:collapse; border-spacing:0; } #djDebug .panelContent table a { color:#000; padding:2px 4px; } #djDebug .panelContent table a:hover { background-color:#ffc; } #djDebug .panelContent table th { background-color:#333; font-weight:bold; color:#fff; padding:3px 7px 3px; text-align:left; cursor:pointer; } #djDebug .panelContent table td { padding:5px 10px; font-size:14px; background-color:#fff; color:#000; vertical-align:top; border:0; } #djDebug .panelContent table tr.djDebugOdd td { background-color:#eee; } */ #djDebug .panelContent .djDebugClose { text-indent:-9999999px; display:block; position:absolute; top:4px; right:15px; height:40px; width:40px; background: no-repeat center center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7dJREFUeNqsWM1PE0EU3+7ShdJKoTRA8UYgIUKM3rmaEI0euXsw0YMHIZEbxBijEiIHLkb/A44SDYlXzkYPGBM+ri1NWz7aUmhp6+9tps10mLfdfrzkl2535r39zc77mvUdHh4abUoUCAD3xP/fQAFItWJkYmLC+e1p8eGPgQcC08ycf8BPgW2vhr0SeQa8AWIe5k4LvATiwCrwtZmS2WT8IfAL+OKRhCoxoftH2GqLyBLwHbhvdC53ha2lVrfmE/DKzbLP5yubplnt7e310f+rq6tqpVLxVatVy0VtHbgNLHohsupGIhQKFQG7v79f+8CLiwsjl8sVAZsxQbYTwFrDwpTwpaj4ptPu6+vLDw4OBkHA014QobOzs3yhUAgyUx4BP2rhq/rIe53GwMBAeXx83DMJEpobi8WCpMtMWeOc9TkwoyMRjUattrMedBkyM+KZN4isqDMDgUCuExIyGbKlGVpRiSzo8kQ4HA4ZXRLGVuzo6GhBJjKviw6dT5TLZSOTyRinp6cGQrV+n67hnEY6nTaur6+1PkM2NWTm5fCd0xDRhh89CKHpXCMijLGxMef6+PjYiRSSUqlUv6/arOlKMlcjQlV0qsGDTZPehpYIxurXRCSRSFByq5NQ56hvhWwj8cm2p7A9UdKYVBX8fn+F2+tIJGIgmzaQkUnYtm0MDw+zvsLYniQiEc2q/WxxwmqRHxrISA9xxiyLDzTGdsRsJwJoK3QPo3vctnhpAzLqTexhiVOg6JAdU5bLy0vHZ+Ro8mg7Q0QO1LvwenZZJycnN3yCIPsMRRYnjO0DU/SY+wprW7fiWmjKJMgnUIcafEaeoxZCJWJI9lH4UjV2u6pSPp/XJR9jaGiIKrERDAbrjllzYOQJZ4zm6ISxuSsntB3gqTyazWZtMowa0aBFb4HegC6aRkZG2C2hLSObmqEdOcVvUdJUZyBlZ7tVa1ASdEUvjW3ZUqvvO82e3kqlUuVOSZANvBFd0fugawM2VKclOT8/tzohQ7pkgzn/rHNdvLbLJkPxeDzHRRIXIaTDkCB57XacoJPZW8bZQpSskslk0Y0QjdEcmstsB8myegrsYbqmENfJU3dOpZyOEwjdCqLIWUyxWKygVzHFccJ2eVkbar/qdq5ZFC3/R5dUb6EBsqQmyEtLuawj0eykRwpPgL0uRO+esLXW7tmX9nEWeAEk2yCQFLqzzb4MeK3Zn4FRsapNEXqGy2eJTTF3VOh27bOE/Ia2pQ81YeCO+P+XknGrH2pq8l+AAQDv/n2Gmq99BgAAAABJRU5ErkJggg=="); } #djDebug .panelContent .djDebugClose:hover { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCVJREFUeNqsWG1IU1EYfjfd0i1bTc2WFTW3tG2aFWlEf4KkMIrCvhH6U9DnjxTyV0ZEXxIVGBH1JyKIPiBK8kf1syCKwu8M3VQsK7OV6ba2udZ7bmd6d+85827zhYftnnPe5z73nvc95z1X5XQ6IUHLQqQjiul1E8KHGIqHxGw2C7+pcd58E6KMooAzphPxnKJBKbFSIfsRpxAmBWMLKI4iviBOIm5O5qSepL8c8R5xQ6EIqZmobzPlSkhINeIpYhkkb0WUqzreqbmEOBaTOjQGf/0+CHz7Klxqc+aAehrGbkrM2b6IyEVUKRFyMpYI38dW8HS0gc/5kdmfnpcPepsD0vMLeRSEm6ivEzeqJOlLsuIJyzs40Au/Xr+CP64uRXORZraCoXQ1aHMX8YZsRDRG0lcqpA1hl3p4mt+C+/nThILDWLYR9EtXsrraEY6IEHGwHmCJGG16k7AIYsTX0/KO1WWn95QJqZWODHxyws8XjUmnjPtZg8DFsFqpkB2sdWL4zWuYKuNwmVwu1w6xkA2s7GAFpnaGAcxbd8H8snJQa7QTUZ+aCrlr10NexR5Iy8yW+REuwsmwDeL0XSOLjfYW5pNZtldC9orS/4FoK4LWa5cgHP4L9n1HILNoudCuM82F1qsXgcXJSOs1ESFkF7WKe8JBfxifQMVMY8/o+P+Z+TYoPFwNoYAfMh3FE2udz8d8CPJWCLdKM03MbcXpySJTY5EtmsNuFW+uex4/gJFe14SYxUuiRHi/fIaue7f5CzKb20KEGKWtYx4Pl2jM54WW+joY6euR9Xm/DkDT5bMQHB3h+7O5jepEMiAUDDBvRtpCfn9CWUWEuGUbkF7PdSDZQQLTaC+S9Rks+VB4qCoqmxRyu4mQbmlrisEY5hEtLN8ynh2RmBjt74sK4LyK3VwhHO5uNa0xoxYMEtVk02KZbk7uxB400C/ERPOVc1EBrMsxcTdCScYQ68L9ZiiyjryUprC+wM5c0PoaH4EmIwMCv4eh6+6t8VghAWzdtVdYzHoaHjKFEE6GvRTvvmSZvScd8f3hHfjT2z0lS3zaQgtkb6tkde3EN3I/kjX3ET9kwVdSOmV7jaF0Fav5BxEh3X3PyPaVBVaYta48aRGkJtHOt7C6zrPKgMvSoCU2vbhEIEpGBKcw6qQ1LLNmrWaVioRIk2kUtvK4SsWSVaCdl8cbcjxW8UxOZqcRJ2TThITZCO+HZvB2dsQsnnUFNtAtWRpLZ430FKjinH0VHSdCXg8EhwaFS03WbEjR6Sc7TkRCoErp2beKlvwX+EtkKqRkGATEYTXSY4SSkx5x2Eyr7WStnXLVJXr2JfPoQBxEDCYgYJD6Oib7MqC0DLiOyKFPVU9TD2J8lqinY3Oo75R9lhC/oQbRhxoSIDZ63UGK9Xg/1ETsnwADAJrrTk7nZiozAAAAAElFTkSuQmCC"); } #djDebug .panelContent .djDebugClose.djDebugBack { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7FJREFUeNrMWM1PE0EU3+7S7bZdKSFNSIFgJJAgINE7VxOi0SP/gYkePAiJ3CDGGJUQOXAx+h9wlGhIvHI2fgQ08mEkkjZNIZR2+7Httr63zMoyOzPdthx8yS+bnZn3m9/OvDcfG9jd3ZVatDggDLhO3j8DioBMMySDg4P2s6PJzu8AbhKMcNr8AHwkWPNL7FfIPcATQMJH2xGCh4AkYAHwtpGT3KD+FuAT4I1PEbQliO8XwtWSkFnAe8ANqX2bIFyzzU7NK8AjEXMgELBkWa6HQqEAvpfL5XqtVgvU63VF4LYE6APM+BGyIBKh67oJUCORCLPDQqEg5fN5E6ByKJA7BVg892FU+mJWvGN5a5pmdHV1RUGAr7lAQdls1igWi1FOk9uAD0760jHynOXR2dlp9fb2+haBhm0TiUQUfTlNFnnBeh8wxhIRj8eVllc98OWIGSN9eoTM0y3D4XC+HRFuMcjFqJqnhUyz1olYLKa730uVCrMjXrmIy1ln9vb2pt1CpljZQcdE1ihIW/sHHrayWbHLq1ZNGDPIyaiacguZZAhhph+K+fpr39Ppqcg/wtHhcE46QnAXHT4XwbJssjJECwbtp1EqS99AjNNpSD0r//77wH7yRgW5qeJhmJ44ChmiHYLBIHOMY9GINDrQ9y8uHDEoEMs7FNl+x5HhieFwD6GQbs8GJMtBbtCBmIkrA3anOD0YH2ci+21RWJ4vldibG5u7W5b+E8O95oguhM0LP1PhBauTOfj1Tnxg+c+DpD0aOFq6pjE75HAfoZAdunGlUpH9iLh6uc9+nsaFt5xlHO4dmZwxtynVKm5avIUrqoWkaxAnTmdOnGC5SARyIjdVvA0bX8ZRt0E7GYZhNgpWb0b1c0UIODfcC9o6XZvL5VTYwrnp6zaMEyd9eYZcyMmoWncLWQUcemIim82xFjTeQiey4+Nj1qZ3CNOySu++zxhzeimTyVjtpiZywIiwNr0XrGPAMh20aCcnJ0o7YtAXOTj3nyXeKZ55ykaiZDKZZ2WS6KiIPhwRaI9F1wm8mT3lBJueSqWkdDptigRhHbbBtpzpQJujb4EdnFOTzjvJ4+kcYF8nFEWpqapqf4xpmjXLsmRynVAFg7VMn1dF95oZcuR/yWPDDqvVKsIp8nOknGOJaHTTQ4e7gM0L2NM2Cddiq3dfnMdxwANAugUBaeI73ujPgN9jwGtAD/mqFZJ6kuC3xApp20N8L+y3hHuE1lw/amKAUfK+hYtxsz9qHPsrwACHs5P9Qys/0AAAAABJRU5ErkJggg=="); } #djDebug .panelContent .djDebugClose.djDebugBack:hover { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA6hJREFUeNrMWF1Ik1EYPtt0pkuGa/aDJTY3nNvSfkglvEwQpa7CbrosKAghBedNikKgEgVe1m03SVeJXmSXBmIozpxpuiUS/eicSc75m73vx/nGt7Nzvm8/BR14+Pjec85znp297znv++kCgQBJs1kBuYDz9H0KEAWEUiGx2WzSMyvFxa8B6iicgjFzgBGKwWSJdUnuyB1AF+BUisK/AToBz7V2RK9B1ACYBDxLQwShc3Cuj3IJm5qQVsAQ4ALJvFVQrlbRAJGPPAE8UKU+2Ce/d6Jk98d36dV44iTR54DvGlTd7jGgCNCSjJBONRHR+Q8kMjtDooF5bn9uaRkxuTwkt+yciAK5UX2fmrNiVLzmzd77ukR+jr0j28GFpP6LIzYHMVdfIcais6IhjYBh2VlZITMANzsj4ntPwiNDaTmHpa6RmCov87r8AA8vau7yRGxOjactAhvOjUxP8LrcdM0EIR3syN0vAbL+djjjkAm/GZS4OK2DFdLEOyc2xsfi/3frcb4/COxqXPI5EwwGm5RC6nnRwTpmgdNNKpq9iZFiLZTsWXkmoRDkQk5Oq1cKqU3wDf80lxDFXGzvTlhUFqm2OwLOWlkI3qIOZc/h3s4hL0y3QyvSM7+4hFxq74otGg2txuyVzW3SU7QryM2YHfD3WFGIPeHQ3AjreETrc34y3d8b8wtZDApE+/5WRHrHnRGJEXDbUYiFte5HIsLtRTGTPR3Sovj3oH8oRaIotB8t5h9kAm6LnvwnDe+acILRJPZ+ZeTgr5f9A+2u2/el3cDd2lz+zF+Qzx1GIYus1WC2oEPptET4+vukp+wXrJ3XBNyLeppjxoWILjtHh5eW6OD6tbxEJno6Y4vJfoJ2NRHIidyMeQHum5DsI6PsJJPTremsvIgSiVDhHFXevnjMvmRHrL56QbaXFuN2hLeQyB43psROCm/c4nXdhB0ZkHdkALDGjjBXVXMPNNFBp9bM1TU88xqKYG/fR+woY7GDFFxtyDg0MScxnrHzunpEGdon9rj/h4kR1j/logKrlZcqIlH2MYt0laeUKlbVEOPpUtGQNq0CqxvwUDR766OPbM3NqibPeU4XySuvVNPplZNnUc6aUjlxACG8Rx01GyLHgKmBQbOKfaosJ7Rq3xaa8vcK6WBBQ75ZQgrNy5YRyVR6OOE6zbYzbX7K1ZdOyUloNe8B3AOspCFghc71aH0Z0KX4feSvf5bQctZkP9Sgg7jo+ywm6+l+qPkjwADNS26fFM/O1QAAAABJRU5ErkJggg=="); } #djDebug .panelContent dt, #djDebug .panelContent dd { display:block; } #djDebug .panelContent dt { margin-top:0.75em; } #djDebug .panelContent dd { margin-left:10px; } #djDebug a.toggleTemplate { padding:4px; background-color:#bbb; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } #djDebug a.toggleTemplate:hover { padding:4px; background-color:#444; color:#ffe761; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } #djDebug a.djTemplateShowContext, #djDebug a.djTemplateShowContext span.toggleArrow { color:#999; } #djDebug a.djTemplateShowContext:hover, #djDebug a.djTemplateShowContext:hover span.toggleArrow { color:#000; cursor:pointer; } #djDebug .djDebugSqlWrap { position:relative; } #djDebug .djDebugCollapsed { display: none; text-decoration: none; color: #333; } #djDebug .djDebugUncollapsed { color: #333; text-decoration: none; } #djDebug .djUnselected { display: none; } #djDebug tr.djHiddenByDefault { display: none; } #djDebug tr.djSelected { display: table-row; } #djDebug .djDebugSql { z-index:100000002; } #djDebug .djSQLDetailsDiv tbody th { text-align: left; } #djDebug .djSqlExplain td { white-space: pre; } #djDebug span.djDebugLineChart { background-color:#777; height:3px; position:absolute; bottom:0; top:0; left:0; display:block; z-index:1000000001; } #djDebug span.djDebugLineChartWarning { background-color:#900; } #djDebug .highlight { color:#000; } #djDebug .highlight .err { color:#000; } /* Error */ #djDebug .highlight .g { color:#000; } /* Generic */ #djDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */ #djDebug .highlight .o { color:#000; } /* Operator */ #djDebug .highlight .n { color:#000; } /* Name */ #djDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */ #djDebug .highlight .l { color:#000; } /* Literal */ #djDebug .highlight .x { color:#000; } /* Other */ #djDebug .highlight .p { color:#000; } /* Punctuation */ #djDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */ #djDebug .highlight .s { color:#333 } /* Literal.String */ #djDebug .highlight .w { color:#888888 } /* Text.Whitespace */ #djDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */ #djDebug .highlight .na { color:#333 } /* Name.Attribute */ #djDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */ #djDebug .highlight .nv { color:#333 } /* Name.Variable */ #djDebug .highlight .s2 { color:#333 } /* Literal.String.Double */ #djDebug .highlight .cp { color:#333 } /* Comment.Preproc */ #djDebug .timeline { width: 30%; } #djDebug .djDebugTimeline { position: relative; height: 100%; min-height: 100%; } #djDebug div.djDebugLineChart { position: absolute; left: 0; right: 0; top: 0; bottom: 0; vertical-align: middle; } #djDebug div.djDebugLineChart strong { text-indent: -10000em; display: block; font-weight: normal; vertical-align: middle; background-color:#ccc; } #djDebug div.djDebugLineChartWarning strong { background-color:#900; } #djDebug .djDebugInTransaction div.djDebugLineChart strong { background-color: #d3ff82; } #djDebug .djDebugStartTransaction div.djDebugLineChart strong { border-left: 1px solid #94b24d; } #djDebug .djDebugEndTransaction div.djDebugLineChart strong { border-right: 1px solid #94b24d; } #djDebug .djDebugHover div.djDebugLineChart strong { background-color: #000; } #djDebug .djDebugInTransaction.djDebugHover div.djDebugLineChart strong { background-color: #94b24d; } #djDebug .panelContent ul.stats { position: relative; list-style-type: none; } #djDebug .panelContent ul.stats li { width: 30%; float: left; } #djDebug .panelContent ul.stats li strong.label { display: block; } #djDebug .panelContent ul.stats li span.color { height: 12px; width: 3px; display: inline-block; } #djDebug .panelContent ul.stats li span.info { display: block; padding-left: 5px; } #djDebug .panelcontent thead th { white-space: nowrap; } #djDebug .djDebugRowWarning .time { color: red; } #djdebug .panelcontent table .toggle { width: 14px; padding-top: 3px; } #djDebug .panelContent table .actions { min-width: 70px; white-space: nowrap; } #djdebug .panelcontent table .color { width: 3px; } #djdebug .panelcontent table .color span { width: 3px; height: 12px; overflow: hidden; padding: 0; } #djDebug .djToggleSwitch { text-decoration: none; border: 1px solid #999; height: 12px; width: 12px; line-height: 12px; text-align: center; color: #777; display: inline-block; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#DCDCDC'); /* for IE */ background: -webkit-gradient(linear, left top, left bottom, from(#FFF), to(#DCDCDC)); /* for webkit browsers */ background:-moz-linear-gradient(center top , #FFFFFF 0pt, #DCDCDC 100%) repeat scroll 0 0 transparent; } #djDebug .djNoToggleSwitch { height: 14px; width: 14px; display: inline-block; } #djDebug .djSQLDetailsDiv { margin-top:0.8em; } #djDebug pre { white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS-3 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ color: #555; border:1px solid #ccc; border-collapse:collapse; background-color:#fff; display:block; overflow: auto; padding:2px 3px; margin-bottom: 3px; font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; } #djDebug .stack span { color: #000; font-weight: bold; } #djDebug .stack span.path { color: #777; font-weight: normal; } #djDebug .stack span.code { font-weight: normal; } @media print { #djDebug { display: none; } } django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/000077500000000000000000000000001226272473700251765ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/back.png000066400000000000000000000020171226272473700266040ustar00rootroot00000000000000PNG  IHDR"":G tEXtSoftwareAdobe ImageReadyqe<IDATxXOA])!MH`$ ;W#< 9p1phHr6~4a$6M!v2;3ݶ|/μ7ݕZ8 N?L3$np|$XKW=@G$`𶑓ܠO%ՒY{ } \N+#s dYBzV uE  P#B yr(;Xl2D Q*K@iH=+~Fa8  scш4:/.1(;~Ǒpn$AnЁ+v8=g"mQX/؛[ý. ?S9N|`σ=8Z1;pqRz~ƅe1)*nZ+k'NgN`Hr"7U _QA;a6 VoFsE87 :]T¹6'}y\ɨZw Yzb"ͱ4B'c֦wӲJsz)X&r6c2h'''J;b98%)yFd2ge計>hE =Jt:ma@oS;`_'Eji5˲drPLWErc*)schtC 6 bw_q@i;πck@z iC|/췄{\?jbQ򾅋q?j+C+?IENDB`django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/back_hover.png000066400000000000000000000020061226272473700300050ustar00rootroot00000000000000PNG  IHDR"":G tEXtSoftwareAdobe ImageReadyqe<IDATxX]HQ>tKk%67~H%Ln,(!MB^m7IW^db(Μi%IƷso?xss9IY} R!l3+ů(1sduI@T¿:ϵvDA'wdwx$T1ВN5$2;Cynni1<$윈Q}bTD~##61W_!Ƣ!aYY!37;#{O#Ci9*//jDlN-΍LOt!/v8 8;'6wq?j\9 By:fM*b-Yy&BNNW M 4\lNXT;ZYޢe!/LC+3\j- mS+͘XQ=xDs~2 Y DVDzǝpQG"E1=Ң(E(-dn' p$~eௗ\_F!`CD܋zcƅ.;GD&z:c~v5ȉ܌y#$ӭ鬼PU޾x̾dGzAv7N ou݄wdƎ0WUs4A5<`oG(c\m841'1zD'?*"Q1t*VRѐ6P4{룏lͪ&yN+T镓gQΚR9q!G5"ǀA},'j `ACYB ˖Tz8:Ͷ3m~՗NIh5!`h}Х}rd?Ԡ,&~#KnIENDB`django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/close.png000066400000000000000000000020251226272473700270100ustar00rootroot00000000000000PNG  IHDR"":G tEXtSoftwareAdobe ImageReadyqe<IDATxڬXOA҅J4@F !B޹{0у!".F WF>-M[>Rhimt~nwmJ@HbdbbiᏁ̜OmybN *𵙒d! ⑄*1Gjot.wVͲ+YjRUUEm ,z!F" _ #1AZ”A^|P2S?j{@y||3 łLY90#Ft2373@2ZQ,D8]VhA&2Oe#B~F:6>C65dц=\#"1؉RTڬJ2W#BUtMކD$HPrPol#ɶ=QҘT~H$b 6Iضm ؞$"ͪlqjHq,4vl'h+t{ܶxi2MaSSKghh;CDԻzvY'''7| E'S k[Zh$'P|FB%bHQR5vR>%chh* Ys` g脱+' JG T,+鶶{ngzw9ns>==Wt:!AB#u‡l6 q|3A)R!&c (" N"nN椞qCo3JHH5)b$oE:ީ8:4>|*\jsznJپET)r2Vtٟz y7$K ;8 ^?.Esft5hslD4FW* azx߂ӄXKWq`mzbe |rIYŰZubk*p\. `v[wrPkQ kC^H̖.ɰ ]#YWBh+k  }G hЮ3֫ͅH5!d{A@Lc6(<\ 2k|VJ3Mm"Sc-no{?^ׄKDx|{ 2Bch煖:y@D2  0oFB~BYEe^u Ah/,Px**rnik-,2 ༊\!n51 dbnN4/DsQ1q7BIf(\&#X!lݵWXz2Nd'=%K|B dodu7r?5?dWR:e{t!}V^bhddcأ{{{c0eYE늁J6`KK ֈTEfT/,8K*/.++MPE"(ZFfkk+p88ñ,+H p\WWW! +znbbBr([XXP<|>`0pppP1c  KB4ק׋T* ՊNT*^<G]]`6{EJ+p8uttR1 #hW!B*Yi2:3,fjuTo\3`YwXZ~7ew t%Nލ!|8k: kUgwgɾ|kՂ R`;{`j&Wb=Uu|rف|Hj(5FfWSdlp+< ~?b8 |弡K t%y"U9_ J\Ϣ"DqTj?K DL}cu$ h+r`;hH?T2?+rĠ*R]!d*+QX4ÞzZ*6϶S*!E ;SU/IJCqo/8W!j6*H J*z*NIENDB`django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/dot.gif000066400000000000000000000000761226272473700264560ustar00rootroot00000000000000GIF89a ڬ!, !&Pڪ;django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/indicator.png000066400000000000000000000011371226272473700276620ustar00rootroot00000000000000PNG  IHDR tEXtSoftwareAdobe ImageReadyqe<IDATxڔMKa]_z^ tx)/ ^ă$! ;ZAvCPx訂"A$AZ[kH1>n4cٗ33p&i0ӏ)t  B`9Jbv``+C+4K>pB ,H  TT@_ ;?12ɫTNS gVE@^*Qjmrt(:wp&) ܲ$Ir6N$w ǵXbAժ}4'p{(9ĴUp<~T: .ܪM]ݖ gp8~}Cd"HLNBFD33HT'M>SsoQh u(t44M++2{^-eqU1F9"2k^|2CƤ_v6 }ubBh4sO!QN3g-B DIENDB`django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/img/panel_bg.png000066400000000000000000000001561226272473700274550ustar00rootroot00000000000000PNG  IHDRĉtEXtSoftwareAdobe ImageReadyqe<IDATxb3 EOIENDB`django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/000077500000000000000000000000001226272473700250365ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/jquery.cookie.js000066400000000000000000000070471226272473700301730ustar00rootroot00000000000000/*! * jQuery Cookie Plugin v1.4.0 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as anonymous module. define(['jquery'], factory); } else { // Browser globals. factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (value !== undefined && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = parts.join('='); if (key && key === name) { // If second argument (value) is a function it's a converter... result = read(cookie, value); break; } // Prevent storing a cookie that we couldn't decode. if (!key && (cookie = read(cookie)) !== undefined) { result[name] = cookie; } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) === undefined) { return false; } // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return !$.cookie(key); }; })); django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/toolbar.js000066400000000000000000000237501226272473700270450ustar00rootroot00000000000000(function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as anonymous module. define(['jquery', 'jquery.cookie'], factory); } else { // Browser globals. window.djdt = factory(jQuery); } }(function ($) { var djdt = { handleDragged: false, events: { ready: [] }, isReady: false, init: function() { $('#djDebug').show(); var current = null; $(document).on('click', '#djDebugPanelList li a', function() { if (!this.className) { return false; } current = $('#djDebug #' + this.className); if (current.is(':visible')) { $(document).trigger('close.djDebug'); $(this).parent().removeClass('active'); } else { $('.panelContent').hide(); // Hide any that are already open var inner = current.find('.djDebugPanelContent .scroll'), store_id = $('#djDebug').data('store-id'), render_panel_url = $('#djDebug').data('render-panel-url'); if (store_id !== '' && inner.children().length === 0) { var ajax_data = { data: { store_id: store_id, panel_id: this.className }, type: 'GET', url: render_panel_url }; $.ajax(ajax_data).done(function(data){ inner.html(data); }).fail(function(xhr){ var message = '
Back

'+xhr.status+': '+xhr.statusText+'

'; $('#djDebugWindow').html(message).show(); }); } current.show(); $('#djDebugToolbar li').removeClass('active'); $(this).parent().addClass('active'); } return false; }); $(document).on('click', '#djDebug a.djDebugClose', function() { $(document).trigger('close.djDebug'); $('#djDebugToolbar li').removeClass('active'); return false; }); $(document).on('click', '#djDebug .djDebugPanelButton input[type=checkbox]', function() { $.cookie($(this).attr('data-cookie'), $(this).prop('checked') ? 'on' : 'off', { path: '/', expires: 10, }); }); // Used by the SQL and template panels $(document).on('click', '#djDebug .remoteCall', function() { var self = $(this); var name = self[0].tagName.toLowerCase(); var ajax_data = {}; if (name == 'button') { var form = self.parents('form:eq(0)'); ajax_data['url'] = self.attr('formaction'); if (form.length) { ajax_data['data'] = form.serialize(); ajax_data['type'] = form.attr('method') || 'POST'; } } if (name == 'a') { ajax_data['url'] = self.attr('href'); } $.ajax(ajax_data).done(function(data){ $('#djDebugWindow').html(data).show(); }).fail(function(xhr){ var message = '
Back

'+xhr.status+': '+xhr.statusText+'

'; $('#djDebugWindow').html(message).show(); }); $(document).on('click', '#djDebugWindow a.djDebugBack', function() { $(this).parent().parent().hide(); return false; }); return false; }); // Used by the cache, profiling and SQL panels $(document).on('click', '#djDebug a.djToggleSwitch', function(e) { e.preventDefault(); var btn = $(this); var id = btn.attr('data-toggle-id'); var open_me = btn.text() == btn.attr('data-toggle-open'); if (id === '' || !id) { return; } var name = btn.attr('data-toggle-name'); btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugCollapsed').toggle(open_me); btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugUncollapsed').toggle(!open_me); $(this).parents('.djDebugPanelContent').find('.djToggleDetails_' + id).each(function(){ var $this = $(this); if (open_me) { $this.addClass('djSelected'); $this.removeClass('djUnselected'); btn.text(btn.attr('data-toggle-close')); $this.find('.djToggleSwitch').text(btn.text()); } else { $this.removeClass('djSelected'); $this.addClass('djUnselected'); btn.text(btn.attr('data-toggle-open')); $this.find('.djToggleSwitch').text(btn.text()); } }); return; }); $('#djHideToolBarButton').click(function() { djdt.hide_toolbar(true); return false; }); $('#djShowToolBarButton').click(function() { if (!djdt.handleDragged) { djdt.show_toolbar(); } return false; }); var handle = $('#djDebugToolbarHandle'); $('#djShowToolBarButton').on('mousedown', function (event) { var baseY = handle.offset().top - event.pageY; $(document).on('mousemove', function (event) { var offset = handle.offset(); offset.top = baseY + event.pageY; handle.offset(offset); djdt.handleDragged = true; }); return false; }); $(document).on('mouseup', function () { $(document).off('mousemove'); if (djdt.handleDragged) { var top = handle.offset().top; $.cookie('djdttop', top, { path: '/', expires: 10 }); setTimeout(function () { djdt.handleDragged = false; }, 10); } return false; }); $(document).bind('close.djDebug', function() { // If a sub-panel is open, close that if ($('#djDebugWindow').is(':visible')) { $('#djDebugWindow').hide(); return; } // If a panel is open, close that if ($('.panelContent').is(':visible')) { $('.panelContent').hide(); $('#djDebugToolbar li').removeClass('active'); return; } // Otherwise, just minimize the toolbar if ($('#djDebugToolbar').is(':visible')) { djdt.hide_toolbar(true); return; } }); if ($.cookie('djdt') == 'hide') { djdt.hide_toolbar(false); } else { djdt.show_toolbar(false); } $('#djDebug .djDebugHoverable').hover(function(){ $(this).addClass('djDebugHover'); }, function(){ $(this).removeClass('djDebugHover'); }); djdt.isReady = true; $.each(djdt.events.ready, function(_, callback){ callback(djdt); }); }, close: function() { $(document).trigger('close.djDebug'); return false; }, hide_toolbar: function(setCookie) { // close any sub panels $('#djDebugWindow').hide(); // close all panels $('.panelContent').hide(); $('#djDebugToolbar li').removeClass('active'); // finally close toolbar $('#djDebugToolbar').hide('fast'); $('#djDebugToolbarHandle').show(); // set handle position var handleTop = $.cookie('djdttop'); if (handleTop) { $('#djDebugToolbarHandle').css({top: handleTop + 'px'}); } // Unbind keydown $(document).unbind('keydown.djDebug'); if (setCookie) { $.cookie('djdt', 'hide', { path: '/', expires: 10 }); } }, show_toolbar: function(animate) { // Set up keybindings $(document).bind('keydown.djDebug', function(e) { if (e.keyCode == 27) { djdt.close(); } }); $('#djDebugToolbarHandle').hide(); if (animate) { $('#djDebugToolbar').show('fast'); } else { $('#djDebugToolbar').show(); } $.cookie('djdt', 'show', { path: '/', expires: 10 }); }, ready: function(callback){ if (djdt.isReady) { callback(djdt); } else { djdt.events.ready.push(callback); } } }; $(document).ready(djdt.init); return djdt; })); django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js000066400000000000000000000014751226272473700310350ustar00rootroot00000000000000(function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else { factory(jQuery); } }(function ($) { function getSubcalls(row) { var id = row.attr('id'); return $('.djDebugProfileRow[id^="'+id+'_"]'); } function getDirectSubcalls(row) { var subcalls = getSubcalls(row); var depth = parseInt(row.attr('depth'), 10) + 1; return subcalls.filter('[depth='+depth+']'); } $('.djDebugProfileRow .djDebugProfileToggle').on('click', function(){ var row = $(this).closest('.djDebugProfileRow'); var subcalls = getSubcalls(row); if (subcalls.css('display') == 'none') { getDirectSubcalls(row).show(); } else { subcalls.hide(); } }); })); django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/toolbar.sql.js000066400000000000000000000006171226272473700276400ustar00rootroot00000000000000(function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else { factory(jQuery); } }(function ($) { $('#djDebug a.djDebugToggle').on('click', function(e) { e.preventDefault(); $(this).parent().find('.djDebugCollapsed').toggle(); $(this).parent().find('.djDebugUncollapsed').toggle(); }); })); django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/toolbar.template.js000066400000000000000000000007741226272473700306600ustar00rootroot00000000000000(function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else { factory(jQuery); } }(function ($) { var uarr = String.fromCharCode(0x25b6), darr = String.fromCharCode(0x25bc); $('a.djTemplateShowContext').on('click', function() { var arrow = $(this).children('.toggleArrow'); arrow.html(arrow.html() == uarr ? darr : uarr); $(this).parent().next().toggle(); return false; }); })); django-debug-toolbar-1.0.1/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js000066400000000000000000000052341226272473700301610ustar00rootroot00000000000000(function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else { factory(jQuery); } }(function ($) { // Browser timing remains hidden unless we can successfully access the performance object var perf = window.performance || window.msPerformance || window.webkitPerformance || window.mozPerformance; if (!perf) return; var rowCount = 0, timingOffset = perf.timing.navigationStart, timingEnd = perf.timing.loadEventEnd, totalTime = timingEnd - timingOffset; function getLeft(stat) { return ((perf.timing[stat] - timingOffset) / (totalTime)) * 100.0; } function getCSSWidth(stat, endStat) { var width = ((perf.timing[endStat] - perf.timing[stat]) / (totalTime)) * 100.0; // Calculate relative percent (same as sql panel logic) width = 100.0 * width / (100.0 - getLeft(stat)); return (width < 1) ? "2px" : width + "%"; } function addRow(stat, endStat) { rowCount++; var $row = $(''); if (endStat) { // Render a start through end bar $row.html('' + stat.replace('Start', '') + '' + '
 
' + '' + (perf.timing[stat] - timingOffset) + ' (+' + (perf.timing[endStat] - perf.timing[stat]) + ')'); } else { // Render a point in time $row.html('' + stat + '' + '
 
' + '' + (perf.timing[stat] - timingOffset) + ''); } $('#djDebugBrowserTimingTableBody').append($row); } // This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) addRow('domainLookupStart', 'domainLookupEnd'); addRow('connectStart', 'connectEnd'); addRow('requestStart', 'responseEnd'); // There is no requestEnd addRow('responseStart', 'responseEnd'); addRow('domLoading', 'domComplete'); // Spans the events below addRow('domInteractive'); addRow('domContentLoadedEventStart', 'domContentLoadedEventEnd'); addRow('loadEventStart', 'loadEventEnd'); $('#djDebugBrowserTiming').css("display", "block"); })); django-debug-toolbar-1.0.1/debug_toolbar/templates/000077500000000000000000000000001226272473700223215ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/000077500000000000000000000000001226272473700251315ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/base.html000066400000000000000000000051411226272473700267320ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}{% load url from future %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/000077500000000000000000000000001226272473700264135ustar00rootroot00000000000000django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/cache.html000066400000000000000000000033111226272473700303420ustar00rootroot00000000000000{% load i18n %}

{% trans "Summary" %}

{% trans "Total calls" %} {% trans "Total time" %} {% trans "Cache hits" %} {% trans "Cache misses" %}
{{ total_calls }} {{ total_time }} ms {{ hits }} {{ misses }}

{% trans "Commands" %}

{% for name in counts.keys %} {% endfor %} {% for value in counts.values %} {% endfor %}
{{ name }}
{{ value }}
{% if calls %}

{% trans "Calls" %}

{% for call in calls %} {% endfor %}
{% trans "Time (ms)" %} {% trans "Type" %} {% trans "Arguments" %} {% trans "Keyword arguments" %} {% trans "Backend" %}
+ {{ call.time|floatformat:"4" }} {{ call.name|escape }} {{ call.args|escape }} {{ call.kwargs|escape }} {{ call.backend }}
{{ call.trace }}
{% endif %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/headers.html000066400000000000000000000023041226272473700307130ustar00rootroot00000000000000{% load i18n %}

{% trans "Request headers" %}

{% for key, value in request_headers.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}

{% trans "Response headers" %}

{% for key, value in response_headers.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}

{% trans "WSGI environ" %}

{% trans "Since the WSGI environ inherits the environment of the server, only a significant subset is shown below." %}

{% for key, value in environ.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/logging.html000066400000000000000000000012621226272473700307300ustar00rootroot00000000000000{% load i18n %} {% if records %} {% for record in records %} {% endfor %}
{% trans "Level" %} {% trans "Time" %} {% trans "Channel" %} {% trans "Message" %} {% trans "Location" %}
{{ record.level }} {{ record.time|date:"h:i:s m/d/Y" }} {{ record.channel|default:"-" }} {{ record.message|linebreaksbr }} {{ record.file }}:{{ record.line }}
{% else %}

{% trans "No messages logged" %}.

{% endif %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/profiling.html000066400000000000000000000024301226272473700312710ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %} {% for call in func_list %} {% endfor %}
{% trans "Call" %} {% trans "CumTime" %} {% trans "Per" %} {% trans "TotTime" %} {% trans "Per" %} {% trans "Count" %}
{% if call.has_subfuncs %} - {% else %} {% endif %} {{ call.func_std_string }}
{{ call.cumtime|floatformat:3 }} {{ call.cumtime_per_call|floatformat:3 }} {{ call.tottime|floatformat:3 }} {{ call.tottime_per_call|floatformat:3 }} {{ call.count }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/request.html000066400000000000000000000051211226272473700307700ustar00rootroot00000000000000{% load i18n %}

{% trans "View information" %}

{% trans "View function" %} {% trans "Arguments" %} {% trans "Keyword arguments" %} {% trans "URL name" %}
{{ view_func }} {{ view_args|pprint }} {{ view_kwargs|pprint }} {{ view_urlname }}
{% if cookies %}

{% trans "Cookies" %}

{% for key, value in cookies %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No cookies" %}

{% endif %} {% if session %}

{% trans "Session data" %}

{% for key, value in session %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No session data" %}

{% endif %} {% if get %}

{% trans "GET data" %}

{% for key, value in get %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No GET data" %}

{% endif %} {% if post %}

{% trans "POST data" %}

{% for key, value in post %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No POST data" %}

{% endif %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/settings.html000066400000000000000000000005261226272473700311440ustar00rootroot00000000000000{% load i18n %} {% for name, value in settings.items %} {% endfor %}
{% trans "Setting" %} {% trans "Value" %}
{{ name }} {{ value|pprint }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/signals.html000066400000000000000000000006661226272473700307510ustar00rootroot00000000000000{% load i18n %} {% for name, signal, receivers in signals %} {% endfor %}
{% trans "Signal" %} {% trans "Providing" %} {% trans "Receivers" %}
{{ name|escape }} {{ signal.providing_args|join:", " }} {{ receivers|join:", " }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/sql.html000066400000000000000000000077731226272473700301160ustar00rootroot00000000000000{% load i18n l10n %}{% load static from staticfiles %}{% load url from future %}
    {% for alias, info in databases %}
  •   {{ alias }} {{ info.time_spent|floatformat:"2" }} ms ({% blocktrans count info.num_queries as num %}{{ num }} query{% plural %}{{ num }} queries{% endblocktrans %})
  • {% endfor %}
{% if queries %} {% for query in queries %} {% endfor %}
  {% trans "Query" %} {% trans "Timeline" %} {% trans "Time (ms)" %} {% trans "Action" %}
  +
{{ query.sql|safe }}
{{ query.width_ratio }}%
{{ query.duration|floatformat:"2" }} {% if query.params %} {% if query.is_select %}
{{ query.form }} {% ifequal query.engine 'mysql' %} {% endifequal %}
{% endif %} {% endif %}

{% trans "Connection:" %} {{ query.alias }}

{% if query.iso_level %}

{% trans "Isolation level:" %} {{ query.iso_level }}

{% endif %} {% if query.trans_status %}

{% trans "Transaction status:" %} {{ query.trans_status }}

{% endif %} {% if query.stacktrace %}
{{ query.stacktrace }}
{% endif %} {% if query.template_info %} {% for line in query.template_info.context %} {% endfor %}
{{ line.num }} {{ line.content }}

{{ query.template_info.name|default:_("(unknown)") }}

{% endif %}
{% else %}

{% trans "No SQL queries were recorded during this request." %}

{% endif %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html000066400000000000000000000016271226272473700316260ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}
{% trans "Back" %}

{% trans "SQL explained" %}

{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html000066400000000000000000000020571226272473700316240ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}
{% trans "Back" %}

{% trans "SQL profiled" %}

{% if result %}
{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
{% else %}
{% trans "Error" %}
{{ result_error }}
{% endif %}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/sql_select.html000066400000000000000000000017441226272473700314450ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}
{% trans "Back" %}

{% trans "SQL selected" %}

{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% if result %} {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
{% else %}

{% trans "Empty set" %}

{% endif %}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html000066400000000000000000000034321226272473700316150ustar00rootroot00000000000000{% load i18n %} {% load static from staticfiles%}

{% blocktrans count staticfiles_dirs|length as dirs_count %}Static file path{% plural %}Static file paths{% endblocktrans %}

{% if staticfiles_dirs %}
    {% for prefix, staticfiles_dir in staticfiles_dirs %}
  1. {{ staticfiles_dir }}{% if prefix %} {% blocktrans %}(prefix {{ prefix }}){% endblocktrans %}{% endif %}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count staticfiles_apps|length as apps_count %}Static file app{% plural %}Static file apps{% endblocktrans %}

{% if staticfiles_apps %}
    {% for static_app in staticfiles_apps %}
  1. {{ static_app }}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count staticfiles|length as staticfiles_count %}Static file{% plural %}Static files{% endblocktrans %}

{% if staticfiles %}
{% for staticfile in staticfiles %}
{{ staticfile }}
{{ staticfile.real_path }}
{% endfor %}
{% else %}

{% trans "None" %}

{% endif %} {% for finder, payload in staticfiles_finders.items %}

{{ finder }} ({% blocktrans count payload|length as payload_count %}{{ payload_count }} file{% plural %}{{ payload_count }} files{% endblocktrans %})

{% for path, real_path in payload %} {% endfor %}
{% trans 'Path' %} {% trans 'Location' %}
{{ path }} {{ real_path }}
{% endfor %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/template_source.html000066400000000000000000000005661226272473700325030ustar00rootroot00000000000000{% load i18n %}
{% trans "Back" %}

{% trans "Template source:" %} {{ template_name }}

{% if not source.pygmentized %} {{ source }} {% else %} {{ source }} {% endif %}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/templates.html000066400000000000000000000035141226272473700313020ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}{% load url from future %}

{% blocktrans count template_dirs|length as template_count %}Template path{% plural %}Template paths{% endblocktrans %}

{% if template_dirs %}
    {% for template in template_dirs %}
  1. {{ template }}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count templates|length as template_count %}Template{% plural %}Templates{% endblocktrans %}

{% if templates %}
{% for template in templates %}
{{ template.template.name|addslashes }}
{{ template.template.origin_name|addslashes }}
{% if template.context %}
{% endif %} {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count context_processors|length as context_processors_count %}Context processor{% plural %}Context processors{% endblocktrans %}

{% if context_processors %}
{% for key, value in context_processors.items %}
{{ key|escape }}
{% endfor %}
{% else %}

{% trans "None" %}

{% endif %} django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/timer.html000066400000000000000000000021361226272473700304230ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% trans "Resource usage" %}

{% for key, value in rows %} {% endfor %}
{% trans "Resource" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/panels/versions.html000066400000000000000000000005131226272473700311500ustar00rootroot00000000000000{% load i18n %} {% for package, version in versions.items %} {% endfor %}
{% trans "Name" %} {% trans "Version" %}
{{ package }} {{ version }}
django-debug-toolbar-1.0.1/debug_toolbar/templates/debug_toolbar/redirect.html000066400000000000000000000007701226272473700276240ustar00rootroot00000000000000{% load i18n %}

{{ status_line }}

{% trans "Location:" %} {{ redirect_to }}

{% trans "The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal." %}

django-debug-toolbar-1.0.1/debug_toolbar/toolbar.py000066400000000000000000000122251226272473700223410ustar00rootroot00000000000000""" The main DebugToolbar class that loads and renders the Toolbar. """ from __future__ import absolute_import, unicode_literals import uuid from django.conf import settings from django.conf.urls import patterns, url from django.core.exceptions import ImproperlyConfigured from django.template import TemplateSyntaxError from django.template.loader import render_to_string from django.utils.importlib import import_module try: from collections import OrderedDict except ImportError: from django.utils.datastructures import SortedDict as OrderedDict from debug_toolbar import settings as dt_settings class DebugToolbar(object): def __init__(self, request): self.request = request self.config = dt_settings.CONFIG.copy() self._panels = OrderedDict() for panel_class in self.get_panel_classes(): panel_instance = panel_class(self) self._panels[panel_instance.panel_id] = panel_instance self.stats = {} self.store_id = None # Manage panels @property def panels(self): """ Get a list of all available panels. """ return list(self._panels.values()) @property def enabled_panels(self): """ Get a list of panels enabled for the current request. """ return [panel for panel in self._panels.values() if panel.enabled] def get_panel_by_id(self, panel_id): """ Get the panel with the given id, which is the class name by default. """ return self._panels[panel_id] # Handle rendering the toolbar in HTML def render_toolbar(self): """ Renders the overall Toolbar with panels inside. """ if not self.should_render_panels(): self.store() try: context = {'toolbar': self} return render_to_string('debug_toolbar/base.html', context) except TemplateSyntaxError: if 'django.contrib.staticfiles' not in settings.INSTALLED_APPS: raise ImproperlyConfigured( "The debug toolbar requires the staticfiles contrib app. " "Add 'django.contrib.staticfiles' to INSTALLED_APPS and " "define STATIC_URL in your settings.") else: raise # Handle storing toolbars in memory and fetching them later on _store = OrderedDict() def should_render_panels(self): render_panels = self.config['RENDER_PANELS'] if render_panels is None: render_panels = self.request.META['wsgi.multiprocess'] return render_panels def store(self): self.store_id = uuid.uuid4().hex cls = type(self) cls._store[self.store_id] = self for _ in range(len(cls._store) - self.config['RESULTS_STORE_SIZE']): try: # collections.OrderedDict cls._store.popitem(last=False) except TypeError: # django.utils.datastructures.SortedDict del cls._store[cls._store.keyOrder[0]] @classmethod def fetch(cls, store_id): return cls._store.get(store_id) # Manually implement class-level caching of panel classes and url patterns # because it's more obvious than going through an abstraction. _panel_classes = None @classmethod def get_panel_classes(cls): if cls._panel_classes is None: # Load panels in a temporary variable for thread safety. panel_classes = [] for panel_path in dt_settings.PANELS: # This logic could be replaced with import_by_path in Django 1.6. try: panel_module, panel_classname = panel_path.rsplit('.', 1) except ValueError: raise ImproperlyConfigured( "%s isn't a debug panel module" % panel_path) try: mod = import_module(panel_module) except ImportError as e: raise ImproperlyConfigured( 'Error importing debug panel %s: "%s"' % (panel_module, e)) try: panel_class = getattr(mod, panel_classname) except AttributeError: raise ImproperlyConfigured( 'Toolbar Panel module "%s" does not define a "%s" class' % (panel_module, panel_classname)) panel_classes.append(panel_class) cls._panel_classes = panel_classes return cls._panel_classes _urlpatterns = None @classmethod def get_urls(cls): if cls._urlpatterns is None: # Load URLs in a temporary variable for thread safety. # Global URLs urlpatterns = patterns('debug_toolbar.views', # noqa url(r'^render_panel/$', 'render_panel', name='render_panel'), ) # Per-panel URLs for panel_class in cls.get_panel_classes(): urlpatterns += panel_class.get_urls() cls._urlpatterns = urlpatterns return cls._urlpatterns urlpatterns = DebugToolbar.get_urls() django-debug-toolbar-1.0.1/debug_toolbar/utils.py000066400000000000000000000171121226272473700220370ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import inspect import os.path import re import sys try: import threading except ImportError: threading = None import django from django.core.exceptions import ImproperlyConfigured from django.utils.encoding import force_text from django.utils.html import escape from django.utils.importlib import import_module from django.utils.safestring import mark_safe from django.utils import six from django.views.debug import linebreak_iter from .settings import CONFIG # Figure out some paths django_path = os.path.realpath(os.path.dirname(django.__file__)) def get_module_path(module_name): try: module = import_module(module_name) except ImportError as e: raise ImproperlyConfigured( 'Error importing HIDE_IN_STACKTRACES: %s' % (e,)) else: source_path = inspect.getsourcefile(module) if source_path.endswith('__init__.py'): source_path = os.path.dirname(source_path) return os.path.realpath(source_path) hidden_paths = [ get_module_path(module_name) for module_name in CONFIG['HIDE_IN_STACKTRACES'] ] def omit_path(path): return any(path.startswith(hidden_path) for hidden_path in hidden_paths) def tidy_stacktrace(stack): """ Clean up stacktrace and remove all entries that: 1. Are part of Django (except contrib apps) 2. Are part of socketserver (used by Django's dev server) 3. Are the last entry (which is part of our stacktracing code) ``stack`` should be a list of frame tuples from ``inspect.stack()`` """ trace = [] for frame, path, line_no, func_name, text in (f[:5] for f in stack): if omit_path(os.path.realpath(path)): continue text = (''.join(force_text(t) for t in text)).strip() if text else '' trace.append((path, line_no, func_name, text)) return trace def render_stacktrace(trace): stacktrace = [] for frame in trace: params = map(escape, frame[0].rsplit(os.path.sep, 1) + list(frame[1:])) params_dict = dict((six.text_type(idx), v) for idx, v in enumerate(params)) try: stacktrace.append('%(0)s/' '%(1)s' ' in %(3)s' '(%(2)s)\n' ' %(4)s' % params_dict) except KeyError: # This frame doesn't have the expected format, so skip it and move on to the next one continue return mark_safe('\n'.join(stacktrace)) def get_template_info(source, context_lines=3): line = 0 upto = 0 source_lines = [] # before = during = after = "" origin, (start, end) = source template_source = origin.reload() for num, next in enumerate(linebreak_iter(template_source)): if start >= upto and end <= next: line = num # before = template_source[upto:start] # during = template_source[start:end] # after = template_source[end:next] source_lines.append((num, template_source[upto:next])) upto = next top = max(1, line - context_lines) bottom = min(len(source_lines), line + 1 + context_lines) context = [] for num, content in source_lines[top:bottom]: context.append({ 'num': num, 'content': content, 'highlight': (num == line), }) return { 'name': origin.name, 'context': context, } def get_name_from_obj(obj): if hasattr(obj, '__name__'): name = obj.__name__ elif hasattr(obj, '__class__') and hasattr(obj.__class__, '__name__'): name = obj.__class__.__name__ else: name = '' if hasattr(obj, '__module__'): module = obj.__module__ name = '%s.%s' % (module, name) return name def getframeinfo(frame, context=1): """ Get information about a frame or traceback object. A tuple of five things is returned: the filename, the line number of the current line, the function name, a list of lines of context from the source code, and the index of the current line within that list. The optional second argument specifies the number of lines of context to return, which are centered around the current line. This originally comes from ``inspect`` but is modified to handle issues with ``findsource()``. """ if inspect.istraceback(frame): lineno = frame.tb_lineno frame = frame.tb_frame else: lineno = frame.f_lineno if not inspect.isframe(frame): raise TypeError('arg is not a frame or traceback object') filename = inspect.getsourcefile(frame) or inspect.getfile(frame) if context > 0: start = lineno - 1 - context // 2 try: lines, lnum = inspect.findsource(frame) except Exception: # findsource raises platform-dependant exceptions first_lines = lines = index = None else: start = max(start, 1) start = max(0, min(start, len(lines) - context)) first_lines = lines[:2] lines = lines[start:(start + context)] index = lineno - 1 - start else: first_lines = lines = index = None # Code taken from Django's ExceptionReporter._get_lines_from_file if first_lines and isinstance(first_lines[0], bytes): encoding = 'ascii' for line in first_lines[:2]: # File coding may be specified. Match pattern from PEP-263 # (http://www.python.org/dev/peps/pep-0263/) match = re.search(br'coding[:=]\s*([-\w.]+)', line) if match: encoding = match.group(1).decode('ascii') break lines = [line.decode(encoding, 'replace') for line in lines] if hasattr(inspect, 'Traceback'): return inspect.Traceback(filename, lineno, frame.f_code.co_name, lines, index) else: return (filename, lineno, frame.f_code.co_name, lines, index) def get_stack(context=1): """ Get a list of records for a frame and all higher (calling) frames. Each record contains a frame object, filename, line number, function name, a list of lines of context, and index within the context. Modified version of ``inspect.stack()`` which calls our own ``getframeinfo()`` """ frame = sys._getframe(1) framelist = [] while frame: framelist.append((frame,) + getframeinfo(frame, context)) frame = frame.f_back return framelist class ThreadCollector(object): def __init__(self): if threading is None: raise NotImplementedError( "threading module is not available, " "this panel cannot be used without it") self.collections = {} # a dictionary that maps threads to collections def get_collection(self, thread=None): """ Returns a list of collected items for the provided thread, of if none is provided, returns a list for the current thread. """ if thread is None: thread = threading.currentThread() if thread not in self.collections: self.collections[thread] = [] return self.collections[thread] def clear_collection(self, thread=None): if thread is None: thread = threading.currentThread() if thread in self.collections: del self.collections[thread] def collect(self, item, thread=None): self.get_collection(thread).append(item) django-debug-toolbar-1.0.1/debug_toolbar/views.py000066400000000000000000000012701226272473700220320ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import HttpResponse from django.utils.html import escape from django.utils.translation import ugettext as _ from debug_toolbar.toolbar import DebugToolbar def render_panel(request): """Render the contents of a panel""" toolbar = DebugToolbar.fetch(request.GET['store_id']) if toolbar is None: content = _("Data for this panel isn't available anymore. " "Please reload the page and retry.") content = "

%s

" % escape(content) else: panel = toolbar.get_panel_by_id(request.GET['panel_id']) content = panel.content return HttpResponse(content) django-debug-toolbar-1.0.1/docs/000077500000000000000000000000001226272473700164435ustar00rootroot00000000000000django-debug-toolbar-1.0.1/docs/Makefile000066400000000000000000000152321226272473700201060ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DjangoDebugToolbar.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DjangoDebugToolbar.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/DjangoDebugToolbar" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/DjangoDebugToolbar" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." django-debug-toolbar-1.0.1/docs/changes.rst000066400000000000000000000007101226272473700206030ustar00rootroot00000000000000Change log ========== 1.0 --- This is the first stable version of the Debug Toolbar! It includes many new features and performance improvements as well a few backwards-incompatible changes to make the toolbar easier to deploy, use, extend and maintain in the future. You're strongly encouraged to review the installation and configuration docs and redo the setup in your projects. Third-party panels will need to be updated to work with this version. django-debug-toolbar-1.0.1/docs/commands.rst000066400000000000000000000026241226272473700210020ustar00rootroot00000000000000Commands ======== The Debug Toolbar currently provides one Django management command. ``debugsqlshell`` ----------------- This command starts an interactive Python shell, like Django's built-in ``shell`` management command. In addition, each ORM call that results in a database query will be beautifully output in the shell. Here's an example:: >>> from page.models import Page >>> ### Lookup and use resulting in an extra query... >>> p = Page.objects.get(pk=1) SELECT "page_page"."id", "page_page"."number", "page_page"."template_id", "page_page"."description" FROM "page_page" WHERE "page_page"."id" = 1 >>> print p.template.name SELECT "page_template"."id", "page_template"."name", "page_template"."description" FROM "page_template" WHERE "page_template"."id" = 1 Home >>> ### Using select_related to avoid 2nd database call... >>> p = Page.objects.select_related('template').get(pk=1) SELECT "page_page"."id", "page_page"."number", "page_page"."template_id", "page_page"."description", "page_template"."id", "page_template"."name", "page_template"."description" FROM "page_page" INNER JOIN "page_template" ON ("page_page"."template_id" = "page_template"."id") WHERE "page_page"."id" = 1 >>> print p.template.name Home django-debug-toolbar-1.0.1/docs/conf.py000066400000000000000000000213271226272473700177470ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # Django Debug Toolbar documentation build configuration file, created by # sphinx-quickstart on Sun Oct 27 13:18:25 2013. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' sys.path.append(os.path.dirname(os.path.dirname(__file__))) # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Django Debug Toolbar' copyright = u'2013, Django Debug Toolbar developers and contributors' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. #html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'DjangoDebugToolbardoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ('index', 'DjangoDebugToolbar.tex', u'Django Debug Toolbar Documentation', u'Django Debug Toolbar developers and contributors', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'djangodebugtoolbar', u'Django Debug Toolbar Documentation', [u'Django Debug Toolbar developers and contributors'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'DjangoDebugToolbar', u'Django Debug Toolbar Documentation', u'Django Debug Toolbar developers and contributors', 'DjangoDebugToolbar', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = { 'http://docs.python.org/': None, 'http://docs.djangoproject.com/en/dev/': 'http://docs.djangoproject.com/en/dev/_objects/', } # -- Options for Read the Docs -------------------------------------------- RTD_NEW_THEME = True django-debug-toolbar-1.0.1/docs/configuration.rst000066400000000000000000000127371226272473700220560ustar00rootroot00000000000000Configuration ============= The debug toolbar provides two settings that you can add in your project's settings module to customize its behavior. .. note:: Do you really need a customized configuration? The debug toolbar ships with a default configuration that is considered sane for the vast majority of Django projects. Don't copy-paste blindly the default values shown below into you settings module! It's useless and it'll prevent you from taking advantage of better defaults that may be introduced in future releases. DEBUG_TOOLBAR_PATCH_SETTINGS ---------------------------- This setting defines whether the toolbar will attempt to automatically adjust your project's settings, as described in the :doc:`installation instructions `. By default it has the same value as your ``DEBUG`` setting. DEBUG_TOOLBAR_PANELS -------------------- This setting specifies the full Python path to each panel that you want included in the toolbar. It works like Django's ``MIDDLEWARE_CLASSES`` setting. The default value is:: DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', ] This setting allows you to: * add built-in panels that aren't enabled by default, * add third-party panels, * remove built-in panels, * change the order of panels. DEBUG_TOOLBAR_CONFIG -------------------- This dictionary contains all other configuration options. Some apply to the toolbar itself, others are specific to some panels. Toolbar options ~~~~~~~~~~~~~~~ * ``INSERT_BEFORE`` Default: ``''`` The toolbar searches for this string in the HTML and inserts itself just before. * ``RENDER_PANELS`` Default: ``None`` If set to ``False``, the debug toolbar will keep the contents of panels in memory on the server and load them on demand. If set to ``True``, it will render panels inside every page. This may slow down page rendering but it's required on multi-process servers, for example if you deploy the toolbar in production (which isn't recommended). The default value of ``None`` tells the toolbar to automatically do the right thing depending on whether the WSGI container runs multiple processes. This setting allows you to force a different behavior if needed. * ``RESULTS_STORE_SIZE`` Default: ``10`` The toolbar keeps up to this many results in memory. * ``ROOT_TAG_EXTRA_ATTRS`` Default: ``''`` This setting is injected in the root template div in order to avoid conflicts with client-side frameworks. For example, when using the debug toolbar with Angular.js, set this to ``'ng-non-bindable'`` or ``'class="ng-non-bindable"'``. * ``SHOW_COLLAPSED`` Default: ``False`` If changed to ``True``, the toolbar will be collapsed by default. * ``SHOW_TOOLBAR_CALLBACK`` Default: 'debug_toolbar.middleware.show_toolbar' This is the dotted path to a function used for determining whether the toolbar should show or not. The default checks are that ``DEBUG`` must be set to ``True``, the IP of the request must be in ``INTERNAL_IPS``, and the request must no be an AJAX request. You can provide your own function that accepts a request in argument and returns ``True`` or ``False``. Panel options ~~~~~~~~~~~~~ * ``EXTRA_SIGNALS`` Default: ``[]`` Panel: signals A list of custom signals that might be in your project, defined as the Python path to the signal. * ``ENABLE_STACKTRACES`` Default: ``True`` Panels: cache, SQL If set to ``True``, this will show stacktraces for SQL queries and cache calls. Enabling stacktraces can increase the CPU time used when executing queries. * ``HIDE_IN_STACKTRACES`` Default: ``('socketserver', 'threading', 'wsgiref', 'debug_toolbar', 'django')``. The first value is ``socketserver`` on Python 3 and ``SocketServer`` on Python 2. Panels: cache, SQL Useful for eliminating server-related entries which can result in enormous DOM structures and toolbar rendering delays. * ``INTERCEPT_REDIRECTS`` Default: ``False`` Panel: redirects If set to ``True``, the redirect panel will be active by default. * ``SHOW_TEMPLATE_CONTEXT`` Default: ``True`` Panel: templates If set to ``True`` then a template's context will be included with it in the template debug panel. Turning this off is useful when you have large template contexts, or you have template contexts with lazy datastructures that you don't want to be evaluated. * ``SQL_WARNING_THRESHOLD`` Default: ``500`` Panel: SQL The SQL panel highlights queries that took more that this amount of time, in milliseconds, to execute. Here's what a slightly customized toolbar configuration might look like:: # This example is unlikely to be appropriate for your project. CONFIG_DEFAULTS = { # Toolbar options 'RESULTS_STORE_SIZE': 3, 'SHOW_COLLAPSED': True, # Panel options 'INTERCEPT_REDIRECTS': True, 'SQL_WARNING_THRESHOLD': 100, # milliseconds } django-debug-toolbar-1.0.1/docs/contributing.rst000066400000000000000000000071041226272473700217060ustar00rootroot00000000000000Contributing ============ Bug reports and feature requests -------------------------------- You can report bugs and request features in the `bug tracker `_. Please search the existing database for duplicates before filing an issue. Code ---- The code is available `on GitHub `_. Once you've obtained a checkout, you should create a virtualenv_ and install the libraries required for working on the Debug Toolbar:: $ pip install -r requirements_dev.txt .. _virtualenv: http://www.virtualenv.org/ You can run now run the example application:: $ DJANGO_SETTINGS_MODULE=example.settings django-admin.py syncdb $ DJANGO_SETTINGS_MODULE=example.settings django-admin.py runserver For convenience, there's an alias for the second command:: $ make example Look at ``example/settings.py`` for running the example with another database than SQLite. Tests ----- Once you've set up a development environment as explained above, you can run the test suite for the versions of Django and Python installed in that environment:: $ make test You can enable coverage measurement during tests:: $ make coverage You can also run the test suite on all supported versions of Django and Python:: $ tox This is strongly recommended before committing changes to Python code. The test suite includes frontend tests written with Selenium. Since they're annoyingly slow, they're disabled by default. You can run them as follows:: $ make test_selenium or by setting the ``DJANGO_SELENIUM_TESTS`` environment variable:: $ DJANGO_SELENIUM_TESTS=true make test $ DJANGO_SELENIUM_TESTS=true make coverage $ DJANGO_SELENIUM_TESTS=true tox At this time, there isn't an easy way to test against databases other than SQLite. Style ----- Python code for the Django Debug Toolbar follows PEP8. Line length is limited to 100 characters. You can check for style violations with:: $ make flake8 Patches ------- Please submit `pull requests `_! The Debug Toolbar includes a limited but growing test suite. If you fix a bug or add a feature code, please consider adding proper coverage in the test suite, especially if it has a chance for a regression. If you change a CSS or a JavaScript file, you should update both the original file and the minified version in the same commit. Use ``make compress_css`` and ``make compress_js`` to minify files. Translations ------------ Translation efforts are coordinated on `Transifex `_. Help translate the Debug Toolbar in your language! Mailing list ------------ This project doesn't have a mailing list at this time. If you wish to discuss a topic, please open an issue on GitHub. Making a release ---------------- Prior to a release, the English ``.po`` file must be updated with ``make translatable_strings`` and pushed to Transifex. Once translators have done their job, ``.po`` files must be downloaded with ``make update_translations``. The release itself requires the following steps: #. Bump version numbers in docs/conf.py, README.rst and setup.py and commit. Tag the new version. #. ``python setup.py sdist bdist_wheel upload``. You should to test that the packages install correctly before uploading them. (How?) #. Push the commit and the tag. #. Change the default version of the docs to point to the latest release: https://readthedocs.org/dashboard/django-debug-toolbar/versions/ django-debug-toolbar-1.0.1/docs/index.rst000066400000000000000000000002431226272473700203030ustar00rootroot00000000000000Django Debug Toolbar ==================== .. toctree:: :maxdepth: 2 installation configuration tips panels commands changes contributing django-debug-toolbar-1.0.1/docs/installation.rst000066400000000000000000000075451226272473700217110ustar00rootroot00000000000000Installation ============ Getting the code ---------------- The recommended way to install the Debug Toolbar is via pip_:: $ pip install django-debug-toolbar If you aren't familiar with pip, you may also obtain a copy of the ``debug_toolbar`` directory and add it to your Python path. .. _pip: http://www.pip-installer.org/ To test an upcoming release, you can install the in-development version instead with the following command:: $ pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git#egg=django-debug-toolbar Quick setup ----------- Make sure that ``'django.contrib.staticfiles'`` is `set up properly `_ and add ``'debug_toolbar'`` to your ``INSTALLED_APPS`` setting:: INSTALLED_APPS = ( # ... 'django.contrib.staticfiles', # ... 'debug_toolbar', ) STATIC_URL = '/static/' For a simple Django project, that's all you need! The Debug Toolbar will automatically adjust a few settings when you start the development server, provided the ``DEBUG`` setting is ``True``. If you're upgrading from a previous version, you should review the :doc:`change log ` and look for specific upgrade instructions. If the automatic setup doesn't work for your project, if you want to learn what it does, or if you prefer defining your settings explicitly, read below. .. note:: The automatic setup relies on ``debug_toolbar.models`` being imported when the server starts. Django doesn't provide a better hook to execute code during the start-up sequence. This works with ``manage.py runserver`` because it validates models before serving requests. .. warning:: The automatic setup imports your project's URLconf in order to add the Debug Toolbar's URLs. This may trigger circular imports, for instance when the URLconf imports views that import models. If the development server crashes with a long stack trace after hitting an :exc:`ImportError` or an :exc:`~django.core.exceptions.ImproperlyConfigured` exception, follow the explicit setup instructions. Explicit setup -------------- First, tell the toolbar not to adjust your settings automatically by adding this line in your settings module:: DEBUG_TOOLBAR_PATCH_SETTINGS = False URLconf ~~~~~~~ Add the Debug Toolbar's URLs to your project's URLconf as follows:: from django.conf import settings from django.conf.urls import include, patterns, url if settings.DEBUG: import debug_toolbar urlpatterns += patterns('', url(r'^__debug__/', include(debug_toolbar.urls)), ) This example uses the ``__debug__`` prefix, but you can use any prefix that doesn't clash with your application's URLs. Note the lack of quotes around ``debug_toolbar.urls``. If the URLs aren't included in your root URLconf, the Debug Toolbar automatically appends them. Middleware ~~~~~~~~~~ The Debug Toolbar is mostly implemented in a middleware. Enable it in your settings module as follows:: MIDDLEWARE_CLASSES = ( # ... 'debug_toolbar.middleware.DebugToolbarMiddleware', # ... ) The order of ``MIDDLEWARE_CLASSES`` is important. You should include the Debug Toolbar middleware as early as possible in the list. However, it must come after any other middleware that encodes the response's content, such as ``GZipMiddleware``. If ``MIDDLEWARE_CLASSES`` doesn't contain the middleware, the Debug Toolbar automatically adds it the beginning of the list. Internal IPs ~~~~~~~~~~~~ The Debug Toolbar is shown only if your IP is listed in the ``INTERNAL_IPS`` setting. (You can change this logic with the ``SHOW_TOOLBAR_CALLBACK`` option.) For local development, you should add ``'127.0.0.1'`` to ``INTERNAL_IPS``. If ``INTERNAL_IPS`` is empty, the Debug Toolbar automatically sets it to ``'127.0.0.1'`` and ``'::1'``. django-debug-toolbar-1.0.1/docs/make.bat000066400000000000000000000151051226272473700200520ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. xml to make Docutils-native XML files echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\DjangoDebugToolbar.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\DjangoDebugToolbar.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 echo. echo.Build finished. The XML files are in %BUILDDIR%/xml. goto end ) if "%1" == "pseudoxml" ( %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml if errorlevel 1 exit /b 1 echo. echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. goto end ) :end django-debug-toolbar-1.0.1/docs/panels.rst000066400000000000000000000153331226272473700204640ustar00rootroot00000000000000Panels ====== The Django Debug Toolbar ships with a series of built-in panels. In addition, several third-party panels are available. Default built-in panels ----------------------- The following panels are enabled by default. Version ~~~~~~~ Path: ``debug_toolbar.panels.versions.VersionsPanel`` Shows versions of Python, Django, and installed apps if possible. Timer ~~~~~ Path: ``debug_toolbar.panels.timer.TimerPanel`` Request timer. Settings ~~~~~~~~ Path: ``debug_toolbar.panels.settings.SettingsPanel`` A list of settings in settings.py. Headers ~~~~~~~ Path: ``debug_toolbar.panels.headers.HeadersPanel`` This panels shows the HTTP request and response headers, as well as a selection of values from the WSGI environment. Note that headers set by middleware placed before the debug toolbar middleware in ``MIDDLEWARE_CLASSES`` won't be visible in the panel. The WSGI server itself may also add response headers such as ``Date`` and ``Server``. Request ~~~~~~~ Path: ``debug_toolbar.panels.request.RequestPanel`` GET/POST/cookie/session variable display. SQL ~~~ Path: ``debug_toolbar.panels.sql.SQLPanel`` SQL queries including time to execute and links to EXPLAIN each query. Template ~~~~~~~~ Path: ``debug_toolbar.panels.templates.TemplatesPanel`` Templates and context used, and their template paths. Static files ~~~~~~~~~~~~ Path: ``debug_toolbar.panels.staticfiles.StaticFilesPanel`` Used static files and their locations (via the staticfiles finders). Cache ~~~~~ Path: ``debug_toolbar.panels.cache.CachePanel`` Cache queries. Signal ~~~~~~ Path: ``debug_toolbar.panels.signals.SignalsPanel`` List of signals, their args and receivers. Logging ~~~~~~~ Path: ``debug_toolbar.panels.logging.LoggingPanel`` Logging output via Python's built-in :mod:`logging` module. Redirects ~~~~~~~~~ Path: ``debug_toolbar.panels.redirects.RedirectsPanel`` When this panel is enabled, the debug toolbar will show an intermediate page upon redirect so you can view any debug information prior to redirecting. This page will provide a link to the redirect destination you can follow when ready. Since this behavior is annoying when you aren't debugging a redirect, this panel is included but inactive by default. You can activate it by default with the ``INTERCEPT_REDIRECTS`` configuration option. Non-default built-in panels --------------------------- The following panels are disabled by default. You must add them to the ``DEBUG_TOOLBAR_PANELS`` setting to enable them. Profiling ~~~~~~~~~ Path: ``debug_toolbar.panels.profiling.ProfilingPanel`` Profiling information for the view function. Third-party panels ------------------ .. note:: Third-party panels aren't officially supported! The authors of the Django Debug Toolbar maintain a list of third-party panels, but they can't vouch for the quality of each of them. Please report bugs to their authors. If you'd like to add a panel to this list, please submit a pull request! Haystack ~~~~~~~~ URL: https://github.com/streeter/django-haystack-panel Path: ``haystack_panel.panel.HaystackDebugPanel`` See queries made by your Haystack_ backends. .. _Haystack: http://haystacksearch.org/ HTML Tidy/Validator ~~~~~~~~~~~~~~~~~~~ URL: https://github.com/joymax/django-dtpanel-htmltidy Path: ``debug_toolbar_htmltidy.panels.HTMLTidyDebugPanel`` HTML Tidy or HTML Validator is a custom panel that validates your HTML and displays warnings and errors. Inspector ~~~~~~~~~ URL: https://github.com/santiagobasulto/debug-inspector-panel Path: ``inspector_panel.panels.inspector.InspectorPanel`` Retrieves and displays information you specify using the ``debug`` statement. Inspector panel also logs to the console by default, but may be instructed not to. Line Profiler ~~~~~~~~~~~~~ URL: https://github.com/dmclain/django-debug-toolbar-line-profiler Path: ``debug_toolbar_line_profiler.panel.ProfilingPanel`` This package provides a profiling panel that incorporates output from line_profiler_. .. _line_profiler: http://pythonhosted.org/line_profiler/ Memcache ~~~~~~~~ URL: https://github.com/ross/memcache-debug-panel Path: ``memcache_toolbar.panels.memcache.MemcachePanel`` or ``memcache_toolbar.panels.pylibmc.PylibmcPanel`` This panel tracks memcached usage. It currently supports both the pylibmc and memcache libraries. MongoDB ~~~~~~~ URL: https://github.com/hmarr/django-debug-toolbar-mongo Path: ``debug_toolbar_mongo.panel.MongoDebugPanel`` Adds MongoDB debugging information. Neo4j ~~~~~ URL: https://github.com/robinedwards/django-debug-toolbar-neo4j-panel Path: ``neo4j_panel.Neo4jPanel`` Trace neo4j rest API calls in your django application, this also works for neo4django and neo4jrestclient, support for py2neo is on its way. Sites ~~~~~ URL: https://github.com/elvard/django-sites-toolbar Path: ``sites_toolbar.panels.SitesDebugPanel`` Browse Sites registered in ``django.contrib.sites`` and switch between them. Useful to debug project when you use `django-dynamicsites `_ which sets SITE_ID dynamically. Template Timings ~~~~~~~~~~~~~~~~ URL: https://github.com/orf/django-debug-toolbar-template-timings Path: ``template_timings_panel.panels.TemplateTimings.TemplateTimings`` Displays template rendering times for your Django application. User ~~~~ URL: https://github.com/playfire/django-debug-toolbar-user-panel Path: ``debug_toolbar_user_panel.panels.UserPanel`` Easily switch between logged in users, see properties of current user. API for third-party panels -------------------------- Third-party panels must subclass :class:`~debug_toolbar.panels.Panel`, according to the public API described below. Unless noted otherwise, all methods are optional. Panels can ship their own templates, static files and views. They're no public CSS or JavaScript API at this time, but they can assume jQuery is available. .. autoclass:: debug_toolbar.panels.Panel(*args, **kwargs) .. autoattribute:: debug_toolbar.panels.Panel.nav_title .. autoattribute:: debug_toolbar.panels.Panel.nav_subtitle .. autoattribute:: debug_toolbar.panels.Panel.has_content .. autoattribute:: debug_toolbar.panels.Panel.title .. autoattribute:: debug_toolbar.panels.Panel.template .. autoattribute:: debug_toolbar.panels.Panel.content .. automethod:: debug_toolbar.panels.Panel.get_urls .. automethod:: debug_toolbar.panels.Panel.enable_instrumentation .. automethod:: debug_toolbar.panels.Panel.disable_instrumentation .. automethod:: debug_toolbar.panels.Panel.record_stats .. automethod:: debug_toolbar.panels.Panel.get_stats .. automethod:: debug_toolbar.panels.Panel.process_request .. automethod:: debug_toolbar.panels.Panel.process_view .. automethod:: debug_toolbar.panels.Panel.process_response django-debug-toolbar-1.0.1/docs/tips.rst000066400000000000000000000065461226272473700201670ustar00rootroot00000000000000Tips ==== The toolbar isn't displayed! ---------------------------- The Debug Toolbar will only display itself if the mimetype of the response is either ``text/html`` or ``application/xhtml+xml`` and contains a closing ```` tag. Be aware of middleware ordering and other middleware that may intercept requests and return responses. Putting the debug toolbar middleware *after* the Flatpage middleware, for example, means the toolbar will not show up on flatpages. Using the toolbar offline ------------------------- The Debug Toolbar depends on the jQuery_ library. If jQuery isn't already loaded in your page, the toolbar loads it from the Google Hosted Libraries CDN. Your browser will keep it in cache, allowing you to use the toolbar even if you disconnect from the Internet temporarily. If you want to use the Debug Toolbar without an Internet connection at all, or if you refuse to depend on Google's services, you should include your own copy of jQuery on every page. .. _jQuery: http://jquery.com/ Performance considerations -------------------------- The Debug Toolbar is designed to introduce as little overhead as possible in the rendering of pages. However, depending on your project, the overhead may become noticeable. In extreme cases, it can make development impractical. Here's a breakdown of the performance issues you can run into and their solutions. Problems ~~~~~~~~ The Debug Toolbar works in two phases. First, it gathers data while Django handles a request and stores this data in memory. Second, when you open a panel in the browser, it fetches the data on the server and displays it. If you're seeing excessive CPU or memory consumption while browsing your site, you must optimize the "gathering" phase. If displaying a panel is slow, you must optimize the "rendering" phase. Culprits ~~~~~~~~ The SQL panel may be the culprit if your view performs many SQL queries. You should attempt to minimize the number of SQL queries, but this isn't always possible, for instance if you're using a CMS and have disabled caching for development. The cache panel is very similar to the SQL panel, except it isn't always a bad practice to make many cache queries in a view. The template panel becomes slow your views or context processors return large contexts and your templates have complex inheritance or inclusion schemes. Solutions ~~~~~~~~~ If the "gathering" phase is too slow, you can disable problematic panels temporarily by deselecting the checkbox at the top right of each panel. That change will apply to the next request. If you don't use some panels at all, you can remove them permanently by customizing the ``DEBUG_TOOLBAR_PANELS`` setting. By default, data gathered during the last 10 requests is kept in memory. This allows you to use the toolbar on a page even if you have browsed to a few other pages since you first loaded that page. You can reduce memory consumption by setting the ``PANELS_CACHE_SIZE`` configuration option to a lower value. At worst, the toolbar will tell you that the data you're looking for isn't available anymore. If the "rendering" phase is too slow, refrain from clicking on problematic panels :) Or reduce the amount of data gathered and rendered by these panels by disabling some configuration options that are enabled by default: - ``ENABLE_STACKTRACES`` for the SQL and cache panels, - ``SHOW_TEMPLATE_CONTEXT`` for the template panel. django-debug-toolbar-1.0.1/example/000077500000000000000000000000001226272473700171465ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/README.rst000066400000000000000000000014611226272473700206370ustar00rootroot00000000000000README ====== About ----- This sample project demonstrates how to use the debug toolbar. It is designed to run under the latest stable version of Django, currently 1.5.x. It also provides a few test pages to ensure the debug toolbar doesn't interfere with common JavaScript frameworks. How to ------ The test project requires a working installation of Django:: $ pip install Django The following commands must be run from the root directory of a checkout of the debug toolbar, ie. the directory that contains ``example/``. Before running the example for the first time, you must create a database:: $ PYTHONPATH=. django-admin.py syncdb --settings=example.settings Then you can use the following command to run the example:: $ PYTHONPATH=. django-admin.py runserver --settings=example.settings django-debug-toolbar-1.0.1/example/__init__.py000066400000000000000000000000001226272473700212450ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/django-debug-toolbar.png000066400000000000000000014574101226272473700236560ustar00rootroot00000000000000PNG  IHDRrCq FiCCPICC ProfileH WwTSI$)7QzZI *veWp-X誈bw-ꢠ*߼Pܳgwow͙ж*y@H".`z|BEp||_77::QbIG&BQ>¿BY@kA";)@?R8[H=2&)!  0 EG\,#T85GOGXAa0sاP=bFP'~Vy*/cjTZ1f!_9!a=ȨpT0e.* E>¯°p*79xYQt NQNO&PH%CBRxɒED# U"MJEe) RHi\)RFJ4[!3KAňlV~!BjH݋IQGcX$,a]bD<*B(?}"ONBIo/,N{HD(oč8j"SEQ<J;PPɄn6BPB6Hi:JO#q!^ #0;0 Խ}!4"H?2Aޤ8Nz8=E1 BPQ_'A)Q-?cZ!:vRH) {@V$(cr!mj2GvO" &QlZ5K.>dG-AT9ɡL˗U?-q8Bԃ8N4NE1Ȇlk? *D $3YJYHva Z.=J@ +zpMh/C{ (+%7_8˗ZpH,#LaLPL ~0 `*ʺ0B) X` l]z8'4\pϠ@a q1C 1W ±X,K2lL9X9Vmb5avknc.%'pMp| 1x> |1 _W{:~^-ON7JD$eD%QM%\_%ډn=I'tB3L&Ed9\Jn wud y|@il1͑KMefJiCS頽|- ilR&>z`0  FC(b23030:444\5"454*5vkӸDOSGZW3NS9KsvFK}L]-ӟa.dcebeҲњ%ZNkYZYz,V(k2KZjbfb6 v:]>ɾ~rFs9b|Ns\[SZ;X{vvAK::6::By:U:unru]ttu=۩г -ۦwRZrC"Sgˋy?Zy=z)3 ?_?0dDɈ%#2H A> ᆹ+ FFfm6:e=7ohd#7ƍgo3hkbji0YorҤ۔odci,LfS X'X'hG̷YZ$[,gqϒimeڲٲjZ߭5kXI֦ަ6ڶĶ.Ю=>~eAPpwt9nrlE3J>zM'SSSӃѱ|՘1+ǜ9y=q.\]^:\\"5pwtovG'O/O^./+ ^7yK|B|y[{/?'\~cmJn_տ=@C@{y0:ae8hGГ`=CC!Bކ m #"Z“7ߏȎEZu3$Z]3kq-1Ę 1cbƯw8[w/6 ׉&>NpIp&8-qw⛤IwU))SjRަVO3i iFitFzJޯ¿ZUdɥoL2sʹFS=M8`-#5cwGaZ؛1G*Z+z&wI%'YYY٫Ji,TA"'*gKܸܝyy53gNoS8*Jk z1X†":<_T٩Q=((*~7#e33/rd֓gEY8[a25Ϸx~ǂ2.mENq}Mm)TYz[o|G~'uےK>Η;W\*Zz{}߿,kYrWWWXrWnEIţUWխ.[zʹ5*+eUm_a?nn^Ro%no9h-&[ʷ|Aí[m+ѷo{=ea|ǧvx6޽Uv홼Oa?5uڻu_~د猟o9|_x{US/ooHkh;{pa;DQǎŏُ+=t<uWO;)uv+诋=z:^(_\{{]ߟIߌ>jn~B,;ips-{"`{Ձ3 y@lfTf:~'6\C=Ynjh oS~`GYSwy\낭Tjˉ pHYs%%IR$iTXtXML:com.adobe.xmp 1788 1234 :@IDATxifuh1'H Z5XDmG]8?؊#8TR8alZ.YMɖdYLۢDDA@# $bl4yw[nݨ]kw2@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@8Qq6NY'O[0@a 0@a 0N*TݦW4y򊾽G쏣0@a 0@a 0@a lyɸeT +~N&x@a 0@a 0@a Z e+~e}ssN@a 0@a 0@a H t7%/ 8@s2 0@a 0@a 0@d /'i9μP:rN.@a 0@a 0@a ȋ9ҌhR:W*vq~wMPa 0@a 0@a r j/N 1dž瓵csW3Ka 0@a 0@a cdݣ-/t'*'j_ L( 0@a 0@a 0@$'ꋶM|h1Ja 0@a 0@a 0v2p"x;zNI ::kޣcks٧Z7P@a 0@a 0@aX0p*:^k=^seKΎ\318zڒ@a 0@a 0@aX1p2:=˹=޶yf5jOjE>zX_ba 0@a 0@a 0@k' cñWym7?]_ݱ?va 0@a 0@a 0p8/ʶ{ϔ@ӄn'/YlwiƎ{2|t+Nva 0@a 0@a 8_DmwY;k2/Z߶bjoWì,NwDa 0@a 0@a %v]uY1پ?ner'c9dq0@a 0@a 0@K8/rUIڮuV?_lڷVՙya 0@a 0@a 0~UNet;j'~uoEo1>s)0@a 0@a 0@ǛBj;ފ[Q׭WkRf{6MUu7%s=@a 0@a 0@a l%i;kVqu6(uO8yhuMemMx4u&w^?0@a 0@a 0@8U8SGߣ{4G;75q /jr<7M"@a 0@a 0@a KLuvu6ټXTJ~Uk;:l^XXWko~"kJ0@a 0@a 0@8uSemV-c56G/G[ײUuj㮿R_lպ6[g3yq-]fvl_ a 0@a 0@a 0p20/__fr7Cߪ:}f^lz6[gݼule9n0@a 0@a 0@[K.ZN欋w景ܪ:;n2g+ֲ䭃uc,Y3܊0~,r0@a 0@a 0@ǚc2i+ZTcQl䬃m6okzE|9ul6ݼulɝW+jnEy@a 0@a 0@a`8Q_<M_r8^KxlV[W‹]f :5L1uꬃsDa 0@a 0@a 0p*2΋uLy9Soֹ֩oNG_ksdAs~U<5:9S)_?*sMVZ˓%VNN՛MmUq./\κUz& 0@a 0@a 0/[:bSVO|`.{|}1OƗ/G󺹫WޞwWő?͛kʿJ*fr@a 0@a 0@a h lE*9`q1?WcUl`[\5'KwUzLoOU0M|SsT߲eqk@a 0@a 0@aTf`RpSOLVq}ث`_ǪԜ㢟L/hurWnM1Ug7ovQz`.[Ug0@a 0@a 0@8 lKU,,La|-lW~j2gWhrkmO.uU*S7sY)̔ojn6?va 0@a 0@a f_ m65]5?[%bjWLW_.^֩o1'ˋNΪe>/]kU} 7囚֙ϫ%~Y\\da 0@a 0@a Se/ŧ3RsYޢx~eqL}s<_luV.ޮ7uQ \Zk UE.ѷfINa 0@a 0@a )6hΔoQEUkM՘z}+}Q:.!v+jmO+oU05^6/{5_շJ-1S5-l޲~a 0@a 0@a 0 F\sSU}@9-v*^.Q`L*O+m՜Up0}덛]ke|}䲜ey77^a 0@a 0@a 0;Y,>y9l{>;b9WL?_:euz2{|W a 0@a 0@a 0p*1Ѽ</{{:C εm66›k՜eE>uYb_E=ɭتϫ܌>oJNa 0@a 0@a b`E1~>+-ͭGO9jqEsfr[j/WkU2ܪEyzU9}{T<"T]}9a 0@a 0@a 0Ny˙O1-YcUckua*V}YUqśmr2D)~VY[>.aY|frTSuN@a 0@a 0@ax2 yyEYgS}βxemqEE16o~hYUp5VzVOaz΁{XoOիU5>/6o^da 0@a 0@a Sy/hQr8}(VnN矗(ZrŬRb7>^ʬ*eEzkzڵ<̔Wk-ӏ6Y@a 0@a 0@a V}4)vT}Y~V}vW}v*^}^X_g**.]?^*EUc2G9g\Yq+׭5:E5rz}}a 0@a 0@a 0p2/nZ S9 ?sa+ɫuWYUb7΢|1U[H/MVe+pjx%~GSWWWjW]6)U,.nܪ:I< 0@a 0@a 0^ lKe50}]kXy{iia7էuMɭMͱeɪ[W§omL9U{*ޢ>UΥʷJyy֍ a 0@a 0@a 0J`` y)oW56O9bb=nM_ur3J mDxN`aūe^NSc?O905VsyM|򭳪W{@a 0@a 0@a  EϼSU}W?OWq}4\SU1:=,n6^^ɟW_ɫҺJJJU+LڽN}n0@a 0@a 0@'2^,[T*)s<],r S}S>vYʷJ^^jY\[D_fK&XȪ=[֧Wu^mSGeTe>G|㫿}Ucfr@a 0@a 0@a ѾY%fQ;4}ծ5Ɣ_[)Ƒb+E)yrŦ7%;/M֝{~Q|^^ISN)h+#bpӮX}S)9U9px0@a 0@a 0@'#^LW|yծ:y=7qeSq*9^q֭>EE5z=~Ke/ed9E֙{vQ|^^۝SN)h+{ X}곖R/ʝ+_Na 0@a 0@a 0z3Nmz5xkn7Օbj8mڽ4fU|":~q[jϗ)̽ ;/W~lcyzЧa|`9\H.5jWx}Ů7O9/߸rU0@a 0@a 0@KUsVù:j<\דŨHq[cU_ت˛[߼|̿j\r|iG_;ק4J0>OWCuwmo{_>;wU Ga 0@a 0@a 0^ O?S}k_cG~#êyz0пzeL)F[_]Y}zJy~b䯃e,ڲ+ZeeEy1ʾ_KkNM˫90 _7_5gy9}aLyw|w\??tWO?݆?׆7!_mq^16K}>}ƙoo\IX$~~ݚ3)탘΁綇]vQ֬u9̵W_b`]}୅Ǵ_u}饗oՕ/}ޔu^qY x$ ΧO))ƬmXx}H.r_1ģ;8ʝqssEWlO\?q7$qHT ?zb5{m9{\8v{;*Y#bL`*W}4>W/ ?CV!Nij{ rs݋u?s!$ ^4y>+8Ú=ޚ|K{,a.xէKErً3!Nijql^99ҡϽGs/Ni>=*kվo|sZ'W'n^/ e/JϰZ l8}9Scı{SH>{HqR8H8>+>^!W2,Qkmθꪫ~rxwn+};yhv1M1}?}Kb 3y1#챛g6S]TWG/'fz/3̫r-s($!R1<=>\Zg,2|ӮuA֘g~nmE6}uΪ/[=_!#z3,ɭXuu$>Qu笒z[0OLMls|_#^si"z1k+;'6:C R~SXbgCE}u$GYs9bM__z\C`Ab3>;z0_̬=8;%'֪uVl~zĦ80·^֨u1ǘ61/r~Rsb3 O)N9%qN=y\gYGy5#[{,5(N=)6__ 퓸 cj5a̚oS#ߺS~rn*]g9W_Nls|o!^si"z1k+;'6:C R~SXbgCE}u$GYs9bM__z\C`Ab3>;z0_̬=8;%'֪uVl~zĦ80·^֨u1ǘ61/r~Rsb3 O)N9%qN=y\gYGy5#[{,5(N=)6__ 퓸 cj5a̚oS#ߺS~rn*]g9W_Nls|o!^si"z1k+;'6:C R~SXbgCE}u$GYs9bM__z\C`Ab3>;z0_̬=8;%'֪uVl~zĦ80·^֨u1ǘ61/r~Rsb3 O)N9%FK.nW~.~r!!U)l^΋Gc^ϋ_Vq z.[WG_on;gk{"Wuk^Lߘq/}=:}3 ^eU~*r6/.ƭOmqW'V먋CV6RS9kM[=ۻ1$uqcp#_`rg{LN'NJW1UV\ս7}~>F;:ZG]rgYk' +9[u|_~"+x]k[|Uצ}F|`ч7_7C^ɝw9?1~T\^ͳ>٫1qe#9o]}mƑ;CΩn}mn 0G]܈;:R!?5kC&Q}U'M]t9} ysP>=O93 NYu-93^RszF~FU.^3TK$C>/FYo<=W(Ԩ8?̭g yCVW5ԆEx2S#CFV},G5k++Fr*b^1(cU]!6/6LSʎv/9ƵIk\s?sK4eb1_b`_H>8>W>Paf#_* S5j/uYYkL΋\g=(GQg-qbс_*yZiR :76gjG8(Q>ĝְ6{jXrGӇΠafNקg5u#Es{=mϓS`(1Yg+e\{<4 :#36:ʇ͜ǯO~C_kF֋cU99'<{3ڞ'1乧0Q>c׳&:H5Vʎ@.ϓyi>R uGglts97_뇾Z׍9ƪ9ssOyDg=ObsOa(G|XgMuks:\'|$8:꘏4(6s:o>%>}9Y/rU]s`~h{ĐPFF_Ϛ8 X);u̕ltX8~}J|j]s\7^>w?!nk[#*rϋ(VSvAEd͋1My9*F}^Sw3x͡phC탢lx GWZ>LO|eW{:T=|=%|Hb\ X$bk_ưWo_Mk>a u{p~m lj; }H.`Q'Wskj[_:j>zH7[ bk=>%NQS}++:8~>>tFsLzy|Hp99! ;bt/}`sg ?IA\ןiSX|Ge!^{=K*_Qy˧6 L7z[c}]CwսR{>cο/?t$qW ccc[?353gs~`Q㘪Wsb{Yz}Mm+]GGXiTT NFm:;Z9{D1hEkMŪ"߼XO">#kslsV樏1Ug|mYC1suxb93pĐ qgY}\Tm_m^RK_7~F9D~_g*=,CzcFppzLI?굖5`ī>:ˇPc&OXq5auxb93pĐ qgY}\Tm_m^RK_7~F9D~_g*=,CzcFppzLI?굖5`ī>:ˇPc&OXq5auxb93pĐ qgY}\Tm_m^RK_7~F9D~_g*=,CzcFppzLI?굖5`ī>:ˇPc&OXq5auxb93pĐ qgY}\Tm_m^RK_7~F9D~_g*=,CzcFppzLI?굖5`ī>:ˇPc&OXq5auxb93pĐ qgѫ/Sb2yjܘSSTlg1r}jWݜ)߲آs`Y[vm \o:{v/̋Q^3b̎yR2RꃶMu8\SWo~u!m9^a;;%466pJtb k:q\b6N.z͡g1𩏎[>4^}O]c>#1zF:*5_ Ҟɯ5ă:~/ԭO? B=gHX4|p ׁ^/$qT|`j=_kSu0^[׃~΅^{Ϛֱn78uxdzɩru5vN%{Ga^'K E9u/cS\91i}qHՇN5>v=#_Io Q ZCj=_kSu0^[׃~΅^{ğ??pįN0rm^^7_In8}xƐursAV85%b |c+!<5HC>t|ԪqlkJb}=}#h`/iT~msfuDW}u/؞-~9!W:u|ԮqlkJb}=}#h`/iT~msJA"] f9˵>0bSqk՘>kL̝'b^"{UZY7&^Yb{I|iǴ\C}FbU{ ?'\FZߚe:ڛyHփ|`쉘:~{%xc~N1ð.ҚbjloČoNՍ+!)ɵ.uW}j=ڻ_Č[i ɨbV,:MOH. X{1b=n.1{4ZrƜU~~XmpUǞ`{Nr(_%btb 0"G}l=ί9R_VL^Ƨam=9UbV,:J઎=O/>ħ鞩4|s|9r_%Z{*?Ch 6iNRw;?;;OkRV>~~at7:x+{=#h1#km´TKcƑ=xFU~:m:I<|4;^g| Ǵ1kL 1pz@=T0IaaL}T}smsO{qs/[Юy[oCKgOcB @ׇΰ'{/~=x'ۃ|=/'{X;K ]{sƷ>/x#0 G\'1Oᆳ}ϴ=ןxtļ꼋_^۷\vur?bT`(5R\62Qzf=jϥm❧O=jmc9Ś?2f]Ͻj\1O<9-Ci|Eׇț[Cxj09^r^rվEn6=2=9u X=#r>\94rɟ{?˹12x;×g;?sV{)Ě+KuaF>O :؜|#쏜? g3Vy[ϗyԭ}#ojo } 1뛓|7f?ܧ*'9^}=s=O]xI{߬|`Wo~38~r!O<Ĉ':Ga%5#pS| PfNaE| wʷNej2"TloYqƔ֘*_X/k]t/0/C Oqn?z~ۻsW۽kG۽cexK/,{϶[~uCA{%q|ػ_\R/~}#kwj;>6wwšz᏿^h?ۮy_yM['yA١ѧ?^B;ڮ/ܽ4ۮ{;=o-7:Sr%7M̹ob5kv\!k\9暏ޗ1̣b5g4ʇs"W.z?΃n/k!9Hy?k8?q.L\uyOa$zu#x/8˗Ebس5+\l>е=K|duud`΍>1kyĮyƕ\!k\9暏>*܋%~J\ñUuXg{>39s~ߙG={poԯ_s`brR@׶T.1ξHXgMg\I^ȵϺƵaH}7sw|žW~W{;o~v=~2}j7o5ȕGrĹNBY׶wkZ5z >a˗Es%ǚHb;LŨ鞴8.곖|[::9_ܠ7z+֣x Nߎ/O_Og Z}0N.^'79#/tG3E,8.~c5ϸjAϺƵa.~}}39S:6ra֫wt{ѧ]{A#Ysϸ_8Y/|}3i!fW_Cc)z *v*Qs]u1zWܔoޘrc[&e)tOf-I3z2$}yڽ7z9P4Vu1h'o}~xʳ_uQ}}g3֞}3O=Llwߵ>?#7/\ 䗼n}߿lz]}.j sΜmg}=3Gxv7_j8~0^ju~ivE?7g^hOnt|W51{ ᫽KsU^]G'æO >{N;mu~DC,:sl>H׀t/Co}ж8. JcWGţnMr L?72Zgbān]xͷ5&}!bbFaM1'>?vc k;qy+.kvnl\xָ6YW[?8@߱c{i͇FWj7s桸̢~y#g?}ş g3g<__{3e{NԮ{,q_gXS 'ף_$5qO?~7~c]Ѿ}o;57=9^!vϙg}^. _n@IDAT8wÇ;Oh|m;{FmFȽz{v_mh]nCG{#LݏƐo %~tc[mbwz=7w`d!>xv^s+;3z`-r]u1HF?*9\obŶz&9uԾF >{a]xEQh݋Wrۏgy퇘kStMHGevHΑ>ə9Sx+xo9:'>kO\Ҙ:Q橃eE=ϡ1 Dzٿq`~eK%>zGG3;!H| TG;>tG?u}ovĭy6گ6`pQ&n=z:s=w߉^j[y }0jyyS,aMlkk>:}޵[%{?7l~'>+ĨǜĴWc+^,57=8|粮qWv~s ͳ=;!goٙ?/M?asۏjo}ycoǿQ[7+>FՑ~o lfs_mysg]N?=o/ ~0 ϰN9v|O;~X3p?%qW}Cm-+n0\s%?5W}!6=ß?'yX)#CVqc靁0DwM}jM0\%+Jqunc9bYK?|O=G>fpxƕ^Xy&[S |{X|#믿~/}P]sW'nxnhhZǢu/V?u~}uZĖթ},;׺ruk,~KXP7Ϟh6_s{|ZƪJ}PV냝 Ɓ_{O?'3lyu?W_v_\vn_}vm^:vhcپ'ӌ9o/@TOov{o{};uo{.sMq%m39w{Ums.>G}߾9C%GpO }xOW9Wn~ˍ-햫^߮wU;ke_zn۵c'vQ۷{{?=yy}o98cßDt>1Á/\|^C\1jǗXmtkeXҚHQ>36/uauĒkOwC:й[gNS^˺HuP^g\R?Qs81׃o|ScPS1>{.:J<ԣ~|9'듟_5SlovU{>'?g"6ĽS~.0T˾{ڰJzSW:/3~+~?ykN?ہtߏ#66>'{*OFϽ:wnC:έ_I Ļ (@o@Vy#?Fw'|mkە]>ۂ{ڳ/=?[x⯳as`;W uSRSMZHj!o FԬ>\#}WW:1KH|ִZ?bENԘSGzuqz9x.Ws2<99\0>zkO۾4ԛmo|WllCwO}}]7\ΠgzuĐ u!k#FrOa/BC꣎~cXk$NE1w\ {Eׇp 1}󿵿Kj ~35|{Z?bENԘSGzn":%qNȓszfsc~ljNzA]{G>kllS%ذt> 7Ή2 b?z~{nx<Ӟ~{loWfpsmq?kWG \~eKͼWcJj}9ĭ|H}5g5>{W95^C:yǠ|B:rl|~=U7}rogG4ύxÙzy1ׇOU-9%_1Ή=[~Ruу9aYѝݗ~{iמ_Æ>䔹Cܞ1į],ԕ#g?:U^XùC8w6_99yK+p/އAz3Y:{D>Eg}|<9}.}2>zO/^wPqUWuZqr(}g` >ଅRq{ '\c ]8`^#`ÚaWk>T ay#cs\үk3<99\0>zk??hqG_z]6=w>6fY |k޶~C'ΫcMԘ7/Y)Z}S[_qt^}=?7j1ݶ᯵[.]~mj}83 .5?n^^{gow|g?4C\u`cͻO % r̽3 S?<>Go/ gzCky7cx|vڐsůjo>/x2COO>k0>؞xl\za;cgWP;)j;7t7o9\'h7qa.>8[N+w]lMb[C 9bG//Q:'f=|qZYw*:bIu8:ڟ~qưQyX?>c>e i<}j-tut1#&׭IܾYqyUg.~g=b;Hlss HԶoqH0ǹ3뮣j-0`w^ts|0GL!-scc]_ yU޹?6/;^ـ+퉍}zv޲q?9M5kxI?̽o$i|qx>b#gkZ˘:'qZԧ4f c: +^~קX}-o{O;wc۹Ckp-x}d U2ע!V 멃?j=7ܝ=@z9v8O=Eqk*w_7┿Nں`xl%f=&1N b\R$`.Ҙy# m]1cyM5c8~!sN}wNb5kO8C[Yb7[5İzR7G,6:so?\:j][,fg k;O=ĸq,QĜ l)^qٛC,1nMRg}4)?Xͳ1\99 }{ ks]ܯv?;V^~+8t>ɨa 0sP!"T7{`9u5f>:9U_o[YśDx7oA4/>szۜ)>%Xj/M̷FSz_7d8ឥ ;|03n_o{zO0?^~tb_̶Ð1 GUa΍!`9dwgy />g7;ɽx4Ä5 ?70$9yXǟm ]}q2N8|؟\mu[>οvs^dƄm/G~yj]b|HZU%ejkS뚃rMԪ~t{Gb1Ϻ{e|i/0 V5f_޶{Qxz\?е#_gAg5otlНK8/NI1OAܧ]ܘA^zQ_k8/zk/Uڛأ9s;ARbvx>>u!No׽O mwY#F^`3;CCxIk{z}ۻq?GȟݏWBGxxzhW M7W~큡ongv7=_OVw{Ouu N?K?5Ƣkn}{ܺ~}mx;0{.zՅ/̮k78۾{?<ړo> zis7 \s^{|#Gnmϐ !ciw>vڗ9{CipY۱qx=pg73f/巷oC{?wן|߷wek_^Wónַa-Onݞ.ioz[.=ss+S=ȃݾt׆<3]|C{w=w^^s=?ˑۥ7}sZoOvp i=m_o:]s'K^/O=="lϥ7?^3[sΏ"fOqqﱈaۋ׺ Coؿ8ιڻ/RbK];gr{lޮi1iرc υ{<mL}w~wp^lÿ}֕톫. O=>ۿx?({v.t{?`|u텗+ W?ܸ';]/1>7^yN񵗏>ݧ#]+:{8?@{ݜa٭496O;1ؽ^l|ϙo>pWcwƳ]kG7;w lx^οva_pؓ75ï7 {i˻ڥgϧמ={.7"F5cӏtSĬk _WCۧsq1}Go[vu/tT>]}~ʉ8y5&vŋŞ(|ڪulb=k(-C9̫>4/e| ~l5_]WMw֚>sJL֪MeLUW#RGZcҔֲ{+cmvmcPXF=;ൣ-dc-eunNuj{"Mƣ퉣?%<5V:ZKlyhSLJ"?+Wc~讀g>u<8Asƾ'N lBu<*c\bq͙k1b^l l]]Jt%5і+(сFsqi_uN )=y-dc-eؒ̽/ݲvhOul>еo.?qyw~_|f|mƿOE^ȀϜAƆ{J_[Mjρm?W.ѡMNj:iYs{L3:{yco󎍯.mh1:is/jS3)I=kyZy|1ET a MOZ&:9so1 .{zczƑ_ԙ[NC_GA.{F~48yIugb Ep/ctPF9'ߍǽ9|R]@i]ɣ>WM\S3cхFSck⓯@+Qtߊ?!޲좧eOmg| ß(q̿冯lŷ淒?O]vSYuiϊ6GF6ٜkpg{ | qTSΕWug'P{j 6SN~%5kfddi#9NJf{Ǿ3@_xBf7iFlqIo8.Hud.#nH[.ETyws,ٹq{IFSr]8!m}YeG|c|I̳[Y☯] lT|澚O -8Wz]G|G+j\=seS,5q_^kpo.6պ N7~<|Q3V='txh ?M^)h|O}ܺ'R!W־qYGOB~]_my``KbԵߴ )=y-dc-eؒ̽u<8A׭&y|hMWsy]<2Ԗ2lI'z=uQצmQGQJ^ߺ^gW%`!q)_ڽre;f7^yѽ$P:k֬1cFL/־"b倏.@w' BG9zPnSK`6ucPX[czBq@5vc^Q#R\]/ EuYPqnX>&F{s|| |y`ouvg,`[<6sꘘE7P6/|כqqΦ7V 16:171壀ۛy/Qq>{B~\>سEA0`AljJ^>!7&i~y߼*M15鬒FVeW꼫pY9kcp[zeWĮI\^l4%xç$l:r^ےG\Cybqs .o>0}Ёj <ڦMԎ1dYۥ1RA_#WCCi[>>sX탾R+I1'SB9$xԺƥ^ C>?u|ƎmmQS8t֟2KC悶ۿ޲hmSw?8ݟΦ9㻵8ᝯo[VⰯୣWgzn>0M w3vjK_׽qe8=By_X/nuޗKw?0jo]Y7}[__gқN׷/3w=cf͜ Jl,_sct9eqG_;7w}cM|k*z܁6Y\|vr8b瘢 JT^]J,n)cLǍ ~o8/2C:(2C`eNS:̷#y0@51mϻb0/1Il|KX}Mq2%9bjƪ=.x!R;"Xo'!伀&/2ۅ#R{iߌY]-=c}P&-s@`飤)k}zmS\OŶ%غm\Wαu# < +-o_&'M8t8V6}A|Keܘ:B]p!h6r̝W_Zt^[bihe{HtuSr czUG]1(. ώ1wR>m@2@Vj)'owH _;"m~%^z12_#cR׷0N})ĵ >~+c ' /!>w6>Sc&f4J' 0o~n\\3G%sF􃨌AtWĻ{^lW>']ff,X׆˼*iO_b_ŧH\Vf#WNX.㔫)oogq=qw?Oӈbާ6z \!S2OS=?8ۖtwI&e~b{FnXO۠r,ͱ\/>2##mʱl.Z}Ц#91.Iۍf,+9h%%&>X.iTϋHlqgm{sO~Qk_'\[qj<;Fr'WOݟrV7ΚO91i~thpqt{xZx Kki+Ǎ:\vy?0s'mPr LьV.]y/{e-[Z{7]қbs΋}elw=?ĸ-}4 :|$NL x{͇>56X=MOA\|q٥ZwsXRohL \-lNBj|\ coʑu\_},VҖyDQ V}w@/+]?RmKu B}ӫGyQjG/-8y&&f\icJ%\ &6.~6\֤3.v[s_1'.,ϣAwU~qQ꿽1vhZ377 :ùeZ'Lm.~`g`]oh4N~N8,*6sfx'?sFׅq%޷=ϐ:OΛԷ|6堝c=0qScU?r:֌.q_CI[o~Eěilq>'~R+\/{嶝_}͜Jݦ9_ʇ ǽxS]:/6Kώwr57b|+c?88S+Owucnrɿ˟"O+rw:u} jބy&sjPѶ-kyիsBf^2^Kȱ{[SrXW|W'2;6BIۖ50y~im^.++c<7>1grh%Og}:˓utV_^^]cȴ㭟8Z[?ǮoJSr&ur:''|Ike/e:s'xF=0/:hS8OU}_Q?= r]L[~9??5@MΚbɉ:4\fb{Og/.{OwEGͳcPlȧ#{}:r o_K%ԣmW}mX4/ tcҾjþ0Ɖ\+2=+2{N[2R߼ þ6б]cSGiŃo}%ly6Di]hrX1u}PW >5>smk[!yy@IDATױ!k.S`oO]>t2l+_!ӆecVƮ}eMBW?}a]Ӯ`iGSr(Ǐzb_uxhkK} Rm^{:4No}`O/u [a9A]:.քX`̽z?q=Bym}u"w͙3'vqvm{ʅ@ML'%7V5d5:nMڒWkl[{qʵhZWciw,|mrL)&˶%[Qkڦuj~]F< ͍E9 ٍ:dUޙןS+/<!Gs^GgYŨV>njEV^C?[&mݓ e+#zSE5.˴*_7^\l.`XwεZ+/[i1'Oߜq}r|yr/uP:.}&dc|^ybb2}ʴ1 ` < qKu]<8WJp`9/P3(!%X~(ߞXC`ŋ ǁ_HvСnџr0N9uPmg g;2㣎_b6ږrxbՅ}ic>)Pzj}Ydߐ sN<㔇-.c/SF]R]D]!x׆2d`uqoqu=P.C9ScA1o 9VX,~Sj~hW)M0XPN];u8Y¯dƎY ǵ?91ΓfLчw7;@ NO9X,Awxm'}G-W|ڦ%gI?E`kr pNG]s# _Tci>=䶍3?ޯŒ|#f`|=+1׎9rAwNTuhLkqcnbl֒}"ÒQEнy%Tӟz`G;MNjڤk!i赦?;^:H.eF[NӚvpvM9GDY!΁|!ы>3|Ӄ8tbmLJMgL|I6H<āձ^l9`Zݝ|EȚ-PgOa]^t{f] ./&Q?븷sk,>G_;:mݢxC|{r9Oi30ekw,k㱁/y;oԻ:>w5kEZWQ?ggV;6r?~'eyGԱܝcqϽ>m_BXȠMzW{u;//$ш6eM؅j=/|dž9GO6uDߵ8K1Gbc=c|З)PڶZBb(KkzOz/<_&o]""laG=JcA1o 9VX,~SjڠD?` K0ʩknl,dp3eMbxQ~3)b_^jq!//RWrg]eS$A/7Wn_>2xpӍ؈hcM>+Vo盾|g~{\d h Hƙ~y0ņq=n|4M?pZ'Oٰ2b"fSB#(M=.s6͗R ǧ7KĂ|*~{;@$+x^WC9qw틲Z/euUrKͻ8Jt{A/8ڐ1[Kn|xzb}~(kڱC{`<۫ov8b]֧2:qKz2g Іz 0_񉧄7u|B >a:r^(S17>u9dnƃ"v}QV"6%0Wn yGiϖc%N{s㬯>q?ׯ|ME>o(nb;2^w&```e9. G3.AnGy6ǜS/yoEPO+E9$x$_wh[syv ,~bvC m?b ^cyZίwzؤ?/`2Yg?[m:/ǾJ?tk]p_%ۗߋg>l7_N [?k2k})&f~Ϛڌ5xLj.үhvX u~s\uMq} 1D7 \C?FZsf =aw#5QmiG>gi{ 7&n M" 5g5-Z*}ux7kNNH:v b\C{t> s ׋zyIw̳6-V>}`oX$kA±G oWuǥ?rj8JXoyOr`cm&Ƌ|xzbŎ> }.7`cGl^{`^8gvsSw9uRn)yKb2v.96\`[;_3rL|:wRy †T׆ǏZxù=VEY[LJ L-Ϲs)=عk7M-iӦ>쓿IKV[mUߩ>> ^Ν;k3t`/eZ;kMV`u]b-8cx%zj_]_S֫oR{-{ku^mb,Aeh05Ycۅ &r77;SfoC\y*򎾑So$}y7_yd^`H3ȋoRFrY +ss6Xց",|A9yٱ/ EG.@82>Dk:̋j)@%) Ŵh00pM” fgSgF7?s`b1kǗeyoy~.£|tyc&MKl3_u>{o>=i`+Շg ې6G({8>(m l]7>Kd X3yiE҃O$Y"n =cDL{ȴ!NX~ /c=V㧮?ձ `8+3Ġu\֖7T@ 2C/޾2ղe9,q;>=Ou vB;mOiwMG8*&=P-1eɜkhȜ`\FF]|)D[-f`*~ǗYoi;2rg1%!Q}N|fXƠcl0/ei7C͝}=zvs cOF)-Dtjg]?&j@u>!>_₯]JǎywW_f>Y7y!s'zqIRglrXFm.q}S+_o+M$߷7R.2)4r.bV5m0 }Poo' ?Eq7g҇yW P*4̩]`͎:_8;]~SCףrXɁ6uT=c沈|Cy@%\R~o6*ӟsR%9b'@߱Ǻўc +dU'-AH;|1hۮc{bԯ!e )ןՑ52]֏^Lo{,;b(kg۲i[bRe-SO"cQ`]lX}➾b0/oc;'yodR>&9#=nr񏴰a |;2mM|xi^̊x:'OhG\E|nVt޴Ƃp7Y#Fnjoĸi_ZƗo*>7ĝw#4|mXF>8iCx˴qb8ž9>/M̻& L<&O; Ck>E|19)CMbmȈz{Cl͜o8!g?y)P*Sr1gb~)I }=0'Ֆ۔ó][w&xѯcCfzmG'%P8P1Ksh\9^6kYoލE?C  |04']D|qiR>LتO]qǜ|Mn-y#s)u;71 W3r³ yVF)i>cBm} c+Oy`- ǝr|x_ Wqץ7`^Vgn<%ly~kVU7rC~駣ێ =x'o|a"OشX~ =6*yDr gʚ\uyX2z//E/;>OHc->O@M7u["3|ڂWyދUT g>@L3yO{RzK[ q5k|iƲ=z.0ͰQk|{? k=׺? ce2Qyɻ$!b WOYr2V^lU=yy718t9;NIDv}z3m9#n?Qm\)1}3u|XfB֟Gv|aczols*J+orklJ꼀㋤{Oou޼8~}7qWMݹ\]$D}ړO\ǒi[5ֽoJmoəg  6OJt(0S>%<۵f='3Eͯypߛw: xc^-69֭Rǚg̥|9{GGt8  1ؠشܬϜ{ƒt0! E|C6wϵOc%/෴5oe MbxE<ӆZm7E|Qz*golǸsbC(9^ߺøobkbLS&797[۫}<7AW]ի}Z@l%G"Oʼ!3d}qgV&Wy]+w|ҶEH{ 97RD=}yfFonD4g,Q^՘̹yf&yD6Z'~;bx!{-M~˘ܶүkEN=]h>ydԝѱ DBg=ħ/\ؑǡ(>;4c[^PhFnƽ[6>:%vYCS&J^m]Ɨ' h>emO\fLKˊݽb<%6kU֫6(сosE,g~ 6~+ t`jQWZg~mb`gV5QNF -TkZqE?)iz'9mfXKG17s.{X^w[>2w.24SfXfmrVi~sۭM~vY[ky/ki|s]n$?=_XRȊ)#zLz|q0e#i~ Wg]ŧZ#OA|e5l"\kp>+|uO7_>>h[^` 6 Ɗ>kBaxi:-nf@䣭H#3zݗv v<^=`7uZ*>\{ F}G._b߆nXp7r^c7\ ~),Y!qBb?m_fߍ2t!zMlNfԨnXo]{h:c{y7_B{L͙1AW@$9MCe[^^/%X^=k+|=YnRl6@b]6q>Ƃcᄐ5\=eR25F3b$o5Y$oxzfʔX4@+m;TNl<6c0>l2 o;& ,W8ͿR^XqXmt;Dww(rsClotEf, 9[>.vfXX(x;nyoj75Wdyqu|b|ࢡxxx6O6ۮBE {s#xuQ7%|O KoEqhO=*R;$[ЮXثeup=S6qUO9%,C(Kb/l$min+ra~j{!=?o&|mSX"o/ux.2 g!x98b>ԧ N?gϜh>ouY>}|, roiч́|NY}.u sB"GPoniPk^=q|Cy >7*r0Y[|H>2{9>/ޙqOX|Ҙs+ns7+]B~Y.PV<"Ƒs;6tqw{zPvIN3oyZCמwP7:.yEV;G\)z ;ˇ͜"yޥIsCR|SW?T!  t¸sU󁅹iϾ8OX ^ofK㌋.kc?C ɼ/li:hM^h+}kC Y"C?_q7u/~jU~kry񳏊j~j[6/uJYg|#_ٷ9/8=}nU~dS{4]ms1m0㇜{N~<sQSߢ+uN2ݽ}v =\@Mbv/mJQKYr:}񂼸y {/FV(/wr&-o݋vM~9qi|׿bs{g/iswQ%^ioִןt#mi2k5m1;6I)ю%2؄ҟm*S6Xƈ8bkߘ!O}f|+)Ķ 1K I[کJ\=Nz=KbHM[6!mJxz,^loϘ2ulXX} ΁z䕺>j3'EF~SzK۸I1Fe_7DYGvEn79"'yaNH7z) }̙3/k&x'vc_ǒigRǟ?qGN뽆ǒɳձ>u۔XWcju^LoŖZ/b=!O5Vc|{gظ=f3ߺ4/RuwuS_R]~ۗxOJp̋OyFN_N{V6v }!p_w=>7VU.W; ?' ',X9W߆dk/5{+2WAmw.oll`ЁvksnWȚOu殎*;6N[ӻΊz[]Џֿ7q 7]9(2)ؗ<铼_X4ro-m¸[;}\61H`1LyOzzLM^qm p}\']K;8?x \@~ɗ>߽q#G8 |%?A&(Xsk9\;^ogm|Zٵ s5?7j,[ҋ_+؇&ݵC_1_$EʪqDu]eu{ܩq}ԑUCKG3c ulVwwyŖ9?Á{or6uK/Ҟ;//o4?E/$6c:Vv-?O=㘉|cc{oxf+h]FF%?Y~P+[?~u߈nz0:q/Wq?Ǵ 68uǢW͙kDK_L"S?SuKs&NI>6>r2EN Yk?MLik[!:7`;m3Oz}ņ%:R9u5_uKY?MLô%ձ#XӮKJx!>d N]c\J X,W6i83x>r(!0ؐW}xTm`6m]1V/6K%|ԡ6qFk=Ļh:O]- G:7`GI۾Ӧ߽b}κ>ƀC~~j}DC3Vب ;8ԳN/u(QxJC'8uoxա\{PO>.q!KƁlOx:F!rpz _Emy3sY&qgݲS&6RDzƍS^ڒg3_t cےPb(׆SfYWk^G]ɳA#SN Cw9qG L}8FflzB^_^౞id\skzr +V c݋/zQirCGެ|h7Xelk,֫&EIi3#oU֬=7L!7-ۼWCw/;,26K?v@99mN'p`\t1!6)/N=D~aM朴v|i 4D {~hrqr<Աȣ h-&hmq:e_ScwQ>5 2x6w`?u&D?m〬+xU~C!ӿ>׎%ZnSjGڶ1Q*>x\!uwͳ"=46`b)_ >Jl}b<1i̘6>V/'.;!Wvo~vqoAwIqM^q`l?+xX|K/_>۟w_$:67[^}Ͼoyx+^\ݥXObJJhi-ys?>mCߟW|7co):w)1X/>5s>FS{r@J|24V3,(ї|[w37%_K#gf䗾_?E/{[<[旝8N;cŪ| "?ko?=Mqk_;o15r]EW38d|C}=?}xAؿttFT1=gǪŷy9?uw_qE-cÜ<ڶIGm?R'U3xz|#C0> VM=f_|ߛb1|ܘ`>xQq³{C칓K^0ExH:N ~Zb:vӦ9?IME>,$rM\}[bXeח'޶okUkl_#]ߏ~i(ǖ1Эq .c]_ yesAGYJ c2cX?a^x7/k~򈵵!cI!,C;xՋ݌#<1+Ci}7uq'np<V9Gy")n aiǐf;$;ݎj K 8h+y6GO*Z :༳kYMI*QCC]R>q"h\}ֱkt tj=}Ӗghۧu5HN:_\/JqO |qȵ#_;`j}:v Ym:DLEÜ7vA.Щ}&::c`>s@&}W{}iux)8]b94u̩s6ה"?y|m7Ji|mcKEO2?mAnXԞ8dmcTF to| |W$={vl ]c`b4OVBb,{aH}mbfCk+ׇv֦'cx,zUvkIn/<|,6v{(땯6\mrffqClݐXyc7qH޽*|%,4R4_/R/]`Aܻxalϋm>ٰCX)}!>mVLMIpkY`$ox$oP>eY 9>9%>8lu({B9/.^ryρ"iMG{c~t n&/ome|KC[u_,ž?.1 e 'l܊UcNKΟMIe !dZԖ$hA";dP{ՖA^DF !2UUTs]{* I {ۿ9y{/mN;+*Vö3^f.a]x:^]5~H5سg8Ū3'|lWW*/mO܃y=o ?Ӽaϧ^"a?my'8Ǟ7잳Q_rfܪGp8gkj_}|aq˿o/~ދfl1Wҽz\]>r'-p?vv/3_88w,W^Gy?/:] oh$S>ϯ{c~xG޾~9}F޷XxY'hb\cd'_߸b^rɝ\~} [pfWW-/^d^V~>q]}gҺ_/\zy]o/ߵ]{i*M}|O~Ck?oO'W}^_xʷ @tn?}1z/[>^ߟ,訧_ty+F@IDAT~YC^7/^/%|//Y?6o2[?Fꅏ]t86"d\meyqn_O9x^_|޼=+drڕCCOY.?x͙W{^n=:XU߿|}㿵|3.̼Uסӻ|Мh/?/~r~ ߽}>+W_Yw2KY6>i;[~zP}3q+|MZkE\V7~ k{q޺_m)ګ?~z?Z^qǯ>sq?jwll{^vx{+oɫ.돝ܧ߿]u˧>BS/3)Ϻb|8>>{9Gw򪱁֗=9n=gɉ|=h ;sug랯',l{ܾyb\n+K>{0aH:قKƳh"L[Ŗ.tb0fߓ9yζ~d3)a 7ӼOpHNwLob&jeo0Ü?} bbϊ?c|O .cO6=c'||~0$1X߸C?|O˭׼v7,q=,-˫n}Êy3/{r۝w-O?qxJKy/}G}շ^Ͼry^UXn5˛o.6_Ϯru>ڃ68  F=!61pĦWi_ \ofpɉ[k|L5~BNkW=c=Ge7Iylט_xifNYkߥ0lڧ5Ց/7wUϸZ|0rp72y)/ ]o6_~W1:N9Sbtk^ a۫mQN^k߭7]?l9jGcv|\qay͇}_Φyk^7`xOmo{˖oKly/PʻwQˇSouV.]WG4{t\E_xEދ|wM+]ݳ9_|ً>qy$G_gϾ_/{k_s1v_rU<]G~.e/^>[>>ny^| po'zjw#?Z?k,]:֢W\ #~^| 嫿[>Y.?_N7`^xǣ?epN;XNuO&o兡덆>U,\cϽxQ +߈w#~R=sy|}QySkn/GF.ojxzgdb}[l}y:oh<q0a8_Oyy@&f$İҗtPiwh{8" qu?[.<_.?(;Mr+Zm|z{>Xf*f.>toxKW¿[fޏ/W]ur꯺jϯ]W޺ko|r[^\ԏ[n|̇ly㌛?hÔ'7 [{~q#^_kמyckןJvyW=ko{-o|rֿ̫ :֋=m.\yö=+W򭡘qdÆiW5ۮ-{+{r%Oͽ5,wpo%_vG߸o`=q_Ib-޳Z/N qȭb: rZoyrۯZ_E׮uxӵ78z" [•m{sˏ,/p{տoʯu~Dgs;=yö_Z.nf}ۜzAOq+߷ٯ~_[ †\{ު/qkl= I5կ_*//|#0uǭ+,׭[>W `}>=r}toNrnE~Wn9]uMO >{>}…o3^>\{ͩD-{Xx澳[wrr) gO(ӻ{^eݽ\j>kMx6Wmmy~͗q1=ջ\uG{}_]xoS~up7[|Yc7 liMlҼʫ0 K<]?ճO12k&pqg=+={qqͮ;Uxc۳z2;~|aT1l5ͯ';\Spv~S]&Ս~fN:޳!; =qKRI$pVO{Yc&?L%<ۏ'O;py{DpG|[_˛~K;o׮'}s>7n>?\8G1kh>lO=77,ͷlyk_o_R Y>>fy>tFӷy^ZIR#_}h=֬7=7/O}‡.x/.k?v۫W_0|=-t,7{Y剏}x[I}.6{#>C5W5w76o8ՠg0{->|.fjuZnD /Xz[+?scQV 1l0Gxkqܰp߻~.;|SK~ItwVҷݽur/|aDZ8㏳u{{ݳz#kYmn8Z~߱g U.wD^/ׯIs^zrcŗ'UguG8_gP}^/Y*m-׫=#O߷Ss[?gd84M'~+v}>.؇uo^/_(їznқs}`}6Oo|ۓ\zrwI~|ro~+}>g e.ra6YT|3Xas_~ģz'?53]?u'k #Gք&7en~"0'uȑ^rS]\;~MYO^cCaA-{s=x~=OX"{{\F q _}yUO_u'bD> =bmO +?%yG'$?l3}]NZ$N9S'g G/,/86֗=HgS5>S=k盵LNkVzXx֛|z`q#._E,Skbcb1Wpq},n})9ӭΑ#?#߾Wz>Wy ûc3St1$_z)6}f~u•ǿ1SJ7}V?o[ =Hr@93=İOPfCvg{冧:#Ix8W4X썯yܹ~{ݺƭ:\ptOݳb0LwIɏ6<0TgޫlK L˧.U|i_#q狗\ZK#/|֛\>®z㫯c'3oX(^Ns/'~Æw8gưb8qUZ5}U]?OGhpuU:pC9ڤL|`HlO¶ް0m~ϯoXy{~rk\,?깘:|5oMhca9?ˆy_GۯWx͝O`e'5ӽpX~g,g.aw./_sK1WM੏W?[3#z WzʑoLoN^^\Xͯ~^ ֩9U~ gLo\ͱ3rKN]lZ͵k/+<;̯x߃\q=|x|qZ|r)_-=g?G>.~qW?/Wr꫹)V>/{ޟprf⩟j+W<8$\{n+\V,rd׼;orU >:?w9}qknz.^Մ7e\Ō9iq7klI )wC.btWtk=[F.;N+NO~[z›g57䥚Ӈ/v{7N/{rЏ.WL8/g' ~8_|tGpq6piX˥_>ùs?Y$umo[0t|wo*n_garT,}G=tMZzt2Nn$bfrKX}NV7gaΒga;;?}rf7x8_.}pPaI4t>oW|@N'Zx6s46`j܆3Я49jLl8/~~b{{_qSm=ͯ|pW^hWs߸>woÚ/=kw=Uz %uyOt7/WG~-׭X䒩x_[2{'=n%_w߽WS]g||{?z\̹SpogL-cI~ˡ3Ծ㩶UlR0:on|ճ}38ȟLrĪa~j?8`#z}ah.[crGm.InuW9k _X>#|W8Jߌn7OY۸z."Qޖt2H^|o=4z]3I: W0͏F19I}zƳfu+7rO|.\13jojnf/|~jbq7O\qͻpw<{Z֨}fo=C{Юַ=h?g 1.qϞ_ls/^{kkGX\5A.%Mb5kzp{]Y=?Rj7r2 JWۺGB`R8{'wC'6.3{jvcb^!?Uʱg + '̭S'm\,iddx=Yեh..<1/{뒻߰宓{d=}-{~wk_˺K4svգI_~ף\ծoxaoZok[[r݃sgú^νsme cbd7 <,X2ϸj_?#tv~t`+ox}qttݼI~y׽g9st߯=[:qO~6e#3__/Gyy03/ 5N݀{bO|)>u@r __N5vpg޿ÞW|3?_z+w0'~.;! ãzx>%XZ=/ׅ#ꔫ^,?|Qn93s/[z./^~ŸZ|"nYGMW78ks<>puu{N~H{dzF}D93*q?xEwVgRK6jꇈWtw+˩#gx%Ο-fLώ f |<1&xԙq<|pM˅mU kzo>#{aa>p}%._:vr=580/78y䳗=bo/gxq~l~s/ֱkmp݋Kٞ]½EŏvStotwl{o뿷|&֢gqԳ7-Nz/ sX^jwcGŸ=G~o |&4׸5N|&ˇ/f/_[sá9hDռ("Ą/&yr=ӿaq9w~Z3gS,xiAesܰ0, Mym&jB@/rzLp=qÒx7+f WpŪ[nZ\plZ?ߘ=ꡞo9{6킧SO&zʁik,^X$6} -_v\\Ĕ?ˮ\o֡5iMa|pS'/pV?|Z%wawUė/n:,|6|zcG#yxHecy8[)լ_Xu-Vk=QO-,l糚ՎX^5?9<ָbbq֓xo/Op鳿6Uk-Ү}޾ˍS9K'/{#ͳ\ꖛ~R|t..ufjͼz'y8-,l糚ՎՌ#(VL4XSMYObǮzKeǟxyڛ7S`1׷˷riW:b{y$mpq=UoƮxz@N&\vy0$ָ:y8Qb||0qTcr+yXZi8IlWo`} [\O_k@m/Hk2 ;y㋛[>͏;9%nouRzW`Uo:O\=T{橅o9{l糚ՎX^5?9<ָbbq֓xo/Op鳿6Uk-Ү}޾ˍS9K'/{#ͳ\ꖛ~R|t..ufjͼz'y8-,l糚ՎՌ#(VL4XSMYObǮzKeǟxݺiO['~k@÷W֧Ү_-+_9k<*.8f{ɗ.>.[^?}onP6mxox9a;Z}^r&؞#9wM/zы>v@ CC[Jc8$L͹;c^O߅grWnlZ|]3wgypϞWg*'<=$pHĚgjr{ˏ=;p4rظ%^SSyC܇r&O^I=W-pқW[~.^16lxcs e{/] qWos/XyX!,0 '00f.=ͅϪUN8y)}>;?=s-iZZXΙޞg%g;W.ks7z 7osm 8=ͅoŸz'OIYhU#L}wb\^o|VohR=XƥL8_QSyCkhޱ[[vkޯ)V>~՘ɿ9חrg+f> x'.Ox7z_Þi!2a7sߕ>yӞ]相8gƽ/)sN|/}|?}'>Ar> 7 zs80MI6 qU<>bS?Nڛ~ l'"UOգI}U&7q _#],:g>_/?|X_xQ\W5#NXjW/} Gb|6)Z/P4]\1={-?~=ˌGWvzs>j&֎UWx5|iO5nc>bޚX-Lw_Uc]rO䆭Xu‰'~|qx_8#~x|Q-/?|X_xQxO?gg=caZqֽ۟ ;w|r|?|v3z=[cx>{X=^//lR<?w?+l׼x{i31=U?~ηny$lWk׺v.]mnK[~+8Zuf >kg[X{ 7oݺ^ζg?.~a~>G{]<-~hs>} >SB97ӇUr+<?>cB7药7={`Cz3`M[Ζw78a5>(U`Z'6k',X `ڃC#qvq4ɗ@/츧;9q.8F=קiuHNzk,]_pq1>Wck[|s7f7,xȦ\6" >qL]d}18 Ou{ g=Y6\\lbL]jC}jMmzL;M7zpO3+sͳx<{MxO\Η36?zO?w\IL٢a]GSq_u&rIh5Fwi>w$_iwtcݧ0 E乎ւu<;ֹue`y 0Ӈ)vbҘV{0TzqVc_~}s}6\bhybz{}?~X?>W=f~ʛ}5[wn֔?gk|}U}c'Uo_4|IcO] 91l}ʅ%^^Xc[rԐK&1M̟ah 6RO)F| 'KCi>jqԇ12֎Vb0ra.f/ՔS=e|ˋ.Vj.6g k|̚>r[8oIu ㅫn>c"GF9V|5s)/9r]qO>ɯANP3mqUX5p.~\΁t=}]8̙SV5jM ;{inqԇ12rj)V. #nRM9Sfͷb&/ b3?[<|~/! ̬@IDATɞ#uT8^3&b|Zj_?i5ʧx>u{n;O?nMux9=6iZt[eb[k>4C}->9ĜZ{LyTkjjCQ˸>Gj)&G`[uoZ=#Xa[#gs|d9 ߶VgX7~X9E._1Yb~о7_ii7>v8ُ\i29j1&M7@'o=,S{ȹzB8$m,?/{aUnrzpC7.87q ^ش)0+WNs}n=}bt6lck?!Vp3M?lq n2{f`#/9Tw.WvrkՃ7s͡aù"iR>.x~v2q|hq6|18uh2!/|Qh\yZC5r/g 7ɩ$+wb˝1ϘL8bCGQL}R0Oa\> }raꑮO><Պs[vJoaI=͜j[L>g+Z|ic GqZ]{_nd닚ӧ .]muʩ_b<'5{%rIR.\rϺxe݉l6b샘\ya5j@]?S?myp9~_3p==Lz g\q "|U,,.}O]õyɃZ ֗z(6s\͋{gLբskɮ8.p]Oԓ_4|j/5O >{,OnEobdb6ZTKF.sʁ)WAޔ>wĦY_qVS7ć'vͳZK5f|喣?>óZ[3DcژkeC?Mp☾/ _6-V/OaMzvZA[7V_<^qtOu^h>qF,vOV=Xx+yoՃ)'}|?|~ؚu͵I^'i1~XR6X_ڟbC^H?_khM|w5İimB/WzFywK5L 5Nu7e׸r?~?~/dw Ο|.?6>dQqWq39ȿޯ,IW3_O;<ُ9 .+rCJ<<$@g=CBbx-?]ΞYrs_E֛u=|o6 U7>}[#'o=LՂ!H>.>Ή#bϦ~'VuS>3G?UY8a? zZ:1[C >qW5'!ō[+X9~qţFs[I~8[r>"w5p8᳷Y+Lq.iΞ/,=?,5m/iկ&zç7vg`Ċ? Or3yg~GǙnG dg3?Le}f>+[ =}͡ZG=</e>I>1&5NrZxa>9qK9x`Y.bq}qִx>kξSO^&6풃]$ݽƎx]^͓4I0xq߀'»F_~OÉ[{5~'6^ 8]z̙?ح|X:`˭VG˯1Xc351}r/-cO'lk FpUY7.oW1]ru.kj6ʇZ<8?k3ZKB[3MfĔ~r} xkUkY0vu؝ux,>
y0zmݶ~7 Bxa\LM婟ߘgc{\ՇIg^{ΰqő;Գo˯z5 ~b[:n:8;.XvZ,;WO|c5v}wYog|r֗pqӸܰɧyNnRb39k\]l8kO#3>Q:gi!k=68y^Xv\i'׬yqq|zz9kjMpTNxQ/዗Epok/^Μwu`Hu],\8D)Ftg$q~8IX{axuٸ,/ ǟGcw_ݽ90䩟0`ɞ7Ļqf|_zG| a30t|W[>38;-/;:S߅s<^u_tx$lWϧ1=w/3_ܫ ˃ŝ 9I)Ft2/8? k>q`1 1O՚N֬9r?r\/}~&|ֵgb_iOC&qidbOΉ{ûֻzn49?}gӇx ?u駑S=qˎfŧ~0{oO ͜}w,??l\=&_4l8|k1>OgC 0^`kvc9.N+q:x~ X=4u&c\?d x>4/%¶SY^|{]ps<}yqx.晟nqM̬ װh;s'q:&>tt{~]Oy'/|{}Gvc4K ]^~cv4?챵hiu[max)^΄|6bn,]p/_cO7ޟg7o>Nn9~w?o}̞ō>qu|&|l1?ڱ?#|q.o'5 _wvk=aǑ]mkJpb{LY~.NR^gO\8p[|s\cjœ/1/ϵǮ-y}1͛zc9qMn/`\zjlԛ|b]7{+Nϼju՟8x~z_0 xyt'<ƳvWk-6:WɆ!ݜKps;ˏUr؝cjY)$''hoKg1_ܘcÖS__=j𱉜8f0.=5w6]_M>=g^:O-!?{/[=xW5qƯ|wY;+_MYvXZs|çCށ0wi?3?3a/Oӷ( Q+p\ WxϬ77lǗ[ne{~3p ۇ}Гۇx?Wj{?˯ ;?{;}WIcvu1S׾vyk^}~闖'< O57>)_ >vӺh6k8>}o=\qc+zY ~iMp^7ɋZr@۸Z?{oWU τ E EĀZh`HUHSVU(ZJ^" ""@$_ߵw}NHp>9k>փshC>h;N)6 >E-qoߘ mĂq r [cB8~lτLx!S79}FGLt!B ǖeȉ[&>;|G:o #Nv(FW,ž5]p <~hߝ[^r'ȼq'knw>CG[ yr [cB8~lτLx!S9g8Gܫc.Rq~9ߜy*-9mj _6o;k#q1_ݓy8WJ+ Eͦ?]:2ڐ~:i.-/ ُr6m+W MgL~,-&bx2Ў5g~TgczmdsB=Xad3馛ͫ?͘13MrQ2P2P2P2P2P23#T"g.{On?6^0;_xx}B~h?|k F?X}ӧO?jn O^&9kmc$>e ܗʰ&<>PN\Ž[ FG5 vy)Nʍ=kŸ|YXo|D_؃/e><+ |Ԓ8k~ʳx3tabRuA1FG=k|#6?ȷ`PD[5aX0oj ;FG;Īq|]6яxQZP8ڦO,9fk1.#\|m+K>}sH> ʩ%qak:ۡ~Yb<3VF _9;(ߴ! H S6}[k~>?=Z g~cH#09x}Q[O|3@?7v+6ʼvٴԑMdgW{^}~}o| >RB%%%%%%k><8pn?/}KG:{O~Ï{g[m y߮6mp}ЁM>iۖr >r¿mhذm1_pxa H>>ѿ<hk{x㓗킇 G\1xn~ V?rva*ӎyP/567vs D6Řx_;`?塋bA㼂AZۄ͜ 99wnG[y=L;i;ط\*뿬`@|s]qW9O9<LN>G߽'1WܹV{M)9~{A${_gn[y F&9X+A x.5Ycf0n[Fuׯy#e~?brDzT=u{*boǗWN=,N^YyOa{C:ه]8񔕺dddddd`29s_nM7 ÃМ9sj PqG/L`#3>ĩmC*zyR>!@}!I/93W`C1oL"~¦$N=ml~q1O2ů*ϘsCy,ڀO^qӦe<5<7nw`k[Yۏrlk|}Wui Ѧ ٧iC5lQ/(,iTF_>2|}jiȧFDrbs|WRO>}5EQ/cE OQ_99 r[^և߾&y~!>P;elu K4գMAO r<`XEq,O;ǃ]WWC)1eu <~ѡ#_;|7IcKW>8\ZX ?/9O6[3g h+ig%ϸуE-븵c`6nmB&ȕS PEG_]jKjա~ H?9^$!صGn5Xy20ikG50ȞXG6o]Ye75b%yo>E9~̽Z癫#6y\?!@ڵb,b-xեfVZگ2뙄r71#xIuO3z暶z볬'3 wdxC$ۯ4*W&o^zmY/qʛQwP=Y ;k׸5`PۼZPϲ a11n|0[lY݇Nj3x>DF7KJJJJJ&#w=v߄<"pC9!j|> i=xЃkCNPx1>T)F1ڲAL;"#"m <80aCRŸ\7Fs||&fb, vg F=|<8q@LJqƗrjĐyugw%lCڢsk,cXm3̧X<}cu̫7xpe7^GsM!tSA:k:MuNəyjO0E5GkF\Y>E;/'OuyEo>r4g jk9{O=sќ/w9B\qoW8fAg}5W>jWY?>~Ч|rsoC -ȳ{&?϶;`)Gi& 3Xˣ BϗTEzƍc26}/mC5DrIƆ]_awzJԎ;}qlƨ=mh;kC]jĈ6͑<?rЖ>37zk`=>r XH_` d i?xim }g{1~}=Z^ͨ~FXgQ |YMn̕k@n߼0dΑ/ yan9_E0s_|vyƻﲷ+9|M<|3M_`Ef\rFn_81B8Pv#핷b ʟH9䘚d|[!~vexON,k~6GM koQ$aI˷<6`OeǓ<j6B%%%%%O p6C/J%m=zr`x|a gѳĆ xQhڡַAu|#vc:JQ^{b] 1)FXo-2}O[B |Trhgv(.}lC!P{lxqC,mC5*.}cO =mm!5}V=ɧ6v>2l1lO r2c 6Q;(mӎ |;^;hC!|YѦf;xQh×C-^%VhS6)뿬sҵw)9/#<<7lЧ YABFʴOȽj>!tj27fjʈWi#mQw,`|jcG#ֺz:A͏< ~Ɗr OT0@i~ǔekmy_;3O>Hja0Yݦ//mc`Cf͊F卪YTo…3vas|߅JJJJJtf䁳sj8K)6ux8MjAfAro2H!DZ1&׏Za5xj』/ƇyFF }xاh0QG}VG']e9^eګƬ\3j}!#VD?f[g ؔ]?ذgOcG Vُ6ai;&>6-` Q&xkm 5m9ӧxC`ǻ>M ol5Xda┰<Sf~[W95$MFgXL?qL$Fm=u7MP{ n?^ٖ~nyo]dfSbvsGoj`a׿u}sݝvکsܹs"A|-B+|noY2P2P2P2P2g{"gv~IY,>:/V}9}!E7VȈAuKY}Pg=jSCwGN ĭ205LX/A/7Ӗ&ː#ϼ QcQ<><ǃ,ۥ7ǜzb'cև5vO_ !g|ٞ8R~}"S-lCm+G 6fbዱaӹLA>d.QqW6l##v}v[׼V`}Oy110؀I\ |Ǿcrc.ː#[m0Ȱ'Z zFB>l|}o9ZN'<Ǭk 6~ /CЇyQK}k62>ZyH`}OXsNa8`&WEAr}0wN/r3Gewh:֋k<͕kgnXs|,\C.|s~!dM5@ltmGX㉟^݉l?/~xm~Ӗc?N7y!{Px,-{LM'[3f7uؔ8Yƿ+nٶS%%%%%O {3n_|89;JV ~/E`hg`|`@F;ƀOt/xR9xi:Xd |s, =H+890|yMBFcmp GMlK}ji^= ,2!ڡC:Xlb [+mz6VqjuĦF65cs* ]mGO8 |=I`5l>lKy8Bga'0ziv%B ;:`iS|ja#I{h/^/<9~sܹü8k,O+syļa0o=q`)!j <'x o޳? >{26 ddddd`]ʀD1{&rF<ɛ}hsP}RS   ~r}xڣomb> W!'@8 }|Qh3~ǯ}Ơ/mGV}dm@|Sט#"!daLM,E=[6XP?G]Ʈ(@GCFr<ϾCDjրXpXa1jD }ګccGELُɬtϜq+s!󒯏6þyg?62lC[ 5(AO-}px >rb >`۶ "/?А<'dVOі>mU뇜 ߹MkmCvY;!~md\)m1 kGO-u>} 8HvU_Y91|珺m[.gQ759|>e3/G(?9gY+ugh6XJ̫$8d͡ml/y|(?u.zɰVJB&1|"qm9~2&ͳOʆM Ń<ϟI]]|.{N@@@@ښaȳۗ8lX=xg:<__Ǵi0Y9k>7쩇\¯}x>xq{GG0}G>!ͅ;3b%dC]jcmOƅGcBB]?yL}l Q1rN0q\y~"vic}liS#c~`/ǃMdXjp9<2C`g=bAĬ-xrtO{?ɵMjǦ/l:SO\tu9>?8O_oA>cf<.pHd?c%/뿻~ zy F^;^'de7{"?UAy"q.Gў/[b@v zƃ u8}S#GOP xc_k"ڄGo-)//98A}ڙ}d0x!'EFQƮ>Xӆ X--dس6600gտl9x<Ŷ@'Xl} 2Ɓ-Xc5.rcm 61PSi}x{ö6̚1f>I} hb.17h`66 d75r6^Ye;G/s9\014䓂̼}Yon_^<_=8 k-t$[X.u\}5lm|£hr_ÄkŸiM uK&;zmr˼m9v,kB%|<\?Y?>gYn̷ߏx8ewlxsXs಩Ӂjp?&x7.ogqE[f=-vx3cg/=(ԗ۾ovuw>Kd` 4lzq#2j >#> F~WX^D&fms݌QxA d}\pCvg<|2x$_;KmlofK}ā/hSf;>C7}A`!t67.e@Ş`E_:i->a֥MbW15 s>?r|m8~z8'c2w܋ sq\!3Vjxڡ/]xЅkGҮ}OH-{.5`+ m GcuWYAÏç\}jygmHL56Rwv>۳= 1kM=/kV[ NA~MAPsP ~~O܂ jȁXg̍K/| 6+>uJ;7'ݺQLߨ{䕺d` 4Tƀ6][O 32?|CGsC㣧o~ٮ>bU%Sg/ӦpS_Çq0su6N{}PMK.1`u=qGytM;#Atx/,?`է~&&6ki G tk }kí1aMdG yȹ82V[30^3TA.ёg5.0v/q‡v3~؃_h##^IӧO~gѿ6c{ud|>~_?sy:dn_ֿ 5s6d=߽ >mj =})F&y Ҏg aȍ-u=k\?jZr^WAihۏ&@쵱i˴ӏ~Nta7YY?<̷mmm|9Ƅ9otčöL̠CBכAUk_\ꮸ8zǾ9qA?b?ЍjpJɜ[?7\qm{om^K:'}.eїYCc冽U񾣿 ,_qO-0 /!_>g_] -y@2|d[C(&.L@IDAT6M6M*dN72OzJ>qZCb. 0">2F9|O;2~|y|3^x6mcXicDZѧh"7o|-lP;N;mGB3e=sὖk0{9!?m"e1,[3N/bPa >hKȕ (s8C:Џz]ჁO<>%4|!7ml7~3x y ѧ0.lHy.Dm ؒ_;}+.2lqcGs|a #ѦCڦkgn_ֿ{sb~=#(3ŀT~J5>)Ċ-:d[ߚq҇{/F)^KZ"#ȥxp=;W5mmз- 6$g[O}ca\9'hV3CMNKg_ [6D_ȋ׋|Q[lk<A6Odm}&=xܨi1Q{ 嶁^oyPF?piتLgqío,̘'n#m:J+[o{"[lG7no6qqnu̚}<'q 㗋?1M uV̡g?r$!x]|d,-]dbvk5|thc=<ǞD]em|Sc6:!?Ax3{m_S$ Ǹ5}0~y5/'1XW[N_2&䴕ц9vǍMcD1S#㴶{=чx䃣Xȑ>;&0%N9xp65ېmx8a\l[9.c>mD.Cbe| _iSS ?|ANqԌ]=ٟ3t}'.E"/럹P'n]wԮz)9y9Jq Q36:G}H;r?Bs\<ھKWrM>\WK)m2L?Ch,LsXaq{|k;/0)Yl(nԏ~2ym̷˫8h8, x<^`hxzSecx著bzTguBe y;\gl'_F쟾T=CoajcKnqq}qe8u/*[?J7\~-ߊC8[7qn$C0:[qquKhZC6|,o84xrӑļ|C^o?O3.LZzOo}~wZ\|?$I_v$.9a8^\ooگ!jM!u?C꒸bߏ{q׫BΧ^Ui?w~?ݧ3ZҝD8!}pD @%`SσxeAKGX>@PwFC8c /h!1 ?u۱W@{6}|SC6&dأK_7!XcK{~A׹92jAC?6䱢G8OmR3O==nh7~x-#za#>j~bD`Q}lSSF`sZ3sӇI{cIr۱OƉω?Sܠ_Ye7kuIM)>Sٟ݃Wcߜ?-|WrG67< y׃>mxg2۴N^[d^CmRsOvoq {^Cj٬ݰ$4Gv[>N҇Sڲ~<`3vt2¶~sB@M0Ɠc|<=emvhǕpqqA>QK'^5v}Nw:x{cgG/^ݪC?c1B$x;3ߜ;%7 {|~vԧ?kGÅ8޴OGxI1{n̍+NtDǛQkaxk^ X_?9g^u!FU>X=Sf ?G^ܨXh 77WNN'~~o8oO &}]*K9KOlH]W=x?Q+>tF;Opw'a':|Sw1ǹuq|R)f`2qǥ/;8}!m_jτ '|ri-?[lI|#Eu'YgU|{mbxxh Xb ՀxGϼ`6,K)im;J/~Ѕ̡m|Wz[z ̘3OB7ć}rZ[bosF=R]lS6֮wЖq'vs>v$|jq9mOmV7O}%NqcM y36X>8 |cCj@<1mx;Šg!Ce܁u^0Ӗ:1wu]?/|缶r_:,9IMkǚh_ sƽy¾0gyz8]̷r`0OkÜ!Q u9摚_sE߼G#*뿙_'3yr+r뜤~W%zl E? tn paQP 67Ö:((W&yq^qҟ4_<'|;+/9MU}n|^$M>boy\>:]}K{o[/tl⶟^T}Ҝw_y[rۅ&^P }\i`.u+բ@qE{{g\%?4fvTQUW18ܳm)n\c.GUlx_Ojӎ[ח~ƃ6>*>K~[o7pΎ9I_۹~~susB_]'>vEqL`w>MX~v,߼[v?V~2"7Fׅ5י9_qLn_v+?7:;nEgE,~kct,xOǾ9o5BïojOssgs9/aV/Hx\~c== hyc-L@xW`w}mbw O Qxĉ_Ц}ၣFO+12_k>2֟}) 8i#Gփ=bm V'm me^:1EzQh'}la>m DFN\i֟2m"G@mxxcc ƀ }(i[jaÏ? GW|#c`hC-7!p}'Į/mWA wEFT mcѧ*뿙CZ;7*뿬\`_ g/.9_o½}¾}}7Gdž:ɧ-]ʴvoy"䅜AGơg?:ioG fUiuXVWQc\.0 5_8'u{0ljl,%K# -Zx.fb;s(=x*; 3e{t\9{Ϳ37.8dmc;žOl:|h睶όmgVc,=#hc{q<wPXpݸ o$̄b~{G9qۏϋc>&N97TV=y?&>w-nbfz'9/}-~`Xy;kY=;]}x8CU'mTP٥ ε8y#fV9jk$vjT~1$y=+v1/ڮ65sC#kԝtl]5>^57jx;jԮKSCi=ΪYcU~cyA؎_pfrz06Ge_칦|sq3wU|nX't|aqNrM|灊ƆT|c뭷m&fΜY*(|>!3f̨o5ޘ\G(|s_QS dID{>m􈃂o,A,q@ Xæz??!C,>}L`ѧ87v|ѧ6'd&&/5r 13k҇1x3 vГ0cƎ OcЯczCA?xrjSV䃚x$v>C-;9v_ \ Gߘ#}d9;~.cu`bC|MG}SzSXͣ9юVW_xkK<yBn|dM))y3תY+[בuX9yP|(s9LrwQr9&+,z}PaFy?v|x dr/$`:L]Elr[8lgGy?x2ǜ1=6<8()7x5VIk1䑘٦oxgh;ߎ,~O;i f_տ5>Mw6}dI<:{Qe.y$ge1 Jjog~%~uտh({G.|qj͝wo[=↧r-et|<^}iyKӁm\ˮ3fӖU{OuEt+x l!=a}=X4;v؇W<#N٩'ݿU.qj/c= w=mVhL5?7ҝ0 ,M-c F}_,Fߠ:Jϣ4{/}9=kp)x@v/"G%Ņ^X?d׿zkyݩ~K߼࡝>QG_=A}dS~ O0m0ؤD- '>e-5!.r%ǗxÎ>xu.8Rgܴ)㗂/xOxGƍ\m}(~;}Uԡ5 nPa]bwL@~Cq,(s?~L. #kaQ9gͻ80{_ڸ }$U|q0t%f}G>ڰϗ)>!?ȟN ^a| з5!_.KiXA>צ/C72a>/|R=z hm'؇6|Ǎ}Ɗ '6>veB_5:Ȱ e` mXmK/R b1b mx` Ƣjl9V`3ʌ9닾})?2|@^GxƮ}x>]ƀ.%#!SqW<mr@xP"lcCc=a8m:VA>2] _إGXih[@!oe7sW !GiotUG3g5k5XsY?'j{+k29&|lͶjCu_r7L9׾VcI=pF5Ȗu^>yt!zʨm($qc@qƍܠIl!fO٠_U~۫j7?:HO믌M1'x'!.cגK2V7ubo{cqߑ6]c[6^౜16/@.88vkiox?Gxj/;=-)淽'Wsdh 8"cwfv7v`4Z|~gi^L?xLX+bk+bmq8?YWU_hTCfv/IѿD7?Y_4s?u5fm:S.cssߴٿqѳse[kҭ~wojB(nb]zt̙jݜ^% ^9y _ Q_<йw>}у-o;?CK9tX_7n598.ͣC|R~o8cm<6gܟ+q@2&Qb vЃoц|!p%pJ}yPO`!:Yvc[KAig{!r ۸M6G`W}l"o%؁n`h|q3v,o}8-sH!c#pl2vm 8D2~Ye3o'#qsGy2:w~\-_iU`o*r5fgM/?]s}w=o^ .x2 ˔fd4[k}_*^艂g=2_ {Ylfym^*QA1YYPMK[w]X#,ŏ<wz`h#g}W^??c--m><Yi%:txF6wo,aA.sǭc#)W[ZŻ^=b$7->V͊G7KN&g߼R>l{O<9V{Onz?^"yAC8S0ײg)n.?4 {ͨ^>"wm\]o^56hsb_+cY=s=7[νpTð׼Mz~O5F+wq9Ӟ#uNL4{u;mfu-Y_xܷya\m]Ϯҿ׿s~د>iŢWȅ\utw"k Pž/בc["x?q!jlb]jҎK8g<}} _qmdFUf >9V_׳f .f<3~^CjPa6z~c91A/-tvו\/|]X,7 j }Lj>vС <|8hCcy35y؄&?17~E,_x0dr5.c~u-y5"з8Ɖc1z=Cv8iLOzfe7{|ܧ\׬K:2ךxϩusK><#nѽUGi\o۫tqޛXWmύ+.KzE\t 7u7}qvv4vdzgLnؗ8 dOs8_W85scvY[ sQǁ6i^O)}N5QjxNs.xWq߼=]?]l{NZv'Ө^c SC<=<^qЃ}GǑq^|ý,:A' şWı n>k`ѷ/niS.[]+{zG9'+sּ,WorծS͟{s9?#<"]be?>LLb< 1a͜18zd.yaqa% ?߸ڍy 9p>?m ,=exo 6!vx !>>+> qvx8yC|#>i+Ӟb /Ċ5:]^:EkQ׷ϱ18Lh >6ִ öy>} m3,]l7_ :S4Fe!^Ş t >&nj6:6k?>|mG <|-91cFB,}؄رan:ז9@bчA sa.mh‡xjǧOC:Rkts\SsN B.76) =ta+s9.8s>xx؃\e\p;G_e7,?A)xl}q?לXxKZ<LŮ-[a&ocCO/xc+:vCqu/?unz3>_ik.ϭqh=_'Vsoq_SFڙ-Щ;'d("ޕNJ>>ړ&=nP{M7gٱG?k9p.~gc7[IF?D\Ίsc[ǵ~K﹵6#N֩#N!67{8˪5 ڠ>PAQ0&#B< (E$""| ( >'" By9wCݺU]U]լݟ{״g}=97b6CXtk"pPٳ*$Wv詗ɖ xe+~L>}O?^u~vo~l?VoI.룣/7?d$|O3lUm.*rBO[[Pb+}wpZ =ߊtLђQ :I9e\I\ T ?z 5O_z3'$tMzdGuO jOA#It'\쩝:}燍d3@7GNف6S]ԱdԮ22𓣋D.C.>Al#Re|o酎Ct=_>Ў<2CӸ!~):HWm׌##MID*9tx)?u%C/v9hܣ:vСz>)G/ $}4 }%3tاU/rsN3}_c> a5Fk#<⣮Hkz)CMNF: z,4%c}$W>BG#б./+:4SN~):H.:(CG4GNi''/a&G >`ȸ <6`8? Z˘sCKp?ZC ExG9Dj@Ho-Tfvkm&tJwU_ Ad&OUV^/M, , th,$IHփMeye/ΞdW;v! Yo\n>`=w˭oKk+EiT Y_/{k=W.ւ1ogY&_Pw~Csi#ϵ-|0ӳp{at/~ۣ]G-~A}0*+;VݫC+oǿp-+{am\K:=㏥ %^Z 8gˮ?׃~ei;[\PU[ޞMְ]w?ҎO螇.n[>6c>Hv<7:1_z*1(wP{ w.؟Qǽy Օʊ>26V̷[T\oŃ+o]'+w {[:]] [a?Oqǟkvž)X~ڊ5XGk.uúZ E]ZwL׻rE8D~NI^{s>2cK.e:z&cd?xx 4xvHYK.yAɱlCmj^rK/oщ T]ȱOBROSIR=-G6A/c9@x@WtPO>i ^I/EÞNlot@dK>QWeCmG.&xR;7n@N՞9+4lL>@@?C>G.A_Ga,i?$%9# GՕ #,Iro%C>yp3r!OmH9)BҚǼ` bhNAS=-Ǻ~c]\ q?kケ i\5x\OCfpzQ'>#C>ݵ۲hOU/cL*'Yq2[]NSI ̔re/4Ӻhi{e_Wx\mu袑W ʕ2)-[u 7|EEN`Ž9G>[tq׾-dlV3nLǫ^l,ᶮ6ɞ}Y[~Y.nmm`mW@ڻY{+m| {zcڮXȖ-k\ںlqgWi m,4Y}t,\L=l?G_õn{ijj:o.Yh2{Ow,_b>ܟ YOo;nwzotr[mٶ[#׳ `x4YV8dz:m j7ߺ̶w<s?jDc  CύOOe~4,?/?"6 w&]lcLc4(=xz2yZ}7eAeU:tR%=^.~WV[eF9M>h ˥_KƞUw 9V%*Gu)Ul^+OXPHZ\(h"b"bh=$f:M- v{U+ldž:s-"pmT\k9e7up(lN,C`FkZh y#ֻi.wJpMj[Zwmͭhٶ~sooxdoN*m֫Mpr=hY]P [߀Ur=Cem๬_>ҿzf[?%}'H-qNMy8E[h躏>z7p;}3roUQ#|HMT1;S^AҖGG|#9Oq6fwkp]V ОYt^\4 \pvo+̿7޻Жt=xvGJVe<~^WW&ȶ?6;}>eΕLTJ"[%s(OzIv~s-??:8~T m\#Gν =:Owd4Ҿ~/Gz#t%=Coooo{ tSCtA'!Ae It'_''a:I6eywaC!QV> {$tɎ]覝2 ea?|kϲ!\iC/x d 6Gc ]C8I_ ^dhN>#K`\zhC>Ѝ𢏄]Jp \$O]e|s~:ip'z+ǶlA.h]Fe5N3#d?8DA?铟إ$Dr(Mx S1s\q?9+޳ư I*#%$Kxk]覝2 eQ\+ƃc2I1D%9XrYg^i|h}4kC~Sy}g~&.#A~ -~^1>*|we h$Wg{|`O77M͎mƖ[tx{Ƴ_˧z0Ywpx8gFe4f~.j'nSW~8 چfkmŨcgˬ{ݦ̍?vym2Ѓ5~(O03K_ǓZg]ɕ\o:`{{{r e>{Pi?1nzӗW,%o u5ytj/zCb*CxפY'%')c#m~Aur_?V.I'6Ik* =>$xuB~>_:#'~H=Koi|.^l^4&S>^аWx8HE[BC/ m󐎲c"X:IA#t?Kz~Ү$u|M죃b~ 2:N9Sd RKOچ=qSH 6I䴩&Q'G$~ю%#%N?>QP%OD; G;SdR&Q]ePC$ im`|055oq0X%i ?XikkBoŽm?Ơk\!S7\'sHÔcuzq5ktgݛ qs 9eK?Bj+iRzr3Rot\K-й`؛zz$|2~ Syy(_&Jq}23?!^ULuOFx6j6t1ꩦ!t%lVU27zOnF@NF}1&ҖЙkpy0T\v/{`|o}cvu_:]߳iiYɶt_/%6aSYq΋oky]E;W}uM㬵͑ʃ0z0Cxy<$i~ul?a|6?Ot 4JJFat!2{ءȓ<ï,2mJINt|!I9`C? %dd{d>ٖ.IAv+O腇Oԅ'9ؗd!p>Е'6utx#O,ohS+rٕ_,&lOYa"m$.{HDx+ hS;>QF967պG/ ?R,ÿF?A8QGC 4 @%5&m٥C@V㒲䐁2mJ" s2}\_!#>?:|(lba?Zs=|:kP #K1/6?eGuF|bCXΑe|cq>$0#-9>bj`xr4$C]c]x9ex}i`ȼfq?qT5.PMer(ParjlRϼ~ wI Ul|eE]PpeaUziC~'oLGa>d/TWæ|OF9'?G&/Xf/^V}HGL`ݖ7mlȺ+m3awbw;{mnm쥯_<:ɺg5պ}'}G XŶjϕ- NTĹG~5fz~F_:).^l@'za|*Ȑ|KvtI}]_U_(JABn:2F%\r@_xЫR^ ^w$'[t]zHn飌~(=T_68GH|.)A@ueM]'IaKJv7"?~:4˦tDk?|Z_nuBfQVEUV{M[~ _X C`_iN@*^vVi0'恋?ě{Zlk#66<`zTNVճ@mm%ՖGUśzfjAsmA|@k< ?֕tDu?/ A&rix @3eu-}D^ե o7Еꦬ~!GYtK?d^hCSup mWvhvlx DN% ? ^mA{Ȣ>h>*.lR+h.|99Յ#6ҟA~Cߴ)}r$'C ]`L;:H]цo8N ;a~<t.t> NF~KNNY ԑ>phSS?hӼW~9| څH+>6l@7J7K}Nt,АMօ+:dya28;97S>gO$<??cq1?qJZ+7ZK+tbzIuY:Աľrqƈƅ%k6cvƧ 9mj.Юk+uƼʴCc#;Xr;?<'?(J⛬'x:&Kfcj$*?I] V-Z^RQO^Ӽ?E .N\PZEW+Wf$ ~'RY^}6.~s~V6" khg5?#gttwVh5DmK&qz?-~^xH`wԃ(CrK:FF6r]暮C'!/?Ju(WxȕU7H9 H_߈.EI~Otr-犄N^xH<yIjC!K? ^%眤~AC|$d}C ؁FH:v[]2A[ؕ=OrvC,яa!'yA{wtcS9?/Ih*s}0I:GDMꢡ؁_:q "D_Ii$ mXK!e[Sl~2UÓUkE#,OGh贱ʓO!}+83YuBύu.O?tvݘ8!GBtFʼ^xmXNYpA ɍ氯!n^Gu3N#,}n{~=GMv^aߕ\85w3dA eooo+~mɮMM|zm{,\IȐƏ]%~P:t C]ce~r%՟zL?VBF?d쩏ڐ_'~iPgI ߠGe'_N~]2?rJerpBt@' 6٥J;J$ S&{66h؇.pC\ Yt 9$/_E'W ?vlO:<>b\05v4N4VKChLB8!]1+cDc1u>-5c̑Nu]$J5fi}D29k-: Tvզ1N]_/)cvэ!/i_A'4U~JzbK 4)k$:u{W1?Ƈcu:kMchAcq&W_} |t* mRW7mU-0-_e]ʱڟ.S3~igR*S]<#re[uR=,X^K-骴SYO-?&..L܇z(|{oKqr @ aᇳ\-ZTG란nzءԱÏxCձI?0=C<=NZϗ.]G;G' >uOMT'^.uӞLN0MI6ddOuxCP!?ȱIo:fċ'9D,[ȣGC wʢON>%Iurɒ뀮2[>42IS/|,9vJ1Kv.7hҋuj|lïmV;uFNzExR:o&Yth?t>SOs\uG\POmQIC?r1Q??15R-9!FuxYgS@D~rxkxG'uي9`ycq_!iMk`mIZR*~]s5:lOg%*J<*WN?mT:mB7}oG;6كF[Q>}s:2_ :>U#-r䤟q%Ing MgCE*9#yvqG;mٲeOfͪCkq3ȁ@ Dz{o{_luwwg_e*T8MqOZb_y @ @ @ 9 Aͦoo6}iK@lJZ#rܣ4JE^=M\EK˕2;aRT_ׯ?#4<cwLd @ @`r4EҥK2g*IQ@ @ @ @&^?^9m{1jW\eԞtՕ#OjdDKS,2DxRi_e5(kwKȿZITnGu{@ s aMOOq,YĺoF ._|nu4 @ @ @ @P2x%:ye\|lĿ܏xIBdxѷxGձlك[ʟ@ ӳn1 @ @ }dx@ 0PXJ#؟'h?&Ûژ O^<@ @ @ @ @ @ ,li4зe{5M iR7Lv`̫΅@ @ @ @ @ @ l(HW4k^<~:Q52X@ @ @ @ @ @ x H e1FtnFtz5ZKh-%xWR @ @ @ @ @ [L7Q{Q>V\tT m"Q @ @ @ y-#FG_[;P Lz(77{o:;)o01D0@ @ leDo+;ѝ@ @ @ @ :(dAk4R7f-3v}@G:A@<@ @ ؚt6/@ @ @ @ qeMe΃ MYpd_[F%#AQ[pc1A?y @ lDo8щ@ @ @ @ .3gsoh>^FwF)X-ب}hFK @ '"7V@ @ @ f񍿙@>t@ !:,@ @ @ @ Bw}|d4yqxxGc|V@ @ 7Doޜp4@ @ @ ^l==Y Zf3'yΎá!c[mŋ~+G+j@ @ 0_|9Sg @ @ @ gSuwNMlKRn+!4\D;`-At7r[ @ @ @ @ @ @ V6mZPorV̭9 q憇ha` ۂ:Q/N1[x@ @ ~<@ @ @ @ yk}wʱ.YR3bB+oZZr>ͧ6ϛ~&s{1R @ ͋N@ @ @ @ 0 ǎ>ٷq#;53,x`AG` o6( xno7 ; r=h @ @`n q‹=O{Cv烏uw %/[izŮCmӜw}w{~gRKEkV؞/y/_ b@`"0ܳ1{uq0ev/)=5a=@ @`+DG`_#㕝y/>^ɫ;ٵs"Chkg``|;oI9@ \F s<|{䶛No|wޥkƚWI:w]g7ּ>#ݖ^9Rbtߥg&K߳B@{WQ618>FIyq`Nm)lyuKP@ _a~6h-7ǫ< ԫsh e.[# #U諧^vCv`A?|--pvHg=@ @ زDoևK?~{~ 0O}nŒZ}y}܅j_8֨;C&zAy"0l=QIQvqR^zނW<؍=t{VM{@>T@ -@, &rt'?vM&WiG!&_}ttI;_Xƅk欯o7c:hK]֬m1gO%a30o6`|QA'o~k+<~G9@ E"7` G͔] F#\:SϠG$>,uƙAC,#0EYo qv#aOT @ bgٷ uvvdŋgAM9 ؍kl Ҏ?r^~}Y@:^NQ1oe4om^4^jkjohpFzo}Vl~},omJ9Z`Evf?l ;|9<8h#1TP1>a9"73 趋U?طCͯ:lݺ C+6qg/?m{7mɚVUEYiܮ[Mn`7-vwGmuT B Lv뵷_*[svʮW9M]˟sp.<z%eJ^ ~eQ @ <;<2N;}3l@v;FUy>#љr7V z4@ [XϠZ+ڤx|A\Q}%f[r"0# G--j;]2Oxʾz扯f 0EQeZ1C\*!z @`_lgz[diag_)p345h.;e~ `_o0~t>XB}XLV}7VCՖv8`(;{@̓{~7.҂dHA2@`n 0]㳳r><6~2tkxl1&x [3+0.e^vuV9v~0p5+7mxӮUA>v,~q=;󖔣PB//!@WW2+F5wmTҡj3jPyp4h>4T@ 0?k*cN~|ߏovVcm3~uY)<鷟/- lig[Ynăz}S-ٮU "zl4[ka9npw8n(MW|w7.!h@>O=wƫ^g?(Waw+9lUtyU)=vv qJ쌛o=>r5^yvQ7ۉ.WG4hV?kʥH {Gh_9q0c~( f> 5@`257Z=nko[xCj);ZHO}+`Ho7=|…=u}Z<~t{ ~,#uf盧`^{Dmr L3K쬝fLgBh_|f@ "@pWz,Znډuէ]v9gӯUDs1-m6j m8ko+, 5Žk󝒎FPXGџQ5H(T8m>jӯO9h: {N`:lmGYCϬo?7g/z*wzZim,߭4gO~Wicw!g9w!iyvoAxg{َQ7v[_ov3ao+KO5 ;;sq-_\5yׯu~[7,lctS=ֵؓ̆ОR[kSZ:բUsMDǞ`zemp2y؊mwǭ/z>{Ks6˗'nyӣldqq{)V/tڊ]w?6}#7;fzݛq?8<Jgm Ƭge*byjӐj^l̿2lOU^mWV; 4@ ^fYoY /Zi/v̱ﴫnRV N/V|p/v⩿퟊>ڲEyHz 3~tŦV[Ե Ch̎|m1%.Xr*%0A^yKsڂ.W>xѾ`z6Lr::,2bЙ2zl ctaG:S=GٺŹsˍM恬7:0)L"Ӄ{*SKrzϥQ_eF{\kKY_|?3#n-_ ]u3<=cǿ^}q;vGu־yyUb_y_: ov>m׮hZ{yͧ][g^Q>d}qAzXO]etto:\{ؚs.>>n _m@{ӖSӼ}%]i_cnwͫwl]Nun y= r]=8opl{~*Q?.= 2s}ۛV70.=d6;z\9y?N:*9c{^Vy~}jN>thc>QR[FmNsj'Ҏ;oCk-1~лչo=?`[{}q־swWJ +ڪ]Z^akoqmם9 _gq}qFsW@ |Ǥ(#=}4<?l߿*v]_euagُ۶Rf[+_ӯwfV#$@IDAT>@G|>4y\v+MQAtu.?,C*A.P,r2V{me$wɿfa,VCITgbǘ/Jc`Zf\c5|L”` Dvҕ,7v%I^3#߂fғ&cJg*.1P}:ev)Tkﴥֻi-k-;Wu&OpKx/5lqiyϮD~/jstQG7 o#8@Hk]NeLǬ;֠`{!KvJZ#z+Wur#uxCrhT [sBþÿ֮=qU疮v՟w|9vgr{KSl]GU;%,߭y9kO4CmK]vjt+kQ9S˟k[t WDgo]rC^}BJYQY@J@>fS>n'\\ V^~̗վz⫧Uw^p;+o{{~ʴ}p5eԉ*k9ž}Qc姯7nYvGm5G؏<^1stgZzi|i9gϣK}]Խgvۥb9zhǜs];?_O?g78~t}up1VgV 4qCPzmOEs*gS>8-y+j "@o,W"ANNݷl63K#]}Cz`Mn…Š\*ǦM^vf v,6}vwn\sg3j˗+gTZ5ulیj13 zv>nϏ*/B3?nYe}7ƶ%nR . 53<kbOӋogK~9;2^׮ҫb?Թe Y;2~<dT#)Ww /R.Jv= FߕJhwuwn|a^ݥzֲו;<] :B@jY|Шm_Sy}sel6*uDz`,ryTw-)z,ǠΨc,~ ޡ~Z؅L`wI8#5_P 곾Cd{b㹦h:.WvGz0Fջ(-b? ; [6,k:ĩo[ZgߒE]U0Oō)A>^Y6J*W.>sW|.9תm*+_ll5׿iXM0"b/WN}vmՔF;a0bC5'ڛ5؇#+33O]v H4a_Sv[nrv3'؛T E-ٶU%yYMvzԲZNᖋ`k.}D`gVnf\Y]SBPX 8}Ÿwmu֬=vm@jko`w\ŋ*枟vhǮ-.ܽ 웿Jqgp ?W=h;Ϸdžf?<{$|߾J=W65ǞmYm}Ob:,7~~/nķԏڟnK쏟%C=jc~{OO^h7j8+M8h7MV,.\'}}q[AB !Ƴ <8?0倾ݧtxRZS~(;^5x 92mj[~Fz=wʽ`m_YG,mvhZ]s,ʿ'C#Ajth6dy9FIX ky}7#,n)h+EK;'c͏>$ 8''0k%MOSľ;MmŎS7=VNt#Lig{ūWm_~_'i{nv۹?˝" ,M> fq+iJFW:y]<ՆĩFt펟|{^Z;JskW?`_O_hg_縯YY$͕B}7ځSzLfؚF}%C fOv_[sccݸ~xxFj5{hp¿֚0wcrf\o=75^|‡' mǶ$3'7%;Q޺xÊNJ;K^4l&vp5οz?Ǿf>74Ӷfgݛq00Csjiˌ3ܝ?eHB0@`HmRHWrP( 6ƍ8֭[-3^vQG:'JI_3}#܌/`Rᤣlg4[ξŗ-`Zˍg-HXx@.xrTH,$Ӈچ[myj}`*s?n*۳-ʆ_هP쑟xv|m"X,Ww'S(r7dyչVxUvo|xL%#5P|]w5bk/[6#;fiݛqeG6[Z%5>OԹ2pZ]@ F#}f=sW'm4gvUECT6]܈yy_*>uۚi4Q|S}"kW+x$vB֕5ج~S{6%;}z{h߻vo?5+>g?l)G2=eh]g{ʾ=w;<跠^E}=֝ xUn߾z;ngxt ٹ^ _+YQ}2gc\u+(A/*ۚZ5]vtx8}+=D ˶եS]21f]e]}ϱx$X>+@6;pAbσRգc#;d7֒+~oVInaOҼLK,'Гf09NSvy{FT@6;`7p8N=֏LUvi^ {v]wYa8j{;jw+m|.#^ $mYVwv9v%إj ?}ٮo8J7O_Z;񐝒Xv{?E_lC/L)^axaA5G keoZLgOo^R y_{j]صC=N(>޾tdw꺄/"tÿrz]H'}~զ'zUM5-bU3>mo~}B;咷^^AW=nzd;dղgVmcۼ wWUmd6;󟰃NLoFضSi'cuSk*zںxZkvp5V }N?+풟_`ٷ| ZxW;ںWZc ovaI_*]~[8XN0v#V\3RX o@ YE 5h~GU>y 7 ۮr7 m~Ͽ~}<h Ѕy/]g> lӐՙa57]3ϣIɃ˺r|4h ?}=dq7S>|~=YՅZ]Cyxf(ْ_ގY]K'_^ʿ呤{߳CK|e{^|oҒ5|yg]x-m Tv"۷pw;_mvY;ebrk_>.{yg)Ϫ! 1v\sBې)g݋ cEd{G%ꁾb0g'쐯b,S g{Fw^?䁿%jgyE&;kiט..Q_,<7< {5mZeM5#k=kmriðds̃L}q7[ mg2:ݷے}}"' 0[͈2lM%_U)Ϗl?.aFJx_o^om?G[sF>#k&4Ow۟E50 P^<Bhԥr}_p*W+}^l?侻+}eXU'{ldk9gjELݑ DA@Y?VpSSPCZZe߿$\.L_Yy<ͲOu@WոW˖-~ U7Tl~pu~JR뢏r+h=Nb%I@ I$h. <(NK=yZE ^Ѧurp";7W6{XE(0RA\4|G*kU]qO>o!)mZ?%!!Q.=Qӳ[)׹Q) `ԊKd 6פ!G\#}8eMF4LWyjue[PeEj "QFO uFUJ ޷qHKM\*S|KRV~^ Ңᳫ+[F<}PUq207W wCp$`l8b& Ă@٘I@:AwZFRbkEDgSƦcB_̟XuWb{1< )_LwۏXB'Z:0tJpM4NgǓl5!}6((mDe5P">%?c֩TehjϲK_j9'&ඟTR#/6XB Ȍ@4kVI+BgGδT*-$gnYW]C5#\:cu (sgjA} T߲U[9[)O"ދ>NG/SUH9TOm]x"K^!k8eE[ VBR/_ma"XwF`J!FF[y@"bk.@dZ*U n@;Fq#6Fp|)$wQ jr2ZuYrOTJeV#+gIj,d BPgGJh"E\e@[XWxE&iH ™-mf0OoYY8HM8bM[DmDvɽ/E8sS-ybGRq=Pu.Aw'vn݉k77V"wGY.]kE8m^1)V]lsy'[SFAȾj,L2Aa/* fQҾEvKIbXMК:Ut]}՗/gJ6o ovo8M_uI?]O^ݤَqhBnْ67퇰{Y5׫Bd2t}BsJ9a/򆹎zT^T7`k{:}P tv4:bqî$@$@&P^\zCi/ >aq'\&ѹ< M8?3"g&T8j{+^6rȷ#oqߏb~#ҸFG 2/Y0nHmO'cjv?W͸ sl ~|/Fݾ/=F: Y4m3Sq >#;<(ky\ܵK dz]S*8ƥ=F"]c߱=8t(_F̈k=kViWv)qp>}rJ5\1 ^5nrszGwxA9XU7{j6|_7KIHꂀ򢝗Z/:9ת\5Vvf/׀"W9\RѩcxH{d?B`Gq`Ѥ5CJJg}-U}(6T9@suDe2޲Rpe.8X͍?ي[xR(Ž@-(@t+JD5N'+AygEx0vR*8|b'uZd'Ŭ1'χSҮD.H`t}h+vAD b\aAI@VXjL넝/ćCCxZxz>Ya^f @%!"WPd쪼B(xUKJł0@mga'0pgQe$^YjUkKȵ:Q EXTX>jI"^9%U׎\ywvWt\ 0.p~?̟U4SoI 9 zWG?\3x9F?KyKsQ5Y/r|?ȩ&yq]hoߩ{s2pN+}(dҍ Ȝ3:سqN}dee Syu~/njڱ#P,g¸ 1b@iȮXa@ohpX#nRw[yaK nΉJ|t8r}wY/\pͫ,)6 u ֐yŚ0' -, }`lgp{?QP X %(@敇㦇̒yiGr{.s52Bjo1خQh]D:2uqbclAvᘌۢчH̻rAAbM8 nEqJɹ7,XXT8wb_y"UX7HtQڵ"*ׄ~QSBW 2XUZURB*>|ue8%MS}T5V?%KT]{icљWY.(G'nA[SJZͱ4OSe(5VJV DhZyY+{tWCnp(4q3B_ZsW]9!iڽf΍(Uy(qY}?/ PRQ 1nuhiԸ _qitLS?\3CYŢgtG)G%*U/;kozA&;7ȉ7IFiWk^H'9=k//M濎_sԋ'&2P, ~y>5BOǩеÔT %SmbsF}V-llD$@M[f!8L=4=^ rᑇ19R"I쫜aYKCxpJgewӼcx{WSEoˆ Jd_5ٳMjފa,]nIxibScʀ0X&424݈ymbcn]S.ӄ"$Q]TZ-֬y*20'k{Rݻ?aB $VWxd||0$u՞{jv/гDklWӸƠ_ܱZ8x^K=ԑx7T48XZ;0+ƈ(ZkI-ΑO-¬*VPڧ`S$@$м 8e*ŷr_.rO:w_Xt~TTb߉'{)kp_sևo`tkWoiJO_RqhiJݨ}SXsZ1id7> }>>>xu z5D~ux|<"Z~2߆^.0H˵>Ľsy~yxDq y+pkD-{nso ~ql仿R]0WwR"HU?_P!.WdDT@04ElsE {踼=(0Wkۨ.tNAX ~+{'x/CZ>K˙u R}OY3DZ&!5YSi?f)ԼLJ}`@e$@$x (/X_<^SnV*B:mUV3#uVWB?X4))xxe*Ҧ6\Zw6;z`h(nd Df[Ϻ9[E=w' 9IewOLs\%[+T~5|钽Ē|.,[İQO"7\mlQ< TjK$I $϶X@C}/=p 5~hoq;{`X X|>t7f"u.7O]cv5lS!MvALOG٤ChcW= ^XQš;ƪc ._ӏ1? {ԓ χXVG6;/ZW2넀~ON6_՚?р=u 5W}ϪÑmHH'៎**Ι{`W()˾bISޯ8FѯTӧ5K-[]ȰQba:Dq]P ~kJLV{qV¤\רg |,ב|-n^w /=q;2:?/*<ff7}tz6- v߅'W+~Ta[<)4A$ׄa_|eWsIQ3=Ěvm<+/ i'8ӤekRi,eΙ3 ~|M ҶH+KYRo?}k rh:_#f .5|%w:/t $"}raӸlB3_bIW[VUF?U]`8=>Xaޚ朮"j|GxvX#|rH?yݨBm*Z쟜pKSskU- %v-DkӉ=⃃gx7 \K^?Q'{/Aˎ(: @ 7P|!n)uΡ)K|Ч yj˥U*Wu~V <֩?u+C ({jA{؉fڳ#yAx$Tݝ 0PKe߻rLWGYj+>lxUg+{p{Y:}J0;);˧m>?3TTk1Z<5s3b{QUazT\4jX@űMB;o"NmyNcٖ8`@t֗%L6ւ>mnF]{}"`h |U!R}XF\:g-ȴo:olCGŰb}|0Ŀ׽eݿKidpAr}kop}p2n0[N? 1V7{B,ֲyJvD$@$`"Y!›h8 slAp>9&="^|T;e٧ľ6mhqD=g%֩FؗS\WT}9WjJ䋏/֞lU [|a랯y?HHBܧAOgĥ%y%Ԩ:ybv X{HŸ& 3vZ\/ђ=".a֨: \,:X5?Tp / #n >UYo61{.1՚IZ͘|s|11u[JrMx du/__e˞㶼Ɛu]Yu{Q}>rYUk1,1 hs|'V:+Lbjv^Q5ﳪ @(L] Fmd.2 Mu(AOzZ}PŸzzG$D2O#uHHHHP+G#c@+q}6dvPE7muŒZml%c9|p*3%BΖ5\-sʱ݇qcm|MLP8G#cB!ZwqY"P\(r-m tݵE#_O7t~ԧ%uDU^DZVuqPt~z>vQ|>du_ Vy3jT4/LJV5r2G?({/A+VUgF$@$@PZBWn-]YG;tכW\ZZO"Iڡ,SRR4˾֭[kyJS_bb"TKMMErrrC< Ofupe * ~UEe(^̶!{{]53"6һ( ?9l7ZsLY|%OO.EmoƲ{1v$mjޏ|1yzhem扶*1h3gűF<Okƴn% @Wנs)W<:3Nf@V%'dW+Rc*C͚olL잴?WS.bٛQgW@N3Kl#EfdXuǿag}̙&}dcNF ɾ }|~X9/9|$f8]@-H0j',–ŻO=-<zd%r5W )^|75G5pUHHH`BԐpp.uAr>Sewrm㲯sRWy)w+VŢ.g\mZ0?m9U֛ Ԫ"?qٙ>Y%8v8vX/^99wV08U)l;.5,E>ڸqOC]Cw Ǡ;Cd֮Ӹ]0њZ^X>fݎ/n0#H6O}z9nܟRol-FXSFfH)_b0+gd[fqڛc۷u-F#W.g &9*O\c9׹b|v5W᦯Uk7 85/=7zfϢg$@$@[ǗK]jY Zn0|>/ԡ3tjjecpݡ[HHHͱ2'g8 (*yp*'$sĢ."׊ 7`[Gq] 5>CP-܅e h^z8xɬaN 'Ff둛Q[5?};i pD|D鉩smU;CvtZ̲Z!z Y\u^olк86>ʒ&p(h\Ygc`T>rD-^WIU֩C\+lY|:!?nd&g:[^u|\#Ku񕻪{`V#T1P@IDATdO$@$P]ʺ-%B^S:P^1)p>in:՞| .ZuU\\$}a&>oan+ecXD$@$@$@1#Pןb6v|$q9w˾z12OGv<තQ5ܥET-NU` cCܠa;9xq}-:`3t)z` V==2g^mTsvĩ! IwuYpѴ5l,8t>3}`dž_^uѰ] kV Q#exe!JQ-lozwCaz W[ xxaZ0-sct(R`{}׿,aY}[ HHꈀo+//qMYoϫ,TB_EX7Ur    ~"~#" ~u8CpM}~l;_jȲ#Bض~L Y-lP>|<}_Dr~57X*|*C{ӯUYTC?w,g^޲tW22,s뤹a5nJ釧*'[^ǻ FH.t2(M]߆zPyeuU'.^Fft`2<_}n\=ymj"]3uZ[`@[˪Cҭ7uJdiej$k<`8\FɖMp*5Gnsj{&jc'U'{2\,܉/\%vڒ\hw4^a @=PWerjBX)VybWw) |i'6~۷׌fOѭOO \9WD__>wa箽ر#-<dbqQnl<л+u܌~.1yX|8srsagGpRl߾ ަrEX6r098ۃJC@{(v{?v:#G IBnjpӫC΁."6n7>Ė}GZN=1$FXSquvl*my9pʴnz pbCtgTI$|zncl e@n-p^1hH_\:uNФ)>=<ȍF ϧjzc3'w8Z-\HLMFvmѹCZy>}$@$@~P(Q\bIx gBqblٲLM>eէ?ʳXۿ/ %r噞^,.GZڋ0::Q=u4=C$@$@ ejP?MzCpgkޗ1_2xiz;)m,Y׃5nL:ѦcE|VRm~yuq=m<[ˌio*?TZ1_Sg=1ߘgcL7 O4=)r26-`5ņ\OݲHHHHHH (K4S4᯼< kxM3 u%}Ч B׾ڃ[Q }5YB$@$?ME:u68cVgezVXޟgM;F|nvFI:\EƐˁk4CsH      :# p|{AխNYye~~O *6Kr6g:eSSSV~uljZ'   G0j@\3׵!"      C@ݲTKM|*4q)_CHHH!W@$@$@$@$@$@$@$@J@NY)QM,/O[)Q-ee~~˿hg}z\Ϻ_dp}.ڗPY!R싌k 7 ~}8> 4JKO/K8MPXxxK?}J- lKC JSGbbQrr n h;z5E S@$@$@$@p8Gh<:1HHHHHH[\.%4X髶teefZ?u~Vu}>& b0[U8jw}_lA$@$@$@C_p$Ь-~X0I$@$@$@$@$@M@\\9Z,wqwү ҽgts H TL~#9Ta @!SA\p=ELSxSҪ'Ն,(߯OY%yWw~/ = ~uϜ# @',RSK5K?7NsK:~5W!BrYW}ܳt @W?9* 4yJ@St~.WfW^~~xe}ګOǿg??VU[PHH 8҄ҜB9_}HHHHHHHbL@ l>fWT(_헨˕3?e?415LSb:HHHH1טN$@$@$@$@$@$@$@@PTSRSY=>zşi"/SJir+"1թ=Ӫ9W   E        :#DR/N, ~@i,\Z+#U'&sW$eeWg˭ӁZjUq0   C_ù 4 ~/)W>O[wRR&|^OY)o>UOY+A%ŽxX)i,n.HHHZ(U  %{%ײU#( T\.}>OWIW&*k>UO!:u9,k$  p 5ȡY$@$@$@$@$@$@$@$@$sAQo'>c* @Drջ ͚O/=3 4]HHHHHHHHQP8/&&iIHHH%2N$@$@$@$@$@$@$@$@$@$@$@$@M{m2            f@_3\" @%@^[HHHHHHHHHHHH .2H$@$@$@$@$@$@$@$@$@$@$@$t Pkז+#           h(5% 4]HHHHHHHHHHHH ~"s$@$@$@$@$@$@$@$@$@$@$@$@M{m2            f@ % @' 83 @ @Q\&NHHHHHHHHHHHH Ps\            h(5I 3s6sIHHHHHHHHHHHOB< _Q# aJC#@]NHHHHHHHHHHHte)(vՒq z6$`"@τ&M DA ..AK;%ES^@8C%˼Xڷo_:Eť &ti @}ȸ.ܗ)Om]b"+ҕXt6:.(rnuQPU0&dwČGV8> @]g\\> ҚYZ-0IM@xLC= tJTA o㎂zs9Ăuz+)? 0-;WVrljܛ=mEԏek('WecƎŴ}m[IHHHHHHH1~'1zH12c藍Ya>y84܉jV[ &BCrIqH_{vyÝd[eJJ f1٪ TE.="M ?/c͚)R",xDϬɶN<5ebgl1gvowc #GpA|L[&#$@$@$@$@$@$@$@$ a}>W`)?ʭ՝g><:S0waۡ3r~\:]+p-zRS"dc*$?&KTf m~k#QO19`ٿ]GŴ@`t xտ ߢbhVh2e*n] )n?Sx$=9 4kG8PQ!b8ŭP8吼()n~?(ut9RSݠBT_*7,(Y0ٸX߃ sq̍q,&{6;fwĚ{0=bHHHHHHHuϾDTa,̘4=|ǒ 0%Ї-ܿ{+U.~x"{E#-K} 8]W s9o1jA|\KebڿadX0Iz%9x 3 -܃y& 0uȘgtA tߘK \̽aν0ӹOܖB1MZcSN'Qt^|JJ*0x@fxPPPc?/ -υœ'+4AP~/AtY9f(;kض}~yAk J n͠f        F o)7­՝5ȼ S`MS7֑*CK#COJ`oV'5ĝSKb'&:Za01:<A3{ 9pb!""i6ʎ!ku$ Weh!{(r[Y*sR\Ս5/־KȧUUWk#T/էꛁBAT~OJx+w+wn,\={H3GaǻqJ| S;4tkcV8VPo~y(mRzqxk8"ilo~a2(++C?0+N#R];#Xp$*֡/p%F4~ Q       FNlęA?s1[`XŝV-(|%&W.H{Xfܢ m碯]X۝ڙ pzIޱW@y1yyK'G3t;n2Ιqs( ݚ=ěyg0,h(PRf7m;(Z0B@ϋ"|zoNe':O(L4Wx*+?i}Oh}H *0({3_6 FOF{vޱYS {ȵ^=v6 \iO/0okxm_fas_-Ks5}^{ L8F1/X/>V^Z V?+XEף"!#$@$@$@$@$@$@$@$8 \o$ಳEd<\XZyZ(S+WGch-/q[G^nWfq!)Z˟͎yF 1q3m8w7>x+6l^u'*n.L/`Slf|Qx#/ͻD]p y5Ry{Gvhӵ:͓y${QZZ6 [x|v's4J+Lj>%2_K/էꛁB /ޙ? /q.Y)qPhsyעr]2 _ =9ϹSЩ^L^,̿8vt%lc7=R[[m[ʙ$       G`5?u[oLX73a뫁-LK= L9It:7[+{Z5 ю7΄O\ں/.~/ؓO샰u!gPEV8WJڪ &!kuX HQPn7K=Eض=͢oడGҳQ6ɰB͊x :}Gƚ5Vk<#<#2_Hc.2c֍EUc֪e9 4\<(.>-Oٟ/Iq>(  }>[ OI,Yڬ Pk֗!/ދ9-wxZs4szc2ӑb1~^P0|mpk0W!Q,A"QNWiG]7 ~ pB~%Y[&rW뾘R,t ^C|3eHLLGzAoͺOP0/s鵨BHfׇpe1RRNjѶyv᫼JӘN' xLjzxO$@$@$@$@$@$@$@uL`Vm:~#;#'fUQ(/?oH;EOaܛH5E<۹nԡc''WFeh2v1 \Ws<9ft \4شɱq! tZ(͵t 3 "ɳ[z\܀2@$(EBu 2;vT*]=$6# ƣ< ߓ,uoz%@O.x}2l0둖L &/➑ >th"+uо6o7fZᒉ"=P(Qt'b[-08T]F΅+Fd6~@-TٙeznpYÁ%ג9~XՁ1'k9o 4ņ"d}+=mڇpf|wU x˗/òe\!y.MKu[wOG⵷`׶0Rt>/b& 4/yXKϮs,[10bwf0PGE <|#"U ~%_ noDJлT,[ټ ɽš?ۻK08 @%u/{T"ϡ$/4z#weV㟟 ha)ZwAʵj>ĽsV4DO7#gb熟ktx%Y::ܗVќ'=t-3_Wo||vĀKs+}\2Q-bZ"  fC~R7& 5Mzg]~?'4.^GnI^w$^t{/T1NcXfO%= K^gyl+EjO{,b{bC       hb~OʩZOz"{cUS'۬ أ;5F+< mξfDO, _[[߭;rid7z oG^b=+kB;k L  *P닀 4, C{m۶;[t[T6iwqرcOL}lSWHo1->[fߋm{⶗?3P1m_@K3kj\)i^7̻JW        F|d^o?V-isHmZrM{N{:gKA0fjݣۜb(1WOL9>o7{ GUUe0<+L0InIV xN Uk5 @u US?ּH:ָ6ŭeƴ:#I:CoilYr=n7Yӡ+}7FD:p"?);;1t@1= }_ %y¨9 ,6(bsײizyhe.>zj,]U(AK}**.َs¦/P݅i腹ș9S$@$@$@$@$@$@$@͂!C:kcWN cYe(.KDƎV$T%5b[ŵlpw,}?Y۞Z&qe/amQ`#@x?c CD]H O+ɶFcY=KZ!@AϾGv޲`g*vdxlc|p/³ &E2WoG͏4ÿeq       h==_߉ s̐CZk HHPcE6ֱ.n-3u:v*ʌ^O٘穳Wzܘo̳1Cf N[YiޓbpHE%`u&Up>?x\uԖ= q:,9oA@pgXk'{[.+9 iɑq /KIHHHHHHZ5+ @ @ ?"OSgc\]$cVgezVXޟgM;F|21*VWZ}j}zQ[!}7#geh:nA2ZO]           &O@Y1 4Rk&         M\+|J:7T>(**!..ꈏ׎@y1HHHHHHHHHHꄀ.zN&AH@{NH V(Ŋ,%         SJXzТ, .zguC.U .KKLLα}?$@$@$@$@$@$@$@$@$@$@.ύ~Q\@&EgZ5`'O^NHHHHHHHHHH JP)++ XWK$mYbM@Y)OYhkͰ ~s$@$@$@$@$@$@$@$@$@$T(qz4q B/YG׷0WY5˕&xWDCK:B9|CBBԫ#h*#ry*MPm< Pkם&         FM@VbwX|hVJQr"&$;-PRZsYHꗠK/E=_˥ j1~5%p$@$@$@$@$@$@$@$@$@$@$P?MbE\ .iL%jHI14lF:Mi(5 i gL=Ϟ@,DKA4 T-֧qy(.-*T **Q#-,5I2Iwf{d;ޙ~ DEI> 2ε.uZՓYPװ1\I8).ytNHHHHHHHHH:F%KiFEJMw.)^ee,hwׄɾqj@~prh_mc=*HOcTI똉~uA:HHHHHHHHHHr}Nd^ \R012:oaeD|T(G"6&Z}A%RXQe>,"q1>@yI1Jʵ) qqa܏0<22g*+QZZr|9dgi-ʹTMl*QZ\ 6[t3*Oߧ0e"ZWj]IHHHHHHHHHH! (Y)1SrjH;oj B\%ˇq<*k:,e;דrF;tR64uE*9or)[$O&lU[grS%`iTgCIjMpJUQA]p:p\<1uHHHHHHH&$2 qw䀹h-gYkO?ix=8:r|/::M"%2L"Č2C:Z}f#::R50l3Hs/50j|WOMA㊼ SXqtJ* gQׯQer\Zm8W)վPs?!**{}|p-Åع;9^2կM' 3Ѷ,})) +oS X89QxrƟKK\0O|"dMNĝ9;@r       hNODYLrY3.r(7it E%YT3$q";^3-Aehrib%ʝes"&N,ZY4,"ʼgE;\G 6Js@r-WQ.PՆJj8*]҉ƶE, 6ldd/`ѭK1dq}'{Z        # N-}!&K|FoM1r2U잝KI2vՉncEDB),55~DE:Qy% %IlyU-Uh dnNw,dmcm%l<21ű˲<o=>a1?r\mi=a7>tShG2_>YVVqUd0b(eOewC/_ЌLK03k=fO0:$aOB?.Fưwy;1D@N{eo8eOsz֙obhW<rk\aކpDŞhX2GuG N $Qw۽B 6SC!"Y4..;L% N=Rtl ӲνϮ:{E2+UB9 [k]6zDA]G_3= <-'SHSm"cov|'RߧBK__39g(s؝S>w2<in\> 3${jyCi=C}zf"?7i0{TNVxk N^mPt[6JT>l%*/!Գֳu:Q 3/+1v_m]Np1;'a,yd9Sp",}"3 KǚscRZd&8Ĺ8#yT|Ŭ;ڀx:cᗏ i        :&ap)ՕT8lF Gשr++_8"|AEDE\W'q 7r8Źɲdh;4mR6r[S+eO;9xb#y)~g@EbhT%T}dzYVvO㆜mؐr,H`Wxڲ0OO$1I^#& Omn:$֯{Yv3 /ىW_Q'k:O =vV*3,}'2,ҩ3 wۓ㼭o֝w[3:[u[nӼs-M)88uZO[zwDT:2H왂\LSԳ#ny}ݯ*hpogL]^"ڷ 2guuďz _xfaʕu={48 ;'e6!c|zzo}yo'K9ELڪ@_~V B BtTC9\L?W-鶦R"T7Ik뿊2fW٧`e%nGW8kt; qg8{ gќtבHNo_v3p$٧O6M膱ٲj]µYoNM'O[Y^h:O#0l`X7ҽ#aeIOjl'LyeC\wN4 }pOx_3zNq·ȎL$@$@$@$@$@$@$@$ph6 ĩfqi玳%eqWf\TG˩1*(..EjSV29_$RU 'Jg S[&q":<ˌz*ҟ}d9ֲrK ն5ʆ 6NÆ~6PXu" ^orE(y+1K6s&= ϭXdf\*1't9 3BG x8}:ݳ׾}Oa)Hnn'.Cs*ڑOQOA\(beaœ9;+ٯTos;c}vFŒ{zլ$ѝRq zZrR_?k ޑ܁a~]b1>+_Vݶ [q1B\*p}xtzTמixϻwfHHHHHHHH$ $f|5Ĵޗ_SήNjʼnVQ|\_lwbKT8J8JCJG8JTQحDtG8K}6]=ā<.}vl?.H7P ]slD홇q\tSGu פOg1~1b1琹b: w{D:nV~G$䕱f;/wуUw׎1%:eưnIspo&LL,ͻ3\+ǔpH;?-XոʂD; l=u(Gc $Zc{su_YŒd<<7jUcdVwKCS5ܮ`tT:tQ,`7~KnGߞޜј"ď?%=s,w./ \ѣӐܣVxsaW-P&      hV:\ߤu%rDK|E)'af5:VHNl wZ)ѩM,Yع39V ]D+lqj+QQW=w^{kmuiL°wW7kU_KyDv ֓@CEt|ֱp=seIMiqO_y4.c,҇CƼq`N<0a0jc mkGvbQT&n¢7+Kf0^EֺGvJF8+0wܝ%N7;0jg*_]??˚V!,h'@ gj,1B.,ymb{L`rϲcEW 7_Ev>HHHHHH0؄hD z%^18wՇb&0HV+Uͯ&."-<^piR>G='I. KE)Sלvu^_F}̓@MPAهjCY]&_ЖESu,W"guXzgOddy{+ꪝ^ u#8x,l݂_}5?Drs23: [݂%зyJNzTW\Kݒl3:\m,{83O!{,܉*-xq<W4nN6,;`Rr׵[3(;lQT!ƩnTƢ˙775rN|K*9='1Clt+Xz\ ϝIZ\7~ 1i*q,<׵|k7O'=}VQ#NäG(!ESp΢[WBaHHHHHH0[ Oź9  6ǶH3bDWU)cBKO[Ia.潪}b?V<~ҿD/zՠZ;b3DAWV}P59 w EnJQa>s0S&'&"Q\hp$`쌙^{n:ʼncjW9c+÷c;Z,ʷx}'ߩW7>$լSzD.}Y&WΚ=Nk!\Tg}&_m"ͮݑ魘5V,ްrJd[*7.)Oy=zGlX$R2&pEwEœK+vʹ$.xf]bOW\lnqH1'wsgoLW\BpoZ޳9̵;|}UsN$@$@$@$@$@$@$Tl>ڌJa =f+󴗕3{iwo5NgZQ6IǼ)FӳHAc0spt<[Y|vlö]{qcTXK s 6蓨«f\^ `'Ŷ͛1Zv7mTW/D$%joc1roFaava=~50:3EEQh?Re25H*ZTלzEGG^Qߏסe"$YʨjM >3<}KU֬)Țe5L9;Jl3iL<7en]!=Օ1HKvs9qp51Qf$/ő=F#+Cba|LJdeMgKTg9W:51E[#2yØyrxfeSg]9r GȘa?)k)3cQ9McLm{UYy{dO{3,}d2&Hipqeu"Eo֝ƵnY+KLr:0 M /ߍn._]K$+B3c t0&9XWOv)~-5uz&%[!yvLZE+ri?T#YumƤ۾og!G c-qZj;D{<k{CNC:36.ëy~PԎu{0$U6QZ+>uj !@ Oncg#oLQ|:_ v%n?vHuيU&oWW7]k3>H_](˜ {Pń'`R7nVεs7%u!2j(:[xjng @UG5VE 1[D)#[GA-zs# dSٳ0ɦp!G^YYtB}Irʒ[wrѵg-%zS\Xΐ. AąrvP-q6;kb}7;uNlWt:+ukotZmyG49r.'nGKLM7WdXX4H$@$@$@$@$@$pr8̈́ӮSR)zuUй]?uu;r ?} n#kn'1 3o:ڻelp.~k_~9׶]X)U~{/-8J }%tSXH.QƊG9Okcb KMMûx!^ q1Z^o0U[?^E=>K{?ż?! @ؼy#J}*<@yhmӺ:the}6G%5o,+B>Ky(HuK z$ɫƷj.)} U{@Ⱥ9eExy;_gdB'$ɫRd|{$%t-oW/CTߊxeWgls2X^'-ylrSp!tZ%%HHHHHHH@}=i/޽ͽwRqEZ@3ҒwX}osEuHk7#QȘWM}J`O.Vlm#]yKC b߻[X~۲[MT;'KT"]xr\\1KZwCS ; O:L~d]Ӳd[yp6N[H~[,kr~T]0l?$@$@$@$@$@$@$@5%zsu.[3n8s֡ Ys,<{e8[ἫꗖjKGYܽdW̘ 6:ݎB8ao"4T]k_Gv6xoÄMÀv*1 =%K{i  h›,8  ZsŽ7q^xoT/5,]sߧiHHHHHHH:qz{߾l,}GFb~?l4;˰v;/C2҇*FiI92̽Ke?!1.Ǯ~ى>=1qx$ TA̓@'J u_1fzhw떭r>hn;S\}(D      @8Ua|pݎ\^S˷$̝:$T]4b,Fp=_HJt_[;w6r GK.3=-[*M e֋F 4璷ӹ7XE÷UKm#"o]r~v 8wsΘ3K ^ I+ϭRT[2 e{ڜw˒&NO«d 8WD)瓉q9Zޢ9XjnK|z]q@EўDJDTqFz;Mv kvxbWd^Qk&uPwϐ``Akڗ%#C^cuq=m{C}gN $@$`$@$@$@$@$@$@$@$@$@$@@giM?:b נ_Ӊ-Sy9ͺQAhr9ͻO`ŗ8zLUx]pVr+l 2x,M||tAǒ6 mݥ%R.MCN|Lz,7ߧBW07ho"ƅGew#BWN3ҵ#D%8^Dxd y= X!  m:/+FKcנW+前D䑸I^ִBHH. ?R/u @8U=Xy.uEN9˰g)8߬xt0pW[~mDYT.Ij=g|Pֶt%lQ[brrtUUZv1T}V9k[:*g-[V>\-Bg-j] UUZ@>`HHHHHHHHHHHHF5SFIHHHHHHHH$$#ԭe]_crrMBgCgk:>>\uPYePY嚎*g-k}5=*g-t|#!?^$@$@$@$@$@$@$@$@$@$@$@$@$Є ׄOM'            :x @&=ɣ$@$@$@$@$@$@$@$@$@ЛeU!<< "Q gy]!PZQaFa&`.5lK$`$@$@$@$@$@$@$@$@$@$@M@x肻ܭ啨FFzV.hG$h  fOf9A        hBw#RBIa_/ƹB!TF9a:u'bNf,?:HHHHHHHHHl P-X欰qve% : - Ԕ5Gzk4D2ZV!mJGYY/O*^Ϋ6&-)ilVk6qx^zkYYtֲQz-e-WӣgZN[ZG_뵜\MZOk9]o-k>k=rZr<@MWjSm;wvv        LgϞyz'tnjNyKjIO㲞UTKϔ"R2\ET.iWUVTiS n%ZQN]?1, ;iO='N$@$@$@$@$@$@$@$@Mf0Z64 Cdd8½X&NBo.c 詬@/2"BՋ_iq)PJW_fl! =k UUZNY5ʆ*g-hpCPYeeCgk4SrֲAeY5HC?^ J %%A`$@$@$@$@$@$@$@$66=5Z6HqY"-ɗS5*2PH$@$@UïjF         hBC-A3zTԜ{>S߼̮7_,@3YW`^3,S*$zP|QBec8ܣSڣU-Q곓9  ~'YIHHHHHHHHYu=qUVv ~D3{yQARsV"'{L@{Do5ꮥN$@$Ќ ׌O.F$@$@$@$@$@$@$@$phӦMly&tI; pxiTm(j"ZϹ-B"$Pϛ\: j8ʝ*3t=!dTq7WeӍZ^n1T=ZNz]=Giz\]˺Ph9_uYW-qu.Cգ~=e^cz֯۫{BOD!**)$>: 49.NR [骺?Z8 =JS4]C $>eBH.P}V'\hUO @ X@r!T=.`uz8`@=ONt睳&       hf9,fTe,~f_ԭuugTV{F+_SN`f @s&|vont[j&        !LY$X)ykm>lK|0۩98~B ZzU_~Z_Pz-QV}[i}CG볎[|GG[nz u:o-oj# Ԇ~Ǿ$@$@$@$@$@$@$@$@$@ B~ JOU/ˉq GxށSڔ`m1S`cj;NUcW6v JOmۃml8U7,_ڶm$P:"v         0YS;X^^-|VȺol. g9JlHHK|%t`e(-ڴF׮Ul6gF$@$@$@$@$P';b$ole,! "zT4_Dt9%eU@MD$@$@D˨S- hC[sk]i9Nfz=Bϟ $@$@Ms:o8F߫'?h-Zѡx~dn|fA1N-#OwQqXW.$^nqg6C>=nO=<Ce"rٍұ% q~=lǣzy ,<",w머}v:h>ѐW"!`ZySy itȾ|1Tg@)-GDqIП7+ 8ZhN|\Yp 3Z3'ތ 8u +uwH[:Q._(> #ƞVO`0hTd9Hs#%=miKK_ԠicL_:5 }'{0Zb_}p,η K$@$@M@|ڳLι͋9`Aƫ U:2^?0ϯQçqM@<.uyxnDX>=Q 0 =_-xcnl3_1;q`}^S;{1&aZXC6ۼ,Y#xk2ZQi>H$@$@$@$[mhP_d?N6x+l~gt)]s3p1pkl]S~w; Z]R@30*Gc>z{1sXGu.H:o.t4RuۈrwuQaӱxe;"oz%m(JQi#{Q(K?mĪDE4 F&D&$@$@V]0$^l3J$?O;gjpǾǎ-!KL֧wQIݛ>( afiN(`G?ܐW"ײzP"-`Ѹx k ʪ`Y?v`gCB_<}}]{ udL}?wϿ(@.g$a1:-]xv@O6OO`Ehske1l?*Ec(yہr2g]t1Tq\<?_XWyo-D3\cNl--῭?,ߊA#N䱸hXNhH{ l+@IDAT*I)h2ϑ5HHP{Ec lux j)PJt.룱^שΫv72r|>(mڹs˶>۸O4g6K 6;Q ,'3 _@_#D j3>O=CLQl:iFO0n 0h"kƶnG/(~%"c0񆧽'>c tX1.^;L`H7 @s plh<4Oo;߿}, ?Y!߁MMmiˍȣ!{8uw \ \{uY`[G«cNS#(]\nܹY^p<]y$FDLĆ#\#m/OeWߜ]2w,*W~,?SM;- }r q—%K-N'']4&΋M? iױwl . 60 X @5_|˒={֩Ew^;Q***\C8;Q XQϿ(o͛Q6K >1P^;Z۴.c[ TQˉ&[u?nW6>*yycYTlGQ9H!ph'7}A_s/Ҭ}V"mibgzbi g0FXN1E^0N٧4~,s:ta,s˵XٟКVm:K,H凔pbHNrUowozA@g"yӂ8H.KtT{OK\]{Wgq1VcJC4܍VOx2x7aea4,glg8E`g}zj2^?WM>eEC75gxps>eԒ&DbY31Z몰7;pBVcG;,uYVS_~.x**OA^X=kO /SO!Pk %   hkQLs"_Gwn{*xbWiWLǯQ~s +s4w\UU0|ѻӞ]oiujzڎM_4~?(628 ]mvEH00cOdk@̟;_y}Mܛ"!/s_swZmt`E' WCv}mo): md|Nxs{;|79'j泩.>?ݮ?5ɉ1?iZUh1Ϳ۷GO˾_2Lr%mGs x^Co^8mypYbԜClb 44w5.ݍSmJ17X0>r`P=^ǰY^|nYby_=!   ïvػy>ԪCPj,ߟ[pcq_}U/s-M0F c큶_h|CO_to!S $@$@$Pi㽇Q^rQ6Ig,DJ|ӬuUN먡()/9+:YiMPW(e/Y+Gn'%I8, 6+ ڥXy!K[ l\ :x~??aݒgO싎A g$dV_=vW Sm/ H-]RS fQ(G%J]oLa\]ۥmumid}p3--1[3~Vwbq+lg%Ko__'HHHH9Pr4s^CPOd7~*Jml fP/yP'Mӧ^w ~Bg4>O=n%v >"F$6SrL#_$McզqC!_Mjŕ0ڻ07D$@$МT>/wS7Mwr/fɃ/Kp䩫^& { ф2RsN?MvY:KyןMuFeDg\?,Yp.f8V__gw5> |{L$Xv0X- @c\}μ/%isLjg >K>=Dd F㛯u4"{6 W>3LHKq*bf]~F"Qh)7.B֠(pݱmXII Rz>]0d|}0t|F<:w֘݀s:kJV^rohe>.tŠnj2nvmP\kdN}^ h he:uX9wvhO ^cZl&vkz'H &2)MIH** tZ,;Y4ٸ 8vAiz,[(*Ο2Rڰ{o/zF75;Pa8#|Xirе|^zԚ'`EFEOl{$oK sڿKf:owx`o;|oЋ[؜ neli A,+?.5|z4s?68 FUHHqeJ_Ǎy @ZzPވc␪rohJe^_7A{7{eXLx3|pqDE)2EwKjז>^ mmSclWo·zZfIHHH9LOpcӉ j| pY jW)_Ķ(>|FzXKROWG//Z+ |LG>!>>?q4t v&.V 4{`S6F?XM##*սN7j߯LMEoSEA(+ů32='(OVOq2@c!>UU~3#oZU󩵱+>J;m0JzknQJ\~#i-, @,+⺿w2jɴmX~Zj$Ь߾HM Gɏ !e*W\Aq!譖C4kf|t0R nw.f܎6 AR'NKLK}iJJyB' cQR[} 'sc5߮^5&}!n.I?z5?| F11K$@$< X[Y%w;ydlW?~::wV5~?%6ǘ8tV{6V'ff6\zlu }ןq۱m8h*>We9 U}/7PtvukYׇR:|}5k|*7aZg%FE:{1O$@$@$tǡ8c8-mPt5(nv $b}F߿1桷esV8Va` >#*n__c[0fj BFk5^㿽Zn7Τc9ƽP,, "p"uMzِgCX'V=O'O+9gqݯa1M1}nw=/gyડf m*4' ۟3W\MSuO =ӾHIIqS^;Փ_XK7]-H?Ɏ^M :fyV.JS$ቀ{gU㛇TmOfnG|a^hϽ?Ep?PaˋmꃉroQsMFsjle~Lu}9,݇j8 f8Ǿ^g5p@/m,FDsE?cC6nmp4q9b:bj̡Z﵃Cr ~}饸kU_x3#?9hu;2:x-Z"07["]ma9ц>xOg.Ɗ4=:4o;gfd>cuW:5 @'g_EXȓ?GΠnW7 Lތ3NAK7oɞ ]Bqߌ~ +8m]c1#g27V=?x>qF0=N q |4k6sy4}x+1bHH81κ~|ߑ~?֡x |c|^Ͻ_4.m.h#_6 0cO]۟@ {܀] EXcTSc:ҫay) +/b5k˰XoR;7j&F^tV~-r5f_䷪ V|v9͚Jcorm`lh(V+HťOJ/F'  ga qmUDFɪ>jw1ET6Ƒo[~c?C>WcHix>'l6]N@Rw-QTWK7A@ ( AQ+*(ֈJĨ(*/h h Ėj`%bb&${gfwC=of739#ؖ->^}&Ԕt!G1>W$M& 6cwtyNg?}Yj].ozD^!&?i}zAkl*nYlY_;\X&d"{@'myw_B(}y9~V] I܍.#dƩ+hŴظt7E4--d=l<}z-qUMjʃw|FOq-+/u?d2yq!`޺cY~o#?.Qw9tA+,F`FD AH/""aap+P.J颤JCJ& ,t0ݜNq>&فıw`Ԝb5u<~8 үn"L5)<7s0n?3t.aܐV̦mns &Hw:g$*7FF`NWlN̈́m;`׮eV0QsNRGV]gi5qN3C~+6xw"hj<&F$ `sô_{қ~sjFVS]{֢zb5TG\qiS]#b[}gf[b"ڢZY.#I87OMOd $2B@sx|W0#0u@FƞMA^.'yf'> (8=D@\ŠϿ0VPHQEpdpF@Og4@XX@>1m_0 f~2+56Ө+x{eO_}[Qxy5W*KnY qg hX;_lLr{7m )kf_ƈ1sρPg\cU8aQVSD6neXvGE"h32S𙿱1X1ʲxe0'yuCmK~U|nzvs|98{`3_V-̿EHU<"Mt.XϏTwG/G~o>,[~Ůx ^k48M8`B=wFIƌ vl1Ah`|kZH͜ȫԶ,ic:>s5qԦ)ʽj<5۝iZqoP8_Yה[.]skr2rdVu9N>YZVB&Ժ9Wy]մcm X˲5}j]l(.ԏm.s]\E,jUF+2E]Dɝ CώF8SzEx٥,+.2#0#0@hxh3 Ydx;^hhUoSV2cK\`#kǐ ?{\`N Ѥi"&ϘxT#x=Aidȩ.H0QT%(vIځݻC˺&z\0GAINeYʈ\$Ub.HZh0! h|}nl^< O<1 7Z>w\",0#0#0DL3'|SKK  3kGMcF`@XX%nC o)9m]vLm{ǒ%cnGGGIi9 h d3"!h`NZŧzӘik,t<ܘa(#0#0#@ԅcW>53$ivh&qkPo2LBjO8i&Č#p!0xnK|SoF0ʼn}F11ySxUiqb"EZdbqUYY?ϘwWQTGS{Ьp0#1g 헺pwKs+#0#0#Gg cezԙt2xJd65thԹ0@"ޑNR{5?Ğ\\9c¯^ +grs?A-{6iw{I: +>۷yB>K{]o\vo_,V{-zJ#PUErgD_av_ͩ]OS?Nr1fÌGlU5>f|Ì֐n:8&`h7BYY#T*|kՁ5O`u;p&{o~?b^θ8*'Gfl3\h-u]Z~n3Č#32EByޡ}be }t:w_d|eM4Pc1"Iu&T413fPF`F`F!=щd!.F#?tmZ:)  bF8 ,_A:}R|U|ǁHF`γ_@<-iEvHr篳f'鑑CAQ%EZ 9.1&$s섘}7CE e;02sÌPj-ƃ0#`5! Pa;޹ѐk|^b<&fά> =II fD!Eg˯DaY*km #`~pc}!1 Y0#0#0#0PH~6<|RX,;U`  bD  _-PzRc]qyC DvJ}6Im<9J!ŧEe䶄*P%jq5xOx<뙎@tNDGWyEhܼ92'MDTd<111+hEyENb!tqb!~:E4S8Y#0#0#0#0@HTqAZχp1w=~8 ݚu@E.@ qfmpleXû6Xָʫpi[sIXOH|WҰh)P,#RMնhDQPj>D𜿔Vcx*)>Le!hڢ%V!~w*+ cBH=A &j-L90#0#0#0#pгu|ZsxNlmoBܤx-杧1 szѾeH1_ be MoOG"^BFjch!t B7'Fn-N#0#0#0#0u@xR|@;,QDVUJ"6\^1>{}ES-0ÕR=pM#T'K{%S?Řa:A᚛_ϭ`%2UWcuF%5YSүu׎_x@U%8k;.' )'+ֈ=) jByRʕ;vM͉~vF`F`F`F`F8_~}"Lr!{%= %DUV;(ٖ-SK ,rSdeDh^AāR@٨ =~LLV9" ()&SE =zN+Q'젏K^53ZPT)֧JSA(Rd[ɭ\դhϳpZ8G=z_E MN6:N'mkm89NI҃ק_ v9@y/Dhֶ E|-w.*󞒢, ]"E9{jN#&!#0#0#0#0)؏S눫ze(RJQFzoISZNJ\$G ~b#īrͺcJK5*\%>T[_^2uGG$OƔ*PZZ59c-܂hc%h=n"\afeG9WiZYTÜ1R>@IK'D|(b|DtHk՗QSN r' ^0W6`)'0YI,Sqa# nӹu4bנ͉D6~^O" xHam'ZK䐞 ؟l_m0#0#0#0#0E{ih6Ah F{iy¤:##Q;MWYI2ѕ(+'7o1"dM^U^j&,2" ;J E]f(SN< k$j5z7(FpI鷶 b4~~l90).??7_%OZ"#"4U#~_YIr(pNAzsb!?d`F`m۶ƫ;Kܹ7-`F`F@U9yQE1k`eu"b^eT+yPH%)\ț+6'ª)FYQ[MgNXM,+ qdyԕTb# QǽamH"FE# lVQRZfP$ŬqsyYL0ћ"bk`QVtP H"4*(OMruLh,'kÝRMɋ<*U+(S#wk_v9"DoEUF .<NJX@24\[g9j½g L0#0#0#0#0ġ=/–Iz %[h(dž S; 8F{vFOP* #X\%5 =bӞzUUg 9 XԵ6B},`~'n`F`F`F`T:rq88shO* P$bDZɚ@d:x^>'sk]](- Oxg =9&jqдƓp*DٙB_B}^s)eazl9\{|p7An(kI_St*$4 u/Cq;k!JpYȾg"Tfu"È:ߝ =UQg_E۶PYN^ơ#(@u Buz[#ó>n?2~>EG\^5Yj[>|>T, ʼٳg[jWwa=tsFob9I3[& tF$7 smJa3(CԜ4EFNLqj: rn6&0#0#p RԴiS.3I!| g-i&M H` U^R[:g=nwR0zY1x*1@Ω)N : 8z_V4] ev3%i3 JHcXԤ~"a I?UYA\Ue~% RSVjb:/+FK(TX{`FJPŰp싊ByVLgVxR}q$ 1q;,,T_@ STF9A@)m&F8gRyK^KBߪCܝ"sL)5{$Y.r]X>q0fn7V <`; Û&vܿOF 86|L]n;=ᣞֿ꽷,!;L)9 c߁wCHe4!ZHk4ɯc(lҊn } χpCRS6. \EWvkݾ0+4ΑB3}Ų8L1lWd {-Qg߈SvxO/#%zK<2u R8ݘ6Q(<^aB$lzg(wғ,66pE`1af5У\)<0@{ԉ6 k }K[ͿrwQ~_fgҋ}f7Hb:q/&I.)+r*ʅsE_;sj|.ߏB+YI&~_0u.:0@~Rmb"M5BC{IUYY}k^5iV40Ц?&< *ܡ`,US"0.ۃ<:vᢻG=aULnO')+muQ$/DUN[)eWؙAfpW\DQhV$`h:]eW[AOi$D(%YkZR/Ũ7)tO*RံRyk: #^|J5=Q:餞bP9]M2˭lV;&pᴯa}TO˚g]H#Z-_#kiE3@^k}´J(Ⱦ-D$uvV23^鏀fB^^$ yEC0Bڥ`QMňT 3CS]֍۳˙ ri|_bt6%wdĶ T؟()Wvﻦ_N6 kvIIFK>w רy.BrLN^x^ p |X4w&!6|]3_M8Ā3s,dɡsw|ջfZkϷj# Bk+ڿ3~v2R\p^!o) KyQ6ġ=U\9}(=otߣ:9wO<#0:_C׾*ǘn ,ۃZaDg70 N^t@T$OFؗM-ZbjYe+"$ˤheyϧ~,v rX%,q 8i̅:Y.;%f+һК UVQDٺѦ&Tաʈ.Ck}vl_1ؚ墴ZDqTm+۵ u] u{ڵcn_wh\UUޮ_x^$mmǁ+{yO>"t/.@ I|su9Oy1#z<-}+'JVWRhO ZקiU"hDj;I碉p,CQI%.H69OQLAX;#XnXZ*h0DPhg #¬šTk'FYI* AI FpHvEڳ.itJIAAym׮"#0&387@IDAT3VeYͭ75(>uxs',yT ]ڷ` +:ku*Pc9o'D܅=Z۽XWSzLn 0?WM.,As,%weX;9UBuy|z Fv3 ʒG,z5>zQmhp Q1grZ||B @XLtB=`zF`gP >a5SW65A.T+W'Sla9$T~YaOQq6,fHgmAh[`}ľէIU"(ZOJQ aDdXil5WAl <7t)( d:Dc|CSouvpЧ0e4?A,$JMdz8{jW qv*`B ?> Hŷ pIމ\$!'D]eHzzk׵#7fÈ[E7X`Q'{TlT79Jih8T/@~4ZIAAL,ړ.Pm>4$F`. S66hbG) [U$4?~ { 2M;0c,S06̜k Jb.%Z{R)k!6g&˙fO&9ILŜUO ƶH"\.Jq](u;ШEVH>Cn3D[_^0@E@=;sb[ȜiN h\tdRf Cj_fbtxIÕ5']E_d/%H"J}S{-nKBF-Vb^  ;@+>CKq-}O`Q!l^B1s$ YoQKN$B]:sȵԲa PB<{[Y()'s1DNQH^#s9-e)yC@?&wp:EF o49ϰ%ls:V 3*l! GnϚ$/PyvrD HKWq L|\hϹlߧ aaʔH3ڥ0"ޢ)@Z; "q1(!Bv+0&&a\RFzRÜ1e>AKϟ @jv`.0#`B@5s8t3^ Ժ+-x. /U1k:sVwAl0OS Qgr,̧pΜdg"^z]'{h_eߛ^B8Ui{+J[Ć3K7kiOF_~okP^ ED#22u=4,>^xw8xոA&pha`9t6y]2>h%ݹ6g+;G):> Mv7j1Y-4ODq_g vcOmmG6zXު:16PBѡ} { {~ͥ39*eEۊX3>-;$ҎRvh!Eh׹$3~nށkmrډ`s8Qw;_LIjnu`wg'?U6#ŸHv)Z}y<8s״B0#Bhl9.XtKn5H;kh!am0zq%d.ղ"d:6@>')!lp8hNj=X~u?ٱ8! 9\aC&oMAJĦHko;NhBϖ!bV}Ɛ阻l,:O5?H9Jg<"[ -_˧l9h̜6cP[SnƉT{{/f>) E9UOl9h?lgmol[0f I"\D-˕ٛ+((ԼGхo"g\ܩ6F=e?ٿKץZĄUmDHOֵULu)tZkR%\m3ͥ2ڞ\╺),No zFas0kO/bֽmq?RT;S S6Ơ /cUZj#5k҇Y RF[-[Ĺz PEa"0HZQci;ɇRUPi>Ślјk8  'k\F A Y'/0! ?qn}"?ppB o`/o4Y.׌ƿUwxm |'X|b>AWw݄a/BZb|Ӿ1O^>l^9CӳL/msd܈zG OkeqUJooK\FלrC : ѝLٟ1=z 5y+}\]aƬnL/I\Hz'_~X9W/bن]8t/@]`6zϓ>Bڜ%kXܿzXڙjP#pl9x,^cwb=t.x>7cZ*pt&L(-Š]6D'wf-.:4.wBܘ93VyRVQƞ5kwDWCQlZ>E'=U^]/C%kmtoZB;zӢٓq9wJ0#DSȰh L%4i,_ II .,{&UihmGGdYMjP|t{ț{*gGcP(,5ر ʊrm)qW=xc@gOVw0\7o|%$:IsY' P Ɗw6Ú5k_Z^>ǴjD-[_Rf4_zХq8jDh5B6OaC׿K9*5pH{d%z:|N~[QZbF"Ȼt:eF`z@?yoU4`=~NI%/^UOeGb_"MY370s&"f&_z_x ߬}OXt.'V.рO6}NV Um+NH3Nکe"MOn/5@t(f6Uo{2Y-Sl{IG xR2=> \Fʰ Hu`㢷ތ[w@"',r܄Y]ԶP.o@8!Lu4Mwgj4V^ 0+g@WWeaQJ&v0_xYy}Xn}:: &8WO i93?ۖ<i?EJoc6 ŽMGPIak砣iG|u>Zy*χU1;"-k%顏o-߲6`\J_8_r>Zr81e$e~Tqܲ7`>t UwǍUd;aر/oYۺN fy1[Uk] #0  1nNHO-o8&Y2˟eRxmp 3] ǰugGwNRܐ7@G3>M_/r˾Vy L[-4{GjhR˅_[(:dYkdSymR0aYc v-+L\:Vԅ67oŸq]Y6WN(9VC|tojd"L{&<~^z$w3G>0FqA{ᑈ:h>0#  F@]# .Exo(I'Գ~Ž&|w9ذ=(jgKA$EE/Wd{ea3t<j_JlBai_G.Bl]EطC,ףw Fdikt ;Q ?J7X }&dLkPtxNT 0X!D4~wOYuz9BEY>dc|ȘM{Gq!L].|AW>d}RItҍH=@eNV*&Yyz>9S4oj (:M@ѤCmc{!PV!}JƐ`K6BpC )h_3GC 2szr\n(B 9khVM{_ Z/ im/|-жCafW}?5o΃EDh 9pC懌-XTc3.jgGEswR˲ǑW1]c4U V{!,KТ5MSTPL.nw.J@Rk0BY6?*X+ifghH걗\%Y3o1//N3ymwߟcԹ&&WGe1 K>86~oDɉX9#_Fg{6|K|sɫRwk7Q\*/xs|),{ا:lXr0#p!P9kvt\9,i"Yj{;9v%;0~$Wz4(" 'Hz~{ I#W uhhxd\ے3addD⚷5uBJUڼSM~*'UU.cuXC c{gA N &Mn*G)퟇wĸך19z%-M:i6RA憸>R'V}Ĺ`F`:A :jaf! &~c^U tӯ'e:: 8b{.M3kE99z(>B>JL& QC/'G=Ƒ܂Mqyr_Ze4H(gf:ݴcRelo"7tW{J V˳=QZREfCJEwte'0\xux<5lV[Хɨ1D^Ed nĮiL[nvugo;w~Jr9t UފU6;:F"be Bez}% ݮ0` 5))@ZRtB>q5-uYP\.I5}R1f4XAS컝yIQB.f[{Jl;R8 ;څF"{N*5Eϴ$uB7ӊ=1 CEpGIZXst͢(gplb-5#0K3]N7GޟIĚ[K"F"YNjp\A}G"xr rVLkyx'^RJk)\t]ZS^Xtju1Ya*4ßjNMu+FF} Di>xUz]=;VFw0~=yN^#FiV?{6(^*" O6٢/r̍~OIO'Z\˲91#0#p2`ds4z1MF{jWZr+ZmΊ\WRdp ΅Kx&Kèr"u@2=Nc$G`܋ҍHap]#6zs 9Y D+16&Gϴ"76rVƃӲe""%a,ywö1 |^|S^LJ2"6e,N&p^>f5m@x9W wV fn wzsZK|y_0Hj<`q_&ĤQg ߑ2r1?إ O-+[S*lU(ԧh̹֫ w{C80wAȬMpMޢq}oE#Mi"h+yC=D]=훕9>6M7/=vQny6i=¬SSIk0n@OSZ|Cbh7JJzN OE"%xͿ1*dY};-f?{ݪm]la$]yGw$軼y+ O&DGM/q)}esqmqlx}ec#fJ'qH/Fb<_WLL7~ND.50=csSTsagT|n#-ЋN*aCMۺk342}R F?M@J"}MCו Ѹ^9_2Sx{#I6BWFs`FG(wR.ɵONGUA HMe-,,O/o~ z>;߂"Tvo ($?Y 1]Ɠc^Gf=tT/7duI;EPMEfc}S'B,* $Umqנz^&&ֶD}}=D1ːuEw:-{%4~2ρ$l֕ᦋbPu{FG&y5iaǣsy"r\fF`FD#P'{'NS1=o 0!l7-LVk=c&'[7Uo y2V%W:e9bfP*.w/9HEU$57):+^v~]RDn<{s;݌w9a²閰֣QբSw4o,RGsЄPk]cإ:7oW"/IMNH{b8jiؚH4C03l84G O_c]w|X5f/һ%\ 6wO]w=jDrvO/:k^bKiBu,$u8wt_S UEu<4חE̲D9 Kt:GҍX893ѷL$JC34-~@hԲvd~tjWN^֘M cU]zd`F>◘UL^EO_D#VgDIjV]&ĥ;5ɢo?1Ԁkyo]LFBs;9F}N/-T`p$8R4K*X%q9I5${|z%.' .K@|Ƕƨ٨ZgYۛ]c$XX,0ZҐI㬲2x"1r p9F Ա#0#0urTg:Y#o O|dYOXw}ÚX5F5q|~$3Ǎd#5pCOb̞{7-CFtpZB,CctC`ke5|>ۼ}5Yo#^Փ#ņeSPӡx|qFtu ;#ԓ.icءqR$N;VNWg9@嘕!'zӨPM MLӇ*4Z 3OO?$O⠋h'Zz:lY> =C;l2-As$]0V9p&o`6쟃-HJGytȔC{d@,\kzA!dZ5Kc\N_ǢJC4ҧ¼,kd_ZBdsd)}HD˄jX)Le-ـ#0RXEF`zGHפ{>w17*8bh/+D_%ȏ~K@ᓱ蓱BY%TYJl".z}(6L*ٗߚPJ:ֈXI꘺*9ڥDa6w>|+cоQz;݉W]p}z+Ec-=]bPT=&մOyhB~F`F`N?k[0uUZu5lS`BFqMe6˲e]mʨu·~t7ش{nͶΝ;g.K;hCn&m\}#OE.ߪC}Zk*¾=/<)2)u@btv`]8BޝgMNjQtpaߎؾk?_9ѩck9&0+si2ƣ8ZS GkjN2X#DE+\3&a. s5u} u|C`RuU8|ЦIySlBW(?xP!KE-yH߭wPj ;P'C$@}A@L~ y}eE2 S0wj_(ʻz*W|eN1@iUOKT\]5{fj_WO҂n$0h4i/AKRjAdzf~Hy1H'j $bhb2o GIJ4yu\hu`lf|Kxi +0]?H[k?Da1;Ÿz1.R.zXWq7 s?T?+{_]<Ûe<2fKs:!> 'ebּkjStďE,5IHHzBw=_W7VGsv:qh/P]bh҈ gD7BY^ eSɈxjzf=ϣ]IT~w 1b|_WZ}Un˴xK쓣-O~bcHqqYR[;Rqх qJnϧjC%UsyZZYQq ({$@$@$@$pPZπ"`\ŵ/JS|_8 "j{Qٶk:؄K{`r;>2lM>3Ǧ'o7Q} .\<{1Ww;dMگԉ&KSMد o-p旆5 $@$@$@$p-+$>#נ?~Wy$@C_r1!:ˠ_"EJWa7z35_#   %(%x=֝bwHlf%+PZ~{҂n%+UW]QvUl 5GzNk}jquvR]WPyf}GBMvjBЁV9SWm  *gw zikqړkoo`̒ H Zwck}G&^:>=[[bī/F8 J u;i%u/F;HHrp'~xp&     !J@s{CAs98Dg?r:2eJ.= h̚A7lOt{N/XDdWg8ܩ' #@fO$@$@$@$@$@$@$@~hp)|Wuޜ>+""1nnq~A!'kһYOP9(+#&IH8 ~|8<      hn0SSS0k1G2@&֪vcXt[umrt@^=HHR{aHHHHHHHHH`@yd琝M}!N# :o%gB$@$@$@A ږ$@$@$@$@$0t}j_t'"J*+1֝! LP^]΍HHHHHHHH tL8FB?{/_Ÿ_ y0gzpD.rt-N !9h>˗w{ɲNd09:pјHHHHHHHHHHEE0&ogPɇ(8Y<?4.k7nюKNMcbV=غю0\quJI'&ߋwe##'wwwu0b&FDD"Kl{jg&`HpjU)BOƜ)YӞ\hj8e}&dϼGu$8䔳qZ8yhY\$n˒?@k#IΞƏA\zG@e7@rN>dAԉו*T! >f;՜HI- g xz#xxV*R?~ 6@{( ЅHHHHHHHHHz'<~,-]NLŬ ~mhY q[lC@IDAT'!<Q)8^d|=nDQ0,:aL3s\Fad\,e`\H >rbmzuqHAY5!I}fwޅ};ۂmm tN݌\|occƹL-["*s}x\$# UWb='4uƷPW_r,RXB%zcgl Oc Wkne}$xU,N(e>]]͌f*Sq|T{ms5ξ6:ّ $>A|Kk8seJQZ9ʏAiLʹ mg\܄˨(W7+lx&w}W+Oc?'W;Z} z1Xc?QG; EF,mz$˾m}Zฤ%i]?w-Eil0kLc+n+$~/ h}ʑ/:LHn>ExX޷b_4Ҧc }?z pc;e$4~ @7QTqco@Ft|I2v3κSKހ=[%rN4t,x~LM5vEOw "_T3Ldfeb3[Mƌf2nG 'O). 3$lLfVHaw 0md0"&jQ\J-{s83?S}Jp]@InBsf"E7.TNAD1wz. 7ތS_%ݺtƈiR0R'=& ƶN.W;.f P }jmxrix5e}]vț;P~#ɲ;sV!bug&c`rg{ҧ߁,6-lZnxm=.%YnղMJńQ{`p׬ljofNkdcXBօ7lmLrnYݸ GWͲ+b 󝖡`);7{θ'"Җό W(~gS`7fstWOvc+o9lpǾ|]Ŕ[Qw{f4Nxk@̹eα N״ @$psf @o,x}pVmk ;P}i~ h~ Ikؿ| ٬6ԕ`EKhm.Ro#F1{ 'jzQ葿6?Rwo?L‰?zkÍaz_‰R| u\d_?Zfe\LoW@; \{.;@S#=UM??M%Ak4HMS!.UtuN]k]Sxj>_[~RdEe}g96q7^ T%FcfDhgɮd "VEј037[MTA51:QI\jt!>%iI@{i[OIuEL%l>Y(>77'g7YvBja? Qsm%Y@^1h|֦<;Dc_gn>MSF~slS[dqHZ9gǸLȊS6՚M)I؞=Q@(Df KlN#'@R11Kjb l6fͦgh)WrG=fՑU~;R,8/~35.9"cpZV]Em6jY=۰x>.KWK^IHHHHHH`H`w?}=ݛ^J]6kw_#=(] 2jGT՘V/LzUTD!ldVWukJ~WN;,HcSV|fg/`Ӫu>Ie6s&z?;ܿl)S?\!eY>5 KsCѲ&" g3//ǣӿ݄ij`{KЖ4$      ,BO%ݐ´T;r&آoKKl™9=.\9 vvW+PfCꬔgD ҷpl5Ik~b?74g5Xk ;Ԃ30դAὲXVgYx &&N?ae"FLO˺Y!a6d{ {<>ɘ>@jDX5l|%BYm%˓-LY?fcnO+l '#uiӉQ6n= '୥LG".mv?~mu𻟽M#r.#D tY ?v7$bnOu7PJ̽kZ"~Df'8eۚ#$0HXH:"nQ f?\P O:~W8'˷Rad\+{]VKW>zY޶PQ7Ʀ[+{AhϢ l>}JAxSgF#x^<'+#ޘ30$! qfڣ!IDD:t[}rtmǻ45p*]pjߋ֦م,Uܛb%t30?eR6 t'0fL9/]AVŷZdg޹38{KTUUɎ 9ooz"B_L@9&c"0J]$w@s݃C5s71kjY7Ӌr`Rݢ/q3|"ވYsoE~):p#[Pԉ8D@Xəu Hx&ϑU˙q).c~л5mjrK1=r+ c$p k< vO$ϒoucԹ`N3vJae ;?Eu%Qu˅bzG(֧-][QF\~QK@@uO$@$@$@$@$@$@$0P >*sg .4GK6g˼TVn+IE^Φ<,/bZBn.1A)lt X||!;m._vف/MrO/:v,nij<t˃G?nGݛC ysaqκ ]MM9MZj- 릅ns s`y>ڄeƚ|Ÿ';Nއ,0Dٰ,ܞ,nPTڹ՗8Q Dj[nWm*pGxZ4zKn اvv.[OIm:#gs1K0=1t}G_g8zq }#SID=;a 3HC@o_$4`mTn/qFMǗe.)wF r:{;jx_w;&/ 5qNm,*pAp9ɟ^3I$@$@$@$@$@$@$-Qkn:I V0\<{n-[%y%MZ⢰`/p.^ \sc%f-e p е2v䥺w %Kukdܽd"s;Z;0e䋈D%eƢ9ð nkD85p93kYYlu +.a=%uo|̚>"tCF|<9<yGW6dc,]T-w>ܶЩPn-WXiVptņퟠ6aj&iLj4-lH)R~/N!fEty^u̗\5u:2Cw*p9.bJQZ-C5/û6Zyߘ>R3ksX&~1}YPk񎔿&zzIXE5;y,.:d~D;[_t&OPF{{aM.H|HHHHHHHsU`(, 匹 32i)HU&b Śxvt+{χiXGC7[@.Z^;K?:Ƨoa;5Yssa?ς{7{./[2 fvoG        !@5ak,[^!\\qh%Ihnq"q7B.6/B?F%7yP;L] .sϻӍa}_ΊPeדqUe1 NCǶyUv\"! #FJyW)sW:[7O]u6wpEhX}]sQ>] xoXQĿɏ-mik7B_]p!U&$jtK_9QS;/3xou6 ;Tcl}r# f]8vahy -Oۅ,S)YI3]r =P@ѽHuڻ>~ Nd (XHHHHHHHji9=8ذ/7S|,Ϧ*|zKd/$E#Qa;j6>faZtCr^@͹>zRnD.܀7`qǤ&Ck*5s;?kRepm _ wg0'ocv-g-| [NcNF/5_~~ȔU[2\Ft 7S0M'M@6uNSvisKtrل3&҄dLBMoFT]ex̔M{̹o[H (c]S1alFH.{&&oN : n=ŭgtt|ˬqJ5'R*H`07Wc0gi(~j^9TDsto+'AY;oH{'rW_M>ښm\d,"/}J+Hzwk2Zm['r㠌{v3ξMֿ MDN[e 5"P}b L#"iY78(?^#2H'ތiS3t(](6cONpf4Jv'0:-&`RF"j}K3=</WoسMMRC=i#vnXAml>qSlJ2rs 1X9s_wzdBX}Lsm8{P\ q=_LȞEߞj[K-HKu2KH_7^UI&|= ,h}ˢL˝xPe> nsșs?,ȱ˕{e- skwoh<*ql RȽR=vwǬ 9Xf@Ì1& ,{lsPw}Ler6lƼs3d.Qe|'}/t ?Y jsxL%`80. ̽S^wB#u D46gcĮO@XV{U0kaT`_`vKu׿SkKvaYEEpKw 6;F-Hug!, o&./(vܹyӘaEtC@ ?B&WfIq1swoځ[|C9<$fL4QtCg;NՆTl.MEc#U qy7>, ]hqȝ0&͹K-툍GlS}[9~4+c&'#1ɑ*8~QY~+$|̴òp'o3=!geW}9ݮ2 29F'MsN|[Kp}wXBdg}U{ٸ $0 t8x'Rs*jJfdYƷqSqkQm#jզmǟg 6Ma8R'!Q~)J+/͜/+=,9K(x["mnD r^]7޷܀jV5rV.]6ЃZ#-I92c2_uo،{S` =X=2BvIm*mv.53fcz*O՞򴫊k*nϷyӁ9?l2K{;>[6ƾXf+yn,X]cr #:L+ZȳVĹ+FF+;nB^ш KR|(9;fx׷my\PoZ~v X٧c={vwk79Q#{Ldݘhͻ+/p@\^H3tTcP!0k/Mr.]ĵ/bck*q!S|uJ ~ 4Y{ Jf#stUdeۛP{t*{v&dOE1q}tt\: s:Ar%e]7w6_Q}66>###{DH?I퇓jv W]]T[|+PSWe'Cke* q{Z 5+kw{n$@}I wk-”T]y z ~㖱^//lD<AcRYV6 97о[m:w&J6]7.{JB~yu^k0Gbd%u9E@(uE$p- R\E}"í!)ۏܥȻVzc)xT?cw ^>!#Zz</QxTfHHHHHHHH܊](ȈC\-r,t"rPLYF@)J`a -5=3Q2(OAϾcMDNAG=̺LD_]$@$@$@$@$@$@$_4}C_|. '^w◈Y|I?;gۡHYY zc; ІOkD_ 2'kN`,xc|BO|g:灿կH$+I,ml; =̺JKyz֏G ntVG7pxðDBm"]رHHHHHHHHB#pcd{=_ %Z/䩙|UmlFWhΌ_vIm*mv.53fcz*O՞򴫊k*nϷyӁ9?lǖ3`ȁ PQQw٧͞=OۻV´Ga}:ۡo&e7dW[akR{r@$@W ]o#?IZ~8i5P\wu.SmU\+SwJ/=Jz_^٫5P꨾rKШhH$@$@$@$@$@$@$@$@$0X n> CÿjEK{,`d8+ HH`Sm͒!         DF>tj_؇0"f 5!@`g$@$@$@$@$@$@$@$@$@Wx׉V_ɯf8 k-=*$@$@$@$@$@$@$@$@$@$0XDyXVCh#gOI<K\':;i C3ޅGWL @($@$@$@$@$@$@$@$@$@@8Dk1s)DOl>BK+W6wAZ[ZE2dDT 4k  O*ӔHHHHHHHHH0G$hk]{.IDDE<$b_#"6B`{V'""dg_X}1A$@$@= ~=*$@$@$@$@$@$@$@$@$@@"4w#쾳'bLP܃:-lw#RD@S\F"ZHHH A'         A@=φ;C`G%FD*ϰrDC\~+LhkWw-IHH(k \G4GPgA mvX.>EsJ"&e-T dlHHHHHHHHH`(_ƶD oHD˫S2?L@"U` b          K k]SI|]e @?0 \W䬿HΖ6t(:Nu˕'$ Cjɒ 'OlHHHHHHHHH`eDT4:Dk*bWs~"na5~E$@$@! ZaajVDex]H̼; J[dG_ Uh<"o%T.-V)#C[DލOC,F m.8&MCBڭQ!F WuCrjz_#   F1'!3hooACb99  P'=hU3t׉Xr>Uw 1 t.2H~c7WՕhv9zE{:ZkL_^ݻ 0N'ZR{^ֹ7WwZkF F/Fs/@Ī$@$@$@$@$@$@$@$@CѠ'¶`<<+gFG z_QԞoMLK#ʣp ~d.":}*8Pu\lCkk+ Y+p:edLwȒ2N0)"9;7Ogז ZSKU>yW̰iȶ91kGb;"c=,{;Coz>U܉+8b{{u8\q Ѣ>1c=igcyF|N{јKl ҇~q    .^43Q;[o$O$Ss;zJg=>Y$Pki E{Zn Gʊ[J ] Ko8P1~<4z"qγx"O r(YXZeq-X̥| ~V:.Z[,ٸ|zisQT}:/7Dŏzih≪ Nw<Ӈf|VD͉U-./aWҳzW5+EN?./~|u+nB#${55**{<+WL"7cQl-[ٍu _ad[?mki{ןF=OTG3ì3Tר7CųWW^w Vf\|m) ;wË(|en N㕔l֭ PrCL݊zvoX%rWӹz?q        8~jN8L&v,9_#xO}mXO23t O/W9SmesgAEX#koxSڗG OpfOb]HY VFDP_<ž[?¤/nlb6O؞cE%#>B.k 2zWPT${P `~Ebxv?bVN>ZՂwU~!m+yx 5elط Zb_#Ldݹ#mwxrWU6斔_]GboW?oBT͔~jvق22Mb魘u.Vo)Hl!L^Gug5pc,TVo9oӇvfsbq ZO"G} ͊+܉MMPXkG@Voyut08MRZZ!G}.%Eve:{nڄϛjyUeWrlSpVWy#V_Օo$fUxfw0ZFdaWdZއ{<*b_Y}]{b?!s3n,Eyo4]ny wnTY.f?_TmWWcN>_bw_#        ~'@@#4aȘB< X1/So4&3=)38%̒rvؼTE&U͸ͨ4M"NvS6 /_c5i<#K_݉מpc?v՟}G %oU-[<9NJ>fQ=G-uXyl>M&ZCC-aQv>rgH'~õMXkV(Z1=- %$:wmkߣ9ϋϩ%2`^]~VKKk7y,)=Vٺz{ת/W SO闬H\#{bY*n/ξ /[|\ 1cm G\V_Hm\rFkPbk'Z_b`O         '@@c5>-5ͳGg]_-v+7St[Ϩ'|\!:R.6FrZ<$ϖ֢uk|?8<')"<zX#n[)#"u+P+|ߓc2oǃjZG8֋m-kGغ(YPEvQ3lA'>w%xfy]̻Rm})jgX_c˟y1XU?UmU`㰎|43sX;,;Li}?Erf%YokY_y|v_ f% h A$ܳR-Ƈv Sx\GkOVAS:h}]ƎO-]Kv{+\vmէJ'޵Tvn?Vxp\i,އI/zEvFז Ð.ڴ"        !㬾錭 @-c--dofk%fIg]ш-?Z^=ڧhpdɈIFyGTto@`b| 6. "Vhd.sſ_V3"@kUzcU +5E -b eLQ f.R8w*=,UVv uFaeW/w!eSy֓&zIc->2K16SSEtb:/i%젯MwPq v|Z (_U_6{ݿİaja;(>"gޓu<m"JMѻ-m6WtqQ>Z~M[|vKhfry"#vţ//KF|RL3߽#mw9qrspƚUd,/x`$       ($!G,ͪşY]a㳃u~Pr?Yrڃu-}g+0o4L$j-wUƝ!N [nw歲d=M7k?וAiQF&~{Ŝ| [oŊ:D P={;JEѓp¼_</}Ke׳{Tc9 E{nI *'t\#Ůvc__]j5_b|!f2_1_ANb%}J0\Z Kd{{sȾ_PRR%;ݫ%;)az # vjmE{_iוGD$@$pw<=` L1[1Vt5,qH->W>VG 2"qq=}^67(ǧbņ*U[V).T}&I_=SBG<<5o f܍Cv㖠V3{S:Ao[X%Kƌ)x?8/q~fct\f+{b:܌g%=~ȯ ~7:ZAȘzP\)T-+@2Bk.(_Y_W?3f՘1Z޻3{n*s8oꯠ;!q=XnJܕD؉kQ Q{Z\eXHHHHH/ tgKƳ04S$@$@$0 Pȫñ]oz6يꁺP^n6S[jKư.6lͫ_ 9[M)DUgaf{Cƭ=-%[,&w楚RiI 2R՛`L_ QM0ťqRj, ^@e:Z-wXV}i%Gh~(~(O KƞufiEi:[2 =1HBzKndM+ky7ٝOf ;+3E)*X{,CD<`}9(Z@/Z2B$@$@$@$@C@GG.H wU3  !WS׎w^0iw\׮e&tl/UO婴UvUq\B8Z#!F$Ss 5 ѵZƺ*TA1FΕLOK=GŻM\ լgL @T#3g*A*gp_e]Zh FD R{z:<@Y;媅pDȋHzK@;kT =2}K$UNZy W]]T[|TꝯKuҪ*j*xi&Դ:_;y6q_{J`JkeSy*|]U\+Wq{=ƞ'`Th؅ST&CxmafNU#Rk4HnJlWKqDMh+>FIHHHHzC "Ro:w6Uw8QdЦM萞V mfRSJK͹6lV.e7[GpO`"S2y99]۹PW\} ~*iƣݦ X/b$h]XϘ`}!d(4K3\ &.=]3 Ĝfd6+} X#ku!F+6lFD/n 0NolU&DD]0`L 0&=yåNtvkO7`)jb@ ܌4Pˢ`TXsS` CIFtWwp+W~Fˣc(d@tL@ 0@d2baLw 0&`L \B _{lg/Fs-'(6ONY-͉L 0^ tS^q&_&`L 0&`L 0&:uӆn)O3tJS&$u  ?.^%2_ 0&`L 0&`L 0M {{lgs@ vy4W0&b 2! cY=cl IW`0ۛuVH,IL 0&`L 0&`L \eh_6ٵ`U\nsȄw0&pe P#>a$`Gll×0/u2 ( ~dL 0&`L 0&`Lr$` A*[@Ʉck@@(W^;;lH/e?o '1@$ 5|)H"8 1L#C|8>& ēE2 qfEgjoD@L @$&`L 0&`L 0&NkO'|!AvtH~=ns680&puna_ ~"l'կGu(zOKPLel0Sx0&`L 0&`L 0&pP޳[qg`0 vm>O}ՎG&bϾ ~EhD4NM{ \'v R?T>;}.hAztyPۘ„. 8v5`j};`L 0&`L 0&"luāÛӀ`G("j8N T0\sZ풋`ɢ-E}3[X.{b|Lw܆SuGq)@l9 q 0&`L 0&`L 0&0 D#)z֕ iN/i$@wIcL` {x 2U){B{X|=@XD ]]hl'vʉkG<'/#:?C)>aғ`L 0&`L 0&`@ YoDdxKo-_-}_ҫf=Q{⇒N0Zkw\s,1/ .$'ĽfK`sw_|w=h_n[0Ο<fJKB!O[`p 0&`L 0&`L 0E sdNgP0LHL>)?76$NGev `1c;HC ~Bү[F}̾J _ ? G>PI~tLml  ֣`L 0&`L 0&`5Ϲ&gw#9ϗ؏?P5ێ?o@{Ueuhq0&pyPD?>}bd%ů7$APs(ڱ0Cȕh`GAm[>LH-< |(ݰy $Sd{gQ1jws4Z Kow$;ɱDpFn*YaIB=/㏽/0?.Gjta}y*,Ieਗ+} &ͯ癴x8OnHf}YٻC!Xr!2Nj/XhwOɆz|qr%lHl,+?D+M1?^:?imyd|܀֎35q8~T׍+/, 93NfL 0&`@Snd-(۳>mof *\W4tV E%_4G+(|"CO;nJ;~7BaL y Kڵ8?=qo2~u3VǗD%a3lCؼH>]YNcL󷶡8?=9}Y42si%[7`ż$I3hFٖ琶b1җnEywm'QRRB[>ĶR9]zv 5}e ebzMh+s#H2ljBVSĩ1.>MJ̫h Np1[$$bڜ0yT:i&RrEO< Z`(\_fZZyIOX0'0NvkW'}OsU7\ >?- 6XTKFO#akvszmg? `L 0&xn \M^KTVƦUxj˸o>! O%šJ5[4_<i[yM L@Xo#56UNWW7~:\<jiy"4ISci@RPOer'1&w!C6 Pdz_EsTNYذgm^E(K};˱k;H1zP}x);szաLuϷ_7/TOΉVЋssy~D__f|bғcEak؃xO`J(_$Pk\]}ྷf}o5z^DZa:4en-袮&`L 0&pYHBbdO}5`[ 2ǩoS@`;j[:$tvWI`FJ$ho,R?q5h8Z[[iOz&"ܗ|{$-|CU> w/#ۭo M'd=oFk P22b1o7}{jpu8!l},B')E+p^FߣG[ɌJ1o6.~a{̸țٮs'k%t0B،ښI-cd %PwwLa׆'ǵxA]5' 8&/}i>OabD]Z3^։}s6f\\g:C܊ER\~ 0r.I9uիsx5RY_F'-Ğj]8U~b6~2c`L 0&,*󢧯ZAZ%=O<:Sc'7+}͋N.:3?M#uFCqsh(>H%k_F5& ^.$:i,vW:Y2Zs{(y{AℯcH_'Ο>o#{q/qM ƻꏽm8{U ҥ0#Rj}nY{nō0 Y}1P6&pUF=L~*|~4xΝ#(H h@≠vb_5ȲY3i"US;q"<c!z,Ψ/jǰ$i|nFj:T"q_ohK aA{l4j|VVT%EEX5o5Cיks3hDR0[,daHBBUJH8v✴Oڵ߼1MN6űSRk`|{^yTEWGAB|,"t+ݓq\':H o^?TЏІ憦X0h36i,&$ddJ鳿V"Iq3hAkfZ9u!ۓPiQ|JlAĈk1.6ǐ:I3t/5g7 VPf_4/9kPrQWXBe_!B܉ Ҝ\{~ԱG+W$$$'Ow꺒ԟ$nLg}~̏:NqnmYI@b}+U*QbїgCK)sW #g(m܄$Q 鶗ZOq FGR!3!ƯU_Ii&`L 0+Z-Pm7w (h 9e*c|1v4&'H6&]$,~ .҇!㱕>谉X)tHԓාW {]vZ%3xLky0n7dgңIn.q+RFg-Lj^(ƚU ܕarΑW5j-鋌NVռHDX\*n}`G&pU6 $[u8ҍq8shէ2#_;HHawP7D[@oX3KJ1qBnO۲/t nĩ9)S1aL$\YRiÊv*g q["iDݙ~7qy"i#lo@ 8\8CЙh {4HD*j?(XZ-Yr~LcLMAHPgc$-/1~ ,zsq=>| e 33S$"jx8v8W )4➈qQq-Z1_76uǻqPOj'm;J@&KcYYX|Dd Zyw<ίN-Ci?"5 iir#D:d0 iyZyi0|pXl_XioG { ᓷÆ+bs~,."eߣ;P >r/~s{2}NS|*yk8R-l=ZoÉ|t~9~N3?XћհYz3>k>}Zӗ6"??,}Bk> Y}=3*3#kQim-"߁b+80&`L 0+@$G8䭠z[&̚2ӦMÔӰ:Xk?VEC1!u1JN4O;AZmFOa;OwШ)]#ץQ")bi!޿уg,xx˜gL*%J"9>!$ї7wc],BCB\×h uuE-L7,F%&yA3B;2*K epkSy..VzJ݊K";F?&hUsiO>IU&&$~Oɉ J\Y gkE#2ҍx zBv5$7 QQ+%Q kRNNhQ3W0)3ט;˛e,Rd(ztZm&p Nmȕ(9i$Lti$!X^MZJuɦt,w)#{\*v0gplz=z>8l,,YYi ٳȊܝ~%yzG_XOHtt%9`L 0& 4.1|l,}hȌWؔʧPTX¢?N:!WPU^JcG*U8 TѱQ_GPQ>_ yqTbj16?OIzjOTkCUEJK8mzd-(-%V=$V%ʜ:53ԫ \}HCw7 }@uah'4/ں1x*)zOOga5] %OMJ]цhK)q&#G@ 0td/Cn0u$kBiL^@G'úuzIl9bu\3G)Y<s|lv>T _\=+]Q'<:7/A,GQZs$ƅNZZ&*v<%l{ G7jh;S/㐿NQRV6oevKt:ww[x K%.׵Cp=dO kI 4aNSh,-8FLkL#uP2iMHCNd,C$!dS4n)9n:Or`YYGl9)v4$2.֍ >ӄmHE"b)#'[0]_M}[ | ԅXY?Z A2VkPR"&xKZcPTޒ Ƕ[mx?j8>_]=Lѷ W 3ukqTw|9~w{Xf|TU+ox{ fǸ 4i}1&r(f? 6}XбS}DHzcag1ܞu!p 0&`L \Z: P(yIL?_>-xj|̈yO`AJ9i~U69 Q : Xyk b?t| ЕŃw7Svr$&: >֬y L{MſL՟#EObJ,<`gd\ \\)z]Rc\9+Dexd,6x2:w&&%e9|+.  L^j,tqH1f= l=h+F%dtݞ6ߺY+tk?xō,mVh],XP$yi-2b]ѓz[֞c~EP@Nɂ_viJQ8 e#5;4yWZ{|x22.{2bdqVECQHa%xnԮtRbu׍G7b@uDfb6PUQTе#֏H冇4ncsi!O)OWmw.Ϧon+Ԏr'j;u_"eǥ;ެQ<8uUKT-ǁêq\X8ciz^6z;h ōڮ|,)XVJ;6r7S=),Eͯ`m"%v|7 +g5rRV#L 0&`L o"i B0y]A e.²'~ kH͋K\izJHo{>-Ц郵%A9N7:aW.;l䦷4COXIz$ K=ReĎwy~Wo`h"AP}2>R'm6E',y"L`HƢ N@LE O+V˟%c'dԈC[V$1>_&JZ;>j*3*KoT0&`L 0&8SyxweaׇQ0?^i+sXQBoܴ;J\Sgx)w2Cײ8{!o$%`O*jtz } "SUp}р3ٳxu3+@݆ΎV;BF $GT?]g7 {-$DZ:˺W"ahl"n̓2>g"/zݭp#j3gW#FΎu'= 9mʜ{bѥS:~)+V7'k#77=%;֐&yo@ doE(G1~фя:ڊ! sN9)_?< BN(b\f$KMMO.Eqiom+kifc-Ɂ) 0&`L \j)AlF'S!!&0. wVOJQftQB0&e'K<ʠЎ n=-ï_~[S0Q5%?Pz%8x -wi8ՠ4uENo>>N7~><hPCLj'E~:Z#6 mO $υn9]ą M#?B>m90OܼTәJ _0[0jP|F!:f5=3irJ{ GOI?&(6hY9ҖqWǽ1k[ha幊cd7~sf?C-g+H(ܱ>^(?MN(v-c4+m]4-~)"iꀿ HHJwXfl$OfSa ABw 65rE}_?_/pSYp0.h~E?#4ro0-tKvfdHnxW+ ?xOy,p)~;I+/8MY-`ТI'7v9 #z'w4O9;X@/#*JZ}0&`L 0@C>HGƌ ̼+I`ȁ}ܺ уKU⏨Z}oto1-~({ xETIc$J|}܅U/zF*fG{+ޫ,[O؛nF G@@GIqHB_8v9ycR[Mv) 2Gn㮗zl_3x^+oÏ4 m.^մ9άfĦ(#Y[~᧧xHq`L 0&`L@!Ѐ}Eh羧~s7Uob l "?=ߊ5zۊqozۀVn7%VIqpGODcsܔpD5&pގxoV FEB:;`}`C,&Iz&p6oŦa ~7W>u8Y#RvbB%o\~Z$?ɛmD"mqc_1ZC!|,JW934^ꋗ!~P栢ۭ*'qxI;8Xf- "#.u2v5! &"ML£nBӥz]3[z.,So?\;i< ^˜ N0aSn#\Ӓ{3tgXGݒoV~L'z9aZi,98$SpuuuՕQnkgbur?3-͏?}|d"DFN91.qL{nFvۧ#f\N%ىCXG)dݿ&IJ)7SYYŲh?N_]nD UL 0&`L !}}x\/,jTD(E 7& eS: /4k]Īgaf"oDPW/hh<[;}fWnjD;!E_y٩~*"n'<,]IkbŸ%%@~75ij]޸~6"i7%?P^pnk Oa%RVJLɅeq;/"CjOTaNoG^-[J~cZ]A#뙑1 8ĺ5OSA[$=Q,PRTqr!I'ˠqlQo2ܛ!?Ѵ7˱&}`ji?1ƺ,4Xt^% ; o9)R8^}.W;GKnIGQpZ6vg|jdHta=\`_W,qny!2ف +r$d`ȥ}KwN~s~SAӨIȠǂ~[θMQ<\BLsM:' 7M,!hMN?ݣTwq :=F-Ҍώߐ>Qh`Kԧ\%@0&(X,#N ;15rJVجgq3@s~4]q ~X49|pYen͍V׈ +~EsJعkKghm ЮB+AHֳxeY&e_rx1NA4K;' WэO'g6 e*Rқz NPh?3$kLqѝ&j)q1iaVCjͤT:'Jce\H‘By^m)f\0{c^I(+,$̄vgкaգ;z{6EFr1gS֏5ii93aBdY,$kFnꓨng<ڥ}z?;?>tɩ(̘>+嬌[ IBӅX;]&_F.R6w|yyN9bb߾|bt-d0 8V2=;&;@JO2>uevh0yFkIE\ڕ(*P8`L 0&p,:+ߋU,M"u\Z>dNC&d fVF9ZaWO)aQm,lXo%VSbQN4Z{EȒ1QAhÿt_&>_x՘E_SIh7q&zkk9͛s}z?wӟ ӛsQFQizԧiEקӜ=o8}R6ʺlԎm8#LnDxu>>#do|} Zy]H8q}>E+ 4_3"Txh20xD⦯y3O[w#Eo`o}Q~0 fe/@ĥ9ZϞ0bm8 0xQ9 @GGFG.9=x"m$F њXRk{xj? ;?qmy}[dZkZjH舞ѳ GqL<$1 t[>@`L 0&>#͘~m{J~mjK/).ݰ?>GSy:E]k#"Z5w܊M>2Dž:(t9)n1_s7իv}:K6jr)ao`qc>uUEie C{x3yR?WS);`>SE? ӿKEU?NRj~OG<-}yj蜮G>U7tSݝԸzן2^con 2&0P DD">ˈhL#0`(-βGbAtêV1ѿ"ݵp%} #F8Y;Fц|GsN3.>xo%>^=OFZZjL 0&`L`hؾˣ~qiQO^5DQ#'L]ܷX O,'OgJ[':JWYܧ q#Y BO/xD䠽X2qai>;S98 ؀jVa&Җ"wI}9-~Xpp 0&p^ u`L!pOh;ڒ" 0&`L 0&.MMW܉٫^Iw `GS]"yדc N)(nTd0&% \DGp׎s72q\)?B7碌SsOWQ|5Oק9џ{KOˁ 0#PNL]Qh0V:tds 0&`L 0&'.={f t!~6LM JFv'N|xhB/xbLL{-:Ϸw`~zEwÝ\bLL@{Yi'WT/8v}TxӲ<> 9_~ \3eP.=WϞo}Jo"As"ltW!*±;q&p`KLS|TםzTly:Wyj\=jpE_Q'oL 0&pe (=w6ا`L 0&`L |5jvc=}-4|\f_,%tJ.9(XA܊ҟft'o>cCQDB;ML 0&07{ f6riT|`L 0&`L 0&#)+eVḳ(v'S-@8<W`L 80d6DO`L 0&`L \.~`C0ر!D \tz6LdAG`L`@`9-)&`L 0&`L 0&@4lߟߞB111ebQ^ ۀP'aMJy>0&D-.2&`L 0&`L 0&$~bֵK"4(ȍ׈‡gXϘ`L2!e2QM&`L 0&`L 0&ojWgMh;׶PQK̎OJ|>gL 0˅\f`L 0&`L 0&@ ;<]9@|DG;5 h 0&.w,]3gL 0&`L 0&`L;@}?OnB҃4詅PS""`L/,+1&`L 0&`L 0&p >϶}ta4!,ʱ3Ϯ(]6Y;ݍ. nz-1 ~W`L 0&`L 0&UN K($;ڎ.0.vMIprkL$U9ch3MfX4/&X6O}u$ֆai=;vZk]:e00D2޷?s&z;v9v,]+`L 0&`L 0&VB҅n z=d`]M9jhE[h@([B\ʸ&tJCBs0XWhkz)Q>8! vu+'k6 ?N۬6㥅сAqQ8hSSvQu JnaqhYTrΧU}q{k`mj,0t8ւTK딢DmC$.v[a"wa;P &p㪇`L 0&`L 0&Ŕ*uў}mz*LVn@Sh l!nAcy>0s I0 :^ fT7[[$kBGzڛ[܊}Znl:DErN껩%5rׯ`\N(T=#TUm$ $ 5=рs|l\#1&`L 0&`L 0&HjkKl<@%>jS O:\wI':;HPYZĩ#YO\dug'qSJzbH~B~uu ǩbGڐ;)P@jY]:$jURzT7wqJ4U>/n6f$5α$NkUg` ŠPr YVTr *-yj$+Sf' o?WӜ >rM^Ǯ/q&X5:ja "yX_/CC<0Ds瑌_lxsy+<;@eG1_c:W疑inw'ywuDɃX0)at8H%[=6}o?䥯!'-FZyBN}WNps<ͱRk+ϢL$鋱aI{R㵬GgPl?}/)y:3``L 0&py{] A-vB7lgT/!6 F{u^uR'u+}R\9$R$2HOH0:Z nLS7 ~h]7VїA@YuvIKBX ݡ{hA&M8|caCv%6켤~Nt[eo_o^oᆘ@'0< ?Gl./7|-KE>:xfǝؕ`l3sH U;v %Q?PrJšߓO͍D?Ӡ;y;zCQ.v%c=%z!*5ppKᆳݳ8в%v>ϑq)lmYqNYkg?Wߦ/Sbڜ0yNmM{`L 0&ggGVd7 dEu@uPIAR N+0!$6  W>r뷷#;n#+3.އd(RT",ź+H{ё>Siпssrpr_ FG[bd-hJ橧O=.߱kӘH/8z37q4i9(;(ƜrM٦Ȍ .HE$pcA$yҕ5ɺlhokEfXɒ2 .hr",V--ʧF!>:PPDFznWP-+ hniE[[iׯu_}Qn L%}`{,'NpTsVD/H+؃st $ fk v/@ܛIrJw:%IIɸ1JvD&/PwwLa>@ߣGǎ|縏kwYNNNP=㦙ѷ_QsC@mk7a^,2PXC&"ܑ\WÏ'!+n"u8MEI=҈6*<Qccaroho0=^?=A(wV!obl(7b )jBmDchx4ƍe\<:a=JN6v6F"e`8L?hܵ]8j?8 "ķ6 b]OGp<~} bFy~|M$83,Ʊ3 KQmV֌LTc8qUcq~rz9d CΘoq̥1*UM;fkDR1LG֓ 8qZ '=F`"L2 C~؀࡮x1%=ᙡ7q;y ڹgh 4Z4޾)u 0&`L 0 8QPuB(f#AZس8Z7[@nW/ddL{ص (:Vr91Xӫn wFH{[}^pѹRu7փf=qr_qfA0YzvwXsl"eIRs;Y9\R^ Pn B݊6~ƚtŜ bF0Muހ-w \UN/maxzdP5kQ˘wQ"b2TGHzWۉ I#\/C~ BـICn~*NEr2LވYds}{$CtSKR;2kȩ{+bg#_%㥪א$z5ŖGw)4  rż.DթMaZb6kPѸHq'<9uS+* EnJacgW"eQS:&S^p𭼧9k(+Җ%)ښkea Z/c`e Kwufڕry܊7ĂʅM:ϊeñ@y$W`qxen$I.gdp~ZCk!E՘;|tW4bIo/ss6" \L2ʚblIhƲIn˗o^}hUon>e b_rz:ɚJ݌HV/fv<#F/.q*ϨHvoϱ. zƖm+Q]jd܈}b`)~0pn>Q YƵ7\E|q>=:!h7*zzz('3&`L 0&WӍ.hk\m qu(DbڪžH.F{ @la=06tuHMaT@@nœI v8B\ ""Fȕe'Y[6;w|}ziMSM?R@둬O]K{LזRJڶP :Vx!oos&?0(wEM'J"Pk$Ϝ阣O-ߎ%>X\DdPG{č Z<7Ҟ?p7X̣깨qY.ZcTM%)bҩNA95 N }-QuVcZ5Uu8uMGa'S8J{۔qsH%W5t"8:yPP#,ja]xEXE˧n^sc/)dEmRr6*^9ړ )j5ys7* A18'6>UJz-NIfW(ts,Bz+ƶPCv."3ŅŨkp.|T ^Xyi8lHz,@ƪ1ެ"²h^ϝ:=mdҕ5JV;EL1^/ࡀ l?u 5ŹZ'ri555abqMi`L 0&` W.…frIY" Iq^ q'%9bmCk4γr$9i5$_vuҖ 46e/@W:Ds$5Zhiv> {-"#6S6Yp܌ _\+tCGYEHϵm+$5CK2.b> &[ʳNrj%F1Zv6b_I"nK E@6ni\ѵNk֠<7Os&\Ʈ2# Ui!Ѐ? 7x+wd[Gu_wF5X7/{E##g&Vա#m_)s6'ñO)FEOAE&^eyŚN^o#Wr%H:$Û5;HTs4+ lٵ1ƀHَ"MX+}9@ )KJ IqYg:J F UcĎqJ~ޭ'kZ^`Co.:Sc"ӰH+[+?ش$}hΒGig$&]=wGsL r֭F?3%9)ݾ3 d<>k QRMN+C;ɍkdA:g/ճ@2ƅ/q:d$arl4Ү >3|}>h䈑>xp 0&`L 0 ">$3"oZ°6+nl'π9Y{z!P &W$:"Z'p(kA.b[Fc w.QTg%D0bL#I(b6hx#bx)PM-)E*bR!ZjZck ZTB!rؐM-݄\$sxtIbqF;!͓ T6WБqG^ -ޤIPMhv6+4l=e@1"{L6񨓹rtdQS35ݡ"O$p䏡sO'us%J\D"[sͱ`؝E.%Kް{V&ِ8a˧͔(3e6xr6S&㢷~ϋȹXgf/jo솢M92ClXQȰoh{To\) ^~υj;)ݻÿYhyB3cT!%a2e݅a>+q N~;x:W3]o6^o1HHHHHh5%ҋT0ڸ^a#yģÎZ˃mg;G*y'v\>46sX;^WvDoBchF:۾XBHL p7eBU_P35)qcV렝ڍWb~;O1ިPZmL4XkO~-Fjƨ@;OСz!'EsZTf\ijLwUj~Yv sZ\~iRzk)53+5;%sIHHHH@ۦl{(1jGq"V]hu. ?loD}ZEA# s$dOkP\aM+oXCxPUX4CUG0<{~S=-ȟ˵%-Wo,U Rkd z<~3+oNx$@$@$@$@$@]D@ @DDTD{&vQ'BLH"㈈1" $@$@g2٣gz96?3<23sLqVXu Jz"j0~ܵ^\ƍäIHˑفgX0|Y~xF`;ʧ' (o/ջ_׉T+Y(=tFbxi|&< xesb)[XT@R5:LD= 1`&MtXS5HH ~<"SHĥ<+$f c[7>=:60="y<6s+;[AzGqc9##*H^>Zabz#66a$W޲!b'm8KV9e dKB9gg{JmNÀ=p7#W?3<> P\[G%&,Ȯ^IW,z@ъj{_ ~>IU1ثdD"}Ұ0 @kJyO^rEϛ˞dxΫc}l^ĴȽgjjvp#2YLҧlGɘnYa(vjS^qK3<`@:C#<3}>dEy7 K7 'kau        ~gsxgv+wQ\3̩K7d97~\%ӋΞbS:۸P0eppd$m ?bnR2))vKT\DŽ K5mgOjQ7w~ܿ%9o܄Ņ&*)Wa> 6V }UUUXW_̄BmxyTWK_ήrvaӰ'ָAs57y->/fw=e_Q|s0U.c+.[:UL"YH gϘ.W*tpan-2ԘW8JykqiD3Zpz0e1kj1ǾX)(dĥQWmOx]zeHHHHHHHH'UK3{O\=et̻?iU|<=z:qU<:洯}BdFmT%`]M#>"a,szsdLwǡ 5$=..MI4 [.+uD7{_6Yzbo/*Qqq kO][+كNlGIcpиl S%: xog嘇x\(^U}Z,e'[[ E[C%?e ѽ1\j.ޕc`ۊByJƀƽLjx3:nhш|nz` N>TLIIRU ֥N*H=s0<=G"?~+'٬^ٽLeL/7~Ksz;[\9FsIHs1T kU 1enَdaC[u3&ʀ  Yz/9B/Eބy6}((Ώѽ2_st ~1o2tGdCj3TC}ZߗD LU|F<:y'Pn;pmxl Ek8z~ AJ/0t= Wg        ,:KIN j6b'o!1K ~| 9T+"o_.#rx<jn7zD#Kَ,` @B-e! !#-G9Azbņ y[y'd4o=2覯_{Q7^1HHHHHHHH0;& x':a9g3-:cqE 8Ūys@DϱpIHHHHHHH~ϗ#$8i,5yY,IHHHHHHHHHHQ\xHHHHHHHHHHHH @1 9JYHHHHHHHHH ܂VQb CXSVoiCHH",paHHddf?$@$@$@$@$@$@$@$@$@VղdsӵV1mb sZdS%a7e80F$@$@]IIY$@$@$@$@$@$@$@$@$@gVmiF3 IHN"N"lvE$@$@$@$@$@$@$@$@$ph>V1qIg N),Ma=֌]z6$`@ C Mbs -BO=,L Z͡8f)ҎUb\O'        8Z[ѭ< A$@@ zr)雝Yh;ڒ tw_(b"䕺=4,]Q M*ƾ.4s!sh9T      @IDAT   EMmٳ"GxH kYPHJR!Y*CBB@lyZlhkkEkh8B\j~ $ ~ި0HHH$`j *Q Ze>ݿ/2nًqq)?E$A $4L>$H,"_fgkF8>v\} mmnL3F&|e( uQG_a&Gz_~G㈈Oi5_¡f}.EB\{ }P!I'fjP/¤>HNp,=Q^1=i $^z9'ҥ[ L`z@ZFϥϧ[xp,:k\#jt]W]{z349CYCr}K;5'7ϿQMpJ+A@r+9Tƴ*`zLܙ)1     32i!$ {B-_YgШ1 )'bbf#"4J:+ݑX=lr('cu QI9CdK#,mbd /}'EHNG_aiyZS& 5(L[*o=BW9JQo0r"| wb<1nEGZvp{՘|,B/뇜6;=T'#+yx﫱ZNWW*Hv0yEKMC1&'K/ k^SI%kEnV!ּK NG\cM~<,\,(d.ā͘xH G|$X'7nĖ?3䞬()@s~>sQӆ Gh      @,Rxs>=6+&9HH!񌈌Ub>8.7czꐕ.Y"V?Ұ:>l^{S[T;\< z6$`KH& ^GzpF0xZj 6MlGGx5J&a`j-1#kPCT Kq=R>D~WGcjZb*_~[`ӆ970Q2)#~U}ogIp,;O*ӱ짽n5z{3V嘔3׺]cBRWcjxW*W f>bnۊG{^*(7hnH!Tnl. IHHHHNͺw fqCf쳏&; D@'k}8|9G8zIhƑc6Pq-OlDɼߣձϨy^qb$ r% Ε8]^p)")) Wn#vVL*Dn{q2/2aM{p/m@aIU\*߆FY6t t4g;*:YQ>;OLG[5qpNlY SyMGf6n3*ctl185c"(ylyĦ05̀oG`Z:F3kPW-X`[uH13Ap~czn[ި1ti+T{wnCB#(!tN6VQXI7U20guj:&ɠ#H=E77n'^w']\@Hm3.J$@$@$@$@$pFhESɌڊVXZ` ѣ$@'@h,R∵ V@=Kl!9QǞqS寽 _~¹7=d3/4"|8KDN{mctYX,kF[+ikmVxAh6LNA% 3+rTqNꇌ<-*7dX_urvt N%*ɩ9u7޶Ÿg{?7bo@9}+k ',Z,qHV.~/e7_!r^E-f F|\7R΄Xؘ8dXnj6Xj8}VrQQ)}آ\KO9h?Xk$L+¶ HBT\"2b.})ZOPuN#gد b|Jx?'w.?N4ʵH|&~ZKٻ+rB)͆T!RԥVwnֽJW4{xJA؅C~LۉxO+>_1#2ףru{ j^C~AߠaP0*U$Ye8$Cvot1OPv:Ԉ k) 4b"qnVڕKȕh⋺2͑H*VO ;2i=)>mG̕eoݭ!~ռ y7k08 x]s&KԳh;fz_O$@$@$@$@$pd;1@wfi˪B)6l2!76s־/{9V Þ案 1m,YS bO:w9iojTzߵn      Ӝb "{uR4$4!6_s.a.T:8|  cr˯X$ ?dي+/'Qf[- 8ȧ* $@($8s*`C" KG؛1t5jv~asE)n%> ehCk;iV'& Hg*Yغq#6ol:6bm5vLvoF70~1~0>ۊzlv#T٣ygh-cϠnW3*ĉ-^qI%Ql~F((Fņm)^*k^Jc̣.@xe="SQG%%D܀y}Y> w?ӧP`SG 3P-{ҫܾ#檮>s[_tmթ2ȗpsFquBL+(IHHHH !@w9EJ4QcاBb2d?ndwnoP&L dK> .2pm,SscGޯ7np)2]CSХ$??ݼ4c &`KD XoY狧hM~P<-}{GWwʨ{s29K-{1f}Y LnkӅQmضm Ui|)ʻ šO2l222L0 65v.ݨ(}=f`"q r *wgP#^k 3!aMz/]L_* [6CقBY^{u0,?ӑ?q_}kjW]6gBR0TsdۍBrbբIҷ7zysOz|ͼ4brS-܋m`nƴ=\7ޛUԖkk @v:dDy>ȥѣGp˖u'[|d(Y $o;jr J >9K}!LrUf<VW4^/yC](3d!uQb1/iNM%AGZ'&&qͷnEw5^{o+E2ܓ1iVibX4 MV9'+gG,;e's S7dWuzҞ>aYOrjƸYQErkٹrIj/9j/q_Trma jbL_{ L->ߓ^00n}ՎsteTb*&+.rP9,\W~eޛjJ$@$@$@$@$@g#C1,[&oK>yDb% 'tqH=W65> Xȳ9'}f=x}(rLQ6e&yozLȟjæ\RcOᶫn2]y.3i~fkY l&@ DܭBCpLgޞ'ҭ'm@,AY $OGXN$p* Xwc+\En/GtV:K+cG"ы4c}4إG1$#h>dxc 8 Cܨr(QO*]w@W{\ug({1hd9#quMK6i4HPi,fM)XG^1U)vw۰KX(޼y\Rl,~Noz'<5.{׵VYk31W[[*⎇L^.$I\1Lh3_̆2CɟKw,j*Kٷ܏YcMb9, N)N|8U[1Ű>?SoFWTI9J"@%miCx`Ӱ~#r_]!C`%:"@_GXN u_^Œ¬Jbhmvp}?2sae3LƾrRL qIk$* 5X*G,\䏁íGr`RbS&cfQ <4ZWC3$[&g{z5T9L dl:⟋A7a(g`GQ 3 17s3Ϗy 6!    *rvdZ œ9{{w9? УbX,{+1ڋksxxӐ^2ܒoUPu (w᷈t߰Юҧf8R"pkc e"H%(؆^P4Wxltgtt405a&Raab=,舀\f $@[92FrQjlߋ #'c Z4Nwu{K5il.P(lu[[EnNޢej=L=C;[9WkĻ:RxT:_D_:̧jQ"QKjTGpF4 -IOZ)jw%:?62f6]Cbu:U#nlxQqc֯"[Ӂ6,wG`!{2y]l 50Rȶ>2W\qSp#6     8UbpTͪO|Ec>٧eoCxjK^܌}-ؾn9~>kȩ}UT@ 2t3ǚ7Wl >+TMY >{LZ҂={H<3Wq; ?,WH~Tc(KTٿ؀8y3RP-ϕ OLh:%Yït6$@$@$@$@$@'@OfkG0. *NC\wK4pa_KʑU^ e$ȸCdԙo`=?*1kj㡂+LmJq77hkG19%|*ؾ7(Yx/o(挑L פ i>WD5 ^?g>MxH?QkĚ$@$@$@$@$@'@&I5۷o ~re%o3f#O岗e(}e#=r\R70ՄgJ]_q5ˑ1?ecSgiOK1k湆%?čGcv,\1uVhmQ|m dIN9ԒlޑV T9JbӖ4וJd* $\B]q'ms{q2saGƮ}UyzZ?mCMMO[Ob5J^4h]>Got57:R7mDfgcͱheHM/ݝuqK-õAlE,=U[zqawV|AWGӐߡՇm)6R LMn߈FwhMHi >4(͇0_~^ҥ$ƵdWUu\ظ{gk~ `a     B}&-%% Æ RyJX'>d+Yvy쉎Pc#;ɾV?ؔ<A z[ Cd^, .GlyCmd3%Je. /쉞%">Uդ +1L޴ Ӯw L,_GKW)1|~rS0ڛAT@8Gӗ 6wki8k Zkn@{г۞e=Cv mxɢrlS=Y3<^~sҡ$hꪳ[=Oo}g㢏N/6q=nN:[Q;`E  >5d ㄇxF ONE6X"F.8ɲ|m@Wir2,t\ֻ{oXγ3G·i    8- Xჲ2WLogQr7{fYz~G!~/B7t7hا$&1wcr"<ҹZ3Wbu 1:.KvXlObvOxw|,QR 8k e77Gk+%<~ .t9K%sڍ|jPq2Z|km ;C>R2Y{thB$@$@$pF`鸥fsОJ Kb:e!y,;٬XcM7aFt1uK/g܆~=MKS-eL}~яJ%@l-M8v> \ ``{#WahiBlh6r4cIbٹF~Tk8^   3@MX]Yc#$@$@$@$@$@]J6T Y5 ~(<ٱ4W۷?agr|[,A-s:n>oR7a]6 H>ޔeM{#1 y3Qa=$ph/cNBţO\5ϱQIi*.aIw*>%%@9:6 {OdYXnF`˷{8b    8'o&O^X3NmGO[Ȍ \<Kw;18 \bEHMAz57݂MGawL.g8lbk=k@2|-PcV>g }HHHQțy cR;r\1 9H`:|wo_-~s텱xXXxnvL7K`VһOINKOZ,ܤ,~¨[qȨ19?B>^/\Ĉ־ M v,ݻRA@יܠQv"e Z[ZdyOQsa+0qj-s#=z 6b Ie664Z$OiqocJGbYkt`8˹m7{rcLzqSǤsX+}RTAџYHH @a E֌L~o8fk5wlq>2~yEF=lʅr#9.^y649@31)C^?$FKP%cیrL1u9#xj3m]D\bRf*eHH+ 𣊮IY$@$@$@$@$@$@$@$@$@%pK=WҺ; ZcqC^ 1 Gjm7b`K7Ĝ˰>FaG쏸CzLYL3DdL1QP 1"⑪S/2ЯӲg1){z8jyXtެ&$Owf`@^CUՓ>+7Y;XqIWex]3oތqΥ?zY\ef *aIN-*iM<.y11dT:r^mc j&   (qɴHM< .՛pؾa[Fa?8l%?ƾh}-PY: 98zo&}ַV- b~Ym^Ͼ<&.`3fM2ʘr31eǘLehzh\\&ʟMӤBt\0A$@]L96qi󹽸{9 U~6yU7Ӿ }چM:R1       8>3.nذa]*T S1BBԫj&}0DDٲ7dM{hkXkŜ17cd@1݃-+Wd߻~Td$ulDٻ<|={|'9{68 ~}eR۳#ryV B4kc =۱mLzΝ1og4}ް|X҅e$pПsҏᤞZu;zܽ/_z=U]t2=U}=iU'д6z_~ꧦ79yuz|n/^fN6JJ2~6yU7Ӿ4 X       8(_ff0ulmUpOO=nmh~#vmaQWoAuWIVs Gds͖ΥA UM*|s_ h f ݰs=_i^-m.Y׃{ܜVuM{kٯ%Ɗ$@$@$@$@$@$@$@$@$@$pZADDakinr.i͆/Q@8lbS΂m-6O]O  # 8 ?APy         ,j--`7dx}aằ^Smhʶ7$@$@$p?Nh$O118 bkj6u3md4Rݜm?~m-|h,jbA.g   4uE         8_3[-3#f@*K~#D WG3f @h  KMO4>/ f4Zd@{P{Y%ײ*FHHt F !        8 Zv06PK8"P6OЂ0o G$@$@A/HplF$@$@$@$@|G+ԛJ @ aՖsYiZ%THHHJW         Emkhfk&ZZ'8[ZxU:1pr՜>> \9rpz ~#F|=.=~O̼K<&Ɓ麇5"nt^#<0mp-xTu?y͘{oL`%||?ZT7=4l??{^4q)sɩ" 8C ذ[I}_:_,A$[l?^҇}<?eDEEi3ȥ 3:y*Ҳ K܊H\C02,t-S,Mơ%!`L=HkI%GS}U[MpO/;ǟB]t_u;.I̸a2uꬂ X.g*~=Gd^c2"uf'   EҜ((N<zrdTG^pj^`:&>}u_/cQ5wTs2~),?*΅|D:jtscn6&? <`kD6xe9FOZBiN:XK5m]//yaR{ӝWx;q.mW%1:x{kӳ}>aYk7`@}If`J?nހAOU?zS"b]@m.IH# IFh>l?Y7I_qnUOPs5G z 3%tc[K=g.)po.|T,?_/b§pӥt]Ǐ۶ގbHu3>mU}<*tf*,\\7P@IDATY͊voo-]H{N4t }ܮ'0>ٴIq4x4t!Ͻ{\R]L>Ox(HHH[G[& \_\h?^xcYq:]e䚿426š (/vk/舾ǴkśL>'5ApUʰY{%co7_x}|ӆWSv4nW:Iiݚa*&@l.{}T4w1 *_`xSAP )4L4A+]u+궡mQY֣壴`Y=ni/JYniRWJ2 {ܹ o;:9s{9hb4֎Ș9g7eFvW\.fIV/U9N<ؙ٧Wn^R@2_{e\/)^{n},נx'ø%ړakL_$J.e=: m(_oUrĢMoˋsS+8E>lCt_ʘ{]3RR1ԤԘtw•zxv]d|cC`L ib8m>6]eF݆y:/m%<[Z,FreҵxV/p +g^J*mT.{/yO4hy%}QFoU߾uN tO t]y35>æ'qHY^O-|tuE+yB!}mCMLc/Ŋ[J{6جl[}9NO>6T^#}ن-̓aY}&`L sn+ߌtqQVT{=x MkU.>oCbeZ\Mjv _VUl}&A'yA.rL)SCk q80NNA!UY|uSǐ=_8^+f@!w.H COWgiiܦ#k1N &ZGA_VoM` A=qY׎}pY120 ˱J_dúJP?Vs%I_Ӈd—ee+R~gS-CjrT\5:MG?$o jiצeVsbX\URiƫo+9h.R<>}3Tcr|Z?mJi:ذuUƘf&J˱⩹s/=/ =QGX0s}HM_gA}=rDV0ڃѽ+`Wp "a6 fFJF0>ft+ L 0& fݻg6.e K$ M5̲>bB\B)"#}aZM|wDQY] ;]T;9I< qS8Dk$uV2=U_dU.. EN(B!. 54L6%H_fhKVB}YPCϯ ʙy>&eT5o=6ٟK,ʴhAZ8fJ&cuF8/XT9^IcҪE>l*Q&`L 7,7$ gyꃸpo)gҾ$~PSfE'N¤{0+8ke(5"f9hFQ" Y54(;X]h, 2azCD-Y#@QnAonzttPIoǪvt|,\P>p׿?=Jk'z&]uMYVkD° ^+"Mq{Pd`1\{KHscM"׹j_iqʬϴ9 LkìA-S^:=ew>KH9y='3&}cKi7oN\ݒ`d aJt!׈oξwޣ e2-ᚗʯٳ;E~U\v--= ֣tiNs*$8'kP;ҽ0&p';*J)D4) >92 6bî-+Uk(5wRWa L?x&DiN]@ 3aBGpy=2 p XܷbRtO#\]Y;R%O=?D?YN5?iW5b{lOy1 _w,2§0{hWeX'?^}OO˴!\ b@),?޷ss~־܄i‹MvL 0&@85fntd^%HC7+|Spw(w

_w$(쇍2eb܂>-+XT2iy()`f6pxY:/m&,;=荂ݯ$r˦`/O!o>3y"5|,[~l 0&.ZNשc 6ޗo$rIθ\^o hbio:wr=3KSu'oYsx5r&q2g+`е:b_ƯF@)ëU[[z7&`2#kЯfF3fL 0&h4OOam+0 ~"~,ӗ䍓|KQoװ%z"v"I"5r >rĴk8-cb^RX z$o?$`h(J`N& ~Wɨ~> `}T_t*{[*nar<$%Ri$hÏ8-1f06}ꄱ.yRK!1xThRf=9NO[&,DzUhӳ.EEwڕfva>;Bni!0[iI&,I%~JW4ZD%"syrF)b<[_fvZl+Gj#Sorf R&1T Ai6x,V8`Lpu0O-^#T$}L3ݿ|C|i:n'g46|#'Mĸ>rj{E3۝Ebן5np*zk:~(, nL) ;seyorE\Cmw`KC-u/?vM[?DXɕUU$Ѿ27ôk``;|Odg8&ᐘ_9<u{;6}.L 0&6y.ѥ|O{6AG{spׇkiSt\?(ʣㇶ!U>'OuQwW8s ΔEeMnuf/jZ 7w&=EmCU^i0qe!ГuV:OsD,5e lTv}WTWT36ثkpmwCG K焱G-yI˒`L 0sE ͡9WCvOE_} J`q~+^g'*Rqރ;K7#Ga.#) EfaøQX w'n\/a3bm2|ttwz0!Hb͖{A-{4F-cNJih cˍOlXT8_m({#Yxh_.c ip9B͖TQ^E)Ͳ]>gmO5b i6`:pG!Z :#Qvs-&#س^?L kIuw^;2f:6rvsJľ)q7 1&9K+#ì`ut)rUsT0~b gL 0&؏cKk5Np]Wx"eٗ"gG _8q%gTr{/O@i?wSσ$2:=_L-SY]CIdr]{}>f#V4ZOg$4uvȕa +}oDM|.Wg?:uF\ vUFhNtTPt}+l8kWCRCWv(y:t:v2g[M i-qM&I@ 1 #(.vq_ˑP=%pdQnPSrE-73c.ʁX63KV(!/C۷Lr@D'\CҒW 1dIH#VK xpߟNe7棗7hC"&dFo߇oS,9b^M=GK?6w2rH]/T¿]\}^Oq=,BrGvJwN+UӒ*ݦryՁj;Qǯz񴌤yfZV lx+,֍6D\MjBbRQo)r],%ei֬yԴu 0& զһl} R1P֠Y-/։N EpP ,O\3֊Y.kv*flƋ\➧d2彨E}yД$o6PWúva nFv"_GA l$^f*u#j;P`Fn{DbQA5Gթ+9.&YR9`L 0'ʫ[y$ o`]&Nv ;uݨRv{xP5}_[1k# FkT(PZ#g< #cod}{В{h&hCdzh^X:5F-;0%[K@’ GW7?HC&[j-\m#3YKG~kt6HB457܉Y^ؒi{L$c`_Uepl"ΣYd)CHULK{g1*u$I K7QẺ(ڑ(O鿾'9HU\6 S7۫lK牥f/'gg--;&5S>G'A`…~9۲`kL 0Ap^SEG@S,Փpơ~x}O'@"~w{2-87(Oܴ? !>/Iꌹ<* $zM.n*K5C{rKl<ODd OZ˒ mIɤI=^St zKӔXH t<)pU* P*k?aL-'!t@ Ót?I׭'*Dz,-:p6Qi9xtlnOD}y^YnpMĨKg%RdSCeTP 9c/'ƯW!ee(ݯv %Fy\ 1&@"`+i[0" .MyOP]G )3dYo~##ÍBn0L\g߄hZ;Vc~ qm^j\ Ϟ3gDKpe* 3:gɬOʝT7Ns%;; jYo?`Aⴻ`cМ2ƞ%[Gv?{2TM"],acyS#cI?aG9HfKjoSճP$N̄nE8ĉ0BWkqgA7:oU3;(6,gs*aznA)<;]7Kϟ݆MX)Xנz4z`8BfUL?0|ԧH]̈SrE[1yxI^ҭp 0&y'% SC-j$a}5T2MN_xR.wq輏mv@>]RPk}#*! |RmoaA q6@ʏlņw'\gtEeWa^Qۿf v.7ܴ{ՃxJ[־_4G-%YOToP(lـlC,'HmH'ȸޗyugӲ{r5riS@wF-$Ԓ%U˫/jtdW:&2,}Y @2('`L L '?Sw'Y@. ~~dgf{S尡xbM:rMINcfe~Ӝ3ݲT:za*rX :5u.IKq GzJTz2ԓTp F;+݅S"bGxvI>CI8:wBV^(<9d ϰQ%QiӦOC92BP{itWq@rS!<ޒ Sf[IQd.ܟJ0R=`|.|t2}L 0&ж H ORTt/%Z5rXqt ,kL$MKs. W }뱣i.~Rc\zOdv3tTFc@WifgC ryKNɀӯ6/4f եetu>)N!7 3VA0}r 髱iUI2 TÌKRͣbv̵#i 9JeӇatg&tƖxeT3G=Zf0Um|W1yBLȞ={ g'jôfEG&9b$]~V'$A.T8d~H]^cm]52&h"ҵjκ:$ WcqL%77pa:菟.FFfK99Iz߯~_߯<x7{OpTڑ0QL;߽8KKj#tDiNjRV$4+m})ivKb{@W$L;? d)z(/.BUKqE7;Wea:F"x/?q^vji91$_|YGǯb˴ U |輪Q~U{6J#L 0&<@pEN@'D?a?~ANMHf9Re_BB=.!m!(Tv˅W'tey 7~:'0%zo='lYK6!#ٽb]@c/ŢƱkZ 4:FXI\aҧ^u#cb V#^՜%^FxXe\5me>r%Jr0|f:]7!8 rdĚGJaUD4d`yL.yogR*l\f`kY7m|-18k \kҰ~I 1؎պ:$A9[PtQ~u\O96`L#MTeRX dq 3Zz>^v~NPZ#Ր.WVſ܅A4#̻Gv}oGe g ]7鮛b_x/ae$VԨ..EsuZ*,Zz=ǛV} ֆ3T?n >H%# uE+9,]iWl>4C%sZW8p\hiOXU ;մϟP>UU+0&*dL 0&~ͩɎ9͗9,z9OB/qQFdK_.ӄ/"_4s}[qqvuR乏-շǏ^BP׿'N\4OEod/yoHp~|Wx6W]`No,#,_(-J rPz DXy$`тO8 asc/}jV{Lc'="Y< XBޭ+"{B;~J^ HM4֮tj AXKdVw/D"n}cP|t=ǚًEe4@t^f[kl vj h>xk 5;G`[ߙ!!:e|%dC!?t ہtqpw8]E׳t.ݢ'p"T֩K5n]DeۃPA{[uD"* ]Q j΄FtCDhkqqv?x|ݮ9aOvN#ݩl#qI:PIT8vN3YVL{</t{؏c5z(Re(.VPSYPk?>&ZGzLۀe1qhiBp2ZTګeaQGe@Ҟb怠dC@eK:/ lϒd=`Թp >kQ2>ߜ'meܖtYNuWoqYO{dXt>.46lg ^LMxrbRؓ2,|u7hr|0D%ҧ.芑4pa8Ķֱ'R1ՅGƸHY(܊3סvp=BO?!f#?εDjđ-c.Չ W\1&5݋u^Fw@.z_ޓ:2,\v`GTK^;GǕ/C$ř6ZSu5vh%cp(->RCCvIɐ ug>`"<c5[pe=Wҧ˰ޗ\EivkWl8SOkbZS^ӡJ;BXt(AdT? §%p\}}V 2'$((kD\Ya; mG{u h`iϺ'O$ iu():`w%$Hk${L 0&p`"8<_˰3"^~2_^˸avL 0&(rmzF L 0&8Ľy/[=(+䋘v[1~<{ D$!+*QGz>QrG#⋉;u5_5->TŮ"d|cmb羚kqQm1+Ï?eeuS$ڜj\9pď X*_/tL**r~_vZ3] /^[' K{ $H=uơDNSʒP*ZDŦ~f'{`LR$E@ޘxžzhM!q3lm3&`LbR,~!E @aOkIG0:QW6҆}^SmY7 /uonxdYB?EYY^!I'늸>4/z{+'ӥMZi^u-1>2\fn_]™E+ž˺"݅ABk8{Ќe O95 r=.a/$p.I+`L <Z)[/]b8yx"Oy"̎ 0&`L 0&|#@iKkML]|O-qOsҦ/mK_So\_ _8sy_Mћס]s]"y.,ʰ3WM?xwLdY Zwru~ ϣhXʬ3u{z,ωL 0&Z ~-\Xlrau{`L 0&H tŊ"Pa˰H#RIueҶ,cnϜ/lʲҾޗy|OeY'%ћ/| ?|WDg'yyE-'-2,}1u//Dg awWjt[WT?S6ДQ&`LV}$C>bL 0&`L 0@tt4N>$ B{yՒ77ƴ'I K1++'AU <<\)8zs#c1qJqDk qΒƠ{LZ?li,AVg8<~lY *OO';&` ~476p/`L 0&`L@! ++z={4@ee%jEVbd\RRm=ݗcr;L/AT:ԥ=  Iӫq曞)L 0&s%`L 0&`L AAAkq?~v]H\7p!!!޽;zlHfܺ)Ǥu{֛J$  *ꨬ_0w~5UpnHBe?I2&h,F6`L 0&`L 4 ӧO;\;f 0=@Ҟ4-oAP@ EՕvTk2a`L 0sI39-&`L 0&`L 0&j>)K{zlxO˂k\F9`Lu ֙`L 0&~~!3&`LB `Z!OK{/ ӭI3= L 0&Z@=Z<`L 0&`L 0&`L \R`@e@Tt]5:T<Mr.eL 0&`L 0&`L 0&~>CQa f<Ҝ`L 0&`L 0&`L 0&pNbs7ra`>~{&`L 0&`L 0&`L"%`'֏kHoϒƘ`L 0&`L 0&`L 0& C?գ}?p8PWWZ@Tw0 =1OXDӘ`L 0&`L 0&`L 0&~#8=J_"$9QU@uu>K p`łCL܈['/+8\:^WJv_|29T&^WE[qaSʔ4lVn^ǭPƀ9(5e\x9؁pG1Ͽ>1o ;6>p+nZ^}j sֽԸ0*{n}0p02ڸQ 0.J |,ް}Rҹ# )-e.c/̵a\ tNv4՜cK݃ý؅aC! LKO!9M<41(ډ{X胹+"%3E._[lsMhz>㨩_ G6K).\s:1(Kh!?_Dzz ȣ2ЕCeue|}Ioz5OT.2؛jS(qo.\PrJ^yH0-޵1mcQ0JŠx|S ~T:s t ضLK ʹC>R85 D5;L!b.D!Kvc~&( &`L 0&`L \ 2A0thL.=QEpHO?'>?@&TZg߾x퍷%A@ m 2}& Hi0&p Xz$az}qL`Cg0KW_GQI!vKrㄪ@V$k_?fbMמCg2$M`$o|ḣ l_1d'}QC+gKVWҬQN5t^Ŕ k0}u5,C!:]g]hI`L 0&`L 0&{u o$;Bq6[*P^nGyE%UFYCFyg⩿>Z\.H$9\:$4LX!0D| Gj:q_/bhgF0Ms}{M"#AlC=gRjZgWŽeٺj.f{cMϠEtB\}3 uhɃA-0X' 57-XB}ukQ9җ (fZB'GsУLđoiJd.sNjv`L 0&`L 0&.> EQfD vʌ>O:lZG> RonÇ9ԁoPz*@,Ǝ x$G,԰z>mwlD(rCBC&m5O_(#k1˰iWڃhx񶮘8s7킍?U3ٵU3YThx}x]Rx,). 51, (paa;sv[1NʿϠf'-Ȃ#`W]xpҭ1Y)h %%4̭maA6_(be*$Z68PDc)(V:^Sq̐9.J?[ܶx>?`L 0&ϖ@"kr<R~ٍ /m<&@+b?յ!!jeg`e>? {&~QMJ5!^#,r8IRcL ek_>Sq)῟} /9 e/sĆ0Y7%xMf> uh}h#D Yb /߁434)MVU@/b񑓆r z_:I2I 3K2J-d" qNoAXMNN@^Ta0o|طL6=aͨ.`̧?j?tEԠ2x-S߇] Oۡ.ܳĸ;zB.I(?{6zgӒiU\AUDz$GTMÚ=*I_Xz&Rٺ\vikϫ0]ZG92=8dL 0&`L 8#ӥaTܙ(~ M}ƥ`-Gt9PE֭~yᆳŤ_㖴NR<}mkCJHLEe!#Lh;B0 Cw>?Dq|O&}Gcv*C &p2OAQݻC)LMѬ1p +vj裥HJPͫ6>K_ qC$? Cb#cb!)xq3 qQ_>8YQ[D]u1vv_4ZB1S8@3K?]jgB;j_ql2d=+CF4Ϡzx/XT2BK0.އisYؼO҉}iK6XE5-ePәt˦`"s3VǶ;IXp&4Kfؗz$0 /+b[pII <rߟB0ް I BЩcTU`L 0&`L5VZi`D"72h|{*=?Ɏ gZ9s7' kÛ (DA9^tyIdkSpZsjPEedF<ȃcL&$`6)oa _鴼AI9(uЎ*Tc$ os4zɃzK(x<5r,hVBqQ~g~~(bKX//< kiUaa]ѫYOWt%Fh3MGΥ(Zz ✕X\BIHErZ ihgņQ{1 >[_3^u%Z#So"kݧX2mb̈׍3x<KSTE$e? FC)E' eC#9.=|kR廰unc`L 0&hΜ8h :75xzͽvt kF-i0hrBUv3W_ĥzc$%ŕn 9N8,ql ‚ ya ?OT8 O=0]? (ފ:Xdn+Eô^؏X']we;aqJCmk纄5 38vy$HA7ά;Ҵ켸%>Y$ȅ>w|{J&3Z$9`̲J˿V˧eYؾ.ٷd,%e.a&'+Sn{b)'1%][Zؒ#`[L 0&`L 0 뿹7| Ohl@z/CG!s71f6N71t/_B+7?؊ې?|>b$>dCb"3"LIȗA>rxe?}s^K)νH|Kd k# !pTK(,1z&/\GGwvU:`nQ^Ei^f sVr/mS/08KE"&hKx{b?i32y⺻ m{ՖHps0O=sJiHMo1Yz8%'M\aIu@߄*BI7OD[b`ٰf)@OLl6٤$B0&`L 0&ZaBoĜ?aͧl'‡8"P{>,\ \pH.I{'oNjדrmB!nE5( @ }C E8<`#NdRL{eZ*ׯp=԰ b{I%I1R'饌d[]-ՑS]zzvf/ g/'OŸ^~eH49etc+x!m>oջ>gTۄIJ\׹C:vĹj]}k#.$ V y/|/uO-!yRss+u;v:kBw-qeOѣQU/Eپ-G?Z17\8q+^ [$EoݵSӑԍr>K{[3SGC-Z]2Όql-0w1 :^#wA4>K~BW2>Hmh;&pPAK{qXp"k||w6ҟ~4~Dow,aqT D-vL!^7ThMa#ȡO}Ό"!\V7_Cn_{%m4#<ުѳw$"tׁĬϣ`Y?m_7A6"tuuJ^,51Rl%%7Tn^'n 0&`L 0&p7l c`wшD{yjkuxhRVۘ@eKgs1|6^;l}E+n@J| OJ*/z7`N~-lasHt;m%UsIimЅvD٭e;plDD˸w4)IQ[>\"Fֹ>"L 0&`L 0 @T!?fYOL+)HoN~ĭ@1:-]w$5J|*h~o!WcU)a%?~#BvM>^S?t^y'MS?ϑ@0t!֡o.xQI!]hh(ݓwB &0 :@b"_C8 !rs-eԺ Q.%f 7OJMWi2ڬ9pf\OT4- 3;; ꅩmW"ֻHSUI3hML4v@MʬLPF^ iV9R?(8 tRvs$hWr((W7HIt*50Mw-8bWGU'(a>)rԥk ʌ8= mQU;y%JrcokfPr iK4h')r1^zJv|2oijDs썯Ӹ4`L 0&`L ~TД&/}nb_v)h1n*[~7{I`/}e'=8Z#9bXKiSOžcxכֿdQ "'Lxs΃Ӱhx϶A^y 45(Th8.fB*]H-['9OVW0hM%2&ТN:MAr >t|{ ӑ Q`)y4k* q ~:\,s*;K]dd?{aLSs׽`ht%؞,\Uݽ%4Mis'1F!0wlo؎~-]UW|$chT7Dyfւ1 ";j=ǨObmwVb -Ca'w:;=9lx#Ž$(gf\aOMT&~و&-|tr }Ԙ!!l!тVH?[Z֘(trsRb`q`늹/RabQ4<_$jt+^``L 0&0 ߽zaɷ::N[R8%QB9$^2n0ftnTRs8kt6-D (2.zL2jBЯ%OC&c+7v9^μ8f>G| Oϛ{ͧSXg>v8.duPJ_2_~4'{a?^ٳe8_;LѨ j ?EaaKڽp[@O[m@}z\Tڷ/_'N< Lc2QTZ?'HLevqfrf3q݆p{|n_4zYzZjtz>j9{+^A|\DѰ<!rFϡ˹> ^c?bowĀɉ}:{ﹺH&_OJ1%jôtG&F Ϫ̚,M<2rqnvdHCK]B#acӂu7oL?sE#W< qC+By&B`3L 0&`L g8Wvmfqeaw/^MɞǮ| qo{=z6 ,6̞7Ox03L+,2ZصĘḲ5g>=/=g߀4ON= gŧa88hybvbC[4=0~ &LDSB#qʐZG1aV1oŎ 06In%62]!1XXFD7[rR+ 胎:,L7Xza^5Z|=@XԆh>,41WZz1ܱ\WE34!a\l߆,LAWNeL#BtX  Iő-\)c6XCK c 9k \kҰ~IƸf+L\c;Vž[PJj^TOlV]΂qƶj%q.3㢙?0oA &`L 0&F OkqJ)O<7^{j3]7^M0D!ER#eDK@هn"fv㎩7[nQ>#g?k5TWtC(}Ē##a'Bس=' _6-aSfSE';4_2氌<}ܩ+c"OdK_.ӄ/"_4s}[qqvuRfcp`>Q t 1=41Vt'r;}[Q!? HM(ΎBaEK0$wD0byH U1V#TE@ZlPS_``E@רUZBEZByb@$w77{{{Hoo~37"ki T~ -y`N 3#M(iۺ ;>I 6.`8j8X(:iHN_e΁ڇ2+>  ^rD7`L 0&`͉g} gϞM:aÆ5scf& h0xX"~)S\O/;b:e(Ά4z o}ڂ*c;l߂? }]HP 2Y xN4DsM|xhߋ/[e?,FT)?[ N&yM 2A1{'wQX3RyBlj#-I_ yTF;w:ܩuJbmZ[.\EWckX򲝬˫u2-c!/5L}vmd_aǡֆ`]{ $u7<mȀJ I]~mᷓcL,Q +i0mh~~}>r,fm8 ΁oӇ`L 0&`L 4Jgo&^& -G9p[9 iT2~D,w^ Z<<ۼZm__e%8j/+=MvaV6ɜ nRhgx6MGYKs,ZfUe9>۴N[\^] :򜺑O,In@WbZ3' =t?5]B'/zΣ̔ ~ m`-<^yԦ1vL 0&`L 0&螏\Ŷl<]&`L 0&hVx 㮟Q>m%a-x} E&"-:90ޜk`L 0&`L 0&`͉(rݕe)˃ k1y Sp,XSUK0Z9, rasu;V/J{p b@JLI`&b?>C_Jr/S'h !@aL 0&`L 0&`L 0@oWyJ;_bM݃>ق-|-%Cw/+,8X0 V ];}1}ẺT}kn[jF+RNa^QsTo<rbi+AP9`ME@m* 0&`L 0&`L 0&д.Ʃ>ᅏfy籛'1,ow(n4 ш~ =1 nlLRw1zc9M>Y0Li> ʊpC6 ̾H̩S0ܔj32vsZx|ܴ}6.XNXc{M431Q%T;5#ɘxsGn Oʎ2j6YM_`c)S)ڻ ~JG%UJhΊ_pgQ^%zjXo|%"BecCѮ6VVSzӳ3f{,`L 4c- 'X2uuj^: #2Z.D,Ӣ^r*惥t7۰~mlW\qE# 0&`L 0&`gg}uӳg&nذaM\)zu#4658('Ca抈FB`{t@7ňsA/p2FY2`b#$8Lu9ܹ,||`ՖU[޳lk|RނQ= EU H x{ـiX-L?{f %p9mY/A!2:A7ຉkpEjXrEhN|vR1e㪞,ɂG~աr 0@{ԾQdΝ!;#vҲZ'u2-d[e^Ʋ=57d]^i yi5/d꛷k# ;vzeUkZոNK(uG2Z.D,Ӣ^r*惥G`90&`L 0&`L%`_GI>>+H2rכ4x=[pN<ƍp8`%jk37 x7+0x!ВđQZǢ A[]jj/CDD$"##E:hbO*UH'bc]Fќd?b<Gu9$GxhGєiW{*^Kt :ډ(99@+$ }EHÞrT?\!&jhϾjm1y5?30/yG%ȀYNFE '`L {23HܺU3&`L 0&`L 0Ԑ'$O:dn 2- ]^TҝNaʴ7`횟st8"O8a$O*w9*W5-TjfC1*qhZ555aSI@t<͇<+p !"4pFToq%@04E"`TϛPZfxUIc 0&P q `L 0&`L 0&`L# &f]g6?y<ʲdR id-ph6.8i;IG72)jPiZ[b'{EĒP_rS/3?{gg ג0EyOkho>*5dlI+)$\NT %6Z `A5q1`L 0&`L 0&`L& V^.'?2X֓VF @OM4[-yoE_kš[<TƐg_(iQN 4tVr1НhQ2\뛗BG}$q)`L㶚)D`L 0&`L 0&`D ‰xڗ*u=+/_4/gY fuUSY=>0A^UpW=278<3 (Fh=j N``2eLu3&Z6SdL 0&`!s4ڶ_~A븂 0&`g!>7+Ы,GE߳v눃n}U]AyEQQ =׮L BHf(O(?Ѹ 3ډJe?Zڿ ~bC"#om F,Emc"\` 6)08`L 0&`L 0&@+"`A9bhrKv~x%-f9˲2)K62r[[6"`芁3* ^74B2N2g8!C'򬢥M(8TID (T,~񱴿`^DY^aV 0&pl~`L 0&`L 0RoGAiii{:m*"##.]@ 8J i1ixoܲצd,p){˃jv7:ɮ&Mkv2Q/ ] 'm\MK! 7uJ`'x 0&`L 0&`pӒy_|JJJ&6a7/T`ơ5Ǥ=&!`ؠjP{YڅGa+ˉ}TFL2+VVc(0D8i5ph4 p8G3hTVM^j/]+h"&@"~xپkgw}VΘ`L 0&`-@-=.((jᤇ۷GllךE,L[7ZUK}^z^AF'OZ׳gO혱`I+E,BH1)** hA * r.4 1L 幦բ 0YMw5/'-?j_Q*ڏP+ zhBjPVVCs"`gWsOD%,vQp!yՕ(}N@XKFW/[H8c59`fl3`L 0&`L 0&p 8qBpsδO0Ḑ`VcM(c}xdvy9Ƹ8~ 7Kp huB (TG}1ap8$S.8FqUw[w3dBGY L]2هe;'vd@}Zo5*Z&#]mKO Unx#ȓ/GLm*D9͙^^󣵚L 0&`!PpK[2&#TWqPUL8h o}Cn eĒ%KE {Jq諃tsF=%1g,:tLFJRBV h1p'M߅W8#qoP.6A':_)]Z˹y>U`L 0& ,ƻpϤAn>/ v}V1>oAglkDʆOȨr, 5@Z 5gvqmy`s!gedW-y*c T)r2\p qԩFXٞsC@ٍ@E1d k6BQs5 #hWr2ڙ vv!<+UGOxIphKVyME<##ù4BAitGv$aVC'=#D!#i1N0&@l o֛/ya.g]W^^[uȶM{ v<\|;WqО _čw6mKJX CM)<</Rh~$2ð{\cM}xe({xzR.68L!- 3!o-P/֣]k 9c_*Sw>#鏱|h0FSZ I\?:߹7=4ٲO<:olSɇ02K`M9Rrw-3Lν!Rd 2~JsxΨnSzFf,xp\d4梶Gߠ:N7Wü]qOF')1r廳1=q[&h DZ%:WJR6߆}CEu^I^ TGi a3$=g"\.x&\z٠&5l+b)+D>{ kW,K+!H̡mW# t1WɜT?+t0o^ĵOǴ_݉d̖u~Re17هSu&(X֝QxPl*na֏3Tƒ-ʃxWcoE.s*~tU4cyp8[o-4/QkӦC} 9Q~.M4} v`cI FyhO%眐>Uڄ 1N[(\H"R@}70%D-)훔;g &P Jq g8ӲpY/Q/2VL葉u5ڰ gb,DCփovaC0c!gN\Sj/W mRoOZ(m$E7JuɀQ矟y3}wgh='߿ߒ0 ,&1]<嘄d%|Xlf" /og_1y1:)FɫO=V%2_r.>1mpC89V U2]qػWVw 9ԨQeeL܂Jfv"_˼ )c'ỏvo: >qA GuLvi2F1zc3|g2])zW<SA7C_tDLX-56d""|E|Nm/CɆWQd3}&'sjt)Ы r>2jښubZ=R(6\ut =a|hrI[4k<1rDM1z%*Ai@IDATXK  x<(,$/*>I;}V1NїGƗ84y>J==4(нW hw-p!M{B'h|:Qv)1ܱu,ӚFwDZ@b(+E yFL4T}xm>8^Fv`l/vokN?&,oEmѹm?JZ܄*qf(_cr'+GbbZZzlRBjkqlI 7v`]b7I; @QZM;Q86Gk(۷GvZot[5M'e)-}#-Rwx蛠wNCtFs7`rd?ɩ=SNU2nFQ/{"=_g#7_2b1JZ]ǝfZL]$m//ol:m0m)k7"a=DŽxS-m#Yt?]<99S1Z{:\3:ц/T?A/ݱ~4VNY6~ޘ;Rod+ F '`L<&˝gaF?qͱ诟a\Sxl8]&c4he(}xq]0>C  ZJ:?K4H"X@Qɯ$*+.*ҁ6\iMRkuBnĶ^HtYWv EAA<͵N+/t62VL}FEE:X&" s'cePJx6[uI,;2.q zC?t1-zWh@̒22j"@dd`L9h82g׭po*-/ݡ1BS03o䢷1@C>L@ĨB)IOAP`!zЋC٣b(2(uύo+*z2Ҳ$_jo]̼%dLM>WG'*o|\xpARugRBCRؗaT_-xL} q ~vSOʉ8㛳f;^Z"S[Km6.Wϑ-xlo ˶iHxMCҐE^*xo1neڦ,X_}Gbb˥MSk\]<0([? VNљ3\<+ U/_=iļ;GNjwf~+^>)؇\$(1yaL 0C@A [^~us1j~!;zrZ ^}Y&6lF]m,cjpg]!@2Dx^zt^B:W\^NO'y]~\^WN49yw9^8<>%O㲷@v7&KzjC8GIƠQl6ӵ=~RbWp>;d8.O{T#FQ*vg!Uy|ۼ1 %7SHwU556-4VgL 0&@} УULP=Ÿ44(zRqo)zM;RFb, 3 VB|G缌ӳC/agVcMEg?CD.q}\AUOXۯ?z `c%IKnƳA ~="$5 7'D(Xqh2lOh>h+CyWr6H_> u!s,d>rzxg&Hy"鄛fHחc0w3 =:~x8䂕B>c6}!j3 Sg2&`L<;p/Ly|"hy-r$Q#nDe1M,@BBȋav ^ge^^1}d AVi\ǦsP} KuXBc8w%^d/Y>IrM'aؾk/i(Ňw&WY+#GOJ,_f -g M\?eKX&s'ۻz~w l{S갋sޝb."w܅N4tr 0&2;\ס- gFbp'ᅵy'#}ĤEy ڊ b5]Cmnb3O5'۪f&,/p׏+տɌ'c_ *Kq)*)E7#FjczF %| 7vjviocPi.;'4m?MyIs`L 0E ˍg \XOIRJ7#r!DF{0U}f{pdt|y=-3in}+Cu5S7II^~'mQ`[ETь.r-I+}/톪b\]_FSҫW{^q)gפK%$*>s5.vQMސ{ ȉڠwp.9u_@m:Bݛh_ضwRA/s`;Wq,K^ ۤWnH:2b/wjbOgڔ tSJ &=u0%irk7V?~v9`]Kc>"ǵm/0u/btWVomkh|`/N!b_cJ} 9n>ȆtH>KzTI꽗]35()Dx'L'¾;7kezo>K`ٔoEZ1ibeHS,;^3EbH*ӽbo#P"\hQS<$`.̶,Z,]N]طKHan׸lP\+54u@1J|NzP|d6~MM-(&Am܂r@'pKPG=\~C.1&^{ztTqX>yl9-I +^]"7hzaqo4]{Q>Wdc3zr #;cp;#ދb"E˞'܊]ȈP^; iϞ lU7EǁnR`ÿ`c۝@ֈrx06tkch.qy5yY7_axYi [m0өuZY&8#` Ӄ ur@Kq>9Ӧx ֬);qB뢽bM{t}iYkHH6w钂9CL{|lK{)j Uoe(/ >v"ɽϐ뾏fjNoGݾ~]7MQӡަEtH`6mWb"1T_G6]/N#obK]'B4/ 5b@H,*tLBOӜc~blSL 0&8]y&p uIk,+/M ʍ5 WxP͚?w`H#ah5u K_; vUֱIepS!ՔTѢaꁡdP]IF)j2? W&y ;ϙ5́u{! UYH4Tu彝lk |7?GEӰ⡡ g2@儓h8o |UZxaLNGs_&|B!_Ѕ1 RB曞6]|5]B r2*҇lFщ"b(- N4%Û4 P2Z3G\bSK zc:A~q[ojkR 0&p9Cߢ;|b٢ÃgPot(LW㍭i A?Zq/MgP\| ɓ/opY&ӄ1OЉ59-a~D\qh`JcHFa0=Ӽ7XWL>`~F֐PliYJeɖkl!pYB ȑ:h_גP`yxILKɮ!2TefL 0VBA?\r+|dw22ٮarĢGF2@&"ᔖ!.n‰-b-/LDD[y0o7HL#bEym$\Auo>Vjхr^^Q[JƩ(ĒgZδ$KMb:KdO/."KEjQE~hgidenhA퇌xf \UD\5,(-~^O[.r̚DiͰg*;_"oEDU;_d;:>Q"E^É 0&`璀ƹq^̫i=Au-+PyI`}=3mۘ y9ýOw]$ l3c>GӃiDɈp 0,L;fY㽑FS^6;(Iqo)v5i*ґwLB-?32+hDil{E2""d[佘I>7bq;7ĔyI}yI= Cщ^৏YMrtI0lKC^;?G#ӥ`O{f%ӳ/[r1sk|柷d^5-mеF~.Vñ oϴ76{ÇS<Ix23M[5 ֽm2z[ycL 0VHkoY|d~ 'f+/y5cF\wB/]8\Hp/~SEFM;:aXߟ`\z|6/_b]9n- bż}4qޗ6RVe]>Cŋo_gI!y| W0hvKxU nϊl#԰~VtGR|gZm_̵!7:e,ĭcQrF=3'$ed5ugUSn/kjϿ[7B?uB_DDC׷ҺQuZ]^h$^d˴ L 0&8͓dz=K b9Oo%X|zjۘs;/w rm&=iPJ} `8%i0 ~swCrd2Yc HG?9a0~xY&+s`ejljY7.'x]TTxtTJI@r O;so Ja`CѰ7| Wb[[#Ƒ#JZ$#|y\ x8VapeIcOpS\gD5&7MKSя5pU4k\=zrI hGP3< m׾ C{j:ly#ҧہvE `> ;NcG@A:$z07 w>K߂ ȶ0~8C0ᛌF!'`LHH3e rIs_$I|dôV_)흆W*d;AU}T7O@]Pݕӆ<5Z$EAxL^ Lj~u]Ge #Tc42q{oÒ_'0q1$6V$.{[AK0d*7~1y܅ hB؇ڞ;EÙcL3Řceyoi@jT;njwT 'Wnw'^_{ 2ƒHlO/pWmxi,jN^#ǯ{Xp&L 0&8џ>Y?8½|K}1r0"[W` UNOY @ Xt n:(S^q6)CKNT&|EeǤ>s--s%|>CnƾnSANaf(Qz4tUICKR W2RBJ8p͝EjѸL,ۋ4Mu7cT9M>Q X230/g܍,SֹZ>kr(af>fX.TW !o: iihA_17됭|GN`f^K0%xvC2ŘRY&`@ fn^yC&i8rd+,/sWE(I LyGc-3GqZ}qFK(JjQ[vߚ9G,ϛ=SekwcN^ZLv"PV R$QM?4:Iɥ1Jj,`ޒ7gd':ⲛӗ.)m= +rש&<^G5KJCd1<鞵^wͨpD׫nk~ }(غS2M5~sF(x@[swMao2m^M3ߐ*}WiLXz ՌW&aS& ݊O m$)]!T!hc9;Xag'`j{CS֔ut/dfVF߅21k7 _V0-%mc!{B2n'Yca~=YgDzO-I `37rWoƪ%]=Ga׻s5#x-離gFK\֔PQV՜`L 0&cwf"غltm:Ц/o[RɵZeLTRuia@iꏠV[%C=)\_1d2qV?#ݨҘ(%񌕯a6 /+Za\uABTMe%*V4UZ)t5, k?1LG8UAɓLόPk]\r\ 1}J?cRK4ۓfS0ic(8TW{QIz0Zz$ʫ<5r0&8[ߛkY8yUƚy5+mSN^ȨNɼrY&b2eV5,ݯ藤نkcׯmEayYYкVkZoQ®8Wȓi`rV|w[w8tP?]-Pnٵ'iž^b P琀v®t^FU_<{Ej.a<;Cv]zv~r9%Q>ʣǨ"m(#(8Vlێ薒dk"v$KBʫm"xps(--ephGE|lΥXG!ݍBOFtm@i_G*@QH,:&wCRڮtRt{d.z{R-9@SعsgS2 vmh hrc'?\O~SK#bؾ UC UWǣkjkwK\Xzf#6F~{p.z5qm);. 'U8qRQ.\ة鶰A|׻!;ut}WKuGP?쏽.jP|)~2|۷i{ճ82:'B8'i!1Tߌ/3Tcw9;C}&"] UD'OdXVCQY ؙ(΂;HDǤgϞ!4կ;iE E/XwYuzRπ砗'@V)rltL4\Jުjy(C^.cL AS>:t?E&|E,-늭uRZ.־K9K9i򲝬˫u2-c!/5L}vmd_aOn΂Le7Mc 2^dm7hz7>ju'ŇCs#m`OB=7'$uA_'sd~&/qGʏGѿĈo~[>,D|{ok9ՓCp'#]z7 z1&LZ0p&!4Ǯ,u|jL'mdZ#(۷Gi_/SS^SŧiNQ7z($`ߡ;jQRt%n1㞓<Ȓ rv_ZfKN8pV l/SjL*e:_9A:vO(WdDSoI xe%mJ*7t(!vF'OxI6ZR5dPR([ZD^Yt} q @E9yʧDfCu`#5|pka\`Lii8F@i`E4zy/j,`MMSrV.ڬ?;\k#ݏ. pb{0\nΘ6RҠސ`L 0&$Ľ̪Xދy'd彛|*>]#ځ3&.P<z_]]wE%jP')G b]ш5^Z9nwf,1T}E:?&Z[y!>זeÙc١CƀKX{wϮ׋}փSGX*_ZjTЋbBʤ[Çʌ2BM q^VeUnjh Ni!=a`Lez-xh1SgطkeL 03Iw,6 E ]xyh 2&`LlbX"cX(cl+v5drGHh+ FRQv>"hlNGWJyۇAy12Q/erSn{!𦬪( ֶBBYczQ&ۊl+94wb@H8|s 0&F_WU#.EZ ȶV '@%艧nłmǘ5k oUąSmb]%ɂc&` HфܫF[ ~K25-q=!/e^7D(}Bd_"VRF-SjScYw>1ͰC<9[UnjZʩej:XQ?H=q3$@S_U2N3&hY?F<3@?>ZY%`LH sY"Wm3'!)Ռ4ʻYό`L mڴS Ì(F,kښr2md!# 2\2uEC˴E2Wخur.cp1C3kq֯ _UtO5+X,9줬Z'ˬ\m'xsL8nTW "Jۑ}!k}KĞqL 0&O ~g-2e3U2&NJDJD`L 0fCs())ьeňA{)KHZ7P#ʤʶra|x9`L 4Clk`L 0&~5X`L 0&5 >_1dzQ]h}?L 0&#65ǣcbL 0&`L 0&`L xj۽bEڶ/ #(XI^~16B 0&pf / gT-z,햩 ~-`L 0&`L 0&'*c9H[3rfK{EճgL 4%7p}M|ůOG`L 0&`L 0&=/|yF9DHDgK`g@ }oV">s]N=ZliÏkiC2&`L 0&`L  8A~bq۫Uv.n G 03GyWߙ{>ift4y.L 0&`L 0&`L Ƿ/_ػFB-Dt#VEEz&B9 &|#^  "HA-ʫR L r9O 0&`L 0&`L 6Flӎ+6.|I]r:iWeL N@ w􉈡Ch־p ~^5:uʄO4Mik* 0@ &`L 0&`L 0&`L 40EFƢq_/l] `UB@BdK (A UAVA-\-T HBڲT!.X V U-U -AY%yIs{s}-y $ vw{wf{f4>& iZVTk?õB rB@?'8$"   ;v\|>ɉ   ;ɢɾQAtl'֜'وfǟwd\|Uϟ={? h,8A')      >"gk!B,#>d篘?K,_}*ɾgTR]+WKAB9!A@A@A@A@TUGy:Rhհe˖@jp 6פ  & kOYJQA{E|WE>YpnxSIyv՝ Eɉ8{#}wIA@A@A@@qq1~G!j8AzW",c/QVMIU+j*>D1zCt(PRJpu@!f/Y1Gu+:|nFωxKJ??~ -+ZwSR0w㔢Ns ! iii)))>LA@A@Ɔ$Ⱦ@DGG#44ހw]h+,٩0 љkncMۯ^ Lk-f\`lo+kz1|Mrrr|&ꖴ@dn,n쟀6a.WGӰaWؿۯG|LoV^QZs_|U]{$F<;@Xk)cQ₀ pQІ)~W D"4(!}~$09>ޙ9h,szD{L>ah*ɟsv9*w -ڹ" 焐DOC~L꽻lcw5?A8ç{~pΐЯߵ.+rʕ ~xHR!^epWMwYM3ZީɒfgnGYZ ,;[R-ah.qU6ѸƪE{%! i}m\=q@@q1˽ٸVA@[t!|)B]y x(gܳߵn-<%G`} yR[VՎ18A@hgDeQ'}a-"0<zroN݊lA[yN"NVq#BѐeyeW}:ϚOǬiNqR VΝ CĂuO܃ہGPa`ʻoat5X3>,4.~8?>plpϨ@+F>k ޙ?.җىln|b2f?pwzv\C/A6e*s8!N/¥WA~?n w Q '^ aJLj~1.L|7H|ܟ MOY#"Z Q?!ƫ΂ؿ_b֝"q92Œ]HHF)KaQ*>;.8Wqz 9H]D y?Fj0z0Q<7CG6@Xt_L}^0O71K0,yjY ā\[1N܍MAV1簹?ftyQQ*Oɫ8Rq'cl<˅\J!MXsT]k~y2wxvFΙ'UJڥA`ܤ Ϊ?]c&a߾X >m8z ÄixcD#te_1n>ھJVqVu6)_'w/~1}QTee^Y/}{wy!+$K PGu/4 j:6ʫ7O.jR.xϨ Vz8 !ێcdTQ5/qt΂51<ҐdX;lt36e`j?mu8u}NɆHxkDqm޲5w g(UY t~2UoԚڵl`JA@`=ƚ<*p20qpr&-}r'€Θ酷 п9)YMº3"zp2e _r/S=.j|vad_wq7Ke`hG_@OJP+]\ +ߘڧiY|);\<2d7W9v:=m/hO!?S؝96U'߮HFv9#JQV};]v)~]Q=s!Gв0* n.8zx8(AJ8Wgk"1%md>i !N'¨B‚ .rh/Iy'Oeݎcqq1pmۛo< Ⱦhń_0! ^\ =VXNq\Ua'\-iJ,\G~}3څ/h8; Ș;S֢dLpO[ͻ鴉9=5gc(7do_:nt AigzCJxS&u.tr) 8V#WԊtzQ#ISM͸:玟>%}qiT|{7Nz[o?)&&Hc9A5ߟgq= a0l>=5֗64Mq[4wT/峌1oe>û'Ӝj5 ͺ%\[y4[ϳ7X z lzni&鐵9]ɑߡ{XMP}aGilEX6jr+Qj)㉶NoUt&wzTUcW(_աtWy*do8868BC>޴>d`qR=#Dyaӟ'__Wtt=uXUt) @#E^4o5=$RgOYYzΞgbxghDI)j=ƥ-gE٢!10m=XOHz]]2m6_Qu _kA䐔ZϻKqc J3>uR/:b¯B*h;-v<:sQ5 ra0q;SZT;FzS>39l9]u)}g9c\NUi*v,5!MMUUjrB2 hL?l)Q0y0MׯGb9wDnW@K㠛Q, [[U_A7}%t(FVgGy8Zwl78tWD=G_y9gIɺVE)pl_W1P #pۃ#j:ʋ 4\?_é*tnԹS}7 |w ATUU`]0}|AI u"D`@"RiLk.G6JI SFƪRU_ K|Fbq7j~>ϵa9 pJ(0g#v y-'c-vgO73DW;0!!|,#du:`ӊT 5Y&*I)KũH/ݯ!"цђ9Ͼg/0yíԡtj~S~H}cKv"mhDS\ ]ﮯTTu279e*QRb{YIMϯ ̽i3VަmjK)G܅omc`8cA8ft¿vw 4P6Oz1S@(aD4qb0,yS^X`]k$]gH7k6} 0>_hDN&D҅ЀBdaj'<'R~BCC1mtq? &ߟA/gJ0ܴPVzzwPXH Msw/(-w?'ȽK0;pM8D۾&IN#lQd%s $2{w QmE`yƱV@,W0ag鴍{(|v;2"(Ѓ1tn5'Z~+?đ< "{܂ UկaWGȾm'H9Y+4nDtFp8ǽ~L}Oh.~e'#þj-{7bאH۴Hwt_s{Om6ٝ+#W.1l 7$i8fhU1;3]Zn'|5Vܺ1_;VD綹J;fى:v",h ͛35i9 ʟBPms~5-<FϾIsts EkZA@A@vK=dqS_7̘hO퇴g7+HĸQ)l#ǑpVq0vA|{eذ7RH M#ˤFDH 0'Mͽ:!ޘW?T-[UU4쪪 Ʋ/EԒN~Ɣ/n .O:OQ[1&T}vUU}l0}}kN7`TH?W/Ɵ1U ǖavx(h,%ᦌ.Q l_3')ط[l|a;ldA~%;\c`Cyy=oNұw") GV!vY^q҇{=癒*\J<;g.Y;}`"?W"~^**Ⱥ?" YlYiJB AF#\D U?\3 PɊJe,KL;Fث'bE'%;ij?OٵOLET/哉ĠyΑA[]Q5(NE\n%B R~5?(۶aݗi7˧`꫺ltrh{4(>t=!F8,8NQ3S]* {$COfVG^x©2|(kJL!1W8+ KW0m/ט7b ]E7o¡"z~xj>Ofw~CҖv.8}bVr@kg(t.\,ɾv`~}e݋eS4hL ^IW嫮Bm i~BĖ d_9-JO¢ 9~&?+ӜqKOv)`zeӰL3w80 EC!xfƗxpVMKpߟAk&q^r"~UD3b33~8ÿ_<ҦkӋ/yCiv__:5:P%*%KGiĚ-з̯{\K<89qh|_c}J@?W|ԎYe"ɴ'wr4\B PhOD&RӯJkƤ융T`ǰ7#F܉%~"+@޺[ *6]SxuE_S@*lSAO g,?(tzKѨp@X:\2ss:<~*D9ƒ##ᷙس%k,N^gGkN:HJ9 ?|<~zݴ;Ah &Қ֙y6o&d 8ec=?d'E } 'ڈv=kB謾Xmڴ!VS"6b ˩ O'?J _?ӕl#8! *Ss=mݲ3y65s^uj 6FwS p:PNYczZk  KRl\/wG?w8w04Af:&7g,_9YǍ-@V &zXaiI8eo7.c{fQq%_1Ki8+_n>*]qvCw9[lcvxn͋YK{4-nl5 NΓ4Kٙ۫%zc.Emm=:m  8/<k|*iO :>)"m}iT!mjs_X-.(r!n{eY[`p+\?IL&Ӌ>>z$+e=!& ? #Z$Gl,%N/?zBs?mPÃ{Ng_/~ sr$B5.=uY^׹y3y9E_K^jCcaBPuZ%Qq m{Ƕ%7B.չ2Xpx 2}O.-¦*mXS HU?<fxel.lZP{}vcK]5&-NܐllwN%_4TB#1|wKH._h*:hPuVWDCfЇwˉ<%>euj{^JϫATRĄr<غ7EUg.ۍ+ɈcJ' u7@av8w#j6exZ)KBlMO"+7y[/ٳSREj;*h3^ PF]0MuԙNo!MLbnu[n% :֭sbxQ ׸XK:} 6ʊ/OX.ҥ,حcKg=(-n"kt-y{!v+:t D̟:oϼ~dmh\3~}ڹV\62z23 >\C;~~Vz%8_˦?10y$] :9jo@"8ŕ>A@ Dr xmڳGݏ`' u5v✄Ax' m]`%vAӈ p3ޟab~)OA_~eld򅭦xt5OL{fk'_#(7u=r}[-2YrJ[V_~ݯpى/ѕyBI}cx?Q%Qnܗg|zOGo?Wip딹yKZ49ϼL[?; { iT-?4۾doNB|]+z2^'GiwtG4wzRi)-<qo/-%m$3ӳ P5O$ĉuU$tp%u!$~4rǼ? ")աm)K[NHByg&B=6=!W?WڥIA@錡5O#^g?Wһ3?;K֧HUyk>~I>E\OY \FBl&wULW8 EpP VݴnIƤ˿/ӫl?<3YZFwac%\L+y<累9嫹9*&I"˯FA)!r)R;cPb/sn}Ԉo˫ڢ 4lɅKPwfr3hE׺?M뿈u?)m5ǫ+8!+ڈuv]W2K)gsq0ڮyUacxh']dEL.Q_28˟ }ݵvZ?8w GL @C~_1ػƁO+g?ğzD;)Ls^Zw6Ƿڮb !p1[iu1 u 57V2́˲<<20?~[6Sb_ƺUx #1taq jD$`Ąpxv"-l C5z٨S|9 nLE^ s$!+61izn. ue2>vG%#+&xQKF1[+~3:Fvhݚ^} # 9TQ,|aL@~$\ݕqtsm[CȊ!8Xb& u:'/er澈m}uGZga}ϩHQE. G% â0A?ɂ4 sv"݀;KFƎgЁ[ɡ@0t7ZA@:GRM8\0Q.ϡ=l8Ftq76Tk\J_zO* gߥ}z"#7{7`!I2#x<Ws;Uց!T#fvNsX5z1H["(0|ͷR~\СYxdP:sΑF#(9xv[>X?=Ō^9e)::qU*1ZUXs.06 D8m`~#ЙsPXs^+-{v7sx-lJ OtApeo~8j]HHkuwӂhi_fa8|͉){94LjO]\֤<zݝIVH͘$691Y&zsL<˹YI#ۣ9 5듨͎bT_ff62E(V7)ܸU{E3Zrǻ"Yݹ_i()5n;mͺSS+!1 >CFcqbZL?vl78C޴mS9'> -:AolIA@ (F<8c9V 7MO <)2ش\O ұ#Np}e;!X:>`xf~ 7T5?S7ZE0*zAvjaEn%+e(*$rd֦]KZ?OdDj= n^搳+:_ f_#TY F_K4Q7$Um^1:-@jR?u0OIK_}9lz9'*rN 4b)dJ{4agq?o7p6K4%=au-ޅ#L&Uo\3z@;7m^_Av6:1J\ӹXțMP~bAp2h>ԇ6u̮, GrdT HূD]%37aT#d**WD TH~=5>vqJ[@MCb{w;tٞ}{V6,z=O쏎4 =<ֱJ7*騇/z1Sow)By*d8\~J-+;Y-gm LFfԗ΂ۿjvz8ޝ+ijNi~5$wu?ns_kb("6ը)_Qr*-td?3Ϟd|C@Uߍ?3=W/fѕڅòWE턼 I*ddݽ%ʰiqsqn-8&JHr;}W9)_] _tFc;mQy*km*r|,= XGr2?"md(/w=ݯSv]Hv-f+Y@y\V_ muGoP8A@h0AfN;IYqt>H ЄP[o]22jJ #R&HdMVgjX7nNìͦ4s4"/ʜNTescjr?2!"x~U 2LI1Hfytm]7%g \փ@mƴfHq FJ?wwMH TxǵJGܓ{`]`_iCNZ$I.$ё+S`-Qp,-Q=i/v:yQsɩqѕ/ _q݊vx!/?~ņkּSM׮dĞbM0܉0+1Y_H7YGJ @= Nyi=[`÷M`.>^SyoƠˆᅕii]x%{?=G7gW;_z=2&I~z,zDŽRp[Vij55\T4DLB]S䅚/'Fh||k<6a(&kR,YX7:o/' jSi6>_+d"F +NG}1CdS]aL۟&)Ʀ.q$8>FDen9b.#n[98(BeAbk??9GdFmFdsai Jyre# HE|Euga3J,h{)"X6 \?INDhYL 4 o}锧m_ʊ/݉.;|VqXPxAQƋg54Yy`t ٙ+ q&1Μu _nzƪqH k͋'}\HgK!}텺̴H;7{vAs);4J*Ekѻd1g^ 8Yr?Kdfwz#}t#ТPH[%f%g1R_I_& (\.DayS5?`?PM$~ ~߫eЇGqN6 ѿ`ãAxbCPyeÛz#0q-oDepjJWep5%UV>~Tբ9΍4%W/J~s:p|ܶa >+[!Y:1Ihݥ%8={ľ[`ΰNzkÛ qQiQ\qAiL'Ӷ$i08J||*]%NA@pa.[ǤT}/Ή4e!'Ʈ,^Ĥ8~6 NRY ״|wuO`4tjP50UM߄EٳӓLM}}w-h2 ZFW|M>5~\u|w'}SW"_`T. *G%y]d,߸VLp $&8WR .{55ުgCT&aOo_i(c3T]JYF8[7?& @G 9~ۏcVdbD\1tkfA)-WU;x6øHބ }A m}чp¿fsse*5ڹhǽ08O[$Y0AҼ9,Num7f,zc EaT9hЬ Xưޔ[]1L"q?⽥AdE gx9 )s>zo9I>zKs<V 2݉M}ym1z4FW)4A@z\h17ʘ*ny8YQT+ߘWaWac1,c{ #nСCZヘ>h!iiq; Ԫ7ٸVoͭ`?XKNINڙ˺-8?wB lN]#uM9 >!^ݳe=AQp5x Pq {-x_k=+!ƙ̹j>kQ}:vڊw me? Os2,Z뤹gFBB ]9m/rm_Dªm;˵2"M "[Ǡc8w&빫^;vhP8VmP\8A94o^\ڊ{켿[`$N3=*s6)kT/q\* $D-1Ͽ3du!?h<45 ye4F`X9]ڷ+ù(YDsG] m۴Gll+VQi"*ƄFET(Uӧ@F > ߱q0mI'ٰ6o+Z(ԊgPb~?, tE9M){ >\6pxmbkYw9E5jc;j#<)5RMkҵkj4,th>CZ+)m]A6\@.( +?ZV|?~ yehFs^<0XЕDq`}a};a|ՙ+)-ƙ ?!`˾`jv- ?X>){0%mw! .۰asTb<fV|seLWas]ҕ5թ⪜w7橰Y^9sgݕQu{DƆO hSYf_9cYS07)Z!KGZkh[S#!b/5ռ=1tnCrwNV}jBZX=֤&<>]_F=ϞE99,^/P# *|PՇ""" \4Oϩ:/{ӧ& L8y#VK s76jNeTXzPp$J%6jWJ|^miycUDF^p }9omMyv{1I/Ey*l]jr[ȘF_*RY8S:XrtV"/4!6yD evW\ kbU"dٙ{狉'ʱj%J>jBJ> 3ɱNOy6pֈM6, k(np }Unnl.ֳg<z*t# aǩpTY+BM V /S#T:8 mgqDʿ-o@IDATǨ9x1^1 YK%A@..yqy $l*fc0oIA#` j܎gָA@AR s-|E65cY5wS/b-98YPm+ْ2XJJQe 4 IFhHQUYAg>ԠqXs r5gn9߹{9βZGpX~_XtTwD E[\TYqITh1UIפĢ'8(ƉEu򄛓UFY_FYS1[xkٲ%֭xdd$mm["5rNw.Wi2zI$f ]}Ks닏p~YhkР@w G>#c1*7SNւ'PnH-ˉƐ]vD_u'^^Zoi%w=[wz+'y !5jN6AI 4NB&Ʉxi  > s05Sy>Vըv'_I$]>,,/+9܂BM*Ka*|sdmeY%|_`9TYkJ|%7IN+5)Jù\%T~vٙ9M;yU/c- YuY>4G3fq?qcT&dòۂl: ]wFYy{DYK pAXžfmIۣўtHmQ#AyXx}*wn"<Ծk=xF˳~GŒ;a+m_Ów 3%( G@?HjG86V 1lk^s%.  @="I|N lP Wj-.]39c|B+7>U3SX2סU Us09灀 4uU.ޮOO͛7ԦMժU+^9wStsQ^kx-jn3up5pyISJ??uNiObSe~.0g>%  3B 6%6nؔ#}A@A@A"[hDꄑ@19Wa3aO1.t{ϜN)xYN˨rssq)~JnQnk. (5Y  qvNk$@?Mb@vrto̺!A @fEZ 4'   p!1]ߍja /ZmD@A! _ҔG %%+A@A@A@|FI ~fiTXXsYF\{y qnn^t&Ϫ&LEGGk$>fsN^v1>|Sd PτA @}# _}#,A@A@A@A+l}YYYE#3t AvЙix5d/22R->9۾X)-,T  p_i    p#U.]eF= L-||wy'ѵkW={lV-&~KsA@<B5K,A@A@A@A@0a~~mڴH<>/ A@~ IA@A@&@hϤ[ @A{MLLԶԩrrrzj?^;篲R댲SW  C@$    4(ڏτm>l޼9,M3;!̈H\A@h0BA@A@A@A@d0~;wFXXΝ;%dBB|A@A! _û&"A@A@A@A@A!PQQ{|v_~~>˝>w*O|A@A@wij/..,A@A@A@A"d_nnv^|g(++H?3g7~IA@ !.+.A@A@A@A@9ْ=&rrrp)3}e  4k B!    \,5oڵǤ}>&}*]/VA@A@p~qTA@A@A@A@A!PYY퓝~}lNYI&tHA@hb.tGA@A@j={jWٳg#n4]Ao׹e9s[nEaa!5kbg$8,NA@B5!A@A@A@A@&زsiU_nnf<+WiSQqhJ[g򲒷7%If"ָ/A@hd/tLA@A@A@h<0qIڈ#X-Z@a_` J5}mdI>s~j[xTSq#ª/d"< 88 ) !4 @F@}yq   @Gb ++KRnz]~~Ft!!!^ ^ᩓ̚^:ԋ*"Vi$[U_NNFs"i|Z%cLk:*Y~T۹ 6.KOA@,fMұ /j}R    &%?}FhhnYd2>;vGR]vԴJ[lh6_׮]5|cXS/J(G'3KA@    \lyTVVkj+A&P9Ep0I*tTe:ys>UuSJ,F;k۠2~W\ᶨ`:A3^cLT=[VwMue#oyY[r=udtUJeozMXWgh{]5h  P'W'0 E ys*<6#%%E/ଆB]!f]@Z?[9HzCѪM,:nqJSQ+ q>޷iLkm;yYN֑@ _.fczvA@A@LBt!\Ps6QaM2ovJ/<+vhٲ9xDɚuq\)ߘaՖ?[a1nL0KBc]g%|ƘNVT>GEEi[gy*_>}_}ֆm۶i۾=mT{^n/;|W2*~qUDZR)mJ䩵uO(AAhUiPz" p)v) uyoq57Peķf㳴/;w ˟{MH"|oҿGP~00J&j vXAi\<+?\\f9~sK@g+M&osGE=_b]}'ͯqטZE iͧ>.>^PTݥ5 K+,ޏgA~?h݂a&kGob~8raH ~-;wgOt#YjwscAV0bopgeY,tËPOxfGiLLoOE 6./>a;>bL*d0* >3lkxyF"bp1W69KŪOmWm:¢bS"1擬Oq4U9e} G zr/.huըh` JWxŸ^ye(C{?Պ)N0SIɪ6sAD=/c^s>mn[9{+6Ut4{J: akO+YOZuϏ,68RT#PHpHA@h4\T*PCǠ?zoJ)A񁀨 @&b"it1o_ \g^j9c3:Rh`FDg>AQתz}[}{ۜz=7,;ұc gk8QkVTץtoU?{jU4]z4CT QRtc/tחlħ;_a.V,f kA,L6y\\`%,c1t;];6baȈ*uZ,+:9vd#cZ627a5"wtnڏ~ò,,p/c¯dRVú>Jp'0%mAZ#CD+}X^C._" \}TʺvO쪾X s̵Zr&\[lambbg\2OGDb-}c?OQQ[opM#ۈ8ml^kǓqy^gekkZP\p91?{ Mb>w2ϙlm=6lx7g*_%>~%v֮],..VBzZ,c嬏<.ڦ,B{uڳU'cyrd=4 Km-pFD@" HzԱ%}^t,][}-ޜ '*\3O;OOZj jFԸ,(j+`^z mU2Sc0`<=.֣}cҹr׮-Obl;u<k:Kfe;Zyz?. n/@ SE;uCi,T|CDuZl=f ҨTPwE|,Td~D ⋞T׎Չ\D@" v?k.\WK/8ߘ86;^!W3…k9[YlHzQ<}+7lMq /?;trp]y.k2 5y.Z8sw&YW19CBT9q~cscK|=A%+2>YO_g'ѳ s6;jز(<'[ F=ݜ.ͪ*<O@[Z9}AALD@" HR,sog Y^~8g.wuc{+Fx[q z/.^}sA&g8 珠Fxs:XN!m| db>NŸg9 X`g-ظ Yɨ)zv5bf д9 84aW/a9i<6f\3/(p[;{)t*yPs̍UCok9x$9¿ak 0Yt˨\sN"䮠qT,CQ!tE_&p&2W H- BƩ8slXw!N6q!ǎ@)H$= Af:SuU[ d_"l{e>&Fմ 5E,r^JU#Yt٬+xx~̼<~/s/[ˡmxmx(\E\;Mocr{ӈ)@7uڴ8̸RY;IK5t\|ml5>Ʈ;KlKsϽXmrȍLs>b9e.s)6"!_n8fq5ٞ{mt.*V^ОDT4_J+~{,v)mD@" moM!J z7مx-vu /"Z;REuD 8C/^: 7Uo!D$-ڄ.B&{[IY"aj V"SzDmZgbUҰa&~ړѼ^s0O E=~w#\m/`} ܌&6 ~4T2h:B{K_Ab9LFx@`bo/a#Z=s>;.fYzWςRTP #pvV Vݖbq.^<\lߟb@"c \Os{ی::gvhH˶ pQ5뫢Pa ER6B?)z(=cxce.H${;^SQl>" X]d%*A7ԅ8TbR~ loVUkC{~"Fj~[@7Fv=Ń͊N7TБ<Q3bDE\7ŵr9|sYJ](tS"}kԣI>=Tfڗwӗ-`:~D PXΞđXq>u^&oJyYJ>#b^>}ot:,Bd 1}z*yhu\A|tO/"]^@Nz~&D;irqӈ/byڴϏOǔI"SY6&Xh;ßbٯ3$lWs#.֍`{hˉ|,y";'26/ X9ɴ/o/& h3_Ʈ~&!tNL6H$D޾-]W[ŨE94Ow _\گ?'Pژ .9'x7ؤ?g=DP(AQq( U0}*Ҍ}3^4]Z!xOp(RMÌbxr֎&<\l3%< *ࣥFM↟/ܩAU[ O2P}#ߣg=j&_BMjY5iL.s-M}*vܠ:s5Oͺ c~eW`ܕļ+GJ7T ve}A8f )E&qv pU؛$ʨ&Q0 c0MÅXpPD{ʉj4c]u*==L^6[a?T'QyPeD@" ޛDjE:}]3?Zg7+ڀn `f{q˔I`TܣșL]i#LKY^VC҈Ġ3 YT9|;%niR5yd1jWxVH1tOX^Ӏ>@M{x:{"O8œ?8,HMI~WOqJ'KF/*sG+cxEs1"(û;-4ro]nJ:"lk+ӕ7?xK#]%b˙9=Bݟ+R}83ӬX}iذ;+'`كP؎cD9[_W֝=S;W"ކofNy)$(cgqKt0ܒt 7ȋH0yC{\U7.,HP+km1?be?,|\m(}3r Uripٳcxޙg|lx t~,{cRD@" \+a ^?Ky5_Ӷ6;#2(o Bԩ|],&D!$p|Ђ6O/'6kT+7ϭZ@7WUaVt=ۓP#BzvӛB߉ѕ69>וx 7N kmxqa>~rѲ?!e]{T>NG}S;6iz{< dɤkI 6QюKkN{ZQnFwW+l33W 3BGu\/O؇~M'8"şhØLwO&}\Ňu" (W{{dL ӖplA2N[}1鎙DZhڠ4~ HTPTK;lqyr>5#Y4שn$vF!D(/]ى*ѮB ^WȑlЈj>Yv̆5ee*9v?Yisӿ_7(d-?yhiY۰zTmt`VݬwwcqraCExZ\aXiRE$D@"зpֽ2W~VppﳜǸ rߍ'0wPwfq a5§p״q>r*r*qH[ =^Xiފ}?@[4(_r{XΒ^<ީ>n96k~Grt4 ’ ~ i{϶_19«)/4o#|$a#<Y[19fde예uK[>&t1T߾@~h8%Zc{{x90ލ̶6Omض@l mkM(PH ɉ5)M -dORJDi L8G/i Hy\oW>( 7 vŀ0wv缌4"B:K'/PllBU\d xylpmVkڛ^ӫWp>ЏkԶujK6Ő]fozD.UkA1l|QvC.Co,@#x%#\S<kOMkm[W$mR42igy%Eg`˞bBZ*>nW]f(Bqce.H$;<ɶyx7iz:'m3ߙy_ O㹣{6;Kl,K,h^LsO`**JG~[T$OM!Ⱦ hnk!Gs'=M7ŧ*v9/v┎lދCU,;6zLŸڌf/<-߇ DH#Ԁ:<,m3wN E=yq^y_B#l<}ԃB{:Mߧw뻀f ,uér ǬtS]3t*n'Ա9V3iI(ܓ~CO쇡xq*\!k0ȵ_jxU۱zQKItmWYXVj s; Cmؔx'(/ڽ_ގ5Nć 86)s-~I7?՝}jmLo]al?/I>4*qY PK},fF>c<"bkv#͙6+*#NRoB%yY=,isސֽXIf!B!JހkT݅P; 4m2BmtGh"i_װAw: ;]T}@X^Oܘf6/ȠKl_wf !|qFRk@HXVtQwb]߆_Yv;s=NX~_混\12 /ЏN¦1xV]E:_k~/~=c(J>G`h+U8`g6duǘX +/w+굖,#gCBXwO!]^87^Dv7 iYػn!|FYsU(J`RiidD@" H.#^8{p<K1))#"<$R 3Yc z1詿 T>O.>WbɆ5o?JDhN9VTt)~/s#;[~}Ktpg򣐨#vX"Ke{kà 0F;0e$`518cq(LD.zӵ38z, |ࣜ a)'rfʼnq=I'5}{g Ɯy6!C124SNa{Mĉ֎N?hzIƩmm=UDFzf(zx㼽{?ނ"c1qDvߎncwgG;1f8* 7NM`o? /89ַe̗1MB%o >y;!PLF o6HvOe^R*G _GU+Z*b疣ho"0]q:>̰'Ϡ/4*jj*Q  v'-c$A:&Iz~#<cGP[>BxVP W?vޮV>ԍGڽۑeSh><[).[YOCp48յP?g $}g/pmBn'k<|Ego?_,uZ~8L}{#[BB/+8,?\YOQ&Lwǘ넌ߌ0!M/sR!r>xb$مnϧm dߜ̗q0r0 xv?ű `nt ^z',/AQ7kr31iIνt3/ v ?XXoDtD@" \VFOK6`щbOOx%(L#B;PW80xzбT|!Zim~4r3@$=YP}0fd#džI7\!\߾wUUBM8WYFRŔJ:)6Rǁ纸6R::ݗa6 />B7Ԃ8{A8D {$yooU=bwHn/'1ƱswR}д1zh y5k 3yо29S 6jݚɷdΞDžH>܄M9_:S-.e$%UC\ՆB:f>>8io8wQdS?&|6Ku6Oko#.9R ?X󾃥{md> (8|սK P4|o'dOIl4=8,>Q:nAS8x`P6 cwH0B%A_J$}v߸So!tTJx .Er+ 6ׇc3;h6Cav:V} GkmPocmO1eLIDAaI[F[I'[v u'Wa</%Ө$^80 atbv'qP[ak#bS\B*ޛ/lVz+ܖSvwv ͚)6 $džcJ0}ӱpJ)a¼ٰ搘X$8(߆\XYH$59olĿ"䖙ȘM!u㓍 g~9!ADN_cݯ~[ ~) JIm4ד3mD WB8A0!6Rl0=XQd/=f>)Pgu8:S"4.&qE=4 x=s6s] 7է|nEWy3QG"|' +A=w#;R/&> >뒴c!xDK}G t`rXv*G-6zqw`#>lp7;FX@-vf'_6tw7pRŻ퇱pdZklcg+rb=u2YHŹw28 @C% i/n@>Y몿cѬSOUy#I/ùNA$H$ˍ]{nJ^_\K-?C5۸=^wl+>}e~PL0߂ߛ+O5q c!g+#X =& uEHbz&V(MgwE ]Ҽ>7Z~}K\7ϙ&n.Ef csex]y_۴ѻ3kW+_ԩ onDRbkin UmꋼGzym<22{V28XP7")eҫARl!Aﴕ*ᑑt9.>ƛm7 5U@Waګ M'  2[ɾ6t#+%Do#P_W*Š^H[♔h$ ħ+Cg6J=fHuW)'}wI=7~YQ/'5Wa}NQ(6(a .?1fvcc#,)ǨNBqnP&p&;n(3kV^; YPyo1=.Ub> 爼l$ صۯzs°kڥto" sB?(.s*:|byS{h4}p-w '2c#(`K,QQkgm=@O-4yhs%uy~C1ij>?d6k(§;kjj#˕˜f/OF 1*!gVI!Uܡ׽YU2<wNHhF3=DλoF׋&o-5Dc'F=V R >R˘nNLD8thAqh6 )D!LIzWortb1.Eld3 "=Kk1kҍ-uy0J>@x+:cv5ĴyP'M{%m[~$cҕ56/;&ۈ\_3}v|C<s3Aax=$މnN޷ 7kf+:,HŚqHKcPi/STi3V(Y!JyQ7#]]9a(H$n"_Zc)h:}y"IWV*qIt;?r_ _ŋuyf a.>K6V$_-|Pğ;C!,sۏ8U~g>}A.X'q"VbDPtIsNiz{~UF{ԍSSX]xfJw5u&9 l-{ժG*71Gsk{b)6~-hmMgh,9N%}!ӱ15M]v  __nT%qLOٌLWh9Þp皭hA5otpthpF<F1i}mCC'0`eY4ԿOyN%b*eGޘ(rP XΙghЎ_q6Y£H~pC'܎P>~nOD #(U~ 3P]>]"~oߟIFÉߝ~tKwjs{T"& Eȭ*TWWb'sQ6wnG+5#Ơ3g%'F'} 20Y$howKJNI5Γ)IΧ%5à~ oic<U$>krq&:cns.ʘ˼.}bvRg2⇏msY?/bYF;+Dmm/{cCgWNU:l|뭷[‘8ed7`r|..*YqNEM?FEbtEW(GPCW^@1BtDAaWkyy0}/.Y|o8J;k[z^@P Tv(]-Bsm5 t[pDNא#2ک 1C1ě=X dw?z\]Ŷi%@z{=WVq!ʱl=VD6}+ȻU5\,zL]جY\RlKa| &U[{nD%SNzڪ[rMǃOT%N{icZ?wmoIy/>ҧRȬKգK#J9*ח~교xb2"&D(=3*Ҟڛ6:|=qƂ]ͶG-#JHT_7)brZngsVG B2| w\dݟ+zǭ T!=.-DviUooǔ30ى,;q:oY>n̸__R6PKo}b/9G&Y *nZ a2(7q]b;/rxT|wTxL'sY3s'o.C%&=8JbyJ^f9OX (廝{btt}@ g^2u{|0[ wLCht%yy=ve<|Bѱ3g>X?DOJ2Ҙ)g5ʚD@" Hy;%<F,Gle1dl /9]O;Ο)G3@9tC㔏KXs) 'kS(lÇgX(!]hE]YY {N&CrF͠*b/Z:%Ŝʤyn^@y5VkdH{Qyxx>~kfԵ! $ׇggYcoQRӮZ@F>|LoS>_9;uƲ-ǃO6!N Ei~t^_!gr<[ڛ>2=<78Q g;f,Yy]k*'ei~壨n#?ʋ~H1GwD^(Ō"QVҽwοÍsn m0Q\܅PL"MU%(~#euQcURU]KBPZΔb?:|BdT,&(/u#G;%h5 \2$wɠ% p^f9K]sҏ |^sVI" 4ֺ޸jӦcD@" H$v/f?3D1Y~_4[WE$#"f=S8>ҟ</j,- 564UWZJ3G;&j֙gq{)Y+kl8qB3ؑ|=mjB.ڭ8WY^`#:&MM=N4h6P0E=KmoݓPCX:wh};Ju<'Fa^#M1 O˂2DMc|mBmh8c'x4j)SOh VsRK 7_?_!EN;Iί{q3M1Qvh?}t7jiQ2!ހhUt*.t Grmf$dS٩} t/mؗ6e4jp؀QW>VwVJ> | zeKO?j1qddg7'6D@"xE?J/~>HD@" H.^%<7/-x>_ @&aLl8@.^LZPO^6* 6Q?!ʋm|,YrqP0Y.sW60|,+;|97o7׹N9Aü)[zzx,gXVv$Dz~[? m2l&EΞ8ZJP95rȄDDCBJu/rFV3@ W^ob'nKB<쵛"$ж V退#n$ǏNwޡ~z<XBܪg ?҈rHvS `EP$(d96ҲQƄmH]§LtT纹y>s?e~1}rG,Y0mÌ'@WBӉ8pLqbyn>| ppy_"j ?HNt0y1I F܇@9B7_@)0YkDgL ,&"cx%4译7av:Jx"fKmro{u6|@c)bHx!(|8 đ8oF(}?֬oz#2Ȯt\(qHCK5.(AX:6*MHur2}"VD2ۣ?t/Ŏ#6ysh8{v O@AyrAjqB¦G ~]QqQMUih9J{F{uk"ni/^t͑BVM,H$}'F\4>.*rD@" H$DG x<|,27f}чgZi@ ^,1Շ1D[/*Bَ_;–qY6ycXC4= ~jTŗeZXڂ6#"OHGb5ȕB=YrTd_{K >yV6~},Zy*bجm5V-Tij7'ĭo*o @5UbgvmUU`{  #@潿DOЧQ]5޲[,A*r3:ONv%oé<|VztAIe:k-AYT9؝ٿ|]&/ ɾ&[,Jd.1ߑ5ˑs+uQ\u1ltdxb;oc9/~^6XwV_]] gSIIb0D@" H$kky}~>`F?9üwK/ݡs9=jجYzTRƈT=k'FED``orPѳks1A:!F+m(YSueg((vo2FUMBt A@a=6:QoKS-ʏEɓMD0x&Nj~v3#t<8h2|%Jnja C0AeB jQZ,= .f;A_Kn1ʗq,wV>Kle\ڹϹjYb/d.u&պ1|.]V#%D@" H$D@" t 5!!N™3g5{Qng">|8F)"1s;Ǥw-ڝ#ЂE=B:R}˩9 gpbFVGKmJJ-tls>^ԂC%RD@"kH¯נ%D@" H$D@" p|\#庆ĸkxIiD@" H$W,LD@" H$D@" H$D@" H$B4[" H$D@" Y~v=&H$D@" H$w鰖3I$D@" H$D@" H$D@" HzI8RD@" H$D@" H$D@" H$D! KI" H$D@" H$D@" H$D@"H¯! %D@" H$D@" H$D@" H$I]:LD@" H$D@" H$D@" H$G5J@#P[^cehǒFEbto%J$D@" H$D@" H$D@"pe! +xIk1^5;,6-{ v-l Ϯ닰ɸ0cJ8? yn.^?teDX &߂[f܊/zVqmd$-Mע)+XJr;uu~.) { :s;5°/!"oxz)N{~Jm=}T_FӟʧMˉKl)ƒj?<~52)sTsW_B7՟dxjr$)\X;e" e_N.H$D@" H$DjElj]\DC9Kfa gLmA;1-iT4ЕoDvb_/e_rX.v L`ғi/O6HYbmh݃PQ =QBtevY 3Hfe^Xa*V}27䒲~j/+N;IZONjD8YԬUQe4`dɯp' ;W2Ma)nP {vՙ/UwH$D@" H$D@"   +9τtN #r2%p4Kax}fP뼒1 K8ƶNk͝Jt$h-w}ʰrQC?c, de?*HH#L fKRǂLdf.? sCV|C&VGL3t1c]AJ]*䱼THy$D@" H$D@" \[p׌kkr>@?c{G(f~ B+ұ.sc.q3(}ԇUƚ'KOWՈu]0m"$ Ux{Yv!GWd3}dgq*i9)a>D>C3Z:< 2ct,&< Wa*vL'ok 2lގ{L#3_{AOA3))A rQE=tq%p He@&aʍH?'_8>Ō:d7DzoiD@" H$D@" H$ *;r9W:UX;?Ӵ4\m`} ܌&VB( ~x?'~4gV#d8V.E˱p1,G,A$?j i%^úUvꙵpc_pUɖeyv+z6͙ ],K'r Sf9 V4E9į]֖fv kE}zއ!U'Z:q;ܽ x0ʊb --Bdl!쬦K=j-! _/S~fW!V%6>Ӵ*Zs!,"w'Ef =F0ߛY2XcGyr~SB3$ b`[N]m}9@ Cx@r},|t.2?Z=sDaef"[t:}0v\$+ùV*<姕 7"u0h%WPtt,5 H$D@" H$D@" p %D `)F'2d.}XHo`qؤ՚y0ۛG!rGl[nT/Ù)&\\Yq͆߹Q ;ԟu#lJ=o؁# +&K>GrJ RRSH n+6(X@-4(`'B<1YXVj 7QeFd|"RRT;%#)6 \,"$${mx[_g跜']ӐtddFav6і{Ƅ)k!\ [a>xnuA?[u?D '/5`;ɋp؁~~WTcL 7+7Y9 $[S\32a7bu Ql7'0 *.)C^s\ Uq*ni LoLX ~.v4z>|"J~Jr""Cg^ʧ5LS&Ot;Qe7 >8Kr%բa ҽK%D@" H$D@" HM$wmw꾊@yeq9ŁM*x#oߞ$ #0n`(;ێ/ r%Ny,G=QXknT?U%xs|^\8Zp ]m9@pL<:Z bIPpsS-D MJX> +u 3~jvnQ:svr^'=?wX"359>~.He~C Fk f2R_ "B#hDT egs~\ZZ=e4?ֽG(@ P(@ PpN?XD<&`&GpCp6sN\ړ{ӫa|?}p&ǎ(No0gYZ ]kK'Ō65phf", C^ tߵ~_UFrb)wS5i)@dlr*7`ǎhBD*vb(ڒ4MR$ J'b[ap,Jf#v9J+=~K.D=LL-пRb-1=Ÿ$B,.;`xyt%49e ʎףAπA\k U>LDƶǨ1{mx>/TNJ#;hk;%K$ՠamGUJo[?+)dds2d$2" i~Me[#a:䬲~d5j< -cQPaTsy_8:)=U֔ A7ȤtUxMX*XR(@ P(@ PE-*)pdٹSzal9(F4KPj6rƪ$3{K:ZKbԪPP1=}vUⴭdeMKgY'cŒ8(`eX^Yj}`[;pq>FF8K@0{ .FcE.#uF>U$0P'fɉ5O_ =J3ABz![>/yLƸsON-/-YJp\cER(@ P(@ P(pݵxѼf tWG_Jggķނ-s0v-qhKt-i1CIvK+TkWvoe#@i)Lm4V| JhStDʧLyZ y~#>.g_}sA9Wm!ʚ6p쨯ɎcգR{?Hz;qx<UØymOn])xi6WTl¥Ǐ0n,o(2)I`rQM|rl>h%&Y}6>Ă]|?5Z ۥE(*-wؚd$~XYjJ`X,{:d(@ P(@ P3==(iCG#Jv[gIGigRbshP#_k;ѥxXC*"}sմ+)EHld` eZN4˒8YUfAv-s zd3lmX#F,MČ)0/_Hvgg`gPs*仪~wv9{+;4/Nj[b>$(tՈ/i qbCk(!5?$ ݉:8.P[ >rx4WϋjD`LNÃOx1#2IQѼ(L*NU(0Qf.`ܽ=b |EndXe(+@^q͘gFCJJW<(@ P(@ P@SkzMv]NԢDC_YG&o۳C!VSU>E ^ۃˢ{C׺&6mf8{}-w#4(H;1@BZ'dccodUތ!I:2ڂ'FOǎ5nz}tԅġp V9i DXWzH+?Ʀpp°Hʳr`DTnwvG*l"\\12s2A",΢+f[rfo+ӆK߾Z€-/=)U?dUחތ}F:n(@ P(@ P⯺8)@\tS3EtrX1)@ц}`}N~_\p'-صg3)AnRvX4]kkr47q0Eyr%FL7 Ud%V} XD1t0C I~l*pAZl?jgD4VnƋ8x|gعz5P/~X|w@EV B:rE\3 #ڑ6> 3_DK|,QyKwc!)Y~8#fZf1+efxnvLk=GBU`_BZLwC <7n'8̋;(@ P(@ Pp$`̧.{,J)Ҽ%*fHcn,N֎)icz&V)YfC1k&gľwq@o/eʹZ9ki79cofTjk\Tck7!5ҙK+Ǯk"69+JK Եѱ@ͩS 6+ O6 A֠ZGL1氘7Vs~Aysp9x|PMK=5֖ ;"b4􊛺k N))h17hn~ ?oOT5#狃b^O1bɈ,n]m Fzg-E|p.%F(@ P(@ P 0mo vm ֤ Eۈ(2Z'"ycq0?ɚfתieO"|-)\K*ob")\tr'#X_9ϴgaъclgV56#v\qc}ע>8N;EZb ,fi޾OOS: .l'fA}JRx;"EKi/cA*RlZD#Mi`=xx\/"nF.q2rD?!.Q-Dn ))= 6 Ӣ#G|˕1]K#3)~A' BMe%ېܓ_e>ig b9خY׍WYO *3gA .aVJ$2M܈_F +d[}ND+'*,/"|4 />:^.. b`}_&{U<%Ύy8;d֣(@ P(@ P:Jh^T̻ ļLF[R:t2-O4DYf9m]6G5!Jں:qux{Vk׮ X`[@kϦ) odY%ǍF!Xa<ef`vrc* smfaXư,1ih:- 8Ŕ8/#6*s8e0s׳oLQ)X)w$g28tuRjy.!CH4Ą!829i_(h7fH j "/CL)V#vgwE =9HgNr 0?+35;Ĩx3lFg=t, P(@ tX3:Ldžguq +f(%P-LǗ 7u* h6V*<{P6 EUX/XljagT $~T u>:;zu:#+HS,喡"wG1E&@~LBNA,E;BxMS_̂ӹPm)to9H\Dsjp/e%GѦ"?Vbdk}_1SͲ,CY:Um/a6Ԭڕk~9W=ڔ!=I% &gB Xm E&b[gK(E.mW(̲M\Қ2^YB)KYGdȃSuC{ P(@ P(@ t8T}@IDAT@W-m}3iuV[;֗RәTGyrZޫkj w/e(@ P(@ P+Y~]P_]7t `KPѷNW%h$b(GJOZVJAX$M{ OLDoL}$٥:9"B5sڼ^^CxQPހ \!u>;u/kaqjT`(fm%ϙXNiمΤ:NΓ^/I{X*<}uȺDv+//7mȑvu`9/axjb_ęmyv05ǦPBL/)J ߦ3N ~X'ZDS1?ҫPclG|iDɖM)݃cA?٢Unjjѹ{i8F,2*80KZIyTm"WcǜP8uVndk(2Zm|Ҁ bjǦy匡QN"aRy2 gsKv'>6 RX(@ PלMХѥ]ZZZLC*(@kO@V]fIy7dKH9]󖽣cLK/Kerzϗ^n/k;Jr{iu|,?V:Mk#uNdE P2-}OF6>Spk)hQ9fEkWd,zu i^K/PDʆF  gKSD:c<smR0zK(7j[&ۙ:w I=ogا;G#,Ϲ`2;$(@ P(@ PzgOh$7>pfht^"qpσ1UU0LϖӜ= g՞Dh2)9P,9* eHY1Oz{s,UΈ2X4|YωtսaDա=H]<Eq Ap~SҴ?ҙRᱻq]*4ooܰ?VR(@ P(@kMu= nn%^RЯg^Cjkf46x?=go'^r{ hp0A%p_畩UgJF>E>|}?bn荰Y; a?)R]$L¿(ƨ8< OQXPWn3(UzTzP8Oh>w 7߂a5`"0RpNN_nDUpBj/wǦ11XYzخрb͹\W1}W ~ EP@kLjZq-7:,>)G`kyL6 T0G#O#!8 Fl荖@~Md V䓎Yrʼ[Tv<'xoxh G x#欍%0p@kڥ܀wE֠gXp` &=O +&ycxH @1- q?a;O{͹!rWʵck-qE &.q'⮹P)X/6CM"\t-~=xC9ӄxm}FSϢoJ:v2͒O|M7 ==m <h ak +oŏ֭isVk \O+W,i&v[Mb)SgowŒ Dll$cqc_sdn9iJ`<Xz26pg(@ P(@ PW@Ϟ.bV_o%}} A8w]?Ty:؋߷7tleR=epU ~C)gEP|,R"W!E "z2s!ʖ37"X1{>cw\ɺ7@Y5)%&>` ^GO21gJ# &m؇!1)M X[2(n4r*2ӰЉ\Ιa=iqSm30e׈ٕ$nCk"h1Һ7CƟQZ pg͋AڷY\/k^tDʑRk{ 6z%=Of*ʵii_5aʋH~[HaSi.mBdxjh;T)Q}'Oٛ.h4jߝr=iƧ;I P(@ P(pM\w{㏺ :1G/1ׯ؋ hb~9 W"ݳlh/[ߘYKxDxq@'k8T8h&ԉ5; ִa,~ 3;[rPR^LR4G&._E+/1ul0iݘMQ_񳑜( 5TMZ K[{ fM{X0LD9mQ %z)EFrԪ:z.m/Nqkw)1/fZf^@iFX>N[1;s70/rڠ-)h'cϻxDKj3A P(@ PiDεDCc h>/: 2Ic'| >FGΑ )pY*l~s0v#bP2Ko<3\bbӢ#1+sOF|/> }RDa(ڴTpX|2V,he32.Gܒ؆ Q?HT[Vt3u?kc1O!8/k%crr:.ef׃NzI3zHbŌYYunϙ?͞ onp$pwtzSKr/Iav>d^g,[Ȼ#w0N:SdJO>H$bh6]on2(ݥ ~aր ǎz1SjS$NBb,0Ky8&r(ME^}-)"@[أ ݳCgdMK&ZZT+4ߣ:wb [O 0gk \v­iǐx5)v8-T7.Al3-={\d+Ϻvqnc-ں'/wgg`gPs*/_lS{oe6z&>$`!Z%m7ALxh{ aOiر` ?[P(@ PP z, bKN_ňk+~&Db֯~ A6:$ yҒDO(ۜ|sظ0ߚ?,?]5l؀{P+?cBubB P(@ PirKZ~셝S]}Yω|rZb]܌/1{T?YZ{Aէ+@.H&gz>_E!%'gor~;~gdelǻXYT>&-Z?) NߎG^YW\L`K1/RF1bdLS6]C SWF+լF/kNpJ. "Xkt}v":!@k$?ғOc^kUФbV̺k'X9/VoaրOv2Fc9?O 9wĉ\ѻ\7 "AҿfḂ X!f^AJ6->c㇩f ع_Iɬ0^?_ ^A#3u u3 Ni|_#F<7c.DLQeG"f؏(@ P_jPӤS=g&F25qc rؕL)hMgΊM+XRݍ8'O;u 6#7VzQlϭ1+* A͏baX!N|w8O;D(n}1TVZW@nQU[%$țY{}X6O{d+M`sp\o)ڦyE"gTvISޒV #>a J?Y%K>(7q(@ P(@ tF?:ԁ%=bϧ3m9E=^ ٶ tAWQZ,aފr_?^[_CQ|P)"<^TT`v4_)g(p) x;M|uYxpY^z5␢ lxYxǙ{F 羀G wc#NB~aj7B'BLҎ1(N@?8IҟF Jqq{?n) .lTP^1i4m Wb տOWMQX-f-GrbybZZN[_U<{٠sq<[񪱋CsD#EpxRRnaXI,5;fثj #.7CLDVƻ$J;EҔX;ٮwj2"ydӖϛlznDN5X̝:}h#nQԘ7_F TEM^+sW"G]?"~h:8fH&sh.{ P(@ PI_jsեUEWKƚ_b!8}o 3tpNNfEa/|.߮.ku%Lsӱ`<- >ҧрOos>E#Yh' BMe%ې_u~b`yNG\0nZ`y&]Jpxo+̨O"wBĭEdaV[/m<EoDX13Eק.>%$iߔV>7baQtkaK (@ P(;؉X$D݄>RnlZr!!jb.peH<~oh^I,/o.MUOø_ކ~F,_"?&s~AdIA8. nc?s.oeG;s-~>\NO61Txw P}?93N77]u[8"pӀ>f|aVC9v{kk/1s]ci$b3ďlH͂hm:a.@뀞肤%ъ eǪm߹K~?ނ== ōm qn@0`[ր4_,K(uP1k-,1efbW)Fį@-('pUa#SU>?>-u.2(3cy٢~jDj4l ē "ef$ǍF)LčU;ǩ^Гx=+I{2%)Rx#1K3;(,F; -I(E1!Xd{3^U(T\nϐY~}Vf@x*ܲΆ />5 U Dcozr|8$7*O> vڇOMҧ9 p G+K*Ua'cɄgK)p dr8 m(']KDt<UGZlRᘓ4B?_lꧬF2 kc@;y5 QGs%_'z^7 %p[B,hvn{@J2 7=ќ=غ쨋hS+S15ȯ|b,w6ؗvjso5C?- Pe }"lXr6K4{:< dd%V螋gn[aOa&[FaoM)2R׮mJON?UXy5b*lYkyO67$IK~f8hl P(@ PIK7v}!!0z6|Ti:njVuiG#^}wۭ4#Gv1^3V'yD3ÇKP[yKpBtaz~C9mO3Q- ^sD܍T)CeI閛^>:"4Pal}\/s5{ /(@ P%pAtEDDti)%_xl!c槔^ ḅmI3Ĕ5VWV]_tA}5Y6)y 7o%-ُ%9!~rn߀m5pc,Xo=p3ޚk/;?"GNFjT&>om)}wU_nF˰[1z8D YD91Zp  SlAiW8ꊒ/bVqQ3oCg2r4; #X2Vx(Z!Usu\2: cT^z (p<<|ЯP>-g'})5:|^,[ _P9/=ubᖖ p^uxΞ=_E__NҀ[2/u|,>_N{hi(-e򱼗˛X7m|.N~tH tC/_Wg6_^oؽyiؾoTM /uK;|u&a7^gpCogؙxa(.x<#ѹ{! 4\m%1ߞVݭx{]qPrmEw_#^%̡(@ P(pegi}Y9m>`.dxo~D_d1kn^e=~~cxESo-5xB}"x<OՎG+폈Ủ˱G Cnãԙ,b*td;&NH)h̹!,jVBUϜB,?9៺`Tsko+}o~uO%\cE(K'bY(~R40nPUٓ&اm}%Kf VZ&f Q@['@)~? I1'obbeQbai\cXI*K;V/Yo-POre8F947O?SN'zIgo|"'Z8&;7+>QQShǑ;&Fÿ3}ī(@ P(@ \'H5M^yq(k z~1El-Xr2ӴqT<#2%t;^USj>gzĈn`q֤7^p8t(ހm8iB]/,{2e?> {&lfu`Q""Zy鑆"aF݈M/a&\[<'ΜDHC#pňsgSY)nIDA,H٧`lyEM?0#W/5)͍s$| Ps^\lM P(@ P+'Qںbt4kɦ>|{3LeuAٟ:u|=JvjZEr<!tfR[%6ڕu ܊[݌CnD~0&?:k玂h*ift$7g,e`;(%~_KDa>|gvD9_j.F;׀K~Cn6=O:gZSw^N[ұ]%Un=rԗԧ77 8`ϑ )@ P(@ P(@+OԣK%;n,ieZjvQ:Km7#L~`; z:i=}j1>ŕX59}O~>*1-bۅK5L4bP@Zv\|;״];n=LA?iNs;/ROz^y1(÷c_䒞F^j_Wr(@ P(@ P#pZ,׉uwl.v梜K7D3TCںQ~)̯DvTU D㕨0e˘|Rr\ gϞW_|{!K{Jku&ϡE{hy5)Be-ߵ}y(@ P(@ PʐF< ˉ҉JeĥZpr~(?Nڳ{׶AgyV }Gؠ ^SY`h't~{Z9+=Wa>y"i3E޾}mns&aoj.}j2I+ :󺼣ٯ$űR(@ P(@ PmO̳cL=Ga\9d4 Oooxy7NV9nxdksB+*a] V R=x5\0?eP#JOr0  '=˺8[_"x@ PJW)@ P(@ P(p > V܍gGR6d-u0sA|eTk:xMm:c{>)Gt[1Wր1>o-8uZG.ꏈsf,ǯWΚahw35oJU{کWWy!ѰjV|T7agY5"У^?cu:O_Gvt<w˻80 P(@ P(p9]ꬥ C*6p#=F4: ޮ8sJ B֦0/TE@7 7sMEݨI؍L[$ ަ>|(3rcۙUl0ijӕݑ"U416MM'qߵۮ{F8 W+QAWW׫x=Q3.".(@ P(@ P(@ P -)@ P(@ P(p /Y.)-wy P{ ȟ=Owgu;qQ(@ P(@ P(@ P @b P(@ P(@ P(@ tW(@ P(@ P(@ P(~N (@ yg4D)` *j7!ꭶFƄOLNc>Oќ+m)DK!?" s3{gYf`6dZYZz{?|ߍ     @`o3 @@@@@@l@"@@@@@@*@}gX      9ˁD       U ΰ.@@@@@@r@@@@@@~a]      `/)       T6;ú@@@@@@!_$R@@@@@@l wu!      C H       0P B@@@@@@ @]R@@@@@@@KiR;Lo?NY 6@@@@@8*: Ԟ\|̶@@@@@8nR68n#_W@@@@@N"aH k<^_*%c       :4(BYS3(ܫW#GHk[#Kˠӊkwq `/B @@@@@@͠Z^ C:6rmídˁC"Ge߹U붠     @Mfߩ!u\q[-S/3n3k^澎Wk[|꾅5k$KB@@@@@*x?U. }so'g7Vp6ܘ}}Նݾ #ܸ'maH(nzY: Zr䵢`Ï@@@@@@; 9-lUꇏ] ]~W [ |mu$wwȑЮ^ayȆkۿK^U//,ݿ9w/i&e =f!}\p^pƺfkE58eܾc\N@ͼAr06fn R/w|w_M+%~.\([.Ϥm)!ֱQXI'à    K`sHmu64i;^L>{x]8j6pUmM/ʹ+ڬ<㮣3=?yeF7eV[ڿevG l#; ?{"|_w{y7x8£,~\8ejG_r`nMZdkm8iSR!    U;- ]$ݰEVVX, ̛ka;er_}ٟw ?kZ֟W;ٞ >MFwJ'?[}z6`~Q5l4a̞}<vH| +uiWVOLxj;h `/B@@@@t6ݲ}~}\)C?/s۸|t ;].\otQh-=75Z Ekq_c@zvwN7ۭ;ku,G^uwWL+5&nM~M^mq}CpQ. ~^:     n7j4Ǫ/Æߔvgx >5o+zLʼng{κnyϕQMAjѺol,Zm5ϒ[g356i]uuR߲Nzp%ϑ~WDs9rG? O#mmeuml,s.;_N9h#&^&6vɳvlF^c<.6=8~fy#`xcm[6Ȋ{Dʵfu/@F4:y瞖-\t|7OݵREjў{[%M/l)=#H]c]v3_#:+'D?    c}))M:eYᮚ;q{e5w\憰׽|}?ᩡcO_ZG> t~f?]]&ZfW4zW!^ aO{>)&ٶ~,+*s<&;} 2qLym?OYl]e|&Ƒ3n/-hYn,^a=nQ]2ed:}Ny oi2/60r`0C GbZ %M`p] .aNoM ?7w}Tv.9y9k|! sq PN}rB#    1)gޡu,­װva{2岋/*ܶw8Ts}$ ȽO<.xf`!vw?,HnutT!Yi.IxN60?~orT,}Yow<,_+ʮ%\Op@`ԇMSאnkrg_-k22*w׻dgP[S#cΡsq PN; я    X`jk4?.ya5+g~ O>;6a"#2ݵ&/|N ,_t^_|cQw<ߒ^-g3A.z)se}+d,+W*R7J52k< S3uu&*?.7O cղd˯5%W]fi|r,yO[6|FV%qX6-^U9UO;Xt:Vy3sɏj%+TVm'c']$^6En&{G̕:WV?-cn{LΙlyO3h @MجY^ۮ sn?.7d_͗O.9޵a~hkO9;Ab6=h!    dJ_K08mv{?%wm _5~"+PMTmc;{Vnv3n}Rl|J㞢{D£-]k; ÄaorP}wtyg>,[zS9[G~鿗:wjʼ#,*L:}ս+;,^$ 42{laˍataz}DOv)FZ5ќ"t/;Gk9s.6a6 \sټvnYG@@@@X@>e?ji4O)nWY3wg>RuIcW2 r=_(Z?v3uZGF=.U~:uo٘.bM=g$ߣ2_c|n6U5wcO;V?/W51ҙ21]jKsZk\,9z:Cȑ6i =4P}gx wzaWfOxZ響!'>";.@܎1aΡs:7YleG@@@@*Z_p<ԏ啽ݛ[Ym)SYac]rYc+&ڣ裏ʢGG #FGIv(X43g&u|g ~:%+ƧѴGyg^<3s4E>mpeǔ;. n칛n:^sdAɺ'@? ikÇ^_N }᥏䴗>=l|BY^Ó@Ա:Υsd %+8     p{n죧ϒw\vAˤ嬦 '&އdKIj unYSΗQc'玑7=GF}=kEw!meYT+4?p.8h/ 7=I-{ș^ pkzԎ~U׿\'?eڵ;1VBc#pH:_,_.-McH8u<޳&܊u$uu;^GpwMs:7YleG@@@@%yRy(2kkgiMa2S_o\y{śAoO>2>l(cL:םUrlpgk<9̻WEJ7YEWgNHGY$xͽ.i :|اE48.C-˪D7.y߿@8}~5wuni]#}aOH{Mx|gޱK~%ɿ/K䑞/~KE@@@@/Y.Z}?dތQݫ>|,/=1wvn`xWs=Gvz|?=Tl9W>3'Fn@!.m-ryߗX 7$lJ_Ç-l״J<t3с~     Xijrä5_-rJ|-}wlj=ss,@-c=,}me7ȶ-[77/~S-FJ}m<]4_ ErOx88.GtlݠQv?ݯ˱ vo;i5@@@@@8t}l0zjunucÈGD=]>EY/>yy= ᎝DCՖ~CnV]ZbѳO_!ydmcߵW[䁜]]He97uoV|k x&3sbG@{بk vփ-M7Fh0'@@@@@@@K,H8tuSUײ~Qf_eTj_q}N?_d挙2sfx;R&eg֝kLXfsBV~^}>Rx0keu=jy+a/:V,~D~\v탲՝ZT8}G:W E jyX'    'Pt3{(ј~̞vv Y{:]9}M\}'Jez\qǚ5m7͏S:7ʜ)^g32exR7prk&^u(f7Ȱ:~ӇK}54˨ v<ڴټJvˍD~`5    k˽' 2-s<՛eO:zP9ˇ>+w{ܜ6Z䮙cv/K[C3EXѵ7L'owΒ<}r6Z6 o;e+nn4yzn5(?{zgz$+[_뾺0ͺV9ͱszK8yN+E@@@@Jʝ_&Kٽ2wW彟+[6om^ _pu4z>gԻM m{j>/ d?*w>Y6lpGY)7um9,ox[-z=?qÛ~!ӵ/|f{ϼWcaL(>F=[S=rޅce?Z%;ceSvwd])9q y;3oqddSOWZdEi2qeнǡb @{S     6?r|twm ëɏH {oXrkH όa5zVأ2M&"?m8U^i2rX.cH2m4Dao2y25 & q_Tc$l9^fWc<7&[e=3hS2SAaag-ی.͘}mzƶW[o*]|YnڦrJ"ܗ׌1@EGz($ׁ    &d d]e~krn_aȓkK6~QxƕLl;Y`|g:,]C.]ݽZZnXYZ}=4St;hŏ-=+"S>5yq랹k2hlY]t;XL!̙}]T@+N}N\/K>֍'[ۗqo^Ƴ_g1k[ou8ǷlX@@@@d87N7kGJ 34ӗmYJj8O}խ|;okN;WR78@@@@@@@J7e#      l{      @ WoKG@@@@@@ ?~@@@@@@b6c            U,_y,@@@@@@6@@@@@@@7#            T~Ut@@@@@@w@@@@@@*`ï<      ~       PlU@@@@@@`Ï@@@@@@X *~X:      l;      @ WoKG@@@@@@ ?~@@@@@@b6c            U,_y,@@@@@@6@@@@@@@7#            T~Ut@@@@@@ @@@@@@2yL&YnS厘$^0RjkEmX#6+=^@X *~X:    '׽S&W۾UvȜ\xNc1+}eߐUۋh! p"H]@@@@8\#uOCmFyיW8Zc@_;= @@@@8Gqɸߛ xZ3=2+?Y'ugU)k+/: d>.q\:u"arИIʸ74HΗd=6QInY|t?Q^}\8 2æMG6b,[ަ/[zFX k &3'SiNq7eņF|T *{tzҘ4[/y϶c^u,(  pB $D!    #il򨮫ho_]YUcs'N7t2Uɪteڬks/`G 1fU&k 7F|Uо.{y'U؆ߘ]!gwvNtzvfYoȚ NzE\+M\1g=J&L&Y"|~ȘirUt=D1S+3]Y~#[#A p2 HϓZ@@@@8F\ FѾCsRW^.w鈮J[ήviomPZCl9TkG #CmHϧgxͅq5rfUޱEV~AsQ-c5NQF7/<ݭZFw w!    p ۾]6m.۷}WңcΝ*yGs-OdN2ܾ<߈aC g w4> oBPμz_! ˕E}z;+{.ţz$K%˝w6LnVuz@@@@8Iƽ+|ewP;E? |fnw=3JWs\{>s yrᒧd>_eׄ4J||G\K_kUZv[-k$ 9o?! "#=O7@@@@@dh\.×2|yR;$.|Keٺ;{1}!Lw~՛D W*l&7l kZc l_75Uԟ-Wyk~ٶ}lۼQ6u۴NKn8ʸϑ[Djk#[]% eXxtk^+![ :@@@@(#rD ;=ǡβ8Ϗ S4#N>x֎W_iw9-o\y:F#oפr;;6{򒗚|o?}Lh*|`M}3Mӯ[5K:9g…ӝ%k+ְW'yet %_u_@@@@"_n#W{bu]*c6|wݞhy6[e׎]o3}kMI>QΜ.ǎMKP gQe/syoFI˟Sezxs9}XYS ozq`YOu]+wNï(pvJHHаǁT'\,6>'ݫ8 ~˲,u"L9ep[$#+k9@@@@@vihJnX;k!yn313/;jR}u{-/}{Mm5˗j᎛H]CR3]uzT}13 k;\}̻dTUo,7ׄ 5ϯzw} O($|{^ A[ dTz@@@@8ֽ kQ8A|Da?'[& |dNyauTkIaɸrpV7۠Ho#GYuϺiX4 p w\    ')tDߑ<ݱ3T&LgxEI6w& }>t9u]Ӆ2wޅ#7w-$˚Rw9dCϹP͟(v*miC68q?y&5oWUo _ X(qJ}]ݑa6Q='[u " r5dՖ6p 7 ][E^&]nILh;VɧiciɰgMDRD@@@@J-GGWI}rZm~.(!j9Rllo/;7iA931 :̮E={wO\'_奭aS㨓Ʀ&6,Zn_cZ <òW;V]?mˮWWh%_oxIwkhݛ}W+_ڈk~/fxmޮ`nW.-s,~R|?`w5@DO3JSıWu]ˬ*>ǭ++nyVZ^XjZ6Smgu+5ߎۚSi;5Ε쾧:@@@@@+i] طi,;˚Unuw: @ YƁ      U*_q,@@@@@@`Ï@@@@@@X *~X:      l;      @ WoKG@@@@@@ ?~@@@@@@b*^;KiD@@@@@@cW%@l76괬ɱM޽~_>ɸrN_c@@@@@@yn,T'^WoU!WI@~<hֆ     K]\{`-wdoޭGU_^xEGƣ֗gɎٳT1@@@@@@ %֦{ GR}!fSKŹǫmks~ͭʣ71yrfkүbVR5kl(@      <{ ->VnVtYJ= ZG5m)p#o^z:rCަݛk`      w^.~̬㽟y0ղ4ON>ʳ-+[-[ҩ"     "k5X^b/M<*:_-~.xag"z\q6C/@@@@@@R---/oٲз;xک)&G+>OZO*o@fee_,1e/Y 3g|u_TXs      !Юw;G;=9J* "G;WG5gQXcyڥr[bUY=N͑X=γx\Z-^<?䓿Yz/ vN2dH]m8tb@@@@S qaRoO@^X?wm믿¶m۾cǎu(ZJ-t [MkmV*mim?bn"ő'UҶ\+uO@IDATZO-Y[ej9:=bZZJYimZZ]s_sh9^uj0CsmֺگGj]cZϊy@@@@@('g(q}V[:m>{yUگu}t|K絸lTbV-m~kkGV;cZStz_Q 7(@Jp׺sv>Wj.@gmi~+tmgq~[T⺶Z@@@@@KeHǤ+UnmӶt VUR/?h     ,ڏ?ToO>syWo<[/U>_}kױyZbVϼy _f 'Pl0ٛbf,n9V/\[k16Ӷ6^y<-K~Rykd,     @Ϭ\ͥ};xK|=΋v._Z=-ryO߸J7ͶqyysuLu>;ƬsmL*<6qwykD@@@@@<ϱg׬Y/#Ϝ6\iJW2.>o0uOJ6엤1KP8:gs[[ˬ1Kk~ivB+#O#     0|vn1+͊y\c:5F>T^\_/>V1~r^~GoX1rYnYgkOYq5yRs>     @ϦZRsng1[k개LXԑ˓b~NJ;˛T}6MtɿI&eKLWJ۹,ʬ,Jvj}5rtf\=m_;ϥ     🭧+USZ4^gRc}N:_ʱϵ/_cZ:J2kk^\G;>_նw4ƔL7h<Λg}ZKV\ejK~=ʍY     <]9U9>nu^gu|_ns|r8G۩#+gs[fTWj6 7yEfSrJu籹-r4j_*_vT:&~#5/US9@@@@@8,gc<5G-XKnq+~k[Qr-q7v_;<iï78F`ʓ755_Rcm\j :O|n>=~9|Wn~:@@@@@c%۩>G׸,ϗ|S.'v|8nmkm_yZO79i熟6:Թ̭9aqT\mlCHk}V9XLT~VKrc-@@@@@%8ǷSuYY4۩>S9Vs-eQ*>5wm9_Ic=Gs/ܡ6Ɋ9?b5xܧm?u.cJrm ~xNg֦D@@@@@|6'Gיg[Yz-J;*}r}|gg㱾ݛ:N ?}ctRoR{6tR/՟Ok֧x/m?;Ozߟ/U%     @_ ϩ}c1ھRgu+-Jge/oV~k[RG8SnY6*ˁ᧸lmnYk,ױïb/J+gsYYۗ>Tɓklϟ7uތg      &Psp͋s|;Uŭ/.6׺oǹ~ZM~?6OcV9meW-'nJzVhim>+~_yŴ?׏S;>o^s󜁶gYF9:_VΟ3+c|].f|C\c}>Z4fvVn?#+Dֶ\_Z]爏1/Wj2osո_h6c,75\bڧ>ca|LY|TK՘_O ,5     }%kn?x׺-b|u>[Y\<1ǕWjxIٮ ?}CP֛V*/՗ܥokIiL1hhݏնtac-7.5i)SI^~ge#Є(@@@@@V RSuťͩqߗkV>_~;RqӺy▫[ک9-<9llV<+7+gRsX΀)mïۦmN|1&YmljL|^Jjb|b|ȉKd[|UX^oXJ@@@@@*?T,enq9eV_Zuu'm?me*_Z*a06vƗ/w5yqAc~_c*1h~xs|;U1U/}ݤ5f/gyֶ|՗kLx|![q=αvoe*:G\w͟ lYbemӹSLJնuX\s隴OTBvhܮJm.+S>'[=kO     9wYuK4n}ֶ\\y6G*R*c/Ujn*frse ?3/-PۮX)\ZO5O3^s94ϝF~\r9:ظ^In<6     !`;m_9,V|y}q֗gsz ?-T~~sq߮85ՆQ/&P(\tTӺެX8rby9     T@u~+mnguߧ1{8m=,GK;|>j[6}=ն1VyT/Wuɔ-՟㶞'<9~L\׶zm1km-}ϱ񚣇+D?SyXztv94׎:,N     9um/WjI-GV|,U}[vvڶzsn}ܹ+Ǵ>7 oYe5Źyc|뺎r^KZ6Y;1=l Vg*''C@@@@@,?WZgm˕s|=է~=meV,b~^Kͱխ]龎vom?lk9_i xlneS?51qn}>u=lq YsqZYֶRzTLzظBj|_юsr@@@@@K<9qc_ֺ>nu+mkkv m.˱T~]q_VܘrYUFۆxmu#c˸^mr}bZZԣTJOu$:cYYq?w<m@@@@@Q &M-U}n*g\ΓUϝq=,~~iiXv*'k.WUy<-Y6ySqv|ߎ>R>kLq[k㴭G+.'     '@y{J#Ή6Y9V~[s|k?y4sx*fΓ#     @ d}#Ήۖk_ֺo[YNV\_[׼8h~-VԸzTi\X]K=Jr5Vj6ŵmuY9Y㭿J[]cy-?;>G@@@@@X 8Ϸ[_Vi9Y}Ǧ|n\Om_sh]oBOOaXGR?u=l)d~9>Tۏ     $`Wr~LV]糾r5|ݏRc/.\VRT;:s,V[iY9>^/=aڵp%9O1k[X/+yrmN+ScώKms}mAX*}Y9~-o     @~sn+mݩ~>?ʵtNyv[31[o[<6氶/mN_|DZ5g**{3&kxH~C+n1k[X||ӘIiѺ:|그ize~:f^      P:kl۾n-fe*u-*-'+?sճ[HŬJcu+S9YxUEY~<*gsϑs?UZC9>ǵO[KVXD}Oi5G۶v#     G \ڷ}X\T,ֶX|?&k|iuˏV25ոYTXY*Txnjl񼩘z|nn1?&Koygm-mY1~Nv\1z9lyyh#      d}U|жŬ|cV|[s-ŭmq__iiaeURu?~S1;͵kITj#>[iVZʬ1oXi֎KX9T,IW1;][iYioqJ@@@@@J l:5ogu+m.k[qkiug-Ǥb~|6Jo1+Omh:nsؘoiŭe~{mJm9ʏ| И:[q[Y*}vXv5r|bL*-mJf__s1yA@@@@@hϥmq+_yY9~խ[JX?Rc|u@@@@@ d}]j6bVk*OXrsS1xuY]smS*1sY,UڜVc|阬g֮d6@@@@@JϦScK>_ymͭmz25x-~ [ϵ1J?Sc},cvryVASI+5XZ&      k<_}V0}yV}cS8H},kXyVS?R|?&U];MZ q[sS1?ϱ\-xq|6G~?is6w6_R1C@@@@@/ϥ㶝V[ﳜ8V*s[ic,GzX;. a-nc}VZ/#mq_mc\YM~y6~˱R6.[kLۀ* Y6&[y|~58ˋj1v^iiϯ=-}#     PN R_1T\s|^V;+Z,JYiq_<*}1=Rc>7[nՖuO(<\K;gj]>OKWvXHH8+8qQȬI:,?Xzׇ( H@$  H@$  H@x<#{\թEz쥮3Gd.g^s}J,o=:c嫇]}Wz~8+}C,2IOlW:&g>c;ӃgM3[qMo:+|/巖}zQCm$  H@$  H@$  %[ѾɜQGND[եyz:#LyꡮXO_oשg}fN'V˞]88YWz="uFr>uʩ|s >iMS|YW~T׾g/;\$  H@$  H@$ ;ο]wx4Ls.{詑WFsT };Koٕ3h=O9s>~;T9/#OΖ/k|\Z/{<^Z_??S3S_M$  H@$  H@$Lҽ,tb׳Cq1?jҧ|vM_Wޟt_h^"μUS{u˃VyLZK@$  H@$  H@;3ٕͣ59<仱ﭹiԓəx+WxjsGtWp^L;ZP[yw$~,3H죮F9=g\eW:gN_}A3J@$  H@$  H@^E]לuj^{r);>SC'A'v"RtvOs;ٝ۞OyP}v 5}bS/u5:yV^OtFjc71ZJQc&=W^OS$  H@$  H@$~-|:yzш5wӯy-u='I^>rԽ)2CLϤ^?6oY*^;y s3Oߤg?L}UwKCěSyt#z&$  H@$  H@$ ߠLOѪge|y|+_9w>5]O>y|UZx*GfW;~׵?{oU(W]gԓsa'{*bgzޫ[=`WI=^<6J@$  H@$  H@^ISȻeV,>"zXzՓ_c_uyҏVk5gH>Ⱦz\ʋiutb=}>5Wg_ Շ,p\A#FVT._wbG}/@x7yɇw^Τ~q~rd||j$  H@$  H@$  vgܟҳG1r6?4j戓gm5z9j+/g{9 %rٴk/;}eeo9맯 Y,/̻L)OV9ފ쫼f?WoWs$  H@$  H@$ N z5YٽNN8{G#rVz?ݻ;q]/z&mEL^ڛٷV?{Y3[q:";*χϜK;kn^sG|`iwҎv|k/ d^3fǤ[y=Gڗ/:k/y yX;#?[:93z򢥯z|g. H@$  H@$  H@B`սeX>ޑ寇"t}>z֩^OYwo;3G{ǥoGMWkUOM9QwNohUϓ%u?*果ǿ_y͸힣K@$  H@$  H@Egu޽5yw_4bΤvO^+_xsy\yx^5'/WGhz[rsvԑoi'=3dyRϼ3^&^Kщ\z*'g+z^1=$  H@$  H@$ GAOvgo';!Vrj";I_^YS3G=3C]WIG#r~ŮQ'oȉIOOs H@$  H@$  H@+ ]\MI#vjzԺ{1=hɫO#Nb=GO}bz2h'/);gyRרx{FuGsW1dt=ijU~$  H@$  H@$  H`E`Ϟ~>j|ĻjVDH:#jG%N3g%W4w{;x+ v:ZYzZQx6iީT/_*/n/VW;®/FL%  H@$  H@$  H@O'pt\;U>CL#1ߵN>4vLvO{z̳{i;/S2R̿sϑ>ʃ?ӟbj='e^3f\W̫;K@$  H@$  H@+.eV;'=^SF\e?s7Fތ#9C͜I;0KerW.hގ=OFS>Իgg/1=kv5?&vtq>g- H@$  H@$  H@x%OJS/Ϫ>ϔVD#e-#NjzΠ{fN(^zy;.Sv/h3ĕwڳA?9뱣Kw\y['=́ڵ3/?uS^}(=s^=ͩI@$  H@$  H@IBg_ݓN>R{dwשF^婓gTwϴ^]_W2n y[w5ҧ<:qҲ:z|Ccuݓzw}}$  H@$  H@$  Hv/pv}nkD>S'==DDv 1g'-9볋N>s?2ʙgUL?'TDz=w/jvs(]}znqws$  H@$  H@$ 3Ȭvwj;9"ZxN=e]D%gs3H=mE;6gNo399hxrOjO3ٟ+3/j{k~Mzչg- H@$  H@$  H@Ng^]|^콣jOjSa~5ؽЉĕN}ُzVgшdMN,9ϡf/)O-whG|玞Z$  H@$  H@$J9+ߤOҗyyμG<|U?e&ޣ&N\?_}Z˔+gyW]z ptb׫G\igs׃FLSr<}ffwG]$  H@$  H@$ݙ]jogWL?9u_2wޑOF}|GgW>W3:hOxwOyшɻj\G$  H@$  H@$  HgBW{?iyn3ٮ3:9OɼSHhguvy>?Þ]W3?;/q#&gG^w9k3葀$  H@$  H@$  |'O]>u5IC\G>4"=W?gz>F~;Gώȳ꥞9WqS|OzGuY}wW r/ #ѻ}$  H@$  H@$  H$po7f2?yuyV{uDшz9svtx#f_u_O4g޻3WWޣZK@$  H@$  H@>eQompFV9ފ'ľcu2v9xśsOW gU?{t>~4CW5{g&< h= H@$  H@$  H@ڏ\f'}WOg9ɟ^h=үx~tG;>`E;3ϪzcIY9}~ӓ9)v__Iٕ{wL$  H@$  H@$  H'8?61龬3[9x^<ʓzU\x;;^^veybNϪkQo:k}{W$  H@$  H@G`ig;Wϟ|]u^5sDt"z+ʃ3(#ߏ ?\yv{>ޫ"3ĩw̙4zʎ_;铀$  H@$  H@$  <ߵqwt~SϮ<Ěwt.{zWE>zc. H@$  H@$  H@~wL6{ƋN:udl?#ɏf/ ґ7giwf6ӳwY$  H@$  H@$  < w4{=}欏Ʒwgw};gi~z?|^+v=sl{Gg$  H@$  H@$  HO"pFI4*f/۝wg<<[nIDAT=W̽,~EΝڝ9{Ezg~4}2W;N:.g$  H@$  H@$  H@"Kޫz}ウeNJzWyƴ㝙~!^\yW?߮MuiGYGsW{:{闀$  H@$  H@$  |'ˢU>KY<=z]|gW>f @L;3O:U^?I$  H@$  H@$3 ܽ9;OV3+V3Gw{>;ʮo~_ssef{~w}vvv3J@$  H@$  H@fw/٣1Ǵc_`1;읙%xW\Tx>$  H@$  H@$  Ho&pvt֟حf&}vv{>]_xg']y+3_z2ܳ~LI5ҧ];{wo- H@$  H@$  H@w.=ͮvkM\zrG|S]U/re?3o?@23|3i{<س{ {$  H@$  H@$ wxΞ#Q33wy~n;g?2uO_OMIHlϮ]~$  H@$  H@$  Ho&{u;OI۝_覆O|K/hy竳_z ;i&}g~wߙ;%  H@$  H@$  H@F%̎4?iSs>θgY9'OzEWv<;4>o]3G;Ɜw# H@$  H@$  H@4W/WhQoڷ|0*/t~앙4>oW̞͜s'rqF$  H@$  H@$W.tޕ;i3W<}#ٟ~ _|+_^Ks|gvǓ;%  H@$  H@$  H@xԎg&WgW#g.q w<{ePwfxeoa. H@$  H@$  H@ \к=bygjfOYW3Oysܝ:wſ_GfW;V. H@$  H@$  H@x5g\=cG\ͮ~vWwy戏γtrwǕ+^~1fz̟g8;;L$  H@$  H@$  Hy􌳎vV\\yw瞽#}K]=ws6{gw9 H@$  H@$  H@O ꋧg#wf;ܝ=}Eͳ>#{ޝ_ٟ}$  H@$  H@$ w}{wwܝwyd6?˳og~ƻ #{u6`$  H@$  H@$  H:;Uwf7{ts Ώ˜gG=2[8ί~}%  H@$  H@$  H@ G.=G>ӳMg|]<>y~y}S|=}5 H@$  H@$  H@3 B镻a3<}^'\X^Wߘx;/kF^?0=-" H@$  H@$  H@~ӫ_G2zrϫO$  H@$  H@$  /^}ޫyI^}ws?Ϟ$  H@$  H@$  H@?e wcܹս;ϺNk'$  H@$  H@$  H]~¥;g;~9^<}׹Ѻ77}{$  H@$  H@$ w.~׹y^<'wxQ7I@$  H@$  H@$Jp Jok0*O}| n$  H@$  H@$  >2SxroS$  H@$  H@$  H@%S/~{}4/twsoc}ޛI@$  H@$  H@No>z}ÿQH@$  H@$  H@$x_Msȶ$  H@$  H@$  H@o#P_; k>i߈# H@$  H@$  H@ߝF?~`i$  H@$  H@$  CX^_>O H@$  H@$  H@xi$/to'w'$  H@$  H@$7o$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$  H@$meSIENDB`django-debug-toolbar-1.0.1/example/example.db000066400000000000000000001540001226272473700211100ustar00rootroot00000000000000SQLite format 3@ ZZ-  MME Y3indexsqlite_autoindex_django_content_type_1django_content_type --Etabledjango_admin_logdjango_admin_log CREATE TABLE "django_admin_log" ( "id" integer NOT NULL PRIMARY KEY, "action_time" datetime NOT NULL, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "content_type_id" integer, "object_id" text, "object_repr" varchar(200) NOT NULL, "action_flag" smallint unsigned NOT NULL, "change_message" text NOT NULL )E%%Mtableauth_messageauth_messageCREATE TABLE "auth_message" ( "id" integer NOT NULL PRIMARY KEY, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "message" text NOT NULL )Jctableauth_userauth_userCREATE TABLE "auth_user" ( "id" integer NOT NULL PRIMARY KEY, "username" varchar(30) NOT NULL UNIQUE, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL, "email" varchar(75) NOT NULL, "password" varchar(128) NOT NULL, "is_staff" bool NOT NULL, "is_active" bool NOT NULL, "is_superuser" bool NOT NULL, "last_login" datetime NOT NULL, "date_joined" datetime NOT NULL )1Eindexsqlite_autoindex_auth_user_1auth_user !!ctableauth_groupauth_groupCREATE TABLE "auth_group" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(80) NOT NULL UNIQUE )3G!indexsqlite_autoindex_auth_group_1auth_group++Stableauth_permissionauth_permissionCREATE TABLE "auth_permission" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(50) NOT NULL, "content_type_id" integer NOT NULL, "codename" varchar(100) NOT NULL, UNIQUE ("content_type_id", "codename") )=Q+indexsqlite_autoindex_auth_permission_1auth_permi  j|^:lDm<j +#Can delete sitedelete_site +#Can change sitechange_site%Can add siteadd_site&1)Can delete sessiondelete_session&1)Can change sessionchange_session +#Can add sessionadd_session/;1Can delete content typedelete_contenttype/;1Can change content typechange_contenttype)5+Can add content typeadd_contenttype)5+Can delete log entrydelete_logentry)5+Can change log entrychange_logentry# /%Can add log entryadd_logentry& 1)Can delete messagedelete_message& 1)Can change messagechange_message +#Can add messageadd_message +#Can delete userdelete_user +#Can change userchange_user%Can add useradd_user"-%Can delete groupdelete_group"-%Can change groupchange_group'Can add groupadd_group,7/Can delete permissiondelete_permission,7/Can change permissionchange_permission&1)Can add permissionadd_permission  vdR@+}hSD2 #delete_site#change_siteadd_site)delete_session)change_session#add_session1delete_contenttype1change_contenttype+add_contenttype+delete_logentry+change_logentry%add_logentry )delete_message )change_message #add_message #delete_user #change_useradd_user%delete_group%change_groupadd_group/delete_permission/change_permission)add_permission   mm  3sAAexampleexample@example.comsha1$73488$18127cac633dfb17a000fc634f3c5319e3017c302010-02-11 16:15:20.2222032010-02-11 11:47:10.193040  example   (Y<(sitesitessitesessionsessionssession(%%#content typecontenttypescontenttypelog entryadminlogentrymessageauthmessageuserauthusergroupauthgroup!!permissionauthpermission jyjsitessitesessionssession%#contenttypescontenttypeadminlogentryauthmessage authuserauthgroup!authpermission wyt< ++Stableauth_permissionauth_permissionCREATE TABLE "auth_permission" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(50) NOT NULL, "content_type_id" integer NOT NULL, "codename" varchar(100) NOT NULL, UNIQUE ("content_type_id", "codename") )=Q+indexsqlite_autoindex_auth_permission_1auth_permission !!++Stableauth_permissionauth_permissionCREATE TABLE "auth_permission" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(50) NOT NULL, "content_type_id" integer NOT NULL, "codename" varchar(100) NOT NULL, UNIQUE ("content_type_id", "codename") )=Q+indexsqlite_autoindex_auth_permission_1auth_permission !!ctableauth_groupauth_groupCREATE TABLE "auth_group" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(80) NOT NULL UNIQUE )3G!indexsqlite_autoindex_auth_group_1auth_groupJctableauth_userauth_userCREATE TABLE "auth_user" ( "id" integer NOT NULL PRIMARY KEY, "username" varchar(30) NOT NULL UNIQUE, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL, "email" varchar(75) NOT NULL, "password" varchar(128) NOT NULL, "is_staff" bool NOT NULL, "is_active" bool NOT NULL, "is_superuser" bool NOT NULL, "last_login" datetime NOT NULL, "date_joined" datetime NOT NULL )1Eindexsqlite_autoindex_auth_user_1auth_userE%%Mtableauth_messageauth_messageCREATE TABLE "auth_message" ( "id" integer NOT NULL PRIMARY KEY, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "message" text NOT NULL ) --Etabledjango_admin_logdjango_admin_log CREATE TABLE "django_admin_log" ( "id" integer NOT NULL PRIMARY KEY, "action_time" datetime NOT NULL, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "content_type_id" integer, "object_id" text, "object_repr" varchar(200) NOT NULL, "action_flag" smallint unsigned NOT NULL, "change_message" text NOT NULL ) )#MA8f5d159277a2cd93c7eedd130d40d773YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-11-09 15:05:28.556757MA6302a74c1db9659f418ffbb402305618YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-11-09 13:48:45.772343 MAe6eb276b4fdf14fa1bdc2f16b0bed4e9YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-09-23 17:43:54.818446 MAcb1daa926d46a1c6a922cb5986809488YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-07-26 14:50:27.979437 MA7cf37fb975a6121dfc3686a713ecb82eYzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-05-24 02:07:16.886370 MA1eef3a11f3cd1abbae71b35f50cd2fa7YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-05-06 16:29:40.929606 MAa2037b6e71832e84275e3fc48aa4ab58YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-05-06 15:03:39.136450MA84983a927adc0057d768c3deae6d8253YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-04-20 18:11:14.869543MA4c71a2f5c19856a49bcc3a0508fa6677YzE1MTA4ZTEwYTAyYzNiYmYwNTU5ZjA0NzFjMmRhMzgzNTRmNmFiNjqAAn1xAS4= 2011-04-17 17:41:49.344629sMwAbbfdb66c7b76965296c2e767fbaa49a9gAJ9cQEuMWZjODM0OTczYTgzYmY0ZGVkZDYxOTVmNDhmZDY1Mjg= 2011-04-13 17:30:41.846736sMwA307c1f07ed804b9fe7a375080d51ac23gAJ9cQEuMWZjODM0OTczYTgzYmY0ZGVkZDYxOTVmNDhmZDY1Mjg= 2010-02-25 14:29:24.243961jMcAa3f4f83fe892218a50a33d098dd93afagAJ9cQEoVRJfYXV0aF91c2VyX2JhY2tlbmRxAlUpZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5k cy5Nb2RlbEJhY2tlbmRxA1UNX2F1dGhfdXNlcl9pZHEESwF1LjhkZWJlODgxM2U5NDI4MzE4ZDhm MjM4YzhmNjZhNWZh 2010-02-25 16:15:20.363483 DliGD"$M8f5d159277a2cd93c7eedd130d40d773$M6302a74c1db9659f418ffbb402305618$Me6eb276b4fdf14fa1bdc2f16b0bed4e9 $Mcb1daa926d46a1c6a922cb5986809488 $M7cf37fb975a6121dfc3686a713ecb82e $M1eef3a11f3cd1abbae71b35f50cd2fa7 $Ma2037b6e71832e84275e3fc48aa4ab58 $M84983a927adc0057d768c3deae6d8253$M4c71a2f5c19856a49bcc3a0508fa6677$Ma3f4f83fe892218a50a33d098dd93afa$Mbbfdb66c7b76965296c2e767fbaa49a9$M307c1f07ed804b9fe7a375080d51ac23 NN_mY&{D ))Ctabledjango_sessiondjango_session CREATE TABLE "django_session" ( "session_key" varchar(40) NOT NULL PRIMARY KEY, "session_data" text NOT NULL, "expire_date" datetime NOT NULL ); O)indexsqlite_autoindex_django_session_1django_session, ##tabledjango_sitedjango_siteCREATE TABLE "django_site" ( "id" integer NOT NULL PRIMARY KEY, "domain" varchar(100) NOT NULL, "name" varchar(50) NOT NULL )<99tableauth_group_permissionsauth_group_permissionsCREATE TABLE "auth_group_per 33Ctabledjango_content_typedjango_content_type CREATE TABLE "django_content_type" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(100) NOT NULL, "app_label" varchar(100) NOT NULL, "model" varchar(100) NOT NULL, UNIQUE ("app_label", "model") )E Y3indexsqlite_autoindex_django_content_type_1django_content_type D ))Ctabledjango_sessiondjango_session CREATE TABLE "django_session" ( "session_key" varchar(40) NOT NULL PRIMARY KEY, "session_data" text NOT NULL, "expire_date" datetime NOT NULL ); O)indexsqlite_autoindex_django_session_1django_session, ##tabledjango_sitedjango_siteCREATE TABLE "django_site" ( "id" integer NOT NULL PRIMARY KEY, "domain" varchar(100) NOT NULL, "name" varchar(50) NOT NULL )<99tableauth_group_permissionsauth_group_permissionsCREATE TABLE "auth_group_permissions" ( "id" integer NOT NULL PRIMARY KEY, "group_id" integer NOT NULL REFERENCES "auth_group" ("id"), "permission_id" integer NOT NULL REFERENCES "auth_permission" ("id"), UNIQUE ("group_id", "permission_id") )K_9indexsqlite_autoindex_auth_group_permissions_1auth_group_permissions--ctableauth_user_groupsauth_user_groupsCREATE TABLE "auth_user_groups" ( "id" integer NOT NULL PRIMARY KEY, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "group_id" integer NOT NULL REFERENCES "auth_group" ("id"), UNIQUE ("user_id", "group_id") ) ##example.comexample.com       p|vp         Ewg?S-indexsqlite_autoindex_auth_user_groups_1auth_user_groupsEAAtableauth_user_user_permissionsauth_user_user_permissionsCREATE TABLE "auth_user_user_permissions" ( "id" integer NOT NULL PRIMARY KEY, "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), "permission_id" integer NOT NULL REFERENCES "auth_permission" ("id"), UNIQUE ("user_id", "permission_id") )SgAindexsqlite_autoindex_auth_user_user_permissions_1auth_user_user_permissionsK+;indexauth_permission_content_type_idauth_permissionCREATE INDEX "auth_permission_content_type_id" ON "auth_permission" ("content_type_id")n5%indexauth_message_user_idauth_messageCREATE INDEX "auth_message_user_id" ON "auth_message" ("user_id")~=-indexdjango_admin_log_user_iddjango_admin_logCREATE INDEX "django_admin_log_user_id" ON "django_admin_log" ("user_id")M-?indexdjango_admin_log_content_type_iddjango_admin_logCREATE INDEX "django_admin_log_content_type_id" ON "django_admin_log" ("content_type_id")django-debug-toolbar-1.0.1/example/manage.py000077500000000000000000000003721226272473700207550ustar00rootroot00000000000000#!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) django-debug-toolbar-1.0.1/example/settings.py000066400000000000000000000050111226272473700213550ustar00rootroot00000000000000"""Django settings for example project.""" import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # Quick-start development settings - unsuitable for production SECRET_KEY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' DEBUG = True TEMPLATE_DEBUG = True # Application definition INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'debug_toolbar', ) ROOT_URLCONF = 'example.urls' STATIC_URL = '/static/' TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'example', 'templates')] WSGI_APPLICATION = 'example.wsgi.application' # Cache and database CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'example', 'db.sqlite3'), } } # To use another database, set the DJANGO_DATABASE_ENGINE environment variable. if os.environ.get('DJANGO_DATABASE_ENGINE', '').lower() == 'postgresql': # % su postgres # % createuser debug_toolbar # % createdb debug_toolbar -O debug_toolbar DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'debug_toolbar', 'USER': 'debug_toolbar', } } if os.environ.get('DJANGO_DATABASE_ENGINE', '').lower() == 'mysql': # % mysql # mysql> CREATE DATABASE debug_toolbar; # mysql> GRANT ALL PRIVILEGES ON debug_toolbar.* TO 'debug_toolbar'@'localhost'; DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'debug_toolbar', 'USER': 'debug_toolbar', } } # django-debug-toolbar DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', 'debug_toolbar.panels.profiling.ProfilingPanel', ] STATICFILES_DIRS = [os.path.join(BASE_DIR, 'example', 'static')] django-debug-toolbar-1.0.1/example/static/000077500000000000000000000000001226272473700204355ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/static/test.css000066400000000000000000000000321226272473700221210ustar00rootroot00000000000000body { color: green; }django-debug-toolbar-1.0.1/example/templates/000077500000000000000000000000001226272473700211445ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/templates/index.html000066400000000000000000000007621226272473700231460ustar00rootroot00000000000000{% load cache %} Index of Tests

Index of Tests

{% cache 10 index_cache %}

Django Admin

{% endcache %} django-debug-toolbar-1.0.1/example/templates/jquery/000077500000000000000000000000001226272473700224635ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/templates/jquery/index.html000066400000000000000000000010421226272473700244550ustar00rootroot00000000000000 jQuery Test

jQuery Test

If you see this, jQuery is working.

django-debug-toolbar-1.0.1/example/templates/mootools/000077500000000000000000000000001226272473700230175ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/templates/mootools/index.html000066400000000000000000000010131226272473700250070ustar00rootroot00000000000000 MooTools Test

MooTools Test

If you see this, MooTools is working.

django-debug-toolbar-1.0.1/example/templates/prototype/000077500000000000000000000000001226272473700232115ustar00rootroot00000000000000django-debug-toolbar-1.0.1/example/templates/prototype/index.html000066400000000000000000000010151226272473700252030ustar00rootroot00000000000000 Prototype Test

Prototype Test

If you see this, Prototype is working.

django-debug-toolbar-1.0.1/example/urls.py000066400000000000000000000011021226272473700204770ustar00rootroot00000000000000from django.conf.urls import patterns, include from django.contrib import admin from django.views.generic import TemplateView admin.autodiscover() urlpatterns = patterns('', # noqa (r'^$', TemplateView.as_view(template_name='index.html')), (r'^jquery/$', TemplateView.as_view(template_name='jquery/index.html')), (r'^mootools/$', TemplateView.as_view(template_name='mootools/index.html')), (r'^prototype/$', TemplateView.as_view(template_name='prototype/index.html')), (r'^admin/', include(admin.site.urls)), ) django-debug-toolbar-1.0.1/example/wsgi.py000066400000000000000000000003161226272473700204710ustar00rootroot00000000000000"""WSGI config for example project.""" import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() django-debug-toolbar-1.0.1/requirements_dev.txt000066400000000000000000000003121226272473700216310ustar00rootroot00000000000000# The debug toolbar itself -e . # Runtime dependencies Django sqlparse # Testing coverage django-discover-runner flake8 selenium tox # Documentation Sphinx # Other tools transifex-client wheel django-debug-toolbar-1.0.1/setup.cfg000066400000000000000000000002311226272473700173300ustar00rootroot00000000000000[egg_info] tag_svn_revision = false [flake8] ignore = W601 ; # noqa doesn't silence this one max-line-length = 100 [wheel] universal = 1 django-debug-toolbar-1.0.1/setup.py000066400000000000000000000026631226272473700172340ustar00rootroot00000000000000from setuptools import setup, find_packages setup( name='django-debug-toolbar', version='1.0.1', description='A configurable set of panels that display various debug ' 'information about the current request/response.', long_description=open('README.rst').read(), author='Rob Hudson', author_email='rob@cogit8.org', url='https://github.com/django-debug-toolbar/django-debug-toolbar', download_url='https://pypi.python.org/pypi/django-debug-toolbar', license='BSD', packages=find_packages(exclude=('tests', 'example')), install_requires=[ 'django>=1.4.2,<1.7', 'sqlparse', ], include_package_data=True, zip_safe=False, # because we're including static files classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Framework :: Django', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Software Development :: Libraries :: Python Modules', ], ) django-debug-toolbar-1.0.1/tests/000077500000000000000000000000001226272473700166555ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/__init__.py000066400000000000000000000016631226272473700207740ustar00rootroot00000000000000# Refresh the debug toolbar's configuration when overriding settings. from debug_toolbar.toolbar import DebugToolbar from debug_toolbar import settings as dt_settings from django.dispatch import receiver from django.test.signals import setting_changed @receiver(setting_changed) def update_toolbar_config(**kwargs): if kwargs['setting'] == 'DEBUG_TOOLBAR_CONFIG': dt_settings.CONFIG = {} dt_settings.CONFIG.update(dt_settings.CONFIG_DEFAULTS) dt_settings.CONFIG.update(kwargs['value'] or {}) # This doesn't account for deprecated configuration options. @receiver(setting_changed) def update_toolbar_panels(**kwargs): if kwargs['setting'] == 'DEBUG_TOOLBAR_PANELS': dt_settings.PANELS = kwargs['value'] or dt_settings.PANELS_DEFAULTS DebugToolbar._panel_classes = None # Not implemented: invalidate debug_toolbar.urls. # This doesn't account for deprecated panel names. django-debug-toolbar-1.0.1/tests/additional_static/000077500000000000000000000000001226272473700223345ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/additional_static/base.css000066400000000000000000000000321226272473700237530ustar00rootroot00000000000000body { color: green; }django-debug-toolbar-1.0.1/tests/base.py000066400000000000000000000012361226272473700201430ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import threading from django.http import HttpResponse from django.test import TestCase, RequestFactory from debug_toolbar.middleware import DebugToolbarMiddleware from debug_toolbar.toolbar import DebugToolbar rf = RequestFactory() class BaseTestCase(TestCase): def setUp(self): request = rf.get('/') response = HttpResponse() toolbar = DebugToolbar(request) DebugToolbarMiddleware.debug_toolbars[threading.current_thread().ident] = toolbar self.request = request self.response = response self.toolbar = toolbar self.toolbar.stats = {} django-debug-toolbar-1.0.1/tests/commands/000077500000000000000000000000001226272473700204565ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/commands/__init__.py000066400000000000000000000000001226272473700225550ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/commands/test_debugsqlshell.py000066400000000000000000000022111226272473700247210ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import sys from django.contrib.auth.models import User from django.core import management from django.db.backends import util from django.test import TestCase from django.test.utils import override_settings from django.utils import six @override_settings(DEBUG=True) class DebugSQLShellTestCase(TestCase): def setUp(self): self.original_cursor_wrapper = util.CursorDebugWrapper # Since debugsqlshell monkey-patches django.db.backends.util, we can # test it simply by loading it, without executing it. But we have to # undo the monkey-patch on exit. command_name = 'debugsqlshell' app_name = management.get_commands()[command_name] management.load_command_class(app_name, command_name) def tearDown(self): util.CursorDebugWrapper = self.original_cursor_wrapper def test_command(self): original_stdout, sys.stdout = sys.stdout, six.StringIO() try: User.objects.count() self.assertIn("SELECT COUNT(*)", sys.stdout.getvalue()) finally: sys.stdout = original_stdout django-debug-toolbar-1.0.1/tests/models.py000066400000000000000000000003551226272473700205150ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.utils import six class NonAsciiRepr(object): def __repr__(self): return 'nôt åscíì' if six.PY3 else 'nôt åscíì'.encode('utf-8') django-debug-toolbar-1.0.1/tests/panels/000077500000000000000000000000001226272473700201375ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/panels/__init__.py000066400000000000000000000000001226272473700222360ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/panels/test_cache.py000066400000000000000000000013131226272473700226110ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.core import cache from ..base import BaseTestCase class CachePanelTestCase(BaseTestCase): def setUp(self): super(CachePanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('CachePanel') self.panel.enable_instrumentation() def tearDown(self): self.panel.disable_instrumentation() super(CachePanelTestCase, self).tearDown() def test_recording(self): self.assertEqual(len(self.panel.calls), 0) cache.cache.set('foo', 'bar') cache.cache.get('foo') cache.cache.delete('foo') self.assertEqual(len(self.panel.calls), 3) django-debug-toolbar-1.0.1/tests/panels/test_logging.py000066400000000000000000000032401226272473700231750ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import logging from debug_toolbar.panels.logging import MESSAGE_IF_STRING_REPRESENTATION_INVALID from ..base import BaseTestCase class LoggingPanelTestCase(BaseTestCase): def setUp(self): super(LoggingPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('LoggingPanel') self.logger = logging.getLogger(__name__) def test_happy_case(self): self.logger.info('Nothing to see here, move along!') self.panel.process_response(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual('Nothing to see here, move along!', records[0]['message']) def test_formatting(self): self.logger.info('There are %d %s', 5, 'apples') self.panel.process_response(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual('There are 5 apples', records[0]['message']) def test_failing_formatting(self): class BadClass(object): def __str__(self): raise Exception('Please not stringify me!') # should not raise exception, but fail silently self.logger.debug('This class is misbehaving: %s', BadClass()) self.panel.process_response(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual(MESSAGE_IF_STRING_REPRESENTATION_INVALID, records[0]['message']) django-debug-toolbar-1.0.1/tests/panels/test_profiling.py000066400000000000000000000033451226272473700235460ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.contrib.auth.models import User from django.db import IntegrityError, transaction from django.test import TestCase from django.test.utils import override_settings from django.utils import unittest from ..base import BaseTestCase from ..views import regular_view @override_settings(DEBUG_TOOLBAR_PANELS=['debug_toolbar.panels.profiling.ProfilingPanel']) class ProfilingPanelTestCase(BaseTestCase): def setUp(self): super(ProfilingPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('ProfilingPanel') # This test fails randomly for a reason I don't understand. @unittest.expectedFailure def test_regular_view(self): self.panel.process_view(self.request, regular_view, ('profiling',), {}) self.panel.process_response(self.request, self.response) self.assertIn('func_list', self.panel.get_stats()) self.assertIn('regular_view', self.panel.content) @override_settings(DEBUG=True, DEBUG_TOOLBAR_PANELS=['debug_toolbar.panels.profiling.ProfilingPanel']) class ProfilingPanelIntegrationTestCase(TestCase): def test_view_executed_once(self): self.assertEqual(User.objects.count(), 0) response = self.client.get('/new_user/') self.assertContains(response, 'Profiling') self.assertEqual(User.objects.count(), 1) with self.assertRaises(IntegrityError): if hasattr(transaction, 'atomic'): # Django >= 1.6 with transaction.atomic(): response = self.client.get('/new_user/') else: response = self.client.get('/new_user/') self.assertEqual(User.objects.count(), 1) django-debug-toolbar-1.0.1/tests/panels/test_redirects.py000066400000000000000000000035251226272473700235410ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import django from django.http import HttpResponse from django.test.utils import override_settings from django.utils import unittest from ..base import BaseTestCase @override_settings(DEBUG_TOOLBAR_CONFIG={'INTERCEPT_REDIRECTS': True}) class RedirectsPanelTestCase(BaseTestCase): def setUp(self): super(RedirectsPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('RedirectsPanel') def test_regular_response(self): response = self.panel.process_response(self.request, self.response) self.assertTrue(response is self.response) def test_not_a_redirect(self): redirect = HttpResponse(status=304) # not modified response = self.panel.process_response(self.request, redirect) self.assertTrue(response is redirect) def test_redirect(self): redirect = HttpResponse(status=302) redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertFalse(response is redirect) self.assertContains(response, '302 FOUND') self.assertContains(response, 'http://somewhere/else/') def test_unknown_status_code(self): redirect = HttpResponse(status=369) redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertContains(response, '369 UNKNOWN STATUS CODE') @unittest.skipIf(django.VERSION[:2] < (1, 6), "reason isn't supported") def test_unknown_status_code_with_reason(self): redirect = HttpResponse(status=369, reason='Look Ma!') redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertContains(response, '369 Look Ma!') django-debug-toolbar-1.0.1/tests/panels/test_request.py000066400000000000000000000021371226272473700232430ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.utils import six from ..base import BaseTestCase class RequestPanelTestCase(BaseTestCase): def setUp(self): super(RequestPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('RequestPanel') def test_non_ascii_session(self): self.request.session = {'où': 'où'} if not six.PY3: self.request.session['là'.encode('utf-8')] = 'là'.encode('utf-8') self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) content = self.panel.content if six.PY3: self.assertIn('où', content) else: self.assertIn('o\\xf9', content) self.assertIn('l\\xc3\\xa0', content) def test_object_with_non_ascii_repr_in_request_params(self): self.request.path = '/non_ascii_request/' self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) self.assertIn('nôt åscíì', self.panel.content) django-debug-toolbar-1.0.1/tests/panels/test_sql.py000066400000000000000000000054761226272473700223630ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.auth.models import User from django.db import connection from django.db.utils import DatabaseError from django.utils import unittest from ..base import BaseTestCase class SQLPanelTestCase(BaseTestCase): def setUp(self): super(SQLPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('SQLPanel') self.panel.enable_instrumentation() def tearDown(self): self.panel.disable_instrumentation() super(SQLPanelTestCase, self).tearDown() def test_recording(self): self.assertEqual(len(self.panel._queries), 0) list(User.objects.all()) # ensure query was logged self.assertEqual(len(self.panel._queries), 1) query = self.panel._queries[0] self.assertEqual(query[0], 'default') self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) # ensure the stacktrace is populated self.assertTrue(len(query[1]['stacktrace']) > 0) def test_non_ascii_query(self): self.assertEqual(len(self.panel._queries), 0) # non-ASCII text query list(User.objects.extra(where=["username = 'apéro'"])) self.assertEqual(len(self.panel._queries), 1) # non-ASCII text parameters list(User.objects.filter(username='thé')) self.assertEqual(len(self.panel._queries), 2) # non-ASCII bytes parameters list(User.objects.filter(username='café'.encode('utf-8'))) self.assertEqual(len(self.panel._queries), 3) self.panel.process_response(self.request, self.response) # ensure the panel renders correctly self.assertIn('café', self.panel.content) @unittest.skipUnless(connection.vendor == 'postgresql', 'Test valid only on PostgreSQL') def test_erroneous_query(self): """ Test that an error in the query isn't swallowed by the middleware. """ try: connection.cursor().execute("erroneous query") except DatabaseError as e: self.assertTrue('erroneous query' in str(e)) def test_disable_stacktraces(self): self.assertEqual(len(self.panel._queries), 0) with self.settings(DEBUG_TOOLBAR_CONFIG={'ENABLE_STACKTRACES': False}): list(User.objects.all()) # ensure query was logged self.assertEqual(len(self.panel._queries), 1) query = self.panel._queries[0] self.assertEqual(query[0], 'default') self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) # ensure the stacktrace is empty self.assertEqual([], query[1]['stacktrace']) django-debug-toolbar-1.0.1/tests/panels/test_staticfiles.py000066400000000000000000000021241226272473700240610ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.staticfiles import finders from ..base import BaseTestCase class StaticFilesPanelTestCase(BaseTestCase): def setUp(self): super(StaticFilesPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('StaticFilesPanel') def test_default_case(self): self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) self.assertIn('django.contrib.staticfiles.finders.' 'AppDirectoriesFinder', self.panel.content) self.assertIn('django.contrib.staticfiles.finders.' 'FileSystemFinder (2 files)', self.panel.content) self.assertEqual(self.panel.num_used, 0) self.assertNotEqual(self.panel.num_found, 0) self.assertEqual(self.panel.get_staticfiles_apps(), ['django.contrib.admin', 'debug_toolbar']) self.assertEqual(self.panel.get_staticfiles_dirs(), finders.FileSystemFinder().locations) django-debug-toolbar-1.0.1/tests/panels/test_template.py000066400000000000000000000042241226272473700233650ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals import django from django.contrib.auth.models import User from django.template import Context, RequestContext, Template from ..base import BaseTestCase from ..models import NonAsciiRepr class TemplatesPanelTestCase(BaseTestCase): def setUp(self): super(TemplatesPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('TemplatesPanel') self.panel.enable_instrumentation() self.sql_panel = self.toolbar.get_panel_by_id('SQLPanel') self.sql_panel.enable_instrumentation() def tearDown(self): self.sql_panel.disable_instrumentation() self.panel.disable_instrumentation() super(TemplatesPanelTestCase, self).tearDown() def test_queryset_hook(self): t = Template("No context variables here!") c = Context({ 'queryset': User.objects.all(), 'deep_queryset': { 'queryset': User.objects.all(), } }) t.render(c) # ensure the query was NOT logged self.assertEqual(len(self.sql_panel._queries), 0) base_ctx_idx = 1 if django.VERSION[:2] >= (1, 5) else 0 ctx = self.panel.templates[0]['context'][base_ctx_idx] self.assertIn('<>', ctx) self.assertIn('<>', ctx) def test_object_with_non_ascii_repr_in_context(self): self.panel.process_request(self.request) t = Template("{{ object }}") c = Context({'object': NonAsciiRepr()}) t.render(c) self.panel.process_response(self.request, self.response) self.assertIn('nôt åscíì', self.panel.content) def test_custom_context_processor(self): self.panel.process_request(self.request) t = Template("{{ content }}") c = RequestContext(self.request, processors=[context_processor]) t.render(c) self.panel.process_response(self.request, self.response) self.assertIn('tests.panels.test_template.context_processor', self.panel.content) def context_processor(request): return {'content': 'set by processor'} django-debug-toolbar-1.0.1/tests/settings.py000066400000000000000000000032431226272473700210710ustar00rootroot00000000000000"""Django settings for tests.""" import os import django BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # Quick-start development settings - unsuitable for production SECRET_KEY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' INTERNAL_IPS = ['127.0.0.1'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'debug_toolbar', 'tests', ] MEDIA_URL = '/media/' # Avoids https://code.djangoproject.com/ticket/21451 MIDDLEWARE_CLASSES = [ 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'tests.urls' STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'tests', 'additional_static'), ("prefix", os.path.join(BASE_DIR, 'tests', 'additional_static')), ] # Cache and database CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', } } # Debug Toolbar configuration DEBUG_TOOLBAR_CONFIG = { # Django's test client sets wsgi.multiprocess to True inappropriately 'RENDER_PANELS': False, } if django.VERSION[:2] < (1, 6): TEST_RUNNER = 'discover_runner.DiscoverRunner' django-debug-toolbar-1.0.1/tests/templates/000077500000000000000000000000001226272473700206535ustar00rootroot00000000000000django-debug-toolbar-1.0.1/tests/templates/basic.html000066400000000000000000000001601226272473700226170ustar00rootroot00000000000000 {{ title }} django-debug-toolbar-1.0.1/tests/test_integration.py000066400000000000000000000127201226272473700226130ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals import os from xml.etree import ElementTree as ET try: from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.wait import WebDriverWait except ImportError: webdriver = None from django.test import LiveServerTestCase, RequestFactory, TestCase from django.test.utils import override_settings from django.utils.unittest import skipIf, skipUnless from debug_toolbar.middleware import DebugToolbarMiddleware, show_toolbar from .base import BaseTestCase from .views import regular_view rf = RequestFactory() @override_settings(DEBUG=True) class DebugToolbarTestCase(BaseTestCase): def test_show_toolbar(self): self.assertTrue(show_toolbar(self.request)) def test_show_toolbar_DEBUG(self): with self.settings(DEBUG=False): self.assertFalse(show_toolbar(self.request)) def test_show_toolbar_INTERNAL_IPS(self): with self.settings(INTERNAL_IPS=[]): self.assertFalse(show_toolbar(self.request)) def _resolve_stats(self, path): # takes stats from Request panel self.request.path = path panel = self.toolbar.get_panel_by_id('RequestPanel') panel.process_request(self.request) panel.process_response(self.request, self.response) return panel.get_stats() def test_url_resolving_positional(self): stats = self._resolve_stats('/resolving1/a/b/') self.assertEqual(stats['view_urlname'], 'positional-resolving') self.assertEqual(stats['view_func'], 'tests.views.resolving_view') self.assertEqual(stats['view_args'], ('a', 'b')) self.assertEqual(stats['view_kwargs'], {}) def test_url_resolving_named(self): stats = self._resolve_stats('/resolving2/a/b/') self.assertEqual(stats['view_args'], ()) self.assertEqual(stats['view_kwargs'], {'arg1': 'a', 'arg2': 'b'}) def test_url_resolving_mixed(self): stats = self._resolve_stats('/resolving3/a/') self.assertEqual(stats['view_args'], ('a',)) self.assertEqual(stats['view_kwargs'], {'arg2': 'default'}) def test_url_resolving_bad(self): stats = self._resolve_stats('/non-existing-url/') self.assertEqual(stats['view_urlname'], 'None') self.assertEqual(stats['view_args'], 'None') self.assertEqual(stats['view_kwargs'], 'None') self.assertEqual(stats['view_func'], '') # Django doesn't guarantee that process_request, process_view and # process_response always get called in this order. def test_middleware_view_only(self): DebugToolbarMiddleware().process_view(self.request, regular_view, ('title',), {}) def test_middleware_response_only(self): DebugToolbarMiddleware().process_response(self.request, self.response) @override_settings(DEBUG=True) class DebugToolbarIntegrationTestCase(TestCase): def test_middleware(self): response = self.client.get('/execute_sql/') self.assertEqual(response.status_code, 200) @override_settings(DEFAULT_CHARSET='iso-8859-1') def test_non_utf8_charset(self): response = self.client.get('/regular/ASCII/') self.assertContains(response, 'ASCII') # template self.assertContains(response, 'djDebug') # toolbar response = self.client.get('/regular/LÀTÍN/') self.assertContains(response, 'LÀTÍN') # template self.assertContains(response, 'djDebug') # toolbar def test_xml_validation(self): response = self.client.get('/regular/XML/') ET.fromstring(response.content) # shouldn't raise ParseError @skipIf(webdriver is None, "selenium isn't installed") @skipUnless('DJANGO_SELENIUM_TESTS' in os.environ, "selenium tests not requested") @override_settings(DEBUG=True) class DebugToolbarLiveTestCase(LiveServerTestCase): @classmethod def setUpClass(cls): super(DebugToolbarLiveTestCase, cls).setUpClass() cls.selenium = webdriver.Firefox() @classmethod def tearDownClass(cls): cls.selenium.quit() super(DebugToolbarLiveTestCase, cls).tearDownClass() def test_basic(self): self.selenium.get(self.live_server_url + '/regular/basic/') version_panel = self.selenium.find_element_by_id('VersionsPanel') # Versions panel isn't loaded with self.assertRaises(NoSuchElementException): version_panel.find_element_by_tag_name('table') # Click to show the versions panel self.selenium.find_element_by_class_name('VersionsPanel').click() # Version panel loads table = WebDriverWait(self.selenium, timeout=10).until( lambda selenium: version_panel.find_element_by_tag_name('table')) self.assertIn("Name", table.text) self.assertIn("Version", table.text) @override_settings(DEBUG_TOOLBAR_CONFIG={'RESULTS_STORE_SIZE': 0}) def test_expired_store(self): self.selenium.get(self.live_server_url + '/regular/basic/') version_panel = self.selenium.find_element_by_id('VersionsPanel') # Click to show the version panel self.selenium.find_element_by_class_name('VersionsPanel').click() # Version panel doesn't loads error = WebDriverWait(self.selenium, timeout=10).until( lambda selenium: version_panel.find_element_by_tag_name('p')) self.assertIn("Data for this panel isn't available anymore.", error.text) django-debug-toolbar-1.0.1/tests/test_utils.py000066400000000000000000000011571226272473700214320ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.utils.unittest import TestCase from debug_toolbar.utils import get_name_from_obj class GetNameFromObjTestCase(TestCase): def test_func(self): def x(): return 1 res = get_name_from_obj(x) self.assertEqual(res, 'tests.test_utils.x') def test_lambda(self): res = get_name_from_obj(lambda: 1) self.assertEqual(res, 'tests.test_utils.') def test_class(self): class A: pass res = get_name_from_obj(A) self.assertEqual(res, 'tests.test_utils.A') django-debug-toolbar-1.0.1/tests/urls.py000066400000000000000000000014541226272473700202200ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.conf.urls import include, patterns, url from django.contrib import admin import debug_toolbar from .models import NonAsciiRepr admin.autodiscover() urlpatterns = patterns('tests.views', # noqa url(r'^resolving1/(.+)/(.+)/$', 'resolving_view', name='positional-resolving'), url(r'^resolving2/(?P.+)/(?P.+)/$', 'resolving_view'), url(r'^resolving3/(.+)/$', 'resolving_view', {'arg2': 'default'}), url(r'^regular/(?P.*)/$', 'regular_view'), url(r'^non_ascii_request/$', 'regular_view', {'title': NonAsciiRepr()}), url(r'^new_user/$', 'new_user'), url(r'^execute_sql/$', 'execute_sql'), url(r'^__debug__/', include(debug_toolbar.urls)), ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������django-debug-toolbar-1.0.1/tests/views.py�����������������������������������������������������������0000664�0000000�0000000�00000001171�12262724737�0020364�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.auth.models import User from django.http import HttpResponse from django.shortcuts import render def execute_sql(request): list(User.objects.all()) return HttpResponse() def regular_view(request, title): return render(request, 'basic.html', {'title': title}) def new_user(request, username='joe'): User.objects.create_user(username=username) return render(request, 'basic.html', {'title': 'new user'}) def resolving_view(request, arg1, arg2): # see test_url_resolving in tests.py return HttpResponse() �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������django-debug-toolbar-1.0.1/tox.ini������������������������������������������������������������������0000664�0000000�0000000�00000002561�12262724737�0017032�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[tox] envlist = py26-django14, py27-django14, py26-django15, py27-django15, py32-django15, py33-django15, py26-django16, py27-django16, py32-django16, py33-django16, flake8 [testenv] commands = make test deps = django-discover-runner selenium sqlparse setenv = PYTHONPATH = {toxinidir} whitelist_externals = make [testenv:py26-django14] basepython = python2.6 deps = Django>=1.4,<1.5 {[testenv]deps} [testenv:py27-django14] basepython = python2.7 deps = Django>=1.4,<1.5 {[testenv]deps} [testenv:py26-django15] basepython = python2.6 deps = Django>=1.5,<1.6 {[testenv]deps} [testenv:py27-django15] basepython = python2.7 deps = Django>=1.5,<1.6 {[testenv]deps} [testenv:py32-django15] basepython = python3.2 deps = Django>=1.5,<1.6 {[testenv]deps} [testenv:py33-django15] basepython = python3.3 deps = Django>=1.5,<1.6 {[testenv]deps} [testenv:py26-django16] basepython = python2.6 deps = Django>=1.6,<1.7 {[testenv]deps} [testenv:py27-django16] basepython = python2.7 deps = Django>=1.6,<1.7 {[testenv]deps} [testenv:py32-django16] basepython = python3.2 deps = Django>=1.6,<1.7 {[testenv]deps} [testenv:py33-django16] basepython = python3.3 deps = Django>=1.6,<1.7 {[testenv]deps} [testenv:flake8] commands = make flake8 deps = flake8 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������