pax_global_header00006660000000000000000000000064151637441250014522gustar00rootroot0000000000000052 comment=f8dab993181154c4ee2d4ba99f2592ff62163743 mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/000077500000000000000000000000001516374412500232175ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.ci/000077500000000000000000000000001516374412500236705ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.ci/docs.sh000077500000000000000000000004361516374412500251620ustar00rootroot00000000000000#!/bin/sh -e # Description: create documentation with sphinx # Options: native # https://postmarketos.org/pmb-ci # Install required packages in CI if [ "$(id -u)" = 0 ]; then set -x apk -q add \ git \ make \ py3-pip exec su "${TESTUSER:-build}" -c "sh -e $0" fi make -C docs mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.ci/lint.sh000077500000000000000000000035011516374412500251740ustar00rootroot00000000000000#!/bin/sh -e # Copyright 2022 Oliver Smith # SPDX-License-Identifier: MPL-2.0 # # As of writing, it seems that every existing CSS linter is either written in # JS or ruby and has tons of dependencies... so instead of that let's use this # simple shell script for now. This script needs find and GNU grep (for -P) and # a shell that knows "local". TOPDIR="$(realpath "$(dirname "$(realpath "$0")")/..")" CURRENT_FILE="" EXIT_CODE=0 # $1: error message # $2-n: arguments for grep lint() { # shellcheck disable=SC3043 local msg="$1" shift if grep -q "$@" "$CURRENT_FILE"; then echo "ERROR: $msg" echo "$CURRENT_FILE:" grep -n "$@" "$CURRENT_FILE" echo EXIT_CODE=1 fi } lint_spdx() { if ! grep -q "SPDX-License-Identifier" "$CURRENT_FILE"; then echo "ERROR: missing SPDX-License-Identifier in $CURRENT_FILE" echo EXIT_CODE=1 fi } lint_spaces() { lint \ "tabs found, indent with 4 spaces instead" \ -P '\t' lint \ "indent with 4 spaces" \ -P '^([ ]{1,3}|[ ]{5,7})[a-zA-Z\[\.\/\"]' lint \ "spaces at the end of lines are not allowed" \ -E ' $' } lint_files() { # shellcheck disable=SC3043 local files="$(find \ src \ -name '*.css' \ -o -name '*.js' \ -o -name '*.json' \ -o -name '*.sys.mjs' \ -o -name '*.html' \ -o -name '*.ftl' \ )" if [ -z "$files" ]; then echo "ERROR: no files to lint found in current work dir" exit 1 fi for CURRENT_FILE in $files; do case ${CURRENT_FILE##*.} in css) lint_spaces lint_spdx ;; js) lint_spaces lint_spdx ;; json) lint_spaces ;; *) lint_spdx ;; esac done } cd "$TOPDIR" lint_files if [ "$EXIT_CODE" -eq 0 ]; then echo "No linting errors found :)" else echo "Please fix the linting errors above and consider configuring your" echo "editor to use the .editorconfig file." fi exit $EXIT_CODE mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.editorconfig000066400000000000000000000006721516374412500257010ustar00rootroot00000000000000; This file is for unifying the coding style for different editors and IDEs. ; Plugins are available for notepad++, emacs, vim, gedit, ; textmate, visual studio, and more. ; ; See http://editorconfig.org for details. # Top-most EditorConfig file. root = true [*] charset = utf-8 end_of_line = lf indent_size = 4 indent_style = space insert_final_newline = true trim_trailing_whitespace = true [{*.sh,APKBUILD,Makefile}] indent_style = tab mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.gitignore000066400000000000000000000000311516374412500252010ustar00rootroot00000000000000/out /public /docs/.venv mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/.gitlab-ci.yml000066400000000000000000000011671516374412500256600ustar00rootroot00000000000000image: alpine:latest build: before_script: - apk -q add make script: - make - make DESTDIR=mobile-config-firefox install artifacts: paths: - mobile-config-firefox lint: before_script: - apk -q add grep script: - .ci/lint.sh docs: before_script: - "adduser -D build" script: - ".ci/docs.sh" artifacts: paths: - public deploy-docs: stage: deploy trigger: project: postmarketOS/docs.postmarketos.org strategy: depend rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "postmarketOS" changes: - docs/**/* mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/LICENSE000066400000000000000000000405251516374412500242320ustar00rootroot00000000000000Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/Makefile000066400000000000000000000063721516374412500246670ustar00rootroot00000000000000# Copyright 2023 Oliver Smith # SPDX-License-Identifier: MPL-2.0 DESTDIR := FIREFOX_DIR := /usr/lib/firefox MCF_DIR := /usr/lib/mobile-config-firefox dummy: @echo "Running 'make' is not needed anymore, just do 'sudo make install'." install: src/prepare_install.sh "$(FIREFOX_DIR)" "$(DESTDIR)" # Firefox Policies install -Dm644 src/policies.json \ "$(DESTDIR)/$(FIREFOX_DIR)/distribution/policies.json" # Mobile Config Firefox install -Dm644 src/mobile-config-prefs.js \ "$(DESTDIR)/$(FIREFOX_DIR)/defaults/pref/mobile-config-prefs.js" install -Dm644 src/mobile-config-autoconfig.js \ "$(DESTDIR)/$(FIREFOX_DIR)/mobile-config-autoconfig.js" install -Dm644 src/modules/chrome.manifest \ "$(DESTDIR)/$(MCF_DIR)/chrome.manifest" install -Dm644 src/modules/boot.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/boot.sys.mjs" # PrefManager install -Dm644 src/modules/PrefManager.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/PrefManager.sys.mjs" # UserAgentManager install -Dm644 src/modules/UserAgentManager.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/UserAgentManager.sys.mjs" # StyleSheetManager install -Dm644 src/modules/StyleSheetManager.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/StyleSheetManager.sys.mjs" # TabCounter install -Dm644 src/modules/TabCounter.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/TabCounter.sys.mjs" ## Shared theme install -dm755 "$(DESTDIR)/$(MCF_DIR)/themes/shared/chrome/" install -dm755 "$(DESTDIR)/$(MCF_DIR)/themes/shared/content/" install -Dm644 src/themes/shared/main.css \ "$(DESTDIR)/$(MCF_DIR)/themes/shared/main.css" install -Dm644 src/themes/shared/chrome/*.css \ "$(DESTDIR)/$(MCF_DIR)/themes/shared/chrome/" install -Dm644 src/themes/shared/content/*.css \ "$(DESTDIR)/$(MCF_DIR)/themes/shared/content/" ## ESR theme install -Dm644 src/themes/esr/main.css \ "$(DESTDIR)/$(MCF_DIR)/themes/esr/main.css" ## Release theme install -dm755 "$(DESTDIR)/$(MCF_DIR)/themes/release/chrome/" install -Dm644 src/themes/release/main.css \ "$(DESTDIR)/$(MCF_DIR)/themes/release/main.css" install -Dm644 src/themes/release/chrome/*.css \ "$(DESTDIR)/$(MCF_DIR)/themes/release/chrome/" # AboutMobile install -Dm644 src/modules/AboutMobile.sys.mjs \ "$(DESTDIR)/$(MCF_DIR)/AboutMobile.sys.mjs" install -Dm644 src/modules/aboutmobile/aboutmobile.js \ "$(DESTDIR)/$(MCF_DIR)/aboutmobile/aboutmobile.js" install -Dm644 src/modules/aboutmobile/aboutmobile.css \ "$(DESTDIR)/$(MCF_DIR)/aboutmobile/aboutmobile.css" install -Dm644 src/modules/aboutmobile/index.html \ "$(DESTDIR)/$(MCF_DIR)/aboutmobile/index.html" install -Dm644 src/modules/aboutmobile/locales/en-US/browser/aboutmobile/aboutmobile.ftl \ "$(DESTDIR)/$(MCF_DIR)/aboutmobile/locales/en-US/browser/aboutmobile/aboutmobile.ftl" # Miscs install -Dm644 org.postmarketos.mobile_config_firefox.metainfo.xml \ "$(DESTDIR)/usr/share/metainfo/org.postmarketos.mobile_config_firefox.metainfo.xml" uninstall: src/prepare_uninstall.sh "$(FIREFOX_DIR)" "$(DESTDIR)" rm -fv "$(DESTDIR)/$(FIREFOX_DIR)/distribution/policies.json" rm -fv "$(DESTDIR)/$(FIREFOX_DIR)/defaults/pref/mobile-config-prefs.js" rm -fv "$(DESTDIR)/$(FIREFOX_DIR)/mobile-config-autoconfig.js" rm -rfv "$(DESTDIR)/$(MCF_DIR)" rm -fv "$(DESTDIR)/usr/share/metainfo/org.postmarketos.mobile_config_firefox.metainfo.xml" .PHONY: all clean install uninstall mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/README.md000066400000000000000000000004361516374412500245010ustar00rootroot00000000000000# mobile-config-firefox Find the documentation at [docs.postmarketos.org/mobile-config-firefox](https://docs.postmarketos.org/mobile-config-firefox) or `docs/` in this repository. The upstream repository is [here](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/). mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/contrib/000077500000000000000000000000001516374412500246575ustar00rootroot00000000000000extract-search-engines.sh000077500000000000000000000026351516374412500315100ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/contrib#!/bin/sh -e # Copyright 2022 Oliver Smith # SPDX-License-Identifier: MPL-2.0 # # Extract the search engine names found in your current Firefox installation, # and create a list suitable for policies.json that removes all of them except # for what's in remove_allowed_dirs(). Note that SearchEngines can only be # configured via policies.json in the ESR version of firefox. # Related: https://github.com/mozilla/policy-templates/blob/master/README.md remove_allowed_dirs() { rm -rf \ ddg \ wikipedia } get_names() { grep \ '"name":' \ */manifest.json \ | cut -d '"' -f 4 \ | grep -v '__MSG_extensionName__' \ | grep -v '^form$' } get_names_localized() { grep \ -A1 \ '"extensionName":' \ */_locales/*/messages.json \ | grep '"message":' \ | cut -d '"' -f 4 } get_names_all_sorted() { (get_names; get_names_localized) | sort -u } print_json() { local first=1 echo ' "SearchEngines": {' echo ' "Default": "DuckDuckGo",' echo ' "Remove": [' get_names_all_sorted | while IFS= read -r i; do if [ "$first" -eq 1 ]; then first=0 else echo "," fi printf " \"$i\"" done echo '' echo ' ]' echo ' },' } OMNI="/usr/lib/firefox/browser/omni.ja" TMPDIR="$(mktemp -d "/tmp/extract-search-engines-XXXXXX")" cd "$TMPDIR" unzip -q "$OMNI" cd "chrome/browser/search-extensions" remove_allowed_dirs print_json cd ~ rm -r "$TMPDIR" mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/000077500000000000000000000000001516374412500241475ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/Makefile000066400000000000000000000007111516374412500256060ustar00rootroot00000000000000# Copyright 2026 Oliver Smith # SPDX-License-Identifier: MPL-2.0 default: venv . .venv/bin/activate && sphinx-build \ --fail-on-warning \ . \ ../public venv: .venv/done .venv/done: python3 -m venv .venv . .venv/bin/activate && pip install "pmos-theme @ git+https://gitlab.postmarketos.org/postmarketOS/docs.postmarketos.org.git/#subdirectory=theme" touch $@ run: python3 -m http.server -b 127.0.0.1 8083 -d ../public .PHONY: default venv run mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/_static/000077500000000000000000000000001516374412500255755ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/_static/logo.png000066400000000000000000011001121516374412500272370ustar00rootroot00000000000000PNG  IHDRߊsRGB,gAMA a cHRMz&u0`:pQ<bKGD pHYs.#.#x?vtIME:]%/1 IDATxy%U';޷TU[ Ѵ6hCЂ`21{&3vG 0cpHIhi-ݭޒqd/ hQQ^yg&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&l&ˍK0d_{?DD "ID13Bs@DCQPQ@BE"B4B|@p_.ӕl 'lBb#9;DtVD2~qh_DvXXJ"\1# " {Db̼if{B8":98SK"Zb5 tr&l&ڲu,","̼Bn u \,̜ss.H"" D~ѻ@DBШn[4̰J.EQ\hMqEDDt"r>p/3CE䲈/"&}ɾBfżEqb&" DuDtCqWD1Yʲqҁi`ιnu]9ׁZF߇@_5sŢkU9u(xi|s "EqY==IM6dۇ,"EaGD "7}pp0sEccRPVPU$@w ^;pioas!u[0ok#_VXah{c̡K1/ȧ>%"Kfn?'p 'lŅ"rc&YDc6x(fbсI ̄CEZbB+[жS(ADv%gΜ~Ǥ@^5EQ ~;z kH-"';>ocι;怈6O{K'l&uDD?- 0H": A4ʎAgMTFzHFI+h۴M++]AUU(ؔf T0,w9?=PokpDCfۈQ"r/|Ŕl&z90cOr=ADBDF 2 jUU ]A {6m=@$dd6m^#iu= z{ ¦s:rPW})ݶM玆.7: 0hADBD_b;DD'b盦1&}ɾ6kDDB8Bx=`z3nr-(Z@fCA."U [kZ yúxdQ:6Ů~VEQl/xt Ⱥ_Mv>&su~sl6q@m "!OOD vhs_6'}ɾZkB&p"Mι[cBx3HgadQJhBjS#s؂+3wD$C l Db&&"}] C @-j]o#\=#1uiZv%bRn3/XǢA ?'u~03uǩD<ݞq.j| ය{ _ޖ&@lHu;"|^ۢ(i^9L6d_ϑ[|[xC;sKoQXaҀpZ/l*j9q@UU]J[ȂXުЍ9 (;ޖrSxX,حܩ}cVgIh^zo6mq\;>ADc| 3i{O6d_8YDDTZ!{NE^WG. @>k4)y.Ttek}5Ѧym cȉoA) rQݹss" a>duYՕ`1*u@X\ IGB"["Gz'}jDDt3"t9cS6/҂L[QWAF2zF+J[|W'W]EZ$6mխm d:lx=: ͦt]j=[PmwT}.Ɔ;z}潽3'QXrb{<7n ',"/!M1F{>OϺ8QۊzFz򭖹MSlQcSgBneƤX~ޞ[jЃm?(˲Kdˊgl(ۂZ.=kYyKf5Qr5gg~|e(]:":$?opiҕlɾ꯿o%9v0EqM]EZly:j(JS#@Ǜr"_ΘΣ1բG'7M35Tv|UUX= y&aLl'yKTԨ9Xwm;h ~NT#ju2π΍*3;RNY~} 1;1}lɾB@x8D8"Z">K @u(/j/)}>LaK]7+iA$Nf"@Q`Nroxִv;ytgcZ[4ce{mjٖ T=Fy܂iZkIzyǧr9ЕEQtzdxtT3 Sb[t<%{Vb{?Puw4xs#Oze '{ 3x0yU;ƀue1`.x ŏ@4wq co_~; O)mj~ȖQmzN0'|=l6bef,O+B<6۰}s},ulϸ^37ұ¦`l'X6 q,@yw v4N1Bc&[.LFMۈ1Ĭ [%-pəi<A@]ѸG}]98"67l4o0cG|A,5U(Ov,IcurGbl8=W0t9yTߑ[јu l> Τg $rt{^ϴf.uL&cEDO{K/M׷LayfyG6-9Goڀy~礥<ݩUMbK۝%^(+}inC)\+jry^|cdbDUsG:1( 3 l`睈6n16|3^ '@lzo11>( g1>q6Rd1a}`%nM5VN4k4Gnt]-@q?I"FlDc\3ޒ  0[qUUUOFjvxNe+:Ћ-!% :fpa"(b*cef>x{sBie{/3;"pZžmOWڇG`{C:J1+g |knte4}ĩ=pEmS>Hʇj$gvO Oe@ka韎,n1GC0q>u\TIw 8h@iMC=dR p̡cLv,3$aKF zmWl6C qx ^0mAm L&3Dw։{=Q|g*&(DD-Dwk!gUiU"ɾc/ys&NGTJ}QR5[ElW䩜ձAFSл>wv#Rl_ 5صۖnuTH74y I<ĈsyF)ɇ ^Tw]ԝ.c6i Ѵu&uB2mV-Φs[~}mE]"Bt)mE%xG\}:o8AcЂ8ƻd X%'b;S"_]M}z󹺮7('"\dl£uaMhӦrmuL'=E uՄ =Puv &0d{mbL|cׄiś}A~u_q𔺮];;;p]ptҬmqZu>|ۨ3?(F[(v#Ҽ] ~zۭmH4{{uqa oB XV] in6<{̆vw $U$T檮'z\N޳cyfWVyPvvvp5( DŽ㎣pxOw=˿nf֑TFg>[3#mB3[a̿LD´M>׈go*۱?ID6MBZ\qv<:6gժ. 8 HHæsֻ.!#!C?uy.G65فRZԃjΝMZ3hpT,[exo_r@h-ElM{MВz+jk6=sܑGxacZ5cp:U{ڬ4 V`8]ZgNgΐuPrg-c|{EKuk]G_x˳_i5}R;n&&"KDRzp\.1ϻEFVx#E vmBHi,e\.tvQ-?#rDqmc"!\e;5m%@OmlMd-uD5r2oibڒdͅSuk96=9 H, cJlMvhtYWmFܓYm|j %\-Ѵ9wn^?{#lVWt=E. X|xN S쇨PһafQ۲p\.N%oYرKZ1<~jmYΓR8 Y\ad IDATX;Kn?;D`mu7ulsx@xs^Urɾo8/&.xդ5l M.967W9$VE>K{Jгo1m+֘*^4`m3Q4!v<~o,z F?zsCaJ;ҵzM1ӱ3s< @-R1b\bwww y5}>: GV /Ĉ& cR s%Vη{ˇ(~ %+똓mfyr'B6"95Ӹ 'J9$?GA摘U[tQC,삚IkcG_d\ܲm 33E[KKHamR76i_8n 0usY~m7ȖGnR$Iz=:sy=!]{ $e!Ʀuӱ;;;b~<-磩+"E\KOoQ,l}k3$Cu~g-L`=8oəUU3Iws?3^8_Ka_{DDTQ~d\F98oڊ-T~,LsɉC(uH U`KYQc7ulQrp"AnSv;W]f myy߭8>S0_*i ub9k D Vo0eLKД<\u"yI!0 RӑgƆ2Dv]6F4M$0𥳐goAV~~ΦXƝBH?[d_wы|VV.Vbzv*`^C +{;rvjx좛GoeM8Mqwz1mE]ⴑt^wYu@܊`"`M,`9=b/ӄ1w :M:8VI>|IюgEF2 \Ֆ]T<렿SV0+jc. jDny]>OR=|U9Y=w\2UOK;.uuPv۹/__9 }}k]qk联S:!<x5\FUe)pފHGbhP[Ie n+jBӑTWե71bX(5hP{. ɑZ?~ԵR/g  $&*~BDr( Z]7`5꺁B; h` "0 :Jͺ$$N(lAhJ'9>HXF%'uլ|^2*wWG!m 2u=?(Gz\.1+nX٪n bLb43?'?^>)}4k>7eY>-/\:(WUFuPT/omc-Dc?_|ݳ_+ ([fbOD(rCchx,аQ]֩ڒzXA< e{&B{!1 QDP78X*D!GKYo 1Dx@B0 @I|Qy`w>w{s9cƂ¥0M;; $^^K++;+g U-`ywəf %YI\=>F>sVj0tk[ MwiXнcΥ㫪 BòNKي#CQsD1_΋_51'@_jsԱ,uGyL^2xHelհmm;:8|}dtImN(+Ҷ=8sn8_Mݭ^_5UUuptܩC`{Eu%C1%NEb kzRu"t=OKx]`G3F|nL:U D3/<ㅯi}no8"UD~FDJDd#PݧE+[vtW٥ ej84- : c@v@I^H1]n&b{>dtQL0 f{;Q^[RUI#Tx֧ҷ8OUJkRDS/~bDB 1EM16UV눋qxZjP7 Qp \GG+H(MKx" PbȋpH] "1V BPx6B) ۟9 ޣ 2 wrY?65ϒw,lNjgAPD4M5(k>=%w[Y!tҭy[+YAyilǩ3s ùQ!cj"M>1׈r!|wBxF0شtklĩ"Wkjf(*l6,e'O2sfEYb]4E*y x޳{@]ũuEfHhAڽ? ݙM]%o CˈfSn"\ ..q p]l1OBX  \gyx_Ɂ$_$nD$HM򌝝]l._4r1`SmPW'- \;pYǼ 0X#"g#R;w:*x+ڬ}m$IߥaH3Vo[SՁnIu&tke{hQ4c9kOM+;HW UzQ0* įm mgTu,j-!DŽVrڕ+WV/S7*oKgEm>vNJ2m6= 깂\ ~&÷{Jb #)y@`P"ȭB88\ҕSwpKWNqZ{r_1` @1syPYE1ChRJQWzCHF}&76! %p\ti ժB^cQn Bo82ii3 "ƥ " ;/֦ȺE5@2p*yTAUBD]W @JhǖfP 8' , bsi u$1)f-ٔ}7wc$?9T-J yK~'֋cbq8o<kkMԦ8xG3hmFnhDmjy]41O|~n 8X-ݖ6luL[%|n\)A JLu&4!EA" . 8Y6\W,^T1 7a1,g`v!t #KTU3{{, RyYCBDl@ .gi-5f;gGC * T,J̡v:ݛV:>Ûͦ{& FbkS6_;V7̈́1SGhLgOBh q˧ ^hԶ5.ۓǐOl{sZ<}6VIjkQE*0+}k[Q)!5=MFF4|W2:׵eiizF%a.>UUo̓w4 1E?E$<c1sP|Fj ؒQ>\hlҘcmgY'vcY;)fa3:EN3}dK@I'ߓEcIZ+{H[2̃O=(l9t wqL?ȿ& c tcBbU|ΰ~-=ڔi矱Ήw>eq0y* s%|z]Dcn*c8"pNd4~XGP@D@@ :0j\>>=Wp T`|ggvaQ n_-J1s):d_g3 ML޳>s._>څSD=JbQ-Y iVA419R.vͦbמǵJ?c X6hbzSOUocyKKcc,;>/cuhS}.J܌wK}/κk"Biڽ<133%ȍ?Ld)Bc9.V 9?P=CWΦTӶm$m NbD.[Xĩ_:#bS7 |j]z4E%i&exx Qj¾=؆Tl: HI_ O0ޥim(uhڡ+U 4a8B.{J,;{G88j7\s{3 ț94xhB@Qg z[wg-a k~oX,)f4iyFV58 l&٨ 3pE6hTB3؆?mCuA B|ϫ?9_uv~I~!Ha&fd߉;#k#},s e=]=ͤںpm((ڛ-))t(=_0;EzTg&y]DL&A ę!-p p-@= IDATTMDD\9/\c{4/}>R4(0Y!(]uq\}%2Z/{& NNMdlePUe  -+xVb I4'%9;;ձ$'Of\w1w~_ {_զb\Y0+NcFۈ&"ZeRjZ 7W_(.Tm ajJ Q{jՑC4<ո%>3V#U=wd ߁;R[^262 6 |6H#iaq$*$oXW89\:X%"8T,=.vw1/=Jjpg9cgdSOVk ?z;>O} ^UM]Hnϯ_ҕt4/D. f `T% tA4$h:rb/=ܵKA]U8sv;j]%^+ JS-!h; rK>g,'Y[ jnc4KTָ䑉LL_JY.B'ck z<*tY=f +u21)e]c}M%;[["g"r֦{-BɣThez'''=~2V˵-kMBbYܳ ".V*I\ayud9F]W ) bM2H6MJc GGk . 9\`1/YS0"fYPW}KދUݴĴ5VU79 m@{_{:1_LiJ6w^ nᆇ<Oqzx 9Ɨ>{VW. :qKC}}<[΂1G_`goݽ%"J*P5v;,(\Ditm}mάs:UϘ.{ցԬee/vHY. 9oXkgGEwzg87:!fFYBb75M+O{VjLW(71Wws։Iiqi<qhS[65j×U|)s\u^7C06<`[s .688t#: P Ir놱G;||;>|p NVk7+$ ұvҿݤׅov#9Hh]ء7>QxӞ?Xkpr3{c(HѼqr %<q/ dUayt456MrV'uZEw[:{frON\ږm9'q*ām_*6`:94Gݷ$Xrui~2bz9;eYJDC/y_ߛ@}п(;#\^ꕧ$)p*ޱy "Q2s; ޮY峋dЊ.JR_V”-9K^8D@K 5cl&Mh$KLt"DX(Xo"x,+U?\dIl6^QVDppH%148]78=]K^ ]9¦A#6'K,'k :d:\ D]^"`' Z\wÍx'>8eH w| `kF r>u_12P0.V;]tUwRty9B3}eQ:Y mq-1+I~6=ɻ(rMIgMˉ{6N΁Zy\ HLJsncҜ` !Oų'n|o<~ADn1Rp;:Eqߙ^떦W EbcVvphJYu!#]PBWi<]ꦆoc{>vH.`EQt'1"p 5EHR[s Y"Hn4M 4X5qpi{;1 ϩ΀wyI(9lo6+N.\>gp7{P7M;<5NOO56 [' z#ħ>zCYV9PU ߌ؅/s )' [.Ԁ+J&o}Ξ{GcU ę3 1Za1UXVm,($R+4Hszy:;:m cp{5s@yRM*)??؈å㈽}JOx*`Aڡ(u>5Zi<}9{i'"=Ҁ9mEatzG^s؂]u*u&)~UUu<"]BHt;p"{꧿𥟛e/Gd1430kV~uS[s;4u?h[0/I@2R;;;]tGB׃/]rN0f&)k8[ҷc) dj:Cd!FhPBSKbD uD!T8grC^|;qx/ m`yzfeYz4&2ooF~]FXǣ L3fP9|Sw`ggOykg>9o{P\'  WNָ- 읽z Jx,W.F) 8( heY@YLKg,Gc._3>s=TG`if&zr[$w  +I,(Խ_jH /o9m݊pgؽ+￟[EG$n xfj+p,w)ٟU3H!͏L-(iL(LtZt(mjؒ qƹK|pNy"M2TK_A&d ;~אzttx|^VģxwW9s vOp%~<k}qb sx 0#$R=ěnN2K2. j4B9ͦ ^[imzȝ˪(u?6#K!kODȣΡD^]QʞYf>R~yκO/_vvvT '/kaV2I(uK8·`"I<|_Ŕy}ղgϰubF^9xQ}pؐ}4*U{׹__-USM0Q1.QMK4`m2A񔟓5z|<5$JɓtAYHOs(o^s;;ra}=RʷXkEegJG{s7i7PJSe(λ(b(_(9'_Qg:VH13%c@n}>An;tPQtc^UF!Zm2B8k;o-etٲ#jHL&QQ{m?Zh-MdXvUsxg:AgG3͵]n?}JOQW3kc:[rS.8Ɔ6'fjdBUh_$WIQZ#6՚gz_\gd%fzS*2$j7sJQBuf`#Ѥ&=2r "(+\sJ~G>?go?x#?%GιפXi*m)EV3JZy;x'dXm3|rhk'iekJR:z{Fi7Wr'REeeZG0e U@ #΀m]Nvyь鲦5ԘBxTPHٮPBPRPyͲn-񅧞x: vTUULt4+ ĈgjQ[zs׫D1;g?!%{a>Op/DdF;_Y@jypl 1kw|9t'(1Rr̋:KY/p+F+nCA"$qHu$Q||2IuXc }?ZM9&+RE|&>>B5NF4pUs"T`[~8&5q&GeF)?TB?'nF,AcW9go"7p\4 a~]PKIEEH1#| LXdȃ}2d^1&0)fC RB|eIGl7r3skF'0cl3/VNex<e{خWoo ivddKS'چqEvbH B{[-U ~Tha |?jvYpvgI!Y,v^E:^ѶS> (EQh6[_=,Z lZkh/me9}_.,s&co``|JLVcL[5;8v:O~hMJvKT6Y\`{D:9hTnlmۖdҋLB{@<"S<' %?sߦq/J5IuΉzF.hd Ƞ:66T"݌6A%bPw{T (M=yS)2h2,*ҫ cᔇm# GgsMtppdhtɼ2X+) MYL%Z-ԌBgjGS?{K/cC%NHsp-\=d6x< ($(Man6&Fz{=-;e>}lҥ^W).@"mc=BJIQ턳X!QX{qyq^qtpi-6˲d9Q*w.z)Lg|meA4Exkwõ0\-5oI-Ycު6kFD *[|[SMI Lס8my(={vɅVt6c j!~G۶?Ẁ~bkkF񎔰5ʘMArF{4cO a* H@or^gn@g ֪|G e938ՕWJyAuPAi΁ot8>\rppVshh ()1R#A83)cKn[xe> MqTuM7S#TAtfֱlRjv8=ahitL4v5ZB[W?SCp'?:1n/()Fclє#&?`ǿ!7`{1M׃F5J\ I`Y(Qb (-Fb RY+5ڕQO[ j~PRspx{5gE]ל>1k¨ע; qF?{ wd ]Ǡ*U*87$˜HZkyP C8GJ', IDAT\l}.{qtJYiPQĪ,F[[uC&].R:^ (؋@i;i v)?MnV7}#ܟGqj(Gt;EYe8-fZhf)ĝ=x1)F> 9E:>y 3-R6nDp(-Spg| 3Ʋl0_T/_0[X]p5Q,{uۆל\ɧs-_g:K-%UUc@Gx`Ml6a"M޺}?:bCнQ}=h>zo|n2%‚ZPz[p\B3>G2Z&b@Xry{^z/X6gN@2:AW/i[;;rf96;Lz!`':*(S ռVk gIGd`7&`HsDiH`kpWK$$0荵k}F~~̀~Ne/Fw9;=Iĭ7SZMɌąJw_0Ol:ѵQzur06)իXY~<ۤxy[~VI@{Cr.ѹȥB*.K =Bp^bzn!l/N#~*9T2ZZJWOtƩ)8qV1U۰X6c49b@ ԆƲt B9IY WJ,ӊ>R<ɍ]6i-\)|abNKa.6GrozKQ"SnB^h-䳿_<3<㟗Ƙ(!v^y=T!Ssm60ogc*y/= y==1*'r^oP4MǛ*H ΋@ďjcQ-M&Ԧj GK,/ 8.ƌG- 2.tg[}l}}wǟ]Dϙ/*k *>wŲHd:1LEyldFovCisCꉔ% b\u9az)/`L싻/{@-Bs0س׵\,O<0{hbI)['r]H]bEi?g.A%q7 2;q<ԏ?:e(R\l9zvn7" FNrbN[' #8c{ Z!BϼX,G̰)phm 5w}L_f {#_Cy`> 7Jl3bv#1rߴi .MYj Ib)4ˡ|kE.~nZF`i=ckZKZN9tѱ{?ϥ+sfS K&#ͨ( >ũ[ -ڏcO ?4ɲ11[uqTU1yu3kC@'m yk^M׍BzQ"0սZc{7;PE.KF-F#d|dyU.s7ktƫxuS!U-XӱX麖0,SlPRe'eV%ҡlIl$IpVUU4/IajD0Gk?HT؃~~vs)L&=DGkGQ45{WLFr4HIt_3q(QRr<('b%RtԒS܈^rj_gTw]h&XL0>+{5Ji8JKkhk m궥!LRI6֊yk`%ͮ!k0@~XZھK+b+/)iD@.XD] o[/+pG:{4$vrNx`Kkfev<ι?^)vx֑*jT ,6)InW.\I8P+)Xkw>{wGgSY˖Ųehu+)tIQLD)۟ VB)tmͲjʘr.\Lg,N(jyd{ӽ$PA3 AN ʿ?_-n(O8M 26|`F7s ' \MHyY3Taނ1`j Bz]@H,eeX-3Y,;ZJbĤ,U-ԚqY68uP GGmgH0[JkӅ,rϋ(P*:"X O'^x)n !0~yV FS_D0g6٠],%Z,±&c7$]Qv{f* C&q,W//*U. Nr+ӣCڦA)K]Nd\C]7l $:UEZ5u]`{|X4GbbM⟞39%ES T!.osD5:OxT@j.)\äz-էdm_??I̅s}ι֞M?OZ<N9+5ͼ7ٞd֊7`*? qfW7MbL7 9nAF@tNRye9w\;ً{)ֈK._/xB/ýBד{ω͋DBcӵNLRۿW>0Y;-ajXeJtIafNeÁ댛{JP"&'٥m[֞l w_NЅFXv?ptCyhB%#-!AK$e-MS73qmw/T!M۲sUTUb sZAD (XaR~"0%l]gSMIr7請 n.2˥ы 7~R?c|`\@z JE`;tmekcBD#r'ʯz Ơ mKE*Iu E5iᵂruH麮QYQhu#h)xw*tD--9<(Y="4L&ZEQ4չȀNrk SڄL-t5\jgX.kcu| '{R~s{_f7 !z/˃'Hbsz$t\%:M!̛(d9'"^U[[[~J-JaKt4R,y9yâꐲD'( ŸДD b<S^uy%.\ZTQbDt^Ѵ u\KU5c1;2@] ߛ(B@XNvLp`Wnz/c8qbT(ړEBs? n!#|tC,̅tzzP '[uZeGs|_ZT1x6Cidh4zdg\nQUsxY_uK!!Ķ5MCUהZ3CȐܹ5(;Ĥu^!<4AH_)V߃q/'pf8ߞ&)_3=\ <3=^㣥O"մLlBsM?_LxD(H7%ioRO~?w~0߿+{R5n-_o󺞎vN4^CikF[sjE).&2d1q&RH14j x᜽Ec*(G[h- ,' k;&#Imcf+Wxg|W-GWd4*9;b>_Z/~So\AF|NS1B#\b%Zȵ87H[ppOY 0+ P5VոuHTV I1HQcs9&cW+m|qGv<_>n%,sNX.>scThehx(e?;YG!BP[B)煌 _ðSzSK,ɐ*蓍>flG% y"y鹦=' H,(UQc:X,-G%G%W98^2]6QDECI˸񈑆st4MbQ{{!ښbFU-NJM5_.0q&'D P)*p(" ۓǔ(&.WRpKU[Y.f?@ P)ζt-0A=lJ-i- Tk0u΂k;!/R)VN*[YeMMXRhê AOT&SVնoaL۷RU]# i"-xLzc["ЈI˦ܩk= |f@xOR]s"D9_p<Ϫ׭S3gn>Q:k.t"gƅZNiV-8:Yz焁/$:]xmXvsu݃NjB)v4G65Fk=<ǿի(dYPM`xbd:tcbZQ%|U*Xc-6 BIP+N O1#5[;gy;g_̩[z_:U<<BE`> LϾFX uQ B{ RR*M~ Ha~߭ 'Ћ*?FVh g?10fztOcښ#C;mƓ)\dB9֢;FEG6hBT6Lzk8>龜k/yS`-^1d9:c%wz'N>#fUhĊOHۚGz2Vl`o:4,ڛc_?ǾnA㟏\z>0J6tZ/WiU2GS]BH l9f$X֏'PJXZxرs/85\rG4)=Z3y(](Pc2lOJ ] U`S4͜+׎f:]``4b4QJ2?Xp.:9 IDAT`:>T˜ut6J#eyxڃ*գ0), ;㎻9'mΗ׼l:dTr筷Sn<ϯoH P^TEK¼xT#ɸ ›6M_reAv@Z l`tH(,_8> ;UBq涳LZQƓ 5ˁ2tM#$RĞ:Gkӱ~UzK\=!~P2U}k&Ɋ|7@9纮sЉ[jk*rhjmTY, 5޻nNĶSڿO؁A[2L~3& 29))5ۭ ?K[{#?Y u)hid36WS8R%Mv V|L٣Q[Zo? Nq+hZt>.]epAe +>tGl%R2 d[qԘ'&]bh.]g/|eCSZkp<{8'16ު^Z0 znl8$Ǭ@FWUx^X+)qWms_]/}K~mG>4i_slG߾ :\ .RHQEAQ(HnΉ{U 7yG/ZB2#?7 ^PZtmF']@*WdB[Wrk%m]C`#$RxAkME \o*p)P'Vh~z[XZEM|J(#'@YӾ8Ij!@kG _S4M3sBgZ>pnUiG#٧czRJF!9)'( YJ!OR͟t97NW7PAiБ/}ܦ0Mki EiR|MFζ~J`kQmG׹>xVutr1(KN>öQ[͢qXsLBHK9b<:ꪡm )Řrxg.(͹xFʒ60ħ&CHJ!.{9z5Xl;^t7mpyns+x}o஻f\v&@K-/vn$/j?aF<$ kܦb_<{+]EjE;HZPh}Y3&]~6@6v'.gۑZnzOس*Jy{aB!}{zÛvw%gn=|z~μ:Fm)δRv%;KjjGr5, #y:zjWl2_RR"D+b(д$3k_g"u UDbbEmW)bŢݗ{鈝ĝneg7!;1 !z|^=M*ke闃$JIKDz{kι_z̀~J)OE&iG[IOtZcwmh4:V+u5%}e%*5lAtH8sKyū_;>y+J*/񦷽ցM׼>)>'ww{{ξy>s}~K4qE1 !+ ) *)$X,18DڲpD|v˼v9d?{Չnh{׉kзPG:q'µ^CU_:ј#Nn9yr4Rt]hj 3 APrTqZQr=eZ>a}kiH)<ǜRWI˻ q׋8޿ƭ¶ o9j֠:I]l8I]10'\sFv]eQa@r-ȥc^q4VP:$m إI@#a=u]}ɕ#Πť"-btkUtD#v*#mCr-өT5-"T^2IydR<7ONHgGf@mtĿ>!dFa<g骟\=87͊T'4J:Fy?$X)?fndz3L5qrքѤD[!eIYj먌Ѕ1ô-Mcli]Õ+{+WOS5(KDL謇 ' #, e^4@OsO=0/tW :"\;g)'c\DU7LSˊU|WZ6,w2oyWwzvȿx2U:w9"#zPdp2F tmBzAUT6:|I}ylm`me{C\!O~lQk|9Sh!£@6\$gq^GTq#XeQ`8c݋خGsX0?ɣd^ԅ񹩔uxG#*9 p{rBqZu=RJROܻ [3ۄ[ >[B>OS,ߪu`8aDjM~y)ӑMq+( @Xqӕ,em9;w8c (؞l3ҚdhT"bl87b9YTgV5uzv?CzIy1'%<~gڐ8Y+`-xңHbRzA>ktesP]9=~=9/U.٫߭ 俈 DQ&XPEٖO#f)Sn=u%`IѭhʓܜCU I,ekhZ/'uMcOZ 2VEŠ0HM{R^arؖ˅_'اFS4mKQ(Ua(bRz@pL" sR]HFZfk5߅XϿIt8& mƤKKoǣYնwYkCJ)ʃ7rH٥"Z{dzR4䏜B__0S x80 )+1FS7pt\?eoٜE!%o-`-Zyr8΢ #C]߇ot2Ϟ.S5CY~x<V(K$MePi;?vr=Zk[rZn-{sSM.=U PbP!!3ܗ"FC8Ã4O=ox۸zfᶳwp|Rm Ӡkc $,,1L\nǀnMбumֺO!\L&mRJ.žZ ͤA21'Nn{h4$vCdEOKrOJKuy+J[ C[}_xsE3l@OZđbZk~}|_xf@/t<hW(gPwAh-B 7R#1'䈵~VHD2@  v#0Zxp<=x1%dVBJ Lc-:˺3)AIGc<ߵ 8/\|sqUkQB3.[Lxl/CbyHD3 q(Ao]c@tHc\nVl+~3z;{{>_mwW|*;3s.>8_ǹ-{(5gVAʏXcOS+h>ix`VNU]߈VXw2TQSHJIQ4ҷtÆQG t5'xSOi]Jl a NF{Zx7{v4MK*J)$FZU1=(gE/.+t=/&Rbn w˰z"o DBYN:3UmU^ifH4ǽ3%n6k ]"6sĐ韴d>s?W߽ ι9O-0mO2VdMlFaR}&a:ڰxfK./cLVtHN5ɄxL Ti옣=ì is P$Ŗql _:/<ͷ"β6wnq9}7QcY3(<1QW |m E)H +JMi EY,49`SO.EYofnj+4 y^TCkqt**Tp0H|{ƸbP:¦#$ZHE‹O>#0٣رc;Sl߾Sk `KT2hwW!ea(kv'I&k$ٸXī9c H'i*JzrQ72¢MBTOdhѦy@єe4mפ_anZUS7ۘfTCьOt:Xp6T|jU; &.F"(۽ `Q8d_ kO~^)seYd2iZ[9n elѴw jSS/} ҒR_]+|eU%HT'%M҄V+#Z$(5kUz}ETfq k.]'9uꤳ;,kL{v"C}('Jss0kJ9N-w NȭwI}z/ȑhImZ`"ee~[wpԛ{5,U$mt)U(r-NeKDe2U׃vk2vKb,7 nN=.wCUć|(\KF4i蹸_ 1-$EpQNq}_kΟ;A礩em-Ӛvvp5Xc1 ,eEIh@ Tr|k)L1<X`)Fm'KRThHso~s_G/]5d}Cx7F8 $Q~2/≃ސ(hmyNj\!.4fGc~Z/._ZJ)RI)1\.b#iZ2+etNVe)5!W.r $erRTf sz ,)$MJ-$R VE$}vD؝[;*`aqqD@` (Ƀ|!5Vd}#̯ɋ>ny}d%fT̍lnV,-,o lڶ^~Jk5.鿝L%&RlEo Ezrа5zV7YqN˨u<'r&62zR$(!JH-(eV%<y[3@n[!Ɖ_zݎNu75 u(%)jNƖ˳X3s|,/iFZi/!6 DD9R .%R:C 4dX%]OSQY71Tk'҃xO׺40>{3ې)!ħ&`owu%Q#-5}W I`iZmP$M;?~N?^a9y2o?O/Yv$4ݮI#,- W\Ȥdy2.]a_b0@ NuO8Y8tR(/1 5JY.h`ٛ8pu6viЫzXxgB;@禝r3;<`C٧jF㐕 jH S$g>})hh+;ʢZlg4Y+p۹q}g\V~WbP Oɯ\ub龹6g^As2 e(J:6ᥧC?Q=/  Sl۱'A ~Agjp5*: Xt؊¡m֒JU95 Ger,4p:T5$XE~vfpo\4u.g51 C5;:B1J*-U9ͦ2X+blQ~{8\˭=dlmcwr#]|>bO7쉊5gۛgB_B|8D]MG%:`^X2qԺeiɇg.ʌ4*E",Ls [7mn ?yh#_Z¥+q8ϽG )|MOg> w !ŷ(~ < p/F p8fR @sU^}4Rd$i5m:%K ךEWPYy#~/_A)ؖIO,Yn$%I‡,A + ҔHDklޱCneAn[r RIY0ǽϑGH%_g8z9lw,0 w֔HkXYZR.3\:vrM# i<؄Z!ezHZo-3^d!x u zpXIcsaz]y7鶄qj$Ԫszj^(`e-[wͱefag(k u %iB{pu`դ)"2+?2 n\<˲d4["MS2:mZVW f~bl -n4d2/<;܈ 4MiOo2Qs9ȁfz씡29 5sfMYY-yDn 7^Cj OQ6O$3b3g_d%(nD ɌGܬ*p "-mĺSBFIoY;E-x|RObTQ9;XOx)IþF)imx#ƐȄysgΰg-;sVR6oK(SnuXtgY]`X]t䫢(I MY5^5/M¹>Ɓ)cwXF!r My y7Inƻ"ZG~&ԷpiJժixLsaOAq.ڲU=>Z!CmEs%Z1lpsrY .f׽iqwQB3Xm Wy)CK+ (ang6TКŕ˫q$_ck#8;K;K]'Aˉ )쟳 ظfnav%n.v vl߄ 獣{%ayaW_z<3^ۏ΃ڊOjTDkS_(&dvv5 \vXמ'cM|,45Ȥ]zS{yur$}'s [acfFo7+Rh.k `B7?J]lD\r Y.ms6AK=ӕrƎozݸ҄X&0x/Ght%dRCRS[݀xgMsF>BYbBOQ널X,<Ǹ7o;uʲ/} vAW1,.1lUbG`s7!رe FX%Ɛpe~oeyM'gÔt[ vn&(iY^^ҕ9Vz< <Գ VUPe ^5"iE.[.S34c"HH9]w?{>Wz\]ĕi^|0v[gU}H"ygx٧XX#-?Π`qUIJP*uwFa&. ԣ: :qr&wbZ\g,iGfGH„Io8 Xqäz#LV&Mኹ›ԴFca3z{ejvS'O{^6p%kHQ2aXXTRC`x|k4JI¯d xbmz7QEЮWWc\<bx;>y/eBedF loSc76$GU[]DN}ej&*<woYg~?oOcޡ֝>I؈zBkb6iU,iDpU.j'ܾN`qae!_c< cJj&eU;e P9Q@Mdf(Il̝️]oBIdN|"_FHþoo|Xgv9֖9uℛʥs۰BbԚҔ:(W h't Bv*#Idi!IۤiBӋ΂0+pR̷@ۓصz!bM,ę֊kFu Ex9͵nR^^4~Cn6Wj:\I]b5ZIH /<~g0J[]FJm;LB9,hwIBA5;XtE#5k>yQ8"l ΟմnobݷlR+f!5e6)\kM׫qy3)I9b~(ai2hZcT3%ŏW%5vȲOe7ui?`+S0ԝ,Z6lv :_/~㷧ֿ]c׮ngR1h嚓n^-Fjo+Iƴ3r:pUQ8B(4E{6|&sʔ'Sܻ}aT-vr2RLe-VC:ijp-E d2ڐ"6M6]{} TBvt:Ք΅וvo+bY b^1,zr?v{̢֝npPW'4QzHxwI:zzN6!D}L"4%&#&9(Jv?eo O$I1+ۼh+DQ5\MӃZ0&񅔒JitNWH6o2ANKuE* zmY|hlX(u0YR&.+=g2ȭJIne, 67R2 y?__=^xrN2w4p kJ(KsѰJ$"!U-"QmZ.iF$:mw]+(Aw#IލtVk|N@4B4.zpcS[@8xg}}ixLK5[9 r}"$isG!?vz,IhMMqEDuNHZXRhLwk4sיJኮy5֒.I(c%e9"pbk8k#I kPnh́IB0 )4>}X fFdqgY6$IHYI=^b ~,RP9E1$IH$6IT/?߆ljp)~B(cLbwL3iU5Sym.7\3:%s `tƖSAiڷ؉S 2P)=8jB~D 3(Htӝa-[r pȖūתȈ1eŤBt]R] R7\#(FXP6+#bdǿ\9 }}%F a5a f6heIW1%Z%~#LryvlN_0 mPC% }Io_ESJ&\&G]zujoȆn=0LfZZ3EL:F~-iݮMƱll:*x |j0b ]q4Y <u}.ԧ5n0׶Έ@VΑ} 2"$ IDATx_'IkH)E=TK`h.4iBiDbBP%AR<6ԉ=AN0(4 em0yN>,Hӌ,K0p^~_=BI:nw,h`)/ʼUԦ](kR4M[ضk/G>a,ȔZ05Y?,sRe09hv`2qL[):.Yqk pɑ$H"쨐]9i 0Rku&Ƶ~7B5nZ/%S   ϡaD^pvml(b{ZgG{U5!!>M#as0;;K)˫i;2E,MХ!mu*u5 c̞ڀΖTyAExI2h gb_xehi5@i)%N*{vji2fa=dlR4&YJ}#'t#ayRdmh2<[UE80۔խo ƘхCqwvN4{ČV2ڀtZSބ]Xᰂd",B3?̕EҬCwz RE-N?9*O?<8_tF AxtSjy$۾}0ZiF+_[e.Bf7op,#ެ 4cѢ%IRf("Kdت';HWKRD.#>~bݠiXظ. + psϞ06I{\vW;qF5[ vқ Sy/'sz# Jk< d`ZF8 +[qU Z+Jbp^$u uO0b. y譭1};.gfK6&t1"X* F[gg4Bf3؈&o^}(ݓ:vD~Odz64U6lp6AU1,9(UBZQ:T^ ) f4Mx?cksqS xX%Gcot๯~=,CMFVCtu+V]e"K2ruVejjjtf.sY^KW)5"+>Y̆)oZڠo?0l޴TeX}+80IQiF'?\EQP"lݤa'~4i32;vkV9u0sPB m4.E0v,.YDH6V4i9bZk= ,[9`f`5ѐ$s2NEHiQ`I@ o "?Ȝ 8?En}h}ECYzm=8gD(p K_kPXT%mu&UL~\244QlwkFI=잭u'iU% ~O<ط8w$7Zg1i-v9VPlXI3+x[%JC-vS(_BGV& ˜6 #58 ;mvx!1̍؊n3Ual㚴Î t` Mhxbyr|]{3~OV>ls 2X/7 lck'[ZWHChe| 5waLFcC4J @İ#zPC+E.HcPi֦ӝXK z9Μsh-FʄT)ovв|dD $jDfȋŰ@aR?• dixɗ>ǿopK\:s -@ 3 ֤S Jɲ)ҤCIT쮈}V7nMVO{q"yKQjT6:Wavm,#KW%BQ^'uqy}drXrGe5FRok JRu@8ؽLQG!|#XжD̃}+$=A^Fcn7zݮMXH !}(t ڋ/&)oEŎ!kcp`+HZmZ)J@)_Ƹ ve) M^hI:KyO"Mxl};h{_}]8N=j\W҆0I(jS~o1]k}|_W/lZC)Iև5wT6\H$Ց,D u[_fcQB3JJ K+ K{C$Dnl޺duu/A[Eբ?\ [ KZk(h;(報5$ۂ2O=:%/¹kkdJJ7K`:Hť լ“F?1eDxq;pHif7p)iI5 +[3[7cQ,]- H,=mxޜL{hFz|S'3'蜁՞aM9}8*T 6|MbSDzZZD_ב #LHxݸpPZEĐl(}9._㡇Ãn޿ n]oo=αco%s$<뚥OBJhe皥bFWK]f7L;gQryz!6lZS8k?^ EݩӀ&tvryWsZiR0X[had a.[ Z&p A ,e&Dz/*:kW{\ڞ}7V$!mwuO<.8xAxQnFPh2wm8= )$av&6m}광iow~7џLnd[C=Y"S0d07^Q6 pֻ.փ䅇cb$MIu򦙿2KO?{>~vݴKNrرm')ppJ;Zi=*fɫ(}$/U%e кi!$ Ra8N5^ay"Yns8);aM¿}BYFMBgXx,J~Bq He;~eYV>#C]!%}}(1١icG`O'x(4ItMC 2q*qlmJO(T"M4Ԭ ӌN2K)ڝ6WX^]ܹsVD! 0B7DUѴ[YcΟ?OݩoFV!h HxiHR1cGzXU~ xy']"(9ɖ dI5ĩj-;}}}((ÎI[S6^vocOwPęU@Sg 5BH߼(aPow䇚'YŃȌlz]lܲ {?L7~O<;﹏byNr)~O47m>G@P'1V|MXjV%J&d PiRkZK$O>Neۖ,/k._XFm`ޠ ͦ*GD[ߢ4ڐBR'?'xfa_,7k(dsiO\Rˊx&nh,ЈvVIΰgYxBKbñ@xNYXaE~-kSЕRB|L!bNkPY l!&$Б*!!IʘIg^Ɠ`ueə,XA%RigH~~a'O `玝~U=;pj!x&ewѥns0%aIўȔTec=^#mX ݮ͜l6$BcE%V86MPi![X] ^xK/3wuM믿Kt[ݏP{nbM?SgDe6,X-$o긆$ȿPIAXGHɈ:eZl(QD&)lehW?"a=)R}Q~O̧x׻&$Ay[O tMpM{xsVf#$FpeO:k(KnVɸZ8"_:3͙oOHŦm8} N-hoXRn3$"Xm8Gk&W%y^ UeLMM1Ĉϸj(Di:v.5jÖQM;χET5;Tc%d-{p -.zL~ct:UC~?4ӴZ9 eX[˲oZkLFBQc 61 E'K&$iC7~0M`ktnʒ  Ief,N$IRfgf2U9|ӧOӝ@;,#ҘKi 0(j077yaDžHE73?&Q^\}z$1u+bv!HwvGٽgN;,cXaPjn&ᅤ#L%vǝ<ͯq;mA-yNzGěskbԫ!]M-U4a_?[X2V񕇲wKj\thlbҔaqaRس!aͶ۸;gaJ^xz#lݶne|_*?^乧_٭GLK'L=}ZȈo R9(#l 4(iy 8v7DQ./ܔ֞TR}ee0E֒$%`Ȓ$Q([:T S~$'n^Bم&VzR&id' R'4#aWІ&y7ta%yQ <1/9 F>>zÿS?ǿ/ݡQB־+/1{1\M&~b()OITzrS=3t= JK6t J*;^o@+K_hGj$~/j}ηݬB9I,//3 h[ޟyHK4sհ97Bjvc*b/5cw~Si{|[6qȄ7!ie]gbuy۷e~^~U>efq?eLOs/A=~OO}tЮgk("G c{*tiMƳ뭋Vz..dr}l۵ɖ3|n9# +y_Yl}b3/xsɗī/W^@$T*hd#Fji*~~XPԧt.[0s.qV $YƠ}9տcy9۶l|˯0/ط۶l卣o0KN|p,<ҥsgOt6pڢ6N׈sP>+qO.0øfX|2gxꉧپmǎ`=z=/ycOpaЁ)}N~_ /!1_au O2 PeufC'*iai^Cb6xS]=ƵiMYe#j<V[3pivPY^Y55R%AB]^!X㉌Ra^eI׫EQ{游ehLO>"Ư(xk?"4]@l'Xh6㡩)YkBA)vj"Fx=nSٛA11IhIX&1B+C !wqQm IDAT{/ ʅBs $%+ZmvwOOOȮYY{fyy}O@ZIM/PszNnL s9>z7Eu]Iv({KzvXX0::DX*119NXhTjEkX_;қ$ HD!<uC_V$xcIڇ *~5ٴu[&k4zg϶Yi+--%Go;ﺛ |}]Y^}s7}+7ٷolXٛc FF.?~ P, qӟiO=:7Ej"5-j-%6ҡ AUxwc6^x֖ܵ#رc;?|).wtr!Lj2ccFIheiJߟI;I f{I_iMdܸj\4L ij-|Yi=M-9Moqʍ7z~HsÐQpmtgn' RspAiNz3In.R:3}K6^:GK"k}E|2 ۄa3Fw3Օ7dMR&c°а̓>Q.y֧߮30&?K'١{qnNR wgd;cQ ِ.7Ltk\%jiYR}ϻ1d |b!LngGsSHi<둟=Pt36hACdn.KfABYYwwJnE0+yy"uDx66“a m'vemh%ΙkV\QZJ <~v3Կ|xWB16b2ޕVPI'$ 6G n^X|P e0YS 1Ed|4>?sl^яXqmF!'>Ck[;~O>昛]<#<23u0Y~ 7n\~GI Dp@\}[746K|osIo# )h9[ψӦ瘉 Z6%'/j0^ L"IPTD'1׭ellI|gvv7n᭔,D@id <^=9Y=. E#驜:Na+zպ!^cBԱ{ؿf;dݦڳ,-Yzm%FG29>if\_/a0(2KgOZ{Yi׭<f4n07%53U|YUR}w>չV_/=tHTnG>嘃DYyPʎ!tC/u#l,i4I%!,oē^|grUJ[u Qkϸ1>CB֮]G{g ՙE ;-3 <{^}&-8H;-G$9EnX[ۄ4JN5)?JRee8.]Xi+Yi`-\|b8?OGW7 H@qy VZ(N"A>.hI56֝]‹Teo%t9<)%l.En{FPӦ\TB[[[{PT߮[k* Şԅ@kgGQ;~??__&!S>*%B19]f9NvvyW8{6i*sO2ݵ+EԵH195B)ZXٿ\gphq6==XȪTHAp?DYvX~rew244vmch}ߴBfuos33T) N G +[8~+}??^Ϊй")2^C6nupK֚y~ +ziP jHEsm*J@uȧus|f*2Ie.],wlg%e.Toc\tLedŵZ-ML j]4q*tww; 2y?~܆(%ӭ^{dAkfm~$Q\l+KA7L@zQ3Xx{spc`zvr1W:U+LߜJ ZYgvs)ЂBDƣ\xYsKw<^;ܚ|˙duo#N"uϽ 27;4^"Zo~ZZ>uuW1z # ZEoO:E-Xa7wgh0ֲvzV^(=-&27ũǹz:RD5&4`l<4- HYe;ir=nN~Yk`}MdpqR=isYliݾTSWFF Oߜc~LLL04@ PznNB $򶇲X&KIϼ3Zםfv4ʇu-_䤀$N svWS듾=nI-['I}g޼~t}4HAp k$I"8B<Ǟڡ'Im!{s$ϲC` |T*5},\LfݲI %BW)!`;[ dF5&oNE{{b _NݓTMtC5QT3_Tc` 9DjR@)+ ҽ!K Z+[Hj ] ur$$(`zvgαqvok mLM%(bZK1vV {Vy?u1Dl S\'kBiMaL5^ RD7is oŢywٴe;Ckx)vMG~,{ S_SA@Th iNj&VR8NjM"Pa7j@vRR;%iW¶5\۵Σ_.;|8i _` Z̮{@-)wuU $2/y52c1=d\,//Y#3j1΀2uu u:I8ɼݕRE@p̣vejYyXpw}4Bf 3c_ ~_c p-/)#GBg7L;_Z]` OP>@P2ݰ^kdbj5t6dn.ݚ).,27_V5ž395IGG7Ʀ@M5rj;#I,v$!<LhaߵHd6a/![wfݖm G]Sjѯxl\8?M" ƾZy.֬"aW%2+(MݭT Wk.BJ~u /7֭laK Nݭ݁FVp۰k# tv͉I$"j$NnƱOi9PJA! =,aa oPQPwon kƑjǩM6%N ,1qBa[ǺbRٰ puBJ|_` yuqW$]?xƗB7'OuA7~ݤ O&Fkפg՞eB?-P雨vIak2n k6m`-aIb afoNryDe.z{93űGټy  KOg'[wl knowN uLs!ξj%ۇ[/[w!Q:KͲ.n&Ϝf v\|ú8{"7nc\;y3g/ADc&FSɅsi '/<7_ZCHmgU@ސc)%,.: [[frdMRVB|^oOۖqŇe-$8f @ˋ|sgW.SԨVkSV)Mî-3@̨Yx=d']e&g˺{%笛\y텅`R/x[ݞɶo]V|i!GH7B=oa<~ͻ>ߌ!!3 |dC\l>H,wIu7*JP1?Zs${cd8JgB5B%,lKv"2AF$ BZO-NLKTaX#195Mh|+$*qv?i JJJK#>mXe'CÌO#VZڇ(Z)4%V\069C_&&ٺu =~Ylm;6R.=GbUtt)N}pT/҈եMwY!1NK]I'LRbX\ﻏn.\ mW.]"E,,daa2-֠)]1 }Hb8BRO{m0lj6f4c'դUF\ָцig~?NMMe1n4rf wrqfP&_ ,ueW,! .>p4p[G4s>ti_Ga4URw<0܎YWpذˤc4c\.aow"ͺIH>-vQhI   Z* K*y `l| 刚Xz5׮]5r=*E5JB]ʣS\j;@:B+YN8/@'5&&0>1 kٸ}7Ǧ{エ@l۵>]m]T K9w]{ѻjeӧ'9p;v!W^f`Sc".9g@_f[c-e$c#lfy`T[Z* }|{c\xBK;g91{gQ|aVqex<g{D\]E BI$t:^ġK)h Ͱ|(懓-w*} *~H1ޕRh!AxY8a?{#Js m Z$aqq6T\ZtI(&ъ@5e8Q(]gsp}:3SeX\@[_l,=gnV71?pm!u,M Gq\2_ޗ=o*JRL'4[E4rTN^;Ydu;bJMv7?33C{{;A`y Z_o'R(܂lRP9:-"Q-4{X @t2ҤSMfnM/231zsP  +{P,23H- 'ǒQ( W[R"d^8<.'==߲6J+\t+X=*c6n^CqIVt ?̦js>u6Z+?O<ΑCsY3$UE37NGBSqӲ܈Tr i?)kO>)'y&3C}BZLo䁇ܹsY?L_JZKlް~H[K}W__Kwg>̴B~n;S t'?nJO;p\AT\a $=`gQ{K IRw"`Rfh w?\xOH*=+z3qQTNL tLL NHUFSًV8`\ERHwGȨv6a@( gWn6 =-Q5q]%XTWkcjHrLq`.v2\Sxϰif~/fM|˿ص6l\׮\b~fV/YP1*fٷY$7~F$Ҭd/.U꒧H7qj&,pρ{?b>2=y}12B+Wrwٵ{7CCG? <_-'VeXts'R9eJ%Na ;./֧pnX?t?~VųYZmNT>RAf^~l\7Lw_]}LNP-WR9b s"%n*$NkK8Z )NLn&xI4ͦ#c3%{a3ɔPlJ,'_] 1 P*&I ?{gg^!n+{sEPƠ'b}f67edSqॎz҈%L3V_Sx}5*aj(B=# p.d pH?Q؝QÅ|1AfZ (: Ę%$fEg+-`O hmiCJMKK@{N+'nRDqddXBA\w=NJ>_aeRcuRZa7f9@%xyU#|` \ =(JZPaqnXTa\LFUt$% D)R%J ZxARkQV8qY?7oս/ | +zfqʯ|g>AoO+cWxԷ??o+ t" [ѽ>Tm39aA )4nZ^gdj^׌|vm=tA#<(D!8{,o;F{dl|Tb (|M:;;O,&K\4=D4c UԍTe"gVuff YK5zݜi *dɀ3L/ =$bsӄ"(-XahܤRhIXha0[nX*s18ՃǨ:VyR ox>zVyyx+Lcu7q (c7z.n&2E~',ҐSњ$#ɶBxuAXDe.֮ħ?iF]a~fE  C=uށB)=;lGO25qϠ #,$$R3^&ݙmq$VMv%~gߺHߓдoDZA| QkEX8x}uvp%h)|2q-RзY|_R)#"IԎ40 lE0}KY6Dim~w jI:[I}kCvq\? 2S;Uoj#RIV}k-yƼTٵ>v tv:"9^pYLm*ÞkIJ w0}[N ;Ik]yWwߓulJJ!f<brY;:׬(׻[C!XB˾`Dz٩HD \1Z5B"YjɉQ SZ =v 5RxD|UlٺPȱ\fa(=z0leætrhر]+zC/cοǎpa.;I< FjIUR^slHd6r `2iJ?1{zص{?ys+عcw8hkkC8?J_ȑxaPJ "%Zdg Y붉 v-dB'>@η osK>N߇/Q@gWulB|fT <$S7AV(mmtu8(ZiJŖLU+he4f- d0&~?N rNlٴ|% /Pf:v`Wbb#q덛$EjZ'JKGJedKݕ+d{zuaOꬫsIIeN~#8Ǯw$= C$/TkNb41xJ/5m--NGZcjv=L\7袯+W6NHbE ӸE(>ܷ0(/ڥ >9Ǯ#[kơR |.wry(<bHb}rK-V@Bz:Kx$J dR IDAT&rwuR*>~~|>={'Oqǚ6o7>*ɷl;{Gޠ@bs$ Q t}뀛DKҪO"K 43YW7}Ĭ9mtbq5B.׌}a7 ˷gpgggGqLXL_Zp]v,JAmݢ\ +T7m\)m\{D PT=? QNp4x7svr8ޯoB-.l!S(=DŭP͊kvj8fp{ndSy$HzRfJcE-1ȩJiA5ZPjmaɱژ/Oܸ~cI@ "RX, cˎ(y3ؑ7Yz =+h/'|'ŕ 29r]@wE=,8KrYIXOԅۑ-%@k{6lBCٲy39}]0;7ӗ=R059ΎyOg^R{/]bH"4/0q McX 7o|03[q!\5DTloWֽ1N`PaHυ (==="/]&^P9VNu]^ b=sz?QղIcF[^Xj5o};^68lq)q*IRy/c{C ˰7(B=܆,ى6uh,ھ~KkR<:&AWQEEz~~[Ob~y]8?SI.ըsvb}|Ǧomm57DA̍$H~ZmĔ 4grr%<GUڙID@XBJ'bNPI2/!vQqRu,1Di|3䶬ޤe Dx(Ƞ %~<wתt\:w΍ޙ Z8}]|r&x7,.35 %Mp,"Շ w5+"RFtF'!4n8_VZAN_};;}(ٵwd;s[=w惟JH0L:rir" =wJ\aaq/ YjYeU"VWHcpJoihk86gceI/34RbdKr _ xY$ ;}Zt)Y ;Y"  Lav>ݍ2uqcO[l̵+Gܦ5&3Ksid`Z-[E󎩾'}B?Nq@E2Nu֤j*ws둉K!3c %[J(Aľ/FZ[D/^ȬD_NsgNSѣBM%[6ڄ6V›g j︙^u XZOЭNz}k"_bH"tm1xV7/Ea [ Gq JH2Rѱ /C)ٓ d~F!9DZjӈly+a5̩ٞAF(f!:wɆ$WĚ˺IqϾoҩ6&Hs_;>>96|2"FX4(a󹵁KEŨ0d-ܸz˘($ϟuTg rŲ5wo- XVfC/ :-xMЩzWJQovV% Rk8w0w{x)Ʈ`8z;gϾ/[o^6oJ:ɓO<(YFH3K ,.BW]Ԫץ![rj0hEzthƥlZfr>uSޔ$B YbPGf\ptU\vlf0fR ZV~RJJ^&M`;_;Ôr̓vg7 ͆u3:#E&N2)X#`"i֗j/wgl-!$}Zlht}gQso2\v٤s; u8(Nz7 讫#EQ˿=e~%_BkB`áX _"Yor(A;5,ĭScN N%,0(t(237 s* *16z=ccA0SO* iW tUW}iFCd|6WYdW$.#@ɪkg>o3˽lٱw>۶aͺazس{SJcÉg9p˗sq^y~u^~9GPZL-m H ;Ƃp{"La0[B) XiWHwM$ pK. ~]u'߅&xNq;~?6q~@1̥T2Sٻ-۶l67 Ь׹r Hfv&DDd֬*]7*e#U1hoV#}jj޾*0tM@FKC76çoßsr=(JtwwYY_).7ɍ3c^y"DǝE?X# fzq D1o?_SR~)PP86)>boɮϷ(@3Nq ;I^NO6~% C^Ԩ$Mϲf:C0v+W'E [^4C1&)hM3 op_&{Z\{{{v$7Mb-E"6N[n Ztqr76lcڍS݇Ka QAV:IF8gzi5Ԃ1]NĮ= W]!\Q.U+R)# F.Tm-/%# KZ~*W|{/N{T*{_Gk8>+#%I%G|ELQ4v`$Ntnaabu_C!z͸٦CM۹86|#鳛A*!VnSJM]N_ zDoOnU|x$ W4c 4XdCd Ok2q q\voƆXz=,;0;3Z4j4)n|)/==-/ yu5s@&۴KofX^*`).m;>OKⶮwtDx IN#I_{uΝ;KRLML?8ȺMвR(w*UBFLvb͈86R5u?+VC-?qBq8VcJQ2 P=1/g*h4ZR.Fjj+`Y}g?#Njvԝ֤z_}<f5 ~~᫽|KZW$0 JO/ M@O'zǟ9BQ2$4 {nbT߁ m~?{_>MY,^Eֿͤ[2U TP⥫iޱhΝt咢Ej1XvDXtSqu„D dʊO._QnًT%rkoeӖ ΃qw8g/qYzؿw+Fq1x%k*db*J^7# c%줧%nӹtR+F({V,Dhs7U o@&2YG'Td=REXf{_14K%r/R,R7:k׭wP ._ڵk)ʜ=}%&obfrJ5k$mx!:  Rsc43O0kdC.V牣ZN#iDaX!tv oZSM}d՝E(آ*3.L>"_#¯%6XؽZ܋Ll}?Ȳk8jFQJUw1NqBߐR OI# ’vt,px~oE]X-[|qt3rw;~Nц0P.I rcJTU&'Yr-WXly*2׬)N`qYJ,L.FSh0@rDQG)tJ3)M"dHT!JMz}<'QA{+Ïǧ>k׭djr2(֯_8KO-֬&I"&&RRQTg 4-]7La",m!8,+&Pawo\봷mod9́YZcX]~-8I |gŊzeì\/aAPEF}"\dST ,j΄H}tUE-89I!(tuW0iJZOۂ.[a5_}Jhz6΀7c]3H,zCV5N8''j톪:,5JV}OV-l{زϛnf\\j@TJZonv=BGϪ-BD>.x t˒/ZM" R 0+QbW87Y6M1O5x"+V^P ,u¾+I3}v:$|lPE@KX"%YrO %*ٱ? >Gwo?=/OěoɅپsOcAJR O{Ƶ+L^G$ ,$J.Xۤ7=/ \J)A(PǗmrsv3M Gޮv~)aU+3[7/Lt8BMV_y 2Ovs_ 2k0uk9v(*Xr%W^!,lٱ85NBa \V(mlF1IbM6H-*Y\26*]]{M?=췔1׵ֽE-2ݛP$L ?ɈvݟN^#Av,ֽщ|qyY%٭8=7_֤/:SV$h Cf3p+# I&шx{Y~/:6mfd*Ucd:f2}}M$I$$qPoH 3uLfvOmJCeUkm@B)?_Q:$M®:\www}R_ܐ~[Hʁ79>W1}hjZ)ѯ~->P\JJHE/G١_|qG1fIEN!쯜ծEpG'k]$I.]܍f y>wJ k1 p5izFhTLÕW3Hg7 )d.\~ui+ [ifԓ5k|h=Cv+>ohhf:7ZkxbH,6oe߾T*6mX3?:?؍^ab}UH B;=ٶu_$J߲=8,/~v9L_Ov9˖ Mڠvd/#_2fCixNz-VMӝUa:\/Fvf R L ohw;z χߩ*Zt)XH^ 0nL=~فL_zvTYr%}=ݸf̲UT鮔4mҵmN,!O')':ƹ{) yU$N[`t`p)&!l62F\֊/eNsr+J=x.g;5!YSHasZ}wqwz>x;U=}dW]ϳ{|c1̷zAWGu* r&i^n݇L|1kubg 풯lrtuuebar22*Ƅ\t I^NV%P2:',zZf8VTh4RIJn:ZT*+ظq[w{~fffضs'oغA=&{GzXΦ 9z0wRxZ>A6>SLsH 1L&ٸa1Ξ?ͪ yяr{ KefgYa?:?C=ٓg>ݻx$jKvv-Ϸ*-ymɹk\kN0uߎ1/kmA wHJ dPNk)6{4p)~"gmI]Gh3߷-7lԘ7X>2L\9  7jqfc%d(N8aSd}X@&o8t,%W>w iIӃR2EkP7/a ,Nۑ7gz_~C-UsCA⚣&WѼ*ժA|E3=|o~N 5I!ArdtLNZu3<B ͈cb| )%c36>tʰ1}1P&Bje}lش;>@Lb\rO8 M;8s.R6`˦ ?>ϱqF.]8O!KΞ?:$ Ě@X%_~ l޺OfպuFbzvÏ~87Fx#[n\<3g$f~ne_$lpvo/ET1_j22RYf)i ˥NK)W+?F*b$F @8Ukxӟc;1:|Q'knCOlxE{Ep͂Rj 9t s ֭@w0Ql523=jҹ^NhI:70,e?ߟl7x9&ΒRrKmnRu,N6- m!KskEx6~#;|rpחJ_AAi5>(rR/'?O )daHl@_SsT_s6+"cпY*h乹90(!.E' b_1lC#D@ ._E!zVZ EQŋ@e(C)B)Xjw/=c'^ܹ3۷ j6vu 6lc${KhL+Os+Ƌ]ET@W^FN"JTz{9p~Dlپf7_{ϳo^FGl.~s$D*?y ~- =!Q[qi2 #3MHFS0-_;E&i-MӋ2u)2)xcHk47 Dm^4hJ7ߧo7leێkĉ8 Z /y{+;!HDJTF}#\~zzar캅eTF Xi1hFݶ`wJ) z.; EYawɾۡ/}3vE )((Y0#uX5\qǭU\Ł}0 s~*Iu^\O{&@tr7;P7ZA*!g[d2m߯/>*t:$r1\ݜIɀ ,? -F$ەNtE9@ )qufDk뙟EVLΟ;]X\d{R؅1!Xn/6m੟fRg+V=ٳ 6P??צqS7P@ %! 0 7qq/־k:w7gP W{\Z{sE"sƤtuu!TƘ{C~[J? !ey.aⴜwHp$^gقUXM{;Y[;ʓ$M&2Vo eU+ CFǧh6\xɮ 2E4r(X8fnm;6q޻B~:ns[s=:y+iןڭҔZ %|&3s^x1.7$Y' :iJZHP! 2W E^edp2fge1|=}MlJS1fԤՅDJ0?7_?>*B`PVi`Dسw7y}XIwWw_bמ(%~ w{'OcUt1=1$c$V+mۇn՚j 4Vx&SVv)|Mk985?ΚkkYⅭ 7g ɇ{_Tv2aR-dĈtm@H 2ا>æ-;8w3SSlټ'?rG~c<ʋ|[鉳>gf! Cdl\e r ;;"%&xW,wn%y 0fgٹY*=}Ҡ "N|t!8(֖D q ]-g '6htt\m69t]P:m~߱]w~II*_)2 WD~ L5 &$e;\a8;>Є0Zt5o.؊Ҙ`ǟ}bf4>Cen:b/ERv( B2=]efFԠAjs32Ǧ@Z&+mB¤|Fb8 @A&@2Tرsw}/+WslؼN رk&%Tp |!&ƹx}y'yGU0Y0Md" W JZk?odY_|:YVj޳Ӷ[)u8NK,rv[*)Le)B~ܝ$ *P^1Ϟ'_^)]+oT5 $ʩ.%Qe1TϓZ.Yh٩&J6vnRm]x@iϟyh! }Ew{: ǟO۞еփRʏ!D.:σ#{Q|_tvEpA%i{pso ϢE#%%d,R$&P5ktez7ظv$B˒F  5@ww7zXkfe ]~Bfcʀ"jFT 6b9oٳūx=31>ٺuG}z_<$o177# E`< <""ԽTRu M k-ʲۡ,qVVut.fv BӴ4X_V5b*3Y2PcD!F+b {b5:y/dl:o6CbMLMk_:A􍫼+>uԏ-dc^v%z"!X֡i&$mv sh0{qז$q怗ɪs+$DQc @"ry0+]ݗeMVu1t=˟ۧAtb\YL'r1/E:.C$jYZN뤣dtfcJ /!("JbRI%1S5 BHAS I岍`P_3;_g=wq&&&شu'=.]ctb g`fΝ<པ+!Nba*6Ϝı#?wdm [bbu8eh?.E0䨅M{:[_J3N~+D\XOYŚ0 6_H+A`6%)FKz1|fll Նя>;XwcQgjoWy Xzo' |{fz' 0F8ԠFj"7`wۘմIDi@UbvzyFl?O^kPO-G<:#m&5MT@=z,#<5)J9]z'b BvJ3r3 IDAT q顧lu $;JXywvPfN'o$NޏuÝJ#X;Ol jz{{3yt~1U 2$ZD -k_+/OKR/!Dt➣Svo/ ]'Y'" P'2>;߇߅T#Z\#7>/69IYӋiM°˩MQTz}#FQdaIR"@O+Uz1|-}޿]s]ڻGt |*mZωp;-sq֯_!^xiiyf&'I:R\gSLA+`a"㜭 hoV>5Jwx.Bgt1&b$d*+4F^n =׹\p0tiP;h4xcasϽ|sѨkLcfܳ4o,ǎs֙-6w8eoR($0v &pga@AjĪ˸tpFV:un6[%PJN&mF("#[$,aR:TΛpg$,Y9ElRiz8ϬVgݩ^=a;9s#Eq[c#^ yvvٙ,}ppJ;swR6דdо~Uп/& i")z4bb['0S|p{ߡv"XvOڝm4Q"z}UQ*dͪL|jC'18^o H$U@Bs\|p;~ yjuׯ}&n\>˕gYf%Ξ[~.?Ql&uEϚ]>Ոp(~|@۳cXNE\M:]Z{q![=ٔnF2Mf'77f:ڤM^T6(%Kz{.axX6hۯp[/Z'٠jJR7㭔RZ ɂf]ch؂uà PZpc݆|BWǝu`vMzwu>Υ P4K[w$ǃydnWs?*(cu!+UئK*?,]7) N5$J~g-מ i֏FQ3=}(_:̌$]o"w}񳀋d H!^uD gw[,E;X+Qͦ *>]]Z9+b|rZ>NRXʺJ aX",* #kشq3o wnʹ>~\zgOsf ))^;o(B.M k_aT8vu/{ˋ/ٰ̲s VIiE,38)bi:o s$Of#[^c'WlH0b|S:y-(c1D`!6 j$hĚIb(D6RO} $w?~׹x<믽B6 wy;wqYmĻɉoqq'^Q˶c\2X1ȒHRodvbf/@1ЬJeFv̲ӽKͬ];izqLBzebF 4ucX6: :iZaHAjeQJdu' rT l!as,yȡvp$IdH|o"EF:MKh>>]c^s,r (={]uR?d wctYJWJdpZ}l22~~kaNZNn-(B"#vHA)R4UuRBwoJn5.l; ǰ^-3$q#CыbbNF!pYFȏ i5djre#l߽۷h2evi;K|.bۂ+sb>NRaT`̪DzDf Qaoo:֮%J`ێ|󟧫ܖPsMS lH q BiJSF}DTxտ_"7n_gدH^?}DQ8io[ff`||R$du& FH&ZD,k["ZC{G'27 < @.0qš?M˯h6ٰjFѲľltQ'ouH=PB@7j5U mHL ;!&] ?w~󋪟k *sl\NȹYc,C]`{K\De-'tOc[$I&7qMqm8Ⱦf~O~O&k.wJ)СƘ=~lt|rvχt֩a>O59a/}b;C7ٷc >Bsl"_tS  -a|NE199WY6Ky\2#VqyDFcbawKI̩+WW\87Rc\A͢zq7 Å%MB% Usp 6-rRQ|g:?N-zOs|*@VXRhTy5)Gԑ,Ĥ&(XsU}?q > R@*EL*sjY.-h]t*( Pa#<@2~|JMp>cy#I:֯εaadPN t'Ϝؿc;k]j^N&m= l|iBZ:+MuL iwxU7̜Ehy c-0kr/*_ϳaL՚Y\>ENc\$P JDqJ,,F3BII\27:5|o+[tZg k]]],:I¶¯y$]FQ37Zw1-+ɂ޼q+E@q_RI5֭sn7Lj\}uu-" p#p ʯ}$ITQLSErRIܿxv ~qHr.=_XZxGĂono^B~Er~20VV!R)t8F5]X4L %|מ`C' $֒RO+֬aͺH)?(^~Eku\6;j *;lrRtZ^xJ9yI'"UHq O/D%b B{3k׬w哟ϣ^e<'InvOMo=YH{4# 16nG?;я!{Q|J;~~?kzKkDQL8qr&T`. & K|t<-ޔ-Lz X̓܌7;CHUXe)msՌa%&fؽs+vn%,6CĽw}^ш@ȁ ER"`KlQeK3̎{?ٳ}<YCS)b &FF79Xuqֻ5ҚYP~իw T*:7LT*QId3R 'F8k#_B$6|TP{WHhnEZ麱YԚ;p#y>vW;5rp3k5Y-RSwndO~]|0\%@x"bWÞ)P5‘r<ݿ~ݝk/H.vB$C8EO֩~,KRf52+0QXs;TЈJJkM߼@RE((W[(tqzp6aH>N"2]g|uDR䩆fȰzV[KSSiя9,X+q &* " %s7X%G}=skg~@ Vٸ~| iWR5Vo% +ܾ6? }N˟o~4 h(]+b4 &*D?==}h C<ܓ|6}J!*:g.R sNI_J HW[_1btPdZA#D ^vhJִR]ԯSoO)tJaBt3EH|^}Mv޹V?tXB2iȩ4 .EkTÈDQ!dL CE˪lqd5uVf?l6ar/D7 U*303L7_*XN ZynBE $tEɐP1!հu.&$CL'UKVTjukE-RUǼZ56ɽ Ť޵ΒP.Bo0Ԕl3 .Z_U]#P,)Jź7L}߫3Ox2BhEwW;MMY2ғJ2=T*eZHΞ^ ]%4ҖPnPWlvؚ1K%D4ߔ˜MJMDuMD hgmpwBy&'&91p|K 9MG[ 7߄ Mt5K3Y-hdB ^ԙ\M3ސdK. ܟ'8&7@~;緾(cStts!ewy;e/)Lm&j19x6pp7*~ޕ0|$PTW~lX)GӜ߻+h9qoӿd O=8m&Hak\C.2*펨;;& N#v5A*FsL4tC'.~\ "TǏIvqErܰl>N[s̔oB,BfMxBR #CMQFKes.)h'Ig>7m"R=e8Y=X]REOMM=KPܲr1L4˲X,2==4"MMMfݼcBb\rݲ\*Ē4Za_M!%V?^7GY.!D5}J  RQ]NG7J$jBt{u0td:ndx6,:KOXJA$ nÐ7J,eA6 CG7P)U,\4q e\`n8t82/{>\4&S\n8 i\6er c6Rozn\ŃsInݵCw+Z ._J{K+Q(Ya="h} ӆHxcz,aׯ>iw2e?@8*8UU?]nٲ Ny6ZW^~|]{Ɏ[oW^6SdbmB:蓉a˖8s>I6vv{Oɱ~.]I&ʪ9z6lЇ{@,_|/xW˿e<rZ9vYWP \׵zVz<{MPs:B.:H.ZZ%n12^JDoGnLKs{d>:r ]"#'N$߻q(s!=Eo7s8a3 ?."%֕.9j5Ajퟹ"|K&a3j ]d\o'^9m Z69}ۘbKry}\K٤ E 9⦭~^ U vCi6S^Hr-JƵy aTӼ/xw9} 3lشjT"# / oy}ܲ}N4;&-)[Z*UcvMN6Bn:I cՍ+yho~3*听!k(/<'w}/o*wq'ysgq8y0Oiv:-}zÇ#uǂzI2'(',Z¯}\(DQ IDATe:@S>y8Pژ.yHm:މ#!mN*/ ]x(y?FkIVvUH#}g`K,{:8 4|3Br/4BaM̵U1=VŅ]ƋSݩaiKRBP.W6TU):aI[lx-)ۍMH2ήګ+.ޕʹâRJy4 pс׹~ߧui6cRP,P(Ip2AggSZz`QX}!]ج)fi'T'ZwZǡ1tv[ٰy] 3:|ɇl畗-[{OC%GJLM/;2l&@t4gDy^5O75ַ72ч8J:<ULTDFˣܸv _Wi6 GN+xJ016ҕ+>>G>Ra7WwG} g9|8A,RkShV8 ř*]H?o|2H%:j LJر>{!2"H 1ô7wx\|>AUld=*mpfN"?f|f yi@@S{',Y+9z2|y?GƘi[ZWJ3P*x?S5ZןiSwtSHK^(hkkK{ahmTQhJfItt$f47փ)ל} !RjeX^>0J!ByZGɤ!zDҦнqi]1+K ifҘ.<}g|b Z f2uq MmOLT+FFw16HIX1;NUi0 3h}A}3CiM~֬Y}շŋr9=`5;\KxgΛҋ>c#9r'G(%+7JL7k{JY+Wrr Vfm<Ӽ;hUSDٶm7߼Ǐܳ/p9ccyP*1~yEP$=}|7ŭ>źMXh1NrZ7wA_&G`D DUo[oMT*ecDUE5uX3D4-$Lj`gr~ksqHSo=R ?jBgg{`^;8w@%W.fjt OjZ[[d2,^ϒeLEF"coi 4s&uMJ97a˺(3V֜3G]W\Q5qjw䒉qKA]=md20C>BBûpHZ!L^4555 Kٻ gۘks^|NJQĬbrr2Q(ɗ5q] 7P7˲5F/njZrBd,$H&u5V(65IARU9;Hk{7S3nF7Q*LLL9s,o&Qb!bdָ3u\[ 3,fiڧgRn d|ry:̆Mͼ+&9lٺ }6Z2ܳh?{JH\R.{2#jQ/eJOk&D^ivL_2Tc_W8stDPbѢ% T%n\"@ Yb溞GmKl15ff6l6 8_Ku2T)q:ulrr*#vjpg*3wo#2t!v,u$^r  uó|WB6*u%lC} `<ׯYпՇ7Dq-JQm1Fni9Mxs_e3~PY`6 /@7, 1iu7QVOۣ݊Tdʄ9NLܠRER>#c?~HItA g3\lneIDY%t DBD*I 3tc-?ƭ7qFFF.uwC5hniOü/\!n.N8/\`zr\S<+pGTeH"ߒtR>PcZ'o б/bvE$=::؉UuyݬY+ܹ}*Q4dV,4JX[/ ң?Kttn/“?~vm)T lٶ7djjCDJ^0UXsFٖdW/)Øt^{'m{=.45ؽvEaLB:Aٚ6kαI,[DΗw]76c bXPid6{Dx+I\.WWK\4 8Rdig{6= wvaz;>YQ\+l6T|I(djx5e V'~W?E=gA?ZG֟7=&KJY.a 7MZHm qtL+Ik󞶕m D= ̵17dШQ^ŵ]2ÐWǘ)#avŋhm`hh Ðᱤc5Hp--m^ IaseP^@$"i,Hx" II G*~o&oy>sBa z7w~oNGwZG>/%Րޞ^9D/^Dyj}G6qQv{}$C)EgW6{8>U60^&S1CDMR@N7N ^_{8|4s ˙?oG)$=)j\4J;f˶M%~c AU)$luBZIEhU=<%|Vx#mџ26t;w[<Ϯ;Hg{oʦyO255 :L5v&6*O)ۅ&5 5RhZ[Z&RJamcgNwg CSet&*uJ&YrgΟCx|R|t tl42EMdc݂n׊gETtUvLi6]3FQHZ!'6gJl}Nȅls&rBn-ϡE(l#`WکghT{ n#bSur(&ƩzZ"͂$8u,XC3dݯwi;u7~m&F|H.!Q! ѳVnPԦq:FX#&, ZڻAE!L6&&K,\N͇. Ħ8݄%<Oo!S(g2 CE -g鍫XOy޷e&gX|>Oin,Xy,[m܎ *,"!IK4P( +e|7#b~5[ !oY֨ǒuzIUk'.s16n} !XeMTƗ92P)1J(A 3#ۣ8t4{ƹ;lX=s9ϓf) C]"AYc=Z$:ImDkmVJXsOY:再̲lsk֍<h&4O?AAtY.4]{3%`^o1O@p|#e+L;i Fn&ucWgwSgijjT}}TJʕ ~& ~&ǥKcq`D(RDabrHeɵun-q}<Ч랻ٲu C/Cc-t|[Da 28Xd s^i R."˚Iu ˀ7EVKaveiޒݻ[UJd*Om %FUjnomVÞ5q=T1[l͹/dGoKV"7RʿY/Bai,]K Nwoisӄ7Qt}^\V{up'Ks7z^ +ȣʳOލ/a 0Jtv "92^&^6Xmh!jĽַg|ko7^}w܊Fw߇d2>Xl!я/^|W_y+W4P)!2V<>uZ}+Wvr Kѷp97\E qwGGϞW~믿3-8 Eu?OszAr=}~$ awO =\n~ϣP(WCz;/TE% ]d%L R)ΰiz9-UIAsSޜ9$,d 3$]ވԘvL;|L3mѵ.;-9v lQvHYxwՁ;Ц_%MkKEdO6Zսn[<ϫz{9!w2!Dw:ՍKՅ$undԒfSqA}Q>#m&NXs p77 7T* ,%fGfMZ~v =A.#Ycij$"FXe}r x,\T#2O"*~MdG+u./FR涻+cS&-ZJEE ^޻eETHAarKXlk7o8xc#tjbԉcfUVHia>l$)m9 !ב$v!ٝxm"q#bH -Z҅x"R|W>xHyK8pbnO_5j*ų4$5hgHlJ;H"ޤf:z6aONN)(iiR #Tn0" +cZ?> ]>8-!+׬{w\&crbC¹ HQB5+Vn:^xE ^ ӓ ]@@;j:4iQ1MYVPGzS0%Kz}uR" cI@&C{|3cCGϑ},ˣSOq9..!r0--LNEUB1:R "c2G:R_>Baђep09]~a S3#,[iny3.\gAUC/GqC͓VZ^k"/9Q{݂ިȚ,k]5M[6)m"B}^my3KU&&,30}ȕt$4!{(L&yQrMKs>ٹ*UELMMhA' F>F}sgbH# +If@\@>pn 3Sn|U6"LqqVX̱3|/go Qm, H2]Z@ZfZ⒥s+\;wﮇ H͟SۿP⨔bzj*kF:\5KX3O҅]_SAi q’ ӽmeӻsR^bKD9X?Od`xdXjM&Džg1[V=3*Dzu5 MW!%Xa3Sn*"֬#kԙscj| 6mdɲq5 q1^x/]佷ލ]4e =̤bekv–0h!c#N}Fym BJ(&H!MS4BRU͎oq)n}}l̊Wa:-ЁlشkWK/>yxLM pyF8cier|syf*U=<9,ӠaYa=Ã2`MxXf Qes9^{|~ A(?#JemLOO'Skekt]1w]+cwU/e #s2;l=1|ot;b xRzޒPUFvsB_}go|]B?:퓰D;QträV>X5 @-f&ؘ_{{[7PN*k|,ԫ;iGup}D_P e4.H\cU¬A)&'پ}+ (~Ƨ9DL LgXb WuHYn GDf d?> A72dhhѱQZZZsd:v\ܝsFIЦcIW`V;#u]E1,IxLXgr-: T;*xfl %vy.rkNl0VzhB_yY˱.+eEdɎ# t5r761veZރޅݛ&U8"](b2Lm3SgA'O͵PTiiiI[:_ff6Hd3ys``zEK_ƒ%˘ MQ~ Ã\ok/j˜TVYϗDS9ז3]3˄_ +:xXg7A{g'_җYh!!ttvL1dͺ5_ 2]sܵ=KT掻bdx;q}x20p˜\*{O[{9z4x+We-De+)%VHkK+$Opj$lKYlzeN?n^PO#—=p|/0n]O4"]b pu)/qb׺AsKlΰSB& 7DHD()pWn}k6MMu1!O˄Y"2wB+dWoX 5f+`[ICko^ش.Ҿ:zkK89?ˮ-k^kf[|.yNbq t/frLgG']ݽ\xn6yTJ&󺅤Z,̓O˲+- 3dÈ<2PUB"UG_KzSIfX%n$ Z,P6W6T$5#}-;v'LGK]Ͳ>Geɓ)iں4wR,S #fX0oήv.OS.wRA^@Ss+m 봷w1=9ɎwϞe֍y Dhmf֭ Q &e aH{fۿZ⟶=bVn$ -5kf]f.-\,3H8 ٙ-mI1kb`o2M+Ng /JX}߁>ƶI7ښ:M3̹-1"!_ĹsginicrDa Tea#)‹X(4i!#TKeN9~^Ha>W&>btKjxҗZ# zLrSyxt-,x=O~NO}S'N~Z]`8ߥ3/^ ;հBT0ixRH.qˢs}_:VZ gߡBzz: "8,[6o-sѱDV&ܤD*D3vϓu .dXާ?~|v1 Ozmw[\-Ш`G*~=ȺLB֔E.߄cc[)km**togezupvSQU*E/!tu&g6 h{v7-qv%;65y>1b%iꯣ+%Ee\/OtiֵσֵTYa縫Ww 7u5J&wNކHYA6黟s1 C6 (JuAiy]bDHgM؋&x dfw݇mjlH,c(t!t,I,H㬛w"C`V{|_UfeQJNT)-mAΎZXX)"ቬ\~ϗRR.MX񩥍؂b֠ ժn1xt-j16xurB^P: ߿#iikeXW^'Fv:055JSǏ{G/*^VOZKWeLVȷ0:>8[l}ٰ&zσ_z{} jxQ;JUsk)Fo6ϥvlC)b1} ߋϥu{^Tfz'sײcuդke yLU/[am,Ga"Vt98TA!--YKgγdb]B9ֳ~M}ʕ mʃRD1ڰ*"6v|)|0% .CZlJܦ uתBcdFsUTㇹBc\ gI Ӷhi1Qf°Z7:D6ibIq|oW5={n:J t^C!aIN އ:Wj=\!.knEnq. }~FC0bdd4a_4H ad:|.OKk c#utsahl&GRbtJ1GC&;uh"UELRd443ݢm 5p-^&+`)(hƉ'41S(M6lX011vf,v85A֗VN?wo)Lsy| 4#Ǧxѯ9:z8v667_w{nvq׮?$>xwz1":C$$܉W:VzN#\HW]?Ԗj=OlvQ'ʯ鞇"ٝjA}Lq;o˓Œ9DQ՞g9nX##rBȖ͛8s8BUkL/gZV\I"=9kbY:N^1^ 61Q/!Dnu:4:0F'w&cwp˪wW<: %0[^ZFi]e:gW)fPc[Z)/󥺂}Ck/pTڲ=kXbT@Jo,U8:`&q&2N)@Yf }ܙ_{yrY)0te EXtǎ)dR.s)7%7>6rL6LRsK34pDgR% sҋpXEb{Y1#DLVhAd2yP0ʾޭjB@ss A1gf5"vj0^a&y-aRHmCfG)E>(&]<2[l(In]-vQKjxBx~Oݶ๱xi×F+ (x'oZ4 U/P)=PtXJ}9鴴J!]mTDҩ:R1]j!]M+=>>A[{.r**SSՈVf&l32NSKaY e=T4i_PD3c2B+*ԹLna1}Ki4.w4,c_o-$*RTֶv--/xAkWU&g\xDf!9 &LiCڈ4է K$tD&7Pkl6g0/A !\VU>DP`ldhE$a,b"Ue%ܗo|mhYd)WYr Sk7n*,=Ξfz@S9tb,.[7As¾ޠkW#2aWC҈]<ҸDpUPIĮ~i#Y?)/B(1if&Ru哐}/u׮vY&;?rZ}%Wg nf~~h4...E ⽕,uƘVz׾]?~ް^tg($^ti& (ڮNbl6[.g'{VTۛk :;.}ǿ|MR5p -2>1J6HZM**ko̬zMP }C\" 3xVF Ml-TOz1ZKT$iP=uue׭馛"`m{yO>}q%/^⮽{HZugdp@Z{DTHO~#f&&&16DQ%دc!>OP(077OT1~kFyl|/< ~c/C^٧ D(!1oU椓uݩk"_v\DWެnQe8ӂ2+:[TLNY$ҴuZ&<,j]|4W%i!$5zzՐg/nhΞ=w֙6JYcMզnh6i35+ IDATDWELƊh׹$ JCnwn|v뢏:ƸSi6[K vN۷u r%0h(C XhZyqwŀΗJ6 ]uWzd$(x ! !r߁"wE/lj0wE~*%e]\a.KJh, q/}Io,c;s["@nn@xQ4MgA!F تNTNgΛQ[`x`ZkG$YjBvޡqξ$I-#ވq }(—vDKLRŤE(h$ lٲ}fjf|$O ,q{G9uZW^NνlݺoDڼ~0;=7,%A*J[4I-.N5_\{rw3Oмm>Gٰ~ sǞ[G>uZmgHqJXeH q[Dtb0J|[o3J;G%~$y)e%] 0A'uE|ke x7|lnA,GBt8*ĵȃY7^uBjAN4<8pmΜ=ͻvTL}Wݒlڸ'Xag_d5*͔w9޻"Q%"&MR 0voŔ(M "dr:ć0Py鯷>v%)q&cJRWx1y]=rT,sŽaC: rG͔FK8;{f,^__ЭP]w/3e)wAH!ocuE۔A-d{ڿ_IԲlXp>,bd#C7oB|~\"[Xa!Wjc$gzlE\8=U W"K pib0*0 J=͋Ě-LF4k kP&`CI? ./h4VR%V]͗7Jr̓  2;;Kk/'䭷G?{omfr2v{ﻛ+.~f&/1~<Μı\t eFEi{eY"ZFӷ8|krªul۾z0"F'ͱkNVS.E=v9,QʈZ˰rx;wPթя=}wsubOWh'Df K^Zo-`s_ӇhGejn$ʵ/iXܹT`k#;.p4SE2 I`qκuص{7JG/X=؋L\Z%bttWW[-3;5Enzt-RF,L] PR()J (̺I2ؑ*Gek[ǖhe>횲RNJRf/vl6T*QTow= Ug)6p9~lf8p/":5SѬ-yfٲ!鹼C8B!N^ޟI)MJ$If3[|MbNsNi[\wv^@^}͟;w'A.BۅAHucފ;SW>OX 2L6'&[7nCHSzV2:N )uI B\8YineU+D (qeeVJ"ʴ FP:hU?{r!星X3gY32̡ww~KMfy(Eo FHC9H;ݗN+Gh,,f{3{<8sN`Ǯ]4:" i x+O5uP%¨_gdFV?kXI>ͷazZ6J6.;pD^c w2> )¿FZy#oYfypGK~S S!VH K%|gZIL\hPoB [sEn߾+ADkΟ:æ-7qC$FKI'k v@I@eq!2Imq(#ugfJ)os,g@-@uȟL͙KR^3:`b[',i?KZk4A@__oWω[s{_BEaHf玼ȼpvr/ !|wsz_/ei J,-}HwƦhM lhB~5X2v'pyCRY"(L36 31;Й.6GNS Ht!OuJ %֬G?~=}7׀TAC@[E)"GGy}4Ǚsl\9`%\-+yNfq~\=w7dTZC`)q;VR"*%1&:n䏀O7+r4kH;h>YL~# [}{JJ9>AO)E\,j[c_6Q{\N֬$N|t+r>9h{B"+ۿ]E&{[S4s=$D7)dGdp~>3h{>.*KTKnG'Mi,^/,9q+7jr=?ȑtx_e"w_[z RpMA^Í8ڹbj5p형hR*s쥤یT/EDbxpShјL!:M0:% T)JQD(0RJ0 cYTa).2Z֯v \Fy7T&I|ӭTaW|eD629@v75Vx(rʹ~;??<!cz~ڑs8wI.'-_nWz6ʳ]CkbEuhWvgO*(ݣ(e7NVq@>*Ύ\0ި!"T]*U._8E CT.30Nj*fk`aaիGA:31Jߏ*"}zVQv띨|ݏ`6`aB5ЫD7 >vop1Dksf8uV;^o|-}9ۍX!$KLEF {rꙟLl$qL`824"jK!#a=CoƘ0XE߹lp'T*sTMn28lB?}gffO8G9t%N~6"Z;87rT*~ErDC)K] Cv`Zi4/"`0j&T*񢅤Mg҇ R* ֝]&>Bml RB&AXrO<=OL Z RM)0??b2Twzj L~qU<#46nTcݪUKXA;eY>O|$I9v$ǏFTD {;jf'ra{slyD<Ǚy9y^x9ZE.=ţ{s/hSiRtV\7&L.#BkTc4͗]縭uQy;yGB"-Woo\0C.k\ʎݎ5&鷑ayBBfBbh64amE>3<0HH/-24,׮Bey_ &2mOXJZ&S2 NvظdHWdœK_7XXg`` gJ|fct %Rv^s+;w?*."v3F'Iz)f39n.%Q W+:o7%uB۬t'6fGrpA% Put oq>o㷜;-v+C5+R&+tDQDOOJ%ϱ!{1I)T*A>Ñ׊3| tn2Z,5B4(7|~c +*Taj6b͚5L\J aq-IZ& fLISdX$w IHDuHJĔi*Z hQ zE~Pcf@DxӌIu?_ #l[66F&IƦwTKPum( iNJ^ <_85ͥ By+g7hԦ9q}~P*9|S'NP LP4J28<^kh4WQ-zl?j0;o3gr=2aPf4?_  b&@ ə -$S,An[R5_e\zAi"Y(Ep6q~qˇ(Yn9 U.^փ I*! ɏn~ ߺ5"3!13'O+?6:sPXضf1&n%,$*=}HpyWf݆N0A` 6fq$i\#Hbֻ$Ir$HTtk_122 \ϊ1W:Df=AصVՕ;?,..c}4'c4CJTOj_A.!; v֞!cƘOݗ3"/0{0s)A)oaMe[SD+^/rD5CAYs(xA6FwO+!|ߢf?BOcD1 lذǏrp%v%CZ6ΟRhԛ`LZdiaTf$s${ìMij$PSԌjMkn=y{Ij!jw-4{WNn[6n8R#HH$|s޻`muv~p)._w"cHãO~f2>9E A"H@40o'<ԕ:zU.Ξ=˖y׹{vfΜ=?XlaxWAEFr}U.]eaZIPF\8NX8?Gn2K\ܹH%_FAÈ ."#u||PHk>%a_3_d9-kG' ƭ{si(#aNNpF} !(ynG؍pT*fȴ;^Shw~R!^{%#ΡȊ)۽.ϹmT}!%t1uND`~4n\nsЙŘx8xqEkG;ήs/m꙳WJ=,$+XǏ2z3 (299A61UFGÒ@'s< Hbnd-2ȤLQb5"ذͻe#A;D?1Cy SAO&RRi;\OG?5~.]Wכ}8~^~en (4\<Gp1th%1(`׎ri|-#Ybmw/ ֬¾;c,,ΣUv۝+۳lڼg?jL_E'm%l6i#0؂(͎qD2/7EF8m/_;\"&OeљBڪd$q"lXŅܺs;_Wm<+}C{ rߙAtuˠ7 rc #>puMdK1ݶIo$Y~-oEj/OrӦ1j-8Wɋ"C꫖i74[mGFD~*)QBXN(i)*$x cMm0Eg'6vי][Y;\7]DJ_*vAhCߴuN_fej=${q֬XQ.]N oΝS|5^}YJ(ؐI 23iYR1"ۼ$[܈a˵ 睲 KTD} !J~0154/qlew?gNcdd I+6;C),&;+XAdj'q["}3.s,vٴ<ˬ˴ȇ1iI!)F b+>˃xA.N۬Z ӔF:M_s ?CD=!&rM)i/ĚCJm'y߱qtJ Midn/=7Kluݞmb)Ǐve븃.nw7K}TBs#m[ٝ^^_)٥V$iJu ˿(I p?uk}hILV_H}|>0MO?.2owѬŸ8u$sH-E-}L%Q|f'h~gX/6'/PЎ a'&1(̝N>%38UbJHRŒQD k4ٲ|0BR&5`@Ә/")ϳבQLKMDol&!6hdžcY902>>-7E%**=ՐJEu&{L]>˕8r}J|^Hl?3H _b}?{[͹qSg|Wqe[_V& @%"`2nYEЧٸH\]UB"F{ ˻ڃ~]vk, TT FG)Gek h źk灏s/SorwR^K>c}#̿I\.@ECuvJG ;Fq#BT 8ݺ]So5cڭwoDFT"JB$I̺ukz"aA֭HT*rpZ2\ CJ"t+cӬך2KyJߠo1#O>'Y՚LD.(!1$JsHa[aG?FĆ2E6oO03u;\'%FΈBu@j=2<4@QS7ay^zg V8{04w;sW RY|)"u0% !eyDD6+%R2;/UHqn"2?dCjFev#",RYT AT S,Ƀ<ė8|LHRֽjҋ$n58Y}/⭷ch!De4Ln2B5 -oZ2Zy*bD2"t6} hJ^z9 xeTC'"NDJ K٢\ܲs7I: IV+ X椩ɼQoݵ+In-wk;r~[s,ܾvڭ(ꀫC~`;Ni|N/<4Mjw#L_d~>0vQݰPx]ѭVE/BӐ \stoBE՗Rtj 9>O/[g?ycIӴ`,)z"(Et΍;BE!W'5B)frwY~'_I458EʐjsXY>w&K.:gr}^"z z ivccDbtJ*R(%hd"C쾅 OsaxegϞ!B͟qʦ7cp}|я2\tzƉ3ǹ#05<3ڵVɏLN\W_ԩӨͻ^?ɤ4BЙQ q 6DŽZ1A Ʀn <^t a,.WLH E&5T\jBG,})_$y}~Jdvz[fll5/<4G/i$ mBaHR}U{w͍̅|.[~DuYr{ZtIqq8[JAHqen~֭_IjחfFHp9Vl[)!6lذb ƤyG. I=UVi Q>W \.wȖ:DtiZ\3;e~#.vqj5i6(e|B o\'חfsssÝ|&]Vk=ԯƙ4M:Z~$+FKܘKҴr(%'h;>G~/v)UН-gIB֚T|[)d"#:t[ lh2%`0NF4&fnvLJhDsy3xhcLgR!Mes6hkN2p8˧>4}i ] iBKzY#9^jlٸi{E7xqIJI3i&HRXfS|+^¾{л1yvɪ.=ˎ9;35=ŕY\\DH<)BFXKW|"i1Vi@! ٶf>{GOfvv+ID.2`N^^̽ kT^Ka%'>KsY/20?ix}v={?'k/3M2p%MjBaH&S3߼A.\eƵHӄ+9t8QXֵNVh5괓RE!,iP--yVA+;zCknRn[(2p˦x~}JMZncca~a)&'&iZy+U~V:B k$hɸM2BOOv3A_-֗]R+].Vp{}Q'N^o%/`ܜs77.g4 k}F1y,y^'26j(Pa&'  R)I:=L%.]@neNT6~Vb2)Q ͺX$$AfPGA"$!1* @ cM5)2c@q1|5^{UfgeRNB XxѷbJLNN|$9hjvΟ? ?GUg~afaui.hU[dnw#p ۓFSIyEQctt-?_}nVg;ytL':ѫ s| *X"68D( k-(nħ>6o̥K֗?3Or){vv~'پk֭oBgxg8z0iA)H4i)Zsn-7 u_l*U ђiO'6mZol$l)H JjA)DIA3N#bp[.[-0@BI 4uVӊZ3M|8n0c#w֩{^f$0 mk}SGLBů1nmOE8w0ǽ6*2jnk4CZS.\SX\bE?C+裏Z]Bv#Ke}mw~3h4r|cmwu~n:_¦N%>QAOp& vY֌k'ظy vy:n\⸅r;E HRJM IOHZfGϵ69ahAqRI"@Ϫᕴ1 68\xsjuMަha0:!ڂ$̛>?* dzHou料,{:~7nua &Fz{{sGĸm  26*ok8zܺ,A}5! I4F%ԑ 6#m$cN:kϋL7q(IfffB|~ Y#yil.nReW2W9vn,3-ǃ 9o:I^29/voonA? ? Z뿕iFf(| ѝy{C׹~ѻ.gE1~ ?ⱹ9MmX.xo% PK#q%@/[}~,4SziFcrj,6b( y.%dEH,B+Qh\NZҪAwO195C_-n{7{nǡݼ {[S8r}LIu϶ɬNer]94°fex3*CXn3/ QdxL62Z^@4]x_^J afn}y5Eߊ~fP #?~4M֬%MZؾm gN$TR)BMc3JD&s|nчد^EH{j!LZFѠ\.S͒ȤytGyIvTTЅPk\^4$sM ixy6$IL٠nj'CC+\m(BP2ƈ"5]"4@-ђ%WiC..Ї])9?.Η~8OZp'j5 R 1C2dz\?[q芻#94[.}v#mT7_sSy=֬% CÃ\Z5>M oɛ^nDF![0Zޒ Y5n8:0zW0ȀQvzãx橧́䑏}]n~, U&BTȊ-Ahu:MfE{ CN »E(ٔ )P-L _WJ`BI~z/ryn۳ `Ux "Ф2$' IDAT_%4w>:ɲ$Vd}ƆxGټiO=c^?2(GelA}Mf'J޽fsbf*?Iq AIvD,un:_~1ˍr kƷ1KDr 3 9u|^z/|᫬Z5Rkqt !2VlMФ)$a !$rgyWٽk׍pJ=qJTV]GsDsEJ2EFmx@I8&MR 4jaQnLhgnF*F/Y{I+8edd8_oY|d& V8V,\ZtƈFuw.qnl6sljm מbnQl5j4 1REy$qnA8ݑ}m)*y;"ɬHXnwK)~]$]7Ltx_.hƗ;"߷M}^wH|(Z]Hq֮ĸ0|ߢПTMB859B=icLLMJMrV'P@31FKJ "&+*8]mA]Y7)U(f'z7maÆ\xk7[㎻XzgNc+†)VugWz;TUD 0@d A $$A%7isdYkhW$K]Yj Z.2!0A䙞sSt̀2!L#2[iBiFmhcÆ ?* I͛7Y~6lɟuf^]{y{h++^ ~1Vo\k;w x8z$B PH2X-ZHgg73zf/M#N`˖k$qL#s8u}-YF)Ĺ~{hԲ 2<0C8krA3v!mDB֊;c4koʦ;zD%ɑ2F[A)6"?IRϑ-A(YfVem̹ig_ ZzjQ/_D:N{$t8eщNb,_CI%ٕ`aMJ**Ղ;;YԈSLpJӔJb/[VƐ Pn<@ m{eN}+Idӹ} .}Mv&q605ɜx>pkNի%iko\3]-h5i4~BB~6c̗B /ֹ:Yϗb aZRX~}/W$3w->ԯ _ I&Jmf&KRҨe'b6F9kz8MPZoΑıd֖VH$K_+!d۔i7\W_wmJT*j5n_sϽۉk虉R_}3rA3brmZ🾋)^oq|`;wZKs}skCq0gnサ-E(SkZ ZtQLXi?,0̻2}1FSW;r֔g|nB}|B2NWWw~6 y-W7D8y׆^oF!rA::c֬>]atxK0$i=0aX2=mP͇{`҄7ldxJwy`lI@Hh5@d,GVȧbRM>BDֱM `2=Úwxzgs}ҋ/qm\oeFOo>w߳8o6O]ˌS.GgETL~fX!%@׻i6o??2Qg=9zd?V? V/g[Agyoϻ%E~jߙ?~&t#]6!:Z>5 3pmzi}}9{R$J̝7GޣiaD$NK\>Ikŵ̯sNZ/1s'"L TN h4uq^ěAjiIRt^S#E=[GRJ$I%g?<<ɓXN3>:ɿM6r){aJmm,[??epqӎ@ |3J Yv|+ko`zp/yA;7g<љ )Ґdv!|{9}Nŕi!mD|/]ŋFeܼ}{7屏}>~=r4)e ֯}{P6/\ę'S JQv5.1)Vn,#q /<"XvHq֍;;Ybɵq d}L2w:[-)F$l`]Ϣl+EezvZ[)zBQL'O|yѻswv,$uBMBjlۙg*\I|bq4CUPA_V$h,qByroX"޼]|ZkOE?Q F_ѷ}s{=E#QS$bY7{X,BH"^HpYr?7q ܟu%HK-95BF:ҕ44u/[¥gFEhB4:yJP=3LQT68+odej458/'IcT ˴7FȬ MV1Mcmg}B!E J~+<7q)Ɔ eq:~Is=]wof[ڱ .1?~ծ & lX @0Hn[u}}sUƷ)3zxzÜ=}a^][6sM[a{_9 vkPAvgrct\M鿮F.A7ujF[y3_{{=O'x[ž7wPM 0!Ae ?z8y'OZ@B Ya=-7ݻѤ:ɘ #Ef$ HYlrQ8K, .`&kHY#RQѤJm)3Z)BMp9X _Bh-?Y5Xtl6Μ&m~9bGR#;gCGJi*IVanZFѠmZKr}әnO9=FFOTj:iPq366F{{{w76Rl|!0Ɨ]qy)zˇ>hT^k|r΅M\"p^(Yiaxtr!ݝݴ$:3:6ʌ}\fVo/d*`:(J9N 5VkLr2rɠLO-du#SԙSVEx!&U$V+|[Wob-~J^۱ `td˚ynX˫wKWճ/p\p:ӡ4$˚;Ā "T6 _җvì]?0H m;s:t122LNNp%8FI q-m凗}گNNoy^O!o׻7w q}uze+z,ݶy rǦM9tU½۶14kSij˥uˤJڜSi}Qkh1{+*950GN;l:8Ŗ4m $ UZ(˸wɎ!5%<.o -̻ ?gu;59)MF7s}:"d#=`JE#yo܌ߐE8tWw0I123Z1ZmN.\@WO/#{fѨW9{x) 3ɠl4pRd HI9H"%U6Ceq IV3'MF'ETkD&$I!xws[0Qda"{54hvx Bk1&I30IP-q|O<#^.}CٟW#}w^Ŗ7(k/JuǏq!I)|cLHU05^>,~*NS'9+nH,LlUmM2:2JޠVKXx!Vϟ_6'Dr9%8~-0>ۇݹCRdQ.ý%aQH{eu|tOIqSJ1>^fji xT*>kMץ$I\H}od+.ѿhh6̢{F:-a 8C,~Ӛ;‘=G1(ճx6QgRk2ͻa$'aӱIJ,ԨP[J:̙6j*]qJo\6:q* h$ I -|/$RJT)|wr4-NbJSthٚ nVsYf->ܑ8ιTuicR)rv :$̦i]e~ *JQ^#3Ѕŧa(7Cnk0 ]&4>Se_M5IBNtloUC-R&4:iN Gr#YI1dOLMb𓆜9OC@"\ 81RkAٜ>Ko.ڥR\6Α N)(mtvNMJ RQLRh@fk&,8 Fxe^{uɿ̚7#'~̑c'FH+W$M=zy}Ú\Çj>d?x|4.aϫTn*Em,x˔;{ٴy+CC?w,y9K 8r d2?ݯ^.÷A(igA`04l(.ڐaքJ#V8;묮d6MAM>GMl+qyV\FWO@ BǪDTm3еqvkO BJDg+8A#I 4$qXs;M5#̜9v$IBRia6r!-auR?a [ʨnqv f5tksvgȡ$ރib~GN%9С=4ci_?MX泏NBHᳯݞM> _4<]|(5s |xьN!fP 9DWԐ;RBqjl  k\l /ƿ'rNB&lm>}xMQ> hHZ1>QAFj"̙G;QfQWptƤ{Ewl?,}۷ۜ8N?%7hl(\#15UY^Y1aHv@ i!Bp6o#b͚u[xwX| 33{s^`xFcg"]9* SP!%I,?Lt4 OT—A~Q^EndSfIR|4Y}ܱi=AìXj•sC qfιAJTGE'ٴIMs8$aPiR)T[ uj5+x+P7<wQ ;]џTF{1^)6 IDATգcgNֈGL=&^@/ӰE#REt谏7 ʜl5d2ߢ"ɟx,ЅX7-֫E|:d@qa z9j} Y8-Y&Z@Jk)i[>ZdCv6k!$z=#nZ@#5uVN! :i`LF"/玳kDfTunF2?k}|R)F"!3Zlj-ֆ45aqH  pGcFg;/=lz^qa.ziSxs]3""Rmy%G0iEK507doϼnG?֯}FJa+0 -s i!"4ˬ/Dh;ԔJNsQR{!X 52?6(rJvdxb6#Rf+ H)2W8"mV+IʥL-LqZxg*diWZjShQM@ !3qkjn9Dگ*hj}G7}nYO 2,r8"$ja֥/|6!gW^T*S.Z>OcV4 'B1̑hA0naLfuMH LGV4(KJΛXg[PǪPHXD'_[$v i'KoeFliJgw##L4j-]I"Uȥi4&< }jcw#0)]j&4zBJEFA#2m(Yc#D(]W G^q%{?uXp=3۹{]ų:~wz> 4%TƬ2@ ݨVO#,SHhe5kST2o&ܲёA֬=4G_<ͩ9w4W_1YRPO%Q_Ըf m΄!d>F.F=)FE$$T))2R)df_>k׭ܩ$pfdfLy-'yݷyy͗xwLӧ~㧑"TBfWiHu$S6a:({3enX֯Zt&C9R CUVVCCܲb1΅KYd)BE\HKBX;pd H։RdsA`U EU*p|y@w⛌(Wj'_9kE6mU\u\,BR4Gƅktois0Q)}Gl?ح\E-F.>#xawŕRttt|7&|ou{ٯڲ4$D=teZcxxvTJ! Ι̚}:M8u(*eFg>UJQKV[oE qozmܼ| <" O >|Zu!tnQόӖq׈H/ZHGοyIyEŵ䍮֩ƃpCDi4ܽesg佷r:9v40QeѢ_R!Tvqɒ:R*B0JR &AV]mt uMX!=(ZousbSٞ>KJff\QRw~\Ň~\ ΌuI;rөKLE(Pe VI/u:07M:L49=\|>?_ԁ܃9qQ@{ZhHH.^aقwtb+-L7wRF(4Bki磷v&8$hY( & f t6uRFP2lV%q<ШDQI:*6mgf7Q{?1/>2 Ŋ7si~sgٽeoG_$WB#EbGX T%H1~5I /b۽<ٴvm6y9/~a?Gt~t"O"O QٵؕD JzbMCos n]$9\.{i^ܭ!&)Ҥf gCfr|h?xpb>xuq>x wD(͎ݯ3)2S%H3<Ҙ8XV rNxt-|̾ H"qfu4VΞ=v7ogF7]f%,Z8sF\bM z܁NYLIIRR(d$!)ЁpȎ6)BK\OW}[5q-5v𵃣xlט:(T2)akܮOv;C+IS$hw-2bSR2e~d\gZ->"+B9 ]3 }FaշDa/$O5s$ hMJsAs'tkWYKɱ3CZ;6닫' :{f(I)i ,:A[ZQ"\Ĩ=D!(lr,,4KAv ?P2 FQ $Jl"RJ5at! Hd<|>K[C'm-lTGc93fw{NFkܾV? [mc>~ٵc7g\ m40ۧ&le|c a c]UBo>U [ӧ1pW3^gZI^u= N!51V฼7)2MĶUX$hd{ܸ#9ӓ$n=]y19 #&nɴ ,NR/|r}{u`Q؎Ncz5oJV̙3hg;2ϞpJ )QX5utȋ"_| ͉\ܻ"_N#77ԋi4Y3e-B┞l{#*9|$ݶK)bɲ\rar @&I@ B% ET@[z_aʚh3%j׆hVLIsORLt{+a$Z&J *L F :4 lt'_Wd+8qwO|7.?;wdժ8w48oձ1d$:ҥKw/XINbN^#Ȑ@EEm?;wɄ/<زe;Ib٭tu1ou$IFAnBff5h:|-q=Wsyֳ[y|xM@Kn)ɈnXP6oM qΟMoO7gO] "P@Hd&4ڼkj&c0c FniwONg_U)ϛ4čF4rWHdW^ϡ={|\.3׽_wTR(E܈[yf/i_h־ߘ"/ޢǽqgNg>u:.뎚 AӃd|ȁG_*z荱;ߢNZfoJJ-k8Z)[K.q0\ *BR #f̽i>._cV\$Ǐ'P6X@6Q m1hjX{.s%%Q RtG Ibt$zB+Μ[#IΝ}CF?(;w k׭>9(֭rb._ / ]!=i4&fvfz4QO1* A"Pkm ٴi LTbM|;xe6l\w۔B M/ܙH%T H~D_FX43#q`?+8 ޼~>cctXx/ o69}kC\>?0=3شe 3wl\@e~/9r8O#m&Tעt©En%avRy8JQPLs?I!)!m:X 0L7 j-FPMO, sfqyhۻ:0KC\c6Afꥣi; HNPr0Y Hb)4@ hmԢYTV-r i\0y}WЕ*Aa*SKUn^[7v*|яʷF\Oػgooc۾o7*噟?M a #<):% "H0},[r !<̖m3xudlѣYa}]<؃W_KK$! a]:&?A _Ze]*3IVx]xӖ(' ggKic;eH4I@P棟ŷ,_8f ywiLL#"R$mQ"TͦiLz:)F)! TnL6ho/Yi[QVrc j5s||%-+P5Q9&&&]YWvi/_-k6\AkH,iiPJ4;o sѴ 6Sꖔ62Z"Zo +N]{]T'9s;w^9EUGLE{Ǵ23R 7i逄;:+YE5 [:_8V{3 45&Q8H&,\Ȟb~w]TD!xq.XKC̞}˖/Y4j1IZ)qF#л40$RS!AD"!.&L(WF$hJ6.~.:I[/]>å λyu^֭^KOW?瓿Iz{f11>39o6# (R$fl6~Adx$@ d,\>=zfr #LTƉ/20p飤&e||@Y m30%Tfq6bo}nujl2{l/?|p㉲H4Dc%6}7ﺏgNoA~'|_/ri'˖gIO~C~StREA6qnj^GoyB0euhUbZЎm>4~띝 ͉ߴ $BMþ e0:&1iC'8{7}r-Y;w bx3iT&&SNPB\ }o֏ܠi/dl(izqerW5B9|}+'ugܨT"ϟ ή.KESh9:HIuRFaؠ-o;j”.5Twi贵My"BJtlA.sb>dCFV(ܟN Us ٗSuେt7da8BfVDmx(@D,y8 iΎ^yיPuT%˗s#)֬q\l:0hbR ZELF*A 0!tQ5k)-]Go%~J{ -YB0WFQ eSJa8cܻ^ftus)|p;w'8v$ʈ,gsu JV.Gvʕ3:2ȡC˪o3<ü/Xl)W.WygB311Q6K !i}A뤙D,·B(k$n7/ZX׭+1 1w%twu:15[﹇:C/cc<5m/΂E7qÝ,X4Sg/D2"w g4"w; Ԯ=\]fMnAwՄ`0Mݟ.x%w 'l5Խ_G4ښiym[q,[+ql?)јwJ]ـ䆣D U@=N+$IL) i+v910"jzK]C|C1_g<[=Q~q/yeolZ|Ty>Yn|},BuT{V̿&[_|67R37_@|' -T"4OElME'8-+)KΑ20y#>L4?P݋nEқr 'kvbݜ| M2 #KmK4ɬ4s-VOYi3&Pm۶r3kVgy=ݻÇdi[LfF%Una5i5qP0(mMb^(k3͛Wfr9ZUݳD7jqP.GY4jJ:iMjuM BKJ299Iv,$#ekMo:H!3XSq)vZc:m0PըT*y[Rabb"_姉hKwJ1ISYR<;RпŏBoh{l=buR{߁(HӤ'{wh~yDW}l)CDR>=Ţ.?Xtޚ$9V;t|Nb [l}fZmu'KG3F6J;) ׮= f ((40j4JQTҖ6)h<)G>Cz띌jd4@Ŕ_%J!*1,hVߤ %׌3y̨~[S{עD, *NCΝT);i>ڊ(s.6MrVJ1M[ w BTfWv`W\w3 ݟ4eOluNEbQ4fô@&{ ڏ+|Xg~C-,!2in )[MSygOcH%i":c 3Wp|9R@2DқYz-:zPzf$ d-$*rlP$;O/PJ+s)̝=[V,cǮ}K哏ysxFp.gMrbkr=j 3;,5A@T.11YVoc&*:g~]$.kg6̝wAl  &C67krW^[ZY"K7ƚUi>E $;*ȦlHKvqJ6:_/H̚N:!kګot<} nYw+n_ξ}'qD:B.C 0B)5PRZ$(wKKީ C(:;Lnb]kD[V'W(R՝Vdn6Ͻ8'YcR+l_50EZW[>xW8ɹ(h]3iS ~>gRK}(hGex|;ϽUBG4b#g` &Q$KTlycygwg9sv򌽻3;;>kYǢe6e[)R "@9XUn[կޥ(Bz}v!tl͸Qe&kܢ"r}]͠ tKt-A浘LukUHlo60y Z1hk׬d`,==TkMt_سb8 2(ĚbS.;g[pP"42Q|,̯);N9Ig4yϽzCO h1gNфIeP L2HbjJ,[~Ӝ>snhτS'!5twvyf6mG9u0×//2;WK #ֶ繼^` S<G3==|~Ξ'Ƹw烜xWLI۬l ^;}:ˬEqX&!:]% nQyHh&uڳN*͖pI_si҅}h;7JtBzAѱInV_$3X3BkF&lVӤFa' 3/ZyTBz"8"<(GqвݡҜ,*JQ23*m pt?H]wf$ 9{P&uP}A6k֮b[GWtii1K`b|E rer޾E]˗.טV JEPVc F>Jh/ A_-TxnUbR8rcгz \ac2u%\/7]wI%G?ƚ(=~ |qB&Fذa-#͐@F?ro  \#lbS||uDO'v$+aElsN `b];cqmw?IS\+? r cVyMttoʼyX0;wǺի9w$Ri_`| :.dI}v*I5Baެ[՞>]E~̍S&<5c,}]uX xGē>LTx׹p:~n[+8src&&Xn=ScCṭ^UO8EfW#JG)mPz6MJe z= O8$۲-8gѣ0mB]SPg k niNc P!3reû|7Cĭ/y>URh7 FAwwwfd2vn;%$ٿ!$صӲ my@F!>h44DvKyStm'\ZŅl#%"H YJtwuR|TMJ>ì_^xU W0=po`xBI5 ݽDB<B/qBD( $!_)hiU]G (Ez_Gijfx f؜HBYǔJ%oZG֤:S8Z;tip?]==|3䯾mkW-YP Q#o (LQn>[X@&,3s_,ݟu5vuWFº¹(˖7Akj=jJy<ygRݸ ;kjjrɠ- ĹpR)v xx%֪y?7ݕƔ@8O"ElFnwFR%{. ׸/,`|3([D5#S#fMVLat=-oAUbAʔ*)&:l%BOGLBF$J ďHbAL0x=7ȁ Fo({ @$g%Y|xx?y)v>a=wLzp%R*Ӽxi&yqTсavw$@'D$ xt]P"3>"+,g۶>to022[~cO߿C8rիPc12t~Dc'ZώLR"M~VΟ 믿͛g\8 76;*XzN{|Umjޫf_'rר]_KPwQ“ QCxo7l_!M.p&G'Yx)CO"D:6aaDE1ad q\ }DŽF=j iT%466RdYSڢW"LQH-ӻ+'än`Vֺ;X*쿻lDk}i)>K)iGXs5.[,dsrsBMJ<ݽ}mN%eqơ]LƘߤ$4ۛ pɡv^=`~67 Y344Doo)drW7Ϟe^|F'&P!K,"j6Tttu3YiP(u2!**Α#G9sv3o~rzg_0lk/348IezFmb쪓}*2<3{HH' Zl"{aN;5kġY:;|ϸnzx=G~/7oLMMzr=Γ$c#9{F3lڑP ՛IlD,_˖3<:ɶO|cGOeԫJ]<ȁ{*زv'/ç3>~M#Ь>^j2Lĭ:nnmw*ՎW3#^D?/.?hr727F2 V-4 oPIlݾ%r/亮 N،Ot L$_*QFtt&?ClVfZ,Nz$[2\srdYqj*}LweBR /[!/2=ųLRڧ\(#e(d5gzDXTDK_ULE[0⯯bE+昆[MN/ $ Ebe{vJ{S9KdU "E:,96^/Rg^ݺ[^ߏ9be=vOT`͚Lh{{@[F?hH #&'XsSkMfYo2nT /9]З?Bfrٳg`rQvey$- N*EfawhcX,[7w>jCO~hBk݈ȷo&\صsh*:ݽ703D*.t&fݽtҾF)OkGQDY+X{^X|RX,:0-w-_(k=] YA֬Y*1i®2T5zz{eLVkϛOow/3ՙLQtE%ZFx22p r܅j4ї(OMPj<01$>jNKQMsLNuof 1B Mq% u%O6{bnU_ | ( Z)};7xx卷y^?ox_ IDATrn}H*/pQz{4C%ZGHOwB9t'y ‰' lظ/W<ȝ[vo }{?0Os~|5odC tSiUՆWDQ6'*瞴5 XShh~6%X IltEf_nȞށWK~a/$?ƪ^VQ[|vFt2x~kVг `|rRg2:hT&d DzYaFf&RXK؝wgL0XGOH-xŢ."vs|6u&k1 q`rs0lJ)ҥ—?N!=tX~yjZ[y^΋˕NZNvy5)?dq2t\._|S޴h;>wR6C|* i!+󌿺d.joo^{MBLU,[ΰ*3٤+`5G&Xx+\|qMg:~E,4"Z44tGJql  tէTR!J%0p@2TBY.(Jr1&'GL&qC3U&ب?U EL/(}Z HTRBKJ A|S7x+Ϝx79yغN͎{c;{9tmw4į_8<ԲiƗۣAu5|\UQwG%+?:#q z{ ׯ[7\,{ +ׯ 5/^cjƪի )@MJf֢&(kBѸ%۶PÐ-ܖ͌ foH)U%e圸ki~sS|͙.Wⵓ܁3#vk. [)uEksBxBk]QJ-'SL-5o jHXWkzJ͓##%snFPIسݣR1ńᦞ噈H H2E麟3D?7 d+kͨ6WKb^D**jCgg'rQ"b||%k ? ;Xz^6Oca<eDhIvj #X $͎\hK\VzJsLr"sasL*XM Ixm2gBR]s871鶒$w!6RE;o7w;DJ%ݵ~i- FGF=9vׯ^=V^ũS8rAQDc' ymAi.,+ Xb)je+YdjDH I:;ظ9Cy7vv|??>oE_051D;rX}[!C:-wF'Akfk;e`}f ZWbkmu%3kq:( >(J#hAe,^E&S^{ff &Ғ^_@k8uUk<ފ"MA<"M =Gqt]5^g`;u|Hi`P(޴[ QpF1qz Xdۤz4 g<iwg΍^Z_QJ]r\;ֹ 0=u`$N`7;[v7wwa4Fal@Q:Dc ^!9,X`>\e<]~ݸ>mrl!ZXk~c߿Y sdSdJxӾ;%yD\xqQ--(yq%PQgU_p]4$ki)):)f~ k#VJ_g=;E3;F@)q8Yu֥:2L+IY*H2^?v>3Gʀ_9?~YfZRy|9_5#' UΝ9Éc'2yf_lNNCE IاDgw#|;/~+414={-;o&QΞ7_\8?9^˱KͲMS33\%d5B Z6.񮵊y\"skMזεCJ/$O$^B#wcGs;Xl!#Ǹ\G\4ĒT7+Hø6g`wWqA) V˗/e~oQ*]cC/mO^o QBfxMLV-lу<:]fVianʌIќ߶(Kq1ek'˛iv aCZU!_h!53o8TFgeRZ!}Ϥ-HeHdwe*YzÅM,xkJc*y]ym߫@L ##\v{އ*()`~O/,O,]SUz,bf"Ci'l= \顴OXNe&S&6E:TPfک94!)B'.8!tFniB,Zk6!+JE(<* QJ\4=ǭw<Nexdje 6sD]<7&ϟ|CQNHL^1D +V,gOL _Wqۖ;I2ꕫx{zM{t7wʛ+x+ iYZ)=aYH=?nƷbnW];;15I۵d6G!rUޟZk!36ØGkz;;(u9uW-TH!c-^(R0"B|5]]HD$N8 *ssLA t׽n,5@o6%+Nuv뢸*6 zַnw ӄ M uCE89ݼZyo}g.CDQt[n-H.Nþg EJc/:/aYRJsk*+ ^:պύIuYg9vf6"ɬUJQ,қ6-&d6rwْCrg;E/1R <ߣZO?#G/T V^͑clN_c2ZGM}qpvC܁VdqQ;9aurĴha,\̌m64-4F{SetӸ"aŹ<_/"vb"~qpas7r'o6"ǎ`ܹ<' /Ѩ!l4|X+c-cPFi6#0ߡ_C 33;q츏)~kl\˗K/{8n*iF!&G2FKŋ\88= Vz&DEnk*{7kR{~oJ^k4ѳiVu'A!լkNtvXt!GU'Ъ@P(^"(D˵n Ðznb )$Fj)9jK/u'si1 HKLO ;!ZJ9w ~Uk}su=>vKe.E&%uo&ٛ~ҝ#xK9pS-g#N2ڻph%le.=Y˪w#׬$\nnc #ʬX jJ-ff\F*w 28qÌU:YP('I:ApX{Gp *a#aUʦǗX8ܺ_H$%i* BLʭ4-?n\ɽ}}l޼ǖ;oȡw9w2|`ys4 ^}m7?Otqߓf nHLxz& l#vzWgRI|?(r߽;|Jn6: Ο&J\EcӚrɜ)l,\n*^įfwu4, /е { ɞQz/q|SJ]Ax&a`tH-9y]3xaV251IG%4Ld*0JIxJ+ZJJR(r Lvh4h4mgkE 6. -Zא N '^IaZlhu1̺<ζDos62)SN_uJ\F{úᖱv vb5L&frGCVkICTV&ΰ v..ws\ ΍cͲYvb.K <\ 'n˾Gwtnzrtvu{ e S+]r؉:;8bbr+<}U+o0y_Ӈn)$ E^V2nm,q-Z;hK@7٨LQE6yslNy -ROIP%|bYrW?= LNMh6vv/YGMWz㭿zߗ(!_T  qht‰V=V\ͧ?yu%>/s x#~[Q*G@Caf~g?}С# AGYv:/[4PlKg>W C 5s#=m.MΗLn\ڻ]m!4ZDQ3!z(; 1_OʃϪՋqYnSӄZ҂]ZG QHLSfQhDȜEJ IF˝JI.颕$g aVѬ,u9* |Αvgmz4OwO Оsg~Ϯ1뮍f2RX>(-PJя>Ys]$C|ki6ݰ5kKӈwI/ w+/ݯa 7Tbʨ\! cA <Xb5{DQO_qS3590:B 3!=&24[Ƥ3E⳥\^vo_`VHsD AN]5W˽8tw3 .$dr5qq!~gZ&VQMAx4"}ܱEsS*up PjEK0ёAn"ƄQ'B&;uPq ɽ|yB TJ%0FY=iZ)^Ւ>hsgiMwJ)m$L֟Vmi>J)'#褐ӏ*R -`/N;VRk>7f}yi5;)zK.\v{w䰋 Eƪ $_`jzb鲥9{N,Y̕LONH)zF}ʨbAƉ%6RTP (佪EYCZgGZ)0BI#S3(N{.%hR-%)LFa;ns1#SqFNlݴ,Ld8.6=wOF3;0 JBa CT*\fҥ|F_eϾ:?wſL?"d|lp^|ғMQds+?vIB !TH4м)6+Ugq v B ^KO nu+:bs^}}/2D>]rN@ /ɞu10ɳ۳kVnN:òYa=/Kɩq63E˘D3G]ъdpcM3 i!ϗFezBP@`Wtl4LI.W1c`70۬s[@+[5i0Dql+U[{r+[kJ); חSA \- AS IDAT0 qwS`Jk׬I'G[߱&vRvCT\)F +sf!\ƺ2CGP4߽X,R*2RؽZf~/=Tcc!(˚ȸ.Ѽ8nQ%dmcEc`(7jhO/*SVP57WAPar8P1KW'(][ m5gRB @IRi DKol=ҳ@0f]Q4x_Uŏ~c,\5k:b[rRI3 0yafj Tc'PBa~!X+b]wz6z2<Ʊ#Gy/`"v ?~% OFhLa쓯=eN׎i!Lwv7c~p;LQR]i|oy9yt*Xn_xXmwbh4ᡇ?vuSF)ahYE)PJ b$23SS/ a;; E43J:z)z3/Fz ą-ceλZfbEbx4$$EfnE~2pЮt~߶}=Kyj'~?,^(Ep]:if3%f6nr̯a֮vjC {!]Ugumwv*vm.Ž]ww!|=3Վٙ@AFn8-B&"+[80NЄZm c$ (ez=[.cbd@ݛ3O+L{kcPiT?([+Di:;kףN139Z'dRIhP,弴s$'מ,%;Ъ%PBؘȀ锓+_IH=Ԭ\~#<Eώm[Όs4?Ӽ9} b.]f뎇Xf3zÇl۶s ![1vXk,2-]xٶ.֮]!Yzq`C/fzjTf&&[HkomJLn\-QCFmBd>΍&A%pٝ﹄0qyw72[sF )!&Խgo40N0JoP)$5Z9p0WF9s,gϞgtl@1A`26:5vZ6+~u2QrW8IyA#"K-fen7gOb\x2&LJ| )Q=h cme]K!J6"&}V]D\(Q#BIhi#(Qo?9?(yϊŌ\̾=9vR #RP#HC.2ٸ h0w>_c%\p;[oŭmcH)λy՗ضuS*ӣ\8Osi)W%lfIe3'v58{< gf^[PERLr2nnθǴ fflҡQuhyܽ^g&/W鶻F{b>.\?σԉ#Di* \0'o hDZiWj=c !KA=RQbCr[~Xb) z8v((IQҥHr,{M )d|Ϭ@Yɠ Ex+g|dMq4蜿#Ogҋ$ (J*ͅ({MP#hI$: 5?Yhub@0:|LuN ʧ^ԨXO ߗo[^ye7WF')|0nc.ɳ}Vna3;vmS*{;q{-rLZیqAG[X`#hbj&7z. ?Ŏ[s7t+V$#{tQLcICZX kϴ>2-m#D{ҜC.";5)Z:*5ֽF2 ?e&*ʕf3F/n߲]C۸_(D&۷S߸lFݷ388HJ,*!shd%EJpp2Ⱅ[~va);vdi?N Ь]a&'f@H1R@ Ti6+O>X^BBSF|aؠe'zX]Ec[_QU<3vЭOtacz{F3=u ~[u_?]gq( < 3k,wqX%kMKs56-b?ki4jɡ3{ صGBϙBH̝>(,ؤ6_Ϲs_=xMA4k*w pf%Xƅw̤/ko~;ʼpa3EQt=Gryr9b`L ɩ)/fQ2&R%jAifF.V"Pє@&iQjM7S^ ݵfFj 8ȰA!WFƸ-/DiG? 8z4qeKo;w22qKSI74"]h?`~O7m^xu|=pAoK8th?woEXr |Ͽ`xd_zjej”R|mffKD5{}UӔY) ޅڎe>7 !Z}Ԓ%d<3R&OJfC՝}:/Kp r7gG55}u6o8 t$;o Gh$H9S?[ٶ3:CSdJ5d5!LâB+ٻ]kx"r6nH j5[@ue8vd3k*6A,p4K8VH4!$rRP,)wt' 'I {40=݂E|+aB(Yr=udnMqqKXv]KպHGR^Zm K~T !6X'8=cjZp|x.7.ǵPuwz3ݛ݅#B8drr2!Sٕxe˒+Slq}GY8Z+c&E8 h42u^Ƕp8 } \x%ZG1Z{Ԛ*\+.}?v%+1R ]ϝ؛I]JAFX#u$b.. @[Nx.G>N-[ט3xJu3ynqO=si@sff*<|w}V@F#g`0AL$T$&#Qeٲ|(W6ȡ8yI r#4 Uuqֻiixp4ޫWoWx6azrW~:&< % 2Ph#",ZǟvtS?s^L]{t-YNց7QJ111}|4/& >#SQ0`V2 .m>{ۆ3Y^/>xO7$ ”]hܳ٩3qHɰv-$RҢ|֬Z<#>ʺ[ٸ6:]wKߕ>ZJt.Vsym)zȷ:Q#b1N`'l2Ǚe,E>e΁ޏG!mrJ*ƾɉYj 8} QdƇD:uDhj5AtE!Rs/;[JsP;}Iܪ̟=E8C̓S?/*J~jv陏f`.t{ sw?=#_j`r/EQ,-'u93?Q,(>῱vz38ZkZZZ/a) !ȇATBʖDb)dѢ=K>#8sBJ;UTs7 yqBQ ,jZF 291Ζ9yKVpKWeblSGh)/%mvcZE QfTd-$$z]jL?知7 ƣpVS9yXMLI0 {{9{tt,o… ܹ:tgϢ*B%5 ^kLuIlxy#ORv.c|=v켛k׆پ.j7~VV ]ٓlRH<pOmRݛ 0M{ZĜBؔ5\d+=z1PӎDÝp.xw*E,OmmmNLzZ*3 wC+lٶ._~ζ"wqǿ5䏾{,lx3y'4,_#~31ۘǵ =yuh@멆Moe>1u'֭c||A֮[C(PMqFF&QJ062ZP&,B&P ITL]w$3gxkw]2v33ҚZNܤUF~;r4'5VJJD)Wč ,џ 7Q$I?:*e 0!|™RdcEJY:7d71 )GTXᥤ9ɟOr#S'=~61dj%M}`L¶2 8r3gA˖331e0,X͂0Լg{#I3d)!nܺm.b$(P,P}~E -P}uj]hߴZztKZKG?aldvgΜ̩8ғV&өҘFOҪŒzK,^}EVZ˦8~˺j5&''mHxHNZ65z{vVz񞾴/3ͤIx +fOZs'p7盞=!t{RN[NkȌ}hU \r:}mKٹvl_ϒ%qs!===L BQLЩ뙃68s#D6ȆQaPW1"pI`m믽ɭw`ڕkl޲-[psRRG k qR q&IEEDSkl,m. USp!'rϿr4m1FMdwgVk"!EmSjӛϑ"LLLbY5@efq5Z~V ?||4x|xOnp֥|=*Ɋ_PT*eL̈́\;n"Hf۷ L 2Iӆ“sST2msZĀo%ںL‰SXڂ5Z(B.\g:.Mk\t0M$LXt ZPZl$ 73΄ K Y8:_>3ƌ 0bZ#Ц۷\>¾" &&x^̈́R؃FHe%(t APzί_Qc'ؼ9w<;wԱUٷoǿOefNz4epͅju_7 ll0Jh6ɒF{>8ҼgS}H&qZd H226˒n6 J&T*ub!ԪPhң3#P,SDSP(vR!`\lqh"c;~R fe6UCgg[o_ dמy(YRo|#OM9cZ6+WK?/ p9w>JϊrǑݷi؉~X7qϻ߄8;[K/' abݛnhH-R QJfw> DS*JhQ'"TKΜ=;ཷߥ+,c;ݫqqSQҮ8$F(NZ?)fW)Mi{D!EQgXZQhB:#Th'F**A)/c"{L $$u:9JՍ'[7?]xpcїr[嶅MT?;n7!Orm9:5o^(E,x^x~"iM͏mJ%',;N+BM{ sVč* C$eN; 5M3f2DbLaɀF<mgxtg(gN(|m pvk/K{dd|bBLjitT}BjFF]2_\;5O2Eg4u,%%VIg<)uΝٰf5[6'e6߲'8{Vrm`%{B>n'X ItLR'5BB]$֘źT(:o߳)| Au4D$YꛏX6{Z֊&H1gĬz8R6# Y/Dx5q\)McOx4 n<O~rLD-Isa\ۡ>餻!q ].riHlt/k;oB nqymO 5N( Ō?Zow8:&(22606 z2, &aj˗.bLNL6k-sXD2n3$Jj>Sh&.K0uDP@S/u>믰pb)ԥ!CA*թݥPԣ8ՉQD A IDATe%COO6oC>64˖gJ-eɩi0:6=wn:~9w4S]:4U%`Dz7|}\2|oTxW˗ѽ˗n_B=ݹiߩRFtm~Zm>rRd% =t'Q0__grF'ظicݳ7[dyr>x(Ii)MӲV|~^g?ʧG^ٸdLΚP Mp'LTTuZK%%A_`Ir'XP&J?П#2}/k*e @!"[({?ӋzD#`S4 *3dx#K Ix[| J'UC,Z@h Am1En^81v-J%F®X~=/|jk/Gaæ[@ZGHEGGG|8R8o&oxAX46Tk ԣ8uVs! #YuHQ"'OrM\MzsgPƆjafϚg][3$ )!BHdzP੧B-;w| Xf VtG gpLLpۘ7IuʕQJ'1Fkб'|n׃σG1ac;KjW(ADYl2TP,{X~%ZL֬[JuHJFw2f+(#l0 k`tB$a@*; M!|hT덢;3ʝ*.FZ †K(l]+tmh )3]rp.O/m@1<-ϼ]#6?Ep0\~ w|wO$3>޾Ngrrr!ITpEXW8PawBkk}n=ȺDnC!Rg8OZkx$ sbrΞMXJFR)HUV\'YڽQngd|l>N0m("an2ν-!FsWѵhnشN_<q IKF&@L;nD'صo;xLMsw1>>?`.VXsfx/u|q)wL  ZƆ[n̺zd^yI7}.cx;yueAa@>e֔*fvsa +d)e`WܽgO=%c|g?;rv{]*&9z0Gʢ# !KFxMQsՃIB~f7"RTiM#ز5:Ival˭T5::gn }pիYV+Hm Z[ۨTE*<8=5:uk⤅\uE1 L֛n@hL2CuRDI CNwޠitn7-z{uGy|dd T'>n\8I);}(dW:&|JVcff֌:qa{-WU-:i{7ͻ?ryV`aq.7)pw?=Cos$!Afffj52d=x?P@KAYc̶$q"1:iZ̪L=[B: u.?DaHjT d0籥Md (Anň&z wާ>IiC^C(1|Kƒ%KdŚ >|}g8u0}Wؿ#\Jk[&Yr9o&֭9}$1ʁL'R2T*$5 ҰbJ>bEÀmnwwh)1.Gn\"ߐәFBb 7x!ha@٩@i1+.2 1ڳu xӿ'Nzu:+NDn펻-]R9|7-۶ha'>!CX7x}#w#)&wDMxK,}s,YIqn|{x#LnJnmIw4Bh⨎1??^͒]\`-+Yb1rmxԫнdS}$FS(&J釱IDS0(&P@%JGd9莌yQ_ ȪچƢ;3RY] Booz-m~D[C:˥ѹ?hu1(y 漀 :'a i7=X,fyK)ioogffZZZDNQ cӳ+=13,^076w3okU\>po*W?42r kT]֚X[y)%YK`Ar arB@1JR'˹z2+Wc ]Kۘ>nRP5 e3PIXEmF_KViib"c*c` G=&sRZPD1 )2",g ~I2ZăOc]婧ĕ˗شq3 ˜O1&"016ck`uR v䮝{r >u/l&&Rܐ?畯]I,XuͺLIgq<-$FR=0V=ӧm:VbW^fH Dk>cJR(R*:ZZe6uR  ׾?s9>񏳠ġp睻yo25=E}zbAuޤ+!\yjh$߸ORcSlS񸞓g0A "ԱwwEݠtEoe}=~r6n\Żc˖ߴי{ ''ZkjВbRN$_F#<55M\W.)W\!-*Yo m"VR]*"d߭bu˥xuǝqo|C) !/jR1\7.Ey-y3P%?=ٜ &5 ѭn&ӱ? /~_ov8|қo!2y)k7>x'|{*QEh0FP=0]ÐͪU8\ޫXr5׆G;yRdf)h$P uDebpJ틉d"N Q<}^z3o1=Dk=!H (S@jHDe P(i&s?;w͎YZ&k,^gۉUa[o#$*He`qB6mȕ!b# d%KPغu ?ӟ…sle;m Z(9p-ٻA7U* e`H3)@Q x#أ[oS "cmpo[⼴A̐TWM"i'kkG?Awj^~eV]ͻKW((4k7㮝c!g8|0?xz4CUJ۴/c0l\g\m[@)7 87Ct}~?x%@4q D c* T+]RcQ\nzDH(.@H;XL l"NT2\(T(3~A\c^Sײ^guo|v8mX\,u1#[xݭ0/3Q|;b@0D۝#W@lO~k)_$ZMatT|W}3I":=v}P~yW =N{A_A]767߉. bA~(kq_wng3;}vBs"BHA/0H2YYҳjzDdvHj .cAq3EK:4|xTRD*3_&,JXhƢxpUߧ|mJW/!)B $!`DLPZH^9} Gaj|r7u6reΞ?52ԏXR@"e6n.;ŪS_bϞ}YbCcN9Ć 8ƫt޾#f9 >RЛ$U R ҆UkVɟl?(;o=Ͻw~* SHNxI-ùh{>DVlHIM HDϞMO׮o@ o2݋/\t DBmv绸hK41E6ykI/xܧ7xp\*w8B>IXBˎ\fXn9SS3Nq**UT ; !S6Vf!-YJEń D)m=Ki"eXP(fssgriw:L5Iqghj}} TJ5k]1.24d W)w~ɿ'y=cL]Q s4gᛰa%VASnA}u&HInbqV{np3ݵەVYq'ϧEQLÑ['剈C7Z Q( M4ĕ*׮di7N22]GcMQW-clxe= \N6lJ#$Nd> qQ %ZhѪ*O1˺ID#YX E "caA&B1TDB!QGaJS Y|sȡ035F:(6$l#U>^x16lκ5rb/|;(%Yq#o͛Vеr!Vv/$ n\wljS;yKEA3ZÊ5+7y8~˺{7MUYŮ{xy68uZ N(A߶kS39{`&ojm&7ه  +tMzu=dG%qll,Mh ) ¦ F"3Q@U]bwH P|x$Wʕt/Fת;} qcch2Dؠ65@s,BLc:ZF(SHNв{EXgݴYeB[xGpVdɲ%\v{4/b8&c;rlKm D 6N% J/?Eh6xHV^;va vܹk|ߣX9{ZCQ#cFΦŲIywF S쭙s#6$ͩi]!CkΊT=иBqT>K.^چtttq{b.\+W-clta@S5r[8%L>I(l] T`rj( (d͈1BrDøƝ>JNDB%elEg7Fv`r6qpMt3k+yдfB?XqPؒE׽0'sE Y|xۇEܿm6Mw^o T`Dd Pz0F7A j4eXVج't_ǰk _^*2@1d>hÙ.d16!-7@=WȐ+WS^PTXj%OHGg;㣬Y8gO"AqmC` 2@&D\5(XԔ:h1 L B&eLXrAzuΜ= D(ecul"d㖭LԩT"$ZpwO[nE 1a[dݬ78}~\pRHƳ߯/37yT_ҴmGYI+VgZ 2wy!￟1'Gq>vۉRoseTjffɬqG4c?F1<6Ν;/~~No6xxӧ14<ʅYヌdzfcǎPWQNH3nn 6~YvsTF50O yOn{QIMJLYScrƅ Gŋ㄁amʶ[7SlڲRęSHQhZTJKJj`Wc24H!JPH/ b!дiF$3Brߣ0 Iz+:¦-?3#/1n&1;z9=#?{&`y>-]R맟ya⯵K~7cJD8X!-ڟvS9~ oRIԔט+ QMpNˇEظMr0iCVy>_|V<קj BjNk|{zƠL(BBcffXt9I׆A5bP"Y&1RAeJKP`xa롍Ĥj4QP!a,AKTP!2P')a H/+ED)I*H {Z D.nSQdמ{k^fgؽwZ̉c'H}ajb{;o0+WwxP'RB:KD=nrYQ>EH(Bae˗O4/cv=Dm&U_d{7Fhvqr|/n_/)B) ka$$K]j* S9Rֶ/*$gpN{ءc]~ v359L;o"ӓH&-" $Ma(YW8; n^ܥ83+,jD琩͵2p( K߯{$q:pwTѵw9Ҟ./A* QPX*R d^Q*Rul} IDATYlX79EFT*kfkyO*ϧ[:C.GvȧN =:f?ROϗ63 g^HZ :~qgʇ}uVT*en7~!ͻY,-ej!絒8Jn޼Ƒ8j` n+q)?fk5wRarr*#k9W~B%ݟ 6|оL#PÉ!,di.]m-SXŅ\΅h[H9{%&; 6Xc&H$"egPL^.#A*Pv"Q"MkBfjܱAFG'㘻ǁ7^cմL140$K1<ǁs9wlJпxcӔs=gAO9K_wQ15xQ@ֶJ{6>߱໇(J ],Y7ޤeA <vؑ<ߟfhp~8xKMԘ04"Uc$Q(Zk۵x)[nb2_~^z;wU봵ٵ>MS #e1%Ӫ-@YmFjf9?VtQsڸ; Kay{4!S}{ݎ]s!,b;-ˊ&rfPt? [Cd<{;>R i52?cSuVH%Śi.$1Q8{ ˖/* :RqiTDʚ@B=HTr)U_<bg)^mҕ~ʭ S_g-x]n۾o> ޻KRP!ӓ/$؉ YtCE[Ju1ۙhg UqlrHWR&c$n?'-6r؇r?wnƟ|xy;:T* o2NVbg L ,:;}~RȹSgT"\];pQV,auDi߹S'1:2H%_mg1:TP$qTmYMs01Hv.7(MP.̥1?߻G_*cK6H@Z1 ,`ݻP2eê.w,KĺF,w\,pr/4AXH$}J)2)DBkke;yDQ=su>I?کe9`$k t'+.ϣ\.vĹh76fH8~ũ~4hOR-H|+T7Yq0|w{XN =D4}RO2w!yO`& Ad:4uݾq K$yGNt n4Ƞ`\0(fʍLNM1SATjQIb֭Y@e8FW3+He46Md:+ R i #mJV p)C)(A-biR^8v8}(Ϝ䉓x->_bՌOqiFF6:λngٲe6n;w0LN sݼֽ 7;q]b\g7S o!ajb^ o Op}1_/NCR c!;&e0+{8wP&] CP,gT1><@TVHWRT*d$0@'I:%6"r)|.? 4&0 R zܔ憯fg0)jsxc ||̣ZX,~VI.M+VoiHY͟`Y[]u>o@:fffML~NMriA~+ڃ5?}NzЇq?wZ3X?%$i. DAN._H낅\r8JXمLb0tu,>u/sVW*CCCV f;Τ$b I`.H$ !g &hx3 TkX:d-ذq cc#1p ;f\rW2NwᅩR2m옕0r3+ ogzl^QH E(M,#bZge7?B֭Y>1_lq'{7bO&ojr'nSo(e0Zb-h1!$7Q4geJ[9v Z|Tu:06ԏJ]UZ?&P(<5vR2b[%Ib$Bf{^COs/à)+s*/vST2 Hrtw?ﳱ}}/c=|EDw$ΟwktEfS1P(ٮt/𖼽?n!@6Cf?qI;I_$MR aM^h51\B^c͚U9uzBҶ#/=щ&,3<LJEDo,mAPaٳ^΢ŋ|=8+VW^zkxpwF58nfbNXwX_-񜅘O'3%EFC$U-_yVN=…<~8|8+W.cm324:̫o9~(jiXF$(ii˲Pqblqm9lɓؾc7KKĆu[`A_ʟ9|m4֛{uL6R R WC"FGnR79TMјC^,l;9`w'7@٣JgԷ\f]֩ /;9r;\*S(6CWABPiÐ m b a{ ' w2~lB`^_S\}r ?'IBX(P,Ujs6e1H~XA>><)\&l":sqYLYO֝E-ߞ!9'7gqij|kg1~/`"^((r`Y bEr93Rw 6JAKCS޴*33Wչ8#{68`${ŋ&X)CB!7Yy-;lq5FԩGY>IHR3$b->y6#\x$ ͻ wvWUh.װ3= $vnӟi(qzVu+W/|{Ⴧ\t) l޺5W9}<3^8R126lo30!AwovzGgy7sٽ{/}˽x衏~p;Ys>P[uP$()1IU/{_so@z1n+-;cJ3w|4Mq7%-{%2F)A3;~a(K6>WJ c6lY$j #ܹ(eW,ZtI`_YX2i`Tnl#U-Yn۝AS5iӳxrr us>MSֱef+qָsR6ԦQfd|E],+?!ʤTWJ6 \It=Ig'ʱ("ݺ@ ŋ_pŚֶv^._bݔEXyoC**9I{WK{z8q8O SOqe4O4%EkPAbK+- :yɟbú8W q[Xη]oc|k'/ .s60:AHtoV6o >{w&Az"(Wo0/]`bI2퀳Ua%lI=;)[8u"о`~Kg0IB؊Nd:]DڥvKɞ¤2! ZG9J_j))%qg\'W0W$zVZ[[pMf&WOyrXB3tu& ո_n}y?C4~hK9/o6ȬV+HI͖>$T,J\P(d9M tlMYҽ @Q$,:-˺9q(+VbppjJK̅,33fr6AF6MDh9~(ǎF u2ď'_q^aNG[ڈ̹/B4Gä=?'8q, ۷7r_{rLN^|Y{tr yyٗ8ֻDT#A5LJJ;9%a3~Y{^g5/$qb'6e=H%."A$.}̾wwUuo7%ynTT}dDc6okݙ]"!_ž׽41/rJB\pΨX, _HSU:ZӀsslEkfm[aɶU7˥?$IPr $ 6m-}'b)DdYړz4qj;q5AT>rsADHDÐBr5gf~ߟ&nu`bH ad5KT±W8x.e26Rӟ4/򣧟kZ'm/lRRiYMdgBtZ#A@+*R\8-aϮ7YFzzz[6٦N>ˋ/9gp']>HVғZTIM6Mq O'aN[q鿯W=Y!}Znx\+X &5Qp~נ"j S}M `ɒ:ۇ%,Nkٖ9}6ĉ=a@Ԯ0W Ib#W|JvgҐ"$ UL.M nvN׍aϗ"++ ihſQJU~W>ZUJY [!*A4j;i~?=EiLqb\˜ 'lEj>oKM+ؒ9O>im>l9H)IuJ +̞m.w_T*?HV -ĕёAfΚS2? FFG37}Djh:S>p}z=g[|{HOOfZkആ5oMS5z %L @e[Щ`zt>;;gWPZWp) |rz{p7֪9y۷jb!wePEI (B*1-x>Ey}Hry-[⥫$UR\|`Nyw?RCNz{z ZbdKl Ϛ'f $͍kSߜ_ \ìg5'kL6sV.<L, g;T VRQŹQD[**ݹ)w4sMgjG;v366h×bC)"kvwMNm,RE!Q0PO)}jh~mvP6xJL5P(31jދ;|>:MknMVR5㻹ܒ†7M_ZkRx rAg,5_%|w|I lm;mrұ]`܇+ NbJmS>SN!ce$رtvurE*mYBCT(eӀlL26mhԲ\>UI9f6@*jC IlPF1oojFnظ.\TmvN8ɿ7Slt3s?{ CC#$RvCTDkٲy6H \KkG#Fb:f_g`|cbᒅLoT&Fx\p RصI-/\OqaP.scIos7ͤ'faЫ漂XY2KRNݙi[uCX*snt3W,bx`JeysSh.;$ZF@ QHԲTDgA5;RdSBk}`ZomPoujnѵa5ϥuc㈐{πg/ZЃ囫Nu'oT*ܗDCGF[6vEs?V5.N IDATiݽi1e&]KXl;x&v3 ۝+ݿkO֮)q8?5Ϸuw1cLbk\WRcXS.KOq"[U&5}:'Ow9}*CCKRL2mZ=L2s{T۬Nu эGm}\nI?NYh M0 m$u&$|n ֚sg?Μ9syg[6FGkpZKC"XT@Hvm[oaVXs8TFG/-Yۧa(RK4ْÌj T)A P'1J(TS*2ylIk]VA#! ,2iCmIq 2CTPȜT>~c͔_—Y =mRʕ^/f}߹C*DOΎiԛibrB"nvWl}j}7ij nPtqо7MܞytՌOܵnRg(i%#hƙp B*I8G(̛}?0D\|9{,-N9,ʲݵn)D(4&D^srSito Rd81!Ϳsäp6ߺnUkV _W?pM9 O})q*bw@BPT;XIvLg{ͷs3p/_Ô8t, ;Tj[oek/w^{{I($iCA~akkïf[T4\6ҚQ3%_&I?XDd7l\ey[p磯wN@5bI)-/._C$Idҗ'[PRT*ZL\& us_7ڽqdAr_n=ݽкI!Huݚs'&&(JW} }^77O޾+QuЗ<"Fr;!N'`JT$i:Bb1<;߆Ll>Yf6xmP-w> G >/@\/-KF(ސr+RaPBf+Ij̭M*|&"*dlذcgϜgѢc8 "CuNcdlrDo(U-Re+:I ;ݛ(@d]󍄜d]2LLLguηV uS^Z-ǣ(b$sURA~weg}W>qSƘ6W<& !| Mzq c(R(i]l_EQޟ$Rdэ:U14lG>W סT*Fdu@sG ~kkw(Ii.;E#e6δs)x9kBI?oςRKhim' BY/~[KlhiL<UlL^\dvKFju+NTD[k cc^b%=:u?=!ĪA P MB h{IMZsqf*+6 >hJ|Eެϲees|,Q>aXTlN؊TA_:HC [|})%:~:uqa̞EgGgN2^QdɟccT+Z9Cz\IBe2/"(I$I_7D5ڵ"$l*4Rh> t4u}cכHxOtnJRRgY=YI)[Q= u:kk4(Ekk[CQrc3՗9I'\'qzWI=|RıE2q@O~ w9 ߟ|pB4]2[k ڲhu0 R7 R!ϟe]cGQ.( jbH[{ sΦE ҳaLWg##ÙWݨ٣U+RBkBR_]e7Xdej2/7)TvZ΁I r*RITM7Q> oy9r;nBKxwbΜ>}s}}<9sq9FhH HuH8K%TOtœ靴O]{=8B&w~;a|pukVR*8Ik[exl| 4a 1Yp-ZOVR?W냦EٸHR\npk&%&Nfd46uh]i)5YLèHX&P5R1Pxv0SR:Su%ǽ~:s`6;odeA)I_o/-ghx0D9n,€4I<2)÷j֩ke"D?G> !ڀh/r/RuRQ9u=nCr,X+u%5Xy?S*\g_LvW9?eߣRY9{ BRZZP*J =@blJRsL6)%cL-7ʾ}Y`mmm:u:C mm$iJT4qjqlHN#CCm"C'RRYdj !o+\~]:"? slMSyd=Iq{S 7,|DkC)7'r[At:18FJP'*U lwgo|^q~=ysCs،OsEuoj!Ͽxy =uBAKriR>m1Vf aϫ;i-Ft͘E-6C[Tj$c,Y#2cLF$<~7YPAfROī]8@R4Pٯ:; 5ODCj$!̲e6OT)L>ƙg1c_9|#c\oͼ9)z\dk/ԓs Tn 0F"p&]sB#*r]͋ГRqEg~j^"qL]G)#w7YPTXěWB'ՍouаdRA"^,R*,--F:#DFtZƍYf-._2;nYgߋf͞E_/}}Ҧ[vLF 5Kl3&d }Ga6K:s3 2nٙP z]ޓK5pJg]QN'4B_tUE`Z 5 |,L~}tє~Ѣd.g&۷Zg s8-n#"0\ Ȉ}FjMo #2#}6-[/"~{3Sr m6BJu}BT D‘u*y0 ULa,oBP.Oat$-b4H\!F󃧿G3gͤ\tϜɥ FMP\%PIψ܋hOThm)JAR(xLvg/)+[rҰؓF;yA\Nu2A)erPSDXDAhQA0gv 6>H\A/^DR&V\EאB#i`Eq1D%0)1IJ@Kjj%$K$'FH(% /'a`K聓xQli' |oߢA8| "%P)Ah?am8Vc BKm|_g T_{O<(r .J??{R24ß韠uʪI '/W^yK/*Dc@Y^HknyUXeN~i@H`BApuv08AS C[ " H1eJ_Y31HvsD03 M`rdKnGaS!mC BUmf6BTT#y>XuX]7|a { ie 5 ,Vޞ[KאBywQaҥK9 DX`̹ %T+H!b_8Iku;VXYTAKTSլ#){JUggP`ԩyhV.sz4? ׷{,9#BدgF3ǹMҎOi]du?0 ) tSTd~Aюy[䄧+tg/24wS~Uݍ߿;T*璘}8Krob_d;_KittJw-ve?T$!N@P %. X,0:Q# Z|n孽xFPK/&D8#tMԅnbFQӜ|xWgzX cc DfֵRFX%eZl#чYZ$J1 IDATŋaҥl6z\J_7"L'eDfp`",gZtx nۺukVpd2>"Wws&&Lur[d۶l櫿\pA̭[?Z:!:{O=Mp߰gc;y8t`?^y2v\qet 6ԩuQc\f}JN`$,^m;xsnF&2$˜K|I"$&$њ]̚3:vhBF&ޏL2sr9._˯ŠU+Xt/l'k&[7,Nj&$zR#|MVĵkPBZZikTl% vU3HB36IT$)6[ŽIk{ g_-CjP #Mϟ=Bp[ԮtbJ[+DIdL6 dAXss^RCښ)-luYi%>3$H|d|,Jy:"tԓAgg?1_<˯+E\vq|LkO; a(&KTʙ}]nݍ:v= Ӽ+V0f$(Ѱk~!sи?9ź\.7΄Qץt:wMfuf7}`}=Ie+s:;2P*;ևݝ} Bɘr!bɢ9gjMw ̚3sgN îs8{aFd N1ڲ=\BTJx &O`?o'޷@[oa˖~3#TPoԱS<񝧸#wwͦM8q0::j}%6[\ RPryzeȴs@y?H_=FPo?%TQd?fxd(  1<8ROhcaU4\ջh9έMhU`eCΏS wJMnk\^}m[ņ7q܏by7"BU!IT(w{JEsϟ׾QAH 2*8~/~7y鿼[]:t ]Sk囯dp"46aHRR\WE:&1rʯ$HD)ê[xÍOaow cߥZ3I"6+ j{qP)#~_PAӿ[w诀uȣ"4}N#.,+k}totV qFgDatՎ:iM~1sf i9p59]\d18YsxJ9nxfddmmmܭ:|nA3z ֞5,4K,Թ_Xnop6˽ۧMiNi4ݻq4!H˜6IfxZn9 RNC2>k[6o'Bd IR 4;< tRK1Ͻ2&*5ڀIم}HT©)E!c؄.!NYl?l}#c.\h~ Ka4%g;Ѡ<9nW) RIKJF(Uwo[auff"6+?y[7vJ{+}}lFyZӽk@Midf_"e0ϙ=>}=oK B%B;+VwqEz.u;5cW._6o='?=y懏nz^<|8t&4EuВ rѧ^$ Q(*ɝ?G8G#ȌFmV֭[Ō  7x;y~nٟ0?bMvhaϫ}J'cgײuc!%/?<>K3:942>VfLIKHRm QQT8NUC%OLHHS{> cccrU+qӷjGS_6hTWY/~ދW0,:k,XјW_~<}ݗ Q4&Be4)E55QĒٷu5)m~y5zpA.$& bemLo4(*55{6w}N?e.FFXFʥ+zV6o! = V^Ʌ=|`b!}=l߾Sjkуܺ6.w1:2p<\- XV4#f-S| Wr9FٶN&&jJ-5 e}bhhװ{K1h??y^ ?NsRwEYڹYJJ(R&&hj,!e&g董a  i[y&BY(|_?'@\5Mk/,5e=_)|˹F7hnlI uA1"o.30Bz@J}Xr NkC\<{z Ch Q!%xLHlڼ-atԮ.ZKl-p˗:ك81himewA鬥@!aoתvG QF[raH{ Ƃ$Vebw}7%BVk70<ǁ{Y~=͹VO{nl(5^ow v5.L!dd>A0H6x#_5WvtΜXvGKysYܵ8{wwwܱϞcߛ{F) hcJIj0؆sd57֬ѣvV:̚իٻ{7+݃opbf̘=0UN>̉9s8P!q VtܖY A!S,a#4+R2?d?WȧPž{۷ʊ+ǼAٶFkU 3:M::080@R: pՙk$ eo+RȩR<̫1,i@F}鮃0$wt9|_z1_yO~O;~D!}]E6]zHY;;(ht#]x\+-o0o|y.YM UgOs׎) <7>UVs/aM$/h/k7dLp<(j4Bc%S* H(-7y%Mc8a̙9jڵQ"d[ovj;zsOnZFy; 8~]Ha]u"3'ӤqFʦNV56>5DZ)Qnm# d"6q4 1oL枪LɚԪ)I׾(Sv / 2>{x W.,`ddHVwgԅ`g_P(5m# zEr{-MI̴Eew!2W$!TH*4Ig* _ lj,v>ɇ&I#q\C/I]BWsBZI>iJAYp]vR'ݏ,Zߜ1ݣ(P(48R]>xO~䚉Ѽ jT^aH5j%[hW'&DwO8db.^8:\*3X-Q,]:R1 JV,dJeUQ]h[n2leUjMLBjXL{G!+h2T ev{d`lƚ,;rH dC͛ϧ?(;bb+2QKg`8bLŠe  N=А%v)  d]so"5יX=Zg@X~-~,Zj}κNꌅt۬ٝnނ%f^D.fJМ8vё_B#&6>p/E@MiZ4tN/ǎeyLFO0o0::ٳwKP(pA::Z9_{4"ر#wRيG I*B9lpJ |_mpJ I0(֭7e(*zZN:ĆUy}\yvCݳ0T{g'Og﫯#2QIH!5N۝kɜs!HL2O=Gio+3s&6o?ϾsYzt3:4̍7^O=ԩ_Gb[Qpa2OsrhK.#T J[)NP*#N':k:}f"m btlyg~:v R^܅uםJ-T$qmw|zDtl֠ddd Gl[!eP[lٺ8x8fΠ>F2޶V$ a0$&MǚKEN QHHBV;?4NC,o| j PǸ,|yUW9UENf`7$ ZBN蘊NL| /J/At^@5B^[[+b1nJ-!4q<)RA2-K]gQBEhVô.|泟̩<MH TkcS? Ĕ <3|oqN;oy+/?ܹ]B~ddlHVkRaHЪ̄E/6F7~pnUR!Bۈ,Ud{sBAfs@;N|_aڬCej[ýWxxo6}=|y'RMG0A(JS1UbRЭV߮Sg?%?wl~.yMY|cgr!J2'dbFWL~'8q8}@(a SL "U`7mH"9RdW{DܴP`PhZHu*ӦSn@F% 0&i iM_k][^}&$R"v23gvf"HQbbk^NT@8v$Fk͟6,-iHR!ʹ<ڠYfJE8ȡRja̙:{1kLd #̓9wykht7;)QVyl-yq2=dRI%55J*WlY-jI ؁-ss}5@fƒ=VH6o~(EZנN6aT(IDQRz=&IzJJ4o" 7s|0ue=JVNfK) ۺ_ػ[ɊUOBM*tGuFYRct7Q3qxN7:k4`[jYYw۹ӄ3]zԝOkYVJ糶תyc+#CZ۶r5J"To" >6EM)%~`+A-_K[{7b+A>e o]؋/c:;o>y;16:?~S/Cjet~ qY0}o~$QQȕYb !]tSEt07}{r"/;FrEnsyPǐE!I?e7og!7(M򷔩Ո RxGOH[ ۳|f\& Tz!˖/g Hڗʁ}{< s?/eFƆ:2S4 Z*ig2k(lٸ[WÏq/};тVmcÖMtu-S$/\(:6vpLz5>F&"Ȝ[$ [XR(ĉ}'v>G7P=h. IDAT.~0311vs? / /s&>ti'f7i})fR";j5* ---~p z{XIԫ4fFHʭeffgH:Rhbe?Eq5@  ]NIb #+$%<:]}iDxM!}>FQuOs+_wMayyW~V]T,kWi+fQ+e1Wo'^ E4=ga, 8UI}LOsn޺(@bcI%B[:LaJ$v>@H9x Ǐg-tws vA9پGkg"6(iHbl"*-J9i4 J6r2^.Zld]Z5kS(䘝Mio$ȡZRgw!Nq&a/}>'^ejF%Rlٴ'?͡Eu[s;Y%*hJP`Qi?t+~6bζvjƆG*Jc[ QULg"(m<I<ϬG"$TWE֦ Ji۱[g+ЖQJZ ltp?)&Dcv-aRM Ѱ;˳0 }/yI{ݾxvE?ϲ+J:e]A0{-s6]l5sCtf;,&a(BcA$>")]$`~B8^S`ժUܸ=Ʋ0>6a*ݟrJ0!b=g|tQƆk֬Ǔ o/<(0- ]hjm:wp&:arreVѷl-]l۽qPٵ{;ϝG?'O嗎19<3$ql3&v*=w|Ib^RK|Ŋ{of׮\~ شm۷~w?stuw31>{~/l\}{㩧2èΪU}ٻ7|o{np GGIH t ?k%*l^.ybڵݻYj:62]w J<׭ge:uw<({nmΟ{Ç=ɱc{HH$ 1zĻBn!utkoP7fdNq<dJF/"nϓ-10@fl|81֮7io)Sȵa27/ fVrQ-&F롭 Ņ:CIĦȺk8xi3Z37_v4ǎĶRQYX 9yU޼tQ8Ր0$$j] u|[M ۘas; xCbfrkWu>^9qJGpi6\_~Vpۻ*>x < R92YiCJM*TRwE^In7=x"~3ͯ-6B|I>092 /W$_k|>غmo_ehh&b?OLHB:5)cZ"D1_8o|rklΩyۿonΜZyF8e\:-3&etqqZְa3}YϘH/GPgdlZ=4\H_o7x6226C>&G&20F4*1Z'HO0Z=oLObdpVRc3,p-2V*P3y&J[|;Z(#trƛӅdHTlX[heU 4\%?0//Bx^HP(GgY}ws╗)J{vΞ9a=_=}aϾ褱c evʦi[(tI[H?ǁXf$`fʑ#GչZ%|)vNoo/>,҃+z-ƹsHabb~GXh] _gϾYr-  UB{[ǫ^޽vQ{pċh ޼ٳg:!Fi&&'EgcM5i.4u2%\Jgr+Ra^@=q[{ko{{C -J;U+1 gj|2?3Aua@f@B|k%zA~={%^od2RۓRV4P$FKMZH磅)D&/зr%Y9e֏ebìYWmmԫ5&*"Q֏=,g }@ J/ gXƣĩuLtw< ;wkHs7G_;IOo~?(OFHE%EJ1 < Hz7ע(tIӄu[sWTh?3ҷ#in^ͺF!GtDCcWmyz0SW*>5;lcghEH RJ(OKőe2Q3wV/}X\tnC)Y`Ϟ?T?V9"*1CHSL ϲg~F1[7X|m<'y'eK(%5#r*k!ѱFHzl=r>5/ذ~']err֎.t~R19=F_=,.^I i3FkA]ԕ`ю鯳r3af?y\HFB'֮룳kPj\e'O2OFx @V01>aLIs1GGdIOZjx~ iu-"i+sr$ LÃ& 颭6rF^0HNc,pUN?ƽ{iã#ōk9⸆N8^i$*Neg)Gx$!O'(I8Q Q7z E\KRuȭ *|>MYOO<їӸ?/Oc0 yLT$q2&(i/OMgdo{ yf߈,ݽ!J%M:DML'3R0G" \wM=|>ow9rL.RSš)AyZmR=y6 +YslV!^7piIw&YJQ]Oh<ZWb*U*Д[ZhmiқXzi[if S49I\& sH駐)*%mNboזm-g1Q*6֠أc%mKw\-c<+QRHVZɯگٳmy\rCsѻb9k7l?) œ=<ſHG{U+Wpynȏ~,#T©8v5IL夰(>h~>>Ȏ]t2ٰbdjb۷_X`IG+c|ߢzd>-Lna@?xI #Kf| c KeJ6BXi|+V~fXE%D&N-R6rPP$C3ibZk o4 d|࣏opŗ8Obhh)b#K>[l@u3֕VHz) acԥvJHb^ͪ5Yr-K~ * @CsFQ)W=swPniʕ,dI{;3dTx Bz,'n6X)]kEtk1Ha'r֒FbUER R?? ip{{5Dž@y\=eV)'_7k! 'f)Vjw\. CU5&sp{SK,$m5ǟemTg`aa^L }ZK%dN>V R4i''R juu~H? PFN.Td `t|˙B N*Z|_\8iaiRIkfuG^enZ4蠐ª'Rp#{;H­K ~ֱM4wֽ˦)c#'>y6vm{/(-彏9+_cqmBhLϢ#E?_o<쏘 Of;P)\Bb#y8p,]ɽ[;O>C>ƅxf*Ο{k,NQ,0;;c=˟3;?4&\: !P X3xB@Dl b2!EH-^bK;Kzi\J؆z-c}{ؽV@X(#D̷Qk@-;cuwS|r"ELD)_!:Om> Q\%I"hu4>]XEi%I$>RH?DPOhmd{ؾs?kn\Aت'BdY3}Μ>gIkkɩ $f媕xoIBT5z-3 {qJ]|DS֌eBEzM^" NP-K+5gsس\HZr7r4gnߜj?%р#?9o^'Il' [X}b#8SǑ]i}&CT*J&^:099er7b΅dht'&؈BCn^j$dbjz==LLN k |p?c(HngJ4|4NI7 i,DxZ[b HZi{ЙG 섮a5Jgxف?Q(J[k;<'G|qzo;R.1=18"/pi3+E sx.^$]'aIk;$ȧhX<{yG]ɶ{xy/M׳dI[Xh IDAT;<>z"\IμvD-?J}AW2 Q(׽HG sEJma-b%{)6obM,^FZXZV6)f-^grR lXQT7ϧ;먲~N@ MDH)ywBPUS_7'~pU&-N2~/8ƕ d Icvv6)]k쬕-zkk~d̾>!$1ZzNΠeJ4:\jegΞeu Lҽ,7\jK$rz7vpxgn3W4oeGOnM 7SyfW xZ5-bhk-ۿ[LM2<4,o\q 8AZ;rw^6n\ϓOIR)ac{Om؃BJr|gw^nzc ,N*ChМX}ݗNAĔeosVwNnrw$ry |jz2ӶH {;uA0z|ER`6q3/()h"!!@')ٸi=ׯ_! ϴ2!.cTgHtdYFMtTFCW껒uhNPٕs¦ Q}ڜXHJ"Zy~ϱfZ&'G>ʥK~(axt]vrEMR\VM0a*M욝{1:4D&zSWB>o%#n"u0 )s{w}8i\$Z<.%fd27j5K䋘L݋&2 ⟹ݺ"5bQ65F<NP0AV ٗ@DH*qH'1K:CngYoCSr&u wJV˖`H461|gAhx[T&#x 4-gongZ |3ܳW_%o•ٹcΟX~.qW^9I qTO>!3١ck ȺR8];`׎{R{&L}PXn%_l! 2 }ںnm̒ g'yPcϮMTZ͝ -hJ)MSS۰ 099 SSu ڑS]c~~>6upqa7䣺[,*dDKHے%xG2\}O9 , ҍ48P]fzj4M4t,=X j V*s(!c붭 P*5PIl81rRJ6#_ Чc Ȑec`̞{YWSwH%LC_6Oŝg?4 , g<&eXxgs]AK+ .F-WIJnk)MΆH)S 0oht~zZ7lC]hHt87gTvYhB :;;Sx6/NhssnǔuDjB0*~gZC(E>gf$us ^škG\]lF$ t=95Hӷ6kiފE\eKYbkB"zi] €R#?m<7oAjɛ/reQ0?7Gm]3q1nUbjvٔ>im`G?c}Rd}["kWfݺ|/VFx{?S\v sf:6\;+-Zdh )t{ {[R0_kS;bzlLϲA>0haΩ11Q` hӵj5:c$I"GX՛i`LBCC bwtwK2UY84#;~JsEL''ѐυSM$8abl²ma\|vdzN7!F|rNM?$-\Nn]$3J4QJw)'v&s$Jȅ9>d sy<.\FA=V=Wsr%cfyUxHw{dhtr''w>J6ڻ/W^:gҶ|x R(^?s/7$HJEV3ޜ.=.I*R&>^PnNPF9be\M]Ab%Ц'Jf˞W Н2iӽN悞iT]:Ϟ{q昜3ܲ1 <#CDx 6 wfai5'H|Vf&VAJf]f)O?׸H׬T]&4MJgx6ڜ?8#DxaRbxhrr6l0396F$RU;P(؀ne8a7Yo4-{qyYg>ȴXVZ W`jSQ€8rd5"4t&!IzPHRL4di]ъ|!Oł5l" .ib@J ro$֦hR陃䳬}7-5@&ִ6ҏ$#5M7͓C^S_l\gi!^) ~AzLoo7A144Dnΐk@O3C=A~zS_L]OJA m 1hB1Df=Im*lȮ]ZG>)fgfx U| g+غu;_ŸAZ[ܸ&߸[8u7oLJ)*MT褎PM >wjHx -Ko6dߞyuVZիSC<' .^4eBxHId}0#lMZȅ~@C@nW:%J-mAXD ZlӕVa&V^Kk[W91d3MvWVXk`Mҙ¶ЎeZ.i)yE155Ʌ<䤅]N[ƳJB6}# À}ݰ։Ht#7ФP5mY._vlc4ߪ:OV5Foa$i󙟭qj޻=J__'y:J%T5V^R ֪.a`0|^{eWc}ֽoܸ|={sWrs'O~5ͥsxg:uZTCz&+I znGTVMK /R!)ذZZylݶOL s?![7gU|MgGΥ<"ElC/^- Ngņh⧬ ѺOx؂LlظkֱfT$1,NqH44R)RANb3 L}=P[iIlk<[n>05,3<)F Bҥ۰7i"%ʳ~ 6>:k6?% @jjQ6Dr?D+((JXyZǍAzx'T)r!ZZ82+/XcfzDe˖13=MT33m0R"neA>ˇj34BzUV\X|Sy?> Yٟ}|x<ϱ }IL17BN$DHSÐJ`,KdVR;=sfD ށJb>`gW$arr+23L.Tп_-pӎu?=E#Ʌ&pjN5LM ^kt-LOOsm,TL#TͰ-(qQ!}̌#l–t\eu3CJɌ7K@FH ->R8t?{׿</]X,cVxE9$]KY|#yCrO)^[1ZAjcY)FzDh9GxYVZͯ8У^ӧNC"dܷwo\8ώ[8SۿsgO0?4㓃? /t']Fd.3|dP.hذ + SwP(x/O=R/u7y=,#h$Il\eLODh%0N)bJkA5&&(N'+覡iYoEsy'Fu0<фyd$G=yZ[Yf7m{G) /u6ֹѸ}ͫ N!lc>|?7nܦ^Op2ƛ8QHmtb1g&qH)^`Xz Uk,\WB17712<֊(,~< C|OZ4KF~>Y;q#c=ل^:Ц@zSJw}F{WoÞ筞O/v坅>܇czz S3֦)^[kY811εmvv6^>[h8,c<ݙ,ڵdRS)]nz==ժ!Cvػٵ.MT+'Y9>)?KbtVj-A󈣘jJWU+Xf|beW3AP(09:X?B( #ˌ)Ґx *n[̅h6+1`Vm8RX|v?ȮjBoI>NJweVn^ɒvP$C\z^[YO}=wr _000 IZ"i@!Y;nS'"V}9s~LMqM?p! >-%:˜|ynpUGƸ ϗ[<_3t.wرjWdl (-r6 ?W$a^[Xz56mf-D2eXh]FQ68&C>iY2eqAdj@L)E*`vfi =dMfJC&쾧\.1??owBNbqEGҢIMq a6unn5Imfv6]ufIkH4]I[k٢Z,"Y]gG Zɚ,f;ikz2;;. ^)YֈItYA .isgзj=.]ei fyd#l7h$u>k6q"(;{ؽg/G%Kw~s$N3}?`b|5kֲwܻ6m=K{h)xctvky9w O<$W\Fp7OD]}:Ӽ3 fIDQJZo+d{wU*K$U]iU-ʢ$KVbA̛us Yjp03o)]VAhaNp^=??JCAc`+tQ*p~/se002-Ξ;KQuEƆsBֿ\6*mtN'ZKxB|\ H'Q"cS>rq1JZ&6 c=q)nnI(n^,c2,s=;\%1m_cC:$ʥNWc!&84S06urwHϠקe#;cBi$>}}|btES<#T8r)wOke2NbJ++DZ&&K x?0RnIr4MNpr9Օ y:N C#vtJs\E%Ü,e#29w:*WkAw.4#J/#J(Yk诵 X,%3빀lwv,5+TӍep|6`xh0 h4R8npc蘚FRR5 }BP(ɤVm카_f[s>B8>9HMVEqii6tW0xy-dҎuQrVDA 7"Ee-3{]# ~'{Zk/rkTU' cFb,EC)v+Ư݄A ?>x_{;3O?$kkKln1+HW cGc\ΤI# Oc0Ac|bW//p]~n0Po|Sȱ-/)wu+{3^D ͷ(O}Qb47Ju" P!l&*H\sx~>'a]#z"%VĊmQU2:JwV쬚͕Cכ^H*2]ez X'$O++TmfK٤XțhXeh=gjr\DhסN۶dpd`ګIm#&DL[;~sxnSN𞟹Aj{ ٭'F7mu>](䖃9t^Y)ha0( 9w<$SF4;)MF5K+L3^B(gkY.FaoIL`K; 6F뻦A:FhEX0ŁQvשZt P%~c{}6M`TRB rBʋ4.\8 35}{Or yOD1q5֛,s8&hOf[n[o|'|zms334 1HtTKKH@"$EN @smΜ6»{Lcmeo~IzAdvF޽[GxKhJW*Y# Im51>Je^atd;lobdks^|(+\E88B8zd~867<_?R4 Velq9Klp8\.e=NML}{lzV>2QQQiZHVŋ(",&II<GaolmЬ7C=as}W^}﹏~3^zN\37{?KGfw{HDE;$SgLARNaa4lmuFϗ)({%p|B޾'pq-t%&,';peY:ȭыB%VlRS!ёVn͊5~t0 -W7agB\:^dY^yiC2}(G~H'f?F´t)}iGna>j=| OpC}⎻ncf|Am5$W$%;saogpn\WýT5 d|.ǹ3h;KKĺ $J(ErkMe֯$c?Z?k6G?C3Q~,,7.ҲB0!v),3=Ͷf ]ݝef'0 "Smn DeUQCf<[v]OK=}1f~YZ1eZ%%e8&PJ}/! %v4Z.Zkr("C#llW) SVXr5 $Vt<[Nc ^- tUbui(l" DeG],"FƚcGOM.?o0͸ };<3| w#0 ) K:V\=T8uďprꦛt{ NŅY#uT+۔K" r 6W?lwz !~șT22j#LHOOqnW)IJސf{ˬ=otoz[`ch4VEu.4[M(N?t"cYmfJ5YO~sXjX^@H#aE6ZƵEiM56ǿGm/DjfRHk"*QRK.zQZ]G&RH|5P*zl" RJ)gj&&&ܥV_"kUϼĉǩV6tN8w{ay[2S4ՎausIUժ_Bw@VN Xibq? ~KŴBM>3660]]a4 x,{=g5*w:v ړS7۫[4/uOO?Ԧp;R&D٨ﱱ</2008Rw"3ZD Sz{lFV>u_Ÿ3HGHfQO(Q' uYX\ѯ}37 •~E\jJHT C 9gxIxj#'~T vs1Vq. =}noM{( "5V@W1ܚ24 ^{]>%i;{.g }=da iscϻ֞u]t58}Ќ4cecV+}Kyf/]dtlmhvY#J bژ <+< H9>PxN?0 gl?LZH;^-)Ruo4}_o|=>=D'#4+qQ2f^W@iC->BW0^ ҐVv+r|&6 OjF WQan.خʯpuvwwS&!9ı& #jaH.`aH$cJrS2|>$l!߿ 0.kn.&%Byd=Գӄ=.+SƥfcW;8d9tpǶSyg HNFh8'qs0X [NJu@WWLwfaֶ^w1G}hauN#Oo(܋獵(v88ɹf)D;X*y{$vpQ&1TEZHף&ԧwsE'GJrǝwQ.^QeZ֙rյ5fgsH1:c"l:%pDfVZTLn ]bXfA9hiP])LVN LL:PP}bUk3Bw:jřW9+,//FI. sq<WL.l2+xʥkV4"][n9uz3O?ϽGC<+ƞu_tUL|{{5h6#};iq~Zd!pک7DHavԾ\*vDjl`t.J9kПƳf}JAsǷpljrOS27{z"E@{3vja{BE# "A&BlR 29'ftd5(beufphpO# O쭘M1Q"0jLj&FT. B ݦY)A/.J s]pԍlGp#Sr҂H(4}GNÄ*/>4>s X\eǃ_y37q@6h<y;Xb}mH<7Y)}]@oPhǂL"W(ة<|?rDsL244%$獶ꞗ3J HbgE"N͢J~Zt:ř{ ^Br}wK>s#c\f=/N+=v B?SR &Z[{%rG뭁En <ԏ=#\nX*uŭ]ti6pvJRRT1$,c|" "Ugc[,p%{,̢Q22[llPO~}Eq؟>oȗ[8jk:l:i"Z͚Zb K-kciu )\chh)4Y'jո2w/CtA hJ9Ktgnf?K5M5y텧%.+021}ﺟw= O/}Vh4-˽>vzƁ)n6^8'?8=~7;GFX;gy Lt$!BGX$9^K+rq=I_0'Tyӡ++7%"S u6횲7iU'&lJpQ1ay^zξ:;[滕ѣ4 \$ *;۬,,N^Eϑɧ4IiVb}iμ])ͭyO<4M ØfāayՋNҠA&m~^+N^A;oolQ{+ qԠRbmuGErL028ȝJT/}],Sk1=}]PV MGYRQ%S*q1qý"VJ>U.0 ^ZP*)pZa=f"u 46R^nW 4mv{tg7( \Zf Ǚu? IDAT~w?& m$,BOw;E!hNK:&w=v7ѓ{əY^e%6V퀊q%HikbH.'RƇD/n> c*qhklWjHJ¸mk UdwZO) ʓ3k>JJ4x!BDQDQl07ٳ/Fت]Ox8} AqeJe'abU77.<R)cz\J|*|ޜg>xN)u8ew GE2_ѠT*&.>2\.gL[@@eY\vo%e'^ gsmAvY1:&tLr7-鰿gZ7_7پN߀MZeέ=FC3E@!|eޑuc"BH4gn<ř(MW>y|O$o 9I H}ԕ5iǕfof}XZ{sqӕ칔  <a2g^^`avf#R)nP @>u@<-ˋ; cvt#1mn4Ǐy>s zJ]Qi4LhH([ RǑsKL2d $%ȟЏ~ߣUA?z8Zڂ^H|˵nbER\.ٰ6;)fY;Ag/Yz֔& ۝tp@zߟkV+H Vք}3 {Y카?gMV>,h>VnՕut`,gi5Tvvce'YgscńUha`vc`fa$ƣ2Ϝ6*lP*p/= ~eⰎdki_eP)l8W!LmٳRq1J__rԍ>s |Y¥ 3x7Ϯ;Hbu-`X6NC!5PhR((H?OA |>zIn\KX['nHbEJjDF,qm!l.1se^%gD/S=qc.L \_cei f cѣ E@JјGBHѰgQt DG/R 4u8<&RV(*>4sϽsvLh贠4I .sk{l._\4*QD|tDVC!]! ;.Bw{Y\Ypr b._<&㓓ԪuTSVdLSJ=:hMow7v[RM>_W v; ^(~q|__Bp/ b6b%I)) |.yO|dr{;AnY=[ Vle[77{4酫Ld H~vo ͐EV\.q øp'->ېHWZױrW{Q@XҨj_f.< gyˌ fξ R%*YGhLE2͕>;Qo&V"cDRcmL912R4Mۑ,62fhE-x7䆛o_*k+pIqDu$>^&SxFp J7 xS?ca0ы'SR nXɔnm ev_ֱOP c" Ujfw*%bn'&&_,Fʧ4A6a.U*}0q/+uܲd(Nb#pbowaC*1IKUGMŇix~qn(~[o/>K)W>t 4P(d6rLG鳔T* H~|vޏ[_+J<f3a)Tm8ٝzQɌSץhK=kcalښ-Jye-`'p$ggQS{["Nxq8lj8e6gqV[ݩ[l3ef!}iXUw]Lo*w(t 08AIɍU@ͧݻ#5b!1(GB4yq*/l]Hqd&~g.װ.;3jrحl'η_:8 ߓmcu_V66kVaU'[8K!<4Ҩ(H!gph<7g_rNܒĆp@6Jef6T5yQE̛ cWj W昿2Vn^t )K8G+$s/[t&wӡͶENbf!Sba0 ST*4 Qg[FiW|K6 쇳ip&NYy[VR)yöH56 EA=Kя8S_,$H*FT!9I /^Z3dx++ Y٠;!V. b&6e0 i&6nX*FHD \v?Ek174i$r$%Bx⛜;3^#hT{a'C^*- 𪓩Ȧ|۬q{L+ D(AޞnG /$oֈ6\'@R ¨"E=k\#J(o΀7Nw[XGqlX#CW!j8L(L_|=aFو@yYr*OfQgdt5L YN!G#oub}xrFuWY"A+ W( ~F|iAFdžeck0wt ĭ:J)\\WGF9AiHr\x۶~sV~ԏ؉uRsѲ}N>fm&Gkj'FA\ЁgkMqv/)N"n~{l(g c!ƽrhF.+1(EgDYlcXt`s]S[M|ud/#41A}Rn&ClonT7< !5jx@`XȢYSExNxKH ك_Pi:ie G,8Ʉ h}hB&mw|(ִbp$}S.w&5A"&,9vfO%%edr7wcDJQڦ5y= hԶ8˕Ki5[{y]Ez'n1qB M6֨l'n^0Iv阶J8nb-}ߏ4 y1~v;|'~\YN*RKew1= y(6B8HYDN/B {c-$Zx_cVePl'*crGz9!=]SZ`uuAfqV/JtuWuTLU!ſU_た'X1&8qhV6[8p\iRP8ά9Z'm/HL{bb-L ,L~?Wp^14w_iB\$, QPT7iCZS)\F DK%Hso)KBv8V YXGpx"ɩIn^zljdP 5@'׉)X04:E(Q(lnSgEn }e̯p(G^"166F5084򜑫iP(A+ (5M IOTGnIz"o`6+[[ߍN#4ĭ[K-ϱ ͗p EF'՛j(‘nWXߠZ%񲑑8xVqi34Ml$b쾥vavC)AԪ53KÏh4Aɉ1&Q$!ޢY MR%gK|& 7 kWau6VX_l%E\t֌C`oKbtIi#Sfs'k  ‘ϕ9t8;DQgXo= 7 z80Zl͚є{\[BsHyYw>e/~'/q2{nj{;\0ޭKllmu6a!f݃4"`'-6\Hᙽ>y+dLmwՅ 9.R! w\:bc՛Lq gn#$z76[ЯVn8AjAqev uXh00Vw>F'X^ۤZif_w:C2'^EXR|V"S|p?)g g8FE6Щ{Z>G:"cjX'8egCQOvnZ&}}}i04NkB綡JlS`WiFZ zF8iHmbli[LJqXQD<{nI{qGm6U8.B8Q WM:RlorqFFؠ9OOO/{{a" [N3 m37($>!9OkC $+k-48usy'ahz3yad Tk,#@ 4QR44vfwɔ,h[^ "~):1V!M,ϳ@R|Jt 1:10\(yo6lְhkc04BhT)y2f=I2\6L&繁U2_vt%͆| y+_/N߼?9T<ĉ#\87iRã:B IDATJ,&Ԡ%|(P4j,ϱ&V]%:$bzי;K)<ǣH pLUݹFv&RHAAkCԪ[3^K766ڮ /`jj˗V>ԡ iը확iKXQ JҚ2+okoʁ|~轗u]C7MG8Rٳg#Sfy 0,ض7 ͦӔR)ʒWvMBs'ݍd!p -;Zln: X/zKI;8Ƣ E9,baڀձ>pY]$\4}xs  AOz\A$ _a!HesNkFz #9,]Ջ[_+sYvw5]CL>ƉS29}R#*P&[,ͳAgCb4^¼O6.T" "ֶGU[Z)(zf0{[YZZG&l.}fLVQݓ~D"iŎy3gAs\:"ξHmw8hS|;wqiʽKeƙ:D27.wpPS&m\VҸ&2AصE%xsDaZ.# B "|׽tt3s~!EzJ}.U18 c /oӛt_^! *[+y]}9.o}EF7FHH-q׸fql'NUf2JmP!@`&0pIXlrݴK cNqpb`ݭu̞D8OѠ˰6+f9N5NiBD,Ƴx'䄔:TWTf]\sx^X+gy LV) cE%ϙY6{ZcN8) cy(%t *&VBڵl)Y5 WGj딷XZ*$Sqdžg)6DS9cowJe&EM4` h[mR6\TL˄,q5`߮,P*Sp|=Oម5W:Qe` `0v6Y^āA< ݌OM3~$ "28#87{Jw"-p%Y\Ž2ng?JYqRZJdME/Z˵3u k QK6qPZc/m^ej}=yzdki8 ޡP ~vѱ_~;/~P(TAaXLS* |88qzT%e5vmNЍ-sqB37Z/-{h t7ݹۯW {RhxF6]4M#DiR4'6;x˛w)]Bޡ!&OeLV tԊQgk}yv67:Zh#EIT-j[#OULV !{[u%8*\_=%Jthh(B \ Q9f׮ ]HB O*\Vv~nsWpgbg/0<>MО$1qP㠼"T+CbahacՇF{lYhFhrhtGG8OA7+Wsj?OqcE\6KȕJt184LGO/Zh)p|hX˭o07DѡI35(a3c# =(#$ZؒannݺELM`ii|ޣQgmmFid'Lk1Og=ϛ& -AAco (HG'kxۜ;wNQlm,.,5V+_CAwO5RXkQz˔+6Jo\J%D4´hYSlV!9ݚX)%!ꩾ=zV־C1w^Oy6YtJlP}2Y{q`K`86c~d;B%S}NH !cJkT&zq|\ik/!a{{QP zzĉʄ9$wCrی]['9:6Rͯ L⾟Kg(Ry^cq&Yȳ~NHMtMF,qPZ v5@Q<Q b尵PR+WVu$[[ItI!q#ܬOhe?&gn>Fn!yP/8!HoW/SgI$TsL%lX3Cr0E|滯~J%AcK3y]} w0{ C(%r {}V6Ly:1yGax*W_{4qL:Gg9Pk+,_dII&'کUؔ0Ud/ h!R'Z#,$%p=;;P 4{(k_E!Z) GLQ r‡Pxizm֬ɮfggRF/ҕML+XDb*#3xKh)ݧrXN[D 2e4Cz?:*}}%;MhZO䳿p Ri[-+^s|>|[uZE2*xwr٦K~.kٿ%:iwR t{,ܾ;̞{>JQnQz2}}3mX;oH |pɕoZ0%*<ף1̡9y<;wq=M=|0N1::DG{|y 8~SX"Hز~+Vy/s)NLX>#jiiٟ>{/_V>Zva5KTS]Md\ #0~[&h; g -hh|vmn-͛5ұr/ag5X,/CyF{[o6i;.>=!Qy-6D*s:K%=zz엉-f&%TI.F|((`apsLN`}}0nI?[j)H,x>Fۮ P?]]=xoqb{; bxh2 Bvk'η(b>g?~%qgwO}3q:~.d{h3ߕ&Kˬ.\6;b) Eڻ{86:Iw R{\LU*{wwV*4-HMq _@8c-QGjU"z~N H5Yu9P&/fb CwTwK( p\Ԋ]6֖X^"W@E(r%gNq|Cc'J\QI慯}͍MZ%d*W=98Dw r&:Z(862NWW'{Un1s263W6.~h[7xs<',7]%hjPҒP KPKv'ďxgE:;{>腯ݻwo{‹ Jh?7RsAK-t :Zle ϲ4;m=; NcYzTf8YNYo>;K MSXdsҭyQX@:mسkm 6 ?WQ$TXG)8ur]666(uK|VrSWAy+3fCQ2)Jt\+X` YIe yT\#C|%8uz~~:G ߋnُ:Eg\ښ$FLh6ii, 2<~ _g~73RJ' c~BpnE1aq$AVr-a:f8 zѬFբr6Wom#0-a|L--k|c_.J%˵(ї\HI6-AyMd!}mDaHO)WhT(7Kowvɩ)׷hoZpd T{ތF<8Mܺ-Nmx6լ8 Cctt kBQb?X$qPRTP ЂcL"|%o1G/ګpIVﱵϣW\qqo}H "%Q]L8-?x{qA5n]{fky^G _(74‰3J'M$MIkgW'jF#rؠ;nP144Nɴ"Ucn%Դ<ܺN`xtRgq2*0611t;^#QX4+{]jV\YzgQK<+]}w?zLJoM !~ZJ)iu\nҳiYZZM9R:Ӝ IDATgb[d嬍AZIJӽ8e PZ,ik8dgc= iN49Bf|͈Us~g%v呝L9䤏ϱ[g{;DA2ΞMȸQCi灣{_Fx.v:-%g!q}pcDpb-YjRIjY"?aѪ*Y<9'y/R\]z{ 줷{woϷyO#zXG,-;Uno!5J c|SA.~ !L;.ZTʬyqs[jz,fEP;`Ay@JJ':Q<<<^[Z wr&`}-Jŋ\xbS3TܚCV6bW+ƫu.R6s*Wr{i/S/ qˬ-/E ./=Iڻ^ T9_B5&Kwdtx|3/qUΜ{)Z+X #ʡDk{ <'*wq|b D( V!zިhTBh-!X_z;sw9ع G~cf}p^s?K/ޯ=!Ę8XjZ Fєef&;pS ֖-jsvݝv'{vZ| ?Jdl{֦6Eax`@ǿG.qZ8V~%ppӬ% zKW[mv֢^`v*c┖ cnocZr邽 :;ڹ~c,nK4. H3# ͧѤ|\摎Ojp|{8cc#\k3z.tӑU)X*ɉq9>5NqHGGۮ2087_zGI>ַ`&׮aFs7 LBLvXu;+zM_}sSQXc\?Qnݺ˹sӼ.=z_J_/gWWИX).DjLlbm]Ҙ9. v$E8CqĽoro.s;/UDjP4O9~$"֠!5m;!y\vVE:0>u(GH(FЉ]:ۋ9oR;KOJ'6I:wMZ@@cCݘ^KH9&H{bO4;7Z" :z{eyOL}iA9⍗kbNְ%gr`$\-E^kMV#˥El{3œEڲ,a e ,|o >ogkGsQgHsK[4o!Yk[[C-: #4+3'Xpq݀"Z8zb'ˍKNדsa& ıx$_*!.Q,b1o<УZд4#$ '1ULw{;J;tv_gksm{_屏<6?ny];ᯐ4}K>NYm`DZk<3XK \'M:b/o"Q (WxX/u* uCPX]]c)&'*twmxnFRG7RP,25})} ȄM ml>tG9{8A#ъ׋Rqo~wܡs;ܜ[dzn.{ıyouj͠*KB}7YZG:apxA\ Vh3ת*&l"}45')qH1~'|y]_晏X'ȥ3DA@>smho6_B#:C,=fN+.IW0QT TP㈘-Ab B#5H-E"K8;Fp_+wP~w틾*%[8H RB@vW,-AƠZxB:i}enk>j5egmZM,nx2JRz8)*-DV{ow*4Mag%HA(pK# y Vbz$cS,oIo+'Rfhf,ҀU^  ( Bg"n`c$)$2a:ĉqG/5NHOg;C}JHW}HyS'O_~A7QwH&)K6db7mm,Vecklo\z4im]Wȣx(`wg*TyRR@SoIOJT *x981}A||i RrN]<ͱ!^x^et*A AhmBpT|/-P:6.I)]:;馽 -blЉ'%: Yge+k4*8"Fn]zɩY:PP tgf|nTt p/NYKjTh WqəsK>hhӜ>5&_ď|Nq͵w:}ch-i͔\'BXj5(}}ll,Xh䘚>8{1|Ǒc2mLPHͮ@gd (!#ourE~P_O~UR+Ulv/W'[qmϲ n,t3C{{{ gYYNr)=l"릿~zOkBHf \"KL$8BHA_?벿ߜ<H3'f8J)ZzE5㲱md ޥX,P;Ǩ ߛ' ZTcH!=Nڡ;htL:RcEoO'==]8NIg?a|l^.\<ϕ+טV=duu~&y[/ȇsfv ;;{h%}w+8g~fE7Տ њ fdVI2ڕיwFF9~,sl7߆NdhTZ[b=v6PAZ4GXƤ՟5SJㄊ>y'#\ЂrщNo|~8cO\a7%"4{{LC;aB^*"/00xq:{{ 9A Z_[zm踁&Йgjf'~?(!"Y$TpyQ>+T*L< AHD/$p$;!e}115R!y*BTaBK dhm,q-1Lc1?!}k&%e_d RW,޽NR&H)I|Pߧ0߿_RZ0 E(g gVǝ-xYӗ,5߳$TBh-\>RrxXI趰cj3-6&z([G8Щ0[ӧle !0IsR2]FT(HmvQ0qD_??V:޴PZPj0Y! }(}fc3Tz*Ƒ'У繿ēO^`rrztiouOA`xxW9y$džx/gsk{+D"V&aV&TiOV-2E~<7͹wPR]zz:qӳN \a ̮>Bd HAE7V{]QsӜ:9Ee/277OWw !WަZ?ʵwߦ~;_& kMn=P $}4T&)| @V tw32:1::PR롃nxzy>R b\~?)g?DG8,(X'mLG1}=T+t4 KV(rU5FF'Lj-ׂ1R<0#yZ,SgAM+ĬbǺJMT2q$ZȇIwBta/cwVy * aA~t_3/VkYug QK<2>n'xq[>;}B0YWMa Xlca™BM8b ̄-v !0;[f{wޞ`0h K6*VQ`R#HE :ZjnW^ԩS_Y7NSƲ&7_(H$bڍ<q50 ?QP# b.\88J1s8;eG&yշx;uvQJaFϴ9MOpRȽ9+DC6qn޼ wd|8'O]`t$m} rDݏn8Oys|ѱ FjeW3;s{5/iΝ⹏>#fgy?_ ϱ8r>GoO'O#8"wauc۷ ĕ&9)tuQ3IJ8q=. G(|G. s׸qmS9,Um#:aNL,5N]Sr nݺAPFTb{c6+?~H[ #k0lSbhݝ$A? y]{Z]}(-R 6 ]n߽ϕwXY$VW䍋(!B (swV*LLL+_Z. ?=+Ǭ<%"vÛz}s~u{{bAA_ԟK\ߟv!-P8ȇ?_>wo/r w7b.>(/ <fgg ØJe_]*vIc4n[l+Kwܹuu($*uzL<WkDaV G6Rvh~LG1pYk"C{[wnK޾^Fur $|(MITέ25=p! !q3c%)ķҵ:51$jpVej45#Z $h#}V/euy*.}0rO{r#MPyMyVKb0˳i~Oun޲_Nb )i`o淪h4ҩ;nKsIXd 0ǥ|>ᳮuv/N薁.(Cf]&=m^GJF=osh{}R! `}}a]8M{eq)8zq$$hu\ϐ Zb[Rͧ6uosOUڕ?=[thvwq]?[B 1Vr(i&VX.'|pA6˜06pfnME(b'WEj"颅@RH-ЮKGW;% )$"駞Rkp坷xc3wݝryvK_?g?7~qMF} KS7DCEŊXh-}hk'U#FUVVڄDJ NLr '&) )˜z׾\{GD&EeKlCR+/-eJ r6Op׹u'\yc]Ң֘9d h=WzdqaદLsfjML7,:?{[rʪzZj!$l#_`go{:h]R:O%$:x6MY8c79[Mշ{9}]<%Iy8S0݋Uusl:bb7QL Cd_>a-wS,K&nZkOΓM VkvWr(2n.J|tOz؆gt-g!8_'9<'JkX]UdegUEW68aD[뫬,ݧ]'6ϗB)'ST(FX(nvIuxSxD(6n%"!d"L10RRD"@I" |>S"_'b}?\tv:OuJE>_yVǾOgÐ WNLB422:(lOFqKlnlf q.^Y0R!Hm@x(~S\am>eN=' h"2j}凞!xcԙKlA:Cl$F$w+]Vָ}@vgAgyWw&<D`v#̵PEbd BǂRyc,_b:Ju80F [(lS\fy6 i4踋)ۼhaEWoFG%QA.wQxs"E~'qΒSeG<;6iYzDj6\.nBtj It&OM鐄rlmXMzg?uCHs&s .T&z>##rqr9*(ZmN_ߧ:8>aQ,N Zh(S?}Fuli@2w|n]>ŗx>{ t<,k^LB6.gey06 S*21y1W.+_/o£𓂑DDV%D: 12ZX,;' Ram+ˋtMF*(r%'N (6h%#"$_asuo>HVPPZ\҄Himnz#Tǩpǧ #hސaSJ}Y9_e-"p$3gxخ'fV~}ʲ]&V~X%`|7xqb4QԤh|;m& `#Y$G1G?W >3??.dSኦF&e`ڵ)$jiq4JtWJTz/=|VYtjv?744Nn75*Y0"e;Ot\^P@*јj{mۀpp`o瀳g/>ǙY@eSdP@)/1OtQE&咢.0F({F Y(ٍ@HѫbnRl7YGw.Bmjk,--W?kTbh$#q X/06Iq vvmg2:60c#Fm]P#%{\|77ivLj "7EbO2:6 hk Ío}+o~~7޸{2_Uvv\\Ƙ$(&Me kH>'.Mk10P*V) (bc":C6j_XdVC %N;ySh<mꢍ_AhNTO=i=ޕĈ0ɗ'|d2ZYg"k=_3E21f R:;ol];` _QlF1;U߽,+ReQKgOL:hC>'(H-&PE]P" 7QA?^ȟՏaƱ>y*G%C|KNtNvOݓch'nW:>q A:w]H!J@V&%NpÖ$|>^>YZ6.KsEyO$[ wGpz@z}HVWy'v5|r!hJ~Bvl бEStDݠR) xFpp$aXӕ5vHF(al $R(K2,8{ CLbk}ok)::NXF*XX'MMmt*o3q)d_tJ3~&Xcx#ܹV _CL+#2!RKGYY[Mdis~b$!Sh9sѺLzb˛dZ4lݤj=L i+4X[^`Eb|b-炤’t$}>.20Pf7dDy9ΞȃX\X3uRaFGv)ᵷOa -"ITnښER0(ֶOplzaݻDQ@7@}ye#CV; jE&άii]N5l:DN5NB!X 14γl|W~gcC^D_>{q/e7 XzEDq-cޑk <{MmZWr{{{xҢ2wwș$:ZXVHIcGJP[*2&E3d7$A?S_Xdwn)Q, 0yl.03{*RB)_hpA=S(ʽIKhLh0]"W ՉT[M Llbq)kLNL/֭;/,tN'kRݫm0Ǧ\.)FuÍ<̓}1B(ĄqsϿȷ|#OfJQeN!9Opڛsғ1BaCEGO~UcL_w/uv N:KhK(m;Ww.D6\L tU0޾NftG-3 I"+3Ơ/X/ܑ4 N&0>(#& OyN cgogΌƭr tri#)P 9yϻT*Y(=c <d#[eڀfGؤdjj\gckѩibvw]ċc5KWyd$Q^dv,^ao]GEt v[46_:x &n4BliSWJh;{PAccOM18<0 4,߿;o;AwۈdEJ8D*My`oU ~'JBN,!ϱx:ǧ8NdH€"fr0;{}Α=OfmZ;KX8Fd  RNQ>5 670Q ~$;sL8$ ;ԷWUpwD(>}KϾ~\E84pӲ_lAw-1RziĩkՀssT*%=t9e k܊5qM4(ԧqt}.u"QkR"|CgOd*gyW?>#G&l~{ 4:B) i6[]*b?u]ňd7ԍes}&ay 9* 008R>Qlv#8yN#$3~>T{X$ (q O lp:~$guu3~N+  d G;g tzITkdZFYY yFF(e/J>cus%66Ik0gΜc:6un޸@.SU"튕yd7)焱m%\os뜺4B^IL wvx+seV>CdV~i&) i묭,pR$kHcMyyhqMΉAw0RDe""#`~l.?`w kВr:$Rj_+ϯ`infMpwq+0v*>sw^{;;$BxĈFEl#E/R5KJpu!v\ui2Օ[a$&>+,ܻ}}rj<'f'#F1`B~=B?moݣjs9/}jO߷}IqYqR)%n* լ\;9X=wnD0x9j>#L!]f qE|x))=wH CѤQ3Nq!~b yfE vH\= mM+7a(215E(677(+m/h4,ӊ$:yP*WI ÈlwN{kQtp>6xOP`t|SL8PIkW3ng&ٕLy?fMB=#T! al댍 %SkZį'*+ZoV ^& T>v= ԑI6~5a`;iNGUNft|SR 6XލopXYCp(1Bp$}}Wq_&"c$1\[i;\~W蝋HvCZGt{?;i kԷk>;\8 ugyy\-݋e"8%IewuG ;-FFׂT:l._╫w88D!cT܋Ju "7L,kCp}P>B5??qpTe ~? a> IDAToZ}\\HI6N\.3q䳤9抝.48TN~1l E Av8YC )% $1=w?c Nw6V%9ϚN/(sإZQ)W8} ,36>IEܾ} %m0o2 ARdjbL._LX"%%IT0&ʂ0=i7kقaL #apdx/yNWWyX^mq9P/B.°UJR}Gx=qGBT*LNN%)bxBJ LD\{k/氾CGGǹԻx>cP !ًXq\duM&M14z̺eYpdӷ+XHPXJ? X{nf B%h@w#Ν!c܅TG~~K0#GCX`y}ʕSf}]qB漱ɈM1߫8$faFwc[ܺ:Y~Uv#tI\y{ J79e!?GG _W|BFQJvZ #%=cww>y )oOS.`FkM}o() IdxahxC0MsqJy=V{Btc+t&VNFd( Hֶ ZcnnJBudw F YcDLu@>?@k'w ;q dn5akknk9R!|R8a<҂_k/]xd vgw3ȃ cƚc3sx<;l,3:s0Q$M lc`u:.czfHCQ 8 /o6wnÅ+ByZŊ>8C DzVAuh޸|h#P}9}2!nBO?bcWgbByӤg%l lqnBBδۯvI'w I:y;-+Y|.a;RݔgW'&GEJ}н}N[mqW}Y.}&J*E2<3TQ/j|6mm0Za~H\fud'[5v11>ZQ(u:qmدﲽB42arcT(?H3#q;1q)T!l+EtFS̞<Ƶki4,]x'H@ݝF3%<)>E~H~qcZeㆥjRHD}]H6Ir| Ce 0ȭnN ڍ}6@mF KPH .>n{(#U@iZdH&S')41(f.rk_e=v7W2e2k(Xfjas#HTFƙk,޻9B"mo"a 됗/9툯m85#Bf q=PewgeN#2$pxtU/dW.o]G!r b  ̞@ut SnWi[<(UoC13{|_ֺl6S+ߗp^YMz6MGP*ӈUGs>k:0074YkRDw|{I563Tgn(R <+ԝNP3́]L cTWoo⚡R͜%gtj[[̞ޝ^b~i)ۋkQN:nat):cw`?spPgw{Ϛx~jDfqN+Hk" AV5a!2O=yđͩ'nn$Ӹxt2KJeQRrL 9P4 juC"" :y\Oylj4ڝ$K148| O" / {۫.cf[ėO}0AaaP$B#ǓIIIuSmx OO6E5ػN!G )UDHPFB -uda8yR İt/`Dmo$R E!UΞ?Ͻ׹wSg@kيH$lGVj!c ^mW~9ai 'O1}fxB OM?:XR'9' !O_= GwW>'Mc̏JʳY97gW|? /d\nc[b[H z`=]>{NC+e0Y=r|:ŻFF)J\{n*;88`hh(}~gŮR)AvD^|bM(0AQtVB$s7."R&Z:ZᡔR #Je GȞ0hH@=g6؄) Ȑ7Ͻ!_~c'Ʃ"$/ A>O)] 8F(YH*.^)A`) {-s0T{&2V1Z)gYq%ܼɃyZ{0F&&/&"ρEH5mso& ;Pbvz1>q _"ncDQOE>_lR\{?25u !~~G䷣{xpkFz"K+)Zk!fjs$7w,&uG&9Y^C:\F;(a(xR%mnŌl1^SG1Tu* !5a!HHQHQ(188 Zgjl2{n3M_us>RxF \O7+o^5IOZϮS vvڤn38<~!gQ- M;vXv}ƏMqegSE( V6ȳP(Uw=j[W="%=\rnEBxyΞݹO=T},57o-n ll!v4!bӞHƚi&gfX_m."-xI0$9!yzƧfy_g}e7^{'bN7$$ʄt,-1Kt;"<܋,2($2eHZf?".LLMSfw{K0B1G}Hxӟx/WƘ!eckw4[ijـ7HLZD늱#ZP4n623HB'Jt::j& #:6awp7;]{.oūܪL+&ﳻ<Gӧfii6ZЍvtLmkB 9ח.?hD6 9!|`!jD[`ymк3\q6UDqӧ9 +đ}Xeҿ+eoѱ^æaإQxeIGFr>R <K7}ܻ6QC24Vg /}O%&j h+DJ%Z:+hf΃1v$LRDgv'BP|y5:{pb|RӦxks) ̀A | ]x+ w2V" FċN6Qdck 4K++loKQn*W9n]{N("Dv)<_{!,+sþܽϹ;dU96鴙=}0oфٍܷ?By)_B 8;"l6y ]'l7usSEkmR99II120Zrpp j) 3JY [g^W銛!=]xX,q{dBT62(gOyCrD+cp}NL21q;k%1u<%F TQĽ)ukIb=IH`{~3;ώ@."-:ͭx٧v6-qDT½aMQ3{ KiZl׶ۧ2PfhpcP !i2(rXa{k60QCb[~W&W(c"6PqJ6#! af,5,nQ*Z7mLgde ``h3p,bl$Bئ{%P~^CpQh% -MLNr5}cɟяAG~~G !j3 J)oŋZS`7ds]YwS+̮XC.MkF^A.[_/-ۨdq/  }qAo:7;|{S341AGg alr-Q֖,Աt0NsG,rb)wrsJG'uчg{ݦj̝]﹂Z˿iQQW8fyyZ.eNL04<_c6~ߟ“S$!-I'CS`(r,-fwgQ&4}E& {4< $"yB( o2>6B\;w!`IVPXOms!&iÏ]8HA.0sOlYՒcc;p y+Ͼ'z7S'hwI3/|B<*??O+a(rnG{V ׾_>29*'.18OykgUliD"EQdw16Zs!-NFI]ɹ$A-݄p},NoMsם=7p_J@㐂n7$/P CE`ڦ3OR LVMBUR@;T*%~"O\>1.i݄d;NUBPdxxɩc*)r>B֙&zwio[Yc]J r|/?AW[# (!PB"<gQM.XG;w#<,4x5$q1^R'>!Bg;lm2{CcLkцR RJ~6 yd){!n69s2xyIdK2"S]£E] $—M)d´7 G:ƕ{^ H?K3$Mh5xw9Ca 1R }`'H3tJ6I'eL"ccsKZ 4j3{]ZgO,o~C/swH)߸FF/ 1IY؉9 뫫lo<`tBX;eIqҤ4$J|!lXwy:qF)I7Tdž9}ǧO311M6VZ)MAV IDAT /A6ח9fuy1 ln}v"%%cqI#թO-b?*/}_Z/폕JR ð&m7;™3}\.ח""k [yjm|Kamc FLľzJ!L]\R;j@A8RkS"rA\'ֆ {aM mN7_ezq`svt{k W=Yla [BwBtfyܾvE rA.٢~2Wi^l} hkH"b""eILLEBN'Ek*% JԄ۵u,7WZK.= M+2ӎUڒ,uB _k_ns3`Z:Cbp 2hO@Hma/ ~ݏ G5'o6|.'t~ZZVZ]trfWNr6sg hXjZ*h՝iϝC,y/[8{ڬ=ϳ~Fwh[ vsؘFA(|Σ\.&5[5.]8ETF3=|K{ݸ+Y _E(/fK(e!=M{(˒SU^9wLO ]. "Lh(%fE>L9},*$ LRHX ,6lO9|oUuHQȮs~ׯW #Hi"ϳS'\s{S':c$IRuO:8>][G\opO<8Q1}җ_ࠒ=O`u0K mݾ Pk\ KwoS-KiO{>ǟox-\|!Qc^emqH>{Is}F0o]"_ls]_&`eeDx?lm2fip:ϱ a.yYn) Y<,&p0h,E(_V+sP*104NՑܤB 4Jۄ"qG7ܻ>_mv 6$@In͟C ϳ66-VN8cl:Cj#E#~@Oww |n_>)kAZk3V񝬇= (̺[ FV,GzzKK}kpR,f[uǨOg>"5Cugf&_|!p"|$40PSPo$o707CϬ'ֶ. h9.ˢ)v)Z X4.Vc L_'?/l$LI" )cZۺ9qקgc}C$@Fb;k\z,gϟtΊZ@8}+oqJ;Zz|Q{G"# FAb4ar`437ŅOOXYkB#ma ڀ9\|Oc c3H@'52*}ˏ=rYw,|.%T2~Ǐz'{KJ8I)$:XLԡBއ<8I(gԂ% z:g_elڸaܝ]&IO"cIfn^cw{z\$,c,(dyׯ&A٘ziŻ=}o8O:\6._HPy~aRf4䬹3u 7ߢRcpxTZ%!$Igg/奥J_?֟x}oٿg~P(|&I6!Zy'8&J͹~O2wr]K:8(eְZsFYM$3sc]F Tm2Dh'戮^(2=R:䑃a7Αl~l-RH*j=aT!NpF*K([SBBSVeJ`#H yM"oE 9=u+WDfYqOpN;mAK)PJ85n^}4I@F|7}>:Є&&5cHE_oƆKYZX S/ QI n*ނ~ooAMyV6 GcmqA?^6g_k?ZJ0 ;8>fԧupj5qwLˮ#5S=O3>17W48‘a1нi=ὗ}!8 'f2ar PX*uzv KP(07sˍ0pZF F!InHq{F-eVX_eog?NG|JErnqnl:: Lskݢ A 4RhV<ϾC$ɮu.OYA")r>AVro_}\ jiCffg\`& WՐ!!VR(̱Mk[;S]>P:`bqjiEplorerևx?Wf@`M"_}wY94 JF Npws£?NkG{ BfgfN{BG?%4 O`ҝLriϑR\>}JySSs. QRCݿgFox_O%^/&Iҟ$ɔ1F !ii)d5Uw8oGҴ<&5),;k%/*K^#rƄaHR:IChγ;(Ks$Ogei͍-wxHMx XIΎVzz;fG ͛T1]F ##z4<#* w?o!ӱZ yn_rP1+BII,6+7y틿K4;KJzGƸwc20r0j%.?e?]vdt4 !QMEb2_CRR(p&] N~sX?G͏9ʏ PW;?(6Rm~vl&X#]IFBMcMg:qb:$FMLdjs= eI;8{:%/#CG9CJa[C:f' $ j ^ >5Nz@|jIKh)-\H'Th ̓,ٲBd,)Klc"ݍ(!ʬ-qs nO2^C|^1>9γ=\z9'Os.pwXk1Al~E kDTr3{P)27{e&=! Fyϻs')rB4Rg|kpYm#CMbÂ&XI$&83CV;A:@*| o|X\xIzx22qBK'2,k~)0T+9w-s&GLdmpcAzt\ԙKnnEl/?d.'c}_}Sil߁Z^U)R#]B[=Ifk RGBW|/4afmOJd7H7〣q6lŕHvftiPr,8Ð66T2kی+_fo-Xl@.cmj 9MHIb5i>8.d<[z(uvwY^Z`}cJ 0wS"K8Fat5!;ݾƭbkc LP*&N$ҎI>jֺqdK#"(Y_`suKFf{8Y)yX+V0>yW%6֗\]}_PB|l>+/_O-4 !.!|aun'3hAM[H1uNg-G[rjuo;9:ZIQ?rhޤ<^CVs\G$6y[6s[Y?*:1[rtB"&E Z0&qp'6<d6sD&?-$P@AyŻܼ9>Fױ:휻O=^.='6G3kK1 hר?JbH#i\̐Ra>"Qc |lo(v'S-T.\dđ/EhT,,189 w<73x mC 6OI -6\' aZ uyy7Y暷8v5ئd8nڤȄT* Bv*r>vv걥^w>֍Fʹ.\hסhF!ss ]rdMRJP==]$wkZ 9FI:ӄB.9OBjT;pW)Qՙ}rizey_ _Or&@%2uϽ|;DÚKa~6@Jg3} .=2l`iVV6VG%M]ONߺ17L䳟s_8a?܏^1|wE?j-A. QNko&yVo#a`{\sb/wD87imm͘:u1ŖVLJmfTU@wg˄TkK*MptwW#7-1Hbj-UB]b?t֧rgT%-q&klP#T Bz{z>[oࡅX(uqY| JMcdU@&;{elGMrW_bZt#A+ WȑomR!6F *)d1| ?%:1 NAyowopb?ugF7#Pʽ-7mrAw317wx'^_noz51'Qkkk-gUkY7ayW*#龰ĩ1vq|7wqYyr68:'5?9T)EJ9!E4Dlb{VF["I,"7o7H;kPO ݽv$g&uBfqAK󷘻{U d^O4y'.{m١6×vuy2 n߼g]"oss\a>[H$we9\A:–J6S&ZOXd vh vڦZA{{;Kk*Gwls2+e5ߺJLH0ҝu .IN/(S>Ix'OQl`scNHl;|'AbΝ݉?GB`!zŻhsE;[p׮tV#U3`bwx1Y>m?+/_ Z'7(:],fk=4.oq~aHʸu.uomI uߞs6cбU"T IDAT RT#kcFPTI& &'X[]F)K5$Z҈5IP<ܦv uqGMwn;C`fo71J?8O=QX7k BîO"BX`rBʼ/o@ܬV wu{Dzݻ:a*?JRRU_ࠒ-}"< fxb!G͞Ha $Z+_=:(\nBPhai{{x]GIw82jCE!_dhh.f\G$t 1eF6],koRpj TZ=k`bbK2B\Wg~c)qA?^G?;?O_$Iu5yzRA)EP8͐t_ص6| LK|ÂR2C^3,r0 BTq4Ur%#Rȇ߽MWO/5XZw  &\éMjWF2swng[K*Y[Y!g2tb)z}6xƻh֖jLX 2K( ƫT5N:M `j@~v5-p(bw{|$P7Qo1~c}y!4F' |sIdHJUH7Bh`wU'N#AaÈ^KߌxX1v!7}Zr9֖gۢh8Gɭ*+.^$ ܸ1R*ȟF^?1뱯K?(>!ZoJ:ܘBp-yvӼ=lT" L&ʚf)JN;10pr]]]j])NT*j5zL\KP] 4C=YO#h3>2[oZ:[sXΎVraFٴVKGC[06Ys'.Q&:#Kr ^&NO.V/s43wf 0Jy*sp/[ՙ'>:qko]annjD51cȴ"IӜ81L as}O# t#Y`sma\sk4j;w1|{ c{ iS r6MV++ܝɳ Ik hhpqµPϺ=A Rڣ3O|_OxɎ9Yz(n4Bή{Rdd90R1vYZ͍otw F0ǟ}'zT9"CK!}$2uoj+[ڙ8y5nxɩGRO9&p 6zM*eeX ;8鷘{)({#>xYXx<^~)?^R~*cc9f!A2ys1σ@ݗ_Rb&Naawa}u] ٻ#/K7,pj01*zB^W[[Nfnߢ=R1;3ͬH V:'ǚ.j=ΰBCT6&EOp9w1GN2&p$1, +:KoB2:q2-68nۗh6?vI)޾v̹Qpvj m-:5E{;Xݠ\-ĺNGg.^';MZ6tM0gLin{ ,Ks&O9'lXV#D I!"fexd~Ĥ&2gI%ehS>}x+W߯#l2qx?=ݺ_Ϸ~J=$If/Д9 !;X!}{/$I2M!B!O(,`p8N888Ƙ(?ϔt&):I=RbC{g/{c/UIa qNk a{{Օ7#7 a&N7T-X"uLg+LJaXRp.b\;TezikʘXcS7¯aJ8ktbȁk%ViT:O' A[VW7eee| ʹNSГN(%>'NRlٍ{pkN;BNʼ1?s% Yks)Kq=!j2[ı+Q~e[/9VﲷMGg'C#cK|`WkLaukr/lBcP`b,?ns'ÄՅ4*&>Ib o# :Ў׿qOz[w}j. ߛ$KFlB\s$IjN~y#֬ÐbH.e򽽽qc[Kg8|bO+R7Gtt8ظYY٤8iiiAXOooRIӭ]m]ʛ |1XiA&)+W+ZOXkH)R=Rw>ϲ}fegIywPexwfZ|,ls?4 9d{HӳFBWraT1HvڑNN% 6##:Y\cmu)9oɷtcDxZij!]H1?sFJo}K-Kٹ cFFz$q nLߡ^=tsŐυY_]EH8y&ݡ/qMc}Z=DmZ9&Rgϑo)fIm?Rת,_+Y|5HtuwseexAH?q$.1O *$(~j2'\ _D[\u?^FdnpE^fnj3." vwAF¹'eo\o~6wG =1#skKS[?mqDek;?C cJOXk?,$I1-~v;lێa9Zj1߽M7mxΙ$RH|u-((޾Ag{/ˋ83#[z舚 Z OJS־ƅZ$RXBiZJQB `$@I܁%_ BXmhg$`5MA)6nM[T5:YYS|ykA[=.C?^֓-_/`:c*ޭuVՐ@ѤqdH}˚OxW"ެg0 7;6k풮ZXC[KDihE,=.>AwO7m6'c:K!5JVA۾M*uޏή>-evwDݳ!-ɫ^cp`<2DEE(c o-F8=8[[8wѓH:\q&@XHS$hz:W@ql_w200DHW;K#" L0 "(R.%#Isn r`X*r~pgř0}w_w;K$J2}c *Pg? _tx~_d[oXk?!Ra$\.'|\U<qO3u/U9?[&}A*w Di"[%$"bZ#`% Y\}'X^Zd-r P:)1̠<}~0+!XbNFDa&J %FF'o-]ȩG:F QDa;/>y!Ksn&`CL.iNXlαNgo7C#dE$}g Sݸ:&[._.sIC?h-9nLNTehx޾aƍTMG3V"Zk;_moX#yKWdž0C?^38>zQ)wqALcxS?Rh42ysiwgIpfz=ոkKp␉p؏vvKjMN PyڻZ!FLje&Mcmc.r:sO> KʾmDJ`#Mwwm{Y\Z%I4k:AOo:)U*<}1޾(B)iV5! :Jܨ!BzdQΎ1,Ù!JXIwIDATJ*v^ $qIœvNoX)uZ:s׿2s378 *@JϔwP9:7䕗HCmhBctrɩs ORB+D!fxB^FXXb3)Hku0$'Z,-,p;ڊT_|tOLG.ax׾z ?uӣܼN.WpSgy奯8:a5=+H#lxCk2On_/[k8C!P9P'yZ[2+*;.CTctj k+ :w0"hcokĸ(^EKkK[O0ww,抚2-m&C:iIӯ1 VML{[;}=u6P*&sQ:>|2.0'cgH" f.m"!2޾vjy%sfo-Z_#))Q9kx_`~c5Ã\ziysD:-8iRRlm4j,͑ɳ@_ gjZ < on)b (W9FZ'<5Loo>[WpvΎ3FB.`e6;svhx7@/?xwz|w RoRN X,fEߝͫbH\&ϣ!qƪP|EJ`|+REmPNw{zIZ]>6C^#P#wtR\z0)4+A51:Ig;+]R !hMx3qST7FIvǗsӗlsXݣ??Ι h1HjVG8.r.ssGc7.zR ZYAJEO:˹ߎv; &9}Kwup&0'.k&pB_RJ=y|Jk]1:ٸ׳AX!; ֩NiC2aI;1ϱUhWa' Cƒ=F sLn^Twh7H?F; dN ?)}tRW.5F RaKE+x ZrC`<*}NtLdz:fwimQzS_d:Calã#ݹD Kh-K,/αx=GabǞx"T֠Gi)}|^w !-/ch.X^Xbm} vݽ{֚W @Y{i4JkB4}J;k&z0J |+Z<:/…sLOVAbq6#!e0sBȯkc?;79K ㇛?3~o~ƘKi Vޙӽs!D7[Fmb5#ݦ^oѬH'ļ#2$DF[S*So) cT rTRgXdy:Φ['978V:A`'k'5VﯰYdxaFGXY.y $<@۫log0_DkOԾUt;ӣv[FonρV,>Wx$YG[T%֖Ymh(FkG<O G=X7;@ :/XT;tkCz f.<K d6F"&XaiBcmr h${zau21}Nv[m+44!/&=V*#1fBkw:]bxΔ[f{1 GɘO3di*zRۛpwYF E(cbEخQ]'7XaR nj ؕbaf< QBk>Ygk>/]ExѴ;kFkE1ߦ}*#RJvLRZ'xHO޻7X^^`8N }{lmnTŲ*<6hE }R>M-1kFj'3A{f43#clb)RbpFX: ſ1z{r͝#FفA/`|7op?]&IG<11Yj]¯?@_Y'5a@s|Z6~NJYIc̐A'ocqwKh-0={%24:EMy.Ov'M/P]R)CDCQ,  $Te6jϮ kXcFswJnK{Orhtjko/9Z֧x|( C9j` Nhz3YӑKj! =)bf[_9"4p1LdYwL*63*0lQ;.S?9$ӛFcS *{dX]]駟K G j(JП˳F`1S^3tFu߾un؉y ;7Lj' fuu)FQ %FnPv~?[v#8_*˴5ޜl-LڴAf! K;bv_1=4,33,/q~Jr Ͷ'WQZ]?5;v n_K&Bg?.Bx'''dji]7N \ i4ZHŒgS$Jr\j n:|O>C^Tio(%ݤլQ)$|:aol!rrB;kJtB6vg)'+rms2"WԥԻgmT!,޽;o/=JӊtƹxC L!d@[ ix͍uj'("59edl( 3E~BV,KllsPap{;7*xd2KR7܊_k[\ihdBvci1:ڛHb^ ,q4nVW_}$}CLLN.&l y Ct_/+ /]~$oj# ?vDtij? ŷ^o\B|R1`FkY?MK51G ǭ5._}l(cMW°Iy^iL61 &7gT;633 9::fuiLW$=6{[.qy6@tH[屫&/3(㡔ٲ.}Btt$:>2}'8:[{~e m-rqzy 6meMJd=^ )?XHv?7󙘾]kE>AO> ;'v@{@^S,ݾ<ũ֚W*vnߞ7FxTo֌1A,*96tO2W?3MƭBryF?Iy)~u٨ɞj<[ڰ_"8ôuI{%zrclI0B !lptOvD<ՇVch;(F(h]JI'cL(V(d9xZjU3i"P(Jq⃴ѱxut"Gj '''aȍ7ygH$b4mFǧZ5F/ #3'R Mv`B3&'8S{./𡧎(s 0D{Ս70T+qtw ?<񿥁:o^ь5kT56. T"m+3>u7swcه! :>73Z7hN(0ޓ FG( 0;nÕh:\6 CRi CUIF6UL)A* ˲Fv4aFm:/CiwҍN:,xzNV|> {]/Oa9ECBU( tq"2)Ndcks?ZCQUڼ-ؑW5'tǟV.<7:Ƿ`rj'Dt*hz~~sk'~b8}Ta21sl_]TAK[kDrƓUJ=sU FOrXB~gd9snu6g\! Q!n?JZOp||ja{6֖=tEaڿW};N?Ҍ]t(E~/HF|?K$I$b{Ãl_&?<T6"TtBbBT+' xW'%M>_(D!'&$Z->Kw < 34:4ãc$Y(QO|9Nl0Mz֔ǚ˜mWZw& )ʦ+m32G*Ѵ:DkAZf'C)ecXxs`1, X)VCoo^ |KsL_6~/H0y`2dg)΂GiLZ#‧T(NjGV h o΄ftאzOZgcmjDnڣw16>Iald*B5a|zz2 67#3Wbme&ZXe¨7EA#g{ޑGg;vv"zΧzzl.0:>%ַvtP /xa"jeWVW/3[N0/p8Aw8?Z"T H ȁ(NSFkݪ핶G S E Oys.[ wYBeD^C6޾A IFcdr <P^#{)Rd2HjLqh|?26L6dO] Fc+t>};fmeyZCbWf}[c{(o}}9N ++m=Wr9OA_``Q#5"?_Zi5Ҙ6&@H/7.\zD i0֊\n1ãEnA?$w/Z,{Gw500~?d6X-Oh)G c|?9Q#Dĺ)c=~ 9Bw8~ ?e=_A*lmi֯ƺF4PL T*#7v@fɤPabID#R~ p8p8p8p8p8p8p8p8p8p8p8p8p8?)z]IENDB`mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/additional-resources.md000066400000000000000000000012271516374412500306130ustar00rootroot00000000000000# Additional Resources * [bugzilla.mozilla.org: Firefox for Librem 5, PinePhone & other Linux phones support tracker](https://bugzilla.mozilla.org/show_bug.cgi?id=1579348) * [How to use the Firefox Browser Toolbox](https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox) * [firefox-csshacks](https://github.com/MrOtherGuy/firefox-csshacks/) * [fx-css-variables.txt](https://gist.github.com/MrOtherGuy/a673848c95823225f7b198199f87a396) * [FirefoxCSS subreddit](https://www.reddit.com/r/FirefoxCSS/) * [whattrainisitnow.com](https://whattrainisitnow.com/): FF and FF ESR releases currently supported upstream, we try to support these with this config mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/coding-guidelines.md000066400000000000000000000005531516374412500300650ustar00rootroot00000000000000# Coding Guidelines * Don't make longer lines than 79 columns where possible (like in PEP-8) * Use 4 spaces for indent in all files, except for shell scripts (use tabs there). Consider configuring your editor to use `.editorconfig`, then it gets configured automatically. * Linter: `.ci/lint.sh` (consider setting it as pre-commit hook, requires GNU grep) mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/conf.py000066400000000000000000000015221516374412500254460ustar00rootroot00000000000000# Copyright 2026 Oliver Smith # SPDX-License-Identifier: MPL-2.0 # Configuration file for the Sphinx documentation builder. from datetime import datetime import os import sys sys.path.insert(0, os.path.abspath("..")) # Allow modules to be found project = "Mobile Config Firefox" copyright = f"{datetime.now().year} mobile-config-firefox contributors" extensions = [ "myst_parser", "sphinx.ext.autodoc", "sphinx.ext.autosummary", "sphinx.ext.doctest", "sphinxcontrib.autoprogram", "sphinxcontrib.jquery", ] exclude_patterns = ["_build", "_out", "Thumbs.db", ".DS_Store", ".venv", "README.md"] html_theme = "pmos" html_theme_options = { "source_edit_link": "https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/blob/main/docs/{filename}", "logo": "_static/logo.png", } html_static_path = ["_static"] mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/customization.md000066400000000000000000000015311516374412500274010ustar00rootroot00000000000000# Customization As user, it is possible to override all options set by this project. Usually it can be done in the preferences (which are now adaptive, so you can actually use them on your phone). To remove elements (e.g., the reload button, if you do not use it often) you tap and hold the extensions Menu and select "Customize Toolbar". If you don't like that the Firefox UI is moved to the bottom, or you don't like the tabcounter, you can go to our custom `about:mobile` page and change things to your liking. Feel free to [create an issue](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/issues) if you run into problems. Or even better, attempt to fix the problem yourself (see development instructions below) and submit a [merge request](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/merge_requests). mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/features.md000066400000000000000000000024111516374412500263050ustar00rootroot00000000000000# Features * Adapt UI elements and "about:" pages to small screen sizes (when opened on small screen) * Moves the UI chrome (address- and tab-bar) to the bottom * Enable mobile gestures * Show one tab to show the page title and add a tab counter * Use the native file-picker through xdg-portals * Privacy tweaks: * Disable search suggestions * Disable Firefox studies * Disable Telemetry * Set DuckDuckGo as default search engine, remove other search engines except for Wikipedia (only works in Firefox ESR, limitation of [policies.json](https://github.com/mozilla/policy-templates/blob/cab6a5076c1d8e5a1574637709c19b54bdbd669e/README.md#searchengines--remove)) * Install [uBlock origin](https://github.com/gorhill/uBlock) by default ([why?](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/commit/160a1056c2cf35572157762f66174ea7c0b1db06)) * Uncluttering: * Disable built-in advertisements (e.g. hardcoded links for certain social media sites on the start page) * Disable "User Messaging" about new features etc. * Hide protections menu (the shield icon) in urlbar by default * Hide https in urlbar by default There's a [screenshot thread](https://fosstodon.org/web/@ollieparanoid/107394745970284867) of the `3.0.0_rc1` release. mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/index.md000066400000000000000000000007751516374412500256110ustar00rootroot00000000000000# Mobile Config Firefox Mobile and privacy friendly configuration for current standard and extended support releases of Firefox. * [Source code](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/) * Matrix: `#mobile-config-firefox:postmarketos.org` * IRC: `#mobile-config-firefox` at OFTC ```{eval-rst} .. toctree:: :hidden: features installation customization preferences log-file remote-debugger coding-guidelines related-projects additional-resources ``` mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/installation.md000066400000000000000000000030711516374412500271730ustar00rootroot00000000000000# Installation ## From package manager Alpine Linux (postmarketOS): ``` apk add mobile-config-firefox apk add mobile-config-firefox-librewolf # (only needed for librewolf) ``` Arch Linux (DanctNIX, AUR) ``` yay -S mobile-config-firefox ``` Debian (Mobian): ``` apt install firefox-esr-mobile-config ``` ## Manual install If you want to install this config manually, e.g. to see if a bug is still present in the current state of the project, or to test your changes, clone the repository (or download it). From inside the `mobile-config-firefox` folder run: ``` sudo make FIREFOX_DIR=/usr/lib/firefox-esr install ``` for Firefox ESR. For [other variants](https://whattrainisitnow.com/) of Firefox, change the part after `FIREFOX_DIR=` as follows: * Release: `/usr/lib/firefox` (or plain `sudo make install`, as it's the default value if none is set) * Beta: `/usr/lib/firefox-beta` * Nightly: `/usr/lib/firefox-nightly` * Librewolf: `/usr/lib/librewolf` Note that Firefox ESR and Release are the only officially supported variants by mobile-config-firefox. Other variants might not fully work. Testing with Beta and Nightly is possible via a Debian distrobox using [Mozilla's repo](https://blog.nightly.mozilla.org/2023/10/30/introducing-mozillas-firefox-nightly-deb-packages-for-debian-based-linux-distributions/). The easiest way to add the mozilla repo is via [extrepo](https://manpages.debian.org/trixie/extrepo/extrepo.1p.en.html). Flatpak installs are [currently unsupported](https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/issues/104), help welcome! mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/log-file.md000066400000000000000000000003021516374412500261620ustar00rootroot00000000000000# Log file The `src/mobile-config-autoconfig.js` script logs to your Firefox profile directory, follow the log file with: ``` $ tail -F $(find ~/.mozilla -name mobile-config-firefox.log) ``` mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/preferences.md000066400000000000000000000110501516374412500267670ustar00rootroot00000000000000# Preferences Mobile-Config-Firefox has custom preferences, which can be set via the `about:mobile` page (or alternatively in `about:config`). ## Preference naming convention * Always uses `mcf` as the root branch name * Boolean preferences should always end with `.enabled` * Use camel case if there's more than one word in one of the branch Example: ``` mcf.toolbar.tabCounter.enabled ``` ## Default Preferences ### browser.urlbar.suggest.topsites * Value: false * Description: ... * Reason: Do not suggest facebook, ebay, reddit etc. in the urlbar. Same as Settings -> Privacy & Security -> Address Bar -> Shortcuts. As side-effect, the urlbar results are not immediatelly opened once clicking the urlbar. ### browser.urlbar.suggest.engines * Value: false * Description: ... * Reason: Do not suggest search engines. Even though amazon is removed via policies.json, it gets installed shortly after the browser is opened. With this option, at least there is no big "Search with Amazon" message in the urlbar results as soon as typing the letter "a". ### media.webrtc.camera.allow-pipewire * Value: true * Description: ... * Reason: FF >= 116 allows to use cameras via Pipewire. While it will likely still take a while until this is made the default, on most mobile devices it makes a lot of sense to enable it unconditionally, as cameras usually only work with libcamera, not via plain v4l2. ### dom.maxtouchpoints.testing.value * Value: 1 * Description: ... * Reason: Make navigator.maxTouchPoints return 1 for clients to determine this is a touch device. This is the same value used by Web Developer Tools > Responsive Design Mode > Enable touch simulation. ### browser.urlbar.trimHttps * Value: true * Description: ... * Reason: Hide https:// in urlbar by default to save space and make more relevant parts of the urlbar visible. ### widget.use-xdg-desktop-portal.file-picker * Value: 1 * Description: ... * Reason: Use the xdg-desktop-portal.file-picker by default, e.g., for a native file-picker instead of gtk-file-picker on Plasma Mobile. ### apz.allow_zooming * Value: true * Description: ... * Reason: Enable android-style pinch-to-zoom ### apz.allow_double_tap_zooming * Value: true * Description: ... * Reason: Enable android-style pinch-to-zoom ### defaultPref('dom.w3c_touch_events.legacy_apis.enabled * Value: true * Description: ... * Reason: Enable legacy touch event APIs, as some websites use this to check for mobile compatibility and Firefox on Android behaves the same way. ### browser.tabs.inTitlebar * Value: 1 * Description: ... * Reason: Save vertical space by hiding the titlebar. ### browser.search.suggest.enabled * Value: false * Description: ... * Reason: Disable search suggestions ### browser.newtabpage.enabled * Value: false * Description: Show Firefox New Tab page as the homepage * Reason: Faster startup time and less distractions. ### toolkit.legacyUserProfileCustomizations.stylesheets * Value: true * Description: ... * Reason: Allow UI customizations with userChrome.css and userContent.css ### browser.urlbar.clickSelectsAll * Value: true * Description: ... * Reason: Select the entire URL with one click. ### toolkit.cosmeticAnimations.enabled * Value: false * Description: ... * Reason: Reduce CPU usage. ### browser.download.animateNotifications * Value: false * Description: ... * Reason: Reduce CPU usage. ### browser.ai.control.default * Value: 'blocked' * Description: Turn AI killswitch to off * Reason: Reduce CPU usage. ### browser.ai.control.translations * Value: 'available' * Description: Translation service * Reason: Keep translations feature despite the AI killswitch has been switched to off. ### browser.ml.chat.enabled * Value: false * Description: Disable AI chat feature * Reason: Declutter tab bar with vertical tabs. ### browser.ml.chat.menu * Value: false * Description: AI chat interaction from context menu * Reason: Declutter context menu, LLMs bad. ### sidebar.main.tools * Value: 'aichat' * Description: Menu items next to Customize icon in vertical tab sidebar * Reason: Don't show poorly working (width too narrow) history menus by default, improves landscape experience (set to aichat as setting to '' has no effect). ### sidebar.verticalTabs.dragToPinPromo.dismissed * Value: true * Description: Hint that suggests dragging tabs to the top to pin them * Reason: Dismiss outright, as tab dragging does not work with touch. ### browser.tabs.hoverPreview.enabled * Value: false * Description: Small preview popups * Reason: Hide to avoid interference with/overlap of the urlbar with vertical tabs. mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/related-projects.md000066400000000000000000000036041516374412500277430ustar00rootroot00000000000000# Related Projects ## Packaging with patches If your distribution is listed here, and you have an issue with mobile-config-firefox that could be related to the distributions changes, please report it there first: * Mobian/Debian [firefox-esr-mobile-config](https://salsa.debian.org/DebianOnMobile-team/firefox-esr-mobile-config) packaging, [downstream patches](https://salsa.debian.org/DebianOnMobile-team/firefox-esr-mobile-config/-/tree/debian/latest/debian/patches) * PureOS [firefox-esr-mobile-config](https://source.puri.sm/Librem5/debs/firefox-esr-mobile-config) packaging, [downstream patches](https://source.puri.sm/Librem5/debs/firefox-esr-mobile-config/-/tree/pureos/latest/debian/patches) * PocketBlue [firefox-systemconfig](https://github.com/pocketblue/firefox-systemconfig) flatpak packaging, * PocketBlue [handyfox](https://github.com/pocketblue/handyfox), flatpak packaging, "goal is to provide a browser for mobile devices with mobile-config-firefox and firefox-gnome-theme prenistalled", [patches](https://github.com/pocketblue/handyfox/tree/main/modules/mobile-config/patches). ## Forks The following distributions are no longer rebasing on this project, and are continuing on their own - if you have issues, report them there: * Droidian: [firefox-esr-mobile-config](https://github.com/droidian/firefox-esr-mobile-config) * FuriOS: [furios-firefox-tweaks](https://github.com/FuriLabs/furios-firefox-tweaks) \- includes [GNOME theming](https://github.com/rafaelmardojai/firefox-gnome-theme), requires `coreutils` package for sucessful install on Alpine/postmarketOS. ## Similar efforts This project is does not share history or code, but accomplishes something similar (running a Firefox(-derived) desktop browser on a Mobile operating system): * uWolf (Librewolf for Ubuntu Touch): [open-store](https://open-store.io/app/uwolf.chromiumos-guy), [sources](https://github.com/ChromiumOS-Guy/uWolf) mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/docs/remote-debugger.md000066400000000000000000000042501516374412500275470ustar00rootroot00000000000000# Remote Debugger Firefox' developer tools include a [remote debugger](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging), which even has the "pick an element" feature. You will be able to click that button on your PC, then tap on an element of the Firefox UI on your phone, and then you will see the HTML code and CSS properties on your PC just as if it was a website. * Connect your phone and your PC to the same network (Wi-Fi or USB network) * On your phone, open Firefox and `about:config`: * Change `devtools.chrome.enabled` to `true` * Change `devtools.debugger.remote-enabled` to `true` * The debugger will only listen on localhost by default. If you know what you are doing, you may set `devtools.debugger.force-local` to `false`, so it listens on all interfaces. Otherwise you'll need something like an SSH tunnel. * Close firefox * Connect to your phone via [SSH](https://wiki.postmarketos.org/wiki/SSH) * Set up environment variables properly, so you can start programs (one lazy way to do it, is `tmux` on your phone in the terminal, then `tmux a` in SSH) * Run `firefox --start-debugger-server 6000` (or another port if you desire) * Run Firefox on your PC * Go to `about:debugging` * Add your phone as "network location" (`172.16.42.1:6000` if connected through USB Network) * Press the connect button on the left * If it does not work, check if a firewall on your phone is blocking the port (i.e. [nftables](https://wiki.postmarketos.org/wiki/Nftables) in postmarketOS). * On your phone * Confirm the connection on your phone's screen * If the button is not visible on the screen, try switching to a terminal virtual keyboard, hit "tab" three times and then return * On your PC * Scroll down to Processes, Main Process, and click "Inspect" * Now use the "Pick an element" button as described in the introduction. * Consider copy pasting the contents to a text editor every now and then, so you don't lose it when closing Firefox by accident. Note that after making changes to CSS files, and deploying them on your system (`make install`), you might need to restart firefox _twice_ before changes are applied. mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/maintainers.txt000066400000000000000000000001151516374412500262670ustar00rootroot00000000000000# https://postmarketos.org/maintainers.txt 1peter10 dannycolin ollieparanoid org.postmarketos.mobile_config_firefox.metainfo.xml000066400000000000000000000023661516374412500353300ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743 org.postmarketos.mobile_config_firefox Mobile Config for Firefox Mobile and privacy friendly configuration for Firefox (distro-independent) https://docs.postmarketos.org/mobile-config-firefox/main/index.html https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox/-/issues https://gitlab.postmarketos.org/postmarketOS/mobile-config-firefox CC0-1.0 MPL-2.0 org.mozilla.firefox

UI optimizations to allow using Firefox on mobile devices (i.e. small touch screen), including two finger zoom and enforcing of mobile user agent. Privacy enhancements such as disabled search suggestions, disabled Firefox studies, disabled Telemetry and DuckDuckGo as default search engine.

keyboard pointing touch 360
mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/000077500000000000000000000000001516374412500240065ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/mobile-config-autoconfig.js000066400000000000000000000104051516374412500312120ustar00rootroot00000000000000// Copyright 2025 Arnaud Ferraris, Danny Colin, Oliver Smith // SPDX-License-Identifier: MPL-2.0 /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ const { classes: Cc, interfaces: Ci, utils: Cu } = Components; const Services = globalThis.Services; const { AppConstants } = ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs"); const IS_ESM_READY = parseInt(AppConstants.MOZ_APP_VERSION, 10) >= 128; const { FileUtils } = IS_ESM_READY ? ChromeUtils.importESModule("resource://gre/modules/FileUtils.sys.mjs") : Cu.import("resource://gre/modules/FileUtils.jsm"); var g_chromeDir; // nsIFile object for the "chrome" dir in user's profile var g_logFileStream; function write_line(ostream, line) { line = line + "\n" ostream.write(line, line.length); } // Create /chrome/ directory if not already present function chrome_dir_init() { g_chromeDir = Services.dirsvc.get("ProfD", Ci.nsIFile); g_chromeDir.append("chrome"); if (!g_chromeDir.exists()) { g_chromeDir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); } } function log_init() { var mode = FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_APPEND; var logFile = g_chromeDir.clone(); logFile.append("mobile-config-firefox.log"); g_logFileStream = FileUtils.openFileOutputStream(logFile, mode); } function log(line) { var date = new Date().toISOString().replace("T", " ").slice(0, 19); line = "[" + date + "] " + line; write_line(g_logFileStream, line); } function is_css_file_from_old_mcf(css_file) { var istream = Cc["@mozilla.org/network/file-input-stream;1"]. createInstance(Components.interfaces.nsIFileInputStream); istream.init(css_file, 0x01, 0444, 0); istream.QueryInterface(Components.interfaces.nsILineInputStream); var has_more; var is_from_mcf = false; do { var line = {}; has_more = istream.readLine(line); if (line.value.includes("WARNING: DO NOT EDIT THE COPY OF THIS FILE LOCATED IN YOUR USER PROFILE!")) { is_from_mcf = true; break; } } while (has_more); istream.close(); return is_from_mcf; } function delete_old_mcf_files() { /* mobile-config-firefox prior to 5.0.0 wrote userChrome.css and * userContent.css files into ~/.mozilla/firefox//chrome/. This is * not necessary anymore and still having these old files with previous * customizations from MCF causes problems. Remove them. */ var names = ["userChrome", "userContent"]; for (var i in names) { var name = names[i]; var css_file = g_chromeDir.clone() css_file.append(name + ".css"); if (css_file.exists() && is_css_file_from_old_mcf(css_file)) { log("Cleaning up CSS file from old mobile-config-firefox: " + name + ".css"); css_file.remove(false); } } } chrome_dir_init(); log_init(); try { delete_old_mcf_files(); // Firefox is caching some files to make the startup time faster. We need to // clear the startup cache for the changes in boot.sys.mjs to take effect. // // TODO: // - Find a solution to only trigger a cache clearing when the source files // have changed. Services.appinfo.invalidateCachesOnRestart(); // We're converting our path to a nsIFile so it can be consumed by // autoRegister below. const chromeManifest = new FileUtils.File("/usr/lib/mobile-config-firefox/chrome.manifest"); if(chromeManifest.exists()){ Components.manager.QueryInterface(Ci.nsIComponentRegistrar) .autoRegister(chromeManifest); ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/boot.sys.mjs' ); } } catch(e) { log("mobile-config-autoconfig failed: " + e); // console.* isn't defined in autoconfig. We can use // Components.utils.reportError() for error messages or // Service.console.logStringMessage() for regular log messages. Cu.reportError(`Mobile Config Firefox: ${e}`); }; g_logFileStream.close(); mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/mobile-config-prefs.js000066400000000000000000000005621516374412500301760ustar00rootroot00000000000000// Copyright 2022 Oliver Smith, Martijn Braam // SPDX-License-Identifier: MPL-2.0 // Set up autoconfig (we use it to copy/update userChrome.css into profile dir) pref('general.config.filename', "mobile-config-autoconfig.js"); pref('general.config.obscure_value', 0); pref('general.config.sandbox_enabled', false); // Enable touch density pref('browser.uidensity', 2); mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/000077500000000000000000000000001516374412500254565ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/AboutMobile.sys.mjs000066400000000000000000000022631516374412500312130ustar00rootroot00000000000000// Copyright 2025 Danny Colin // SPDX-License-Identifier: MPL-2.0 /** * About Mobile * Adapted from toolkit/components/normandy/content/AboutPages.sys.mjs * * TODO: * - Example of a parent/child about page implementation * https://searchfox.org/mozilla-central/source/browser/components/newtab/AboutNewTabRedirector.sys.mjs#444 */ export class AboutMobile { constructor({ chromeUrl, aboutHost, classID, description, uriFlags }) { this.chromeUrl = chromeUrl; this.aboutHost = aboutHost; this.classID = Components.ID(classID); this.description = description; this.uriFlags = uriFlags; } getURIFlags() { return this.uriFlags; } newChannel(uri, loadInfo) { const newURI = Services.io.newURI(this.chromeUrl); const channel = Services.io.newChannelFromURIWithLoadInfo(newURI, loadInfo); channel.originalURI = uri; if (this.uriFlags & Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT) { const principal = Services.scriptSecurityManager.createContentPrincipal( uri, {} ); channel.owner = principal; } return channel; } } AboutMobile.prototype.QueryInterface = ChromeUtils.generateQI(["nsIAboutModule"]); mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/PrefManager.sys.mjs000066400000000000000000000037131516374412500312010ustar00rootroot00000000000000// Copyright 2025 Danny Colin // SPDX-License-Identifier: MPL-2.0 // TODO: // - Use PoliciesUtils and Service.prefs.* instead of our own module // https://searchfox.org/mozilla-central/source/browser/components/enterprisepolicies/Policies.sys.mjs#2808 export class PrefManager { static pref(prefName, value) { try { var prefBranch = getPrefBranch(); if (typeof value == "string") { if (gIsUTF8) { prefBranch.setStringPref(prefName, value); return; } prefBranch.setCharPref(prefName, value); } else if (typeof value == "number") { prefBranch.setIntPref(prefName, value); } else if (typeof value == "boolean") { prefBranch.setBoolPref(prefName, value); } } catch (e) { console.error(e); } } static defaultPref(prefName, value) { try { const prefBranch = Services.prefs.getDefaultBranch(null); if (typeof value == "string") { const gIsUTF8 = true; if (gIsUTF8) { prefBranch.setStringPref(prefName, value); return; } prefBranch.setCharPref(prefName, value); } else if (typeof value == "number") { prefBranch.setIntPref(prefName, value); } else if (typeof value == "boolean") { prefBranch.setBoolPref(prefName, value); } } catch (e) { console.error(e); } } static getPref(prefName) { try { var prefBranch = getPrefBranch(); switch (prefBranch.getPrefType(prefName)) { case prefBranch.PREF_STRING: if (gIsUTF8) { return prefBranch.getStringPref(prefName); } return prefBranch.getCharPref(prefName); case prefBranch.PREF_INT: return prefBranch.getIntPref(prefName); case prefBranch.PREF_BOOL: return prefBranch.getBoolPref(prefName); default: return null; } } catch (e) { console.error(e); } return undefined; } }; StyleSheetManager.sys.mjs000066400000000000000000000025021516374412500323120ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules// Copyright 2025 Danny Colin // SPDX-License-Identifier: MPL-2.0 const { AppConstants } = ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs"); export class StyleSheetManager { constructor() { try { const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService( Ci.nsIStyleSheetService ); const sharedStyleURI = Services.io.newURI( "chrome://mobileconfigfirefox/content/themes/shared/main.css" ); sss.loadAndRegisterSheet( sharedStyleURI, Ci.nsIStyleSheetService.USER_SHEET ); let channelStyleURI; if (AppConstants.IS_ESR) { channelStyleURI = Services.io.newURI( `chrome://mobileconfigfirefox/content/themes/esr/main.css` ); } else { channelStyleURI = Services.io.newURI( `chrome://mobileconfigfirefox/content/themes/release/main.css` ); } sss.loadAndRegisterSheet( channelStyleURI, Ci.nsIStyleSheetService.USER_SHEET ); } catch (e) { console.error("Error adding dynamic stylesheet:", e); } } } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/TabCounter.sys.mjs000066400000000000000000000030101516374412500310460ustar00rootroot00000000000000// Copyright 2026 Peter Mack // SPDX-License-Identifier: MPL-2.0 export class TabCounter { init() { const windowListener = { onOpenWindow: (xulWindow) => { const window = xulWindow.docShell.domWindow; window.addEventListener('load', () => { if (window.location.href !== 'chrome://browser/content/browser.xhtml') return; this._setupForWindow(window); }, { once: true }); }, }; Services.wm.addListener(windowListener); const windows = Services.wm.getEnumerator('navigator:browser'); while (windows.hasMoreElements()) { const window = windows.getNext(); if (window.document.readyState === 'complete') { this._setupForWindow(window); } else { window.addEventListener('load', () => this._setupForWindow(window), { once: true }); } } } _setupForWindow(window) { const updateCount = () => { const count = window.gBrowser.tabs.length; const displayValue = count > 99 ? '∞' : count; window.document.documentElement.style.setProperty('--tab-count', `"${displayValue}"`); }; updateCount(); const container = window.gBrowser.tabContainer; container.addEventListener('TabOpen', updateCount); container.addEventListener('TabClose', updateCount); container.addEventListener('TabMove', updateCount); } } UserAgentManager.sys.mjs000066400000000000000000000061321516374412500321210ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules// Copyright 2025 Danny Colin // SPDX-License-Identifier: MPL-2.0 import { PrefManager } from 'chrome://mobileconfigfirefox/content/PrefManager.sys.mjs' import { AppConstants } from 'resource://gre/modules/AppConstants.sys.mjs' export class UserAgentManager { constructor() { const APP_VERSION = `${AppConstants.MOZ_APP_VERSION.split(".")[0]}.0`; // We added `Mobile;` to the default Firefox Desktop user agent const UA_FIREFOX_DESKTOP = `Mozilla/5.0 (X11; Linux x86_64; Mobile; rv:${APP_VERSION}) Gecko/20100101 Firefox/${APP_VERSION}`; const UA_FIREFOX_ANDROID = `Mozilla/5.0 (Android 15; Mobile; rv:${APP_VERSION}) Gecko/${APP_VERSION} Firefox/${APP_VERSION}`; // Google version API: https://developer.chrome.com/docs/web-platform/versionhistory/reference const UA_CHROME_ANDROID = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.116 Mobile Safari/537.36"; const UA_CHROME_CHROMEOS = "Mozilla/5.0 (X11; CrOS aarch64 16503.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.172 Safari/537.36"; // Set default user agent PrefManager.defaultPref('general.useragent.override', UA_FIREFOX_DESKTOP); const userAgentRules = { // Google // FIX: Google login not trusting the browser "^https?://accounts.google.com($|/)": UA_FIREFOX_DESKTOP, // FIX: Google Search showing up as the old layout "^https?://(www.)?google.com($|/)": UA_FIREFOX_ANDROID, // FIX: ??? "^https?://drive.google.com($|/)": UA_CHROME_ANDROID, // FIX: Google Maps search bar not being interactive "^https?://(www.)?google.com/maps($|/)": UA_FIREFOX_DESKTOP, "^https?://maps.google.com($|/)": UA_FIREFOX_DESKTOP, // Firefox // FIX: Sync login not completing "^https?://accounts.firefox.com($|/)": UA_FIREFOX_DESKTOP, // Mozilla // FIX: AMO thinks we want the android extensions "^https?://addons.mozilla.org($|/)": UA_FIREFOX_DESKTOP, // Youtube // FIX: YouTube fullscreen acting weird "^https?://(m.)?youtube.com($|/)": UA_FIREFOX_ANDROID, // Netflix // FIX: Netflix refusing to playback even if EME is working "^https?://(www.)?netflix.com($|/)": UA_CHROME_CHROMEOS, }; const requestObserver = { observe: function(subject, topic, data) { if (topic == "http-on-modify-request") { const httpChannel = subject.QueryInterface(Ci.nsIHttpChannel); const uri = httpChannel.URI.spec; for (const [urlPattern, userAgentRule] of Object.entries(userAgentRules)) { if (new RegExp(urlPattern).test(uri)) { httpChannel.setRequestHeader("User-Agent", userAgentRule, false); break; } } } } }; const observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); observerService.addObserver(requestObserver, "http-on-modify-request", false); } } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/000077500000000000000000000000001516374412500277605ustar00rootroot00000000000000aboutmobile.css000066400000000000000000000001561516374412500327170ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/* Copyright 2025 Danny Colin * SPDX-License-Identifier: MPL-2.0 */ :root {} body { padding: 0.5rem; } aboutmobile.js000066400000000000000000000043451516374412500325470ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/* Copyright 2025 Danny Colin * SPDX-License-Identifier: MPL-2.0 */ const {classes: Cc, interfaces: Ci, utils: Cu} = Components; class PreferencesObserver { constructor() { this.init(); } init() { const toggles = document.getElementsByTagName("moz-toggle"); for (let toggle of toggles) { let isPrefEnabled = Services.prefs.getBoolPref(toggle.dataset.preference); if (isPrefEnabled) { toggle.setAttribute("pressed", "true"); } } } observe(subject, topic, data) { const toggles = document.getElementsByTagName("moz-toggle"); switch (topic) { case "nsPref:changed": for (let toggle of toggles) { if (toggle.dataset.preference === data) { let isPrefEnabled = Services.prefs.getBoolPref( toggle.dataset.preference ); (isPrefEnabled) ? toggle.setAttribute("pressed", "true") : toggle.removeAttribute("pressed"); } } break; } window.addEventListener("unload", () => { Services.prefs.removeObserver("", aboutMobilePrefObserver); }, { once: true }); } // TODO: // - handle other form elements (e.g. input) handleClick(event) { const target = event.target; switch (target.dataset.preferenceType) { case "bool": Services.prefs.setBoolPref( target.dataset.preference, target.pressed); break; case "number": Services.prefs.setIntPref( target.dataset.preference, target.pressed); break; case "string": Services.prefs.setStringPref( target.dataset.preference, target.pressed); break; } } } /* Entrypoint */ window.onload = (event) => { const preferencesObserver = new PreferencesObserver(); Services.prefs.addObserver("", preferencesObserver.observe); document.addEventListener("click", preferencesObserver.handleClick); }; index.html000066400000000000000000000122441516374412500317010ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile about:mobile

locales/000077500000000000000000000000001516374412500313235ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobileen-US/000077500000000000000000000000001516374412500322525ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/localesbrowser/000077500000000000000000000000001516374412500337355ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/locales/en-USaboutmobile/000077500000000000000000000000001516374412500362375ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/locales/en-US/browseraboutmobile.ftl000066400000000000000000000037571516374412500412640ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/aboutmobile/locales/en-US/browser/aboutmobile# Copyright 2025 Danny Colin # SPDX-License-Identifier: MPL-2.0 # about:mobile aboutmobile-page-title = About Mobile aboutmobile-page-description = Customize your Mobile Config Firefox installation. # General Section aboutmobile-section-general-title = General aboutmobile-preference-mcfShowFocusedTabOnlyEnable = .label = Show focused tab only .description = Don't show multiple tabs, only show the active tab in the Tab Bar (horizontal tabs only) aboutmobile-preference-mcfTabsAlwaysShowCloseButton = .label = Tab close button .description = Show a close button on each tab aboutmobile-preference-mcfToolbarTabCounterEnable = .label = Show tab counter .description = Show the number of opened tabs on the list all tabs icon aboutmobile-preference-mcfToolbarPositionOnTop = .label = Address Bar on top .description = Show Address Bar at the top of the browser aboutmobile-preference-mcfShowTrustButton = .label = Show Protections icon .description = Show Protections icon in the address bar aboutmobile-preference-mcfAppmenuShowAllEntries = .label = Show full App Menu .description = Don't hide any items in App Menu aboutmobile-preference-browserUrlbarTrimHttps = .label = Always show website's protocol .description = Show https prefix in the tab url # Privacy Section aboutmobile-section-privacy-title = Privacy aboutmobile-preferences-appShieldOptoutstudiesEnabled = .label = Disable Firefox Studies aboutmobile-preferences-toolkitTelemetryEnabled = .label = Disable Firefox Telemetry # Features Section aboutmobile-section-features-title = Unsupported Features aboutmobile-section-features-description = By default, Mobile Config Firefox disables a few Firefox features that do not work well on mobile yet. You can reenable them if you wish. aboutmobile-preferences-mediaVideocontrolsPictureInPictureEnabled = .label = Disable Picture-in-Picture aboutmobile-preference-mcfContextmenuShowInspector = .label = Show Inspect in Context Menu mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/boot.sys.mjs000066400000000000000000000134731516374412500277610ustar00rootroot00000000000000// Copyright 2025 Danny Colin // SPDX-License-Identifier: MPL-2.0 const {classes: Cc, interfaces: Ci, utils: Cu} = Components; const Services = globalThis.Services; const { AppConstants } = ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs"); const IS_ESM_READY = parseInt(AppConstants.MOZ_APP_VERSION, 10) >= 128; const { FileUtils } = IS_ESM_READY ? ChromeUtils.importESModule("resource://gre/modules/FileUtils.sys.mjs") : Cu.import("resource://gre/modules/FileUtils.jsm"); const { PrefManager } = ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/PrefManager.sys.mjs' ); const { UserAgentManager } = ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/UserAgentManager.sys.mjs' ); const { StyleSheetManager } = ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/StyleSheetManager.sys.mjs' ); const { AboutMobile } = ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/AboutMobile.sys.mjs' ); const { TabCounter } = ChromeUtils.importESModule( 'chrome://mobileconfigfirefox/content/TabCounter.sys.mjs' ); const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs", }); /** * Set prefereces on startup * * See docs/ for preferences description and reason we're modifying them. */ function set_default_preferences() { PrefManager.defaultPref('apz.allow_zooming', true); PrefManager.defaultPref('apz.allow_double_tap_zooming', true); PrefManager.defaultPref('browser.ai.control.default', 'blocked'); PrefManager.defaultPref('browser.ai.control.translations', 'available'); PrefManager.defaultPref('browser.download.animateNotifications', false); PrefManager.defaultPref('browser.ml.chat.enabled', false); PrefManager.defaultPref('browser.ml.chat.menu', false); PrefManager.defaultPref('browser.newtabpage.enabled', false); PrefManager.defaultPref('browser.search.suggest.enabled', false); PrefManager.defaultPref('browser.tabs.hoverPreview.enabled', false); PrefManager.defaultPref('browser.tabs.inTitlebar', 1); PrefManager.defaultPref('browser.urlbar.clickSelectsAll', true); PrefManager.defaultPref('browser.urlbar.suggest.engines', false); PrefManager.defaultPref('browser.urlbar.suggest.topsites', false); PrefManager.defaultPref('browser.urlbar.trimHttps', true); PrefManager.defaultPref('dom.maxtouchpoints.testing.value', 1); PrefManager.defaultPref('dom.w3c_touch_events.legacy_apis.enabled', true); PrefManager.defaultPref('media.webrtc.camera.allow-pipewire', true); PrefManager.defaultPref("screenshots.browser.component.enabled", false); PrefManager.defaultPref('sidebar.main.tools', 'aichat'); PrefManager.defaultPref('sidebar.verticalTabs.dragToPinPromo.dismissed', true); PrefManager.defaultPref('toolkit.cosmeticAnimations.enabled', false); PrefManager.defaultPref('toolkit.legacyUserProfileCustomizations.stylesheets', true); PrefManager.defaultPref('widget.use-xdg-desktop-portal.file-picker', 1); PrefManager.defaultPref('mcf.tabs.showFocusedTabOnly.enabled', true); PrefManager.defaultPref('mcf.tabs.alwaysShowCloseButton', false); PrefManager.defaultPref('mcf.toolbar.tabCounter.enabled', true); PrefManager.defaultPref('mcf.toolbar.positionOnTop', false); PrefManager.defaultPref('mcf.appmenu.showAllEntries', false); PrefManager.defaultPref('mcf.contextmenu.showInspector', false); PrefManager.defaultPref('mfc.urlbar.showTrustButton', false); } /** * Register about:mobile */ function register_about_mobile() { // TODO: // - Move ComponentRegistrar and factory to the AboutMobile class // - Refactor AboutMobile.sys.mjs to be a generic about:page creator. const Cm = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); const { ComponentUtils } = ChromeUtils.importESModule( "resource://gre/modules/ComponentUtils.sys.mjs" ); const factory = ComponentUtils.generateSingletonFactory(function () { return new AboutMobile({ chromeUrl: "chrome://mobileconfigfirefox/content/aboutmobile/index.html", aboutHost: "mobile", classID: "{6cb98913-a163-482c-9622-4faedc0e923f}", description: "About Mobile Page", uriFlags: Ci.nsIAboutModule.ALLOW_SCRIPT | Ci.nsIAboutModule.IS_SECURE_CHROME_UI, }); }); Cm.registerFactory( Components.ID("{6cb98913-a163-482c-9622-4faedc0e923f}"), "about:mobile", "@mozilla.org/network/protocol/about;1?what=mobile", factory ); } /** * Registers Fluent strings. * * TODO: This should be ideally moved in AboutMobile.sys.mjs */ function register_fluent_sources() { try { const aboutmobileFileSource = new L10nFileSource( "aboutmobile", "app", ["en-US"], `resource://aboutmobile/locales/{locale}/` ); L10nRegistry.getInstance().registerSources([aboutmobileFileSource]); } catch (e) { console.error(`Error on registering fluent files:`, e); } } /** * Bootstrapping */ (function main() { try { set_default_preferences(); const userAgent = new UserAgentManager(); // TODO: // - Can we target chrome or content context separately? // See: https://searchfox.org/mozilla-central/source/dom/interfaces/base/nsIDOMWindowUtils.idl#1891-1915 const stylesheet = new StyleSheetManager(); try { const tabCounter = new TabCounter(); tabCounter.init(); } catch(e) { console.error("TabCounter failed to initialize:", e); } // TODO: // - Fix CSP issue that prevents to load our styles/scripts in about:mobile register_about_mobile(); register_fluent_sources(); } catch(e) { console.log(e); } })(); mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/modules/chrome.manifest000066400000000000000000000001021516374412500304540ustar00rootroot00000000000000content mobileconfigfirefox ./ resource aboutmobile ./aboutmobile mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/policies.json000066400000000000000000000105411516374412500265110ustar00rootroot00000000000000{ "policies": { "DisableFirefoxScreenshots": true, "DisableFirefoxStudies": true, "DisableTelemetry": true, "DisablePocket": true, "NoDefaultBookmarks": true, "OverrideFirstRunPage": "", "OverridePostUpdatePage": "", "Homepage": { "URL": "about:home", "Locked": false, "StartPage": "homepage" }, "FirefoxHome": { "Search": true, "TopSites": false, "Highlights": false, "Pocket": false, "Snippets": false, "Locked": false }, "SearchEngines": { "Default": "DuckDuckGo", "Remove": [ "1&1 Suche", "Allaannonser", "Allegro", "Am Faclair Beag", "Amazon.ca", "Amazon.co.jp", "Amazon.co.uk", "Amazon.com", "Amazon.com.au", "Amazon.de", "Amazon.es", "Amazon.fr", "Amazon.in", "Amazon.it", "Amazon.nl", "Amazon.se", "Atlas", "Azerdict", "Azet", "BBC ┐ BBC Alba", "Bing", "Ceneje.si", "Chambers (UK)", "Cốc Cốc", "DIEC2", "Diccionario RAE", "EUdict Eng->Cro", "Ecosia", "Encyklopedia PWN", "Freelang (br)", "GMX - Búsqueda web", "GMX - Recherche web", "GMX Search", "GMX Shopping", "GMX Suche", "Gule sider", "Heureka", "Hotline", "Kannada Store", "LEO Eng-Deu", "List.am", "Mapy.cz", "Marktplaats.nl", "MercadoLibre Argentina", "MercadoLibre Chile", "MercadoLibre Mexico", "MercadoLivre", "Najdi.si", "Neti", "OLX.ba", "OZON.ru", "Odpiralni Časi", "Ordbok", "Osta", "Palas Print", "Pazaruvaj", "Priberam", "Price.ru", "Prisjakt", "QXL", "Qwant", "Qwant Junior", "Readmoo 讀墨電子書", "SS.lv", "Salidzini.lv", "Seznam", "Tyda.se", "Vatera.hu", "WEB.DE Suche", "Wikiccionari (oc)", "Wolne Lektury", "Yahoo! JAPAN", "Yandex", "Zoznam", "bol.com", "channel", "clid", "eBay", "flip.kz", "mail.com", "mail.com search", "tearma.ie", "Õigekeelsussõnaraamat", "Погодак", "Поиск Mail.Ru", "Яндекс", "מילון מורפיקס", "విక్షనరీ (te)", "พจนานุกรม ลองดู", "ヤフオク!", "亚马逊", "教えて!goo", "楽天市場", "百度", "네이버", "다음" ] }, "Preferences": { "dom.private-attribution.submission.enabled": { "Value": false, "Status": "locked" } }, "UserMessaging": { "WhatsNew": false, "ExtensionRecommendations": false, "FeatureRecommendations": false, "UrlbarInterventions": false, "SkipOnboarding": false }, "ExtensionSettings": { "uBlock0@raymondhill.net": { "installation_mode": "normal_installed", "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi", "default_area": "menupanel" } } } } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/prepare_install.sh000077500000000000000000000015431516374412500275340ustar00rootroot00000000000000#!/bin/sh FIREFOX_DIR="$1" DESTDIR="$2" if ! [ -d "$FIREFOX_DIR"/browser ]; then if [ -d "$FIREFOX_DIR"-esr/browser ]; then echo echo "ERROR: Firefox ESR is installed, but FIREFOX_DIR points to" echo " regular Firefox." echo echo "Run this instead:" echo "$ sudo make FIREFOX_DIR=$FIREFOX_DIR-esr install" echo exit 1 else echo echo "WARNING: FIREFOX_DIR does not exist: $FIREFOX_DIR" echo "This should be fine during packaging. However if you just ran" echo "'make install' manually, consider running 'make uninstall', then" echo "adjusting FIREFOX_DIR (in the Makefile or via environment" echo "variable) and running 'make install' again." echo fi fi if [ -z "$DESTDIR" ] && [ "$(id -u)" != 0 ]; then echo echo "ERROR: run make install as root!" echo echo "$ sudo make FIREFOX_DIR=$FIREFOX_DIR install" echo exit 1 fi mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/prepare_uninstall.sh000077500000000000000000000014041516374412500300730ustar00rootroot00000000000000#!/bin/sh -e FIREFOX_DIR="$1" DESTDIR="$2" echo if [ -z "$DESTDIR" ] && [ "$(id -u)" != 0 ]; then echo "ERROR: run 'make uninstall' as root" echo echo "For example:" echo "$ sudo make FIREFOX_DIR=$FIREFOX_DIR uninstall" echo exit 1 fi echo "You are about to delete some files and directories, where you may" echo "have other firefox customizations than mobile-config-firefox." echo "Check the Makefile if unsure." echo echo "If you want to go back to your distribution's version of" echo "mobile-config-firefox, make sure to reinstall the package" echo "afterwards with the package manager (apk, apt, pacman, ...)." echo echo -n "Do you really want to uninstall mobile-config-firefox? [y/N] " read answer case "$answer" in [yY]) exit 0;; *) exit 1;; esac mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/000077500000000000000000000000001516374412500252735ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/esr/000077500000000000000000000000001516374412500260645ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/esr/main.css000066400000000000000000000001051516374412500275160ustar00rootroot00000000000000/* Copyright 2025 Danny Colin * SPDX-License-Identifier: MPL-2.0 */ mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/release/000077500000000000000000000000001516374412500267135ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/release/chrome/000077500000000000000000000000001516374412500301705ustar00rootroot00000000000000tabmenu.css000066400000000000000000000057101516374412500322610ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/release/chrome/* Copyright 2025 Peter Mack, Oliver Smith * SPDX-License-Identifier: MPL-2.0 */ @media (max-width: 700px) { /* Increase tab width, to have more space for displaying the title of the * website. * The following values are for FF 144+ */ #tabbrowser-tabs { border-inline-start: 0 !important; padding-inline-start: 0 !important; margin-inline-start: 0 !important; --tab-min-width-pref: calc(100vw - 71px) !important; } /* Smaller tab width to allow for private browsing indicator */ :root[privatebrowsingmode="temporary"] #tabbrowser-tabs { --tab-min-width-pref: calc(100vw - 91px) !important; /* width */ } #TabsToolbar { padding-right: 7px !important; } #new-tab-button { padding-left: 4px !important; } :root[privatebrowsingmode="temporary"] #TabsToolbar { padding-right: 1px !important; } :root[privatebrowsingmode="temporary"] #new-tab-button { padding: 0 1px !important; } /* Fix private browsing mode for current Firefox >= 133 */ hbox.private-browsing-indicator-with-label label { display: none; } /* Remove empty space at start/end */ .titlebar-spacer[type="pre-tabs"], .titlebar-spacer[type="post-tabs"] { width: 0px !important; } /* Hide firefox-view tab, as none of the options in about:config hides it on FF 123 */ #firefox-view-button { display: none; } /* Option to show multiple tabs in tab bar */ @media not (-moz-pref("mcf.tabs.showFocusedTabOnly.enabled")) { /* Set small tabs width for small screens */ #tabbrowser-tabs, :root[privatebrowsingmode="temporary"] #tabbrowser-tabs { --tab-min-width: 75px !important; --tab-min-width-pref: 75px !important; --tab-max-width: 150px !important; --tab-max-width-pref: 150px !important; } #private-browsing-indicator-with-label { width: 22px; } /* Optionally show close button on all tabs */ @media -moz-pref("mcf.tabs.alwaysShowCloseButton") { .tab-close-button, .close-icon, #tabbrowser-tabs[closebuttons="activetab"][orient="horizontal"] &:not([selected]) { display: block !important; } } } @media not (-moz-pref("mcf.toolbar.positionOnTop")) { /* Rotate the arrow on the "all tabs" button to point upwards, since the * tabs and searchbar were moved to the bottom. */ @media not -moz-pref("mcf.toolbar.tabCounter.enabled") { #alltabs-button { transform: rotate(180deg) !important; } } } /* All tabs menu: hide scroll buttons */ #scrollbutton-up, #scrollbutton-down { display: none !important; } /* All tabs menu: hide the search and the separator below it. */ #allTabsMenu-searchTabs, #allTabsMenu-tabsSeparator { display: none; } } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/release/main.css000066400000000000000000000002611516374412500303500ustar00rootroot00000000000000/* Copyright 2025 Danny Colin * SPDX-License-Identifier: MPL-2.0 */ /* Chrome Stylesheets */ @import "chrome://mobileconfigfirefox/content/themes/release/chrome/tabmenu.css"; mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/000077500000000000000000000000001516374412500265415ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/000077500000000000000000000000001516374412500300165ustar00rootroot00000000000000browser.css000066400000000000000000000013401516374412500321320ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2022 plata * SPDX-License-Identifier: MPL-2.0 */ @media (max-width: 700px) { @media not (-moz-pref("mcf.toolbar.positionOnTop")) { /* Move navigation bar to bottom */ #browser { order: -1 !important; /* since FF 113 */ } } /* Hide navigation bar in kiosk mode (to prevent bug #29). We can assume FF * is in kiosk mode when fullscreen and max-width conditions are met, * because at this max-width the fullscreen button is hidden * (see appMenu.css). */ #nav-bar[inFullscreen], #TabsToolbar[inFullscreen] { display: none; } /* Hide minimize/maximize/close buttons */ .titlebar-buttonbox-container { display: none; } } findbar.css000066400000000000000000000010541516374412500320560ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2022 Oliver Smith * SPDX-License-Identifier: MPL-2.0 */ @media (max-width: 700px) { .findbar-container { display: flex; flex-direction: row; flex-wrap: wrap; height: 150px !important; } .findbar-textbox { /* Overwrite fixed size, so the X on the right shows up */ width: 100% !important; } .findbar-container checkbox { /* Add space around the buttons, looks nicer and makes it easier to hit * them with the finger. */ padding: 10px 0px; } } popups.css000066400000000000000000000074771516374412500320160ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2025 Oliver Smith, Jesús Higueras, user0, Peter Mack * * SPDX-License-Identifier: MPL-2.0 */ @media (max-width: 700px) { @media not (-moz-pref("mcf.toolbar.positionOnTop")) { /* If the navbar is at the bottom, we need to set an offset to have * the notifications (like the one for installing addons) displayed * on-screen. */ /* fixes for installing extensions */ .popup-notification-panel { margin-top: -100vh !important; } } panel { contain: strict !important; margin: 0 !important; } panel, panel > box.panel-viewcontainer { min-width: 100vw !important; width: 100vw !important; max-width: 100vw !important; max-height: calc(100vh - 88px) !important; min-height: calc(100vh - 88px) !important; } panelview { max-height: 100% !important; } panelview.PanelUI-subView { justify-content: flex-end; } panelview > .panel-subview-body { flex: 0 !important; flex-basis: min-content !important; } panel, box.panel-viewcontainer > box.panel-viewstack { align-content: flex-end; } panelmultiview, box.panel-viewcontainer, box.panel-viewstack, panelview { min-width: 100% !important; max-width: 100% !important; min-height: 0 !important; outline: 0px transparent !important; contain: layout !important; } /* Adjust dialogues like "Confirm before closing multiple * tabs" or "Allow open in app" */ .dialogFrame { max-width: 100%; } body:has(#urlbar[breakout][breakout-extend], #urlbar[breakout][breakout-extend-disabled][open]) #mainPopupSet panel { visibility: hidden !important; pointer-events: none !important; } } @media ((min-width: 701px) or (-moz-pref("mcf.toolbar.positionOnTop"))) { panel, box.panel-viewcontainer > box.panel-viewstack { align-content: flex-start; } panelview.PanelUI-subView { justify-content: flex-start; } } /* CAREFUL: Do not gate these (or anything that runs inside a popup/panel) * behind a media query! * If you do, there will be a size calculation conflict between the DOM in * the main window and the popup/panel, and the popup/panel will be sized * incorrectly. */ @media not (-moz-pref("mcf.appmenu.showAllEntries")) { #appMenu-extensions-themes-button, #appMenu-passwords-button, #appMenu-help-button2, #appMenu-help-button2 + toolbarseparator, #appMenu-more-button2, #appMenu-report-broken-site-button { display: none !important; } } /* Hide some context menu items, * hide 'Customize Toolbar' in overflow menu */ #context-inspect-a11y, #context-savelinktopocket, #context-searchselect, #context-sendlinktodevice, #context-viewpartialsource-selection, #context-sep-selectall, #frame-sep, #overflowMenu-customize-button { display: none !important } /* Hide by default, but optionally unhide Inspector */ @media not (-moz-pref("mcf.contextmenu.showInspector")) { #context-inspect, #inspect-separator { display: none !important } } menupopup { width: max-content !important; min-width: max-content !important; max-width: max-content !important; block-size: max-content !important; max-block-size: max-content !important; min-block-size: max-content !important; } /* Fix webextension popups */ browser.webextension-popup-browser { background: transparent !important; min-height: 40vh !important; max-height: 80vh !important; } /* Make large extensions (e.g., uBlock origin) popups useful * by allowing them to be horizontally scrolled */ .webextension-popup-browser, .webextension-popup-stack { max-width: 100vw !important; width: 100% !important; overflow-x: scroll !important; } root.css000066400000000000000000000002241516374412500314320ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2022 Oliver Smith * SPDX-License-Identifier: MPL-2.0 */ /* Reduce minimum window width */ :root { min-width: 300px !important; } sidebar.css000066400000000000000000000011451516374412500320630ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2026 Peter Mack * * SPDX-License-Identifier: MPL-2.0 */ /* Optionally show close button on all tabs */ @media -moz-pref("mcf.tabs.alwaysShowCloseButton") { .tab-close-button, .close-icon, #tabbrowser-tabs[closebuttons="activetab"][orient="horizontal"] &:not([selected]) { display: block !important; } } /* Apply this customization only on smaller screens in portrait mode */ @media (orientation: portrait) and (max-width: 720px) { /* Hide sidebar when vertical tabs are enabled */ #sidebar-main:not([sidebar-launcher-expanded]) { display: none !important; } } tabcounter.css000066400000000000000000000065111516374412500326220ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2026 user0, Peter Mack * SPDX-License-Identifier: MPL-2.0 */ /* Source from reddit users /u/BatDogOnBatMobile, /u/moko1960, and /u/It_Was_The_Other_Guy * https://old.reddit.com/r/FirefoxCSS/comments/s4wsww/ * https://old.reddit.com/r/FirefoxCSS/comments/yb8tr9/ */ @media (-moz-pref("mcf.toolbar.tabCounter.enabled")) and (not (-moz-pref("sidebar.verticalTabs"))) { /* Show Tab Manager Menu button */ #alltabs-button { display: -moz-box !important; } /* Tab Manager Menu button tab counter */ #alltabs-button > .toolbarbutton-badge-stack > .toolbarbutton-icon { visibility: collapse !important; } #alltabs-button > .toolbarbutton-badge-stack { position: relative !important; } #alltabs-button > .toolbarbutton-badge-stack::before { content: var(--tab-count, "0"); color: var(--toolbarbutton-icon-fill); opacity: var(--toolbarbutton-icon-fill-opacity); position: absolute; bottom: var(--toolbarbutton-inner-padding); left: 50%; transform: translateX(-50%); /* Tab Manager Menu button styling inspired by Firefox for Android */ border: 1px solid var(--toolbarbutton-icon-fill); border-radius: 3px; padding: 1px 5px; font-size: 10px !important; font-weight: 600 !important; } #alltabs-button > .toolbarbutton-badge-stack { border-radius: var(--toolbarbutton-border-radius); } } @media (-moz-pref("mcf.toolbar.tabCounter.enabled")) and (-moz-pref("sidebar.verticalTabs")) { /* Show sidebar button */ #sidebar-button { display: -moz-box !important; } /* ESR 140 has no .toolbarbutton-badge-stack */ #sidebar-button > .toolbarbutton-badge-stack > .toolbarbutton-icon, #sidebar-button:not(:has(.toolbarbutton-badge-stack)) > .toolbarbutton-icon { visibility: collapse !important; } #sidebar-button > .toolbarbutton-badge-stack { position: relative !important; } /* ESR 140 */ #sidebar-button:not(:has(.toolbarbutton-badge-stack)) { position: relative !important; min-width: 32px !important; min-height: 32px !important; } #sidebar-button > .toolbarbutton-badge-stack::before { content: var(--tab-count, "0"); color: var(--toolbarbutton-icon-fill); opacity: var(--toolbarbutton-icon-fill-opacity); position: absolute; bottom: var(--toolbarbutton-inner-padding); left: 50%; transform: translateX(-50%); border: 1px solid var(--toolbarbutton-icon-fill); border-radius: 3px; padding: 1px 5px; font-size: 10px !important; font-weight: 600 !important; } /* ESR 140 */ #sidebar-button:not(:has(.toolbarbutton-badge-stack))::before { content: var(--tab-count, "0"); color: var(--toolbarbutton-icon-fill); opacity: var(--toolbarbutton-icon-fill-opacity); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border: 1px solid var(--toolbarbutton-icon-fill); border-radius: 3px; padding: 1px 5px; font-size: 10px !important; font-weight: 600 !important; } #sidebar-button > .toolbarbutton-badge-stack { border-radius: var(--toolbarbutton-border-radius); } } tabmenu.css000066400000000000000000000056721516374412500321160ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2025 Peter Mack, Oliver Smith * SPDX-License-Identifier: MPL-2.0 */ @media (max-width: 700px) { /* Increase tab width, to have more space for displaying the title of the * website, supporting uidensity=touch - FF 144+ will no longer need * specific values for uidensity=touch. * Note that -94px/-124px would be enough for current (136), but ESR 128 * requires more (-102px/-132px) */ #tabbrowser-tabs { border-inline-start: 0 !important; --tab-min-width-pref: calc(100vw - 86px) !important; :root[uidensity=touch] & { --tab-min-width-pref: calc(100vw - 102px) !important; } } /* Smaller tab width to allow for private browsing indicator */ :root[privatebrowsingmode="temporary"] #tabbrowser-tabs { --tab-min-width-pref: calc(100vw - 116px) !important; /* width */ :root[uidensity=touch] & { --tab-min-width-pref: calc(100vw - 132px) !important; } } /* Fix private browsing mode for current Firefox >= 133 */ hbox.private-browsing-indicator-with-label label { display: none; } /* Hide firefox-view tab, as none of the options in about:config hides it on FF 123 */ #firefox-view-button { display: none; } /* Option to show multiple tabs in tab bar */ @media not (-moz-pref("mcf.tabs.showFocusedTabOnly.enabled")) { /* Set small tabs width for small screens */ #tabbrowser-tabs, :root[privatebrowsingmode="temporary"] #tabbrowser-tabs { --tab-min-width: 75px !important; --tab-min-width-pref: 75px !important; --tab-max-width: 150px !important; --tab-max-width-pref: 150px !important; } /* Remove empty space at start/end */ .titlebar-spacer[type="pre-tabs"], .titlebar-spacer[type="post-tabs"] { width: 0px !important; } #private-browsing-indicator-with-label { width: 22px; } /* Optionally show close button on all tabs */ @media -moz-pref("mcf.tabs.alwaysShowCloseButton") { .tab-close-button, .close-icon, #tabbrowser-tabs[closebuttons="activetab"][orient="horizontal"] &:not([selected]) { display: block !important; } } } @media not (-moz-pref("mcf.toolbar.positionOnTop")) { /* Rotate the arrow on the "all tabs" button to point upwards, since the * tabs and searchbar were moved to the bottom. */ @media not -moz-pref("mcf.toolbar.tabCounter.enabled") { #alltabs-button { transform: rotate(180deg) !important; } } } /* All tabs menu: hide scroll buttons */ #scrollbutton-up, #scrollbutton-down { display: none !important; } /* All tabs menu: hide the search and the separator below it. */ #allTabsMenu-searchTabs, #allTabsMenu-tabsSeparator { display: none; } } urlbar.css000066400000000000000000000130401516374412500317360ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/chrome/* Copyright 2025 Oliver Smith, Peter Mack * SPDX-License-Identifier: MPL-2.0 */ /* Reduce minimum window width */ #urlbar-container { min-width: 150px !important; flex-shrink: 1 !important; } @media (max-width: 700px) { /* Remove various buttons left and right of the URL bar: - forward-button: also reachable via longpress of back button - home-button: not important enough - customizableui-special-spring: empty space - library-button: also reachable via PanelUI-menu-button - sidebar-button: not useful on mobile (we try to gain horizontal space) - fxa-toolbar-menu-button: firefox cloud stuff, also reachable via #PanelUI-menu-button */ /* #back-button */ #forward-button, /* #reload-button */ #home-button, #customizableui-special-spring1, /* (urlbar) */ #customizableui-special-spring2, #library-button, #sidebar-button, #fxa-toolbar-menu-button /* #PanelUI-menu-button */ { display: none !important; } /* Show sidebar-button when vertical tabs are enabled */ @media -moz-pref("sidebar.verticalTabs") { #sidebar-button { display: flex !important; } /* Hide spacer and alltabs-button*/ #alltabs-button, #vertical-spacer { display: none; } } #urlbar { padding: 0px 5px; } /* Smaller font: show more of the URL */ #urlbar-input { font-size: 9pt !important; } /* urlbar: Hide translate and picture-in-picture icon */ #urlbar #translations-button, #urlbar #picture-in-picture-button, #urlbar #identity-box #identity-permission-box { display: none !important; } /* hide protections container by default */ @media not (-moz-pref("mfc.urlbar.showTrustButton")) { #tracking-protection-icon-container { display: none !important; } } /* Focused urlbar: hide all icons around it, so we have more space to edit the URL */ #urlbar[focused] #remote-control-box, #urlbar[focused] #identity-box, #urlbar[focused] #tracking-protection-icon-container, /* #urlbar-input */ #urlbar[focused] #reader-mode-button, #urlbar[focused] #page-action-buttons, #urlbar[focused] .urlbar-go-button { display: none; } /* Fixing invisible URL bar on FF 133+ * Making the active URL bar wider for better text input and * a wider popout */ #urlbar[breakout][breakout-extend] { left: 11vw !important; /* should be 10, but 10 looks off-center */ width: 80vw !important; bottom: 0 !important; z-index: 5 !important; } @media not (-moz-pref("mcf.toolbar.positionOnTop")) { #urlbar[breakout][breakout-extend] { top: 0 !important; align-content: flex-end !important; } } @media -moz-pref("mcf.toolbar.positionOnTop") { #urlbar[breakout][breakout-extend] { top: calc(1.1 * --urlbar-container-height) !important; align-content: flex-start !important; } } /* Label of "identity icons", e.g. firefox specific pages look weird * when ellipsed, e.g. "F..x" instead of "Firefox". So just hide this * label. The icon itself is still visible. */ #identity-icon-label { display: none; } /* Move urlbar results to cover the whole displayed website, instead of * being below the urlbar. */ .urlbarView { position: fixed !important; inset: 84px 0px 0px 0px; width: 100% !important; background: var(--arrowpanel-background); margin: 0px !important; margin-inline: 0px !important; border-inline: 0px !important; overflow-y: auto !important; overflow-x: none !important; scrollbar-width: none; } @media not (-moz-pref("mcf.toolbar.positionOnTop")) { .urlbarView { inset: 0px 0px 84px 0px; } } /* Bookmarks toolbar. Firefox shows it for some reason when opening a * private browsing window, even if it is not enabled in the normal * window view. Hide it for mobile, it eats precious space and can't be * organized properly on mobile anyway. Using the searchbar to filter * through bookmarks is much more efficient. */ #PersonalToolbar { display: none; } /* If the bookmarks toolbar is configured to only show on the new tab page, * Firefox makes the toolbar overlap the browser. When it's then hidden by * the rule above, the urlbar is pushed off the bottom of the window. To * prevent this, set the height of the overlapped toolbar to 0. */ :root { --bookmarks-toolbar-overlapping-browser-height: 0 !important; } /* Smaller private browsing indicator with vertical tabs */ @media -moz-pref("sidebar.verticalTabs") { .private-browsing-indicator-icon { width: 10px !important; height: 10px !important; } .private-browsing-indicator-with-label { align-items: unset !important; margin-inline: 0 !important; } :root[privatebrowsingmode="temporary"] #PanelUI-menu-button { padding-right: 0 !important; } } } /* Even though amazon is removed as search engine in policies.json, it gets * installed when FF starts for the first time. Hide the button in "This time, * search with" inside the urlbar. Match localizations like Amazon.de with this * regex. */ button[id^="urlbar-engine-one-off-item-Amazon"] { display: none !important; } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/000077500000000000000000000000001516374412500302135ustar00rootroot00000000000000addons.css000066400000000000000000000010461516374412500321170ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:addons"), url-prefix("about:addons") { :root { --section-width: min(664px, 100%) !important; } @media (max-width: 700px) { :root, :host(.anonymous-content-host) { --page-main-content-width: calc(100vw - 60px) !important; } .main-search .search-label { display: none; } #mainPrefPane, #fxaContentWrapper { max-width: calc(100vw - 60px); } } } config.css000066400000000000000000000012251516374412500321130ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:config") { #search-container, #toolbar, #prefs { min-width: 300px !important; } @media (max-width: 644px) { #toolbar { flex-direction: column; } #about-config-search { max-width: 100%; } #prefs { word-wrap: anywhere; } .checkbox-container { margin-top: 5px; } } @media (max-width: 500px) { tr { font-size: 12px; } th { padding-left: 8px !important; } } } home.css000066400000000000000000000006201516374412500315740ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Oliver Smith * SPDX-License-Identifier: MPL-2.0 */ @namespace url("http://www.w3.org/1999/xhtml"); @-moz-document url("about:home"), url("about:blank"), url("about:newtab") { @media (max-width: 700px) { .outer-wrapper.only-search { padding-top: 50px !important; } .customize-menu { width: 100% !important; } } } license.css000066400000000000000000000004311516374412500322660ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:license") { @media (max-width: 500px) { .license-header { background-image: none !important; padding-inline-end: unset !important; } } } logins.css000066400000000000000000000010371516374412500321420ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:logins") { .container { min-width: 300px !important; } @media (max-width: 700px) { body { --sidebar-width: 200px !important; grid-template-columns: var(--sidebar-width) 1fr !important; } .edit-button, .delete-button { font-size: 0 !important; background-position: center; } #branding-logo { display: none; } } } policies.css000066400000000000000000000004321516374412500324540ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:policies"), url-prefix("about:policies") { @media (max-width: 830px) { tbody.collapsible td, .active-policies td { word-wrap: anywhere; } } } preferences.css000066400000000000000000000012021516374412500331420ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document regexp("about:preferences.*") { .sticky-container { display: flex; } #policies-container { display: none; } /* #sync page */ .fxaMobilePromo { display: none; } @media (max-width: 700px) { :root, :host(.anonymous-content-host) { --page-main-content-width: calc(100vw - 60px); } .fxaSyncIllustration, .fxaProfileImage { display: none; } #mainPrefPane, #fxaContentWrapper { max-width: calc(100vw - 60px); } } } protections.css000066400000000000000000000023741516374412500332250ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:protections") { #report-content { width: calc(100% - 16px) !important; max-width: 800px !important; } /* hide element with Firefox for Android and iOS ad */ .lockwise-card .card-body, #mobile-hanger { display: none !important; } @media (max-width: 800px) { #report-content { margin: 16px 8px !important; } .icon { width: 32px !important; height: 32px !important; } .body-wrapper { /* make trackers report to fill the entire card width */ grid-column-start: 1 !important; grid-column-end: -1 !important; } #manage-protections, #sign-up-for-monitor-link, #save-passwords-button, #get-proxy-extension-link { /* move button on a separate row */ grid-area: 2 / 1 / 2 / 6 !important; } .card-header .wrapper { grid-row-gap: 8px !important; } .card:not(.has-logins) .wrapper div:nth-child(1) { /* make card title to use more width */ grid-column-end: -1 !important; } } } reader.css000066400000000000000000000024341516374412500321130ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Tim Magee * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url-prefix("about:reader") { @media (max-width: 800px) { .toolbar-container { margin-inline-start: 0px !important; position: fixed !important; top: 0px !important; height: 74px !important; width: 100% !important; left: 0px !important; background-color: rgba(255,255,255,1); } .dark .toolbar-container { background-color: rgba(3,3,3,1); } .sepia .toolbar-container { background-color: rgba(244,236,216,1); } .toolbar { margin-inline-start: unset !important; width: unset !important; } .dropdown li { display: inline !important; } .dropdown { display: inline; } body { padding: 74px 0px !important; margin: 15px 15px 0px !important; --content-width: unset !important; } .header > h1 { margin: 10px 0 !important; } .header > .meta-data { margin: 0 0 5px !important; } .header > .credits { margin: 0 0 5px !important; } } } rights.css000066400000000000000000000004271516374412500321510ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document url("about:rights") { @media (max-width: 500px) { .rights-header { background-image: none !important; padding-inline-end: unset !important; } } } sidebar.css000066400000000000000000000021431516374412500322570ustar00rootroot00000000000000mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/content/* Copyright 2022 plata, Anri Dellal * SPDX-License-Identifier: MPL-2.0 */ @-moz-document regexp("about:(preferences|addons|policies).*") { .category-icon { user-select: none !important; } @media (max-width: 700px) { /* avoid that sidebar is too wide */ :root { --in-content-sidebar-width: 50px !important; --sidebar-width: 50px !important; --size-sidebar-narrow: 50px !important; } /* reduce space around category icons */ #categories > .category { margin-inline-start: auto !important; padding-inline: auto !important; } .category-name { display: none !important; } /* reduce space around footer icons (addons, help) */ .sidebar-footer-list { margin-inline: auto !important; padding-inline: auto !important; } .sidebar-footer-label { display: none !important; } } @media (max-height: 400px) { #categories { margin-top: 8px !important; } } } mobile-config-firefox-5.2.0-f8dab993181154c4ee2d4ba99f2592ff62163743/src/themes/shared/main.css000066400000000000000000000032071516374412500302010ustar00rootroot00000000000000/* Copyright 2025 Danny Colin * SPDX-License-Identifier: MPL-2.0 */ /* Chrome Stylesheets */ @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/browser.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/findbar.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/popups.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/root.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/sidebar.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/tabcounter.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/tabmenu.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/chrome/urlbar.css"; /* Content Stylesheets */ @import "chrome://mobileconfigfirefox/content/themes/shared/content/addons.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/config.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/home.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/license.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/logins.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/policies.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/preferences.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/protections.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/reader.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/rights.css"; @import "chrome://mobileconfigfirefox/content/themes/shared/content/sidebar.css";