pax_global_header00006660000000000000000000000064147451712460014525gustar00rootroot0000000000000052 comment=3b9f0e8d3d8bd102e1636a22afffafe00777d30b distrobox-1.8.1.2/000077500000000000000000000000001474517124600137115ustar00rootroot00000000000000distrobox-1.8.1.2/.gitattributes000066400000000000000000000000231474517124600165770ustar00rootroot00000000000000* text=auto eol=lf distrobox-1.8.1.2/.github/000077500000000000000000000000001474517124600152515ustar00rootroot00000000000000distrobox-1.8.1.2/.github/ISSUE_TEMPLATE/000077500000000000000000000000001474517124600174345ustar00rootroot00000000000000distrobox-1.8.1.2/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000017501474517124600221310ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve title: "[Error]" labels: bug assignees: '' --- Please, before opening a bug: - make sure you've read the documentation. - Ensure there isn't already an open issue about this. - Ensure there isn't already a closed/resolved issue about this. **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior **Expected behavior** A clear and concise description of what you expected to happen. **Logs** Run the commands with `--verbose` and post the log here as a file upload Attach also the output of `podman logs` or `docker logs`, possibly with `--latest` flag **Desktop (please complete the following information):** - Are you using podman, docker or lilipod? - Which version or podman, docker or lilipod? - Which version of distrobox? - Which host distribution? - How did you install distrobox? **Additional context** Add any other context about the problem here. distrobox-1.8.1.2/.github/ISSUE_TEMPLATE/discussion-issue-template.md000066400000000000000000000011531474517124600251000ustar00rootroot00000000000000--- name: Discussion issue template about: Describe this issue template's purpose here. title: "[Discussion]" labels: question assignees: '' --- Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] Describe the solution you'd like A clear and concise description of what you want to happen. Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. Additional context Add any other context or screenshots about the feature request here. distrobox-1.8.1.2/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000011501474517124600231560ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project title: "[Suggestion]" labels: enhancement assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. distrobox-1.8.1.2/.github/dependabot.yml000066400000000000000000000001671474517124600201050ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "monthly" distrobox-1.8.1.2/.github/workflows/000077500000000000000000000000001474517124600173065ustar00rootroot00000000000000distrobox-1.8.1.2/.github/workflows/compatibility.yml000066400000000000000000000177441474517124600227170ustar00rootroot00000000000000--- # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [main] pull_request: branches: [main] types: [opened, synchronize, ready_for_review, edited, labeled] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: inputs: run_always: description: 'Run even if no files are changed' required: true type: boolean # Check if we indeed modified distrobox stuff jobs: check_changes: runs-on: ubuntu-latest if: >- contains( github.event.pull_request.labels.*.name, 'CI') || github.ref == 'refs/heads/main' outputs: distrobox_changed: ${{ steps.check_file_changed.outputs.distrobox_changed }} steps: - uses: actions/checkout@v4 with: # Checkout as many commits as needed for the diff fetch-depth: 2 # Fetch from compatibility table all the distros supported - id: check_file_changed run: | if git diff --name-only HEAD^ HEAD | grep -Ev "host-exec|generate-entry|ephemeral|upgrade" | grep -E "^distrobox|compatibility.md"; then echo "::set-output name=distrobox_changed::True" else echo "::set-output name=distrobox_changed::False" fi # Prepare distros matrix setup: runs-on: ubuntu-latest needs: check_changes outputs: targets: ${{ steps.set-matrix.outputs.targets }} if: >- needs.check_changes.outputs.distrobox_changed == 'True' || github.event.inputs.run_always == 'True' steps: - uses: actions/checkout@v4 # Fetch from compatibility table all the distros supported - id: set-matrix run: | skip_list="bazzite|slackware|stream8|ublue" echo "::set-output name=targets::$(sed -n -e '/| Alma/,/| Void/ p' docs/compatibility.md | cut -d'|' -f 4 | sed 's/
/\n/g' | tr -d ' ' | sed '/^[[:space:]]*$/d' | sort -u | grep -Ev "${skip_list}" | jq -R -s -c 'split("\n")[:-1]')" run: runs-on: ubuntu-latest needs: setup timeout-minutes: 30 strategy: fail-fast: false matrix: distribution: ${{fromJSON(needs.setup.outputs.targets)}} container_manager: ["podman"] #, "docker"] env: XDG_CACHE_HOME: "/tmp/" DBX_CONTAINER_MANAGER: ${{ matrix.container_manager }} steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v4 # Ensure distrobox create works: - name: Distrobox create shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ${DBX_CONTAINER_MANAGER} pull "${image}" # ./distrobox create --yes --absolutely-disable-root-password-i-am-really-positively-sure -i "${image}" --name "${container_name}" case "${container_name}" in *init*) echo "SYSTEMD DETECTED: creating container with --init..." ./distrobox create --yes -i "${image}" --hostname "${container_name}" --name "${container_name}" --init --unshare-all ;; *) ./distrobox create --yes -i "${image}" --hostname "${container_name}" --name "${container_name}" ;; esac # Ensure distrobox enter and init works: - name: Distrobox enter - init shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" case "${container_name}" in *init*) echo "SYSTEMD DETECTED: performing systemctl check..." ./distrobox enter --name "${container_name}" -- systemctl is-system-running | grep -E "degraded|running|starting" ;; *) ./distrobox enter --name "${container_name}" -- whoami ;; esac # Ensure distrobox enter and init works: - name: Distrobox enter - user shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" # Assert that distrobox exported binary indeed works set -x command_output="$(./distrobox enter --name "${container_name}" -- whoami | tr -d '\r' | tr -d '^@')" expected_output="$(whoami)" if [ "$command_output" != "$expected_output" ]; then exit 1 fi # Ensure distrobox enter and init works: - name: Distrobox enter - command shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" # Assert that distrobox exported binary indeed works set -x command_output="$(./distrobox enter --name "${container_name}" -- uname -n | tr -d '\r' | tr -d '^@')" expected_output="${container_name}" if [ "$command_output" != "$expected_output" ]; then exit 1 fi # Ensure distrobox export works: - name: Distrobox export shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox enter "${container_name}" -- distrobox-export --bin /bin/uname --export-path ${HOME}/ # Assert that distrobox exported binary indeed works set -x command_output="$(${HOME}/uname -n | tr -d '\r' | tr -d '^@')" expected_output="${container_name}" if [ "$command_output" != "$expected_output" ]; then exit 1 fi # Ensure distrobox export works: - name: Distrobox export - sudo if: matrix.container_manager != 'docker' shell: 'script -q -e -c "bash {0}"' run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox enter "${container_name}" -- distrobox-export --sudo --bin /bin/uname --export-path ${HOME}/ # Assert that distrobox exported binary indeed works set -x command_output="$(${HOME}/uname -n | tr -d '\r' | tr -d '^@')" expected_output="${container_name}" if [ "$command_output" != "$expected_output" ]; then exit 1 fi # Ensure distrobox upgrade works: - name: Distrobox upgrade run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox upgrade "${container_name}" # Ensure distrobox list works: - name: Distrobox list run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox list | grep "${container_name}" | grep "${image}" | grep -E "Up|running" # Ensure distrobox stop works: - name: Distrobox stop run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox stop --yes "${container_name}" # Ensure distrobox rm works: - name: Distrobox logs if: ${{ always() }} run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" $DBX_CONTAINER_MANAGER logs "${container_name}" # Ensure distrobox rm works: - name: Distrobox rm if: ${{ always() }} run: | image=${{ matrix.distribution }} container_name="$(basename "${image}" | sed -E 's/[:.]/-/g')" ./distrobox rm --force "${container_name}" $DBX_CONTAINER_MANAGER rmi -f "${image}" distrobox-1.8.1.2/.github/workflows/main.yml000066400000000000000000000110151474517124600207530ustar00rootroot00000000000000# This is a basic workflow to help you get started with Actions name: Lint # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main] pull_request: branches: [main] types: [opened, synchronize, ready_for_review, edited] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: dash: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run dash -n run: | result=0 for file in $(find . -type f -not -path "*.git*" -a -not -path "*completions*"); do if file "$file" | grep -qi shell; then echo "### Checking file $file..." dash -n $file result=$(( result + $? )) fi done exit $result shfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run shfmt run: | result=0 podman pull docker.io/peterdavehello/shfmt:latest for file in $(find . -type f -not -path "*.git*"); do if file "$file" | grep -qi shell; then echo "### Checking file $file..." podman run --rm -v "$PWD:/mnt" docker.io/peterdavehello/shfmt:latest shfmt -d -s -ci -sr -kp -fn -i=0 -p /mnt/$file result=$(( result + $? )) fi done exit $result shellcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Exclude from bashate the following rules: # - SC2310 we don't want to exit if errors happen inside a check, that's why we have a check... # - SC2311 don't care if we inherit errexit inside substitutions, we do checks for that. # - SC2312 we already check errors and adding "|| true" everywhere hinders readability. - name: Run shellcheck run: | result=0 podman pull docker.io/koalaman/shellcheck:stable for file in $(find . -type f -name ".*" -prune -o -print | grep -v '.git'); do if file "$file" | grep -qi shell; then echo "### Checking file $file..." # Should read the .shellcheckrc file to behave like -s sh -a -o all -Sstyle -Calways -x -e SC2310,SC2311,SC2312 podman run --rm -v "$PWD:/mnt" docker.io/koalaman/shellcheck:stable -a -Sstyle -Calways $file result=$(( result + $? )) fi done exit $result differential-shellcheck: runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Run Differential ShellCheck uses: redhat-plumbers-in-action/differential-shellcheck@v5 with: severity: style token: ${{ secrets.GITHUB_TOKEN }} bashate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Exclude from bashate the following rules: # - E002 we use tab indentation as suggested by shfmt. # - E003 we use tab indentation as suggested by shfmt. # - E010 for readability allow if/then and for/do to be on different lines. # - E011 for readability allow if/then and for/do to be on different lines. - name: Run bashate run: | sudo pip3 install -U bashate for file in $(find . -type f -not -path "*.git*"); do if file "$file" | grep -qi shell; then echo "### Checking file $file..." bashate -i E002,E003,E010,E011 --max-line-length 120 $file result=$(( result + $? )) fi done exit $result markdownlint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run markdownlint run: | sudo npm install -g markdownlint-cli markdownlint $(find . -name '*.md' | grep -vF './.git') codespell: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: codespell-project/actions-codespell@v2 with: skip: .git,*.pdf,*.1,*.css,*.lock shell-funcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run shell-funcheck run: | curl -L -O https://github.com/89luca89/shell-funcheck/releases/download/v0.0.1/shell-funcheck-amd64 chmod +x ./shell-funcheck-amd64 for i in distrobox*; do ./shell-funcheck-amd64 check "$i" done distrobox-1.8.1.2/.github/workflows/manpages.yml000066400000000000000000000042621474517124600216300ustar00rootroot00000000000000--- # This is a basic workflow to help you get started with Actions name: Docs # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [main] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: # Check changes, cancel job is not. check_changes: runs-on: ubuntu-latest outputs: distrobox_changed: ${{ steps.check_file_changed.outputs.distrobox_changed }} steps: - uses: actions/checkout@v4 with: # Checkout as many commits as needed for the diff repository: 89luca89/distrobox ref: main persist-credentials: false fetch-depth: 2 token: ${{ secrets.PAT }} # Fetch from compatibility table all the distros supported - id: check_file_changed run: | if git diff --name-only HEAD^ HEAD | grep -E "^docs|gen-man"; then echo "::set-output name=distrobox_changed::True" else echo "::set-output name=distrobox_changed::False" fi gen_man: runs-on: ubuntu-latest needs: check_changes if: needs.check_changes.outputs.distrobox_changed == 'True' steps: - uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} # Fetch from compatibility table all the distros supported - id: generate run: | VERSION=3.6.1 RELEASE="jgm/pandoc/releases/download/${VERSION}/pandoc-${VERSION}-1-amd64.deb" NAME=$(echo $RELEASE | rev | cut -d'/' -f1 | rev) curl -L https://github.com/$RELEASE -o $NAME sudo apt-get update sudo apt-get install -y ./$NAME sudo apt-get install -y ronn rm -f $NAME man/gen-man - uses: stefanzweifel/git-auto-commit-action@v5 with: branch: main commit_message: Automatic Man Page Update commit_options: '--no-verify --signoff' commit_user_name: distrobox-docs-bot commit_user_email: distrobox-docs-bot@users.noreply.github.com commit_author: distrobox-docs-bot distrobox-1.8.1.2/.gitignore000066400000000000000000000000241474517124600156750ustar00rootroot00000000000000tags *.vim TODO.txt distrobox-1.8.1.2/.markdownlint.yaml000066400000000000000000000002151474517124600173620ustar00rootroot00000000000000--- MD013: line_length: 120 code_blocks: false tables: false headings: false headers: false MD033: false MD041: false MD045: false distrobox-1.8.1.2/.shellcheckrc000066400000000000000000000020211474517124600163370ustar00rootroot00000000000000# Overrides the shell detected from the shebang. This is useful for files meant to be included (and thus lacking a shebang), or possibly as a more targeted alternative to 'disable=SC2039'. shell=sh # Always allow ShellCheck to open arbitrary files from 'source' statements. external-sources=true # Enable all optional checks enable=all # This function is invoked in an 'if' condition so set -e will be disabled. Invoke separately if failures should cause the script to exit. # - We don't want to exit if errors happen inside a check, that's why we have a check... disable=SC2310 # Bash implicitly disabled set -e for this function invocation because it's inside a command substitution. Add set -e; before it or enable inherit_errexit. # - Don't care if we inherit errexit inside substitutions, we do checks for that. disable=SC2311 # Consider invoking this command separately to avoid masking its return value (or use '|| true' to ignore). # - We already check errors and adding "|| true" everywhere hinders readability. disable=SC2312 distrobox-1.8.1.2/CODE_OF_CONDUCT.md000066400000000000000000000003671474517124600165160ustar00rootroot00000000000000# Code of Conduct Let's just all be nice to each other and ourselves. Do we really need this? Just follow them: ![wholesome](https://i.kym-cdn.com/photos/images/newsfeed/001/407/983/841.jpg) ## Let's just all be wholesome to each other please distrobox-1.8.1.2/CONTRIBUTING.md000066400000000000000000000123621474517124600161460ustar00rootroot00000000000000# Contributing to Distrobox We greatly appreciate your input! We want to make contributing to this project as easy and transparent as possible, whether it's: - Reporting a bug - Discussing the current state of the code - Submitting a fix - Proposing new features ## Creating a Pull Requests Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: 1. Fork the repo and create your branch from `main`. 2. If you've added code that should be tested, add tests. 3. If you've changed APIs, update the documentation. 4. Ensure the test suite passes. 5. Make sure your code lints. 6. Issue that pull request! ## Any contributions you make will be under the GPLv3 Software License In short, when you submit code changes, your submissions are understood to be under the same [GPLv3 License](https://choosealicense.com/licenses/gpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern. ## Suggestions Suggestions are welcome, be sure: - It is not already being discussed in the [issue tracker](https://github.com/89luca89/distrobox/issues) - If it has and is marked as OPEN, go ahead and share your own thoughts about the topic! - If it has and is marked as CLOSED, please read the ticket and depending on whether the suggestion was accepted consider if it is worth opening a new issue or not. - Consider if the suggestion is not too out of scope of the project. - Mark them with a [Suggestion] in the title. ## Report bugs using GitHub's [issues](https://github.com/89luca89/distrobox/issues) We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/89luca89/distrobox/issues); it's that easy! ### Write bug reports with detail, background, and sample code **A good bug report** should have: - Check that the bug is not already discussed in the [issue tracker](https://github.com/89luca89/distrobox/issues) - See our [documentation](https://github.com/89luca89/distrobox/tree/main/docs) if there are some steps that could help you solve your issue - Mark them with an [Error] in the title - A quick summary and/or background - Steps to reproduce - Be specific! - Provide logs (terminal output, runs with verbose mode) - What you expected would happen - What actually happens - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) ## Use a Consistent Coding Style - check if files have some problems with POSIX using the following: ```shell for file in $(find . -type f -not -path "*.git*"); do if file "$file" | grep -qi shell; then echo "### Checking file $file..." dash -n $file result=$(( result + $? )) echo "Result: $result" fi done ``` Here we're using `dash` to verify if there are any non-POSIX code inside the scripts. Distrobox aims to be POSIX compliant so it's important to use a strict POSIX compliant shell to verify. `dash` is available in all major distributions' repositories. - use `shellcheck` to check for posix compliance and bashisms using: - install from: [HERE](https://github.com/koalaman/shellcheck) following [this](https://github.com/koalaman/shellcheck#installing) - `shellcheck -s sh -a -o all -Sstyle -Calways -x -e SC2310,SC2311,SC2312` - use `shfmt` to style the code using: - install from [HERE](https://github.com/mvdan/sh) using `go install mvdan.cc/sh/v3/cmd/shfmt@latest` - `shfmt shfmt -d -s -ci -sr -kp` - use `bashate` to check the code: - install using `pip3 install bashate` - `bashate -i E002,E003,E010,E011 --max-line-length 120` - use `markdownlint` - install using `npm -i -g markdownlint-cli` - run `markdownlint $(find . -name '*.md' | grep -vF './.git')` - Legibility of the code is more important than code golfing, try to be expressive in the code - Try to **follow the happy path**: - [This guide](https://maelvls.dev/go-happy-line-of-sight/) is for golang, but it's a very insightful source to follow - Error checking is important! Ensure to LBYL (Look Before You Leap), check for variables and for code success exit codes - If a command or function can fail, ensure you check the outcome: - `if ! my_function; then ...` this is important to handle errors gracefully and to potentially warn users of what's happening - Use snake_case for variable naming. Keep variable names lowercase if they are not an environment variable - Don't hesitate to comment your code! We're placing high importance on this to maintain the code readable and understandeable - Update documentation to reflect your changes - Manual pages can be found in directory `docs` If you are using Visual Studio Code, there are [plugins](https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck) that include all this functionality and throw a warning if you're doing something wrong. If you are using Vim or Emacs there are plenty of linters and checkers that will integrate with the 2 tools listed above. ## License By contributing, you agree that your contributions will be licensed under its GPLv3 License. ## References This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md). distrobox-1.8.1.2/COPYING.md000066400000000000000000001040611474517124600153450ustar00rootroot00000000000000# GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. ## Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. ### TERMS AND CONDITIONS #### 0. Definitions "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. #### 1. Source Code The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. #### 2. Basic Permissions All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. #### 3. Protecting Users' Legal Rights From Anti-Circumvention Law No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. #### 4. Conveying Verbatim Copies You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. #### 5. Conveying Modified Source Versions You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. #### 6. Conveying Non-Source Forms You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. #### 7. Additional Terms "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. #### 8. Termination You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. #### 9. Acceptance Not Required for Having Copies You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. #### 10. Automatic Licensing of Downstream Recipients Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. #### 11. Patents A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. #### 12. No Surrender of Others' Freedom If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. #### 13. Use with the GNU Affero General Public License Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. #### 14. Revised Versions of this License The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. #### 15. Disclaimer of Warranty THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. #### 16. Limitation of Liability IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. #### 17. Interpretation of Sections 15 and 16 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS ### How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands \`show w' and \`show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . distrobox-1.8.1.2/Containerfile000066400000000000000000000001061474517124600164130ustar00rootroot00000000000000FROM docker.io/mgoltzsche/podman:latest COPY ./distrobox* /usr/bin/ distrobox-1.8.1.2/completions/000077500000000000000000000000001474517124600162455ustar00rootroot00000000000000distrobox-1.8.1.2/completions/bash/000077500000000000000000000000001474517124600171625ustar00rootroot00000000000000distrobox-1.8.1.2/completions/bash/distrobox000066400000000000000000000033451474517124600211270ustar00rootroot00000000000000# shellcheck disable=all _generate_from_help() { command=$1 # if command does not exist, try with `distrobox subcommand` if ! $command --help >/dev/null 2>/dev/null ; then command="$(echo $command | tr '-' ' ')" fi local list cur prev totalopts opts diropts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD - 1]}" opts="$($command --help | sed 's|^\t||g' | grep '^--' | cut -d':' -f1 | tr '/' ' ' | tr '\n' ' ')" totalopts="$(echo $opts | tr ' ' '|')" diropts="-H|--home|--volume" fileopts="--file" if [[ ${prev} =~ ${diropts} ]]; then COMPREPLY=($(compgen -d -- ${cur})) return 0 fi if [[ ${prev} =~ ${fileopts} ]]; then COMPREPLY=($(compgen -f -- ${cur})) return 0 fi if [[ ${prev} == "assemble" ]]; then COMPREPLY+=($(compgen -W "create rm" -- ${cur})) return 0 fi if [[ ${prev} == "--image" ]] || [[ ${prev} == "-i" ]]; then COMPREPLY+=($(compgen -W "$(distrobox-create --compatibility)" -- ${cur})) return 0 fi if [[ ${cur} == -* ]]; then COMPREPLY+=($(compgen -W "${opts}" -- ${cur})) return 0 elif [[ ${command} != *"create"* ]] && [[ ${command} != *"ephemeral"* ]] && [[ ${command} != *"list"* ]] && [[ ${command} != *"assemble"* ]]; then while IFS= read -r line; do list+="$line " done < <(distrobox-list --no-color | tail -n+2 | cut -d'|' -f2) COMPREPLY=($(compgen -W "${list}" "${cur}")) return 0 fi } __distrobox() { if [ "${#COMP_WORDS[@]}" == "2" ]; then VALID_WORDS=$(distrobox | tail -n+4 | tr -d '|' | xargs echo) VALID_WORDS+=" --version --help" COMPREPLY=($(compgen -W "${VALID_WORDS}" -- "${COMP_WORDS[1]}")) elif [ "${#COMP_WORDS[@]}" -gt "2" ]; then _generate_from_help distrobox-"${COMP_WORDS[1]}" fi } complete -F __distrobox distrobox distrobox-1.8.1.2/completions/bash/distrobox-assemble000066400000000000000000000007511474517124600227160ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-assemble distrobox-1.8.1.2/completions/bash/distrobox-create000066400000000000000000000007471474517124600223730ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-create distrobox-1.8.1.2/completions/bash/distrobox-enter000066400000000000000000000007461474517124600222440ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-enter distrobox-1.8.1.2/completions/bash/distrobox-ephemeral000066400000000000000000000007521474517124600230660ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-ephemeral distrobox-1.8.1.2/completions/bash/distrobox-generate-entry000066400000000000000000000007571474517124600240620ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-generate-entry distrobox-1.8.1.2/completions/bash/distrobox-list000066400000000000000000000007451474517124600221010ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-list distrobox-1.8.1.2/completions/bash/distrobox-rm000066400000000000000000000007431474517124600215420ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-rm distrobox-1.8.1.2/completions/bash/distrobox-stop000066400000000000000000000007451474517124600221130ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-stop distrobox-1.8.1.2/completions/bash/distrobox-upgrade000066400000000000000000000007501474517124600225510ustar00rootroot00000000000000# shellcheck disable=all if [ -e /usr/share/bash-completion/completions/distrobox ]; then source /usr/share/bash-completion/completions/distrobox fi if [ -e /usr/local/share/bash-completion/completions/distrobox ]; then source /usr/local/share/bash-completion/completions/distrobox fi if [ -e "${HOME}/.local/share/bash-completion/completions/distrobox" ]; then source "${HOME}/.local/share/bash-completion/completions/distrobox" fi complete -F _generate_from_help distrobox-upgrade distrobox-1.8.1.2/completions/zsh/000077500000000000000000000000001474517124600170515ustar00rootroot00000000000000distrobox-1.8.1.2/completions/zsh/_distrobox000066400000000000000000000025361474517124600211560ustar00rootroot00000000000000#compdef distrobox local curcontext="$curcontext" state line typeset -A opt_args _distrobox_commands() { local -a commands commands=( 'assemble:Handle distrobox assembly tasks' 'create:Create a new distrobox container' 'enter:Enter an existing distrobox container' 'list:List all distrobox containers' 'ls:Alias for list' 'rm:Remove a distrobox container' 'stop:Stop a running distrobox container' 'upgrade:Upgrade a distrobox container' 'ephemeral:Create a temporary distrobox container' 'generate-entry:Generate a desktop entry for a distrobox container' 'version:Show distrobox version' ) _describe -t commands 'distrobox command' commands } _arguments -C \ '1: :_distrobox_commands' \ '*:: :->args' case $state in args) case $line[1] in assemble) _distrobox-assemble ;; create) _distrobox-create ;; enter) _distrobox-enter ;; list|ls) _distrobox-list ;; rm) _distrobox-rm ;; stop) _distrobox-stop ;; upgrade) _distrobox-upgrade ;; ephemeral) _distrobox-ephemeral ;; generate-entry) _distrobox-generate-entry ;; version) # No additional completions needed for version ;; esac esac distrobox-1.8.1.2/completions/zsh/_distrobox-assemble000066400000000000000000000011331474517124600227370ustar00rootroot00000000000000#compdef distrobox-assemble _message -r "Create or remove containers in batches, based on a manifest file." _arguments \ '1:command:(create rm)' \ '--file[path to the distrobox manifest/ini file]:file:_files' \ '(--name -n)'{-n,--name}'[run against a single entry in the manifest/ini file]:entry name:' \ '(--replace -R)'{-R,--replace}'[replace already existing distroboxes with matching names]' \ '(--dry-run -d)'{-d,--dry-run}'[only print the container manager command generated]' \ '(--verbose -v)'{-v,--verbose}'[show more verbosity]' \ '(--version -V)'{-V,--version}'[show version]' distrobox-1.8.1.2/completions/zsh/_distrobox-create000066400000000000000000000052501474517124600224130ustar00rootroot00000000000000#compdef distrobox-create _distrobox-create() { local -a options local expl local state # Array of optargs to pass to _arguments for matching and completion options=( '(-i --image)'{-i,--image}'[Specify image to use for the container]:image:_distrobox_images' '(-n --name)'{-n,--name}'[Specify name for the distrobox]:distrobox name:' '--hostname[Specify hostname for the distrobox]:hostname:' '(-p --pull)'{-p,--pull}'[Pull the image even if it exists locally (implies --yes)]' '(-Y --yes)'{-Y,--yes}'[Non-interactive, pull images without asking]' '(-r --root)'{-r,--root}'[Launch with root privileges using podman/docker/lilipod]' '(-c --clone)'{-c,--clone}'[Name of the distrobox container to use as base for a new container]:clone container name:' '(-H --home)'{-H,--home}'[Select a custom HOME directory for the container]:path:_files -/' '--volume[Add additional volumes to the container]:volume:_files' '(-a --additional-flags)'{-a,--additional-flags}'[Additional flags to pass to the container manager command]:flags:' '(-ap --additional-packages)'{-ap,--additional-packages}'[Additional packages to install during setup]:package:' '--init-hooks[Commands to execute during container initialization]:command:' '--pre-init-hooks[Commands to execute prior to container initialization]:command:' '(-I --init)'{-I,--init}'[Use an init system inside the container]' '--nvidia[Try to integrate host nVidia drivers into the guest]' '--unshare-devsys[Do not share host devices and sysfs dirs from host]' '--unshare-groups[Do not forward users additional groups into the container]' '--unshare-ipc[Do not share ipc namespace with host]' '--unshare-netns[Do not share the net namespace with host]' '--unshare-process[Do not share process namespace with host]' '--unshare-all[Activate all the unshare flags]' '(-C --compatibility)'{-C,--compatibility}'[Show list of compatible images]' '(-h --help)'{-h,--help}'[Show this message]' '--no-entry[Do not generate a container entry in the application list]' '(-d --dry-run)'{-d,--dry-run}'[Only print the container manager command generated]' '(-v --verbose)'{-v,--verbose}'[Show more verbosity]' '(-V --version)'{-V,--version}'[Show version]' '--absolutely-disable-root-password-i-am-really-positively-sure[Skip user password setup, leaving it blank]' ) # Simple logic _message -r "Create new distroboxes." _arguments \ '1:containers:->container' \ '*:options:->options' \ $options[@] } _distrobox-create distrobox-1.8.1.2/completions/zsh/_distrobox-enter000066400000000000000000000024741474517124600222720ustar00rootroot00000000000000#compdef distrobox-enter _distrobox-enter() { local -a options local expl local state local _db_cc _db_cc=("${(@f)$(distrobox list | sed 1d | awk -F'|' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//')}") options=( '(--name -n)'{-n,--name}'[name for the distrobox]:container:_distrobox_containers' '--[end arguments and execute the rest as command to execute at login]:command:_command_names' '(--no-tty -T)'{-T,--no-tty}'[do not instantiate a tty]' '(--no-workdir -nw)'{-nw,--no-workdir}'[always start the container from container home directory]' '(--additional-flags -a)'{-a,--additional-flags}'[additional flags to pass to the container manager command]:flags:' '(--help -h)'{-h,--help}'[show this message]' '(--root -r)'{-r,--root}'[launch podman/docker/lilipod with root privileges]' '(--dry-run -d)'{-d,--dry-run}'[only print the container manager command generated]' '(--verbose -v)'{-v,--verbose}'[show more verbosity]' '(--version -V)'{-V,--version}'[show version]' ) _message -r "Start and enter a distrobox." if [[ -n "$_db_cc" ]]; then _arguments -C \ '1:containers:_distrobox_containers' \ $options[@] else _message -r "No containers exist." _arguments $options[@] fi } _distrobox-enter distrobox-1.8.1.2/completions/zsh/_distrobox-ephemeral000066400000000000000000000053171474517124600231160ustar00rootroot00000000000000#compdef distrobox-ephemeral _distrobox-ephemeral() { local -a options local expl local state # Array of optargs to pass to _arguments for matching and completion options=( '(-i --image)'{-i,--image}'[Specify image to use for the container]:image:_distrobox_images' '(-n --name)'{-n,--name}'[Specify name for the distrobox]:distrobox name:' '--hostname[Specify hostname for the distrobox]:hostname:' '(-p --pull)'{-p,--pull}'[Pull the image even if it exists locally (implies --yes)]' '(-Y --yes)'{-Y,--yes}'[Non-interactive, pull images without asking]' '(-r --root)'{-r,--root}'[Launch with root privileges using podman/docker/lilipod]' '(-c --clone)'{-c,--clone}'[Name of the distrobox container to use as base for a new container]:clone container name:' '(-H --home)'{-H,--home}'[Select a custom HOME directory for the container]:path:_files -/' '--volume[Add additional volumes to the container]:volume:_files' '(-a --additional-flags)'{-a,--additional-flags}'[Additional flags to pass to the container manager command]:flags:' '(-ap --additional-packages)'{-ap,--additional-packages}'[Additional packages to install during setup]:package:' '--init-hooks[Commands to execute during container initialization]:command:' '--pre-init-hooks[Commands to execute prior to container initialization]:command:' '(-I --init)'{-I,--init}'[Use an init system inside the container]' '--nvidia[Try to integrate host nVidia drivers into the guest]' '--unshare-devsys[Do not share host devices and sysfs dirs from host]' '--unshare-groups[Do not forward users additional groups into the container]' '--unshare-ipc[Do not share ipc namespace with host]' '--unshare-netns[Do not share the net namespace with host]' '--unshare-process[Do not share process namespace with host]' '--unshare-all[Activate all the unshare flags]' '(-C --compatibility)'{-C,--compatibility}'[Show list of compatible images]' '(-h --help)'{-h,--help}'[Show this message]' '--no-entry[Do not generate a container entry in the application list]' '(-d --dry-run)'{-d,--dry-run}'[Only print the container manager command generated]' '(-v --verbose)'{-v,--verbose}'[Show more verbosity]' '(-V --version)'{-V,--version}'[Show version]' '--absolutely-disable-root-password-i-am-really-positively-sure[Skip user password setup, leaving it blank]' ) # Simple logic _message -r "Create temporary distroboxes that are auto destroyed." _arguments \ '1:containers:->container' \ '*:options:->options' \ $options[@] } _distrobox-ephemeral distrobox-1.8.1.2/completions/zsh/_distrobox-export000066400000000000000000000022361474517124600224720ustar00rootroot00000000000000#compdef distrobox-export _message -r "Export an app or a binary from the container to the host." _arguments \ '(--app -a)'{-a,--app}'[name of the application to export]:application name:' \ '(--bin -b)'{-b,--bin}'[absolute path of the binary to export]:path to binary:_files' \ '(--delete -d)'{-d,--delete}'[delete exported application or binary]' \ '(--export-label -el)'{-el,--export-label}'[label to add to exported application name, use "none" to disable]:label:' \ '(--export-path -ep)'{-ep,--export-path}'[path where to export the binary]:export path:_files' \ '(--extra-flags -ef)'{-ef,--extra-flags}'[extra flags to add to the command]:extra flags:' \ '(--enter-flags -nf)'{-nf,--enter-flags}'[flags to add to distrobox-enter]:enter flags:' \ '--list-apps[list applications exported from this container]' \ '--list-binaries[list binaries exported from this container, use -ep to specify custom paths to search]' \ '(--sudo -S)'{-S,--sudo}'[specify if the exported item should be run as sudo]' \ '(--help -h)'{-h,--help}'[show this message]' \ '(--verbose -v)'{-v,--verbose}'[show more verbosity]' \ '(--version -V)'{-V,--version}'[show version]' distrobox-1.8.1.2/completions/zsh/_distrobox-generate-entry000066400000000000000000000025651474517124600241070ustar00rootroot00000000000000#compdef distrobox-generate-entry _distrobox-generate-entry() { # expl is an internal zsh array that gets passed to _arguments bts local expl local -a options local _db_cc # Check for existing containers and store the result into var _db_cc _db_cc=("${(@f)$(distrobox list | sed 1d | awk -F'|' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//')}") # Array of optargs to pass to _arguments for matching and completion options=( '(-h --help)'{-h,--help}'[show this message]' '(-a --all)'{-a,--all}'[perform for all distroboxes]' '(-d --delete)'{-d,--delete}'[delete the entry]' '(-i --icon)'{-i,--icon}'[specify a custom icon (default auto)]:icon path:(auto _files)' '(-r --root)'{-r,--root}'[perform on rootful distroboxes]' '(-v --verbose)'{-v,--verbose}'[show more verbosity]' '(-V --version)'{-V,--version}'[show version]' ) _message -r "Create a desktop icon for a distrobox" # If containers exist then do an action if [[ -n "$_db_cc" ]]; then # Match both container names and optargs _arguments \ '*:containers:_distrobox_containers' \ $options[@] # If no containers exist then do an action else # Display message to user and match optargs only _message -r "No containers exist." _arguments $options[@] fi } _distrobox-generate-entry distrobox-1.8.1.2/completions/zsh/_distrobox-host-exec000066400000000000000000000006441474517124600230510ustar00rootroot00000000000000#compdef distrobox-host-exec _message -r "Execute a command on the host while in a container" _arguments \ '*:command:_command' \ '(--help -h)'{-h,--help}'[show this message]' \ '(--verbose -v)'{-v,--verbose}'[show more verbosity]' \ '(--version -V)'{-V,--version}'[show version]' \ '(--yes -Y)'{-Y,--yes}'[Automatically answer yes to prompt host-spawn will be installed on the guest system if not detected]' distrobox-1.8.1.2/completions/zsh/_distrobox-init000066400000000000000000000016221474517124600221120ustar00rootroot00000000000000#compdef distrobox-init _message -r "Init the distrobox (not to be launched manually)" _arguments \ '(--name -n)'{-n,--name}'[user name]:user name:' \ '(--user -u)'{-u,--user}'[uid of the user]:uid:' \ '(--group -g)'{-g,--group}'[gid of the user]:gid:' \ '(--home -d)'{-d,--home}'[path/to/home of the user]:home path:_files' \ '(--help -h)'{-h,--help}'[show this message]' \ '--additional-packages[packages to install in addition]:packages:' \ '(--init -I)'{-I,--init}'[whether to use or not init]' \ '--pre-init-hooks[commands to execute prior to init]:commands:' \ '--nvidia[try to integrate hosts nVidia drivers in the guest]' \ '(--upgrade -U)'{-U,--upgrade}'[run init in upgrade mode]' \ '(--verbose -v)'{-v,--verbose}'[show more verbosity]' \ '(--version -V)'{-V,--version}'[show version]' \ '--:[end arguments execute the rest as command to execute during init]:command:_command' distrobox-1.8.1.2/completions/zsh/_distrobox-list000066400000000000000000000005521474517124600221230ustar00rootroot00000000000000#compdef distrobox-list _message -r "List available distroboxes." _arguments \ '(--help -h)'{-h,--help}'[show this message]' \ '--no-color[disable color formatting]' \ '(--root -r)'{-r,--root}'[launch podman/docker/lilipod with root privileges]' \ '(--verbose -v)'{-v,--verbose}'[show more verbosity]' \ '(--version -V)'{-V,--version}'[show version]' distrobox-1.8.1.2/completions/zsh/_distrobox-rm000066400000000000000000000025101474517124600215620ustar00rootroot00000000000000#compdef distrobox-rm _distrobox-rm() { # expl is an internal zsh array that gets passed to _arguments bts local expl local -a options local _db_cc # Check for existing containers and store the result into var _db_cc _db_cc=("${(@f)$(distrobox list | sed 1d | awk -F'|' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//')}") # Array of optargs to pass to _arguments for matching and completion options=( '(-a --all)'{-a,--all}'[delete all distroboxes]' '(-f --force)'{-f,--force}'[force deletion]' '--rm-home[remove the mounted home if it differs from the host users one]' '(-r --root)'{-r,--root}'[launch podman/docker/lilipod with root privileges]' '(-h --help)'{-h,--help}'[show this message]' '(-v --verbose)'{-v,--verbose}'[show more verbosity]' '(-V --version)'{-V,--version}'[show version]' ) _message -r "Delete one or more distroboxes." # If containers exist then do an action if [[ -n "$_db_cc" ]]; then # Match both container names and optargs _arguments \ '*:containers:_distrobox_containers' \ $options[@] # If no containers exist then do an action else # Display message to user and match optargs only _message -r "No containers exist." _arguments $options[@] fi } _distrobox-rm distrobox-1.8.1.2/completions/zsh/_distrobox-stop000066400000000000000000000017101474517124600221320ustar00rootroot00000000000000#compdef distrobox-stop _distrobox-stop() { local expl local -a options local _db_rcc _db_rcc=($(distrobox list | awk -F'|' '$3 ~ /Up/ { gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2 }')) options=( '(-a --all)'{-a,--all}'[stop all distroboxes]' '(-Y --yes)'{-Y,--yes}'[non-interactive, stop without asking]' '(-r --root)'{-r,--root}'[launch podman/docker/lilipod with root privileges]' '(-h --help)'{-h,--help}'[show this message]' '(-v --verbose)'{-v,--verbose}'[show more verbosity]' '(-V --version)'{-V,--version}'[show version]' ) _message -r "Stop running distrobox containers." if [[ -n "$_db_rcc" ]]; then _arguments -C \ '*:containers:_distrobox_running_containers' \ $options[@] else _message -r "No running containers." _arguments $options[@] fi } _distrobox-stop distrobox-1.8.1.2/completions/zsh/_distrobox-upgrade000066400000000000000000000016161474517124600226010ustar00rootroot00000000000000#compdef distrobox-upgrade _distrobox-upgrade() { local expl local -a options local _db_cc _db_cc=("${(@f)$(distrobox list | sed 1d | awk -F'|' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//')}") options=( '(-a --all)'{-a,--all}'[upgrade all distroboxes]' '--running[perform only for running distroboxes]' '(-r --root)'{-r,--root}'[launch podman/docker/lilipod with root privileges]' '(-h --help)'{-h,--help}'[show this message]' '(-v --verbose)'{-v,--verbose}'[show more verbosity]' '(-V --version)'{-V,--version}'[show version]' ) _message -r "Upgrade distroboxes using container's package manager." if [[ -n "$_db_cc" ]]; then _arguments \ '*:containers:_distrobox_containers' \ $options[@] else _message -r "No containers exist." _arguments $options[@] fi } _distrobox-upgrade distrobox-1.8.1.2/completions/zsh/_distrobox_containers000066400000000000000000000003531474517124600233760ustar00rootroot00000000000000#autoload _distrobox_containers() { local -a containers containers=("${(@f)$(distrobox list | sed 1d | awk -F'|' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//')}") _describe -t containers 'available containers' containers } distrobox-1.8.1.2/completions/zsh/_distrobox_images000066400000000000000000000003041474517124600224720ustar00rootroot00000000000000#autoload _distrobox_images() { local -a images images=("${(@f)$(distrobox-create --compatibility | awk 'NF {print $0}')}") _wanted images expl 'compatible image' compadd -a images } distrobox-1.8.1.2/completions/zsh/_distrobox_running_containers000066400000000000000000000004431474517124600251360ustar00rootroot00000000000000#autoload _distrobox_running_containers() { local -a containers containers=($(distrobox list | awk -F'|' '$3 ~ /Up/ { gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2 }')) if (( ${#containers} > 0 )); then _describe -t running-containers 'running containers' containers fi } distrobox-1.8.1.2/distrobox000077500000000000000000000043371474517124600156630ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX set -o errexit set -o nounset version="1.8.1.2" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Choose one of the available commands: assemble create enter list | ls rm stop upgrade ephemeral generate-entry version help EOF } if [ $# -eq 0 ]; then show_help exit fi distrobox_path="$(dirname "${0}")" distrobox_command="${1}" shift # Simple wrapper to the distrobox utilities. # We just detect the 1st argument and launch the matching distrobox utility. case "${distrobox_command}" in assemble) "${distrobox_path}"/distrobox-assemble "$@" ;; create) "${distrobox_path}"/distrobox-create "$@" ;; enter) "${distrobox_path}"/distrobox-enter "$@" ;; ls | list) "${distrobox_path}"/distrobox-list "$@" ;; stop) "${distrobox_path}"/distrobox-stop "$@" ;; rm) "${distrobox_path}"/distrobox-rm "$@" ;; upgrade) "${distrobox_path}"/distrobox-upgrade "$@" ;; generate-entry) "${distrobox_path}"/distrobox-generate-entry "$@" ;; ephemeral) "${distrobox_path}"/distrobox-ephemeral "$@" ;; -V | --version | version) printf "distrobox: %s\n" "${version}" exit 0 ;; help | --help | -h) show_help exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Error: invalid command\n" show_help exit 1 ;; esac distrobox-1.8.1.2/distrobox-assemble000077500000000000000000000412421474517124600174500ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # POSIX # default_input_file="./distrobox.ini" delete=-1 distrobox_path="$(dirname "${0}")" dryrun=0 boxname="" input_file="" replace=0 root_flag="" # tmpfile will be used as a little buffer to pass variables without messing up # quoting and escaping tmpfile="$(mktemp -u)" tmp_download_file="$(mktemp -u)" verbose=0 version="1.8.1.2" # initializing block of variables used in the manifest additional_flags="" additional_packages="" entry="" home="" hostname="" image="" clone="" init="" init_hooks="" nvidia="" pre_init_hooks="" pull="" root="" start_now="" unshare_ipc="" unshare_netns="" unshare_process="" unshare_devsys="" unshare_all="" volume="" exported_apps="" exported_bins="" exported_bins_path="${HOME}/.local/bin" # Cleanup tmpfiles on exit trap 'rm -f ${tmpfile} ${tmp_download_file}' EXIT # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ]; then printf >&2 "Running %s via SUDO/DOAS is not supported." "$(basename "${0}")" printf >&2 "Instead, please try using root=true property in the distrobox.ini file.\n" exit 1 fi # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: string distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox assemble create distrobox assemble rm distrobox assemble create --file /path/to/file.ini distrobox assemble rm --file /path/to/file.ini distrobox assemble create --replace --file /path/to/file.ini Options: --file: path or URL to the distrobox manifest/ini file --name/-n: run against a single entry in the manifest/ini file --replace/-R: replace already existing distroboxes with matching names --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in create) delete=0 shift ;; rm) delete=1 shift ;; --file) # Call a "show_help" function to display a synopsis, then exit. if [ -n "$2" ]; then input_file="${2}" shift shift fi ;; -n | --name) # Call a "show_help" function to display a synopsis, then exit. if [ -n "$2" ]; then boxname="${2}" shift shift fi ;; -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -d | --dry-run) shift dryrun=1 ;; -v | --verbose) verbose=1 shift ;; -R | --replace) replace=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then input_file="$1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # check if we're getting the right inputs if [ "${delete}" -eq -1 ]; then printf >&2 "Please specify create or rm.\n" show_help exit 1 fi # Fallback to distrobox.ini if no file is passed if [ -z "${input_file}" ]; then input_file="${default_input_file}" fi # Check if file effectively exists if [ ! -e "${input_file}" ]; then if command -v curl > /dev/null 2>&1; then download="curl --connect-timeout 3 --retry 1 -sLo" elif command -v wget > /dev/null 2>&1; then download="wget --timeout=3 --tries=1 -qO" fi if ! ${download} - "${input_file}" > "${tmp_download_file}"; then printf >&2 "File %s does not exist.\n" "${input_file}" exit 1 else input_file="${tmp_download_file}" fi fi # run_distrobox will create distrobox with parameters parsed from ini file. # Arguments: # name: name of the distrobox. # Expected global variables: # boxname: string name of the target container # tmpfile: string name of the tmpfile to read # delete: bool delete container # replace: bool replace container # dryrun: bool dryrun (only print, no execute) # verbose: bool verbose # Expected env variables: # None # Outputs: # execution of the proper distrobox-create command. run_distrobox() { name="${1}" additional_flags="" additional_packages="" entry="" home="" hostname="" image="" clone="" init="" init_hooks="" nvidia="" pre_init_hooks="" pull="" root="" start_now="" unshare_ipc="" unshare_netns="" unshare_process="" unshare_devsys="" unshare_all="" volume="" exported_apps="" exported_bins="" exported_bins_path="${HOME}/.local/bin" # Skip item if --name used and no match is found if [ "${boxname}" != "" ] && [ "${boxname}" != "${name}" ]; then rm -f "${tmpfile}" return fi # Source the current block variables if [ -e "${tmpfile}" ]; then # shellcheck disable=SC1090 . "${tmpfile}" && rm -f "${tmpfile}" fi if [ -n "${root}" ] && [ "${root}" -eq 1 ]; then root_flag="--root" fi # We're going to delete, not create! if [ "${delete}" -ne 0 ] || [ "${replace}" -ne 0 ]; then printf " - Deleting %s...\n" "${name}" if [ "${dryrun}" -eq 0 ]; then # shellcheck disable=SC2086,2248 "${distrobox_path}"/distrobox rm ${root_flag} -f "${name}" > /dev/null || : fi if [ "${delete}" -ne 0 ]; then return fi fi # We're going to create! printf " - Creating %s...\n" "${name}" # If distrobox already exist, and we have replace enabled, destroy the container # we have to recreate it. # shellcheck disable=SC2086,2248 if "${distrobox_path}"/distrobox-list ${root_flag} | grep -qw " ${name} " && [ "${dryrun}" -eq 0 ]; then printf >&2 "%s already exists\n" "${name}" return 0 fi # Now we dynamically generate the distrobox-create command based on the # declared flags. result_command="${distrobox_path}/distrobox-create --yes" if [ "${verbose}" -ne 0 ]; then result_command="${result_command} -v" fi if [ -n "${name}" ]; then result_command="${result_command} --name $(sanitize_variable "${name}")" fi if [ -n "${image}" ]; then result_command="${result_command} --image $(sanitize_variable "${image}")" fi if [ -n "${clone}" ]; then result_command="${result_command} --clone $(sanitize_variable "${clone}")" fi if [ -n "${init}" ] && [ "${init}" -eq 1 ]; then result_command="${result_command} --init" fi if [ -n "${root}" ] && [ "${root}" -eq 1 ]; then result_command="${result_command} --root" fi if [ -n "${pull}" ] && [ "${pull}" -eq 1 ]; then result_command="${result_command} --pull" fi if [ -n "${entry}" ] && [ "${entry}" -eq 0 ]; then result_command="${result_command} --no-entry" fi if [ -n "${nvidia}" ] && [ "${nvidia}" -eq 1 ]; then result_command="${result_command} --nvidia" fi if [ -n "${unshare_netns}" ] && [ "${unshare_netns}" -eq 1 ]; then result_command="${result_command} --unshare-netns" fi if [ -n "${unshare_ipc}" ] && [ "${unshare_ipc}" -eq 1 ]; then result_command="${result_command} --unshare-ipc" fi if [ -n "${unshare_process}" ] && [ "${unshare_process}" -eq 1 ]; then result_command="${result_command} --unshare-process" fi if [ -n "${unshare_devsys}" ] && [ "${unshare_devsys}" -eq 1 ]; then result_command="${result_command} --unshare-devsys" fi if [ -n "${unshare_all}" ] && [ "${unshare_all}" -eq 1 ]; then result_command="${result_command} --unshare-all" fi if [ -n "${home}" ]; then result_command="${result_command} --home $(sanitize_variable "${home}")" fi if [ -n "${hostname}" ]; then result_command="${result_command} --hostname $(sanitize_variable "${hostname}")" fi if [ -n "${init_hooks}" ]; then IFS="¤" args=": ;" separator="" for arg in ${init_hooks}; do if [ -z "${arg}" ]; then continue fi # Convert back from base64 arg="$(echo "${arg}" | base64 -d)" args="${args} ${separator} ${arg}" # Prepare for the next line, if we already have a ';' or '&&', do nothing # else prefer adding '&&' if ! echo "${arg}" | grep -qE ';[[:space:]]{0,1}$' && ! echo "${arg}" | grep -qE '&&[[:space:]]{0,1}$'; then separator="&&" else separator="" fi done result_command="${result_command} --init-hooks $(sanitize_variable "${args}")" fi # Replicable flags if [ -n "${pre_init_hooks}" ]; then IFS="¤" args=": ;" separator="" for arg in ${pre_init_hooks}; do if [ -z "${arg}" ]; then continue fi # Convert back from base64 arg="$(echo "${arg}" | base64 -d)" args="${args} ${separator} ${arg}" # Prepare for the next line, if we already have a ';' or '&&', do nothing # else prefer adding '&&' if ! echo "${arg}" | grep -qE ';[[:space:]]{0,1}$' && ! echo "${arg}" | grep -qE '&&[[:space:]]{0,1}$'; then separator="&&" else separator="" fi done result_command="${result_command} --pre-init-hooks $(sanitize_variable "${args}")" fi if [ -n "${additional_packages}" ]; then IFS="¤" args="" for packages in ${additional_packages}; do if [ -z "${packages}" ]; then continue fi args="${args} ${packages}" done result_command="${result_command} --additional-packages $(sanitize_variable "${args}")" fi if [ -n "${volume}" ]; then IFS="¤" for vol in ${volume}; do if [ -z "${vol}" ]; then continue fi result_command="${result_command} --volume $(sanitize_variable "${vol}")" done fi if [ -n "${additional_flags}" ]; then IFS="¤" for flag in ${additional_flags}; do if [ -z "${flag}" ]; then continue fi result_command="${result_command} --additional-flags $(sanitize_variable "${flag}")" done fi # Execute the distrobox-create command if [ "${dryrun}" -ne 0 ]; then echo "${result_command}" return fi eval "${result_command}" # If we need to start immediately, do it, so that the container # is ready to be entered. if [ -n "${start_now}" ] && [ "${start_now}" -eq 1 ]; then # shellcheck disable=SC2086,2248 "${distrobox_path}"/distrobox enter ${root_flag} "${name}" -- touch /dev/null fi # if there are exported bins and apps declared, let's export them if [ -n "${exported_apps}" ] || [ -n "${exported_bins}" ]; then # First we start the container # shellcheck disable=SC2086,2248 "${distrobox_path}"/distrobox enter ${root_flag} "${name}" -- touch /dev/null IFS="¤" for apps in ${exported_apps}; do # Split the string by spaces IFS=" " for app in ${apps}; do # Export the app # shellcheck disable=SC2086,2248 "${distrobox_path}"/distrobox enter ${root_flag} "${name}" -- distrobox-export --app "${app}" done done IFS="¤" for bins in ${exported_bins}; do # Split the string by spaces IFS=" " for bin in ${bins}; do # Export the bin # shellcheck disable=SC2086,2248 "${distrobox_path}"/distrobox enter ${root_flag} "${name}" -- distrobox-export --bin "${bin}" --export-path "${exported_bins_path}" done done fi } # encode_variable will encode an input in base64, removing surrounding single/double quotes. # Arguments: # variable: string # Expected global variables: # None # Expected env variables: # None # Outputs: # a value string encoded in base64 encode_variable() { variable="${1}" # remove surrounding quotes possibly added by the user if echo "${variable}" | grep -qE '^"'; then variable="$(echo "${variable}" | sed -e 's/^"//' -e 's/"$//')" elif echo "${variable}" | grep -qE "^'"; then variable="$(echo "${variable}" | sed -e "s/^'//" -e "s/'$//")" fi echo "${variable}" | base64 -w 0 } # sanitize_variable will sanitize an input, add single/double quotes and escapes # Arguments: # variable: string # Expected global variables: # None # Expected env variables: # None # Outputs: # a value string sanitized sanitize_variable() { variable="${1}" # If there are spaces but no quotes, let's add them if echo "${variable}" | grep -q " " && ! echo "${variable}" | grep -Eq "^'|^\""; then # if we have double quotes we should wrap the whole line in single quotes # in order to not "undo" them if echo "${variable}" | grep -q '"'; then variable="'${variable}'" else variable="\"${variable}\"" fi fi # Return echo "${variable}" } # parse_file will read and parse input file and call distrobox-create accordingly # Arguments: # file: string path of the manifest file to parse # Expected global variables: # tmpfile: string name of the tmpfile to read # Expected env variables: # None # Outputs: # None parse_file() { file="${1}" name="" IFS=' ' # shellcheck disable=SC2013 for line in $(cat "${file}"); do # Remove comments and trailing spaces line="$(echo "${line}" | sed 's/\t/ /g' | sed 's/^#.*//g' | sed 's/].*#.*//g' | sed 's/ #.*//g' | sed 's/\s*$//g')" if [ -z "${line}" ]; then # blank line, skip continue fi # Detect start of new section if [ "$(echo "${line}" | cut -c 1)" = '[' ]; then # We're starting a new section if [ -n "${name}" ]; then # We've finished the previous section, so this is the time to # perform the distrobox command, before going to the new section. run_distrobox "${name}" fi # Remove brackets and spaces name="$(echo "${line}" | tr -d '][ ')" continue fi # Get key-values from the file key="$(echo "${line}" | cut -d'=' -f1 | tr -d ' ')" value="$(echo "${line}" | cut -d'=' -f2-)" # Normalize true|false to 0|1 [ "${value}" = "true" ] && value=1 [ "${value}" = "false" ] && value=0 # Sanitize value, by whitespaces, quotes and escapes if [ "${key}" = "init_hooks" ] || [ "${key}" = "pre_init_hooks" ]; then # in case of shell commands (so the hooks) we prefer to pass the variable # around encoded, so that we don't accidentally execute stuff # and, we will execute sanitize_variable on the final string flag at the # end, instead of key/value base. value="$(encode_variable "${value}")" else value="$(sanitize_variable "${value}")" fi # Save options to tempfile, to source it later touch "${tmpfile}" if [ -n "${key}" ] && [ -n "${value}" ]; then if grep -q "^${key}=" "${tmpfile}"; then # make keys cumulative value="\${${key}}¤${value}" fi echo "${key}=${value}" >> "${tmpfile}" fi done # Execute now one last time for the last block run_distrobox "${name}" } # Exec parse_file "${input_file}" distrobox-1.8.1.2/distrobox-create000077500000000000000000001121721474517124600171210ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Expected env variables: # HOME # USER # Optional env variables: # DBX_CONTAINER_ALWAYS_PULL # DBX_CONTAINER_CUSTOM_HOME # DBX_CONTAINER_HOME_PREFIX # DBX_CONTAINER_IMAGE # DBX_CONTAINER_MANAGER # DBX_CONTAINER_NAME # DBX_CONTAINER_HOSTNAME # DBX_CONTAINER_GENERATE_ENTRY # DBX_NON_INTERACTIVE # DBX_VERBOSE # DBX_SUDO_PROGRAM # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults container_additional_packages="" container_additional_volumes="" container_always_pull=0 container_clone="" container_generate_entry=1 container_home_prefix="" container_image="" container_image_default="registry.fedoraproject.org/fedora-toolbox:latest" container_init_hook="" container_manager="autodetect" container_manager_additional_flags="" container_platform="" container_name="" container_name_default="my-distrobox" container_hostname="" container_pre_init_hook="" container_user_custom_home="" container_user_gid="$(id -rg)" container_user_home="${HOME:-"/"}" container_user_name="${USER}" container_user_uid="$(id -ru)" dryrun=0 init=0 non_interactive=0 nvidia=0 nopasswd=0 unshare_ipc=0 unshare_groups=0 unshare_netns=0 unshare_process=0 unshare_devsys=0 # Use cd + dirname + pwd so that we do not have relative paths in mount points # We're not using "realpath" here so that symlinks are not resolved this way # "realpath" would break situations like Nix or similar symlink based package # management. distrobox_entrypoint_path="$(cd "$(dirname "${0}")" && pwd)/distrobox-init" distrobox_export_path="$(cd "$(dirname "${0}")" && pwd)/distrobox-export" distrobox_genentry_path="$(cd "$(dirname "${0}")" && pwd)/distrobox-generate-entry" distrobox_hostexec_path="$(cd "$(dirname "${0}")" && pwd)/distrobox-host-exec" # In case some of the scripts are not in the same path as create, let's search # in PATH for them. [ ! -e "${distrobox_entrypoint_path}" ] && distrobox_entrypoint_path="$(command -v distrobox-init)" [ ! -e "${distrobox_export_path}" ] && distrobox_export_path="$(command -v distrobox-export)" [ ! -e "${distrobox_genentry_path}" ] && distrobox_genentry_path="$(command -v distrobox-generate-entry)" [ ! -e "${distrobox_hostexec_path}" ] && distrobox_hostexec_path="$(command -v distrobox-host-exec)" # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "${container_user_uid}" -eq 0 ] && rootful=1 || rootful=0 verbose=0 version="1.8.1.2" app_cache_dir=${XDG_CACHE_HOME:-"${HOME}/.cache"}/distrobox # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done # If we're running this script as root -- as in logged in in the shell as root # user, and not via SUDO/DOAS --, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "${container_user_uid}" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi [ -n "${DBX_CONTAINER_ALWAYS_PULL}" ] && container_always_pull="${DBX_CONTAINER_ALWAYS_PULL}" [ -n "${DBX_CONTAINER_CUSTOM_HOME}" ] && container_user_custom_home="${DBX_CONTAINER_CUSTOM_HOME}" [ -n "${DBX_CONTAINER_HOME_PREFIX}" ] && container_home_prefix="${DBX_CONTAINER_HOME_PREFIX}" [ -n "${DBX_CONTAINER_IMAGE}" ] && container_image="${DBX_CONTAINER_IMAGE}" [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_CONTAINER_NAME}" ] && container_name="${DBX_CONTAINER_NAME}" [ -n "${DBX_CONTAINER_HOSTNAME}" ] && container_hostname="${DBX_CONTAINER_HOSTNAME}" [ -n "${DBX_CONTAINER_GENERATE_ENTRY}" ] && container_generate_entry="${DBX_CONTAINER_GENERATE_ENTRY}" [ -n "${DBX_NON_INTERACTIVE}" ] && non_interactive="${DBX_NON_INTERACTIVE}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${non_interactive}" = "true" ] && non_interactive=1 [ "${non_interactive}" = "false" ] && non_interactive=0 [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: string distrobox version # container_image_default: string default container image to use # container_name_default: string default container name to use # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox create --image alpine:latest --name test --init-hooks "touch /var/tmp/test1 && touch /var/tmp/test2" distrobox create --image fedora:39 --name test --additional-flags "--env MY_VAR-value" distrobox create --image fedora:39 --name test --volume /opt/my-dir:/usr/local/my-dir:rw --additional-flags "--pids-limit 100" distrobox create -i docker.io/almalinux/8-init --init --name test --pre-init-hooks "dnf config-manager --enable powertools && dnf -y install epel-release" distrobox create --clone fedora-39 --name fedora-39-copy distrobox create --image alpine my-alpine-container distrobox create --image registry.fedoraproject.org/fedora-toolbox:latest --name fedora-toolbox-latest distrobox create --pull --image centos:stream9 --home ~/distrobox/centos9 distrobox create --image alpine:latest --name test2 --additional-packages "git tmux vim" distrobox create --image ubuntu:22.04 --name ubuntu-nvidia --nvidia DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test-alpine DBX_CONTAINER_IMAGE=alpine distrobox-create Options: --image/-i: image to use for the container default: ${container_image_default} --name/-n: name for the distrobox default: ${container_name_default} --hostname: hostname for the distrobox default: $(uname -n) --pull/-p: pull the image even if it exists locally (implies --yes) --yes/-Y: non-interactive, pull images without asking --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --clone/-c: name of the distrobox container to use as base for a new container this will be useful to either rename an existing distrobox or have multiple copies of the same environment. --home/-H: select a custom HOME directory for the container. Useful to avoid host's home littering with temp files. --volume: additional volumes to add to the container --additional-flags/-a: additional flags to pass to the container manager command --additional-packages/-ap: additional packages to install during initial container setup --init-hooks: additional commands to execute at the end of container initialization --pre-init-hooks: additional commands to execute at the start of container initialization --init/-I: use init system (like systemd) inside the container. this will make host's processes not visible from within the container. (assumes --unshare-process) may require additional packages depending on the container image: https://github.com/89luca89/distrobox/blob/main/docs/useful_tips.md#using-init-system-inside-a-distrobox --nvidia: try to integrate host's nVidia drivers in the guest --platform: specify which platform to use, eg: linux/arm64 --unshare-devsys: do not share host devices and sysfs dirs from host --unshare-groups: do not forward user's additional groups into the container --unshare-ipc: do not share ipc namespace with host --unshare-netns: do not share the net namespace with host --unshare-process: do not share process namespace with host --unshare-all: activate all the unshare flags below --compatibility/-C: show list of compatible images --help/-h: show this message --no-entry: do not generate a container entry in the application list --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version --absolutely-disable-root-password-i-am-really-positively-sure: ⚠️ ⚠️ when setting up a rootful distrobox, this will skip user password setup, leaving it blank. ⚠️ ⚠️ Compatibility: for a list of compatible images and container managers, please consult the man page: man distrobox-compatibility or run distrobox create --compatibility or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md EOF } # show_compatibility will print the list of compatible images to stdout, caching locally in a file. # Arguments: # None # Expected global variables: # app_cache_dir: cache dir to write to # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_compatibility() { if [ ! -e "${app_cache_dir}/distrobox-compatibility-${version}" ] || [ ! -s "${app_cache_dir}/distrobox-compatibility-${version}" ]; then mkdir -p "${app_cache_dir}" # If we don't have a cache file, we need connectivity. Ensure we have # one and return error if not. if ! curl -s "https://github.com" > /dev/null; then printf >&2 "ERROR: no cache file and no connectivity found, cannot retrieve compatibility list.\n" exit 1 fi # We want to download the correspondent version of the compatibility table and extract a list from it. # Always use the docs as source of truth for this. curl -s \ "https://raw.githubusercontent.com/89luca89/distrobox/${version}/docs/compatibility.md" | sed -n -e '/| Alma/,/| Void/ p' | cut -d '|' -f 4 | sed 's|
|\n|g' | tr -d ' ' | sort -u > "${app_cache_dir}/distrobox-compatibility-${version}" fi cat "${app_cache_dir}/distrobox-compatibility-${version}" } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; --no-entry) shift container_generate_entry=0 ;; -d | --dry-run) shift dryrun=1 ;; -r | --root) shift rootful=1 ;; --absolutely-disable-root-password-i-am-really-positively-sure) shift nopasswd=1 ;; -I | --init) shift init=1 unshare_groups=1 unshare_process=1 ;; --unshare-ipc) shift unshare_ipc=1 ;; --unshare-groups) shift unshare_groups=1 ;; --unshare-netns) shift unshare_netns=1 ;; --unshare-process) shift unshare_process=1 ;; --unshare-devsys) shift unshare_devsys=1 ;; --unshare-all) shift unshare_devsys=1 unshare_groups=1 unshare_ipc=1 unshare_netns=1 unshare_process=1 ;; -C | --compatibility) show_compatibility exit 0 ;; -i | --image) if [ -n "$2" ]; then container_image="$2" shift shift fi ;; -n | --name) if [ -n "$2" ]; then container_name="$2" shift shift fi ;; --hostname) if [ -n "$2" ]; then container_hostname="$2" shift shift fi ;; -c | --clone) if [ -n "$2" ]; then container_clone="$2" shift shift fi ;; -H | --home) if [ -n "$2" ]; then # Remove trailing slashes container_user_custom_home="$(echo "$2" | sed 's:/*$::')" shift shift fi ;; -p | --pull) container_always_pull=1 shift ;; --nvidia) shift nvidia=1 ;; -Y | --yes) non_interactive=1 shift ;; --volume) if [ -n "$2" ]; then container_additional_volumes="${container_additional_volumes} ${2}" shift shift fi ;; --platform) if [ -n "$2" ]; then container_platform="--platform=${2}" shift shift fi ;; -a | --additional-flags) if [ -n "$2" ]; then container_manager_additional_flags="${container_manager_additional_flags} ${2}" shift shift fi ;; -ap | --additional-packages) if [ -n "$2" ]; then container_additional_packages="${container_additional_packages} ${2}" shift shift fi ;; --init-hooks) if [ -n "$2" ]; then container_init_hook="$2" shift shift fi ;; --pre-init-hooks) if [ -n "$2" ]; then container_pre_init_hook="${2}" shift shift fi ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name="$1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # If no clone option and no container image, let's choose a default image to use. # Fedora toolbox is a sensitive default if [ -z "${container_clone}" ] && [ -z "${container_image}" ]; then container_image="${container_image_default}" fi # If no name is specified and we're using the default container_image, then let's # set a default name for the container, that is distinguishable from the default # toolbx one. This will avoid problems when using both toolbx and distrobox on # the same system. if [ -z "${container_name}" ] && [ "${container_image}" = "${container_image_default}" ]; then container_name="${container_name_default}" fi # If no container_name is declared, we build our container name starting from the # container image specified. # # Examples: # alpine -> alpine # ubuntu:20.04 -> ubuntu-20.04 # registry.fedoraproject.org/fedora-toolbox:39 -> fedora-toolbox-39 # ghcr.io/void-linux/void-linux:latest-full-x86_64 -> void-linux-latest-full-x86_64 if [ -z "${container_name}" ]; then container_name="$(basename "${container_image}" | sed -E 's/[:.]/-/g')" fi # set the container hostname to default value if [ -z "${container_hostname}" ]; then container_hostname="$(uname -n)" if [ "${unshare_netns}" -eq 1 ]; then container_hostname="${container_name}.${container_hostname}" fi fi # check if container hostname is less than 64 chars to prevent issues if [ "$(printf "%s" "${container_hostname}" | wc -m)" -gt 64 ]; then printf >&2 "ERROR: Invalid hostname '%s', longer than 64 characters\n" "${container_hostname}" printf >&2 "ERROR: Use use --hostname argument to set it manually\n" exit 1 fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null && [ "${dryrun}" -eq 0 ]; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program-} ${container_manager}" fi # if nopasswd, then let the init know via a mountpoint if [ "${nopasswd}" -ne 0 ]; then container_manager_additional_flags="${container_manager_additional_flags} --volume /dev/null:/run/.nopasswd:ro" fi # inject additional volumes if specified if [ -n "${container_additional_volumes}" ]; then for volume in ${container_additional_volumes}; do container_manager_additional_flags="${container_manager_additional_flags} --volume ${volume}" done fi # Check that we have a complete distrobox installation or # entrypoint and export will not work. if [ -z "${distrobox_entrypoint_path}" ] || [ -z "${distrobox_export_path}" ]; then printf >&2 "Error: no distrobox-init found in %s\n" "${PATH}" exit 127 fi # get_clone_image will return the image name of a cloned existing container taken # as input. # Arguments: # None # Expected global variables: # container_manager: string container manager to use # container_clone: string container name to clone # Expected env variables: # None # Outputs: # prints the image name of the newly cloned container get_clone_image() { # We need to clone a container. # to do this we will commit the container and create a new tag. Then use it # as image for the new container. # # to perform this we first ensure the source container exists and that the # source container is stopped, else the clone will not work, container_source_status="$(${container_manager} inspect --type container \ --format '{{.State.Status}}' "${container_clone}")" # If the container is not already running, we need to start if first if [ "${container_source_status}" = "running" ]; then printf >&2 "Container %s is running.\nPlease stop it first.\n" "${container_clone}" printf >&2 "Cannot clone a running container.\n" return 1 fi # Now we can extract the container ID and commit it to use as source image # for the new container. container_source_id="$(${container_manager} inspect --type container \ --format '{{.ID}}' "${container_clone}")" container_commit_tag="$(echo "${container_clone}:$(date +%F)" | tr '[:upper:]' '[:lower:]')" # Commit current container state to a new image tag printf >&2 "Duplicating %s...\n" "${container_clone}" if ! ${container_manager} container commit \ "${container_source_id}" "${container_commit_tag}" > /dev/null; then printf >&2 "Cannot clone container: %s\n" "${container_clone}" return 1 fi # Return the image tag to use for the new container creation. printf "%s" "${container_commit_tag}" return 0 } # generate_create_command will produce a Podman or Docker command to execute. # Arguments: # None # Expected global variables: # container_manager: string container manager to use # container_name: string container name # container_image: string container image # container_manager_additional_flags: string container manager additional flags to use # container_hostname: string container hostname # container_additional_packages: string additional packages # container_pre_init_hook: string pre init hooks # container_init_hook: string init hooks # container_user_home: string user's home path # container_user_name: string user's username # container_user_uid: string user's UID # container_user_gid: string user's GID # container_home_prefix: string container's custom home prefix # container_user_custom_home: string container's custom home path # init: bool initful # nvidia: bool nvidia integration # rootful: bool rootful # unshare_devsys: bool unshare devsys # unshare_groups: bool unshare groups # unshare_ipc: bool unshare ipc # unshare_netns: bool unshare netns # unshare_process: bool unshare proc # Expected env variables: # None # Outputs: # prints the podman, docker or lilipod command to create the distrobox container generate_create_command() { # Set the container hostname the same as the container name. result_command="${container_manager} create" result_command="${result_command} ${container_platform}" # use the host's namespace for ipc, network, pid, ulimit result_command="${result_command} --hostname \"${container_hostname}\" --name \"${container_name}\" --privileged --security-opt label=disable --security-opt apparmor=unconfined --pids-limit=-1 --user root:root" if [ "${unshare_ipc}" -eq 0 ]; then result_command="${result_command} --ipc host" fi if [ "${unshare_netns}" -eq 0 ]; then result_command="${result_command} --network host" fi if [ "${unshare_process}" -eq 0 ]; then result_command="${result_command} --pid host" fi # Mount useful stuff inside the container. # We also mount host's root filesystem to /run/host, to be able to syphon # dynamic configurations from the host. # # Mount user home, dev and host's root inside container. # This grants access to external devices like usb webcams, disks and so on. # # Mount also the distrobox-init utility as the container entrypoint. # Also mount in the container the distrobox-export and distrobox-host-exec # utilities. result_command="${result_command} --label \"manager=distrobox\" --label \"distrobox.unshare_groups=${unshare_groups}\" --env \"SHELL=$(basename "${SHELL:-"/bin/bash"}")\" --env \"HOME=${container_user_home}\" --env \"container=${container_manager}\" --env \"TERMINFO_DIRS=/usr/share/terminfo:/run/host/usr/share/terminfo\" --env \"CONTAINER_ID=${container_name}\" --volume /tmp:/tmp:rslave --volume \"${distrobox_entrypoint_path}\":/usr/bin/entrypoint:ro --volume \"${distrobox_export_path}\":/usr/bin/distrobox-export:ro --volume \"${distrobox_hostexec_path}\":/usr/bin/distrobox-host-exec:ro --volume \"${container_user_home}\":\"${container_user_home}\":rslave" # Due to breaking change in https://github.com/opencontainers/runc/commit/d4b670fca6d0ac606777376440ffe49686ce15f4 # now we cannot mount /:/run/host as before, as it will try to mount RO partitions as RW thus breaking things. # This will ensure we will mount directories one-by-one thus avoiding this problem. # # This happens ONLY with podman+runc, docker and lilipod are unaffected, so let's do this only if we have podman AND runc. if echo "${container_manager}" | grep -q "podman" && ${container_manager} info | grep -q runc; then for rootdir in /*; do # Skip symlinks if [ -L "${rootdir}" ]; then continue fi # Find if the directory belongs to a RO mount, if do, mount it as RO+Rslave if findmnt --notruncate --noheadings --list --output OPTIONS --target "${rootdir}" | tr ',' '\n' | grep -q "^ro$"; then result_command="${result_command} --volume ${rootdir}:/run/host${rootdir}:ro,rslave" continue fi # Else we mount it RW+Rslave result_command="${result_command} --volume ${rootdir}:/run/host${rootdir}:rslave" done else # We're either on podman+crun, docker or lilipod, let's keep old behaviour result_command="${result_command} --volume /:/run/host/:rslave" fi if [ "${unshare_devsys}" -eq 0 ]; then result_command="${result_command} --volume /dev:/dev:rslave --volume /sys:/sys:rslave" fi # In case of initful containers, we implement a series of mountpoint in order # for systemd to work properly inside a container. # The following are a flag-based implementation of what podman's --systemd flag # does under the hood, as explained in their docs here: # https://docs.podman.io/en/latest/markdown/options/systemd.html # # set the default stop signal to SIGRTMIN+3. # mount tmpfs file systems on the following directories # /run # /run/lock # /tmp # /var/lib/journal # /sys/fs/cgroup/systemd <- this one is done by cgroupns=host if [ "${init}" -eq 1 ] && echo "${container_manager}" | grep -q "docker"; then # In case of docker we're actually rootful, so we need to use hosts cgroups result_command="${result_command} --cgroupns host" fi if [ "${init}" -eq 1 ] && echo "${container_manager}" | grep -vq "podman"; then # In case of all other non-podman container managers, we can do this result_command="${result_command} --stop-signal SIGRTMIN+3 --mount type=tmpfs,destination=/run --mount type=tmpfs,destination=/run/lock --mount type=tmpfs,destination=/var/lib/journal" fi # This fix is needed so that the container can have a separate devpts instance # inside # This will mount an empty /dev/pts, and the init will take care of mounting # a new devpts with the proper flags set # Mounting an empty volume there, is needed in order to ensure that no package # manager tries to fiddle with /dev/pts/X that would not be writable by them # # This implementation is done this way in order to be compatible with both # docker and podman if [ "${unshare_devsys}" -eq 0 ]; then result_command="${result_command} --volume /dev/pts --volume /dev/null:/dev/ptmx" fi # This fix is needed as on Selinux systems, the host's selinux sysfs directory # will be mounted inside the rootless container. # # This works around this and allows the rootless container to work when selinux # policies are installed inside it. # # Ref. Podman issue 4452: # https://github.com/containers/podman/issues/4452 if [ -e "/sys/fs/selinux" ]; then result_command="${result_command} --volume /sys/fs/selinux" fi # This fix is needed as systemd (or journald) will try to set ACLs on this # path. For now overlayfs and fuse.overlayfs are not compatible with ACLs # # This works around this using an unnamed volume so that this path will be # mounted with a normal non-overlay FS, allowing ACLs and preventing errors. # # This work around works in conjunction with distrobox-init's package manager # setups. # So that we can use pre/post hooks for package managers to present to the # systemd install script a blank path to work with, and mount the host's # journal path afterwards. result_command="${result_command} --volume /var/log/journal" # In some systems, for example using sysvinit, /dev/shm is a symlink # to /run/shm, instead of the other way around. # Resolve this detecting if /dev/shm is a symlink and mount original # source also in the container. if [ -L "/dev/shm" ] && [ "${unshare_ipc}" -eq 0 ]; then result_command="${result_command} --volume $(realpath /dev/shm):$(realpath /dev/shm)" fi # Ensure that both all container managers (not only podman) support forwarding of RedHat subscription-manager # This is needed in order to have a working subscription forwarded into the container, # this will ensure that rhel-9-for-x86_64-appstream-rpms and rhel-9-for-x86_64-baseos-rpms repos # will be available in the container, so that distrobox-init will be able to # install properly all the dependencies like mesa drivers. # # /run/secrets is a standard location for RHEL containers, that is being pointed by # /etc/rhsm-host by default. RHEL_SUBSCRIPTION_FILES=" /etc/pki/entitlement/:/run/secrets/etc-pki-entitlement:ro /etc/rhsm/:/run/secrets/rhsm:ro /etc/yum.repos.d/redhat.repo:/run/secrets/redhat.repo:ro " for rhel_file in ${RHEL_SUBSCRIPTION_FILES}; do if [ -e "$(echo "${rhel_file}" | cut -d':' -f1)" ]; then result_command="${result_command} --volume ${rhel_file}" fi done # If we have a home prefix to use, ano no custom home set, then we set # the custom home to be PREFIX/CONTAINER_NAME if [ -n "${container_home_prefix}" ] && [ -z "${container_user_custom_home}" ]; then container_user_custom_home="${container_home_prefix}/${container_name}" fi # If we have a custom home to use, # 1- override the HOME env variable # 2- export the DISTROBOX_HOST_HOME env variable pointing to original HOME # 3- mount the custom home inside the container. if [ -n "${container_user_custom_home}" ]; then if [ ! -d "${container_user_custom_home}" ]; then if ! mkdir -p "${container_user_custom_home}"; then printf >&2 "Do you have permission to write to %s?\n" "${container_user_custom_home}" exit 1 fi fi result_command="${result_command} --env \"HOME=${container_user_custom_home}\" --env \"DISTROBOX_HOST_HOME=${container_user_home}\" --volume \"${container_user_custom_home}:${container_user_custom_home}:rslave\"" fi # Mount also the /var/home dir on ostree based systems # do this only if $HOME was not already set to /var/home/username if [ "${container_user_home}" != "/var/home/${container_user_name}" ] && [ -d "/var/home/${container_user_name}" ]; then result_command="${result_command} --volume \"/var/home/${container_user_name}\":\"/var/home/${container_user_name}\":rslave" fi # Mount also the XDG_RUNTIME_DIR to ensure functionality of the apps. # This is skipped in case of initful containers, so that a dedicated # systemd user session can be used. if [ -d "/run/user/${container_user_uid}" ] && [ "${init}" -eq 0 ]; then result_command="${result_command} --volume /run/user/${container_user_uid}:/run/user/${container_user_uid}:rslave" fi # These are dynamic configs needed by the container to function properly # and integrate with the host # # We're doing this now instead of inside the init because some distros will # have symlinks places for these files that use absolute paths instead of # relative paths. # This is the bare minimum to ensure connectivity inside the container. # These files, will then be kept updated by the main loop every 15 seconds. if [ "${unshare_netns}" -eq 0 ]; then NET_FILES=" /etc/hosts /etc/resolv.conf " # If container_hostname is custom, we skip mounting /etc/hostname, else # we want to keep it in sync if [ "${container_hostname}" = "$(uname -n)" ]; then NET_FILES="${NET_FILES} /etc/hostname" fi for net_file in ${NET_FILES}; do if [ -e "${net_file}" ]; then result_command="${result_command} --volume ${net_file}:${net_file}:ro" fi done fi # These flags are not supported by docker, so we use them only if our # container manager is podman. if echo "${container_manager}" | grep -q "podman"; then result_command="${result_command} --annotation run.oci.keep_original_groups=1 --ulimit host" if [ "${init}" -eq 1 ]; then result_command="${result_command} --systemd=always" fi # Use keep-id only if going rootless. if [ "${rootful}" -eq 0 ]; then result_command="${result_command} --userns keep-id" fi fi # Add additional flags result_command="${result_command} ${container_manager_additional_flags}" # Now execute the entrypoint, refer to `distrobox-init -h` for instructions # # Be aware that entrypoint corresponds to distrobox-init, the copying of it # inside the container is moved to distrobox-enter, in the start phase. # This is done to make init, export and host-exec location independent from # the host, and easier to upgrade. # # We set the entrypoint _before_ running the container image so that # we can override any user provided entrypoint if need be result_command="${result_command} --entrypoint /usr/bin/entrypoint ${container_image} --verbose --name \"${container_user_name}\" --user ${container_user_uid} --group ${container_user_gid} --home \"${container_user_custom_home:-"${container_user_home}"}\" --init \"${init}\" --nvidia \"${nvidia}\" --pre-init-hooks \"${container_pre_init_hook}\" --additional-packages \"${container_additional_packages}\" -- '${container_init_hook}' " # use container_user_custom_home if defined, else fallback to normal home. # Return generated command. printf "%s" "${result_command}" } # dry run mode, just generate the command and print it. No creation. if [ "${dryrun}" -ne 0 ]; then if [ -n "${container_clone}" ]; then container_image="${container_clone}" fi cmd="$(generate_create_command)" cmd="$(echo "${cmd}" | sed 's/\t//g')" printf "%s\n" "${cmd}" exit 0 fi # Check if the container already exists. # If it does, notify the user and exit. if ${container_manager} inspect --type container "${container_name}" > /dev/null 2>&1; then printf "Distrobox named '%s' already exists.\n" "${container_name}" printf "To enter, run:\n\n" # If it's a rootful container AND user is not logged as root. if [ "${rootful}" -eq 1 ] && [ "${container_user_uid}" -ne 0 ]; then printf "distrobox enter --root %s\n\n" "${container_name}" # If user is logged as root OR it's a rootless container. elif [ "${container_user_uid}" -eq 0 ] || [ "${rootful}" -eq 0 ]; then printf "distrobox enter %s\n\n" "${container_name}" fi exit 0 fi # if we are using the clone flag, let's set the image variable # to the output of container duplication if [ -n "${container_clone}" ]; then if ! echo "${container_manager}" | grep -Eq "podman|docker"; then printf >&2 "ERROR: clone is only supported with docker and podman\n" exit 127 fi container_image="$(get_clone_image)" fi # First, check if the image exists in the host or auto-pull is enabled # If not prompt to download it. if [ "${container_always_pull}" -eq 1 ] || ! ${container_manager} inspect --type image "${container_image}" > /dev/null 2>&1; then # If we do auto-pull, don't ask questions if [ "${non_interactive}" -eq 1 ] || [ "${container_always_pull}" -eq 1 ]; then response="yes" else # Prompt to download it. printf >&2 "Image %s not found.\n" "${container_image}" printf >&2 "Do you want to pull the image now? [Y/n]: " read -r response response="${response:-"Y"}" fi # Accept only y,Y,Yes,yes,n,N,No,no. case "${response}" in y | Y | Yes | yes | YES) # Pull the image # shellcheck disable=SC2086 ${container_manager} pull ${container_platform} "${container_image}" ;; n | N | No | no | NO) printf >&2 "next time, run this command first:\n" printf >&2 "\t%s pull %s\n" "${container_manager}" "${container_image}" exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac fi # Generate the create command and run it printf >&2 "Creating '%s' using image %s\t" "${container_name}" "${container_image}" cmd="$(generate_create_command)" # Eval the generated command. If successful display an helpful message. # shellcheck disable=SC2086 if eval ${cmd} > /dev/null; then printf >&2 "\033[32m [ OK ]\n\033[0mDistrobox '%s' successfully created.\n" "${container_name}" printf >&2 "To enter, run:\n\n" # If it's a rootful container AND user is not logged as root. if [ "${rootful}" -eq 1 ] && [ "${container_user_uid}" -ne 0 ]; then printf "distrobox enter --root %s\n\n" "${container_name}" # If user is logged as root OR it's a rootless container. elif [ "${container_user_uid}" -eq 0 ] || [ "${rootful}" -eq 0 ]; then printf "distrobox enter %s\n\n" "${container_name}" fi # We've created the box, let's also create the entry if [ "${rootful}" -eq 0 ]; then if [ "${container_generate_entry}" -ne 0 ]; then "${distrobox_genentry_path}" "${container_name}" fi fi else error="$?" printf >&2 "\033[31m [ ERR ]\033[0m failed to create container.\n" exit "${error}" fi distrobox-1.8.1.2/distrobox-enter000077500000000000000000000600471474517124600167760ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Expected env variables: # HOME # USER # Optional env variables: # DBX_CONTAINER_ALWAYS_PULL # DBX_CONTAINER_CUSTOM_HOME # DBX_CONTAINER_GENERATE_ENTRY # DBX_CONTAINER_HOME_PREFIX # DBX_CONTAINER_HOSTNAME # DBX_CONTAINER_IMAGE # DBX_CONTAINER_MANAGER # DBX_CONTAINER_NAME # DBX_CONTAINER_CLEAN_PATH # DBX_NON_INTERACTIVE # DBX_VERBOSE # DBX_SKIP_WORKDIR # DBX_SUDO_PROGRAM # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" app_cache_dir=${XDG_CACHE_HOME:-"${HOME}/.cache"}/distrobox trap cleanup TERM INT HUP EXIT # cleanup will remove fifo and temp files, and print to stdout # container's logs in case of error and verbose. # Arguments: # None # Expected global variables: # container_manager: string container manager to use # container_name: string container name # app_cache_dir: string cache dire to write file into # logs_pid: string pid of the podman/docker logs process # verbose: bool verbose # Expected env variables: # None # Outputs: # None cleanup() { rm -f "${app_cache_dir}/.${container_name}.fifo" if [ -n "${logs_pid:-}" ]; then kill "${logs_pid:-}" 2> /dev/null || : fi if [ "${verbose}" -eq 1 ]; then ${container_manager} logs "${container_name}" fi } # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Defaults # by default we use getent to get the login shell of the user and use that container_custom_command=0 container_command_user="$(echo "${USER}" | sed 's|\\|\\\\|g')" container_image_default="registry.fedoraproject.org/fedora-toolbox:latest" container_manager="autodetect" container_manager_additional_flags="" container_name="" container_name_default="my-distrobox" non_interactive=0 # Use cd + dirname + pwd so that we do not have relative paths in mount points # We're not using "realpath" here so that symlinks are not resolved this way # "realpath" would break situations like Nix or similar symlink based package # management. distrobox_enter_path="$(cd "$(dirname "$0")" && pwd)/distrobox-enter" dryrun=0 headless=0 # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 skip_workdir=0 verbose=0 clean_path=0 version="1.8.1.2.1" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done # If we're running this script as root -- as in, logged in in the shell as root # user, and not via SUDO/DOAS --, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "$(id -ru)" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_CONTAINER_NAME}" ] && container_name="${DBX_CONTAINER_NAME}" [ -n "${DBX_CONTAINER_CLEAN_PATH}" ] && clean_path=1 [ -n "${DBX_SKIP_WORKDIR}" ] && skip_workdir="${DBX_SKIP_WORKDIR}" [ -n "${DBX_NON_INTERACTIVE}" ] && non_interactive="${DBX_NON_INTERACTIVE}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${non_interactive}" = "true" ] && non_interactive=1 [ "${non_interactive}" = "false" ] && non_interactive=0 [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-enter --name fedora-39 -- bash -l distrobox-enter my-alpine-container -- sh -l distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l distrobox-enter --additional-flags "--env MY_VAR=value" --name test -- bash -l MY_VAR=value distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l Options: --name/-n: name for the distrobox default: my-distrobox --/-e: end arguments execute the rest as command to execute at login default: default ${USER}'s shell --clean-path: reset PATH inside container to FHS standard --no-tty/-T: do not instantiate a tty --no-workdir/-nw: always start the container from container's home directory --additional-flags/-a: additional flags to pass to the container manager command --help/-h: show this message --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) shift verbose=1 ;; -T | -H | --no-tty) shift headless=1 ;; -r | --root) shift rootful=1 ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -d | --dry-run) shift dryrun=1 ;; -nw | --no-workdir) shift skip_workdir=1 ;; -n | --name) if [ -n "$2" ]; then container_name="$2" shift shift fi ;; -a | --additional-flags) if [ -n "$2" ]; then if [ -z "${container_manager_additional_flags=}" ]; then container_manager_additional_flags="$(echo "${2}" | sed -E "s/(--[a-zA-Z]+) ([^ ]+)/\1=\2/g" | sed 's/ --/\n--/g')" else container_manager_additional_flags="${container_manager_additional_flags} $(echo "${2}" | sed -E "s/(--[a-zA-Z]+) ([^ ]+)/\1=\2/g" | sed 's/ --/\n--/g')" fi shift shift fi ;; -Y | --yes) non_interactive=1 shift ;; -e | --exec | --) container_custom_command=1 shift # We pass the rest of arguments as $@ at the end break ;; --clean-path) shift clean_path=1 ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name="$1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi if [ -z "${container_name}" ]; then container_name="${container_name_default}" fi if [ ! -t 0 ] || [ ! -t 1 ]; then headless=1 fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null && [ "${dryrun}" -eq 0 ]; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program-} ${container_manager}" fi # generate_enter_command will produce a Podman, Docker or Lilipod command to execute to enter the container. # Arguments: # None # Expected global variables: # container_manager: string container manager to use # container_name: string container name # container_manager_additional_flags: string container manager additional flags to use # container_home: string container's home path # container_path: string container's default PATH variable # headless: bool headless mode # skip_workdir: bool skip workdir # verbose: bool verbose # unshare_groups # distrobox_enter_path # Expected env variables: # PATH # USER # PWD # XDG_DATA_DIRS # XDG_CONFIG_DIRS # Outputs: # prints the podman, docker or lilipod command to enter the distrobox container generate_enter_command() { result_command="exec" result_command="${result_command} --interactive" result_command="${result_command} --detach-keys=" # In case of initful systems or unshared groups, we don't enter directly # as our user, but we instead enter as root, and then su $USER, in order # to trigger a proper login if [ "${unshare_groups:-0}" -eq 1 ]; then result_command="${result_command} --user=root" else result_command="${result_command} --user=${USER}" fi # For some usage, like use in service, or launched by non-terminal # eg. from desktop files, TTY can fail to instantiate, and fail to enter # the container. # To work around this, --headless let's you skip the --tty flag and make it # work in tty-less situations. # Disable tty also if we're NOT in a tty (test -t 0, test -t 1). if [ "${headless}" -eq 0 ]; then result_command="${result_command} --tty" fi # Entering container using our user and workdir. # Start container from working directory. Else default to home. Else do /. # Since we are entering from host, drop at workdir through '/run/host' # which represents host's root inside container. Any directory on host # even if not explicitly mounted is bound to exist under /run/host. # Since user $HOME is very likely present in container, enter there directly # to avoid confusing the user about shifted paths. # pass distrobox-enter path, it will be used in the distrobox-export tool. if [ "${skip_workdir}" -eq 0 ]; then workdir="${PWD:-${container_home:-"/"}}" if [ -n "${workdir##*"${container_home}"*}" ]; then workdir="/run/host${workdir}" fi else # Skipping workdir we just enter $HOME of the container. workdir="${container_home}" fi result_command="${result_command} --workdir=${workdir}" result_command="${result_command} --env=CONTAINER_ID=${container_name}" result_command="${result_command} --env=DISTROBOX_ENTER_PATH=${distrobox_enter_path}" # Loop through all the environment vars # and export them to the container. set +o xtrace # disable logging for this snippet, or it will be too talkative. for i in $(printenv | grep '=' | grep -Ev ' |"|`|\$' | grep -Ev '^(CONTAINER_ID|FPATH|HOST|HOSTNAME|HOME|PATH|PROFILEREAD|SHELL|XDG_SEAT|XDG_VTNR|XDG_.*_DIRS|^_)'); do # We filter the environment so that we do not have strange variables, # multiline or containing spaces. # We also NEED to ignore the HOME variable, as this is set at create time # and needs to stay that way to use custom home dirs. result_command="${result_command} --env=${i}" done # Start with the $PATH set in the container's config container_paths="${container_path:-""}" # Ensure the standard FHS program paths are in PATH environment standard_paths="/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin" if [ "${clean_path}" -eq 1 ]; then # only add the standard paths for standard_path in ${standard_paths}; do if [ -z "${container_paths}" ]; then container_paths="${standard_path}" else container_paths="${container_paths}:${standard_path}" fi done else # collect standard paths not existing from host PATH for standard_path in ${standard_paths}; do pattern="(:|^)${standard_path}(:|$)" if ! echo "${PATH}" | grep -Eq "${pattern}"; then if [ -z "${container_paths}" ]; then container_paths="${standard_path}" else container_paths="${container_paths}:${standard_path}" fi fi done # append additional standard paths to host PATH to get final container_paths if [ -n "${container_paths}" ]; then container_paths="${PATH}:${container_paths}" else container_paths="${PATH}" fi fi result_command="${result_command} --env=PATH=${container_paths}" # Ensure the standard FHS program paths are in XDG_DATA_DIRS environment standard_paths="/usr/local/share /usr/share" container_paths="${XDG_DATA_DIRS:-}" # add to the XDG_DATA_DIRS only after the host's paths, and only if not already present. for standard_path in ${standard_paths}; do pattern="(:|^)${standard_path}(:|$)" if [ -z "${container_paths}" ]; then container_paths="${standard_path}" elif ! echo "${container_paths}" | grep -Eq "${pattern}"; then container_paths="${container_paths}:${standard_path}" fi done result_command="${result_command} --env=XDG_DATA_DIRS=${container_paths}" # This correctly sets the XDG_* dirs to the container_home # it will be $HOME if using regular home dirs # if will be $container_home if using a custom home during create result_command="${result_command} --env=XDG_CACHE_HOME=${container_home}/.cache --env=XDG_CONFIG_HOME=${container_home}/.config --env=XDG_DATA_HOME=${container_home}/.local/share --env=XDG_STATE_HOME=${container_home}/.local/state" # Ensure the standard FHS program paths are in XDG_CONFIG_DIRS environment standard_paths="/etc/xdg" container_paths="${XDG_CONFIG_DIRS:-}" # add to the XDG_CONFIG_DIRS only after the host's paths, and only if not already present. for standard_path in ${standard_paths}; do pattern="(:|^)${standard_path}(:|$)" if [ -z "${container_paths}" ]; then container_paths="${standard_path}" elif ! echo "${container_paths}" | grep -Eq "${pattern}"; then container_paths="${container_paths}:${standard_path}" fi done result_command="${result_command} --env=XDG_CONFIG_DIRS=${container_paths}" # re-enable logging if it was enabled previously. if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # Add additional flags if [ -n "${container_manager_additional_flags}" ]; then result_command="${result_command} ${container_manager_additional_flags}" fi # Run selected container with specified command. result_command="${result_command} ${container_name}" # Return generated command. # here we remove tabs as an artifact of using indentation in code to improve # readability printf "%s\n" "${result_command}" | tr -d '\t' } container_home="${HOME}" container_path="${PATH}" unshare_groups=0 # Now inspect the container we're working with. container_status="unknown" eval "$(${container_manager} inspect --type container --format \ 'container_status={{.State.Status}}; unshare_groups={{ index .Config.Labels "distrobox.unshare_groups" }}; {{range .Config.Env}}{{if and (ge (len .) 5) (eq (slice . 0 5) "HOME=")}}container_home={{slice . 5 | printf "%q"}}{{end}}{{end}}; {{range .Config.Env}}{{if and (ge (len .) 5) (eq (slice . 0 5) "PATH=")}}container_path={{slice . 5 | printf "%q"}}{{end}}{{end}}' \ "${container_name}")" # dry run mode, just generate the command and print it. No execution. if [ "${dryrun}" -ne 0 ]; then cmd="$(generate_enter_command | sed 's/\t//g')" printf "%s %s\n" "${cmd}" "$*" exit 0 fi # Check if the container is even there if [ "${container_status}" = "unknown" ]; then # If not, prompt to create it first # If we're not-interactive, just don't ask questions if [ "${non_interactive}" -eq 1 ]; then response="yes" else printf >&2 "Create it now, out of image %s? [Y/n]: " "${container_image_default}" read -r response response="${response:-"Y"}" fi # Accept only y,Y,Yes,yes,n,N,No,no. case "${response}" in y | Y | Yes | yes | YES) # Ok, let's create the container with just 'distrobox create $container_name create_command="$(dirname "${0}")/distrobox-create" if [ "${rootful}" -ne 0 ]; then create_command="${create_command} --root" fi create_command="${create_command} --yes -i ${container_image_default} -n ${container_name}" printf >&2 "Creating the container %s\n" "${container_name}" if [ "${dryrun}" -ne 1 ]; then ${create_command} fi ;; n | N | No | no | NO) printf >&2 "Ok. For creating it, run this command:\n" printf >&2 "\tdistrobox create --image /:\n" exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac fi # If the container is not already running, we need to start if first if [ "${container_status}" != "running" ]; then # If container is not running, start it first # # Here, we save the timestamp before launching the start command, so we can # be sure we're working with this very same session of logs later. log_timestamp="$(date -u +%FT%T).000000000+00:00" ${container_manager} start "${container_name}" > /dev/null # # Check if the container is going in error status earlier than the # entrypoint if [ "$(${container_manager} inspect \ --type container \ --format "{{.State.Status}}" "${container_name}")" != "running" ]; then printf >&2 "\033[31m Error: could not start entrypoint.\n\033[0m" container_manager_log="$(${container_manager} logs "${container_name}")" printf >&2 "%s\n" "${container_manager_log}" exit 1 fi printf >&2 "%-40s\t" "Starting container..." mkdir -p "${app_cache_dir}" rm -f "${app_cache_dir}/.${container_name}.fifo" mkfifo "${app_cache_dir}/.${container_name}.fifo" while true; do # Exit early in case of crashed/stopped container during setup if [ "$(${container_manager} inspect --type container --format '{{.State.Status}}' "${container_name}")" != "running" ]; then printf >&2 "\nContainer Setup Failure!\n" exit 1 fi # save starting loop timestamp in temp variable, we'll use it # after to let logs command minimize possible holes ${container_manager} logs --since "${log_timestamp}" -f "${container_name}" \ > "${app_cache_dir}/.${container_name}.fifo" 2>&1 & logs_pid="$!" # read logs from log_timestamp to now, line by line while IFS= read -r line; do case "${line}" in "+"*) # Ignoring logging commands ;; "Error:"*) printf >&2 "\033[31m %s\n\033[0m" "${line}" exit 1 ;; "Warning:"*) printf >&2 "\n\033[33m %s\033[0m" "${line}" ;; "distrobox:"*) current_line="$(echo "${line}" | cut -d' ' -f2-)" # Save current line in the status, to avoid printing the same line multiple times printf >&2 "\033[32m [ OK ]\n\033[0m%-40s\t" "${current_line}" ;; "container_setup_done"*) printf >&2 "\033[32m [ OK ]\n\033[0m" kill "${logs_pid}" > /dev/null 2>&1 break 2 ;; *) ;; esac done < "${app_cache_dir}/.${container_name}.fifo" done # cleanup fifo rm -f "${app_cache_dir}/.${container_name}.fifo" printf >&2 "\nContainer Setup Complete!\n" fi ################################################################################ # Execution section, in this section we will manipulate the positional parameters # in order to generate our long docker/podman/lilipod command to execute. # # We use positional parameters in order to have the shell manage escaping and spaces # so we remove the problem of we having to handle them. # # 1 - handle absence of custom command, we will need to add a getent command to # execute the right container's user's shell # 2 - in case of unshared groups (or initful) we need to trigger a proper login # using `su`, so we will need to manipulate these arguments accorodingly # 3 - prepend our generated command # to do this, we use `tac` so we reverse loop it and prepend each argument. # 4 - now that we're done, we can prepend our container_command # we will need to use `rev` to reverse it as we reverse loop and prepend each # argument ################################################################################ # # Setup default commands if none are specified # execute a getent command using the /bin/sh shell # to find out the default shell of the user, and # do a login shell with it (eg: /bin/bash -l) if [ "${container_custom_command}" -eq 0 ]; then set - "$@" "/bin/sh" "-c" "\$(getent passwd '${container_command_user}' | cut -f 7 -d :) -l" fi # If we have a command and we're unsharing groups, we need to execute those # command using su $container_command_user # if we're in a tty, also allocate one if [ "${unshare_groups:-0}" -eq 1 ]; then # shellcheck disable=SC2089,SC2016 set -- "-c" '"$0" "$@"' -- "$@" set -- "-s" "/bin/sh" "$@" if [ "${headless}" -eq 0 ]; then set -- "--pty" "$@" fi set -- "${container_command_user}" "$@" set -- "su" "$@" fi # Generate the exec command and run it cmd="$(generate_enter_command | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--]}')" # Reverse it so we can reverse loop and prepend the command's arguments # to our positional parameters IFS=' ' for arg in ${cmd}; do set - "${arg}" "$@" done # Prepend the container manager command # reverse it first, so we can loop backward as we're prepending not appending IFS=' ' for arg in $(echo "${container_manager}" | rev); do arg="$(echo "${arg}" | rev)" set - "${arg}" "$@" done exec "$@" distrobox-1.8.1.2/distrobox-ephemeral000077500000000000000000000175671474517124600176340ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Optional env variables: # DBX_CONTAINER_MANAGER # DBX_CONTAINER_NAME # DBX_VERBOSE # DBX_SUDO_PROGRAM # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" trap cleanup TERM INT HUP name=$(mktemp -u distrobox-XXXXXXXXXX) container_command="" create_flags="" distrobox_path="$(dirname "${0}")" extra_flags="" # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 verbose=0 version="1.8.1.2" container_additional_packages="" container_init_hook=" " container_manager_additional_flags="" container_pre_init_hook=" " # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-ephemeral [--root/-r] Options: --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --help/-h: show this message --/-e: end arguments execute the rest as command to execute at login default: default ${USER}'s shell --version/-V: show version See also: distrobox-ephemeral also inherits all the flags from distrobox-create: EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help "${distrobox_path}"/distrobox-create --help | tail -n +2 exit 0 ;; -r | --root) shift rootful=1 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -e | --exec | --) shift container_command="-- $*" break ;; -n | --name) # Ignore --name on ephemeral if [ -n "$2" ]; then name="${2}" shift shift fi ;; -a | --additional-flags) if [ -n "$2" ]; then container_manager_additional_flags="${container_manager_additional_flags} ${2}" shift shift fi ;; -ap | --additional-packages) if [ -n "$2" ]; then container_additional_packages="${container_additional_packages} ${2}" shift shift fi ;; --init-hooks) if [ -n "$2" ]; then container_init_hook="$2" shift shift fi ;; --pre-init-hooks) if [ -n "$2" ]; then container_pre_init_hook="${2}" shift shift fi ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then create_flags="${create_flags} $1" shift else break fi ;; esac done set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace extra_flags="${extra_flags} --verbose" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then extra_flags="${extra_flags} --root" fi # generate_ephemeral_create_command will produce a distrobox-create command to execute. # Arguments: # None # Expected global variables: # distrobox_path = string distrobox path # name = string container name # extra_flags = string extra flags to inject # create_flags = string create extra flags to inject # Expected env variables: # None # Outputs: # prints the distrobox-create command handling special flags generate_ephemeral_create_command() { result_command="${distrobox_path}/distrobox-create" if [ -n "${container_manager_additional_flags}" ]; then result_command="${result_command} \ --additional-flags \"${container_manager_additional_flags}\"" fi if [ -n "${container_additional_packages}" ]; then result_command="${result_command} \ --additional-packages \"${container_additional_packages}\"" fi if [ -n "${container_init_hook}" ]; then result_command="${result_command} \ --init-hooks \"${container_init_hook}\"" fi if [ -n "${container_pre_init_hook}" ]; then result_command="${result_command} \ --pre-init-hooks \"${container_pre_init_hook}\"" fi result_command="${result_command} \ ${extra_flags} ${create_flags} --yes --name ${name}" # Return generated command. printf "%s" "${result_command}" } # cleanup will ensure we remove the ephemeral container # Arguments: # None # Expected global variables: # name: string the name of the container # extra_flags: string extra flags to append to the distrobox command # distrobox_path: string path to the distrobox script # Expected env variables: # None # Outputs: # None cleanup() { trap - TERM INT HUP # shellcheck disable=SC2086 "${distrobox_path}"/distrobox-rm ${extra_flags} --force "${name}" --yes } cmd="$(generate_ephemeral_create_command)" # shellcheck disable=SC2086 eval ${cmd} # shellcheck disable=SC2086 "${distrobox_path}"/distrobox-enter ${extra_flags} "${name}" ${container_command} exit_code="$?" cleanup exit "${exit_code}" distrobox-1.8.1.2/distrobox-export000077500000000000000000000531401474517124600171760ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Expected env variables: # HOME # USER # DISTROBOX_ENTER_PATH # DISTROBOX_HOST_HOME # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults container_name="${CONTAINER_ID:-}" [ -z "${container_name}" ] && container_name="$(grep "name=" /run/.containerenv | cut -d'=' -f2- | tr -d '"')" export_action="" exported_app="" exported_app_label="" exported_bin="" exported_delete=0 extra_flags="" enter_flags="" # Use DBX_HOST_HOME if defined, else fallback to HOME # DBX_HOST_HOME is set in case container is created # with custom --home directory host_home="${DISTROBOX_HOST_HOME:-"${HOME}"}" dest_path="${DISTROBOX_EXPORT_PATH:-${host_home}/.local/bin}" is_sudo=0 rootful="" sudo_prefix="" verbose=0 version="1.8.1.2" sudo_askpass_path="${dest_path}/distrobox_sudo_askpass" sudo_askpass_script="#!/bin/sh if command -v zenity 2>&1 > /dev/null; then zenity --password elif command -v kdialog 2>&1 > /dev/null; then kdialog --password 'A password is required...' else exit 127 fi" # We depend on some commands, let's be sure we have them base_dependencies="basename find grep sed" for dep in ${base_dependencies}; do if ! command -v "${dep}" > /dev/null; then printf >&2 "Missing dependency: %s\n" "${dep}" exit 127 fi done # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-export --app mpv [--extra-flags "flags"] [--enter-flags "flags"] [--delete] [--sudo] distrobox-export --bin /path/to/bin [--export-path ~/.local/bin] [--extra-flags "flags"] [--enter-flags "flags"] [--delete] [--sudo] Options: --app/-a: name of the application to export or absolute path to desktopfile to export --bin/-b: absolute path of the binary to export --list-apps: list applications exported from this container --list-binaries: list binaries exported from this container, use -ep to specify custom paths to search --delete/-d: delete exported application or binary --export-label/-el: label to add to exported application name. Use "none" to disable. Defaults to (on \$container_name) --export-path/-ep: path where to export the binary --extra-flags/-ef: extra flags to add to the command --enter-flags/-nf: flags to add to distrobox-enter --sudo/-S: specify if the exported item should be run as sudo --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) shift verbose=1 ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -a | --app) if [ -n "$2" ]; then export_action="app" exported_app="$2" shift shift fi ;; -b | --bin) if [ -n "$2" ]; then export_action="bin" exported_bin="$2" shift shift fi ;; --list-apps) export_action="list-apps" exported_bin="null" shift ;; --list-binaries) export_action="list-binaries" exported_bin="null" shift ;; -S | --sudo) is_sudo=1 shift ;; -el | --export-label) if [ -n "$2" ]; then exported_app_label="$2" shift shift fi ;; -ep | --export-path) if [ -n "$2" ]; then dest_path="$2" shift shift fi ;; -ef | --extra-flags) if [ -n "$2" ]; then extra_flags="$2" shift shift fi ;; -nf | --enter-flags) if [ -n "$2" ]; then enter_flags="$2" shift shift fi ;; -d | --delete) exported_delete=1 shift ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. break ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # Ensure we can write stuff there if [ ! -e "${dest_path}" ]; then mkdir -p "${dest_path}" fi # Check we're running inside a container and not on the host. if [ ! -f /run/.containerenv ] && [ ! -f /.dockerenv ] && [ -z "${container:-}" ]; then printf >&2 "You must run %s inside a container!\n" " $(basename "$0")" exit 126 fi # Check if we're in a rootful or rootless container. if grep -q "rootless=0" /run/.containerenv 2> /dev/null; then rootful="--root" # We need an askpass script for SUDO_ASKPASS, to launch graphical apps # from the drawer if [ ! -e "${sudo_askpass_path}" ]; then echo "${sudo_askpass_script}" > "${sudo_askpass_path}" chmod +x "${sudo_askpass_path}" fi fi # We're working with HOME, so we must run as USER, not as root. if [ "$(id -u)" -eq 0 ]; then printf >&2 "You must not run %s as root!\n" " $(basename "$0")" exit 1 fi # Ensure we're not receiving more than one action at time. if [ -n "${exported_app}" ] && [ -n "${exported_bin}" ]; then printf >&2 "Error: Invalid arguments, choose only one action below.\n" printf >&2 "Error: You can only export one thing at time.\n" exit 2 fi # Filter enter_flags and remove redundant options if [ -n "${enter_flags}" ]; then # shellcheck disable=SC2086 set -- ${enter_flags} filtered_flags="" # Inform user that certain flags are redundant while [ $# -gt 0 ]; do case "$1" in --root | -r) printf >&2 "Warning: %s argument will be set automatically and should be removed.\n" "${1}" ;; --name | -n) printf >&2 "Warning: %s argument will be set automatically and should be removed.\n" "${1}" shift ;; *) filtered_flags="${filtered_flags} $1" ;; esac shift done enter_flags="${filtered_flags}" fi # Command to execute container_command_suffix="'${exported_bin}' ${extra_flags} \"\$@\"" # Check if exported application/binary should be run with sudo privileges if [ "${is_sudo}" -ne 0 ]; then sudo_prefix="sudo -S" # Edge case for systems without sudo if command -v su-exec > /dev/null >&1; then sudo_prefix="su-exec root" container_command_suffix="sh -l -c \"'${exported_bin}' ${extra_flags} \$@\"" fi fi # Prefix to add to an existing command to work through the container container_command_prefix="${DISTROBOX_ENTER_PATH:-"distrobox-enter"} ${rootful} -n ${container_name} ${enter_flags} -- ${sudo_prefix} " if [ -n "${rootful}" ]; then container_command_prefix="env SUDO_ASKPASS=\"${sudo_askpass_path}\" DBX_SUDO_PROGRAM=\"sudo --askpass\" ${container_command_prefix}" fi if [ -z "${exported_app_label}" ]; then exported_app_label=" (on ${container_name})" elif [ "${exported_app_label}" = "none" ]; then exported_app_label="" else # Add a leading space so that we can have "NAME LABEL" in the entry exported_app_label=" ${exported_app_label}" fi # generate_script will generate a script from template. This script will wrap the # exported binary in order to ensure it will be executed in the right container. # Arguments: # None # Expected global variables: # CONTAINER_ID: id of the current container # container_command_suffix: string to postpone to the command to launch # container_name: string name of this container # dest_path: string path where to export the binary # enter_flags: string extra flags to append to the distrobox enter command # exported_bin: string path to the binary to export # exported_delete: bool delete the binary exported # extra_flags: string extra flags to append to the exported app command # rootful: bool if this is a rootful container # sudo_prefix: string sudo command to prepend to the exported command # Expected env variables: # None # Outputs: # print generated script. generate_script() { cat << EOF #!/bin/sh # distrobox_binary # name: ${container_name} if [ -z "\${CONTAINER_ID}" ]; then exec "${DISTROBOX_ENTER_PATH:-"distrobox-enter"}" ${rootful} -n ${container_name} ${enter_flags} -- ${sudo_prefix} ${container_command_suffix} elif [ -n "\${CONTAINER_ID}" ] && [ "\${CONTAINER_ID}" != "${container_name}" ]; then exec distrobox-host-exec '${dest_path}/$(basename "${exported_bin}")' "\$@" else exec '${exported_bin}' "\$@" fi EOF return $? } # export_binary will export selected binary to destination directory. # the following function will use generate_script to create a shell script in # dest_path that will execute the exported binary in the selected distrobox. # # Arguments: # None # Expected global variables: # CONTAINER_ID: id of the current container # container_name: string name of this container # dest_path: string path where to export the binary # exported_bin: string path to the binary to export # exported_delete: bool delete the binary exported # Expected env variables: # None # Outputs: # a generated_script in dest_path # or error code. export_binary() { # Ensure the binary we're exporting is installed if [ ! -f "${exported_bin}" ]; then printf >&2 "Error: cannot find %s.\n" "${exported_bin}" return 127 fi # generate dest_file path dest_file="${dest_path}/$(basename "${exported_bin}")" # create the binary destination path if it doesn't exist mkdir -p "${dest_path}" # If we're deleting it, just do it and exit if [ "${exported_delete}" -ne 0 ]; then # ensure it's a distrobox exported binary if ! grep -q "distrobox_binary" "${dest_file}"; then printf >&2 "Error: %s is not exported.\n" "${exported_bin}" return 1 fi if rm -f "${dest_file}"; then printf "%s from %s removed successfully from %s.\nOK!\n" \ "${exported_bin}" "${container_name}" "${dest_path}" return 0 fi return 1 fi # test if we have writing rights on the file if ! touch "${dest_file}"; then printf >&2 "Error: cannot create destination file %s.\n" "${dest_file}" return 1 fi # create the script from template and write to file if generate_script > "${dest_file}"; then chmod +x "${dest_file}" printf "%s from %s exported successfully in %s.\nOK!\n" \ "${exported_bin}" "${container_name}" "${dest_path}" return 0 fi # Unknown error. return 3 } # export_application will export input graphical application to the host. # the following function will scan the distrobox for desktop and icon files for # the selected application. It will then put the needed icons in the host's icons # directory and create a new .desktop file that will execute the selected application # in the distrobox. # # Arguments: # None # Expected global variables: # CONTAINER_ID: id of the current container # container_command_prefix: string to prepend to the command to launch # container_name: string name of this container # exported_app: string name of the app to export # exported_app_label: string label to use to mark the exported app # exported_delete: bool if we want to delete or not # extra_flags: string extra flags to append to the exported app command # host_home: home path ofr the host, where to search desktop files # Expected env variables: # None # Outputs: # needed icons in /run/host/$host_home/.local/share/icons # needed desktop files in /run/host/$host_home/.local/share/applications # or error code. export_application() { canon_dirs="" # In case we're explicitly going for a full desktopfile path if [ -e "${exported_app}" ]; then desktop_files="${exported_app}" else IFS=":" if [ -n "${XDG_DATA_DIRS}" ]; then for xdg_data_dir in ${XDG_DATA_DIRS}; do [ -d "${xdg_data_dir}/applications" ] && canon_dirs="${canon_dirs} ${xdg_data_dir}/applications" done else [ -d /usr/share/applications ] && canon_dirs="/usr/share/applications" [ -d /usr/local/share/applications ] && canon_dirs="${canon_dirs} /usr/local/share/applications" [ -d /var/lib/flatpak/exports/share/applications ] && canon_dirs="${canon_dirs} /var/lib/flatpak/exports/share/applications" fi if [ -n "${XDG_DATA_HOME}" ]; then [ -d "${XDG_DATA_HOME}/applications" ] && canon_dirs="${canon_dirs} ${XDG_DATA_HOME}/applications" else [ -d "${HOME}/.local/share/applications" ] && canon_dirs="${canon_dirs} ${HOME}/.local/share/applications" fi unset IFS # In this phase we search for applications to export. # First find command will grep through all files in the canonical directories # and only list files that contain the $exported_app, excluding those that # already contains a distrobox-enter command. So skipping already exported apps. # Second find will list all files that contain the name specified, so that # it is possible to export an app not only by its executable name but also # by its launcher name. desktop_files=$( # shellcheck disable=SC2086 find ${canon_dirs} -type f -print -o -type l -print | sed 's/./\\&/g' | xargs -I{} grep -l -e "Exec=.*${exported_app}.*" -e "Name=.*${exported_app}.*" "{}" | sed 's/./\\&/g' | xargs -I{} grep -L -e "Exec=.*${DISTROBOX_ENTER_PATH:-"distrobox.*enter"}.*" "{}" | sed 's/./\\&/g' | xargs -I{} printf "%s¤" "{}" ) fi # Ensure the app we're exporting is installed # Check that we found some desktop files first. if [ -z "${desktop_files}" ]; then printf >&2 "Error: cannot find any desktop files.\n" printf >&2 "Error: trying to export a non-installed application.\n" return 127 fi # Find icons by using the Icon= specification. If it's only a name, we'll # search for the file, if it's already a path, just grab it. icon_files="" IFS="¤" for desktop_file in ${desktop_files}; do if [ -z "${desktop_file}" ]; then continue fi icon_name="$(grep Icon= "${desktop_file}" | cut -d'=' -f2- | paste -sd "¤" -)" for icon in ${icon_name}; do if case "${icon_name}" in "/"*) true ;; *) false ;; esac && [ -e "${icon_name}" ]; then # In case it's an hard path, conserve it and continue icon_files="${icon_files}¤${icon_name}" else # If it's not an hard path, find all files in the canonical paths. icon_files="${icon_files}¤$(find \ /usr/share/icons \ /usr/share/pixmaps \ /var/lib/flatpak/exports/share/icons -iname "*${icon}*" \ -printf "%p¤" 2> /dev/null || :)" fi done # remove leading delimiter icon_files=${icon_files#¤} done # create applications dir if not existing mkdir -p "/run/host${host_home}/.local/share/applications" # copy icons in home directory icon_file_absolute_path="" IFS="¤" for icon_file in ${icon_files}; do if [ -z "${icon_file}" ]; then continue fi # replace canonical paths with equivalent paths in HOME icon_home_directory="$(dirname "${icon_file}" | sed "s|/usr/share/|\/run\/host\/${host_home}/.local/share/|g" | sed "s|/var/lib/flatpak/exports/share|\/run\/host\/${host_home}/.local/share/|g" | sed "s|pixmaps|icons|g")" # check if we're exporting an icon which is not in a canonical path if [ "${icon_home_directory}" = "$(dirname "${icon_file}")" ]; then icon_home_directory="${host_home}/.local/share/icons/" icon_file_absolute_path="${icon_home_directory}$(basename "${icon_file}")" fi # check if we're exporting or deleting if [ "${exported_delete}" -ne 0 ]; then # we need to remove, not export rm -rf "${icon_home_directory:?}"/"$(basename "${icon_file:?}")" continue fi # we wanto to export the application's icons mkdir -p "${icon_home_directory}" if [ ! -e "${icon_home_directory}/$(basename "${icon_file}")" ] && [ -e "$(realpath "${icon_file}")" ]; then cp -rf "$(realpath "${icon_file}")" "${icon_home_directory}" fi done # create desktop files for the distrobox IFS="¤" for desktop_file in ${desktop_files}; do if [ -z "${desktop_file}" ]; then continue fi desktop_original_file="$(basename "${desktop_file}")" desktop_home_file="${container_name}-$(basename "${desktop_file}")" # check if we're exporting or deleting if [ "${exported_delete}" -ne 0 ]; then rm -f "/run/host${host_home}/.local/share/applications/${desktop_original_file}" rm -f "/run/host${host_home}/.local/share/applications/${desktop_home_file}" # we're done, go to next continue fi # Add command_prefix # Add extra flags # Add closing quote # If a TryExec is present, we have to fake it as it will not work # through the container separation sed "s|^Exec=\(.*\)|Exec=${container_command_prefix} \1 |g" "${desktop_file}" | sed "s|\(%.*\)|${extra_flags} \1|g" | sed "/^TryExec=.*/d" | sed "/^DBusActivatable=true/d" | sed "s|Name.*|&${exported_app_label}|g" \ > "/run/host${host_home}/.local/share/applications/${desktop_home_file}" # in the end we add the final quote we've opened in the "container_command_prefix" if ! grep -q "StartupWMClass" "/run/host${host_home}/.local/share/applications/${desktop_home_file}"; then printf "StartupWMClass=%s\n" "${exported_app}" >> "\ /run/host${host_home}/.local/share/applications/${desktop_home_file}" fi # In case of an icon in a non canonical path, we need to replace the path # in the desktop file. if [ -n "${icon_file_absolute_path}" ]; then sed -i "s|Icon=.*|Icon=${icon_file_absolute_path}|g" \ "/run/host${host_home}/.local/share/applications/${desktop_home_file}" # we're done, go to next continue fi # In case of an icon in a canonical path, but specified as an absolute # we need to replace the path in the desktop file. sed -i "s|Icon=/usr/share/|Icon=/run/host${host_home}/.local/share/|g" \ "/run/host${host_home}/.local/share/applications/${desktop_home_file}" sed -i "s|pixmaps|icons|g" \ "/run/host${host_home}/.local/share/applications/${desktop_home_file}" done # Update the desktop files database to ensure exported applications will # show up in the taskbar/desktop menu/whatnot right after running this # script. /usr/bin/distrobox-host-exec --yes update-desktop-database "${host_home}/.local/share/applications" > /dev/null 2>&1 || : if [ "${exported_delete}" -ne 0 ]; then printf "Application %s successfully un-exported.\nOK!\n" "${exported_app}" printf "%s will disappear from your applications list in a few seconds.\n" "${exported_app}" else printf "Application %s successfully exported.\nOK!\n" "${exported_app}" printf "%s will appear in your applications list in a few seconds.\n" "${exported_app}" fi } # list_exported_applications will print all exported applications in canonical directories. # the following function will list exported desktop files from this container. # # Arguments: # None # Expected global variables: # host_home: home path ofr the host, where to search desktop files # CONTAINER_ID: id of the current container # Expected env variables: # None # Outputs: # a list of exported apps # or error code. list_exported_applications() { # In this phase we search for applications exported. # First find command will grep through all files in the canonical directories # and only list files that contain the $DISTROBOX_ENTER_PATH. desktop_files=$( # shellcheck disable=SC2086 find "/run/host${host_home}/.local/share/applications" -type f -print -o -type l -print 2> /dev/null | sed 's/./\\&/g' | xargs -I{} grep -l -e "Exec=.*${DISTROBOX_ENTER_PATH:-"distrobox.*enter"}.*" "{}" | sed 's/./\\&/g' | xargs -I{} printf "%s¤" "{}" ) # Then we try to pretty print them. IFS="¤" for i in ${desktop_files}; do if [ -z "${i}" ]; then continue fi # Get app name, and remove label name="$(grep -Eo 'Name=.*' "${i}" | head -n 1 | cut -d'=' -f2- | sed 's|(.*)||g')" # Print only stuff we exported from this box! if echo "${i}" | grep -q "${CONTAINER_ID}"; then printf "%-20s | %-30s\n" "${name}" "${i}" fi done unset IFS } # list_exported_binaries will print all exported binaries. # the following function will list exported desktop files from this container. # If no export-path is specified, it searches in the default path. # # Arguments: # None # Expected global variables: # dest_path: destination path where to search binaries # CONTAINER_ID: id of the current container # Expected env variables: # None # Outputs: # a list of exported apps # or error code. list_exported_binaries() { # In this phase we search for binaries exported. # First find command will grep through all files in the canonical directories # and only list files that contain the comment "# distrobox_binary". binary_files=$( find "${dest_path}" -type f -print 2> /dev/null | sed 's/./\\&/g' | xargs -I{} grep -l -e "^# distrobox_binary" "{}" | sed 's/./\\&/g' | xargs -I{} printf "%s¤" "{}" ) # Then we try to pretty print them. IFS="¤" for i in ${binary_files}; do if [ -z "${i}" ]; then continue fi # Get original binary name name="$(grep -B1 "fi" "${i}" | grep exec | cut -d' ' -f2)" # Print only stuff we exported from this box! if grep "^# name:.*" "${i}" | grep -q "${CONTAINER_ID}"; then printf "%-20s | %-30s\n" "${name}" "${i}" fi done unset IFS } # Main routine case "${export_action}" in app) export_application ;; bin) export_binary ;; list-apps) list_exported_applications ;; list-binaries) list_exported_binaries ;; *) printf >&2 "Invalid arguments, choose an action below.\n" show_help exit 2 ;; esac distrobox-1.8.1.2/distrobox-generate-entry000077500000000000000000000317621474517124600206140ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Optional env variables: # DBX_CONTAINER_MANAGER # DBX_VERBOSE # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 extra_flags="" all=0 container_manager="autodetect" container_name_default="my-distrobox" delete=0 icon="auto" icon_default="${XDG_DATA_HOME:-${HOME}/.local/share}/icons/terminal-distrobox-icon.svg" verbose=0 online=0 version="1.8.1.2" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-generate-entry container-name [--delete] [--icon [auto,/path/to/icon]] Options: --help/-h: show this message --all/-a: perform for all distroboxes --delete/-d: delete the entry --icon/-i: specify a custom icon [/path/to/icon] (default auto) --root/-r: perform on rootful distroboxes --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -d | --delete) delete=1 shift ;; -a | --all) all=1 shift ;; -i | --icon) if [ -n "$2" ]; then icon="$2" shift shift fi ;; -r | --root) shift rootful=1 ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name="$1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi if [ -z "${container_name:-}" ]; then container_name="${container_name_default}" fi if [ "${all}" -ne 0 ]; then container_names="$(distrobox list --no-color | tail -n +2 | cut -d'|' -f2 | tr -d ' ')" for container_name in ${container_names}; do if [ "${delete}" -ne 0 ]; then "${0}" "${container_name}" --delete continue fi "${0}" "${container_name}" done exit fi # If we delete, just ask confirmation and exit. if [ "${delete}" -ne 0 ]; then rm -f "${XDG_DATA_HOME:-${HOME}/.local/share}/applications/${container_name}.desktop" exit fi if ! command -v curl > /dev/null && ! command -v wget > /dev/null; then printf >&2 "Icon generation depends on either curl or wget\n" printf >&2 "Fallbacking to default icon.\n" download="null" fi if command -v curl > /dev/null 2>&1; then download="curl --connect-timeout 3 --retry 1 -sLo" elif command -v wget > /dev/null 2>&1; then download="wget --timeout=3 --tries=1 -qO" fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" container_manager_cp_command="podman cp" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" container_manager_cp_command="podman-launcher cp" elif command -v docker > /dev/null; then container_manager="docker" container_manager_cp_command="docker cp -L" elif command -v lilipod > /dev/null; then container_manager="lilipod" container_manager_cp_command="lilipod cp" fi ;; podman) container_manager="podman" container_manager_cp_command="podman cp" ;; podman-launcher) container_manager="podman-launcher" container_manager_cp_command="podman-launcher cp" ;; lilipod) container_manager="lilipod" container_manager_cp_command="lilipod cp" ;; docker) container_manager="docker" container_manager_cp_command="docker cp -L" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" container_manager_cp_command="${container_manager_cp_command} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then extra_flags="${extra_flags} --root" container_manager="${distrobox_sudo_program:-"sudo"} ${container_manager}" container_manager_cp_command="${distrobox_sudo_program:-"sudo"} ${container_manager_cp_command}" fi if ! ${container_manager} inspect --type container "${container_name}" > /dev/null; then printf >&2 "Cannot find container %s. Please create it first.\n" "${container_name}" exit 1 fi # Ensure the destination dir exists. mkdir -p "${XDG_DATA_HOME:-${HOME}/.local/share}/applications" mkdir -p "${XDG_DATA_HOME:-${HOME}/.local/share}/icons/distrobox" distrobox_path="$(dirname "$(realpath "${0}")")" entry_name="$(echo "${container_name}" | cut -c1 | tr "[:lower:]" "[:upper:]")$(echo "${container_name}" | cut -c2-)" if [ "${icon}" = "auto" ]; then # Set icon to the generic terminal as a fallback. icon="${icon_default}" # This is a NON comprehensive list of logos of the most popular distributions. If you find logos for # other supported distros, add it here. DISTRO_ICON_MAP=" alma:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/alma-distrobox.png alpine:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/alpine-distrobox.png arch:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/arch-distrobox.png centos:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/centos-distrobox.png clear--os:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/clear-distrobox.png debian:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/debian-distrobox.png deepin:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/deepin-distrobox.png fedora:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/fedora-distrobox.png gentoo:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/gentoo-distrobox.png kali:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/kali-distrobox.png kdeneon:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/kdeneon-distrobox.png opensuse-leap:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/opensuse-distrobox.png opensuse-tumbleweed:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/opensuse-distrobox.png rhel:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/redhat-distrobox.png rocky:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/rocky-distrobox.png ubuntu:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/ubuntu-distrobox.png vanilla:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/vanilla-distrobox.png void:https://raw.githubusercontent.com/89luca89/distrobox/main/docs/assets/png/distros/void-distrobox.png " # Try to detect container's distribution by using /etc/os-release ${container_manager_cp_command} "${container_name}":/etc/os-release /tmp/"${container_name}".os-release container_distro="$(grep "^ID=" /tmp/"${container_name}".os-release | cut -d'=' -f2- | sed "s|linux||g" | tr -d ' ' | tr -d '"')" if [ "${rootful}" -ne 0 ]; then ${distrobox_sudo_program:-"sudo"} rm -f /tmp/"${container_name}".os-release else rm -f /tmp/"${container_name}".os-release fi icon_url="$(echo "${DISTRO_ICON_MAP}" | grep "${container_distro}:" | cut -d':' -f2-)" # Distro not found in our map, fallback to generic icon if [ -z "${icon_url}" ]; then icon_url="https://raw.githubusercontent.com/89luca89/distrobox/main/icons/terminal-distrobox-icon.svg" container_distro="terminal-distrobox-icon" fi if [ -n "${icon_url}" ] && [ "${download}" != "null" ]; then icon_extension="${icon_url##*.}" if [ "${online}" -lt 1 ] && ${download} - "${icon_url}" > "${XDG_DATA_HOME:-${HOME}/.local/share}/icons/distrobox/${container_distro}.${icon_extension}"; then icon="${XDG_DATA_HOME:-${HOME}/.local/share}/icons/distrobox/${container_distro}.${icon_extension}" else # Wget failed for some reasons. Default to generic terminal icon as declared at the beginning. printf >&2 "Warning: Failed to download icon. Defaulting to generic one.\n" fi else # Distribution not found in the list. Default to generic terminal icon as declared at the beginning. printf >&2 "Warning: Distribution not found in default icon set. Defaulting to generic one.\n" fi fi cat << EOF > "${XDG_DATA_HOME:-${HOME}/.local/share}/applications/${container_name}.desktop" [Desktop Entry] Name=${entry_name} GenericName=Terminal entering ${entry_name} Comment=Terminal entering ${entry_name} Categories=Distrobox;System;Utility Exec=${distrobox_path}/distrobox enter ${extra_flags} ${container_name} Icon=${icon} Keywords=distrobox; NoDisplay=false Terminal=true TryExec=${distrobox_path}/distrobox Type=Application Actions=Remove; [Desktop Action Remove] Name=Remove ${entry_name} from system Exec=${distrobox_path}/distrobox rm ${extra_flags} ${container_name} EOF distrobox-1.8.1.2/distrobox-host-exec000077500000000000000000000152371474517124600175610ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2022 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults host_command="" non_interactive=0 # If we're in a non-interactive shell, let's act accordingly if [ ! -t 1 ] || ! tty > /dev/null 2>&1; then non_interactive=1 fi distrobox_host_exec_default_command="${SHELL:-/bin/sh}" host_spawn_version="v1.6.0" download_command="" sudo_command="" verbose=0 version="1.8.1.2" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-host-exec [command [arguments]] distrobox-host-exec ls distrobox-host-exec bash -l distrobox-host-exec flatpak run org.mozilla.firefox distrobox-host-exec podman ps -a Options: --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version --yes/-Y: Automatically answer yes to prompt: host-spawn will be installed on the guest system if host-spawn is not detected. This behaviour is default when running in a non-interactive shell. EOF } # If we're a symlink to a command, use that as command to exec, and skip arg parsing. if [ "$(basename "${0}")" != "distrobox-host-exec" ]; then host_command="$(basename "${0}")" fi # Parse arguments if [ -z "${host_command}" ]; then # Skip argument parsing if we're a symlink while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" printf "host-spawn: %s\n" "${host_spawn_version}" exit 0 ;; -Y | --yes) non_interactive=1 shift ;; --) # End of all options. shift ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) if [ -n "$1" ]; then host_command=$1 shift fi break ;; esac done fi set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # Check we're running inside a container and not on the host if [ ! -f /run/.containerenv ] && [ ! -f /.dockerenv ] && [ -z "${container:-}" ]; then printf >&2 "You must run %s inside a container!\n" " $(basename "$0")" exit 126 fi if [ -z "${host_command}" ]; then host_command="${distrobox_host_exec_default_command}" fi if [ "$(id -ru)" -ne 0 ]; then if command -v sudo 2> /dev/null > /dev/null; then sudo_command="sudo" else sudo_command="su -l -c" fi fi if command -v curl > /dev/null 2>&1; then download_command="curl -sLo" elif command -v wget > /dev/null 2>&1; then download_command="wget -qO" fi # Normalize architecture name to comply to golang/release naming architecture="$(uname -m)" if echo "${architecture}" | grep -q armv; then architecture="$(echo "${architecture}" | grep -Eo "armv[0-9]+")" fi # Setup host-spawn as a way to execute commands back on the host if ! command -v host-spawn > /dev/null || [ "$(printf "%s\n%s\n" "${host_spawn_version}" "$(host-spawn --version)" | sort -V | head -n 1)" != "${host_spawn_version}" ]; then # if non-interactive flag flag hasn't been set if [ "${non_interactive}" -eq 0 ]; then # Prompt to download it. printf "Warning: host-spawn not found or version is too old!\n" printf "Do you want to install host-spawn utility? [Y/n] " read -r response response=${response:-"Y"} else response="yes" fi # Accept only y,Y,Yes,yes,n,N,No,no. case "${response}" in y | Y | Yes | yes | YES) # Download matching version with current distrobox if ! ${download_command} /tmp/host-spawn \ "https://github.com/1player/host-spawn/releases/download/${host_spawn_version}/host-spawn-${architecture}"; then printf "Error: Cannot download host-spawn\n" exit 1 fi if [ -e /tmp/host-spawn ]; then ${sudo_command} sh -c "mv /tmp/host-spawn /usr/bin/" ${sudo_command} sh -c "chmod +x /usr/bin/host-spawn" fi ;; n | N | No | no | NO) printf "Installation aborted, please install host-spawn.\n" exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac fi # This makes host-spawn work on initful containers, where the dbus session is # separate from the host, we point the dbus session straight to the host's socket # in order to talk with the org.freedesktop.Flatpak.Development.HostCommand on the host [ -z "${XDG_RUNTIME_DIR:-}" ] && XDG_RUNTIME_DIR="/run/user/$(id -ru)" [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ] && DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -ru)/bus" XDG_RUNTIME_DIR="/run/host/${XDG_RUNTIME_DIR}" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/host/$(echo "${DBUS_SESSION_BUS_ADDRESS}" | cut -d '=' -f2-)" ### # This workaround is needed because of a bug in gio (used by xdg-open) where # a race condition happens when allocating a pty, leading to the command # being killed before having time to be executed. # # https://gitlab.gnome.org/GNOME/glib/-/issues/2695 # https://github.com/1player/host-spawn/issues/7 # # As an (ugly) workaround, we will not allocate a pty for those commands. ### # Also, we don't initialize a pty, if we're not in a tty. if [ "$(basename "${host_command}")" = "xdg-open" ] || [ "$(basename "${host_command}")" = "gio" ] || [ "$(basename "${host_command}")" = "flatpak" ] || [ ! -t 1 ] || ! tty > /dev/null 2>&1; then host-spawn --no-pty "${host_command}" "$@" # Exit here, we don't continue execution exit $? fi host-spawn "${host_command}" "$@" # Exit here, we don't continue execution exit $? distrobox-1.8.1.2/distrobox-init000077500000000000000000002366261474517124600166340ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Expected env variables: # HOME # USER # SHELL trap '[ "$?" -ne 0 ] && printf "Error: An error occurred\n"' EXIT # Redirect stderr to stdout as podman by default logs stderr as priority 3 journald errors. # Github issue: https://github.com/containers/podman/issues/20728 exec 2>&1 # We'll also bind mount READ-WRITE useful mountpoints to pass external drives and libvirt from # the host to the container HOST_MOUNTS=" /etc/host.conf /etc/machine-id /media /mnt /run/libvirt /run/media /run/netconfig/ /run/systemd/journal /run/systemd/resolve/ /run/systemd/seats /run/systemd/sessions /run/systemd/users /run/udev /var/lib/libvirt /var/mnt" # We'll also bind mount in READ-ONLY useful directories from the host HOST_MOUNTS_RO=" /etc/localtime /var/lib/systemd/coredump /var/log/journal" HOST_MOUNTS_RO_INIT=" /etc/localtime /run/systemd/journal /run/systemd/resolve /run/systemd/seats /run/systemd/sessions /run/systemd/users /var/lib/systemd/coredump /var/log/journal" # Defaults container_additional_packages="" init=0 init_hook="" nvidia=0 pre_init_hook="" rootful=0 upgrade=0 verbose=0 version="1.8.1.2" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # USER # HOME # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-init --name ${USER} --user $(id -ru) --group $(id -rg) --home ${HOME} Options: --name/-n: user name --user/-u: uid of the user --group/-g: gid of the user --home/-d: path/to/home of the user --help/-h: show this message --additional-packages: packages to install in addition --init/-I: whether to use or not init --pre-init-hooks: commands to execute prior to init --nvidia: try to integrate host's nVidia drivers in the guest --upgrade/-U: run init in upgrade mode --verbose/-v: show more verbosity --version/-V: show version --: end arguments execute the rest as command to execute during init EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) shift verbose=1 ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -U | --upgrade) shift upgrade=1 ;; -n | --name) if [ -n "$2" ]; then container_user_name="$2" shift shift fi ;; -i | --init) if [ -n "$2" ]; then init="$2" shift shift fi ;; -d | --home) if [ -n "$2" ]; then container_user_home="$2" shift shift fi ;; -u | --user) if [ -n "$2" ]; then container_user_uid="$2" shift shift fi ;; -g | --group) if [ -n "$2" ]; then container_user_gid="$2" shift shift fi ;; --pre-init-hooks) if [ -n "$2" ]; then pre_init_hook="$2" fi shift shift ;; --additional-packages) if [ -n "$2" ]; then container_additional_packages="$2" fi shift shift ;; --nvidia) if [ -n "$2" ]; then nvidia="$2" shift shift fi ;; --) shift init_hook=$* break ;; -*) # Invalid options. printf >&2 "Error: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. break ;; esac done # Check we're running inside a container and not on the host if [ ! -f /run/.containerenv ] && [ ! -f /.dockerenv ] && [ -z "${container:-}" ]; then printf >&2 "You must run %s inside a container!\n" " $(basename "$0")" printf >&2 "distrobox-init should only be used as an entrypoint for a distrobox!\n\n" printf >&2 "This is not intended to be used manually, but instead used by distrobox-enter\n" printf >&2 "to set up the container's entrypoint.\n" exit 126 fi # Ensure the foundamental variables are set and not empty, we will not proceed if # they are not all set. if [ "${upgrade}" -eq 0 ]; then [ -z "${container_user_gid}" ] && printf "Error: Invalid arguments, missing user gid\n" && exit 2 [ -z "${container_user_home}" ] && printf "Error: Invalid argument, missing user home\n" && exit 2 [ -z "${container_user_name}" ] && printf "Error: Invalid arguments, missing username\n" && exit 2 [ -z "${container_user_uid}" ] && printf "Error: Invalid arguments, missing user uid\n" && exit 2 fi set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # Determine if we're in a rootful container, generally if we're able to read # host's /etc/shadow, it means we're really root! # # if /run/.nopasswd is present, let's treat the init as rootless, this is not # a good thing, users behold! if stat /run/host/etc/shadow > /dev/null && [ "$(stat -c "%u" /run/host/etc/shadow)" = "0" ] && [ ! -e /run/.nopasswd ]; then rootful=1 fi # Get host $LANG if [ -f "/run/host/etc/locale.conf" ]; then HOST_LOCALE=$(grep -e '^LANG=' /run/host/etc/locale.conf | sed 's/LANG=//' | sed 's/"//g' | sed "s/'//g") HOST_LOCALE_ENCODING=$(echo "${HOST_LOCALE}" | sed -n 's/^[^.]*\.\(.*\)$/\1/p') HOST_LOCALE_LANG=$(echo "${HOST_LOCALE}" | sed -n 's/^\([^.]*\)\..*$/\1/p') elif [ -f "/run/host/etc/default/locale" ]; then HOST_LOCALE=$(grep -e '^LANG=' /run/host/etc/default/locale | sed 's/LANG=//' | sed 's/"//g') HOST_LOCALE_ENCODING=$(echo "${HOST_LOCALE}" | sed -n 's/^[^.]*\.\(.*\)$/\1/p') HOST_LOCALE_LANG=$(echo "${HOST_LOCALE}" | sed -n 's/^\([^.]*\)\..*$/\1/p') fi # Add fallback values in case host's locale is not set correctly if [ -z "${HOST_LOCALE:-}" ] || [ "${HOST_LOCALE:-}" = "C.UTF-8" ]; then HOST_LOCALE="en_US.UTF-8" HOST_LOCALE_ENCODING="UTF-8" HOST_LOCALE_LANG="en_US" fi # get_locked_mount_flags will print mount flags considered "locked". # Arguments: # src: path to the file/directory # Expected env variables: # None # Expected global variables: # None # Outputs: # Comma-separated list of locked mount flags get_locked_mount_flags() { src="$1" prev="" locked_flags="" # If findmnt does not exist, exit if ! command -v findmnt 2> /dev/null > /dev/null; then return 0 fi # If we can't read the file/directory, exit if ! ls "${src}" 2> /dev/null > /dev/null; then return 0 fi # Get mount flags of given file/directory, using nearest mountpoint. # Earlier versions of findmnt did not check parents until it found a mountpoint, # so we use a workaround with dirname. while true; do flags="$(findmnt --noheadings --output OPTIONS --target "${src}" || :)" # shellcheck disable=SC2181 if [ -n "${flags}" ]; then break fi prev="${src}" src="$(dirname "${src}")" [ "${src}" = "${prev}" ] && return 1 done for flag in nodev noexec nosuid; do if printf "%s" "${flags}" | grep -q "${flag}"; then # Locked flag found, append to list while avoiding leading/trailing commas locked_flags="${locked_flags:+${locked_flags},}${flag}" fi done printf "%s" "${locked_flags}" } # init_readlink is a simplistic implementation for # readlink -fm # we use this as readlink -fm does not work on # busybox systems, and we need the path even for broken links. # Arguments: # source file # Expected env variables: # None # Expected global variables: # None # Outputs: # original path the link is pointing init_readlink() { # shellcheck disable=SC2010 ls -l "${1}" | grep -Eo '\->.*' | cut -d' ' -f2- | sed 's|\.\./|/|g' } # mount_bind will perform a bind mount for inputs or error # Arguments: # source_dir: string what to mount # target_dir: string where to mount # mount_flags: list of mount flags -> optional # Expected env variables: # None # Expected global variables: # None # Outputs: # No output if all ok # Error if not mount_bind() { source_dir="$1" target_dir="$2" mount_flags="" if [ "$#" -gt 2 ]; then mount_flags="$3" fi # Adjust source_dir in order to point to /run/host if it's a symlink if [ -L "${source_dir}" ]; then source_dir="$(init_readlink "${source_dir}")" if ! printf "%s" "${source_dir}" | grep -q "/run/host"; then source_dir="/run/host${source_dir}" fi fi # if source dir doesn't exist, just exit if [ ! -d "${source_dir}" ] && [ ! -f "${source_dir}" ]; then return 0 fi # if target_dir exists, check if it is a mountpoint and umount it. if [ -e "${target_dir}" ] && findmnt "${target_dir}" > /dev/null; then umount "${target_dir}" fi # if target_dir exists, and is a symlink, remove it if [ -L "${target_dir}" ]; then rm -f "${target_dir}" fi # if the source_dir exists, then create the target_dir if [ -d "${source_dir}" ]; then if ! mkdir -p "${target_dir}"; then printf "Warning: cannot create mount target directory: %s\n" "${target_dir}" return 1 fi # if instead it's a file, create it with touch elif [ -f "${source_dir}" ]; then if [ ! -d "$(dirname "${target_dir}")" ]; then mkdir -p "$(dirname "${target_dir}")" fi # if we encounter a broken link, and we touch it # then remove the broken link, the next touch # will cover it. if ! touch "${target_dir}"; then printf "Warning: cannot create mount target file: %s\n" "${target_dir}" return 1 fi fi # Add mountflags if needed, if no are specified, use rslave as default. # bind mount source_dir to target_dir, return error if not successful if [ "${mount_flags}" = "" ]; then if ! mount --rbind "${source_dir}" "${target_dir}"; then printf "Warning: failed to bind mount %s to %s\n" "${source_dir}" "${target_dir}" return 1 fi if ! mount --make-rslave "${target_dir}"; then printf "Warning: failed to make rslave to %s\n" "${target_dir}" return 1 fi elif ! mount --rbind -o "${mount_flags}" "${source_dir}" "${target_dir}"; then printf "Warning: failed to bind mount %s to %s using option %s\n" "${source_dir}" "${target_dir}" "${mount_flags}" return 1 fi return 0 } if [ -n "${pre_init_hook}" ]; then printf "distrobox: Executing pre-init hooks...\n" # execute pre-init hooks if specified # shellcheck disable=SC2086 eval ${pre_init_hook} fi ############################################################################### printf "distrobox: Installing basic packages...\n" # Extract shell name from the $SHELL environment variable # If not present as package in the container, we want to install it. shell_pkg="$(basename "${SHELL:-"bash"}")" # Ash shell is an exception, it is not a standalone package, but part of busybox. # for this reason, use this quirk to adjust the package name to standard bash. if [ "${shell_pkg}" = "ash" ]; then shell_pkg="bash" fi # setup_pkg_manager_hooks will create umount/remount hooks script for a package # manager. Mainly used by apt and pacman. # Arguments: # None # Expected global variables: # init: if this is an initful container # HOST_MOUNTS_RO_INIT: list of mountpoints of an initful system, to avoid # Expected env variables: # None # Outputs: # None setup_pkg_manager_hooks() { if { [ -d "/etc/dpkg/dpkg.cfg.d/" ] || [ -d "/usr/share/libalpm/scripts" ] } && [ "${init}" -eq 0 ]; then cat << EOF > /etc/distrobox-pre-hook.sh #!/bin/sh mounts="${HOST_MOUNTS_RO_INIT}" for mount in \$mounts; do if findmnt \$mount >/dev/null; then umount -l \$mount fi done EOF cat << EOF > /etc/distrobox-post-hook.sh #!/bin/sh mounts="${HOST_MOUNTS_RO_INIT}" for mount in \$mounts; do if [ -e /run/host/\$mount ] || [ -e /run/host/\$(readlink -fm /run/host/\$mount) ]; then if [ ! -d /run/host/\$mount ]; then rm -f \$mount && touch \$mount fi if ! mount --rbind \$(readlink -fm /run/host/\$mount) \$mount; then mount --rbind /run/host/\$(readlink -fm /run/host/\$mount) \$mount fi fi done EOF chmod +x /etc/distrobox-pre-hook.sh /etc/distrobox-post-hook.sh fi } # setup_deb_exceptions will create path-excludes for host mounts, dpkg/apt only. # Arguments: # None # Expected global variables: # init: if this is an initful container # HOST_MOUNTS_RO: list of readonly mountpoints, to avoid # HOST_MOUNTS: list of readwrite mountpoints, to avoid # Expected env variables: # None # Outputs: # None setup_deb_exceptions() { setup_pkg_manager_hooks # In case of an DEB distro, we can specify that our bind_mount directories # have to be ignored. This prevents conflicts during package installations. if [ "${init}" -eq 0 ]; then # Loop through all the environment vars # and export them to the container. mkdir -p /etc/dpkg/dpkg.cfg.d/ printf "" > /etc/dpkg/dpkg.cfg.d/00_distrobox for net_mount in ${HOST_MOUNTS_RO} ${HOST_MOUNTS}; do printf "path-exclude %s/*\n" "${net_mount}" >> /etc/dpkg/dpkg.cfg.d/00_distrobox done # Also we put a hook to clear some critical paths that do not play well # with read only filesystems, like Systemd. if [ -d "/etc/apt/apt.conf.d/" ]; then printf 'DPkg::Pre-Invoke {/etc/distrobox-pre-hook.sh};\n' > /etc/apt/apt.conf.d/00_distrobox printf 'DPkg::Post-Invoke {/etc/distrobox-post-hook.sh};\n' >> /etc/apt/apt.conf.d/00_distrobox fi fi } # setup_pacman_exceptions will set pre/post transaction hooks to avoid host's mounts, pacman only. # Arguments: # None # Expected global variables: # init: if this is an initful container # Expected env variables: # None # Outputs: # None setup_pacman_exceptions() { setup_pkg_manager_hooks # Workarounds for pacman. We need to exclude the paths by using a pre-hook to umount them and a # post-hook to remount them. Additionally we neutralize the systemd-post-hooks as they do not # work on a rootless container system. if [ -d "/usr/share/libalpm/scripts" ] && [ "${init}" -eq 0 ]; then # in case we're not using an init image, neutralize systemd post installation hooks # so that we do not encounter problems along the way. # This will be removed if we're using --init. cat << EOF > /usr/share/libalpm/scripts/distrobox_post_hook.sh #!/bin/sh echo -e '#!/bin/sh\nexit 0' > /usr/share/libalpm/scripts/systemd-hook; EOF chmod +x /usr/share/libalpm/scripts/distrobox_post_hook.sh # create hooks files for them find /usr/share/libalpm/hooks/*distrobox* -delete || : for hook in /etc/distrobox-pre-hook.sh /etc/distrobox-post-hook.sh /usr/share/libalpm/scripts/distrobox_post_hook.sh; do when="PostTransaction" [ -z "${hook##*pre*}" ] && when="PreTransaction" cat << EOF > "/usr/share/libalpm/hooks/$(basename "${hook}").hook" [Trigger] Operation = Install Operation = Upgrade Type = Package Target = * [Action] Description = Distrobox hook ${hook}... When = ${when} Exec = ${hook} EOF done fi } # setup_rpm_exceptions will create path-excludes for host mounts, rpm only (dnf, yum, zypper, microdnf). # Arguments: # None # Expected global variables: # init: if this is an initful container # HOST_MOUNTS_RO: list of readonly mountpoints, to avoid # HOST_MOUNTS: list of readwrite mountpoints, to avoid # Expected env variables: # None # Outputs: # None setup_rpm_exceptions() { # In case of an RPM distro, we can specify that our bind_mount directories # are in fact net shares. This prevents conflicts during package installations. if [ "${init}" -eq 0 ]; then mkdir -p /usr/lib/rpm/macros.d/ # Loop through all the environment vars # and export them to the container. net_mounts="" for net_mount in \ ${HOST_MOUNTS_RO} ${HOST_MOUNTS} \ '/dev' '/proc' '/sys' '/tmp' \ '/etc/hosts' '/etc/resolv.conf' '/etc/passwd' '/etc/shadow'; do net_mounts="${net_mount}:${net_mounts}" done net_mounts=${net_mounts%?} cat << EOF > /usr/lib/rpm/macros.d/macros.distrobox %_netsharedpath ${net_mounts} EOF fi } # setup_xbps_exceptions will create path-excludes for host mounts, xbps only. # Arguments: # None # Expected global variables: # None # Expected env variables: # None # Outputs: # None setup_xbps_exceptions() { # We have to lock this paths from xbps extraction, as it's incompatible with distrobox's # mount process. cat << EOF > /etc/xbps.d/distrobox-ignore.conf noextract=/etc/passwd noextract=/etc/hosts noextract=/etc/host.conf noextract=/etc/hostname noextract=/etc/localtime noextract=/etc/machine-id noextract=/etc/resolv.conf EOF } # setup_apk will upgrade or setup all packages for apk based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_apk() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then apk update apk upgrade exit fi # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! apk add "${shell_pkg}"; then shell_pkg="bash" fi if apk add wolfi-base; then deps=" busybox gnutar man-db mesa openssh-client posix-libc-utils " elif apk add alpine-base; then deps=" bash-completion docs gcompat libc-utils lsof man-pages mandoc musl-utils openssh-client-default pinentry tar vte3 which $(apk search -q mesa-dri) $(apk search -q mesa-vulkan) " fi deps="${deps:-} ${shell_pkg} bash bc bzip2 coreutils curl diffutils findmnt findutils gnupg gpg iproute2 iputils keyutils less libcap mount ncurses ncurses-terminfo net-tools pigz rsync shadow sudo tcpdump tree tzdata umount unzip util-linux util-linux-login util-linux-misc vulkan-loader wget xauth xz zip $(apk search -qe procps) " # shellcheck disable=SC2086 found_deps="$(apk search -qe ${deps} | tr '\n' ' ')" install_pkg="" for dep in ${deps}; do # shellcheck disable=SC2249 case " ${found_deps} " in *" ${dep} "*) install_pkg="${install_pkg} ${dep}" ;; esac done # shellcheck disable=SC2086 apk add --force-overwrite ${install_pkg} # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then apk del tzdata apk add tzdata fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 apk add --force-overwrite ${container_additional_packages} fi } # setup_apt will upgrade or setup all packages for apt based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_apt() { export DEBIAN_FRONTEND=noninteractive # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then apt-get update apt-get upgrade -o Dpkg::Options::="--force-confold" -y exit fi # In Ubuntu official images, dpkg is configured to ignore locale and docs # This however, results in a rather poor out-of-the-box experience # So, let's enable them. rm -f /etc/dpkg/dpkg.cfg.d/excludes apt-get update # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! apt-get install -y "${shell_pkg}"; then shell_pkg="bash" fi deps=" ${shell_pkg} apt-utils bash-completion bc bzip2 curl dialog diffutils findutils gnupg gnupg2 gpgsm hostname iproute2 iputils-ping keyutils language-pack-en less libcap2-bin libkrb5-3 libnss-mdns libnss-myhostname libvte-2.9*-common libvte-common locales lsof man-db manpages mtr ncurses-base openssh-client passwd pigz pinentry-curses procps rsync sudo tcpdump time traceroute tree tzdata unzip util-linux wget xauth xz-utils zip libgl1 libegl-mesa0 libegl1-mesa libgl1-mesa-glx libegl1 libglx-mesa0 libvulkan1 mesa-vulkan-drivers " # shellcheck disable=SC2086,2046 apt-get install -y $(apt-cache show ${deps} 2> /dev/null | grep "Package:" | sort -u | cut -d' ' -f2-) # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if [ -e /etc/locale.gen ] && { ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')" }; then sed -i "s|#.*en_US.UTF-8|en_US.UTF-8|g" /etc/locale.gen sed -i "s|#.*${HOST_LOCALE}|${HOST_LOCALE}|g" /etc/locale.gen locale-gen update-locale LC_ALL="${HOST_LOCALE}" LANG="${HOST_LOCALE}" dpkg-reconfigure locales fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then apt-get --reinstall install tzdata fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 apt-get install -y ${container_additional_packages} fi } # setup_dnf will upgrade or setup all packages for dnf/yum based systems. # Arguments: # manager: yum or dnf # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_dnf() { manager=$1 # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then ${manager} upgrade -y exit fi # In dnf family official images, dnf is configured to ignore locale and docs # This however, results in a rather poor out-of-the-box experience # So, let's enable them. [ -e /etc/dnf/dnf.conf ] && sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf [ -e /etc/yum.conf ] && sed -i '/tsflags=nodocs/d' /etc/yum.conf # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! ${manager} install -y "${shell_pkg}" 2> /dev/null; then shell_pkg="bash" fi flags="" if [ "${manager}" = "dnf" ]; then flags="--allowerasing" fi deps=" ${shell_pkg} bash-completion bc bzip2 cracklib-dicts curl diffutils dnf-plugins-core findutils glibc-all-langpacks glibc-common glibc-locale-source gnupg2 gnupg2-smime hostname iproute iputils keyutils krb5-libs less lsof man-db man-pages mtr ncurses nss-mdns openssh-clients pam passwd pigz pinentry procps-ng rsync shadow-utils sudo tcpdump time traceroute tree tzdata unzip util-linux vte-profile wget which whois words xorg-x11-xauth xz zip mesa-dri-drivers mesa-vulkan-drivers vulkan " # shellcheck disable=SC2086,2046,2248 ${manager} install ${flags} -y $(${manager} list -q ${deps} | grep -v "Packages" | grep "$(uname -m)" | cut -d' ' -f1) # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if [ ! -e /usr/share/i18n/charmaps ]; then ${manager} reinstall -y glibc-common fi if ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')"; then LANG="${HOST_LOCALE}" localedef -i "${HOST_LOCALE_LANG}" -f "${HOST_LOCALE_ENCODING}" "${HOST_LOCALE}" fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then ${manager} reinstall -y tzdata fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 ${manager} install -y ${container_additional_packages} fi } # setup_emerge will upgrade or setup all packages for gentoo based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_emerge() { # Check if the container we are using has a ::gentoo repo defined, # if it is defined and it is empty, then synchroznize it. gentoo_repo="$(portageq get_repo_path / gentoo)" if [ -n "${gentoo_repo}" ] && [ ! -e "${gentoo_repo}" ]; then emerge-webrsync fi # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then emerge --sync exit fi # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! emerge --ask=n --autounmask-continue --noreplace --quiet-build "${shell_pkg}"; then shell_pkg="bash" fi deps=" app-shells/${shell_pkg} app-crypt/gnupg app-shells/bash-completion sys-apps/diffutils sys-apps/findutils sys-apps/less sys-libs/ncurses net-misc/curl app-crypt/pinentry sys-process/procps sys-apps/shadow app-admin/sudo sys-devel/bc sys-process/lsof sys-apps/util-linux net-misc/wget " install_pkg="" for dep in ${deps}; do if [ "$(emerge --ask=n --search "${dep}" | grep "Applications found" | grep -Eo "[0-9]")" -gt 0 ]; then # shellcheck disable=SC2086 install_pkg="${install_pkg} ${dep}" fi done # shellcheck disable=SC2086 emerge --ask=n --autounmask-continue --noreplace --quiet-build ${install_pkg} # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')"; then sed -i "s|#.*en_US.UTF-8|en_US.UTF-8|g" /etc/locale.gen sed -i "s|#.*${HOST_LOCALE}|${HOST_LOCALE}|g" /etc/locale.gen locale-gen cat << EOF > /etc/env.d/02locale LANG=${HOST_LOCALE} LC_CTYPE=${HOST_LOCALE} EOF fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 emerge --ask=n --autounmask-continue --noreplace --quiet-build \ ${container_additional_packages} fi } # setup_microdnf will upgrade or setup all packages for microdnf based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_microdnf() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then microdnf upgrade -y exit fi # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! microdnf install -y "${shell_pkg}"; then shell_pkg="bash" fi deps=" ${shell_pkg} bash-completion bc bzip2 cracklib-dicts diffutils dnf-plugins-core findutils glibc-all-langpacks glibc-common glibc-locale-source gnupg2 gnupg2-smime hostname iproute iputils keyutils krb5-libs less lsof man-db man-pages mtr ncurses nss-mdns openssh-clients pam passwd pigz pinentry procps-ng rsync shadow-utils sudo tcpdump time traceroute tree tzdata unzip util-linux vte-profile wget which whois words xorg-x11-xauth xz zip mesa-dri-drivers mesa-vulkan-drivers vulkan " install_pkg="" for dep in ${deps}; do if [ "$(microdnf repoquery "${dep}" | wc -l)" -gt 0 ]; then install_pkg="${install_pkg} ${dep}" fi done # shellcheck disable=SC2086,SC2046 microdnf install -y ${install_pkg} # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if [ ! -e /usr/share/zoneinfo/UTC ]; then microdnf reinstall -y tzdata || microdnf install -y glibc-common fi if ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')"; then LANG="${HOST_LOCALE}" localedef -i "${HOST_LOCALE_LANG}" -f "${HOST_LOCALE_ENCODING}" "${HOST_LOCALE}" fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then microdnf reinstall -y tzdata || microdnf install -y tzdata fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 microdnf install -y ${container_additional_packages} fi } # setup_pacman will upgrade or setup all packages for pacman based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_pacman() { # Update the package repository cache exactly once before installing packages. pacman -S -y -y # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then pacman -S -u --noconfirm exit fi # In archlinux official images, pacman is configured to ignore locale and docs # This however, results in a rather poor out-of-the-box experience # So, let's enable them. sed -i "s|NoExtract.*||g" /etc/pacman.conf sed -i "s|NoProgressBar.*||g" /etc/pacman.conf pacman -S -u --noconfirm # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! pacman -S --needed --noconfirm "${shell_pkg}"; then shell_pkg="bash" fi deps=" ${shell_pkg} bash-completion bc curl diffutils findutils glibc gnupg iputils inetutils keyutils less lsof man-db man-pages mlocate mtr ncurses nss-mdns openssh pigz pinentry procps-ng rsync shadow sudo tcpdump time traceroute tree tzdata unzip util-linux util-linux-libs vte-common wget words xorg-xauth zip mesa vulkan-intel vulkan-radeon " # shellcheck disable=SC2086,2046 pacman -S --needed --noconfirm $(pacman -Ssq | grep -E "^($(echo ${deps} | tr ' ' '|'))$") if [ ! -e "/usr/share/i18n/locales${HOST_LOCALE}" ]; then pacman -S --noconfirm glibc glibc-locales fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then pacman -S --noconfirm tzdata fi # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')"; then sed -i "s|#.*en_US.UTF-8|en_US.UTF-8|g" /etc/locale.gen sed -i "s|#.*${HOST_LOCALE}|${HOST_LOCALE}|g" /etc/locale.gen locale-gen -a fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 pacman -S --needed --noconfirm ${container_additional_packages} fi } # setup_slackpkg will upgrade or setup all packages for slackware based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_slackpkg() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then yes | slackpkg upgrade-all -default_answer=yes -batch=yes exit fi slackpkg update # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! yes | slackpkg install -default_answer=yes -batch=yes "${shell_pkg}"; then shell_pkg="bash" fi deps=" ${shell_pkg} bash-completion bc curl diffutils findutils glew glibc glu gnupg2 iputils less libX11 libXau libXdamage libXdmcp libXext libXfixes libXxf86vm libdrm libvte-2 libxcb libxcb-dri2 libxcb-dri3 libxcb-glx libxcb-present libxcb-randr libxcb-render libxcb-shape libxcb-sync libxcb-xfixes libxshmfence lsof man mesa ncurses openssh pinentry procps rsync shadow ssh sudo time wget xauth " install_pkg="" dep="" for dep in ${deps}; do if ! slackpkg search "${dep}" | grep -q "No package name matches the pattern"; then install_pkg="${install_pkg} ${dep}" fi done rm -f /var/lock/slackpkg.* # shellcheck disable=SC2086 yes | slackpkg install -default_answer=yes -batch=yes ${install_pkg} # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 yes | slackpkg install -default_answer=yes -batch=yes \ ${container_additional_packages} fi } # setup_swupd will upgrade or setup all packages for clearlinux based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_swupd() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then swupd update exit fi swupd bundle-add os-core-search deps=" bc cryptography curl network-basic procps-ng rsync shells sysadmin-basic unzip wget x11-tools zip devpkg-Vulkan-Loader lib-opengl " install_pkg="" for dep in ${deps}; do if swupd search "${dep}" > /dev/null; then install_pkg="${install_pkg} ${dep}" fi done # shellcheck disable=SC2086 swupd bundle-add ${install_pkg} # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 swupd bundle-add ${container_additional_packages} fi } # setup_xbps will upgrade or setup all packages for xbps based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_xbps() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then xbps-install -Syu exit fi # Ensure we avoid errors by keeping xbps updated xbps-install -Syu xbps # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. if ! xbps-install -Sy "${shell_pkg}"; then shell_pkg="bash" fi deps=" ${shell_pkg} bash-completion bc bzip2 curl diffutils findutils gnupg2 inetutils-ping iproute2 less lsof man-db mit-krb5-client mit-krb5-libs mtr ncurses-base nss openssh pigz pinentry-tty procps-ng rsync shadow sudo time traceroute tree tzdata unzip util-linux xauth xz zip wget vte3 mesa-dri vulkan-loader mesa-vulkan-intel mesa-vulkan-radeon " # shellcheck disable=SC2086,2046 xbps-install -Sy $(xbps-query -Rs '*' | awk '{print $2}' | sed 's/-[^-]*$//' | grep -E "^($(echo ${deps} | tr ' ' '|'))$") # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if command -v locale && { ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')" }; then sed -i "s|#.*en_US.UTF-8|en_US.UTF-8|g" /etc/default/libc-locales sed -i "s|#.*${HOST_LOCALE}|${HOST_LOCALE}|g" /etc/default/libc-locales xbps-reconfigure --force glibc-locales fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then xbps-install --force -y tzdata fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 xbps-install -Sy ${container_additional_packages} fi } # setup_zypper will upgrade or setup all packages for zypper based systems. # Arguments: # None # Expected global variables: # upgrade: if we need to upgrade or not # container_additional_packages: additional packages to install during this phase # Expected env variables: # None # Outputs: # None setup_zypper() { # If we need to upgrade, do it and exit, no further action required. if [ "${upgrade}" -ne 0 ]; then zypper dup -y exit fi if ! zypper install -y "${shell_pkg}"; then shell_pkg="bash" fi # In openSUSE official images, zypper is configured to ignore recommended # packages (i.e., weak dependencies). This however, results in a rather # poor out-of-the-box experience (e.g., when trying to run GUI apps). # So, let's enable them. For the same reason, we make sure we install # docs. sed -i 's/.*solver.onlyRequires.*/solver.onlyRequires = false/g' /etc/zypp/zypp.conf sed -i 's/.*rpm.install.excludedocs.*/rpm.install.excludedocs = no/g' /etc/zypp/zypp.conf # With recommended packages, something might try to pull in # parallel-printer-support which can't be installed in rootless containers. # Since we very much likely never need it, just lock it zypper al parallel-printer-support # Check if shell_pkg is available in distro's repo. If not we # fall back to bash, and we set the SHELL variable to bash so # that it is set up correctly for the user. deps=" ${shell_pkg} bash-completion bc bzip2 curl diffutils findutils glibc-locale glibc-locale-base gnupg hostname iputils keyutils less libvte-2* lsof man man-pages mtr ncurses nss-mdns openssh-clients pam pam-extra pigz pinentry procps rsync shadow sudo system-group-wheel systemd time timezone tree unzip util-linux util-linux-systemd wget words xauth zip Mesa-dri libvulkan1 libvulkan_intel libvulkan_radeon " # Mark gpg errors (exit code 106) as non-fatal, but don't pull anything from unverified repos # shellcheck disable=SC2086,SC2046 zypper -n install -y $(zypper -n -q se --match-exact ${deps} | grep -e 'package$' | cut -d'|' -f2) || [ ${?} = 106 ] # In case the locale is not available, install it # will ensure we don't fallback to C.UTF-8 if ! locale -a | grep -qi en_us.utf8 || ! locale -a | grep -qi "$(echo "${HOST_LOCALE}" | tr -d '-')"; then LANG="${HOST_LOCALE}" localedef -i "${HOST_LOCALE_LANG}" -f "${HOST_LOCALE_ENCODING}" "${HOST_LOCALE}" || true fi # Ensure we have tzdata installed and populated, sometimes container # images blank the zoneinfo directory, so we reinstall the package to # ensure population if [ ! -e /usr/share/zoneinfo/UTC ]; then zypper install -f -y timezone fi # Install additional packages passed at distrbox-create time if [ -n "${container_additional_packages}" ]; then # shellcheck disable=SC2086 zypper install -y ${container_additional_packages} fi } # Check dependencies in a list, and install all if one is missing missing_packages=0 dependencies=" bc bzip2 chpasswd curl diff find findmnt gpg hostname less lsof man mount passwd pigz pinentry ping ps rsync script ssh sudo time tree umount unzip useradd wc wget xauth zip ${shell_pkg} " for dep in ${dependencies}; do ! command -v "${dep}" > /dev/null && missing_packages=1 && break done # Ensure we have the least minimal path of standard Linux File System set PATH="${PATH}:/bin:/sbin:/usr/bin:/usr/sbin" # Setup pkg manager exceptions and excludes if command -v apt-get; then setup_deb_exceptions elif command -v pacman; then setup_pacman_exceptions elif command -v xbps-install; then setup_xbps_exceptions elif command -v zypper; then setup_rpm_exceptions elif command -v dnf; then setup_rpm_exceptions elif command -v microdnf; then setup_rpm_exceptions elif command -v yum; then setup_rpm_exceptions fi # Check if dependencies are met for the script to run. if [ "${upgrade}" -ne 0 ] || [ "${missing_packages}" -ne 0 ] || { [ -n "${container_additional_packages}" ] && [ ! -e /.containersetupdone ] }; then # Detect the available package manager # install minimal dependencies needed to bootstrap the container: # the same shell that's on the host + ${dependencies} if command -v apk; then setup_apk elif command -v apt-get; then setup_apt elif command -v emerge; then setup_emerge elif command -v pacman; then setup_pacman elif command -v slackpkg; then setup_slackpkg elif command -v swupd; then setup_swupd elif command -v xbps-install; then setup_xbps elif command -v zypper; then setup_zypper elif command -v dnf; then setup_dnf dnf elif command -v microdnf; then setup_microdnf elif command -v yum; then setup_dnf yum else printf "Error: could not find a supported package manager.\n" printf "Error: could not set up base dependencies.\n" # Exit as command not found exit 127 fi touch /.containersetupdone fi # Set SHELL to the install path inside the container SHELL="$(command -v "${shell_pkg}")" # Attempt to download host-spawn during init, we don't care if it fails, so let's # continue in that case /usr/bin/distrobox-host-exec -Y test 2> /dev/null > /dev/null || : # If xdg-open is not present, do a link of it. This is handy to handle opening of # links, files and apps from inside the container into the host. if ! command -v xdg-open; then mkdir -p /usr/local/bin/ ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open fi # If flatpak is not present, do a link of it. This is handy to handle opening of # links, files and apps from inside the container into the host. # Note: we're using /usr/bin instead of /usr/local/bin because xdg-open will read # the desktopfile, which will contain an absolute path of /usr/bin/flatpak if ! command -v flatpak; then ln -sf /usr/bin/distrobox-host-exec /usr/bin/flatpak fi ############################################################################### # Ensure compatibility with older versions of su, this will allow to specify # the --pty flag # # This won't work well on very old distros with no flag support, but will give # an usable shell nonetheless if ! su --help | grep -q pty; then cat << EOF > /usr/local/bin/su #!/bin/sh for i do [ "\$i" = --pty ] || set -- "\$@" "\$i" shift done /bin/su "\$@" EOF chmod +x /usr/local/bin/su fi ############################################################################### printf "distrobox: Setting up devpts mounts...\n" # First we need to ensure we have a tty group to assign /dev/pts to if ! grep -q tty /etc/group; then printf "%s" 'tty:x:5:' >> /etc/group fi # Instantiate a new /dev/pts mount, this will ensure pseudoterminals are container-scoped # and make easier in case of initful containers to have a separate /dev/console # # Podman supports a mount option to do this at creation time, but we're doing it # here to support also other container rmanagers which does not support that flag mount -t devpts devpts -o noexec,nosuid,newinstance,ptmxmode=0666,mode=0620,gid=tty /dev/pts/ mount --bind /dev/pts/ptmx /dev/ptmx # Change mount propagation to shared to make the environment more similar to a # modern Linux system, e.g. with Systemd as PID 1. mount --make-rshared / ############################################################################### ############################################################################### printf "distrobox: Setting up read-only mounts...\n" for host_mount_ro in ${HOST_MOUNTS_RO}; do # Mounting read-only in a user namespace will trigger a check to see if certain # "locked" flags (line noexec,nodev,nosuid) are changed. This ensures we explicitly reuse those flags. locked_flags="$(get_locked_mount_flags /run/host"${host_mount_ro}")" if ! mount_bind /run/host"${host_mount_ro}" "${host_mount_ro}" ro"${locked_flags:+,${locked_flags}}"; then printf "Warning: %s integration with the host failed, runtime sync for %s disabled.\n" "${host_mount_ro}" "${host_mount_ro}" # Fallback options for files, we do a hard copy of it if [ -f /run/host"${host_mount_ro}" ]; then if ! (rm -f "${host_mount_ro}" && cp -f /run/host"${host_mount_ro}" "${host_mount_ro}"); then printf "Warning: Hard copy failed. Error: %s\n" "$(cp -f /run/host"${host_mount_ro}" "${host_mount_ro}" 2>&1)" fi fi fi done ############################################################################### ############################################################################### printf "distrobox: Setting up read-write mounts...\n" # On some ostree systems, home is in /var/home, but most of the software expects # it to be in /home. In the hosts systems this is fixed by using a symlink. # Do something similar here with a bind mount. if [ -e "/var/home/${container_user_name}" ]; then if ! mount_bind "/run/host/var/home/${container_user_name}" "/home/${container_user_name}"; then printf "Warning: Cannot bind mount %s to /run/host%s\n" "/var/home" "/home" fi fi for host_mount in ${HOST_MOUNTS}; do if ! mount_bind /run/host"${host_mount}" "${host_mount}"; then printf "Warning: Cannot bind mount %s to /run/host%s\n" "${host_mount}" "${host_mount}" fi done ############################################################################### ############################################################################### printf "distrobox: Setting up host's sockets integration...\n" # Find all the user's socket and mount them inside the container # this will allow for continuity of functionality between host and container # # for example using `podman --remote` to control the host's podman from inside # the container or accessing docker and libvirt sockets. host_sockets="$(find /run/host/run \ -path /run/host/run/media -prune -o \ -path /run/host/run/timeshift -prune -o \ -name 'user' -prune -o \ -name 'bees' -prune -o \ -name 'nscd' -prune -o \ -name 'system_bus_socket' -prune -o \ -type s -print \ 2> /dev/null || :)" # we're excluding system dbus socket and nscd socket here. Including them will # create many problems with package managers thinking they have access to # system dbus or user auth cache misused. for host_socket in ${host_sockets}; do container_socket="$(printf "%s" "${host_socket}" | sed 's|/run/host||g')" # Check if the socket already exists or the symlink already exists if [ ! -S "${container_socket}" ] && [ ! -L "${container_socket}" ]; then # link it. rm -f "${container_socket}" mkdir -p "$(dirname "${container_socket}")" if ! ln -s "${host_socket}" "${container_socket}"; then printf "Warning: Cannot link socket %s to %s\n" "${host_socket}" "${container_socket}" fi fi done ############################################################################### # If --nvidia, we try to integrate host's nvidia drivers in to the guest if [ "${nvidia}" -eq 1 ]; then printf "distrobox: Setting up host's nvidia integration...\n" # Refresh ldconfig cache, also detect if there are empty files remaining # and clean them. # This could happen when upgrading drivers and changing versions. find /usr/lib* -empty -iname "*.so.*" -exec sh -c 'rm -rf "$1" || umount "$1" && rm -rf "$1"' sh {} ';' || : find /usr/ /etc/ -empty -iname "*nvidia*" -exec sh -c 'rm -rf "$1" || umount "$1" && rm -rf "$1"' sh {} ';' || : # First we find all generic config files we might need NVIDIA_FILES="$(find /run/host/etc/ -not -type d \ -wholename "*nvidia*" || :)" for nvidia_file in ${NVIDIA_FILES}; do dest_file="$(printf "%s" "${nvidia_file}" | sed 's|/run/host||g')" if [ ! -e "$(dirname "${dest_file}")" ]; then if ! mkdir -p "$(dirname "${dest_file}")"; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi fi if [ ! -w "$(dirname "${dest_file}")" ]; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi type="file" if [ -L "${nvidia_file}" ]; then type="link" fi if [ "${type}" = "link" ]; then nvidia_file="$(readlink -fm "${nvidia_file}")" fi # Mounting read-only in a user namespace will trigger a check to see if certain # "locked" flags (line noexec,nodev,nosuid) are changed. This ensures we explicitly reuse those flags. locked_flags="$(get_locked_mount_flags "${nvidia_file}")" mount_bind "${nvidia_file}" "${dest_file}" ro"${locked_flags:+,${locked_flags}}" done # Then we find all non-lib files we need, this includes # - egl files # - icd files # - doc files # - src files NVIDIA_CONFS="$(find /run/host/usr/ -not -type d \ -wholename "*glvnd/egl_vendor.d/10_nvidia.json" \ -o -wholename "*X11/xorg.conf.d/10-nvidia.conf" \ -o -wholename "*X11/xorg.conf.d/nvidia-drm-outputclass.conf" \ -o -wholename "*egl/egl_external_platform.d/10_nvidia_wayland.json" \ -o -wholename "*egl/egl_external_platform.d/15_nvidia_gbm.json" \ -o -wholename "*nvidia/nvoptix.bin" \ -o -wholename "*vulkan/icd.d/nvidia_icd.json" \ -o -wholename "*vulkan/icd.d/nvidia_layers.json" \ -o -wholename "*vulkan/implicit_layer.d/nvidia_layers.json" \ -o -wholename "*nvidia.icd" \ -o -wholename "*nvidia.yaml" \ -o -wholename "*nvidia.json" || :)" for nvidia_file in ${NVIDIA_CONFS}; do dest_file="$(printf "%s" "${nvidia_file}" | sed 's|/run/host||g')" if [ ! -e "$(dirname "${dest_file}")" ]; then if ! mkdir -p "$(dirname "${dest_file}")"; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi fi if [ ! -w "$(dirname "${dest_file}")" ]; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi # Mounting read-only in a user namespace will trigger a check to see if certain # "locked" flags (line noexec,nodev,nosuid) are changed. This ensures we explicitly reuse those flags. locked_flags="$(get_locked_mount_flags "${nvidia_file}")" mount_bind "${nvidia_file}" "${dest_file}" ro"${locked_flags:+,${locked_flags}}" done # Then we find all the CLI utilities NVIDIA_BINARIES="$(find /run/host/bin/ /run/host/sbin/ /run/host/usr/bin/ /run/host/usr/sbin/ -not -type d \ -iname "*nvidia*" || :)" for nvidia_file in ${NVIDIA_BINARIES}; do dest_file="$(printf "%s" "${nvidia_file}" | sed 's|/run/host||g')" if [ ! -e "$(dirname "${dest_file}")" ]; then if ! mkdir -p "$(dirname "${dest_file}")"; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi fi if [ ! -w "$(dirname "${dest_file}")" ]; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi type="file" if [ -L "${nvidia_file}" ]; then type="link" fi if [ "${type}" = "link" ]; then nvidia_file="$(readlink -fm "${nvidia_file}")" fi # Mounting read-only in a user namespace will trigger a check to see if certain # "locked" flags (line noexec,nodev,nosuid) are changed. This ensures we explicitly reuse those flags. locked_flags="$(get_locked_mount_flags "${nvidia_file}")" mount_bind "${nvidia_file}" "${dest_file}" ro"${locked_flags:+,${locked_flags}}" done # Find where the system expects libraries to be put lib32_dir="/usr/lib/" lib64_dir="/usr/lib/" if [ -e "/usr/lib/x86_64-linux-gnu" ]; then lib64_dir="/usr/lib/x86_64-linux-gnu/" lib32_dir="/usr/lib/i386-linux-gnu/" elif [ -e "/usr/lib64" ]; then lib64_dir="/usr/lib64/" fi if [ -e "/usr/lib32" ]; then lib32_dir="/usr/lib32/" fi # Then we find all the ".so" libraries, these are searched separately # because we need to extract the relative path to mount them in the # correct path based on the guest's setup # # /usr/lib64 is common in Arch or RPM based distros, while /usr/lib/x86_64-linux-gnu is # common on Debian derivatives, so we need to adapt between the two nomenclatures. NVIDIA_LIBS="$(find /run/host/usr/lib*/ -not -type d \ -iname "*lib*nvidia*.so*" \ -o -iname "*nvidia*.so*" \ -o -iname "*cuda*.so*" \ -o -iname "libnvcuvid*" \ -o -iname "libnvoptix*" || :)" for nvidia_lib in ${NVIDIA_LIBS}; do dest_file="$(printf "%s" "${nvidia_lib}" | sed "s|/run/host/usr/lib/x86_64-linux-gnu/|${lib64_dir}|g" | sed "s|/run/host/usr/lib/i386-linux-gnu/|${lib32_dir}|g" | sed "s|/run/host/usr/lib64/|${lib64_dir}|g" | sed "s|/run/host/usr/lib32/|${lib32_dir}|g" | sed "s|/run/host/usr/lib/|${lib32_dir}|g")" # If file exists, just continue # this may happen for directories like /usr/lib/nvidia/xorg/foo.so # where the directory is already bind mounted (ro) and we don't need # to mount further files in it. if [ -e "${dest_file}" ]; then continue fi if [ ! -e "$(dirname "${dest_file}")" ]; then if ! mkdir -p "$(dirname "${dest_file}")"; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi fi if [ ! -w "$(dirname "${dest_file}")" ]; then printf "Warning: skpping file %s, %s mounted as read-only\n" "${dest_file}" "$(dirname "${dest_file}")" continue fi type="file" if [ -L "${nvidia_lib}" ]; then type="link" fi if [ "${type}" = "link" ]; then nvidia_lib="$(readlink -fm "${nvidia_lib}")" fi # Mounting read-only in a user namespace will trigger a check to see if certain # "locked" flags (line noexec,nodev,nosuid) are changed. This ensures we explicitly reuse those flags. locked_flags="$(get_locked_mount_flags "${nvidia_lib}")" mount_bind "${nvidia_lib}" "${dest_file}" ro"${locked_flags:+,${locked_flags}}" done # Refresh ldconfig cache ldconfig 2>&1 /dev/null fi ############################################################################### printf "distrobox: Integrating host's themes, icons, fonts...\n" # Themes and icons integration works using a bind mount inside the container # of the host's themes and icons directory. This ensures that the host's home will # not be littered with files and directories and broken symlinks. if ! mount_bind "/run/host/usr/share/themes" "/usr/local/share/themes"; then printf "Warning: Cannot bind mount /run/host/usr/share/themes to /usr/local/share/themes\n" printf "Warning: Themes integration with the host is disabled.\n" fi if ! mount_bind "/run/host/usr/share/icons" "/usr/local/share/icons"; then printf "Warning: Cannot bind mount /run/host/usr/share/icons to /usr/local/share/icons\n" printf "Warning: Icons integration with the host is disabled.\n" fi if ! mount_bind "/run/host/usr/share/fonts" "/usr/local/share/fonts"; then printf "Warning: Cannot bind mount /run/host/usr/share/fonts to /usr/local/share/fonts\n" printf "Warning: Fonts integration with the host is disabled.\n" fi ############################################################################### printf "distrobox: Setting up distrobox profile...\n" # This ensures compatibility with prompts and tools between toolbx and distrobox touch /run/.toolboxenv # Ensure we have some basic env variables and prompt as base if /etc/profile.d is missing if [ ! -d /etc/profile.d ]; then rcfiles=" /etc/profile /etc/bash.bashrc /etc/bashrc /etc/zshrc " for rcfile in ${rcfiles}; do if [ -e "${rcfile}" ] && ! grep -q 'distrobox_profile.sh' "${rcfile}"; then echo "[ -e /etc/profile.d/distrobox_profile.sh ] && . /etc/profile.d/distrobox_profile.sh" >> "${rcfile}" fi done mkdir -p /etc/profile.d fi cat << EOF > /etc/profile.d/distrobox_profile.sh test -z "\$USER" && export USER="\$(id -un 2> /dev/null)" test -z "\$UID" && readonly UID="\$(id -ur 2> /dev/null)" test -z "\$EUID" && readonly EUID="\$(id -u 2> /dev/null)" export SHELL="\$(getent passwd "\${USER}" | cut -f 7 -d :)" test -z "\${XDG_RUNTIME_DIR:-}" && export XDG_RUNTIME_DIR="/run/user/\$(id -ru)" test -z "\${DBUS_SESSION_BUS_ADDRESS:-}" && export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/\$(id -ru)/bus" # Ensure we have these two variables from the host, so that graphical apps # also work in case we use a login session if [ -z "\$XAUTHORITY" ]; then export XAUTHORITY="\$(host-spawn sh -c "printf "%s" \\\$XAUTHORITY")" # if the variable is still empty, unset it, because empty it could be harmful [ -z "\$XAUTHORITY" ] && unset XAUTHORITY fi if [ -z "\$XAUTHLOCALHOSTNAME" ]; then export XAUTHLOCALHOSTNAME="\$(host-spawn sh -c "printf "%s" \\\$XAUTHLOCALHOSTNAME")" [ -z "\$XAUTHLOCALHOSTNAME" ] && unset XAUTHLOCALHOSTNAME fi if [ -z "\$WAYLAND_DISPLAY" ]; then export WAYLAND_DISPLAY="\$(host-spawn sh -c "printf "%s" \\\$WAYLAND_DISPLAY")" [ -z "\$WAYLAND_DISPLAY" ] && unset WAYLAND_DISPLAY fi if [ -z "\$DISPLAY" ]; then export DISPLAY="\$(host-spawn sh -c "printf "%s" \\\$DISPLAY")" [ -z "\$DISPLAY" ] && unset DISPLAY fi # This will ensure a default prompt for a container, this will be remineshent of # toolbx prompt: https://github.com/containers/toolbox/blob/main/profile.d/toolbox.sh#L47 # this will ensure greater compatibility between the two implementations if [ -f /run/.toolboxenv ]; then [ "\${BASH_VERSION:-}" != "" ] && export PS1="📦[\u@\$CONTAINER_ID \W]\$ " [ "\${ZSH_VERSION:-}" != "" ] && export PS1="📦[%n@\$CONTAINER_ID]%~%# " fi # This will ensure we have a first-shell password setup for an user if needed. # We're going to use this later in case of rootful containers if [ -e /var/tmp/.\$USER.passwd.initialize ]; then echo "⚠️ First time user password setup ⚠️ " trap "echo; exit" INT passwd && rm -f /var/tmp/.\$USER.passwd.initialize trap - INT fi EOF # It's also importanto to keep this working on fish shells if [ -e "/etc/fish/config.fish" ]; then mkdir -p /etc/fish/conf.d cat << EOF > /etc/fish/conf.d/distrobox_config.fish if status --is-interactive test -z "\$USER" && set -gx USER (id -un 2> /dev/null) test -z "\$UID" && set -gx UID (id -ur 2> /dev/null) test -z "\$EUID" && set -gx EUID (id -u 2> /dev/null) set -gx SHELL (getent passwd "\$USER" | cut -f 7 -d :) test -z "\$XDG_RUNTIME_DIR && set -gx XDG_RUNTIME_DIR /run/user/(id -ru) test -z "\$DBUS_SESSION_BUS_ADDRESS && set -gx DBUS_SESSION_BUS_ADDRESS unix:path=/run/user/(id -ru)/bus # Ensure we have these two variables from the host, so that graphical apps # also work in case we use a login session if test -z \$XAUTHORITY set -gx XAUTHORITY (host-spawn sh -c "printf "%s" \\\$XAUTHORITY") # if the variable is still empty, unset it, because empty it could be harmful test -z \$XAUTHORITY ; and set -e XAUTHORITY end if test -z \$XAUTHLOCALHOSTNAME set -gx XAUTHLOCALHOSTNAME (host-spawn sh -c "printf "%s" \\\$XAUTHLOCALHOSTNAME") test -z \$XAUTHLOCALHOSTNAME ; and set -e XAUTHLOCALHOSTNAME end if test -z \$WAYLAND_DISPLAY set -gx WAYLAND_DISPLAY (host-spawn sh -c "printf "%s" \\\$WAYLAND_DISPLAY") test -z \$WAYLAND_DISPLAY ; and set -e WAYLAND_DISPLAY end if test -z \$DISPLAY set -gx DISPLAY (host-spawn sh -c "printf "%s" \\\$DISPLAY") test -z \$DISPLAY ; and set -e DISPLAY end # This will ensure we have a first-shell password setup for an user if needed. # We're going to use this later in case of rootful containers if test -e /var/tmp/.\$USER.passwd.initialize echo "⚠️ First time user password setup ⚠️ " trap "echo; exit" INT passwd && rm -f /var/tmp/.\$USER.passwd.initialize trap - INT end function fish_prompt set current_dir (basename (pwd)) echo "📦[\$USER@\$CONTAINER_ID \$current_dir]> " end end EOF fi ############################################################################### ############################################################################### printf "distrobox: Setting up sudo...\n" mkdir -p /etc/sudoers.d # Ensure we're using the user's password for sudo, not root if [ -e /etc/sudoers ]; then sed -i "s|^Defaults targetpw.*||g" /etc/sudoers fi # Do not check fqdn when doing sudo, it will not work anyways # Also allow canonical groups to use sudo cat << EOF > /etc/sudoers.d/sudoers Defaults !targetpw Defaults !fqdn %wheel ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL %root ALL=(ALL:ALL) ALL EOF # PAM config for "su" command if [ ! -e /etc/pam.d/su ]; then mkdir -p /etc/pam.d cat << EOF > /etc/pam.d/su auth sufficient pam_rootok.so auth required pam_unix.so account required pam_unix.so session required pam_unix.so -session optional pam_systemd.so EOF fi if ! grep -q "pam_systemd.so" /etc/pam.d/su; then printf "%s" '-session optional pam_systemd.so' >> /etc/pam.d/su fi # If we're running this script as root in a login shell (sudoless), we don't # have to bother setting up sudo. # # Also if we're in a rootful container, we will setup user's password, # so let's skip passwordless sudo too if [ "${container_user_uid}" -ne 0 ] && [ "${rootful}" -eq 0 ]; then # Ensure passwordless sudo is set up for user printf "\"%s\" ALL = (root) NOPASSWD:ALL\n" "${container_user_name}" >> /etc/sudoers.d/sudoers fi ############################################################################### ############################################################################### # If not existing, ensure we have a group for our user. if ! grep -q "^${container_user_name}:" /etc/group; then printf "distrobox: Setting up user groups...\n" if ! groupadd --force --gid "${container_user_gid}" "${container_user_name}"; then # It may occur that we have users with unsupported user name (eg. on LDAP or AD) # So let's try and force the group creation this way. printf "%s:x:%s:" "${container_user_name}" "${container_user_gid}" >> /etc/group fi fi ############################################################################### ############################################################################### # Setup kerberos integration with the host if [ -d "/run/host/var/kerberos" ] && [ -d "/etc/krb5.conf.d" ] && [ ! -e "/etc/krb5.conf.d/kcm_default_ccache" ]; then printf "distrobox: Setting up kerberos integration...\n" cat << EOF > /etc/krb5.conf.d/kcm_default_ccache # # To disable the KCM credential cache, comment out the following lines. [libdefaults] default_ccache_name = KCM: EOF fi printf "distrobox: Setting up user's group list...\n" # If we have sudo/wheel groups, let's add the user to them. # and ensure that user's in those groups can effectively sudo additional_groups="" if grep -q "^sudo" /etc/group; then additional_groups="sudo" elif grep -q "^wheel" /etc/group; then additional_groups="wheel" elif grep -q "^root" /etc/group; then additional_groups="root" fi # If we're rootful, search for host's groups, if we're not in anyone, let's not # add the current user to any sudoers group, so that host's sudo settings are # respected if [ "${rootful}" -eq 1 ] && ! grep -q "^wheel.*${container_user_name}" /run/host/etc/group && ! grep -q "^wheel.*${container_user_name}" /run/host/etc/group && ! grep -q "^sudo.*${container_user_name}" /run/host/etc/group; then additional_groups="" fi # Let's add our user to the container. if the user already exists, enforce properties. # # In case of AD or LDAP usernames, it is possible we will have a backslach in the name. # In that case grep would fail, so we replace the backslash with a point to make the regex work. # shellcheck disable=SC1003 if ! grep -q "^$(printf '%s' "${container_user_name}" | tr '\\' '.'):" /etc/passwd && ! getent passwd "${container_user_uid}"; then printf "distrobox: Adding user...\n" if ! useradd \ --home-dir "${container_user_home}" \ --no-create-home \ --groups "${additional_groups}" \ --shell "${SHELL:-"/bin/bash"}" \ --uid "${container_user_uid}" \ --gid "${container_user_gid}" \ "${container_user_name}"; then printf "Warning: There was a problem setting up the user with usermod, trying manual addition\n" printf "%s:x:%s:%s:%s:%s:%s" \ "${container_user_name}" "${container_user_uid}" \ "${container_user_gid}" "${container_user_name}" \ "${container_user_home}" "${SHELL:-"/bin/bash"}" >> /etc/passwd printf "%s::1::::::" "${container_user_name}" >> /etc/shadow fi # Ensure we're not using the specified SHELL. Run it only once, so that future # user's preferences are not overwritten at each start. elif [ ! -e /etc/passwd.done ]; then # This situation is presented when podman or docker already creates the user # for us inside container. We should modify the user's prepopulated shadowfile # entry though as per user's active preferences. # If the user was there with a different username, get that username so # we can modify it if ! grep -q "^$(printf '%s' "${container_user_name}" | tr '\\' '.'):" /etc/passwd; then user_to_modify=$(getent passwd "${container_user_uid}" | cut -d: -f1) fi printf "distrobox: Setting up existing user...\n" if ! usermod \ --home "${container_user_home}" \ --shell "${SHELL:-"/bin/bash"}" \ --groups "${additional_groups}" \ --uid "${container_user_uid}" \ --gid "${container_user_gid}" \ --login "${container_user_name}" \ "${user_to_modify:-"${container_user_name}"}"; then printf "Warning: There was a problem setting up the user with usermod, trying manual addition\n" # Modify the user printf "distrobox: Setting up existing user: /etc/passwd...\n" sed -i "s|^${container_user_name}.*||g" /etc/passwd printf "%s:x:%s:%s:%s:%s:%s" \ "${container_user_name}" "${container_user_uid}" \ "${container_user_gid}" "${container_user_name}" \ "${container_user_home}" "${SHELL:-"/bin/bash"}" >> /etc/passwd # Add or modify the default group # and add or modify the additional groups printf "distrobox: Setting up existing user: /etc/group...\n" for group in ${container_user_name} ${additional_groups}; do # Check if we have the user in the group if ! grep -q "^${group}.*${container_user_name}.*" /etc/group; then group_line="$(grep "^${group}.*" /etc/group)" # If no users in the group just add it if grep -q "^${group}.*:$" /etc/group; then sed -i "s|${group_line}|${group_line}${container_user_name}|g" /etc/group else sed -i "s|${group_line}|${group_line},${container_user_name}|g" /etc/group fi fi done fi fi # Ensure we have our home correctly set, in case of cloned containers or whatnot if [ "$(getent passwd "${container_user_name}" | cut -d: -f6)" != "${container_user_home}" ]; then printf "distrobox: Setting up user home...\n" if ! usermod -d "${container_user_home}" "${container_user_name}"; then sed -i "s|^${container_user_name}.*|${container_user_name}:x:${container_user_uid}:${container_user_gid}::${container_user_home}:${SHELL:-"/bin/bash"}|g" /etc/passwd fi fi # If we're rootless, delete password for root and user if [ ! -e /etc/passwd.done ]; then printf "distrobox: Ensuring user's access...\n" temporary_password="$(md5sum < /proc/sys/kernel/random/uuid | cut -d' ' -f1)" # We generate a random password to initialize the entry for the user. chpasswd_failed=0 printf "%s:%s" "${container_user_name}" "${temporary_password}" | chpasswd -e || chpasswd_failed=1 printf "%s:" "${container_user_name}" | chpasswd -e || chpasswd_failed=1 if [ "${chpasswd_failed}" -eq 1 ]; then printf "Warning: There was a problem setting up the user, trying manual addition\n" if grep -q "${container_user_name}" /etc/shadow; then sed -i "s|^${container_user_name}.*|${container_user_name}::::::::|g" /etc/shadow else echo "${container_user_name}::::::::" >> /etc/shadow fi fi if [ "${rootful}" -eq 0 ]; then # We're rootless so we don't care about account password, so we remove it passwd_cmd=passwd if passwd --help 2>&1 | grep -q -- --stdin; then passwd_cmd="passwd --stdin" fi printf "%s\n%s\n" "${temporary_password}" "${temporary_password}" | ${passwd_cmd} root printf "%s:" "root" | chpasswd -e else # We're rootful, so we don't want passwordless accounts, so we lock them # down by default. # lock out root user if ! usermod -L root; then sed -i 's|^root.*|root:!:1::::::|g' /etc/shadow fi fi fi # If we are in a rootful container, let's setup a first-shell password setup # so that sudo, and su has a password # # else we fallback to the usual setup with passwordless sudo/su user. This is # likely because we're in a rootless setup, so privilege escalation is not a concern. if [ "${rootful}" -eq 1 ] && { [ "$(grep "${container_user_name}" /etc/shadow | cut -d':' -f2)" = '!!' ] || [ "$(grep "${container_user_name}" /etc/shadow | cut -d':' -f2)" = "" ] }; then # force setup of user's password on first shell if [ ! -e /var/tmp ]; then mkdir -p /var/tmp chmod 0777 /var/tmp fi touch /var/tmp/."${container_user_name}".passwd.initialize chown "${container_user_name}:${container_user_gid}" /var/tmp/."${container_user_name}".passwd.initialize fi # Now we're done touch /etc/passwd.done ############################################################################### ############################################################################### if [ -n "${DISTROBOX_HOST_HOME-}" ] && [ -d "/etc/skel" ]; then printf "distrobox: Setting up skel...\n" # If we do not have profile files in the home, we should copy the # skeleton files, if present. # Ensure we copy only if the dotfile is not already present. skel_files="$(find /etc/skel/ -type f || :)" for skel_file in ${skel_files}; do base_file_name=$(basename "${skel_file}") skel_file_path=$(dirname "${skel_file}") file_path_for_home=${skel_file_path#/etc/skel} if [ -n "${file_path_for_home}" ] && [ ! -d "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"}" ]; then mkdir -p "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}" chown "${container_user_uid}":"${container_user_gid}" "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}" fi if [ ! -f "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}${base_file_name}" ] && [ ! -L "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}${base_file_name}" ]; then cp "${skel_file}" "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}${base_file_name}" chown "${container_user_uid}":"${container_user_gid}" "${container_user_home}/${file_path_for_home:+"${file_path_for_home}"/}${base_file_name}" fi done fi ############################################################################### ############################################################################### if [ -n "${init_hook}" ]; then printf "distrobox: Executing init hooks...\n" # execute eventual init hooks if specified # shellcheck disable=SC2086 eval ${init_hook} fi ############################################################################### HOST_WATCH=" /etc/hostname /etc/hosts /etc/localtime /etc/resolv.conf " id="${CONTAINER_ID:-}" if [ -e /run/.containerenv ]; then # shellcheck disable=SC1091,SC2034 . /run/.containerenv elif [ -e /.dockerenv ]; then id="$(curl -s --unix-socket /run/docker.sock http://docker/containers/"${CONTAINER_ID:-$(hostname | cut -d'.' -f1)}"/json | grep -Eo '"Id":"[a-zA-Z0-9]{64}",' | cut -d '"' -f4)" fi ############################################################################### # If init support is disabled, let's do our routine to keep the container # up, running and in sync with host. # # For non-init containers, the init will stop here if [ "${init}" -eq 0 ]; then printf "container_setup_done\n" # Keepalive loop # disable verbose logging for this phase. set +x while true; do # Let's check for changes every 15 seconds. # This way we can dynamically keep hosts, dns and timezone setups # in sync with host, without having permissions problems: # - symlink will fail with "Device or Resource busy" # - bindmount will need a container restart on changes for file_watch in ${HOST_WATCH}; do # do stuff, only if the file is a mountpoint, and if the mountpoint is NOT containing the # container id, because if it does, it is because it's part of the podman/docker setup # The mount point might not exist, either because it's umounted or it doesn't exist on # host in some cases like /etc/localtime, so ignore findmnt errors mount_source="$(findmnt -no SOURCE "${file_watch}")" || : if [ -n "${mount_source}" ] && ! echo "${mount_source}" | grep -q "${id}"; then file_watch_src="/run/host${file_watch}" # check if the target file exists if ls -l "${file_watch_src}" 2> /dev/null > /dev/null; then # if it's a symlink and take the source if [ -L "${file_watch_src}" ]; then file_watch_src="$(init_readlink "/run/host${file_watch}")" # if it's an absolute link, we need to append /run/host ourselves. if ! printf "%s" "${file_watch_src}" | grep -q "/run/host"; then file_watch_src="/run/host${file_watch_src}" fi fi if ! diff "${file_watch}" "${file_watch_src}" > /dev/null; then # We only do this, if the file is actually different umount "${file_watch}" && mount_bind "${file_watch_src}" "${file_watch}" # Let's keep in sync host's hostname and container's hostname if [ "${file_watch}" = "/etc/hostname" ]; then hostname "$(cat /etc/hostname)" fi fi fi fi done sleep 15 done fi ############################################################################### ############################################################################### # If we're here, the init support has been enabled. printf "distrobox: Setting up init system...\n" # some of this directories are needed by # the init system. If they're mounts, there might # be problems. Let's unmount them. for host_mount in ${HOST_MOUNTS_RO_INIT}; do if findmnt "${host_mount}" > /dev/null; then umount "${host_mount}"; fi done # Remove symlinks rm -f /run/systemd/coredump rm -f /run/systemd/io.system.ManagedOOM rm -f /run/systemd/notify rm -f /run/systemd/private # Restore the symlink if it's an empty file if [ -f /etc/localtime ]; then rm -f /etc/localtime ln -sf /usr/share/zoneinfo/UCT /etc/localtime fi # Remove /dev/console when using init systems, this will confuse host system if # we use rootful containers # Instantiate a new pty to mount over /dev/console # this way we will have init output right of the logs [ -e /dev/console ] || touch /dev/console rm -f /var/console mkfifo /var/console script -c "cat /var/console" /dev/null & # Ensure the pty is created sleep 0.5 # Mount the created pty over /dev/console in order to have systemd logs # right into container logs if ! mount --bind /dev/pts/0 /dev/console; then # Fallback to older behaviour or fake plaintext file in case it fails # this ensures rootful + initful boxes do not interfere with host's /dev/console rm -f /var/console touch /var/console mount --bind /var/console /dev/console fi if [ -e /etc/inittab ]; then # Cleanup openrc to not interfere with the host sed -i 's/^\(tty\d\:\:\)/#\1/g' /etc/inittab fi if [ -e /etc/rc.conf ]; then sed -i \ -e 's/#rc_env_allow=".*"/rc_env_allow="\*"/g' \ -e 's/#rc_crashed_stop=.*/rc_crashed_stop=NO/g' \ -e 's/#rc_crashed_start=.*/rc_crashed_start=YES/g' \ -e 's/#rc_provide=".*"/rc_provide="loopback net"/g' \ /etc/rc.conf fi if [ -e /etc/init.d ]; then rm -f /etc/init.d/hwdrivers \ /etc/init.d/hwclock \ /etc/init.d/hwdrivers \ /etc/init.d/modules \ /etc/init.d/modules-load \ /etc/init.d/modloop fi if command -v systemctl 2> /dev/null; then # Cleanup Systemd to not interfere with the host UNIT_TARGETS=" /usr/lib/systemd/system/*.mount /usr/lib/systemd/system/console-getty.service /usr/lib/systemd/system/getty@.service /usr/lib/systemd/system/systemd-machine-id-commit.service /usr/lib/systemd/system/systemd-binfmt.service /usr/lib/systemd/system/systemd-tmpfiles* /usr/lib/systemd/system/systemd-udevd.service /usr/lib/systemd/system/systemd-udev-trigger.service /usr/lib/systemd/system/systemd-update-utmp* /usr/lib/systemd/user/pipewire* /usr/lib/systemd/user/wireplumber* /usr/lib/systemd/system/suspend.target /usr/lib/systemd/system/hibernate.target /usr/lib/systemd/system/hybrid-sleep.target " # in case /etc/resolv.conf is a mount, we need to mask resolved # in this case we're using network=host and systemd-resolved won't # be able to bind to localhost:53 mount_source="$(findmnt -no SOURCE /etc/resolv.conf)" || : if [ -n "${mount_source}" ] && ! echo "${mount_source}" | grep -q "${id}"; then UNIT_TARGETS="${UNIT_TARGETS} /usr/lib/systemd/system/systemd-resolved.service " fi # shellcheck disable=SC2086,SC2044 for unit in $(find ${UNIT_TARGETS} 2> /dev/null); do systemctl mask "$(basename "${unit}")" || : done fi # Let's do a minimal user-integration for the user when using system # as the user@.service will trigger the user-runtime-dir@.service which will # undo all the integration we did at the start of the script # # This will ensure the basic integration for x11/wayland/pipewire/keyring if [ -e /usr/lib/systemd/system/user@.service ]; then cat << EOF > /usr/local/bin/user-integration #!/bin/sh sleep 1 ln -sf /run/host/run/user/\$(id -ru)/wayland-* /run/user/\$(id -ru)/ ln -sf /run/host/run/user/\$(id -ru)/pipewire-* /run/user/\$(id -ru)/ find /run/host/run/user/\$(id -ru)/ -maxdepth 1 -type f -exec sh -c 'grep -qlE COOKIE \$0 && ln -sf \$0 /run/user/\$(id -ru)/\$(basename \$0)' {} \; mkdir -p /run/user/\$(id -ru)/app && ln -sf /run/host/run/user/\$(id -ru)/app/* /run/user/\$(id -ru)/app/ mkdir -p /run/user/\$(id -ru)/at-spi && ln -sf /run/host/run/user/\$(id -ru)/at-spi/* /run/user/\$(id -ru)/at-spi/ mkdir -p /run/user/\$(id -ru)/dbus-1 && ln -sf /run/host/run/user/\$(id -ru)/dbus-1/* /run/user/\$(id -ru)/dbus-1/ mkdir -p /run/user/\$(id -ru)/dconf && ln -sf /run/host/run/user/\$(id -ru)/dconf/* /run/user/\$(id -ru)/dconf/ mkdir -p /run/user/\$(id -ru)/gnupg && ln -sf /run/host/run/user/\$(id -ru)/gnupg/* /run/user/\$(id -ru)/gnupg/ mkdir -p /run/user/\$(id -ru)/keyring && ln -sf /run/host/run/user/\$(id -ru)/keyring/* /run/user/\$(id -ru)/keyring/ mkdir -p /run/user/\$(id -ru)/p11-kit && ln -sf /run/host/run/user/\$(id -ru)/p11-kit/* /run/user/\$(id -ru)/p11-kit/ mkdir -p /run/user/\$(id -ru)/pulse && ln -sf /run/host/run/user/\$(id -ru)/pulse/* /run/user/\$(id -ru)/pulse/ find /run/user/\$(id -ru) -maxdepth 2 -xtype l -delete EOF chmod +x /usr/local/bin/user-integration cat << EOF > /usr/lib/systemd/system/user-integration@.service [Unit] Description=User runtime integration for UID %i After=user@%i.service Requires=user-runtime-dir@%i.service [Service] User=%i Type=oneshot ExecStart=/usr/local/bin/user-integration Slice=user-%i.slice EOF fi # Now we can launch init printf "distrobox: Firing up init system...\n" if [ -e /usr/lib/systemd/systemd ] || [ -e /lib/systemd/systemd ]; then # Start user Systemd unit, this will attempt until Systemd is ready sh -c "timeout=120 && sleep 1 && while [ \"\${timeout}\" -gt 0 ]; do \ systemctl is-system-running | grep -E 'running|degraded' && break; \ echo 'waiting for systemd to come up...\n' && sleep 1 && timeout=\$(( timeout -1 )); \ done && \ systemctl start user@${container_user_name}.service && \ systemctl start user-integration@${container_user_name}.service && \ loginctl enable-linger ${container_user_name} || : && \ echo container_setup_done" & [ -e /usr/lib/systemd/systemd ] && exec /usr/lib/systemd/systemd --system --log-target=console --unit=multi-user.target [ -e /lib/systemd/systemd ] && exec /lib/systemd/systemd --system --log-target=console --unit=multi-user.target elif [ -e /sbin/init ]; then printf "container_setup_done\n" # Fallback to standard init path, this is useful in case of non-Systemd containers # like an openrc alpine exec /sbin/init else printf "Error: could not set up init system, no init found! Consider using an image that ships with an init system, or add it with \"--additional-packages\" during creation.!\n" exit 1 fi distrobox-1.8.1.2/distrobox-list000077500000000000000000000210141474517124600166230ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Optional env variables: # DBX_CONTAINER_MANAGER # DBX_VERBOSE # DBX_SUDO_PROGRAM # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults no_color=0 # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 verbose=0 version="1.8.1.2" container_manager="autodetect" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # If we're running this script as root -- as in logged in in the shell as root # user, and not via SUDO/DOAS --, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "$(id -ru)" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-list Options: --help/-h: show this message --no-color: disable color formatting --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; --no-color) shift no_color=1 ;; -r | --root) shift rootful=1 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. break ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program-} ${container_manager}" fi # List containers using custom format that included MOUNTS # we do this as we can detect the custom mounts done by distrobox to distringuish # between a normal container and a distrobox one. container_list=$(${container_manager} ps -a --no-trunc --format \ "{{.ID}}|{{.Image}}|{{.Names}}|{{.Status}}|{{.Labels}}{{.Mounts}}") printf "%-12s | %-20s | %-18s | %-30s\n" \ "ID" "NAME" "STATUS" "IMAGE" IFS=' ' # if we're in not a tty, don't use colors GREEN="" YELLOW="" CLEAR="" if [ -t 0 ] && [ -t 1 ] && [ "${no_color}" -ne 1 ]; then # we're in a tty, use colors GREEN='\033[32m' YELLOW='\033[33m' CLEAR='\033[0m' fi # Header of the output for container in ${container_list}; do # Check if the current container has a custom mount point for distrobox. if [ -z "${container##*distrobox*}" ]; then # Extract the information for the single container to pretty print it container_id="$(printf "%s" "${container}" | cut -d'|' -f1 | cut -c1-12)" container_image="$(printf "%s" "${container}" | cut -d'|' -f2)" container_name="$(printf "%s" "${container}" | cut -d'|' -f3)" container_status="$(printf "%s" "${container}" | cut -d'|' -f4)" IFS=' ' # If the container is Up and Running, print it in green and go next. if [ -z "${container_status##*Up*}" ] || [ -z "${container_status##*running*}" ]; then # echo -e is not defined in posix, and printing with %s will not work # for colors, so we're disabling this lint for color prints. # shellcheck disable=SC2059 printf "${GREEN}" else # shellcheck disable=SC2059 printf "${YELLOW}" fi # print it in yellow if not Running printf "%-12s | %-20s | %-18s | %-30s" \ "${container_id}" "${container_name}" "${container_status}" "${container_image}" # shellcheck disable=SC2059 printf "${CLEAR}\n" fi done distrobox-1.8.1.2/distrobox-rm000077500000000000000000000340211474517124600162700ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Optional env variables: # DBX_CONTAINER_MANAGER # DBX_CONTAINER_NAME # DBX_CONTAINER_RM_CUSTOM_HOME # DBX_NON_INTERACTIVE # DBX_VERBOSE # DBX_SUDO_PROGRAM # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults all=0 container_manager="autodetect" distrobox_flags="" distrobox_path="$(dirname "$(realpath "${0}")")" force=0 force_flag="" non_interactive=0 # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 verbose=0 rm_home=0 response_rm_home="N" version="1.8.1.2" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_CONTAINER_RM_CUSTOM_HOME}" ] && rm_home="${DBX_CONTAINER_RM_CUSTOM_HOME}" [ -n "${DBX_NON_INTERACTIVE}" ] && non_interactive="${DBX_NON_INTERACTIVE}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${non_interactive}" = "true" ] && non_interactive=1 [ "${non_interactive}" = "false" ] && non_interactive=0 [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # If we're running this script as root - as in logged in in the shell as root # user, and not via SUDO/DOAS -, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "$(id -ru)" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi # Declare it AFTER config sourcing because we do not want a default name set for rm. container_name_default="my-distrobox" container_name_list="" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-rm [-f/--force] container-name [container-name1 container-name2 ...] Options: --all/-a: delete all distroboxes --force/-f: force deletion --rm-home: remove the mounted home if it differs from the host user's one --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -a | --all) shift all=1 ;; -r | --root) shift rootful=1 ;; --rm-home) shift rm_home=1 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -f | --force) force=1 non_interactive=1 shift ;; -Y | --yes) non_interactive=1 shift ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name_list="${container_name_list} $1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # add -f if force is specified if [ "${force}" -ne 0 ]; then force_flag="--force" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program-} ${container_manager}" distrobox_flags="--root" fi # If all, just set container_name to the list of names in distrobox-list if [ "${all}" -ne 0 ]; then # prepend sudo (or the specified sudo program) if we want our container manager to be rootful # shellcheck disable=SC2086,2248 container_name_list="$("${distrobox_path}"/distrobox-list ${distrobox_flags} --no-color | tail -n +2 | cut -d'|' -f2 | tr -d ' ' | tr '\n' ' ')" fi if [ -z "${container_name_list}" ] && [ "${all}" -ne 0 ]; then printf >&2 "No containers found.\n" exit 0 fi # check if we have containers to delete if [ -z "${container_name_list}" ]; then container_name_list="${container_name_default}" fi # cleanup_exports will remove exported apps and bins for container to delete. # Arguments: # container_name: string container name # Expected global variables: # distrobox_flags: string additional distrobox flags to use # Expected env variables: # None # Outputs: # None cleanup_exports() { container_name="$1" IFS='¤' printf "Removing exported binaries...\n" binary_files="$(grep -rl "# distrobox_binary" "${HOME}/.local/bin" 2> /dev/null | sed 's/./\\&/g' | xargs -I{} grep -le "# name: ${container_name}$" "{}" | sed 's/./\\&/g' | xargs -I{} printf "%s¤" "{}" 2> /dev/null || :)" for file in ${binary_files}; do printf "Removing exported binary %s...\n" "${file}" rm -f "${file}" done # Remove exported gui apps from this container in default path # shellcheck disable=SC2086,SC2038 desktop_files="$(find "${HOME}/.local/share/applications/${container_name}"* -type f -o -type l 2> /dev/null | sed 's/./\\&/g' | xargs -I{} grep -le "Exec=.*${container_name} " "{}" | sed 's/./\\&/g' | xargs -I{} printf "%s¤" "{}" 2> /dev/null || :)" for file in ${desktop_files}; do if [ -e "${file}" ]; then app="$(grep -Eo "Name=.*" "${file}" | head -n 1 | cut -d'=' -f2)" icon="$(grep -Eo "Icon=.*" "${file}" | head -n 1 | cut -d'=' -f2)" printf "Removing exported app %s...\n" "${app}" rm -f "${file}" find "${HOME}/.local/share/icons" -name "${icon}.*" -delete fi done unset IFS } # delete_container will remove input container # Arguments: # container_name: string container name # Expected global variables: # container_manager: string container manager to use # distrobox_flags: string distrobox additional flags # non_interactive: bool non interactive mode # force_flag: bool force mode # rm_home: bool remove home # verbose: bool verbose # Expected env variables: # None # Outputs: # None delete_container() { container_name="$1" # Inspect the container we're working with. container_status="$(${container_manager} inspect --type container \ --format '{{.State.Status}}' "${container_name}" || :)" # Does the container exist? check if inspect reported errors if [ -z "${container_status}" ]; then # If not, prompt to create it first printf >&2 "Cannot find container %s.\n" "${container_name}" return fi # Retrieve container's HOME, and check if it's different from host's one. In # this case we prompt for deletion of the custom home. container_home=$(${container_manager} inspect --type container --format \ '{{range .Config.Env}}{{if and (ge (len .) 5) (eq (slice . 0 5) "HOME=")}}{{slice . 5}}{{end}}{{end}}' "${container_name}") # Prompt for confirmation if [ "${container_home}" != "${HOME}" ]; then if [ "${non_interactive}" -eq 0 ] && [ "${rm_home}" -eq 1 ]; then printf "Do you want to remove custom home of container %s (%s)? [y/N]: " "${container_name}" "${container_home}" read -r response_rm_home response_rm_home="${response_rm_home:-"N"}" fi fi # Validate home response # Accept only y,Y,Yes,yes,n,N,No,no. case "${response_rm_home}" in y | Y | Yes | yes | YES) rm_home_local=1 ;; n | N | No | no | NO) rm_home_local=0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac # Remove the container printf "Removing container...\n" # shellcheck disable=SC2086,SC2248 ${container_manager} rm ${force_flag} --volumes "${container_name}" # Remove exported apps and bins cleanup_exports "${container_name}" # We're going to delete the box, let's also delete the entry verbose_arg="" if [ "${verbose}" -ne 0 ]; then verbose_arg="--verbose" fi "$(dirname "$(realpath "${0}")")/distrobox-generate-entry" "${container_name}" --delete "${verbose_arg}" # Remove custom home if [ "${rm_home_local}" -eq 1 ]; then rm -r "${container_home}" printf "Successfully removed %s\n" "${container_home}" fi } # Prompt for confirmation if [ "${non_interactive}" -eq 0 ] && [ "${force}" -eq 0 ]; then printf "Do you really want to delete containers:%s? [Y/n]: " "${container_name_list}" read -r response response="${response:-"Y"}" else response="yes" fi for container in ${container_name_list}; do if [ "$(${container_manager} inspect --type container --format '{{.State.Status}}' "${container}")" = "running" ]; then if [ "${non_interactive}" -eq 0 ] && [ "${force}" -eq 0 ]; then printf "Container %s running, do you want to force delete them? [Y/n]: " "${container_name_list}" read -r response_force response_force="${response_force:-"Y"}" else response_force="yes" fi fi # Accept only y,Y,Yes,yes,n,N,No,no. case "${response_force:-"N"}" in y | Y | Yes | yes | YES) force=1 force_flag="--force" break ;; n | N | No | no | NO) ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" ;; esac done # Accept only y,Y,Yes,yes,n,N,No,no. case "${response}" in y | Y | Yes | yes | YES) for container in ${container_name_list}; do delete_container "${container}" done ;; n | N | No | no | NO) printf "Aborted.\n" exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac distrobox-1.8.1.2/distrobox-stop000077500000000000000000000222651474517124600166460ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX # Optional env variables: # DBX_CONTAINER_MANAGER # DBX_CONTAINER_NAME # DBX_NON_INTERACTIVE # DBX_VERBOSE # DBX_SUDO_PROGRAM # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" # Defaults all=0 container_manager="autodetect" distrobox_flags="" distrobox_path="$(dirname "$(realpath "${0}")")" container_name="" container_name_default="my-distrobox" container_name_list="" non_interactive=0 # If the user runs this script as root in a login shell, set rootful=1. # There's no need for them to pass the --root flag option in such cases. [ "$(id -ru)" -eq 0 ] && rootful=1 || rootful=0 verbose=0 version="1.8.1.2" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_CONTAINER_NAME}" ] && container_name="${DBX_CONTAINER_NAME}" [ -n "${DBX_NON_INTERACTIVE}" ] && non_interactive="${DBX_NON_INTERACTIVE}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 [ "${non_interactive}" = "true" ] && non_interactive=1 [ "${non_interactive}" = "false" ] && non_interactive=0 # If we're running this script as root - as in logged in in the shell as root # user, and not via SUDO/DOAS -, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "$(id -ru)" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi [ -n "${DBX_SUDO_PROGRAM}" ] && distrobox_sudo_program="${DBX_SUDO_PROGRAM}" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-stop --name container-name distrobox-stop container-name Options: --all/-a: stop all distroboxes --yes/-Y: non-interactive, stop without asking --help/-h: show this message --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -a | --all) shift all=1 ;; -r | --root) shift rootful=1 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -Y | --yes) non_interactive=1 shift ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name_list="${container_name_list} $1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi if [ -z "${container_name}" ]; then container_name="${container_name_default}" fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program-} ${container_manager}" distrobox_flags="--root" fi # If all, just set container_name to the list of names in distrobox-list if [ "${all}" -ne 0 ]; then # prepend sudo (or the specified sudo program) if we want our container manager to be rootful # shellcheck disable=SC2086,2248 container_name_list="$("${distrobox_path}"/distrobox-list ${distrobox_flags} --no-color | tail -n +2 | cut -d'|' -f2 | tr -d ' ' | tr '\n' ' ')" fi if [ -z "${container_name_list}" ] && [ "${all}" -ne 0 ]; then printf >&2 "No containers found.\n" exit 0 fi # check if we have containers to delete if [ -z "${container_name_list}" ]; then container_name_list="${container_name_default}" else # strip leading whitespace from container name container_name_list="$(echo "${container_name_list}" | sed -E 's/^[[:space:]]+//')" fi if [ "${non_interactive}" -eq 0 ]; then # Prompt to stop the container. printf "Do you really want to stop %s? [Y/n]: " "${container_name_list}" read -r response response="${response:-"Y"}" else response="yes" fi # Accept only y,Y,Yes,yes,n,N,No,no. case "${response}" in y | Y | Yes | yes | YES) # Stop the container for container_name in ${container_name_list}; do ${container_manager} stop "${container_name}" done ;; n | N | No | no | NO) printf "Aborted.\n" exit 0 ;; *) # Default case: If no more options then break out of the loop. printf >&2 "Invalid input.\n" printf >&2 "The available choices are: y,Y,Yes,yes,YES or n,N,No,no,NO.\nExiting.\n" exit 1 ;; esac distrobox-1.8.1.2/distrobox-upgrade000077500000000000000000000203511474517124600173020ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: # https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # Despite of running this script via SUDO/DOAS being not supported (the # script itself will call the appropriate tool when necessary), we still want # to allow people to run it as root, logged in in a shell, and create rootful # containers. # # SUDO_USER is a variable set by SUDO and can be used to check whether the script was called by it. Same thing for DOAS_USER, set by DOAS. if { [ -n "${SUDO_USER}" ] || [ -n "${DOAS_USER}" ] } && [ "$(id -ru)" -eq 0 ]; then printf >&2 "Running %s via SUDO/DOAS is not supported. Instead, please try running:\n" "$(basename "${0}")" printf >&2 " %s --root %s\n" "$(basename "${0}")" "$*" exit 1 fi # Ensure we have our env variables correctly set [ -z "${USER}" ] && USER="$(id -run)" [ -z "${HOME}" ] && HOME="$(getent passwd "${USER}" | cut -d':' -f6)" [ -z "${SHELL}" ] && SHELL="$(getent passwd "${USER}" | cut -d':' -f7)" all=0 running=0 container_manager="autodetect" distrobox_flags="" distrobox_path="$(dirname "$(realpath "${0}")")" rootful=0 verbose=0 version="1.8.1.2" # Source configuration files, this is done in an hierarchy so local files have # priority over system defaults # leave priority to environment variables. # # On NixOS, for the distrobox derivation to pick up a static config file shipped # by the package maintainer the path must be relative to the script itself. self_dir="$(dirname "$(realpath "$0")")" nix_config_file="${self_dir}/../share/distrobox/distrobox.conf" config_files=" ${nix_config_file} /usr/share/distrobox/distrobox.conf /usr/share/defaults/distrobox/distrobox.conf /usr/etc/distrobox/distrobox.conf /usr/local/share/distrobox/distrobox.conf /etc/distrobox/distrobox.conf ${XDG_CONFIG_HOME:-"${HOME}/.config"}/distrobox/distrobox.conf ${HOME}/.distroboxrc " for config_file in ${config_files}; do # Shellcheck will give error for sourcing a variable file as it cannot follow # it. We don't care so let's disable this linting for now. # shellcheck disable=SC1090 [ -e "${config_file}" ] && . "$(realpath "${config_file}")" done [ -n "${DBX_CONTAINER_MANAGER}" ] && container_manager="${DBX_CONTAINER_MANAGER}" [ -n "${DBX_VERBOSE}" ] && verbose="${DBX_VERBOSE}" # Fixup variable=[true|false], in case we find it in the config file(s) [ "${verbose}" = "true" ] && verbose=1 [ "${verbose}" = "false" ] && verbose=0 # If we're running this script as root - as in logged in in the shell as root # user, and not via SUDO/DOAS -, we don't need to set distrobox_sudo_program # as it's meaningless for this use case. if [ "$(id -ru)" -ne 0 ]; then # If the DBX_SUDO_PROGRAM/distrobox_sudo_program variable was set by the # user, use its value instead of "sudo". But only if not running the script # as root (UID 0). distrobox_sudo_program=${DBX_SUDO_PROGRAM:-${distrobox_sudo_program:-"sudo"}} fi # Declare it AFTER config sourcing because we do not want a default name set. container_name="" # show_help will print usage to stdout. # Arguments: # None # Expected global variables: # version: distrobox version # Expected env variables: # None # Outputs: # print usage with examples. show_help() { cat << EOF distrobox version: ${version} Usage: distrobox-upgrade container-name distrobox-upgrade --all Options: --help/-h: show this message --all/-a: perform for all distroboxes --running: perform only for running distroboxes --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version EOF } if [ $# -eq 0 ]; then show_help exit fi # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit 0 ;; -v | --verbose) verbose=1 shift ;; -V | --version) printf "distrobox: %s\n" "${version}" exit 0 ;; -a | --all) all=1 shift ;; --running) running=1 shift ;; -r | --root) shift rootful=1 ;; --) # End of all options. shift break ;; -*) # Invalid options. printf >&2 "ERROR: Invalid flag '%s'\n\n" "$1" show_help exit 1 ;; *) # Default case: If no more options then break out of the loop. # If we have a flagless option and container_name is not specified # then let's accept argument as container_name if [ -n "$1" ]; then container_name="${container_name} $1" shift else break fi ;; esac done set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi if [ -z "${container_name}" ] && [ "${all}" -eq 0 ] && [ "${running}" -eq 0 ]; then printf >&2 "Please specify the name of the container.\n" exit 1 fi # We depend on a container manager let's be sure we have it # First we use podman, else docker, else lilipod case "${container_manager}" in autodetect) if command -v podman > /dev/null; then container_manager="podman" elif command -v podman-launcher > /dev/null; then container_manager="podman-launcher" elif command -v docker > /dev/null; then container_manager="docker" elif command -v lilipod > /dev/null; then container_manager="lilipod" fi ;; podman) container_manager="podman" ;; podman-launcher) container_manager="podman-launcher" ;; lilipod) container_manager="lilipod" ;; docker) container_manager="docker" ;; *) printf >&2 "Invalid input %s.\n" "${container_manager}" printf >&2 "The available choices are: 'autodetect', 'podman', 'docker', 'lilipod'\n" ;; esac # Be sure we have a container manager to work with. if ! command -v "${container_manager}" > /dev/null; then # Error: we need at least one between docker, podman or lilipod. printf >&2 "Missing dependency: we need a container manager.\n" printf >&2 "Please install one of podman, docker or lilipod.\n" printf >&2 "You can follow the documentation on:\n" printf >&2 "\tman distrobox-compatibility\n" printf >&2 "or:\n" printf >&2 "\thttps://github.com/89luca89/distrobox/blob/main/docs/compatibility.md\n" exit 127 fi # add verbose if -v is specified if [ "${verbose}" -ne 0 ]; then container_manager="${container_manager} --log-level debug" fi # prepend sudo (or the specified sudo program) if we want our container manager to be rootful if [ "${rootful}" -ne 0 ]; then container_manager="${distrobox_sudo_program} ${container_manager}" distrobox_flags="--root" fi # If all, just set container_name to the list of names in distrobox-list if [ "${all}" -ne 0 ]; then # prepend sudo (or the specified sudo program) if we want our container manager to be rootful # shellcheck disable=SC2086,2248 container_name="$("${distrobox_path}"/distrobox-list ${distrobox_flags} --no-color | tail -n +2 | cut -d'|' -f2 | tr -d ' ')" # If running, set container_name to the list of names of running instances if [ "${running}" -ne 0 ]; then # shellcheck disable=SC2086,2248 container_name="$("${distrobox_path}"/distrobox-list ${distrobox_flags} --no-color | tail -n +2 | grep -iE '\| running|up' | cut -d'|' -f2 | tr -d ' ')" fi fi # Launch the entrypoint in upgrade mode for container in ${container_name}; do printf >&2 "\033[1;31m Upgrading %s...\n\033[0m" "${container}" # shellcheck disable=SC2086,SC2248 "${distrobox_path}"/distrobox-enter \ ${distrobox_flags} ${container} -- sh -c \ "command -v su-exec 2>/dev/null && su-exec root /usr/bin/entrypoint --upgrade || sudo -S /usr/bin/entrypoint --upgrade" done distrobox-1.8.1.2/docs/000077500000000000000000000000001474517124600146415ustar00rootroot00000000000000distrobox-1.8.1.2/docs/404.md000066400000000000000000000005451474517124600154760ustar00rootroot00000000000000--- layout: default permalink: /404.html --- ![404]({{site.baseurl}}/assets/404.png){:.full.pixels} # Document Not Found The requested page could not be found. If you feel this is not normal, then you create an issue on the Gitlab. [Go Back](){: .inline-button} [File an issue]({{site.issuesurl}}) {: .dialog-buttons} distrobox-1.8.1.2/docs/CNAME000066400000000000000000000000151474517124600154030ustar00rootroot00000000000000distrobox.it distrobox-1.8.1.2/docs/Gemfile000066400000000000000000000021501474517124600161320ustar00rootroot00000000000000source "https://rubygems.org" # Hello! This is where you manage which Jekyll version is used to run. # When you want to use a different version, change it below, save the # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: # # bundle exec jekyll serve # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! gem "jekyll", "~> 4.1.0" # This is the default theme for new Jekyll sites. You may change this to anything you like. # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. # gem "github-pages", group: :jekyll_plugins # If you have any plugins, put them here! group :jekyll_plugins do # gem 'jekyll-feed', '~> 0.13' # gem 'jekyll-sitemap', '~> 1.4' # gem 'jekyll-compose', '~> 0.12.0' # gem 'jekyll-postfiles', '~> 3.1' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem # gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] # Performance-booster for watching directories on Windows # gem "wdm", "~> 0.1.0" if Gem.win_platform? distrobox-1.8.1.2/docs/Gemfile.lock000066400000000000000000000030301474517124600170570ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) colorator (1.1.0) concurrent-ruby (1.1.9) em-websocket (0.5.2) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7) ffi (1.15.4) forwardable-extended (2.6.0) http_parser.rb (0.6.0) i18n (1.8.10) concurrent-ruby (~> 1.0) jekyll (4.1.1) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) i18n (~> 1.0) jekyll-sass-converter (~> 2.0) jekyll-watch (~> 2.0) kramdown (~> 2.1) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) mercenary (~> 0.4.0) pathutil (~> 0.9) rouge (~> 3.0) safe_yaml (~> 1.0) terminal-table (~> 1.8) jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) jekyll-watch (2.2.1) listen (~> 3.0) kramdown (2.3.1) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.3) listen (3.7.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.6) rb-fsevent (0.11.0) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.5) rouge (3.26.1) safe_yaml (1.0.5) sassc (2.4.0) ffi (~> 1.9) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) unicode-display_width (1.8.0) PLATFORMS x86_64-linux DEPENDENCIES jekyll (~> 4.1.0) BUNDLED WITH 2.2.7 distrobox-1.8.1.2/docs/README.md000066400000000000000000000545121474517124600161270ustar00rootroot00000000000000 # Distrobox previous logo credits [j4ckr3d](https://github.com/j4ckr3d) current logo credits [David Lapshin](https://github.com/daudix) [![Lint](https://github.com/89luca89/distrobox/actions/workflows/main.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/main.yml) [![CI](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml/badge.svg)](https://github.com/89luca89/distrobox/actions/workflows/compatibility.yml) [![GitHub](https://img.shields.io/github/license/89luca89/distrobox?color=blue)](../COPYING.md) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/89luca89/distrobox)](https://github.com/89luca89/distrobox/releases/latest) [![Packaging status](https://repology.org/badge/tiny-repos/distrobox.svg)](https://repology.org/project/distrobox/versions) [![GitHub issues by-label](https://img.shields.io/github/issues-search/89luca89/distrobox?query=is%3Aissue%20is%3Aopen%20label%3Abug%20-label%3Await-on-user%20&label=Open%20Bug%20Reports&color=red)](https://github.com/89luca89/distrobox/issues?q=is%3Aissue+is%3Aopen+label%3Abug+-label%3Await-on-user) Use any Linux distribution inside your terminal. Enable both backward and forward compatibility with software and freedom to use whatever distribution you’re more comfortable with. Distrobox uses `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod) to create containers using the Linux distribution of your choice. The created container will be tightly integrated with the host, allowing sharing of the HOME directory of the user, external storage, external USB devices and graphical apps (X11/Wayland), and audio. --- [Documentation](https://distrobox.it/#distrobox) - [Matrix Room](https://matrix.to/#/%23distrobox:matrix.org) - [Telegram Group](https://t.me/distrobox) --- ![overview](https://user-images.githubusercontent.com/598882/144294862-f6684334-ccf4-4e5e-85f8-1d66210a0fff.png) --- > [!WARNING] > Documentation on GitHub strictly refers to the code in the main branch. For the official documentation > Head over [https://distrobox.it](https://distrobox.it) - [Distrobox](#distrobox) - [What it does](#what-it-does) - [See it in action](#see-it-in-action) - [Why?](#why) - [Aims](#aims) - [Security implications](#security-implications) - [Quick Start](#quick-start) - [Assemble Distrobox](#assemble-distrobox) - [Configure Distrobox](#configure-distrobox) - [Installation](#installation) - [Alternative methods](#alternative-methods) - [Curl or Wget](#curl-or-wget) - [Git](#git) - [Dependencies](#dependencies) - [Install Podman without root](compatibility.md#install-podman-in-a-static-manner) - [Uninstallation](#uninstallation) - [Compatibility](compatibility.md) - [Supported container managers](compatibility.md#supported-container-managers) - [Host Distros](compatibility.md#host-distros) - [Install on the Steamdeck](posts/steamdeck_guide.md) - [Containers Distros](compatibility.md#containers-distros) - [Usage](usage/usage.md) - [Outside the distrobox](usage/usage.md#outside-the-distrobox) - [distrobox-assemble](usage/distrobox-assemble.md) - [distrobox-create](usage/distrobox-create.md) - [distrobox-enter](usage/distrobox-enter.md) - [distrobox-ephemeral](usage/distrobox-ephemeral.md) - [distrobox-generate-entry](usage/distrobox-generate-entry.md) - [distrobox-list](usage/distrobox-list.md) - [distrobox-rm](usage/distrobox-rm.md) - [distrobox-stop](usage/distrobox-stop.md) - [distrobox-upgrade](usage/distrobox-upgrade.md) - [Inside the distrobox](usage/usage.md#inside-the-distrobox) - [distrobox-export](usage/distrobox-export.md) - [distrobox-host-exec](usage/distrobox-host-exec.md) - [distrobox-init](usage/distrobox-init.md) - [Configure distrobox](#configure-distrobox) - [Useful tips](useful_tips.md) - [Launch a distrobox from you applications list](useful_tips.md#launch-a-distrobox-from-you-applications-list) - [Create a distrobox with a custom HOME directory](useful_tips.md#create-a-distrobox-with-a-custom-home-directory) - [Mount additional volumes in a distrobox](useful_tips.md#mount-additional-volumes-in-a-distrobox) - [Use a different shell than the host](useful_tips.md#use-a-different-shell-than-the-host) - [Run the container with real root](useful_tips.md#run-the-container-with-real-root) - [Run Debian/Ubuntu container behind proxy](useful_tips.md#run-debianubuntu-container-behind-proxy) - [Using a command other than sudo to run a rootful container](useful_tips.md#using-a-command-other-than-sudo-to-run-a-rootful-container) - [Duplicate an existing distrobox](useful_tips.md#duplicate-an-existing-distrobox) - [Export to the host](useful_tips.md#export-to-the-host) - [Execute commands on the host](useful_tips.md#execute-commands-on-the-host) - [Resolve "Error cannot open display: :0"](useful_tips.md#resolve-error-cannot-open-display-0) - [Enable SSH X-Forwarding when SSH-ing in a distrobox](useful_tips.md#enable-ssh-x-forwarding-when-ssh-ing-in-a-distrobox) - [Using init system inside a distrobox](useful_tips.md#using-init-system-inside-a-distrobox) - [Using Docker inside a Distrobox](useful_tips.md#using-docker-inside-a-distrobox) - [Using Podman inside a Distrobox](useful_tips.md#using-podman-inside-a-distrobox) - [Using LXC inside a Distrobox](useful_tips.md#using-lxc-inside-a-distrobox) - [Using Waydroid inside a Distrobox](useful_tips.md#using-waydroid-inside-a-distrobox) - [Manual Installation](useful_tips.md#manual-installation) - [Automated Installation](useful_tips.md#automated-installation) - [Using host's Podman or Docker inside a Distrobox](useful_tips.md#using-hosts-podman-or-docker-inside-a-distrobox) - [Using distrobox as main cli](useful_tips.md#using-distrobox-as-main-cli) - [Using a different architecture](useful_tips.md#using-a-different-architecture) - [Using the GPU inside the container](useful_tips.md#using-the-gpu-inside-the-container) - [Using nvidia-container-toolkit](useful_tips.md#using-nvidia-container-toolkit) - [Slow creation on podman and image size getting bigger with distrobox create](useful_tips.md#slow-creation-on-podman-and-image-size-getting-bigger-with-distrobox-create) - [Container save and restore](useful_tips.md#container-save-and-restore) - [Check used resources](useful_tips.md#check-used-resources) - [Pre-installing additional package repositories](useful_tips.md#pre-installing-additional-package-repositories) - [Apply resource limitation on the fly](useful_tips.md#apply-resource-limitation-on-the-fly) - [Posts](posts/posts.md) - [Create a dedicated distrobox container](posts/distrobox_custom.md) - [Execute a command on the Host](posts/execute_commands_on_host.md) - [Install Podman in HOME](posts/install_podman_static.md) - [Install Lilipod in HOME](posts/install_lilipod_static.md) - [Install on Steamdeck](posts/steamdeck_guide.md) - [Integrate VSCode and Distrobox](posts/integrate_vscode_distrobox.md) - [Run Libvirt using distrobox](posts/run_libvirt_in_distrobox.md) - [Run latest GNOME and KDE Plasma using distrobox](posts/run_latest_gnome_kde_on_distrobox.md) - [Featured Articles](featured_articles.md) - [Articles](featured_articles.md#articles) - [Run Distrobox on Fedora Linux - Fedora Magazine](https://fedoramagazine.org/run-distrobox-on-fedora-linux/) - [DistroBox – Run Any Linux Distribution Inside Linux Terminal - TecMint](https://www.tecmint.com/distrobox-run-any-linux-distribution/) - [Distrobox: Try Multiple Linux Distributions via the Terminal - It's FOSS](https://itsfoss.com/distrobox/) - [Distrobox - How to quickly deploy a Linux distribution with GUI applications via a container](https://www.techrepublic.com/article/how-to-quickly-deploy-a-linux-distribution-with-gui-applications-via-a-container/) - [Using Distrobox To Augment The Package Selection On Clear Linux - Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Distrobox-Clear-Linux) - [Benchmark: benefits of Clear Linux containers (distrobox) - Phoronix](https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1305326-clear-linux-container-performance-continues-showing-sizable-gains) - [Distrobox - A great item in the Linux toolbelt - phmurphy's blog](https://phmurphy.com/posts/distrobox-toolbelt/) - [Distrobox: Run (pretty much) any Linux distro under almost any other - TheRegister](https://www.theregister.com/2022/05/31/distrobox_130_released/) - [Day-to-day differences between Fedora Silverblue and Ubuntu - castrojo's blog](https://www.ypsidanger.com/day-to-day-advantages-of-fedora-silverblue/) - [Distrobox is Awesome - Running Window Manager and Desktop environments using Distrobox](https://cloudyday.tech.blog/2022/05/14/distrobox-is-awesome/) - [Japanese input on Clear Linux with Mozc via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/JapaneseInputOnClearLinuxWithMozc_en) - [MID (MaXX Interactive Desktop) on Clear Linux via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/MIDonClearLinuxWithDistrobox_en) - [Running Other Linux Distros with Distrobox on Fedora Linux - bandithijo's blog](featured_articles.md) - [Talks and Videos](featured_articles.md#talks) - [Linux App Summit 2022 - Distrobox: Run Any App On Any Distro - BoF](https://github.com/89luca89/distrobox/files/8598433/distrobox-las-talk.pdf) - [Opensource Summit 2022 - Distrobox: Run Any App On Any Distro](https://www.youtube.com/watch?v=eM1p47tow4o) - [A "Box" Full of Tools and Distros - Dario Faggioli @ OpenSUSE Conference 2022](https://www.youtube.com/watch?v=_RzARte80SQ) - [Podman Community Meeting October 4, 2022](https://www.youtube.com/watch?v=JNijOHL4_Ko) - [Distrobox opens the Steam Deck to a whole new world (GUIDE) - GamingOnLinux](https://www.youtube.com/watch?v=kkkyNA31KOA) - [CERN - Containerization as a means of extending the lifetime of HDL development tools](https://cdsweb.cern.ch/record/2859962?ln=ja) - [How to Code with Distrobox on the Steam Deck](https://www.youtube.com/watch?v=qic7lmACqPo) - [Why you should be running the MicroOS Desktop](https://www.youtube.com/watch?v=lKYLF1tA4Ik) - [Podcasts](featured_articles.md#podcasts) --- ## What it does Simply put it's a fancy wrapper around `podman`, `docker`, or `lilipod` to create and start containers highly integrated with the hosts. The distrobox environment is based on an OCI image. This image is used to create a container that seamlessly integrates with the rest of the operating system by providing access to the user's home directory, the Wayland and X11 sockets, networking, removable devices (like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev database, etc... It implements the same concepts introduced by but in a simplified way using POSIX sh and aiming at broader compatibility. All the props go to them as they had the great idea to implement this stuff. It is divided into 12 commands: - `distrobox-assemble` - creates and destroy containers based on a config file - `distrobox-create` - creates the container - `distrobox-enter` - to enter the container - `distrobox-ephemeral` - create a temporal container, destroy it when exiting the shell - `distrobox-list` - to list containers created with distrobox - `distrobox-rm` - to delete a container created with distrobox - `distrobox-stop` - to stop a running container created with distrobox - `distrobox-upgrade` - to upgrade one or more running containers created with distrobox at once - `distrobox-generate-entry` - to create an entry of a created container in the applications list - `distrobox-init` - the entrypoint of the container (not meant to be used manually) - `distrobox-export` - it is meant to be used inside the container, useful to export apps and services from the container to the host - `distrobox-host-exec` - to run commands/programs from the host, while inside of the container It also includes a little wrapper to launch commands with `distrobox COMMAND` instead of calling the single files. Please check [the usage docs here](usage/usage.md) and [see some handy tips on how to use it](useful_tips.md) ### See it in action Thanks to [castrojo](https://github.com/castrojo), you can see Distrobox in action in this explanatory video on his setup with Distrobox, Toolbx, Fedora Silverblue for the [uBlue](https://github.com/ublue-os) project (check it out!) [![Video](https://user-images.githubusercontent.com/598882/153680522-f5903607-2854-4cfb-a186-cba7403745bd.png)](https://www.youtube.com/watch?v=Q2PrISAOtbY) ## Why - Provide a mutable environment on an immutable OS, like [ChromeOS, Endless OS, Fedora Silverblue, OpenSUSE Aeon/Kalpa, Vanilla OS](compatibility.md#host-distros), or [SteamOS3](posts/steamdeck_guide.md) - Provide a locally privileged environment for sudoless setups (eg. company-provided laptops, security reasons, etc...) - To mix and match a stable base system (eg. Debian Stable, Ubuntu LTS, RedHat) with a bleeding-edge environment for development or gaming (eg. Arch, OpenSUSE Tumbleweed, or Fedora with the latest Mesa) - Leverage a high abundance of curated distro images for `docker`/`podman` to manage multiple environments. Refer to the compatibility list for an overview of the supported host distros [HERE](compatibility.md#host-distros) and container's distro [HERE](compatibility.md#containers-distros). ### Aims This project aims to bring **any distro userland to any other distro** supporting `podman`, `docker`, or `lilipod`. It has been written in POSIX shell to be as portable as possible and it does not have problems with dependencies and `glibc` version's compatibility. Refer [HERE](compatibility.md#supported-container-managers) for a list of supported container managers and minimum supported versions. It also aims to enter the container **as fast as possible**, every millisecond adds up if you use the container as your default environment for your terminal: These are some sample results of `distrobox-enter` on the same container on my weak laptop: ```console ~$ hyperfine --warmup 3 --runs 100 "distrobox enter bench -- whoami" Benchmark 1: distrobox enter bench -- whoami Time (mean ± σ): 395.6 ms ± 10.5 ms [User: 167.4 ms, System: 62.4 ms] Range (min … max): 297.3 ms … 408.9 ms 100 runs ``` #### Security implications Isolation and sandboxing are **not** the main aims of the project, on the contrary it aims to tightly integrate the container with the host. The container will have complete access to your home, pen drive, and so on, so do not expect it to be highly sandboxed like a plain `docker`/`podman` container or a Flatpak. ⚠️ **BE CAREFUL**:⚠️ if you use `docker`, or you use `podman`/`lilipod` with the `--root/-r` flag, the containers will run as root, so **root inside the rootful container can modify system stuff outside the container**, Be also aware that **In rootful mode, you'll be asked to setup the user's password**, this will ensure at least that the container is not a passwordless gate to root, but if you have security concerns for this, **use `podman` or `lilipod` that runs in rootless mode**. Rootless `docker` is still not working as intended and will be included in the future when it will be complete. That said, it is in the works to implement some sort of decoupling with the host, as discussed here: [#28 Sandboxed mode](https://github.com/89luca89/distrobox/issues/28) --- # Quick Start **Create a new distrobox:** `distrobox create -n test` **Create a new distrobox with Systemd (acts similar to an LXC):** `distrobox create --name test --init --image debian:latest --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries"` **Enter created distrobox:** `distrobox enter test` **Add one with a [different distribution](https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#host-distros), eg. Ubuntu 20.04:** `distrobox create -i ubuntu:20.04` **Execute a command in a distrobox:** `distrobox enter test -- command-to-execute` **List running distroboxes:** `distrobox list` **Stop a running distrobox:** `distrobox stop test` **Remove a distrobox:** `distrobox rm test` You can check [HERE for more advanced usage](usage/usage.md) and check a [comprehensive list of useful tips HERE](useful_tips.md) # Assemble Distrobox Manifest files can be used to declare a set of distroboxes and use `distrobox-assemble` to create/destroy them in batch. Head over the [usage docs of distrobox-assemble](usage/distrobox-assemble.md) for a more detailed guide. # Configure Distrobox Configuration files can be placed in the following paths, from the least important to the most important: - /usr/share/distrobox/distrobox.conf - /usr/etc/distrobox/distrobox.conf - /etc/distrobox/distrobox.conf - ${HOME}/.config/distrobox/distrobox.conf - ${HOME}/.distroboxrc You can specify inside distrobox configurations and distrobox-specific Environment variables. Example configuration file: ```conf container_always_pull="1" container_generate_entry=0 container_manager="docker" container_image_default="registry.opensuse.org/opensuse/toolbox:latest" container_name_default="test-name-1" container_user_custom_home="$HOME/.local/share/container-home-test" container_init_hook="~/.local/distrobox/a_custom_default_init_hook.sh" container_pre_init_hook="~/a_custom_default_pre_init_hook.sh" container_manager_additional_flags="--env-file /path/to/file --custom-flag" container_additional_volumes="/example:/example1 /example2:/example3:ro" non_interactive="1" skip_workdir="0" PATH="$PATH:/path/to/custom/podman" ``` Alternatively, it is possible to specify preferences using ENV variables: - DBX_CONTAINER_ALWAYS_PULL - DBX_CONTAINER_CUSTOM_HOME - DBX_CONTAINER_IMAGE - DBX_CONTAINER_MANAGER - DBX_CONTAINER_NAME - DBX_CONTAINER_ENTRY - DBX_NON_INTERACTIVE - DBX_SKIP_WORKDIR --- # Installation Distrobox is packaged in the following distributions, if your distribution is on this list, you can refer to your repos for installation: [![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg)](https://repology.org/project/distrobox/versions) Thanks to the maintainers for their work: [M0Rf30](https://github.com/M0Rf30), [alcir](https://github.com/alcir), [dfaggioli](https://github.com/dfaggioli), [AtilaSaraiva](https://github.com/AtilaSaraiva), [michel-slm](https://github.com/michel-slm) ## Alternative methods Here is a list of alternative ways to install `distrobox`. ### Curl or Wget If you like to live your life dangerously, or you want the latest release, you can trust me and simply run this in your terminal: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh ``` or using wget ```sh wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh ``` or if you want to select a custom directory to install without sudo: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local ``` or using wget ```sh wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local ``` If you want to install the last development version, directly from the last commit on Git, you can use: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next ``` or using wget ```sh wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --next ``` or: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local ``` or using wget ```sh wget -qO- https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local ``` ### Upgrading Just run the `curl` or `wget` command again. > [!WARNING] > Remember to add prefix-path-you-choose/bin to your PATH, to make it work. ### Git Alternatively, you can clone the project using `git clone` or using the latest release [HERE](https://github.com/89luca89/distrobox/releases/latest). Enter the directory and run `./install`, by default it will attempt to install in `~/.local` but if you run the script as root, it will default to `/usr/local`. You can specify a custom directory with the `--prefix` flag such as `./install --prefix ~/.distrobox`. Prefix explained: main distrobox files get installed to `${prefix}/bin` whereas the manpages get installed to `${prefix}/share/man`. --- Check the [Host Distros](compatibility.md#host-distros) compatibility list for distro-specific instructions. ## Dependencies Distrobox depends on a container manager to work, you can choose to install either `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod). Please look in the [Compatibility Table](compatibility.md#host-distros) for your distribution notes. There are ways to install [Podman without root privileges and in home.](compatibility.md#install-podman-in-a-static-manner) or [Lilipod without root privileges and in home.](compatibility.md#install-lilipod-in-a-static-manner) This should play well with completely sudoless setups and with devices like the Steam Deck (SteamOS). --- ## Uninstallation If you installed `distrobox` using the `install` script in the default install directory use this: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh ``` or if you specified a custom path: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sh -s -- --prefix ~/.local ``` Else if cloned the project using `git clone` or using the latest archive release from [HERE](https://github.com/89luca89/distrobox/releases/latest), enter the directory and run `./uninstall`, by default it will assume the install directory was `/usr/local` if ran as root or `~/.local`, you can specify another directory if needed with `./uninstall --prefix ~/.local` --- ![distro-box](./assets/distro-box.webp) This artwork uses [Cardboard Box](https://skfb.ly/6Wq6q) model by [J0Y](https://sketchfab.com/lloydrostek) licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0) This artwork uses [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend) by [GNOME Project](https://www.gnome.org) licensed under [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0) as a pre-configured scene distrobox-1.8.1.2/docs/_config.yml000066400000000000000000000012771474517124600167770ustar00rootroot00000000000000# Site settings title: Distrobox baseurl: "/" # the subpath of your site, e.g. /blog/ # usually empty. necessary for building absolute URIs # for metadata header url: "https://distrobox.it" # the base hostname & protocol for your site sourceurl: "https://github.com/89luca89/distrobox/tree/main/docs" # "edit this website" link in the footer description: "Use any linux distribution inside your terminal." issuesurl: "https://github.com/89luca89/distrobox/issues" # issue tracker for website permalink: /:title/ primary-color: "#70594d" #used in ios theme. further color customization in style.css # Build settings markdown: kramdown distrobox-1.8.1.2/docs/_includes/000077500000000000000000000000001474517124600166065ustar00rootroot00000000000000distrobox-1.8.1.2/docs/_includes/footer.html000066400000000000000000000002271474517124600207730ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/_includes/head.html000066400000000000000000000027771474517124600204120ustar00rootroot00000000000000 {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %} distrobox-1.8.1.2/docs/_includes/header.html000066400000000000000000000001751474517124600207270ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/_layouts/000077500000000000000000000000001474517124600165005ustar00rootroot00000000000000distrobox-1.8.1.2/docs/_layouts/default.html000066400000000000000000000003121474517124600210060ustar00rootroot00000000000000 {% include head.html %} {% include header.html %}
{{ content }}
{% include footer.html %} distrobox-1.8.1.2/docs/apple-touch-icon.png000066400000000000000000000174461474517124600205320ustar00rootroot00000000000000PNG  IHDR=2 pHYs a aJ%tEXtSoftwarewww.inkscape.org<IDATxyXSg kؔEqADH TeoNδu:tjNgjK@ & U\@MEC?hl)!$d;'sC==<ںO`T #hZV0fh#hZV0fh#hZV0fh#hZV0fh#hZV0fh m@WfδEagg s3Sp]hljݻ=Z0V!ffj8:Α;֭vTTTC_c1DlcF|ǨhTM EviLWDI,?qXdJ{f3\Ѩ ĂETfŒH$j]\8;- T 55 U>$33m[I͓_𹽽vUchh9?YJǮO0&2w78p۝HJ>1<̛HxΎnf\y1+`<YF8V(DvI8Q@nfr ^G?mmί0 "#°aC0f/Ջc(-+GJj)"C^&J]0,|}{vXXp ^Ĥg#f\pP(DzF.NC,S#qssA| % A9Ƕwt )1.ת%/j z!'799ywWfc}pv숄1J+H }Gq:z+hMPXDJ9{58\l GHp Xr>?@AafahxXCz'hի{v̜iC8fc3)~ !>...΄cGZZ6K!Zh؉ploo)[ĬYZ pM5^۷#0pzT4Bd;!|ls8a026;V"'E6== c !@t Q[KZ$!;'ٹyNS=[Yc[n(@}u Dz"6΋=Mv31-4栍̰m-XS8z4 C::OV#c#l0ΐ. iw_ˑf/j \35u'o/O±C8>v*=EX ]HJJA D;/]8p* R_uJ Z"it4U?(%he懇eʘ~D~]a=#-l(!hED7xU11Qxd;Xi*UVt^K >$:{zzg5QdvSpU D<:+hev4I7 n 22 B`!)HG_= E;Xc(.-ȴeeeH@FE9c u]US^~:vvcoh?I7a1DXȺILuv^h8;/$Ս7ARtFЁx·ᄒ{HKѹ\_u QOVł'v&3:> LﮩHؘDOO뚪B'[厑H$=~6ͅ3\\} V5p<*zS-`dl7"|S(44ʢuA{{y>Mw5di\\g[cMShH'b.Od  mmm%3 hփ ..l6VXeeg@ E#eZi`@HݳXxX\o˟UA޹&n9[<^{{;8u1\\_rdDR 9m TalC֬`R̰kv|}Z㒇=g֬!Őp>u~'u1p s6xyyʒx_v.Z ,$hҸD::hj=)uKV`Dsxl22sU.h-a},\]}oV@4: AJtwAMmjjqJZb%% BJjFDG1Zի>ba7<=AFf.N)I72"BzF6*T^Dh~55powL:u1xb{{ok M023s7ߏ,33[61oO Z+f_EeSqMt;o s󉎡~\zMkKsfkFޜ]Y~Z2"~+'ȼ]&xg&s30;,w(;elD̟?WMLQ/_Oj[00`>%iG}j"B&WhE(Ӂ6@PV?ԣPT\<ޘ.fBdfQLJPNtYTp6kCk+= ABb Zt̬F`ExJCiY,q_}Cgf V:$$+PZRŗߠpi)d` =W")dgиݬk=d}IGqnR{>|}{d026mBj:q`gB 3rhVVsOE*(s AkOLE[zJ;Jf"td=8"@i ɲ PZVL"a & Vګא6Wנܾ݉?Jd` UӶU.X4Y ^Rjj) fffa:?f VrrϑUo )Wqd3¸,_;r+bY5Tk蕠 pRX˗ G&Wp8PB`E ~b Qo_܊Y]`mc`@XHx{7o6 Gޞ>$ *E%Z#L%~8tCxXZX`sKQ"؉IO}E-ezTՁ4Rca"FjI[n()|]r EC BCrf3ն>(p?%mk J{aff^}$AQ'}rnk= ϼs81?j ${9y:PN/\߽S./ġORH$ǟ|CV^_L%>-bϖ>MظS]\\ ~bSڒMߠ',yzįޣrU(wekHE(+h` t'ZG,fiJ .^Lp;Z(3@P8H ~‚9R}n =UI}}> i-GP.9)"< 6hk@cS ZZo:3033 |#LB9A]\]D2;wzz-[X,<'!TV]V e[Y5g,dFDpRlXXracm X[Ykm+KKXXZ ''ASo ,-`iipkl~ }Y'ޑPԄ0mA('o>,aiife5860 %PNS!Ӈޞ>m3Ms[2VZ6 x hmmCWg.]ٳʕqic(pDB)P(DsKnB˭66F<1^\_߀Ͼ8płUٽ66HITvA8{a̟W_‡§}pk:E 4E155믾'?kkk??܏!QgNmW_ӢՍ>܏r髆CoADD&cݻ7U`M1\sK:}״a£YaM!,\%̝;g_I6Ο?XDvMm|m #h`ia740 3vҩ_ fOVػe8H$G|Vzzz̦Bi9((,MmV='FgN? ~&'~/^h%1WT!pjoAkeCS3Ukb1^4կPCUA߻߯N`y?vVU]Lu"CuetBm")}f\3@/lʚgDo%̙*DHKQ[Bݦf$D+[CwwK\z]D32Ȥ3pSs rD2Z #х¢bE3;^8;-cAs-^к A~xg0n+P\= / dVndā x{{:X,FC Մ8066*X|)JKB,h77oVfB?֧+Zk&\9|}1o#պ944 |sa666H]5z*vn6>xYݐUA@{{D"/[:9sFnlTuooJJϠ,OV&h##o>9!O"ǀpOҁch͑sP\RNiªش!aZiw-Xwm̙6rǎI}B2 K5|tTRR.xN9O=qIm1 =#gUanMkg煈P5]]8Ih O9~ݻ=()-D,rZ6=X+nnl^D8st^尲Ğw!>666rNJFGs>-h(BrZȈGPPT設?UW.` cc !msӇHHJAk- FJ88 &6 p'+ u>q輠V.T_BdD‚:チ*>| HK֯ (QZVAZ)i/쒒rDEmcY,*8' 0m?_𢶀5#_S[~b nk :B)AK_~"ӈMڮ9&>HJJѻK >G9c;:ǿ# RRRjjχ`W^ywEp%|I±<LKE(-h`|WT\ʪ rKHKl"#c#һb4ܻO.CyAK (,(El,+OfV##8ebZ R_߀l%6~sRk戋1HUByޞ>R3Q^qN,ڂvR]}W._Ep?Gd]xEw~nH|d)lK%h+hx ~8WyeXt yĄ6˺AhHn#c$ *.prPڃւw6 EE刋om1DDx|}!HѽG <fO\d腠465}L* yfBBOLyK,\0qpqq&w>Ҳ՚3蕠GxB -[=+*qHifUaH`|UPXY钺;AKDHFIi9xQ[{ʱiXrr5f>8@NݺiVRzzzq!#>yrTk± 9.swC||$ Ywt )1.ת%RW׀w>cfvv?w0nnN3XGوaBMBQq7TN`ihljAqibr[*BP,,w+V#,l$0Ϝ5==}`-7ao?u=%0՟q׮Pam]|%S`<YPWO`MeniꤣR] #h<\u9 :AS>ANMZAͱu&RBǴNMZI̟89=ƍ&FD^WVE{Z`}7n\/<p)ȧuZ`BLL.>&tlmU(,,]6a&llh| MM-2&1Lf[M2ZA3 F 4`@+A3 F 4`@+A3 F 4`@+A3 F 4`@+A3 F 4`@+CIENDB`distrobox-1.8.1.2/docs/apple-touch-icon.svg000066400000000000000000000056421474517124600205400ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/000077500000000000000000000000001474517124600161435ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/404.png000066400000000000000000000011021474517124600171520ustar00rootroot00000000000000PNG  IHDRx)sRGBDeXIfMM*ix) IDATx=JAGm5BzQC k s/ ~ciPJf6!i;nylsj" " " " " " "9Zԭ6PLPa$#xZri} LRIp@]i>7s`ܩXYDoS ]{y6lwL֦\&9Z^[uR{6,lإɴR%؋ӱGy `!Awb3^,*c< {sbϻ՚oWEe,˚iΑ%vnd3;X |e}1wPLPadv,֯YOVo,m1Ien#&5?rcT~Vn۴@!IENDB`distrobox-1.8.1.2/docs/assets/brand/000077500000000000000000000000001474517124600172315ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/brand/distrobox-logo-guidelines.pdf000066400000000000000000006555331474517124600250460ustar00rootroot00000000000000%PDF-1.5 % 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x}k%q V;30 YYdI>ܮjVLwF_x1<$2r5TJM>TRsh?jLK?z~fr[_Ze~;wJ[Uu{<-ϥmuOfDM=ӚNZ8bͯW_-_A׏7wy )<~{o~k/TCGתbiyvmϦbޫvA^?=߾8j]w?}_˷/vrY|m=|ۇ.|~~n~vo./I*>'՚O55uKe˧w߷?>y@ͺ7Ԩ&rֻI|~xz|-ܵ߾9+{缐|j_޿û7xdD}z*ХھP66]cۊ9bmwis`F!ke5/W<\r DXsj6ËTJzܴq~~:k~]>6~C|t?১6n2:=uw?ۊծUO6dGޟ>Wo>yww/?~rz}FY/ܻm]Ԡsm):,j˞b[R_ӞVWk[W6?|fo=-462|1/rm+V3 7K?xTimsKS+]n=8 MmJ? =i-N'[SRxIhkdѤ}UPcIʦSw?>bFJ-GlM&B^J+S.kƎx1֣\}ߖ6g޿mSQu).tca؏߿9?`cyiO y:A{0?<Dշ}_߽ncp[iiemq+7~hB+5{GD1 udAq5Ҋr՗˚64ʑܽ )U|f/@W<ޯN+;8Z÷=RrwapkkN{žH|իWo_ (mlEU/>PS[?LFG= s!r 4YҲs[Sn fnC!]SGZJcذa$R続si#Q[=I"ycXme$}0#,+ PMS ImaNy*!1=;ˀ.iԕdrhjׅ.~os GjckOǶ Uke*Z)(4b 4x֋4sdez"(lY&aÖN)ҤSdKmP5$gRMgS t֊Q$ z.՞LK$ңTkT( UV6;=փ :tEh=nʘ8wd\ْWTltxSFC˩PRi2i^fӖi2}SQy8$ڜHս -$`;L>d(}l",2Z;x6n8a!Y(rÕV֧ٲĵe  Z9FVdR$`qO]X}hYKWɐVv-a\> ?5(yMnk1B[>C哞[ijFi{\w|'L7XgVgT03hgbk3ͭF2Ct/eZϨ`g 2c/b5 X4 2y>3Tg"o+|Ƨ1DggP3$3蹑4L(q3d3VT ҞtHjmo34 /|ϴgg0<C:( Z2sc=|3>W 79(: 6޸Ձ LO+$ңg ݁D3H{=C g^3& ЪA78e?Љg,|#gze\ Є; Ǒt',o3LG]6Uu>sU}тtDLtZ񍫌|"{~` Vτ=_[@Bb#mo3m33E=N`K]iel ?Lc{NW[W/3!OU %$lܣ{.A*%dBL{J`5$25ZA@mtkO0ZukO4Y{P!jڣi1ڣvkTۭ=*WOڣͻ87c(*홱G5܍=l1o)3܍={Ռ=8jbF`] ƥ{Xx鯃Pfi#أ:c֬?MQ9cCgiD cOiDmluX6mt74|س7Y`k7K KS*{0Sƞ&n CRM#KvbUJtGQ:tGe^=:5G=]{({ǵ^أnj=2GA7ڍ=m{Jc FC+ZJv}01({Ji{JIWƞ\7ycӀ!m} cO/{]IѧHS_0=R=0$SjmA=V}76xcxcL!mcO/{ V9zc6=XAK\؀[۲ƞ^7Г7`۪7zcOI_փH܊83hczdf#GjwHGH6g1tzd֣N# @-AzJ!ui(HG\Hz:H8TVzdѣf;XFDNv$=#G>#Gj;Rz#GjlGHIHO3IkzGj;R:H AHkVۑJQzd=ۑ#)=:َ#ݧ`;RzNvڎtT3n=HG:۶ڎt[z;=2ٌH ځ`#CyQ0T@g:Uۑ>f G>lGY&^mG:tz6GvzTː깧)َGv=vzd=ۑ#;Zuz(=#uzd#{ѣks(=RKQGq躨n;2~NzG1zN:"Ȟrn;Gj)#]mG#uzNvڎ:=RۑGwQ4j;HmGhGE1=cj *ZP:DWp4/}mxrYkϱ\zm'Xn^6zmH{ 6@D 0A`MƣmS7]ɖ#VK}mhL|ƙNQ861P.mBςe! `]j Z?X9HptB /um5]wֻ#)[Jzipv/%m\#*#]H-blY^w:yRMA}G2bUǶsdLfQi">WnQLo"flB&uƺXJͱ$=ԻQC0)jAXpE@^i i1&̒ymK<pfneIwːWwۂLbe(Qm+DM 30TtwZiZxD+i-xc{'D_Qd:;6+"J { J u8+6=ϳӘt3o+8 łXvo}rNd"vDM@) ee4>#4^M:;_ZZb=*۞O1S-iWܫ C c5{,Q z4=]+;q+*mM;Պ5}fr9XlYBsm~ a!Q;!%+_l{J`YF)+BRy@@fe:bEGJf9b_vCsY-tde!iXd:C*ɤi4g 3DxHT)!Ϡ;ٻgqE$ԋ8vې;zA'v.IኅzԢ%K`'?[18vBXZdXP)D\e6rx tY_[pॎ@{}&6ʝi SML՘3ET9]+P#ְz٥gaN7h0 *.m/ܲ앬xt3,!>S<1hm1;8+4^z6SlJMgq2_2tQkY~78;p*!ABΧ{K`FAP@@xDG`$!i͌`N;=SEKaM d^PyJ#Zm:; F1MHνdi$pzmiNIAg1 YZx @a*d@iL0\f>+$I1ߒ^|zfW<8B]Lֵ X9*"'3 0Xu͞ qv܇qӂ o Q>YӋWsU?$Y/8HY1!iJsY%ıHTqجG~F͏m-)_ֳ% UZ2bib^Jb^F=OMC VȢKh^;1VC[I}e69^صxf2y[P}[;peh[pL\ buAgezBO.L?4+pٷT|•%șFv>_x0 }J逽FDmVrS⡍Lh)QE]*3ɖ1>D Sd()I2$;ʾS]Z+201ʓjs9>!0K ѩH7:{6<ܘ<ބHi|2UKt ]Gև·vRt7,5~X<Ǎ0EK&iVi~'xQA橕j ˏf2E9H1==xQ6LW5uIE~Ȼc`C޶FV;ǎű1txLs⪆ĕ{.ް4C&ylj}UE(ӂ{N/?Nv-F(—bi,ŹL{VTҠVjKVFyv!^d>AO^"BBȪ/t@DAĬgF}( Іޡ,vS$ Z2WyoF.z62 t”XCpe`UM$` RƱ#4=2y:#&̒^_Q"@+4JJ49:C;9%{m0ugprzc?6f>ɉG_'[K "uAqUC5)!E lK=)Ź2izmt/"Cry׍p7vpz__c#ݪ/~ta/L%/#H6Gkir_@5ktb;s 0YAŸ*_hzt %_bU~ pp(Acdt_dx_'ɓ~2{R>RW؍AS`pf_|ڹ_/@ /tt_Nr_7z]Λ+et_q/ a/ _ftA8Bzp_/pՃ AIX/Ak-~@net!tFJ#gbKՅSv.N_d4_N"u7`p9_=G_#ɨjg4FLSa_1+& \;@GAǰ_@O//1LHhMS#qu{C9 _NrB*? r`U?6zt9H=.bUmpŘe#r&몗,/prYurQ܎<bj_D /4bp9_띱^0{zWK|mt]53hc֘/%0"1r_ݵF39P3?*+6bٵ6@8gVa4؄W8ڂ"GI< QklJ|Iz =h$~#_AFìA>&XrsTy]omѯh(YSdeV~ZK4ԲU$7&Ρ b<̈#l&_(@Ķp.ͱ94ʠ%pc2,"M\zxm+Yg&Q *DV9DHl [ 84,+I{|eF.AI66u9orzi.sGViz8,GrDutp8 i)($hI7ƙI8#ֆ6' $8K$?idԈզ+$y aݭnvyp"G.|wn-4 i e&YNc>,8/#ܸca(mOR|طK|/x Jȷ&LИT!q|ꇂO wב@ݫ2+ ig'$%M=qAhꮫw,=ƶn?^1uN Qh'6gH/z I(VJY-ڈ/n*JxC3l(,Ix0I)&E'c›Ɛ 6Gޑ*a 1Fa?2Q˲HT+BR!;A.hVȟqCY%3T\~3}l+#ƹa`h(ޱ$KZ,ai#$$(6>eb|KVO f9"V,TJ폲¾(</ɽ` Dm7ҹ)30NJR y[9<ynbo|Go_^ $_ܽ<ίm;??l_xE,qn|/2˲}/j/|.>+ )m0}u@ݙOo޽pUwsˇ}Ǐ+|)嚶p7 ?}N|cB?{YSKÖ?̇_V9Jξ/?~^HQձƟ _rK/5lC$* KxOnoS :bB1?/_7V~/dӌѬvXYs[xl~~ouJkJ:]UY69Sos#p~N=ͯm] (=.U 'ŲgAF(¡9N` t| !m"$z$ 8-bp1pKDF;+Rs P* ,mVD#b/4QMW.P4ϒ],ղDRY$R"Mu,GK$DЃ_c=SXDix> NH!H~0Dpmkg >fk9a[1ҙ yo2U_SZ&Y$YH E1"4Hs:rP!u8:WeԺ詘ϊ:#&TR5qםN`ƾIU΀I3DWHs+B6t~'͑\8UDMjl`>z/qNdȺM,="gUMBɒsfzƕrv߆?)E:&)q->SJUrai1eM4NH7M֟ަNj MPAYįd ǟ'"hэ+AK6:(x3F< 8q#Gގu/ƒd0Q8ԶWOXXk4$y:$} OUtz;*3DM+Hw^o UQ <xy\1b0LQ Q%c#][`Di=BP\7,(J{*GNq<9LvKHppF߱/] >bڠĂ Mž:Z{]Q5 F^M 8ٞ){ yIPKoDh;f!8֋; T+|J"8}zL:(T1KVͫX4KҀ9w@wq(JNQS=EJ$Qd&t/],AwɞC %SsOܾ=(J~;:=P:X7$(Ek?@D+? @LϽXi RYՐ&klt%e9yg3a4KA?A&zh&|.fvV:!߈Iw| J,ќx>j&K 2p.L}lğwm~@ӛ./Rў-_}lnslp̝& .,ur9P$ں$n;q \PrӁM>Y*@ 28;U5pDU`O{l^Kf#|FuI(=rVLSz#kHTCL@14GK| +; ,|Ft /|!pY-.O䫒Ȟ!gb`W3\pR&9mX['Ljwr;RE6H$I=htb'Hb   nHD4]ZէB[qj' \=i!Y L3RlR~cYtHAs{^"eKć 6W]pu? -Em)XX| {:͗bーUZ}6w2{:ӥ&ydᲶ?Ҏ,I[ GIT'Z{C2H#J{" nT?Q` i"D_%_Z뜋0Bu>݌ObkoXOy~G| x/o+0NCT٨8eUCO+ʣ*xyS*͢3d]CHSr<2X ӌנi!!ݨD9AiJrA}ş%"Mhww\w4sGx\ L4_}6oDK[ AG)NHoX~p]?/`fDtM%pd2s`P*}|UԗI{Y1h<_"-w_Bt_Y| 2*_꿕/RhʗNǗDΗPKt}K87/K=|KZ`KReK*UK%:ұWpKKAת|)˯%%_ %Qs|#/Y/ѥvǗH/A!#_9_2%L%+|o8t!eZF"|ɧ9/Y@| cKDqv_4[}O|IΗ貋KZoK*%/v|A>[ƝfKH{2%1%9yǗzZ"/uQ0TRK*ZK8`<%/%C/yϗ*/ml+a L=ala2Sk'=kYNG00u|N#c r L=&C:a iN Qzw[,#J}$Lq(,E? zd$L} u SHA#Al0qO(RΑ0]ȬUh+y)@&u".<-SSAE;waC/ nR1m=Qg*[ާKGVwݴFJTd .64nIMB?pHI0hqJEd+ t/Mw6T';tՉvر_Ma4(i?(8leZ u$6x%lJIz +\M@yE(r <SJmZ-T>"8&کt\ )|>~g!6Z&ss |WͬQ΂zR;FLR/^^ wH8#nĵ-B[tMWe5[t_|&G4.hn-4XAC)Sk ͨVJ/QgYbxռvqJ7ϥC֊&)ee#jYwH>鷉6$]Koaq6@FL}h ie:/ؘzA(*yW%=:R# `;Lvyefch6yẠ4UqԉƆrfKR Mi&b?wg~5>ly~;")Fsb[Gn{lO7@X$J8*5*'[2,)Q0]q]c)@[]DFz8q9 =c0%@2͂/,ˇp\?ʽڧ#j"U,7کm$*z'l&_8a2 endstream endobj 5 0 obj 14728 endobj 3 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> /s9 9 0 R >> /Shading << /sh8 8 0 R >> /XObject << /x11 11 0 R /x12 12 0 R >> /Font << /f-0-0 6 0 R /f-1-0 7 0 R /f-2-0 10 0 R /f-1-1 13 0 R /f-3-0 14 0 R >> >> endobj 2 0 obj << /Type /Page % 1 /Parent 1 0 R /MediaBox [ 0 0 595.275591 1683.779528 ] /Contents 4 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 3 0 R >> endobj 15 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 0.870588 0.866667 0.854902 ] /C1 [ 0.752941 0.74902 0.737255 ] /N 1 >> endobj 16 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 0 ] /C1 [ 1 ] /N 1 >> endobj 8 0 obj << /ShadingType 3 /ColorSpace /DeviceRGB /Coords [ 141.155197 -17.163157 0 141.155197 -17.163157 36.115623 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 15 0 R >> endobj 17 0 obj << /ShadingType 3 /ColorSpace /DeviceGray /Coords [ 141.155197 -17.163157 0 141.155197 -17.163157 36.115623 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 16 0 R >> endobj 18 0 obj << /Length 19 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [ 119.520461 -58.807553 162.737498 -15.612785 ] /Resources << /ExtGState << /a0 << /ca 1 /CA 1 >> >> /Shading << /sh17 17 0 R >> >> /Group << /Type /Group /S /Transparency /I true /CS /DeviceGray >> >> stream xO4PH/V/04W($R endstream endobj 19 0 obj 24 endobj 20 0 obj << /Type /Mask /S /Luminosity /G 18 0 R >> endobj 9 0 obj << /Type /ExtGState /SMask 20 0 R /ca 1 /CA 1 /AIS false >> endobj 11 0 obj << /Length 22 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 596 1684 ] /Resources 21 0 R >> stream x%10 {>X=pa1i|r[\Fap/9D99TqnxMno ]z %+°h\7)j)E endstream endobj 22 0 obj 99 endobj 21 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /XObject << /x23 23 0 R >> >> endobj 12 0 obj << /Length 25 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 596 1684 ] /Resources 24 0 R >> stream x-10{~ |>l\Q# "ijwG{I%ʈKx{LZB 3NiZd6Jy`dzȰ(eL/yY endstream endobj 25 0 obj 101 endobj 24 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /XObject << /x26 26 0 R >> >> endobj 23 0 obj << /Length 27 0 R /Type /XObject /Subtype /Image /Width 640 /Height 960 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 /Filter /DCTDecode >> stream JFIFHHICC_PROFILE lcmsmntrRGB XYZ )9acspAPPL-lcms desc^cprt\ wtpthbkpt|rXYZgXYZbXYZrTRC@gTRC@bTRC@descc2textIXXYZ -XYZ 3XYZ o8XYZ bXYZ $curvck ?Q4!)2;FQw]kpz|i}0    ##*%%*525EE\    ##*%%*525EE\"6  =eϓfnY@0 :))%Yn9;J5I83ԛNʠ,:TeyܻoMbנ{W,!{/QE3/;z^u+.: $@buKm(euBZj.Dh01Z'hjAD{FoSrD%Y(OU.s T컍"}iref6.Y(f妓~ٸat~ݳUǏ#s;='h;g RHwދBuOMC$AM8RT(6!.mFi$UQEƁX0)sy9Df0J!ѕDs9mZBEXHJG fAhpIiTnpo=ͺ~}?lk7NkU[e-']^V5*bTGUGNJH!0'EiTqB\M PNZd5 %r@0ֶ]d 3\-j,93K2ZYF%$}%֓#$rC(㛶o=='_ۿ'wO^o|*5sV *T7i$V!iY4 exU1Ѩ!q@]1#,k2GFcdkLķd- ;:#K 39 p<,\qf&jOr5KlaR[: ~ZOnO_W8xU) } KWIέsY7QU{S.f\be` /U#J[]1^P,=Lq̞nl,&Q5rjQ ܤ=mdB%61%gDN)$:VWf.0.{ZHoן_5͟AyWK2Xa*URRWfRT@YA+P )4XQ*޷"Vn Fap4mMf&zЙ9Nr Bl kgZb9 {sc6Yum Ze7\WY|E~# 0iN}N/KQYr V%K"]Ł*tFj*5TTZpueTr0r$66acDVD $h$/$ܔd4Q &RP4%pÑ>WdϹ~3Euw;*9}?{_/[=<~6yޯ*ӪP6RK$- ŖeΗ+srL3dg 9i3f&$ ef&DrܛC=r#.06Y:x/T- bl!4Q<ɴ(Iܕe|:_􁿖c? ƟGn)Z`Td xk4`"ꫯ+E 0˯c6}3N M .lTZ(NZ IA"q'cr[&-\ 8 ]^3`Epw-&H(3h.aT_Zc/}qDaNc"SdhV  ݇ Kes9<f "jˆZ@`t] e2`vr w(d>`no=KN*v*Nr*4|Vw]]aTv"Il78Fv \Z`Mlr $gbA BwHndkmPΚ\ⳝUh*َ2 R"֚O3?Rk=o4sɎo{9.v$Ɍ9еVT@epCBκ*N.\@hfX~zpfmc4h 1qM0u9 D529b(0hMցV3I&.54mɀKSszV`:?U^}_Gy _WЈ*KGF@-YiZڡ^J(֜'AK[v ңP3mVS`LW3\mK8[fpkh4V(NWڧqō;Fjl4l~}*%rtη-ݯ>Iγ)}]WRVa/yO?x˜ύUugSUwaMP'0|68IXpbyxvTن"C+`tLeIo{g q۳~Q56|XQ=.Vǯx|5Cr|aN:Ӭ,;+`2t~_\Ϧ+cW踿ZZ_/ߓ?2CW>3RˆOb3YVĵ+Xl x>Kغ%ĕ~VݛuֲVhK i@œTv,U)ّZ}hCl]DeWyKpͦw\Gw<_oR%Ge4YI>KRm5>)Iy.Ԟm+?'_:| ok}WUfqZTB hH^LSgt<+.뒸nQ[Ru RmK*&6.v[-F{N45Yˮ|QsJiyEu 3fkLo"}I]z 2XKpW \?OCn9-'/9Fߟ*}ǔQo.gF zGOz.6tl韫x(rCih/Z[GZtz̼米өuՄFz9Z^(Q:q^o~yYu2x*Hث,ԸT^U]=ORCf4ֶ cl+ >˿/im/j𛱫5½zo3KezDIv|sƠ!e)V9Tj(bsAi2έyQtzs%ԎqG%  8mrOUNU!kYX zy S/ݔ 3V`lզjϿ=/KB^i=V; __CZ'ԭOsukIe}%v ;SYpM}$9~NԢXl_Ժ 2~XT6z9.dHDj#n9֯k!OŽŀ\Az)_9Gng*UY [WH i:,2eazq)]ɌP@뽟H7_ο~i'U;7]xQEfn*;i'RR֥1Wx5S՗`@A2 plvRlmmJEeiT|_%i0kʕH y}li\@'fy0S 6L2F5F{GkPӯQp?kMSiDq?{c~,Y5tҭs hZ6"dX}P08'%(iAz{Rݩ؃-Emiw!M Df.Bȓ`aH~ *Q] AXI+. JM ,p"`i @Y@\XA E+P`llo.9 :k4qC vPYe`[$9DSd{Pôp4&K5h `71˂(`OZN!=YYRݼ T HOp58ΈEsD Ўi/4'5uCrP["g좎J=QG;a2w*6Q#eoI"̅* @D"L8@'!H%`0TQ'g] .T=l&I!9E f`nQQ&@H @3 @b%OCrH䬔`K4biJܿr$SK?9?9_fo|=2GPՓ"E-&!"'E cAr>}Hs\`ƈXs22"L3Jo[*Br IԖC!ৃFl&P|W(cQQnqKZ9 G ,'CSҟ8s 9D,&00ض A 9 6=K^YГ`4)eT\2OtB6[ ͉j3 d @Xdb4G3-:hb$G<5*E[fkA?{rp'. &*yH|; (=L[]h  S%bE GdXP| ۞BB@VR;1Ty)0flxh6XiQ#,rImm1WDW_/?R :(J M}JĦH E:Pu; zmnx`0&L.6!M(HU2uOlkir0s~R@U?D&.'C7ή.\5XqK$9ŒɐJc:Z`,VbO"nWAK1H&P-$O#.(>hgIl1d'v*@ ImT&Q6Fy %fUm!B*ҕyGx9ltFp~E1H(7 M]5h E3Xdu[jڻiNLcbuũ~J8ػG}jV]Fc;#p9U2h5.)d3֙jdѧzx߃䆾dͿ!zY9VkLXءcAdjve^\f!#4M(9Nm*bm1e+C^슨VH=BWAFcD.vХP n-&@ӌ_t\mQ9z?Hn˩ZS_%_ 0tقQHp _]!439+g٨ jH&Gmd˳tM`FMHY݌c`y"H@zCbdajD4 *!>KJ*utTVy~)uӟK=çܒf9kSUZ134_e*"i{԰5,oY,#(FbA#FR3LH.QG3(fy6}8̜ j jzg>G%nSt6ͧ߯1V'=ocMex[wlDcq M`DD [+f@sbdPbQzL҉1p$d34,]U&,NF2Vm:XRۂ.R=[N}w+whEs͜6~[[h@Y0B$ei69@ U! M Zd0'!C  RҌސ:6PH -n̜ƴ'Q>@}nU\[asdҖ7EmKfˢ 8R돝?:?>3Tq_ҿyi.qK-! VMvUD& 060GF`TOnalk@Ak-CbWQ$aRTWuGɏj9p\{6Ng.1f-zrJV mF*\5f+i֫lQOqU)қ^:sqR}L<\«|n&qwc'WUgMt\<\CxAp}Yx_wyЋ}bH[cC.W1n' P?W;Kp?UT;k_AeoHjg?/dhcY7cbV5{aUe%@-W0uZtS1v6b{}+L4+|7v[QYyJNos/Kp.GP$\ E]9uV;"IY@w`^=v>"$O/3?{ ?ok >5s_ɂܓRa/(E6wiA7Siz{BSﮙ:dϧ6k8|s￉xOQ9:'XIC+u(w6&UoQ3BLǯ{I 9雛ϝ/-O/=ÙIPFaDJ(2]û|/Ӌ&ՋAYB 7TIvsQg{o{λe~cC旈ggǎ./9yN4q1#7m_^-m&p4ltW¦--C7egIVM#?:=?C|__PwY|3q~>%fZ׉MFPN$ Je*wD-i9|ϩ|ZN?G}| ?R^o6nh > Za~z5<;LU5z_VyGz\ʵ`)4@WUoETby* )YFkuy0k#M%o#,żٛ"Z k4E Rk#,=dũJ`oyg!zVgo?}Mx~}/U}?w>c^0yN?Oy_-~:t_qWEĝYPi$ZԘ9;GC,ymTe—WxwRj) 0@Pp8#$'EcdGl !56豤[r<TUW\Q=(8pS D??]xy cbNRr{hUr 8iB g }ek,qb ESDG9SG# BMI1z p(Rs ]!{GG(!9'UAC`tnؒxOnr9ȧ1hUH_ž@+h @n֥4]<2>Odr("9hc+`j ` (rLL0_>3dm"Ѽje"ؚws5qآ *lփC - #$chr(,,ENk[ҫҮA|3^Jvq(k^(9y*ܨ@r9$*C@RE al2xܿJ,si09!]zA8)4&ZeFٽ -<9ĹQKI C@=vɃ?|=H9Ĺ(q(z)!Cټ0 ~ xdSSAHQ$QVFjhC!T9o55?_>}&D8ۤN$Q%V>&k"P Uf |HY"qsYSN*qDV N8Zi'o7^ 8K( H<Tja9`XdEf<MEQ#z0!4*O\c}qWHbR%9j *r=) :֦孮9|'_3sU]TBw($ l+Rsj*Cp\+0~$8V76cբJ%ǭx(prG7A^5!A&Q>7y9cf)Y'H*UZSaEj8W4* alQx8h?VZ\ҏ62*҃@@ld -#)>;ןc /OE9e֬?mH+ 76!WQsYN -tq:@)QNNnR[ynpj h+cU*f M Gk˯7pf˓Hk6J@]݅{\9mn(^8l# vo3%iT5rssuUHz8Ljq˘6ՙhѫF34ǍŝiNicFB-:V`Eѹ8s؂,;bZŰCDTqr猪)ȢҊ!] -q]8UFqxCV8s9f5PV\v5È2#snAD'Zp8AZ8Hc_uk[&Xjj4߉yF}euAtEK>AC_pN3pI`lB{H׎5A[]- 6_p|4/g+qsB%99TP@ ⪪#s$ dBɌHEZ֗^|;2?&b!sv۟$PUAP 7VTkuGY~>Mv9B`7lttk? cI)_$7K5y7րp @::\<\2 nոy|IO⼾Z<dDoLP6AP5- )ʈc1;Ociܟܡ8H{ E!ѬCUAk@Pn#ơ['NZ3]>2|y1|/𹚖MQEg̠kU 5EX#@TTXFdh#cD`v;scɏ&;H$0N݆R4( ,kB8 cC@74 E M;adMW)l8= &kЩ5TcAjkZ\17KX#8n8Zcf>a##\It7D1r`Ҙ P"@1655FkDmw@"Rbt(DLֹ!ZF}}Ex~<Ɵ'|lyCb1:3,1jkX#XMm05Z05amcNhkZaylx Mis2Hd̞) y |XNИYԚh km 441ctG1H*X{kTXHljDXǚ|O ]IPMTB=tD1c@ VpTF_R0&G4)z2u+gE 74xt=.c5Q @5kEF׵ku``` laTaj@0PkPPjkhS@J$xX a0u] к&Aq"1|E[<9|ncjoSK^ڕ>v_==L',n1i-֪֡ihI4k$ofdYyS:9bL dx5jEx7;û1QNE9OR8<5kXMtրAZ#H-ֻFPˇ,Oa}ظ/~y"1î\SNE9ZS Ԩ AѠP:l<:1kk^A _b}xfA.#uoyv-!Ez ,?K$#򵭍Z&IhvsjdM^'O=q|˥stŶӏ||~? =U~@QUj)AlHD؄tӣ c7 QoQCE9URu M jsALU@u9bt"qDU5M tG;`fU3@*ԁ qv]T9(":ZdlP̼d($\O͢E1UʽC9 hcx,k#EKG78|@o5U#[v165 ձ8N]RTqw|6b ک& B ~sW~'or峟|UT@5a.je0yvO?|O>B+nUߣUqZWVq; @dֵJR}/֭^oپīUai{ߥ]b!7/߰Lf--}>k.:^+AV}~Z_1w #_~DpK}8 0GAOH fFG;;$|J"YU7Xg ?羃'Ʊo՟xO_d/CF?UɊÁT)RFCQ'1]~#H~gЬ@,F?渞/}/o~)>>e{^Mj8#0[Y?NUUlTXZ7LbX6f|'*>wye3d-hq\c]%yď3>oӐ />w㾥f&Mnoݛmw{m [ nwo9|l~xԟM~Mv][ٛ+HMQ,7?%Jɡ("ݬ}̆] ~x<|Ŷ#~ٶ֮i>v=HͪZ 6& ,إkÑNΪM LOoəř 9!H$|/іGP-K|<?!"(992KstVb)"{ =>fqxr(re2_>z߰]v|O2!.Oil"I(zPV%k.GW{ F&|U?^ ~,~4{Dݝ]֭7kHChM//Z\LSbɊg@YJKM?nw%}_1!֙vdXx&r j[rAࠏ%wd?,L;|3cl|RIO%* g;Q#o%O-_feo6$DXu?Ϊ]uֵT !1 "AQa02q#BR@br3$CS5DPcs%4ETdt?jkTJuTXN枆OPi,E?GqQ{{0PI3*S"]@W\@k\2וоn  Ay .Ҙ+qۧNE[)7HJFNe}EBz:o"' 1ۿ:[EYtLpO,C3eGD\zcOCfT6:;@V # j͇)[!blAp;uLQTLZݭ%eA!؉ҩp 䆓0ad6L7{3!D%HH@x!i^'9WweyT% n"M{ „t)/KGֆy䆮H]UJ6-y5RMh"P/euʛW2(P^K-4_ҡ*k:lD 5TFCeÚ 6WT⟣!sPBdF:x@6!@;?dUvꨅx'tA _.ҧbv (fjC~D|6\-]!+KX^NFa[)ZcdUhcNƼ[! m:"ZȪQEbac,^ x}؍@_hMm!?~?ꀴ&AT GrV6V~ÂST8 ?aao볬`t+0xCnhU٢iUE@IRLk% hqhAP􆏃o7' ΋XH^ JU JP"DQwAY'`*֋qTۑsX}uB UtFfEU ~ʛU=6\jrUؼǂ )nѐ|ncFiWWߘ..(׻.AZg۬eIdz*K"SuD0AEwC=X#?w cm.*J(V6iz퍊U@Qnқ!.|LBcK r'^FE^· ˢBUV\2;6ک=gW3DyMi(ns"x>+cBh߅zR ^z+P'IHP*BFvT*;Y1:lP0z\=8L46* G!:"3Y^mO)݂%keIA5S$\zJ(7H]isa2#8 б[kQi#:v*Qu# X]sNP.kCd$_QBbpGag/tMCqx DK+Ι&wO$y.MZ M[AXan9#ޠcpP10MY! |8'8E{H\Z|ADTsWMAq98ȓޝG WĭQrd\h=< !Gq ck\<†_ X8XH]Ex#9ך+Qrq'W>™s=L17lЩsސZ.(NueYoV<.TQK"/As[4H'Q!97U%W4YWʭV+wgy{4WdHkI^Fj %.VFՖVa[$jy1pt<H]4p_EMBm!"[d)]=m-kWWT*/TE=S4Ncj"4rxP_7ppȨ|DHom'NfҢ Kޫ@/Fe@f%iBM$Q:u'@ e٫#HʧT **!W7@s&bwkB.: :X %G !\8VnEÏPa_tpȨlLHQYOڢ4+&uȚ*+"N8v7)Ê ֓#غk[tM ! L+ /iHQ3xX ػ>ՌrEiS@*[ Ր@fUetvG$QGGRd6:̋JRU5TFvfh?9 8+ #ŁF?B:7x,(ḵèA i$UR-M!gI*9FU3BN{?INk҈ SaW})?rꋸH*ɭQ_p6jEʲ$c>'UD6?U۬%unâa ͥ y;0۔KdUoX&֜Q<'%N(w82zL=8C`~O};vY~ (V]$ fջ rx?* ʪ#]ZߐN*p-e^$IV讃0.4Q0:JPIh5-Xz+vUH*VO4'K˕W6+m+Y0Л[Z\iiHQzmww^VˍVP#SSsK 41ev3jl>C~wP1(h(\^*fyi.NT '9U<hTOV]2ɫXUڴ!6ME5Lr(z!SZ9+ @dTe50 opGr\U4CϏt] 6'h$ PC~1*axD n >("F0[ U(UPAkhժkW'ܜjy yҲͶHiZi#[QDr5Ei!T*x>&^kELWY#Y-H꣱kYtA@b"o4সF&؁EXQ],&VEً|V ӑA*.!V Oyd>6)EÒV/[f%DeݶҴJPb$)uUMu(n,)uVEhiQt{&UǏTyT> ҩNym "S:{6PfjW6VG;H QA}' /ei[`U@i'u?H9}*=eYoҭL ݭi= #"|]+DJ%]rAm*O8rՖJ_%ees$6C(:(BZb 0Ga]P,G4+Y9"]"J.ft- x'W4fJs͓!2Gw+QDk,w-o-՚l% #+''AdKEdrN9:"'ӞkX#(hVATb9BUͶHq C4+QSbU]]^WUJ!ĢVs m!\ITN&2&)Ķڀt;w?! d%|BA/dZj K AQt:tE(2qFN售VO,~,|R*rW %8QºY!+!,`qj?|-VYE ϊ*ɵ*:66 睫pMO!E2%)Ä*{ `w)U]ITj\KyY~**u + x&oQD#UTt>!Bx/+*Qp}t JHY3TRƂZfpL^d 凎XЦC@ FH!D+"*V6*5[q5+!RՅImQIU+*5Xx*"\|P$rKPP +*il6@ CW`^ݕ eY}\Urge`p#!IUT$)#EZ*.[Egudk'fvPs98c$U9<.7$(@VFwJF+Jd2Cr*F3}8ЯWWDTGT9 R[ӯ)3U}P4Nov۲VsEu %sX09hOH)Eoe.㽜]%B܇\k_`+*5L樨/DKrY*wTnk)DWQ obtTE#UnҲVDڕb)5Edy"ChhkijQr<] Ui3U@W^'{VCg:]~*ʴB ʡu3hD#UU `*+!8-*4qpaE|3QkЪ[`ȊZU$d*SO ]cPrnY+*FT]HQ(QE2*6!6pPK۾!B%FŶ\mV^(ZXV%xY5 Z+ TRk*mVB3#5w+5WVJ?qikF|B Zq۲)Ը!ZKPWV1hѮixUM:LrAiąezWi^ik+U )N,#NWP4ju*A"ZTF4QDZZ4pG/4j!bn YRwfUd'q0 .Uk0zŨj yr[˧l!f{aTVWW^> vBV]$d ED^ԡeS+)myXfai=B;]iUϣMCP * Mjn.E+TCK o4 4]]Q6ꮝj7TFvV @PZm6 hd"q03c++*|QEc'ZB[53Z-ռ# ] &+P@9EުwuK|?bCs~ɸi('ycWgʨ<6ڵuVy}>+ (T7ruu֥H{bC-iAikaCr D5kD8hUAM<fLIυ#Th֭|R)ED?XabqԈߑAn|vƀVai*tQ u*!K9/QwETQY ϡaQKчnTgnR4T\I{$UsMǮB_TG4D [5c] sWƆ@XhpXǛweqL&/a1"j>jWzF ))oY5^ZEyd,)"LS>-GY40򺲼(ϩeZfjxV4Fe\؏XZ;欍Bj}ffWM'("2$x,@r9r: k@"3|@#dOPZjF׳~H|js1kzň#0'sP CZ=uNqi 5N444Zx*TVf@ DL'%@xq@0PjLɨ.r57g$N);b[@+xkBˑX_awΫNAF9<C'0oSX4^Ntb!8'Bj)0Aj25KwhC5@$3niu PlUV2ʼѡF[nHO5\ס )XqoxF*7S(s]UM=jt$9 z+wUJ#NG|V(e+r)ǺV; -ia_5q^SUn ծ$j&|gΡ^Ol 1{pL0|u8 3; W[Qj_4UfU귩J++!Mx(u JDK<{mZQHG0"$f&;KJW4FNpQ X6a >TZ{ᩥc&: j|A1`z=#u3"(U5}$3QKO^a1C:*PE@ Ѫ4P憠f16ֻ q"fh0+NPue>4+㿁7F?Z!AMlzxeGYBZkP( '{$5 y[Тx*DSm ?3!j24WDNI@]k"BTrAuA2MLOOH¦'q5 "?9qKMQ2[?\΋w$KDv]WH,QlJ!P\-bou'd6`SM&jʞOaȣŮ UK6O枈C(A}$GrV:Ɗ2yZteBl2P5gGÿEh<z}᪰Uwc"$JwH+atZ35Kh"3x"SE/9U (TMP( &LȎ+dgr@"llPo4Jd;*PfSzUE '"9Ԋ(5@";c&;*Er@HEN*<..LbB7O9E*rE4ES̮]گ`~$kkjsNA5'#S4NчjӇ86SDRBD';A ʉryؔvg S=EQˤZ&d\]rsMh2`~x9Eծ|+t )r$ss>s?Q=|B@@s 2xEmYXحRXX<6heM'?"֊ۉ$탲*t[TgL L {j 4?1=V/QW$|S[ަ|6CoHhSqXHhYxC4dasoʤKDb#p6!]a68L[qxv.IAlSb{#CQ9˞\PoՌl{0ڂ!sc~#aܓӓª9ɭ䜞w4kؠڲťII@lQ9˟׊(u]d7[vW3U[UYJS`;h˪!REڣ!1UYr%y\ET%t(B%Z&G#[ѣ@jҴ++Kt*+ :(T5(\몷$9U:onԄQ;Gf2Vu-R-՚U8@le}($Ljm2Y L \[boA䂽jJ(ꢊ@ e2VP.h (hE*d(*WJG lߵ$" եh*mAeyg &qvHnUQ@4 VhQeai[ct+,Н +啕եp\U,+J򲬊&VAvLL"(Q+L!Edes,GYUVFnYqW*CVFv!S`!* A HQFQ[;(9a-߬]Z+HU ++NלgʭJ}JuS5@-eoӵ%j#$Cb3 N|xeV8>쮯"UXYQYu2iv $Ҳ sFҲE $,BU@R f 돊FaJۿ\P+#SQERgE+lBʭ)L(T@:awh Z,開'ܴhmϹ`} 7ůc 6ZEƵh--(ˍ~GZM؈V5yһV&w(7љBBCX(UoDOJ/ܖ'R{g8_hH!T jjjo%tGEQ('O挩 jh.اrOJ}R{4$S()բfΒ;DmiIܓ(ӑ59ɼSP;OTO`_`GV#Q(w4}Ĩ]TE@T(>P0| $GIk so(( 'r i5_fpO 12!Қ7dv IܓzQ҈NQ}{*9䣞J-3X6Hl=6 3UY]]YuV!şebϮՋ'i~2$xkt^_c CCn!l]={\([hh KIiotB)ʙ,kCc?2+P?rx '{gFkjsQ.f{q@'rTEVcJs?bSLUtAUT:&z"PfU("T"3@7B|655->+w``[༸9G7z :.#oq>@/(b<򢏓{w&)P?ZħG098RNjH/5N7(&|@ZeDwc ʸ?Dy{1_D\F x"(į^рyN{'6yf9nUt.'q _ה^Pm a0 lO5U +B|Di1j!ݫw%i!"}duHHN9%)%D<wQkQ{G⢜Ćji"b/e*% .*U*Q6NY[d ( y9'(6M䲲%+#M)ȣ0ȗ$guUTjBEVk5bB-;]BE{FAPU@&Thњ)]dd{M v9(NX6!P rʏ?QhJ@Q2uZ\ࡇUYP"!Ut6P@('yYZe aFa*X`T* !zG 9VJݓtPt@%pGd 4F#T0!៭ !iQaoqO*4C]UY\W{`"%dPֲ"zH%3mS6*Ҳl ؍ q-- ujEawMjG*v-;UOT;ƋFwps@ ֛)rmhrMj5EfB :GFR[Cq GVPWTŦљXvfV(hՉވfeaely&5 QGݕ{KȄP;8)QSFmz*Ǫe~a07$h(()30) DQ9ED?(#4A Sb_@Q*Yx(g󁺍FaCT Eb(.!H!; +l~~ʿT{W/l( ,+[x`X ݿj" a&p*$J'M+rA౟пഇ,d!WpiۡoQWSQZP>8+H,iNs>(61rVu僭Z8SiB@ 6{BZ4-aZ+6R@BtUCrXpCZu PrXA&gИDz:4UV mtd(NG" Zbl<9e76Be_޴cX ]Acб{ъ'33 *b])!1AQaq @0?fYd|d}C2 -_iįnd='a_DdBޮq /Ő=Opiiw<txC8qzFX>$ѷ>&liKg<;o;/8C2CIߍݤFˑ4' ɏrmײ=10`,; >[ yyB*Be </6:w爍.դ CqorV !%v= D58$MV_e",#ߎxc^5n PZ^H HF mDk̘@_v1u3/Oc}wD18`9%s||@sI{eJ{p0g}˹p:prŁ&o%mO '#{C<wF f7{sAWlgg_FՍKcdѶaϭw_LdpbP0,?r۽@{ȮZgsؼ)cdm<abX-Ŗ@{pcP M.zI013c>W!;c'-34ݐd<1u&o}A%$@? c9{q=%vs-=لFxCI3mF&Aߔya36yTh؛a/VGX- H ۄ*j>wu4徬"[:|Y#f{Om_/Hx'pb^" " 㧇Vqi: =-\=\=DI q19ԅDYfgˎ12 ؖNO)5= 8~}b9[a:#~_Oz:T,uix0>c v3`2F-;;?&'{/>tHo={B 򏱖 /jv郶dz'&62 fpoy.Az}$x w,r{݉^mΥg:b#m%R?V-~L, llmcn0Ց lQ{ pHnShOe`l>@7[?莤i)$02 C7]ǻ5Psr^i 8rd>5|,;C%l0 !B3_!WKop۹ ˻X/$WU}2~s ] |l>8Ȏx`BW$](1n&R g_DyH]vU{>qvZ0i;-_ʽY]|/CV=[#|㮽ɢGs`a@s >{ݓy#ta~H0h,~[N/ply`#08}_xPo6\%+ wZ>pp~'.B oI6.Og?k3O&uە ;kXbga{ o-K!+51drRρ b j˸p# y#g;?̋/<% FG Wh!b6m8GO re$ xXn0p?Mw,ޓs=t^1_@3 >7 bȿls œ5zF@em5 0^!=hh>xzC;a.gft FeC5M/ū]vͲAKY]|pՊe$@0X_'k?SLK>}Ǡ[́۾ k9p6o#{w K=^eŶ GՌ:M^ՎpYe<0,6:.vϑ؃n9XI^`9#nBgqC&4\k/O@<\,N^KG|Ò0=[=rsԠӳ{n2F_ },do|zMd0}YBX;V-ixׯ ~;CA˄{AlF0ujX`3߯nIqx2b^m!1G;?/ۋ(1[kFLQ<}vn4 |([d>[}|O+ a /RE"> S`@K Ȏ"m8^O>=C8 BR`=Qnjc0sL\my;rɻ" 2NKtHW{aw%1  k"oZ}d^:HHCcKh;} y@X<Ɯ6w0>0>F-W&nOj9,=`eM~C|߮B v`g'v>W3\OY Wx}J~/=/Ne_1+"?:O@b}A3g̡3Iwe썐y8t-yxckKлy 霨"H'_wm ,-Zd9";Z0f {_%x<smw :g&K#D  cnj&W6N 3x@?i=4Xӭo6Ľ D;'`7{'ͬ4ـIlgF=? 8=po3K+m Ǖjku AW=Gv5R{r<, fwz`8v(j-_ Zcx%@r>ٸߘp1?#t0< ><)Y}\g \# ?c.Y%'O_Vu9}r #yoB|9]vvlnǞx >4f/}Ař=g"<Ňt`^0}3y#{:G NLMnk˟7}'JEiYAcr ӏ8</"-̼^fvp Ⱦ`?y\1lu;t>-1Ff[3e_x0fo8:RZay1WLCԫLCtop%7Ȥ܌BߒWdo^&̒X{-֣aeafNr4yq"iG/3=ى}! WHPe"n:s:  C6M#FxOQιYgݡ`78vچoq+J\#~=?_9qS2G2+J=ǯ^UL3?0g;33/^J.r`G}I90gyolNv Y|&@ԜPX56Ǚf@vڿ+;ps$<|.Fx܅v%F(<#@Cdi&cm(jϏx,oѺ?'xADPt}KL7n;#'@J7y_#qv?O^vwA>Q8\+.XZR&gDZrdY!ؐYn,Wo('M"/ bǁt |d91_Ht0X/zkfEwsofx ɇ/{넩X9zW6}>O훡m\y,fqM"Ga3şB`@OpclD'yƾ}00sz6!,`wXس?wԛT\26˵k~SA-GoXŖ-tt?2n~? d@M~g݆3'JtllƖb\A6퉓󥢞]?m"O >?rl|>ђ"8|~~31qxy -r9;2>V& ;Dﳤ(fa>%.exVyv{h(sܪP)r9|.t J##4xY 1Ă_c@<<݁~1#WG!4YzO9v@Бonp!jz 1<; `v \ĬG$'Z ̮.`s5`NC>"j'Ƕ$Z:bgzj=ЇT@t+|M=?1ƹn}>=!{d.xJ֎.?Q:`_q73??i`<_D*Ȕ =uoէ=#t{/nkӐd9'Smdq?xk\,@^KzFE 3$@9¿{݈x쿠{D݅&\~v d;F\,C-Mlߨwkj'd耧z}BG@ }Y<9ne`, = sͦ`-!yimXy5/vgqCwԩ y' 2M?[2Dos_Y =Xbr.C7OL5]$ d='j 7&&]WYŤm^rv?fqМI?,r}^1ˬ\M"`'bIaNylvPw\'bcд␨$ (b=X ;dW=A_&dx;$啕+4)>[{oƀ6O0u08]fj3M0_g޿b.VON3In|mxM/xͰ^l[c([snʙ%q"tr<̷ "laO,ː y #w? ̅4r0ykɮ:EG1`^xz]hK7 |}?Hܐg~51E#ϿGz[;1B!?.}YNw/-a`ƌtzQ{!&hi #lŢ!eo "yDyGǻ_2Ba-(9SH1F,|{0lF_ l{l9-3fWgvf!{kmKS?s^b7]Am7!=]?y>?݆}l~0V,cN}G>%.OxnfrOmy,:YDO|2Τy3O"áml6 wCs"*1&76"›:9q=~Ycg(adc#$-0و{Jь2;?fpA6Inr9zC Qv*.}L]EOpeŪjB wc%86ؼ{ {> _S8 m$WnqbczoS#7gmLo˙cz_w?Hssy{ܳ$㝝RMbZ"|F_aG}\+y ?y.ILy~'_֍7,sę`D7!.g һmyҎ8fvy"PrzY|y&\'o=cO[Ǘv|9i=}d:H98NC~7|þGp' dR3Y!. S{ \!wˠCuv*md:z/X<] |<}g7ݵI `0,ω^TG`eYC{7=q&6)n[<<\4[]ē닇 } W}Bb/rL?Jl#mCiwXMow[O8pGHM`^ps# &%fo ٔ1 OLˌ7 xl9p{1B(e 1- 7pyt^?Q hf[Z9S8My+1'7;~]ifsJɾOVzN3d~sßkf-d 5 ]1X>{,ˉ%+vù gpzgZEգ/^^Gy4dNwS/(BXq`:6A^y$=x|$o4FQi}b䙫ʊN&d;p}ý~7w~ۉzX+|=l!K_~QvXL 8^x}#_9#dîf}A^:ݐͲ<╪vP[H ۦ$]v@f?R0h7v0v7gn 3st^qYMj?ib-{}Mx_C';7@xJ'1{B>~G98B#bNNVJƄфȑ2LC3#>)F:Wc!0wm+lSo"Áho^!;pm @ xgrd8ɞ_>k_z?uFH׎:>G;}Û&molm믶`hG:b]~%OyncxOq`՗ؼs r?3ڴ$H/a&хaIQA/vqdeh~ x;;$ Bljm kWbHo\.0߆ر0mx|pXQ}^qޗ)G%Q"zܳ_g2۽cFr3ӻ;,;{󡿌oP'…>=L |z߸OFGՁ~Lp oCOC>?h@//,BN[A:lcU[ duMF|K[#w'  OΑ hѱN~c< &fD:!i@ؼN钡^8=Ѩww׌dchۭ;ac/lG/B?_ @w`d|#>+ўyыknw+{2#/1C>^!iy/`ߙi~7,9cϩVup8`p~yskdyAwL?u1\2 j7#m,Df,j#6x"e-wl(otǧẞ\w'qJ()\Ա<Bl-Ӛ^ܑz,8t2k W3_0sοZwbD~pώCFZK~8||}Ac$G̟d0| o#p[vB;ͼ[;F7l}Hn;u9;fcyutП_sklOԬ9.~=a} +?I~'{BwAAi; ܶ\GyoKqܦ+smgGy@aï}V k|z'ˢ `{7 z@C-0;?/G0,H3Ly]Vgq@"~~w<<&<:C6U~̜|JhfG@j`Zן$..BC[` v~? x+m}Z-~<.iFO8y=d񌿘ӎ߁ KZ>t^ZCKe%{{Xq$#7 '`q¦=izw7NXI gDC~;q@]?A#}:z~?ed ~CRxe.>~ yLyg$ 653$O?ȴȹKVs?vοW˞Ժ,5?OthylzrC{b>7$xɗ͇~X/^/6#U: l7)n5c49˙arfu/Ӆﻖ}HQ^T!{:+o!|)<:MJ?wH?ex@ ] }k Vkt~p'.uA\"gXyk r1N}åū4f .{2^aq1z| HsŇAoq?S?M&0r$|v2zmݦQ;~X{vl=-ݫЧ2%_ΟcwĜ˅ɳ@~ !kyؗxm %vEu7d2#u 7/(2Yop䓦=`͊  8߂k d`>[y q/#c͔PQW8H{6Űh;\Zb v,}[ky@߹\ ["=gz}>EmN8Jnm]bNF_~W2qvE7;Ֆn{tb;cg^ BN 9G̝9o?'---'E5 嗫KyyoX{P;Gp9 ŭ͋$h@^-Y߅oV>q]-#2>9%Hɰ͉?oL̼@].籏x|11[B<ٷ2f]~j< @sio\ckF5`3Լ%C`2WY-Kn-]~7-wJ'~b1.^>\HqA>6JOKmK_Ll,L[}"*oڍ?kga<, ydeЎYhVŶ [?+}{ߕd' U2uFDdWVt<cH_߂!C$&ʬago([o[p827Yafyx#Y.]cd/~m=6ZtlMtgݎy c~ ͺįQE@N?{LXy|OZ \?䏹M mCrimv]H2[/LWôVc ǹI ԓt԰gɶޤ/p{Ak)G aFbc>߃l;dW߂ս3/ݐgvP}ȭv0ߍ|l`>Vfj/P< kaq )d<7rbGD ը+߿A-!|0E*rG'i,rRy mZ2 cix`0wb62/ Dr:Piobs?ZnO% |l\Hߋv{>mb,|5xuݖ>ArϯՄz{a -޲+~ߍ"lEN[ wY^} K-#v>7nW|l~l}qŃ?r-z-<)]|ߖL!boa"x``|ˑ]|@pn? ُԶ'5>\ᶖ,|I8:O#lf}-%yS!8Hϋa,Y19_fArXpy=ir9aќ!h8h:Z,|=y\}m Ao-;4' n9NB(lr)s* |Zݫ՞}x.g^:؆xFNxۓ}XxL *,-d^ zԺ+a1:'&"g)F߅ά2<W ;^Jǘb]1}e rY1:Ĺ`@A6AGØ𳍜Kf4HŎ@v!0~% 'drejV[̲{ȹ^7ܦk!bk G>q(󒗄BK՘KK ˬ$Cpȶ䈽KL'Hym9 Y(D?S$v#l$#2\{y+mĨw/(B`;zlqAZLYea0s8c'[_2m\̟ 1_#㓰=@r O~cˢ [-> &h͒LCAG?Vk# -#2/(HdEFT8} iq_m l~+!fļl h5Q&FlɽLC1p-{aӐaLfۿwi܅$ď>4C5x^ezE_nZx ZY_dCNjţ < ҍY;˔o0pL)1kArĨ[vUT|l򱿐:uNξ+)e}٢X6xRx^-gI"ud߻m7B w~KθDr߸rSC0凈jm 7Ž>=唛4U%|5~,F=x`&Q狿=`N`mlc csdx͸m6zqLp>$<(< Ӟ)xcf#+K5DD0Okm;jҸ~0 Gf<6![ [qyMY哖y'|Z'!EBB$K SA0I#}^Y@r$;wmȶ>en[| w'ÿ~Z_/V?'"G\! =Lo?ѵZ1ݵo `INWS-XSnY3o|E9 >~["9k"r[oiP}g?^WZ|uS\wGH,=6~ [])C@]"|d?՞Y>2,C@x8A- ~ `^廌wRye?慿S *,wt蹚ݘϻG>#329'L ,1O}p0~#-vͺׁR7p{C*7m^l<@_c6igG}0~՟I /pG#?>D&>ITH`LzL6WoUyBy1[F}I~$-7@ğ 7dB+n$lCPp>C W3+>pqiHma@?G8˹ҺNO%oKwnjM1_k$qlFpu7;?Fՠݍ?]p`}VcsW MVzI.ؿ0|?/zs3f?r4g&.DnlϨAq}.X}:?/fF@9?xK՘H_dNy|"H~K+쳸m quy;LHoOg39ޑ*~}$}5}{mt`Ή;lծgJiƫ2W #?+ l}lO7ph (=ޏKJ_tpF^as{2p 3\~ LgntC#<{^"2_xU L,߄Hv2o)@p[?l폃yE8j'vuO xψ (>Jըo/(4x&d/z.Vp~=M-.tVf3Oԍ#ܟYRכIe6}2|½^]ٓ*ɻ'c/~l_'?F&|9a|{9N}A-<;lv'9/ %)=uqf݈&o#hA3`S9dŀsh0 bG6K$s}.|rr,~en ;ȳ'Ĩg˜o!$ĺ%!dy&Q#.ԋ zx^0^,`-g g3V, a]0oH˾! lX>pƨ;~nm3r,B|J7Լ{3sn:E|Ӱx/7`0"i2]m'H.>-Ga8u2y%׉3p^Vo$ MoQOŐ.kpH/f̀;r`,"-1;m䄗rm ƅo 10L#X<LZaM\OFHC>$%IOY*N= 7Fov%lQh_7pcĽ,o{i-;#P 1ərό=2%c g0.0EkQ߀ ጻ&X}-^HNyvg'5wG1LJ!틳1vILvH7/$,ۻzrZb^S(?m_][d)}alFږ +ek^=\kRKLxaanqxuaM d]dB#nz#,!߬VDҕU1ݐ8vccyhrM<c@OG>o)]kwy'.DK̹ooV 3ivD8q>2 U۞9pܱ!%ۯ)wLWa?%-[9,ܙpi0w,5y!|N)i"_~9YsoB$8ķ~N>R@? m%c)=@?/3f|`{u1J]~W䂾mo .Yg?zA?B?DT~f~S刈>uB τ&0,Zp8U}l]a-? wd,mO-&{~ϡG$f|$Ǧߍތz"$3l~nL"tp۸v? d(OUO=tJ^J-]C/6N!8#$ o2ze~2ɞmbO#߃ŶimoCe}#U9{;=~S^uԿ/Y/c-ƘVli_IdxvX{b em}ZZm<>%)d[ؗ;{Zlb`@µEz&Y?ZGwc249)`ts;H^,b q}=l>cV n[ۆ=`1d۷nݝ2Y?,Gd "d+W!Fr_U=~YfFoQz}ɘƱ ^Bf2l>2 ,>͛6lXdؿ 0@})r)D|O'ȡB ~^>,b/`B~laCHOt)j+(P#@G  3ѳȱCX?'Cȱy#  /L?yV\  #g؂|~B҃t(eĸ4y\>] _(0Nt'#%gijBGMO 4hӍ*>aIEȆ\a=2hx%ʤ} , Ȋ"J‹C/lcVTmIʀ FqDpc٪0;‰#m"&B $)--U6cȗ;  JD,c$D¡{dn %HDr$э &|&4 1$C-F6lx&[&c1=6nv{Aml (AB%Jۧ5F qN64Tt!}OӦn_WN. H uŬ ێݸp}t{}]P:ml_6@tcZuֈ]R@GI%IPm)X<ۧB%HK}rQ$ ӂ=E6;t#|omdQr6mmъ%KAiM9bVt g0V @N8K#B9`DCf==/p8O!,H78y|$!* S2Fg uLq#"H3!bDE1P9 9&BE!PͷHeMM0C$$:C _7}y1>'Ȇ~|8#q=gG|q$Ik0!01A @PQR2`aq"S?SUrI-ۡ IOׇFkU;;E/qj}N;pzO+W%-%G -V)ٸ8_KFpM)-˲)ō6Tdz`qkf)EIhHp?8֫QIP%gpiik7łz.D+B.4]|NIoٱ8-?NK? 4Э,ԳJFefVr[f:I8=$Qέ 8LSՓAJ*bN Bhn$7֡r)s/ U:e*C;Vܘtw!=ctOr"Dkl:t^E}*Y,w 5s͍vy+6JtLVuMxǯ+9F]̾LB 1x򳾢#^H9%f1;KЈ""$D"$}$|]/ c? !tIlۡ/\?d?2?޽VF)Q"Y"OK?y8"Za?kOb_%LfZKܫTڂ/K/ҿ"G.5Ȳ1wI T+Kcݑr*u!%t,gB'B-r+;&Kv"9W3 L 5܅NtTG$An-2OWz'y[^""H9E|D/eIeݐ5[Q Q{"O'   0@PCLX?@p#.0pb0Dq Ó0İybV a0 @|W>/pyJ)GJl = H‚x 8Hԥ/# Apz~B=`#/lrÏ#xd`}(_?j 弬pQAb8`0 )c-X8Pv2a aC#; iG{mloem6!-p0!9KqQE0D@D$0CYXK]WY  &%EW"ǧ㏤{?KfZ馺륪n=pFضsҒg*\D}׆H"n=!񷙠R"Qc]MVyӂ r%|` ֪% '<(MᛋZc)\[겢{ԁ˓``ذ3֢^@F3qSš`yU%M4y=H/ uP%Z#/GP|]#$%&=aYXȧhzA Qa(y[8 8+SNF\A 9x&{^K̮q !3EQNNEpyP!GV'K{?/drld$$zg?CKkCHVO?QS?aM{[ `\L"(!ZmD)V©?X" Mr-xcf"4;G⼦ h'Vn48ApLuZڂ̔5 !1B)ħ ,xTGG7d E`!Ŗn8Z Rr`d24+p 9lmjmwSС^aE\{/M[l"n'vrx'Qp@d endstream endobj 27 0 obj 55706 endobj 26 0 obj << /Length 28 0 R /Type /XObject /Subtype /Image /Width 640 /Height 960 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 /Filter /DCTDecode >> stream JFIFHHICC_PROFILE lcmsmntrRGB XYZ )9acspAPPL-lcms desc^cprt\ wtpthbkpt|rXYZgXYZbXYZrTRC@gTRC@bTRC@descc2textIXXYZ -XYZ 3XYZ o8XYZ bXYZ $curvck ?Q4!)2;FQw]kpz|i}0    ##*%%*525EE\    ##*%%*525EE\"4  ӏ egިOg燋o`6D8C.ɭ *K;wf`"#I.~w/ h=ʬwe\iqG ~?aג^NwRg9aeXK*f3J8(qMzb:yf.^aUѳ,D #ākwj\X=33;g{Qa6=&nDz8v'|Ig{P`sjty 3ܱ%%ߝߢ_sB1QRAmA?\9mdܔaGZ5<~xL< %sMnY0>i6gJŞtDF{طܿ"y5L|*PG{R誚(%`d h^qsYf `{ҥO/p⌢:c:ݶU= Xf-m ݲl/CvU$ 5]<]F66H۾k 𬞛4];nFτ|CQTSWQ g!DfoCQ>K1 ;rT%"] "5q:}>{0^t4UMNp D2 6kt/+>8n4{^eڨDhL: &#Q4VX+mkFO"dwZ6vpK o_ K=l%M$Űq!-b5=RXZ&iU.oY,`YugCm癡;Izt%KII 2)a=ޠD,3xWLr}YXg4u/nW{)ۅ=z ~i|B zH;p5/5s:1kC%4gշ(ق SJmZ,ЛHSb۹iȬ|feZUnj[.nawKlyGE[pkŐ[[ImBpihoXYU[uL:>/S>EQo5*dÆp_bXw׾lMnw? X~fRZRLf fMUkyD$wDmjbkβUC}igQYlrC曝뒖׿;]tfR!-D>ȻѸєQ Lȫ X1m<2\6uiX.eVmnwʜ![ Ђ3 @fӱKmKj-yalJSߒM pX F(oXH\Tܟ2=IEP^ ;ZJ<)4k5G;\$fck~8n;=oC3ƚrR'DQNg\]ivKHi`F׸|J]sXoর ϸw5u  ˎhVٛmҴDfpJWsGS-4c/!&ahk⍭7ݔ{v.q%#FN1όF3yg |0:FP#s+…l/qÐOsWLb̺qLap|al W#)x@&"9cb5D}yrޘd,FǖV=/3d|5.՚$5Y]7MAXCA춝L"LrL% ]aկFH |5zН&p@.AjtqT'~8[JC "i1nJc) z<p%G67!߸* oq0]rW]=n|E5}GUrF ۴LѴ TIVufUMP>."ٰ8:D |7S\kmYPCoʵ"0r?lL ZESuLڃy}\7%5}I֜Rw Y ,%ۦ\q21 NH݆e y`~yD!|2@l,=}{+-U!fO/ %cfT9;KI埧V}Z'@,M<8m6Qo:-65&1k (Ղ=?xv fwޒ \BkW#x[DC k\4Y5zZ%/tVɩv r//Gb.͙5}bs E>77C]?/%VAcb9uI[Eq>C3c OX@gvO΁ɂ@l7e_)|z<ж+b[O$xeZT\:$:QVB!u]9Y-v\*L}oi~hij,q5Uw,hmUNs){DlQ}(<˧eSOYET {lԭ\4 M]3m& 礭!:ra Zw&,KwaL}\m7OC 7Jg݉Kl|F;̜CPVkPn*S@K7m\݄YUՃ!XCM3iގw#GdO ͰIK>qlz&+M}HG}-"M2<*CYnİcWt[5s.p Ub [[VT_cLZzczjfVq X);stO`Ur`9JBj!&1;S-%ƭ7lu-Gl݊X3+$ڵNd\=rt@< wlhWЕ &y-U*Ibd-oih1Owx  ϳ^឵Ϭ,TY获Wv񮂧,͏pqj,VڙHW8QȭwfֻZRjKm]3ABz \ÉRfit# tkVOƉlνmƬUn_'p,s:ѪVgYSipubp]M~)ʈ fޯOAVѫeWK%aBRf$ +tlW5HYPYbHLCS;\^w՞@3 5{yN(Me_:hv>VY##n1we5?_jgYXk0f.^ovq3.K.!++[|D"'O,d&qoPߪߘ\ZXg@(iYEՏ8#=I#YrFI)4rW&/R:{bwɥ̮I3m1v& W7U\UfD=Ʋ GHb^!C? "k!)بzZ]v%j BjwCfdN< ΀B.qxւB^ jKLg~VXcwᭂ]OĴ)"PHw"Bժgeule6dfڡN F󁉹 ,#Pv@q'ן"4#B?3Ip+0X|@k |'iLL5zԎ.9 f8YXԥzR(2UтM\yJ<&5ʤ46YAͨǣ)r`؍\+[s(2X#ޚKN‘(vXu܎@0"^ ?dOC宔},Vfpdv|ÌVf#瓪=Ǚ>vōtOdHD4.=l ׯ*}]SgZEò1U_ AF!`j ;K!:KngsڎNnYWV^IW &Fؖ>pjrhf;:(=3>t$3[W5 gmͶk_J1#zY=Lammx; ce˙]]sY|cv-~O33LbX26)8CLj' D&IH+xqępst\ ,@Y2HnX(6׽ߕ]sPaK.F}T,y  <*;ُw4v 'H»ohtL-(q iXZm'3a;G6\ Ƴr (CVc;e^nI%eaԴmק3;([BQj![86rtŷ6rfZr=/i&#(4g`E5 +ψг;BՖӾol[[jh*n:=ukz]?OfՇ05k;?3ڈgW0c!g,:7Ժ|Mu^:q>nOqpV Nb!r`z/pB?['%mdWFP+b+}: Yd֦$u}۞Hv(uZۖ.AݲkK,e.r?acj {Ksj0aծ2-d,x+5EF"R<|9A2[Yw$V#7a n)Y1.)rMDlc iVoٜ3iۄ8IX[ {y,oc 넭ӧN,H*j?Q1 fTρc89l%-(vOq QGOh6߆tι1` H22kk+SZåW⢵Pa+v3+UI&2t 2G:Ь#<%b'Gc3KB1JF!)v({,!lq,|CFUŃ1J waJvh>F'^\8%E zwJ(LfU.t)Y50OV&Gn L>,_Y,N]s*[15?dowL[e0.z&phfElcHi T\5, ehY/YӃȋ#EYU{ΒJ4Y<=vTGh^.;ͨ}xwmC yyIm! R@_uif/xc 7"5^u}'1lqw18cMSj*g%R#O,܋#ǧ=Ph瀛_#&ҫeLr٣[3ͣZjUNz.- b;cB'lGzJe"cYO';3>+l \Gq hJ 1ula!E|; JV:y =I*Zr6)BKTpQ1@牎w&/28 I-[I6'gz:'ч05e@Nb9e@ޤ etEcn }LbthJ\c-:GZnKP_vmXKhPճa,' 6rf%Kځs,Q6sn, EصEncgWvA/oWzvyqd].q Wn1 UBish;-2Рj2Iݓ bV Sհ՘{_OPaTV5kY[ׅ.5>Tos ,LAV Dl|{%7yZjAx%tR 'XU"KJ\n&CցD>P"ϰQ1.5, fQXL  O&4f0r'MN˺K+'{D:+ *iLb2ǷȂsiaYBS1 ꏌ]6 hcmR]XN'0,g>=bϬ̡IW{^Ʈ ÞEع]CѲR[JvL*=B<|0K>5͡Swf dق k?(gejg\cAɐ8 Bsk kܵD3J?W$YYV: ~]]W@*ebxÞ=hp;OO؃ϛ>!DCVR:_8oQ:€rwvqKf $'`HM^}qj"I<3CBjW$-ȸ!*;u:a~/'ܘP~c#&W)'L =!ph[j#kO^$ɴRsn ¶fyyZ=A&(h;Dcs+ax);sl72Y%r%)hS4J-G勑2 r̈́ڕ&Z9K@9ASV[sC eLp۪yݓ j_1@jSUvŞxqts)b?C5v9^_౮7BmY)+)ݷ5O^S?jn'\xo&g ==Ky`*'Ĭ;Ɋ17<}b(5$\!0 84>^84+}9aF%ڽVL[4k'Dl#Ǒ+-tO yEҒa`+sx0/ 54:5ޑ<856髑ľ5;Ww*[`rC>wı|ȢRC[>\!he(JIKEw5fhgUl*w=1az2PX!>ɍW`礠(px4IcvY`=7M2\[/NrUpT@LɃ$Ոˁ3X\aM3k>]1ĵβ!0NW皚`O::C7Tګm"]-52}&k]{kzfLHy$f )GDQK/5c#zjś+ -\{?ϝ1xXY~YB̋3 <> Jwqwybg8ǿpZyo&[ABk& q(x +9jQuz y@YIǵtvMG 7#@[uq2fkei`ހ-= 6S׍|旡_G.vXf׷tArRF׋۞ʽdyi9pbn |.TpPֆ $:^3=g*;*Զz 5$SR?xP5+Ckae>eWm7j˰Sѹf`aqiR-᠊YEb°.+f' U3I$q~d/r./ 'L[cSuybDAF{RVUVйJfaS0nD(*6ez5gj?tcf tn3TLů,K1ul:V8՞aW*gJ/4ܑCu/Qu?=zp*ee-ؼ`BL2s4 cn0cF0L?!MNDT$`yw=3imw pyȔ}YrsqFa'sƤ|cXӃ`:Y8c&y18(d];lE %!"~ʱ&d# puq,HpL(*&rߊox p#DcrB#`dq̂r;Y 6&7Ić(o3[.[?;fG7Ha2U jF:\navlfv[Ә-9v6m21^{ک xDju݄EL4MJ|lbV1JYfv;k$Gu B4铄&gR+[<"ׇfũLvIЫO0 $,bj3홨dնvnURj0c6 -L A @%dR3tK@+@y c4+%uNWiT }?,\ƘG8Hɦul G[zxiRr:V-=k@yR.ZwږجX Tr.F;K/d0R^71fbޕM49]XeƄ>tW#B2o4? }LR_ݯM{IlrAZkLŴ6ML՚ṭ4*)1p",>]Cm5Jt@FPfȟmgq} tC蒏@c挲:ۯmܡ1U݂鍅0F ; geu*-zG9X[>ўߜq?/;!?ީBo}L_p۾Ԩw/^6nl+j59Ԍsu-- c6:\b)3W)haex',ۯB`|V޽穀uH뤒׎ '0¥c ƥ;s"۫ljf=E@WĒGyEot9tZtIzl~+52e70gXuMcW9Kie0`U0>Ġ'RBw-RyUՋ1}on]Kl|j͋fT.nτc%yw꒓lf'!/} {񼯶 c#t~{ͿZ?XGL,"$v ZJ][u=;vG6+-vsq6 IゎP%FYꌞ =NW_qhz^KYM?wc:fBi1V-:o'e>I3Ă+fYUg*C;~*cav`N<#};3-mH,jE+Cv:agzȁ^-n_ +$a"_wYgλ%ݡʿǑ= ʅ,r+/Z)}(X r`KnRc0ۨc-eBH /8-o7^ CZJ濚#|>۞~mo$J [v:6q@jPd?RTGD_|8hPYflSU5#t8Ϋ_4=0)Yrt%/q۞C|_`( ':8&2S`@)j^r~6 _nэG*$T 7&*RX4M鍠&.M U~vq 5 )t/\Ho[K[Qb?xO\ASh,%fԦ5J-46 ʒ|S1Z9-AA{QJ-p$m~. urUڝI;񎫠,GYuL1$ZO_w ѣg0m6v z>FkzLL4 L_XK.-_f~GKOz.SMlBeNN TjIRdo/P2,f[)v[.0r-5җ"J,TeÖOAtF9 5Fk{J%{ß躉 C&VČi6ޞAbˈfkQ _ě*4~A4M.u)bBӦ`3 irC pMQXz:{-YA;T|oBԢn]}(p[=aCa,3i;BoR/d1Ф:yX7/m`%2\ml;"Bx>˽S31{uL8F(Z2fƕ?M230H4J{A )/F}.f}W)elRUYU#}1=<:_ h'2zCdLl8JHZ ` ];R|PD!I˦iޅOfLF4W=iLQxQlrWu:}<= e*bIm#$t)"-rZ}vjTY o-n֢q=>E>B ytz0]37V޷#]ćT\QH$'-ΙşlԸEص6+HNiɚzq/rpNs@se$tا|O2A=<2?͑]ej+OW#~Ώ3 o/D켇q 'yPypTuD | 'ɨ.@5H:.ɥ4.m܅콗/.u"04p퍚д^t^O"2V/j,T g}:1kslBNIAIDϫ9/(4D^M8GPs&^roSy֣H{Fܴ>d>@T_ qfu]Kku)T`]ZkXp < ]rC}Jb]|gni܊&Q{a%YEGR.[aŖ&k׵rw +TE|:Dj 3B܉0En~X%>7VǏaZޠucYq uGyEWɢSS5TsWl!/[rYv/eR? "cL1&6L>NH/k mBC"mfmţRveœ 1hyA;/%wv~걳W!jLA{HlD!֭ Sy̞blB y}6jR.5F:{SM>ThW^ij%eejVC>I&j^;i@ OTՕTֆeśd\LdO!;v1#?x5Ai :z&CPmqQѰ7.e%S'dnW_bS ͫxZR]4hhO%9s@/|oy8Y&b7/}\/l0T27&<4%2 {" Hqx>Nh.HupIEOB|8BZN)"y넌K* qծ{yF i;$X# ?./aAM"sqڛ6=L=r%IvC?W^]#}"%:n\oD4D L0_5'.82%,M 1yeEl{aE1LrWz\h1Uj|֤qYkI0f25FZۘ?&2 (P~EFI^(ۃd$𨎑 `22X85/H.#/&4GPo?!KdJ)ɤʼwuoD$@IGan:Æ#NieW5ueh;Jٕ^%d^ +‡N_Q[ɗdbF0)奥DOE97$5)v-^0×,3 DyYO !3$43)6 }| Hk_^SdƐrGjd2rS D#'v`jb[YIpCS79ݮ]DS2+m[#jAMuDew*n\ QA2J .($8&%xqWS *L8fl8C\cQhmO'TȻ7q1.MfWUce& N>YQ5Ե3)qÉINwp0R Y$tOK'sQSNˌLwe$è?NUߝЯ2Yej3&NT3%!#24m,ɾALPfJ9P'Zufr3ވ$Pgя9mL 3ʮ%-4QZm&tdei JM4UV*lS_ }2xFF5vL3 ´gjC(Q3/ e[Cz4ph̍/\%'89u F$VErFl|ZUiuwvEIȬ^#.{001M2;GPGѼ4fi_mhAsM}:MIK{sv sˋę8qYyRffFUk\ #`Ȏ6IS>8.66:\͈bGMs1ۻIO2?\%%Ctyq kJ$D~<vZ?|t_j[v"0dfJSɟ'{6r3DCJOC &8qpr" ֗iܭF /)/iB2t" 42KqaO][ !TJ%a cFҋ\) fGKW&|Xq6p Eˆff/2 ?pxx( ;AhKAn+'mE+mK62y.l-uj*GDc_ν%K-'\t&G>Y[1,gu ponNz;dg
  • U\\@bLNxq/nIqNLDؑ0C~O @aN(P[ $jtNO%(0jFkCCyi|GĜNuW$u,3%3\lC$=[<γ$ms!Ţ٪F,oj'Kթ¬DvlmLS\](i݊C 2 m \rqm,\è6~Sեzwy%D Mx͑YC1a\$$!2:&g.:x{Q;5MLz)'%U sM洙cMt֬"GMNW&\^L \YV!P᩹BЉ}6I18bC8Zʖ7Τ52' @@Y}o|iX|x?'ʐg&uQ *͊ z:_DeOz#fȼ͘,l9l,gY|,ym jzk9sVo.=/uQ;QRM*a5bU5:r\uP.&zIJ9eB*Lg%9HV82w:G< Kc'&lxlM? zgaySjCrYW!{L2dcL--/Gәg5OHV(^ M!#17Yf[--kYE;qEQiuhCꑤ֗7ؘF\zk3O*|m! hi My3Iif3nMmU6΢9L?>4.\_{$gi_}؄aOHC)(o=t׆ob{V lXI$H~n%E_1/>_+aM(}EM8.H]byF[WnmN~iEegPRkN@8#(!/D33SmZ&MN1I(#I*;ąg0/[YEiu MR;YB6d #0}oěE#,ϗO c:2Ί-̋QZ&|~-y0A=\^/IhිHA\MpŽSȧQ`%?GZʒJY%PI6&xnfڇeñbIqۉs~/ k `a*îf>,R'Y?`hy}VbBfxY N]۩lBC2s&=DJS 0KwH!JrY{)3;{tClk[NUu[TW>H1_!/R O GXhlIms;4}ŕ&`u vӖO`R{ntV{y63&J0j <"5%(t^s0Qb]Z[nJZ9H#h#ͨ| NMA3ٺDd nG3CZV ȉ0GB} xLOQPT:kY]i1т$I!hGaM׽Xz$ECFPnB;x>") *hYJLxYZjgޭL4d!#Lj'rfsMSk վRԳYq%sB Z8࢑3&ͱx{_ٜ1coFĄ}lk#n<<%=ZQJ22dAo5 ly1Cq0fƓBٸ2fˆ=}Mwf'2:i{~v|G-8bI1r+ KO#=Y^ ɓTɽ@\ zř+Lud͘K,E灓OFܺ ;o1oGeQ4ؓI8җk0FD~(sw/GQ):2 t}dUHlƞyFAKJi9;# |d;jZg]9ͫGO/|922Jtiv6}i_ I [K/!#3}R 9(}7*'禝HjR/O߂3.bsklFtL]?RTXZKI^X]÷0$tjV_bBxVHF[3֮Ic_x9w3x|zZgҦ+e|==G0,t}cda|}݌d34߲/o/k'5qƛ<3 3%Ҭ feL]N1*!t26Yb58g뢂ä~[G/VfWKnDg\"aeˋKz{0n96|ϦNt$8M7!^,Qgh0QnfNy}%r%:C9'79OLoqq.6Q& Cz)%K[)V ũK.PIZdm/Y:,᥉K/f{DEqğKĢ ,53H5kB9m*}Ÿʩ09jArql1^o2N/lG\4udeHQl[jX/uR }RB^ҪB8*txӷO_Sauj%e;9^뫂MB٪y i+}o{xdm f߹euLh=)z Ok>?S'LԹ+eȃi9Ff[t5-*jLeom;RM$Ʉ==zJ8J~LJxەo$mFz/#n9qQ˜gk ^V 6K:ݙ:ލ=a{P[5x3"gbRO R&sifGCn/FiU+s[*$ҘS lZXZ }J(DyZO$)x4h]2u~!Ah^BHgRe*lE#2 ’#:ӦJzm;J\Z*MLl?qQ*jHC`G toljT`)h#]bT[K8%$-#*lh-B䫥3QzM m/ƕg+HXIlȌGA R [kȯ7\rQ GEQZŒ!i/!h:r;n~hO!>A6~~U $hd)oTm㢒t[wȲ)oGzӟI@ɍyڡI.B)0_ps/n&Rdb S}<'DV'-A 1z 2JC!SJ1 4^stsv2kuO i†QrL -tW#f;4‹IX$iA[_ H_&DFCT*,\KaZݥKvq s%H1f|c@duw"P n8 DgQv˜h1y)٤pIRr6qer_G2|?9>2pCD\D2M|#DX"NQ7 [a,R\=[(JؚalR (tw#l|isK$#'!ITJ|jx(KrrnɑVM0R(ܭK-%37LSFD$\nrJdY7$pM$xn5s{tQJ!i*Q,ھakBtڌ%^S̪JAD0 lXe#2ٟ+Z҄DR\orZg7-hq[Jц&8uU3J 񟮡bR?Ӯ#;`M)[_PҸ‰aY Xϓ i#mC4z%8O'LK-sK0d4j9R!8I\&I vP";7y>+U hO=(\e& #T1tq<bde5髴O@ʣ\\ۘܫ IJᨹi&$GW>u]PᛩEsS# #CoOj]ܨ/\ E SaFNP3d |/5N%<"42;,+5ҪB;Zk'MvIe1I/PA4$6A)Ť0s @Eم7qC#7P7iU^r:P,5=~XPғ '3 s "Bd():\IWS_/GmeB%XE}VԨg̘OajP( ItRs^Mh ` X1T:KPiU5RSq&.ph4\"йރ;vMad$$A^ θ-DY *ٔPsXB֖]bNg0 ~E՛OH6Y k)>iABfu.ėPot(SafBs+3h DC By! UjȌȎz yxjGO3s-MEzġm+q XqulH$fe#" xAIp^ָ04jBe?rlXo#B,:iaŒmАhGA5$ 0l2D_LkMN-/ KvKHuUv8]5gir-/sR^Mi>?LJT̚+$!8Uz5,/IHwtGY"3kHOa#T 9^o0½&9*-[]l[Ieu]q/glyGǼn%-lhiChiw֌ֻD6Ȃ40Z=7w͌j w7wrzY*S J,-wHUmreu/ُ gdj"8|{|UUTP\dqCil lXGE{MnTرpӎ!ih`Y\amɞʻYKK](nOiZHG.=ƺM)nS ,RêmCT(",_!qIF/L4RE1% qcHPja_7|)۝G3&RB]2|ʚU0S-84y!A檠ƥԢXT;&a۶ȑWJ>խ[F{Q]_Pzv?meMFLiW׸m_hma+/DA$h@~I燯f;(,\OtL!M[B5.w*Jsi~2jJs?H,45YYh՚-gzt SekW63eu62iR"#; OO1W7eaHr,-usf+3}[VkrN TIiǛ"[vҢL#%,(ρ]e$3I Arax1)zyC^字WҴv=>X`j G4oik^8<_=3+1|ѤD RnJI5%v.ad[m% iٳhKg܀<]z+$i?_i D#]^u=B*F9n3m vZ.B'fکDԋJQI.4!~x t]Ot><%Ϙ+d3>m߮J&S׭܉ C)rMHTInr7kj.fdW@# ӎ⋩,bڣ5$I +$=P_6rw`tGi5Ůe~{&dTU!Vّ$뜙+c"AmDD;+;-s'WR7-aBI 9GM4YX陟>6FI[]m&V˅%M>I>C.!Ԃ@e:Dw*(s ZjoW)+-1XemrfG]=qE.6rOCUv-i|2Hfs7N?*f`.ل40ҮXSwBZCG_ƾ3u_x@.k,` Y6IHR˷2XCCHzd<] |oJ.06?(ͲymDfB #^j.* N5ʛK\ƩJ9B@DI$giZWzt1*mu-g<hEUd&J}*Q}E&h{C27ᓓKv1d-\M>܆^M=][&IF^˵/-Tۚc3>Jt2ئI/G vlnU[2v5rNƙ%m/)&I4,-dr S!l4d4S(! ʦg2Twjۮi"v{ WD_un8p~A<\ѹ |a# ^fN%Eӳf!N͝uGY8Hen&¨mP5ǝ[ ]O#=vdHёM3(D|5CB$\PK/1/z}.5CGԷ&wA6b 9ҍϒbRH@,%Y˺pOE"C~)>˶كC R~0c Encd9O O Г lLsSN_vhW* 39v %վ98,z9J_+i~#LJIv-0j ։!zdZ,]4d_. mmghu~mmdI,-tzO}0AHGOdx~tH 'i"dE1]>uCt#r.Cv.(pUΰZ{PP>QHOM:v(t 5S1W33>6`r.Ӹߖ:uhu1K2s]8WGM)쎞ԤpFB6Bg meIY(e';yJ[ΟЙƒ,bZ=a-d]uE  sÑYS5%k[k5m@'Fc̻d}>7rٝY_ڝ^tj'j3 -^;n) N!a!"BGR0V *WT!>2GQ0b#% 4v 1@c굏D>pRngy:/߬/Τ7Է잠0Փ8ğ7d%.j;O!@ W0s+e> yze5Q.Sd"Hm*BU+5?C!Ɯse/em j/u1,H~,!.mWV\-9e8ېtĚ&:dmV^6d%spe-z]l[EHwDf{3!#UU=ʹ&<EE%w4p&LgXuVۆ@Ȃ̇/=iPJ>HPa#zXQ{NHa 3J/2#%#R+ѳ D~#W |fմ܉V,H}Z|CtQ[:!œwL|HHJ> \.|BOrH|!5q↪\ TECi8upu5%Cv.,ad|_ˮƫߐQ#0~E|E1!ECȇ2C;RMQREv$ZLz;|zJ^ hK-O|ϐFG /* +竞";*72r@σ~F3))30cˁD0̈́TU a;5 r>W^GМI֒`1v6ńa9Vdl$"2BP@qk2Ae8ku](hh]iG5Fk"BBx++1ҔJh$X?1N>1q{uq: hN#u(#_c˳!Q(4.W^:D y24¾s]Aj# % P>H0^r!umljϔAa"L0*I7QOdBE{ܦ\* -J%lXWT8pDێɟ&\y+21_I qK 320sbQ/'/fDƎV6a`=(GRnk6i8ӭU,e@q$aߴ-5s k1T { S}0IKn!yP{ s+E5kH*=? ?QmGQW*L# rۀYgzI7|&6eW~*m\:Մא+iHR{dZֱUsKM_GZӤLmaFFCAaee|H*=55jH˪mOWFYvkM-ܱAJ %) x|.+n F)V: Ը+,5qr JC/_mL*ߖuϒ ; %zD2̈v21& i]FLW.uMe]6TVqpܗAr|$@ra8Rx5y )BށDjo;[tl:]=o3>ܝTh KRhHGO Ce)ٕ],-<IP\kn`hjS\\JalZ3iWP[Uf|""&P25UTi.ܩML @mGʭ;Cdv>$MgW߬u!hb;Y˴HjnUۂ#.kgau֤pUW[l%Q̔١ع]f~ݹ!L8rIS^sDCp|KT>E>[[N$YR.-[lMmqS9-{"Gɚs Neiyp_CRZax*D=&+CLseH5Qq' U/p^eC]Ԉ78y<+J~(#qj{%P޿)Q򔉲5 w0[Z![5>hV.">l=!{}V| geYWS[l]^7\h$lҦ{%q;%TR֒y$ VVկMK>%˸PqZZ 5M[Dxu}NF--hmB/n>u59#IىSSL*LÎsUīnC炿M,]y+kvW&BN?`̘Cvߙ RUvvI,v$|b&JyeO0o?srp0f'c\W&iF&0V:'ҘfJjtR*Msr9nS4&A !?Fxr)Hrs .I͛Ć9Yn*Dzbv=L皭EPdK6]m~,4]lC Ez fHؒ9KM1MfkJLw]@(so*CF _ugD'7[seK k ڋ@BP@DBE,VzP/v;W\7rzJ[5Q=BJǪb| af$B(%%Ͷ:Un:1-m׷gc"@TKr(y4)?>L:$&1l Sn&,5^-{+5"L5)64 % HiǐAٗ*MىI}ZHY›)^jBisՔp&FPzNl]K_K> u~3iԟF?"{I nx$-yȓgȿuI_XyJPMȯI[r?#Єr'_H/9:j* D39c7|2OfRWI6i: VaPʄe,nm&,&(ͽ2[h(0&vr&=&F܍a۽Ov s`F.H.%ɆB).i4Ƌd+3[On3ZX0hZqJv%0+"/,?Tt8D f1|ѡy!ź|jˎj]6Qjs=WپKugɍxxNO9`ʉ*1Attq6m!6u4␿]!KhCAn(%Eyxt*i#V=q|:)Ū90j70ۓހ)^$>+'Α1XʢW4q(IJ9!0TjE\BJTԃ1I3zU}ȻΡTl $:S_sNKLI%1E4  ۍiOKA5ழ[$Dn| dmU?hg}a\CmŁrTyֲeIxRDNejѧQ[;lDM+juUT;([vINZ%קݛJČ[Kj/Kݺ>s\45ZRݚ!%|o!t-ɌV¡0Q?Xe~9fDB"޲aתsUħ,t%NhGiSGRd˕불LF{֩]qh!TQxVD^*'d<-Tds/P $MBHӺM֙JI(5nHqD#ۤC9iIˉ!v&0Q)G8Ds͒PSemkGzh쥽[V>tߚrYxߎR"Ogzm[I a*QHds$rc@L0sn&+T^Ǝ|yDruv+ȴ 5%'gFgP ŲdT)- V2MɊC\_ĨgI7yn)=i̾0ٌv,q^/ "S!(6~J$ʭAKh*L+yL^3) {XO&*Qra8=K2a.z?`$3$?p"vhZ$Pr4e5a XdrJE$D=Bgtie͔Cu ZhIV1ٯy2h.+%Z MàS=!qaȩ#BHu m!Є.D8FC-@s$m/ Du礻 Ƒ)bCd0u^$!a 36 gEYޱIW˪ҭZ%Y"^fʖ_@T|!wNmU_Ay1ТKh&Q&p$gY*Ua6H}n>4*aeI@{Hxdvsb<1bu E%{FTT5gDzljCT,M/F4qITbkW<">Ga2Ϩ*&ܳs.Ch]nWUx2 w[G0# _(Ȍ,PoˆʺAT&%7p3M\331f( '˴WEJ z'{Mril&\ 3u$-%a$L{Q}y< Rn}=z5~~Ǖу8SіŘ5-Qk Ony {-IDYLv4:k%cM->1U,U*=^AJ?gk"_N/WkrO.H'nAejJЈ6mnX-jK>O+q ,NȌ7鿬vrfB\ PWK(#o$OB96_ga(nDɹun8%zO??X:ɲ$bq;j*H*5f[ZeAe}q>Y0Jy帵, ۬iޘE)KTY$'Yz򅗜iϨsa Tq 4K@y dfZZ2 QhTWG*yZ+-X+ض4Z! $֔oMZmgT@CZ`=hW+'Z=$zYD e9mI#%{}o1nao2J;yKj|`Amb ׋+%‡B6s'}KA{RԇT]1BȔu$?CĘV+s? %; ӗ.xUe1A_?vYOH]>&P5`( w"I~Fh^RhP'2YBZ4 Z[+E4յW^v9 3HWYT+ꐳe O!meScEBp%elhgʈ.Mc1[5q 5[H/Ar~ i?:9C'60 Y:3Z=Sː^fr3~+tAa丈/R*;H2lɑ!.58&HjJBTfUFʷZp@5:!)?K:3 2^qMjJSWY2BZe0 Xbr niiP~^7ɋǐ0==Btl>M\B3^E|DԴ4g -pFrZI u*i*`#vӐKkj"B%L86kmԸ.V("T Kr#xA5Fn`n0/k /d/z쨸rh>x9tJ ~c;SK>:MA&i$?d\ޒGl3?VD)̌]J-uNWI)l<-9J:"*29{wAJp{%+W4}gDy4f̖ yE{nYr5c:NPjRNи*ĥRaH%lfss2WѺ :%,CMI}[GQ (nRgf gNjnT)ˇ+EC.zw_FDa\S)*!ep\xk3Uix%{ ?df˾Jd:ș/M ZArV/Hŵ#ⓑd6&Zâj,RS:k[HIV ytz|T!72J>PrKr be=^*eD$#$& # pDhd  湇q vx E.'ʛ/U81Kīr[92R&n^Ր牤!ޡ<d*(&KL0(\$6i'[ ̈o > G.5MHnĜ:J4ȳn8Ka/&C*Go\G̊a>Jgr+mij$Mզ2]Ջ YāsXnAIqŭD̓i%XN*–KhVZVV=p'8bK˻Bq&^$Fi^t"ϴt|bWY+ND4I[fژ&_j[Cg ڹ1U͚j>=#dRXz`r2y}ꐞb2ʗWP;\^\M̑;4v`X_b4k\)R"@f8Y??4G,ylZШQhMs_γ@sA}AY5=I.)ʬ7 t5d-^TVƯ{ ޺Y+]us%hX5 [(ʹR FG%u2baf1D/MRbmCj%^hwah^ůR>8JɇrЗ=9{KlG/4Ajw3׻1mRnJ}A6*Jk\ma%,DU5ēxm) 3UdT:3&f09]PýbKBԅ<iHL)"CHhH:LkOap5io3m{97,ň2K/qɘe-Kc#h#4ilQRl Ud))i9Z(Yij!,W]U) (V'z+2r(~܀fHӏfHyDdfm F?Lz]߻X[qCMeD7u!p> 15b$"!`Fi>*eYNj363jy#kKs2J[vBvidvtMXjTVUJ 1Q7[PjsLwu)Oi7Ds)^ɴKzlsqM6xSR1wa=G-L%Fa' sœ$F'DKK'>WOc!&BϤ㩊4,fCL%ʌG2`r?`0%},s%k"k~ml<׽o+Wz$'CB"3 p6i&&L1j&aCFLK|LYrB4K3L+sb[TdI Dq%r/!9!\,E{Sz~W0풳p_B$k( }(c,:WHl$"w9/Y([BѧuV#'Ycjq ^SrE?"jjmh)b2Rr iP䎧#UFv|5ʌHI0HidiBbHUIuۉvrlJqIʘַߙ N))^ W_ t 0- ,f3&C/IWnIsOaz<<.5V5Gcbѓ?%cp5IilsLNZ|O!* '-m(4fD2YX%:Oh5,ĹLCKȼjlⱧ'"^DKqS`js~AgIj3ΑI5C#L;<fW<=]2Y7Q-Rok dkLE!C勈)Y +*hXMK3!]o ְ咙P̫gcjJDv K Mok~k(pWpDc--Mv2v$B-5Ίf~G"ᇽ͇̌]m+U2mα)yDO{|jSuuID\l- E^bi%o.)IC;b2 ymTSoT͛I"CS]&#UtEIT-rIm/KO\bBTj_3leψS DB -]YGg ,ɵuo,Q yj3`t$h†frl)eLUyD%a'-XenC4ZtDBz UԧUL%V}>r3 ǎ+. 0_Ӛŕrq)EgQFh X8]_j `DbQd˨ &9#Hm z AG|e8Ra.kPh5 [:FNd-I(B{GLƄ!oPmED*-$W% #o}^y:.9a Shm[X%7b|j톭h'lM! !$FFUw+%*8r॔"uY3V35LVvdEs]$K1Iz%Q f4 |Gt[J$Cn7"M<dr""VRĂj ?E4claO xI¾g ZDsBUO,g\wA~ & |( u䗐A>?jaqPI4["!Lz?8#F_WhWF%2RWHp)znvJ[/˶!$nͬshI2 A! "npQr)CuK2\Mx2? *ײ'PQj1W&9qA:3+z,fɸ]mBS˥)2zJ @ ːhx\%qP7}'04PC3teW BUr4+8P Ăq OCAfB{{LKD~##ZEtU_%ϖ^'jkFschc<* XR&1 jq-꼟IA3eH1i*K2YCLgŪmAJI6Z ڒpY2u zX]-ò#E# {?g> a L55)괖 Th]ʯByC?k JZ54`#k!# _NE9(F{IjeX|);mUFfNӺ0Y<֔Q4CP|Zfc!@N[J^Pju .+k ;ܷ~k̞F0X!8xVWs޲\.XOSTa0o2y"12[m䒃H(w%X])"6t} : O>͂u+uUFj )[HGZoFE:n:UTr㰴rS0dE|>9+4ٷ+3ꔖq%;tEF CF>RА=Nx}s2#"v٣-ww[F (U&ZXσPpkv3EeG~OyR,N2d3nRYm EZš2k {]ԟQ8p̗CHsHυ69sº}KRy^շֳ#8$yLw6; N}[>QuL}Khi˙ 젫&q/vT~~1{ƌ0'-XV|m*wv =hWbZCmF/v8K'dJǑ7;] G"2[A( Ȇ-+)<<-\4vK5gY$ِqA D l솱\~m* d*5e" $fh@n$J =t؈ҹuʄd#Ax 2SVHPd093 2 'I{&>,>3 0٫ YUkV+"*A1!䄔w٢v5).CߐF>mF̫_mwk,n+Iu&AԡH [q $1͑_Xyx^Bd`uC0IY͓.a8W:c-7ē֪R?P0T Dc-Lˀ$7n5IIF1GHі<[Lw6 Sq!~  )CpR'@n %"iw5$:H4DKO\PgbȈwӽ; .:"ԇ^AGa:۠ƩhIl%Kb-T|B<0,Í%@NEwaBPiKd>bhWͬTJDzhiY^PϬ}ԙr4Fg\2B?$UWț- 3v~Йޛ!NbBQ+/ɈTGy.ª ׸ZbKjCOy3^Km (`gܾlS8]Vd%EڹK6ݧ cZJIG%T-$X 3pL-&8ڬQO=~Fl'6."QcZ %9y Ҥ_RWj2e,6bc[Vw72V,GXouFY-,%t̿b4ꬥC/1O!z5wjnd(QMit.[MZOGO vqW!^xzBKhe:F1zD z:wH]-U"\lpqo_~yg[aTuqfXJJx A$LT&:H.bQ.;+ Esl'S[o3}\[WiRcVLGqyn:H"PgFAIJ Dn@uU2 3sң,܍ ƪ6in-'f#_Twf¹dbv%]eŖ>RO)dqYKDKBbn/+/ Q$кz5)JQV|"?8 IqIW%.dɱXvedĘvE] 7)75 :ZJs0zz iU#G%O5{}pue@V_nSi YŘ<ٴy$;JRT9^ أJF܈2ڠlL=9m8H6#j]%Iwq1%OQg}>]}.bm-Dɒ=%DfZO)q7?t?%ڲ7&72!3񖀥Y` vjߒI3\ ","3%\òFk~2Ui 2.IπQ2 ioб381O<&$Q CACK?a=N}=dm{0Bez욥3Njf4^>0efZWM8Gl0l3THTBfUVV5\i^ )m.dwcGqPȟ5. 0q%߼ˤ$r/P-ݖDrW,Ed3U RR &TL\-/YV;_1l'L?ic2#$S'97iDXsFț)o=\|uu)E48VISg ޴~a< *i@JI>lmyFWSՒf?U|rWYJAFKjȇ"(#/!$f-lx#$®:Rr)r[֒#ޘ'S\AS9,O^)& 'bFFݜMqt.{v 'CNt<}'BcGP &6.xv{Ș(p4JBSǮZӲwjb|*Ey =!qnqM8,4>- R#2͵NM=ࣰF욐k!W2e֕6늴JU2;Eb*V|SxU6%/ԗl\NGV18##&{4rVba8NqAJZ[A3ό"m^mw|8-> zȖMg5tIp6Ŝ"qȈ| Gvz:a=3$kW*LHP? ʴu\N+Kzmn,"ǰ/VDb& :]l:j-Y\M22q CЌǰaē`z^`W7AkKQyLeB7yz{{kޝR^5 əiIDÍ%U9 W".^zI=eI*s  6=qu,S 2̥9I/T .]P8l$)sAA"ĂP) C#!Ȇ;gY S Du3nӒٮۧ1$ r+zPqB" ,'kh֡#6*.8&|6WlUUA&mn5%y;h-!7-:ۍ\Ey7YDlXxYw^0@e?2UeWăHlF| YpBqԄ3V\dEGp6A:5Zu",CELwFREtrr|yL[ƅ}J?6ɤ2N;VaM9#jt`f0h#1v\BpeaG!ԑ XDg4j(," v v& sR%ДH?:1.j]b?Iy˟pwELM.S>+ԥY!=H.>mA.D/>G*F`l7T?!z4:l7eeN<ǟ5:քhnlAM.Sϼ&:|=F &$ jPB uGyvMY!ɑx"2Np$"q iqrϸt${l.)O:qz>T"# *x_}hI$E&*~*VRsZ(g$"Eۀ=b!L!A[ORyƜQp.,bS]Kte `~jj2uAVD=r 'Lu#\խq:(o0{f)؁ rtwnS2_ppl:f>C4w G>[C ivUr;F2ڦ?*ͷH‹d ꆷ, 1Mn.6Bʹ?>)CJK;Οd&XW+1-Dq:||eػ&|dLj//ȑg2$,\TVs"2#_O t l5ruEJ\hk>ɊvC? UJU((5!^$Ѝ)0J>BeϒӖýiFplc:?N*$܇5萿9 0ʼ"ďC=s0ˆdBIf byβ NXQRվDh*L-aJ 1G&5}G||"4:0VfKJMҫAg G %VYpm:.ħH>ܤ=rVْptّpw$ϧ [ c~iqq*Jxۋa'5~*xA#0uP_jEXD:w~RTȔA EZ^}5pP+v ?osVK >d 2>AI𢹫wX>}XC*zJrTR=e{qжr_X'agM)iZ^mDސ|)'J{  >h lh\tKWCi$9=o[l;<cBaDfГdR \SzzR/sQцt T̻;Ό^{]G?o QCѪr l3:CTYo sԁ}J.MhtLL6Cͤ̉Z#]+ܜtƩ';CPSrɺL( UzYOڍ [(i[~cV1[IRJQ*G,<Űmõ5cU~ʮS]\DeLjq� \X_99ړT~dqaVq\%=z:̾a8YG3Q,+gA$ppE!u#>GT(i_]/fd9sאm5 &mơ6fK'EQ%0Rj1zk m|X事JC`=FBW L&mRIV=mJ6Y_'\K%yEIDkg;S @Cʃ p Ow:?:]uZ;M[~Ռ~Z!cRmƺ_aڱv^T$'JB!du~ #'9Ģa&{Z\=QT:H&L70S~frk%WH}LFEx#1V`j)A8!?ps'(ƿcO^3s]K0N:- Of:[-/$fBD__|C:)TD}m=zT9dQX>kdGI٥W/Z=[}f8OȁcC=Ua_[4i,d bެU_0+қN+"D )wM]| +7K .HIp ].SF\r[LyEXS؏&*Sw.F"9qY~B29NG>>5[QhNCO#0d ːS0Oc =eq ]9aIDz;=eY{!#sF=m*3=U-Yq35˜GqMD]D.Ki~ʶaZkkNmv6Z^hCym96$Gx--}y {5V}UThL}KQP4 q™΂䴭-t,N2>| xsa6NwSJHt]m3ҜS5.Ϩج.U0* 5Êq@W"3;yPU8Z<<%&?b X qu>PYY!h D|s%Ff%ՙIQIH)rad%Winiˍ>ۧͳAT~FAJ,T,gJf =.y&ۊJ 1WVc~dQ ".ɖHĻi2hk#~r}K:S1hdy9_9+k&5!.r:<APJh1W;!-d^Nm1aٓGNl= bWﬠkgiT2:/su`+ Kµ_+5xmgv&bc`_5]5lCq,H(.CWذ"ke,wO!C/V-h AϑJk=pvJ NFJMw[/ҹ[!&6Fj IĄ@^A> a!fnfM%Qj"]to4BMR)|5rl2̩Y*FȬ-d͔ Q!>R~ZڗtNH@K2i{Zk0֚I_ϱ^sOH-Mp)lFduIԖZζ!%"\AtFi'>%2%+%Fag6rFvJiU,:$X*Dv+y-ٔNEyVr㭡F1) R-i]iu"\HXٶSsD*f]Av>6ry\ۛ UL%qpyttJuJGsfԇTbL*TR^LB2 2͔xadhM4re]ػ.Tx t'=DAzhZTT6L+laeW") kuhNRAfAJJL̖ }j{%6C$AT=ѺqěCs!}[ꗘ}MMcp=tD[AZ^JWJmM`TDvs+- 妮 R@Q(T =GBͪLɪMzۂGf\!D2m%=MwQ,̊5w]Be˴2aB37e l?j]h+TF\'&ָM|}H&pAi5~h$y¹ %L;-Ñ*ra ?mpQu2'U{JPٖT_ܡ/+5.6w@4jM $;w )Wӥ9B{Մ#Nz=<eKC k3"+ M}ȝIOy -Is_vVVv(JszC$ef+ yU#a.76Nb&Jp3b_Ѭt($LC)5;QbԖ4[նQVՑϽo[P")N.A8=BAp2f<|u%'=).ZF1dTy6mtwydRJ*@QZcte3< @$PȬNt*-3my!\k2 颼Tax0+1.N_(k>H)^j21]bԄBZF$JpLp%0\jl \ V6 %`dbQf;*$REsmnU@>Aǂ8 9o]jUnNDHo=ZLpf~[VZUfNt\vJg!ˑU6L^yY#: $$#?|jJ1IT)ni9]}Q"" fCΪ:8dul0N,ッb~YiEM7Qq *;ua̓W@$Q^5i#3"e[׿o(IT=?Ҹ]>U?'ۣ.ZO!IswBq, +9Ipk~UKS=QWBㄜ**bK4*%خE֯`dsKt{顗 .x'h$22Ar"#0"/li2!Mr^L+tݡId@ȼ}E0,9g@ڶf<[X7̂0ZuM%h-p+| N%-*Yy."S"AWl?KS'o$&@;dv҃Z"E=%8=7~IrVyB̝{ѸI&Lدe/w6ْrPS^\.B"\V_{(QsLWr<ȦY!,ot(J]]鰹maFmKJIi&iwJ ]`=4:cgy펖-Oz~.#wIm59i]iEyʍ~ޔC˕YmUJrC>S9 dTs(IH%v}" R&IC*m"Em9JTG XmZn59^/0yK/D Č6eu1r$=3䂽<nKeɌF߱MQ$ʤc])qa+I< ƺ̫2 JZ?+vLյ٥SԴru:1-U6{WЪd+{:2>agt9W_Pt˓d F;FDP3_>\EL vL홤٤j4ht]BZǕ}L ٵ])eTpg0@$uck3u 3KzΠ[hRUu՗L)dp(6ZԱKժyiCv68lnMJ"6TRMc̘$#++K6?YFbkD0ϨojK-!3}`Hf׆DJ2DC:ڛ6`uA>kƆ,ڎc9N2K;\edX(< 1#mxql9VӠUɴSclw|-nhH9o5`͆\!:EU[.fF_=W-ixd,Os-|\ޤmoO0N˗ Z;3)Nmnm*T`ju Nw;[MJ^Gsm#ی7uli[t]=k$){[9:kh3wi/xuVԂCw ƙsx*-pߩ"͙$zLPiT DWR_n)T2H6ZIe+II>;!>^/}vT.Um!ԫQ7_*A9;MQ^F}Y.0cȯd-'lʻèYWQ*;yݜ+l::6߱3Z+= GglJwUM{ u3\D@|^+6Gjp{RTjt-X6TfGehb3*vQWs[{峊1;F#YÑ Tw -}2,ѫ}#Ѩ9ѭJ9BҤfJnT y}5q'"/3 G{IZVsTAt:Q^\y]e'&%OFRo(zcѓѶV-kz.ղc MJio x0aDlli_F6ݮQ(UrlzM)~>ͩ:[F^o ݅6XX)3Y-Ps3Xi5-!~T -'Zg&B_M#Iey]H@!lzAn[^ ndR]C~ ]@/aTHT{ EohAohh0GIgo%حH&,U1G?d?u'!>gƵ[ i }:9r y0ϏESm"6ejvT(C~Α9P` wq亅MosO)E# ՗P3 2Z|lΠf fZnIj+뭼M(wWH kiDm@^XK7keFeH9}CΏg?NSo):kJV!FN+kRA{jP=XڨΜ}iVbv\'GL%5* U& RH{ &,l dF|lZmLio BD O nmf=UGnm ~Ί\rk69lH1>K8*S=_ x,Z$%"j.ug* .UKIE%/kRTO!%aꊗ?W"=Cq ΦprmNz-]KVڤSڃ}D|1!QrSJ(8pAǻHNQX;y6ʆ&VA_@5Ώ(zL8 ~#~9ʶ#5ɬtO=+S,xF!UJy崴M&J0!9>! ~GnCDiE]ML3[fr03!ҝ`HDWZp!8瑛Q] 9βϿ Xxwd%hmRh*_8mDES R!c#%Lz|@T#Nx=4i15,㒤ǹi:R:3S;K,uK8N,aaK~pÊ,?*,XMöqlkR7kQeRuU< mf@vS#U=*^O"]ئq>z%4\`%i$H6/-yp} #5O H5j&E#[Q>qBBM&i:9{mMDԽ!R~kEWW EDđ/IS.F\XX.u?k4!LR rzV,:ԍiYإp  lSEu 8\+R[ ݋KLu@6*OQB#nd>00oFDӓ?d8 $&JKmA0dOLbw MiIN-&ĒF KKW5$NiH~R(Gܬ7RLHpBW iх?3D3:'.oWI GJr3K殌mW?)fs]\U2^Z3Zy1L}q IDI CB %&< Z|L'H%P_߇$6䔙 ;S܁Y%zVJ"%y JeB%f|ĴWjKj4Ke=0R9V-%w ]o LNrsr S55fS_ԧI7cڐgoѪY$-m!K2>:h:B5ȣ;Kf.b,:sQ  nFwPDFrTY+eEY&`RrOzS)jWv)B[Aa! OռL̛֦ؒsQQfyiEus g9}IɾՑYFMT&_$2$Q VdDEκF:grD-!GE+3 |g *jlsZ]3b={4VdYt,NdfGFQT6jEAA<L|&3 mXrtf9dRzUeCfQa n}Ұɫ)6 g^2#V%$_WNEJx&s2[M7G rz_I!3m,䧤+lzVⱃ!_*ΰd[9ϢqQ 1e A˴5CS#p(F? . :wyK'6g_J6݅f1%#9@NጭlQF|Lv"wL$2 hwJҫX">j\31QY\ ^5U{gl4ۮAT(8 5IËc>).9B_%k^aEܣ1܁f9={WW+.Lqc|7Gp9(I4IPg"%up"e:lLtkg*U>ѲICبbg.Te1}iVY"2˞MZ]eºg3>}y #=E&y2K(*VrI﫻Q/^``4L <hQYflHЭ%IQf_J53[L 0<yRnn[Y?2I(&*`n82w%2ikh{avĽ*6H2m56t*q;άRS=NA8 Rya?ِ33J^Fhf^)lWb[GyYU F>IAQiC21RiR2",NZVm:1ԴwuF>zӵ󮮥ϒ)gRcgc|:%\(!g5pM HȺ3Sk3?b6i<%m11_a*W?S !1AQ"Raq2BST #Cbr$3UDs4Ect%dä ?>*ޔjЛqGd#I^+_La֬:TV9)jȗR @Th>k5N<uj 5E,oqѯ%~)'| F3_qTEƥ888GY@zJUPmSJtnqAQVCunf= Ske9r>m)測#!Il3 )^Z34ϡỊ,8o1ٛER49,X:5*׺jyATc?dƤ6ÜXvUҎ-qj#Qj4zLuMXc4kyjhFZIK%]&p9ΒL6.Oy_濗ALUFjbR 88@?lhaJ'x8RV<ѽֿU,ʀi$Gy_4p_hLɉ1kՍN^ͽ. ane:EEr,ea)vHAUoqn+\8(k {<)DկS/+*@%|M ec ĴJ_7 5s0/;,zzIX 8:@TKകh"5y_zbm)p)ƜS'{Ne9VB3wr>i~b$g9ss6 @nLEk%:  qjV9vοa9 ^)TeC}H3i?9jHe3Ü+n'@m,C.cȃ>tW:I+{7Ql6 򑧛FhVP$KrOqK2ugC3gaQQZ9AnjU2EQ5W:4~f c a#c?:[hcO1Vά6rL =(kcm" Fb( I[p* lY[C;8Lu*xpH׏~ M{wPޜ4zՆ;*R،#e:a+.lS ÄOkq1miaR*AX,khqBBy{O0~-cXc/0Y}MJC :J?C8)bnw\̧X$+dE,s¦Ѻc[&9 c)5ŭ{ FbhL\ST1F%kV1H͔2%mqQH]bUE%sV#1[GB4QG>-W#%sGuEb^y[YlEТ@5>"*cӅ(6_?0vȓ" d2#lu*K`Bd:=G  BF5zMc{eAAi*D}"OǯѷA˜S 4œ&I=Rgb.7*Xh 4~e >`,{Q,s P~ dF96ڣn[H+q͆Z݁*11cbjcjOK⃶_mvGSw)bltÐTu2CLIP%uda9F_kv%#^׭ї{{{$N*cb!Pqjb1a#T [.ecqެ}#v-& 2 \ꅔi~r!` mT$NR\V?MqLo0VAx"#r%&3=nld>"N܏Lv/)=wHYZi&6R Qc[ nԭ{: {[Y!p]k<(+ƶ|kq>kr0+rC [)X pRpmLrTl5³r!$d3+s_Ӳ?X 't> 90 ')B]EE^HR?;+'ʘ[+}[퓚L01;m[=ٟkv>V}vF!d̑+0LmsE`q$8 rmqr3VGrqUnf/vbma'8H v'87BPʽ`\FZK}IEnTvV?0ˇ]ʻ`-XƯq&EA[}n([V9* ͘.sC"`c(: {nJ@=L,="*j{+r[ڷ? 5`pޖbVX` 8_Qj@vVriDXτw‰t\΃Ϩ h}V@Ыh2~*UwwR(p# 5#<4ki(~4%156Ϡ #WAV,t(iOp5KDtQTll6\Q\Ⱥe:A۽oZպ(jo%xP|,K?йܱi&ᴋa5!I#!Pvדaj 0M] bXt{:|PHxOsaQXPA7|i$s.k"cvN]I^>n]=*X4͈ b8ΎD˼ _{^Id #%2qXñoHam&Ȁ}^7;ix:ז=Ɖ! |ßꤴno}TS\I^2N޾aI&icQ 1!>fXԌJΒMk'jr!&p&5 X>ZK6O*]ŦaYXbD#FY): ZD֭X /AO_SQ)‹iH",AX:Ƽߵ5YeeҜzN}kÞ3둾\Z^{u oϴP_S L9* yvn+f͆8K3)ydnZ^>^G4iiYak8y…Q96aA{Ldx';|&&I;x1S$eNGпFNэG5&A۶A&ӐuhմQۉwм8TP3j@&.a6^P2bHw>GPF#*dq,g6~W|<壠ֽkaЎ5Tr~k>(֭4MHB;^"OzǞbUtE94 ^ t3m l? -o|dǀkw\/\o?6[ͅӁ;QX?-jo&TʱƼD4{sO\C,K1:7&t}a^=xFm2XK ?iTmN8j6HثiR5Z"~"e"CeL)1Y95/YjT9jBFKpTc}N"uΎ;q5qCSZX辰S';Ÿ,;pHWd<]5?PqFƜ,g1_ 0;EFc(uGz 3Fqv2(5"-1'Y9ɾDQ"F?z b Vx珸a:VvH۽qϽ~!t@Dg0/!s}Ƹn7al65,ח gC~"֑7NBٍ7H0;:ޝPO'"d $ɰZunnA摕̶="LQU2)NF*dbFFopaN*E}"ݘ ZuV ԩ*8$j upMl=b5A4RYITL:$iqVtAg훾5~b4/[ [-[F+|D)|Ir O;7mnV3sG8,YVaU:@{VX20$V`a#BKfCM[7mn&nlݵ?I+ pF3҆V@T `=۟[<ö3rtEL:֢L_E,rgbu{UtJn0n@H]b,y,2!*2Ez<ȗ#*iWsǝ+MuFGebk?~L3a4~r {{VLǝ-FT<죻L .or4..\Ód?g} G":8 _Cz",Ozc eJGBI d͵^zH: h dCjeO 9:EEU$*j1[fQj[DFxMNeRK14*J5 ?Aޟ͗ cQٰznšMGn֐,l$@*F3lO:FL$gMOctfDF]C\\Hѫ͂>&թHRι+_xrì`4h#[aAW6}"i1w ~*+C[9ok2~ԣ90@’W{yku ya|%X5bY%N uÖ΃5{֯_ͽ uNӰPF,eNݧ@,WNt##גAѾHۿLlJ %7F0,OrO1ɴ;ڼTipF5 *NA}<ƈ Kf?M##YсVSZ_˰L8kn>r:4>|B"U DރPJy}&Cܱ#}R;| YE A&oAlFAɐ Gj>c$/766àҙ!tw9hǂԤQ}n(|P[G Q4;g -eAE |M`'>e2wdokX)xKnm5WVEv XIllyF <8X͟1V;v*'pXFXƱ+gRhy9[ba|`@%Hk.YѰ eaم_ZŬ)@qoڐ85>EaϤVEal>D46oCL/vbYtǹ`2`A3,c3M)8ј BOZܳj8ѿdX#}# '+SX\(1=J<)jιfcaeD($&3Y>eJcԼ0j3= n\hðF6XF`8yO§GM:)`@[Ubp^f5>oSa=-FHο Vz`?+0'1ƳFO@ j+\5׬ŶaKgh?#k^/ Cyo,G4~y^H#ՌH!U(91l?+ǿPו?T i%pypsm~pK[zEF]L6S &mhIY54W^{…'̡}c)Q73%^"^gKy sLRڏ"Hثߨ/N6Ɔʾl)lBW`~ ֯!8ֻ<ԟhFL< jXz>rN6a+b$9* Ey+eq!<^HRҁGkfj׸" v`K a <9w@2bjv(51A85e*C3JE]yD'a: 54w،J/q|p1ky7P֬3"MhTOJX4֭Nx 47({[CϬŝ,I& ?xV_2 |1HuyW?VESlA22GU*s17*=c}o]%% j_?F~$i Ꝣ3>PkV5Ə7sM •k`ZM\^45) 5yLJ[i75esCHI`.xϨjj(5w׍%Qmcp I^R4;Iׅ9{16Ϫa \Qc**f[(86d7F!*> -ctBseAZ4<Kyg"AV§rxɎ=&,I,uwաo|R#1PVR82W|$Jh[zyVd0,Ř&xZBji <NYqku Lse5k*fԉ`Mi0I4ȠJk*JmKA - (j:G'##=Sq}Q?#(zZzO_޽bۆ9ͽ~XXhPt pW*iO{ҘSOa h`io)S}{a 8\Uؐbƒ<'׆R=|&_ x(P)H!FfK:.W !>Bnm>!88_۵8Wɼ )mJd$Kѱ^]A}AKvmCIU|\xX#$DO׈hR$Xs!D:h"uN &f^; \›Zw>'ƚ(zZjb#A0;ɰa*ɚ7i8%y,?VVɻ1̱MXfrl…u G It1Hr3'׭JXƟMZ2`U#\à| hYVXf"ՒV !4[ ЈzXP Kgͩ)$তRy<!lk)/fG֮y/g5吞qp߆(.D:h<(/Mx3bvei0PN/ejw!1.@>xǗeI$su|i#\{HNѪ_})b0x{Zf֧ aƺk{a,=q]5FMFYqX"0'j"(&\8T{Jm]UqV3{Z,N*yOWAB j|4>zxoZ6VSfSQĄ"XO{*5PgC/\&ZyQY1i1:5kIPiIy$K ۈI4Oqᝃ|DS,% 6s&RE9:R@0Kȡ"$xǐSwbYwJHOKResHtU? K͓*19C^Vt{fL<3WnFSBo5\C(SrN29DŽcV. \Kb-!`.WnKr A9SD+D‚צ7裃)~ٿE>ڷ鬜*I'AÄvːOiѿM>70ѿMKԘO]MblLL%F|Mw)'(RT/7 Vr"]$$ {mc7 =ckoXYcpDL r^'PH-[?E}j?n#I?Z,DXNq",Wn [N2G`@/z} XW;+'ecqvV2U;+?U,mefʉV2U;+7N=Dv#Nbs̢0ޛTH-SQ27%6$(aeP_4jPb>#۵aHȜ1csk Ҳ€#.u[Ǟy;kqǶ/<[A؛79 < ANK=d/\_X`p>XMҵ)QmcRhmhg YbӞ5$q+޷csG[ΕK_\qKb=EY ¡abNq–(V] e0LkE7ss̚5O_KV U^L-]tVT+fkA&k aoA{i0[f۔ `a\@[;5ͅ=PH2Z6Fٞx=au<^V! 4M2!aqk}Ea3%v)XsV2Go5kL T^Mi5I18BmM4b2b>:c/BJsrN9П׭z׬l޽cf"b(؈^e5׭П׭П׭ӟ׭ҝ!ae\"k["%<``)."V[R+,r8"B chlTPg?沣[xFG7C:bU 6 pA" `r{ Qv.4inII]"?J0%5+I#GF⼺.1H b%Q۴R~hѣXW4u ^s eE: u0bb_3kZe|4hCA'T*4I48)򓲜lq^NmJt0 }fe;ThpבƣEyu}-SptNɚe/_{|PLT[ Z];/>+d=ae7X ph.kek4z*SR8j01 q0:T M)-״k^!Wx (:r瑵r(`N~t0qZu b2lFimE)0xKߥ6(+M45 |BѻYF;ƅ;Ÿyp\8? p ,J6Kt0 >/T9C&0xOϬݍ;ßkzcNUA[>uqҒ4rQ^9im# nߖ E,#`tyQ6NbD㼐 (Q9u7El7{(8?5mN(}B=Zi.nDnur y=T:j*]NnCW@%ZF'7VTL2ڽ=ZM+H?0:h 0JWjks%al<1U츸t bre |eA@(9͠8{gW6E#"Wj)44p_;bf5yp"QslP E/j)FR0<2#<'mC7jQi4G6aHn;i#mQ9s ~ljΧx:UD@5D{w\F6e$ntPEFٻJO *9;k ';Gm$<s]9ӢbHW7-`&ISQ=ճ6ʌijLJS÷奾&;{ûIP'Y$mnd;DFa[e@~QX6XvmBڄk ]|RbӐsK :*a0RAT9#%T/RTy!5A@wrbNuT]aOv kkt~%k 5SFa1ҧ4t%jFwxP.Nj,3i&JEjBnO5?|VT'ACxClp-Da)mb"q8CFաrb{!X sU,Ey*B͜Gy.zּ,GihoQAx:9(@e@TydRXVIf`81ff$M'x5>}(խߢs7&D4ZаS]Y$^3rP%kh?f{k:#52d(]'m*r{l-Xn_gk汽E(S'$ܲaHB_$n{![V7of+t0@52OW;.K>4/u Zu( nczXٽ X̘p7gR0XKWIS'?;(јk5WH fϲĒLI'XFX?mnjy9#yQ;UMj$v sj§X1XƘ%Jaz Ŗƚܨf}5g5Xb+pkp [nm1Q䑔V6R?IX}&F,eаaqQ$ee6e*TzA/V_BoXIm`>u GTK-pT6zt͛Z=+ &FXOXOXOXOXA 4K!PlkZ*%{d$Z<{O[=_k+Vçj57bclAv}X!{+4~V&Lu'0e,:*OPa I{h9ԫZ{#,٩6qK+p ++!؊b+*/` THq($b2Ayq/eb>V#eOW>RC0NPF=U=(͠Ͳzպ8[tlIGj? [B [s53yXbx72 NH* aB̤Xbb8>&뇇WEׯ&N(Rf9⌏h+,n.x@SVf)fj|JF4䊺Ľ|*~n3qڍbI6èqG=g/a􉳜j>CxVe^Rpx ґ6Ŧ0P4AU%uC1Q|'}CeF j6yFeG=5ƛ x^UU' ԅ Nz†6+:GmS3ʤ8GeYgiׂOsׅ^7tC᝼3iF=_ib [S uahN<{n !5nJݮkEy0oc;Os<>1Gx"$]-HYI@PX‰xCh"uWGr6=ř؝$x1׍(([ vk'Q\t t@m5jL.s4(⏑Ư&ƀl8öN*$ʉC@) ,AxXlCF! DlAPb %hoW> (se8W.rFt<4YKX3w?4 '8 '!q't7F+2FIcB@aHmܤq۴WJ }")ri&MnNt.WDihfmsd-k?^kfԢ[nJr0S[(RYM5  (lx[$4Z&m|i(R Ћ|5y7;+`Nc4?iA8`51GW |[N&NnXM&\SS413X\V=@-@Neϡ[|ZbI1b;>CMGR4~G^&? KY'HwHu2 jϗVD$!g'gV$]С| U1A =ho '֭HUFRE-킒Rqzkz' O5o7d 6Dl|1變袲ȈRD}F: nlyQ8RXY2^XOjb='ٚGzʃoX m`e'l;I*"tUDHȒe*Pvgav,s*Eʵ ^vTPaQGe$>Re,Ssi 3-SSa}v쩰eMZŸZC>kJq=L仪xgeTc\ȝ5vEktO5 Gmc?٭JT"+Yf/N= Xo?MO#$J@2dd^Q!9Py*Nsè>C{SXLIV⽻Vힰ3Fk;Jʹ#*p9܉=7gNܓ8Lp ؐW$pmGunPA96>z*FZШb.Hb`q^&/^bQXl_vҲGnYȨgb}bOXTCTpb7֕ȿ"L?{haC]ٞxb1K H+9Mc"T+ȫܑ"լi9 t,V7VÌ3bL*+bmF q>&Us Sʿ#ds\H7Ȧ/J#`*]]X BfvIi`%F9Va#:Ye>GzkoaB攀g`K}QR0)1NT6Q"x.2Msd;V*0hϑ}ᷢBuPI|lkо$su#H菱֭S,l̾y~i0)2^6!z\]h*3#2 BÃ5+vVխPSYacFxohɿ^ƯDj2jg'` /y5N֕œ_}.qweha۴QMx:9P42V ~m6c[e,Z6LZ 6_$#9NUڴwx^NzƈL)yH44is`r l]'Fm QHG=$)k/[| A*H@3651I9'i;וKFY3.͏+ʙJF~s#{lkż(Tz;#2|tCFȽc^ӽk^ :Ѭ$MS.qxgnNYI EMlTw:Ρk;YG(У{\e'=#yXR $z-r/MjNt @((FW\2\loj|2Hz ' Lvo¼blMV u J(n!^.ⓣ{EpZSـx8K\kZ[]Hά6(# ;(k3У!4" { 7O@т7LdHcX n3RBgVRZo4|_=5DkNxՉ У`X)3 TljaRHm 0<]&ϵzLс[ q}J;hGvIml`oTӷݔ#r6"s|[n-4쬦iA{|G5T9H_i_AGmaePIRr3Z9lFOOlgE:M5fA}Aɷx/76;h|Z:ӛ I[q˱ HW'v|džG9okĥ 7 bXy , G- ZyHLkw8XugCMcexOƁI( "S@bX^VqН~O%-WYh$=CIh̩BXgV@}J+R3Tُ5rt,Uwbt=좉hUIsKM {=f|w5$5x$$הT' S+Ґr>Sx4NgajuwgG(Qh %$NkwXkՖioxݟ!^bks1^H](fP lļR\0n>+ԭTv'$ Fn/zL `5 x Iص;k/>_Hϓҽz[䟮 %1ZչmnyӶ}{kְu:4muZщm͑ƞ'w$4}=]==sM{)e< 6UXnnlCCwBs5޳vToKvToKvTzZjxUMBtSZJƂG!=͂.յ#cNvV' \#1)k\ƝPŎpl~Џٞ$GD{/[=wܬvRsLƀg<Fd9 {_Anij[kt1V?Nc>eb1⌓o " l3RK*'>+Qf152lF B!* ^rˊs &WOy~vVBnUG/#(Zm[D6tiT2Va=nF'͕UI:I.K0kbIX c#3vQq&wV'ݕV/7eb>vTj,b%E9kjGr@(7K7I7QMTS 8L͔.H iZX潳ՇzU{k /maq$K;ĭ G85 tBPڃb=Mk 8#]rEl*2g*X9=aX }uh+sϴ XPw͕ NH' tk02./hݕ]sޗ!ʹ21g5cV Tpz#)զRޑAr%*@j6D 'c BVL'_QcЌABPPE@W R/LNTy 'Uc2(i 2b 7 ׸ 7"*]B(s&M"aKfahwL; ^FC|Vnד~mBzsyMpJNt i<&K¸q=rm(>5^9$W%9iv_'7%g-1'h@2z"f/els[(׈|6A1DGfy]ATĘWYI\\f<{f=u?fO=[*>֯'WOxvk^nuIx2 C$x"[…&SO _7,H Y#31N_s:ד#j{̽T"}xb#e9h5^9 P*xOQ!3~JnIO^N:ƛ\E8o |R sȼ8^MO&ɮ)^W-y1SY6p3h].La{x<1g#&TU*#3JکI#ckKD4RxHNf 6< F~Afc"GfIL4-8X46Sl}a[FQ'Cl9ˮ? i/!9c>cYF>>jN̴,~6Chqo5㛪w]bSS!5nJrhW%^n CQ&?k)HBs.<8) mLn4(k%=m߆Xp@ESokoȵ(PBsirBD`ǔxɿדwKAf7*2h܄Qgy~u̡Gӓ7'y~hښW:!xtcJrJ;?ZƻjE c@YDKǓ[7 i3K$JNCI_1]Sgl%Kha9H D~F֥#kfDf:8\E)aSN +'c.BxJNvES9*siw(|dhw_DQ˜ha߮ZO4_HOHEmF⛻`؁*մlaXdHA:k j5!Q^ɨBq Iܱ'XyvV[dݕ{&#ٚn Xڰʣ./s[/mnlr['1:ôȷN2˪SUG{y*, GwG0yICX(;vV[>B\zGY[?ty?yl5ջ:Mn̓\(~+ ha[8Fµ=ӺHIuP`ma^/ma~A;3!V^^zVҴ0r!Z__TQ!}$k0VҴ0_vbX_vbp^zOTV3sA(>lhqY&osϫM.е.*\TOTTR@Q{j#$!&,b0F8of{*x4GFI1Ia8r3g):0mصb^ū&ۡmEWEj{_75A; ШkӶ7xlR^6q5FsR'9I-E6#h͢{Fja}/Xc>ٷꨰ9 d57BQS4 XG6+uUyvV۝'Ffr3!ME뢸@СJKֽ(O5"ʔt)vZ\; u}*/8x|H9 !aS>A.MhhЍDQ -B/5}f ֹ *7s)‚As|7U5|*kYU~&nLe&n?spt?Yy6:׉~4hv$v(^VѧK5ű,ɻ_$θPލ]0˭!WCmFw&Nk2ʶx$uV~JSs;hÔhnF7 hѣVF(Xh=F a> m?Yh-ZO`l3Lbq$G17eGzɑ9[T8*1BI5_#*Ob?Ih׈wѫ҃Ih8"rZ ni-c(#h^ר@=LY6+I=F)~7Sߦ)`r[%W`^L'z=HV, Ca;GC :?ʻ 7uùI[ak}~f#sò$dgMl5"?Zطj]X2qpF(pXS|t :H:ruѿڤ_MHr*xaKh rB1 YR71$pI'YlXhqL_S FEIҠ Dzp!''M:iF&ml'b"?)~cJ?\pe-byV?A Uo-bSS^kFyhZOOEL*qSZTspҟB5ww *nM:JGU lmH}SOr|[Q4e392z4Ԛq(͢tpt gvQQ*ghx(6K/~ʍ9bɽ&T –,Y[P]v,bk|)dprr+FK!fq* vRLIrDBȾ}t\)6k^"u=l5 ͪ T2-IB~@sBlD&$Qo 6%1%g$'=a;kspĵ Fuw[-Fܬ'Nʅ 0 D@ֵ&\l'=ƑPGP|XgV1rՇOTTDJc\L;&"I%$d?Qk c/¨슲I i6iC42mSfA Vc:j5 A-`$|…(xӾtQ tH-`c'QٽӦp`|q˚ 9Zj뇌ǔt׃$z|Ѻ50—\d-I#QX;=Էf D)iԣY"_2 УnZBPVb4Er!)rKC6E  y#tYNNS4>GV-jŷTo A<ԖbHF+O֯'y3y[ˢIETd\ljLQyWM{_yNo\j kTo&H2ElҨ)gXP% $Xю|>f2s}Z"F0¿(S {:|[qhp+xChk=E8Z֦)ѯZ }}e 4()"!"KBKk[k?T<=3N#MyKuN3驅=~%ѶômJNA*n4Mri|oav5*89DNo66v_I \@zjDamQ?mH6kxJ  bV_Xbˋrp}I <$Xg/|ՁĦyO&XC[ nv#ԭzV3ܬA$lV -ANO=qɗҽ:I/mn{X2v26Y*HHf65<Ƚ> m``ǴZ),$Rr.F%(#m`GZjkְ}k UXWtu$)5QʥT#0.X y/0&SasRʟ-IFlU^)1ajBX}F5hmn{#X汿r f )[ı&s^+ҽzSu1^vQ5Fʒn5Pk 2M Y=$Ңohj d" }z|z,<ϘVG;rM?گ'_l8e/lfY'U=* mqXqX"/h*x9s҅^>U#NI5lAp5AX?o\Vq[iz]+Ws"\֭zpzkta>G5_A.Z 󚵼!cs Kb,j'1}VZcnU=VV\6~NqRMjcݕvV77ec>vV,zX%zh]!XhД$bbvT{6Fs#_">|,N`NzMk 7k1Γ-`HV {Jf䵳{.P~JܴWCf nl>ѫsp}g (QP%HhQV|梇{j(}SIKE=ZeP,s Ws&+Ra:i-"aptkQ*VJ \OjzjkJ iGR@ZfF|>`8S( ĭò\ͮiuYIMfڈ2w^MO@1Y' { ٍ:5 6 [h?'Z׋2pXsyXF|9$Gr-xoX'j@MwvD͆そ~oUwWT\ɩiH,:m4I^1ƉxthD{'Ms uBʣI XB$-kNHUAe!ܢ &?#T֬SuNHIґv+L34ý6Z$I$N^="jbP9iqOܝI#bNeXדEB [j0i F4fYMqۦՒĩ^S@['x=m6kZ?w%Fe"AxYNN]݋3,N麫Z hrb(|~ s쬕}-?ge!GSfV ZJ[FỴiDž+i lVtO(1(FO >",Y$T=:Ah׹x:Fe1 rHV&0Mr7j4!boϴrG5GwY&@6LDg3ˡ5y]fLLdND>8QrF]Fc^Mz*@3h5V qs𣽭V9WSua3tWk]D5k5)E#Dɧf,N^Y̪dQE 麫ZǯWwL`,v7eG޷7fկlLހ5F᷄r ӡ@У`CQ*t |cB@|Kv\8$!hW:xzE \þciŴū^0s/iwjeX `Cs@sc9}^qוL>SN: c5j^0 rb'O* )$lUхI]W%# ;yJq,;NQ+0Rݦ@u eLѲ5ň: ^\1J}NZׁt 𢗥h--؎ Iٴt l>:k^N- -H@RC`.;Ľ+J ܙk|;pQ{i2y,}& 'w1|E2P*x3&~(ÆS n'<*I4~_ki.휱;4=5בtHG~{EI[ .9ev܎h߲A2t}aQE#R_ 1@AfEQTM=NYGQk|wJ+59n,H  lju 4TW79p̀dd".Uh_FNyOktc)E(~ Ufࣜ'!58XW4rȽ Ch40"IrXc,(-y[);5uw@Sڅ7̓a#xkȏK"iYVڭBOv|$"aAr'58fհ lkzC@dݣPx+ؿen^,arq{Vac1Ó)bcT7ChP"Ƣ/XY f`Ldf<;l 54pxr:[bFOf2XEZ@آİUO"(O{+?weMʗ|+A1 kV/F䌲O%G){ܝfѪ9Ts{FP 3<3z÷nßh{jK?=3'kk(B9iVB `$7bI%I>zaaX<7;k mAmEmE3 .ULM}CXY*=s)K,4a2`_UUV H%Xn5q̍[捻+V1?eH]3-ʕ9 O" 5&qc}bX͇j >;ڏQչ.ꈊKh.*FIJ`OX\^P$YAXhe͘|vVG+qωI56XZIRA9lOh/;=nNNچ >r峝 rvg57?;+mn ԣR\ XN""RV9[2rFx5z{+u1VsslXaCZt>⽩{V{fv(yk~ڗ,0T +IٞRIDJΑXw{8b0 "2W-#X9,5T{FngڋzƁ5\y:ƒHH*5Th@ùˉ(,^JN&x(Kr[4GU{ SQ/TIzC9""8aDpt}_@H zR`ASTK`3P.܃hfN  /* q.ߗ y,}'xP j㍈۠Z? w$}ɡhάFv4۰䲒"ג˒F PwAg?dd8P)K.Yݍً.I5/b$ )s;ڟSW+ķ[ V9lg$TOye:xWL*wm'8P<Q{D9{*4E-{ c6iB^ 85 ))|jk&ꚍ}Q;jV\DaI( ҏE(m@N")ECua\2 Gk0m#a]@Wj8Z ˱i<̦#:ڏz1| )6ŨuFWynAnSSXoJBLE{I ^hq2SsRUFb+˗j^ $3k$8RI'4ciS0d#<VƏbk N >WxZmTVTmͦ5=cMaG8>CLe4IsHLRb aL}Z:i~d;?PzSl_Id'>:ƧM _ /WyHR1jI>*tF'5H)j^4~cu]lBz #XdclB{K5sq H?F;i©0H+gƵ*u+" x3/'r0[1h b_,ϠQ#藴GUx N3*X_D@$a2Oz~N/L`붺oh|M'x:$Ѻ6g["PLlڭuA[y[>jl#fGx&^&.;~lA< Na]!(R0y ob/Z!Qt HRzn۲Ӷaܱ "lN*s1?؛XpE8 @?[_=aaF:}Ma'?j=V=Vb}3[+rqLmĨ]$MH-yq#^ܙݵs}}ݵzW=ҹʪ0v$Gn]ؖck|ksvϗ+svʰB$6!] $Ih̛[7ʘz{ksvUe7[17Nf+ͨ{$e1F,F4X2V6o@Η+X#/m`mFAG. `ECTp{QKpQ粞XS1Ϻw~d/Q6+u fv,U$@?ݵ{vjݏmng;~z*@=bVײײe18xz-i5*攅 [rvrC7ƓKHhSVI&")kt"/\V&/h+-cpk[HtVrV`?[O =j ʤY)qlaHT9}F3[8"kX=jV:Z<_ƭvk aI  FVq[n׭ЃNC|TZ͠)NMaN"V6 NMnڭn ,7Pzպ9Љ5Lb+Yݕf<ɪI}Qٚz#S0 -cR q$mgF2v|[eJMpXؖCmBhYY=aOVz_X+5Q5,Tنa#͚Ʒ3 * &Tx˸eX_X %u:)W@z(E(XhK4t"tQ5x~r]ԼNE5O'R53昜821SXPD:Kj&E͠'ڼtZcLh#;&$Kc4K'%Ѓg-G[U%6-6 [G.4M'? Tuwj lMa~e$sbT[$g/F,3vl.kRAQ1!>jam G*uD`5}5~H$~! ,FO?!b(̨-Tf\]aR]I$'j;M :G?>? (pqćʻ6|Y >,lԭ0c7&bhNdnm E"ٍ [+}J/E Zx4<7^U~&@XR919ɯ$'>h޸ h%݆@UQVը mmM:ߪ X[*גMէ(b3Y9G25(sjN[$5j^oGiк-* -G3MI⯾t5XnLZ2x򍆘,smvGQȼe;xzƍ.م:*̋;eψai\}^"QjBP# G/<4mxYh_ͣ!^=? 7F-]ه> (@Na~jNz:1~W7F οdՋ($f tJGGPz(<"5wP$`pcgwbnI:^XҔq#aeF\6o /Z[8(fVO<+cX)bhsEdyj6GCfVA/QѼ(g.3!SD$J~n<<I֯!,|%'aa$OJ''Am5!ժԥR4^O F>q.dNaV+W*jHJN 8ds$coq{^B? (x8HcDF18t rij17$$ydFFn4jsB͕7aX"Q4R'|,k`QqWL /Z % sq Tř,NrIw H^$E^)L_հՃٰҲ2b %;I\7y'vRJ3X |O%HnX;µOּFDK 8^ H#XXggVAtQ@M#y($ ~R493Wx#@LrӨk3H62E58>5!04C2P}IsE$I$4 kck\1utMtBB;0G=MO|YGH#uo0Qȉ'TkܗUR utvI)'|AjPB $NwuE^11<4;hG36_S^}1Gjj#/|3GmDɕF!Fe% M kb&216TRZ]GW94& qEDQEj$ZNћ X%!|*NU(DP 35 B۾,rQ]b^)HSOrԋR-0<•CQHՇT12qH8lB7չX`ոtNjܼ\1\drcj#*? .y6J)[5/;̄3Mn~y`X8/l*5BJm Ԉ0岛'M(ibd(@yޗ e '= A"wރ8»%K#X\sTBdF3ZUM ;V.J +5.nʗ nʛ nʟ |7ޢ G#A"*) fxCV3c0ޣV+ b n 3geIcYMP!MѬ" 9PIYAmnCmn^꧲5JɃmZiruk^`{![>v_CS6& c7R!";e't 9͟16ۛen$ <$*?{+?)QcՇŞy+lpV$HϜ~X 1/_9=58NܽTmR Nb`ċ1rFGTb$eFEG:K ֍utbH#H>5k%Զ@{oMlyM7Pk~GtfLN#-ZD֍Y}A ox^G?!Ii\(6ȫt+g,zM9I`𘻒h6#Q\+(Qj_>.G6ZZVi"71[Xez )VRCj'@F5cD)W⍃-ZqۓԌfcֽ^'('t¿)髋o'ZߔQlpjnM/,{9>5GEIa2qy#d'wJ)ܝ٩;wVQhļ`p~>ӪyT@N0Gt_5vR>C춪"(%jզoN)C!m'PS'{ abH5м,oIXt 3)j$ = BZi$)px6O$]f7&׽Z&>VSzKaK& %2"r7CV/TogseZusKHW@{NF/Ap8t`įuIƾj& w>qG̺ƈ'b>"Cݣ(O(f uo!Ӛ vkj{$[Dhg &׊uΧj@/.!?5I#k2#o oshi41hxWяx54ȫ69vp_[:yF'TP,*rID 9x" =?X-'^\QI[+y\J_@>FzMx , %DMv+ 7x? ʤFJ686&$Fo3+`v⮳@ LS @4yi$I7$4wab>ƍ1R#H#]")u9/MXQ58o8Rhc1N j4k:FQR(FLNiWƐe"и5֡vfQm5zۿ?Vƛ^OWx1 {htbAmClA zԽ{}KCxKy3b֚XU[/ ̎z3?C[^2N!sČ;?[eIK ?a}A4wGPGxP 6Ҵ\,AO>@AA4 B `1r2~3c_+mZ2u(f$Zɕ[Dќ] ψS [c'h)Ӛ}R_ sD Ź@_lFm wc/hRXR9΢trb1ήQ KtTybxsqy.דA"9BSwp\$ͫ,Du֢lX[iX|~m tѴS O_S- ꍚ#x|>" 3 䵴Vr,=烊~>oTN264ɻ+ ?~b@ s2Y]J9tܜn'~ܜo~_jW5ؐLfG ;aZQr6$䪍75lN-ؗE+IQrO3VbJO:W5)@caJ눐"*2-r+sq~ɫsq~+s1+ߛM`q#MX|BI\ރAI$.pG >qBZq b+ MX,O~bV⽓vVbvV̦V+F&T[zO[EnV zzW>Q^# !09h[)ncF#$Yme TBĒKb.I:sko[Z\nQ85|Ϟ+1F`I jћyektCk3sD*Y20kykژuE {AfYdMV5a?zޓ7y>{+IHPڰqu*튄zݤ.M YNUcQQcB}>3㖝=qO \V*hگm$8فR-2Fir=j“XJXsX7Z6Ŭ\kZfС'D" 6/]jx@kRb2uJ) V]Zo)[=FiNBPpM]C"kGƱp{Uvsʽ8_j_h+t0޸,4JAV#$8y]C#5# [? %n,a`嗈5Ŝ\i"?C" ھm&#ҵǝE'PH Pxɕ;m#U Ivg}Ub$]1J>?VRAVpF :1ո[?Vn0uqCR ݔ@ĶGr&+u1q$ETw595nxnO3&|i$isbbkccYL0Y2-k=VKeU: ,qH)TD[<E=y "vB>ѧIoI{@cQX"Ɣz+ JrξaJL#DBZl-<+N5§sHx`$цGHϚzJUZUiQ#KS,"*@YT̋{5*AU 褊 E1Ik=CV$p#d1%dҏpRQٱ5JVĦl=J#wW~)O!aŲқTk"#xR!MqhZ(D>E?Zt:1VqQ~uhC3e=QH@s6dEҎ,<Ɓ/=yTM 0XFM$|&{NPj%s#ϥՋw@nȉyt> GPfalnO1FQ%ֲ]9ΠHO? mt-^PX٘E4RQ.8 ̺F1wj~̵gPn/5*3yK֯ORr!:<0*Xw\M <H:!xx8N^KM:O0^Y ÂFofD呴ɡ_%Td-e3M /t3A~C~Jywa- GHI&-l\ѥ@ϕKeS)QQG4@E <(C3 e6<4(PӌuM?TP4)Mb$m D`ރR͡bn3ư w LWr@b5f7Hm$N -(TÜJHxx^ a53+I=^<_t#eŴdM oI9qSOqKHIHIf19|9?HM55̾sҬa VNF:j| y?5@w<⚉DbmGXQ|vIu!V7WmyԅUFQy>s[T+j ¯W}| /jwT30X"\C˝%R<]pÏΜ#(w{cFIvlRNqkf6jZ6%P-sX~ ً Yp%nf/y;+r~V7 a"iнV}Vc=n.3Q[؀FG1ʭǗ͑4чt޷LZXTt:u,4U\kV FD0Bm$ Xc ̋ <-*r;°1eAnTޕ˓NܷӶ5vlT5%ۺѠ[&%6&qX\?+ eAѲfR5Q#㡓$ 5c"y26 BiPj'FF9ENO(pѡYW@?z5+u[͆ZI?M[79{+tge/eNbS A'6UM2wP=;rtV/|w3O< hnu?g6~jG樱!]6Y(bGuB!&28%jxnF3ω;+q◲_cF>|.5^/ J^jEzߢ/>1En,VaIkq$K3#O%َ`4Ptf!적r^dboq[;d\0ŏJDkc?ۦ?#7IyCܹEm v \nß /eni·n|HܳCqFD/| 6Zdn `l+uȎ_8e6 37enݕ[,[n/c/ebkdw|PvV[7-n+͂CyOOF g6kd:KaDAA@jlnR 穱KRcvGtOm Rc2[#!_=1TB5XloZcOnmn 9@ij ;17̣FxYư I iJ0I ،Wʅ[h>qwAfKMPbfQ'ŎȦ ״Y*E(L\c(i0N"H |%NZAV2jF5>/jr%ŲrtbQIc^9[&A4uiUr`t>JU*E#Q'My#uP@l:F+.8K<@*q̂]H7%03ȣ5/?M.~mw&(xh/xw6(4I|L }4Z3#]/XL'Osayr|^C@vp_[yC -n N#kTN)## "6lr3I톗hQ&Moaj[}jgsW\:儋\LKV.Dfp3dMx17oЮu 5Ӿf237|" N,KѯkZ%1DShֽ_t"T#xj7pMdc` nN.'1?vJ#l̴ДpüFt:Q$LnP4QW\$ 3x5:qMj:ӶȒ' i@~ XҴ\gHt:"_-y#hM0m!{i퉞0qn4;kE'kbzԁ]jCWk rx8adF]y DQlҽ,tL)2#S>R,.Ϥ `^IQ&K#Qf1PqI4 l<ח b(a{W).R) q)=D5Q+Ҡ䙐?8Cn*ƒ=Q>P' 6~Sb*I}[+R"'T^d=gV.0eA s 1S6{ee98Ռ`mbd5mn5csFN3Mr xm+C6V6xu^ }T,F .kt'Ox6EڦC×'*Owe;mhgq2Q8q.eՌr±XvV*gAt?ɝ xk?XO;TIGx-K)6j|@ Ab"8hjyخ&3c!#ND@mjZėeKT;'7ie15I44fl؏jܱ}h-.'rO?~|G~31_O-x=( h+Ƙ t=VoZ`F;t"ÇO!mѮ&ẴhѣLDlnZ7|k$n>j4/>@."G5]ZsSuѶ Hx\uM1n|ocҭE5 ih%״R,R¼H iHlҶ9Md?Xc'hf3ZJTH21P6]tZL"퇓Mnj^1hf8k%i[6^G&{2(̨9o5tL?T2$Cx$zxyGEv+sA43H{7ѯ&!12"A3BC#Qa@Ьh:&}@aw`u0D I?`KJŻoCs '`Wdu*+T53iģ"q)a6F&6 3iM3d ʖɶlgq[hˆYf,Գ7 ܳ.Yqb0cr.Y`?,3ѨV`&C,34˲bptt_+aXb2hƚE nS#T+GAuq}jsh:YZBC!4{qB.4t< ؏RAc ^´M1#iΊYf$L *U#Y5bM@a!=(}D?ѾKp#\vs7iSyQֈ{tk~Pw x%l,-zMF46tNa^ ?B72v­1, -T :Xr"̱ M!MI=c7MZg; fnǕ̎Fr4ƥfE H Ą`O[~7`D_a2v4g-@)&- Fp(hVRFvK8"6;1n6L:2 TQ0)&|VIeEo!ԖHI'}gŦ0A1qAҴ T1!ṋ`m^QJY`F5ĤRJZ]GXcD)Pxӑtoݎ fs~9"Q/zXL'aq?t9@*($a:iFuB3Qֵ?hU&"T_G|۞nIRAp2鱢ӥه (A/hL:,t?h|k307cC 4m Es/K1(٘!1=*ٌn:IR ?DRc5*bʈZ:oD2~C7m & ;/`FU~+.b0h0qV2}hV+XIE1"#QB(@&1=Dja!FѢ&oL Dmi"mGes˗KH 2H\%,B@Y`eAn1 y!`I2 <1ns*1Z  "<̦1q0)1\DL]\sQ)ʼnL U, 61XXe&+'K*QL'L] նAL1̬18AB2BјX2l"8$@tP&I)#Kt0dL{oBq([vWpwe B@1A";*Lg{P I1{G2-^Ǡ9%c8ܹdP'HQ Oq2I0gxWfR!/IDIchHI3 0s7IBlhxOEb>ff"74U$?'t &^-bMYiF.ׅKd03Z* 0 VQK(Z"7r\_G\WESnAfw,`GUrlRA ٜY^⪃ŹH"lI&qUsf(hMRJǴ͸fn|8RyۊV(=G?MZw-6/oȰeY7 E#vXY ZBvB@E6؍0E$2'G] mU>{  ʽ^ѽY?DzL]73t\ -`F$#8}2C~5~e.e*H#LU[;1}LYgQ衦,ō>ɥEfS 8m,I/K*+2@qkZ(Y$/SzdYf'L~dhAG-vf${&nʛ[픚hK&l#-l,,&6lmM D!EfԈ0 |'-w? /)ovK ˦t-I䆻,iwTl-Xބ[Xx)Ƃc'Bf0obIQ68'fHb= NLucvPUi+1Lⲉ ,ŌM,L_r&@z< Ƙ~fb@Mra(4W3tK3w7l8x*-i,f_U31cMË\#I_G]K&>2D`M(Uu,P fsaI$(3<["Kc6 ։L90V֛^(`7'A$\!|O2av  ! 5~ѽ@;(Ŝ3!]1vtUK5bY+m PDr2-DO\* R8Y 5X }+66ҬAOikOs \}p|WDɶ2MxZ;LnTzdf 2`$ Of/M8̰ 05C&&§11O8lR*$͆l16 GSbE8]mHbo2B0+K5qY-  : =WK"6wcb.A&_c5س1Zp1}ix)SLAe1{̞E[1Vя2:d?`xo/LU,c=2Db:7b{Lb)fFT@q`L$Ǐ{216`2{XaT ̾ 1Asi~OE}DmF?y#Oƕ0(qa{/IT^?hݘ>wKd1tާZBA@bi"q$z/â=pUiĠI3t A9\W1s"og'"6$㊨SbM6$ HeⅱMآbXU$E 9"D@,B *K:JfW΅MPE6,egǷ?MXFvBdEȻ{ܢZP2{ reH!E t)J?@.X^z:&A[YxIsBUFZZGLߤGdk zl ƧtȬ\͍64]㉶ 4c)('7@#M1.lihlaV3 X3:Q&oc#9_hb1E< ,I;1oA$1}@h,bM;Y~6mݔmͧ:-K2 ;Bw7gA@$EJ1䱔e=H1q#hFsF8!hliah8003t,yXO$y5͊wy jyL+Bx373g\6#3c3x|`(l 20aj|%Vmq(VmXwK6㕊V8)nDpr/E7ElȽ[jEUao@?!clv"iEe/1{ٕI1X Eh O5hzf5Cha^㟑V Q0w3t e!B لO0Y1Bpr4naTqO6"}/OѴV,1 'w@L>Dj1ֹobUbSq{sjF4oQ^؉}$?FM*) v`uFXGR̀ga)1 !Q0A2a@q"BP ?\Oz<:;\u/J;*:>OⰧ7:)Ox~ҥ=ǶQj5c{ cC^Eiѹ*zO*(=Gn;(/xQS㵏GTҞ}^K (cCC5#R5HԍIj5 cc.JEE*/gHESN;*k 7(EsӇׂ㹥ӚW҄(LL_&ibpn٥! f{5Є(eCo*] c{j_c8olniMO(GsSXq%e({McV;|f hhj5!]FQ86s*YEi*E\u#߂ڋSk X[ƜvjqY\_*(5K=FPFTj5FY3QՍJ]~(e}WۣzGe$Ȟt/YHOV=N+kMtE7OēO46Ov~WF3]^Q/>o{J+Hz"֚'7)(~ >(-qTU]2~5_}ltнo%yDzZ"uݗ=渋IU']Ǒz'5[[ؿGLk]kt)rF+}J]B)rDuD/9!+26w5El\PjPhfŏHIŜYf5M?p5LnQzO-"f|?OGtc )NkCZM.Kd5՘>z:'F9tU)o?y)*>4GOe0z_F>M*3 2esxTKn[NS$ $h~˥Or )mI%۸ض4;ɕf5ݏzkNO38ؿ$q\+JpQZ)ѻ9Xגg+9d7{7Bדv*y ټOȎZ5|9NN9 Of5ɽp4 'clxFOzE#MwI=6;d&~WѕMVֶ&lhKuRM3]n-.7}F_^ӗѢo}*_-5~V2蕣#4Krl~ҭ$L1넞3$]1b$f,j xEvKOߦ_RWL~kII1-EZN=f*Z{[OOРޯQٓјq#+m'ooT+"Y/$ĶcKtfOR_JSEy\[Mv%?ҡ):|rY=5R˷ʙ"4'xӆRKj*tGP֝6Si$Ors9S4җQxqbˌ˭'4_&31nI͍>2*֚Pn>1i<<4.6^9K. 8IK\O3 >PN9i 1"%NIJN 8@Fȅ2)R[kNi 3z.M-,P;L1/i4GJb[^O̚ɍ[PHIJLKsFH248b/)o1>4'e1_1?/%khj=dIYǑiU U_TO6ͦ.{}ٳ&rOOoY'ثEG)x_1!V_˗3i[L̜-D۲k7FO'鷶'Z7Fv}y4}>GؽcJɓ]VW-=®( Z[i6T…",T_v[~̞8nKI)4)l(vI,?F)]zKJ.^ikr)yozʊbY9$p[1$'-#F}I#/;bCg{4?[r%*e7OINQPڗ"3㒛?ډ/u_&OF%E,b0oOh%ӶkF=jJm%:]W2G%W(beD)ZL 2R9RM7oPT]ZJ>K)Ύvs޷dLU+!!!991\p.ܲ܉?wsYe8ekkHXx=/)R|y5/I'K}ɞNzlmiJr^6UƱK-M*]BWJ4j#elodޞF7&beЛOLF7KiJҫǧ\|iU6Ezd]g"M_y)$I$9GOY)Z6cB^dL6nZ?E}) cB{^rU˲fEMoJ<Я9PZb&r!91[kMSL:g&[rf7^hk:N?&f?˧k#ޔ)Rme_R}WE,KpMc]ۥ*'m=7'뢖ʵ+IJUN[dz!Iu{,.魤W0DlU"+}_SOJoJgFOTTob[t.U73/zzfE).􉖻kgx}-> ľd?ȉ9{PNxf/t386JkOӂ%S}ʕfOUҥ[F?4U)]/WZD&?lb~81cO/U,S6 nx/O6ؖI)b7&m)Q(Q"A\Yo#pSAbLcrJAsLYdYYmokv9VX[$|(so⒱H`xq;Ig#,0|0TB.RHppSbVw%^)_0BwCv^OK6*>Hk1R;G4K3斩[bȷg&sMiiiuE7]qBvna6?*ByD1m/\7<ĒEThHnen{=ufwUqZ\)BD)B[ŌVGS2#^Lx)n5d1tRLd=).d;l2~ R)*4-jLrIT["_jND=5Vb1c᏾OR|!kfOC"DKolWgF7H e/ڗe^޺?|}."iO"_{YKdӏ~#yO5i,hR4zڨK^Ѣk#MK)|RI.qC6ژI$.SBu?VTJkBϑdQYX9*rum|)!NK;9X')99f+}uߏ~HS{AE,RJƛNpz6tSM:?orD[9䒸7fw'$[OG)DSG7 $y$vdZS'74k7~F,;uIޕd-sS%-s*H$'ׇi#HjemoDhr#'4jfvmq鴆1OK|Q0)"|^ᘼ؏P1='tލeIbL셻|%{FQGll S\L5ۏ;kR"߆>lt6`[ߩ> Z2z3_}OwGtI$#%4ٓ%O!ٓ͘wk"I-=$]+ף[D}M$G=tOg̗zDFG ӃRD!tIJf -Qx]m[rI%ּurv6?dvIR-#ȩnY]F6M󃜊4Œ 㽦*T8iB])|Gp8#㓄%xcCEGa%WďHQQpTɘ2|p|p?dnv8I)ZGߤ&qk#CHƧ´F7U$G7ɷȊ3%≯UwQM#ބ]Yϳi>ϱ>ǁ*#VѶy󶘛9QʆDUqFi!sG<,1;kyKKz^ ]jkHO]gۭ?IrHOѾս!OPOLe#tiiLR|_"<؏9JC]^ :&_^'}S%-l]/"v&MB#Dn"*SDS<ٴ+/h++O}?җZh'zTԴzяKR/=.v737U8I_xEɏOFI>oo]kYuI$s֗m89qƈ3~EJ#)V׃,1Q !A02@aqR"B ?.vp18qsx2qOl_VT *^P(^+1 Guo[ËKYGta1j˟'O/ 򭵌ePʊeMELcTwbMMLY۝2>ʜZNw m˙8SG,w Z^cxb6=jwp+Q !E1E_g1 lRwrҜ9r_x^q =|UEO[߈u^ v>E]=l|ݦֆ(c2"F2T31v[q<,xMn_f|&0r\f-<ͶQ摙Cc,c11 cزBf}b_! Pt"$!jJBBBBkBBFb0ZsڜnMF&ђhGb-]\Zr_|=vXeYKnut[B3|PH!(H441+,ɒ۸B۬ab/3[2b-F"=qÌ{.?SS8E^.gNi))Ԥ.D!B>FTT1_O٤b;/yσmrS圳'ʝQgg=8Ŷ_gO3v[>L;٘8LLLRBbb)n)e,վ,B!|eyg-KO}wݝܶl\l|)cfbٍlE'ʩ1;o80]'ڛ}gg heHhʊ=QՖMaM))#*.2=ʱvX9W-]BBБJ6xg17~F'`ȿs}8~ z.rcSU!118LLlRK)ФQJŎ1 uw-w랷]дYsT]n"}x.E'sg",0YZ16O6N'{t]q9BIIAIIILPRRRPPPpRPRRRRS3T7?ٝ=n[J8j0_C'x= Y0ㅉj=8c'Sk|JYH)hB!"!(HJ/Pf"h1zzYEuч}Y"e{= wqr{:]0y1c1H8Lc#cぎjÌ1 8WBlzo{8lllz1h8NGJZUB E1H!GE%%"\2lE2uތ8Ox=nwqpM? endstream endobj 28 0 obj 124275 endobj 29 0 obj << /Length 30 0 R /Filter /FlateDecode /Subtype /Type1C >> stream xV XTGdGQAecF"xx"j(h7ߗD41dwbvW\$W]GX;!3wtvة)ݳƏTP3 O? xXP 5dpψZ4vP@pA A04͠'H a a lmvN"(6\[ppHp}@7<@3z` D Z k kam:X:Љ0AM)`3l-%b+lab;lpN)8t39q9j\V܆q]^܇`!Cxsx x/eU[x)LeX֖cY"X_֏g@6=&lr$6g {^cX>[ְl-[ֳ l#dmcbcl?; AvfE#(;Ǝ vb}v}@$բMu.#ԀI!ANjD5@ `jBuHXAqO ԓzQoC}4Q" !DC)pAOS4=C),Q4XJ4Jq42(hMlʡ\Di Mi4fLzflCsi|Z@ i3mIh7 h?B:H0Q1:J8Eg7tӷt.%LW;J:ݠtnsƉsnf}y}ހ7~rNވ'xcȃx0o›ތ7-xK[cy*O|o*5ZI"tj5G+U/zK6Mb+ 1C6\xr%Ŝ)J*dTF%f2,.zvE!4U'7]yмhmv-KkH3bAkF}]:hyVH,ªyiUe;lzDie-ַ@|Ajͳ".mZu BF`~?B=r*aMF@ןqE.EU#Vd(Wew+,zwfv1ŵRh>ܖY:zT^mդ%jM4O-îzqqLLZ}-eBU^5nI/T`&Vwz)1tvW1u3˅';N*.?1Պk!e0ZQ,JDV7WN0KGh X58.A+#yrRTdj^ǪQٻ_\nI Z@+o h -4`C3pFM4}|(#ʽf'٦)qlxvk*{ZlK69F)P&IYl:6DͮFGPCrq 5:ka v (Bb8>>  Yy.E |W vn* ܁/w%CMb}l 1;b'쌑bv1=01{b/}/8 L8p(&Hq TLt131 'D 9<"\Kp)k|:\p#n7q3nœEX%x1> stream x]n0 y CvB &Ni(~v\u_CKq{q&Λ|Ut[OcPuI8Ϊm '3A@ F/: !>A Z^ mohҺ%۟s |d%=\¨1-Zk;U{jkMҲBl-A@ܔP~7ES3ao}͑Q5{/\37߶kM <-́]g endstream endobj 32 0 obj 284 endobj 33 0 obj << /Type /FontDescriptor /FontName /YLIRYG+Inter-ExtraBold /FontFamily (Inter Extra Bold) /Flags 4 /FontBBox [ -897 -323 2583 1121 ] /ItalicAngle 0 /Ascent 968 /Descent -241 /CapHeight 1121 /StemV 80 /StemH 80 /FontFile3 29 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YLIRYG+Inter-ExtraBold /FirstChar 32 /LastChar 89 /FontDescriptor 33 0 R /Encoding /WinAnsiEncoding /Widths [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 771 0 760 0 617 0 766 747 285 0 0 569 0 0 788 651 0 0 660 677 0 0 1064 0 744 ] /ToUnicode 31 0 R >> endobj 34 0 obj << /Length 35 0 R /Filter /FlateDecode /Subtype /Type1C >> stream x8{\UU_gm:rl)) (V/TTR)Q))qƙaM&QiYZQZ9SDsirnVַYWݹ{_(PJc,鮙L+"T!Pv'hGQesE|^*|ն!7JI' Zua҉Jgxi;?'NK,)7iEJ,*~wƂ‡/I/_jbn;s̝9$q䢒Eŝ)|0ʐ8F8QJRMOfRM~K~G~OjsdH'fl%/+dN^%;(9FZkj(ڕvt(Fq^ZEOҵtm/q/# nd)&֛alFt6e"VVJ{fOmbٛl7k~ރ_T>)|*Ƨ9|./|koy ?k^7owJ2X U)ÕJ2Rd(ӕJP)ReXyTY<XclA}>UOgy^}ެww=}~X@PH?bt5цψ16bFo H0F1՘f,6J2Xf,7VMch62;ƻWIq=Ghcx<3۳Sygɳdz׳y˳ssiYϷ<{y~ zBqD'E!z>"UD1@ 7[D1I+!1_,b(ŢR<&+ExB<)VjZԈIl[VxY"UC4N%oݢI{>,'UM]|*g8+5W s9n0͑(34o5o3GYvsm37'S̩4sYlfYf>l\bK s\aV+*/hvh uu7]oSg!2*BU]$Y.[eT QAWB,~7B4 NgCW eʞ5;2/]P_9P*P!e nMPdf:N'97$%oΎ ZheO6t+4U;m<NjVo#*vVc̲l6BL mmOnKN<89mi[b\~eev>jMeD~Fk4D_uWtr,6'iڸ#prZngG I6jLH+QRN ; ̗nLj0c ryf`d ЬDžLR.-< .+[]Ͳ-v9x@m|-$G}ri]7ڇ•\UhbSN,B9l WIHr. `($ :=0D Є%Nd|L(JYڣH٧|o@>4X.PkG2THh %E2R,f+Q&Cy'K\*7j6LgZwY:\Q`<;|Pl^ͷiPgʦ=Vʩ^%Vq.~5̑BeA84Կc! tsY, ;gK&.[zm BSgIg3!G/^L{]QT8W rl5h@2 FtpLJ8۩d3r8v]B L"{xdvBAE3rMuً^vnuJ:i AUIwES&48'k2T(#8Y" d2b\ &L]NPP~4 rx"]{l#v]"qtD9hvbS}Ivu4[6;^8eN9hGvn"t**DY0C|_ V>y*)S{:h_eЀ !2{N*4h! WFHA.%ɍy˾32pR%^ƙo6^qe\k>p|jgNÒ8)+M9_~4Мx 0(Wd,4 HO.;e/Y'[Mη{\f.Y%~ J#f +56OZf/JS݈F|2ѻ5Y#!W{va*D{vljL2f_ |$SZ;urZ'6 N7{R W}&pը 2Q1F M$`Nx5*U}HLqb,SZ0(ipJw̲dɄG(![>tcP3^>'cQ^i Tvk1Htײuښ/8YVG.͖/٤NcAWйLZo-"4jPP2qi[r賊@>"O$y ivL hVYy:14crSR?ڱdņ>;c4|mjQ cw7<ڇA{(H}_PeY)$%IȏjB>!" 2&q- EgpuYjgw h޸0vBm]v/._05j0D˰lDŢx&ILU %<w_k<"][ny?+K筘m-0]F)ߩo+ [qN\0Be,tn>}ZJ2 fߵhF> ~WF26@P,֣G9"\JS}@C#&74mЂoz=x{4 I›{ r,}3(6&C a9CmblK٧кt('"n߇| W-\9%S%VE NPn!PInC5J2d<*DT)d!ʹ2,'H-i"{{}|R|MNS&A$ ukz􈮠^z5i^pI{dԉzOЁ4z;K8zOs.:љtM:Σt]LOZ #i=m{^6ӷ~zow軴Gߧa~D?ӿУ=A_ӓgY-~OM4D%uhvD:[1Yyٕ ueX4v5eYg ,]z^,9 -z=Ȧlf<6bY>y=-tJ"20[#QUel9[Ūjkmgv.vdo}f_;=;)gs\:7x4t>O?Ky_ƗGrJ^şOUgy_gz^ğF<&o[Ke ƷW_;|w&|-W1/ 74?ϺA=??r6aRBκnAߕ!Йb]i ^;')Bp뎑 Y>@q>)α~_|1h>#2$K7&~_Xʲ43@7cZ1?en0ڮҨms#G-!R\?ujpu"չC)L 暔v1c EC~Y x|uDPkV /"ݼ:)RMBq"X%ť?jnud/rQ1ѿ ,]Z@A,$.?vdTXq<Lkp?׺G/9 ᚋtKy2CVDXu|J.O`5g|[6CF,|.B٭;di-e%^VXHk j HspM<pR4|0P/0(a i¯(nʕy<N.z4YT/j_ ֥Zz=RD-Z]_+/W8v3g"Mp.jq?mȶ endstream endobj 35 0 obj 5158 endobj 36 0 obj << /Length 37 0 R /Filter /FlateDecode >> stream x]SA0 :n ;d6ؽmѴ%:5؆!R3U^O{Yҙ77Ns.|[%2λ<ӵ_ZϏ<.U׹޶pO_29W+4_ӯ3R+ϛke[~j+~>e9dzc|} )-ok󅫮ics,P2w_.6k? 8G1,AyxL{$@xq/8(&'OC'6)&`ƇfR-ǃ2|"L? }H8#jԻ^3$Ǭ*h3΀IǨa A}ft&Akft.Q.Vt/EVn4;[U endstream endobj 37 0 obj 450 endobj 38 0 obj << /Type /FontDescriptor /FontName /DDZMWH+Inter-Regular /FontFamily (Inter) /Flags 4 /FontBBox [ -738 -319 2583 1090 ] /ItalicAngle 0 /Ascent 968 /Descent -241 /CapHeight 1090 /StemV 80 /StemH 80 /FontFile3 34 0 R >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DDZMWH+Inter-Regular /FirstChar 32 /LastChar 122 /FontDescriptor 38 0 R /Encoding /WinAnsiEncoding /Widths [ 281 0 0 0 0 0 0 221 0 0 0 0 279 460 275 356 625 0 0 636 0 0 0 0 0 0 275 0 0 0 0 0 0 676 650 727 718 598 0 0 740 264 0 0 0 889 0 761 634 0 639 637 642 0 0 948 0 664 0 0 0 0 0 0 0 563 620 558 620 582 360 609 590 237 0 544 237 869 585 596 609 609 372 522 363 580 556 812 539 556 541 ] /ToUnicode 36 0 R >> endobj 39 0 obj << /Length 40 0 R /Filter /FlateDecode /Subtype /CIDFontType0C >> stream xgpDA Q$(*]TED(+$$\AjQ;6슠 {zGh!37lyov}]X G;8QoϫSl$F$Tzӂ-N`ˤil4y Mx K)`jp!Sj2\ .rf29e[۸ýB!f(8O$O4ϰgYRy^`,E^e^U^u`+yxwxU|j>#>>3> +ְu|7|w|OL8cf|SLi[ 32fmh#c;M]mj̐mn=l޶`G;}vy=jO#,HhX~8ɞ@y=b8s9‘rVX#Vu{g:γ':ɞy^/b/کNs:˼ܙrWxWyX^:^ M-mNn^sG||'|ҧ|g\.q/Z/o•[;*}?p_k\:;'6fֹnr[$>| H @P2ʋo'$4HbkuErrXQ?}V奖 aU 6hm|mMڦn5kcY[w5N.k8f`FM0:Nm *ji;r7lI:v S^ endstream endobj 40 0 obj 1196 endobj 41 0 obj << /Length 42 0 R /Filter /FlateDecode >> stream x]j0 ~ CqsClXrjhd8't0 O 3 MaKYUg@oޕێ&*n-W$ 1@xsQ78I5 Ļ t-fݧ嘱? ΥH6 MXj1wwa͍ŽWn+Erd^ˊ!T9sq5 endstream endobj 42 0 obj 221 endobj 43 0 obj << /Type /FontDescriptor /FontName /PLUXVR+Inter-Regular /FontFamily (Inter) /Flags 4 /FontBBox [ -738 -319 2583 1090 ] /ItalicAngle 0 /Ascent 968 /Descent -241 /CapHeight 1090 /StemV 80 /StemH 80 /FontFile3 39 0 R >> endobj 44 0 obj << /Type /Font /Subtype /CIDFontType0 /BaseFont /PLUXVR+Inter-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 43 0 R /W [0 [ 994 460 ]] >> endobj 13 0 obj << /Type /Font /Subtype /Type0 /BaseFont /PLUXVR+Inter-Regular /Encoding /Identity-H /DescendantFonts [ 44 0 R] /ToUnicode 41 0 R >> endobj 45 0 obj << /Length 46 0 R /Filter /FlateDecode /Subtype /Type1C >> stream x |TEz&0 2W(GB @@@䌄+ A n;Q߮DNQL%Oa=ٿW]SU]@)U%~rzR#H[^4|d<=osAim{Յ԰Y}ܪejeVVR9(>p|ҝ}R'$I>>5mZdZC `;:B'Bt'G7Ǡ/0  C`( Q$hs9`3l \o"|% ? :܀p  CL(QQV-U+ZQmUjګbUO5@ T`5D UpNjڨ6jڪCTnGT>U_onbe( (Q&.L\q |K2CxG(8 | _7&~/w=^^x @?P,HT!/(5ԌS+jMm-P;jO#uXL]+Q7N=(zR/zzSzR?Oh 40N#qIQ%hCDcid@idJ)4YZMGkh-|ZOh#mʹ6N/Ih7 h?zi:CgktnMEL)@B&PnuOK?{:MOzO:S/ҋT/Y:[:Wz~Vu^u:_FIo[VMo/zޥw=zާ ~]A~Yow?=.GcT?_K}JgY}N_7V_%}YofmhhѦ.ѥͺ6M5IΙ#M ، Jm|ks.rז\9"GdK/W A tA\l.-rܨÍ9y.EQeFN\sRd:y2Ji<Ʋ?WCv~{ru[-Ay\Xe(w=2Uֱ֕vnC^ }/LΕ0⬣)6Rc/SS>SKPz.L {p5/Y]֑,(d \ |DžqoS^YdmynK~^.hY*6Tky eIyV&DgfO4-o]peEJ :]?U_ˑl~y]fș ٹ*c;tq{0Xyc|[KքKIZkzɻv9_FSx73ٜ ̰YHmIo| :4b^lOh]d$K=y7":~l&!Mg#U9c;ρz;<Z[S쵿 C29'ܶj|*wۭoA-]ジ7۸HDo dp}S<b ŪX ñ. !F6ƇlM6H-6c;a,v.v=>>}8`Cq> 8`"&X1'D|gLOlsqe٘˱s~ DABU(jTjPMEN 6G)PC#=H!j|FRhj!^A3i=Eiͥy4P=M )Udul{y̩G1yͮ6Vή쐍|NR4r.#%,tq}kV.,_j=bο>9б]:+@2k1]9cgvq ɝn,r%Cp1>y.jg˘ǍG ,0UnY*S)}23J> stream x]n0 y C$U%4u=Mi(o8:i/á8wϝw+q=`75GE%8V!"5۲y;#5n{2o`t~׹T '+mM۽ uܼLuۧ?d^WlI0hQ4eBcm+Л5Yr!6IZ)$>13 YfN!%%YSV̊2[a$⼢|]> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TDADYP+Inter-Medium /FirstChar 32 /LastChar 117 /FontDescriptor 49 0 R /Encoding /WinAnsiEncoding /Widths [ 264 0 0 637 0 0 0 0 0 0 0 0 0 0 0 0 645 472 613 644 654 620 0 578 0 635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 567 625 587 368 0 0 248 0 0 0 883 597 602 0 0 384 0 0 594 ] /ToUnicode 47 0 R >> endobj 50 0 obj << /Length 51 0 R /Filter /FlateDecode /Subtype /Type1C >> stream xVitUEK^&H"˽HB&a%,a%D@¾EDD5J*Q\PqΙ3?P{_}87!(03u[.cse't3EDp~5`F#O?FNr1.Vr`+Rnbd'q!TEo^1yy rCLhؤe޾]|C3ro/'{aO7ܗ=ɉǍ=rDViR$_Fְ ͞F {"qoNUv\cRBR(UAEQ5N5է8j@ S%RcJ&ԔQ2PsjAԒZQkjCm~jGiԞ:#4FhzKh?>#@EDЧ}N +7J]#LS)YdSnO($@7bC !< #xa28bc'00#D)C||&">'i>g-~s.}.C/|/')Ɵe,UDHDIԕzR_⤁4F/ (%IHSi&ɒ"ͥKT&e̔Y2[\'eBY$y/e,e\VJY%eu^v!;e=W~9 CrXrT"9!'i9#T>|!_WrEob_JRa WUUUEHSTuUCTUQ>UKVuT*N5P U#TjTT5S*E5W-TjZ֪jWTj:x^-"돏{oJ5/{/E18^i;Zw<2#3n`;8bOn4#fqAVVm-Q7:֖oW[eyyznfTh$*WG"$kf-۠ݵj2VYz?݁T'D@~cQv]l*V%k믇ɨ0FU,n%n6oW3nW̌Zis6vvq:ln17a3+1gߺ9-$\]w3#Ns" l8\Tᱵ2w@&G?g+}ΰlhǚwW8Z*t"e؆a$Ì"ˮPS[ Lr 4k# @Y\F뺩yDwTcreq`t4;rF8L(mv]*?诩XW@sv5_bn\5uyW zO/vQ0/˶˼궓\kF1[ cNS6W>A֩}}ݺt@3Rm; ѩ NůT2BMn1[G 1Fsƅ@DP0|=̜"{Œ}=ah?0^Ѣ'̪,9]I򶽜Z=gKw=lSisԴ ܁6 H@"# M͐\Rm:AW`®聞0(<pfxS00300s00 X iګUU?g5UV*uVo.t&$UDu'H;{%͕TvIz;'wB:[b/_! endstream endobj 51 0 obj 2401 endobj 52 0 obj << /Length 53 0 R /Filter /FlateDecode >> stream x]Mo C%j+E>l? !-rȿU'~xݺΚٻ_dl^"8+~J'22p^D@A5W$ { n=KhmA^:Y2;Ey#*>wPs-E~&[hnZ/WTlhJq\eb eu|,edͬ#u\X?E>3c F!>q|RcVrƔ>('NX|[\t ⎖ endstream endobj 53 0 obj 287 endobj 54 0 obj << /Type /FontDescriptor /FontName /WSRFQU+Inter-Black /FontFamily (Inter Black) /Flags 4 /FontBBox [ -949 -329 2583 1129 ] /ItalicAngle 0 /Ascent 968 /Descent -241 /CapHeight 1129 /StemV 80 /StemH 80 /FontFile3 50 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WSRFQU+Inter-Black /FirstChar 32 /LastChar 85 /FontDescriptor 54 0 R /Encoding /WinAnsiEncoding /Widths [ 198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 795 0 0 732 622 0 772 750 291 0 714 571 931 0 795 0 0 667 0 686 721 ] /ToUnicode 52 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 2 0 R ] /Count 1 >> endobj 55 0 obj << /Producer (cairo 1.16.0 (https://cairographics.org)) /Creator /CreationDate (D:20230323013119+03'00) >> endobj 56 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 57 0000000000 65535 f 0000218365 00000 n 0000015119 00000 n 0000014844 00000 n 0000000015 00000 n 0000014820 00000 n 0000201202 00000 n 0000207660 00000 n 0000015583 00000 n 0000016607 00000 n 0000214407 00000 n 0000016694 00000 n 0000017080 00000 n 0000210308 00000 n 0000218017 00000 n 0000015352 00000 n 0000015492 00000 n 0000015822 00000 n 0000016063 00000 n 0000016520 00000 n 0000016542 00000 n 0000016977 00000 n 0000016955 00000 n 0000017469 00000 n 0000017366 00000 n 0000017343 00000 n 0000073413 00000 n 0000073388 00000 n 0000197901 00000 n 0000197927 00000 n 0000200512 00000 n 0000200536 00000 n 0000200899 00000 n 0000200922 00000 n 0000201560 00000 n 0000206817 00000 n 0000206841 00000 n 0000207370 00000 n 0000207393 00000 n 0000208154 00000 n 0000209456 00000 n 0000209480 00000 n 0000209780 00000 n 0000209803 00000 n 0000210070 00000 n 0000210472 00000 n 0000213691 00000 n 0000213715 00000 n 0000214111 00000 n 0000214134 00000 n 0000214833 00000 n 0000217333 00000 n 0000217357 00000 n 0000217723 00000 n 0000217746 00000 n 0000218430 00000 n 0000218714 00000 n trailer << /Size 57 /Root 56 0 R /Info 55 0 R >> startxref 218767 %%EOF distrobox-1.8.1.2/docs/assets/brand/distrobox-symbolic.svg000066400000000000000000000022201474517124600236020ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/png/000077500000000000000000000000001474517124600200155ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/brand/png/distrobox-dark-mono.png000066400000000000000000000373141474517124600244350ustar00rootroot00000000000000PNG  IHDR V%4bKGD IDATxw-Uyg]W *( łD )*%F_+D%o .1 `AADPz[~k0˚{>|Gn>u?$I$M1`_IGSH$Ivq'k:ء~J$I>pp&k 8ب~K$I M`1K%#$I4Ӏv0,]I$Icl |XY8ax A^]]x̕H$Ij 8ppp q66n/lם乑$I"٫vٴJ]6s"I$e &6h' ?أs"I$efR בk-m!%a4rUF$IRKԶ+/>l96#0ȵJn;6I$I#[8&z88A'M:nI$iQwRޮaRP؇tI$iAySUMtݗ9潉Ċ>]CȬu_$IxpF L]7;xl$IfpSUߐ2 r_6ܿ~H$I3XzmԷvݗQ-K$IO"b=$I& ATb$I& 3A &I$M $I4qX f $I4Q. <~L 7ݻ$I*`3rj; בSӮu_ x se}$I7O_]88^IO$IҌ6'`-͜t-9fwWUߺH$iFpw s#6/*lHrG{/$IbyNwݏ/y 9UC$If = BV  ػƥ&%Ip`y=`YXȸvǯ*#'ò޵rS$IS X @`rnV]ca$c(p s/%'tqJ$irg}hJ[vӰaǀ={_ $I9 :6 p~>_GO=vaedRU{cT⅒$I pt`ﻎyك3:?:XG6?5ǀ(8:vI$?p8O?ș8-vSej#R %V:~I$ܰw׫|>T6&/9Tx 7G6=pSA~j\lu$I2 |wx.Ar':s~oF6??[~W;"! -Ʊa[ǒڊ߿t$)AՇ`[O֝`/>EuQ|x-+?=p3Jo1Ǹ{|i6_& ?'+OX?<~J ' + *u.6A.!g:5cd9-agO}|9pX x͖yM}5LxBΠw$9 6GYIpN bwmm Gsl qoJ<6ޔ>]iчRguY' 돣Ҭ ة eX+{2Z[Wާ?ur€<p>]B wpĻUm^ۀ-z׶V躿 N@ y/HZ'&ebo=e$B-r{QjLy`)vJIݔR/߳N@(lrE ' #å#.Uز2qw+%jzs>Kؚf@HSi_ C;hs8a,J7v^Dk\1NG)VQ('GC:a`;FDj$ImXu6}pD<|g-) ~ƈx^Ji8cI)>㏊\#Nla۪4)%UXɲU)SڎG;' i/WGsEĿ{?yȗce)t /xOL^]JWv`Lj8uw8IjKoZoMޝǯFĠJǦ>;BtL>"",F8.;m"IR_WD|?d "#>?sIDjt8."ӷbޫ>/یG,^G"}cR977~GVDqbqADh Dr8R\~/ݮΎ{#bPKRJF#""⺚+򾢽RJ;$IH.~~ "e%q3 ئwWvt $̋A^9ELzEK}^ <W,NwtB!U.{6 Q#.R`9kv=qM|i&}fN@4,Z8K:RnJ)"vq(pHDunH)U'{I$M)'DĹ}D AS 81~;ˆ8(ĔҰ%I:dFNyB?"~lAS 8&"΋;xcDR:%I,: /""> |1rF aII)+0K#Eb""">G. {DsDl9E򊈸5".m]9+ #bM/DG<"\+}DE.huD>rc#b)"M#v'"|ʈED\RŸb'rBϊ#7#/EYR 1rv~wCϿ+#?]L5.C3迱7T| 9r}.\[,wG"pwᔈxmJx)8ߏ/"^O&wDGćRJߘwִŖ)ka iJuxXD<=3F~S4'E)+sPU6GvU߻~RЀO3SJGV8(߀zGKGğGğD)rJֶb6"5_M)il{pcqZDGD|&t{Y#'y\DE#WG?^B]QUʈxaJiuEkҗԪA)VZjg'viInme;_^ R_ji<8uǜX,u| xpnWY LaAT-4"c {ڼc{Ur+b!w Q`6bYOw65qCpqx Ϳn?߫J~[lgQ?QZrp I[}pp{G^اjgZnE"lH{~!?56po>ns8/{>'BSSK>q-`787iR3~?SZ1wg6)?F]1Upu x pᘮч=~f& z*_FsM@]YmpRUcnd}ߝUcjXiLA~RwhS޺Ác#WxCؼakRJNFG1BADR:-o;&*I(x""> L)-D GT6"N)"֍fxtDu "KsRJ_j- __s".r6|-v'㠈x@1R}iOK)I)%cGFTsS#4?8gS}O}רoO]GPl{Rm}' uEРx5kZIL{ yBW+ xkM[sV*b8O+w /o-9}_Ki~m%M\_X`2>`}AmTSaD f1wa' Y Xœm#\D3-%7O@ ښtI~ڧsii(ٚ6NŃ_z6ڐ:쀏ErXLӡ&&8Gb' UӀWpA|=lV5'Z@|6kk=B ߁Mx_Y57ݮ>@7>M]]9(VaHAW1iI pri>ip2KOfԾ Q޻5,j;S;Z)r:l5K?i-DoJ.ojXvZ8J @J鬈xLDNǔ  Nyʂ=_wد)a `ZV%?pޱ&o|?9i@r vd$ZEZZ4= ۺcԶjb Vߍv4/#T\{s0u`ƞnxSM7D'x9޻ڎ}xo[lcW 4oLB7j]7 Se%=rJ'~+0 H|"p+#N{ha.\ =RyO@MKz.O '/'YY1,#?LS+ &S-VDA ˽U˲Zx63w/s)𴮯(uFE.Y_mOЙlO@ֈe]+WEIFa`ҋH+Q8}\WgJ`H57Kή6i)Rψ5r-:ADD|߻vmS;'NU aZ ǥPR\G|DP(ukGc[h+uO:q鍋B_[@JxqD\WpϥXGFD^S#bj$tW/8I""J)RjyP뮏_^mab/jū"˰RJE _Jj׎\PQ?#mߪz׬WZ?">BoIgDTA1"RZLcDERJW^i]3gGľ)g.:V;)X/ 3K$ iםܻ݆-|-߅|}ԚU׏8kGQ5Y.}J)}6">WEȉk>|J)4:' j$tNGόKۈxiDRt*m_ZJ(a"⑑HOD\GNy h_͔>:DDlGSێx*vqJjY]XxtwGzz|JScG#r2u CJ#b{#n86]SJq*xIQ,,ov/ %p%9m3)b-|E-Pz;{zoUe#4&\/gMF'2"mǡrN@f "}]1_J鶔Q)*0+y);VP*"RJgDD aC&",s _ _aqLZߓADT-i8vUű^D8bJ63ۋRJU@u z5֮RMJ鰈?"~u<# "R:$T HUVXx&"NP[^@uIDAT"I<\ۧ"A%r%ڼo֢~;׫z˯pmK?^O)}}1v7]Q')WwN?EN-{JT:(z#KnzK.ua;d2UMژL1^mX^#Fh> ꤔVqg!iyT»1+L*]3Méԛ<;rIڼwL텬*+аZK0yMiPQ>Ö|Tͥ>Wn˕Q?eCN@f_:~RJ7{DTm99"N)4tMXI)H)6" M<&"v텨M4VG=5\]cجG9c̴i̒88@I)]R:$"8"RzbJʹF铌Q=,z)"eL>6q ]d(l|k&8nk-ɫڌ=Ӡݴ q33"?^cA,"Kd{E{q%r{)0.卬H)ݑRu$""N-"" idf::| Vk,׬wSCqYqS׎pcĘ9QTm$"xdj&xvlTd¡L)7U;gjQ/WRJ;DQQ>ispm.ݯu?j1IۭU˅9kEv=?i`݈8."tuDDJ񅊟1"fL*dƥ.."NlT{ ` u{[J)]RKy^T9{xAD<奱O ȨauEu}UR?xET/}p`qiD. H)?"yұ#? y\Jj4:}JWmIDiD|XfVIV=j[o~%O)6H)Y;\Qo@.gDQ^L{ Ck>mXmT~5q)kz2[Q`um'Mh4#`Zr3 t&~ WG%*mqˆO_1%P\|~Qد{5?w4m&s)͊¶Z޵ǚ? +{q\X.M.pcELjMk}yݗڊOs RUDC#]}@T]RJDķ _{;##Y43Ȓ_V2P,\vw[(JPxXsuBD z}kD ՆgDu6#bn^aO82q.(*̣b^ZxT yoDTMlVo1yI/1 :o]Yp[0m kL^2MGmC^RHˢ7J}ڟ%X\ <~~0NiϪ*`" e5}_AMY5n3QmmSs >>Vsha4UjA6Cܖk4 :o8B=oe^IM~x`=93g& 6>Y5F<+n`Q]i<|>MA4VΆmРuד@చϨ9ɩjǎ|5q<'km xUۥUF_^~==Cc@槶NƠ6,=sp nnsqd@z1!Yxgܭni9w}$ ):9<97#5xڰ#sRԆN`Ƕ0 ԴV ?O ?V|.̈́_ y^NkR8b͖LM@z԰_?H3p^ǿ4[?Upl{Z' q[nZc M?cj1ٯ*TW>i?Uj1?ncR̚7 ?֦p̂6rI(88fYJqcDǙu'괮];="&1&"N Wr")6k"_ "N}#"2"^B3oGT|h!W "Hr]g!/};x_-BGFc _]1W)+KR:;" Tաx^DXxzJ1+S&"N!? *NSOޗjTW{1"^Vz*)"JM~D|8EC#Vo8{jU="M+u^ViQviD|(M.MG|%Xg連v J w4ybqp>y:]`!M[n(|T.Z o9G_S|} 2Kֈq+NIiqIKCާ{/dĢeIӯAm~2.=qϢ~4TF[ִfnO>:M;T?53w^-klS=鵹e}S;8-e& 8&gVʏܧ Q=7^Nβ%kdv6'?[gA?Wٯ \3 ߒkl]s!M-5m\lFm>*r3i6 -(Mb^k뢟u_ȃq= !y@G~k7NuT0j}Ƀ6]ŒL@z۬@=.OO k|SF;7+6E ߵgn^ROu"@W7ٶ46~{[lg._EN]K~F_I[^R'wZG `q 2ga;' nh^L^413S5x*Yyi`6cӗmZzfpҋ{8Wɍ6Gч +~nmӾ[*~mٷAef%Nn9/Դƴ"_~I jorMņ' }^ylo~5ux륿?;cF' k`rR s;y)ˁ}y yTtxK19`cM||9k1 Hm>rfWS9$zXNۀ_ Dུj^lϯis{0wr=PU*GZu)%AAm 90VDNNDrG#ⴔү; #'EľkDEQ7F濍taD?I) "v?'vGĶ_l7E}q^DL?w>mODqQDJ)M u|j{2-WꟀ\OCs yo; AQg1QhI$b"@2".\޿#)?BWD_*"K)}șa&r"Y$IZ\fyye>?TV/)i.++ $I_A筫J-B;E' $I'|e.+p0pGMG}r"I{rWfyyA}pɅ#{v&z$I4a 1yI}O2ޑ>?ؠ7I$u_!c?|ObZʫV2MI$# 9(yC@QJ\`srMCt:pZ<&I9+3|K`eOȓrCM2/7I$u_!c;_Q?8ب7ݛOc;o$I46:9C[?KO{.pcӐa_ IiC2&I)g0;u>ೌaOa,oq!uq8 [)x-9jK$-:E҈xID\Hgȓ"*#)[nTDR:*tGՍ/I' w},"BxRJ鲖xLJ鰔U-,W%IҌq2~m5]"Da7DSRJ?oWD#b- ^$I3 7M'HGSQ}nSJ?jxGĻ#bהq)*I' w΀?`"Q4,"^u@ct{i-7ni%vAUI$M;`usG wYK#mv>l0+aI$*hÀ+o q4Rgݗil{9%IuT 6Co6lF ܹ SvxqJ$% FAq#/!_4L ^69t]lu$Ijp+hi6 CӰFtW qu$Ij)%CX }X l]V#m}Cøؠ%I4ن MV я/H}'X qqK$iw8xnױ /XT$i1apZ:o1J|X>H$i-@mު~lCp"^1 G]C$I^P8x ~< N@ZA~5/q®!I)l|x)]c>~b & Sz׸ׁ$I pp^IG`aL@2|*vI$M1].MK lO@E+(ͽ׻\$IáfkK>u%%TWvQyI$)n03XAٛotI$-s6u?ՠL@O-Vvuj TJ$ikUT8Xk2HaV:A4n+⭽ׯu_$I %R_urjC ~]E$I pGwݏ* L\:ط~H$i;*Qo}YSA:0]`[ҌfeʟXI$i6 p{Kvݗ1.7vc]E$IlOΪTr)G#S!/t`Ǯ!I$ I)Hq _$I*ݕ. Uު ˥X%I786sl;S8t1J$ISSP8KɘkdL1ͥ:0T#>I$i&E!Odj9FZ%7_Y*fmڌK$IY^wb<#3r&ȶ$Ir_6pܿ8iZ* 7&i,$I҂GN{s6r ,]$IZ)@a{w*H$IpA4h m$I=& dn”f$Iݵ0n/U ث 8T@$I4W.9 ;gYͱ]+N=$I*Oo0ۼcxswzm:xdϮ$I{-/>$IF@'8&I$w۹E_s|I$Ij͊H%I$`on$I&X8yۀ$Iۑb`)I$ikp]K$IMD>GN;[$I'7jjGā;"z?2"E9qzDOJG+I$iA66:I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IaXIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-dark-vertical-color.png000066400000000000000000000471711474517124600264140ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxy|սƒd@ْ/I@qANlVzvvqm϶J@ l*I! ȖI"[d,Y^>s>f|| 0.>%Nwр+fa. +2 deJ[Fk56'!)mc7ܵy,MBŁoLI}ike>Uӫ?LXª%͔hdw^I^c{ yX] IQZ>4˰#ERZ01NAZ̕|OƌX)qȻN=&)5[1u!@EtejFK:d}`#`vgt1_WVVͷ* WRT_KSӧr:ָ h[.k[dJj@4yM7Z9~}Vp%13=t!`#ul=R4 ۟$w%oy,q(Sac5_~|4{r6ogcDJ5Zj = F)*imd"X_WUVišuF])nTtL?]OVFGK}Ҩbj,~;^7a􄤞ݡYKu豀֕Ҍ铕1jk+99ciZ=jqIWӾ.՞= ꕢysgOo$m1=߁ @G`ౕk-kO>DV ߐ!c5\fMU|\?]xQVd|L,۶E;E~LR=^ݸIWѩFWtL&8V'ޠȈZUaӷ@e!` 1q+ ]0[4tO#^YWJ@e!`Q~xX;џ%%hQrwl`͟nݺׁѫ^ leZ 2懲I>Es)Y^/Q՞ T8NCWPɊmO2'q] t}/I.̟o{y~+*QbдkNLIcFNß.[\d̘* J_ky\2i߽{,VQ@R];w֜ӕ:2:0m{^ leЊ+ޑziOK%ХUz`͟7C:u5Zc.WJjTVСmmTEg~ )Z+ZUVUpF15m$_$UZOߡ偮@FZk)+ܑ)c')ُںm_BǎBM+>NSN5WggYՃCnDM h%܅;[yXO Χ^=z$k׷]awť };uhX@ w𝮑$`2XNolʑ{Çj!џ.mބ^ ]Pv(wۍsھSԲkt:L4UQQQ8a&LH8i~ɿ\"`-I%<+7w,֑#YDfLQ#e__O\ɩcBs5 `-HŁ=cnJpav^+k/TRrwx:w%tȺ hʊv&zU$O8+i72c5\gMS\Od%k"5@ X@3fm,u$wx I;_9+=ͯ?IzaR.A} ڗ||D˖-[ tihLu.6xCJ@ X@3qo~()gNы/oК5UU] Qөcԩ7m6tQeRC݁@&Zp7FtټUTY9GSvt˔4nr8=nr%13=@&(㵏(ݟP֢ڷ@+Cc$'w߿]gdON9u;a+c5_~|NKt*l*kvJOgS~FkGwzpi4!mkۦ*>ct$TVVj݋hͺWTUY h]7fO61tQiiN*]&Zk wda+?kz~ ;v<%"\xMe:C|&tZ!7ƴS& rkFҟjlݻ/Х3ڵkSN}^=S4wnII:1$'u  wA~$,eZb66UG)sdUТ˔cWP4h=k:tH d%+%4 GnܤAնIhn޻ZTG Qp8M0^QtfBr@n, ]1z;h>/'kaSet9}H|cBKEnekC%%Zh[i)QJNNRկ_o葬^{Kk_\7 }9RkmкuUYzys2͏_gR 4X@>idKǣЫߐӼ_ k^zhР۷zJVsvyK2ơQ#4k-pt:4v쵚=9NWWR7S"`!.ʻWVݺuh|Wշ_oK))I2_9{Ղ*,<*jL%'׿Bee-|Ԛb~5>OHN}J, J5I>Rӟl}'U1F]vQ~g W Fx\%%P]1}2F7cM9i$}?_i7#>y@Խ@ؽ{'J$PRR3T}{imq^zUTT&tnp"c Bv_]6M#3={6 hAX@O}HmգtLطdR޽Էoo G{PTT:}ZPtt}Tv*<_ V jinVƨfQMI,#B H1}Vؾ>Z6l|#$FDk߿$9rV.إX}[k=R*{#YP~$$Q#4sT^@%DS Y~[ •$o^FiARVgԦM5޷jsgoߡ;u œw^y{_p劏ԩt߉'rՋM^R4o 3vSg1 /GFwn=DGwht8|zC%Ν{{^y<n:ԣ?ը-N^wMYmbbͷrUT{`HHpiFde e7ӮxX@0+ޑx XUeoxMV3kIl'h{k=!>";ԿZ)+/?FۡC4Ӈyߎw…:Q`EJdTƏ)nTtLt0ވ]s5"`A.Y=c4{r6o ƜC.Ӹc/j_ڗueZ[kGw}/P겁4o u~ڒhٲiԱ_<ܚϐ ", ܅yt{(e-M`ϻyx͘1{^zU-Z V wtP `AWu*g-YR=f o릸oz_0FA۷ה7jkw,Vz;!9mtZ8" 1z0ʌ/hCKhWBvqMuۿykJ~AO> jr:;*M6ImԽ?Ltp! $( (2eF]1BVeQll;sŷh2T@~**<##"t49GԨZ/ߨk^S:1EiI7ߠ_נs3zaKzy 6QMI~:CA}+Q38͘1EWf1_{.+Uz- >3ơ+S䊏 zv-]eq0- A ֦w7gzwoe-Z}ePKIysg>a,֞={G@ Kg͚𼹖y/^\k ڷo)oԸW'r:m! 5;ypXMxCH^2ơ+3f ^jΜNƎJӦMR0xY#G 1ѺeD]qH-[l}'ڠhLu%,ܵ[Y U\QX8L AG9[A>ۣY*.>չ%3{eZ2kLJ p,#FRɊmqjx[9^**N||_mF7Oa:SZvx@#`#Bx*ѢE˔cWXjL%%w{s /8;ؘBM)`6XPNC>tn̅:rhXOLLPI2 a;l!J潫wݭƌiB~Kz 2P7rv'q0a"C{Ԑtv'u/k_QeUU,Tk׵evMe:C8B6~3B#tX?}XV[mWpX6 1- AS|DX=R4o^(¬lg͝~}s8P#B PA\Բfz\̝.+׊k:3z<"Z9kl}Gye1F#G Sz`*E8#tݘњ6}ĄxjOuזhX$]}v]氼m[LWe({ z;gKڵ#4ML AМ沁4wNe{_ _ZJNk~!쬢b-\]}#B PA$9F^3ZӦN ˱;ٍ9nۮGI.A#U}ROE -_ZVۡ6, xDV^ԿM7OnN~m7la곚^'OҒ͚3'S驃]RHzodePKL4XIa=؟577Sݺu wIAU-[l}'ܥhfX|sn;*M6ImB|N9}F/Ak֬WUuu f>ڳp)ǣ^Wοi5nr8ZikټUTYyyЌfbcԯOo^rK'|zk߿OKˇ(kR}oKf$3s]E W~ƟgS.AJt*l*kǶ >̞5M'O֦M9.Fyj{{4~M4YzeZ%9}&haX@3cѭ_ӧN7ٷ۪*vzlޢ1ji:rsw蹬%:zqK@mX@3p}_֙JrjUZ_6lxCfO^a@Ad-޽Z';&y}>__Qo,oUTPVRGWB4cQogpR/k٢~VZʪxt}^o6ghX@3曛kMLo7]ϜԊǛ;BY u頍5!`Dn޻z≧UUyOll;ԥ˥a?|X=-^.kZ=L?>p_fdǻ鷏QO]<#:tH Ce꥗^ժ^ X+VK/odO+aE={>st߽wrK*.>~ꦵ=։4C{#A'NZK;ڵkcW^~^ݸ)_,@8d%%ucP>v7ðn,+(<h{KCwMEEF2>z}=> X@3W|D e]l`?}t:Pojz;W[ JJ#kC[߼MG9 Z:B/9zѵ?oRz IDAT.@KF +^κg?z~CWh̩*u[h28*>TC*..сB}Qɧ;v\u}w[qcu)\=#`͈PNթSG =g۾23 rTV7|h5X@ PXx<5?k-:q6m Qк hj۞kq5z0~h&F .cJLLЩS'Yծ][\j۶\rrr}\j&O@кMtKr:Y9X@3}VBB>%)ճGJfbZ~㧿pF}l?ʊ+!^\qJLLhg@KBjO2e*.q(>b㔘Rll{uHH3gBX-.,+wYe**<rU`5'ℎ/kkX=RtM7c jx?=qB((TqGj׶w.Z>P[:ڷo)SnҸ;7!`hN< Q?R\UYu}=z$Gڵ痬o!ө]iSou-M @N:]}}βKA мy3Ξ- Y"`h~jsqZ~^XR@j͙A@]15Mon7zmu )2IZG߻[9[?Zwѵ׌ִ{ϲ֫ `o(2*kl{YYiޜL%%u(ka>CZ,!;ȋծ詧_JLLPɺ2cdeZtr6oiL#`gjW|_TYUUC˺EGGĉgUUViš@CsS;w|]5ԣ?3};Çj!sՂKt1д@҈Cu7oZIa҉'}g͛}z{oAAe-\={>i M h"T9b[t^| T?=`oYUmz*ϓ6xT., vS*jڶm33hQvz`^_/ HPV?K:ucJw4Z^A!~6ԻeK;鞻ow]]\BZ3K[>ׯp%ICӆyuRVAjshEEEإ!e-֩u?LK_'+s.D߳-֦77ҵ^Y V=փϢ.t萨nZTW^^:7t:z415nqМ^6f/i.Y1@+Ӽ&{2ힷsZPV=R4wnChlx!ǟ˷~5Q?o&L1ΞI|E@X@?C%%ZH8xCyڹs}ʕPF,  hR߽;wVVҀonXQQQp8zEEFyoZ_{K˖k .eN#jSF:dJIeQ HX@5fuCxI]^Կ&5k޼}(e-\aG1jfϚZ#HzJѼ3ԧwO_t`B, 9rdSgYitCۥ$w׏xrswhAF- $kz;?ڞ' 7\'_'Ҍ5RHoVe̘HN*޽ʢOSl_ڦѠhš9'OҒ͚3{)**J׏VS&ݨhX^nNOv*е !ӷk|= 1jfR歲i*)9J.ys3]N6X_?K;ֿUF ~2coar0oCɎ 0[|aKkgz׺1"?=R4ongfW䴖{B7Є0wa#ټEK<KmɓnҸ{ Qk W?34 02XIϖ->{$^Wf|A/_zEk׾ʪq:;*M>ImbW೪Sӧ柶f, )+ǪWO?>ee;.-$Z ֠hI68;c{ iZ- hCIJE***peV.jάiJK=a.h,DYZDYad/$u՛o({jUT| vjXy$cfР@X4Q6 Ț{$E5е׌ֈôrZ&y<N珷3{bcE}ilaG]a h&ʋ{&>֢˕to3X 짹s2Ϳ6z'1iH~`+ ,q䏓4П;wւKu裒Wx-1`]rI'Ȝ#ك@cWJҀ X@3dmtw1!Ս|:4ݑZV҄i„񊊌w.oܯMϞM @fжOے8^X ߐcwZB2(c͜9Ux$Yk :=5iF BZaơǭt?)kam^=S4ongfá⺧nhaB &9 ?ssw蹬%:zx` k\9YFVՏ]ɩϝ@36 @ СmCTO{e+^ת/3Aeqc4ƯmN?TS@0PGr9e6Vg[KR歲64*i+=mϟN;1ꑶ?hX@ WV;Z+iZT ~h+%ׁ͝vk ɩ[Z01K}oUZx˃PYM9`o^S&ߨqcW1ksW?34-ZcWҳ%%yˢ^cCI oЕ_ˇŗ^њ5UU]өcҴiƿuVU)[Y>M3X@+TVUd5ß%Ѳe/hwZWSt͛nݺ2lW V]7VFKO]тl H=M%`u|Tz xxߍ1tm@ V" ;&c)=|+G^PEʼnFնm&F*)Ѣ˔eG0TRrwz:$t_Z";vqI~C fȑ nʀteZ4!%Y;r@SV۝;_vd|i>D ƍoj5:utJITT&N +*2ҟ.NX߹q6={6 @CPs 8q`ے*gă櫒 mh˵bZ)Gֆg}1F#YSաC?]Xe{O:0hYxD[c0ҕ߷-վ}.t:ߟlT}}CP=z+ǐ `֔ȔVV)~WZJOjTm?v\9EF߿tZ!?>4 _ֶMU}>Im|mL^|m߾CI4{To߾Q5UTK`Qn^QtUiiN*UVQb˕ak|5/CMCiQ5kQzk{F]揀 `wa|cI:nr%13=.@@pL[RtEY*4 @ДmQcusk k3܅hX]?'ԥa@ Gv۶ȲNQ_Jݲm7} Z!*+ڙUےAk"5 "`;z$!ް ݇ @XAI̕,@XZ(;?UVwHJ.4V5ҕ5_C\N %xG_tc $3xD4 ǒpc}8, HHNp*ZeevI!ȫ{]7<"ni{$wc nY~i8k0+Xk=3oNJw$9%5]vxK:&7u2Qɛ萉VH*u^#m]}Xke;~v^clwA埶u:=^jjJI.ߟ?"rXu%=U-]}+ 62]l1kHQ! 髡}-]p<&%I6QVGdӱC!EN$=mZrBϡU^[mK:xQWQ䬲E:\" _fdmGI2N2J/(-̿+!9u?cDx߳F5n(!="QV?~:ɚs~^+I]]^#Ϙë>ב#F$co: ;Y55>|xg3ej$svfI*Tgrm}L'H&_VFJO-[)+,cOJ]V3@x.}w⺧8yYj$s$Y{Oi* ^tXϏcSO5eI)8rdNT4'ZkלY:"R}G@*>zSYQf󰤎hbdW:o[0ykZYUC*c.$r[wӂ_eTv/Zgwa/$.c|3Jk݅OşzKJڹg$u$+|I{%>wC2{&0o:0ozX^Il(+MgniaU,IuSg~кo? kݮ|Vy/J6V!ra09;jjT^V;2uZǓV]EUV%'T1W9"sʋ8b*s!TOmGBrjWWrZ+9_|Ҟ^؜sXٲ'6tŷ|I`fUad8JNv+9 WrZpKzZgWiyQ3.q5x)#o s76gdt.XYWJ\@kBjn;䷩8ϕvkduXWEkCݲ?E6@yAVҹ_ݐhX@ .ڶ_ wu8cVz~3_V?Q];'G:cy#BwQt}5 [A,}oUոNu1cR+ٕ~q]u+M>Wg^JĔ7J*$#;2jJ~TXnTkW^yeWJji}u 1Nʕ53sZ #͕U(U;[<6:!9,WJS[j|% ĕfv,콮++s K]M֚'epGDU'7y~fˊ5^c8w.֚[ֶ־?;e֖ؑ#}_:ڜow츾'AGƆF,sJJYiZm׍V7n+%ui|н)v'-?\yNc4k7^я_II^\#sKVfU^s&G=X;'!%NWJ?='=N]nZg 0z5{k $C!EFvѹUGN^w:;K&#==߾%Iiy꺿k'e\IUG &cɟZڰM9m*h{kIyUIv6Rq5_qC0F5]9㈒t"`565zot/Z~fIk[pݡ{Ңkv;_rɠO߫꫱&k;"IV'32s?COtO}1޲Z?twjJIoiazD:+IwHg VF/'%e65!`cVFF;ҦFRwa) `ڲgK?|g`KRBrzȷ{p\ysv%!֮l㕬P5 %84H[heN%ӆIHB4Rrk3i RhI2ftJ/]cs]]]Y.nxFG=}gRrsƻ %6}Gr\&')v[>dAN6$XtDԭ0lmQYOQ~W/[\p[/?]tC\XDN͛ B[ݏD)Xg, }2 rۿ] f,IUҿ.k5 &AԋF/SuCr}&fB6s1xұ jw6,ܘ`Sι)bR>sO]V8ِ`G݈q#<{Su)hBG׽<qk$/62f!HanEɄ-N[dLAB΅;L)j bf*H隌RAlb*KtܒHX2\fusSL_gKUc#nA0J`&fJK_cq+Mn$.,Ya$`\uˎB2\;d'wT9?b{j>aE sNBY4[%g}tdժ<&jvEwW=5gz\4^uWkrcǟma Hܣ p]ʮ'R뿟ZmX.&3g 9B'IRF^ͼ)Ћ##jwAfIhbݔϫw1cmc3=S؝/._0| GU-$|h(z,N%芺=l)_)d?:cj$X@D)Eăro󡡥J={?SuNݿ˛?=U53+ 4X -p>7ذ[N N7Ler$?8븮pͦ9unr.Lћ$zew&Rorg4LK'3,`9*Y?J~iqY|n7mk4_[˦I #RktOecuu R(;#O?EݿJjuj߮ԛuE\Yo1Oy@zU_n>?-)UNtsnw5LvX;k=m}Q;U$X@=:fMOD7tBVTwרըuwt|wٵ(_u?1LzHŋmSF5sGJ7ANa8p~hڙ+ -#׬Ił;49W[hN?80b !v(sxtBȩk7Xx׋ꘛ]zZF$3K<_;D/r7$mB!x>bnS>^^)۩*&=Y<ۂ Si ru-Ka{ԁQȥ;ݥSLqZ5p(p=զwm{+_p!"XOʱ뱖hfHDs͆A-)vǙ&Rnǭ0b}°D#M<8cY:nx%~'T= B6.d/s_=V4t,?sSq]b˦e.zP.l>~M?SȦ3eI\rek|Ǣn]ÿnN&$X@+zIt_bf"e_It*E PRW"…)Pu!LugԆ[ls9Qܤ5CRӮ`U㱰{^ mwV\z:p"5Sn3>M]WҒLz0m_G:.fNt53顊d,֦]۫G1HI/Vkfߝеǀ}b.2yܤBO$׬{BIڻ7}cpᶱMm{*V^A%/0 N ;BNWɮu}ٺ2,/dBrLCSk~Hv(k/gq|$߲\ZgeZfzäW,^zcN4*?-iALIPR5YglH\7jdVvm\ukv**ZVT6z+Ը񡡥`t⬴TY>{%k_-IAC=-fEygnIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-dark-vertical-mono.png000066400000000000000000000302131474517124600262330ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxwlUyg].vKQJRDTP!ѼMØ"jkoBIXb114Q E@ (M-x;g.~>|<{=kϊ$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IZ8RHR?`xJD<9"#bUDl;䎈3".#䣕$Ib?73$I%VUH[o$I8`麟$I'?m!I-I EH8K$5 T|g,I[Y=P1!'(rg}Vz|$IJyU 3ǀ=n`m6n#hc#I46q+&=4F{߬am$IR%N3w*0 \S#:ؽa$Iz}4& ؼ=c&F$ilFWWLf 5ڣvݴq7M$ilA7j$V:8|FOl;NIQͽۙ{UbwvT̒$i 6%FwVLRV;Jd产w&]A$-%WUJ!I `5+vݏa#kL!I`T;ȥVtݗQUN/$i 1֊bvݗqے׈ר-/$iJO.\| xL x5Q]C$uؕ|שGT1.{vI4A-eN@;Ӯ`]Acǭ$Ijk+& 3uݗIv$/d_Wqn"/_u_$IRÀCoUL<~t88<~H;Q̍x&"ֻc9{]E$U+&k/װI[pB~ s8_O=$Ib2]c^I0W|m ~F]eJ;tI4`cks{9>Pw2&]E%8$pp@X}k٪8~H${_JTKj$-JJU=;GOF~{_kVuIORqrv$I *NOZXri,!IҸ@.{uDt`!ITcn *N[lu_Tni$IR;p%7$9!'UúblU=m)ITMB;7/;bj?@zۛ*~7[۴$ISxy!z5Ë9 wm)IRkN8YN{uݏŎrg*|T8A^ uD;sycӁ HۨyM'TCXT0)&¿"?r;!}x /ƫr ߧ"fIZdήc\vxchׁN )_-<)mT7c?:vIj#v_nwe>Ai)qĔ՘^\cL:~I*6a[he}> B~Lu% ->N-dyMUUtI*^Sc|w]]OGxq\@IW˟H)qײTzu}$ilKp;nDV88g?XدS-"DENO mلqJIBACalxo s.Љ}~L"P?v~?cJ$8/+$Ic„8t` a%`PR lcE`ߺ5 ،\uԝfݺ$I&T8 VQ[j8g?֕MXF弼>KT ժu.>MKm/'a)œY-}7C}$]UdAxh`툸/=퀇FuiB6HT k-eN6"21z]7a IJk#:Zkl\U"FJ2,$,/m?;IJ=| w fͣ.ɰ}si1KEfzfD\D eD\ssDR*:fQN ".ɴ}W%I# U,e53m5*tb 'IJz,s&0,Wpo$4\ul]$I. Uu-og&0&l.&`ޘv*E$ u=f$Rb|̼7!l{ka rc([ư쾍Md^\:1$i,%&Á [7/6D^gua;cA|&=f$URwBY{|IBE]8j]IF~u"p[y5m *r A.#QAٶ$I ؖEHi̽$pkGc3C'BAڦiBX?'2I4{}.4X$Il'4r̫H:س+QW:+:*I#IR%:+ȏe yv;7TA$i,>7+> cmV\e_Qgȥ3:,{T]'IR) eBU?{SZ6Uը`OR҄٭t}g&Z3WŨOR^ڲ:}k1*$IJY   < E3&;jTGOZ&^EZ FMZ) 7߈"ޟ"="O)(,/Ԃ6" Xq8]YoN)u0XlGi!_*uBv˄}%"^R@XGiMիĒ[Jʔ1̈x&Gґ 5 ,IcK)Eī#⮎i/"q`J?F$E;omOm:&ۑk@E\bǵI:u|$ƄX|nӡs'v=m$6&4rڦmյRɺ8X G @ITJs ;M$`3 z6j ORژИK wzQq7 ؙiZԚӁݻI5]'IR)mLh`A`co8U2xLڨA:>IJicBc >-c$ZLppy%gt$I118 8>8|~Tjr wF RITJp Kt?<B\ilu?:>IJikBM~,8ȭ#Gȏ \)ײ.kԀu$I9Oex뀇7ՏI!?2l[ϴi(IĴ=^ r%&1)2q!.cu6(tvD?%`FU]Ji&"ۻ$IZl&uǀmC9To;U<~LI}%Ij$'^b2WMl-uڬ~LI~%Ijͤ'4QCqma\D,M<`I@JxzD0_ODKRLE"teDJD\="XJ$-Tm<vV8UC*mOJ>&IZژ{!'O7Oޟyiy%(19n@jI+4{i!GĥqYDG"bK)Mݬ}q] >J*$5bEDߚ!ǿ#vÒE66m"bwz%Ή,i3ϋ8=4ifDR6E㠈8 $-.&XRzWDk䢣G#b],iJ)z\:8`YG_c;0%iI2LD碎Ñ%:X4#!kQ`O۸yK[CG~*"_E,IVͨqb\_䇀@SGtKt9U3j&=S{4qr:x%p[#oS$IpBD1q7^\TkT$IqBdGiL`X.@ǐ7IZVMɤqʊ8#*c[7IZVMģq <0Tf-ٍӁ=e^ $IVMq~ X=W;TJ}uPGk&I, Xu J&"+"`͐^ VofJ}+{|#qD,$I5jb:~Gk6Xj拁C.ygpWZgD3m/-E?&iưyD-"7#b{D<+tu mNJ)qOK Ԏ;]"5]ӱ#⨔e _ʈ86̔ҥ _] Ԏۺ#|rv/ENowF")7x&,4Lv\T! 7jѲ͈x=IMY ]o&">L)uJ[ZZwUR5&XR;yuZ*"Nce")mzߊSJ'~5k磾$M`ongzDL#m߮c$4IZ`cN*ǬNo!Z*yʦ2 ́ ®c$i,F:zӺI٠Uۯb4!8+c$i,v#&1Ewfx9d^sڭ`S#.`ۮc$il_ ~HC J` T2ٽ(u$UlT2?8ػ#9D$oR Eq/$޽P7t$Inj#Llq{UF-My! '1T:nIj7fp ժ\8"*^:̀e-c{]F]!g>Ԯ㟯7:$nSaXu$5fIqw`0 8 V z߅ sӿE$I6>Y1L$ MD~=4`!IRkȏx]H]e>HLA.yxSOV߭OV!'oSiXWBb|8~H4q;'7WDgu_P#GlO.ձ0F[I 1W˨L1A~;ӮRGžRlL U}$i>U#p|F`׮]VgvI WGwݏq/,jtr!I҂,N~Zq] <뾔U#NEޣrP~N.۰H 54]u0W$͒$M5};b>$iA`/'`:,`/ $-,Wk$!t%XXzCEVb~#,+IҢ U#79)G-Sow'uI8:{a;:T ][$E9F='{e!Vv{-ĻYo}rұK Wz&|Wb48{ \]#Ӂ=&$Ijx;5s'N(Z&A7j}੓U$ TL ֑rv{cvMIj3=P1IʹIKRL5lͱۈO$M ԫ.~%-T|EIk:.I4ŀ#k$g4O- Ʊ\ F_SmIĐ i^U#8s6k]w8aQ$IKﮊIȃǎ[lmlN.5qffKUlZot%IҒH^ȾbRry!2 8gȥ-vkvt%IҒFmw0k\wzmW펮$IZw^ P1Y!}yu^#ukr_'$IZzkFh]#ia?t89"^;QD*"N IR &Xtxag/XF,:IkgM,!C#!_R$㑤ig%M #)C>` qXD2,I$x4IDAT#Bi:)";X$I5`IS tVD<&">ExtJG]&I)R""^u%I0`I%GđqpDFčqVD|=Ƶwҍc\kȋm#bˈ'"K#ܔ5#,"] 8kSJͻޞ͠SJx~D).M"ȕw"-"~gn/s+onk' KDkgx "n+"K);Ǹ##bec}q`Dzw$XBOR] {{o5f 5+Ik,qa~6z^pJ`3c_ 8p.3}X-_?ſ;'cܾo#'$<ވ[plMqS"19kor3 ^\˔L `[wcy%p^\yn|r޵אy,NJ%읷5'/o% 8p_ %1<~u'`}೟ 6L>u Q٨A{?x3yoK4k5Qm]ckାp}hDz*Gh>I*Lڣ4`}1M~X5{П`1ӈwmuh\y{80־9dG1}׿l$I6\Ԅ,`_ uWEwiIpj6'G|7+G"|w8ľ/R޹w] <9k [ܣu3%IRDld ^|wLN yπ㗑A2w x`]:: x9Acֿ3 b`=}T睿+@ܻ ݄d'Vk%ߜ4BN؟9丏]ƍKđ1S0ty5b"o2t9;9gm1I$X&| s|3 Yp{A ֙:7g}b[ g ;:1 >?zUMZJ%m谘4LDnJGG$& >x$tX!r]{6&"U),q GJS>"C}!2]"A>/|dD K~Ui(4?"fONG_FGG1ڈxYJ*I0zaRi1wv[{%cXF~q8=Xk7Rg˝?䘍_U\^dsK8w pd?7ՉKZJ*GУ >;kbQϞ?8yZ}qEİ7sNN)DW  ݑGD:UF#¾hﶈǃUG6"^GD/j߉Lp. ۲&"bh|:6),c#]F^#&`+빩VE|VXvmosT|y#b2'.7GD|qBKP+SZooDcm#񞈸*kvRE] <;֟mPꢂ(_<{)5$ f%mhkQzCIH)}?Ǘ{jD<="|X1)0ŃJ^(-zi 5e[OJ8DėGZRL WYۓRJG!qR?#!낦=VcAy>wK Ԡ$$ho#zGL ݥ*]U{RJSJ=#ȯՏ瘈8Tجh\ǀM<+_[j؂f! Xyz{XD%KҺWSJR7ߌv|5TN%ߒ|T7aޟRTk־GnB]5Fw#xf̽ [I}L  (4mRJ75[ku~wqeD<## vŸF"} CA=&{ym{xAJҝ!c.6d%m輂Ϟ6C`hfL!mχsRJw^\0p{u*KJ k"yj~XU=&撼݀Ckw\̽QFO uF;Gj%-&X҆ΎwJGuכ>I8nNg?nj8Q᰷6~\ ^ pނs?SbK3q}?qQo* ~iz??4?W 8Jl%x_*y!7?yދ *X7Mm;߽ yhD w|#~wαe#I/_0i_UYc VwTKǟqtD>C~8'Xg;;~99} ~80 @=wcVEm 0xe%IRDD[+-|h;wO;c*JGHN,yhջ2d >L; o>z]INX _F^t """:0طyUZ>#Ozu!ʶÇe`i .~øK (8L@(t*Jyи`~|ѧxwPu@sbcc0q? ĸ\VܧK0BDDDD`Ba=<`ȝ5;vlII2y"NyS^]ŦCl+a֬7QPPdiLArrKXfI: """0!x Dq%gۏ e@'.>TA7u#`'L@(d˜.C7y;mTV5;`q晧:'řxBkl B> aGksPZ~W uĐ'g.72"""# ){Vo߾s罍V~cwh~PL>}z_9u;"""":R0;Vf 65xx% CMs8;f4.`"ڷogZ<5$ Q[EU[R+UEފ U!u = ƞ ð[&{ZBEL@I>OVoX`lR1} śAUՁ0D`0a™p9VاK0CZ""""09y Ʃ)m}њ͝-[̛=ztǔqq- sl `rbo~۶p;Vc۷듒3 퍌br$0o bmo~,Zuar8 5S&ODAW,:4kN#"""jiajxK .qDފ={>**+bѱc7i<ƞv J媸?!e?E0#""6 HU^?FLy@}=rgͅdzڶ={K.@ffkw퍌e`Rlâ{c<+C;dgӦ{nګQl(eeոYhlR,Z5ap80vh\0y"ڷ -Z)5s;""""$& Βozĸ*t%ׇ Oj!BjผaѥK.Z9qb#""" 7& Ǔ׾Z@skkjexq@8BfNŤg!].C5wOkw|DDDDShJB;;w92 EbRN>#O<"~KUqgBJ+"vGDDDd7& -\abȓNҾ6m9208.uY_혀Puk= #ÂG4yc510\t҅\Wqs펏L@Z]RLJ} a0DH. ΄^U5 IK;>"""P0iADIҭ/ZŖ-~K$TVEMMMX٣&O>7jrgBj;"""" `dG/[i_VfC[Cg NǾ0g[[T;-衘>m2mbs>{##""" (z_ zUxg,Yj{wlX`a`2\tJ>nLHz؈$JTpu6,9еoCڡ)Uya-|kGN0iw)M.b(+Mb̝ٳgVxW$BbޠV3 Ww5{^%))C!-m ޽{BL]S]o~x,QN矃M8Xqlf~UKH%OFα١t3] Ma11B+m gm9cǎNݻGZQ -q5)J!D_)Pq±>,]E֎}v1"ii0t`߯ۀ5(,XAi5*O պ$0thְd2XpO9V5Ek{߮};pM>v܅W^y# WL sT+WN?|>Sp~Ch`@Bj0B6\z\: KPDDD1 35k"E!bऑ'`Xvf+5ݻs|{ظq3 4]-9~=?T}s͝Zua`2ܠMH`iZ7jV3X匈Z& a'Fj©p1k̓j 裆SЧOIZX(JMٻG,6ءZxΘB$D{*85WϞqWݺऑ'&v^ȾhZ" 8V ' ی 8@^/F Hih~PT4c֧ HxEѥA7T88""1 7Ah:uS1j}m֭qc|؊W/"SK0p`?Ld*P~F&QTtJ=fSPT1C""" I8zA-jԔpuF]>o;lU;v9a%HLJ5|ha?t Z~YVt "" 3~P,`zv'ہ|,d9L`o_-ELL Nw*&M< b2u=_=!A4k7-("""0Meϋ`b\0 <8qq0W}0󱿣tO/XZv88<6^\8uRT"խJ@MNNJ _-n"""$֭ۀg}^_MR#CbR`ؓ;6m5߭==wTL>iDeM1Xv=pՕnH-RBj;wUoѫ*P#,oޗHDD,fao=vضmO10z <\$G2?s" q2\uD"yoϿ&{ČG>lۄ,~&4Ӟ1Ph;gձU9+J5M hW4Ěyo[hZ*XĽuފOɚ|uee;~oU~+Wƹg"F> [/%K>Bm] s98p9g]_aexNV=@+jDDDD (S >g>4/pk׾.: ƞ":~ku OݻEe5ksu[Y4FDDDIL@Zo/;3Ld DtD\0zԉȝ5ϖ.mvzM\kLDDDVbwQ#1eDt :j06XYDeވtM#<ۏE?:+DDDD- V7'co0a8tDv}I#O@vV{pQK?}>Pݒi% HWUdYgl5 jzx[;: 6DRT ' Cu/P-2SY`'ID̦{@*;ObPhP Uu򺤍[%gu2$^0BUr5e8b'oW,wSQ:GmC%>Qc/ܬr-pB3D1DD{h1ا"TNLr#S V `]۫,ݫW\r:r8Ҧ}`L6}k8 ym VyI(М;yW`>ё'C`ha|J_m׬ d΂" A+%*abi&g4ӷy59  ݚ>:sR;)^O-P==ȱLHɺ奫t1ipVmݺCG8Г 2@>1߮rHUkRkwS_+yJ,諕ZrȪ"wT1K=@r abfnBODń^O ]ȅ~ǬrsQ~{c*LbrppVl۶ۓ"衸ҩ+ؿիr(Zsek [=Go߁W+mw4xg;@W%0~٫fT5U n9jqZv.пqhʼnTyq/3L}sJ"+9*@ߣ&M)nQM cSTd [O{ 0oE\C'ʅj[-|%=ٽ07Tᓻ@\ ũqfyHNNmXm]q*A~YAgo}ί˨Kϼ( )v^O`uBkQ8?Rq'6hZu#͝ӏӧMA( x<QI>k`"u#L>,ڹsmgo;>қ(IbȗM6ת<g;E6wo@1y)XU^Rp:UTqw 鮱S-vr9$u{պ+}򁇨:".CG}]D𤯻ͅGc5P<M; (uwؖ\+5rok@|%[&@ Lk9 H䃏q-`e0Ȗ\u881Naޙ<"Ffޏ&M@U-ދ 6j7Z5guzi6v 3x{K ^P]p~\^Ǔ>T]Z4VO@=֭L B~u/8M<*x$ 2}6JbK`i~_eDxKv7i8 o8MC!roc =)9 IDAT4[j`1\,_%O#qu ӧOIF tYOiS0hЀqS1r_ 6Febwq~R ?0r_c#<񄽛&v6w^oI!8>ֆDUWRx Tg kD*0HM[xr1S9e7\T0vM€N  `$Q@(\o{ZBj0|?غkE]ݛĩ tZUAu᪩0kc0 $GD'h쏡7vFehfS B>eNG_`'gY7g=Rww3WZ4xVl./#ώİnfcmJex*MHsv+/Dӯ7Bp$'{7i@P[|kT58He7uN&1~Wts#ɽϬU눘Bp$w|oY?;;>|.: lyRk+W Ɵ܃F䣶/mw>y_12gQ&B .sY3?Ǐ1]S=ZoO@TUC^|DuwהyKܭz/q)Y&^beOκYg żFN5 pwٹsmgFj9"!%kafHH͚b9@uNsV|=əPsQ( tLTI0؎qqL@555Xx n,2ȏ@jr_Srx*ڢ Oۂ+O yKRiUV=(CӧfH׀TůJ?AWw8._dlOɜ9QUq/pb|ʰ:ly;^> $r!WyO׆ܿ.sS]JcPӘA˽/ぇdž"Pbb.e箛1h`ԔpWD|jGO ;wmϳ:MwG;֮|~"h"M(=oY͝+?S5"ܨRܓ~zO/l$z*J bJ#g$fю GV%gF b(pyߡüPP7Xݻspbݺֵ85P5D3xbwHP|* 0MLAp r!0LPX^Vg2DT$sUy5!%NOμK<(:Î'{'EbBJQh|Jw!WqIHXgꠦթX"ܠS,jjbyWXu>Ɵ=& 3r?KݞcwΖ}p8;f4.`bT)OwPũVaQ(?̩6ug(e>۽8_}bcۘ}W5\յv|ӻ[ t`}g~î9ex qtD`  \= !GX^cXDtU׊k]9oX:8Eɏp]\ 4XADPǨrҡ5!8 8[2jAU:\+@7F#\uu /X+Vbs#^ll Λ4'8.,}=ӧOEޑ%GEk"زe[T?R+]\>3Eu-=}kQQLep\$fpk:-4sϿot엳 r{,K 1%SjT^m~+ H]Brvay' K}! cow\9@D ;oqc v&WÐ?'Yes?/g()F Hyl*]ELk*6\f:LT\oIaNBJƪP;g`:+P&yV/OUxo8 X>PbǮewϼ[4v=ztUWr-r={v 7\[n&*GY<3x03ݴu]r[\r)_HIzzM\剩4rŅl*7le,ѦۦE膩!fQwŧˉOɚmhe|rk}3s r+>Y6J\aw$\s+Jb_Q(пj럹 eZ[Bjתt0!Sf]f*$+S!mhehR/nw^,TVG5w;~Kйs'ˇױc\8u~Ndg6V=|sλF~AQ?jy1*~99%7Ww8VkT@$%gFrrjrMckCJxI!1T'BtÐ JUPF/BW 1!%a \g""fBrcPxLϨ?jc6Wrer;4=fǭij&}9;K n"=*#+JW5^uP^#8S0N~9VZ&#raSFḜaX`1>\)<10\|?6TMXٳ磢7R"9/@fॄԬJnVU k5s ~+zyVn ڀoD䮸AZlL !i3!9`%f?+qe` 5Ie>a&Љlwu1+4\& OtIQ?[rq!2bSoL~zUQF+T& aX_| & Ԩ}!~u߱cGL>rf&-Z`1CqE2uˊIXl_7Yi40-.oXEEL}- 7;w'V},>;ġYS,~Uݠ>mu+|Kɏؔ(fY󉯻 ޡUU~4P7X Z܂S`Cߦ*wuSՓ%fT ڄ\&5vGcBMxǞBαٸ Эi7x5n+êUؾc'Dݺ!l;wobQ]>PkO!b\]V6EkksXUQpV rO)ə._&7ڑG'S]L7mj IY;i`6)Fܹsk/99{.wkwfyTn"!jQba/l{ލ=: n8q}y p_ OVzۓ3 툋aBͶ|ƌ'}Ȗݫ'ΝxVD ]E6F % ̀dg,mB7 $EudL ltږ|Ϩ8 wXW2qn)&@huR" ~d#Th PX b!ҷès̳cѝ%G!_"|>[tmY|rFP%|~mYK>v?>s9!T_ /X,6-K^oo@-0{KτK1O X9d7K%Z "]׍`?4XIbȲFuKU KAi>PQQ蘀%^_^,~[M#?yw(AQ[~b|6 UcĽ[~WΝk#_1,ɡ*X]Ѡ/`ٍl7$wU2++q%¹@dY5=`Oɚ`v#zj eN1EWzMvD, %xdp\0\|%FɧyGӞBTUw#t{KB7` [WA+5WY[B0rAviI}2J *슮TG׼ON1IOȨw(,EW֍x $ aJ81i3v۠"T85)-& gWL I}D;jĹ!;"Gka[.SR19>Ƣ(R,53L6S4o_{K "-q% jrB9@$ V*}5%>9}7]_VĶQ {ѐ8=jM0qayޗ-&A V~~!nA6GKVMcs$mF\*x:ů r-vOUZNbPons_웶R͖ :Q-"Pfee 8eh_kNBj }9犚<(kG8 kRg;7>aTNj?2f| %%(}Ow=o4}vҖHzzM|Ft\h/p~(/v_ja5VmRm3XN@ 3l H6' 0QkĆ=;g?4Vrcm[5>YV©a̩FTM, -^ںhߏ?~?|1LuN;Y5{.IEOz=itj_TjXi[9`VCMA} sԚ>\5㶋 ۀO]w \0bD.ޘw0ݶShZ}xPYɛ᭘ Zl5$2.>%C͓INU{<frim,NG˹$yg2$5fn`8b(-*\u-㇖B"b?-otYQ*`P'埻Tx  ;GU]& m5WX:>9ؿ?lM?>P ᮻW+vbi* ZBhħd3>yO\*gԬ9_ׯooo/`tmէ./6{( ke+z9[R8P8CeVkYB!4r:ˑ:n~,cr}aV[[ŗbZ+Ke%gƧd7hpreb1ڴ޽s40]q8M=@uB[Ѥi63,i {p%BUUPi|8:& 6љOaކbbbp W_jr"r/WC߾k:K_Ee%נE*Zf!K߬Ĕ'OiLP} bn{nl@{mH "ةT)7񡯽Am{Qb\PA$u4VʲҤ;o9\QP4Cw<쎅aJm\G۷M7^޽`5Vmo֬7+GLH 1a+ҽ{wRoMH<^fW Pd0SmȤ`]!,& bh(( =Ȉ"eNQjzxC@O3v9;8TE.ob L@ZR<2o>ܹntںf,cl?| Q&Mn@Xw^yS2&&g]u"/b<"[i0lviufс^W 5JU =$y3kp9nN @U4 c;$d:P;Θ& meSz} %&%AB|i-Gz>!jDΑFba㓳r /`?ư<~m[:2wG-5X= Հ !Fa?Fuj86U^qT`aBj/YstrSpqQº9 Eֲ2̘$n:$&ripGi6ldC? t߰tk~$/R nZa;֡wJ *`[Vسg77>s&i1Po_+j ee;#Νӧ7nt`[ڵsw}m8.RYha(SU:fCti0zs=]8ݴO,:|coZhrSKLzKU^mfݿ툍a҆޽3f>^_n1Q,8ve#(D>u>< tZn݆V:r_<W7VkLuHEȅ~2EYƜC{.9C E$)Uv϶1%{~Xo}%Nxw֎wXPE[ލ;57[ zǽ*WTcHy-%q}3WxKZ[1W^aBR@E]MdB$UPS3?c}%Y1i:thi08m/^߳[t+lنbœ˩ƞ;HMd~Yߔ{ jc4@Z)$-0*̯Pcj0Iu~bN4z[ ,(*?i?3bU[$DTSR"ѡ(Q**4hm+ߜUblpO~78wQV?g& [Y$P6VTDd,n.uZmEjVPWԢH5J@TH1$3Y9?$$%u]\ 3Ls[q()ȽX~g_t rϰ^_c L uQT%hZcpSҁK+;:AͶYY͐!FPBIJNNRFzԌ?SV#Ш84dhp?HFrrUE 8*I2= BkYe iu<)6o1ͳ31$Eyqeܑ޴͑ ˞*kze5+ӯ??)8k$T_ĻX;O&:ڷbiP[$dN}qT;JV‰54Vw ڠ^sMGKkPcSQ@SysM'ՇSW5)O֨c]5v}[#ܪ}/j('cQ @֘i{ѧ5<%R]S r9n1&p/HMҰ|RLt"IjV Iʷ @whݻ먣꼩u٥jZL {bfd7uN|x=ySӳ$`N [,iU9[4تIfI?\q9+y7ۍC.4]sEI5 8.PפsJA׹j:c̋;i*peI55<,vbdn+"չ<1m{SY!c PظXy=y%yMI^!obK#f IcHYsVqHjU#c+}j4yj6V8e=+r[gM9c8Ҁ&N@g@Qn`>R}>#Ю%wǙwoҼ5#1F'rcgFT_HK%wҼ5g:0u˾-qw켆v6++k준%K'k&x{gX[EE9TV K@ST_D?MǪ%Pw?i睫DO%H`Dc]}R)coohw)(XuVgKvbbeu'-#"{{)-ȽJ#[Sb`}+okOqiddasl3!༨E*KJ|-P{ix/C#D @I^.c߷V o*vsu NcHMrj-uރ|[}% z8/{˘Œj:5B\Ƶ]i>Ձnqʏ32dIq@@5śF^yZWѣǐm9]c .d,}H VJJIדN- a]:+)"*R]{]h̄qUV k[u2bvR ?&)TC\O=1pLS\mdT`UeׯO\HeUS{!Te$ɓ1۟]%'$C&V)t+Pp9ISVϐcƓQrJN|ןxY,i`Mݛ+WVXs%[,DI^ǩ"˶m$^>M1xS3J½GMO_[l gDj~ZrV\?QNK<-Q^ϷKLt I",QNZ,UUpfB`kTңVU9֚9A5}:sN3+zF"f}]Z͋zyU%cYKH*pLNˌ!2V9y%}jyZrI'R_ج.qUɒߡXxEv1fr=eTccG{SqV]:himÒGmH+QYU%? }hsD%z=rVojvke Xۼ)}ۉk9;%uHTroс3d͑^TBr5(NroݞYC+ܱO h3 ?JwfFJkC)#F8!9r~^se\lbت_Gs/KmXߚfYT󑹡xCn k9ؿ2#]_ߚs\ZL IX?F8?P*Sil{O"U¬'$].)!vɘc*|"Y'%ce]:Zx#[wá*cU |;"k]O_fr]# gZU~SFk9'5S= iqىiWSlHe'ܹG/!̜}[$](Xc+/423%!vIs6dBVs5\ҫy{>-%"=kBAVMsw^|ecҢ<#ayK%tTTT$wLw;gqEeQ}QQGb՛k&l[i'1#%&crkTje0Z9 :5 [f"56X]~tUv(`e Ff]P67)g_ o6t3Í 'JGRd dFcqޔXkMq~αni1hǨqKFxݒ .lмI,'ٍi׶^.%[hmRhYgU +65ca#Lk/D;-/e1f}9-s}Sևee{mښ۾߷Onw{:Gn]5yx :XYeG4v[kP$8,%sEտZٗ%տPj{Iz$Oʠ66uPqi˖/׻dXN5p1:zga֚ծ]Ɲui[l'*4j UW^W|11|N=G^O{" ZC؃K;F$}4c;OD4 @=eꪫ.qԢ˴la#)ɫ)'h2Mm PC /qRwxҰq?љgCҧ~ PaC_\cw[s?33]Ϙmv:͞@;v M8?N]zQGGz;Ri)1}<_iOP' ե\PcnO*lxxM0N=I.סySKt/'/&c.>6l\ퟪjPLۭSƞs'`wWi—7t8'EcGEeb8h͘1E={tO6|sk۶%w:o5uMjɣt?m u}hކ=G~6Itl}͝Hk6(>@KB}VRhpEӵo6PGQiϞ= ۹s!//вohٲTQٰ m7=@PDFME}.|( 2Mn|8}(-ZzE";DN~ flZDN:j;fv2ֵ/0q2mQ^q5V*uzuC 4cd:F׷2k<`P?>tcb\ɋI:C֬Vc. ( $'ҘFifwǟT}4tݵTɍatYkO+nԩN7PwVM2Aڷk,co1.]v$~ۈ)6ymvXjj&;w{ESn]5yx :kK02'<=#a+Zth^^rA]˯vUvhקKi@EHٷZu4#Z=(͘>Yz/تs/|? c4b0M2A^gyS}n(@I,H:wnoݚٳGHq]=j&OC^kUgi޼E!u ]i1cr} ؼ/Nݻh(@QIuP=wk>Z-j'(P||&{N>i\C)YY#7 z43t҉#dLw9֘I)D;7o% z۟su1FÆVo-]KFȲnw<_{[ӦORF_Lu13J7dQ42OJ-)ؙ>..NL8S' h6!EEG&k.MR3KZ7he돿I]z^H^{-|;ZFCN;OB*>dĔIgP7f@1S*'γRkPf^^^{mE ?P'~O3OitZ ۭѣk򤳕)+{]RZ擑 !" ھ6]CFg2h>P9"ZX13b'gϺ{jY0= "@Q4#SXi@(fYۿtjDޭ&M:^]kQM˘ɼAجX+%y:> բKUV7 6\kNg~<󧊍 inku H3(X6cu$wCٳG/+ޑ4c{- Ƹ4bwDyC Xٱ"+ٶ&8$mzv}g]m9ޚ1m8w!g"(2zPRPggճk׻"Yt$)٫)ֈdLHߎ۬-ԌcZThs8HNdׯ_K#QF jhŊZeۻ/Ztq)6.6eݮ=wh}@C҂*$=3uD h&i?aCkez翫hȌ1:d~vDuJ+2xcRy XՂ uyX3"iΜڸisS [k\ջwfN5G&eɼH g5e=RCykWq2 Mk*@DMxN=R.Wÿ̗c-KZr+׍&I0^Æ/c.}]K q:eh;i:_UZG}evBih ̀2Mq9Ο/..т/UD:i3 1}vxkk_D85&EJlc󀤌Pof]ά~Zjң{wMv22S#s'%cyd3h(@Z1k˟;Hw˨k;ZzE*hXVtQL8C=Inw&bku7cTE:?= Xgy/87ɚ$K#GL_.{]BUAQ#4yx%$ćJ>qf%>xghniCJt̽3C_i.ҩ%̀{̑1}zZ7S2F63 j4dž2~'j^XԾӜ nݺj6tp&Yoi#@ @F٬X+$y:>  ^޽"_s,@ڵNՙgT1!^cVt_Z 6tۆA[;cu$wC޽[K,+ޑ؈՜ cF S'I %FV:πM $lr4:[ 4{}\ }4c;O!>0.][Z8 Hq^xCz2>;{3y}uqXy4uՔgka2&oԌTw8HNTP'W2v-xKK^zEZVظXvMڵoJ2vuH1Z}]-s^+%%~_DP6l)f@2}uta!*> AkZzPFCysfϙM_l,@zh:~cG69շ2mZk$uaV~:o$>>^>]r\vY?zS?{ؘP5ATo~(garhnԾ5rr -uk^‡vuʘ:С_UZGmEt~3 I`}?jJ(㋾ک-Tvڃqz0~~ɯ <)i?ݺ ^6h(@֜rI題_n]<اk,xZ&]ӧMDŽ32{R2@GYVL e$5xj!tӚJSvʩBK^\m5(3]'8Rn+P%.nf"ǟd] E5!;:ւW%hm4s [umrJzn!(@5y9]FK:sk5+)LS'ZQ lVVKƘ%b$ifԹ-IDAT hY+%:j=[>Aol\zJ6˥k{eߴy- hy9].MViy_#:Vf;LaaVǎqWY|2ܥD^ܮm9\V1V3פ5z+ooߖH@P(咹]Fc"hے2ߍH<Nq^(1WI:KR#%uNL^@8(@lfuga )Y.d?ƮzG!eM6dՉ6nM ~φK MZIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-light-mono.png000066400000000000000000000341111474517124600246130ustar00rootroot00000000000000PNG  IHDR V%4bKGD IDATxweUyfCA4HP&X[Lb&jlF D$*+I!Q"]E:"]df``f}xys9|>{z^Y I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IjMo$I2M u8883I`9pppp&H%I$ _#WjZ$IP9 8\LD$I$Ͳ#bHUYt`ڎF$IR+- O5$`I-G&I$5&7Q}1{ 8G&K$Ia?cv1Q]K$I,7;'yM;1m_qK$I<^ҒM8x0Uӯߤ$IԐe:}v"iw3c$IԐS Lg?ؿ@$Ij.=p%2xQd~mJE$IRm"8غؖ<=Z%+M$IҀ }9~5ĹpF8!NI$INz:b1º \og; ط%I1)y|NiC4fu.I$ bRu'Ix[:Ҏn"٨%IQd҇-]DZG4s〻H;kS\$I*boH'&OoSwCh)1'f-I DB#I$ g?#}xйG=$_U{Ԓ$IR&*fp=G-I$S"A:H:SxӺ$IL%]o&;IݩDo'&b$IO'}G=~Hu)pXQK$i@Q_OZG6buŞX\sܒ$IC 8#Ȓף,$I{/W$IxXHӁ]kZHT-$}Z6Qw$IMO~@zq9pxQkPO.$}pz$IR-%`4<:+I{Y~ۺ$INhg\YLɲko\oؒ$I6G }YkzJu=7 IFS5ijŊ|[C$IjMu9R:?J@W88RsxFJ$zC˦%'OR뵽Ym~f5AZ!7I$IF;( brtv^|X41Ng[r'x|+@(z]GH?[%<` L& Til9e+ϓ7qc;K+~L7P~&O[B{eۊxoSW>w$gQL@Il='Ic5Tt:+5 |zvus=j-2HvKh))릤nVˑ: YU4L@$OP_][%'z_eUb9YϩX7BJ@X~Hu04.dg;Krz\v, h]A&W]X!C 3ETƕ Bs` l`%l(ڔCA FxZ x qql`W(B*m1i:'sKEZdnUOLWSKIsBw1E 0 >ڙ^|ݚ&U|"i,])'?#SNM_3Jxԕ(֮82L@Ɨ Bm;j&`N5өc2|X<- 5;_OmҶkUaTk~Ub,$i4}WHɫ~%ۦYw pm?|2|"i,%TsYljhIĹ{!Cw~WI;d2L@$^_p? kz>;埂GGL?f&wsy qMA\cbNջTMvI2_& R/f9)6ȶ ͖vp=ͼw9^TSRH@:O^Xٴs}60_& R/aO'GYhr]a1qΚ*f6͉o}M&  24v&o׵LUt e"i,;Өj;}{gr5p񚀔dx/Ic\8>[ŶXbEK2Mý HyL@ 2Zhnh O :"K5Es Dl1ohT!I$(cbu <(0 XE$ˁ;+'uTlN,h-rsRڽG<ރ9GDAk;ϊmkz3*z%p10؝8[H+Ͽ;縐*uW{ASk7C&K$WG08w&sUqqaw{s^j!GVJxOa9Ŭ} x~)qOŵD/<8pՙ J1q4kM~X6'Hw"F_Tm#9(qJC!/GeUlgt,mt!t,:2?":#uzCb;?^dDgOWSהS?{}lL鷼}Տ݈~OUdN::efnby 7\}\{ iVo*,sB#M.KgqVTYԴEė4sNWMITK;we^/qK@L2F-f7#T wW7[C~,g'^G%ԯUx^G,9movS#z!m+"XGUl;?üQz 'U,Yؤ*ޣOS_?L Ӊ5j . c W'Lu @J@6!LUul\uOL|Y&ȯ(y)&&TԦT^U9o[2_Uw.xv})aI@!&47p '⣖':]_J;m TyN=s71MDÈ >o= ʲ}_C}1b<>#s !lsOcymR2E_&SĄ]>b{8D6 hǹYRNkX4߭ \}:{C=F1ɛvBquL7`~;۩7&/91WRmKtNﲄ,OE<7+9m}z'%!5m.thʏrCmv{?ڞXتG̣^G\l ^IMVk=l꣔3a?_+}K{y ~-F9ysYܮFF&<E/yyOHS6^eygֵ9م9{E s鿴o$1nâ:{Khgvi RJlcKjd,]M|N,Rz}5e4J'\gK _5eks59;[)|K& nG\:olwK8nz% _,<S6/'%gJ7䴻^iPnC)*>`Y뢩;.zDFʆMkzL]O ѸpI5ٔLiRbEnD9>emwugg맺Q +%|CRY7z>qt-z-7_q>6W1nC^gRpm1:}t$peuQ-zԿR:1X|bGe\mM@^E VdvhL$&,M$ &HEV/'peKF&G=L;y $Ֆ3)x1yIM3XON 9M|ZK Nw oKOi|_c9Rz}\8buں4;̧Vp)Q=+0c/(|6(f[&qmtV,Kio[Հ%_ISRR`m-k)sm91snv&Xw^Ac<&}\bQln[2#ieB[\E93@>s6:%+Ց1te7 G検xZb{.j`}WN|?7 z}s)]Aқ w.Ai(\&<EN%[Wm%- ȮAgSnRrf?y9;ͼ4x:>;ߒ0c_D &B| Kn6@53[j^hd/ǥ^5W5ύdfo~Bۚ"SaN@>TR GKh?ny!& !ս0~\Zi>;×e83)ޜKTe,h(Za3UdoIq;ITQL@?U"XKERkKrBFS]E-dف4k(։91G9CUoYbobféQw}Y;E'u+eێHQRG|-Sjx'nFQ7k;(kaySv3~vsP%JTSߥL@ɓǨ8[usñ{'m^;Kb}"$=1ug7aTRMeM 5r뭛_3ϠJYO'UL@TeӉ(QN$ZO1z_w7r]Gdߎ : CQa J`2N$: m` muzbQUՌ_(F7knw{b HʕׁG3E*;UJH@}^ D}$VXiXj6 %wEL*IӦ밭&&@m9yb*G5E,\yM6:A>Rͩ>W.';5dMc _t =$*ڟb>r6Q%5 ǢtJbt#V >xQ{EEnى,uEQ=kK_./*o`L,^%] kEb+.k:>\KlK1qQyٔ[VRH}17|_SŝsknwPXdlEqMth^O<*br~dWԡ<)k'֑c74k+7mP^fqM@ ay*zUN eb(UZd8}/$Vk{?ZR'_U 21,kg "UxSmHLMq}" aȞlZZlYz)g?I]:3%L@d[H̱Z~ (ݛW"ZnCVjVC\ϫ(F{6H]UL|ݭ YC9IٶN tYI6?q6k͏O %0^&Po/0"~#qD9| <6P|J׸)u{Cjrs IDAT1mKA?ò~4?h.p@ϫxf Gp|]Oo& rbDw]kKETkN$=i8]e=Ie4.K|3dצy ȠayEyU:G'%{kJKzqj9D1ēg=g~ܒ}R>]b,lW~B['n')D't zrBbݩ"Oz5lI|'ymO'5%/6${M^f|ZeVrڹ ecz^:y=axr\1THlw!T[b>]vQ|b-,$s#o\$'uq>uz~Nf{ M/p_Y3Rj^)!r5!gi\U:F}b ɯ ˂t% KlVKhkw+jcrHbLmq^u"iǙy=z_ 9(x8^V'mJ U_vi`MqkWcHO!jɣ 6'Pdu2|Yq0 _3SēsO$*|w6& E:Զ<1͔Z=D<->, zhcpfb\3uDe%=ah15"=˪T?9'ȿXthd>SբN],b6pMI@򶛉^A<* .U/-eVdHI[Nu)v9DYߥǺ'[?Lxm˚;S[QlbZ'wtK@/aݜO)ݙws4Oɿ6NX~/M+t{SbU*zL64lӝ~& OgwWװ& oI{m(RP?$;9-᧫H_𱗧T9Ssrxjwz}(; 1*=&eA45xGZֶ>x:~zms2(;{;(PT? W59me-bSbh`V[)7ف8U9lQByn/iIT 4T^|)L@9)^bt۴Ue!_mڜ!*5}fn^lynWjs1nB+J@G0gkAEOk3ڜ"*J3_(h(yyOWs–]+oUw4z}Ц0δx,91Jb騝Qߛ/^[9mV=8f{YE {Q$o:)wHTVbRVp-*_i[q)v(=V,FO!ħ,5sƎrnNuOB~BtHO|0$ PN9AfQ2c5eXxdͼ Um_bJ@n>o+ܬ'o9tRiݶk}K9תiVʛs"ծpY6v&JG9:qW9cGj2zv.<} Kb=2c޶ww㹵Ę{w_df)ۚ'+Tsw8eGSՍIb[7>URlL~VFU/QI b<l ^~@0M;E\Iz w ;۰% GS)e3X)SqØ@td_N5;Nrѽd% w}{m/XDTB0,ʙl>sں^vï_\S Rz1+[e' ?NJ|=nEk{&#Ȼ#bxEVNzJW$&<U.]A[Ͱ& sg&-l+;%+HbFʓU9+Di_J S*kLi9͉eT/k|S=~{y%弞J+# nL&<9 qb~CJe p 1qrb͈M =z0c'3w%&oGQ^DtWwo'&_B6Ąԧmv韛-ĘkUD :%v$֣XB$+5Ĺ1nXH|NG$Î6'>S s\s=yLv>v iSV\K`% ^w]d1dbnaİֳxab #OM܇ף$IjT]@aKJyl=sŬf_$LĸKE$I4㜦' ?:5fĶy98|v[>$IR&;|iH@|LamLT;>I$e× ȱìN,{-te"ILvҴ-y!5?RIL?+OlQ$iKӦ_#s/]볟NQ$iKӖ'RAU(ף$I҈× KO>CzI-5E{vpz$Iqv4).H־cLm-p u(I4i2s򓏋% h"95g_7$Ib {Pي$IcjNa-> rJ7K/,yߩZ$ICzi:Τwj%<y )% |J!aRDQ̱Bx'ӮUZM%Aİ&z]$IT߭(QTA"8I$o!&7euJ$iA\hr g$cb{aI%I%w]ð&w_Gt` h"BQRZ;_5$Iw"bm5N~ ȞBn9~Nh,:I$n1[wM*U:uo!L5MXT$Ii:e{pu/$aRLg(m>Wok(FI$Uh1QA|:Dm2I<@ $IzQm$1i&aK:z70)D9Zn#J$6c4l{COMܷ H6!`%IT ޡ.swٖc҄e?oU\T$illLﲨyyD){1ĵrnN#AI$#ٙMQ=C0)7&k$QL@$IcJ:+O`Ge^ |^U{Ԓ$Ij3Hl_<{ } #Gǩ $I6p$ ;g=jZEG-Iҙ̝:abu^qN@'kH;_DsI$dD"Q݁d9D;I;梫K$I| j㖀<pz$IR)7A=صӍK#bl$IraUY}ֵziǷz [$Ih6\o68bA[j2AT$*c\sܒ$IO'~1phQg~L$I4C)vGu(% OR+NXI$i,"VI$I ,'s(ܓr௧6Rs1J$Ij܈~ĤK=C$IJ7p&'۹I$IZ\O EDaI$ICS^O0NiM9$IbtqDI$IC 4|\ RJ$IjeMԟxF%I$BTx<,$I$֎\II>Nvh$I$ È58J<Ιާ$I$: *QwФciG-I6[JTz<ˁ_?!I$Itz$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I)pҒIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-light-vertical-color.png000066400000000000000000000500571474517124600265770ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxw|EF {UD:+ KBJlѻu^wv]]ZB")K蝐ΙK99%|)11Y|p0I$EIj-$]7F{[؜!c/;hE `fǍ~Z;OR{!?ټ?Oq?%=$Q5?]C^!`-B"Y=#)ݗY0 |7T4,<$Q#MC# s~=u'NF @0 `fƎu%m5{}@]B^r8VA.%a_e}#`I&5i-kI 4x@oF;Q{ն*))RI* +ц o  ?Ge?|c4zH=P7+B٠ ֛/[g-;>99MP9a(oM S=u$)Yf8=c,:rČQ糲Z$/--ZD)q^F!c<4޳W,yM/_$Yi32Nx| @$ը2HOۇjR܃5c"yLSJJJFZRlTqQ7]ܔB~QPb4h,^)HMjDiʧu]z]+RY2AJZ+@FYqzN2i߭kg-\~zO9v줒&vاפe˺,6{Vnȋ؛6m/#0kپSJy7ڕ-$kK_~"`SÆje#DRsO;NM9gQ YyX7kݺM*-+cg7l/  @d޴po-\0O:uqe9VH;;󪽑~%+ǥGX5{Bt_+Iӽi߾}[͟?O*jIr9sֻ!ڜ׷X>%!&&ʆ}WVH }ƍ4c$Mg*˭̬-_Bo( 5}]@x$15B<<[͚yVPjuoyS.ۛ.ZnB/  cVi7EKξ.-Ξ?eKW{ׁkLjzFV!` Xq]v\VzӾe7wƌ҂jZK{gFOH:,9sXcF߶Vߑ aaa6uOP?T|e2mٚ+VQ7]HsIX6lx۫ ],a1b'ǍшCóժUK?W\ϻUm9֫YY[X^u!` Ĭc޴ѽ.>{ĉ\%%%/k]ԭپ @mDYtH_}TTsNF+ZعKJW\ cvk喜@AaW[|H? !Ǝ3mj[7ԛ.n^^-Pz(>6z5zH^~;x^Y\rO{Zzz֬=>. @z q%eK$4ii/ǂ7u+gNJ -Vj|]I aO zEZK}Q7w"#†[Zn6oޢ2N͹.. |nÆ ž@`:*>.:NnZFy~p\uץAڽg]rHX֗u P̘8OuZ%zӾ}6;wFP}(ir9s.n5[.EĘ!eߴVߕipM3&)4$".K[3jZݼy˛.J%ɸB~:#㺏,[X]YыdyFNPfP!PS6(-=CnW2\d;,=qx>'i7{ꮅիWw=%Kvy&%-s/;,R Y--ZF)qnF!c5v٫%K^ץWjoێ45ēEfyѷշ%5}XXM&*4,\eڲ5K+VQ-N)g[d\|fVlD<<[ZCyjz-Gֺ1謿-^,:;, f~#1޴޽->}z4|­[?KcvStʖm9 gX@Ln_qIOG5oٳk1oG.[woq&2sz1ڱs^}m\MnTVoʺT2 cZc*mN&ĎӜ93("cGjC:]pS׿OW}[\\Ҵ~fz#陫}]2 q?V?p\mu\-о*>tj#8{G^+(;m:0Ij-#`,zoyӶ۷stPYps=yRԙ3g5?N!iHY[UqPshXƌ蘱 '6?𐒖-שSg3zUiIe*+cJ+_gȅAo8x)&&fhFFW[ ҂/>oo۶]aAߒDrO)I8v\gNViWHV%%ӾcM21Vwzj+O**ʕkFPD9J(9_Ԏnh,;*cMjڴ*.v|@6-).Gu 8sgcvh>}w>*YIUj.4,TOǗ}3g1erOVyo6mپCJna7]=o|3X4w}N>WTPPdeenע۷/PhX=U~"aaѣ>}YTsI҅W*]4yTelN{;vVΪQƊ{P#ǎTd9zܗݶ/ixL_|)ۘ$~ɎG߃ԣ R}}UR\,emVPԶmKzRPPg]]}GkvkeS+thȰa0e7ipu%/OUw<2Sҳc#`~?i\'߱аPM{P3(<¿ +ټqѫz+Yd}\.:yD4mT_|մi՛w֭^C}h̩jӶmҒRmN۪5U\Ty@!6&-wc]nz]mٔRq ]KPO(>ǣZ윷]:eOD\/i+ !!7!ܸqZr5S+Wѭ[A擮>G`^\\)7wfPvYxS^|OM9Um۷ PUþ3g)VG>#.\wm'S $sLV\.d]|v}53#RSmp-{m[́S;%  ZS??ѣ5oLEF7+*rpȦмZsx?ԺohӦ-*sUXժ?@}Ql@OjjjҤkƒgOԻ1hԷ?lֺ}B)Y]TuG5!6~dM>𐒖-שSg]JXKAUkS]z=J^K.O:t?R]r5S+Wѭ r:;NqFoԏ'"@Gkv45B+VtbNYzGsC:@IK̙sAp15B<<[͚E||G&Mhyzh-]\0*))Y[dj"֒eu*tPׯ]0S}X@=ױC{}~{̤d]t9=w^no`ڴizX윷2~Q zV!` Ak,X&G~bcjΜj^nD74G Iw6uOЀ 8X@ Ѥ>DVכrd;`㗹ʴzg{~?ZògI>D<<ò4@QQ'+&fctr:u&_zM}%efmׂGkEWW;t{e| @kfVZcw>~gկ_>Dm۴$]tE;vZM4gLŌu;=X*p>8V|f֮۬M3<0INΜ XԸq#=qcGiٲ`POSN] :ڷog?u̹`W۵ܹ4r`!`؀{?ҷfj5cw-<"\S'iƌI 1 s<9:֣{Ԥ~`RR7*-=Cn vY5bCG'yf.@Fꈷr{"WcR>iӦZ`PdzO(,m ^T/KM2A 4er,{Z*Pt]> Y7_TA~~ )ԩcҥf͜샊fX@Ե{7=Ԩq㻮]|Eh IDAT%ݺy3y& |œ:vǟ7;d]8w^I/ T~Լ}P  w'FFuti-{imݪ}nU>X@׶m=oSdCǔ\nw*LhXh y ,hݦxjּ]?K_]{ڴZSUeX@#_.{ZD\!ki* ESԼyڶm6کM6ةZi#ƚͣ/?.^>oVxxb Ə  C.]kWtUةfΛ:0tj@  \..^t{~(6)q# 1,@@,h{k{gg,BqQnSa~n͂BPxkSnݺuUp#_yϿ*qCy7nv!` `hLߪ( X@ѭGw(F TXPg3.@=CGrt>zWZyʿqݸ~NE  N"E*Yڴk[}3^ʻqC7 w=OaaPc42RM##ծc` `7ifQ˽p7/;sV9ofo t||c.ԱSGiVEq͘i7oԶzg[w=>4xjۮ:v6۪M۶ةBB?<{^Ku]}L6ECGYM.[;-*s @EР~hë\-yrN8r!J3W:vЂ>ppj}ڼn]~iJ h£q.,ZujZ~q5jȣ>Ϟ>{2{w젩[v"` vAZrcBM6όz3mפINБYg#,?:ejѪǏh`v"7O}N[Dy* WNC#F}FNSxDPYUx=M(ٔG*-zw5aJ\ھ?(7\5nX~jѲٻΚ6o/>"`qMu$`q#/O^[v35M-õm6>U֚4c~kZ #Fd.'_~G?d&Nڣ.4,T >:v>#"";NZDijo:PX=Z[EhȒ|3@  5[joE׷fd$%Uw>o}MSgMWxDz>pPofEn P7-anURRnٽ*mۇhH٭ ]u._9uE UIqΟ=WZ;sVxW!ع϶uXFg'LM-{j4nm‹KuБo0cYh8X۳~+$;-tY]tY[kvRW{o~t*TGej٪UFl֬FcF%zWn@4$CտGf2Sݝ{Ԯ}[K5٬̩*.h7 =:w:wy}U|C}U\Fκ4@,zw#DIlGS,v;eQvm5|9C:{ܳrvnG oknrz{.\K/)/(efܪp%GssTuKf էwO֒sN졁C)?.]x_JkN:kW^/>G\qq֬ݤ?E:}Zmckb+X8{Ϯ$ ^k;7sݻ՚s5jT=tyWq8d観gΪq,ٽg~cn\6/я.G}W;@4{M=iyݻK˥ӹԭGw>ٯh^C&'NR:TN02;Us*< 2qя$1=jz(AQ,)?Pk6(-=Cn.[g-;>99)/AjI&5i-kI)5}Dhr)}kVX[_RI* +ц oqy#}Wjlfءc4֛ݻuԷooW智?u1FWlqi#3eo%ݛԣ R-}ZWuՀuu%/OUwdWۜSҲ^Uj`㹇yS/_Tƛ***V^=Yum ViI6nJ?Md+[dN}3{<`ԌQ糲Z$/~[Rx5BQQfv٫%K^ץWjoێ4 bǎF޴ٳ.HT^=|\B:{ZIKu/{u~-u˶m>- @+B;p}(ir9s.$tJz~_#` Xı>'#(~Zp:uzjK:-[C֘eIA` ؁c;t|#Q{+x3[Ww hW{ ͛jzuo.a=j5*@ IRQ-Kʜ?eI/jҤiƒt:!X3Xֺ}^}un{Ӆ[FI6\  ̜4)޴ؾ/q`kɲ:{a:zf֬=v!`(W|lLkzz~Z`ڴi]6 XW^kÝSҲ^kCs٭FW<ڲ%Kӧgu٤?80xX^t{_֭[}jWuuom]ʖՒ#`ULUfgKfdJꧻK!+8rJʜgd|P>Z-11YtR (I Ѧ͵dWk~e]PO"f]s;\l~&pv8ڜs:fO;m/%I>  v@=4HV-˽RҸo?5lX腨m8d%ኟ!cYXnV YE9I1fmP78]BTbo*z̸OILf r:TNI߭L1_wXcd$HFVe?a.Iiw腿n/#ujZ~1&&RŮ&οȥd=/Ҁ;ۘŦ$?G?k蟐]qfMnٔ+:c?+S_7-&DWgvbSFI'u$LUvp+-$'g305;;5͊;]ֽ~ra{cJ$Nۦl'U99]0ȁUqq'}UNFT3FBT"+q+ݡsϤ g/#>.g8E=SW0&Do3ylo4iRe;ꜤtXRGsXi[=kG<ga'D/swѺ-Vʒےt{蟪?Iy/Fn]qq͍1++7ePS?Ӭn4mICƌ,Eg~C cG08)e}31q@خ$Y@RcZi̝31)#FY/&Uvh~+}va+yԩ'}vDKխ-5m.~/2WY`[ߔtgfM3ΫAkf˶-խ hX4iRIs*nǎ_Z%sCvSO&ۻOv ^Kq ,2ܵwmnQCmA-Qukwu d2m=}C9$iaЏ$bRIDAT=R|lnlXT~OϦm|Ic̤iKDMOԎWt\k) G(g27mx"xΒt^$<+)9K&y1mTSf۶ZI[~y kRp&y>ݘLk"-<#}e+mL*io;/d SZ-I ,;WjkQ^{>ZM-7rgJ:/M7%}ntl}._DLa[K ˱eZ[#y ~N%[R/4-]޾{KNuokݑG H,zߐ[ {tJ{iA'K_J:z_SŷVXQWM&ɅFTtukcY5goLY#Ico͹Ii*P7tyCҩĚ֦Z s رQe&XMPz.tnZ}׵%=1/gݛW؎7];g/55nzs&!pyenLL&=t;_jϗݯXt*1ڔH!ay:'o4/T4#߱doXU$ugH2_vg=1,`*W1zWPw. >(65IgkCk*qK[I3 }Yy`dθf`bcxŦ`y;7z'+䋉mES.n7XTmQEn%iM jMqAٿ]Ӕxi..I c*+,`PTAr(xl?{] =H&`IgS1^lfR侹][fY/˕z2v{Ǵ7eAwUR|w>3\U-Ls59[$}  QE7BJGGGgཱྀu'%U09nxBc9%f]X{bdݺu3+U}FI#?#;,;bc_DnKe ;̾ݒjжaSl|\]<{3y*7*)&.[w-#xɫxy|I'z{{wTjذe_/}5_-& Ld2 `0%˛*nN&lCZH7%(J50tyc|UQL6'pܤӥڷ45U&X]fxWI,a[Wo4fxenw;sTS{+O&KUag:37BBhn-V=i^0\<虒x QSwd Ue6R9\]qRaBiZj IO4՗!̆M]wWJ#IkAUN9;uz6BB];}I2sOQ`>P|?Gkƾ^0E1`/%o>TeKOh>tcy>>c H KX^LҶ-^3-$(өM+ƆEK#وb3;өSK>Զᨳ-=so9C5tQӣqq/Ox7#Cnĝ^vQKҒiuiI_ TIr׽뇢gd%MwS޿_* ejBh"Jck%r '%{_p  CϤST- M _nmJ'N,]XKx!]Mn0 ff#oU*1I kt_^*3dw _M\>vy nTaMf~CGc߫f_?]: PөMo@_/W5&SvK㞯>?[e)L&ޗA8rM:e]|{bhk[+kml8MWQ욻{$y,w3{aW`nt7}6ݘh4.`ED؜ZRf\zzϏf5k_ 7-T.\zLTwsXs\<7KC::]4I3oK7 K=zm,ov׽KI/S_O΋~oubos'[>e \ϤSҍl:N/Gdv 9ɿ՗0䢞߲w_s.Z9n$3(O~.`B{ &D.K+: xfF(՗}vdm*Zg\'ue3drnv*5A,pmCg_Ǫ0/P 5wgY;Ҍ;uˋf]N%^{n?wv δᑮO%U U?}ltt̺JBY2֗?Mx$=)I.K/I{`o!mmm_HfMn&{!t)e˗㠱m%Oy2Qzl,,%g~q\aΐ?GVXHtxT+mEQ;F&b#BMY˲ =6!ӿ`u6Hŋ׼:ʇ'f t\o=X_O&SՍ;kM&P*Mzf/U?z}kg%G)=1.e)kNWd2ya+f{'^ufÂpԏ|M~ka"0'.ja4IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-light-vertical-mono.png000066400000000000000000000257641474517124600264400ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxweg]/L&RJH$BIGB \Q^TDDQ^4c! *&(̀"H4LvxfuUyuVf ʱ)ɓ<1ɉIMO}>%ɭI.Ir~$t-G 0NInHuv}?K֣CG'yW͙>Z6'}:&y}{3{bmL$hl:6ɏ$fOo'yUu@4X-o_K5G&ywOc|2TKLINKIҎX/>{bګݚqVUJ.lMi$q'93ɦؐ2>kZAI)Y5՗<83$o!N`?Vڟ׫cŘ7b*sJbtk%)$fk;>{&9#krݱ. ,S\NrlQVU$/h=j`!䃩\9G='8$ǵ5"RTK.jxMS-뒼:1kAИ_N^?"ؚRz̔MxJ󦝒ɫ埗I-4?J{Tmؚ;5IK$L$G54՘zQ_;jKBm!Od]CU)6jybZ~٧Tܛ"|fK0$yC2~$M=yݖ|ԛL[-R ;垨Ne,_RGOηRzښgMA|O/LDgT;SLS-bZ2sOkVtyřfVݰvGJ/S8vV[8=S^ NRjkRr$z>5h9%Ym7$aM88į>ީMs^+%ٳV[K Oo7$azpsI>WR 雵mIrXK34`oץœ%PHLW`R/[<`<-ɗq`$W%ԠJY?jRzؾ2sgR^ٵ}y'uhrը9vV$2:~'y`Ǩ—$h6Pòz=5m.D<1?$*ߚn7}PIf3ݍ5+& +ɩ)3.?&stgXH-9ŚUGI䘔EC@~hjzOh{Mg>kO5aߔ`PW ^fKE׫t{`u}54uYTIy$߳ 1vAR*`& T{_# =ef&rM}^)rIXhZ]Rq64ʰvOOW`EԾW5tƺ)"O-hÖ90[,SNf nm5>63OBvbOMIN|c])[8A,B&_S$p/CdF4JXu>z`M;Sj89e܋h$Ir{]ܛL?VNBhvH56ӢRu[SzR1v  |nc4>jq|O}ASf<  ZB97e^:nS7Tߩs`z2>KgdK+)ͭޗS9IXm?vyʌǕ$xvc8/  کI.MsRZiJDu,si_W~`YکI.IO+ݢߏၶsJi[}"Tw#d.u]Uړ vԀڔYz'`!4@{O]3Ot$UmOگ|`J&:lII۵)M4q1 d%ɏcvK$jX3Ğ ]y"`!4`mMl)cN{HXM'X[S~>{H$IINn\ F5]IN5ؖItCO6XIIBh+ښ$'oH1uwOK)!w'6$X,&hMrϐmHrl!|(%W\:,DSgϛU̞`=W  1^[?Z[fOvk=ABh$r$ٹc6a\7B\;xQ\ $W 9[2$XpXM<J~=8Ó?xHx'Ɣ$OY=a_JT# a%=w@&8dW'9>#eq1ߔ'ڰ+~=XRqI7 ֋RQq4&vǖV;i^"pm꙱6. ׆$Tg2::;ɱ3{Zm-F]Ұuқ$8ݞRҚ{yӓ<#eyU{,hƆ)IOTe`JwWJt~5ɯ&ydZd%߫0$XЌ|^W}MI5Iv6ܗ25oKʒ:K)k mܽ6^*`A3yu[$8mN$V>䄔qm߬iU9q*̍c3z`k m%z&Dޘt5}KfGwL ]dB$JQ6./ɛܿ8J^1Sk$d_dଢ଼E6A)OfnNIv]$X'\{[F__.4fpo|dL\Y5ko2ZݖdY~'_M} JXX5gSu j$g݄9)Kܝpo/UPH{h=4uFʽ +s3ytzHdǐ`MoL~EP7fD$/|֪{JQ%X[rܘ_u,4a$/%yr6M`uI>Ͽ&YAИ|*?$$XJFՆR-|2DTK*])<>$%X=eM;R'nG -ZT45I~(¼95%`eMzT5Q힔b8q\/z2qn T7&L^uPB=Κ7CtKJ5xC$Xe3lJk!/a+R$<^~vîjNv njj{8̻JTO03eyj&XXNrtQ $?Ւ`&mN)۰`Q0~UVFEOzWS sm5NZkaD/budVX1uJ"%XJo hE)!R< I>Iw$L$Oh=j`ӓ\v}VjupJӖ!qkץz@Sj$ݑj;SBv2-Z^1޻R^mT3kʵiWe%%X' !- I>mܛq F{J+Wb 0Ё)7ZRr}@cd&%ac0Y\ k?nU٥shĚ$/Nr]=e1~Ovʲ}κuK*Glc~3e$F,O^\:Fܽtn{vpHf%Ve#@#NIrAOK<0^E}4iUߩPޚ~jX/Кi:ZNrl иS\Sf,SoH-I^dO)'VSJHʙt$NsǓ<'OrqKOUmmJRz&U|4ź0oLI$KImNx~$y_JqS NIM)^$ YD@t,&{g/N$[|97 NIK?M7u Z7':0d%nJrf hߛm3 X) $/M璼x ZZ: Irk-NJ!}%[`I`>\IC>@89|w`l+BI~X '<*;\YL@^,N+,Ԕb&57R^};cL$y`}xgW 91]l뷓wo'$^ԟ ^>h3z\ιI~!ekS8 IDAT]u}z jp~ V/٦gMm yyzRǧ vߚ2lW}'^ nNS 2])㇎ICI0f͟ ڔ$3=;FlS5ʲjo7/I2پggP{܈ؗ'XO|2okRV KmN) X?6wOoMI؟1{T UnƟJ)ѰIyvu'XC9dL|{ ٮ낔qF?R%I~d~^0b->Rö'XLpoXZXkS܏2NlkJU}4e'0:XFr[,GbI~" @G|6五w3Or,AU5% <).Ϧ$|1ޔ1)Ԇ%t7V<֖$mE)G9?%]Ó^J_R^ fnJ)3%`*`4z8mM`̈́1M8l?O`ެAmثauw;wvNIf;'fw{.;mƸ`հT#>dkQ#>{| I~ wgJ]Q$'^V- Sl{E;\ِ䊥OH5NԚ^ʶ^&Uc^…. [&]mRμ!цm^~ƕ%$K]3qef;.E,U'Pf+'DI'qrGX9e"øw>,Ѩ^ij龔WG$yzʴi<7<lԸ~^ZnRz_4 (R]z[I~`Ր`5⳦BjsتNYJo^m4]?ⳃ2g:ϻ3M}?O8}l{kzߦM݌a `F Wki\R*2y2=tI >wq$޽a>S% m <;_ζī9KY))`R*'/\%gkV` vtވϞm=?7Sf j涔RôݒѕfNR>Ɣ:OMyJêo̶$$'pgۘOL]S ׮OI^mٶlϱ)0 vtnK<>hݮ)6R jWf Z瘴7@#>{qʒ7Fl_&*~k%t~dt86҃c|uM07fğOy?4,/R93xJ-껼ݙ ǜSB˷|Vߨr<)e1aڔׅ̔H"UG_*羌5ȃS^mM 5$.In;;E˓Lr!RL3N팔Ӟٙ|zҔE?l7<%a$SvK)ѿ)=aoX$'' nMy5)c;r[HR?ѯȮHr3{M$XI)@Q┙ax5ɟf|Rs̲HzOy똘6$&fY.ן`h֦,Mt?zL└ެa@&ɿm;60'o?Za}1';̤:1!)=:H3&)T4juxh/rq&2Nh bJB8|T )5LIbm#)lÖ&ɆIʚyONyevRwƺ"mҊIrWdkR^rOt+z?(%?<jSʽqY KSmqme;3L08h./IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-light.png000066400000000000000000000623261474517124600236560ustar00rootroot00000000000000PNG  IHDR V%4bKGD IDATxw|TU?Ϲ34ADidL2 еmQ׊~uײ,HH X4JoO dܙI_/_sΓdr{y@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDxefl8(x*'+++1`44D?ODЎ'sVԒCy ,͸~L@SDX A6?bMssJ++LS<`E].g"BDDDx0r2=)bn)^{&"""07np?f( 0w hQU0EDDDD`BѠ3zDxMJʗM᱉Z<& Q9#u *8ԇ"ьaB1´~LS5loݪ 0hPt u6|S={Mͪ0S4 o0 c$ߨf;#ǏE|\955>+)ży ૭5~]~^aPx2 3̴8?LN:6;vbbTU/33l½퀈 Yn\Vr?M̴?KL4{?+Ls&6lT{궢Ov@DDDDƘe8mF`'&& 'g #ai!"zrlCt(L4sTo )"""" 'W:Q /+64g &NVd;o!/?gW, bB!)Yʹ?>29rőmxv%t}ᢪyVEDDD0!S]ɽ41i߹s'L0Æguhǵz>=?lbR@ZXVʸZ & Dp`:0ꢑ;6 1X"lQf.xޡ/-mqxDDDDj(t^X)$ Mہž}PXJ˼u1уI Ƕ\~~~!& tB9iDo}Ϟ=0erzqőYc >c&S@n+,84"""f klFr7f{`Ҷm&z<J5ڪ?oaj^Zk##"""j>U!E\^rr/v t]G 2G3"L$j}XPP.B|w5uL@( 8(N3~|СqEΝ?K>! wVTDDDDH;OS,43OS&OD>,,n7~ot%V-2.""" H ^~7N3 @ӚIDPCڽTPxockz"""y^1 M<8fKR x@`l631>w,aSSüR̝;~.+Ĵz""" H tfBwgiY0eJv ֭0sV1>#s(rwQye5~L@Z}MDFiߵkgLd< 8К53q&S\şZQtNn}bbƌ /̀fCMW 3gc^SUw7֡/nu|DDDD fl4h++A4NWJCJP\zI.ZnpG ߁N<'`5)`LeSG(gkgIѽ{7#k6mق7ߜO>Ym k##"""j43G!Lvbl :eǟaضܬ*D[C#"""*& DVVVb~O"@uqccuH30D-Y8x萙.j1199q4/sS zrc"**[+Ff1[oTfܜ1HHCn5j02̝;~.)Ĵz"""pa҈x2< l3>LnݺZGx7lܲu;f*~dW[iL@OVzwo6ӾKNt pաѯ|Z\EOGE#qP*F|3f6@y o62"""12OFڵPWmc= px5Ƃa]GSN z:**1sVo 򇂲(L@$//VS 7V) )Cq%h:@@ -uaazW<?lX9J) rF ag((,Ai|]wW[kjq QDkm+`lm&MDSO GhQw^__kc-8p HHH#04U۴y f̘O?LbUQ40)þ Ν;Oxn^g`Tt)15Ҡ) *CHDDDDv3m;ujou8aQaㆍXZ_o@R?no67~ w`QߖMQR4_{sw ǎF~},ì]j'ݩʪZQDHuaʕ"5eQ?lxdJ:_~s ˓`q"|d tdgjY ?lSgee`S$Bjmt?\t$%Aeڍkck'\}u[,]GĘ1# N'֮#Xv{ z}zW>ذv gή8LgYu%Es}{c|rY|Q%f*CBP٩(zgn9.ibQ X/tю>L@" s{$χ¹X\Q2̊nvjGvг ֯[Em;&g$%~#[/Njpޠǵڪ?}%7N5Sִi>t-P1Ǥ6Cp:~UvJJJDDD$2&[;‹bqEu n`Wq0v%p_iO}gtaxj2`p}ꋞ83:sv0:'}u~-t=P9J)usڴ i~}۲C C&d:{*.liٙicDA2T;7{)L@L4wQU +W}cp&$$18w@|du}{7x`֌wmzl&LCll!=n({ NqjcY)QQYwoD T)20i$Bp[VVrFDD p58R=8pbqLt8'lcܭ<naø=lhW]/ ~Ff༡CTڏs_3";^t"80DDD& a(0_֌-[ggÔѭ[G+Q~q9\r={#l㘱ev̚U>(JH[uOP{n:K֕me9Tya & &9zS}t N _F":gl;]ሉ%k\WbSTW5,XK>3 Xw -'K`P-UYR*eװY!&fi m)@O$Nvo>Lʊ%29}ȸfVs#Sck1||hk)F!\ }C""" I(Oa u7'37SFѧl6[gkcͦF@"?͸W{ƒB$|պڵo.o ή tod{pXIDd釸¨$qq_C*kW 6٥D0gAg'>($oImZ/[okE4;vcʔ8ag3[o%7 lcEkawi=p%ׯ7vރe|7QB7^zԒ@{ ͙Ƶ$0ӦA[Ur.Z}DSD~S Wv]uR PJpTnWJ`j5EtY)Y=0i콙ruPtMW ICQ[]R,lLƎL}ETWIJ!R)P_y4|].w._ j#JAQUh9)g@H_T$@]Jdhf/%)72piYWDbb. y>|{6>8?w QQEMYW>#7ng9 .$Jӯh1.R ]W+@;v@V̏F6ADȧUCH MM+ug'~ZH ++{X z|IHK3(یl=v.<)2?;#ǝv@F5²{52e D9䗷푟6Quڛ5nu .B:tW9z!z/l[DJiƻ\55B?HFJ?r=ߟ*Nz*y#>#ɒъ߀v4)@_ _R)h *vdRjzAiU'8ԍm^zcfÃW w - &km7`/شyKD߼y+8~2%NtSu붨YΝ0q8 z^Toegؔ@??@.Dr=*ѴJ _t 8MQ{1]ܠkSg<E³s*E@3:> ' 'D gF Qbc}{7~ Ξ;Lˍ.Jb@.؟v@dē]M%P._l.+jlL<8fk+N29Ե"֓ tYN4reg:;M.#R-^yyg;Lʥ2y" ~Ϙo.*<L^zFeb܈Գ5]_kXPN~0)Jӵy M.׸y^od6Iyyy6ߎ-/FL43O@'yGsL of#:HM[KN p~"U jQ]4,]$E)8w45N\XV13L Å |;ԯ 2WV@×1v=u@WD~e(5F1RQnV9 Φlhw̱kvlB(.ˮTcU rVט4S{|;V}^m㎈v<38?.r1:t8qٹsgzӛm7у00D]./A#*#G[{X{ݯ~Q c_jwn 3uHPO@l5;7$3YAS&w:xNB'w$:yҋGJk7([PbyÓ|qu/pv=_ U|%םCPa*~lpWQٲ|/ucw{ekBZj(~MY/Zls<b,yRU>]b13: O(= Y zV>>&R~~Qi$U/),(JB?ymX3ep(KV/r3TPSgWbp`,8 ħ ǝvj0޷s@]XW8RTlkaYURxS:sfRq꿀d|X^9Z'U E*pɈ>Լ d-ڿ岋H}S +_u :1& -H۶IzopB3N;w /y|֭߈Ǟx<|ħ@SOwݎo;ؑ齕h\"M p'3[Xæ`y2.xn4 d8s8j͆c&=2O:$Li܅}|&;jb@=EG)ʅ N rEYYYyZ@A1Ngp"7 ˪²{xA-Y?.y*'E U`xxhB3**EeU PMWNL?xNQ,jRJCj0 <JJ1w|-ٷA]+VbE#1vlby;-Q٧fcϩVaqd<lT@@b 7kF>eVh\3gQU}==´59#SO.ZX"ϡtË"i & NPPKMv 0qo>+C5Tg{,p}!$>5L}ݮ%Nv(ҹ#ny-䈏u6_/ɧ ږ-3SO_T.]:oG\8M] 9^H-*,6)F͔u݉_Ykj,i-t' . n^GC +4z틪VV5DA .iɶSxcNY={@Ƣf~hw`uNYW B%_!teɴE+zoڴ]f(W:DjohRQ:/~ϸIh̍ЬK?q7wog~_{}>Y/!!y#`c'+#_̤puayh@7<5ngh`bE(uܩMQ i׌lTPBk8(Ԡ(/n!JBz +?:iӠU9O026{d%w3w@aUi7+0Z#aEul\81t }ۏ'}._pHv\YDGxس772Ґ<^֭KrvVPVWVPIIIM^fdrra$AUjtZ)S+4jD^5? DKڕ`vAYų+,O;-Y W6F?8 M5Riv'0L_I@F/Ix"dOE<:xcx^+m)M-"OdKK,Z`H#vCG0z%&&bHOK7g#Tx*\zxsv:{>[z{%S8>2i"woEQ'M?i_Z;;yRx؍ ){Pt;YKS&Sv][Пò pȧoB7;V'ra≥vZOuyI$뢐P?O1M JY owJ),H@ӽr2s(AiMtc3SW͎m6U1qmyVȴ ,x?F `d4ԳE]6r~SI^/-t>opҲSS[5Ź/XQq;p1:亝Ywar;^ڐ5]q- `h{x碲e[-lsFu@!ue6Wυ?".202x x~Lȗݴy Ë/ߋJp8G`;d_2fT!]ƹS6]l%H5q`(S rT@r͢$?"47&C"jr8-Eɵ0^sT+ {!lpn gEP%|zL@((vY.<p]R--°Cnh8bZRgkqEtSd. Bݥ?%x)"";@7Ė`^Z0X 7 }]׃ b30^9,2IE 6) %(E;9@FvD Pqq;WVK5WwЕ(QYVTFzi܋cwEWv(5o__?}K9J{&ߖUlc$Pɪ*(z=P4A_}z["T<5is0w^),@/fGFF&E\|׻Pu6L0 : X7E׎%0-q;@a-NH; + T c4 & @ {EBR rl&*}H%;<+!X3uAm-hj\7}rsFǧ!5exI5p`<}2y"N",8;sa }rh'3mǝ6q\XFyyg;igeݴ}ɖ\,#"68dݍ-+\/823o{ՐsE,8& MҪ%. |mVz-]?z=:vpaLUYHshO Xb H֤uwzMG6f_lO0Wc;hU&wr|4bX?`19z;|yܓwQip@0i¼z"aԫoxhڝzh:,7@,)S#9*QĚi@վv;᡻~|v:mFY/ !`ņb6' C7|FD)'1zm lYq } d?ܛҒXhQ/4 ߏ1co<ˎl6\8 +MkSZ8SSv1inWvDgH xvb#Mژw?Bjc,+zo]kCcaz=vET[1\EL 6C'J}QUx7BL@89Et'qq<|8'UWNBVM>0lEuy^Qit{7B!զl=.l%ġ.=h2ݗn-ۦnk~)%ZNqHn ˋ5> wvFMaLjoZ _KNpǟnFnV`qӍ䈏O3$A(ZTQ[;@Fx.<'#>ٶzn7'F;`U& ~WzUI&C($Qk}w"cwRq#RW df"x7W_G;9Ϙ2% ]Wl\,r3m=VA1iNq*HH[XW鯼?lBdjurLJm%vzrjՔKS}T;Vz7VDsL>'0e+ 1ti.`]`4UjkC7h:(k%^X[k{ԽsTá8QDpgsձ9L@uo uC5x㿯bNjP\rieM4),#l.z{ ʫJ*,(R9`%4%}T kM.M@[C庇Wn >D =Hauqi)?TlvhΛ&]q߿o?^U(ʃ7XV ={38 ,o@U$|sP*.(,,.i@p\RXk"l4SJsZJ7Ҫ"MGYF_ .]ۣ\8Mk0(_TTl+U-w 8xʘ& M\NpoA֭۳{7^۴J`gBcD}P'>7R rq*zW>'c0]ZZˢ 3287+%u YYYL}@ D4V@*SVfITR‚Ҫ7`ܔ:ʸ(x\ tWN }Ա?/+{ᚑƨWЧ6-MV!5IOt=_ J+ud!=sm p7{ ߀6B?^?`T2vT)m >@l6(wWii2Vtfў?/{?fHTaݰKy&ϟdUQph߱:mWƶ-[ڋС6C/PԾ}JHa6t0Xlu+evlѵfE\M.,ö́ԾviLQd? @\%3gťMu Hݩ ;_Pw.Ze쑧Kr F/,Xc9.WnyձU C' VF0iF$%ʩW][6mƌZ/ NJR,b&pN4rEc&m$NN+i Q܅=ȍ$2 mԨu6qp:V{qݩS5L[Tq-{d`9 4SKD5rbxᅬ-00dѲLlt78VQyejaX=LMv]jI4& LIkѱsݩ׭[̀rDM.W hm< HqM |faR(ԼЀ}%4۶2Jy2Sm="2;}Kzd[Da2Dj<n3_quqɓ N MD ]@ '+(0c Ԫz :uӷ_3ށhԉvH ԳC h#RTb4/l|Nܦ*&ۧ 9.if5jT,)LJh;iJ_v>yXcζa14&Eֶ`kų25}Ӕ\BIJOyΥ| ^Q5| !h֛W)#Ю0tbz2~WXZ1D'%'&ȟMd47~N';|r6O;*}b言*`?ehSV$,Qr6ܡ?dK4V.[(H' JTV҇!ǝ:?}ĸqpߡ]XV1+Xok0<=V׎v')tDy ƪB,ۓ32je!&OeH--ZTejo) &СCXn=֯;:o$#:w,n n:z"66FF2l"W|q;bWFjԑP-ޝWY9I ,"7HА " (V9vu*vFۙN[Zj]b $!Q6lkFܿ?@-zs_ϕpHu*X))^rBfs\wݕix=U\!r̝NlӬי- kH 5Fy&u'= @yk MOծJƩu$'޹>#sMX:U5VK_Txq̓kW钟RF~JB̆A=)ccMRSSqܤQCO7 t?.;H܅+sRǼ$k/]ZmfMU?$-+/dʧdi5H) !]g=9>fqr%{<NӒnґH/@VXQb}zL|`e~26aʷ @*u ۳W[7myZtӲ #Hn?1hĘ󸄵VY<:X! ۴i3ofu|G$a\yOM8,ln2nvJb&LPCOy껽S/lٺs'])#%1W4 .l8OI/kbI5<,ulgq1XVws:g͗j.yeIFtD8= @5*TTtNETTTsE**,ϝӹsEvՇۢEKL6Ƽ/>/ԬNG5KnRRh_IQd~U{:ő+r0'씤c]-iXsks4\G%(Y=UQ͔g˼X1ǎ1[\ǩ,-sߒǎh.0aEOGt>3ן##vTRVjReXsIIImt˯ڿ, #ntُwK FCVG.Zd>޼M%EEM/cUɉSUMԅFk+VL5ފhlIS0ke_fT?edIII!]u.\ڊ '1_F1 6{2?`_8c)]"9!1#󆾴J־''d5﷊vSn쳭b1ڑXa%}/#37lr$NpY(oެ8) K\SaFֺc8%zGg1k^,Pheed}RYk_bUoxƢEK$~̕K1f/ sqK! M_IP׮]ԺuP33:WXH ,˱ֹGRFEF %=AڵeYyǒ²v攑/#+4E5))\iu2 Xd3^VgfD,o!IT2gKvjjodfJz1vcE=^qHUJBٔXUIcF}k|YZf^eۺKz(hJB쩔1;Sc?#9>ȓ8/6\US #茬>9~tǫ}^w&gT'-`]5iG]ރ! H4░qWUUULEE.,**Rѹ"/-9,]"ddY39~-8$a%13uYiqqentlzfޯ$^9/)Z9R忧Wleퟒ4:9I:4|wʸ1k_tY; 'ҳsvHKҳNhҜь+ 9kǮj']K'YIPq;nJo99e,Mښ)$+Y?,/[F7\rgIzj׾ڵoWT׵*))QłHBY]{ڴaWOUrK]Z dZIJ)N=a$F*mE6IcR#H!^tQ9V*s!mEƏʾlO jv9c[?,(1Y.|ڵe!];UyM6Lǒ+<4{Yjrů'%?2ҷT͑t{|[GkսK|ASe˖O#.bNNtcE|H 8FڵUvmߎ1u( u=.ԧ)Y5nql.@>* s<YMt}!+3VQWtDIc8~'n=qKodߜ5Kos#3ӵD]hJf*򜜜>4%WN*9&|C7iWϧ k]V#FxΔLB1ܐ󨵚V%kΒ,ԅf1+S;0KI7^RiRA:9۶lujdo %QYK:g=j-ٍ\{y׺cp# Q_S=bújբU4 C1\AVѫt.]GϞ:tfe;}SZRoݦnCg,\YIҦΣ9X/fftANAI7tx嚝v6tpcuI]vQ=գgu:txr;v7VUWWc4偩KBkjgPM`mt}믗{_ncՖ6i*.* ILF\_QyٵĻ4[Cˡ,coi@sGO+w]7.^1qLZTxNЖ6fw'PlݦsޭK1w(.1>_չ|v˼^  po٦}Wn5M#oݓ&>:{2t'OTΝz&@CjmV-*wyq +)7S^}|֮SL/^#?>Qmڶ9p6hqZFG޽4љF_]^b?~8@'kkz@S@/+**hP۠%5]]"-_Lksx_Ν5 rP4% g%K-PQQZ첟ڊ]׿ ;nZGDF*Xƍw; +Ծ ׵ڸ~>ٺEn|޽cgGWo=mۆy &gڶkR ;&R|L2hu=-6m~L:viܞzݷOHLC'? ;&oC''NjowZ#~LWwjĻi#F:Q6鶚):u}n׮;u5v|bبx=Zw&)2*2$1UZZVukQ=Z0 0s6V OT/\WՖMuWX:9N?$^x Cw/ױkR-Xa@*_vm?ps}rEƌV=jT2Sf8z`t?d1G2Iڸךr-He%?YɿҘһo=/)S k]kڷ@HپgzL P `x[}j9zL{+2a6(_߀ač*>Wp}ۧnRth]ӭ[TC mo2ؕ?_z]})m?p-H=dފn%5s WmջWF1"I5l ӿ>-//קMwTn۟4DҜXkUv{eٳ 7뙌5h(@ɍ}~XcM?_n֦Գgu\cNyۭjߡ8ʊ=WxN}QgNV~}ա ܞ_?_^V7ݻw B 䓽{+gG%:qlסCG4p@F'8F=zͷTEy>ڎ>vΞ9aoY ;{P5Mo9WN\3ܹ|} %iL]?tVs5p`?y<+""Ba7ݨӧN^ݵn$|U^vLR-U=03&pt!z42rӧw*/}kN{h4C۴GG:t.?N HXmڼM݋zTUUH31yɩktB2#+4Μ>_yCkr 4ݧWSj`:e/TyyGjΜyںo6&"f„k.[nWVYm=yV.'u,^}zk-#Uq\G H(u^:vD }ޯgff4ƱKNZNLRRR"k2Cz/}ڴkGDP|>ռ**(Z{ HI\'Y{O u몇_#n!ԩZGKwfϙCr?XSs+tzB҈$&2~C5cTƆBs3~Ç7Ny!N `iD:uyU)#!?O8*..ѠLï%)?_EW襗^ׁ Ql-l7}- ̀4RƏTQyZ PlӦ&OGwq?sKU4wn ϝ $+V #kݱP Mi 3y1+}S5dȵN-ZZ{^~'Uw ,:du!M (@I2zNR@ƏqfΘ.WwqfR 3*u~ ֮<(g潥:@h8i"ٿc-^*k}H1jrqeg窸D 7q{B?{=Y{h \ik6ҷ%9*M|s{xh3 Zm#unN:Pc4q,. 0VG%d}5}T];h@3 ^s,@ݯΝ `ёJ mf3So${1ЃSԹs0T-<%Z/ hc4kDlޟg͒H3&-"IQQp8M8NHs(@|>VjE*;>^et./@cC̤$[߲z$:u3P旦^lڼM'oŎuZ]z-ƉJNkd~/ix 㯻nf< 999Ui&ve=Io&ZOR|r 4o"JEE. l@B҂$b׽5ztM785䓿9:xp`8K\54^ -PJblt} ]?T3fLSB5ر7o0첮IFv^jh3h< vW.8eQ'N*guKtK?er@<*/Т^ׁ Qbh7}-)`p[gW?(H۶m JKSc֪`nԎ*,9 HX9Ic߯oo͘>U I>}='Uv 4z'e8 |EJ|$d2~ĈȌt՝ʣ 3g*u^ ֮6d̼$9bb;wylѣǵjuΟ/נ?TVTYËjϞ}(o#}dP3 ѽzzϳ^+;vд)=Vٴyz{N<3yeaNހ I ouyN?`@_͘>M,@;siǎ]=HZ٧ҳs ЂPLJb#$c4zmzpU+_Hqq3SfV\7m攕eTHMMš_D?V?C$)**R{MRD-CY|>eՂTVv>^4~Yh-7j^2@BnkM=^Z:f@8oo7]We;qtם1yč:p3""v~'i`CRGd̼7:M{︫S[E2hIQ S Jѳ>˳bbR\Վ?%=SZ]Y99G:jRc3RlCad6L*Xېy4 h?I}чe̼$z~6@X پg7tyTDIa~d~k3VoPf@V=# kJE+ ulƔXƆ"6<x d%Y!cUn~@(@hM42S=A֎׬0cI߻tJ'V(c l-ZЬLp{ noyZ"($9IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-logomark-dark-mono.png000066400000000000000000000402061474517124600262400ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxyحU}bAfEDPD'iڈMZ_&hEFbLDi&gSp C'@Qy 8z/Ifp4ښ~}xqu~$I 8xqWK$i݁SjYU?Iu-J 8 ئ:$i'6ey$I 8`q14NVYlQeI+B_u$MUq8vWJڏ4;,$- E6$Hn?X6 xNw'Y[fHU"iY`I $I?$n]\d%>)kl]gcIL+Ƀ<;< $={~kƢ$IҴ6~ɽӁǯ /lqI4#O)2Bv{/HK*fMQarp<0Ȕ[Em8xm$I388>kmԶvRvm$iJGyYT|@휫9I4À /,h|iGI4n)]EƏ s}4E9>gU$I- 닊;չX 8 ('7-b$i GWaCgUp|IfH\sl1y$I؅4EuJ[~T;Sݫs!I3XTGu.F<>g΢\>gn\H#/ЀG. IBD5r%p|uƍ y>xXu$Ik-`Nn-߼TbR~Z-w΅$Ishw.kK<:U.:ߧO߬:$< .Zi|||xZu$II>Ԏ|GLG]tn֎(>:$vώչvwKѹZ;'n\H4𩵙GsMy.}-V Ip𑢋3ׁWa.(<WIJ~.kW߼:+蜮]Y\H4Q}w}7Vsvoȭs!IG]tâAVRYtkkGH\ IҜatӢ92;UBlOcwkg殮ߦ:9B^DJʕy$8Q /h/΃ p$y$֯}glJ[TBӉ;3v=s!Irw'}sJڽ.΅$i Zt88:M#3 ?^\IҔ?^2G~]IR?~[хh[WBK\_^չ$M'_]tYCWu.4߀ݖ >?zWB4F]l\-0gVA40`_њ UQV -.*@_0w^t"1% ZI=? X6ܭEߥkmS IZhU^t1W $i1,\:8ϡvsC IsؕEGܷ΅4 +ksw΅$ooSMk'DqsRSZ\-s!Is~+E:xBJ ޞQvy}! gUAf>*./Ӣ%Rv΅$M-\PI.#\W f}O~ݦJp{4(o}%-*`[zR7uڱ:<[Xy;Cu.$i"nYBuuEG(U8J-iu_YiO>[?xru$i0n>ac|H*~Pݑa\HҪ~:ӵk\ I;ךoXչ.,<|pu!'8:!vKc IDߧ# Pȷ>wW5$K*aΊWIs؆!菄oU iE;?Oy+諲W[dI+9E :ꘇDvl8\ <:}uVA=2wk.}+&%iW] _i(B.{q;}kv'Abܬv9 蛪NڍolZǴ ߓۆ,}+<%i܀m5_n؉>*s2IkDX]r3{l{(8oMa4&ۮߢ~8: _1|WZIf۝,J~%M̮^L0zp*PG_q/_QݾI?d2SnȥxPPυacؾVlL_t]hvFTs\{l&c?.nG v^-RmYN/uKrܞ=6x9ޔuI~gm^4ʣYԭ}tY9ձgY8/!6KQӘj~W˾ycuV8q M3!s'vkzmQ}¿I2[6=OO򴥿}$:Irr y$Hw6"m44LZY}'O Ru ؖ>W톁sp7}b8 <9XwU_ҌnUү+%uLׄ]TM9o wvnO{::?MH Kxbu7؍<У7 f\&֯(jGIfMxfun&]!Ҭ߿I_`﷫s!B6>a|:74;ؿ:OCB_uZ'sO3'2B1ą#|xJuf }44o]'ISPu ocζO^~C$}l`jW^t7x$#LFO3%iV>9Rߣ/EYulE5#q,c9}y 8. p2?r1I]$ piu4]!O>5`֎ROo׌rd4x6K,Cb.Σ)nRRm9;q4sOV!Uڧ:ղ^Lݒ'ӫl'o}";8fwI[WdvY`iI>A_WLВe'p듼vNK:gVf@G':p2Cu0$C=w:-pbK,כ7 /Ă|7]k`eg>Zknh -tۿ3pl55u.0 m0%yMk3Ձ 8,} fAӥIXfAkksBZ'&}yE8ΝI~jаKZ>rsMJk˓`Cұ4'-G&_[^29|E8˓vkՁ >}IHrO $$qǃUb/8 A>?kՁ xx?V>c[kW7*Mp`?N➝#Zl"F$_NXZkW^I6=̿}Jx$$)w$$] ,qIޕ_~eQi(I^m,%1I[p]Z{x=G>-nI4}#V3ښiIL$w,_W$ymY`g"WU{-]{?q}iTfxF/+xY| |xBu,ZKEu/7G}ISISfn ްx#tX36'qN v\,Vs#/of8^^pt.Y{$ż=}uz 4Im^䏲ېrQ9X͓(\dn}J^D(olqAZ͓rKS4wjC|NM,fq$LW6鞬ܨ#XBK?ێruK?IMhۦok$8$ͣY?jyܴt ~I }E\^~A|_kɱZہWRہ`?j6yܴu '< 9?q~u aߛgVR$m}tȃN[,MyIO_TxRO{V"W&yMC.QY]/i z)vScZ:M`$w\N;u7~<7Qϓf䏓=R_H_G<:"g'yMkm5cGM/oj.kyq$gF5Gg$9+Y\]䥭MFeZ;;akی{n&ҧWvNN,(SqW7C5ɯ%ټ"b&y[; ,}ْdp*II^Z+yeVGMO8(ɻ<2Bcy<]gϳzlq(UKg fT-oj.n %Vu<J ah4Ӓ,J_J_hVI^[vCu0Z{lubmépKwnfy5y7O_b~?}}Z[S6 hI^]I\N}<}GM'sUk$O?dC-{-<=K\YN'$p:#S 85}E,N_j\\I^p >[kU1GmIv*Iޛ#(Ó:"MiՁ,ہd%԰< nQ; ޡձX+Ձ̳u8 c)rI:md50Zmw^p*<;ɗӀE\%|$Z6kҷJZ>7I*INN2`$66"yWJ `FeQxz#o缸:"&ڙՁ"鷝SKso~:?j".myI^OG&98 8:Y<8=Y$/m5Oŕ4* ,^Zkg'y\S$;W3Y[Nw xLkH%$dp*$}oZ:il$Lgq8H7I^ZAu0dQxϯyfu,E.H_ՁTғc)$'>[$?j"vAkYI~.ɷépX34`?$bWK_ɋR\I^pB[9`$N$;S$)nfz7'١8 $$ooT̤?jgzI0}>"Iޘ}>Ghi{?IX[k߮F_pv HX|>}^gX|)}'fQ8KQkI>Geڀ#| 8}i3 >{/MD+itV _hOw)Iޕm,e_M$;S$M;E\m5 O$\2IiՁlW'فL?`mwY%g&yuk[Ձ;G“@f$dqo- Y}:EaQ4#ZkO~yI$9JV _h !}nl]c5´2'ف6I~?ɱS*w IDAThPg:EfQx|~ccH.MߧՁQq4Zk$9,+8{{nQ6nMM[ZPUu5 G4k[k'$9$G},[k[\IK$8"LKZk/LsIYn֎l}:IaYIs3 ,[nGNFxyҬ9.ɟT1kZkwNI$>GA'9vRk$fѯb֮n2}OUdz֮FX`iVxcu$H$^%3ZfQĬjZ{M⭫ݑ?֚beY.We[Zk'%yDʝ^XZaiY`iֵ$@f]kI$/hZs9 II,46O>Ձ̃ǒ<>˓]!V#iX`i^l5Kk5In/iܕŁSZkwW$iX`ilGT2/Zk׷ސ9F$^ZsSmIdySWdP6$n]Q,iݒ>Wc`aҽ.OrtRL+IcaZ5XUW_cZrߪ~FkAHԬO*?:E4S~I, ~ЪW-G4Zkw$yiY_ ut/5WC'-$Ic㯸7꯬iIS[kqt/eI(Zu ?#X r?[bt_uIOPDX`in,I Q>]@OU i1X`i,YIt$ 8fdZuNko$t$< a)qu$-'-y $o}r !-Gק2,͵;—mLcI,4ZkL_M|%FwND%IgXZ?JI֬eLJ4,0ZkgeE~IOTydZ/I^#Y'*IҼi$eeEc 2$IK wIeW% x$ Xp pxg&0Ʌ:%9=+xه|k!bX$Y2+'J}\I$_m]c }#mW$yikm%fɬN7+Xr]~z/n$; Ӓrkm%O%.4 ,͒Y5< nV:Xru\kZk=IvZqFkX`iJ_pҁ P`ݟ;\^l}m7\,QiB[&9d/p77V$iNL4?Mu`% %yBu`%I40`IҜIW}d$>Z4,$iF&;pZo{O'4&X4e]bi&ٹ*FIg%Ildlh;Ƀҗ4,$i`z~vK4QX4G%9:Iu\A$i``iVsTvc{&#)I*fZ#7l=Dl5x%IKsv]\nk}2x%IK vk1*>Gߊ\{r﬿m)IR ,iZk7%d$IS$IŴ:iY`I<ɻX `sUcKf˵I))I~;ɍ+|wa퓼.ɉI)GZ ,I J-K:&9`ys[k0։Z{pq8H,$i$IX!X`INo͐O$/i}lXI~%>x9b%I[ڜ|0C\;[k2[%yU&K3KۂeI^Zj41L_4.X4Ӌ}V׵B yVϪE7wK>j[Zk4V xpJ/J ,I2A#W{𥧴>V2ɯ&9).He%ISd6YIv_K:khu $|>4")쬼$J x$pFfI^)#X4ÓcV?$ښZ>`$oH$[x;y7VTKOM$;$Zm3`$%Ig&yuk[W; ,I*<-ZbMۆjyg/؁}q׶>:qq$W_IMGi~iO:Y\]~+:G$;&y~k8`$OrbmlC,}W>4,$iܬ#KZk><$}/#>Wzx84g_ꊫZQݯd$ +-* ,iŘ낳e(IrtDZkwUw%$NXͥ.JUӆm$: ͧ4?{NZkl:IV!MdHM/ ,]8w$ >I[T}9ɋ[k7W%yikڨ,o QhfY`$?*I>UqaZkM2^{}ZxX vwόp#E%yYˁm:'gTr?KLmIz <1R;k`Q̗||mI.*ZkSdYk5qLQg <ջxxup !VoƐ`;^4}jPsKi]|fI8`8svF!ɍmwN8q5&yAk@"oꯏ.2I3 x >Kњr}Nn `;n>0w1{Cu$M6$~.,G\}36y,I\ lYݎY4bWsS:g m] 3 SIS8r+ \ݖYlO_~rOwL۹+V~M'`C|ĞQIS 7Veoў6@ mL,4}:-:N'V>=})u=vHu5=Q?n)3Pp#B/}~5ZضRU^7Gc4K/ ip6CAJM.}ѐ[6I3;SݾY|p *HY`[JM.#飷I!gO1Ku;g ρp>^:6T;5]}( netrݯڍIU;p-6LnӮI5[ eWVy[6]I^Zy ǖ47=}xvu[g }qԤک:}ʸ%գ8w謠ϑxXug }ߴw ,<`?Ƴ_Lp9E_xhvװ"1Vs ,,nog6?I }Qoޘ=ݖ 8JX`iG׏=e^m4gߙ`gm%Vf Dz0IRvGlo'yFK'ONYt|ߙZ^k,:i(I>o$yFk;|OIؓa6^7T`V~۝7WG4Հm9 : :;+khOn|Z`ijย#wv9`L[sC0K[KS8a7_ۀR *b# 3`<WrhNNj|8:$/p&ấwۗeZ:g'GO=KMZ9` ,?*xs<%M#@#E$_ϯ΃_V*΃$mppaayppu ?ִ}Nҥya-:;"\ uEuۯֆj\HҪ I?zWbuۿX.>wӗٳ:40༢K3 =`U x> <:46Yў_ETx ~lo̡}>jV-}Y:[dXERtשn"+ߡ:4q> NL9^>JS}*su.]YH$;ܨNu.+Iv/P@߮yF?M$i% gZiRx. {ō%IlK_VƢe%v4(:T;qCi4T(:Ff)pTWD3'WJaށ-À S%(I'npOL{O>Y+I4֯s[g?[WbRNu'׆$UU'0bXL΃$iJϥvߵ} s w<80/΃$i [)H ^q(:`Z[UB4Yt }չRQ.שnk(kأ:< P byJa)#\jTJ}"fչX|S/{,𝢔/a\Hp8 Wa% sV<Ta><:o]׎0<:Quۿ>Ԏ~!$`;[.7/չؘܬS(=kX I~)5EFjչ?E9YBJԜ_I6 x ǀU L_|0%Ϫ΃$IPt\չX(T-pWQ*yu.$IZ`ۊ.z rQj ڿ%}Rpۥ:$ x*GTqۏ.,lY9$il._[ ma֒$MqT` Ԅۺ p2$iXEm\gBmD{%IZ?uhg Y| x)ILa,l0 $i1[g1gZHfI4Mڱ΀poIfSErO-j' iCE]׎(Jv[.7o`k+ż*cޚ¾~wXM$iџZr%p c~`ak˜./ a+tHRXX_RZXW$IlmwR[e6-U+~.'$I`W=}+\ ^q|(a#}oWPuI⪿ҜJ$cf~$?L$$ٮ( 9əI.Kgz{$m]\KSQIޓXt.K4< ,iojMsq8nJGIv{u0KZ 迓ג8ƚ$uV#i,~ձ,󓼦@$M[.H vAkYI~.ɷYW%yyX\I,iA&yu7%ٱ8ysK?IMH< ,i$99qO™ICk;ՁHcg*)I$OeF}) OV"s$%IZkO9C?(g8k06ྰ`&ƸGpC *޶M=1i6mM4miDpE#`D;$bT܂"¾ ̜93}Մ~vy滜}YTd =RxE6ң5ʬ:#э`r5uNB)!GAb8yJ\P V!)бW[`IN_S>|r> @g[A-V`s`ȩ{BI yA3HXȮL Jī!c3Re"ro,XDd7uB`,_sXXOT \M !ߐTYnH)t窃{a""n&NMU/ 3б`sC-R2FX: Tﴑ#aER<&'VB" @DE&=d)H755##3[]0uJGEvNT "b"rqRJ]M=z9~yX&uoS>>>XhfΘ^ɶ;WoL!WbkT",XD.깂Š7b㧐f=Ωo783RMx$ 8c5X\#:E!qW\E/w1+гg%@LcomF"RȅTVfX)fY[!3smm3Or`4?=:X\RԖQ0at\|㝂)1vgpY⼐x> d?V Na"rr5eGKa"J%HNNżJaa!HJLA"|ևCS .; t?S&55Hߘ]s!%O|Əò=HE 4fy"pm*ͱ`9YTdm^[ڑ3$8+шY7AE&)]Q*э`9+ toPrVk]vF` q 5i"Pkx2C!ݴ?`9##,:檘_y ))i8rncذpHGHUvI T kX-/ WB~zGollƍY؞ V+O|؂:DMKc"U $tOsAE"b"RB8`io"biXgoFGׄnݼ1?f̙5"{bxDFV Ff @E,XDR[~(\B"$T̯P?*kިÑ"C#T ,";zIx <=A[{WzL2 q "BN|TȎXDJ);B@oϷ"7/knDms&>>>Xhfͼ :_WoL!',= \-? "2b4V={tW2_ d 4EU `@enmB`%oG7ڲ YfnsxfL% "Y ٞ=׫@NX@J)jˎC'P֬MW=d @hL3 B8|oRJ뀐1Bpo[ĂEtjJO GLV1 ɩ8U|FxaHJG%RUؘ\U\ Q'5ۦxRO1!==vBJ`pgBL?˖Ƣ{ $Ҭzǃ*SU`uPU`DízU̯p0w7oĈHZjHt9&c" +%$ظ1 Y7 CԤXt TDJdV<7$⢊DΌ+Q[E==bb\ߌG' 1ѳ1w x]j + 7ĨQf їjJ g}VcT?v$Sp\9vh@ظLU i^my b ~3T1̨Ñ]/-vLU"gEUUUي'S<=Ռ-oCFF6=ܘ^SdxvM #m n&NMQY {:6UQ.c"TWQ8ڎ!bzU1!F OM+t9&ѭc"RSz8:듐FGollBf6lݚv !0uJ+@;|_a}֯m* ,r _5=?ߊܼ|^ OO7,^3AשpUJrm! 9=,rz5%3ƪ)$NCyyDNoH\cG qRģc ,rZ5eGCX_DW\E/wDN-2b4ѫO(_]o=6渪D7ÂENdzO'x9z~k[>ކm09z<9}*-@x\;T 6,X4BU}Gn~[5]MQ~~>X`fͼ :KRⷦD_ǂEN)u$Ϝ-ErJϨOB")UE8h أ*u,Xԥz (XSSu) -DFݻݻ)/2n} p%EzY}3s6sG[mlh4bhT Bim^ 9 9ܕ:?b~AJNE*iJ` q 5i"PS!%6P0,X0WK x*旖CrJ*N,V1HC *~C">Uiil_`TBIti,UDJdC Ac.@Ev#04'~ - >ٍ h}VDNwDL\<RK='ܦ*STU}`MUZGsU̯k֣D69&݃=`XgoFlfaXUC#N @lB=U{J<d755##36x :7mOv}zSD!>n!|TDhXcFoO#^YtX\$Xrg_ri?¾MdFGRR=-ٱ7lv "#FcERzM7ձ`Q5-ӮoGf3lCf6946sx5fǼzソʭ.z=0c,[oΝݳ\7::JeQ};pG͔R"!Y˗8j,u èQ>܆ldg砭]"tCLl̝;zۭu}M?Fk-d Gll !zYH1:#kc))vv̳%HINéb^sf&SF:dBC|Ҹ,_~~6=vAQ|j-.]r/!B9LZ+qPr],X!Ņ,vԓ Xf=r!%1u6={:tF~Khm1#"iy<%HNIéScSeYyYkTCK]‚Eߩu/wpj#w!1j0>fY,|c3lc:@-䨉6=nCC6}[u+LxjӻcJxbJ>+ ԗK1Df7ÙG_c46tH ,w\8ӈywFLl z)ݰa3aO8pH/:p(%l;WpX*)-gr0/o/ // : )1S܁U)i8y η%!&˖ ((Ц.:vɩq]%(+;(ckH.g[Օl]g㝿q>ÆA~} s*HK3i")1C/` (u~'~ϑ#u:qyJg膪OY[W :WoHҥ,櫎)&SIXIlZV{lvV\ubQD^= ݐ 9zѭlo߼!}#}e;3 3k:Ο /ާvmXf=]||aX77vAƖ%5pCTW_ªT1Sh$%&`0۞1f̦ug^w2L2`|xCmɡe|,l6wV` Ç\`שnHzGGHpq, ~p>AEa֌ile;f][<.E8yw@H=Av<)Ԕ~o]ι7[ee8TpGPZZ ᾟK/mG؜ᜟMz3g܉%m=6Wـ+Wn0$-Oa|7jXjJςT6G*9՗.bSC B̼Y7_|#pI|ASti!͓'tʳFGRb]{) b3%((8c'PZZ~ M|Y"#F55X yfFDB̼90m"}Su r5z+JΪE,ڝ )c f̘6}#/ đ#rj0S`.}>1l[7ȍ9sf6sG[拁]_Xt:NGY-z]XcU!XP[^+)ul)RR]j18:h3TiDѱ())k7kfٓ8rneKcgcŪUҶ=`Eb<yOB#^Vc"@MY)s܊7 Y2 TvP$%#Fۮ\?Ku('֖Ǣj<+Nq6gpX`cWZv)8yئugΩm#Ic!cGA`҃#-B_:GWm6w2lgPPpҥ ~ԥ-+^zu><0 XA&7lƮynsz=fN%q a"OAj`j`ʜ IDATa+lrb3Ff#&fMo*CGQpN*F[ 3O? إ8FFg݅E -b{af. ^zb3?Aj`j ?0Wu[s-G-jp>RdLxOv,ϩSxU\No\tSPQqގK>}|uǫiYЈ1H-,r|eõMsfM:UDZCmrX, e4/J؄gK,9hP(0d\UE^GtEј9cz<jOv  ]=w4BX-nIicc2a[lwAd.ן,\t7cijjFFf6slz֝:LNޛY1A!lƂq+(_P3x>/s-YF̻{6ϟyf:#jo#G ERb : 1 $bWr8 (9}{чv힙TTTVƏĢww8/Vc4$RՌ2g0 nuO q 0qSmopÛ˨3X4OQ@Q#]gE^(3{:&MM[=g>Hކl&q=oMSDcXdyKQg 8[wEߌUĞ`N*˯uȨÑ4-c6ǂuǎBrJ*ΝTfzꉄK2}{c%:c6ǂe{"mf7c3#G Ex֟;|jtCLl̝;zޞk ,X7_lYZ[ZQW_///.3s^X,VqlB&MeKޝ(ق^]Ӧ`Il |}---^,X7_lQ*e!t1|,#"˩Ī4;~Ru.FI_;~ 7oŐ рoCRb<||u,X7_Z[Z_H,[=cX6/Vb3ŲKaCΖCWX4:՗fm:|^p߯o'''You`K݄x4h0`X0&hkolʳ=̟sfࡽZ[Z9c+fvӟ]3 4Kk\W /~*:`ڝQBו.ؽg3 B`qXl a?ڿ_s]˂m|5?~7s <+]֙HNqmw 2I4k+g3g:w9[KYou`}¥]Fli,wކ򍚨3L.Zo®ݹ֞?R,mExr RJ?£ys`0v|pW' !2b4m߉M?FkKX F̚v&mWniGNO= )e61 ;w"!n!&Mg4=QwLDMˇ?nMdhXqz:G*% ՗TG!%BSu  `㺊ӧK:OB.$4d0lQ<_49zܦ%B l rx,]IiEn^>݈֮ں:qȉb»1k]뼱7fa{.<˂E]Ktb_~*81s0Gck1HlٺhkoW^Sdxk>+ł={#7CtC"Ԍu{w./GdhՑ;&b?HFxWu%@rJ**ΫBtS<}qxhXJQH>}za8}ѸBÿh!u|s\42u$-Cg;Ŋ={syiDCu뚚_*gVri;wECXhnukL?ή7zXt Tq8>AN;LtCvx=BiUx:5|x8V,GF+9y JICY99xoƹz ,rEw[pWjj], ^"$PPxGSdcF 'g6l@s q%V90eufY[!#km vK;4ɭsfO uy[r nzM}ƹ%x:gKJSgTGx ϒ2$':O^"q\!c Gllΰ^WS[L8ʂE]K֤؟"zqB`1Y[!3smEfL%q {kK|f`&/)q 09vՑh4b95 i?¾#iJdhHJ@Ϟ=TGQWŋժ9 O_j_"6#F ExWE'i(Wΐ׷/1#UGQ Sc^"qZ-XWʾR5騫Wǭhrqc>ٱsgu3,XDH%r(bgck範:L""#3[ؽ܍^)Q+sf7Cv>MEcc֥n=yX<cGPݺy㞄Es$^GUGrI#G ÊxOu%?4;W: SK%o3jp$%%>(QtSPQq^uЧwO- ą ~3TxoƱ`ݘ^Sdxkl+ԧg߈'0xhb@k[>ކle, V ł;,ZxnV3{:&MM[=gV:G,]qNJܼXn#jjT!rZ,XD7Ѐ4)0lՑII 2uSRqdHJ  <8Lu%Μ)ErJ*OUi+9/vNdhܻb)z޶;#W%eQ*0Ȅ4Bhի5HMۄܼ|H3DH]3XDPPxEObάX8.4vVd9w࣌hqF#fϺ  O/Oql6cشcCRX:܆̬lGBjD۱.u۞Ոw&7 0y.]&DB; tCDu")1C RE3gK3DXh0V$% <|(J#9% Ni~;kk m!5i'm>YVـ+WsKLS'kװ`QW! H)/w?|^y=FAu,B`1v4| `nkSCYx{i:k  1 y@s{{zxQ a_~Ցn*2b4ѫWOQ(:vɩR}1I 0@?~ ɫP^^:ק/_w/` (侓7K|5zNB|pRZk6AinX(3gL^SE&dfm֭9h6ĂE]KDvfXs^8w!tu;"#(pguKl3X׷oo$.)]eZL xoƱ`{u޽4u/_ AgƂE]KDő5DoFM.q]k rG,XD Y,do߉p<̚y3{:&M"\U"7o?֭ۈ:q4 7"9% yyHLGƶERR&OR7؉N~'aBй}Q|))i8sTu"v* ,#҄ 2DػS|y!o3"0e<8̱+5X~v-7V`QW R"|]^&ҥޓrZ',X\Vݏ }L̅ݑbaD8LZ[Z1 yy[UѱHNICEyQ` x/aLjXߞիPpHu"","7pI<1uJGu$ꄦfddfc[U!"`"r;wECXhfΘ^:݄Vc͚o]P\ }{e~kًq;fHt'N|UP^vNu"~%0p`<# UUo7Au%qKW\^~M+"73X2n-?|)㸌£8zfL%q :&fdmنm0CDvƂE.er4תR-޾"66<RJ85kqqAX̜q',H^^uSS[jܙx :[;[R4*>: 9 9sf3Ζ⥗_DŽli,wfʶTSSYص;4\V|B9$)%DAQDBt ձ\Z99{aC[ `K[t [ZkW(.l6#}cvEBBDM!X.VM"E.NW"Z[UqiW~{by]:8,r MkoN68?{>xzy!]WPxxddebq,+2/Ǿ.y`hnn~?)ڳ6sRS7W@}}8ߩ/RS7ܦ:,r)f;(:vӯ9b(GvHF_u ^xzFuouJ ^x(.>: !,r9fo8z {EF}?!t:nflo.\o֖VQx/xZu"rS,XmxͿÝ~,YVVvnPR֮GyyDXe[~)w 11vڇ/2ܩ/`<1ͱ`Kkr;9Bh;Rb,1mL>)HDvǂE.j{}v z,;:z8.\:.^$:µ kIXMC*?/TR4܆Z;;:!~ Fa}qD,XVHIINN~Bd;%#gxj\D,XvHY>ҩz<cvJm#W'"EnkCz֥nk<x <|RiWKshm5@DEn-3+kS7v5F=rB픊 mXvC>c2""rW,X  >p-v5~~X٣;b"ٱ5*YA&|혌 i]%WXc2""r',X9yoN'@nvLFDD4?m~MH<}41,r aa!;gFa ש>d~~ߏI""rO Я_o$.ojjŋըBII**Σu:C[Ã? FC^3v(wѩˌDD,X䒺uFXXB09jyccӵUZsQQye:|~x˳C+?VuD"",r+>>04|^S[kl**ϣp b;Vf͜f߰^щ`fz n-gႻҊl#""WƧl >~!&M$""M`"!ADDNx3 C?=:b""rQL4]nݺ!0&ӳ&Aa"#,""'/ei?Mr"Dx,XDDϵp4pLɄ@?U%.b""a={EDĂEDdc}U "L _E`?M4 ړS~ 7"""r4,r vTW_BuO`F Xln'|SjxPXxԦYlC3".v~n'r,XDDNO^xjC 4u5RJEF]u"a""rR}S+Щ׭Y)խ 6,\u"c""rBO>S^aC>;5>>>X8fLN'T!r,""'ӯﭕm;i;<^3Dt:C`9XCvJy|ۦǵZ6=`9АX\ڗJO^X,6ޔC6=.`9|\:x0{HNnޘ3s̀v-v؋6f%7,""‡ coέuI(l&Q&`XGj:T_l9 BC cNg[NɾX<!lzUHIIÑmz\"Gb""Rd!xuz%sxNn.0ȄE4BnمFlܴ? UdD]EDaC˳Sm466)ٷ3711a4lv\łOvAzzmv\"Xlxعr?NnLޝG]$YMH! P"( @!hj{Vmݮn .J@M*" JEQINBXBC۫(fL^?[|%;gstq'uذC*Ҷmt]5 PVfG7($wkGgh}AJvl4uj#رK_08U,쾺NCcOk=AJ4n]p~lÇxR-]\ [7,쾺O#uuzgm %oF/;c#~^_[W,?~x^I^OM>Rd_iSrZ@Ï5sv*t] Q  Zy'1[Q / 4sfobk۴iLDp59*f*[Sѣӎ5gˆ<4Z>/W%k$%6:v`I4잟d<9Gm۶ǞwDѺZZY N;˫u'x7sLI{S_#=5ict^ ucNc s.gtAQg[tiŔ/5֘1pB荦@&|%G/hqWݫ.Bcjgvr]:P[:FX96_$T,h5gC:2NTؽg~SzjzB)?wޢnNغڃh.?;vP3~<&"zPe)5ƣF tQZ^yzpA@^,=xݺ*>mE`9RǟucFɘ}HPclAS_;dȹѣ+D-^Tw. xt^ =4f(xJ8ON[*\GI8:szkA`A1Ԥ^5j٪eSE=>УڴiICޣ[M7;Ye%Нwݧy󗨾!`kg饇Gw*hBS*W P$Dv5Օek$ 85vإ?} '}dM?V Ԃjڝ沃kԩ)s с*ZrX7KT4gjk`pջYʟ#TT`V>(pgs5 ">&ʘ|c=2_?-(X7UeojD :ZwTLK9!QrPZ^3(XpC5ne|WLJ(X73xW%Ȟ6mZkt#zC}}^_7-X غ'2R<~z@.h=- 䢈|,SMeV@a*5G۶mQs玚2y|`ؿZE U:pgs .tAS`cbXRZ_cڽ#G$5o*P|/KWM;tg,RJ[ecFiԨ Avs])72~1\7@z5!8_eW7{UVA8_]#bbY_<8@WM`i4s5 ߄ooMMeV`ߦMOC5kVֿA0DϧP5K5rr4uziS-kpYĮ9D2 UḂkgJvRftIfYEڽ{OFEPowOYg:T$MprjE'anbjF·2]6|?ldsVNNf4g^s\TRQrr2uu$vZH@Hi=zb47y.N$s V,Wk?"_woF]4\׼K9q&]4r{Zl:T OWMCөS](X8!ٺK׳RRj%%%MѰa*((ڝP__Kd;wr G%@uuVjTa#[']z-> iR#zzL?u `t藿#jڮG Ec '%KFOן/)^ }14rj+kUO+O*w@Mt\G$Çhj20Ǔw +ԃ(X8im{d}6:sP͍ӕWCsU4g.y'T#~]}w."]v٨ GNv_M˟L7/K#N&1uVW_I v9HU[C5:b=Z k(oX u$[uISNPVfZL9o (Xh2[VȫY ^z_ޥkt6#ΝRؘK!|8e,ԁmeg}!bwإٳTZx ҧٚOwǫ[N* AQ]Q>;J.o fi۶]7`:uLф |&cYsoRZV^,]6:%FctP|zc;XGv',P I-ZK.Ԙ1VAkDR}_=GBA{I7< ^Ѳ+ (X͛1ɓ)1ɹl~kT๣m̝.`!do)gRp<'YcJJ[c&\/Bw(0FwIj:/ N?Zu74j<q^.>T'U!Qk{ݑy.!wnacuvVaB=;X#O/M6Q]:|YY5)5'`!Z:tIY.o#͚]m.G VܹLnXm2s[bWN  Z멮,f~^/Um-n* VjӦb.q^I5fx,Dc_%kn{r3xzjz4tH&U||[e쟽1wE)BD:lh?|f4Wee,}zյk7enMM(Xh# # ?̙#+2tAyjͲ{Ҳ N Ϯ][{1_Rb|>M͝W#\(XE8tFXYǓ t~(X~gan jWlJ\s,dQ4i\Dhflc̝m3FT`!To)o >?Qw ?-Z-i7  ꊲ eL7~IuvC<:uД)ypj&vM PvELMe'c>_*Qќ=AG ֭[1t#u~YhAS&#E   o\MՆ"3V7*?'^G.i%zcśbG㕐"gfrg`g^K]߾cfϚ8 ;XѻYʟnNwj5[f@`'kwt5sVvb|PNMrr;MrqZ]ZȮ]juJƘ$99[˗ܹ:RWpE8tFXYǓ t',$ڲs7旲:IPϯ9yk%6bc4p@?]5yڷOvʨ=KF@`MT]Qct+ q1˖J͟$=MyyfG ܚ=Q QS`55䱏*|YN/4O{ F:Dr.8?WƄ|TFn?15Ƙ"`kw o_UCNIB8_WNv_-yu/y] h!0~Zަeu&`wkYWկ49ڿZsdYkC=:쾚?Q))9oO?N@`APSUv!7mX3gr߈u]:wԩyMR1떵M zQ z+˧H~^^B=(X_hӦRp<'oI~k$@, H|@]6̍=x1[Rs/'Kŋjjhl x!7rǷq^ڥvh.Bj]O+òb5{vJw1^RKSt]EXi9\ b#eSa*Um>X:uLф k!<4!-U9`صkckR⮕K W|>VZEsP6պu+]6fF'OcT˚G[M7={uhx p  鹚 E~5gn |׫a 4-[R~(wMӿ}N{#vէY!Hu Fnٯ TQgTWO3c2~Պem IDATyucظXwNIREV=oh8߶m[7FÇ qz )u߳ oQDK21nYsP?t_7VV?{۷w#Szkz^]8|rڴi"VxoB{\X, Zzz4֎q1JKUsV:vPLŅ}G뵮tvڥĄxd))ɽ~[Sw@0P(U]Q>;J>5&e (X@kVh:$IImz<: `_$y]i֨ sG;]\,ٿwĮw@hPfh_EX I鮳DޤԬ<@3 8ʐ5w˪u(tX>Z2w)W@|K>bSf໹]p7Su̐`Y"{~koINyuQTW_muZ=Lh(X͎emZ.I-] S #?o/,h upbܚ, qZ:tIY8exmݲ^q@x`8!ZOue4cyBl?)u߳ ot@`8)%kn:O5?{c?0" @VvQOh,Aa/skr<,|5adv瞤BID. Sf׮N/)u&:dO')|YMY󓤴w]](Xf˺1,R1&vZ: Dt*JX+mmUlr~,!4+]k4#93Z;+_o L`9k_V<1ceͥJhydx^̢76 }6;fczI:]RG}_.I۬57uGVyPec`[֮9Ir/ִXI7o\cmN5O.b IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-logomark-light-mono.png000066400000000000000000000333161474517124600264320ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxye}Xa] MD N,lIFJb#;U6ɱc-rR*CK,U%lG.G ľ#ľ330̾4{sTu2s>wnA$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IR Ew@0 Lvmo%Ic2Ts〣^^+T$&_#%-O/g~$IRk\By xMz`aI$UbX,jg`GHs]tbm{,cܒ$I;xmh_%Ijk`3DVC$i`SOmגjnI$ZhvZSziX\쬝qs$I8k|$i,8A Oh-$I}I$_C%Iv2p 1Q*)_wgfRQ}agzoHT]SIkd"aFf܁vfح#{g S5rbn#]^eRuw ij}i$I |cGxfQJZWi{1^)UcN x{wR޹$5bϊDZ@W@sHg]n u9-wf 1٣T[ @8pY(%Iq8i+zԃIV| GfRT[y7LuP*b^Is*Iyl%-7w꼹Dg31Dor@%INn'a3 =Jg-w=JIR'5J[܁Jc~J\8${f&恲~v@ A=TGZ?8wҀ|+IIKTSۈ=JI1% fwJap.jM$i܌?SH=G!Ta.}L}?dRZĭR3JEwW"e܁JRYPjy}Jy\|'?&{1U4*Yl3%Z.fIMTOk܁J5_Mw| ;>;wTu{H(%@[-[,%.87{v}N$Uh.;FRNdxw">z5rV3j;PI}M5WnaJR3y<=J3Oi#= QJR n$n| ${Ru[I=w7j޸%Zb:WOTMڷp p*{T#$ɤ#&Ѿ]l y8#}6c7[[Hz=(m=o>i >Iu*';HGl# pc?.f^%(8HbE,_I,5ȴ%% 3x+TG] sJXDLJ"T[fqF{TM$W36Ik %In&ZL5gIp,Ru;Vөv{|.JՄؕ ZvQ{7DZcCmWK5aIjTY2Zä]Q Eשm?ˀK+jM7gԗ]y*?W\ǼwAzbUAYF"HNVWէhoI I|Z` kmWêG%m-mBi9b? >I-VGbkl }% RWOVäegl﯈g7'QRqԎiAz)R[,=cw&{͹|?YZc׀߂ Uo/lN+irK*PwH glN\"+zm?J*Y!ss]#u_L] ̻% &~S2]wՅ ¶AKjEORcŤ R1׺.Hϓ~|(^Hs)}KT" hȳSv~%5wkkӾ*L&[ُaϪkI#I }c" U'n;xmq1`spUm1ST['Ҟ",y[h>~o:k&++hӀ?ǁ˃TsHo6??j*~'*ڛoPMB&e~%3q,+I?)3lM!}$~>aTW?Uٖ2r(gT_H7]QD[B=9N%8py%;'\5e[IUc7wkGQRFD qQjR֎YA ֭L:XJj.67rƳ%T)gi[b)V?խ-M2ÕAv_AgamooTIͷm-p0{mk)oVAAmn >ڠɇVў#% CpCcpj s2KjI)NǸ.cRA;vim])MREO@Mj[IkMhTnK3tf⿇Mj:,zjb{^MǤZM%0iy9ܞkw,: K2"gMn:,zjC 8߁Ø'+1TG&{Ն&â'M^ ]<رRXT9$]>ަ&ʜLVO6G`J?&gy`T){ ?Q5UvM/IV$8 򅤟΢'ΨpD/BClÒ w^DHsդAcbeI+: =ƿoIFOQ[Lmr]h`GT{4716KR@&5:9{z Gv%݋^DդhwJWR@Y}p{ v=vGs鞋9_SJlI5~>4>Jcُn1~Ƹ}E â'kKKμQ\Cڀ}G sXX/:.Ч&IÇ:mx9--<*IV <v£Y,%j헤ҫJ kbBzOсT%6 \ME'K갦M SIm^MoG*_I*;SyѾK갦N {ޜ{U﷈VEcaM@n$armOW a!2X`q ܭSݢH6M H?u݊*;2jQD[3bXqI6N r[[Uw7ORy9HT8(*S[O=مG11J갶O !HoHf>~yZ4VI֕ dq^lU@o[m#[#X4fIֵ K+a՞#RQm1pXQ^Ѹ%uXW' D/<1wQ1£h:ۼI)E2XqaN 0tLw۴)Y{Ț(:: ]G7jxվ_xH0'-!Ֆ8T #E'IPڨH0'JZCXDm߽@lR_hZ+:F: dlsb7H"}"V}d+I21 ?ܢ}G>Ajw(:^: ?OE!Gy J5h/ Ȇ):n: 3He &֒ZZt `&Z&~#ҵ]t I0'OjHj ?Qm1pp1lc(Ü@;bT 8(Iרv/pNQlc)Ü@1Dz2ȈT h> ;FStL%uHfj#zJjEE4k\ѱaN yN{?GzWwr+--i9j?Esi#v%q(Z(Ü@"![8p GIsi)U' JRIi]UEr~40'ٓvgm춅Tc(i`M@¿u4]ێ2?JL W" OPR{TjCהQR 5erAL#Rzm /j)jKFVm3':JJ*`GҔQR 5eyo5iF| 5ki(2l`hxDmER n̏j)Ȏ*C[$ ZG|bT"c~.j)jk++ dJ|Ķ8QW5e~TCM@v`_/mw> KSڣŃ j)j2V5l34TU7I/&8ƪ̏j)x 8>uuzMR )j2kTH GE'7m ch(2L4V'Vط.YjR ]85NSGI5Ԕ ktAkj>m&>*m!اR5e~TCM@IFH?[a?D`)IQY)j2s>>Ya_jxi<4Pj(4>`?fW.|T :ah4C֤QR4m<`_oWN: xi*pF1P5m~T#M@f "S~/D=-zAGI5 d15V{<ޤ*'JD'S۶2ƭvh(ڶJֈM%k2 WEC'Uv &ךϏa |Xڢ̱=0?J Җ d2,TNzjy(&m%h2|c \߮" G6i(bm@Hkc рv`]=JIGIj2 Dzt܋8QM8?JH'<#:`ڤ>\C1ΎlD'XR?$ o\":r&Xj7Iin~b{ 8&-f&~4.M F-O|ϓg&Xj7Id-GtL$o c&!`nDg[KM&i`]@~=":"&Xj7I2 xoZJE`I$ )E5'Y؇.1RxIXS&+ܕ=ׁEۗk/LKM&i`M@+dNwIDATMvV|T}^k`Ru M2L4Y{ XBJ>Aq6q6Vk`I4(\I{J%e#2 $?~侵UC9Oh(Z7Xg*Irt'$I`%c8%z0$I*u|$Oߋf&X\3H'9g}~Gۗ11Γ=f%I՘ci>p 05Jb%I; ~v^=T),I*Ѥ#$ue$IJ,57HkTz?l|`o_&X-aM_Rrul\5a7,35H1jLJvVj"n3:>LZ /R!&XFjR\\Zsp*eHRF 6E﷦ܯ9ι<x@w\OZs6oM$Րԕlt'G:QӀIoKR#8J&X;x jDg'hF,I*`(ER`Ij'Uk^7ؓTu3ů FpQL&R9~rDg0j%]C,I*`Du/IuRRQӲa pI DU2B l#Ŕ^8~I DU2ڹ7?ES5@Zϙei&)3'Uk$Go<'I'W)z-&XMR@T%E6Gہ}(:= \\];MRE@T%u%WssuRA2ϛ] eLm$U DU2z׹jq`% ]uHZgGeLL7IsQLk ;\1e_%qՅҗo8J&Xp z84 16o8J]O.eu؊:2@j+k] e`M$rQ`]`5"E4BAFն]](5~ DUjaB~*SsQoj DUb>kUǃx䲩xI '<Ew`}ͤ]{Uq^C*]eoj $bi}.%Xcj++kY V7bmФMR!{qFW컵 SFu؟6)2[݁8zTT`sܗ^> ܗ:Y2t"~ґ E;чq&XZ݁ &i+|U݉>CK]9v ^@G MuT?_'%MT:bx:/uRtKNK!}Q ?7)LdtcTv (U]m&:v}';X&Xz߄[bn2Plwm޻xo"a$Fp_"-h)Pc`RzkNྨ|ꢭNKsIu6ce:4侗<GR!CRo1ph5aI029sGvM5*k0SLLgi(4{q~T({XE*<ӭ3kHLLnt3Tw< [Al:`Y} VAlm?Tb947Ty<TAl:j*'7G?[7ч b>o3Ѷ 8$u>s(tm59`z[]eLLk:e;(ItPHI&nL`Y_Q*5|ʛh 8!{r8V, {|?m=), )IcLG.?K3. QҁT SI%vTmOhݹ4L!fy{c#pTSG7}8{ vbw7꾸4wIR-&n\=JKuۯ =A*V*I j1FҁȻTf%Ho]KܒգK0%)D'jDor@5.ne{뿅T^f܁JRK{=J>@ۼ1Ijai&!٣Ԏ`uw6fy[3kZI o3%m5w&X18fXC$~uu[%n~Ju^ =JIjSۈL$]{G)I 3Dz21V۴}sa&X4؝¯NaI,RuL~Gf]z"zj;PIjIo˱sLc,$M7'dL(]eG)Iѫ1z^m9C9n1n).CmI`Z@[yW&zF*Q).e`5˅O^7gRE#=d=Lp]'q$m_EàU|܁ VY"E;|,+II{ =f2$;Ȇ1uIҀf*&!TVbv@+^;61`-~'$5kLb O7Օ: ̝٣/ č}.QZ/zT؝.2;k%IYOçWga֊ V5 'I g`W $1."ܵsL9]\=JIR#M^#! ; &XۃT`1cTaZ@%Iͷ'i &bZoLhL3YUbƲYc܁Jh;%d:&Xxq8!{@[ =L9(j#5$4op@r܁fd5^IuČ[aJl>i!bv/Oh&X"xJ*a w$ dQkNn%n$I;{ ogYLƷoH_oH%I-3Fe-15?#o`4]s*IR JCy.܁kdž!٣$w!pb `n$n<$I%U~g> V;)`31;)`r@%Ie6i}zb+Ig9Ήz5ubHJ$IU9/*x<{crxؗeR 惶 Vtb8$IOEr.%X{OÒ$Uk`es޹$? \='XJDC$i^p f%I6Ҷ.G$M$ICے`yȷ$I w p+qI%҆d*)I:Ybߘ,(GľQ|(J$ұ;#!,Vjb )A}^G$II֢HW`{mn}w1ph}$I]_$a0ol;nOJoHJ:vg -դm-u!Ijb.|۶T뤟$%IR,lt>#IlxģyRAV7I3kOD6$u~A[OLu$IRk F|v/pvߣ.IZofeI0AC*M1ܡ$I*f.6fRfIҜ ,%>y-$IRc\F=g\1nI&U?Jlbu 0L:sQ$DuIՋc+O$)d,R-PmI@/I5:8XHzu4?;yxT~v1`I)lR-H׬VAH$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$(pIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distrobox-logomark-light.png000066400000000000000000000646101474517124600254650ustar00rootroot00000000000000PNG  IHDRXXfbKGD IDATxy\T?ϙPE".؀ʎ 4moMmnIӚ&m&ޤ@AQܪ/qĝU``0f1d<|52K>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd$Jz4moH;Yr0@e*z$޵VN)DDÂEDŇi1_/!X1 @,c$k^z@3StT#WW5}j"ƂEDKOOW޾>_ e0H78%j E7ڜMD4 ,XDԘ) Vhȅsaޣ $"ǂED&%DŽ/e  B7f!"ƂED&(< Y,IWBD։.eaYwDh^ uwE'!"‚EDF5RԢ 5?.l  ٳsص:>'0\t%I]kו=ec"!I ?":QH Z:Gt"\,XDXԪCDg1 .T/VT,  J|x?hE1~x^+40Dd9Xh@4o xkGX waowD4,XD#UO"9 v+ }PF+YF,f\%_ DdXKbccH"2OiӂwWp]=w'OŅE>i^/-=.*',",)9&) ŇK* F||,&;7\Aqq,Ln[  7q<23Xo\?FȐ_,W%$,":ZR k!=i $ }|ݱXa3nݺct'TzͿn J u9 pQz1 ]鰳Ekk=HOm歜NH,," 0QXϑ&sn+rr QS{,tWhW ʫ`"!I1$Y. E?~df#0_ѹ.5 +;G BQXl@yhyj;;;#9yb@#hkdG@Da"bΙc`j5EGbyjqPRZK^;KKK,#"c"R11.i"OtvZr #BK'Lʤ. 0/b֬ICBzݠ>sr,& b~YI1XDJT2^UzaHŒ%Ш5JހKD~x_k^+%" [k!/I*`T vZFՅصzcw/@Ȃ%-ޑ"O+0vMpi1d%TXQ]L"*," 9/!)ݐ" c'!+7oNIx!DX,Hban2~@}Z--F|bh/DvWcK^{zDDNzi!x`Y)):CףyO>׊*+Hd#XLd:V|IR!,4V`JGւRWT`E v,XD&8b XXqƈO|ٹ8qg I/WZ`1zM c-|"}E2BC IuNbÆqm!e`V}le!߁ 1q0ue?|VevZ;Ǔkw5GD?=O Ț` &I-$̝իRx26o-5e͒7ën ,XD)eaY a&CfF:& 9Lr}rɅK"z`Q,  -_/RzHMǂ0HIA,ش9oA~XT^("b"g̱kqu|N~@}j5EGb8:8(=ա%%e%I]kוBY,HOwL1?8x2׬d&ܹܼ"9 *HiAyGY ,GH RX*b(YO#**J,F*=_V!"< i+x@]]P\;vB_DV;99t"#,O,X$w1@dfa̘Q"ƓkisQweIzXT"s‚E6/)*_QJ.bV$b^lʜ:}YY9hjn^(:-*9`"4pGW+=^eK#!!vŗy]-[-؝>J?)/oH4,9Au:|-d%IBX<\oE6Q^Q A@-C~rrr ÂE6%%:b,~~㑙IE'xY98wQYVXk^AǂE6!!:tZ~2B+ӒIQw$o،[&U/*{YH"񝞬Zba.P|;bc"9q)_E%}>FAv _'d/"%`պG@ b~p <#GOHw"'5!"g ^-(^@H"Sb"1[%1HC@Drrsq%!%H$_ȯDXj.agVz3!&zT*he5hmk6k~\RY)l/"coxΙc`j5EGbyjOd4: >$ kR^D‚E-9&<2`Ӧ!33G)\~yE8x舘tA6ȯhX"%-(U,lj5c")իBKwz긐DCE%>څ`,YQaŁ"o2g̱kqu|N0Bj#<5\gEd6z{zQ;/ԛ.Iz\.--@ DrLx d `Ӧ!3# GOdT}>AbHqM#BK' UJ%"xa9]x";,J n+*1ihFs9lESS;dB}D ÂEFE {戄X,Y Zx"ԌҢ4^ҟ9 }jTU 7]""A5*++C:~2Isd*=[T U>\޽{[k3^^X Jgz]]]ZP]{ RfѮ*1[`b"~([J k0vG`UV>94%nnn&JlEI[+EKTTpu{JvwwCڊ$h"t"lÍ7j!OChdꎝĆܼyKْc3EEpx,X4hqQQ>Zu VrVEܲň_ it:pttŬܸq; q FˈHNK ص[ݣ2o   JbL8rP[$̝իRX^4]K/Mh4ēàط v]O!rQjorm/ƞ5eEg]H+Pl,X4`Uzc9qxdd!`R#1twW.7ך9ϑMX şNe?Z4rAXW7W^]o@vV._P4Jz͂J%łEeЫB']\f @mjn޹4^nĥ qΝA_% O(-*k-FQXq'NeMyTjEFزRr7}]$JO~}- ͛hlhq%2Κ_Jo *v86T؉cGzaÆa8iů]\[=,Lf]d9lJJ ,HWjcM8>]57Rm`Yƙ}:F*J;XӂCqb=~o?+:m:ب,m4(uY+WƏeRW\#47_xCia1>eq7Q$2N<JfkOxyynҤ 7n *52@` 8pJW_QSPE42l$tim.HR_?,'f)h:;P^Ǐ3jYutt ZE#CjCzT̜JVٓ`R9Ho;uc0nH8 eo`jIj8cM V쁮x$If"6~v]ku猸Y@I_*>?"/I%ɆCPϊw < УNFIZZP^Ct 2E_˯ﮮ.de堪k3h=~s_RIQp)>:F.2r7pvu?0I0u4,IX#v]kwb=6zQ>G&,ۼ-@;E*363#=DG1+ طWrAWWL nnt*> i#'~,R^pŸyQ;zh,Mz]kvN+r QS{Ь~$aJ9<,eN38Xavl\ւ./X* cƌA OQ=g\988`4+WoBٶR;{ΨuexbV0 NrOgM *E p,WCГ:)qXIRczDŎr>?nI {G׏>+HX3g Ӄ]{_QidX"-@j,ش9o0qA P&":;XWGrmogO 220Ot!SPL1;wȡ&(Dc0 ~0jVelr ;lʕ,8~e۶˸w4%nnnF5oĆ\|EQK%k-:;XHY~^,r$I; W]tiڄh4ұ+RN Ir쩨Rww ϛݜQכ>|,)'N0uYk[;󋱷jQT邊iCx,XESCeoŲw1d IDATZ;xevuPaqS6O8CR.ƌ;[U\T)qC1*kMx y9ܧÁZ쭨WXPT A9KQw$snKn9H,,BalS sMƎ"sچ;qS9ZMD L0~Jx?4<&N3f%pc׊;}h$,K YlܸǏ[/*?LF%`ׇSС~3{w`!_'xlDFG :J$ > FW 2fF3O?`2T*؃N9?޽o1Hg/7`0I<͖c^vO65=Gt$uĩ!oߒ!.riƌO޾o 7Eq ܪƱ`: #pY_aQt$&J1kM8w*,_n] H,Fo%(.ށ>#oIde+HÂeрn7$ze;w!&z>ݦNl0(-\c6]ɲC|#Q#X,X6O;:;;ZLG@MpMn0ʦ&NCEҥdeˢ bu\m֗44^/~3TJi= ,(݂+W|-X;6VδLЏN Ƃedp՝gɉKmfW=qQ<#\ŚPVE+:jX6 P\RڃHOKFXhU+w))mk mQ];6֭;3GH,,F>pn+އ(D4dt-אqQ>qpDzDݒ sqQ,[m \Ԁ~{ʕ)p1\t$ DաVb*ؒ>Q^Q 묈z?I^wAbHHcaJX׈YH#'#z=*vWa˖"twcq *;ֆ/Ʊ`=>oo/Hļ٢MN}{Q k xA+rYde堩EtłeoXndfcW;(-é_`׮][p*,ƿ|ǂej aH[gqK^T׾.FZ*>5hd'v؅~mocl,X6Θ]\ӃNc]֢8;;cyj<C*+ގή9HJKA7rO56n]\łeoQ!3c% lPTTg#=zfa@QvWzz==/<ϧ-3!+MM͢1uJaJ?$I>]>\tuYlmP ~~uش97o5{LY //OQQ\3Ztz 7n8r(BxzU;'|o[ I,ƿ|7Ԃ2=q]_vBѶ6yF%HLXGAth(ۅ~[ge`Ą%X #xrs 4˶E ƭ>.Ώ^ԭVPt*`C'L "ƍcwȲC??;~ At$EIy!g΀ZQk枻Ɛ.@:vI$a=#[Ϭ0de&Lf~Z6bϞdfX;d~.\\\ :&"3#~~:=  <)7?}8t(6m۶u` ; W]t$BmZ={k ˶u \]G 5% " II,-Q\R2seAݱXĥwx4t}>FC^m4j #"5kI(,J"5%Qa+DMAȲt(.)CH_ϢVw$6l7oEXOϑ`ypswų} "C!;WEGR;{bdIǤIDG" xY98w(BAFFfL": ?`Y _ jjc|/a!X*#Xgg' } ))q^`ّ$ìV\2۳G Wsaْ$$NU_zeKmpZFDx(V$It6a2=aظ1uNޞ^l-(bEgk1mj230z(DĂEf/=r&vO4=Jt$6nʳh<hEa"1mj|PU]ܼBtttg0~4bCɏ6 񱈍GdQJEV#jA8BւR[ܫP^+'ƦM[!:$IŇ=Ȣ`ErrrBfF. Gvv.N<#:ݻx:{lؘ+6]6# ƍ豱`E_lvk-7XwEn^m+7%EV!xtL];' ::˗'сGX; >92VevZ;qFAlL͝eQs7:2CnI9,3Iy9Y+,:#g ** YY%ёچ5HCd?ё!.7 ;+m !3#ߟdXjM0!\߀_{!03m/;xa%ǂEVM$ OLGIqeAݱ[񋡵ص[c[k[,A,XdK En^IQ:[ i+0?lH6Il͛DG"8x2׬(Da"g4"ŸD\\$:ܹ!V`4>C&|7Ӣ1k2VSEG!R ٤)SNg~a!X*ÇdUlE #Vs&,Yy9%;c.m7Y6`_;X,Y o CPU]cgeZD8C$M99 dDFb\?%:9[U5W xtё,3!+MM͢1uJ 230f(Q ѧ||KASsHjiwM BfFF"\BZ  8x\#yH8`"zLnnxO#&fsq%ёچ!+?ё 6dO."Ąc^oG4T,XDC7q<~˨=?Gkm=Yvr2w֬^ww7ёKk[;󋱷jM=13%2","#$ a` >ѱ#2:cObň_ XyWZSߒ{ kй+ݽ{{uZPU5H[aDGzc'7n"ĴALQ>Y,"} D +;Wtw_Uյ\cG9--ظq عzcͪs'LȄN /kWNёuy_#,4kV/<]]@7"0-ƒ%ШOdJ #21Z;&˲j az͖\$ٔ\"[E'aHCdoʳTUWgǴL`Y;,"z/=g ]߿'/~M>h;V,O4   3c)6Eg~e-z{u6UZ*` Vo6ɥ^Gݨ=4M.eY^{ʕ)p1\t"ǂEd\\dg;vYY9طV'cԠA8&Jh&!## ~NjBDb"2#~W_9g+iIQ''MDx3{&wy׶?}qbÄ́+Vo̵, $ O`(.)Crlk-хqeÍ9>pr캇k׮;ScC^+:= byj.GN^!jjBmg}n[[(8xfs(D,XDf~i,D8֍7 BL4hk'l󐟰$"`YIRa~<̝=%+P\}c jFDa"@HMChh mvrk5mj230z(DX,';Xx&rdY /Y'BDCĂEdN ěokW.ёh sDB|,,Fͷe"kd"+V !sgakA)*v^oAT U_*Y&,nނj(f; ñ1;O"(h2֮IqcDG!"`"t eX*Jt0?xy; Y9yH i+0?l(DdB,Xd1Ξ:Mq6S6&WHMÂ0H ",XˠѨ1_t$IF(.)GIIt}}cY4Z,_GoCdXȢo=fϛ+:jHMCTdr QS{,eqg`mF<=GBDf,,ؖ_=Ϝ!:Esswų}ذ1WdF ## 3O YgH?ͤIk?}#, Y)=v̠_wm} R7^z{!:c7k?ĤID!" ǂEOӷ0fAd}t:$gNۿ| qP-EV!!.}{̓$YGD+`^pss+~b"cC3OaRV?syٛa00cS/~|~s Y$&p~  Y4Z59{__-*w2A*,I':?IA"29,x*4̜3kЯ,߅}{L>k)^^65Ht ",XdT* )A ?x]Fc7w%q`Ր$ q xrȲm[ qX59`{=,*$aIb?ɲsqY%#sxjoQ#`"#I&,ÂEQz`q' f\DG.ODց5zgDl׊@D6ZH,^dP!냏pDڱ`՛%QoO/6!n޸adDDdX&FG|JJVWgCܽ{ׄɈ`͘<$& da{ӄɈڰ`M,_zwn~{0Y,93fU*Y7Z>@OO `"4} ~*fii?BNgdDDd X"475a>\CL BzAƆF| z(: 7 @7mp'F Oo/xypN 3i}OΞGNfX=v`EAsSpH?#<>-]>^򂏯/?p27㿳'O 7)+D"" ,XdUЈƆwgxz{ cF ^^h&b?Boof;rKN0""l,Xd:::щK.㿩U*xxy ޾>B\JB7uf?$Tщ` r7Z}*"<*҈鈈Ȓq.Tl߉G &`,h,: ,""""#,""+߇Ύ.^G'1EG#Z,XDDh@GG:;ݍtz ]es}2<ȄXLwwOSG[?Tg{;3DHy,XDD u=婭O8Bo0KDCĂEDddWp`~tv/O]ĂEDdd7o±#GE "MY3c܄輿෽~Չ; IDATvtutOK),Z;ݿk<ȅmm $'""[ĂEVz=l/> ށ`" 讘W6tuv(sQvttSDDd X^): Y>EHDDDdd,XDD6H$ q@؂1`qhA?{Nt,"" 8l}gT]}o~[pqq6aJ㪿xEŸ~E!,""3RI//O Oo/xyya'$IBgg'>*WNNNxꟾn&Lnn޸9x꟞at:[U豰`)F~]hom>ܾ=vZ-24|F>nlEȲ'Ox;C4$,XDD&`oo#ۻ{L6@ vD6"k@,hٴ<ν^z]Oxmvo?D!!^JvgrmV]t٣tgP<.K,0$/'WzS.Z{ FiR>X>mZDFjb$sɀ`srYӠ׵e{\-ZR۫U=J߹Guu[phԘ4qEDDxl]$ عgUmf6}G-[N۰m['~Ғ߇Xq}hƜYѣQf+m7Znwզ][/%KQ҇;utдfh^F 4 |,} x-2*R˾]R+++Wڎ:pУ"""?y7V!!O7@֩,%^\kwWǎ1^JU.K?ٯ >6X#iڬjuE/;qֽ\nw^O,SݼNpH>4S}45k;˲4sl5Kɼkn>wb{ƚ/֬t(X)GB7#׊ݷVrb3RZzQGL1UDӪUKM6E#G+z/2fQ;Kղ)X}^}es&MKPxDH#LRcԛԨGk҃ gj `u]R;1 ۭO2G5KmޯIӦQo|zi={ %6Զu!͘3'_Ň6rf̙e:Ft3w@?Q%` Tpz/{H098d.{ZDFjb$>9|'>l[MgYfΒuƖCdҹ:ǎ)ƞק__-X_ӡܣ)ӧr[9Ӧ3, V3N4oں:raG)}n=|X 3i~d3V~l__v׷Ϟ;bDMm.{nCQ>tMRm۴\ F6YhYBAs.Zf:-^O ȃN=i,8Ϧ!T^)`|zڰfLǁtI} EDD5aa8u˕$\Ҕ_66󄧲 0QDO<߳m[Gы%i['{v盛#ML[RN<8ɽ`Ae4d-G^Qǩ_R։[ѺM='ԪUKQn)}{E2ï:6[J`( d;67OgȓqBv?>Yѣ뽷WЕ[2J˞|\mqqrPg4n,h󎽧$e5浶֖;<(x4POi%̜ѣr k֪c³#µ+#Ono]wd& $IՍ}mz'n~ ?a#=w_gk\.GօgjKΝUFƾ/`i Q IrBߒԨ].^cjJ]'GPUU;^Sz  ue۫(hj;r-"8M8{c`\hIrᠷmZkĽ#>ZyȺ:v3W7njty/cwhY:Wrm2[6%yC(Xq=.[o̙l3rBC7,KtѨGT~^n|DPUezW_o.zOر]e?+g@ _s!w`\Ci5zUh..ө^q5lpUUVz웁m+B?u/o. lj+Iڿ)% AW `IKFyySIIpğDР!+._r[[[YgtT:vQGP/{ΪD{'r.d{  _wvP\ջi+={TWR߾don{Ѻp>O59Lѫ"Z\.Sw륗lI7]Ijz: ,ߓesTڴinݺx ape[ߔ3yktTר{l9C|@I8_Z}ԲuN[k>,|MV{eԚ:pΜV^=Ժu+O-BCCׯzJKT|Gu;^GVTT:uY,PPPԺ[TV晏?6fp[56 -ɣ;Ջ*mWo8gCdT.ݺR%UUUydݚ7uة:vI,Ree6lܪ%o\-eYgΝ;- n)…q3-YߑNlYvg*4,T{o11w}ԅyrysYN(Xv+s«:Iwܖ={iA:sҀ>%M:v8N:So *RQrŋjAC`!h:uF/B;wM{KMJx{(XFYy{dY[3˕wr_P>QA#44T}WAUTX Y[^7:˲~SJ^?G<_t at1?vR'?oQK?>'Oi-^}5Y[PMBYҡʐx;:[3t`u.HYnۭsٹJا-ճ@t=G)E.,`!ٶ?Ç?;ʲֺB>JI)0: ټA=~XRoϫ#Gֽ ԃTl>r*+*TXPcy(X4y~CmOطjvONڹ碯"QPorsޒfIjׯjO'xRdd _ h4d ‚+q(,75V\Yr:&mLN"g r:;t@\DKΉj¥ ueLːV>t{'۴ֈQ(}UsoTQ\u_\or=m`鞶qGe_E_)4XVŊ.=މp{߿ڝ}jժb{tkwF?Z.|L ّ^'T]ǮvTM4 [qP\lRUU>=tTΨWlwiWT2n(WQa7 ѥ-_6%mSeeߔe4)%ǧO_v4  Mr*'oo=ZY߻zX;weSxx/k˗.RQQĵIzwTPPxxIrLJ޳p tN 1+C+d|5[.\Ԯ,).vy(EEEeV7ݘqڽ'C|iN<-W4\,h{|_G!xԜIXEI߹sG-Z@Çzy4O3Pss'ϖ%61tBtm? VSR|]뒔woJR,=)9x4oeڹrWL sWoO\/?g؃|)z7sDJYz>L@,5g긮ml-vjႹ;f,_o Vpqj^cK[Bl?O4?1{Q9_1&%o8 Vp=AV'̙sF[!ӍbM_&[䛻[<ܲ4vh=<~C` %mަ4F9] rbbDQwMmgYӧj֬ F ..K);hͪ6V+5aܶmsۡ`o͝6e&w h&% V)ZK ̷-L3Gw@ߛ3e$K ?xP-^@=zt31>PWޚ:zYmpcj6S`! <n޲1U4(XR7mUJ.\nTb?>0,YB"30_ϏԬS`˭=ZnMD7ì_$nSd",9 e3Mҥ= bb|`'OkϿdd%;նlJ}H (XhsdEIM̿k@-]P]TD Wjuvh&t\=!:fEyD5K#PTtUii*/Pq ڝoU9m޲]-.\4²Һ%wDSx1nJS2C˖-5w %L _[ m[{6zlYZU[ӭiif}<tfO~`ò_zВ Կ_dwl#-Y,ސHK(XZs'ϖeQz?|Zumb_`J\̽eF(K)9IF,C;w_ qJەۧBB؟,jkj7sD*Yz>L|'Xh0vt В Խ{W}=zオ:"dٖ= iTv^Nq+Z8m[[|95ڝRp*yUڰqXKW|RlKX7l9x,>8&kIS7HEEEi޼2iN{ O<Ƕ{P￿^7LDpj ;2 M h[ vEw61(Xqi~o.YvڲIJÅmPzAR[K/PLL=4%Zn22pA~)9}@`PY9y'DǼRz͒:*55]/.`u`VܼY[WT<*,K-u<=u&'X@=],II> նMk͟?KƏe,`5m:p_A׮`YZ~99H hyq;%ś߫W,^Lo Vkulm=)uw@`Mc͙%pҨ{GۏWѾ`;~T6nծݙm,K2<>瞓@0`0{=Ϊ?mTR _ S̩ z`^N;ӵnfUަFҫv #>x'vwFWZ;f,~)XvqZF_w1B S/}&OK/PllwoU.w"q8g6|g@ r..z,͂ XZve뭈p*q[ %Moԕ+E&" xjxO/[8qbڐ۶~.%I-Ьi6m,˥={v]*LD ƴ& 𑇦bݶΝbh 6xIͻ`}~VV/^6!ټ3sS愂܄Y2t9+EZ.I8~!%}@s,Dz'DǼ^"4_I_TtUi2T\|]})<ܲ4վ}t u6lPvgʶLUo-K Od$`d{"U-~j_ל`# ĂU[W;R#ݬTwT#՚_n۶ȹﲵvZ97vt_sF~Ͻ^Uz=Ua eK[B-=.9=HƷu ٗ󫪪顣:}zU֭cN.FԷOouzTʫojAcmiYRJ+}MEةE-//u(zMiuF饰[_S[S^_f?*(q[_yy_Aoy 8$ؖ ww>m"#B H̛8Rs$]0QQ7oLz+\.=X|B˥{qfXIu yvsZUx 2wKK_ҶMk >TmZRB>rL555&VxxF [:vT29򙮛zf+~fÎf &' 2_gIgܶMJMO4 RYycVG^12pnܲۛaqg`)ۻ+IO?LqjۮIRʾ+. ЌI?²]/HxYKٜܲ(|4Cs'ϖ%6%ҳߑdwhrNm+Q&KI 7)TaGק>`: ͙:e[![K{BҖOS3ϛLHfO;!狒=t@dI,KOoHNO7y,_fM_&[7 `Wm£2`iӦEE+b8?vj%RVmdߡ` dk,Ė8l3S3ϙ?Qќ)&Y^4tò,Ԍmo#H!K۶L9K%L+d @} @̊o%eufxm{_h,2gҸl{,`N-3w3@`h xe?'' pqU&˞<"%QPaYmi]Ȓ;wf: ,3nJS ?lYZU[ӭii,7oR=~^ƛݖwj: B5seog~vΌN,^7?!>eg4K&wleHݦ-lc9= =i]h%[Zez{Sʞ> ` :o^-rڳek!n[:f&96瞓Ck@P0!MzdK=PIۿO%E۶OZd ٻm۾K_G&N.&vu١jVYQ$--tF3.IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/000077500000000000000000000000001474517124600215045ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/brand/png/distros/alma-distrobox.png000066400000000000000000000616241474517124600251500ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME zP IDATxwxTL P@`)J `^B}W4{C&$Q"zO%͜1& )SL}&WM.Fu p[^B0p[t|hq;sH@}wN"#$ܯnv{}7⌅,5[/1 5D Tlfb.i~G7j3fYB-uA7X9wqW1.ce:MDY3Nc;+n ^K;tv̦,L.C 0R6c;}?32{#|^v W^ *)/5 VS^֧X2Al͌x e!\(3rP֓ndPt%'z_$$vp?#{7^8' wPX\v53<UӟW,w܊wA[4FT[h e'+@:Rg#yZ{SO2 꾣]q &P3wLƉSA']s:Jy^r3Yy4>JOk؊]> +1"4BOrEab>cQzd{X 9h2kSf_)c& }W~D~K:(ZwuKYO |wA%}]}1!~#?dXuɏ) K}yF榺q#հI[P 6[^s0pXWQ>9#~҇. oZ) xit$i) W,&OJFj1[[)'wȖ7|ȇD.u3]7ewt6YmP^Դ#HHlp%=>n$CN;fr}{@}.W عv兕7;J8qxfGIK|/#e(Hcf{ ϥ5SvL xbEzpg>$sS\̈ƨLQ#g9>k%Rk]%#e5`j/H}:H~Lu ɷZp(}[?|?'=%CMHL_Go(oJzB>ԸEJ]VF:X?vpʼnt$-e9疽nj/QWIzڟ(x,pWR[{~e0 m$~̾.vHǗgވ7q]XAyGrze&<%G%mVk߷2 kTUGgSE;@m=@{%%X@x8.5J2*s%#s#h.c/HZn;4 ($>_ ߰1y_It||.Dm@ _ ,C +RN܄ }xs~LsDx/*]RpW6@S%'_Lz' A`c5۠1 %lCĔY[Я=b|!HZJK(3e`.'Ysi!]/v *dbPyzhz~-hb+竷t͟K#B0\dmB8Zp'8VA0LJ.?~/Dr3>l?!?%(Jy%O0-hro[: BF Ifϲ}bu}TlZmPrs O+qK~n'w9Κ>KѾtGyhUE\d8C&rFi8,\T_h#i);\6oCka /K!k0e:MJ/x_&HGT8X/)E.ͰS"FBTPޅ(F>T?x w(/d3hQ~ pV42o"A3siUyKFT{JiD8~C:zE_n yVeu^[# ( ،3݃ lt\r6e<-[E(anˌF%.sm@SXgDsA"z&}.<+f6>}ESFsŠP!] `&$x'ݧgIKuII]0͸:etP-i|3 ơracqx$"W!PKA`Y8}tǜ81\S]+C(5[+ᨾ)%̈:G (a05^s+jf@ˇφAhBbq)&8F+=v#I0_}.{K|^fFUrwt16!Z͌X,AMنCI}G\tAx# ?@:>XYmWTjkD8/I|F|!]~%c9NqOMϕ!ThfDysŴ,yrn|\9YpIrw{oT1{e%|$RG.nO]Ҥ ]R.qͣl۠=ҩ9$ xІihfD]P_v<N-E;\7&wK|wqlalƭ}E_NuIqcE9ӣb/d8K s5/r#8O93 ^'OwQtjsС2 (WS@:9|@烤ЃE1oa!q(W%Jׅ(Oʅ"({hffOp7;Eu"?JZʚj+?LuF}_t`^~LY~xIZH6f`X1o &@:^ ỴT٩-'G^ ZI%>o=>Ɨ>7=/C:O A.X#[ j}>N]<)X.Z`Ҥ>IJ@ShPO\.j欮jQ5xyv|t= {ZIOsҩi\aD[xk~g,_}eYґWWeȫl cI8໋Dt8zްljϳy j[i\Ϻ!B`ﮑlemYg?a炗%n"Jq-em1XKP"&5%HW iW &b2<~>>`>"Ns!bUMlD>)dn~Ps!P6/n֏E37oy.!LSS"3jp97$LeE?2:Yds=Wź'iD UoL_\;v#8p~o^ofy tBDV# :jC8"MP-ȗfa{p&'pm̞P #1zK?-!i0%6zsoH|6#r8Rc6jRT> ~aVZڔ; %>;ވ~/d"zٯHG~؇aH0TN[n`mA1{H|.ߙ%bnJΖٳfFdQU3AI|~n:=+@~L-FaKAu~rQx!րJPH@ҿ2v}JNa5z鵿8RJ);axg;QgWϲ:NjґS1k'S&m:@tHI,?wMT5M% @: WTy [*)4g7Řz-M#w`seT-(NH6k^+EO?ϯg Q) S9:2 Ɛϵ j)U[YJ*#H/}kbb} *̀NMUT^މCҴO?s T#1( S9d|oʷi07"G>T:yyt)lN9MGxjyuiDOl59 J~9:tvU6 PC6>Xu*wtxճxc0 TIzKNfSS|#Ͽ×a\v\C1 &m:%V,+u^ ,-)FE( 18Gm2/2 Z hCq#OVtOͲܵ.Sl^yMȉICTezBA lDX򱢳)PtO8Ao+};|zs 2\'i?X*.@ht{/9qR\HXh]ʃ(Q@ W&<dKZiHǓ8C8u2J7fA A}&JP}XS͊x苤3!缺:?JFYb+~;qrV2`h MrL3kċ1;UD>tY7 @JN΄ U)O}lb/##WlAXtfXfWۇ *n[wƐWȽ8<{22jf&`n,Ҵ͊ .1@k D؏dwlL_l8gj@]cxxY U2R7}/D}`"O^}3 8LyͺBew|PD@_B#ǃ VtsYqQ6`Pv@Úލ& k^Y˒g Y.=ezk-QS^"+@:pڂmkU^%9jKOY2gM-l sͲ{plboج}mV cgv+-b  X.C$Ŭw_g?ϱ(ւG2>ϊ30褪J` |92rj CpY-^RbC28ef-@u=!r,0uqg :@8cjsβZ缿p*闱[b$-eyfoToY[8ڷ7;0&j_γˎh (ȦJ'; U٬1ngFXJ܆mĠ}#q^7V:1Ȭ\:)5vu[>eǝ )s$ H T.ƴnweۆR"i)ϠՇq$յگTJ pZK\A[qA4ɸNw.%EWu ݖΐܰhBb"q:y/PzifAW !]\gVƅi2p{lfz!ǴNdupV DvxxO&EᱵM-<O]dVJ뒈GP^*⟥k%5NuD+j7fk\7ÊO7=7'ϿRb<8%af> 8}B,trDÒZhf]tunG^'!\|_g0)6Vv$a+La-cTytg #/5;+ пh "@[ ";$ÕF ߫u~>P> y{({3FP(B*m?9n8GaqP5'ts8OsuHu))vJƭy!ɱM lQjGHDL7aq̚I< /TPH9v̎ t.q+V uMW0c:H7{3t? ' IDATK:Cr~ތݭJ<">cP:Q*a'2)JQ9C )-)WSzW`gTXfቨջ_6rj~圧ڻ7?I'kH޿ G c{I'c Tr4#X,i/? ηuw+Zx#WN_, ZQYI1 P:6vn -G|yOD׶! 54d,u RZ=awk0$%G,2煠T oP8֟@pd{mq) \g!yPy{-@:k]/N,Eձ|"xuEأ飢WO{dR 3*1:faJ+r"#cWPgy+XkY:#sE L32h۟czxP~fhX<dX`]"jz|=-0U118dn< ɾ t,Xn,gljQvTyqPNⱪtPr"鳁YQ-^ϡ},tdwyy2Iv܏w`د$96? UV;̿ N/ۧyzq`vNV)f!Y O,&1diB>pณJr- J>8nLmّsȹc`UKP081Z5n(u&*l;7y+wHjC$e~[0soCF#,n=GhD&8sc{&ˋlڃ>`4^ip*YrY]1 D#ɣrDm&Is`u<HG:m hZ:OXd[u"38"$%[oLLLuYyC{_}+QVq 1,g2tc1FgA?kd6.M%?)>Z fjt9pRa42= T{!ItTcIn_{: $ۻN/wᛶs޶sը 0nC\C!?vGFF vK#Jn' mٵpOݘ )PXAs Džbg8z%;*zlGLm:%[\4ߡ`H rluH[+8ʕq!y)`4ndhQ1+?pwCAX1CTlFhc6yQ>%WR5WǨP9r{R͊^jTxuTʯ<ը+zAˤZB8@~,gKe |,80<&.hlv"@Nb$e:"rt᳋P~{!Sf@@Kerxj3}_^ыγ!⼩dàckgAX/%hy(ư˴>nŸ1lF:G*>&9ۘRfԶs5ocOalv\+L™GrCyvJ;PSqA!.1iǬ+ OnsTTNU{%~K8C.Ɣt!y$,Dr/z)`s=e/-Ø zfry[w eMΪaQT̨2A82Xf`l0w/f`jvI ( UZD r{/øN2VСv-v7?)^s)a/;I I7&DQJh ,0j 6Z]qG̪'Z0I:Z^Ę}w{Mg%e䕼,-x85lV/GՇMaI ='(R9`TV\T*>ho~N>o cQ&?M^aX1mT5bo;M Diz_gL;[E44YbVv*38!D_p^tm(Q$G+ؒ$9Cot7r t{$(~-;;5MNĥZya#w'cV{+8>S5\^EccCo̱VՀt6DWPKpjL]d춗A) .$\HutXn<ωk`+jrMƯ+>Ny}g~bd &{x2)U㒻Z2.bȲRS>n:fѫQYp{MeB1+Ttr D-F :!\8J/cJO>xC}gj)cyW&qzy<-smjr=k˸\Zxp?iqwqnn.>l޲39&&uq%: gb0W_ϯǐ%v=B+O:N%~<:چ䘭GI'+\/I gHN T|n1Ir"/j*r{G,1Yqlz yޠ䰃 =e;ה k.<9nVn {6w_GOuT x }ays=7mM{ vZU gm#V̩|Arp P.ja*I.,hs &bP"kZWMUyrcO>[@ Ǵ+[WdλJ|f{?]wCܺzR?W>8խ׾:jFwϩ)_Cn)$7,Rň>yFpМ`@Y5 V K$O_HDx&r- 6Q"R^7UH8]ޑ~_WpmۙמN&uLo0Y3}GaC7M?|~]\hHx,糣 96yXNC<!CCY QVe_X15w-H嗲?l~Zix~l66v!Ar|w&S?\b|G.ncO5F8r R|D")<ƀ84ee NI fZBjK Iyܾ(J̠u?lf>N~a cpV6oE.FsӰ=|g(,SI޹;3Pt b7W~k1dCX"1>/ιC"@\猅Yܮimi># H#һ\p  ,$v>_̸h~&ߙs`2s\N*gynHDρ$T{{4opcmgUGXNe) .|~Da1~Oִt.Sr,=k5<<ȑGP]wr#s0'yGΤОghKbz4&$pq?XMct*ܗid]F$}tKcC4 ^77Q$ iZ;h/_($,UFuHM ^"T-8Wn[3I\ЩA KΡ&+: {b֡ݭGIQ8v+T:Sc8#ݵR+l#z{<[.%C}=AGp@<лD]PaRNTp|Xl>%C ΋7f]ʷtоf]Hyu {~/rU oŠaALryY*oa>tb\n2۪ySc7{pEQ"7uē0>y X_-{*gY6K_|mw}7gN vߙya lY[~Bؿ)טT Ψjw֮vyI_D{QԔtU9gcOƙ`,W >>~τ \0#j2oy:/Mϯ^UK݊VusޓnT]' ȆؚMQi3q݅ \iF4S!1&i ڂAo?Oت&ax&-^[J9W Tj6`dTsػ h͇c5n޼y+jvmg71Q.Tt!AX\8*z"kΐfYc{V};чNGh hr%µM5BDӇRW^ɞO_+ 7s=g60j!L5Yy5S>D[S+L@v\:m67zUnO;Z"* 1wћGFª}^m:}HYOkpU'M/)xY_pݺu^{oz?# 6Ǿ|/k)ma{hS:_݌F-BNfH]ke zPF8eo Ewl}Z ^V>oC]qw_[con!d|3?urpB+{,8Y 9jI[x؏$'Jn\/bȫp+?£ϝǂK'NغEZ3oŗzZ4i3^d^bn~mh#tD[V+k|+Z8\f1nuTXvm%Pq_ jLI(.6DDxs }6L7-u0oxrf͜߹簫ټz3lF:3e'/*r/wv1SȒov(AxÓ5ղpl Κ 9O);԰9Ͻ:wphwSM?X˖3olټxn6k܎C۴)$; DϬQ;usQf}~G~쉎BηmYGN*[C H ՛xKu"Dnb磉~~S/ʓ ; c۰_秅_e]Ï@0MsߟvVmZRٚLEKfWXXYfpuOHdiLxivO?>Av>|x+V`n~fcК/DNpg !wnzl$j4Lx5NMΔ΋Oot0{zqeµ4iz kr2Z~zXtoBY83<|[ג{mlzp;KfU{ԸC~;oEϏlռL),,f緸 vm~Z%gKx`L}x‰,ٟeѪ?*[DlaaaC=4mٵ?ėسuMuf!Y@VanOGLrξF;-qų괍_7_O {(::m~\HOM{Vgo[7eߡC"wp7?8=MmzluS.z Z|z3t(1/)!Ν;饗_r%u"\/ƭWk!fwAynzP *P!/ wX~ҥK^zg\z6lآ.Ivv?֔ppjy>p­K:Q*J,IQf+_?~s=#FdܹwjPntï5O uvfW=V)(1$ ȗW/KR@ZD/6 l!3|t6ҷk{ o";\+ѣG>K.im٪0,Z3 g=c9v[;J_q+ d_br7$E )&h1rFr]qRbA_ֆuCi@/VW|Lڻ w0`@:n穩Zz _}jia~ =zySn*WnMH,&)XA"fgfPVz&Љқ[[MvJyX Nm樥FMu F KKGǸ/gnڣG kӦMuܾ}o㚺sn" )~ nujS[V-蠶nKQѺulkb;cK[Vd\PHXDe$v$/7{o}o߾cǎ9͗_~իkui vU XMwA#b*T02 PNYX?h{hPs Lh<1,"Q@llݒ~nع~BB۷!]-Vu߻wj0~";l1P~XjU;wd߿Yddb̘12Dby ʅdmqg[ q {2v/+Hr2@5a6e ;i }YMڐJDk{&+QK-:Ǯ̟[";q4lzTZ}/!!tԩ6:j?L5kVO~:[<, WEep6D-e+ T`[o.΃uV[kK̟<Ӝ+V8{PĕcRKeWcPᐈ,:&DTzj{A7$|XXحUVY:99=90 I$%o e[u0\ckOGNRy7Y/[!---gΜ9źhq(,X ݻwK.]zκ __߬+W܎z=H ap'] m-ƃ60,rym۶Y>}F```;"C?@B[SSSg% 8͛Be+?y9K R <yq7ۻw;wt޽{}eHǔ '~C&ނ6f5^ۃCu.R8j،1O?yE Ѷmۼ|||ٓ^UUujkk>|o%KbߦsHMJJ:th_ZZ c$8S,ޓQ7INkmS$WD>88ԩS;wu-mP:c ~#GJբ֭['OSĥE廹f$h:?QOQb΁xb@ m)-֌1Ѵ^ԲPw0Xh'sqqyfdzg^ӝϯ$::zTT@:y9p 99ǠtwePYmp`._~׿SN=z4].׻sMTTTRBBpgtE+  J\Bke2KP@ K:x'o//aN&^ER KǏ/oYO`RϟaߥKra*}>3mzw| όG 6(_2FqSf!1%]}m߾}H_R=o޼|? Д)SnܸuV.]}tZ;|f-v !߿7!dq+3z%ߺuٳgGyxx={p=cRSx1-0{Oc|<$qvC =zۻwo2 :::ܹ3… F-ŝLi1 n1bB {%gE,4̳--;L:'116"""@Ki͛~9ٳڶmC  !C!lXoܱck׮渹=qΝ;߽|r֭[]Ly>1[X` XXH(ulɯaaau`(9cO.rwwovVJ{{L???W㤦>W0 o0,,Ll_}7BCCkʊ )Kn|/_lmg9e.i| -fDEabcM_ۿUeְ rߜA VL#ů?T_}UYfUTWWgJ;6;ѹ}?stZ H$bqܶm۵<>sRJU*@: VgVPR+H$ m߾CSv!Ra!!FC\ ] W_^n]{Zvر*44ԉ1v><<|`[ ;D"0z 25g740yGjq^qnj5D$PmiotŊٳg@:grH#k+R@ ڢ*h:f8 e||<=ӧO6!"0"$H`ee"3d <e21b(x#g 0 l/~=ÈLƫx'"ZYYٵʾ0XS]]XTTÇh4ju;v,+$$Dt5(Y,6a_LC2$>Yc<pD>"TW呹uuu9h<]6"j*s'q @_Pp0=LX xi/R Qij+EEEŨvͭ ju׺.\ &rKD,99tP1B g dEGیsD)XsJ1EHEpwh -GuXxc9UWQQqKmmm{KKK+=?#89@'ph5*@)*118pppޣGv"_+P3dȐr EOѦ$82G0<6H,7cn2ѭ,!Zarqq8qbҥK?~ƍEuK*V\vww$)9tPC˗/?~`^Thz bl$O:hMO3T#+A P9x Mм} E+EӋa f 3jH$նHQ`aaQwk G375Mٳg͟?!99M17 fb$`O |A' Y/Bnδ 8`')Y %j!̨H8NڵkW)^˻-## D"6lX񙙙֭޽::HHdG ^0 е ! R<3JG`vHlraK] osӃF~ 4,zww]N=kn cF `6F$xY,Ml)&=CÙ>6WtCN*M{uy޽{W'c";;;5kָϙ3QyͤI7")))Z)ՠD"p1[[[c76`^Y%PHv<*F&+02#! 0hD z?޽{۱cGѰaz+%FP[ouxc>p¹sxB ti^͢Gpy9&%%=~mRtx #'@X6mZnDDDL&1=WWWWݻWzjςcScǎ^{X,}FHܹ{IoLDpOc/'8;ъ6Rq>F#?EeQNdJJJo޼x˖-Q(++ݶm[/s'?n ejtGˑod9xȕ#Xl?5v]Ů];t iRSS^uJLLt̞tT*UQLLLߺu]&pCiaĄVY `2 ݻwmy'<:::ݬkڵk.3fL&7= 0H#vL@a C SJDj] ";9]xO?UpgnV kJ/_nl% L߼:‹F.E0x h}_,֮]:w\[[5d^UUUٳ'}<7U!CS,Mco>^zn_h7frjɊ+ۗ;z譺Bjj~J Tϝ; hc4E8"D3[Np@0w0l'L>m4Kn<_)MHT:{ѣG$%%5_Xm" Æ&Pt6Уꠍ?=x7o^nnnn.~V)))^~}>ĽU?ƛo1q0 #*~>#YTT[n:FEEe};wrJW4ʘmR 3ō`_Mb%m7/Mg6h ɓ'SU*U٫6M?|}ȑW^yLG.<31u'T>ͅ8 ` kRSۏ7sɥW\BDIRzzz3ؔ{*Dg@:2& eXІP؆&>|{ڵ7[ JKK?nnn{]gT?h阅x3I C5ƴQdd]YYY`Immm#Gn >J]"'''gڴisi?= =NcjF,b! h}NicǏٯYFQRR4eoٲ媧g/wߺ7n/Ut F`F1*"m$3%;Cܘ6#v۷o;-Jzp+,Y]QQ!mlZ\6KnJFt̅xY ~Ɔ\|k $(cMiTqW_?>y#䛓'O0aϕ+W*`.Ж2~@:fega;樵:Vcsu|W/((0#Ȣ KS0w3^HammH ڮ]k:HmAwWb YiiiSxhk/ Ln~ 9X/85s82 mRFShTUUWXջwoɁ0ߞj￿اO̙3OC$< N1307limo+Y@AЖWim_~Ǐ_Td622x"R]~=eԩwCBBdee5U]bh =$"|K ZIc_r;h{4x'Ji޼yE^^^uw mN㎎˖-STTvӦM*)e&`1@:f hR=10O"!G`b?`F QlIDAT ~ !kv` ОSR=3ƭ VFA!Oa<|6 h}b{Ц4:<?0\Me7%aDx::!zY UAp &JӮiV+e #at>~rb/U@:,$bvk=rUC"U DA[eO[%'R`:i R'0 퉡˯/!*X0b-5{n쪁6{_(3 #@@~M/w=!T @|)Ai}IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/alpine-distrobox.png000066400000000000000000000524111474517124600255000ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEYU& IDATxy`T5+}$LPܵ[[V~C h.jWVlj֪UI" v!,q' N2I&dΙ{{{@h4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4FID>mV p5"@IyRkz`a͂9[hщ+)7.$< -&n.jԤќ n+R[Yv|EzHts 6hXxs3e"~Zt,:} Z%4HoC3C^듇($P';h}~8#j16] {:o-l[)ZC`Mc#X-Q¢*w愚`I#6i4e00$ mk0iM۬(ER\ j<(DiZ"2:jN)­ǚ R*.Hm9]d{k7׺W jof#6͘$"M[gP{k7=9A_Qۗ">t\lȸ2rM6yH݌3Υr6;Di!5f[6Atڢ{80*M3o*1uz|uX-R` V ]"4'|E!RooSw K0XD&hZB#0 Rݵ$tAPC>EY༶~P(#5?Ѵ@ e.wӓ )`_5P_(k6QBOH'ilgyl"Wb;J#BDP' $v =a#C&`i xFmΎ:j9W(DFW4-5(0; ):h( 2&(%y[$!'Lma\L:KI6qe_T*^ՑN $*ʁazh]zIDɥb;T%\ ӂI)F&HI1+nF&15T)U*NHrU EHAi1aӓkt쏃gS@7}jHi% \Ѧ]kr4r9dU3vfW Mb @Q%CV]BoT9aU\ؤ(LEU߅*E'· .ƀe T5״^z_?zIH[#B|0H):6CҪIp˝<5V鸳sN+!Uߏ_"ly+[z DjښqC8oFGvYTG:MM[ꈒ N>`tiـn"r+0zRaSU/vֺ[wZgBP5HD&btرd \$!‘ \hأeS^xN!X-AZZ[4l>a v쟻.9ӫjj9[o nD/l ^oT-~ӊBֹu@ -Z-EM`Ho/24ʰe{v7{h| /T-/=PWwyVD4wCp?2&8/r b:`/K;77XPΙE8 2j`Z,nQNx٦9IY]IY?BB++gHlRwnIO$[lTbKjc>v:D|!m*-xAyA59PBB=k /i~`UOig߀W8ltK?2+DE_I j&+N΀[f۔ \^KR-ZtEنӓK`2mwU-4.|6}#+U /E#uC-jB782fPș˵|'p.3s*"6X\6`N`t"eOtb"wS௦}9TF_e,i_JSk`lR"nb}04x8/*Cl?P{lAEI_vm8IQvezJ CZtÝ51C0AxVzvѵ=4hy!e *;4y!ᔇyPpMnEhQԢf=p"DdGWWNSڕ 5>+1]3¿@uWs06{`yo'Ř4`qA;ۻ/e*=PW"԰Yآ]Nu8kKN B5;TEKVpO `Vud|൦#nl)6Q&ּ_^_ت⢨{JE)`1p>xQ__ZHpU8\C8xb;Jۭ($X\Xڬc.D"!_Aei밉7b.0Ba+,FxV]x etj~P+s[Dĝ=Ə-`KixRA@ޠ0؜ {q(BU6^6 \7+2]\?ϊ: vw wIɞ[+qy%!2xf^DX[IQB`MvcFծl UWx- }R'W!_JhIyP2A]Hb63 Ǜf<^}Ј@xODq>vNέΡcl1R} R'JreB%E*!E'9(Ե ) EQ(R75Tr{rAƊRǠQeMߒ=+ a` [V .U ڌ*v{ZH ځȾPM帉cdÈp0%'rxVL#)83fe\. `Df*)ia_Q؞uQQ.H:hPݔլ.hv'Tt /6gYOuGk$Dlʐʄԛ]F(nrHA`)7Y_p\; 7c5Wfny6-9&j| @ڇMCs6^.+m)6m@xdAmrf '踳s;d p9V[Dp3ETӦ2\N@X^Kv:!Rk멏lɯ+ZAWf:*{]YުP h0ݶ1Ո('f)avQ~bN;G#(<$yjxeօJGpn%(:W5 $(qw tCkcPx}<<јdzY^(%0PIˡ<6YǦK68lůO E6t\\u@T!,ϯr!\UQ Zp)BG#*mG3x k'6kseO\܌3Tkx:"RCAsgqxsG t0L^'PH'}4W7ɑs )lkܱyVQ$c힨O.&v.7 :Ia VH0B@}0.4awv n.+ O"39xL( l6…UV'PWI|'ٝS(.jΚ8H:,r[Jԋ(@'lC(bCiJ!z ۝CƆC(蚂ݓSjt.cLC+ʠؖ<D0DxF~5kQEݔe3r@$R+j̭/(K5#;,b"xz<*-"v!@ G &%ۜüU%}FljXxX[#ϒu_~jj7cx"IS: G5Ƶ_tpM|.W&N Xn9`G/|`m*Krǰq2 T4{prAXe"yPNON=MaxxTVm=!_=tM\,`^!,Sc/YWŃDoBTlr:b #y~QPbm9Ǔ t=S9=+2ힱ}@0(< ")X\XEr,8;7E1_sk@ʌY Q'uon)qcx )<bgؤ>#]q RuϽT ƭ|Ñ0(,rDcuЌO'0JK` 4x<=D۫'sxc5ه]^v:BV7Fƫ^;1b 4X赒>Ȫ1X]`vm@][Il!؏4tS83:28x<,ObG*^]S`:3(۫T%g! yqNGhx'>Ze 2_|U5eh3 IDAT j̍9L Wc' /J= j JpK=a([0fȏ8j2P{^h"jL\ ,QћsJ qp Gz8i`:Pz8$"0&ao.ʏ1+ c' WDQ%"qx+P)@~kRW,kj2\RAv-B_qFEu )3f b 9wI=j;x N+tx::Ye!_|RP Y!t1x )(sx /S!_a˓WEfLP [)RQdI< @mXYMS q0M`O%2_ k <+A1ihTQ ?IV$:`Ą:&mQɍ<ѫicsy.ku#G9" E "INO.lo DzuB Tws+BŅMbO;L LZL%\y]YHN9z`L`Gͼyv?w1oǎtԱ]s|-R1:vU]Ad˧D#&FZ9iF`}_DkHxщlTQ,c1C0 n x,/^3T|DaWX?Gy8'4/Bfpgy#L ]ov2WVn$ҧt8,o7H !܎V,~<NًP Wxzjdwωg?+Ǝt~)t\x2qMSݷ?~cj¥kQFZ{v\ū[,>.D 91S1 n8>9FCqހ{pO,iIpAq3 &y#SmT~gV~1 ..JpA@Vd*)355Ӧ'ǰe]hq)"w qn  I`qAˑ`2'f̘o;L?--7f4\u%86hsF"e; 9 #95>a`6%EtBKiwr4n ]bGZ{# E7HGWrNgFufB% Ű Ö(Cf0(x8b(;%]#ryr|Eէ^#a6e+Iqט $(YbhW櫱1><^=z9w]Iwt˱_X_Mt{1Ubw^7DެZf!}T nl65F`;B(9dY#J@TTS) *IXPV-uT5:á`J} CA-@V$R^!A%Q C(@+ayXA{ TQx`qMlXy?앞RY*w p`:נ¶Dsڤ|Ϙs1pJyiAV05M[@$MAG#p.BO멇_np]&@zہrRȍMDC~ _9:]Xi' e=cьߦ)m"Hhf^]`W5ǿD=߾Ѓ?^R>]ٜB;wɧ'OnlF0nk m~J+PBxAkoP䰉on`{,J&± ٌ=b)I"ZUM~M45xwL,6+#y1.9&H$gksamab79t`e!.7`bUgzѺ$$(f?xU5LЙ̜c?ƏEku: |S&=5kw:d<ێf煀re΀X*G,h- sۧ`,ۿ aqnER1.)SU}j7c%z;VweR3gvJ].ȝރ5Vm2Bka,>K7~(ǎnoi}]e˖li9SX^ZbWB`9P zhE5 {c7ɝ0 aFa 2}aÆU]'+RZ\ 6cE( JiM8Hp:«އIsg[fЯOV]~yϚ5_EEʼn1E7`-,孵J i 1J x= ;~MB;\v\pA7\|yq旁kX]>?[Ѵ<\H$ŭ;q칢i jTUX]@䳷q_:rl.oyѷO/ H.&MJꪫVmذ!}ցUư=Zd:}V:EQ_5&Rm̟HCP<@M6~(Zc"rP'*eh< \GW1wߢpo3OK/r%l6СCz뭕ݻw/{뭷R8~'p V+hR [vZO`GsZbcF W$[D7|W:v :vhscvSnjvoD"q*{bWgiu~l9u״G +a]{MRE@qO  M◿~fkӷ-##__e׮]-[ͪ zNi)&pN4' ,Yqyr<2{&oJ@ P/9s9)'y` Ve6\N3sbMG`uюw}$LhFkUs|{XgKHMMIq9pP(vw< ndggwv}%K:G3 B>:uNޙ `ф-]|u_]_Mx&Xp֫3<:`n'{%%%%O81oޱo߾kf@OF11[]zeXҀ V+Ip:B+^;a*%]_s"ѽ[1M~ҥ~n_^^ޞ燻uL?|NRVV$)BXk|>U*6#Z XlekZ([VZ AOAELf4ٳ%߸cs=`(?lش>~˖-#+rܹ{:wl>nN0aЖ-[O?t V5rM OJtR϶i.Sz]7*{/~u8XY-[))YGҥ{e<,{2&l}ee^xAA1eʔA.}?яu*ЊG("QZn'E$ZsGouNio@rVX.S;~:L`0׶>vq9s}{;tDrGu[U@ڌ9cPXbMkqVOt;xǹƩt֥Q>`e{e ^e,c8.gR YԚ sGG )XO֩7MS-p>,[ҥzO<:`N"$a^mmm+SQX'[]u&1:i[D&80߻O&L RS)ݱ_='>}Ald}w#yy?MKͯOKpK֙OO5Ow@^z3g7vnv=IhhwN>i pmm#R/XGj>&C1;#.ɛpU#M--.d?c__;*1t`2ڷLp8/JVʡ/jtޗ3miC:TO:ujMhWXaCJ$2 n?舍cF#|чEOO~as!L e8d*P_?8W]>e=CW_}u :[}hcd?U'h0>X5mEtl~x_ѣw֮[OMu͘` o?YE۷C]:w.!/o"m1ML XbwGy_8>-ɑO=Txĉ[.\ؑ/{ !Z!1NI]ɣ?{ݺ2aX.@V<;hGV-GًΝ;kҋ-Ep;wӟ;qƨJS.\pɓt!eȐ!۷o?jժg$DŧzhTZVga$a?ß ](3c;OwާOկz7os,((ظ`C|ᓈ$ 2;l^ oaz vq:LN΢BrgZ3~?<_j#׽k{tcyO?@rsslSIt"&ؤGʍ7La~?^Ȫr\3y*`˽͔R_}UW]5c#mt̙[v]we%''v Ƅyn~~-G `-h߯7߿;,)xfg{oqݵWoU-;ٳg>#;;_==O^V\\yܹu6L#VMmBx d+SNy=k^yLȻ/>$c|}ev@`>ɨQR~_fx<7xcÇg;aEt1X44KsBn&_{%7x I={w_̢jY1¾k4 C}|||^``ڵkǠ6ÇHOOw>}D@#ŝ"'GU l{`D1ص"|",[OӦ9r=??RP2g̘s?}!m۶޼ynѢE2777iO֥SdQ~7_&rgt!ރzr̘1_~^@̻yC&+T\d՚5k"Ew`B-(l @W|m+NBh#?ɓ'WݻW*&ً84~hΥJ Tv& ]y̝= á#alÇݛ~vιҶ |@ͺsp9^N~NIFdԻۀxLʕ+"""J$AΗ+7np&y7'ǎO>oNq߾}+WΝ;V$ MS4@A Aq@.uIǥZ MKsgjVXq+555ҥ~)x ]z%tesekو}?UUn+9٥~~~gMFFFΝ;G >|\onx a۹ 참`}+Ux( `ٳgd2z////r{ckoo])C@$ @8..|c5bnk>p( (<0lذIQQQ6v"##Kd2TGi &((p.t#1"WĖ|wqX*UZiӦ'THyBm&(a] ZWbˇ;~obʵ>8pvL8R0׀<_xbY|S#_"bz4j`NwL((A ,K N UMݟZkV-ǖm;bٞtؿSLl[^W"bUp#30@_὘8i"&<xxòW_[ڵkA !Y1RxH9=={72p3+>7O)pЦ, .)** +8֭[SBCCy^{5eppa~->eQQQ#R)#Oz"':cmPXX3gB!{n֭V^=r˼R,z뭷t|M@w:00jǎ3f+ %QN&:69.#,WLv;4:]5޾}ܹs} E?66zdd@pQNrrЇ[y5|g=$I&ig*= j0A&==O>;uCݖd2+8111֭# ۜVneU/Di9&:1dB.-w+D"U-"^}/T7nQ繢"7l0L$mu+_5]KD~ )%(@<@Yt?5Z]I7wY~>_P˭7n}7bIII82a„@BHg肩a D/mrG@@g`LBm~x6~/:}T[6ZvåŘ˸iStΪU߿Cy+**0dmvr`0 x≺}jk9N:t{fX,0M1 a& S f5=hO/S;)NJ'>"G)>:7I&66p#]\\)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 8p' IDATxgxUUkSn4 =$zQb+bAQԱA ,36,# RDB [=J'{>{:{ZEH.`+b*Ku/}˻j!#94`DXדE&Eպ.5DD'*I%< yE*):jOC.fs"EҍT0Q?HH=" @/8a4F\hi) $m}ZJJ E,\{Ji-t$G wE0k }aQdu'#M%Q>V`AH#P1!v]q[0$2jv=f0qrf)=yE#֓HOGr J@.R"fs i9!LBVgRx ,,%Rt$Z>ؽ9M,>V~b z--(AF)W8O*i^ 鏈R ݺ@Dz:Cc;nq5X<KJ"EGrX$BCms]Iʶ%.C B$j/L33\ZT"=Ɂ-XTb6)jol}"tk/fw6sɁ1^\R^h2E U&F]IJH}9suY(Csb^Aإe%EHhEG%x"_FZW"EG@,gLަdv $@'~: in,+#7>Cr d i):_&v ;7EA7'>;?"(KH6"FVG&~ r(?,CT%HkW]"hfAU3mxsn=Al'Dz:#R%Rt=5?i# (yZ,9ՙBѱ( (^FA WS~G#H2X gv  qXN^b!EGW0eb55'ABa.F@# xB3HH;m Vwsa):pxƮMĕp;cY{(DĤ95R):'⪙vRL!nhp?W=bG$7"EGFȤDx渉HmܟIBG>u zϨk_˴f%05 T9D M(YH1G:[$Fw,u u0^ NDv(EGR1ɹd9"zbE f+Vwa/s):z_*GPG)X73XNvHB'b8۽9lZb囒# }jrZf{)< ˧˷%EGCuЯCV@[I|[&jN%.4 ꘝ:z^uF˓SV=݁@SyFOw,đ/8TݕSz H:K1fuD(\):ޜY\!-(ߢ $i$Iՙ3&F @$:H0ͦd޶E$Rt$ On y:K9_]'d ):NEcm i^ĕLgibbQTM("+'9nLtTb cu8ÿb|KZ`;|U"h:m+YRt$;"Ӊk2kxTZ!RtH:&eatr8:kOEiV @7B#4A骚 u6#L#[x#&>.^HOG1MsRγL0XL"oXz:[UbJ0*xYl+Rt$ [vHbf&ZjBדxՏɶ*+IGGw0bKH=M6g7-=qy4I{XLh=!ih%Y?-N4A'vS~ͬT|= D K= +|ZjJr<{dFHt"3*䛗8;/\J!q@zg:!EGrpO4r^+Q<1t)߾q@ӭ$d &λ#0hA]~GN(KёA#4 OgvjBVgN fA):cIĿGB @MdWx~Ĺƻo-AHpRv'U **JDl5:*[1}řMe0B\-`Am:'26L^ϪnJD쩤h'nt D'VRrתElӑ0gU1}!̟kY*!RA4@O+JciN4B#L" K%\T ^I{Jtb>-:6jrgx˔2%z^Iĕ D ,Yd*[ $mbhx襯8bwG%֛Ǧo%t$m Q4q%D6i֩ƻXQ3Uz.EG6]fp+zȒ,@ʝ03cI:h!lZR0C%В">1,6bvM>K6):6-khWX Z2녷 ҅~hu8wէHёEx;w*Ap%F(=6, ;{>yARt$mA`ӷB/:g|nf%Ģ!"RTY{LOE/ˣRt$mE{͖Sj)Q`<]0Dضv-7 "EG҆xfLqc<uZLĬjfg/6f"EGrC#%H q-( lXj)Ѵ;۳YMLջ aEqҬAluӂg+ek#9a*YaE9ٿ} vQ*h/)ZKDNp XjQwYQ-J D^2-BKTӲ=5 nhכXޠ fwqO P`ĕzO-J O2ٜn=Mdz~wӫ>4o 1wQD-5iYWs{OMS6+):}Cyh,xLkq%_CHX{a ˙nI2N£poGr=[HɾaN6O&E"7@ x,ftqRjK^7- {lmVxB9k%ea@G'V()ݷy<+vH~Q'M,}2E?2~ s)DLg^Ԗ{]zD^'vo&8@r1 \񊦺=X't)IcHNȹDmIoWb LZ)W{E0 ,^h34=DQo^Pz իW\oۑ#ydPRѴT@'34K65{ߟQljꖱ ]Z CaLJUɜ ҤHZ =/CZ=:(NA'(T-B{fsj@Knzox=rkFz0&pHɉq h||()K w/<&5YCB(J6q <6>zd5 MuG?Bde'&D,DH#'f%fVԼ]%E'C2v*)ìKNX4idw0fjJ6~k@Oji|^=qe;F#y"x3ћ= gdX 8eB?R @u," ĢAH;.NKɵ3Lh^Z R@@-@%z@.kJWo6'E'<=I/qK1)ڙEAcj.AQU}؅A[?@~7.}͋_C .b "kj !<0봂|߾'WS0gPRS+@ԲNDRBRa,DAtV^41A^,{E_4I\IȆ,KDjٳpvlRtۀ"+fqudk\Ʀ G]-"ެ o64}׻fX[AZOݭ CN"[Y8g6`m QNxs vrF1s/iװB\I@HjEC-QWq5=ӗʭPƬvBhb 4Y,\fVl̥,E'LBoH#r)r2Ǣs`,,0da=W͚]ЬS@#āȂ!`Vg6/+SJ OtA<DǪ2% %+@x2;:i0j3vPQגEP;aD !6^_1 YPN(7uC 'KE\I%biJdk(߰tz0gtqEm 'Yzno9oWd t):us!U= \-`%f)"{ hēn7YDj&RjYl XU'A',|FL):jhR"E= "1^R# @nj*Gr100F9XtDv"^ @ɒzD󎃹{>RYJ11J8#IX@bo`EK**>jEuEs): b;u1\:w@#$W ) 1VP-vtTc)Zp-+Y&MpLU .YN-[ڇht&BSkXIWFLj"[}PԾ zNps S-}8b-UNHyBRaI(䑭sF3c8 _lǮI9AҢx|1hgTxBߡBH"TvW~\.OKO*)Y}*Q. *!Escds% )#B&2= hΒ$m"E \I'U n};搃8/$PY?H]]KIJ: TM.I;@(j?%=#ރܥ,=N#6HQ!FZs ĕ"(ƞѲoH48:JxjcEuӋ.i^uS~hP'r:Q,2 @4t:=ʝPAĔ^s9܍6IrАq5'wEcE J L)tې3H鸨q]=beXՙ6DM+ ti):׈ d,"htkIN *@{OY=e,Eca=rn&)j t~ B=5oEH):`cE%E2QWqgHnVp-i<%A JGHsH8.K(O\)QiHlwh~ w\EĸjEo_'"=eՑfsC6 H , %g&MrHq(m(@k ]_XI/ dUP):x+LZvҬEĕ!9UBd W.P@1i#P P6U8x;f7+M"=c!CQ{ڥ<Òxd( `4t Pƚ`0%-NCnR Ve&='`1%BE%jBf>gdx=h4Kk3ڟҶZȕ#$L%f U?Dq~: PY[NY_L.=v0TBWB Hiu%(:]Eu[ `47TDt}12 TS+d2Rt9|l&^ .&EsGOy!57dv]1Yr$?!b`\l 5Hi;1gTO:;fOȾ.ٟ5Qw"o!  RJ"x@[{ޒCTܓuF@>|*0De CRj>;R% ʀ%ܷ#=Y|~@1VB r-OG,E c2$"ʆ$9PE;Y=,7J9<$ejƓE$:Vj1S+>)1g bC$A>P" FEz:,СۋHч&Op3!~$M?aoJjv&ǒH>Eb 0 zQ{KjF>Wu81V "Gr$P"Y#ոrU$2گg6'kx%GDn(stp B3):'j/!bEIH e^7e#ɈBWqqDg(NZDhվ,"ln P NĴO 3nᦧ>($Q/6υ(s>ePh}Q ӿ"RRs! I\e2Uw /ísO]>A'.s:fh%}cdu2z, ;v0L3wtsDGnL.iA _'5{} DX #=Nu JlʉD{kX%GFj#ߵoO])*J__qU}ݵÆ ;Pb[pYgNjyWF\YP/ȬO44L1HCK9`}=xktiܹs+8 fdY`Aرcђ@@|  VRt"&IY2{ĤyL&0 jP)T+k"hfujduHQ* "dz|]pڴT\~Mi\W^]q8p7 `F̴/4)(W@X/50MO:m"VF^#hΜQq&L-| d0=-Ē¥}߶hx>=_|e޸ ?yj~a3sK L1pݪQ`0ؼlٲwuWŋ}s-#yDRa .7FŎESJ-%gQa2?HqyuyJlHbDX;Pk۱ t.;nĀBJFBO?}g}6 W ˔a3aa'e"r:Z?9PlfQ*][bӪ.h?B{H3D,Dt}bFN}2^3D^k8oΛAN.SO=1b72 `78K8@sjw z-C&Q/u{vncs殞â9L92 D X+8oJHǔ[%矁[obܹrKV]]|:T̝W"z!a^ 6Vϯp>8T@|0>:\}xaѼq9?|bw<L7_{ XiR={6?#<' yS[):mAIdu\F>#eGEИ6f;xR9ϝĕPsA!B}a¿s> y4{8_A}(sBܰaÎ+Xti׃9^YR t02= =){lcd?1"By=9 Nb^<<,{w ,鰂:sss-Zp­yyy* _8=!;`Ë4 v8iz=MW=0{lsq"9Gn@h<ED( v\2~Ғc;eShhh1w{7B;|DK6m/!z(C|O0TcxDɤjgF``k\oUktjZ56W41ޭݗ҅}4xjMɉgǞ_4Q|Tэ9rs̘1m۶oW ` 4X6CvNG(֕%IȅdN/Bb/tPPxB`}>y 5&o|K8PxD?v͛7ompy Z&?0hRz:\+c[]p@nF` AS͎Vj Wnv5yYu/cs?<\榻cŨa`C+\ɉk|v~2ВpZVHI#7Ygca&8~RfgKkV._y_g$::"he5j| Gθzc? :2Y,G:0SRo؋k=9O+Z&ޏD?;|+tIzH0 ٺRˮ#s[SN- k@TlNf<$nt%2$X###GѣG(hhqZtm8p_t/9N~Oq>DahL6.ϳH[6+v\anv6Tz%,zqٻa欗/Fiy~\ ȟ7o^_>==@l^1a8NV8m8laVb/LoV=rn5:_eH<X,1 -+(C_i,{0cq3)#a ]UUU~b>iEQ=zHKEٴdɒ%#i.е5 O",Jl@؇.~ Gԡ%S#o ÿB܈G370I\%-Ĭޅ.I!^o/Cvv(w*^QQQ>`ƍ7n.ZzV6'm<">ǥD\=-[)@>ͪWIm\fo=`2U_߅G ~ǢʚxHm?i6Np_-:_y@BBBڑ0Ưjq{9P<5We=PqJb(ReV=ha򡳷;nv o1Lwݧ&w.+h޸[pc[3kjjb }:W^yeYgMvcO0s_;o޼zk۷vsqw馛bk,\խCBtjD cR-#" s`TqաpQgWW~iX6D喃7vIy省ضI\]ߌ]{~&ZKGsZr <-lLz}CX|ɓ'G-]?6>裎j455U[;Pp|Sc3 cIw`Ex!.0w[ >+n*_!:+ij/⁻nÏj|kyfS0}) "s @QqOcou#w.}j_Q7Θ1c7ϣFw0 AQv`^v 7]ON-:zBW16ts8B" :yCea?i]rKR@mib\xxʹpҠ^GjĪ.H{2&={#-5n D@Eu~ak?~\zM3̳ϭzܹW6""cuYV͖^ܺuVqw}7#̡EaWr*/|;j9|FqDa *b5->)(\;f\r(854aEE()EblJx}\4xsփyQ񿑚tkkjz͏)nݺu9眳c}Q{w|sŪkHQ{LtGBEQ47T~lr 4g|5946m+%t:+!k]쁩܎G~ϛ7/D|anqH!ͶFS5f=rr?TYeUae¹x`-X@`S#k7$''[+N%:lݙ4-Lr~PhԿ؀9TwD?_i>Čܣk0qEcGK;4Yls۲zPo3r̙xۑ!{ᄓNjz ptUSoZ<{HNIElLagd%gbرc_+"{ƍm1I,ƍ^+?3ٮm۶U%u O!5:ۜYM'"i =j 667GVJFٽ3G1贋䳟}<S?{; ˞|m3fv>}-ZW_)#NN^3``"!uZDpy%noͩpT^? l S!ϿFO] |tbiƧ~zEhذaٜC:[IC[˓ulfE6Ӵ擠VRÊs5=, Gobp+K_f͆>f̘1ymT(xwoٵkמff/:+)4H'EJOV#6+[qe`˒pÏ_n\Ɲqs. ,Y]]#hbŚ .82w5'Ll7ޘp8t ur%"xVA&> 'Ʀ%[Ŋ/ok{.m\W_?yOY2|{(dxHNNh~!EGk4K/Ra rJi CqMNZȇYV9Cς,sT=|f; 4Os?Y[Wf;kgNfQ߲߳l2KQQQ:cjtHщТ* *Ut iy~t GV]ᵗfϼ wعO<)ym~g<~|RvyG?+J`̙/^w̘1'@Gl[(Q: z Ii ZRZKhcݘtظt!4(Ϟ|}رir}5ۅ1hvFL>9m ~jۦMvN<[dddƱok1\ƺIAa']4ItMKnDz/`Wunܽ{y{*}F~V2=Tw.YdͬY+`ǟ2WPp(HfPR>? }=?fv65y~{o0xx)-mbcc_{˗/ 8cl0{Gۨn-  Jj>DDn9ǻ}t5z_o{{vlVҔ>plS+1իz衸oM 1}.GEEnFtxtavOj_=CrЅ /4!16'^!C_Ƭ'@-L[sh !cے0᪊oyWVVV>ua+-gL>-}x:d:eiw??j&0|'۞z좎"8Ft"NZ!4}(qr#C,Z S1%_O㕷[YdG+>yu>c/uQ N}!B_=A` Aa9||,[Y0|ۘ2qPLqh?E)E[4|gӢϿ꫻;Ό>Ss$zX ա/Vj?tƜӦ?+W,ފcW2,1.}##tra}l,c<6鉝![%> lC aLxhof󗟽1[ŜOQ.^Qd|{Chhu%:nqKFN&N4La"|򗟽lL.쩬=ߥ(' ']_w\2O&>٤Y( 9,i5Qqy5UŔ1;&_"z/+-|0@] ^BUUK;V`펊s2߸>%vlo #=DbD Α'@Ds+!AP<`0|(Y߄*w{aԔa]zN^{v;|^w߭ ]K AQ(%$ Za glfe+Y컈j ԛu_7RZJ KC΀nyOCwhw%-^zY K.aҤIV;ֺĔ[dj|1evzۍ{ZQ"Ha Gjz}a;κj2|vKgN/'?4ܲeO>>{h96럲2gtWbFX @!B@]"hl V0|< 6SoRp$m+oĖ/iqx8}%<{lr-&Ԟ={rrr#:J> s,yY3z6ufs+UmVloh~}'R\"i{Yg_9 'Qx㵗pu?;VZeͯӦM+0a.iF &Zi{^E93sk*7! Ai"`,6Q AAm_YDw" "` $TBzﹹ}fy%H 39Sewˇ(nGq3D]95R1s}dWâ4`qػeNekozCCYFNh1 wB( QhT; *SiϤ:~ K™B#8Sg";vc׼%3$F6@ZVVl[\g 07,1bDOALm*#JԿct4kG_&TjmYs&1;N[]SEevM'&O}q{O[F,Ɨ߾ُ'}W]֪h4LZ#r,s>Q{# DkL-g˄(eArY}M;ao}GU b\@ȶ*JL 5 m;1qb!8W%/> ʳKVt%ŋz|/t `mଚ3PJNVrw(f.["@(fA\K[UCKo42á-W{Y~Iiq4=9|@e9;3m=c Հ<0%;m_yoyN%eyYʍB/2*l=UTUU9Zzb v瞫V>&Myܸq45)1y"unz5kzvV5Q$ѶR89XȞX"J'^N=TSzh8Źo߾56l(>|xwAZ^Uժϟ?c\\Y+\$K/͚5[n"}J-^火gϞ9>>2BT_?*ZB'P{uPbB:W<"MI9YuZv@.'.]ٳgOBZgm۶-k}JKK爏{Æ EO=T(~'׭[B93>.k4MbPK@ۘVBq%*U8W]IO~2+5jU/_̸Ї͝;7g<((gk-_7WULY|__.:V5{֭իW5VGM\iħ2uL*>@tbW+ ݅ivߣ!P3 ֍3 Vy8WrM>ްڽȲ\~9s222*< >7,:}3gj$5h39|D"Jt$+Ƕy~ j<`O gĉ>aaa;v8ՕRڢ!222?S3vc\=rxSSG&!cg %ϐtoo"Ҟv8wrΪY 8KggRvH<|Ҿgk&xpviBʧNإK?BHNXŠQF!...o5--n΁"Yە)$[sP_[G?jBqwT.ř\ì?\v:t.W28پZGOxREyʕifp~ɽ'W@-JĿ,ܨu ?mB#"^(7uyua+Dx~r3唜\`4Z[<ঞϰ0;S2vNI9ؽ0^[\TK|46ĔnD$(p~9" UManG\W<.miGO3F\. &=õO8p`T7.vz%u6g(Ju/R'` jdTpn,TKtg[]To[ k4_ jXNܱcGmgEEEEE~N΁2X uwC,7ricfY:A\U!@2BOTY5w; N[Y{C+h> -V[Txpq^7ntnذ!gʔ)___oFZ=xvk`qh~TD l--&:죢!wVNkqdJ>, %s#Q.Iy"Z[H7>ތƌ3gzwkcbb$ k/޴X }#.$ DƆt֤DEVD@\}8py 4h~Gx7\Pƍ0iҤe˖߿!r$1om܌ã4b|< C@t JAA |uW,:Rp7BőfG -۹In~9JOvѯ57J5pB !wyΝVXQ2}hec_a9mCaY5U!D"Jண9SϹ(MJԲH?hriEqU>sEIT7o縎~oքUf)h:b߲eKɓf+H[m@_{]:z S=Ow6p~D)]U-:N:lѱqj_0J78c\q0g9%ܭl4)" 67ׯWMu%a.Xfq& " ]z%gݺ9_U2>+ET 4 WbFXW܇Ժ]a=.v,G+Ӹ(o x3^^%'' 6bbb]pd/… }}H{^Q %n @c'+pǭuoǽ$pE0`Wgqgxb!)jeaNRmlI\xklo+Vd͚5/bZ6md]bE/ֵu>p:!r{)\UQ9 zS.w:Ot̷OЁ B8+T9sJZ+:zϵsqP`:M^B֌bŊ>̽hѢ>`hi˲\w,_<<111uJia̴x U9RK4vU)9ܢAM$ݭh~[Elg_'/e=}@D}ЭWw,x3jTO`7:t荃yg4%p25OaڗSW켘ڗao\U23Z:1] Mp4~#xU.HQQ>5~x۱c29 s{,s.$O2Tw\ؼ@QJ* Nkjf834I"  0Tmh.hOCDM!fș`jWܱ:SaݺP [e34v^g.|G<جΝ;;.\XP^^vN,7UwC•[,ԫ}z_K"@`"z.L=UoJA7>SHܭF!MǗA7X9 E2:֕պTbh͘&xh1,0DGlR|7A vwߙTk:M^-Nd n}A :3}ZQ5"T;=V IwFhx3Dpu,%Zql+_\&$屪}Bpg 8n?@BzhAo*o) =3Ti?@ X(rmE]ZC={1 nH+]ނwgVǓΪV=Ps]6%s}01  %4@a. ^h>՛^Hw(49m,u:c"W QDFIߛ+ (T[.XmY|ڇ Ukh*B0nkr5mW[*,QD:(VKREױ=h`Hanh54; j䣙ۚJyC$Q>_pwOq_IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/base-distrobox-1.xcf000066400000000000000000001534441474517124600253040ustar00rootroot00000000000000gimp xcf v011BBLgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) O7z Pasted Layer!? "     %$# T77F)7`7:3ݲ?864Z2. 1 /n -A+#)'e&)$#!e5r T!@# %j'G( Ѡg|q͞['vF J᷃C %r= 03Wot[3= Qq  o ߐ> ΀ Gehk>k k Ak eek Bk k?khd k? k4 kqVk>mk6k'ܮ5ksk>k%k:3ݲ?864Z2. 1 /n -A+#)'e&)$#!e5r T!@# %j'G( Ѡg|q͞['vF J᷃C %r= 03Wot[3= Qq  o ߐ> ΀ Gehk>k k Ak eek Bk k?khd k? k4 kqVk>mk6k'ܮ5ksk>k%k:3ݲ?864Z2. 1 /n -A+#)'e&)$#!e5r T!@# %j'G( Ѡg|q͞['vF J᷃C %r= 03Wot[3= Qq  o ߐ> ΀ Gehk>k k Ak eek Bk k?khd k? k4 kqVk>mk6k'ܮ5ksk>k%k5[op^95C382 0 y .T-2+) o'L &+ $ "f C%]: zT2  q! L# .% '\( A L   1 Tdg  g g ggg g ggggg g g ggggg g"g g @><e:?875d3 91 /q-:,**(s&>%%#"k G z U DA hI |:LmF,N x qGP ! #M ܰtU`5M|tY 4   Wfu0"-<ge+ f1m!@><e:?875d3 91 /q-:,**(s&>%%#"k G z U DA hI |:LmF,N x qGP ! #M ܰtU`5M|tY 4   Wfu0"-<ge+ f1m!@><e:?875d3 91 /q-:,**(s&>%%#"k G z U DA hI |:LmF,N x qGP ! #M ܰtU`5M|tY 4   Wfu0"-<ge+ f1m!=P;F9)86a4A2$1/[-8,*w ( S& 1$ #n !J*d@$\:  k    U   b    G k {                        " $ & klkEk&k|kS&kS'k Tk Uk Wk Xkk)Rk=<k k k kį@<6kk,k,k,k,k,k,k,k,kk"kH_n }( GhB +5v^v9'b W"i$%)'R)+,..L 0 1* 385s6 8:F;s<klkEk&k|kS&kS'k Tk Uk Wk Xkk)Rk=<k k k kį@<6kk,k,k,k,k,k,k,k,kk"kH_n }( GhB +5v^v9'b W"i$%)'R)+,..L 0 1* 385s6 8:F;s<klkEk&k|kS&kS'k Tk Uk Wk Xkk)Rk=<k k k kį@<6kk,k,k,k,k,k,k,k,kk"kH_n }( GhB +5v^v9'b W"i$%)'R)+,..L 0 1* 385s6 8:F;s<g g  g  g  g g ggg"g!g  g g g g g g gg:g:g:g:g:g:g:g:geW5V N  r $' A% d#!) H l0P u6 X"~$" %>'c)+(,G.l 0 2/ 3N ["($&l()+,,,,,,,Ű?<8/,   9  Qw " / " a # 1 #/ #4U #\0 # [| (zC B!![(4'l%#'!2 n4b "$9%]')%*@, [. / 01R3{56 8W:| ["($&l()+,,,,,,,Ű?<8/,   9  Qw " / " a # 1 #/ #4U #\0 # [| (zC B!![(4'l%#'!2 n4b "$9%]')%*@, [. / 01R3{56 8W:| ["($&l()+,,,,,,,Ű?<8/,   9  Qw " / " a # 1 #/ #4U #\0 # [| (zC B!![(4'l%#'!2 n4b "$9%]')%*@, [. / 01R3{56 8W:|' ) + - . 0 1 1 4 4 4 4 4                    | m K  ! !l + )c ( & $ " !.Pu 6W}"=a!'# D$ i&(-)M+q -/ 51 W2} 4 6<8^95 Z7LsvP@h; ~@E "Pasted Layer #1!? "     %$# 88zzz:*::=2=>@ABhELEaEqHHKLN4NP.SFTVZVVWiZmZ}Z[\9\]bog)l[qwz865 3 2 1 1 0/..-,,++***))((('''&&%%%$$$###"""!!!     !!!"""###$z865 3 2 1 1 0/..-,,++***))((('''&&%%%$$$###"""!!!     !!!"""###$z865 3 2 1 1 0/..-,,++***))((('''&&%%%$$$###"""!!!     !!!"""###$2,)%"!$',1 8 2,)%"!$',1 8 2,)%"!$',1 8 (%""$'*,/2 4 79;> (%""$'*,/2 4 79;> (%""$'*,/2 4 79;> ><:7 5 3 1/-+*(&$#! !"#$%&''(())**+++,,,,----..../><:7 5 3 1/-+*(&$#! !"#$%&''(())**+++,,,,----..../><:7 5 3 1/-+*(&$#! !"#$%&''(())**+++,,,,----..../2 -($! "%')+,./0 2 3 4 5 567889::;2 -($! "%')+,./0 2 3 4 5 567889::;2 -($! "%')+,./0 2 3 4 5 567889::;$$%%&&&'''((()))S)Y)a)))<))(p(''&M&%$ M$ # " / -.-,],p]+-])](]']&]-$<-#"! l< !<"]]#-$&M&](l)*p+-l]-/$$%%&&&'''((()))***++,,,--..///00 1|$$%%&&&'''((()))***++,,,--..///00 1|<=////00001 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 66667777888889999:::::;;;;<;;;;<<<////00001 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 66667777888889999:::::;;;;<<<<====////00001 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 66667777888889999:::::;;;;<<<<====;;<<<=====>>>>>>>>>>>>======<<<;;;::99888766 5 5 4 3 3 2 1 10/..-,+*)((';;<<<=====>>>>>>>>>>>>======<<<;;;::99888766 5 5 4 3 3 2 1 10/..-,+*)((';;<<<=====>>>>>>>>>>>>======<<<;;;::99888766 5 5 4 3 3 2 1 10/..-,+*)(('M..l-,,M+**l)-(''&]%]$<#-"-!- --M!]"l#$%&<(l)*-+]-.<0 1- 3 4-67<9:<<>;:<8]64 3 1 <;]9]7<5 <3 ]1 ]/p,*<(]&#K! ]#K%-(-+K=-p9-p5 ]1=<<<;l:M9-8-7-6]5l3 2- 1 /< >>>>>>>>>>@>>>]<-:864K 2 0 .-+K)-(&%#"<!- "<#Z$%&'-()*-,-//1 2 3 3 4 5 5 66778899:@>>><:86 4 20.-+)(&%#"! !"#$&'()*++,-./001 2 3 3 4 5 5 66778899:@>>><:86 4 20.-+)(&%#"! !"#$&'()*++,-./001 2 3 3 4 5 5 66778899:&%$#"! !"#$%&()*+-./1 2 3 5 689;<>@&%$#"! !"#$%&()*+-./1 2 3 5 689;<>@&%$#"! !"#$%&()*+-./1 2 3 5 689;<>@=<:97 5 4 20.-+)'%#!!#%')+-02 4 69;>=<:97 5 4 20.-+)'%#!!#%')+-02 4 69;>=<:97 5 4 20.-+)'%#!!#%')+-02 4 69;>.K 2p 5K9Ʉ<=Ʉ<>̖K9ຄ<4 ຄ</̖<)̺p<"ɈK<<(p < -+)'-%]"<K]]#-K' ->>>>>>>>>>>>=======<<<<;;;:::998877665 5 4 3 3 2 1 00/.-::;;<<<<======>>>>>>>>>>>>>=======<<<<;;;:::998877665 5 4 3 3 2 1 00/.-::;;<<<<======>>>>>>>>>>>>>=======<<<<;;;:::998877665 5 4 3 3 2 1 00/.->;96 3 1.+(%""&)-04 8< v5 0>;96 3 1.+(%""&)-04 8< v5 0>;96 3 1.+(%""&)-04 8< v5 0>9 4/*$!)4 >9 4/*$!)4 >9 4/*$!)4 >93 -$>93 -$>93 -$,+*)(&%$#!  "#%')+.0 369 >,+*)(&%$#!  "#%')+.0 369 >,+*)(&%$#!  "#%')+.0 369 >'''''''''''''''''''''''''''        '''''''''''''''''''''''''''        '''''''''''''''''''''''''''        ?<986 5 4 3 3 2 1 100     !#%'()::  865 3 3 3 4 4 5 667       & ' ' ' (77 # !   ?<986 5 4 3 3 2 1 100     !#%'()::  865 3 3 3 4 4 5 667       & ' ' ' (77 # !   ?<986 5 4 3 3 2 1 100     !#%'()::  865 3 3 3 4 4 5 667       & ' ' ' (77 # !   +//////////////')*+-../0 1 1          1 10/.--+*)+//////////////')*+-../0 1 1          1 10/.--+*)+//////////////')*+-../0 1 1          1 10/.--+*)................................................ 3 3 3 3 3 3 3 3 3 3 3 3 3 3     # & ' ( ( ( ) ( ( (      ! " "  $ & ( ) * + + , ,               - , , + + * ) (   3 3 3 3 3 3 3 3 3 3 3 3 3 3     # & ' ( ( ( ) ( ( (      ! " "  $ & ( ) * + + , ,               - , , + + * ) (   3 3 3 3 3 3 3 3 3 3 3 3 3 3     # & ' ( ( ( ) ( ( (      ! " "  $ & ( ) * + + , ,               - , , + + * ) (  5 1 ////////////%&&&&&&&&&&&&&&"/////////////////////."""###$%%&(*5 1 ////////////%&&&&&&&&&&&&&&"/////////////////////."""###$%%&(*5 1 ////////////%&&&&&&&&&&&&&&"/////////////////////."""###$%%&(*``00 Background!? "     %$#{|, }-d#Zz(PҮԁՀ?<;:8764 3 2 1 0 .-,+*)('&%$##"! !!"##$%&'?J<UIH;JH:H8PH7GH6GH4@GH3I H2G H1 H0G H/H-IH,MH+@H*KH)FH(CH'PH&IH%MH$UGH#IH#H"IH!IH IHGH3HIHG H"HP"H#HI#HF$H@%H&HJ&H?=;:87653 2 1 0/-$,+*)('&%%$#"! !!"##$$&'{4/ +'$ #$%*+, 0 1 2678:< 85{DGII43JGGH/FG H+GIGH'PIGH$GIH JHGHEI!HI%HIG&HHI(HU,HI-H FG/H UI1H UG3HG5HFG6HG9H;HI8s5%32K 1x 0 /.[-&-,?,+'+r++*#*:*I*G&B]px_G,<׳d5 "2ᅦK5w@>;964 2 0.,+)'%$"! ##$%'(**+-./+ * ( ) ( ( ( ( ) )))*+++,-------@G>HIIM;HK9HI7HI@4 HN2 HI0HIU.HU,HIH+HJ)HI'HG&HF$HU"H!HG3HGI HI!HID$H%H&H3'HG(HJ)HF*HG,H-HI.H@/HI¢vL*HIC j*HE d(HGF I(HG S(HN V(HF P'HI )H (HG V)H)HIS)HJ*HC+HUQ+Hw+HI,HI,HI-H-H-H-Hy-HT-H@>;97  4 2 0.-+)'&$#! !"#$&((**+-$./ͱO+ @+ 8) ' #) &' '$ ) n( &(*#)x** +P+v,----z-S-$-uuDHHGHHUHGHFu@&'))**++,,--../0 0 1 1 1 2 2 3 3 4 4 5 4566667788889:9:::::;;;;<<<;<<;;' % "   @'HG'HJ(H)HG)HG*HI*HI+H,HI,HU-HG-H@.HG.HF/H0H I0H I0H 31H 2H 2H 3H I2H I3H G3H I4H G4H 5HI5HI5HI5HI6H7H7HI7H8H8HG8HI8H9HD9H:HG9H:HL:HI:H;HI:HF;HG;HG;H] x2 / -+)))**+                     ""!!     !!""###%&((%2Ha/HT -Hn*HI)H)H)HS*H*HK+HHQd HHp HjHI HHVP H[Hl HHc HQH HHI HJ HK O H| HM H HL` Hi HL H HI~ H[ HN H H HP H_ H Hj HIxIHX{ HyߐOHIM HmHHt]HR H"{H"HQ!rH!SHh LHHHLHHLHHLKHSHpHtHIHUaH HKHd| H!Ho!H"Hr"H#H#HN#H%Ht&HI'H(HV%H24/$u -E*b)l))#*x*+] 8 H @` & -B _7  s \    W   3 >   Y ,     `1 m` @ R(U Sq CM/! "U["l !I!#= }_qfuptf#HL|%4x| 8V !F!"I"#l##h%hL&'(&[%#676665655432 1 +,-/ 0 2 48D'"!$&()+-./ 1 2 3 4567889:;;<<=>>#H6IHZ6mH6Hr6IH6}H[5H6rH5JHI5HI3fH|3OHS2J H[1I HIn+KH,TH-oH.P H0L H2Y H4ɒfIH8ѹDưysy'ڰeKHIc"QHQ}HIr!HO$Hw&Hn(H|)HL+H`,HI.Hj/HR 0HJ 2H 3H 4H5H6H7H7HJ8HS9Hj:H:HI;H_H>HrH#t6+6D6I66X-5g6J55w3;V3"2 ,1 E+,$-F. 0r 2|) 4s;8ĦxtDӶmaSKS_m|'Кd96b" XJ!l$Q&E(W)+2,z.@/! 0 2~ 3k 4a5l6y778#9?:y:;1<~<=V>>I.../ / 0 1 1 2 3468:54 4 3 2 1 0 //.-,,+**))(''&&&%%$$###"""!"""""##".H.HV.H/H [/H 0H I0H S1H Y2H V3HM4Hm6Hs8H̫PHJL:HVN5HL4H J3H 3H 2H 1H m0H X/HJ.H.Ht-HS,H,H|+HR*H*Hg)H)H(HK'H'HL&H&HJ%H%H%Hl$H$HS#H#H#H`"H"H"H[!Hx"H"HJ!HPo"H"Hx"HJ#H\"H~H.|.&./ ,/ v0 0 "1 *2 &34C6K8ھ^:&[54 3 3 2 g1 C0 (/..M-#,,W+!**<))]('o'&m&%c%%B$$##p##2"""-!Rq""o!G"~"R"#."aY                   H3HIHFHHHCHHF H HG H3 H HU H HM HI HN HG HU H H H HG HF HI HI HG HI HIHGHHHIHHHIHHJHGHHDHIHHHGHHHHMHIHGHHH@HIHHIHHHHNHJHIH                  $   @ !!###########!!   " % ' ;;<<;<<;;;;;;::::9998877777666HIVHIHIQHHJHHHzHHHOjHHHHS vDH!FH!IH]#KH#FH#GH#H#H#H#GH#FH#KH#IH]#IH!DH!HS tHHHOjHHxHHHIHHGHQHHISH HMHI HhHJ!HI NHD$Hm}K H'HTow[ H=<<;;:9877654 3 2 0 / .-+)(& Hr>H=H}=X<<;2::{9E8$776}5l4b3l 2 0 /% .B,z+3)(X&G####"####d###"""##""""""!!"!!!"""###$$%%&&&'(())**+,,-.HT#H#H#H#HhT"HLl#H}#H#H#H~yrm[dH~yrm[#H#H#H}"HLl"HjT"H#H#H"HT"H|"H\!HJ"Hx"H!HQo!HJ!H!Hz!H[!H"H"H`"H#H#HQ#H$Hk$H%H%HJ%H&HL&H'HJ'H(H)Hf)H*HQ*H|+H,HS,Ht-H.H$###h#=$"B#X#m##Y|rfb`SJC-dY|rfb`SJC-##l#X"B"?$"i##"$"cW".!"R"|!G!q!!Tp!-!"}"2"#o# #$A$%b%%l&&l''[();)**V+,#,L-.rrHGHHGHHGHHHNHCHG8HJHJHJ8HJHJHJ8HGHCHNHHIHHGHHGHHIHIHFHNHHHHGHGHFHUHIHIHHIHMHHIHHJHHIHGHNHHHFHHHJHHHFHHI8 888888 8@5 5 5 4 4 3 2 3 1 1 1 0 0///..--++*))))('&&$$###"   !"##$%&'()*+,-.01 2 3 4 67K5H 5H 5H U4H G3H K3H 3H G2H 2H G1H 3I0H 1H @0HG/HFI.HI.H@.H.HU-HF,H,HK+HI*HK*HI)H)HE(H(H@'HF&HI%H%HF$H$HI"HD"HJ!H!HIH@HJH FH!GH"GH#H#H$UH%UH&FH'DH(FGH)FGH*PH+FH,IH-UH/H0I H1F H2G H3M H4@GH6H7FGH5 5 5 4 4 3 3 2 2 1 1 1 0/// .---,+*)*)('''&%$##"!! !"#$%%&'()*+,$./0 1 2 3 567                    +**)))+-/ 2 59= HIM HmHW{ HyߒPHf HIzJH_ HH HP HN H HI~ H[ HJ H HL` Hi HL H HJ O H| HI HJ H HH|c HQHk HHSP H[HI HHo HkHQd H+H*HK*H)HS)H)H*HI-Hl/HS 2H^5HZ8HJn=H\H  C'U Ss; U^1 mc    Y ,   3 >     W  \   sW7  A " -` G A 8 +]**x)#))k*`-B/"q 215+s8E=.]$! (42 0 / -,+* ) /0234454565651 ****++++,,--./0 1 2 358$Hz!HQHJuSHRݲhLHJe'ȳ|yй4ȐdH2X H0L H.P H-nH,SH+KH*I HJp)I H\/OHS0eH}2HI2JHI4rH4H5|H\4IH5Hr6mH5IHZ5H5H1ˠrLH_ HSHTjmYIHh*Ho*Hq*He*HS+H+H+H+HV,H,Hi-H-HV.H/H0H 1H 2Hr 3HN5HS8HcH$T!mN#![Ԝg=9e'׹qbVS`p¥rr4q82z( 0q . -E,#+* H) ./"0:X2v24I4h5V.45J6C5+5v5w1J԰a1 "$@\ov\C*=*G*I*:*"+++q+&,,>--&.Z/0 1v 2I 35"|86p/ / 0 1 2 3 48=w:864 3 2 1 1 0 //...-------,+*+*)) ) ( ) ( ( ( ) ( * + /.-++*)'%$#J.H W/H k0H 1H 2H 3H J3HL8HT~N+ ˯L+ 0.-+*)('&$#                  HHIH H HI H HF H HG HI H H3 H HN H HM HG HI HI HG3 HG H HHHGHHHIHIH3HIHGHUHJHHNH  $             $     H@8:;<>8DH:H;DGHH<GH>G8:;=>@@><9986 4 0 /-+*'$! $'+/ 4;?@H@G=HK)*q#y^xwW{oi!rbKGDC pHYs B(xtIME29{f IDATxy\MϹElQ)0 71a0눱X c~c0f-TD{w-uk^sϹ<9( BP( BP( BP( BP( BP( BP( BP( BP( Eu²l7eўP(eXdY p^P( P( P( P( P( P(u;˲/Tfgɠ~< E&%av(Wn5C%;ahP%M儡W`E'#" d&.С 'C!t(:CP!x(E<Bpp CQ88С(BPC!tCPG<BQ88!pC!tCPGy'CPBP4С8Сh>8CQ/p< '<jڗpئ<](Y,\LPI:(B8!p(C!p!p C8°#:[Ϭ<{rh9"\{0 z- vz5[X儤mZ[*ȩLw%nez_<:z.: z jiP{G&9*68B:2!p!xC8\4p6D*mKM\%֗!p",4FkZQ{xu!p:P|£2zγ8GG<柭$S=<5Q G5!pT PoSpG#Q*:,vpD)?K<£\kK<̲lNe Ɯ%WIA%Wir-w^ v3Zi?Mz LGZ)k*(RiFUTTR t{O<*-p!xP1wB+A{r 뇶#81k繧8ai"f˲ aֳ,[mCOn73Xxx;r;x|8r^c\9pp*3aנ5 f[ci43 sX ì>NeǛU嘙JWJYaf[UPttFóG=Qf?Cp4e J{B=Qf?CU* Z4 =SC4fKgUpBQHCR3 Vo m*8?ݻqtЪ֭(eFpCY)mM ,cu@kI$,-=?P:X adxR8C(!pC<0t*\mD-47z/X,YVOpv%ߟRExmfПaȺ,_(暨gbE^cf)WaX=x<M6COO[,eVrڋB:* OieWX5}/kU:(*k8tx:Z4%4t!pC<!xQ8:e#؎Τ*i=Zs6?waZvJe/?h:hUr#j8rAG ^rAjqi/GVx82g& T'v7Oe?G! 8}e Щ';jN6wȿ ve7PX[7Cм ar93 S; s*ц*!x4W!xB^A0L˲Ѹ yڳ:^/a..=*^7֘} =$Z/J #9 b F?Ϡc7VQ:ObbBC47Tp~)ɘ=yr]Fbq 1?H|:7ytuGbm1Ɯv cp48*z@zZ/30Xz5KY܋.ۓ1ik6$J8]8m ca61ϟ{0y K6::3f ._ʁ<<),^52C:NrA}07bp}ptYf.]adU;yz5tx4M'P?.5)zkVþAW]]xz3'wpC4hp2B d,<y7~^2gcrl52ĉطoڴi# }Z:gaY>XV(p`>18iC[_52Uy}urxϞ=7Κv83VGΓ8~~r zS.d^?'=y6F: VϟA?{9Lm~.[L:cTTTjkksݿB0$QhSGx53!pTkᑰ@Db)M3q+fn^eE[0SxGIWL|"rw{pO׉Vvl]fzgg|)[iO]/Xujύ||2 k)l`w*<}1zFS68p`;vD[XXp3\ $gy-: OCGSja﹈oo\t _}f֭ziԨQ3gڇ=MfFZ{g Sx8*H$/c8;Σ+_wε'J5߼y7nlv݇}M2Ebp~]B=2/(\x233uVt۷o眿5NC>Wvz\3<77..]2 mЯn4h''p4C(2 ޳z`(,nV¿n od Mg}޽{[l \'NxsMT <rY܍*ƌmCNDdqλd\ [aѼ5ZLLLΝ2...'W{XV0iTFQ<|СCu>>._PC_jUu}~>66|OT uzSi4g=ȩ{\|'Ns}i*l=%RCjB " ܿ폠'ャGb2xt8~r~~~ҡCy» =4rH{]]ݮNCCCiӦ%.YNʬLTކoPMrQ,{'v=uε2DG OXh]RR_-_-C>ufԼPqw}Z㼛6 _qkH$BfJ,b>uaJ}G5ƍ---lܸi:X6}eE!!!͛gvNoOOlbԦM'atqO}xh}iȑ# Q.0 f]Zr"VJu.E8Ih彗ѵkWݻƍCjc:9m.h7@D"޽};`%֩y;f̘9996lpy򥶾dܹ1 ,hdaa vo߾]yyDgtxEg뵌 C=>{0'NӃ'YԪ;,SNmc`af~366\ti爈߹wޓkW98)Wkѡ7xt^3y^q³,[Tp֯;S/pVAHI~HfzT1c֕|}yv-\>by͛7oyn:t0X,.sN#7mZZ,dOT&66 vqxڶ¤ɽpQ_t#pL  O,Cv?ٳg3vO_V_Dz8!!!uԨQɽzjs…r8&{TJH޽{f#+)b|_-:X`00T]˾x"cNNNM2 {eN=!pT#2xoVgg܆:W;{?/cOVJ7@Ppĉ͚5[lYrY\*6Sx姉mxCס]; 1{.O{!i9Vͱpox),QST(5J4zhzS@vlx.Щ#<jc0~Vvm1g `c\37}Z ➄C6Bn0ۍk.+ONN_xqVϞ=;>}L%ѣGLJF.]姟~j?ylBGF8#!N]=8w2-Xe/uÞͫ OlٲMZȢ-ڵkǎkԱyhMGkåv .{Cz{y,f|#A(+.T! KΞ=E>>>mQhݏ]Ƹ;jii:SKx&Oڋ+E}c'.mpvv2o<cؤykBOA,,WgYVgysAA +^|y|zzzi::5k,;\QNlZc”ټRIDAT8w8֬Y#e8u ODbdmsZZڳo6dqe>~8fժUVVVvuБsJ:iiK/Ç1eJ$ qhf+}b8ۣG֛6m :vڵ :tpd^:N_ؾ};Ο?~{饘4cvD="(ڵkNNNFvɲ.t˖-^xzzv֖ ž}ЦMz/ң t N@HDDEEō?mRSS`ӧGd̝;L_B8 :fffƕ+WdNGHOۺ,^SǏxN>|cǎ͚5k 9}o޼iQ cM:o<{SS֊ڿ sDԇDǎ.wSd&M`֬Y~ߌ[ >>J˗ضm[î]ldqͶo>ƍw٬UVQPd jU:a3q) +łu{0t`/J ߙ=z4Ν2h(믿"CBBz2F:CPj}#CO-pa31rlL'.߃OׯcΜ98p .]$ 8E6mJxY1c̕/ 1nbq`_ ,ωQhtÞ={dӳ"##,XY U R4soWl2;c*5;w |csGGGWQM:GXB.ex;vo,Y-rf֘t]/"7,,,a֭-[hǃ!x4>ژ:u*va鼙x8x:a㎿ѿcעE 7;wltx:O端¾g~X; ]W̙3/X ѱ Bi08q2g[a풯QXx:tPyw^Iǁ!x<:0slMBIidSM4q֨cPN6~N077Ru<{Fvn>='b^~tl?ߢ~BI{]u0v/t o?L[a(,,{` oK!t(ʣGrJZ LMM1tP;v ƍCaa!|}} ///hii#t(D"A@@^֨Q#888M6puuQXXٳg#GG͞"",, aaa8q;:OOOk&,J0,˲%%%!ZZZ-  EEJG,˪ (eYqqqUIII̸lqiiMVVN<$-D"ݻw]O>I%>MKJ\2Q\~XXCF|^$?644l' HēH$5>ѣ4VC t-_,pCEW-.oR4aJ<հzʲl_lޞH>l>F0Gq̗kcVy:999ز2++yvv6JKKmRSSKΜ9)Ž{$BI?6e&#JULX^|_%8;@ujbjjP;Me[qqqeyy>y5ͫ<Hn+xh6Xw+cxn֭lmmkiicٳ(=="<*IyB8x&Eܲe˒#F,^8< ӧYǎfnnKWWڵkar8kkaaaunU5EzzzqA+⤧0`@#rJDՈbbXp9sX{D*PQ6OʤIKK߻wqqq-@KKKxŸ?kmaYV5mڴ}v!#xKjjjX߾}5۰aÝyueF˛I&%tܹYHHbu)ի;feggJf:Z0LM"ñ6h XW]oGg/lٲ#GڿAџ{-EKKKf+%tuG ŝ:u*=zhDYY U=B0z>[zu̢E촴VtT-駴/::p>@y\\W#F1$_ՎD"'&&=rŋ75WG/]ԪiӦo7"*/ GTqoXTTTD|yӞ={͟?,>>>X,YD[[[qrr;wܣtر0pAXXXXݓq ]es^)r=pLWU2KJJ6^W@ oO̝;EƍvFFk.::o(//O 80&jQQQg5kTN$ikkgq)g*PGa%4pϚc}uttZX ǫZ:C/B *80 ɓZ8::zJ"}k=@C(ݥb|5kִ͕GKl|̙ٕxȑ#; :($$$UPڦO666vR󭰰tݺu|>@B}:ۤI{yƜ7n_bqe 5j:`Y6$+3qOv\O@D C?KU B)$&&ٳgiӦ,+MwxVgdd$̛7/6,,LZO>NQWU=>|>_jժH&T*)))VEޮ]s=H$*yfDϞ=j./p>kFDHN0!F:X1]UG+O NrʔHeNnnn͛.TM'**]E)**JWWtʲN<Ɔu2QGp^`8*̐ K۷3BKuAG,%/UG#PDjIO>y̲DINNNEI:ftSTMjZS6+WFgggǨ:/_Lشi###ڬP1#uGy}QQggÇ?*))IR6:ũStԩ6!ТS~86*Ј =zdlj|E#H >|9r | < љLn|!4͉eYVt$}]jq] Wt8)IGPч700]ɋ/rkl:;w>633+E͏.Nm{O_5Ue5kVpر{o#yt@K(9s殭mv-mF6fDT !!CdEzE,ˊ% """|̘1h0& EbZ +طo_R޽jMo|4mm۔ Q )f Chk r{)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 떧r IDATxyeiZ{s\+3++kaA 04 laLr8l a9 l$G A(ȶE103==][WU֖˽ysι7zTddV潙7Γe\gAC: ^o6f "OJ#21> yf өȭ$I,~G3۠!Oč7~t:Iݥ`̢Zstp8d4|(Mӟyyv4Ӡ/l˲(vlmmn#'kg0p|tLQ'YT7:Y~< y޽{觋ᵵU16A: Q"(QPL 1 n.nr5hH獈۷og:,g}}-!o1qJi NZIPQPIPWja<23|ŋ?ؼ yƍTEnA_jR*(NY)83A$!8)>FCQ%̹wyN7?Oi^ |#s}_,D$=w^/Óhx`GoOǼu޵a݂aq(&&cT-A˲d4qpp@Y7SOX4hHv:~xee},{"(B`gs~>Θ^uP 11\2N9>>f4ayjM/ΛWAC:_ylSkkkehLBt#́s`ijEo|d2!Iis/_'+ڐNR\~Zkx2wv&^/hx Cƃ 9hIƋԴ0FEǀ"ޑbLIƔt۷bMPX7&1\1zOx￿ Ϟ=ͫܐNܺuyf6IrE >{;,6 *`l6,>hϿir5O 7n>U=β'766~z}}i7׮]l ^/ܤ,^GIG)a\?S.$R_`(VQ1ґ@:#tXF&JKCY {[\i%bya>88::HZ/\x4+ U5׮]w_{gϞ "ZT,`D=‘S;p㤤4m[2`D1R6Ӈ3~ވ rAc[1TB!JYEgPxco"JyevƟ?[l4&T~)fzT$We<qttl6Z?u:… ۜt|pF=0D<&vW}XP׆9og|ۅm޹g%2S}KVT'ŔN;I/4'!7o|,XYYZK]6%2#aܝGjȓd%h:U~G:I'"5 E{V 1 { cUiEᅚUU6[mZ6e4z@ U.y\ s_Nwϟ?Мt!qw9o]VWWO>BUIOQ\IOL4I1Z kH3Ah0M[|}8%OtE?zB;<C&WFj #$(`/|\u"/l3Hg<sxxHȿH/_?6!_ܹcs?4Njmll0>FD??x9a 4x׮]HRۭ;TV.rp| 7filK-SQ)ÇOK^|y3tVheԣ]| '$dTHTP M`Jz e0sl-;l x05HNUBOvݿPK.5QOC: n޼|>GmVVV-z3NSŐPh,pO؟%9d|; w(Z);kom_#6|4vthT)XPNx!Us ,UzZnNΝml%$sU1ܿ oZTc֐;sO ;۬Ū!B SQ4t<`+c|e(G)G#3FefmI|| 8fskFfQAs5 %ҫ@&vȩvx PN}h;Ѥ c }S0',嗈(/r'nj#͓$+++?3iN`C:oDKg4lަHԅ(E`0Aɔ/ܟ2m$xĆt%U!1gb1gfOLUƘ2L|DV}!FDu)+kgv{l[6%vъH"’#PeTNEk K~VhJJGtld)=.$-ڎPX '˔i)pܻwx\izj,ʛِ=^EQvٳgɒ,j{C处Q)$0ћZK<tʃG sg L!)kb5&S>9N𾃚t43lw=fVb`hEa9_Ĵ-q: R 9e|y޾IIuq`VOĉf/=v͹=4}EcM<{'\iك$ ZR51p6hAS2\f1,ǺJRPb(Z7|r<P5SlX9~ S 0(VeqRJ4QȉwwNoݹ[kcuUmɣTi v`@YVVg!ܾ}xZqxbjCK6Xvt9fFiT0 @uWJv0}aD\A(M2޽[ַXK2Z ID去0'Irͬ;wAsrKW_z+eYՒNJUWiÂEBB Sq G3)TpP%%Lu*ڱZ]UzFcYwQOrgO(}4p583N" bs{v?걦Z-rgUJX\ZCBzHD κE_gC,W%}] CQmcqҥ)nHkotO;Y˜݉BM8SEĄ pEE7'<,#V"1`j9C, a. Qq55Ѹ?sȧ8%m  u#6] F^ﰷYce}v79 !r/b0Dj (1V[ iz<;6UxX\ovP}hXRu—*Wâ(WSj^g5'!dI4,ڠHx "RI`m%e{ٽ;i+Pb%h4ִ(+"e܅aE#a æ}Zf$~aqIc]4v3L3:,M_lu?t5'!JܹsGs{knvޡxqw|Θ3;qDC znQr{EPF,,CeY2 E'I?dY/^Ӝtpն~{q{{aoL%Ʒ$hfcNs&4-`n[[ qFOop(SLTӽuEU)c*A=F,K'|~sF6Znh*NUGq9{[>gWYhr[ R D E(HVOs\ꬳ&fi6CJWO ސW]SŽbN.A}xvX{63hԗn%L$\N~"6r[(+ UE:}hsIbIU!'OM:.YN:TB1Lt1g6+WV9BJ)1R`$GcI1Al#hQҍz߸qwni[IT_G,FY=tҸ9 _U]x &U54UJ#{{suLg ?x#SA%em 3k"8TWMWkc% p_3uZ5%[y!p[{^Zܺ$5<(jN_ZVbofVO9u=7!s+|5Di;j [h+\IW3^vsj:Z'jjjWa,~)I~%\ IF'666.omnXQӄۥϯr5lI)5,22S&4+UFOۂBoTuYګxي,+UN|JHPbf|;w?|KZ +6AWE뎜 mMAsb }vv:u L@ N>AW%bWS2OU]GcΦKSb*D&N+(IroۆsW9i%SRɱVx1Aoe-;<ŚI5HT)czS¯xNFWk)q8q>!2b1QvmsJs3I2 $ 5g3ޤM[pP="Y99888v?Z/>xe$S3Vn)S\,O .w 5uH Bylc)&pLUx(1%%^=^Um382-h#kԬzY*T50uKh&8Yu!1.1 U;>ZE$^RXQ6 '|C.m›Zag> NFXAa9һ7IU 5 Lm#/(6dyb0ɋ.NAE**gV'|Ϯӷ%}2ز^tǂdxޣC4jj eR\?hs֓3. WVFUk iBA*|v9 IDATg66slH? bzy0Et:Z-:GGGv^kI|˗†tr{=<<\}r|#ȵxKoYaC h:!(7]lOb| !p/aED 0>U)Kb 'l/-V@ڔ&!mUref: $8Qg[&``=;޿C~ үfbߨE520[hkX H-9/|!6O?g6-iI"c9eRpOspk4n* xK"Fkkkz=qvpp<_~w]rҐW*Zϲ%I. q.̼296?k-O0^YPsպ`A@!)DDBU$c(*Un:*8d&A%4JLo:8iMqEn2rӦ4-I'=&N.m&-a}gZB1R+z,jly` K'vB^Hƃd3yV?}ӻv=o9Yx7G\yqto̕o];nkVe"UE>IJb8v?y?7i ɯ7nܸRŵ 677E^bYM>s%uêBđ@*j3D*>(ig|mRR$4Vt>S4Y֊8ӢF筠OBjeSiQJ 5śRXLW8Է2L>3 NO88q8.8+qQ2J{KI0"2<]eUUЖ7Fg,x[\IҜ49úx.Ocôha0b_\T,}6zZ{es4cl*T>Kz)pEa _:=/x)@ 1WN|kA)mWĉXժNh j$iXKR5GTMAh^f('"![|^=6ՅjP ˀ4Pykeo˒ {(+TZR>"j.Yk+QE4)i,sp8#7Wʍ6 )1aqPbZ cΒcDZߎɞh8:jZxJgP(üdR g;sn;IdV0srI94 0jHq}N & 1BpK3>uͱ+•6g/ _KeuZDsJϵH"seoH!sV[QNIl7=|N;ZIAYR| >LuIXFXGBE5EO-gD"fPEu@M|hGb1nUjҚlLZ,1.d2M~H>wݎc15ZN "@k]AvHn5tw^9aVxNɼ$w<;9GS'%f;ShI< cm3\|* җKLNNN 4#|kQ1XLT8d j-s ޺Т<5R[WMU/Re)ѩJBC)c&j9y)GJ SjOL5!fgkqi4ߘ{^8\ԢW:NH ( 5Rdq#`Q~ŨSah)e!e"IVth5UQl8(-\2*9 7avXFYbe+ _K`yҬ^-OHMkMdb:Wea^" fZ*mXm7s N-)lc\Z>"v֐N/tVVV֞"ʜauIL =ށ^⢵CqP|GT'iǚji(4h*QT fo6/pH*jBGcUsT^ $E5q`^@'wRniTeIYj)%c xa|!ԾNݒE H0H4 Coً Z"<-3TϏT+u1>T!tG~qh4J~91sz&lXk\5 .T˰Ҩ2*~/f^&&s~&cG2F^B[8=Ք)d]*`W?G)ʼn`}3MdSF=y Pjob )0" ch"07%^,˪$IjJd]xS^N]iOYi}vکtaYu>hIO>C׫ O?Wf$ιmzOD"cNNNj`FeY-IӴ&&a<"G;}(g>e?ht^ʲ$I*%WaXxNS8JT, teŚ֖wDyjРܷ DvM{yN=DlYm}9+Ƌ^,{FUc|>8>ɲƟsv)ic?F*{f7WMC:`xc1j(9ax5anM 3R;q|\+WG $u/\wPY86g= kcX|n*.*tDt4henuJXI899d-_5v8=\WT罿\e(,K"iL&7{9z ;.VkJ=!)xLQ r.\pUӐTUځ,*;pgd5[ٺ0 WKxcRBOffiŅh*FS Waa.&yI^ם"zyVmI E"N>Ʋ(2WEt@sC yAN?浵5ݻv |O +(|`hENӴvHLTCtrr}xWTs!.U‰i}lb"8ZiͧT҂ʄJ𵓡 9G!+.W-0ol^(j ɕAB(B$ag8 SG?FNlIkHAl6{x+ \i5, j 7fa`.qs^S5y4 :#9}qPN&&TIk[:&2[,;EⒼ1E5& )r4k-+++e/4!snxn4S@)*Okd {&,,Cy, #eaLD_G;CM;4R$[,w\R ,AVG u㤳tnsie$I"3qp3$M rIc~US*/FKy4ک:W*-Yz]K2.Jt4U+!/cFBX[/z?/>jhOD͛7;tEQU~\dz|' x0cj;d,OOlPۊT> I0-&7Y$'ceyMHfNsJ .AC5R@iޭlBass5GR#!)8 .愥g ̅E ms]S.}zO'm1;xBLI)]SD s:0ȃ3X-5Tmg9]&h 4O é 5R+X>˸~d:Se˝ʍ{MMmM $!ea )VE5 _"<"`Z ~(6޽{9u aq֭j`%I4yqg-? SyP<-4Ur8)EHWFHq"S6Y,H"nW?巁i{ZHe6Zsy9fzXQ <<(Ms5_#gչz_ ~A7UTfhrř7*E3q6DŽV)MߏSqPj<(@ ;Zx_Gݽj 6P69} QS+j˸P_ .LJc1b^?ch,րUxgi"G[z*zd|gCܯXǑ2rK=S*l*bjYL`%P?4MY]]{ofw5!7j*?ŋd&4C56uD%waW|~ט'RL]9m|$ #FM l3檶XY~j=?4K]/ .$6~+ύc1d6N:@RIW5 :Q{*/fwBǠ<Z|C\~ R1qiQ9 ᰲ_yFGq SccG/BUGq}.Q _mx_N. .h7۵UX0:izr^Y#rHׄ86DZ"3vHP;Z,P8S[3HN*QP@_הћvXYIlH鼢?."Lr4,/tC1<8Ѱq&,j`]FWGE ?{_'YYfa6a_dQ`>#bF "D#3Fh`S1(1DFvaXf}饶{|^fa믜S(^#;n5gW[Q8̄wdi2)4Ȩ4 eQU$VK'&SbBN)t(/p?î8<cZj0 L@rnnn12ԑ;gdFn/le;vfe$ -*D4e0V6^Eᡢթs'H0Ľȹj=rL s5dw`] qL1z,#!jBo L٣\.Q!@ chk?ҍEE~D@\PTF-n$W`)e*{A)u| vsU~tU@dYvu}bqaU0M ր\ iywup>MQ5<#!AHH–ʭ]4Kyobh钬ĂS2[/z eŎcTWUtwwVu.:EgtS4 cC5PQCǼ{kC𹭪g L&&- J(U Bm-NI?g hؚOA}PTqL9po 1YHceXf>iJ25|+&Pҋ@_|s:gh식@ޞ¸"L.7z 5.ƾ#KJ2l_;*1Omc@ (Icx@ی :n#5JeT*``brbŸSg[sL$. A):\9?ߥ6]]]yի;ʝu:`]NJsd cwaeF5"H V5} 4A0<6%ͬe+֣~ۃ{C-#0 {Q؀2 &h5 ߵBs$2Aww7V9K;EgtX3H ɁjW 64Dvb.Tm?iXm>- (({ ta [ZCjcN7D| l|u)67"<,c mq:LfC޲D4M_9K;Eg:J  T F"( dP[ 8IQ Rd,[B`P  -ļLѱzeh23CqƀpKai_0A( i+pVq6#V StCJy~څCM JsaGpo6YEϰ 8XXY!f#F2) Q4̅eh* ~4~pbMgQBE{0J5rʚƸ}ԩȲlUsvξ-I.$d`07w6:l` 3)-$VyLXl5E\9U9) r!!4J(`2Bh0 nw܋PVh4N霩/hm:XMɀM&v\]juTHȅZ♍uԤ%”0ckAm/efU0J^U[@_G؍]Ǫs2uW4qX cAs VG[XJ%L:ZsVX1sv>Stۈ6]MMs&1Wb ,H@ V)Tآ-!'wLOA#jK `cl.'&7q&iS`!@Phe۹$0 Sd98%)ގ&,O6><[K'at(VZu)!&F dТbM$b"B,@@'&^9W1݋)x%qKC(rWt?l$;{zzzLk%h%=/cIarSH1 +w?g;"VXIc)*Bga P-lJ8mtGVBD§GJ܍P!'g@@ʛ:o)* uNy)ȇ !^UVCp%mH5FOЋ"PB?b ,)WPzH9'k JVbQx$>DMPϼXHae]hr#Y(DŌ"Э*D }@yʔ) /vNyIYMQJ9/dE B B)\ 鄢2'(؎Bs1K77) )#gs4YB )& ~:)I@ G `".+"57,_ktɂ c:][kSm Ъ l :i*a6l`;9F>Wh b?QWaD)i/`:672R͖`bO4$p1~Xb4/Aۘ/ |aF I8Js;Vĸ===zs&wKX~=1rخa$Q`S4fNf"Ab_uz4:|!3/>i 3Ȝ$Zȑ ih X9 r*Cql<"N5!j߉pr@X$EeO\6aH2e %):/Ck==I$Ib7ẹ `ce-o h;^2\1+Y3'DOa@My9 Ud ٌ#)C 9%8 [gb!!)a񃧋R\.9;E2Zr'v|65cP1o+b=t6"vɋ\.w3Y7l !L/4^hH  H̍j\8( @JҽhbTtq`a.bnbCV4ʑ q# Pk=iW>sFw^y.50$@:1xq_ӱdK$!biDJ H CjBS,aH$$HX@j[*b tt f<6ܸ`E 7jH^Re xÑc!*'v]]] "h4sFw^dYF|BR1=кРR1Y8iZȿۉ̼J<qω>lǩ&HВ#ج4X2[ ҶxjF$WhUsb85E,}1ƆE c.ӌ36/ybgmt[oή5;^)$ 2,[f͚RLXf6.&mhښ3<)Ǎbl/~] jlW#,aҕ$r$`,^cP1Ƙƨ@3Fs.yC7@D*j˹+ B7ضۤ lW*ƹ_}}}`Gw[2Bg懛afp4bCVXtSx1@KyB^FJ<*'ǿP?/m7 !X(D8ZckAP QBц{ TᳱE+R81[ao>/sт#dZ`+G1}>T0NtfHQ c@cT:JtᇊvbOd ΢2M בrF^J.Fq=Kix g?Wn3ErvLPb fq|vHuSϘXʰ#, g{/f6S#(#J6*"Q\-4M!̈E6ıF+V(nb xNl#oh=+>zzzyEJ9O eY): m+: VҀe6Qs]tqWC^cBIED ~l8E9JJBpj7 $[bP PfAdʬ0SʩALI8ή:fT& Ml)\i艹((J:؞U\XQZDk߄gF2Li7RjBg#)ИNS ;$d/_bD\FHHWX=\È6TkH Sp" 3>MBXa86u;u]G(̈ibʔ)h6]=t:C`WA[%uKL4@C`!ch1 AA{/~ .Sqs `WJTXU|1 ؤ662h!Pb Z+ve $4'ª5Dkt W8 :Qb%"d|狐TV`F= ^W˖-{{{o8M;@8Ge`f$_f M[M!u;{2"%\Pdk@5;lCx u/jAꝊ$0Th""ʑ`kK C H$; #[_ȌPㄐveb-5y8St90ލdJSN{VZ;W輄P1jyrC #d޶2G{ֹh#U~5O!,c3njTkpBXߨaN!$^NԔ"m#}@@ Qƹ/yɎ$:IY9p-Y=;馛J{4uSrp ?vgO)->J$_:_y1L&%@ Ka1fkq7UUp+qK2R}F09b]H02%J봑yH PHn42+upA`CcuWF؛ +~ܶK-1Mӝᤔ?;,I~p7 7St=x  )(VW@6m#xj<^ ס5vw#.BEN/b]iN~a( " &B+%&LGC sq vP!Jzx+o}CϮ]v/?gY*JE]trȕW^4x`gPG3 FPS)8TLQx?ƥE[q|쉄杊-\"6f 6qZuHA9{0#!DP` +4R"Wgga:wPJMZtJ'xHF%'z ~ᇟx?{8b;S+~{&[a8BʽSt3QAekHbhǣ)،͒ؽn+EE/=Pq P68hdBT*A)UI Y}N8rwܱ;'paB=Ο!~ 7P{<ӶL`VI*:Eؼys3 -4Xd+$m 8SP$ F"7,]#!ߨx5 NN{ 8HМA5 hA40TĆó9EGȴ6HEDIl 1}~)p2rٳg/|G}tk^g'uW|>I8FN֚m=35ˌ߄h 7ITI,26XbHcdt!il^*#0`tj2Z6f[1| d 45"b$Q؞vj '5kß{&Gn'~I't"[e"Gu+iwu׊>z`ς{6t D*͐2`2,&JDUƇPf>R8 ٿ p!hTl֭}c!J6?˺3 42ZC`_)Nmi=wG0ma@cvhhr ^㳟, }+xwG嗌;M^Fne3gΜHRA0x'Ng301$*exN,pcqKx˜*f0> Fan}.+ڃF4IK`8kbkaWZ@ӡ&lTBZўإ]A½ދ;^x!-[6aSu_tG>}+j/Czg,Y&{ BStS2c7"j6!H 0㕷ljσqc ȼ=f0v[nşnEj;V*ە+b4128<iSBlZHqˮ4MSOaɒ%Xp!~MO>~_#8x"*7o18W#}k'SwXh< }MSiq,G=WeL&W2g[JnbLH\. Qmd3$lԀ%AH+6$D8&"F0&07]@]Y7ؔE?/} r zLo~ӟ< O>U?OnvaÓ<| v):Оe8|"< 5,"XBE>!8k̚ܓʽ6c/@d4RakfdIImZljԠHBiCHcaZGZn4G$(mނ<=/ܹsO}j#<2GU}>T*-o9׿^&7=o]b[.˺Eр"c:eIE[Pem(c4.\F.>60#(Ia N,쨖Fl։@z΀ВM~8Midp*0yWxc=6c/^'|WΜ5k/sԩs-Zt?.[p S,:㳑xjRX't?eG 6ˉp-)SF{(KQ{`SIR >Ӕ Kۼ۔afl!A#72AA)zpVfƳ>+;{>p㳟,:("Hϟؗ7 'ylO.x?wNΨr( xd (̵ 3q)B(ILmMO(xO6ȔKDdr=l/PJRH[]E";*:!f(F#bBN&(AbG<&cI9 Ť#x1 ؄FǗ4qI'|;gvi(J !N;cnvo~W<|>OStv-v{$WKR!JtZ'tg.M@B:-dpR@*JT$RUB2=aױjFAnaY7JsH2 4X8AS583G^CyXrs5o<|K_w܁m.^x=6o޼nppiR̺ Nx'MKXh_ NѱڵkE\.$0Jk4̋㨗xnd! o5hdQr' RTqg$((,@c>4J,-6&$ xqď'xqޟ_ {㮻?A̚5k>o~Oqw5yӧG.[s=wd4wۑ2LYs\2|EZ;k,2IWl)gMd 51DQ#l݉njmn613%"$j `bl,H_9G3k*F2hxy=8(q.3g[oſۿO]lhhhc=7ĥ^裏Κ5ooW_5a>s.gq o|?3g%ۍ$IzN?C{׾bbB1wu:{,_<󼿻Z雽Bm6ECϏl˟&b(-HҞ(.v5tKCA\  SB"%$Ou7n,$hbC-d>vQ-Qb.4fjCTJt̬i3$:D\0.l{pm뮟mo<ꫯŋ_TBf<00VX1裏&w}w[nmϘ#h]q+;ry,MV+[ouCrewOqW]u՚lq7ԝ❰6{+2@p2F#7_dQFTi.Ua8Xzebbm::s2M}FbKSI ōFG݆._4Gß-Jym 35sF }L,1ȠOArJ|⊏zMZK.]_B?$CO?])x;$9ljo}ʕ+ۉ'?'/ӧO?f5rܵ{v?;E':jvw_1yW8<āL-bp6XD1%6l`0*ITBh҅EczZW<4Ӿ^E QD;,aGLNkcI 7ȴFJSPR oKn1goF__lu'|R7I)fN8J\./V^Y5_}Z߁n*o~L9眳kY`DGfM_ո+g\0w(a"b0aΑ [!Τ|v̥OD0c#k`7ee!QMR$@خcRkRŒxv"k&wvXIfK%:Pj A B72h"(*!2nݱbr\ntƍ qgcN=]u+K\sxiӦ ~#N9唁OO?$Iҷ'.~Їf< N ̏.;630jB`Gd .nr/te Ri ) ;0&,î{Y8}Ȉ 4 a^̺\1B3WcBӄGw~ww<ȝyꪫ6s9K/^vW}{;b'ǵKH@N7o. '2,]hhf@C!‰#24 VD(ZlġYoY dk k1N3:Xѥ];9vf)~L?o3wݙ2ASfOvajsgP} r䔀$Lh|Vwş;~ٳgcѢE :蠩;u7|sN=ԭ'p”)SBڰڻgnB ӦMӧہNkWUW]uq[nMժ^hѳ/9s=_~\s͂]Y8St3lټK.䰅 s=<߲O#0 ?#\rɂ~w3͛}5ޱ=QpRÿ/{[{ ): Ҍ&фK#D ςύ uBN. Ji/8A > L)XF2 Ɍf|r(6kh `3CC[ kڽ۫z>`ߙg93\tJfVx' Nh/,o}[7OhW93=(Պ+ּo_׼fON~yD4RsöVŘHE+`n0"rRF5ñ[N4 <DZбɃ?\챤~*$BPF&Шik1q^Zs[Wrޒ%Kްa Of{.<п~ Ì3_F{%?=uGξ!=N1])R9===&oֈJ`sCm*^w'>chfҗeZ.FuB03Tv*d`edֿhJB_)AŚHNM \- Gf> :Y:e}{>`^(2`HdB Fmtbƌ[q'L}o|{ǔR;<;_⼇z虿{s=ao9xࡷ{\VՕ3YnOH)5<]Z5? 󈽮 !{aު _]2"!n07Yo2}lg&8O00!jئql7a;->gRBPr}i 4Z.4q ,x,7[ADV9=Ўbx3 Rm>hհ5!Е s2"=p`G;>=կ>_~v͛wA5 IDATz᠃ꫯ>pwqN>-{o}[]q#GgDZnT*6-JYJ$tV`'=HIJHHQ)2zؠg5gh !U Κ4!.i^`zppRaWlj&66-kr|!C\'!$ Z*"G#ɰÉFD'@8]r ;p n8e.W}ٍAT}o=/?Ӂ7MG V}\nݺ _|]]]vMSttur)&4td'Z ЦpD"0ۛدTA/ u@7-N7~ Iq\!#t핰BR =BCM eT{ 2sLKgZmXPlv!n!`|˅^سf͚ٻi^{3}{jw֗}EtDΙ!!J;D;^8 ILAoD]؏g0OMT^VPK !QU Tsye6]Q ]y>0W7Su)8ڍWj¼LazaJrJ^T*z׻Nܴig>wf9o~:>x3~/‘ .MGj-ZtLOOnW&\X,E# {/BRIP3k;`&¹ [T()s 2vb4J, Y?B)9 [DnaV8e,]8#U8Tơ 嬁nY`#訧!͘1』/[l^iwe_tzzz^g`ĀY2U[bXɆ1#Lt[H5$o\ƹ <6bJ PҰhTFoLm1s#&MHX.!pLԤ'zqB GWh9*GH&2(8Zzo-b+60ް10cY'Ü L0oؘ%& >$aI'a<`c-,o-ɒ%zjZZ$V}ԑz{Br)j]D"bx!:cƌ>}GWX9܋/8{…>~q7.]x'N3͛|wg]`TJuB.l$I'd?p`W@x{F l- MOU Y,]]}'q?"k Q'+ 1(, sN8!AXAa#ze;UU !g,\ֶ&''fiP(21 Xr9\pAox*z6l+zUVeK4(HӴc}/g޽Kc?xM7$eeeH]denYΕ5DӉ"Oӕ {K bE x*G 1+)$/94FspCb3 tdae*'F-8رXpb9Ć13qwDD"@%* !BH$P"tI[(JO78nY6m*EMo;HQQQ9BOph| N9X<Z2qN2S r3+&h2i. 9N9 D$] 7*("E5*),:1Q}JڝtAHO$Ҹ(#>>!œ9s e޽ۻtR|Ϟ`q;v( BoPcΝ .tu]Ӈ"nx׋8`袋SJOIxeLt|ZiaF`105 zs- \oSddZ "(ӻ!p.< 0T/O2YfNg!N8S Nah7'Z~wS9=/=e &{S=*4 f%^B )+$e\2?k׭[WIjnn|3ߴ</^O>y=Dĩ>7|=Tct8PE]پQuMM7AtqXAdd[]\cSM+VC)MoLcl&ch6  5 px`X+DdۜȐmHI `~$.@VFuK BL ZR;O.3ntҟK14k EQ jZG(Nr!.Ydއ~m޼y*I"э78n;X'MNB{+a0wBi&"ϕ d4 ^n)jUB9aZ@DPBa$PBt.1: TCiܝoRit8Ne$(ٳ:''G\`8GYw˗/o~W Vׯ__-nL^i&Ȳ ݞdjA Mb ٰ`{<,jqwd@V 1 *Dd2`CxBnxfE&EXB)4@eiPeHQ ,x$ZŌR %I*X"r8Sfff-[VTTԬ['Qb iǎ=Z3nL'Ԉ@q,r 0E2`c"LF6 ؐ#8'8':Kȁ Y*B Є,*u1q Iϕ2B(2"SD%y:J7BȠHG_uj'g[|yniiaV´if<3~ZqW/={vۮ]*vA̙3b9ݘv1Mh0ӑ2rr*KAxq 0Mzeqշt&Kp]̀l0ưvdYfŤ~$aƎE]4/bKyl[lٸz7<xruZλL:(zѨ/P lɂY i  @V+ D'cyKR'2K;zX4d\|vqkkkަMmkk X|衇...9s+sssv% a6~b1t+$Nvh`@[s>ݯAHF@J&&JJvے 7I~oo4 >o$/98cs`H0 򛛛+[ZZp8\x1ܹVӴ\UU ~oۦ3Z mMokkt: mNB`ZaXr-UTc0[$cF ):JVy#DQ1e/ M<:$"Lh~ҥ횦)**:F"`~[S)  *zHd=j"33#TWLedeer! WF/҈0D#”ɏeY#1֜:q_>p0 yǎ+kiiA8.lhhͪF_| Ӥ6sN:!a(Caaa QJW(\SSSbN'\. E} EQ@8-hMѤ0y!U]zҽr4M 1cFgV,pΣ@H0S%jQoΨ)SossLEQ6E"---v+^q2 !}"0%YsḦX$J"$IajI>qsJi 7Czq5#B,n|} U@YlYȑ#@ !aZ3f8`?Smmmmjnn;w2tF666>(|>o322``Z ܵcX 24MC$A8OeN``x!$ap3Swh'O-^84s̆˗gO6`0xhŊb?ンfZ>/D"oVի ^~eܹsMK|쩫["BiMg8dee% ӵ*%IfD(JbXpi- CwK18d>sIrnnOcʕ+LYw. #̀iO?hiW&M,ohhX(%P`ۑ M*ubvחD#X '=>+oP"PXd dhECRP=P~_X,oL0a=Rj?~@f^w'VVVNǶbv⋗C8sVUUU_ڲ}EU?t &L8xPQ,OET__#˲d$k'| JeȲh4X,g3t9a<ޣKV,x}D Q=#j`hhh8bŊq+VyUn߾wu4-ZH={$v1Ox`0x~4>Orp\Ld/aXP5 Ɔ "cf8Fss34MZ 4s4C_~|EmVᠢ(o˖-:lۺukmǍ$'O~ "q<0D_(8~9(:;;J"Vpcǃ`rTUUUrWVTTdmݺ͛QJ]k׮W]uR_e屚 F&Mt`̙[,(^7Z]]DwLc[MNW?$Hc p hkk,˓T#b _}բH$2jucX_nM&~.}^%pGyt믟lۇMfZ:+gD"+ZZZ{GGn7nzA%ȉ^jkn1J){Lb1tttXWL-;G7^zW__|ҥ(Yi0ƴxe˖{w(ց|իs=w>!d iBBI~t:oZ+jkk&:PD0= {% @DHA $=H1SQH˝2Ax^k(4 *Sl~-[6}ӦM 2g?ˑ$)m™={v{wxǎy~?(=→^WWWURnghL%Ñ(+'>hLĖ([[[euuu?e) 5a(URP|-Fy<>?+h+BP@6.KTs6f?fSRRRy{{;F Ix\cGcZ`(•5ƺNߤiռWVVn`@NO>s>cI$8W*'rUո5b1KKKYYYYCMMe 'G򪫮lmm bEKKKa"+Wz %hp:;;CWp.{Yjjj6(..敕<Fk%nʣ(4c 릦677@Qꀞ;wn۞={JTUUk2=[S_${JJ-`rɒ%=GL3 Vsvee8ZQQ[ZZx0䚦%`VP:HX,ƛҪ^%n:aqqB!?#=O^b1D:tݺuՄ2g MHCC;=--- <pMsJ=ѣG;> Mqi8מ۔)SjWiZd&a,k裏g͚uL&Xȑ#w^Y?B1ꟕ}_>a? p8̛xYYx<^NIp'NB-R^WWw1ƕ?_g騍U6l(jsLa{ +C%%%JYYz|>Oh4M~~xiiiꝚѰ*q6[(Fnz|:N0JicUmu1FCC"ͪBb1Q$XD邡c%$I?4iR(:2X2eJmLYG@PP^3Fbw}8_\(x 暤cܜ(bUU@EiA1B$M$Oaah&k.Zh a9WJJJ*|ɬ_~y|?oo8Ġ9Llz^^nll<s<]2ϠOzyt WjKKK?\ s_H݄9vnJ;;;[BW_}쎻&L7̙{F3tTU ݻhٲe82L3ab@A/uԖ46G|׌ۘ0qf@堮?7|RbkhQQѡk!11aqHCBb͛77K\rI$]),, m۶J_Ms ͟ń3Kh%! ɉ͟ FqL &L ]B#znm%'\6a„<@ϑ*Q`yyM0@H__K{\b^N&L pʡw0%'L01`\`O?nWzOa0SM8ob 7|Ԣu&L0aȮz|=zfIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/debian-distrobox.png000066400000000000000000000510361474517124600254540ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEms IDATxwx?d6! zi *lW0lX(z-"*Xba""%2 ZNc !ul;-gbhG#JSkD+pIOjtY@*#߿%v)n-OA:&Ym tn?ሯ\+~Tk(9<\ŭe^"H'l0@ Twq< 4]()+IT_ $Z@fa*@3@qkn$tǀNQɘţ&93ZNha>P mhA:Յp^}Xcu- `+A$(9RDP ";1 x˙ybhk:y g#[Eb90Kj+Zw_1Cnf-E&p[3D _Q#Vj@p ܡZ9"R/9iVfS= GVxX1VY=+$SJV h*A:dZ$c +Rr^N}^L6w0.S5 ǥc!˩)P9aeFK0fHGĺv_{/y#zs=yYsD Dd=>Ɂa^h@B/$ +Lx{cܓg_ez/tB̚DHc񚑘F`K&bhi֋2c GEi-]);#ns3sySXL&DkT)SC;gZ^<1w&>A#$UT Rj5Ng+<".cNqk٢I [א|<(h[7DU[&=%G )JC[TvV1$BꏭJDz  GVo>)bk [͛d'~mK A7T k;9bh+SfD5Lx>(p.ȭXrXKNr3񜽄+V[@ug$Jzͱc:|@?<C(F l*tPHr1Gb-t*+ZԸ8&MBqQ\ ~ʪL^IbBj3Fj}88 4EyA:Ʀ["݅ɺKɗҴߴÖӞ88Q%^]Viӛ8$yf+`0/(}$(Lb0I҂<ąh +9S21"b'`Te_UÊ[8j$>.n \"Jned2`? ѩ:2Զ~. K{YzFIt>5AI`Uxhn夐A"SeqKb8$/SFbU8uy#P! A<% Y+\3n\UY%o-#PTgOmXķ"'xH7P2ӽW`i\_\6A: #P ?Kڳ =ΊB4Ny92t 'BZ,Z2)q5z{z[h=Z SetUK7[;) Wbhc%!+\]j1fްhC{qHi?<,HtQ}CE7 |/C%k5nY/貺 !׼Пt+,@`?T~#=yAxYI~ 1 _ (' C[%,KV˙HZ:6RrЏHW%S4YJ2?p:)%1ʣ[C)`Nk`TjpqzF=~S5P7s911œxj$9H< bh ҩ:o則8W 9=Zuc1 2= /0(iZU\Z?GrN$G ?͋ XO '0\.a2J zB1W0(%Vp<*VK';C$ x3^CKHNJlDbӫ|K/_nUJAaA:+!<}CJij DQ=_8s @g*QOs P q-_xfۚk$9FTiUCx?q `aUXk(CN>wa~n`-G,͙*ub[+-OVl\=8J}i {$c%R%kvHeD5~=8Rm*囹 p5 K|p5FT@2j#&:&mpk0i c^,N %~'(ٚ',+!6+`[;ӟk=PVR` v+҃ҩ{/0ODyRulYN|#W9@|H8$o(ˋ赒$rpx7*VSq;_q[CJGOmݸ9`Y(TA>]ZNJy0ΏM`bh :9ȣ0iŭ 4 Ӿ/g|Uz5Z.4"H"]VП%?HqkaL..LyX&,mOBA}?h>nlo`? bIʉMA:zVY>~~ 8O1aH4519d[ %jX8l=Z$&{Xq$A ` ?$ *8$}zA`d{֊Fq4nʿ[YnzgN~҃|mWDHJ.ۢHS:;hw.l;`bhm?@v)9̭G2>.JsQL.R mk<++ t)/q]zJj<R] @++[%%u&H4Agbh38)ݥe~|+$:wyKPN65p KxG*etCM5.7WⒶ(fٞbըٟXbs}8HSr4Or`ͰvWSeF WDhbmV s(Ѫ81 ՞pq->c&i-q_Rrd.Š!$i]V0Ya~:ա <|T2褻8ŭe))pT N: >* z>5z 0 ,xʶvaUVHJ!C;Ra9 g-a-#_ڮj؛~la~%[貺̾`+i @<e_a&<`༢<;pbha@4Rm?L`;;8gnѯJ$z }m+r/{ }Eq0aE g(cIttYNJ,#_tYYII;]4Sp𔒣V6Kr(/գ(|n!JDy _=Ўy]|1(oY$ܧWSTNO`>|~ e\6n^=6i5y/ _ hxe* *22ʊ#HVRiç2Y$dOb"zSҠ>*]Jc' Y ‰Mr`U my>|}L8Cb6"g@VutJ~s#xJؔjޜ7v:F?)EBG*tYK:fN锧JC^ G*n-CO),Dpc'oưZ7* E1KG LGⱯGQy.TˊC;[X* > )8m4H}S -5 3@S6$T؍S݉;ҁJ^ I1Oy6]1ϪGfc9pbiERTKQ*&!9x"nTo<ٹT̀k8JdGja%q: BW`w)~ \nX?>>֏@WP)+,Fedȭ^.5IJ) YeBwbh.&+"1^JAEY:J:g$C>.%:vA7 KGNA$VlzXW |5TMbp0? Թ_WYx*)VC85O93u@+?սGZT{(2W*7J Td*ʪ |eQ-àS)q<犢M @ 0b\:CtiJjmXgpMX5W7j;痰n3,HG'rc %He3ʬ {v&JXU>+h[~ E\ms_@@ tltcwE 4 '$!c_Ď0Z#01_1d1֫>DH՝:0ݥTv4!+^,Y&]V[_1=N`2%KT (!Z)`(?,OO[:W wX#up~.a!rX(@x) $ZmI:@%Nf┊${BU$z$T m.:(6WqkZjIGKr`?:vmGJV1 }&5/8>1C NWYRXZP7ZtrvaY=LqknMT?c;g) s. [9w.H+'+t!/9NvB\t&*C"+e.E҂-gR 2{iDH@_tiYQ&R$;ISd(J __Eabhk S(O+t\:E:6>>ϗrog:OwXBz Y,Ö&aT2&~! "B9YaM:3 f܆ܾƤIKGu,Zj6qfJE8 ItH_+R^-!Vfn1RG1t G\97]H,-oO9]b}mј!pdkǠЂt@biWJd.ת?k"wCZ·I'6sȖ~VV9@`FgĹ?mn DaLY6:+XV#tYGՑae`^`$=@\ܷͶc혮B[EZ<{P 80+ODEH?$G ,nnoS4Mk)jTJ::eW|l>zw:3UƩS "ЮYl\L_Wt;rT"M\!yDWQ/( 3H=|puX~T1Mik dmBD xVNi.%[(FfT[9Ճt$Z`#_>|sWlVnMlpQv,H̠䘏@"BA ArNy/|9&2 R4B siΣkڲ"&G۱ 䚝l弬a=ZcOs 1}5s;4~=a_6/%~e ^bzY:bhcJmeu2V K[evltVX}o=Z4`JlV{X^J-:p!q8 k&Iͣʩ٦$ IDAT I,\&5oJXrztLV겺6W$#όTHΏ^CRB.Xgpė\NSB*Nwٷțϗj#4BmzU#DʘD.VF9C'0ϒ,] pOtdKm)hD#+]V<t Roiг~boks`w_a*x||DHA:%yRRBvӕY1'(_X=Z[Wm~]>~IɒJ G#$>Jpsz3ĤܹXy;0 `T^IpZR?.|&)}aVz_BpbQ1Hf%O˗1Ө}@]v#F4IMMsСd";힃-TٖA1m՝xtY݃M9οHכzm-C Q(i /۰^<~P Ƙ$JZjۮ&SyΑz*@ G]`"'=Ģdyɀ劻zeN0ak1`-lv>T`yf0 䚭)ZzkCJ!zSv|GU(6X_YNdEܻLdʷ|:QwтktӺ~E^ ~Z$IrM6͵dɒ-={<^u PDju'e#+}=dZk˰U A-ўVB}-kr"4pQ+%p;V8vٔ KeQ6j(s֬Y[~[΅錈ݛ$(-.]ZuyZ\++#G$q )o(nY5^/]jL5mXU6bI{Ww%''zbkT>Y窫jziӦmW^n1K"w6Vހ{*t"%W 'BjcJ/{`hլjDV`^V4z(%%eˣ>(!!eḸfÇo~?ǍW=kW/QIǮM C؅&9}l+̿|O0+GEvQ#mO^C]$IA7r4mڴk_ЫW4cǰ|\jMHM:tJ7Or,έb(*췹+ 8Ku&磏>җ-[&۷ረnH$G=.̙Gv2Jocn\Y^ިLC(v؞.trX _ڹ5[cmkSxƎdž Ns=JtttuW$***[nf͚7x#WD/~- 7҉ q3z!lժU7|3~ժUu]wmXi:wQX?: &GN(oc*VP}|k΀ݩ~oˈn7#gϞ̙O6lٲ8b+(pŪlPVC|ѓiY|7ttwر={߿_{СWvڵ9sf˗ooРb6cO?Xv`7EZ`e V"KcS_  C;ێRû18qĔxUfVӏڹxu [w}{1baÆmpԽ'N>}zzןxS{tFdYYYfΜ5lذ_ذ"{\rLAW`- 4|K[&U19Ī*HnB"Eqk饺*c+8pX1|J~b#/MXᬰ)48q»k׮7F,^8OgbӡCܧzj@ĉ{>cs 97, }̙{ʲh +'K"᧧iK(X^aO:麬ހ0-vrH ]Vlr > .m+hM %t~#& Sy"4%󬒹WJhI8~_>ѣGsSRRώe˖5XhQ}%b֭Q_|E[o8gk^ܓscٳgOAR?~˘1c%$$t !˲\D!v2,eЄ$37C14Um6ª{=x'S2ILߙrqx XA 4pb;?2w] _JFѨr<{СfҥK,^U\FEEdYNR`_$wjjVZ(5Yn]ѣVZuN 7޸7ވmݺu]IಲΞ==lذFn4v4P"X feP>tsN[@bh+ p| oaD-X!!#ۗVEO[''nW8K/z&OܢYYv퓏Cݺu<آETvmoٳmĉS6Bе^>~C={lz˗/7rȺe>o(N/`YYXt4Sh{6Fy#V|9ᘴ*e|e(yosFK{?>~+y<+V80a„ ժU+{ԩcbb%/knٲeSO=?o޼~ΒVBt\ t59gJ ڟb&X)\-O I1d]Va<|]Ǩ<ĝK }S}'N4KNuڵf͚5:$O? #ѣR+&y+O:5jcիWa%iii;z-ɓ[gddg$J!6aEQ1TAlh5 ~0'KJe\1Xx}_Vj9ve|;޵k޽{ ?·o߾'O1dȐ؎;v$)(v999Ν=nܸrBtf KBںMεILBwHx0yE`K}wc%^uNLƼ7\Ѓ^~}"""H9_o o}ȑM%HN~כf͚#&L  QaU.8؍$%u7|ovabhc DT4;|~-}V߾}O P$UU6,2Q'4v?p^zi @-G ^NSN9hZ`dҾXM $bhfw"QG1C[ ݥʺހAl+VԩSqm=|nQ4Mիԩs1ԭ[=iҤ!̓'Ozs Se?XDEvw<ӥM)U0% e:,'s{;\$5@$6[sVb#)|3ђ~v~111~W۷o߶'FN29~ۻsM7oޮ{キyvvvJŐsH:`C)(#lTpڢGc[Hj$9hw $Xf/Rė?~[oFrr+R` >?UYĤ=$+VªA?;[tdzHg=];CM.>l$la(|uם\pt&ڵ+^r>|cfm۶ieg޽{'Nli9hР]?|fbbb'ls rrƌ NiU..f)> j0 ..Wڭ/At?1bY^7gڵ)z_pr|^|iiiLUNooŪvѣDZKx<]> 9GyJPЎ)bhB5ΰ5Bս{-?8l3<Ӧnݺq3fXv3ʳo4k,zĈtʋ{oҥK޽{wp: ՟7)voC`.stYUR =TP Cn2:Dw!S}UZ7xc˽{[kԨw}p +VzsB9yׯyupXwŤ.5Cڎ1ɦMv:tO dɒzǑ;v܁R=;wn7Xwq͛7oc~GH9,SӨMg1ۧ5C1 klݺuiӦ[d/}=CJ~;y8qb[ecfff3R/V'Nl1ѽ{ 裏?$+=ާlU dD@ p:W^yeυ f̘(1nw?ܴQF,X377DEߗ9t޽{a,Y"Ȁe U -W]0+Rrո{=z4㥗^ډ07tSk6~}>_=inݺu]wݕ٧Oo ۷ШQ:r[aH| RO֭'lm۶}Çe˚t޽>A=vXOh෩W^[u饗vv8^5Z$u94aZ}m?dL>}WDDDnyyak͚5k4mW\3`={[_$ĉw:\:ٖUt%mYZb|ƍYn֭[~۵kWm۶u]Q.6l];vlӄf0NX5K(#=ZiA͛7^kjժ?zu `<@2ݺuK駟6mZ:t$)dJWґj:uܢڅJC J$G;]v.wѬY3i֭\>}p8B[eH'W& fT扡&p˖-۵qC:~TTTM7n͚59?lGydu҇=&&n>* n8H`n( J ջw;yZj{约~Re9x#[l7eʔׯϣ*feUc)}>0Sz[nS9[nnʔ)QVJkD-Z:c (-%I UtC[ |SftY @~T!u!,g?^K.iw rju]]~c:`[?WkUG$жad"%B.ίacƌ9u RIDATk߾}3իwlLҼYfUQu$Zt-]x#229z^{L믣 w V$)211ŋtСԄנA+V֭[Q*K:[;L*aVM ;ȈѣGמ4iҁ|SsСy-M6SO7nܾ:t.Ϣjk ;U'8.#G{wjdgeekѣG-={NϡJ]6kɸ_tYm%_XO#@$rN3jĈ-N|Yfu2d񼼼㢅OS̖2m׬!} 77w^^^jz衶ozl!?wyxDΞ _+aF|DI-[K. W^n߶mۑǏ:thwy3ziӦzy4ŭ6w":&w6jwψ|7{0 i/iȑ #""?ͫteY,5Ykxa pXʕ+z۝Y4Mky333SQzbhuY}xM.N'P)Yeiffeemj;=i|fϞx< .կ_?A:#i2jb1i 8NrGN.:z=:6mPUjG:Jl.E`}i}MYYYsrr9rϣGx .}4NMM=h+?]wuq6lذ/7TUmqƘ3Aؾ}zE:uZUYd3]V*c׮]\uUSSS)_y_F]$WQ|wޝ{nݺ5Yn]ڵ%KliӦE 8#HGc>OSgN3&PS ŭH _t.XFb.Tv3sd:yyyJMM}_{6NiՁd:t;l2ްc(n-,VݥƉHر#z竪j^z $aݽ{{O<4""L >iӦO=T t" y,$~/E֣EuĎ?dffjٳ͘1c;wLxyJ?u###]'11~iƌQ:u*IR x!/###40,Geգ˪i 9’#1}egg70v;  &?yQ}Aٶm[r{W]uUrvv\GJJʂn `{{Zn|d."ݥƈ H‚rŊ'-->p8<ϛ1{͆aW6wSt3D志5$i|ij\wuD˄ n-8(` ϗuV}G Hf߾}]vϖhzYYYB8ك>UȽ<,oӭuYijIզeB1@rݱc˖-Kxϳz߻w~ $[ RHeuM<uY Z;Ц0?I[*h7-ub\7,0NC>XV(;[R[Ym JeAW%66!I5ms{mcmmM?8_垜{9yfG$|Rmm8n1DB/_҈O͙H$kHt$m?yKш _A"Үz7udJh~$-..ϝ;y~t%'OP0 Nn߾]X?OR^O5,OH٘T#>ׯ{Ѩo%6QYY9ߓ#ƒNV?-.}ճen>8}ڵm6(Vj& ׫,:$ CCC}*[Ѓ'Ϸ92z OVPK̏yi4h4:<_ ܸZ[[px$D'9>>~ԩSV<%_UO/nYk:,-󅦦;@`*3x5LҥKhڈB_1l³# YF>FVpYŖ+u/OMR\]p l@;W%bT@-Q x _zWbvޭhA,|1&6%ػw/?tb_}SܼyKR$I0·y %{1"0R}}ĕ+WUUU1SZZ1Lg mZk!u)4jeok 9j9 !PsimrʉM4A)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEZ IDATxwxTE߻%=PBh&wI"  *" 6,XJQ { Fz;BIdwe[93g΀D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$DbYˠ~DP P T<:@ԫܫL @pUĭ,k@"O`1|n/@!RJQѲHrYYW#D m@;}~ rʤGZ#)'6Lo4iZ(*P O@]7*8V):KJMT/q"I~e8vTPl%Rt$er= *R)p>ۺQA'eqHёCVDVPA<g' $|ٕZQxxlz\B(kGf):pVO@sYb!Eܿ@`(EMhVA6I,\ bFKGS!jҐsB#,, ):%284B#K`rVJR6 |"_?*XNKѹଌl(T3(KCbFNƑeQH $4B^SDbn YF#E,[ј~Bbv~HqF gEx}AbE!X;:3>Ӯ PvI~BQF,-'`Ȋ_m_bC):hݬ^dĶDt[Xe^9wB%L  DB#Kq '4bP?پ%68084bt옡_Gi :\o${uCf뛟iQ+:h6,CZu܆RtZ抪m_${e:l*D'd9wTu MY u5̓c ^UA]@+V%afdL):6Ġ|6*q@"TÆG8Ĕs#q`4އE}~n"@lQc=H/^!=J#t^7*.&H6 ~2.]KUVYOܣʏ!avD羟+%I@XJuE[J$?{aHY1WI$wd1feRt+8D&Hn@{׍-E \IeےH%[hG4J围1eaZI%G"%^IcȊpѲd{lOmTj):rB#^v$BB#fw EÉHʀ EndRtn~2c8>:EA:.TKP&r ĦQ`($Br IZGJѹ[+ی (} }늫^rMҨ *~?l U*Eo E~d1 e[q<< CUC/*xqњTAF|VL|ZN?º ܄!"k .8VMz n+Z+Х9s9]:k5 ֏ kiFQҗ +P]W x%/p69$Du]yuR"eG#һ/>nQnwMlj>_LdR3 etЈ@*kdjT=K= 䚜 iZtBEhp h.}*O$Y|8YςhnTp)mi*~]~n|R.@(lˢu_2i-J wم }ܪ ?IfՙtGעzTrY^ne;$4R"~.lg. 0?8#'ձ# PL1֟*7JՈ@Wم FaaZ+8my_-4Nc ^ @-ٍV὾]9b7 Krn%X?*𖎪0V }hu"ŧ]먏dtZmRD`nZ9g%gxd82< J531)'~w洂PKkj:䜖aݫ#2Zveap#:qr[ٍ:UA_E0/⪳LNtqePG&[:YEpr<_J1'Ryjy",,m|ps:E0R'Xi=4BٕwB+,<1Z:*l#t(0#7CAgh xltm7YL%Mq?Η{/[TxZxct0e7h:ڕ(B YxY%^t|oN(2s֨B- "ED'dyx]dwJm1Yy\ckEdpR䐋bhh VPfz MYb(h>!}-t)TFڼ YqJ̒]~h/gHt)y&bsת7Rxy00]tL¥5%)hU"7xM=﯑vtUt jݴ(mmZtxJveEb!j,3J|cfWT͊e^ hGjZQ,?v&ӖUvt^i`$6Ei\gegSI2o+ѩ,`Ui曍6+Nؾ衳4c|z>sAL^0㰉DgЊh0Lvce # 6y&L^oDvم%m,ePS.Y3":!M I,٩jY*Q^up.la#(ZѱmA&: ]lŽVk oj-#: )w4)䚆eýM Ш83pEdYtV4;r@H-(p K M@#u3|et.e:IQ:%7mX6ABQ%;9~]s}Yt!FƶMg+dR]5$:WDInx2Ggb4.fsM8ݬ\DG\{$PeYX;yJq.KV(Eth#"VO%>lB@D կhW.tKR\gu -I*MNX=%:d3yFL̽#,Pex=EWdm%@*ol#)T9&`hv]qbӅSZsp8;Oc<E+w*{0Q|zaoh3J# jA%ŶGaeT-*ߢ2eE"_^Rt$$Np2\,sY:;E'PG#EǚSOXё Դ YY݌DY*#,nII=WX J': %%[:q4wdaK{%QJH# .q&:eYKu#*YKt|eYKJBpZ EG"M],kIi!ZR{%Ic-YB۳(Jw5 QxOzOh?"uVqe]za1 iUvIeW*GSpiPPP7]FqpV! 9k]OQ\NsXFYM&AF+blgŖqdY߁ȨXɅu[ .T;jyt nzyiRӋGp.䠑S%Rtn&=xҹ7 y*ǚʞ:&vAp4><"viEUU7lT浼pkdXJ[:LtHJrj\~͕Q>_I,퇂|Ӵ~^zY ȣm~<:E;V(E,wO*F-908 [τ~4pgrHѱ>Rt,%5v~hoTq$c]x MmPM+kP$e*PRt3CN<:Mr 9lM UÍ+2}UYv$YV! iRtċܠ,;"3(ZEiVSq% EG F^5 . Bt N"GG.)8vLV H)]ӺVcl:yE甋H) [U},;ĥl~ ːQ/lo~LcMlVɉKB˜v,G5(N 3cA.Wo_\}m;qRt?w-SVwX2|xIx ?I$Bēpzo7=bNlf_Ecs ӊ^0_:0I(՗⟎*Px:QYdvW7yi߳ y%~f/grFNcm^UkRu;Ui PUQOLZ!isT 5`ÙT0uodeR v/J~swAΠ߶I@*1 *y!/8 L yDmZ̅W$jWXaRtn .hc*KcϹL"H.Pɹ*,0V DO_zbgeLq 4՚v@Riܶ[jZ7lb-&:%GRK/$PA`䬯B%3>_%v!L7AuZ#|JvnYQ9p<ѨT .A۠OCo*z.6;"l: bC HMoXW*mWԿ7*ѺI}ՙ-G0a|_/~靈^5 {;dST ngӈ}r 2yUcܐC9mݵ?^|=;zǗjݤC>; ?dnz\F>Vaj(y)E y֟²Nݫ4._bLTqxŗxzd*z隮zM绾bُ1 ?pc~, ݷG蔀^À_d~<.s80|Nə }xCѻ3ᅙ8qԮnRoOw=A}Y[7>5/qa&|En5Sbᱜ%tN`PMFO(8=rV,y??Jك&CzS ãΚ )8^$qr"vAMܾ7mcҏ|W :6w?gHǦ#82/E%^ 73QłpF&_2 SA_8~q61uLFH@3:ѩ}+Vʛo'ܱ{P.nqPN/LBV^c5=A Lh;.8a Yŏj\<3q*>=uCVdءՅXMAfʍϘU9z H]ѹnS荿ɿ?DvI*M+S!T/qhlDG̓ڄ׵ Sx?v됧P7Z4}_"%(tYCMO1b X+s:LMM̆0X]qa骍kvhNkj4 Z6bslܼ/ؔ9d%Ɣ0ޣ_7*Liڽ u؀#)ܸݻWl.5cH)8}:6c:#yU.=\yw7ڵiɪY-Oh8 .@A 7x ߕ~Vtu-rv8Xj{W@rnQ(zw>=qcжy ::U*ս_- Ô{TSfBgs~Z(1Uhxut/t5 unC60ޜon$H>"3v7@s:YG$Qhrl;zN9qr" .wJ[ ㅧFRV5'/7{a=2MeW`50 8'E?TP@9RpnGtl gj2r%a$o%И)LiZ4 Fs*1u/K\g?..xxH#+ P+Z܇N/ JUǛ(8槝,ڶh씂( -yزY>Lp{jTd6^g{` gVTbPߺ͘ Od7}%8x-z@(0mqXKUfL|c tx;{ޛ+8Z?ƿ4#1ep_)o}}<?b n`ƫ-OWN`)SgtAbR닙SN6ө[CMzV.\ݽnV2K74PZeyaDDD?|C]ǯ\RtY`7d'RShCQ%ܲ7ʏ_=횗{͕l.]NB9Xh4i>S#f?QGv1|p?ĹR%00~[uUv+_ubLB{XX L‚ra&}Q|*/oяPZr)^g IDATUS2<=zILyNQXFKTx4~/>1yCF2aSԩWt:.]4ߞ?~|p1:@CNhDyZ_`pro̳/q[oQf^4]0=o^dx=Ku؄+q=}COݼ 郇v;nܸԘӧ7(\tHѱe8xj-$:+KY9 Z UILJDX4}9x}y/ ~ޞwv|~شy &k_5yat&?-@vBRTÊA̽󆷛!CuZȽx,|=j`AW5O^| vƁZh*'''yڵ3f̸y-0 d9lDrj*fp{4sy WvR,Q>40%_NQzbB*}9?]TbRENw#i٪ mZ6!9-ß؏yfnNEY s>K׎mpF{&){qSLrԩwӆ): m4蹜epr(PE IXH<}xz4A@M-PMII9h",++,xkfZ\HhDPӖ;TH#6E8[{˪zfw9–\>1g,ǿJ颒,-M*~S?v;nk6fԅX>XGI6M,9///nÆ SNo}vu[|eH5A8V>wI1Z~ v0?`oɻ(%ڴg'yss]J7t@zx:kj)0 ~G(8 Vtb qҭݗN;E}8>"5wuQ9r2lQ2b~V=KO{9EQL{Lv\UK˼mS2 ݗO!|554)9gء K~Af+4fc6Y6`0!ȘaI:0Λ7sׯ_ۧT_C&@Q0ҷE]9t1|˯t?VrȹMLJEΝD̮σ4*~ 8sQP67/& V|MrPj:չZMM <* ?ec?q,?|aժU!!!*U I=vC:7clbj;}S2 V}5|p7Uz,ygm½FwwΛ-!r|Jty#Ҿ}]vE|w5jwWQ܃;{cәTN%WlUnCQxgM?qڀ uZ W~׬KiL&Ѭ,Zɕ_ȏӮCL0fOڵK֭[Viu8mљ+Ӷ͗&U? 7:Ӧ y{>غBe>gf&?>ADZy~ FsICs Ћrڙ3g|rqyxxJZO}mr咩kxylZpz[`E]#ߨ:67![*Mm);6~À~=lg>NjߥkϞlSGMK^KRe?pi2|ven޼ݛ5k(JBt'ol&;7-?@ oM NZM%,[w`23r4O]}md[r ?61&ƅGqڼ>Ν;fp 7 V[w{<Ҥ"/taũg/i_+<ݙ8z0vm-0'Ё}8r"hp IpNܟqZug}٦^^^f͗48ePtZZk]ܦfϰUrGX5 М&ppNOfs\^}osb~)!|H}᫅foժՅcǎ]OլY哢dTVNFUfуs:-uZ}_Ss6o>{1xW.93C?ȸgi wTçŒ~v];F#ƍsܹK=\C__z*_N|rh\9qmm/1I\cDaWm VC ͪд7j_^\#o-E`K<>A^;W^s C?,[̚?y^8jlX\JBwkym\QM6_СCFcu p:=φM_>]MGPEz\MeTbZ> )0Q`0aRE梥Z]tK&^46-)#vaΟ<[3ذ;f2Gϵrذe'͝O?,[Ι9p@?77UN':Yv_fZ6Xݨ_.׳iLs-Kݕ~uuv3fAse:g| &'K'Uc4S,*[3˽+Y3MG=|RJ=┢W|.gұ'.ES*U*2eHvЕ|d-<{?1 E͞xz2O>1V"EQjBj-ܗD|FT$Ϡ2KN+8U:+eRhC]% sw`EQYԢcT~%qY*XyWVٖyh4 =iͦoj/4jwo?k&xU&uضRt@Q0_e`%osOX^n ؛?aOqϨɄ }fF ^6[٥ 1a0 Y7U9:~A5#9pE_=_;1q,46E'oo|4E)Ē_)mqU)<5GSl?Kc 9-+JQ w_nwcVn|;k٨{iI)Τ-%:̷cDů᪣W׻!3XG6vځ/w):Z-t^1/&txWs]:'s4,*׮S b @I0{g<$Bt&@b!E ⭅&)_Lzq&IWF6 `ɷ}Iбuԅ.1"#rѫ&}\ *Pb[t.zOzEcڔq^EʢgWzKb5\=Zrzmcdʦ*{v`tWx<㼽h?B&24"5y1{ EƗ *AM' o[LNH6վHw:KCUrk\ GxyC/]~L0^v ):*aU3Y%:h|VIfb>θ@=3u5e4 OPxTdc!Eôg yTu{HѱQ9a?Y~${<۴2yB`Gx:;e^VH!TNΩYŪwǵZ]jm 3@WL LСP:~Fgp(&IT2tȐG~Yvǝ,^GBwBP"77V EO+$,-RKGI OiBӗsNXR>ai(ZSHE,PUU!srrNVKLLNNN6HJJbڵM&SU6mпi8 S 1Ȗ#|F^C]o=:{MNVTI]`"'DV#\4p%τNWdRinhWZe|Baaa]wݕf2:u>zLrXS+ & *Sւ Dq ?EFYQ`||*WRP KHa ɿr0dXB9~x@o+EF,"EZ(]O`]i@QhR0 Lx{³D(uZԪLú5lPbu߱c,//[v```R)iLII;}>iH$΍) m۶AAAtR~JժU՜ݺuk]5o׮]GS6nܘ:bĈ_u|ӦMH$Έ^z<d:@v=zhSťp.洃d*?OM<ǃzRt$w55vҥVtttMVkضm[tNݎ!G曮K.mFH$ȥKt֭VtttuEQL[nM֭[GjjjҥKysݬX֭ 5jTUYm{{5t:uӦMzu$nٲ%cٵ?qݟ ͋?~\rKkNZ9ٳgQQQ ӧO~jΉ'RǍ':txϟ?_۠A:qֻ%W"-.\pW^5*݂ =sEq+Nobccc^yܕ+W6^PZjp„.]4jҊNb[`$+;j+?>OJy杘:ujsF]mG>}o&qРA-y2MRbu_H7εb1 w_3gι^zV.zwNpLs΍OHHH>|xoפ)e݇ 6Zӈ&2A<2)9H^햡)&&fϞ}yڴit:1bD'NΘ1ÿZj7Z $- MOAeJٍgdX4b̙ӧOn75Jݲeˉe˖4o޼(XeʺotNnt`p^vUEdz\'cȲ\߱Sacѻo|3Slk={~W\]]oBرc}tX0o޼vˢhe7X׽rf||\,Nvִ -h!)f@U;cSMwq|{-LzwӦM}||Beee͟?fϡZjY?*hpQv5^:滭ϐO j55sشW:7v}{uӧO|`ݽ 5G!z7\5J-=H:{>ڙ{~恾xb+9iMOe ~e)ov F3E؈)SuرšCnt BW6UkTbMbW*Т)7sLz~:?DZ~䔌w}'k`24;33󢷷w~@o:dUdffF/_pܹ ^ < ll\L $VEQٶMG̺Sby}$&52[UV[o58qą;[U _5殻`߂c c Iݬ=Ř 3ҟN!c! FO6iҤݻ+ر#>888ձLa8uTt2{]'<<5"\[Pf:` NO{o/a;侞?u6b1EU޽{̓f}47%$$\xZlYȑ# K86 nV4[F| }z7|\6x)(,EOiQ`PG5# pj?06?`ԭ(|̙zt%@ Y-XKњ%a N4D"q>M?0̴U"'n3XJlRYJ$ P!E12S֕+H%@gYvRR9nU"HnEەGQӔخ!IZW]`Sp[%H$&Q䦽IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/gentoo-distrobox.png000066400000000000000000001026231474517124600255240ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME0-~ IDATxydyYy#r\jޠAA₢3ueY]PGPiE㌏>3w .0ȦmMoz{8o]]uY}7H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A  KpmwK] Q\F,b VV]Rs"QQ$BV)q(D&DL5U5;ֻyH=EuHRklVw'n&/5)".Cp̊hj>iD,N RB(!%ꨪAb@DTz:gU=uWQ!U+|~Us IEReUgM; !k"|Z7b'9A"sUC8Ҙsb HZADbViNkMgTQ)&Ii> Q PPuJjGR_q?W<*uԋؗl: $Ն?|^T>^vchD.#vN]$li8xx)T*``cb #K*afҨ[0PT5&*l@%$:Ixw| ; Q:WQٞ (&R٬Jl DZV ւ[ՀrOe;ٴzB(*_*Uq?GGuf6J®$JCSY0ǁ"'ӼAG!6j1ٜL 4BT*V1p>sb'&t<kK)!͈F#R^ lE~Ǹn_QNa f5 {E=$YD$xtw1mظQyI"fh q GPJS*)2Ki 41W-S>LCFB*ZfFVHu+ZԪJh5bGw]?|zϥ7$!W|O8ȪO@i*b1e1uIH'&֦sT7 bS2LOgX>Pda1Oi*M*N8ct:cN'XlXuFňZ} iy@!"E}b/bdlr$2oVc_#?MyX QUPjU\:ll5eN9ʪ|kMI $341c!ͣ!-=,YX15Uz}^ۿW aԪYVʰ[eh6ږK:3Wg{y* ҹΝP f-) ຆ|ci%ǡEdWgyؐȃ3@2=dШCyMY[B=-G| U g3&U $s]oq/t^<ĿA$**Lo.XḤV (5dGJ"ⰫloE(_F]Z)v}-Q-~Rpp/s!H~ȸvښ*1^ܗd(=~]aJm툪b_O0#'ryG8e~_|uw.g$cygCL>ԫP݆ ހ0N>NV6^|F97ߘI \x;q!6!|"JGsOktsjc.@]T*۰.*lQ=jvQ˜l$6j>'ȃ~C \[[DN#荢CP W JI+,Ge~)_9Lk?y7=h,@ciU[Vj!m?(Ek+ _Iƥ^-HWN>cszj㇕ :cՐ;: [>6CɩA[$EǃM וeHCqJRCeSh6@q1BrkHΆz -1AArD_p`4> ciܦ'ѭ]px4'Uvx%.(yu+T)֖_iTcch_\@!̣8^_߾)WWzǕEJp#OsY]Ris͇S|c~M4mUa{35Cm A? 䬍 +|NlWRIAat"0[~A][ s.U<jwUDҺԾ!=quh)!A8TeZV ^7n'~-xsΛSA%~DZs8r[2ͻx)D3apu3zzn7:Yu>6z=V<~dh!)|FPUm׽%\O~KD&XV烾 [UqrE7,s.y:g@ 1鴿zz2Wbov;n rȠ,ri KGI1aB:-~*>6~bOެA!u in)Q8r~蘰ltNVKLX$^cI%q(zZ>H,x쐤́m,>[D"9P(:$y{Pr{{Hwh%fRZ-[FLFffՄ֌Lmݟc[TG>I#CmQu Z+¡c9!]%&+> W K 4rh1BDIG?qHUiQ\{#8Zt\nW g~? ]$sxQເerȰrА\8' F0b %U% ,1dsBhK<6o@Qvj/?oՔwԍf;߼Waz5t.GUy:׉hI-+y=8s˶C6}Bh6-p邒Ҕan+ġ ЦU3j12,.}b"@M> iGpqL}iBiZ(L&]t\^wNt&ǀp .rʹ^vO:)lϬ3|Rw^' el9s7(+A0^~\ >?!JoJ*/W7|InRo"{o\K>j zsQe?Ex152f煙ɀ1:Azm]pKrmoDa01Q*d1)K `Ѿ:B(>V!7~}oa_2 5!>Jb/gjZdOv0؞"x V\lĵ:q_'&f3ܙm]aa<L u>j=(k(v9. K8FX_ZH]!Y~"OGS1|*-,, ]95fYQ*F#^CNBerLk,Jtlw:Nj ('~- "DXQY]RUjY9xl&;ިyLNx,D 7,=+oLj1q1ZQ{ߺ/ . "28-ӉGZfS9s*➻ΜH7 ӂv%T-1"ڰEţ$TcBT0 |?Vջ8K%ǽb#&_PF1V+ 뺮By5ʖ-u TƞOEücV|J֕=J84Չ׫n[.XѨk ግ(ðaQdQ0&8J@a@yx!*U .#]O ӳ73qoQɓ3b_iTBl[ J:+ {7Mnm2EJ t{a9s2^Ɖ ̏15F"^-pAol6k-"vi|ffg狘H~Z z } N1k״7%z[ߥ[{Pk/c8N@{q"`l* -Rq C]tgT*KBvjnΤ%XĄ0N@5i64 ~ zst3ʼni5mci ~vV<-:¥G~ j JDḈӭ8{׏ǡUTZRƗZMV-[[-OMm ,i)ǡK:u C7uA`[# Z:Μgmus^Ӹc9< ul0=S?D7'S a77jZh4JDRFM[lX7#_GO܍Ayx4Pըת4M(SE;{EI~OFC阽G:j@ӀCĊ8~6 Kl@>/LEZC&K=ڬ Q`y'!APp PJεZh[(A, p."lVV[둗8Ԫ{5(핻Q4- Df,LxqO @ݝ>ƄSoEQUaaqSq&G[A_H\ԁ<6,.ePKͦࢵ4?x&s-*lSA|Ao+DX\ E#mlZ67QmO;'`[DpB*"ht^`8 ,V!emDIW:ZVˁ+,,,`% }4+wEAe+ܴ)cXXL#0l2p?9 IDAT's-HiA+28cw(Me{ŢpڈڰQyl;(H$HDE/uU/SȌSXу #7QJ]X복uӄOj͖x@hean~o @YZUWjOf.)ll[*śR{IGE9 z=4kҹ8!0:hQ̤ҊJiMV/QB: e Jє6yF!k誎C͍xoܼ4eHg5?uC'|N(SnؖlQih)}/cjkCa(xΥqZnĮo_NĖ)䬍PKg7N*cOo9ݳ;]zG\Wv]b)C:ӳ~gH*rDaٜ[pupk|]@6f,S39frZecAz[n74U1nL#RR 3a +L|-={zl3qBB:ye/#$ ģ9Dzzx[j5ԔChH_Ais8vRoZpWNTδAq[Kn2 VCtXkrXGY9xz>׳Kg^{u^Џ <8Rv2x0j%ju5;/}[$T#j8j6C6kH~Ugj@TZolnVYZ.vz ¨5/rLOOqRy]> b*g<#lWֆzђw' r]X??ۃeuiҹP+/dJ%!eYF% %L qQfiLtk1 v\"bCU3mJq^ b3yGfܯv}AwEG:-{(9Z(vK33Kۭ͛rr/Ik[_a ћ11:xt::tsY<.݁d>E*ʭMecljGi$'Wћ'WlQ E/yf >jlvwZww[^a)e}-C"|_ZIgT,uIABq+jl:rfDn" gB?Hbq4|X^bbu !y$ӳ@ҬO~"\,y ᠑[ T$@^AǺJL82=;OfZׅL:x qOLR<Τ+ =,:^(/gT4ֻ1Ge]edqs't]C.JV%TnN$J+eëAA|7b^nU_*͆ec54lD2<1xęmjj .2ëv꼏a3h?t4 L1*u,tbZm6Atc'J>@q!6\lVwXk8k!K:í]QW1|_ITZ:j\QFF'Hq2{4wQuB=᳋7 *AE9501sĭ U!␫48x^@iD:F#&+dҪn]UŐU;$t|j6ɬCL"+V/¶qsYDV8q!B ^8J:?Ԧ>G#ѪF"e\]U CFSu3u*[Qdcz^Z|MGViԕMFDΠ*iW6CNPA-RM5!/ȈnJ|D:QsU?}ԽM  Mu7 >.߷ҨT\ %B#sqz靝W8kRCK)g23ڬe Q/Bq1(5vXJo?ze B˟?l7 Cff+> >kzFa!E(\CZV WC>S33)LKQe%xE { RGT͆>5>:FT:~סI$4ԇc($6wwLFC HgK!O:*[>[M=UE3c׭XNO~E9zsP cbjщ!K(A`~#^lRr)M(\t|Kz}<$`h;^C!J'GP?JNq2cpq4-=0;79)V(Y_MdDptB:{?Wyb'Zs DBwRԪ!u81;25Q(xtMwyGKHgG Fz& ܈e fDwݍ{W.WKfCG ʙ (Xڗ5Մt8(r c"|#B|Tvp l(R6|*[>鳆Ҕ4siS)<Z9R􌼼r^dퟌ7xR٣-g8Cgo>u d vq8xpC.; KeFNҷ<^^{!~VTAx(Jڨ/NW %33iScD>[=_}䯀zc U~Qrc@wݾ MaYTrȡP,zQ9F3V90*$seN䝕O֋"~Ar#8g@zCl87!ۛ&S3)͓/zx^eL\\c0УF3GH#{Ev&fm\t@8xafN:! -[ Ν٦Z[a]}Υ${uT3)nD? Akߣ5Pl.]- z-Dtpddc{~?Qp>Ɍ G^-ҰY8zܼ'ZRiZ\Q{A;c`ٹ4)VX՞sB W}cuTo@8Weln.F+1^Q\[uXX9SYs6kk5j_h3Vs $T|ɢA xS[Br0ǑJRx<-RdJQ:&|ۭWaүT]ۑCG j537Y[Qϱ7Q=N~5&?܆s@ @jr\05q"+ ^kfpڤ< ~?s\)/g?4*r1*Kw`y#O+u8x!͐rSlm6'=2 $~M>pCojϨgp*.w_pXRC.2Pse gr&q_FJ8'v4hLPF'C57H[kff opX>`w^*UN,Q:!]S{"&H(O~O P?RS|VȑcEgҸn׳6(f^Lt1{Il(=>t؋QhF~462|k5p]ׅ9á+ͮ+)&glpHV&tKsF'`GknS-Q["S,-^xp~qRTlM5`TPFj:2dbL(ѹalpI'{:CRg{=ǁY9 S'9wfz#h\}zRzt/{PHnmjgnٜpdct@eoԑcp7uϴOLX] FƅJxskpppL8(k>.laz u:[Ұ~^U1*at~]||ESgLϦӞ~_hl2@E_v3ۃSFmRMXOf0ɮσÁJvCDV9PKUpM=EρާĊƄtw|Of:(7LϤci3'nSXcrsN'NƆLȟOޏ5t"£(Wm * #679]u͐Q-(=?[6FzS\gKH'ΈBO?zKo+Mnfݜǁlrt3fPztK[wr^=T2& "^xiBW8}LLq%r' $(?)/œoBӳ[i6p` ›qOXiTGy?;Gt9TKiGV ݿ$:gNCkCy1FU{*!Gl~﫦rs^yZ_+gf1Ax0IŌ68rn:4v԰?4b3;{8]^He#KsL{|FK:۠j`ν$`@Eɘ^X}3Tʸb}C*Fwrt|֨䡟aPHwfvSg -ĄfJU7zp[esNڑ9V_D6j3$!+j2?}3){\fTU3bl <:F.]Aݙ07oX9ѡPV΃rvaK_oϒtOWM/f[*_\mf63FjxC*Gwt !Ȯl؝5roNƆZ=iFxiaB,wdHC.\_> aRi*)5^=_ҹ2N98?{,.o)RǑlgt 4^ (v[*tt 㼞2:R)X9|an!6 8ubȥͨS7N5/jOLH'H+??t͋˅~L橥f#Q*6MT9#E#Hjo2y,F'$F4o 94 +fe)zMgNol#pgAܨ9B}s17ܑTʈ\} gT]dOX*C5mBw׎0)}>~q_߀,!-,.9:0=cH/3j\W>ǹ4$eӾYWk}m; 5-TMΞ)s9sL&SB*kg>[OICG;ίyHB!/wDRg22/J<3ݗz\-g,m+m: >s=fe ekmmmYHz IDATDUZ#br\/Z飪mpNsF0&k7|ߗ(u͟%J:wIZ9V65Nj &TxE2: %6HU[##F+?3ۓJ(E w!rzy b r"6DX@ETq8Ci*Mjw: ΖB5$<|ޟ݀rNG'[t*u܀Suh3^o9ie'hln!F?_:=\ y@'l萄3Tɺo^D&+ϷQ&A'J-ǟrx>V#7iB+c!Cj:]}/`6QVҀ=jzy NĶퟣ>lnɒ%)S9h,ܸqfƌhm_$EgGe 22cnJNQ#wx\ފǡ"xoѢb aQȠX8.^:?n&"NJV s㇍iE*%EFx0nowݍfա &`L8tt~XHu/>{jڴuƻw:O?)S. GA.t3Yl/{cJj?2zǫy`RhZjڄ^0hO?:1RQ^ǏDnѶXa"-G3˜Rfu% (+lrq0j Bad5svc222)|cccի->w`1 taaJ)KNM{bb 8b\١dj,Oon(-pNHLt V 5EF/Z i(y Å=kQY CuM1vތcns>SM^:"aeWaaaū}" `5:P6}vRN88閴tpN>L(G$ :nG3rV E[ӊe!h72$%1PkGD>mi,sV$%HIeBnESA`و㹿bۏmRS{as]δ'CaÆ6Lp4}| t6ٸ8-idHө <1*8L !O$UPOt5),23Yj.&+Q_cyG/QQ:I&Si̙s9C%K.uC<O^P'NW8O˙]zgzf܄DNuHhBG'QY,8+#dd,^ jR QUو|51~^Z,ƌMPVx/ 0`-:,~z[%SFe7!996C 80E&#lEޫQPtP̱ Qs & !QDj5(qɊF4<{•<O?$nŞ4ڵW abO@.sy@^Ñ412$ߑbv x>֮]Ͽ\6fX LVh=z^n-[*>!w sA(CeKJMQ(dhZ@pV.{ć Uj#Aے,K -]xJUǂn/JKjg;D]}ycc#1cӧׅU4r`T LaQCxiheHJjnڛvW1}0Bn; {$^_o\snzͦLNNB:xwٳ'^M &lܸѓ޷z_nҤI1B)<ң9~GJcYNOHό( oU m\?kBw*-M Nmrf:}]!G.o`מ[o:W1ǎ;~܇~/V<3UuuuŝtGqqqǏ?2pn?_rF92,vܸq]k֬9 'Gk:_^RGjbsN%9;`:Q5 GtB຿aD 8!4hjD[U0\ԱBA .EB|k)6g3Nvy-ĒCNhGm߾]a5B2q/\쮻JS*l4+>#:gΜtؘ7nXqm T*ζ.]ZO ZP S\#;[*1S)" !VE.V8 cEDG /#\N q7 #yfsb﯇'*3]} ."1p  |=dѪpNظɟAQá\M21oMBBK(((/G~^%kMZp:]l(-?q"ٳgW͜9ЧOK;u8Fc1cL#GKgF^pÆ #3 cĬhi6V^]t&IVٳg=cڔr  7|ӻlٲLH2!=txlΈժ3ⲾLFfBD%t@m& Lr #qSυuxmC BRAlT*rڌeVtlHgUzQU f7፷fuZrewVaZ;0kV=CG૪˖-+2eJ'z}޼yY555oc^y9z^,Cb5 #:b!hD 4HD+ HNp| >V >At pb y'*QQfc"ܣnr=Р5k֘_}ժqid2Y{{U~푇z+V(5jTV5&+++mٲe4&,oXxq?ɇc@R !P(eW?l{@Ō`nl~Bbv8C$(1pXPlxoҡ+h7e (*AE.O>b~M8Q7nܸ5kXsrrzuB0-`L ,Q_EBZ-$e&Ȑ"GB" Oiv㰻P_ׄ9\}"T L6?o]"qqwO,_^z|'v{EGCQ?cw]2{RUrnMKO^r:CI/OjZrvk͓j$|MmD| `* "Ǎ`TmzV Ga"+KbbvŔRx=l6'**p`o>vx Ga6;q|Ktyr k]-._F}ff8 ԩS/;v8q\Ȥ˗/:tPs=ۤIFvk޽nvI3=F.YHycpsRF#ꐘZ$30~(sv4o 4Db^-$b-xͰ@ilm5h$II2tnE\nDrʭ@YI +\.OЇ1Fcq?-yoJjb+cCŝG\~朜D !]!Hꪫ2yWeee/:ujNAAAgxI>쳚91999#GgAY4 / a7Ia ܎0BFԌdw䌘7%v8q:\hD WimjkPXXGKp`_!NBcǁaV*Ӥl~;Y(X#wI@gd[׬Yslǎd9,F1$!jqtZK8%d'6؈ u]F E "uv|@ )E^rgȡ1P(H k |ف*$~ޓ娯3ns p ZiR74111Njԍ7ܽ{o9p?~Xh4XzCpOP IDAT-*bf^QJ+\.ljāӧOuرiӦUtx駟?^#4uPSS`Ço:E?|RzzGOt\^/,v7N4򘐖0} L.K3*TDL w}n&1+oF Uj!m!9I4RR䈉a;M )UeI(N拹!M3e=G)5QJ )[k߿~;姟~uĉ0ڵk:tիFcV?,3fLk63EG6֯_Kr!gރ"y!w00툏 C0KiT߃͠+88"r He& BR@"&J-lǒ2)8fգuFlY])a⬌Xj @ k+̿L ˲ꫮj1clotg̘5oD -B Er2Xh T*rynw'O"9TGQQjQ!4 X-6UwxQT1?/%K"tߨr%ξ)]?;??{N0'={Xmg^stxjR8 fd4Y;2Bq^/ZfU׊hJzifM`h(ZEa(L y..7()EA~5&^< X5P P'hP[ @uuѰ!əO(R$h[ قNJrϳ\x ~1, CP21HK#3SoT)8Cъرo=CPWcqχ-pJyRE^hS[[]8jРAVZپ}Ǜ;{7dȑqV:aXj;zN>8xWļ;p foKݫ1bDj>f8-hh0A&AVj;@IPC[1c1MOi:<_(J%R%6 ç z  f5Օ0J= "x!4:#%{𫇒oYd1'N+,ϫx~37fGYS\sM\. q\ïڸp={{+w^tEw]pBԛîZ//qMjΝUQQb]jU_TJ5\=:x(T%JiiTè\A0` uv цfz@!L>Trt ބ:֣SB (4*2 J( o?u>/\?qm۶|駍3fzgS^y~/>6jԨ4Bsر^z)C: 8j&&&vy&W])c5m-p(/#)9HHЊې,FCTR- OCW$d?H)+EF hZDvt:mB.M(+EeE zvB`1Ea^`pt;e28@|g:.7p+W\2$O뮻R`g>jdȐew='"+'WCA:-sh6PTP4JV9)N7V;6'V;,5uFXNp|"`|7(p{~>~"wwzf&I=nܸ{օb?7h}m۶%uʼn Ҵrʦ &d~Q !0 XJ[6 \.lV'ܗz= j29nsF_ NO MMTUQYހښ&L6!ㅈj_9  ? A N)GdRN8b2;f~0`]y.aƎ_7mt^\PPcgffy晲[josǁΫr=>kM (@?Jh'@IQf )Ptj $vylhF Sf "j.Z!`+@(aǜqL(ƌСCz}yW[R%s= 7xcD#3f,Xӻw9@Cl~y`>e'0p80ZJArJ<b+;;zZ%  K36Ya0aЛh.J{ IĶPi '@a àu=y<+,X!uܹ5kϊmL۱rvΜ9ZBO?j{wV>ȇ }\sM\~~~T޹sgiNN0?{$G'f)&C$@C#޴Z(/C\ :$'!!QhĨ "Sx=^8na;ap`9aa:`9p8ryv{vytzvy"2ŀQ:D,p?<U4\.͙3'aye'Ru:]ٺ .,Dyz h/#C qb=ӍF+XE1KNFl jr ,_x^8q7N6lV'lV}z_argΜy |9C}N.'B t:*+V?B8g= P| PR\ `?EYVpEk5su 'z/RPp(h!\ѓ=JwՄ\.&Fs,ޝE8?2[K.uΜ9 !PxSYYYO?䓋eȑ ˗/7n@e;:HhZ6_kiii޵^Y\\вnɒ%͛7amnݺ믿C?nذ[oj4y4$9plFظqc춅<O T /=XՆ۷F8܋/XSWWpwh4|:Ob>',))QOaرΝ,---gѳz'Hh2dHӖ-[}ᇊaÆ$t.x,%w($Y!t~Kn] .@i(ŋ577;zZ*r\ѥ 챜Ng%ꫯ:nW:X,M<@Q!4EDF'ݻѮ`yswȐ!2kЙ8qtve?$YP_`0غj=}ľ$\ `)aIGy$R꾀Aǫ^x"]K]a&$r P&!7͆ tvqƍ:vWHJI OE]tq˖-'nuٳ'wر _IDATQ\K!;!I"ID !0"_qmU>|0\?bD !#< N>HqIBn{@`ٲee\1pDΓbK"Y?"Z{lꫯ X3[K"$`_~.Ryw,ꪫj8_k-$tB91Dn‚hjKЩOzH"I(#iH.= =NI$$a S^H%'$DvF0#D Ds;|W&@KJI$:6_<IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/opensuse-distrobox.png000066400000000000000000001002021474517124600260610ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME yO IDATxit\y{޻վb#$MvYbo%Mrl;ͶI0a;$39}f&}8ٖ,Q.q'AĎB/w>hm[ N T,]}}(P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@6$8zd4,DlhC|14 BP?ջ /րւ'Wk<W+I&JZyo}\@t6~{T7 KMTH"=@IђА@H $8-8 NV4[u4Pͼ ZtA`da,"k6}w:@':מJhL@i2v hɜ{ŗw[5.Kz{zՀ0 2*ZB I+ZyL?d:.h% -6؅җ .Z*"`ŗh@e1Q_Q(kq?hhj-ExZE|ωBt-q+ѲW.`HW|4Y5 h9EE؟t3+Zm{;: 2`/d%r*,0 Lg@k8(ost4[jCO{E A_ l_| @,8KM`3O[;dt"}!e" 5U@*8C|4h4%-zJ,|C.Xw-0"Z}'ݧ0 *Vt 8<(j5rש ҦxՆџn9ggi]I+3?x~^yFi>tֿ.%o>A+VK)j֯SƁWAiW/GY x?1Z;Q;v6 uA{O4NKu?C|v4\l,a>kXi.t^|G&zPN5llqvvCIGX.Nӕ٘e.J _nPWթBur5bcڞ͊;f~qݶ~NO[D^#A9O]ӈU,gJ6{H͸[;lĆ;S_hY[ڛ.ڗR#W,ȍNsT/d|D장lQ"75Zҡ>tVylVN+崂|i-bxJK&C䐿=}MGwl8%Q"jC]WZZk57T+ޑ\ufK1RMc1Z}1SAs?x#X5t7ح`ڙ w9ayKx~noBmv|fkNOmizŤ5|₪/Z{}e׽D(놬ciW駬 斫fUWEKצ:Q~ |_{J*԰Ohyvt*%Uy=V u{e>ޖFX(lLO,LrcT-4*ƑܳoZP ˅{v,/}G:lVbȕ"kiu35b7rgO[{#] KЕXϖelᨼ9?E/G5hox <tk(64~VxoP>#u&+I,' 'N'_PGM՝( `o#Wt\K:_|g꥾L+xJ4ZWݰWߡwn(omwSo%O 1!du)ɳ3zc=2_JGv(ܛ]QU=W+1Dq"K赸VVGQkߺbc;-+J֤ߍTWs[ꚱlr'>ͰaHJwսXG={nKV2}Dȓߺ% M ?x⪐WJb7zW5@zeSYA2]\_N֞ӧ ~5Xڪ/#yӶR[߾̛Il VW 7욿nrrkzw8C+D)nj8PܞJ Lª[l3uKfן٭|nV9y#|UޯTo=[m6l#DfU6<7xMWs:!͟y\)FΓ;|FhUڱFooyudJmfXWl+֪{ӵWëףhovgm^̛:=OZ% +Uр {|m/ka+!9hoxK|[M]悪3SZW r@<:_bKϢ=( =oD%6fRQ;ݚmxRsZ4ud5G>9@gNkQG[,U֖4_kg ts[= fИ6<]YMā]h#mo'}>"Akj962+/R$N Pw:3WH'gk ϯ: 0vw6vvwq­}HGz¦8~C̈5q$=>Y>׽je Axw|agrrSn8|㱝yw-;=ZiDzP&h6CVwl[8 sՉZ9VܮVd>?im(|{ߡi*r=OCp Ycg"=V6RmxՙꛎeR[Ȝ9nS^0yu"pRڠѸ+.1Yow 񈝌K)T wpM{x%*<3Cc~!3s/7>x6tzt >4Ѹ?eL8f4ȿ BR eLdK]x Z-  k͑>?v6tn~c@/ǔXc_o_oM])zIaƜmXuzL<]V!c;@::k?COXͪ:{3\sWO[9vߠ,CZ7].y(#b'[R6\]0W <{=_U謁6|&lcrt6.KtOvIޘ|aʍ^_k^WxEkA$(ӺT$TȊ}!\ ڨJ-  r/v|/f7Vm6GeZ3Vj5{3)ݽsFgt n9_0$cFI8IҡnR^2^ҡ^bv%"% %  hSZF2ԕggXxmhQV%.4_6\7v|=Y%iCDYZcbGP}ُW?t8TY^s)lbS*bX*F؈IҤB][Ȇ GY H ş6|F F5,Tk*(uctٽĭ-$>N7Q;N̉ H:$B8F4XX֖Pϗs) .|G{T9}J?\-掎kY^zqjhF,ZI\_3_?KvMM'jm% v m' fY!v'fipzeB[Sln165Y~s 'NXox@iuꛏt)O܈S=qVĄ(R!3 k\VSpscjn mKi5Bf'Ig;ş0"8a3`BŒm#٫74ȉ3SjLthJui>-Z,=6lɵ@J#-Jnb޻1'7mVk#`r M&#2DgxD$ab!3cF*dnSzO{&`E\}%/]/=9OyHDnaEC4Jy`:p"g4k d[&(}*yrS_P)ޜyù/$_֬qR;ek'p@TOLWF".+R@DD"|˃ nDH}\}GXi֚ eb*kuK%T4*s"Q_0 ;-l_F:jCUVĎ9w k>plegO~(Kwi2+0#(iup:)PsKXTZkZ93,&3峼1uf|]%$SNͿygG|m ׫c0"9ߕU w& 8irpϯ''uys^TK2DgoJy oO^2nz&vAδޕ|EtϫQrh4 L-BE:3[;I8ZyL?}OL44Z3gӁ.#{BZ;uZW| Tc7g|#;kcF1EMJ5] 9nP(5Oodvi.pj(g1S9E]@AȌ.XL3kٳv;Wû_7oRzٿȯEt\M+ 5X$,~|swB)g'Yg'v2N.bC=yOKgtVz X5: #hjF3L:LT$E&Mgt+ 3؞_v|'qk |?nڹj'=WNk.'w| "Дk H!b!jRc+)=x3 fK̖fMRsXm~_gxwfw=ϡZC͑b0Y>Xd>M+c&4f|o[\OD ̑gKZ@\>"nPlR?αR!ҡ=Ee q]j;YDd78"Z3[=L oS1t/v l%*[YOB s{f_҇ WT{ Q%m|sJVB&J€E3Y~ccdEf*cTU&zQN.V/&DڤԜa*Grb3QJ"K-520E"vV aE>y窗,tny s|Z ,^ ġܓdrbc22a.X4*'qz5jx7ʼ;I}jpή$"2#$tzlOof7{/~RcRc>krc!>͑ܳLG|CZ1T] 6®,]Zns|풂7٥Pݪ}[8t5.QVNs"gct[1?QLBmC3]81Qh4~5-@՗t] Źm@4o\uх}\FȌa;ɗ@2cT&Uν7J^iD[jxxfC_XC5!P_\vԨyUG+T4 !+mD@ش14-r峣錯Wi ?n9t~"W"nfXZ h ([LWG*N0Q#_\v Cm$DKF&<`}^ƝfZ擷|q ۾(ۀ/^9.UL~|嗘*"W#_Sq8f o*GR*Tt6 -px8w#:v4o7^9-?b&U/TUN!WRoPm&)P tTGXM_O?pe))t ˀߥ ""6Z|' 3Q:Aޤha|nM dL6;=:@?=pv:7?N8,@kf`Si8]8jEe>Ĝ70V_D͏fퟻ(y;k?ގ `u>7=Pӯ1U>ı*c8FK9B7YD$l#x 6C )ȓw<;$sc(䪧9Yf~ C"v+筩ʋ#y 9?wc;kvoy0;ρ٠%.T\FW W[ULjYYvrB6ȹXp0}k70/>nnS@_]r-j-$ h%`J #c IDATK%q4E$lf0T!!a(Ԕ4SO"&d6xD)4J՚9Uy%jrR2~K4bM,j,Ճ @K;i:#Cl3TӃcFTùLd5ߤΓ1[9luQQ\7Ù)%_Пlycۻ7Y"v#Ёf=Llx p7*/(xA72v"v tp06Si[W'9[|3Vzߤ\= a2/O婸 \[a8s톨h7m4GKϥ= :^}! r%_70@&n"7Om}t'ID$i5-(1a+NI wt` q ]Խ_.G½|ȝe6 r,e'ne\`dޘ/M ogz_EAIxKTKxg%ai*2VzJzRQ;,7eiJbrcQj5қ6_R!g(6κ03u o>:,inբ> OqK'\,#W<30oggB(i,S-NQqvdY 0I*A^"WuLQ$I{ ˊt_B}fzx<-`JIo|{B `Z^0 B՛杙+{:l1{Rsc]BW|EE^X.:`"NtIT̔pz$p3UƮu'w ,9w-5!'E%gKszlM"nMUۈl#Q|V`W ܴW8"(オZ6ZĝTq5vɎhVzmӷ{Dv6kew2Te\ rAJ]wF:܃ZXe0uÙUw@-OQn̿g`L”k񙯍spr#ή"ls$"uC:@gûVHZL8q5 V+W&tؖGXG*c*!jϻ =|uv]Q!jG*!˝r] :5FFILCK@G3WNUȩ0!dV`՚4-gl *KFI"yǤ9 <>zbpJǭAffbJz&&tlbvvi yj^6I/0__8W'pv1Sje"fg(RTYF o2_\W4!2gvW2<@(+dRi%id%0싸^s߻,sle^XN7GYy/eFI#?@~#[g{ا tth@keiw\m sM1}ߠ5ŋAQn坙8>2/j9ޘ t_6YADa67XEf˓4SӉij=߮ƗC4t-z#XAaq ~{ca7yD-wޙzb=zTiW4~AFu_ gx:rM1"5j|YIf{5@g:,+פb`.OџE*AI2vF]* Ͻbcؒ΢hwlJœ.`GZcCZU4$lC[Y{ЫmnyZ;@l }]Y%e(cv ^ckJLrlq/_T%f+8]xϑDg4s]IŸ`2Uy n"lӮ٪[n @:N+ w4>Mdm:*dpvluƊo!b`0a+mO-Su~k,#cZK.8ye7yj Ǚ7{]PM ]f"<hHE}`k> t6sxK>텨VIj^yF㢵Kk -Ns,;ղ+v"LVd|:zcŔttF[ɋV]{3, @mBN1䮔w6V{9ѺeմQQDhݞQnWd(1TqO7uMǦj,U"$DXW ݢ``ly)ԧr ~b֖ W: gH{khc^ifʧV˷J1BFH6 R_և`"{Yb:_c|s H;Cwb/a: gy=j*TՎ2p}@ i,8$Jc&@gWMrՉ%(N:[X몥O[9ir:c={Fn\ut1PBΉ\(c #:f)MTik֋ӺNTrQ^=kNzuy<5v3}ɡ%̗ ^wQPԽYˣcqBV،[wlk`X:Af Qix@rk0^G IW^ݕF+]3o[}6,T!+X:Yq:k̿DQ^'C]l\A_.|][g`(y[%@dc|h\ER ^tKGab6c:XX# nf Յset|uzYv|^G~uEobrg Pzk^(fb)e@2ÖN$]l%~ ѹg[FouJ߻Fra/'b%|lycOU])6(~0 vpLW_rr[gވct+̕elM}[>NW%kJn-'m21Ƌ/mܚ{~*:MAG0 T"̽ ԆST}#tFrd* sQF +6xcDؑD(Mo|7'^e#fk e%.p62W1E:ܻ|W{צcg1B>M:A6}; z~uZ7nS,UjLqa:?vFW-C]ũU-y[h$2)N5]mtDҟf0)*G׏Qh(Ǚ¹^:"".6tGvЗ`zHy]&#<3_+=Dž5ߢ79tk[7n+-x@Ik3/|wE 2&r|5&+/SߵXZhLjr1;l(13^vd啉V.M_^[`mDu1;u^;TpziU ʍ󎏪J{&B (Y銮ʂeUWW⊢.6VtAuŎ i:>(d|s9>sR_J_lSK:x LX# #  a +ҵYvsQ0kM&KbT⺳G֗}Hw5G _TxwS\'2z"6 W\2(؛ᄮҷqCůZ#d ֫QPDد(J~f2zcI7'ΖB#n䖯"s*|A%]xaOtHcڐ Ѱb,u}e9UÆSA#"JXT;]Jqpң(Ǧ@l*#G*NMmFo=[V&V?bP6$[AVaGT6|at]W~I0 l 8, '8TxJɯĦ]4nHWj)ntMniHv1SVVFii)555H)"))$,c+y@RT(R<1(7xveRo2£5]JoIQaq*B%͑ELZƷyi6?ǵ*ߖڈ#KI8aƧװC6-&53Y &tmiXLV̪jŤZt׽ubNr+`{巔yr;#FnB-h8)}'b,aڵ˗t!Cp3p@233Q#_.E_lUD, IDATzeO 4|:!/ʀdfJo;9k mE(dݎI=Tҁ_(PϭWt:5)tm[<QY$[`9B[bZwRFk+5[q0#eV@b qdƝiy{2|{1κk3/Y%Kp8뮻iӦa7$RVx *}; l>d N vS1kְ HsdՆT5K~ؓ+OpP?r/~̻ b ͆Mch @bx.AË.=2Ӑ&O Eu[jzn矫f<#lܸv:<#̛7x/$&ݣSHD QTA`7H`FmRBNɷtJ9Ɂa%E((D{sNfV늾d3wQVR'(]MM@ Z[ZTٗ"qort>4+s:]3} 0P\3gG$4Eo&+B ԥU$Y{.<şFzlkZQ]@iM֒[-(*O2^0HmE- EAVZ̙3ywkĉx㍴k^̟?Sֹ5p0̙\֡[kU /Q,&Lm۶G?ЬY3y޽{ٱcm^qE RK`y+/+["@o867yfWPރ*@S?)fldue\{҉3"VUM ]z !mk]fE(Ę[Շ>ӚmB7jq=K,a̝;q8L6)Sлwo4v?,֯_0gVWc43&   ~끱! Y?R MjT$OvRbX4bj0!2TTR!j=UP(7RoB R@9 Ze>l,ZԾ O?O`:G;[BQ.$//yyl3Lyy;Ej! 9dkɑ TDCfjqVOI?fCZvߔH c:ԽuUf7@D4*=*VLG%qٴ?]"~ ܹs'c֬Yu:q ?>c+ ?|h'-ӂv'a=sW '."LXiRFp9a0(Bê&cjM zЋXK B((W7tSnz87Q\G!HH׫ fjmUذi14jMFlgZ % VS&ń#劊 -ZĔ)S=yiB2?t A#7W+PF w!` P s(ZXkqLqش8db-Ͱi4Uä0V&;f~{5 і7̘1cܹsmaqw;cԡ>$g2ەgj4YZ)Ry8"M~ҍUK"=7-IwYLKE>F",Rǯk"A#!utCGJc)MjM$jâُ*prϞ=L&"'Ck6cΥU$EJ&棏>f˖-<.++{wK/t_ӉLqԩsk㗶 h#UdƝG˘$S$62c|駇>'_:94sMk':&WB;[CaιW'=#b|/K]j9eRI0Єu_Ejݼ-9qW7z-{.f̘1'vsY6-2>rى[J 1 Xnv ?{9hHALJ,K3Zv"3L2bL/EESLMQSSÒ%KxYn!kӶ &L`ȑ$'%Rs\Z^|cPWjz@-_EB0V%d$ bVX$f;6;-coMCQCl@UV1c {:+9(:;v9sO: 'U3,lwϓ%Y'ԂSslhhA,tfrg_^#]]mɉ^z'xcG\n} gZ0~aC=dɒ<7:C+U6*$SD2 1)D23&֖TInM-QbJJJxwx衇(..>q%.#1.92-~wwU2k]+5*[9T "TBD ##܆xK& [gM$Oa+}v/6m~!MۯgMhټI?#{vc$Ycl̙{Li$ln,i)N`tDOu ґ2 U(8mIv ڎxk1vf;6s46S46*,7hX< u ޻IngWTibڙ|.?cRm۶kҤI;s8+%8HΝK;Z5WOjh;ԒPďčIkiO-q8,pR2%b3Ezt). D_cHa~}9Nu}8q" b9S}GU9T?/-siӦ8q^"m@ ]f;e@*"hE8bFS_CQI1̺ ?aMU[.]^8YmN?ﷵ% =ۯKzJ}rDq40aIf{a)ĥDD.c̐|BV-9Z`֓9r%r u36ocT DZZW]u!nN'#?C|r_?/ qHr,Z;jԨ4{$'F^RbBsFH'pDu/<; ^̚=9g)9t_~\p~dggzpOgu]ꫯ㎤, `/:t#J-Ù#"A}'e,+fpYO1kDxw<6c2+?]2rHC.]h޼"_.I&O7֌3뮻O?;ǎrryye$ť4qu{ȯ~ot;{ܒ Bp+0H_ H{85NcqѭwMrE8: gp8P4 2nܸKx׎ XUu3Њp$ڸm-~]d5\y=\'lt::4(_ф0ЉC9؊ sXTF\rz,Z#F}-Xx1]v=1m3y5ٽOux<|{-.{mhݽc!S+Dpocuoڵ(B6m=j_$vT:v޽x[l Ǯ9rηzke]W?;͆&r)Y-u>K?sLٳgl2mƌݻ|Ŋ[|f:t;eggTlT>p[%R~AȩA f3yotGM\3b,Y=a-^xcFFo"XX‹?e/z׼.]d !b3q!C: jbDphJ2PTU{}_ooB;RWj>j׀Bavi;:dkM-D[K hQﶟ!  {pp*pʩ T TT 8 }DѨ!O KS>j"P0V ZgI%֒F5[ T )bBSͨw޴\|Ŝ}ټ<6-ZIJe5jr GRa:ks~W PEx㍻&M$[l)h4Wq' K3 B~;R"$ٲJ$dŬ1̪ M92R2@F]1 1aHt p* ~pq*pJ5Ҩմjz&<{ET;6-)!ԑS'ڔÜB5XKvS&Ռj3&ՊYԛ&%%qm1dΝ̙35d̙ی0ָˍu`A=< $eFIA礡I=Xkf5|PЄM9|4C ># z4tt *q+p*Ux|A'>݉_4T UF@⩃_~76f~[o`:ut\u̘1^z} _Qk([m_# kv8u# %>4o[6ybccxHNNnۓW_}uƍ~鬔>Mtf^Pu[!yVꝍ.џo]( j#)[o0q8q"~Xʋ֡CKnה;B%M8}fB.G@>Դrq[=U9Uϩ/ѣGgϞ,Ez<_tӛΝ4hPiI'<4 !>^%^O}G~ܴCۊo+6W _ "'/T7_̸q(**jsDŊ?YvQت9w|mrKhs" Hm@,Q.]D}5l]Ow"yrk׮̞={{m͒xi|Gz =zM߬z3N8!HgMA]UJ%ai'R7+߼ZNjw:$d⦛n^ݼy4iUUUq)*ukgf5oh<=CQNܒ&zl֐-~~R~D YT^̲8k|\')W_ݜ9sxGp:1Ivݹc̝G|-ܡKǓe.NCl"bkM§;WH!Óq2}͜9ӧv7ۥK#>3Lp% "_p@VKH,IIYf=#s1m^-&xPVv n~roV_-UU1b}7i$ΝK ȌΡgXK3^r{¯W6W|Ƣ}?R7E C\ve|8fcǎ^k\Npx0D[0Ljyo)#sbbݺu\veL47xo\ x7Ypan|›' <1x[˲-%D2ҧzVپSXᮬ>3c/-mI"Kāa||s8oߞmҽ{wzq:=QHyxm3aYHn2 KPj.E3jIkUɧ[b)9qt:Yf k֬Ϸ1l0l6rRJiBJ)njUUl6[#f ;o(0V 0x=j}zg}[1-cUaV#"|RzQ!5.˕v喔'Eu=9 ?裝Æ h:K',@+t ="N-nv,O\7{sǶf1 DDT&E!++ MUU:=R7N ?3*t]~޵D{4;@9./̓!+&~>xkHl=ϹyzpW ĨU27*"zիrrJ'''E{dqY$ i)XvmǽC)J:^3zq-&KR yYu='*[:?ƚ`s܄*cAC,-z@*kd.4 ~.ByĶhԂM.?RA5@UT>or@ {bDPz /]NW>{5:!B8|";L&SrAA'&&nU,((=2f/Xg=җn1c֮][D'n m) );5 oT+{+֝Umb{dZuISd=HŒj~޽{W۷EnnnsUUK.ӧO#!)cǎ>e޼y=e!2av]P*&|" ܫmnw}U+ş]61Ȉ`Vm戸DPسgϚ~MB}YQ~8|O?j-֮]{o`ʔ)F#sxgYLx.#ljQ. Cl-nu{_؎Uѩx[~"'~0`@m%M|Ȑ!wa֭[W~7իW跑#G1uT]v箷vNΌ `?>ޣ2B< wV"5ؽ)fI}(SRe;%3'EeV$8TE|?vܹa۷oߧO6m]wKqYcyw{$=zϚ5o߾%M;'j9e,2"ɟ#wڏ*5oЛ ~.y˝`mW)ikImf-дH5><~7ΚjRRرcAҷo߾9eʔuǏ(!.]͐!CQ5oFѥ^y U/î$&*I>@ Pp[#mU8.! )H|AU6-kT,1Ti3EUDYk`KZSb j=. \rOAUS. xEr_nҿ= Q&f~J^Kȓ-g?6B͔)Sv6lvOҹ {ĘMAn6lذK.F>Ί_A}cJBn$5U=V5mn%mMqV9lU}f\mfU3f͢UblEMESͬMS*0 %Ѝ@0h=~ uz _Ч~[zjqܷS 8yxf]:fA9;>j~]8|0yзlSDϝ;7 ߿i*O?BY1pa.[d6t:=zk78P>EH(1ni4B RGaxUauTUM֭jV-AشxŮ%QZfV4b4ŢB0)&fn a ]A zA^+ O,RzE;qB3cqd{Y9{̣NA VBoNYj~Q&;vl^ҲeˮƖ '4&?2zիW|;P!c% ^$C2@G>RB!a< )@X8~7[)frǭ4DUx<5caa͞={_iZ)B:r[Ony3 zO:8!/%cAx_Wɣ%uJz"c&5W\Gv vOΪsYQg 7$0Pli$ܽfJ" 8C"J+B$ZAM߽Y=6-8rnmt󘘘u'nku̘1 èkVnFkޥE#H1$-8K 'VEPU떔vbaԶjժg):thln!?" XbrՇXL>:M2m\^;%ƮHE|  .ʨ]>jR\qw}ޞ={R%*B: m޼9wƌzӁaGܳEהR$x<#B9 lӐ{ n*y뭷n4iRTShMtsxV]GhBG4U[U[J!:!eGЦӒ*A@AJPw?w59ݻw{Q&@:r֭y * m?S;/BtN_)$B ҡ*(jc2$k J 3M4mPTۄ$rV4ir-2Lב GY'O.5j3---3\xNyy_ɓ'o)))&0clٲhUUU;g̘.::{JOdG=/Hhtt;un{&_ԣGÌkDʯDA PJpYg}W467 >p$I(V3"hB$R@Ǐ/ݾ}v)cٳgǤIv՚Juf) mvv)v=0eʔ eu +555%s%!!s8">&< sL͛W?|>cGZ@'кu#\D3݇#Y&0 ]J)WZHI>" _~W\6X"8L#7vH"X, _y]{HI'==3{M&~=\B" E"e#t wd"  V NRoDp`Fi(a v"e$Y! E`ڦx,NDf1ؑVYBK+ _=w@m9%cC44+p$%IOmfƮؐK+DK='!.G&2I89>f}IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/redhat-distrobox.png000066400000000000000000000360141474517124600255000ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 3Q=+ IDATxwSևߓ2J@i*E*TbT ! ETzA.D Uzg(3':5IYQf2>{k                                D!(8R6(Px=8}$igmJ5GԳ@qd2 lENi6[r3gW *m@5rv`# G@8[dlu!6z偘\ Hi+uRRT]{qt~~(- Q-&S"9Y, !;i*%*0*VMnPhѓ\vC GO>d+^,ަT,ꋶ=&pZ`0p핁2OO6%Dt{LFz] ~|+}՚juQQmT^΍T ]i;.!NX[8@д#6nM+R퀉@f}|Cs ":.8n-K8Y ,NlQ> ;e ¡?u~DӖٔJ(i(ЋK(ǰTy6#] 򹠀>lNyȰ;VaXeDB%6)]GF#$ HzkUX9 8qm&9-n0䉾"8!8` nw/RSHVNWFX]_iSmJpSPo,Q(wM(Z9f+:q2aKP]f x[*`T |3.֯9[YFC`M&` *%tbVv 7!xw< z X:> -]D'VNltPȅq0fh7":$5F+`A ȸEBD'Ab9Bި̳C VV9k%䝲DoflP,DBY!#\ʉ4w! ]"#\G|Dq512MWy4A B"@o2yk$!PnT%. rAE":WrLH3%d4? 2":WBׯ@~JeJ+SٵKC*"#O|HFB3qy,Kq:m2BFDGt{DtDt N2.BQ6udq]7! B`&ƴ}"h$VDu +:)(U{ $QNqfӀ{ְBs-PQD'܌$3#6j8xn" + J}hA PEDt1v0 JNWq3PD'قM.-f¦N8ŀ2߅6{\\X`(u=FEA(l*m=.¤}u؊Γ <.s]1Rt f&w؊N tTҽS,ʢ!3\E~9^`# rNt"""L@P[I@!(Tv$ \.W1FQd Fc23CW؉R*p1`$#u 4p 4oX;BQUo`.B ,:'~tB҇?ItJct{n` QDtDt|.E{b!S \cM ьsVW:.pԵ@ǫXe,!0D'd+ #bF-(eX߱;S@e&vRY ІALyHid+ qSӢmJehZ JH (](qF%(k Μo,WM0+7$סTy`?D8VJzWxȣ !=mT rއNdDhnpk9k:˿L/>"PG GsivX Mh&c 3Exΰ;EUs:o)`h!j%d4{,@52a S6SB&Ej|׃DL-d>"2!MYN@+Q1p/KQ<"SwK050hAgkt 3,NI_|@ *dDGtLt$OX[ZT~s` ַtIT/eGH_.*n7 hi aџ 2ؒ'P ɑء,Fql(|8 )F7b08DxC"mkN{[e+{Uf@GqrNB//;<7b$T` `VAb=|4 |Šl29[,M.5FF6dm-CL'0">ai|myu=h^!r*/\ yKmS~Y8j@|GK?n״4;,FKtP_k4XO^ )(DZ ip2^Ҵ!DM%rծٍMW ?wN`.8Dx=.v8 q6.` y̋nc""=A}j%8 U|ί@Y=/ |Rۡe1r/& ,O IbnU!+B13(_YȜ LABpu6`tZ#4mgl)):0h/5 ,`|Ȩq% VS&E!߇̏!&'c]HLU6]/{[@gNg0H֧- GhFZ1.p@˩xco²t)petP eĭ #P`AUSH FBp$G<5XyW YDuvp za6lx):&׍2џ+zԪP]ĘbYS c.=X:$a$~hh-"[x/S _tԅ؂MRi+gr18*65WS?Xi.B~)3URRyl`ZaK (2\S< G=kCF! y8rJzD#OQ@,D>ڇ`zReTp!-޶kZI-3S>*| LA 1!7*. :9pϱQːձC3Af.X \ʝ f=lUܫXk1HZ\h}-L8Q0) |o VvX]Z~b9ݖMf;4YRҴݮLp7mqBӷo_j֬je׮]L>ի} X^""b7&? O-=49 1)H9T1c;vdɋ7Yh>h1 x g61wHBnp,u*%S#FеkWTttA͛InG[sSOksAVw-4Ν;ӧO5k|O5feֳ%#Y8Lt{+.:F`zd I]c˚:"k楗^'...odL7ϲ< <(`/pj)0i7AwBrɰ+շo_l6,Gr2+>[+ tpQ X#m.7i| \.pOc/D J+\(ٓaÆQb,6yQ9zoMc̸q76 s@ lMt}0. '`Y gfCɿ1lehJ=z4M4joMؼNe̬YY>-#ϧlDWk"Ю,Ηʕ+[oѺukJ(QJKcӊ7v,s֭0b>U]j_t4-ƈ["C rShQ ?NŊ Zv~)cFdcRUWxxfDE9Dk&ExHŃ3SRXj Ƃ]"Iwo ,'g|GZn"1Ʊ5݂y]Y"^*Pg":Z!Aʐ% Rwc :qp !eOr-+sgGmoOBWEC`>)Wx `rB; QI+ȯAz6aÆ >x Ru/[Q`͚,wm\BC_1@8+<1D%s.Y?~lI@2 qʔ)kFn(V,?#Gl߾,;3.o±MŦTZ$ .4$u^ L {fȐ!TT)Źx~ggϫuړO'm`Db1v OeYn…م:h JG"Nz q3SuΑ:诼 nY3[ᙩ޺ϦMcҌF*4@O-GGkddfaH B/1(eE-ק];-".N8lY+Vd@O&ٞ*_v(#'ŧQ-^L /M]+SF d3ǏW?^c3v{L "bhs)4mF 1#b+1z}%?4oϙ-CdllH˙#GȴۉTkt4U7Νu\//Q*.At}ia;F_>Z1ϸW/bK q8w|‹]0/({5,Qϸa9uջw_Y12\i ucc5RSor{~(H+u0iҮIKL$Trh>>$d?2O-x㣏(]j_ߕUx'&"x b(ua7J{ 8!٢c9%oO>I |$wg6m̚+8p} =(]z->[2kTR jۖ>{s=`89s4p`U WxGt g0*e%dJZ0Y /0dLAOOٳ߷;v_Y?wUkVcUh#,+~rl/MN݉m~r9z4ϾFϛ t0\߁&kS* d7-[u6Zu^+^JGDՊ)-)p*ԩs aO?1טyҤ/iCwޡb͚~ݴDΛǐ~8pd1*R:%a7"s4@cY6U0l>@ȓboiY1͊}4[q45jĢKtt<\̞֭6 |pY[ּؿ?k:6.]ʻ/7;wou-4u/v?fYv,v*X&0b[+%?W?n+/*вwoz++V$X14RL.zz1dҤFIDATv'I8~qbŊ[oѪcG.߻z53ƌay: Ni"fb״R( x94dzxk-M'|Æy~$Ƞ~zTkؐbebn>oE?bW-)LĘiؕDh^ٓG 60pJޫgWWY4ZlLnXOR;2ƎG!.ғ\|=e 6+j7qG},??NM}sV-X_'|nwȮiEQEYzXh|~}--[b_g?O>y+٘1<6x0Z~)uUw&#-Ƥwa~>A%m7N(d/0` p^&M3y2U4kkKܑ~Hc/y1]3s&1n^ !X?0aeY6fM08o߿S^b%*ŐQRp3׹aCFOp,!|=F1㨇E Q6c4E]uFf3Lݏ<ݠ|T&MNK^jL2w.eeFO^3{1"$r_lM{YCI`ؽƌ7z4i}F=zTT[7@|<'aCr+O=[_|?OF)uI\Cj4`,^g6{95bȑ9r$h*9>}Ԫ0 N Yp!#GpLV+j׾߄`Mhs@`,AV㏬;Vxxnh:V&G\A9sZVf drn>,8ҮMTbci[exU(:w;5aՋo}{srk &ePC>aKMU6RlF&s{>GeIJx|@#x'鯿ҲC|9opĎ7`7g>ý?իyahX*jL1 ^T_W? _-[Ҁ56Mل =x?c̛6S$ޡA~=|BM]-vvlevSeIH=0ӿ'M=O L5Y9w.BRSxqc|6Ϳ1_r(f/_N#iX?s@, *.{_|_g;~s~ Of?rٷq#>ww`fI`Νt}bm6^sؔJhͿ#G*†R*쫯ӟ3 ӮU+у?]ƌ7'[=իeҩo_^'yO?ͮ5k]x8aݽzL&x ~ڼÇSEtr/>' nAOL\x#N巵k{A^I&͛GM>p ۿ9{ݷȏ?βiNyF ~^W?k[AOzz Cz_2:!=&6䝥Kxq|f<0𣏸ۙ?u*g^Gr2fo^IܦyR8ccN;L\ R)vMn("v/a[iDҬ}{6hs9d-tI1dn d ||L Fѡ{wVTD' x/-!KѲeڿ?-7YxwtN">s%w/ٓ"ayG*z+90Wmmy)$oؐNJE|VB#͇Y1>>o=`GD;Z8߇NBh&u,aŗ_ҺJB^wz+Wr[́gtZx\.'Ry ` K}Z~dl,v_}֛+7TуWq0\R^D' (x~k :y]0}\2B[y];v %+-SMx(e_إ ֯ӹmDtچ2M{'I8,6&%=ƒQ~}^y].]Sw巷P3ָ1%8Dt RxnM$&PQs\j9_x}{[xsL ۴ay0u*-Vk/W&0맟hޱ#ָ$SXlCOCƁ\P#yٳ>@;X1?<irc>^0g~b:H~uߢi1%w։#ˠ}{Ͽ;snj~te5~<ׯO22yH4χ3H>u@\z?Tn,dN_1^CZmDwI>4O.I}ǘ^H-`]V[^к2H|t=8 ,tDHe-< ¢it>q}G0ttbJ.˅{UfM!`, ;1c+B0GDu@,@WwD+ŀٳ-hq6 Eat `8v OfNw`|!n$#\|r`O5m(J܂qLaT~cҥ1r$uVzXUF8ݛJI LR<ޯ) C\J`]ӊT5u y7LW%vd.{8t#pcf̤F4!Dk_|1$Etsz{\RS1(U@i; l]WݧsSOQ#J7LR'&4EDxZN8OJˆdgo*P5@U:lNZ)Vł>hgwS FI&m۶%V:ԪUޟ\[bbSNUVH]Qɴλ]Q(+>1bD^ku$Q5Xi@p 6LV͛*W]s5zZZږ-[IMM 222TzyÑpB{n~j-BDGOM{㽮u9By׬8-#ͱ^sĉE&T9qĺÇ\r[o99lx2׬Yo߾elR-+#kv l6NI]k TZFbL&Sd2e"B7o~݁fײe4mڴQNG)\K6ׯQFrHNV^QɞGn;߿4bѿ{{֭oNŋ'1-[\kט1cS,YfA8|VZۿ5罤qԶm,K꺞uV>6nxiF=ǎk+Ϡ Ѻur߸q߿#MӮVM?z_~9?yԫWĉO6o޼luտϤeŕ k=x஻ᄏɁ3fA1LWr\lm'SS:ti ɍJ \.WZz2\:qwF](8F7dȐfsi7ߌ?yG}􆘘k}|!(6<֭[;kulZdÇG#N 6:R$7ӭ[S[n6|2KlG$āKW,YRI&70qhW_}K/Z9._F ŋ~uԩi/t{(Lq,ƙǕp:oƦs%O8W|ٳ'r8GZڞ~,7ױk׮RRR;˕䳤clA](u?_{&}֨Q#e޼yۜNgra]wݵ:))o l߾}7wgYđ 󥋲m۶ɉiZ@g޽^zBRwuW v꺮x<Դ"8ݺuKg#WFb0Z+_4kժe_vnNw6n8ZC>|xRJ/H t]w]vsFN]sŨF)A [ǏٳgOnܒl.S 1c~˕F9rdw>}i}zȴ0jdɒ7|s_BB^.СCwK0%99yG8NRRɓ']t,>7H"RPIeddӥرcǾ&M 򢓙yjٲeW~._V`'J *T8v}Er~cիW?ʢzm7h`o6׭˸ =V` \4M=z.?7 1q8q/ddsi(T-(Œ9f̘-IIIg s褥%O:Oɔ͵1J֕( p'6.W҂ v9Γ":Wu,_Fsp;HDG[,]t9q'UD矸cΝ;~9`7/aO)`]гw޻;vL)ƢNHH84jԨ}%b.!F{A.&0+'^t qڴiMt~嗻1eu=`%FgWAу}Svf͚g/^3333#Evg^z{&MNZ]D?AWt͛7 AWM#5˂P&cxrxĈVJBAtΜ9w=8yL`6PY z%%~RSSO8Ujl}5"{,9&;u&YdvIt<OʦMq9xCSi X,{w={vNaѣGvm{,`,RF 9y1bOBB¾@CX]P]n .F.OdsM79fϞ5==HaNff lW^r6րYn V.lpn;vlA)ߝ:u:I[@o.)BQxȮhgРA߯Ǐ?+!4`"pNA*M ט1cv;w̕>=555al6[]l B{Z˗Oꫯ;δKDGυ藔p,Zh]Ŋr'qA "0N8ڴisjӦMذaΒ%K(50Jhr*(>|/9Xn _-F m QB#'c<0rd|%6N3 Wf%eh&)BN0 8Ǒ Qlܮ ^0BI]y]5ޟہ=_t*A<,,1;]IENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/rocky-distrobox.png000066400000000000000000000351051474517124600253600ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME6 Q IDATxyXTea}QpWTܗrT0Js)m52w4Keiҗin@.X(03P>3 }]^Wp̻\J&ՈZ낮 ;-f3J3ɾba`ME+5 %9ؾLB!H}m{1`ϣh7AwOEB!1YraxɂS&C#Il~NKEB!'0P9^ PB2y0͊tjb)d:&%i,*N SW50 :T 5T0,hz'79$֢q8IǠ=tVs6J;%`JJwC1RifgHkt#bS&RicT$!Swa*8_ (y QCҩ\G)gTD8R{=* N8@`@c7D``/IEAOZm`4=VV=:H F#[B-I|HZ1)D|A!s$Pp[V3PpM&0Pxc>c$=G5uEhD7E! w<"qլ~bIxpp?QDK0 5C׸1ĮL!&&BO9-!Xj,ܩ=9$U g6c sPsmNA3H:SfS +C[UX9ugk64a&<~ݷNa^jF-?0PEOd sܖۖQL¾rvCq<[=/pLIp NC+N;hQ 59sz0IMZ[[4*hWK(8ucN uCl =D ,.cө} g;&阊pf3e4E3Cycav"jJkHҩe-5:@wxcYTԦfH@Re&tn,ScX0 R{bI'0P,d4vGhZ(t]xxcgGz;:Xl^lF8/l7 xg#C|1قĻs"r?& C%/JSOktVВAdy("N!ZA= 3DҩGԓteԔORRJ*( VB! n:6s *LV:N݅_4}~[4ҫ 4y\gMN(gAT[L-2=݅w0 A&Qǣ ^?p? zh,3:9JCdH8w\`&sD:NA`8J /N*A9l-DIHXUANN݄j|zrPt,@jap0A"56ґ,$Ѩ ^8F:ο "-q@B5/ґ<A=ҰS_=﯊f@FG!xgϿ]s"$6֘H!dqsTQmH#FZ|#pi BgG:.:'jG+H1gJ6C&DtYp&!KxbE::u8A H瘨tҰh Pu8i A,oQKJ& G^/i C < }#3A< ٛ^ޢ$sH0  .@&s>f-HG0H>&Z;iXJ02T|t ПCf~f^qè#āD*v^6ҫD<K`G5H NBbԥ"4vuO7H'׊=O!Me#)9Yf^1#F8} _)+xO TMTpH < ƝbĤA틄CP,P3|ɔ~)<22rtttzgϞ N>r}Lϸ&">lPSůq 3Ohܦw_9۷oO~饗mmm[æM/=$$ /{?3oF衱ElJM+*5BьSRtĤ#G6Zv4hP/"':ʞcSf0E9,ANMXs.#GL3gNJ6m0={|Z7nlTZeBJO5R3edrU^|184R4FN|i,#?%:g,[v߾}YYYT$I?sLG}Tn`bWX5ws_ͤҫQeNi-V')XAo!իWyIֿN( =zt Roڴ,*ܙ!gqH)/OS.PF y^8ŀn'cɓMQ_7`mmmowIII h| sGː ҷ/tS)h !0<иţFѶKfU }}}/^f͚uYk7=f̘說pnd/݉+u;-S7`F V!{0qZ!~Ua( EK3^^^Y֭KӧJ4f9t'N$̝;ӥpzSj^ w3=p^$888,X;靖Wg'o߾=a̙-233mJְp+벿e/[pN) dST E3RVpc|ر1W\>}zظ3]DDĽiӦ[YYrh79#ksN8e@c ©`c4.ZZ'x VXNs͛qcƌѝ:} =ݛfسPyDLF:*? z̰Y (- 3g׮]/^ܹs#SNq$hժUPÿmݡm%?u y7#{St EiF&SpQpL!)#iXٌ,tJB'{wf0;;;n$qFQqQg;2>Pé_` }$SN7mIzknYߣh}I};64hP}RfYV;va%;+s]6N3z?<ӎtu$S8n2 ~=iKOt钲|^zAiIe9;{\Zx({3}"(|4 0Rz \vQ7?6˗/6lX}w-_Sz9҇,Lt UV?ҸR߁D#ݴ^>}zٳk׮]0RO;0g2URCX+A TpNFr9ݎ?̒Ϛs`_L>=ֵ("IyO2m Ke : ,ng`#I8߯BSrm%s՗ٝZɧ?0o޼汱EЗ#Aațy WH8/Ԣ|$ҡ%;[cMx>&55FIvhT*ko7V*QK `xWqʕYu D PACJ $"{n;o/_  UhRG)۶mmߡCϽ{FTZ...K,iygذaKy Ec=LDI{ ᝂE>)phи"H2O@=Ri/Z z D6yyyIj777{Ƙ^ YO8qsō>xo?hTtӧO'6VRRg)Nd-YVIR}h#sŁ% N/?A1K8ڬ{W\e˖k&L׺ukڵkZ`A|bbb'?:::rĉ={pE%WRi,::pÆ QҩEͫeH(8ug1hDn1}DfXpJ䜧KY/_V9rf6(a[3gΜW^yZww>uTp0Y?!C4SVXq?*uL@B##8{"HI(XשJ(Ε@d͛7N<)?~NHH=x_DDD^75Mƞ={bg͚uWN͛>m4w6 0jڶ 7?'rP/+X, <[F±|@v\);֬^Cӵ^]'O, ¬BCC]9bRQRdZ}3;;[T&M;nN:ԩSZ9=pȵk5mԍ12D&޽`ܸq ^Plu ^t#אpGw/9?4sWi<=|mR:wvvΘ9s駟Nԩ}NNF5Ȣ;w^1bݻw#W\i7cc~~~YK֭R4Ȣ\Ir~ɓ']vͭMF!q3f!9h>/N}*7-57҅o''֔)ST]vU7lPV]999ƌܵk#SLj*OBQf49/o/.'7ځ!9bcc :4{M pr-- Sadn==FT|,8xU:o3gR\]][UrlllLm,H\|-[ٳgOkn9f8m?x h<װ?5 C* UMJra@8::IFJcVO>>AAA %IG KVPKbgR"Ke TX}#"nүWóEՃ]}L}c<5{Brgׯ_Ś5k_p(6dheY.//㬶KގJ޳gՒx.~,^։R*J}yuӹ|rUjkw#bkv$奣^zpwqB4cL֫W &PMqqqqq;s>lذ؝;w& <ťÝ;w.]doN׉r,I$ $ZiZjm8r(=gD=h MguW_iذʕ+cܦK.i;vӲev?wWt2̻ÊJ! =탃]wI=GMŒد>q#r̦~Zm4h`3q~97gk^sBU 7?۷oo߾z櫯tըEzxxxU>eU`}J(24ekUF–_G_9n'Ugɉ޼yst׮]\0YԹs_زeM۶mcU^Iyqv6gl c V* _g7zP' _:Kt-[ڽ^qqqj=\6ڵW; ^0)W^wSC+\>qD'H>v;QQQNٹW0 [`I8$ꄁ~c|1qG E5~v;z>}{wMzzիWi޼yo>l6mWׯ__QF uHd. nkpdێ6K__4.Z}zm"=;_/),,ؽ{wDǎgΜ饏qww;w ޽{{ARXY(M ¡Ac`gmcaw_B٠; nǢ?lV\N_.-޽kW娍1ʕ+co޼>bokkk,KVr߂/Cc)Tt߃ϳز+h3rt0Jaݠt|ܸqӧOߢE61.c܊cpH8Ɠbmr:#4^hFNR=z믿v`*1mH>C©RԜe}Ym~?4֡?k 'N׷ &(o hB#Spy]Φ^2~53V-Wt&M5a„ζnZ94;;h-.7e|ޠVN[ ٓ;Q>ިQg-j׮],}z >@&TRUq+8}Ͱc-GpPzhjٲeZHHH͛VZ5f͡.si4Y(0}>S3.`Q8~e__i;wik׭[W~se۷Rt3z̪2`% SUig#»o[ƩvG;h?f,xVH5gΜ?~| {{&XpǑ*^kP3G,]O.\)[^+f-ĹP4׵֣59֬YӤA͹>N:u̇0hи4VT>q*&LBPKNߡ^ӢvvB){}H/fqIx ?"ORa{St?/[wa)HJ3i*ZcI~{3XL]53Ϗf #l(©{TVV1a}n&|4I)F6mۖ;vz0P-oIp&ʞѢAcP,e#™FO:z+Ϧ$x-T QZaXGn &|<T@$_KH8$"-'J}*ڞg&ln#Z-(-d5B$H8~L+,;y8|-Z歽ѱm{k ލ`w_y\`;~0sLpÔJiEG)C<~ 8,0&jq_7O\;CX=gnM{0WYSgX)T~^cעE{>>>.M6ernn={)S+_5mԨQ6mJhӦ I&@c8XYY߿?!ֶO{;wJ9rO?f9uԵI&y^|EUcnPx1 }||B ѣGs.߾}֒%K}JC)Qwޅ={֏ƘԳgO#---̙3YN:lٲ҇tH8w׷^tttP*}S-,,L:tP(/_lدK.7nwuu!?$aAܹsj޽FGG%X⨿),˹W\I;v, {|܆6e^^^PYo bccӧntt_?[bSvfY䛸;s۶m[Džұck֬IiP(lq$Qy|d7[7::-]ʌ3 `_߅ Rپ}{K/dokk^JI8cF}t=nAfnVkp/^5k,/Ba_&$$'$&&>9rdC[[[}?X"tC7+++M˖-:teͪvud cH:Rtm:=m7O!#'poj5^{?k#)5٤ʧwΝVt-_~JE.]]tH8^Y)d$N\:ossB1\T3?݉j{{ۻwVԫy{{sDDDsKҩfh b:yg_}9chPVX8yo*^xaaa7x5\VVVtpphi ulٲZYA͸z#,,FyS,[og-w4j7Boz=ѻ/zq߿snͮI޷k999XjUҤIpuu-M*+++ιtܹ+#FPl֬~{[eՠjqqq'O֭[ǧ9@]DS*m!;DTm@PO=S6ޝ9ox ^u.RRR2>UVyIpxu޾uIOOrQdd$7onUe암T @Gҡ|,_׎^"`R7nĎ3>}ګOYtZI&9EDD8^p3R*`;i|dpaR/E8|8:1E֭~wG&x{{Y9^v-k׮Y~~~JIc eok=t~}0}6$Y(J7__zϟްaC EHSNСC .4+y>"5] 09* #d84;B%*9fbZmkNU^^^͛oM4,68 J_\ZWdmD u?Tkص-]%G[{/1tи9s4 +kJ>G~Pj(IҩĘKMf?{84 (} i?bĈYf%tԩ u,y͛7cV\i&2^_-WZL-zq<,6e{q*PK1( PK}[}QzՆiґRRRׯ_?~#~V!V/W7!阒= Q\DBm|zW=$꫸^{ޠojسgσ#GzqG@(9UH:&HSmr @?T*" !=:% SX?Kt*[jz{nR#"Q:$9s&z֬YO>]Q H:H`91 `4BO8~J.jJx wP4YxŐ!CϟCtƌ)Iߺuŋnڤ dX `*#B1A C?!0>=`'p G2_cp`.1"*1E1qܸqٞ͠sūS:iiil٢>}'U)/`!}?IǬ Q쌧,͂%,2c.uΡxԫh&w͉CUV-sNaaafϞ]֭[v}h‡N?H:Ŀ9&*] ox 5 s\uAq( D*֥})ׯtbT*A:,\|9}вI:( Ϡ =88GT! qC$ g[E(ZQ[W^mݼyzGƒN|||~}Veu/|#( I&spUDP̝3s7js70p.mFѴ_Y(Z^3pe 6,A~8Rd&'*Tc O.4ђi`7E1vĉ)I'++ƍDQlSs%{P4A )GEK׺u낭[^˻yi|_dddy/5M޽{/v1Ak02V^ARеkפ3gHnlȲ}ҥC I,KHk^0]S2:4cƌhιdݻGEтҮ ` Ta>4 E3;%vp[[[ҥKgddreHGI^~UD`?vq\0g)+W^֎;>&yDZZg7n\qѸ AX*m+K~~~I.\eYGW:AAAsIe͵k.1^9mb ,W+d&Z-Ϙ1#ᄏ3W:u[n]ļy2^`=T-aE{IB@5or@w i3*A5Q&PI0=7AQg(Z#/uThc*^ J({_YS'z5AC'^^pPT HHQq,!$ /Nu0zHE# J J"RIENDB`distrobox-1.8.1.2/docs/assets/brand/png/distros/ubuntu-distrobox.png000066400000000000000000000535661474517124600255660ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEpvۃ IDATx]u|TewKݡ8$kBqÃR(Eԁ"mqw)N HBܓ;Z%$k{޹s9ܙs> @O@{ I /TkuB e0)2|ʼnDeyN_% n7p(DM$Jx"^w<%F: E@Yz}5TAZeX-H$'CyԤuC(#+Bl;Oy&A]P@%bxP<wܥU^ph\{t̄@7ϡ.I@]c F2``$DtqvjQ 52L*F(wzq#bÐO< tq#(iY1 ~cL,t\gޔnT$[ Qa2< #h B?PI&).0M {yPPPIbl$20)^MD@:SZ3[\Rגb@aq0B $b@(X@C&F:E' ro BqBܡ,H*q' )TD P5NG8XCȁ#@ &b( ։ &F:fGl;OyᇂNǀ,Ⱥt[AjM) ZgSHS̤r]p"23f)["ujZWjzWL-JIOfS@< vu(w@=fR P"0Mx$,/wsE+F{3ѝJȔZA4g&Ő\?ν'|u]u;E9/lu4.*A J!/8`_5x}NfR!O%t 2ݶ yA 0b¡-?gkRR|L!Wut]Q\:hhZTIۭ><`3)6b>Nn\]_PN rH vk91iV}5L,"#Ã鼁;I1byuNT$QJ[D{tD* 3sbz kl8{9<ӦIZ B޸Pl=Q$>*q',*@r u5\(9餱]bMNXsfF $ʎqH*,jb6ЦH'<ȣ:62bȗʝ TX_$.*UɒPi{- .ďUޗУdT9ڸIW ׂg([iK6 (C(0?qd_f> Jp,OkvT3+&]!н$8'78@8D "Wfz+6;|fti%.)hS^_xQYePc'wXpld!S- s_:pZM$k@\De*B\D%ʙliE(QD܇:61JKS⋺:8J{9 uOTN1@cfZBׄfSU Io~2!.vk>3' ~|TţH>9ʚg4 KWޱ21+`ɸyC0`W 83Ue#i\ۜY?B޸VzD>38h4ztN21 Deaߢd!K o+(o*Q=Q\ÖkuPuIɠӁw}ov9yZ=CP^d5_-n*UmȅWa6;F &0 a0[t/Gk [9X3IGˇZ Rj7Ok;$ I^@c#c/uFUGQrQ8[vQ-őp@zj"$c M7H΋@GW|h¸ maWKbgըlDHq?WڨQ =9&Cyf̀O?-@MfmT(^~|V-pVu!L'}󮶡Ч%BfO괐hb}JeOmQ|ɮ~j5J0Vȧp"!(oq<Ș"u ~ƽ^ԝn6S{?²ku ґ hpH*Eɐpjm>q6@y'c&4ϱN"jDST.=![j5 |B/txѢiw`e+ Z18)!ҊB!ϟt }JL@phۧ@GJ*Uf孋B8= FE!ѷN[ W} 2pDbx>.58#AuA1\"6)sNY@8]3| QC84'Bw)n0bx~9_QN5F46A*'dQofP말}T.AI{^ŽTy`Avs>1fb;kN;KDG 0#nj͐7 65/Fw iI<{]s➃j5ـ^% _CܼOYaow8II',((m˄9xLf]~}aJo&@3j98w$Hiker`~YE n#é\[2Q#޻ OW8=j}ڸGA}zLY[9=8{Gpr'% ,giJ~'$~7);r~ s@ LF8=) erƧ^yЄ߇\:>t1K8JطꫣC\&h\rl?(n_ fc iQLί o_n>-%^ o ] ; 9ѧ$ 1d_9f'îj#A("R/eN`$=q*YPڨߘ_A[%0[$~lrS2Y#N(o]o -.1S:B63_%%}$0*)NQR %Wü{#_Sj|=yj -)?BRwc=- c~ :c< (, CZ٧DJ*XPJRF\5>S!Ҫ$+\//Z8<ʗ?m&NДp7 A,2TeT< WCT,D^e>ECu"3 Ô'g֢}LeI$KڄOnnj` q 3qm]SXm}?̷'ǴNurAnu M:bF|g.sAcH봴)S;VȦV C(.(Hw[A "@iB/g@҆/CC>y_W^!VV4)NtX% TBP=j . ϙ?XMI]b F4a߸ |h2`)Dnh!VȾ|j,~lG#rhW[l%8v*%/|Vc7 ?Y8~< 2mP=+G Tm˲SY "YR$m &괌e>[tZ$}ovU@ew6boT^?k'[NBy&b$ku `sՇtYĬ B/r6QO/Wt\=*ThUⲕ̾ª`oP= SfSPB7'Vxt(m.#c#fۖ2k" 1{%L(W=o{Id[CﰢV孳Є7bMhIM@(y7_Ȭ ׼EZ#;yN()в$ o̶X̳2 Bd2lqΐikb.xQn}n9p.CUD̄>%0c$OZm oYj­qRe#~n޳mIe"6.N pԁ}jq=X(oE=P^?epSSt[s|yIb=X!ţ {3xJ:D}3[}^'"uH?#* yˀ&y$]|T/3˶b(\>=GWN{ YMUFeŦ|·mpC)[!a=!S:7isYtQn3k,q9"B_+OP7Kep6SI*օIs!(o1ڼ'9+qf*4̚N%x),q.!h擔 ϙ[ܘeV<̚Tw/m.Q _[tHkK)0-wRDz׍sP D:f\$DelKox:0C$R["wRI}a\09,Ȗz:.}&BYbOB(F.uLſ(5*⢘%!h@uy;6TI(]NY\v~*'TmTY0a5i7|[+~947;Z}hH':Yq.|ީݖD+|YaQμW uPm]m]R,"I:/6٦<,XHZ1qt%jo!vX@Z QgSnf0=8Z }2^8>^v>9ަd+JB9yMO՛H:|XpIg\DI'1&Sx:D(ZيU:!U]Ul|V:27mӉ9JfK:!,xU1-c`x  G<kl /wʵxWaV)e\Bd r=N qX 6^@PW[as,ש` E i9BfgZkU?NPp1("#Toă6&D׮aξy("c:24"y:ȇV'ISத17mjӘvD ֶ귅av$^ڌl թX 'K&ľUBTA9 H,_IDžNQ%f+y<\m3UӪ54V#+gwi&*/Tx3 .z֓>նD6I7 >:z!^B]j1#$ڒh{392<sg#m&˻yCu\(aPHb%Y  4baS E9Nݱ {v!ym >̒D˃v2Z ځ K:fZU-V3uRhs΃ef IDAT/iQ撔,A\|T0kBI|M:̞(oE/N eۊ<e>u%!Uc>/3]"٬mˑ~'ͧ~r >rr1F:Et62X mV$YFC"mϣ{/gȳůIGHk63ڼ 5I̚8{gV4|6?DRM_C2nd-H~VENnP1nGbٗ3rHk77FM=hy YWbO ?!4P>\ϗJ\S@eZɸO\e]IJ3<;hB/`c;ֽ>qU[Đ̺Su/m4Xlgk֕ C#w;+p ƒ7(P˖ͩH e8>#>Ɗ[& v2m?~uulz0dXTT HGˮtu`N⢐w8>O"(H@mtP A3B89yWdά oͨ[bѢEchۥ+]^o:hڡ:?Lτt+#B2r Y̑m|bKFu(\T­l#/ؽ{7:uI&H8%ܜjw~:-RGGnbe8~,ZXA)}>Pz֔- '[[:$t:OѣG\z5DZӧOlj1vWp'ʖpU2'R c.BZW {C)̤.0K"8wSO>̙3Ѹqcޝׯ=zŋ;w.*oϰ޷v|vN߇~->qL70N*k`-C(_^?Sd)>؈W[vIJmbb"v؁e˖!<<Iၥ }QYY(Cp_y;\^'괄nkf^Hk45x^ǵk0|pt .bܸqr ƍOOO2Ti3'/_Ŵ!8b=%&^MŕDf[wX6G:0n|C"C*my/o).!z!T4Yc3 1m;tڵ C Ν;sTPK.W_}ʕ+[$oSR"At U}JH|tՐrzrѥCw:-c cS_z_Կ%'֮]\;p@7jղ0[Ǐ"d|l9{FBrT PÉ `6<VB "Ӌ@)eJNlڴ 9תiڴ)֭[cCdLԣ>R 1""1ceSlR:-JɅpqL%ر:4A3\ -*&!'wL:F Ճˌ1 no2233o> :?sy___,XsE5 #B~kSGgO"IWxRAG.$twaȔ^=FYvif'Az1GжW0uT̝;qqq9>}:/_mTQ55FǏ wn\t Ov vRaN5: 8[‚g|dy>k@T%n/;c6nތ%K:wޘ0a֭ KJgN#dr|Xc{y 0W bӢ0ѓ'mJy-YFgBn\kcЧqXSn]`ҤI-v€ Q:A2zS>,~şjpdB؋^ɑVf_p'< vQj/H7MP!uwrROq;-x /8SNE>}Q^2ۖ-U+Kg'? vh-P)PVY\J~wDhb_sz'<~/v؉'bĈPB"&SSqmY>ousaocÂX;T9l:?sh@hwmY݆~ B4j~  'R9zDbZF>cL< 4X,}g&%"[w #uzWBɷ6U3߰ UjJ\;s G ȸփF0t?e&)Jm` BEàz`%1x кbɜxxx`ʕر#,IG;cɂ8&IPFBpRlcvI:~ΦI7| M *a#iYg@ym97Bzc [j)S7OĪ9wOы\JLT7#) 6ddwR]Ն^EkSU6^ o ]kס_C\:O>E ˁoӦMCÆ HĖ-[jժ\H GG5PNd%cX8vGףówXaRiЧ]0uȡkUp,%}?? <4 vNuQݻ_}BHٶfGPgյ!98w ѣGbŊchܸ1V\~ʸ:}hHԨ>e@Z=™7f 6,j**R;"45k@u ;{*nAQo4qqc*,ZO)#FqQG|D8~߸K֮Ë\&P` R 8cz3˙ Hk5]D>D8Tm2r? 1qqq"7QfM̚5 ڵ}c&^!?~[)'>|ʕ+w)S_~BAlY&MWHv(qyZ[8Y|n] ]" ;W7jY?ĴF*y }OKBȾr ggd򆁐5jqԩc2e F ___E)o##t ބ٣X?X`A6yafXa{vޅslΑBl[nc'CM!p30 D>%^&Q9 * oUHׄ]ƯB'`e]zL^^^5kzBQZ- Y߭ŽB:O8vU:=N~⛥K,&}F"nzr,܆5YWca*\>_V<0bC]KӒg*3Aof3yCUB("M2222OÆ _u֐J ~/k;ׯC#Jwՙ8kOYFsrሯMACbTvcZطnK+7/tNV,!O?ʕ+… oq-7p@?5j(p^ p|6oVRU։cXv-~w(הd3gի޽{q]t7 oIƁi&AT2vKu#$ӏƍ+Zjܹ3Cj۷o(妀;H>CCq*Suڴg^atx\}(ٳgcv*p|Y[r:P#I p%!(F 3 /.WmzۜإR[^H%0ydsvlk9.YbHx*e ~]bFI׫W/OmYb{!Ҁ`](]XùCB&ujhcW: Pn޺ GvfZcGeg*(?24J%N؎+cx.<ԕvӧO͛cNrbv2)a]:=ЩV^cbhӻ/~kX>m*~4jL&sP -ajKrv-}V&d_ԡ(['N‘30s \g.3zoZ_)tDn7N?OO;i<ޓckJ$hԭ6ً?BV[2U2i2׭;MV؏GQcpًB_ cchԄPp *\;8c i@fu{Ń ;q k >FIR!WN^1sz\/DN/3]8`ސ8tLsHh\EL G"jL d]F,]B4R~_i #lJY`Ԭp]cyn9}Am[CK"1:'O@`zX|n59w_&9TZ蓊~=(F+JY鈛?),zw3UzuL1vd)-1ɵ 'o媘2W._F;qz` ICBsNMWsfjM EUqtX{ 5nbҝӅ&r#U](@P)[!zRh_ʛgu~U}6#2MC$|=B!կ[޽{Qr@y?6@NqrP63}$Zx/{m^92 !i'Qn=豭q$_%Xס_x,-j#@&SN8|B ck43Ȝ-*KR]IC7J?gaASmyYev'g|2v>j~'\­{?!%aƀ>!}@у9$10.\Nf7mu+Sf,_MCxӭN O,X=*4ll5c)s -~h¸D}jvƈEKpu5.f-%~qLn<͸ƪH%<\:VMijO!a$]2w`)P1u/]QFٳg}B[ZGM6U*8vFT[bt*i)"LhY8 bvO P?n#MF'Nh?P&C~nn T4V>%e b{"MJ:-OCGy c`z_ u*DO³O#)Y;x*zTe#OY}4iSE䄏GƞSQΈf0;tSهZIDATxOsEROMM9}rjG/'Ŀ:5BR.*6)1='^us'7YTV k׮ѣ;v\.Dzeb1 ]ޘi캟R;w|u6ld5t~ˊVh1'7~_ $k@T:2QrdwթFmTQDBq꧷ -U>HCB `ĈW5s~a…prr2OX! n=,ߺ}zCΔUwBM:t\ XA(]b N.B=| pr+8{'D )>+ |ft%@UKi.^"C yn:d2̞=ˋ^#G4~ņpF:¬An(/)L&3{VwoD\eB H$€˖-T*_||혫Ub5j+3vI`+3mJg B۷ooʕ+R,r (^>_ J C~Wf:=z]^ۗ_~CeEOI' !__Zk_ t{yϙ8q"~Gb`] egӹsv/Ο?p!88۶m{M<'O֭[M?=,ح!(^IɊ~_{/_Qի'O"##9d2u seҔRvl7nƍov?:@*->m~(6/T*-mS4tId`M-Bhyz/A%HCjb"2(\rqJ5١Ctv.Aԝ8*T@vv6Ґa^㦄29 ӂ㊊ }y$UJ|(H/8 4^h{B>k'⃚5kڵkDVVd"..QQQx !@dC\N*FG*FQL @:FQJT*JD„g ӚnH&,a  ҥKU(BJ!t5ʰxovvv˗/euQXk8Nf Y8FJcxX5a,ډ7nf|m۶nnnϐH$ӧo4**qǎN7n(0#[]J怿3 @{N C5a/:I/_lժUgϞX9qĽ |lz^s{cǎ}vK ZΧ*;; iR C tw 111W6m^ ѣM4kPJÆ i֬Y۷o{~veQJ/kAܹbgGIlܾx?"x-/.EQR3un ̍6m}l8-uD |ʹH\SY]bu8C3g7(l17wtzlM/o/=y+W=u66 Ǧb=' [}HȊwV!^ǼK yT^me[(75E<7ױC[峨-NJJjٴiSеk ` ,غBFz=-=*I.gckyͷt\TU.ddXq&7H`0Tdff6zYjpjۯr,Eʖ~7woZUDlKƓu4S)'Mʹ8'DarRΝ;WZ1HS` I 0€dMUm `PW&ݖm|)#x!e?~ 3T^^^jժ1c ;up 6ۈ/-H{`ZJF.hBr@?{1?{y|{{XgϞ﫪j婩պrںO5jLi,55- pP7ԕyrC.WI6n %okkF:###{ʔ)Ƙ<Ks2j.EU@l .ĆnaK̈^Ī̱0Z!ԟ?eZO>&++˒g@vr 1Rf{h6INT6N~#Ym8 H|v)K^?hxcԽ2twyǸnݺXǜapn9,9=1 mk&QӢvf!~ͯ3{bxwmH*,\bҒ߽h&Ơ#o MEmpcCbH%?_O?±?ec2?;m4Cttvf+hέ,HV$bJ&%gkZca-V<9W<2].+tdAAAko߾v:I'H>htC_DlM&^kbW~ێA\B"?[#Bȧ'I ))q~o(5ұ'F /$35i&tzx 8gA3NÇWZ69cnv٩g5| !v4iT \+K>9n4qdܤ8 QU>;;f zs5d(Dі\:RQSz=6E@q?ѕpohx8O͡ ۰-^!z?n0MtqtZdDlF&v5Sdh۳T011jhtS[[{w߭ݰaÈzK}M^C# $ $b{h6qr;[h9r>!!!ܹCzt 7%ׯ:s挥W89ns||Wgh- Zca Ŏ;vh8q@EQ},P'&&\OR1]8G'okcE( Qs[գR ڙ{Uћ|M=۶mۅ9srtttH???Aґh4ӳcbbKKKډhU! BPf7C5ddH!qt7txvs9,Q\rmg͚U|) PVVV ҐhѢN%"08hMNtb\* M"=$ ix;O5emf:99+VT9e>_|SGn>xn[n5 f jS(q(E(E@&.eD(0FZ4]eeb?i儯!AE ;SH1_J BpxZ냨`%+F: yQ>F9 !gbX:iR0L 9$UN٭<9Eco`Ekƅ^n-1)!IU\2Mߤdʬ`>b,Il\r@i{\zNB>s_@/T! Qs{ x =q?BCƕY]Z--1"jPDCC>*k꥿s}";R]L4ұA؍1 p:(B(ثgK ʹ=)Ru@@mx.rs0 4L"@H#OsNZ_PFUHUP:)Y"]isZbe1ֿ[]^ gKt.t4)*q#y^xwW{oi!rbKGDC pHYs B(xtIME,vڴH IDATxw|TUϝT@BGA*El+*]%e-BXW)4AQz @ǽA5P̝s<`0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 !3՛ &KEnYdu$ W Nx劖 D#E@ޥV'> aQK-{V!ިO%$ik]۲ %?; E|X?| ,H@^e@)BUPE1}vv{]3! xjSR7T7އ)*,H]@CZ9^bᾶ e-v!P$HA_3. lDArTՏMh2BcAڢ)ˊlwkW(Vt3^5Ru@T 6}^>\&Y2ւZ4)k<qmilgR(*{-VPA3c"&/'!'*M@KD@\5& }}ZD,-z +0Ĉx%$9^Tj[&@{ӀS8_ɫ?ؖ=ssA֠ [~dH!a3~9o[v3=ndq45RNX~,F(mW>%OC >EZu֩@{E[M4"Mr_&*z"p6끯Yk}fcp4wχ/Yhp: '3tV  a5f;lD'Ymũh ' rg8Xײ19gUTD%4P2۫Dz h#x3BnjJ 'ܾ-*%fSvUG :d B` X ,|ֺg 5cDz;;7vC7q0^PD+;ę#Jщn+DOEdlBk E}q cRl@wzd3: XKXs|3~_aƈN0eΔ'>m.+z;5p.o-~˧AMCb3IgR`eG #z0SIy%R'ac8:8f V$ WTV[x EE8&fDt$Eܹ[f,JPwCeV[ Ut؆Әd_ \ Zˍ3Csn$rX@th6`zA>&}yHcSfOI¢3\`ZՂ `0[wVx΁>j#۷kH!i3i$|( \n0 ߜӮ,cx;J0#NcQ ,<ݍRP>-D12rXXXKAi[hd _(X R[_b5cV+]U_-fjtw#:N/qnd RaE8IN'*ZQql`7[_gʪ9<ƧBe(/!R8vf? `:%B!BZ-:k X3l[jA )P Esss֧ Zp*{`PELlي=\.9`d-2gJ4u3{g- `  5lsP:@'w.ATE?/H*ը0'YV$HwtOz|<E R+FY<5Jts)jD c'x:p}&uƩ1D1Y=Bn\U} | w)EW Z^+hKnq=n}|zbF?z56NDu^ LUI὆K'Z?E*"pr92y=yQIƍ2KϺ\cKq,IT=I $ߗj` >m$9@oR xc6f;6[E8 z^%0Ex#:QHI}|5~'sqcd e.tA&3qD\TβlEuΧsN5"&x 89G 6jySp_3q|^X.ȓVؚP:ϐj7瑱P}uQ6ɄӫioAL>;8YѮe7W{PP8i}y4Npzw=gfY YbŎ3q>xOE)c)٢r(f2StșC-ϗ2aoVB)+Y5~gՏ!g٬65NsHoAh5,6kϨ8hXɓ '3 Gww9&h7i9+qJ95 8ʎHpz5%WV[ c98̝;/2 ȾҲir pjUMs 7*DGضe |o/BUԇ~ήS,L8#*U+pDN OG6 ˲pU5}/0jG9C,8NAH`: rԋNEIbé ǵp&^]>rEȎ$;d'*=,{4S9gNe-> >DEAP+dD=ډm(*jEJ%r%]Tu!NHX:ǛnOBSE;^I g§ná7=1{H$kꟀ.BB9֔SU~#Cm {)⁓&9r>ΉڱJKU>X'Zb>+>ob6]{JKmn "R)M-dAjH;gCHERIb(wnn;޾#~Gmc298%DY 449L dD縙gvq+wDJK bo>?g꼩;YUSJ$8Ac 'Zb*`n2wJ>BGtcN>i/޷ai)5s}9~ S:HAf l4{b8ZoJ8@ DNqRX p~O*,V(q|k[=/D±j3ty+GE*84BPTM_Ez"Z )s,װnox.(DKnNDT>‹z_2ST8̦8mb#taGps}=ۄ)IBi"M-oNV@w gNF`=E:eޔb(mH~ĩ3S"N+GHffW KA*?)VDD_j qrmȷ?8jNns(\DBğ_gK ("`ʜ)< #lֹs R6!Bё/yfϫ·cBPc[s!8 b=x9uPslkB95$[M-XT̍>KG?R+BWPbDxu&P%8nI6k DK K4uAjGP0m^kTFQUE>]s6RJF9)\E8+Ž3E$ Ĝr<2QYG|zeձ,ˈNUA2"lDXx/}o98uTu~2ӱϓr`=-TnM!s FQ`BIk[baW\q} Dd3 -֣t~-um,*4"S  6[ qBCpE;E_J(H; mclϜ[|pZLs> ]P\(ÊUN2Tb;NUx&R!@O"TmK-==uؖmmg' N Wꋪ$I FCtjۥA>Qf9_WUSeF9 rO"~;ާtbD$)nb|) JEeOLZ9UE D>6uF~|煊F*w+FTLȼ HK(9NK4;Ss?g|ͤ;?(%2W4%< `_WW\DyGa7R4uU -VQMND'3G}T*|VN:B}A‚EHt|D_/W0h&Yc%p㨞 (IkR^W>hyEa,_PB> ecG J?O)bh҈Ftɏ8MZ* ,ETtm폞yFL #\FټKb<$:v.KTj.D#Y"8WMMNX#sc-A"ee|T@V ^!Vx H$H"n^e$qb{BtRg6E0l#ѭ XDnV'jD*VHNh B_WBuT+{i(&T7hTсz\d(d$᱁e|vJ|HX#:UEȏSSUL8&,H {Y/9?KID.D*jGȏehj&HdpR";eWUHŊ3 -;g6519`Dj,>`q)/O<'{'rvU)d#N'9'"$GY@gDJHY:uHma oWt53P,k7$`f$RR;_u^9H"t6UFACR kSED%1~$E'߈NAh\{ֵ6.]s[ug'<+uPGPtJT5A#\:RN@x*df]4)Q SꞻeDTwFVthĦHT4)OLTZti8.v9ѱTgGPt@c #@3c6HwJ&,JAر]4"rJTkq{E */N ?!]sǧY9>=3?RDwkuԎP0D6md͊5j5o`O_@|V+B {@wpaRὋD  Xjycz}{#3g~w:+HˈNDv lR.O޲eOxm/Xs_*ՋkF)Lb~g.Hs*[7neڛӘ ꫮ&33ϺDN߿vZq?bvl{q䕗"ңh{"f k4e6{=ev͝ @( E 9ܓ'bIN"{ ;s.S_ʁC>5fs̛X IDAT9R;w޶u[s_v9=p_.~ղU)zD,̎'jDgؗ;pܕP:$յ^t=oEڶ/xuJ5 gswŢ/T6=׮S{GФQ/kӁ\>`h*<'f"C$ݶ45HV`%k(/vߝ ` kd`ǧacA ìY|G{s͍Ѭ;iڸ/ iP_s=f@!"` L%}E6u#p a`_^J>gM9Up>p&ދjQdZձ̙cfز7󽙼>pwЯw? /Gߝ yXW=]2 O"` H'Sٖz&wn~`q+#@͵rY<]C$">m)Hۢ¢|f=[ȝwɥ/v@gK.Lݔooe%eI8qFt[Rכv ݀ aʹՓn}UR,Rt4`e[ohl^˗,? _yhI 6믹~%1!u٨?O=ԶcǶ8ijlp၎Q:jWTbE38S,_}p;ar>ɉlJEp'd~BUErgoEܭoĄ[w}ϖJ̺4?':uW뺪[nC= /xx"D#0 '%CDAD?vĨ)|듷+BmEN5%@od EkzfECn2Qmۇky:s/{VbzPp .,{@Λ?EGu qxV XNXt(]IDq6|!" σRXl6߻k!FML֐,gԏȅ>}̚5+wyg}ji`,8D30{T<Jg L19mcqNd(MLAZprR]!#8%*/*[qYk\ '_Dxxp{ p'pEbb7s5ѲyK,LsoƏ_O  x xш/oMřq"<$"omoz?{Bv{lcR^V >PWTŻ0Y$J*OT |PxȾ#hH~} 1tիWoC ,h+.ת{*E'FQ,,ƈS)kLPcVM1ELTHDAUET0||ġ F;08pE.9wos=s-[SV\z8w\ ֈOY[ܜ]F(^{<_͙#XXN+:JEԵl.0͸s]w3"k 5Z\\o}wb~~~̯\YUqNFe$p%IOcgT$9 wD@g鍷k۶gs[lY+GmA%#زA(K[X u~}E<מ 0)w;} ^) 59i&''g?i֬Y޸qc!7n7/Ɖ~M%أz}d N$}WAvGy= &" 4(8q⪏?8pV|>v!buڵ̙3z뭯[ju8@cՍ[pVM"l\ҧ7+fR{8N']9FW_G@luۦM.A;Mȡ2Kq|([D'D_N}:Λm܌Sw0Æ ے[t7UVZMZݺuK7B>!NFGص0E'0p@6G/ %"VN-Y9 80xӧg}vݟz5@M: bРAy[lG,N|cԋκj>8:ܭV$;,HvEс)s8[KHH({'m۶miYV:wmҤIưamvҥK bO~Zk^t8M;*6H^]w|&Ud5eo5owMcbbٳg{EEŶ#nO9~yB38 íQ),ũBr^sPEK2Pe8m/'lV~<(eee{^}I:tho-//?\:>`kn0z7jQBE#Y|:xKAF0pï,}guVݘڑ}E(--%#=G3mΟ?hж}UW~ŋ^߆u~/|L=#_QQQ[omӟbӦM?И1cV~iii9-Q+jg 7*d5893j|9Mm{D={_lծ]^ey0ܴ}ʕ+K, ̞=άY/g~M[4e洙nHl%K,X;U׿j5o޼T~@ԩSˮeeexYSRvSR!|C%@7ıS|O!8 Qpo?GydKhոqb}K}|EYY:uNf_>.uϾ䓡G}yqq$Hu]Da(qTAr~=5`o~N8g-7]tEIIIG{.{e: Kkשʹѭkz-[?\y啵ڷoh [~;m*7:Wgh˾E M8U^Zq_Z_ܪOgiJ&~3qoUo{ՙ1cZoҤIȲO\rI3?mb$''8p`ÌRG~?6ŋ-r 7?Qqqqe~*}}i|9+fx2ˁ8} +EtM4ctzs=l$"Ǻ+ѣiqqf.2cNjxƍ;n}oV*ZTz0rAf Pq ="87o׿\vmeXaҤI~g%fff&oܸqe˒j{ZDu")@[V4X8EUe-h}ƋΠA;N)))N8]fMƍsɒ%x䘘ڵ+MHHH" K⋻xu*3tuky 322pzYfl{UKXJD?ĩ9+Z8)g)2Fnp3W`4hץK3f$*C=ӢnݺI&LXZVV?Z# +4iM7re?sgϞ-{|bդɘ7{9ylٷ qd!Jsn: e4E1-t ӣ"og]=Zi\ZZzV}v{/׺unaKӦMK̙ uǾ ,XPԼyU7N,˓UbŊ뮻:{ر-+c+3fɓ'ݻwf 8?>d(9H˳N)¶`*<L(<豋#@A@>eߎڲ_˨GeߪO2(1 VUtvi%929&6lؐ۷o~Gjjj]/߶mV?ŗ]vYkVJ.h믿mĈIII ~9H|/u-YN?GPлCLD& I(\ƾFԊr,y歟~?xa~TU>'o߾SO=`mmy&L֭[~eeftR{-8qbI')"vkk0G8xLv_7؀-A{wG\ _/ EiSf-Pp.M7ēO>yWVVv`kFʵx؂ P(T0^zi[֫_[kUW]լVZG3s9suҥW_nܸqu6lX%Y{=~m=Pʚ;v0aN>feUI;_3wz e"{FtG|8Z8́֊B٥.*B; ,B8[ NR\% C2NIĵj'x@VV￿9s^hoW{_5*u3eee_{ _7T<oug֯6;c&D%}X[B+W|vPT\ h N`7nP=(R q +:U~`ak(,5Ã~?_~N?o'Oꫯ>QUi{s뭷嗋Ug}vZ 8*K8޵p=wuWw?Q͎8lP]AB g.{cחv_6V0P#:@N2XT1i $+ ģ?_}^fW^y=xǏ?OB]dIҹf{7$h[<쳙TyueUW]{ѦMF`FtÌ4>~dq툑:]k㖕TիG _s5;s% 999999un5sOJz;^z饒;SUemڷoӭ[vew 0i?afr`=8MgGs'z7PN4gLum۶~:k֬mvZqeܞxv:t3a„u%%%?+(///:uꚎ;&y-*CpO4iՒ%KzqJ$Lj!= Xֻ[ C %ׯ̙3y ~XΝ;c֝;wN[\e?&&&oxұc~np r-_-YP׫Èo`zK:=`80NضyC/Ugggwx7o?NsC/]+Wc0s$sϫp`xUM`5N޼ Ge狫|͛7oc,X {ڴiwƌy&Lڶm{DE#dϫԊ%ϊ5Nx]l gҪhYVݻzwW^y֭[Vnذa30OкnyȰ/⋯OSK/… njc~ou~뮻uRRRhFtiX * q$9go߷]5-WZuۏ,]tc=ִI&~9FfN;a7%8vpm|/gEIDAT iӦ٬Yveff֟W^żyԩS9ψNu|Wf;qfabcb}Ԝ\nMhܸq7[;wqǖ.^2J'(P>xŸ6 lׁmZ},@ r;ϱx^>^q[v3w^XJ+s &U;7- ǰ}m%?9d|Ⱦ\0))乤u>UtgM$,a2'e="pMпkvk0kFȈN2b 1@ LjOS{~պO>=4iR߾P(6fWQ{S l}e*t9 !ŌR1yh:锎N:u־:i]{]-OnK,kǍ7Xщn'2`ՠFmTeh4gIR1_/]{܃MٳgXUcbr뭷믻!DmDJ)ax8W3Ή oeLr/N"@ܼy9Gw7]~訪ڀ,| ѩLoɾ*OtNt֫vU@/ί!QnS۶w1qUy(DJ)>mbDYkY]Mndk|Gt&[jM BVںP`e`x ̃Ǽ((3tINKs=;~slt:.+h4fvgL&TTTtKO_-2$I*F Oė6,Ht  S)G,_9n8"•)wEIQQ9v7Lfn;uc H|NV)[94h~`{v=fdVƛ_r&:0q#Y ? 4ٙ(y󒓓#s%fS>t:{ޫ̙sJYÑ!A|keO`X k 2.1 U0I@d0c,KBRRڤXyn7??hq8˜3g#33t3`XF>'''D'a4wIr!d*Z4" ^(]bp*6ӄ(,C9׻S :d7ZreoAA˗Ttq8Dcj &믿,))Y駟rrrh3kY=9*y k,0@p~r R0]yEؑ?,kbgZ7xTԾ>wRRYV/ N}}}'s@||ozѾI|'N< Wj6zAֿ^8@hOd`XEX4AbBl>#G2F`(e3V I@P$' `0.((X޾Joϋs厎7|3a߾}7NV[!щ!Q 8Jywo<,i|>Ha[0%h MrEPGFI#G,! ^Ӿ !~ n⌙fK'E *XXXx ۷/rxbo+ah 66eIYP%AS8KX*2$&)Y<񓩂#<auEDŽ89[8fbM CXh믅@-ti'>|xpݺu"zֲE{qr=ib6DP=|&GVs;;;VXaq{,;O$G]]]w^^^u|A][[['\.oX7Dٴnݺ N:o1.[6}Fnn/((VTɦCS,Nӗ`׵wߝCJKK( W]]}|Æ `tDKnjYWL(\5g)}EEEsF Ν;۶nݺBT&w`Hi׮]~C=DVOvVDI.ۯ())555m,M綾^ZwD>+Z$$:L=@M)UUU+^xOGG=`ڱ}_~yJ:@vv`eee׬Y ]v{4 3WC!\ w\Sz;t` _6O+ǣ{]wi\.WDqܹovd?;ov/.˨3 HxNNvbvءQ(fgg+**^rNqqqzvh4S5@ّ; l9UHe_KK'|4FGņӧO7}Zt$Ir8Nt*))q/P%f"j3ߟ ީL@rرkZ¯Rm۶9,ˁ<zC3 xݼy^j'2(.Gե{'|Y$:rwww3<z/L͖(|pN"ڵl6NeG3̓۶mkQ*hlMAtVnϞ=g|× Gd"r,rؿm)ESSS[~~~{Ő3VWWwfee G |n$Xݑeҥ555m$y~w}ד5ˢ#˲QwM7F #D90-[YSr9@___s=wVPH">A,";D\\jbht* WTbt-Y"5QL:zIt.8e8z虼(~1KHeӦMC?s$I_6-[EQ?3A>Azx"wظFϧzsŢ0͝;wls=^<>HyMDT`l6$~-62Dr Ǐ盢K+M G?W@l,BG.oI$7GLc8ѰGQ&bbA4E믿|ĉHȧHd; Q\nAL1WAX"VV&v^/))D1x  . |ͣLk6ۦXwy᪫ օȢN"^s}E :t.77g(uA`Tی555$ ]jёe~̙7nG%p0:'Aӈ$)hTZZjt:ιt DGx׺ =ua9!Z7 elё?l;w.|` h f7"… m_|) y#9reQm6Cd9Gkkk[B[*N>VtsIeFߴiSov Rc  riii޽{OڳgO **2D BLb XK fgD6gA`Dh;]l9H Gf _%B4_%ID4(@s`3(AC0rC8 > #& hoQp 5x|]2=* jIENDB`distrobox-1.8.1.2/docs/assets/brand/svg/000077500000000000000000000000001474517124600200305ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-dark-mono.svg000066400000000000000000000131331474517124600244540ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-dark-vertical-color.svg000066400000000000000000000132051474517124600264310ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-dark-vertical-mono.svg000066400000000000000000000127221474517124600262660ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-dark.svg000066400000000000000000000133351474517124600235120ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-light-mono.svg000066400000000000000000000131331474517124600246420ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-light-vertical-color.svg000066400000000000000000000132051474517124600266170ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-light-vertical-mono.svg000066400000000000000000000127221474517124600264540ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-light.svg000066400000000000000000000133351474517124600237000ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-logomark-dark-mono.svg000066400000000000000000000052671474517124600262760ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-logomark-dark.svg000066400000000000000000000055601474517124600253240ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-logomark-light-mono.svg000066400000000000000000000052671474517124600264640ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/brand/svg/distrobox-logomark-light.svg000066400000000000000000000055601474517124600255120ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/card.png000066400000000000000000000622711474517124600175720ustar00rootroot00000000000000PNG  IHDR 3 pHYsetEXtSoftwarewww.inkscape.org< IDATxi|IBH@QYdWtDTTHY$ێtt33t֙F@J XRق&l y^tluL89|oZs*/yNsX: r=@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$@ X$ZAhRѷoۻW{tzyj*Z*GѣGcǎeظislܸ9O9,!.w#nAnvmC ?ŋv5ф }ry;vT|`J) t}b'bBXgѺuoq=# ?/eˣjn>vF p!N#ʋCŤ6Mב#GcgY\=_O*nݺfu7x3Mk֬I'`K/A7t׿Sp>^QqQ}O9"Z4XXHqyK߳XpqqXE+J!Ei ^NcG?:5%%c̘Qq׈"//=>s>O-z:\,1,ը_S+cӦ=Ó'F߾ߖcJŌظFh,Ҿ}iL,C TODցQ9'Xt8K:4xmD5S޽9B1;b{kkjcSK2r&Uaaa}1E-&~1{8qyXo%~u1eʏb}}Ҙ8< fT5i0B.X=_'F}~Q1uFlذ)ÓW^=brF߼ykTL^{=Ó$\pڴic71{΂/ʋCŃvmFXŘ>}V \sU1,vQ_^jTL724- hV9G۶% ^a=63>6֭[Ǹq;G~~^9r$D,ZL7MCO*nݯhW_SUm;24Ruࡘ5k^xjQ_WHbAЃmےOccYqС&TaCl˜()iuuutيi />ZFȑ#EAA=z,~4pEW4jkmi3׶dv0KWeѿFƮ:2^ZJ'.6h; ccAJ5IUsbN$.<1:]ұQWYS(ݗ4Xaaa=hQآkjjbb &$ bĈ[cQT\'N%ˢj8~xL\,}KR1Gǎ>N /,>+JKqC#kƬ3.t &.D=&O~}{5j-bظ Oƻn*;䇧GE>QQQ7mdHΪuV1cذ4bFxiBq!Q6aL>r8M/o=S1llkܛ'-iL>39  8믿&>hߡkbђ1jn;̣tW|u1bFٳIoٲ0q}wGavСU4t@NJbQ1~ܨF_f]TLݻdx2ޭeb„11xMgӳ;the-C7j cFoNQdK'y8 `VW) M0YnlYݻw~}{G~gdɲAU}9rD(8suqQWWsV|DzeÓˢk. ZߨQRR^E4/c}(FqkcgŢD]]>窸(z\?zuS#[Č9|ʬ=1J!Eg?s*o|ϋ;=z`\7hSNQM4GK+|`|͟>&镖~}{G~_^ѣGHR{ cضmGNѿx,wnٲ-**f'OﺽM ,@@+@DDGMۨ۫3?Gɓ hn, F]^ @=z,fqNJ˖ѧw۷w\տO3 }cǏG^*/Z<=mJb7C;kŔgތ͐ EEqcAG׮]c h,hJbw!bԢE-ѯoѣ[";WucKmII|o7cO=&O~}{ڝvŴU;SRT 28x`\;A}%O/d"wC]FզM\^ SVƍegRs6cȐV39qDacg/ڗ^ߊnݯ/g#:s̨޹Q[i1~}qg/"ȑ#'Ǿ}{eѳgݳ]6e'Xp;xIϞ˱zͺwNs/ZsW=2ZכꝻb =k6[E-xk_>晴w?:zm]]},]<*GkLk߾4&cA\,u>z?kcSKbq&y+c„11xMߎ<^~yC^R8p*/g=C5%diiW/{%No^ԢE5}{Gǎb߾ @9iG&ge:3*+;]wy[l~}K}i}H>ɏ-Ct:u^Ըq~1|b\qE|כ{jN|aUʔL~ .g£X$}qǭYsQ126mڜ}ߏѣFĉcz͂b;??/n64&|8 cOżyOfL٣[L./~duߟUsCYtnژ0aYU36uu3:R8tpXڶ [o9o =zd`x"־}iNMbx*_59%"k<yyg>6?sMzAGGqjJgM@$`EUV9ݿe?nT rsTVYO%%K_9R6*vؙᚫɓ'F.s=Jn?@n Xp+jY"".qCcʨޙ>钳^v˱eY) veq5r=/7["k_eˣjn>ܴ_+*.ފ~tR;&sbn*uwsψ(O֯I dW~3.zyqmb7ǢD]]}ow~'OGyyY=VGdHbA1M8$R֭bryY1bXL63֮}z}}#|c<رCDDzѢEVgxõq~񓧞sĉ'Ҵ(l##ƌ'ɺxɲ9*.555ybℱY꧰052~pp̨Wαz?.<1:]1'^.LQٻ/'& ȨxjQ_=d4t>[xqbѢ {~RyqqM7b޼'ɬߔ8\Ţ%Kc֬ѣDz?pq&wx|x1a˜<覬߲eU IDAT7* UUsb ]sU1,v<'ըZod#`Y=_ ѵkN}"xeXLY|u|iLzhB ڜkXU^.'/ Ⱥ׿eDIIt򨬚 ժUqod9"_|ѣ…/`͋D]]]<̲xşŸq~y~~^~۰t=<ʋCCmK:]W=63>!`9uȑK/Yݿu1,cXLVk_Z䪫Óʢ[+r S+c9, v+%../N.]._cu1bFٳ7CQ6aL2tpNkQ5'XtH.^(W^z%F5&EEY Ƶ^,UsYٷ0F{wwQآEV|7?af}9Yw2dI|aU7*n>4R__#=|cz|~|$d\0=?1;]"&M*_둲j+bJEeTW(%`]v7oqW\Ԥv'Vz&!`׿_;G Ǐ\Q' żyOFɓX@F'6lؔ1~.dI,_B{o5KzN/C X@Fקw̝dGy~;**fIJ+br߿OGj͛Fs= @X@ƕړŹ[툿oÓ'FK:zbF՜Xbe\U$z8zx<\rZW/5FuG}O%|SO  ',IRxcqľ6_WeccAJ%|kL{z&Ocq&֬Yq護w~<1,ylS*fƍt ߈zsF|āGbje_|]x hr- [ėg\rNt:[iz|~6uuuwbOD}CM2jQ{)?/.*|ѵ9Ngϋ?iү?^rUTT̈cǏ7>͙d5[9ɥ_r0Y#Mt}NǴǪ7wg" ȸֽN}mے|!:v쐃'Nǂ 2vYϏO.tEĆ oZ\㫿[Qڮm&ks}۫c'30Aƍ׿OqȑS>|Yfn:5N:]O-zh:"N[?çFnݺWhY25Ά n$ hr[툯7C|ֻwo}& [d {ǞdE]V8pϮ/>ُG~~~&kӽ]1X@ܵ+8o>>G^^*dUv펿?Ğ={O'y8R) _*-mgfkذCoh%@}Ɓz箨ջbm>폿~kLJ>tg;~,D.H ȸxõɺ{_/]/=Ə'jj'$dMA~AtO\ N{ő#GggiBX@T*n>44Ehۮ$:o%%mCqQg͆ n*JKEV}i(-mmۡ}iv^fCh~޸}iiD~ dԆE-[Fm۶QR&#]"#c䄀d…cſhS_ykWEivQ_uk_6:th X@:Yw287x]*ڶvmC()i۷'NdqZH!Łbq'#[>O>=Ž$.^hcQsWزu[TW[or}:`j|aUFhӦM{o5X57L=z,vTH㍨_[Sz_ߌ֭[r~4+yfyfϏ;G Ǐ⢌,fa?v+~˟?mL97,XNW .9sddΝ/Ibd~"`\_g4٥+bc3{Vc}#{FDA_#@3׿?-Zs_HӍ^^*nmX?QRrZNǶ;Xص/~Ѣ)Ab֭9֨Z6mn~#`4S_wu| -NW_uuW: c□yG3f+I/3믿&𛟌īM6?ӷmٲ0q}wV[S Zs~:d,ffo~SѢ_oO4螩T*|c<ر9_f]Lسw_h  t<|k8rhye1yrYnݶ#*Έ 65h!`BA~A;1rj3~$Nl߾C 縱ƸE*:usgWס!`E,N3\$?^wyO,ښ}#w꿯:_b߾ Wt=럁Xdi̜97+MX͉hY2c/1~ܨ}ИQ5{ݠA76^>|$9ٛ=_^jTL72~:~agz .bGm6;Ƨ>Ѹm22mۑr޹+ݵkwL{*VY < Xp;tС}h_/|SsWSS-[eG[ .ړ:où! .b۷툞=8s%ʋ[^N֝؛Xx챙9 EEEg|,M$׷l[or;]1oO~8hժ886ӦU&oV_ov7nsN3fꆍg|fis{gᄈ^N/~6_ɲ'NwW+_X{.\8*"b gg \,UW;w ,Ntfk_ZS+?G~}R҄M?.]120}?߾mG|#KUYrUVqYqtPVTW6oe4[FWD*:yyyѳgmШ=otf?Z ^{kߤ'G~}…K_D@Xp۹͸[NҺW.ӝ'bufoR,,,믻:)v'v{"`8pL-cts؎?~Q[["WSSŭ_g{q @rX~#zZڒ61tڦc7Bsݵ~Sqݵz݂'Ś P~غu{r)iYwK~.wk;w4FykMɓ OjΗuO~cqQҦY=p`|; `7cΝ/wmJĦFPWWnϯx!:th]t>yyyѻWt%?k^VõlYggwn~-oHr]kŒmpϏw|ST͜>|YUW'EWڂ3?EfRy1|cvm۾u,U4d@s ,־r-:w}]_Բe8cb߾Mѱc]vKαqXHϬtl^<\R*yyyTj;vG~}RO*7ŷѨq+'O+^K/4^J⊮]bFQqx9d~C\*:u$:w4"L+,,}iYy34Q`55Qc4ٔ&[&ͳn~11ł #ػXP: }f?af8<>;s:#\vITj'z6?ϳfV^ XFjkkSeu:lp?rҦg9p~YlYΝߊ6y'3kk8/Roٗ3f̨iӼcV׮[ܒIWMIMMM+M lJq'} u@ֿ2Ljrxcl)oCfW_kH쟉̰Z̥2s“$IR):5ݻ5Ir˴Guݘ%K„[tRO>>G~HʚU0Is-w{OmG5nS.O{,O>L;pQi׶mחJ8n=*qwn}j֬uH,]vۢg>o5w Oֺ>m[{9}z{dϟN<܋[x2B6KyyY>h\ƟqRt55yi~-Z nyUQ)'T9)o+rw;ͺu0!ia !Yjjjs'nQ(//ˡ}t{ԶlJTqc9;S%b-zE|S|m7蔉ln BU|$n!is}0y]FZMyyy89ӱCf==ܒV„-I X۷qN8*ڶmի;O͚k[aB[VTSSwݗG}<'||<&]u}^yVaЮ2q 2E_{Lk[x2BluFO<+;P٢>bڼ-xLL{z܁lu>BO<4tlwh߬]wߟn]VZJ~2m6GyXN>t֮Ywߗo3V,2C5kۧf#讠vθ) jȨQ{܉gfzhϽ+.ソp Ot0hЀLpf ޵E_{Ljr^lce3n;ooy;37l{PRYƍ7g}jumɓj3's7f{2^VΝs)5X|ynw-@aiɧqO<:m4ǕR,/cFwܝn3k׭kʼn&///ˡ}|&smʼn٧k.^!\sCUU„XvO^9gk-Z?o\}Ք43>עϜ1LfJޚvlK]5jϜ;a|vqsyfk9p~-E)ih=@Blמ}Œ~9ӱCfȌ9{ӎy7# w>4xf7}+yѣ{9w™[xI.\uՔ,^df("w`h۷ˉ'c=gI3/d}NKΝ7k\s y5jܑi߾]gڵɭݙիlLE&` =*3NɸT*mq6[KOvs'O(-2o\uyzF>uJo>tu[$Mw{OmO ԩcN<}iۦͶ^555yGrSUU&,S;sg#(33wm= 6%`#g۷6c;eʔOo9B|،?tRU?P IDAT{Ŋ:ެ]n~6@ Xȩ#?$eeVL{\{YlY~HhD޽2a9rVy3gʫϜ9o|XM0f̨~ ۷yߞo-O>y?O2 JW> 68RYeYϧΏaM!`@n]3z k޽v(he;ʫO?%Kq\PVVJEEtɅ+VTzEjkl> jkRUUm= 'NnL, M, M, M, M, M, M, M, M, M, M, M, Mlmoӱcz]re`Akw~.o57˪ZkLh݆fNOùD[RMEEEڵo[srTZ#wmm]\uՔնڼ4S ?I4[-@v 96ī$)++#GMl6ft`sB4Y _eׁ2bn^;w^}:푀4ٛsΰ[[y 68gyJhܔmիVni,f|5䓎̀SW[_37|G{O( h%?l[-;<{1<nݺ]۶YxifΜgںweetڥkK.K^ݻuͰaCү_TTtJǎrTXysg76-T*ˀ6g KN8_9o5;C**:ջ7l>ze}N;혺7ν=hۦMv>4NӹsEVZ˖wK_NUUuޫ2lؐүozVHEETU-{/̳ϽEoQ={9"=*SY=k׮Ͳe2yYbe߫wӾ}$~M?.Z8˪'`'DyyY;{ҥW I3Ϸ3;}a^nM|c9<RkߜvGRSSv{7M}^{c9sW| 7vLJod_t&N;SO9!?g:tjk2{k嶩yn <5ǽj`-駟!wmu]ͺ<\M;o&sׁ/$YpQU+W5yQ{푿&I&EO.]:[jv8Y?/oJ}c Dп_.8qgsɥotԣ[\g]mp]TO;!dڔoGRo~+y/.ϒ˚=or?gז,]eUiۮ]*+]۶)2rv.y9ڵ/<7k]]m.\ŋ<=wLn]ӦM^{=rSs㍷;=xF=+s˯i\;vO˯E@1XءC_M9[qu!g][~];i=zU6ڔ#=ߟfw/_|AF;+;…>O8:C JvmϪ/5s:vo~+6lHdUEK~9Ѓrء<9uO{"?oZlZm!,++圳#YVcff43,Z8=d=|cǤ{I=WgެJޚ$>|hإׯY&{ɯSSSR/ԳpԨ=s}$/)77{.܁۩aC}^/=)k֮ZMMM~I{=Ҷ]3;5|^Q>%;ҦmڴZ2so{_hI.׿T1G}Yju?sMX'z6t@d|"P>6?p>YIߩƛo57ۦ攓;Tf'I|usIo/.5Olh/S몫Wd5[%`-^?On5j&ūR,xZaܳxhTVZyyyTֹ-a˳6޿;3d3/ZҢ>O܉gT*enC榛oϞ#GdР9C3//ϟ=o׷*a !lҷk2k+NҸ^h8 k_ˀ=k[VÇT>|bkkL1Cnrժ,Y~ c߾=l~}6l)UU%I %mlV?zwUT0!0f]aZ[S;`;aIpQw=mmO=l'{\gFZRuuu^~xyfaFyݭ9fѭk,l ^޽_(=*m6i׾F}_ٟ7;yR^^]:7zކ] Mm&N<3;3 ?&ۗb'I:6|ԲeU[qƭY6?ש^ѤWTTdsij|7Û:weK>.]W4[ªN7sEņ_iY^]{wiv='Ɇ;Ůzv<`;ծ'Xr+NioVs5k]T7 M<޾}'Ɋ+C:6[5_?>zvMd]]]^Y`555y=PLl4N :9z{FNԉ'!?nwң{8⌼͞ (w`vjΛo7xmA[qͷdLD~+o}_۷otia[ۼy <}4KRFY^߬өS=I2[s7nUTTdwL9筬]nk%'|ld%b\+SWWm+_BڵmY,NƜ9"={V6xT.i/ڔN=>GyX7s+Wʕ˰a3zѽ;Ӯ6̚Q{ٳhp{;T{&f%Ƭ6sjxWggg:p-|͵Q4M]۶MyW!Ҍ<У9۷wN9L|SX5kvw &Ծvm梋*w,]ZN7j=]']ޯkIҧOv?qc͘ѣֽ[לw\eu==nzz ?ǞzP>T*C?<ǟ䚳:-}I87D;26E#`vjڵy>ro3cFJwL߾sW[eg}N>n ͐!{m͚5Y~w5vx>ryС3p.9rtjSɧ X*^̠]K9݆3s6>hlլ{X˗/ 7y,YX<;sI3gm.=F ϑG|6Ip\sݍfUJe7zcS/|@wZ%ɠA_x+OŋǞZF^rfx%/MEE kF3*;O>5 i5w^O4<Ѓ>vwXNɟ~R>}M~*nW…_ ^}TT܆Gwi<o.8'ee|_Yi:s>wZW;u/^81R)uuuoj3faws>=UM (.w`vlނ:m=FfJ-j#g'> 眑ݧxj|yS'L"xђ\vM~k2l_|%]T46ܕh~]x(<|A꯾Aҹocjf͚;gÝiP^xqF)yw$r`Fj|*P|lnּ܄{ lleju.ڴmv5]~ŵy'6=Q~ꆷGn#fF[~I'Q\*//g>Wユ;8ʚ5k9ⲼʫI_)'W6~܉g;t-Is㍷6cƌNɿ\Wɥ^aEn][v.P vnڵO~?/g݇mzAn5+V̹l֛3|5 2dpg[5ϥIn{מ#2b6Xj咟_ '_r~67TUUU~Ќ??,],˖VmvٳGڶG+W~jӟrrۏ~ /qcKri'SK)++ez{RMMmnLF w /$:^yusKιsP,m=y֭[=߿_:t{??k犌o&{9"PfKg68+C祲g}O;w^nmj~+λ5ǟNK~)//o@>s/sǞdXR}K$Z< ~Mn]ӥK\:U˪/?ЩSӎIw}c[6KR ]w=SUUg_آu5#zLR[[Kfw‹ӛ]۶ӷ_ϝ7?kl@ޣ{dͪ5b(4Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph@o["IDAT&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`Ph&`PhO>~IENDB`distrobox-1.8.1.2/docs/assets/card.svg000066400000000000000000000127631474517124600176060ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/credits.md000066400000000000000000000032151474517124600201230ustar00rootroot00000000000000# Assets credits ## Logo Previous logo was created by [j4ckr3d](https://github.com/j4ckr3d) Current logo was created by [daudix-UFO](https://github.com/daudix-UFO) ## Images Assets used in `distro-box.webp` - [Cardboard Box](https://skfb.ly/6Wq6q) model by [J0Y](https://sketchfab.com/lloydrostek) licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0) - [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend) by [GNOME Project](https://www.gnome.org) licensed under [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0) as a pre-configured scene - Distro icons by [u/walrusz](https://www.reddit.com/r/linux/comments/nt1tm9/i_made_a_uniform_icon_set_of_linux_distribution) Assets used in `distro-box-alt.webp` - ['90 Light Commercial Truck](https://skfb.ly/ootyy) model by [Daniel Zhabotinsky](https://sketchfab.com/DanielZhabotinsky) licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0) - [Cardboard Box](https://skfb.ly/6Wq6q) model by [J0Y](https://sketchfab.com/lloydrostek) licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0) - [GTK Loop Animation](https://github.com/gnome-design-team/gnome-mockups/blob/master/gtk/loop6.blend) by [GNOME Project](https://www.gnome.org) licensed under [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0) as a pre-configured scene - Distro icons by [u/walrusz](https://www.reddit.com/r/linux/comments/nt1tm9/i_made_a_uniform_icon_set_of_linux_distribution) distrobox-1.8.1.2/docs/assets/distro-box-alt.webp000066400000000000000000001354161474517124600217040ustar00rootroot00000000000000RIFFWEBPVP8 Pi*8>HL%!ٺ gnܧeڶ)Mc8R5/^m2gy7>D?+/߿~7V|>?dz;KkO_?v:T/g7o_9˩Ϳǡuz<ʒ΋t -z".ђE_/~&t_"I芘DE“'T5 ^jI٣*h8C{F_Put؊-VE"ukopΌ59"_/b|wH򌞦 F@$lgVFhDENqZ|".'V2uAYTgں{Y:YEN:S_E`1R-z:S mJYlݸg."g+TXkC~ pu 8)~y{0ʛ"3@  L:Ͷs2/䵆|=v xcXOߺ5zt3'>h9#q4帘Y7|.4X*L!zvGRG2\xH/Ӯ=oIϢ"P_A b(Zgr\o kmR(:K r!P\iL pR`_N[A"7s@(Y.; 7;?2sdmWD\)3ߢ"Jg8Rqܭ%xbgBݖ2RzJ6Ɯ;`z12T%R۞G"+]P:}grJ9SZa~&t]ygCu?i`Pjm!݃a=! vZO* x*@LXE"_ 1<2x4s}(sZAkQukP΋D[~ J gVzMˤp/U)lmJZ[*W::'WW@~{u_0OEg="CfՉGZ:%"<gp]ㄻ 6aǗ4F1ypg?6]EZQ.gi ]V^LW2¶y^zѭK;O];"&R2I޸o"h}_"WR ZMy-CsO»ZHjv 71pMF0S8rZN bSywnW o1.͐YԞI( ̚yGכ1b7zVw\\>0mX> LS8,~Q̀pQ؈.nke0EݫtuƊfi FʅV#N٣p7vB'۩ILk,)!ydL.gs{g.+Y.ҖOo6Sx*C[cJ!/T'53vW#4@f 1Fqm­j;9b1Ѹ-@Q 5h:jSW1%CO nZ9;\,Zޙ Z?}U"g+2 cɗ}cG>n's:p3(aRW:HHw'2d޸|8 ^o7Z+q`5 sޗTBF`7 -}L1-"#V_id$~Wrrvs$m[n'y>MrzTn[)CS'FN7"N|8H%9Obԑ>nt2RIђw0l>8^'س=ԖXת#/m3ZaRR՝ڔafKџ<05}no'SS.CmNZVH鳘*]Pn]t߭Xw^!dtQC]#XOLPםت祟JH2C 0McD9o֍0E`VhJ͵õP"r7=\O&Եbw\~Ӑ]#Հ*~ݮk`w"[4Sp)=K`_{jY}4Xg+虧So"X0Z=cچZcoxC9˴tnc(7[9D3_kHK2먐0N;9f>++gjgYWiUNv[qE\I>z-Ð <]@p+}w*3Gsd(yُ7.K/we{MEjBI>{/d @uϚLPpadB&O.~2-z+/azmJ^ 7i TdZk7$ Me3ϛV,Qeӿg VIYhd7+ʓ:1ɨ"xT +#K>XtrꧏyvyٱIeMWK?̠AYx*6rseuCKl9+ A=oI 3O]df@bI%HCZ㌲ IaD>)FṀ*َ OSMw r`aХD \Rk& ;`$O5O2;wZYm; 2=axHu$Mʨ>< BPc;^ x!Qw05ou}h#rXjTdV )| D5nL}au"j<΅378ӊiz@ ?®gX-rSԭ.~].{Jy!=3 ⎧׈#ӥPAL x-% G*qBsVBNkVk6Uoa):,i-\ ̕^Q\~ E`G"5&qrBww_)H/6p =Y}Y#(oS[ZL^e-*VflzH2>o!5G~vTc*}Cq8p%AsyWAh$VuAZe'?]yDOT=^2V'(U{Y;$ kW[Z'Ȁ"ԸB. N rM#L)/!`fբD5Tz53'BP(d9Ս0ދ2ġ|AtPbe78[EZ o .EBzv 8>S䗹>ֆ||!Twvێ-B&e*Qك=ќ"{c m20:abQI)D}{,y;XBL7uN7W`#ۛ@o}Q5 7S>.2 zOcQ:-*%V:Y=s,2ȭ<-4KpqJ+cKw|_*v[ՓTVYs:/[/eM7.`ٱJAF?O]I1ϥ|k,7oZuk,)FG_H/΍7#QB CoyZWvQUOv#}]w\*߱yfԣ%'}X"M. GߣouRK #y22%7Npy(s!uv,SRwЩͬuR(zV+r ?h֎R(Ľ).*TpOhUo0 2fjh{ DƐ;U[( `\Zsd ?\]X.RrށLaM܂TV_Dl|[Z iAԀh-Y]r dYzj.Rr4ٿA%AoX%@p2U5,BȺ}Ĥ; #<+yuSa-N[ v^:a}'>U$!|}lL>4fyZ&j͈VU|j j@c5"ΖN ςQ`eu/Mή۵fHJq 5]z@/9g_KΞJ ZO^WzCT}[pՒ͖to | Fxr_Lm*\y)0ʾYN8O6?en,@cV:wh{ĕTMo=կ&str.-rS)] /p<~H|5ǚ>\5xQB2q ͡l3I&Akso709]ZxQPf1s&Ey|Ӻd~`}'ysC{G h!.V'DN|;BzrV|E.V Jfe T \H)]#_2A^MU ?Br%PbU1&$!6F_6q\'.W,9@hjfkXrΌlȩ&4b: Z IDn^ZKꮖ0~-tA f/ԙ jL>5Ӗ c,56=9#pZnL@Ljz'gO'S$A7UtGʏ9GsW"4,& }$yGn+2mf'g)&°ܻZlGVl)3p&4z:!߇mMM%hߢ {*ƅ$S !y-8=#\%WɱqGφ m{LU7o5FP`pFR9=T, [QlԽxID`䈬GgO-vv LdyCޕ\FLc;Ɯ6ĉMfoycLN1GutaĨtQi9v^Qfnc,phq FC^J`Oʙ ?e' \BR|o7dOd!qЂ qdmP.ɂ,PdPFrtov2ZvU4&5ss>vWB0ncssŃ~ L*޸&&3n:nYr%/6`iHY\&1X,QEqrF(ӝXW#?H7s|*u2D3:=P5(xs^O~ޫGΫQm)j5Lj E?u̺3hl2B6ˢ2TP|E<QY3+MNZϟ v#Rx+ Ŋ60]%\4nͺ&o@]cgju;Ղ΅V, J @!sX< ce~.фdA=f{Qe/SW3$ӚTY6w--$)Z]9qG,qߎTL9?v /TN-`-7pt<3d-h<`Gf/l7ۈݮHF 8؁H1uՆ2FhpM^ۆ^u^Jd 4ܔpِ KNW\x,a7κqQfNHqC+s{,cSCC rb) ڶ!/ƮئB [j_{!78 ڠuP_eAt?OTRD5IŤ7o oVprpdZ @'Z8]_!1ʮ 7ݦ@z[)M屼ꛧ#:L"(Û ˢ CmԸlDC;i;}P{8=ŢѫzJLĤ_p,04ݱ3S wF~8*3?'#>ʑ NdW]I,vk!?4y}_dz $r_T ڍAmJHR& {&o|Cbyǿu[)L3mq20sb!B|Lն2-+l 0u/S~εx7}OܼJ! %ZǶ]5pQ %F "\FY#ءvb-dϹGqJ7&r4zvxۺC ){QEG(,N-bs:؊.54q wمW'VSSȪy]?%7 $Buoj/ůUg&|hBgu&;X`g^w!maH8]3)n{ugUh˶qRm mKNl? A kQr^$eT^$3e dS:gO&7:p<]d 8h\=[ /vUJ>00s]ؘ,EakdNz0N`j}䀾:{O[iLtoU!yd4l=Fe2O:(LBabpt%D|`w{n4Q :4EvT;022-XS񯧍&hꥱ(JF<stc*^*d7=K΋`Vpϭ+S)^e4ڨ{jA}AJqNќsuߘL#^:T#p}}+6,n3~70QmmgQ> _‰XXNGc;4Y|Q4&ؓ0 $(l $МVA#uoW~513˲sy \YTi[ %7oFbWL0b-ͬvpmH\DzRʹy 2`q9<ݻ(̾F fm* /sa΋y"Z;,5$Ykw!q ģ 5i}r[}zWC.p{ -w+ՆшTaqm!ℳf"1vQ=<|豵$Q=@d)w_?37< bVVP@ $"GǮc"9u_FM"{ x9Y +b(Gጩ`|nyžOR[[5@i ?O@T*@+w+X+E.%L-OyU"oV Bo[1Ox~]x*q;i kӢq` կةaTLOsmi g0r{6/r\u+̌A{A`S{o% y-r+ O*Ğ0>Lg9/ Rj/Ã:dJ ʯ;nPXmzIA1J|yCa)B~du? xr/ UQivI~ H꿚| 5^K$?t!qt3~~Y":U>7LӞ?NpQQq5bF`z1!~uł}"YxP&\b{i_(i33; 86QTWax!Yp3Q(7fcos0r}{d34":nbE]OPW'DucMlnNS{+`uR@R׾[^c9DPȧMR V2.X9aH8|lgylrv/̶Fn ^:=НcPUC՟|{5`/m5cf;ZjAqȮ;9sp˛ʳv EAm,D`dW\91ʧE1S^GRcw$ [FwO ݃Ř'#.;2 %xS6hv-=߳$3Kkb~`$v/:!qk}k_8 o\c5|*KzR {'ƽ'j3U7E1Ku^ĉ]mfB˵B6uFN+uzU#H 5^X+>z:sj|K/n!%E:wy$#n|.fr[lOLW[xU}~Q \sŅ|uoֆb#tj Ax^d{.|3q~oB]MaFw'mcQ]\ VAspDT@Rђ~1΋uSW:0$"`bƗ{rxJ}f!uvx^\y٪/ ~>k·Cн꺜I@ߺpL=15UQ~2{AǏw\e7^ЙftzyRPj刚I)Sg6 የ`>E[y%D=ZH#B6hKyUgׅk-GCFd?RD5;g+j Rfo1 lfk C9j́2-Y]oj=mtCt 7w&o=!rJHϳ&j8_$;,.#>節;#%csOէ.NsAL_,CRb&TGh |`=1c > /euYD^6&Χ˶+"T +ٚ,ȑE/`8~x?F!Qp# " ygNmsjA97Y|\sc! 4F@Rh@б4yѧRjҋt;qjK лź=2t_ iyT&k]^_wK@Lp"bUO~ͩv- X E9F9mouҞ<[pZ^z2Mm"d7DW@Xd06ɠ*mNfc5wYMr=ٷ& x(Pֈs)KC1_n)j7 MÈj\I%z/ w֦ejC@Ț_ŁǖCxy $EْCdr=zDf5aoC aΟZ['n,U9#=.2R͈8Biyp|[NjCEcɄ|<B:i+nDU[Z+k q3Hh >NJ0h^YZ?r5{)+hPLI/ <=uPװ 豫gB ']P:`4w´KT>" ISk2#КST붧#ך;'̣ OҸ'4RL0'd`ȉhd,Gj9f.H ` C̀6\}l\^"P{Q8Ӹbҁ>SvT[L@rkp(`fέwsyO\piz45&@+ZH31<xç 1\Q}3fw4?#)bB_ulK<>5@B' fEe΋:_^CN,H%yV)Y#tX|,I^0t}0W`@CQ[_ x "P$!bbͳ?#k]V[1XvɆ?e8$Rȸb8 k+'k/pyttWO]))[?ɷITj.vwTDܲ<#ǪX}0lxϐyOs}-,6,S1ǾlXFƼx''ܿ|T"?aFɽx?1RT&NgUd’J3rPz^E-rc1l}]&>lKRINMܞZZ5uoNP!U. e}仠d]c"i"V%N] D_:Y'gbɨ{! .Ͼc[\,WU1+*Â^Ng*ЋGՁ`v p(yBS*J(_jqɇ~ ٵWlhy?ۦZ<0ڞC+>k'BO"~> E1[X5(*pr'nQSdΪ`@`{?5G,'eqjbrTgޢC3FCI U(6)3K$W f-4/*v5ׅ.1ZCFWhUtp̿~ 1an=bک7 /Dm|m:%ɉc 1,nKu}gN__8UhCn"q:*/cUO 1̥E#E3_"gE.l=sXH«O&E١üF?gWAs˜o tY4"(Vn7҅hW}`ƅR~7FS .jUϪA^:,S2^_%([i"W]:<3 1 8=zCYlP-j6IBOv^2'{Grl #&pP@9̦06tRip4C⻼ SLu'f- KHvBžkיi|Nü_.}2~wX"1XlZ=Vf&V>}崳`cs;T'@/ L2#;% n)k5y s3PIW;ߥwN{Y|3BP 홞 i۵*Omm@t'AXR+ BiЊjsvBrI|NۙDV}%r 1H\|w#C")ްpДA$Іy);D|lQÈФI_ddޝ#9~df4j~AqĔ+Y.4&oq6.n:0QߵI[ ]#ܬ-("-Bȫ-75]$RN꠾V\TFX1VZ,XQ%!fف&bš8ݣ&@$:%]3!KgX67 ZM7311` Ѱ7kZ?f(iŖ1lR5~}C= n kWO$'O[E>i@h?B(pFugn8n- g+)CBOl~) ryP68ŏڬX*GpW]Iqя׫#0>Scò{h$ U3K@j#ƭu<Ի,!n]F."F*sA;o۹ڭƧ qv0,x$ݡҹl2@*˃2Fo6Pʼ!e~~*>B5!T1LvG/T5z8N=tN}GڍĮhUd0Kf0˳xv[MMC`$o[j Z0x캢fglF$ K2|PէiZAJxbӶ>*CoR g/b,~2zbv龚8[;GʨYS\ə ؾ%+@=\:Gu(G fn? ,X1u`w.wS߫=:ZJ;i`b~UBS9@SSผ乣Rs jKT5VER[ toCE"ыN9&0<d$7lVf&<:vHkԮvŤ;@>!vrN( =xf9"oz[ɂ^q8O5 _K4-CDnEm83\ -"[~BٍU3~|sg >ypJ 3Sq]8ЍfY=m`Icɕv7a f J)W8P_fd{A ٵ6+U<}jV+HQ }kA,;HT# )wW῾ZU{=W*~0*x?߬5 ]hn&wV@GǜS{'#s.O\KOs3=:4#U=IP4$sXm73L*4 {uBjpNvl f)P3<^lS{[x] u juk,vױ 򀦬yT_; etJLq|RbF1N't"?#ZsQs?RkyM"Ʈ6``pܞ0Ipyr#*&v* ^"\g̀܅>XoɆwURSI\ZI*VmbmƁ}|?x)9T(ǥ/ڀ/_n봥 ʻ@h,o*Zl> Yuߎ[ TG+gF C3.ݧ08زN{׀,,PEG7A/-(|wà\Oe -U4U>*5bWvA!6KxЮI ojnnrɼ, H]TcO74i;)σpD.e-q3}PKJ ӳ&n xz`|T6c{U:%k@ gWb{EBHȢomuB}7d3f0ƬO$T4/5X6!|Ƞ]3?֭l>~뻤QcO o̎)z/[!Ş -y)lr%vaa pTk;c?LsCŦwKKo4pLy,lߌj]y\ ս'&#Þvv).؜LrĮ$H_e\Ea,`IJOwi}y1c4( $7( OVpc8ƳN2'B5UYO@Aty-~D_%Vuo#9dM’(Bq v)I`r"h f$_\!ҽg ;߅.q]#>G#=Xq7}VC26 V.0\woz#}7ܚ#or+w$̆Ȳd߄uGM9Pb3E]пv C ?^~~.flnW! ORt !DqL<'6^=_BmQ:#YwGީS5ή'~Z&jXLBw(mZx±>J 0֭g?bC˳6+n>=GY0x=8j2ݚRpNdޗWұCX>ʞVJQ WNL)|.{ fV4سH]G= g*lfWe^txk5A!$Y?|l$`AOPjTCΏ7ry2 lsm ˧i㑼t g ]"jx 1ih-%tzݟ!$ z}w҇c4ƓXgoZaů\ƭ_K*lU#| OC]:0*u;hIg$$#klp$]yT?aw8V,gGOj7l.TՎ{4 ?@hm\9UEW&i%}f[?'y>Ϸ Rw=|jꢠ S83H-LT?:g_1D5@u⠾иP=~]qbl(dVb+v޺`]1ao  )RrsF -yz؂e*NP2?6B/3(@X¾;HF% p;Sk7QaSp]G(ȉkb| MULw,R-C=53$xFx FIўr6}Rå& \K|`> ^^ޗ5B!/|U>ۘD[o.]CǪhsItmGvQxJ4CDP1dz>솭 uL~Io{&ds=tZ]Lם I܎^$#3~;L6LVTH 3Lxaq1?&BIVBk aeqϜN)3SCR 0 -8b뛉j|.#<1W))Y?#F}^+@q$} ʑk[yZ=Z C;rۀTiݲb}e`0<[\Gg(i<%e^L8:Ks: |(͎/C֔+[?Ϳ Ik{[Z|02y.W3>R ɘ ֺ= 0_=m[w3kdIqofVR6iSL^_g(Н>r5>PgVmzq_*)u |FuoqYMZ)_Ysݣ0PMƅ|+ ž{Xv_4)MN aUgÍ1gQ\.dGƓQ\a71)sH-7(J+岓`QɞxN\JUl5.#5#Q8."r8p` oٖ[@N6ʆ" TԊޭQ^;S“ u0ikѻUKN@^`ȞϨdp۝MFg ~ufU%XRZ@$Qnbf=yOQjnB7ҽ/úǍЃ3:Fw7T.Y5 W=W>iMWڔ=æxE5&>w5:E-!ÜBf^ ) SsxPy `*h3L/͵aPLWAn.ZhdR1Q /=Rpml.mS$Ee/h޳D{v"pg7)o1M>}0s4|Z}<0GkM0ͼU6óKE_5SBKKח2ɠ3Jm?(ӤgpB')r!.FtM[iD/CEβ?R;&^Z=2HY/")/Ÿ StW4)"nCj?SL$l%Hf%=z/:a5(SH K@$ҝ8Qs'c( OgGZ=S/c4UgnҡD LddsbEU KaK: 꽲xƶΉ9M]L&9\\tY=IRn @@mBm7]UMny8:=&ClI*'-5hDeu DCYن<)pA`uojm~ޱZg}eiZAô¹:2PYCle\c3˛W'sNaj\) D%D Њ:3V⣇ks7~"ᔑM8ɑ1YdvG2&#&4lsT~C= "+};i#|ADԁ/;boiȃsZ$K|Zt̞^W!Dj\~j:Yyڔ2n\W:V5.VL'F(JV8^XZ(a^Q%/i1*NHw= )ЍifKqH]m17y%UMX5}. k穫i~TI߳lH=>ʚP+CMqBpz4(^#U/1mٔP_ ()< 1V1"tRI0l;>LꙖ]𗜠G;DP^8jBF%FV?g*Vv `²x6Yu;sg~樓qynapa p!//ÊaR\xtWIx.B;_@Y +~k$/rr4QYvmZgaB\+&:3͚BUnE7 x8Y+#=hef (4 ܂'oe5?nq4'*w kȚH7V4!/\6B`e__5_۽vrcNX9S]2" sW f'Kc8?5η$Vͱ_,NjX3x@Džx\%=F6+ΟI*(?t5VOu\ (#KH &Vs5my#Ee7r$w^ZaW$(֋b'aP# ./ˢz\6j9Y#ݗgb0K+|ݽ8wgw0{ay'V@Qˤe~zB9Ӣ#aGhIrǦh2.E)p`!>ed&$r4^((#N q~ﰞ2Pȡ& hDog^+JjlYNY+EIYt,pd/A&%PYt>c}kHӬS 'tz&d2 AR!JaBm"W/L<%3/[T2N3JLWс}(lOqUTT ӵO*_,܏tnW['0 *#ݪ9ôQxqIVyxdx8#%b 67!8#aJkV9Z#%`mn*[Nב_ 3)z6Z'`<'9pHp9iFaz\96 q(;P  0_P D[eŰ+:Y~H1F{CZJ#),X -}qѶ֝UIfI'pxqy޳dd=g d>D!%>@.Xp<dR0)䧬|Bv <<p pٱpW30$MC,SmM+JX׬Ħ}r8JEOP&F:{{vا'|S\iYZsp%a-A ;5@c$8>Un'֪v j%._u> )lG=T5*Ǒb$ ub'<{JҒ`X~W߫ 4oˎBDz#+srD:I4$G=W6'tq2CRUbNȻ ű*A;Xku)P"|dlx/nt4Vk@nʵ)udtE׶Jϥ+WEl!=z/MJ/K@gu3% Df;kʐk}U;kUI.C̵ۍSUVcՈO5n' 22%Upp3k 8 &=Lua%ij/S&V':E]wP6<ɺj30&Ixr̋FZȀ<f1WU?wB hq}Wt,L6M~σ6E6&e4\{@ 61B;kEYD"Wũµ7vZˬi_VCh]Κ3ρJvZ4h]款Gxl:j |ܔ)8j_rjXR%YKMexmT^R:!maN:Ȥhr:Ʌ8^7䊚Q?oM:;M &+[ e2uu|V 0TgOIjhp}`rSAEޞ:>Jȴy` זЁbFV=}- NV$+y]OセQF$X}` L7q{'7ٹjlaYÓUkٟE*'h4a!lI9"%|bX l|v.JqQi_©j!k8?̦)bVzPAVUzؤRG):tV#e:)< Ḙ I30 `z+h+Ԯԋo5lBIUEUַ6mr܂q`؎¨!׶xnrES\ #zkPBgB>:hd(ڌF^u.͚ ?3$ l9IKWރuو,Gr3et+ 6[0>p|q.… d <=GJ޳49%n&&oKRӄWݛ/Z#L'})9S+|=d;|7C~ڑGm 4]hWƹM籎1&cwzF+~/kWz'$=QfoQ ◪byJ#'$V\`ߠ{+FhAOu!VHnׁO\pԉS:/2As(yY͞}@]rvC,ڼ(F]yr8P~Z`: 1aD}.E }VZ֝?LC581We>Sh`uГQ12io.L m?I~(:Zi?fk 0Q 7^q+.M4Jԧ)diNXCR?( `(,RP䭑LynXIRƖN9<80 Z-=3j/g,ΔzdAJ%SװezM5L^/ыm̌NS?)la"1Sj/[ &e޿CQ*|ݛ.X$:<6Ȕ_*hkQJxK$UsgmnQ<>Oep;}?a= ,AQ~bێU7S#)pSAL>ưC ߼&Lo$n`4Z.Ų0SiewAr"Z$'ڽGgX:+*;osN X]F/Y\9kQUii`_mi>pi~TeyhXagJ eN\.gbw+UQHyS^! M"rsYӞJ.|5 9Pz^zD6~) /W޳GZIj`)Q|6)9ȥŌ5 ,aEO>>zCC^!,N"kL2Je@MXqG"\]>Nߣ!nc?q4*K/4OŒg$*-I]ß> Kqd$Z~ޓl#ٜi!&cZ涤 9,s4[n:Oj}-HU:CzH;p?t7<<2nd)tD}v.A '`¤A╩C.>~EcXG&%wo9E i¼3Jkp?6'X!*]4đA]8q&#@޳E@>Ounc@ M}$#8@1}7OkYNw^e&!ﭒW5@9{ݎM`ԁl1YeTNu g_u38 Q)e_>wyik7>۳#wz()Iwbu?|)ߛXu$&dᵔ8iVv)'RA*yYRs^Wu'٧ylK1td|{UfZ wQi@ uv}' !^[,,HDsNƒ,etys=Ǝ$T${|fʨUI9^]},>8%r{iqEד.3 w{~߬ɥ]JVWŒ {է-iHEr̙gm+9p`†#.x_TTivɮJ'vZs62G16aoX{Si]fO޽fs'\lGf,]qxw_1u$F*S풝D .233˥Qx auT@ ߕݒ9$?6O`fO^Ũ&,@dAۅ[^nս\37 $Czb`-vvgIfvJ-!<{  ДU"^ )%jp(iWudy bS;?KWP(}RyKhWZGhѰ8ڐbewn6#Jh~5%mW`w:l1Z]J^+Ӵf5Hr;= 2EBftqi];Lɩ0Di1N5R}Do2I{+Z^F*/䔄Qȼ]ÓuA/.s$b8RΟQ*tf&L B' A~iAjh?dAppuU(j3o|IrTLzJ0&T_PrP وnH(SF04p$,/y!UՊHv_\vN{}S?Fy[^OVϺ{&&حF4oxsP U2BK>Xc Yk:'QŒPgMaF$$'cbO`Yb~`\sjh"#E~Stzt<ҲK9b5B Ǭ"0cEytj>I;|7!ݻw@S'T50(2i3]glDeiwJa|!γ}ܷjoRT6zݲG:8|&U.{sXז$}<@7;6qY]r]dI?mWbR7WNTCѪ=H"W#8ȃLhdY!= IO}ozXBTDDdn{23p7.ᘂI V?O~3;gDg8ݘ 6y)nH9١2g`Ǜxy&uV:X)~:5A q2Tūպ Z"!z2%#H 8ߙ 0ܶ l Z^FbuA:1L|TQƹK Oz6`; BKvvjNng db0Qc'[-Et ^6BoE_|r`F Ѹ Q=䞱6PtvǑyߘ̩2fmZ)2? \х@L,(37p!!zVE)|l=5w\O*4qS 5`$1UbQ=ϜPeYު\mڑ:!kmmQe9ͷβ\<3?u Wd,1gJ&)6oVh BoADqMا9c!okݛ`1U#4 ZD EX}Vn ׸)/+93i~/m/&Cn,v;2iAzH|\殏8QG?#99E:vxZ XT\Zu`e  *=@OFp}oM~'և_ I@5-x2My2$琥UP9H>u,c%'`GJr4s1M{q?eԁjkl6pK^L6aa7_L@;sZAjIν u84B;pp/;Y9yPNl"t @eKY+8ʙ9_.{k˫[쪘Yy 0?Qkz#]sOs &K>7 3}o.#VT-h E|5 [o`Sf[w'-7 |7cem0N}:gV07[ VkOKVWT$˞u=6CT8E \@#H7f)m֞\ʠآ XݒȈT? <7oCQ~FŖh1UCbiwLV\cX|E-HpR `aʗ4mxD%PHxAڅE?pNA풤ffz9bO؅NVv2Kzkd@媹VwT2ZT"GfKKH\O8aF]GVFY6-#C1=;W_8 ՀmnNb%|=(a@k|KT }#&S.onf3ə| ba ʻv&7Lzs쫱A?Wn8ÿ`ϒ6|/.t݌c%`HG6qomU)j\6\+gpmW^FY03B{D=ZzxoW}g^ee^-ST`UђzzX|NZԢY8<@#ˆ, =5p4SKM(~ qU9lLɅI6Q6R 1bVXb{#{VvjYg'zzqIGALX͓u CcL}bz8bJ}Ec&?pgپE,3}vO>\RʗhW8#qEphE`; WȌXFuZ('04]GOѮ6WYb IS: ~jH謕&Q[Q4NqőPPy⨴k/U⟢PK-)E3@;qLFLȐU Z]T4(%d qt=`h<!bVj&|%/Q\ZS{ac aNkS@,[LgW)ORz3nrūd,x ,0fʜ_"Mԫ@ϦlʂUpwX}ܔ k b8lnuAG--I:Y9"]qѫ}=388'/;,7"0 Im/y3G;2mzV_aާO' %:5&Vd,fs˨՘b*$pGWh-nP!q`[/h7m9j(_Ó X=jb ~l5nO̮\FB.>|VkjVoH~v=ijx.1*щ2fٹ=R iDMeh #H~ݪxBSד@D8=ZےS7A^3pIDg;ۃlFRF;w7Iy)_aF^X¢? ɔ޻"%8ePiXE>jgʡlmLϊeWA.Z30B;?C܍Z6u o*W .0h=;fґpV\jZxx.{#^>(.D״A :v}Waxr|dmkIbz9V30n`K6#Vy`qՋtNU3_m]ꨐ?5 Y#t׺X*)<*i`{YO] .j=RYW.Z%Vd6B9t/)OReBh4;Ί 3t@Bڇ[,UQvrc9Ng(Q\Rx'2֐Z${Y D9Հ94]- Ev^6ݪ{'eƼ^-d,vAHE\2-EcgSdzjǴ90vQ1V'v 7B}\.vwܱsV ϊjYX&so}rg/M%9B{$1' 1g^HnL`j;r IVuFPŤdY-1\X&iI ;!fMES\oJPGT,"1BXH"yQhrvrI f_nj`֝`r\CԴ1![LÙ!:}$ENK_A-%tlEY^6Qx00*Kpg[*FI.\} ĸԟ=mm}p'@* lR档gϢsh72@`6eY}n:Q*!#.-v6:r"o Ƹjlnpoc0S%Im>"{ #w" >XX ^C;U q*~M3]{d|M5I{Y>u%iɸN-kȲќ*<2 (-[>yzj#*]36Z/{Lm(_Pd}{ZIq=Uuu)%ÿJ7N;F:uLd-(!gm +Of׼&"Zf2)IB:N/ y"!90 c,mw_N{qƽ.2g_545;5{v)1 e-1sZ(L:,¢eLZ`Iyم;h]n5ND2FmtT=3\/WӜ: =/DF@.N4`ŠN,A; N N([ǔeU@]|8*d[cTsR6Yj^=JV]J]g9E#`oӅt9>) 3-+s_=ǬWxJNdTD+ A|\!G;L)|cW7oq1Gtڛw5qc;ݹ7՚u5Ϭ:3:0?.ipnK W`J숅=b K|m>;Od#kS1lᇳ  QPxCh2W1$G_?B"'p(:+0N@ƭF-hNu=#MGLAݛBֲ#zū"#9&Z j9y7׉ǰKl $v;Mż38zݿ]%3|^ P*$|ZgLPCo$L &#iWT(/7^p?g e )l=oSw |^=V o9'#jm;.8 *hga?5`<)ڄoc1M#bTַ!cuٻ6GRZPD)ZU {A>2:rD2!o'}궷kzFtrJr-c[I+1)DUԧb 5 ;:#:ݎaP|:'@QCI#5Ht} އ*+*IYDO%6OJ"[?0tBI& oٛZM%2+-F5~E{3u[$Iavw>0mE{F,(d8|/bXOKchHrߵ*ڏ 'DGش/ vVX^l"ZZ(be#Z`lR…8c8_/=APhJxH޵ȸ&NkxA\-oAF v󓯌7E,ԙn=%{ۜW Y Z@ǫ8T!%*;0eG\-Ku  w|`1kx$N{H]rUx"8UI]D0٩T7nth#^ՋՂZvs\_!kc_}[~# d9nR ZRA2!T>2u1јYxn |Kژc4/7y%.ec]Řo@7vĩnmeiN BA\TwU]<Dw#>kN Vk`>ONO n &|--١c nՂqw›Qc1n(> %=u,w@l'E7 4]8pano_< sVt*OUIHώ.d}Rj{ ]qULcf>IzIG)JL6' P}XI嬨#Szy7m9gU4em蜛|c'f ^]f fx>&f7#e5ɮYFzzq bjƼ7{0-!𽂙ȓJ%Fㆸ/'EDJ9)0]AUKMKlb6n@Nh}GFgz9tvƣ#ʠ*pf7!Ȃt<+}B&LKK(W 䋁` X#ÂԎumLG.-ٹ)m$)ultѦch9X }j^ \n/، 0c5g2 3{bZ>E{؏#*xqBt#udJQv+;mJjVrT3I1s]\tp1R+~yo>0 Bu;fPxSHO1V]e|ۮ@#}[XǑ0Ѡ&.Xa]`hp/V1Zm SǛ>VP;,T*uBAnwO#P{a.h&qW [2PxbTi5 ~o]Kjr] GgI>x; 1k+ HV,vCIC3#B1 MQzp.3 Q&Id 7Q`^зphuh&Kq|c]G3o2q%kh`(P'rMyv0;LsO!|auJ=:~ gC+(J폌;C#=&^9[K F8s%ۺ \1x"M"PŽyvJ7l{ ܵluhJet*UE\zrZ.c0A,гOa*',m4QgL/:xա~Hha\jlv0ѭbRm5%zPb_e`@*pedqf[7W~2/a% ֵ%Μ<UЕ:G1f$(Ĩp--&z}Kbh*@ 8/ӍoRjR;\fUd`HBð ؀;KP>wRUX}0~9s,wVJ:'Xsi̓M!n2$pv3WP@]ZhwU?M'ėQ߿C>ɍ^>7c5>WtzK̂fNaZoGP߳e[D46."JMfTNŚ\D5 z"zD@m * $6<)Msyl1*_oٔKل; ls9$ȸ[nvJ87i)SPwWXJFI04"j] xcK4xd]-ro"Uto퓢yJ:OpOx⛛:ҏ@"j^I(@s$uyoA38ZJV\>t!לg6jbWxWQOANz/'cIh{zr׾TZybbA,K:4aiKS1o fyIVIeߵ>p\,}N|Z:erkz\ \8-ZKxnZB؟P"Rיhc_I/E㎨SrC e=6d'R>B`kn愢vHWhfCy݃p"=UDEB*R6qA >'J#(Mqi]Z#^0 NXq499|g|I E.BGn$k%&)i^q񀈦iyh,;ow5zaWd:kpqrVd[N=dI<6 Q^< GM",nj T^MyU|ӿ1/< NjQƧyF9U|nӍUY`oTOT<ԂvWNvf6ejY-;e +je)vr ,H2`qv|@'AhK;E J]-~`A>qٷX7nVzH wI6F.V&nsכOCT QLՂ*\)G4JuK9mKġ P4|g7 ȏ-;P>0igiՔ& :wXܑFsOZ3,'- TNyB:p+g9*=}#Ѳ`)2 ~_h8m0N5S{px+_ K_Uң/pmr`ȗ(;kQ&H{\xF>)͔֍݁n&1>ŋۑ3_1leFVabY8pa>%G(=EC%Q)RʇENfiRIGk&AĹ :|݌n1JA *gfF(KvMoL,Y|y,ț;|FR]nw(0{:윆|('+K%!%}5&Zp11JË.z_4 H; YJ%Lcl+ܝ?xn}/-7htPbR}[GQ?U{d2R ˽9q{46Pi-7nqN+m7NJbnf=^rƹ3YD$l]Ņ1񀟔fRm,[Wđk@\߼"a<t UlMwQ+\#O%6y+~ )~ : Q{륨 ;i*(ƗxqDe%wU6]" eBP5UZ_UسHGS?.f6F32 Eas&KpǞP<0"Z9E7%訆#94 dj/̔YAu~רH.\Q "~*.%rH)}wOG~J²;"O}]NS\}ő ދ\ $a45~Dn4` w5xz1c8m;fLzfvv7:wY^q h#fAE\эK):V4 {8{*y?ǜEiޮ-$W3Q~Җ c'h;>`sFW:+(pЯ distrobox-1.8.1.2/docs/assets/distro-box.webp000066400000000000000000001265421474517124600211260ustar00rootroot00000000000000RIFFZWEBPVP8 N*8>HL%*-"s gnܤh9ņ|FJ>=[R{&_7??=OgRK{lcOkG}>3#_tg>[o/>zgoOy7z9;%x~U7n[n$>z-N~ܐۃO=䈱=9dw[ߩT_U dI}K:z[vf;7@Ӭ  $@H}Y& BA@_qTS9X8{偎aBiz =kSI(J;D8ka~0t$0;֩n6b5f"Y:;pB@ c)h!I| Ȁ¸ruJd_''&  X #"МN(1jyxokMX_8<DzHX=-_g$#K[6s tުv4B˜ᠨ^{L串#eTs!`2ur"T{蟉)oRG@H9t*JK'U:m0w<]!J +g{@ri~ˏ:|\L G9zCmtbM@A'd͵߿ݝP~}]2jye844u`gF!6z)X$ÆvY`0$ v)"UU AnpeoV,V|"zXZSi|dbM \__/Of@|0ǖb$&][א~ּEFdȑB/x|ZqEvmݿLԠE-djieF~d^M2n8 } aQJ]Qc_8]a10}]A(2Li5]ʃ06j;T)Җ9ŭBmJ-WOP;+P:"\Äu?R1NMQmFbo?jZ԰;]!4dBZS1T\`t槻$b;J;bDjׇT)6SY=d& -4CYI _/yļ'U`xiK r(sz !#i$&ri4+WެSea,=?vX/k̭"U"kX^7 w-9R05,5N{vKS|/])1bF~{xX+e7NDsq]_ꥢO!=kX DR~Sf˜piE"aDJ^# P,FL\3y"M!;GĔ7nYji Bfr'aK}ED*EV%visaXq=$ "$ar|0gƧKXZJ;ϤQq: o\DjcFSgNؙ; }Fb6=UJB;T"CO $ cK)k#KaZ Ȣʌ#Uc̎Q'"u):Ui`P7{?\WhĒw$ȤnXCjMAs_) /vƄ<-@GJ}P Ct9UWҧ>;]E.*?ߊY]w}o:YM .icU|( 9_M ?>A#ŕ-Jy*Ǡz2}?@ZR͋% v:#5aʓ/h+滰MFYOɥYK_UhMfb bGsEY eڽFz(l=9"[2BM4֕H!Y+L"P Ds6xM< AUʊ6qݫDpn*bUVHS'9Xz>tEx*tHMp |۞(ȤߧJlI LL]ٻ7f V'2(V+z9XN?ojbٶ@$u*"IH~dUp ~W1,d!_め׵Ł}vb$e jhS䠅Iw< 2Rp[Y jb=hMr0Rbར$e8>4:PʘK ei`Lt;G?vˆKqi=t:/ėj5ZvJ*t5Jb%G!OQ6 ڠ]<vX]mOJ<$fɚS&ŌZ]7>v}Tő&BKl^;-[YFpJ:˱)+^'RR ZV4ȾpFn|Zy_q^)%hkXoA%[] !4f,i->8dٔ=cYURgrgbK_!K/T i޴D3x*A(qwX'sa q`^Q4sK1}Jdff M nC`9^I^ &~|.|0$P+szg砛y T79d% JNٱb1k9Q5wǍ&8vZk*peGGB: [JU+u2g#*Fjl}uAimmпƔ iR4pr:B?-e5BRc;]W/Qf+?%8_) 5,sNtѻK?dS L\Kq.%ĸG=\=jqV gd="˂#N#!vu3׊Ks>D ,1 c oQMjpeA[^Y! OU#/1 B3-~`+7DB*g[`c]bm4TN++f_=ݹQf#kh@+۳Txu:> s;SBƹ[Wh ;ƍ2K~lD }A{D-J`F|  y<(gr/}!FaJ KApN1tm;gY6aC č_ԅ(r xe R.v1 OTQ5]:.!:͐m],t1^c w:2vZo/Ji?@~n#.5xo}qW'2VH@DPs3O9ɃOӄ"nn /F_ͪnߎ;FR7yRiu;XlV0ީRnG[f,zxŖ!8lQ?Sr+Iz. k+'r5iLگ9*2}ρަG(E:L!0 ki t5RbKnT + /ϩBs˘%PٱB |;Rza¶K5z5?4.'/R[ԝ´bxvW!X28HpbdH^:4IɀF#JVjDrS:TtÎMKzLWCu{힖2a+ :k q%e-{#; {]% DavO**~E%㏕N!RIB%R+dzP`.(=̳cDM 1DXn Xj9ѨlvBcs|7rYuWp% 5&)x%=1p(? xF'Nylߵ!.3~vl*ˀB@98YӾ ZN RQ28M=-7Aa̚ o^C:|Z2,]kKߛ_Rb2Ɣ(dѷUjr=h.6&РW5:/[IXb>wU5}z &MѭJ, >h5]< 5i/,H_5rEcQ J)p=Z`۳IW;I\x}ڷX~Zd)tJ"@}: 015/ZN.WVlH8'V\׆<'gZ^>`œQopX"YC*kd}J-BKI" RBeg99~W|ivu~.B5|G?TjI WA\YzsZglky"WUZx>y &'[svsMlǓX;nPy=--H㪏V?Xt>/\̘jp/>N|,30tDaGY^D0\?cxPG]&!H:潣K)L2 Jm0 s{/Vp䶶~nfSdī6 SaT想Q=>_5xQBz[LND |"@A83XD` MHfy7%vn^1}W4R?66c,JFۭie@54/q6>5ĤFaL&HW7N_/gjѥ IIтdgaB骉d/tIWٓNUډ m{>v_v;t/ \ .qOr݇cf9(= 4ȾL.CmɐDS,ig规& Z)cM*j"f`/M6V&A号~($qyEٰyF^{ *e UY?Q ,AK%!',HKjYa͜Fu5`Ti fcQl?NM؏b%X!͙GwO Tž~*OjI$魔rwӋhkkw.%]'ϑ\!CcbR)o!x7Q{ 4{d{whU^v?c4Y!c؋ #VhTvDOb/"\ayai[UvIK5ixAzlD#͢,ܿ|I]t_R`F!= -#Zux&Rsm) aM$&I: ֥U@juQ_Q14>:;ZiZ& ?q9lBy@fBsL<5<3u Yt EJh,V1FViJO5$aIz \g䵈(@j#]`v1ʶ˖^&6;51ҹ*A$M,:w ObDV4P>fW9teV q5Ys־l v2)A0h:\%NyqK3#"ɯଐDgiwO$1lC5\P)@D:tZ`,Fhg&^4׹{ɭA"dDb^Y{gA&z)R_k8w}х0b~٧ {`ig;/S^p1b++X`fm?Tۄmb{J—M7;AjZpcjUاZ do9_3v 5Z X8?3[,OhKd1G ͂_ix2|R!#KuVrHҡ"Mg.B]ǯ,4Ȱ~f570>DZ/*[?{d0>|ٓ/c^* r0ҺDp1pz$s2FoտȞbHxE=I><ȷ_ڃfptTrF{6e+D&/74C9rzdB{nMgHwFg.|+뻺#ήC{m83e"uR9rYѤԚ:@{k)ԗNm%'vEZ ؗPW D\U hZgܗ~c9g@;5 0e;Ql[uXPq)qv2ZF+Jz[" QeL0#ޠ:UCܐSu<]b[&,TA=XDAlީnR>ݗ'40r α`Eyoc̑ zdUryY!r?YgIX?뭦ළܵ 4' c|f+ w_r'ACL}"< D;E6UG18٢:@S 5@s!zi8 kgv@I*8=+OY-MQcҮ}$jywo@6EK@ #1h_7L5IyX,7WnZȎ*JZ}1}eQK˩?j}nկhZClu u]l<"TQG2'Y<8g|9Knh FGߌej叺sbd\B#ZڻT`]#)4>rA@H5Y-Z~3wOvwݺ.& "];ųB%,Q 'Pך< 5TDP҉vvJ3X$0xTkb,ؙeW瓳G >t،a7X [Y[(QlLF+^l">M;%pGLg)Ab!.T&hvM ;H0l|NO7 %3L$BhcaÕi7(x+(h#1E-GѺTvMA-OvY@H ,Ѹ/eDN#-"+xVULK%ݟ938ͬCQX0KW/W!z \JG6ΉSzR-&_j*E!I:;qO0%JHc^=y9ӂN 1:AoRd۱< g)Z=zz9{}Ny̢ "t:pnhX@ ;]%yw*ufA<iv!Rs m+.~L 6!!=&`M`񩅛:vb'ŴġnQp6$ajJ=㔬0@bK:V*?\&=. V\yh͕Mre׊0splx΅aaDOϸ'ͬo:٪-N)R*'FaHy!<&dK-geG9P.#YIi9s.V6 h9l=b[UV0dazgῡZ?jeR2Nl{j80g8B $|'qq rO]o[Ӽ?7C=Os?r){"s,6bb2iq?ZՉi>j6/zz6wnASs5IǐS!Q,RyizpLش2j$P39X}Mm !XSaBs$£d E\#+ *Ԁ3Rh/!zIX;mk) ҳ;GwfGW1UrP_!-DokHПnwE' ܮ^*. \;Τ}C?O6GP]ٟ9Ky Cm@+OOt }[X~_$؎'Jy!)0ϼ. kcgB@=f7ةw7  rdwMM}:s G.x\mx=Gʹػ8)kz_ }?6&0)(bSYG-P`L{ZGaOy>8 ~ޤdk60\ }ꌪo}Bt>0ūk \IW}NRBy} 3:DY4[g$9 P%}[ӜGe9?vBr"<7\f22pnHISeީ Ƨe;pFmx&<_3 دIq ?3|kD%0e'԰@!u nIZO'7)+yAK[tKcƪK$ju0-iAɥo 0L\¬DolsM"j s*NAv0_'P_ 7Ն3h$Z<7;0 ۵$#M˗62p_dW;}h]cO9BǦ`z.xHTW^[ [Eڀ)MΆ'\GX[իU5 &NԐK:vBJlCadeoʧʝw nZYD6 gO3@Yji(-+>ͧ~ZIJ wmXtW4^VwJS$nxNu˥z;aVGDD%ؚP ;xkI>h5ņcˮ:@lҪvnWb3%S;96:IY(hϐrP-p'0EXE2=YܸCUu91Pȟaw=[[*g:0f?OEp7QLm(t+a=6 %@Lqw{*jõQjES? T!or7P,-˲cXMȗ>YJ\'B ZzP@iQ~]x4k'jr5@ ͗blR2㛮/{X5C "~3O1Z7IÈ Kt&;Hl/VMx YsYx5o !8}{K/f O[Fy^HԽ'j:014o]l\ oyQCN˝~ϨVMhSc8ǵ+@);)%L`؟P7ݦ?=y&eo-kiJ -![.NWAjuq2*#ww@j  &v-#uJ=FB]H{f+uj6"C-q 7`" [ ơ Edh'F ۜ@ICϸ}壻.zݾ 75m8c|pmmJ $ *SQmL&aLqMk(+ʳ_}( UʫnlN?v"R?Hklrĕ7E BU{J> N1`y5xjSv %wŲd`6bKGiq}ZwG-5KG&|֨{ o3}S.tyczv`;0Q 9I':>eqJq;co<~) H͸"ئ60k ǹy`R#ꎏP:`̜Bpd1#F7V }\72鷸 cp<=.XcC0Onw\%'c .)P*v-!Of"`e% $ovcm{Zi zJ?P:덑nw]uqGòi2^5B7^2sb*=̅ ?w1!?sH#/5 iϽ5kuXa?@CϚ^ޤJ @79/ظivYSk$ҿ;jVnF? &ϊAX3N,QM&:RO0%w<]wBw r(*RD &q7P'e]4Cx*"Ւܱ%c>LSU򋔫ihphJ3\ 8ޠUAB#]MZJc;0:ee%Y)7ʫ~ɐv#)d!7%tP1lb7nc0I:!RՍb+6\qJr.P FOLDGJE>ض+AOpoe"}M e/|:HcJH}9$a BUwcG< KI8;re%!yvp(ZU{Dݰi!%%?^v1ΛCCíx!}VqzhZ:T҈PbTP5룃x@ڑ!+d|>j=F) 0hQ7OD >D$Eo}peQIyHZq@b1,7EV8X]T,d&UY:AVe)zr%5E**LD}m#-߰JSS0Y\ՂNMй~;~{.v47~r'򂝅˭y{JcS1@$fuP֐3\D]jJV 3ܖ;Sb)/siCz҈:h R`ep$zڄe+4-;y E֥I܄~uhۅm!ZԥpDAJ62;t$* Izge*Ȇ/q ydchVb0J%~϶B?lV? j9J5*H9gF140+;hgHA eޛe-ւz*Kii|~U{ʥK ,fϸ2$r>abMm~w+۝qqnߏ)`.zy C1 2{*e`"P!S* \Z~%1Mu+/f@e9Z̗#gC]{ v.`ǔzuŀ1i[/]z3[l֞l^GQ=Vy;5h^.d[{^4;.& SbJ Ъ!g6"T~!uJY' ѫ碻 fEhKŏ"ʶ{GM<)g~ $& *y0R17!jOǩ@ #q< rGLz8m}(>q/=pzdyN"9Ȥ*ΐ$ Pv*P*Pu5mfUUXcOb h?GAA`GmZi@=nL ߑw{(' NgZgL ztq&>I[j~|KXV>"'eIp,d~qK9G5"|lH$> uݣa8dVqnl%/Kv=S ԋYq6 fg 8~GćةY%+2+nBXF 3cE 0dep?#o@׿X&M23Sy]o;,UmRʃ&cd* 1d"m srO73 'L׶3-\YnF^Ε~uه.v")_f0-U3-T‰&G"5]V+XDc?7LK,8,Y湗  ]0@QXl+HWEb:kݬ֍!s]Ϟ*sxafD"6wxm }ݑm76cyKm2 F؝t\'ٞ4n L-Y{}k6C`X,Bʜd5xR0g)X'@ւDc9D?[֊ý !ONCML*e;WKri|͢WkIq5Qױun6=a;=BQ6Z;kr"B<2 Jj.N*= >V&@ܨ2e)d_楿v+{e3oL)N|5Ο ~_Yn"cf Ds;HXpMr?fӹOzȳT =`~saϙ!zZԎrȆ_P?F+I3+Ǒ[9v_6)o* P` ,ĺ@\MSG۴=ϊ3W̊40 cz^ 3eT 2YXQ<nmpo͢=Y^C5r"*hXn<˛w|l()? > H9j( [fI$TJ cbN"iă8i}c'Z.eyX@vW;tEu3JxFFZ%'UQn'Z1Enmâ]>kM<ĐSڄ`R5tG#+MU Qw;f|e吲nax9w/`W[&'g2F#gspDg0߹Zwxwvc\$ULJ7񿜰[8YjdM =0| _zDdMZ,f KHkgFz1'.T^m9C t!JŽ BGjvKGs&+g(Uc)߶=uLz@t"Ci<Be!5rŜuxT{b9{@zНI#d[KU-NP U2[yLna%\~ؾ!/#]gKNPeȘɆ4zBVdVG47Bs4#?~n;Rq2NWR_m]8"?Ph#Aiu֭'92}~&qFR@)FE- yX>++D_"p0] d/o͢15}d ɐzlK6):/.3He;U;]0;!l7C: i!+ɉa*haPZÀ=Z Nm&}u3Id:k#ʍ=ު~x6@.;aG{ 7*QLS?CÛUJ<,&f@Cz|Ğm xz\ zk"7ɬ-ޫ6Pf{uS"2}O*=EܪmhE9?;29 $\IhBk:NJFd"oO%̀ mNRrq5-ov\ ӱOAGVIKw?pmt,)2G6Z4rQ趋HSߤ$P{B~Xs& )_[8V>Ari5u%f;MۆY \ wd#_ͅ ؉pM?:轑,ri0g}lZ.GD7< RWYj0ԩ *p2mzVs,RkHYRuc Ύꐁ8:CzPA=jB Pnn,R&WVd`[[sֹ[҂X.)t5~,4{<%`o)-S6cCϪ cܭ ]ܲǝ6%.a@V:sr-CB0a̓y[9J㻱\Xe2Z&P }#{4m9.R^¦))@PƃL4@Jjj ٧s/ς 6N_Q/2MaȭK Y*py;̒TMh)cB '#"4t} 4듑C" m|-VuTj?X?rOt4Z7॒œjxɊUc+'ոG*_Wԁ݃Z_%v.ϔ$vYq4hRmWKjòX$rbcb?!~5.g6Z[/Fm ۊ9@q`Zl"Y% kFk`l!y3DMa*qr%Ze#XuAwe&"]pNPЗYYlURQSc(-H1s-Y3Ƚ%nnOS{>J}[h%*D}05yx,EqG>Y }ҦoiP1"zr XS:.Jp{E6&%E1wc(Mi請t`E"K#>(p1te/OR 6^̮p( ib؂W!LNpn*guaL)[mzDUJ-qٔbH+>dqȸ-f= )oa 6Ӫ)Ögu-&^VH0NfL^}EԨ]lX2fݫI mg3zeA :_w$%WҀGkyO Ar&j_jfȄ׺ I|Z'(Erh#Tl -?>m AdaLV3.뮇H 8;5\,ppz +2,L_| 6WOlX^ihQVq&@M:;Zw.=s0￙b^j3ıΉcϪy' f Q:zn۸À At*YOҒ&o$;|l>pK^[O&^{VRK]m}b~c&{ϒ/XaN+Ik9`;="eEL/'|6:+C4g8^G#=3EνT9󌫓+Z'%bV[*ƃ .9Kk/ec#+ZfXn="d$g9FK<gJמkچ0SH4%kffLFƉZ ^Gyqx&~_dkÍF.-@`@{F;2 󿁛Gjom_+Ϡ¯֐{-}+p,xJbnE3#6~us-(WC"{rin }N#fSxQ=H`iVJU*C%O"J;>R[qi#V劅kA;d&6C7% B'3=b<2M-TA1k4;# /i9y[sԩ_ d灠,F 5AIܡqb˳3VBݎT2f}o%ZuwT Ï`t^^ X~RYAmeH[r} ^NSKR]B_IEȈhImbsI,-!xG;%3Ɔx!&NAe-VbW6* hZ֢BW[fc-GQ^2E . 4N+VZ*kD!͞Upo]4.ӯϯbsSNyKgo/#}DZW̟* _TjBgu6.4Ot $3yQM[lId ^BU~}@8=~A=Я&_,sٶw1ꐠJ$A"J،\KIϱ(Y{O͘K|o2=$]52npgò.ZS~?n_"l{ض5wGw,Sgx2צy)T:fQQA;8?>P"1Pd=ݕƝ'0vs{Q8KMa,zS9",Mrt$ ]d˄_Tub(^Ŭ)o| 5͔W+C5}k i:K : ??,]:M%<|ek!34saҦ< ٷXÔ""j_cJ=x9ҩr"abH$(ʳn ݲ8l|󦴋N p _{E ငp~s7¦PNkQH까 Ռ[VYsRn^ٟZLi'6&G y&ĢbWn4{eCT8كvuRUA T*`@I$Ȫi?/8N?&}>i)?h~4pd9KQj&~B"VwWV1^G|wH??|bko7K[RLaNK]{01LJ|6?]#ePg`d@51[I0(pYA Fα$,~qҵ!9 45$h#-I_q6pGD%n 1t TsQG6=}c݃}9<^1b͡\s`PJ~T)4gy!tpAU˘GVwep]Ĉ||-7+@wo`Ј G F}I`E+B%z|z 2~R¾Da5MC62)N_5q̾Ssݻi]!}P.Ov^ (O?hN]IG" j^F<bB|v SdXI^TQ`= dKfU8$6JDHbQvHJ3`aÄC7ןhjS;~Fq.k=I˸վ1qY|cv#B=ODtݝ*.o 8 *Ra2I/@X4Nd ͩ=0-/%D#vBco"ZըwT n(1xUM5 Q:Hȝ ɵT:XZ1q7nZsF{7.~/$о6~K8,eX*^_|9f(* KWyrw_l`g?MHҟ>jV40+\j\P6UO ~jM}@BҺR$UmK-cv5:TFg]hJ삎?@&WL*Y)c3"q.d]`O X6|U$$pʇst5T42P1g5Ks/l@%c.^OmoҎ\NZER5T32gӃƎ}Z)㩾T{בJ.;x0fnƯN 7!wWw ;].- h{: ܛdV윖c]Ӷ7ZA4aA)yD2}V?h6axv!ܩn zO#W` *mOjN c5> ..j{"] H P;⮦iN9@u4e3Gp)PI緖 M |%?Rpo+d.U*%mga{.#tq+O}b'D3촭*vcKE;j,n6y>.fz#uk! P^Jrӌ%lf]ku8))sc\c'NH/-)v-Pp<^c̝X8yfN}e?$E ~`΂UC̐y` bp2CDPpEq)[,jޕˮFe/9B.1izQ4Ivn])v>}"Mh7_:neyWS2wlzb'%>\'2tRTڔr3t!1:^d ,!\s>J$?Ѹx: nyvib?{tk׽:JjϐnFLm,Dcg =WeR;ؑ@H#ܻ^Y`g]R  w1ʤ%ocEX\G3I.WlzH 1[W`:d} ⷔUec U `)wfLJ$%hyJ&;b.tT 1f μR}XDcogqz0?* |\>>ǚalD~Ľ k< <.z)PL[tυQP'WuF`Waħu7 cc=sݸ( tS 8;Fىd>z:j"%he$f!=}Vr_0ƪ `b."WTVW·#WL0>N^M=`n/śrƪj%nw!F8GR }>ߚĪNb݃$ِ݄]dܯeZob6Y`sOH?GF[߃RBI;ZM|Abr @*##_5[D1p;GR 2Dx6\I%y~4֞UHDe6u9DwSI2MQ53xrCFrc%Tx#?_?-|,{*74` /m|wEMn CseSX'JSQ2v8 @O!Ӻ-(y`p|-y.7oĤ;6KziK;\1NI܈Cz =TK6&|94hsp4X'& d!6d3^@kENb 2m>?M-P#'v1VLyNc3-`ù]IљMD(8!g[+:a<juA1G%voܨ8}x6@i/j4t4{3HPǶvu72sA* lqC JKbiYV3cz Ԁp=uyT'r\&;&2f6_s*1T]bw慺xs_trҺlP"ɸݡ JW:m ["3}UvXJ=9d)&.(^&{m!woEl"a2gUߌl !О-*c<f"P&[u'm<C'ß[iY&2 eCﭠ/N?hZ.@`ST<8c.0m&EuKv w窵ޥG8\&\(eN.l,%G f:߭k@Y蕸r]%Z5, dQ|P0G1ݪGْ|>k=G=α?6\*صFP]B~nJ HR78Zϥ 21m^N䕝̕>U"Ö)ƦrUY-'ɿ 2{!'dҡ%U' bEz o [Ywa+`cfg$-i38(8mm~sUXUab9a'關z fSxv̓w)f2⪿ݶ.y ⶜kյȂNhsɕ41\ˤ6`!U+^ :F􍊢y/FٞϦ,U]FPר'mdt}<"wI\c3}`xt{J\JWc5WቡTA5wFtVȻ@ i otu.aO䛈Cx+ fKn"\ӗ mC5ěT̼Y Vυl5@M j"#hi?T{FMcAqh8$ιZKgp| b' AR#Xm1H1/k@ns "Ğrd~󛍦QIk(j(ECu~i Hu[o4xG( e47Wq';81j%rCxNcHx7ojZ ր . :%u!:Аe֛cXqp(DCbSHN!^Cg_!C%7;:~ӹ&`h j w>Nv\ThDG2=43xH{Qh20)X "laqӟY/ ʞG\P`޲(W쬇I;14h߯{G en]/6OcblUo]Ĝ.y+(( .&*O]VN2`<"v#q*\4,صvx y<Z> 97(>n$^!ZqL6B(Q Z|%V #bkT褷3*gR),:=oqL5 fVMWb^6t^D60EL'BJ$F82/F|YHOb!$ۖaj#Ay={,~p֐qp#w0RI Җx"F6mt#MSkIC/=IWs?ak'yi}tŐA5c\zC;P5e) jaoZ6pȢ=9ٵuZP^]=4x.S-}E}q14?:R_dW2/Ƥ˝n,YC(AT gx:(,7料 ;w]wLrX(;>ZMJ&vh<0h bg%%ra~5*!v_H:~q4sd'ȪEfaPc*}'NZJ~d9fCSPB-soU%|*Y1' ,(l6:>xPsl H`ŪD^euGglϟQ2 0ڇ SAn(5UTvΕu<o.vhyϳ=dluc] C}'[ e(o?{wdلlwI9 Ia_~z4{%``iX[OzM \[ S~ceyג]Mx\0f( r[s X96/jWDa믗<84DZw/B^fZR=zb%tlWFr,KMt\*Q'{T;']ܛw60šN, x=4GepX: RS&?S$>. 582egDߨV1L^i|ڽb^UGpx]˧1C$Kjn % 5ۭ/]+{ sRF˅a4 ߂ e@^FťYԩJ+ GkT~?++vZQjͫlwr/gbLq+ PiB/=z2fT&.IFvq?S&OnɶRj%{ʐ}DX/y*%&:Acrb)7'M?cuB/K#ҌKhɼp7ZUjpaݨ*4^nFAXe>ӝs̈? )Pz>~7?U8Ȁ$WzBp l]໮+1bFn \Hx@3ߣ9uC-V1@ǓR%<T9@]#k5n'̙Dp;vFDd@ckT*nlK=_k@;:1aH_AC$`EwPₓ0G0a ߱@gKOG:6sRWhm1=sc}^ .0])jRHz?Q*G$)D6"zxnuR*~ʪ)0 4ȋF /h|GӿЈ)"<:/|GLtm6$.1moyϾLIWP7ղԫQoÑk4~pgEdG?&$ѫP E*WT0 j:8H:.xӳcpL{2q C-%ќԇ= f <>=l<٦tQYc I=#b TOw-"| =i̚4]j"M{`C]ZQsQ]?UwT9Dޱ<x[^ 4\9N+-r]7ւSwiloR;f:ZTd$P`(1mMB_ ,d4ҧ+V/;ɷB@ZK3)JSڅ!z ٙf aw=;8EJ36[Q gfmd鼻9,]&>k[ X+hU'>c5Q"2i7m42$9Eǧ8Kj_ .HVN_kdYAH\Uc/J FDIqxTTJ5UK]H'y{mTǜ\\̓I!{iK;RwlMm6E8{0\IG]h~C ׇ!㋌Mi9H*qU,pNlV=#"[Mr'\R[_'9gSQX!v*%ʉW|5oE7bאAб(}xfv$)0ifPzM{L*fl\} eW.#zM0V!wLkM!U\w t .I ;fs%M;X@ei|DPqX YYPJ? Xn,ߔQ kDZ(^|_K)Jʗݿ;t>%=I* \%^,(\4)K :BXKx$}En%HĹcYZ @ |2`6I4s8wvLC?\1ݮfn cvT0뢫ёp! /^_Hd}2`bcƦ6b>K$H.6ٓY Ro}oY>]2 ڽH6ѻ4ɒ bŠ}\'?g 9_\ Ŀv3݅\ATKxh=*!NZ8YLܚ!8U\.6H <tj9KC+8&H0SG_Q~[.Dv9ګ ZAaD@IfF4lFҽ~orVT*6Mw?-5~ 9S 2CDnT~ .gi_ftA7O-Nk$|Dp~쌇ĜMQ:(/pm5z"4BQdۺu*l]冾 8ځ.YO1YZSAJUx m<mRZ}p毽 #ZmZBr^Ŷf2fA }Z rZKX痀k?v@AV)XIFl6~wQ-%U*DȲ g%3hz"m:޺-U|^lkqlPZՄi"3P |Xt23BeV:`큭$+oHMs }|`XLoj;q̕JyéѷxB"(N70 H!+BX tE^DcXS(9s֡e.1'Q~2(Kr7dK:[)VpX&rL E+}֧:A4J&f~Ч}8"xQ’ ѩ;M70ArY‘o*l\Q'Qp[`&9_,@;j(]axv[5yyO\2=.}7šRdpHRz.-3Qm.?Fi4HOs/^ 02UD܌B AI9~Jz喰m1)Rp_9f21<30f}S10eAVDzTpOhz'\8 cwPSNKhSS𗫖pz f~=+ AtRntgg2p\F ~'9k#T _pT43|l0}Ջ72G%KQwL{)=9gqzKWV V~ٮZi\Ec|\!t-e2Km)ԪMg݋l:6+ ,'=C tT6A 1GO[U{|AʯRv7eƧ7 fȳF1EZ& *T09`_ Oj/S Ƒ<s>>s#p+`r%'l╻Y5!b{eEnuN&2FpdoI@1zvr>V/to{,m7[0g@B1})nvK [y[ LA}nm9=[/u) .<&'L#֞ 5m\L$@:"$v|89.6ÓqQ燖 N%L(]K钮#@DG(z> Kd?k bW^>6Ƃ(w2͜NKworHM`]לMiZiH?>7kv)$j#ov"2JWѴXXQ~*t&1Íl_r‚-p4T,a_ZKE@!K"0,/B[0Q>RZOR$J@9mv>_\3j*O;$WlcgZzxxöA;,F .$&Vʒ;-bY?%cdYaثLx/+${Ϙ2Q5[5 +q; 8$ ?^;Q@"l;9=MȄ#_ʗ~`i ; ^">0kLQ<)=LcvA Wر/TN:oW|<]{NfXIk -@^+yGUo=]0 lJ|\Oac`؏?mԑ(P|s\ g Zt5ɤۈ:eVӈĮ *k6@#C{DFTMaKۣV# 9}y2W(𱪭ELͱ[liZW4'._eӴqad_*V2p,g"tɊo|F쯱+/b 9BB}7ٔS'w%\R } #dlX.(?' ([7Ri-ЎMvbKvtR=^->!AL);Gm{|&赜 w^b !y[r0,UROcWFH%bɷ^ד+H>W~$]X{һIsI>vG-l #J @ hf憸keYæ!x\vV`7GbNz5 EwG R4hNaAѝ3:Zt,'ʘ^P6U ٮ=H 6S'zd%tP{~F+S#W`%-Ձ Ɓ\MFgÅRL^VyXj|NT[{:&*8j&X=UZ7pxҌ`5Di/~n-Ғ-l>=G= "zmd%[waWyk6 @ԆTX_pIiwƭ4 ~u9D{~j-0UN5ThK"FRR<sujP&u+B)bsN%@O"K'Nߐ#'{LDgOr"NNz 27V~,AR*@kwi;wU4ɗE&I"1!Y:R:Osm5M?h2T#'2.I-Q´vII%L$8Ԁ?9%SrܐPYjҵZ,?dD>P Xo7KCJ ?]{䙩aѲ|SWnM8drV\ucR@:֜d`!CFT-*4z?3ծp ̿ ;HEBBXNg ggήj N"|*jg[a9ېWy;:7ktӪ0YY,\Xܚ3r\uU5i5h0.:C g(U5!' 5B N;C õJ=-Cڗ#Xt n(ʸhRD4uX35NpYäZ FHvhr$=ƐA'p~@n6&ڐޯ#ޝ:$=D~IM9)3h|?{[]ߔC&h~`?`s^~Pʍk ]"LyE{d* 7{ s Y ]"љƻ>90otҟyp(:V -"aIl324:`Oe{ҞPƺuj12uyߟ|&2[X1_V)TT:Di8Z=ZDOgr_e[!3ۚ~GEQ #Y>/,i(|:G;tCS8K5yֈc|D'b!4H3|R%χP*g-+H D;58iX|~*".={@⯵O-J;tR0M1ĄQno&Nzp'Bv]o@Q!fۀ]nYGFK:m}?w?vCƶW Qa{מ?&7ŢXMs07ʎH%BDz $8,t"#Kk[,[wpRU@#)<;CnbElS+ zѐJWXenVw/"-. 0+;+>: qhqlj$8C/W+F˰̌d/' AU By,J:ngY?H I`9-xT ]Ivk0hc!8U ǹhݥӆsqHp EikR9#B11k @h}H`Z98m.? ?|#;7|l9n)PC̗DTT^1y̭:bffbCաѽ1d:79+r1vѦ8B5w_FȕvH0ݟv"wI/:6PM=֐otzC.u'f[?6:.u@5Vvðc9w[#.Qnst dS|?|,޻w7Axc=IYYF l3Nyߕ$?MuL4¬f3rj\@ cd-CW~ZJ*0TT3@cP{K$砃:(C2c{1:ȷ&ʟ\fp:dz\Ό@A𐲳[dlNBn֙=N zޯߗv`hKfN-~B6T) ߢؤs5ktLQi@?_=8QPCWdo iki.-Lp=hp,scBM0O c3 OAxcD-HˁDtU4F%[L>e=8 }OM(q}TU&&n iFdϹhRQL:G.k1<',8?MH[$u =xTDfiu{vlws$ &SJp"xґpZ9`9]zid0t $\vMVhjxC|X6&n78h ^1]"(H76=AH 3bę Kx/>J!! @Uv0ح%:\+,pYa<_[$z +=p%nw]7F24&h+5Y2 2ӠEQ}&bcW6,7<L,*PI.02 F܍F lqۆܠJ]qtۓ 4$AR]6Ȯ}zȤMf(QE<57SV_ 晐UNQTf.^A;E)2J(R;vae O~Œxm0,*#/* qƜֵ/jG\% -y /x~'(YiV_>'B ?Gv%,_yoO bLN6d.VL٧XB/UV:O9s=x` /[JO|@Q~ٜxĸz|M!w3hLoaf2 %GPhzέ-ϹhЦ`E yq mk@4/BhmOc+-e,L3*W>WPP~lYπrDx#h$h-1fD)kPbhKBtk5HU{%ׇ`3<=w9E ô qgM ,Nɬ[Ú00ۘ TUuy?KҁꇉS?Pb n/+{$mou\!Z/?u=x@X{{kq z [ZP^#~0dE0- gvx\ "kP 3i4.}.>x_&, _h"PoxNZt v&}ȔaN%nZA@yjEE5Le;~kN]igQP ͵uHfmMg6rMnn.gKoʼn ͒oV>#*Xޗ|> po:FV'Dxm " cCM]ق8(+"ݤ<9 uDeOu7ecI;Cr?[̃tL8^u\2z4EDb癷lK]H jM^sceJ~k8OiXIoAo/ 3pۆOȷ`F35t/U6L`=O+AO . nF_um`jq+4,<O5|ݑ r/vL;@m΃X|ugה;c/,}Slgz/F`( ] L@F;B BUl`Ln\۪Pq; &|=\]`I~\W gkv@́Ȓ+ST qmQN ZMdب'ɦЄ@T /@#N%_A*=]U3@O.!eF(! s֠,=_p^ZBP*DpނV83Hy"FajJ?SyBPx tp=kB|)8oYPyt'vc]ht_F8Xx/[^pf%}G^9#EqH)Ȉh#}8BKd 2 ƄBj Y_"5btg26cID ?q=.őt>`kp\Ssm#ՄR|]S8M!Lʛ% ~w C`C g%Yv­9cet Ԋ.t[NV &ݽ<\赒8{"Yn8P1qʾT.Ϙ|k-cl 2 UhX f%E=T5B@:ԟ5 ~b2yeN? )1 9EVH%P}TJRmXiuSCF,.VOw]ֈcvq۹Lfh@l(6,}٭uɳ+ɹbT*|r1p}hQAch 5À,\0íl: mݤbuθ%};0|+ijؕ<ÆqGǧ!KiSuTSi$19eTFCr4f J q#`dur @U9㈹g9=]a 31JS>|^y~hrjo5aT-f0Uff'`򝱢]VE\?I|u&"c 4dو^q6y<=eo$]mH:D0;S Dn.7B" GP &Mؙ2ѤTSq⇴n#5R\K<c8{Y!:ԭe}/+_Xt6!Mu[DbZˑ hW yTa@6rܮ: :!EL(Xk7 jYB.fa+wDkA]akؼTj^rU(Sk_ۧ|Bҵe|!j1g1'^$6lb}g}-G^!,3Z(oNW a8z`)No8ZÕEV: &?JFm0l룶osꨩhyh!k'0MgE¢ ƀ?O --Չq gPխ 8 ?hu+ tƦMqXD_@ɱ|`uDZ1WT2Mi{{B3Mh8Wݼ/J[*offH6 !e#K 51M6wz F&X8}¿qR95P 0_I"zanVB qxvYVt9qWtYVì=Y85(Pu Msh#!1d0UIP+ J~}$NmNO@Pi&OUEA$y$tz}кj yxdRT*: O\Ykb(-xa #}ԄU\MMW>m];Ǵ~IArxfnA2K emP+~"Dwa ij2Uw/_bphq%ca𶕽A`A^׫;j[ݠ^HVyQٚ!!Uzrw,Uvΐ3=*zG7@X˯KS6 LK$wGOQxv2QmlP9CK [H^ 3-As'^xįo,F'PgKI4}l ?E`]rC41yiS/ (qQQj GCw7RdPwVk9cjqP<}n"(HXZ($`%(G$-|* /SnJz䮗N |[pK gBWۂJ>OIvd]qղȺ5 KxѿigҞFL_Y8~$5׬a;gϖ]lkm=abs9 #A+O߶xi <`FwvyF krsvR-Xo?r>nlBeH:USYi&սtraL;Vy Ff)f[G)} @͎a[.[]׃!3;U܇pUut1iv^Z=\!zD޵:ЧO`^Ge290Ĕ칌P p[Y2;YTNtik1օCz/twѵ1ʘI2tST_&E2GMGUd)紀AB*1l&I )QA gCWÜ/ܙ*k " [v)%>.%3ȣ p0=('T|x=C0‰0FoF&f:K?}8LvkoWcX X *@MxyR>u@" } p&(鵐t4(W"KFomno充0 ,ɻIlK:9EHx~x;/MRz;7#3BH~R pakJ:7Vy]xq%*,? bi Sw1D։=d}p6kEKg7 H΅]8%rh5rk 'o)e0[oxg3ރY Cޒ8΍;G/w HO(%#&E0V`Z|S1,{Ѭʮy~QM J{GG<=cmGyjQk(T)Y #8] Ƽ/Tr+(&8cd~~6 [rj3&5Z;HÃ%6o7EJq7j{4 +n\J1.distrobox-1.8.1.2/docs/assets/page-logo-i.svg000066400000000000000000000131221474517124600207630ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/page-logo.svg000066400000000000000000000131221474517124600205350ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/assets/png/000077500000000000000000000000001474517124600167275ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/png/distros/000077500000000000000000000000001474517124600204165ustar00rootroot00000000000000distrobox-1.8.1.2/docs/assets/png/distros/alma-distrobox.png000066400000000000000000000616241474517124600240620ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME zP IDATxwxTL P@`)J `^B}W4{C&$Q"zO%͜1& )SL}&WM.Fu p[^B0p[t|hq;sH@}wN"#$ܯnv{}7⌅,5[/1 5D Tlfb.i~G7j3fYB-uA7X9wqW1.ce:MDY3Nc;+n ^K;tv̦,L.C 0R6c;}?32{#|^v W^ *)/5 VS^֧X2Al͌x e!\(3rP֓ndPt%'z_$$vp?#{7^8' wPX\v53<UӟW,w܊wA[4FT[h e'+@:Rg#yZ{SO2 꾣]q &P3wLƉSA']s:Jy^r3Yy4>JOk؊]> +1"4BOrEab>cQzd{X 9h2kSf_)c& }W~D~K:(ZwuKYO |wA%}]}1!~#?dXuɏ) K}yF榺q#հI[P 6[^s0pXWQ>9#~҇. oZ) xit$i) W,&OJFj1[[)'wȖ7|ȇD.u3]7ewt6YmP^Դ#HHlp%=>n$CN;fr}{@}.W عv兕7;J8qxfGIK|/#e(Hcf{ ϥ5SvL xbEzpg>$sS\̈ƨLQ#g9>k%Rk]%#e5`j/H}:H~Lu ɷZp(}[?|?'=%CMHL_Go(oJzB>ԸEJ]VF:X?vpʼnt$-e9疽nj/QWIzڟ(x,pWR[{~e0 m$~̾.vHǗgވ7q]XAyGrze&<%G%mVk߷2 kTUGgSE;@m=@{%%X@x8.5J2*s%#s#h.c/HZn;4 ($>_ ߰1y_It||.Dm@ _ ,C +RN܄ }xs~LsDx/*]RpW6@S%'_Lz' A`c5۠1 %lCĔY[Я=b|!HZJK(3e`.'Ysi!]/v *dbPyzhz~-hb+竷t͟K#B0\dmB8Zp'8VA0LJ.?~/Dr3>l?!?%(Jy%O0-hro[: BF Ifϲ}bu}TlZmPrs O+qK~n'w9Κ>KѾtGyhUE\d8C&rFi8,\T_h#i);\6oCka /K!k0e:MJ/x_&HGT8X/)E.ͰS"FBTPޅ(F>T?x w(/d3hQ~ pV42o"A3siUyKFT{JiD8~C:zE_n yVeu^[# ( ،3݃ lt\r6e<-[E(anˌF%.sm@SXgDsA"z&}.<+f6>}ESFsŠP!] `&$x'ݧgIKuII]0͸:etP-i|3 ơracqx$"W!PKA`Y8}tǜ81\S]+C(5[+ᨾ)%̈:G (a05^s+jf@ˇφAhBbq)&8F+=v#I0_}.{K|^fFUrwt16!Z͌X,AMنCI}G\tAx# ?@:>XYmWTjkD8/I|F|!]~%c9NqOMϕ!ThfDysŴ,yrn|\9YpIrw{oT1{e%|$RG.nO]Ҥ ]R.qͣl۠=ҩ9$ xІihfD]P_v<N-E;\7&wK|wqlalƭ}E_NuIqcE9ӣb/d8K s5/r#8O93 ^'OwQtjsС2 (WS@:9|@烤ЃE1oa!q(W%Jׅ(Oʅ"({hffOp7;Eu"?JZʚj+?LuF}_t`^~LY~xIZH6f`X1o &@:^ ỴT٩-'G^ ZI%>o=>Ɨ>7=/C:O A.X#[ j}>N]<)X.Z`Ҥ>IJ@ShPO\.j欮jQ5xyv|t= {ZIOsҩi\aD[xk~g,_}eYґWWeȫl cI8໋Dt8zްljϳy j[i\Ϻ!B`ﮑlemYg?a炗%n"Jq-em1XKP"&5%HW iW &b2<~>>`>"Ns!bUMlD>)dn~Ps!P6/n֏E37oy.!LSS"3jp97$LeE?2:Yds=Wź'iD UoL_\;v#8p~o^ofy tBDV# :jC8"MP-ȗfa{p&'pm̞P #1zK?-!i0%6zsoH|6#r8Rc6jRT> ~aVZڔ; %>;ވ~/d"zٯHG~؇aH0TN[n`mA1{H|.ߙ%bnJΖٳfFdQU3AI|~n:=+@~L-FaKAu~rQx!րJPH@ҿ2v}JNa5z鵿8RJ);axg;QgWϲ:NjґS1k'S&m:@tHI,?wMT5M% @: WTy [*)4g7Řz-M#w`seT-(NH6k^+EO?ϯg Q) S9:2 Ɛϵ j)U[YJ*#H/}kbb} *̀NMUT^މCҴO?s T#1( S9d|oʷi07"G>T:yyt)lN9MGxjyuiDOl59 J~9:tvU6 PC6>Xu*wtxճxc0 TIzKNfSS|#Ͽ×a\v\C1 &m:%V,+u^ ,-)FE( 18Gm2/2 Z hCq#OVtOͲܵ.Sl^yMȉICTezBA lDX򱢳)PtO8Ao+};|zs 2\'i?X*.@ht{/9qR\HXh]ʃ(Q@ W&<dKZiHǓ8C8u2J7fA A}&JP}XS͊x苤3!缺:?JFYb+~;qrV2`h MrL3kċ1;UD>tY7 @JN΄ U)O}lb/##WlAXtfXfWۇ *n[wƐWȽ8<{22jf&`n,Ҵ͊ .1@k D؏dwlL_l8gj@]cxxY U2R7}/D}`"O^}3 8LyͺBew|PD@_B#ǃ VtsYqQ6`Pv@Úލ& k^Y˒g Y.=ezk-QS^"+@:pڂmkU^%9jKOY2gM-l sͲ{plboج}mV cgv+-b  X.C$Ŭw_g?ϱ(ւG2>ϊ30褪J` |92rj CpY-^RbC28ef-@u=!r,0uqg :@8cjsβZ缿p*闱[b$-eyfoToY[8ڷ7;0&j_γˎh (ȦJ'; U٬1ngFXJ܆mĠ}#q^7V:1Ȭ\:)5vu[>eǝ )s$ H T.ƴnweۆR"i)ϠՇq$յگTJ pZK\A[qA4ɸNw.%EWu ݖΐܰhBb"q:y/PzifAW !]\gVƅi2p{lfz!ǴNdupV DvxxO&EᱵM-<O]dVJ뒈GP^*⟥k%5NuD+j7fk\7ÊO7=7'ϿRb<8%af> 8}B,trDÒZhf]tunG^'!\|_g0)6Vv$a+La-cTytg #/5;+ пh "@[ ";$ÕF ߫u~>P> y{({3FP(B*m?9n8GaqP5'ts8OsuHu))vJƭy!ɱM lQjGHDL7aq̚I< /TPH9v̎ t.q+V uMW0c:H7{3t? ' IDATK:Cr~ތݭJ<">cP:Q*a'2)JQ9C )-)WSzW`gTXfቨջ_6rj~圧ڻ7?I'kH޿ G c{I'c Tr4#X,i/? ηuw+Zx#WN_, ZQYI1 P:6vn -G|yOD׶! 54d,u RZ=awk0$%G,2煠T oP8֟@pd{mq) \g!yPy{-@:k]/N,Eձ|"xuEأ飢WO{dR 3*1:faJ+r"#cWPgy+XkY:#sE L32h۟czxP~fhX<dX`]"jz|=-0U118dn< ɾ t,Xn,gljQvTyqPNⱪtPr"鳁YQ-^ϡ},tdwyy2Iv܏w`د$96? UV;̿ N/ۧyzq`vNV)f!Y O,&1diB>pณJr- J>8nLmّsȹc`UKP081Z5n(u&*l;7y+wHjC$e~[0soCF#,n=GhD&8sc{&ˋlڃ>`4^ip*YrY]1 D#ɣrDm&Is`u<HG:m hZ:OXd[u"38"$%[oLLLuYyC{_}+QVq 1,g2tc1FgA?kd6.M%?)>Z fjt9pRa42= T{!ItTcIn_{: $ۻN/wᛶs޶sը 0nC\C!?vGFF vK#Jn' mٵpOݘ )PXAs Džbg8z%;*zlGLm:%[\4ߡ`H rluH[+8ʕq!y)`4ndhQ1+?pwCAX1CTlFhc6yQ>%WR5WǨP9r{R͊^jTxuTʯ<ը+zAˤZB8@~,gKe |,80<&.hlv"@Nb$e:"rt᳋P~{!Sf@@Kerxj3}_^ыγ!⼩dàckgAX/%hy(ư˴>nŸ1lF:G*>&9ۘRfԶs5ocOalv\+L™GrCyvJ;PSqA!.1iǬ+ OnsTTNU{%~K8C.Ɣt!y$,Dr/z)`s=e/-Ø zfry[w eMΪaQT̨2A82Xf`l0w/f`jvI ( UZD r{/øN2VСv-v7?)^s)a/;I I7&DQJh ,0j 6Z]qG̪'Z0I:Z^Ę}w{Mg%e䕼,-x85lV/GՇMaI ='(R9`TV\T*>ho~N>o cQ&?M^aX1mT5bo;M Diz_gL;[E44YbVv*38!D_p^tm(Q$G+ؒ$9Cot7r t{$(~-;;5MNĥZya#w'cV{+8>S5\^EccCo̱VՀt6DWPKpjL]d춗A) .$\HutXn<ωk`+jrMƯ+>Ny}g~bd &{x2)U㒻Z2.bȲRS>n:fѫQYp{MeB1+Ttr D-F :!\8J/cJO>xC}gj)cyW&qzy<-smjr=k˸\Zxp?iqwqnn.>l޲39&&uq%: gb0W_ϯǐ%v=B+O:N%~<:چ䘭GI'+\/I gHN T|n1Ir"/j*r{G,1Yqlz yޠ䰃 =e;ה k.<9nVn {6w_GOuT x }ays=7mM{ vZU gm#V̩|Arp P.ja*I.,hs &bP"kZWMUyrcO>[@ Ǵ+[WdλJ|f{?]wCܺzR?W>8խ׾:jFwϩ)_Cn)$7,Rň>yFpМ`@Y5 V K$O_HDx&r- 6Q"R^7UH8]ޑ~_WpmۙמN&uLo0Y3}GaC7M?|~]\hHx,糣 96yXNC<!CCY QVe_X15w-H嗲?l~Zix~l66v!Ar|w&S?\b|G.ncO5F8r R|D")<ƀ84ee NI fZBjK Iyܾ(J̠u?lf>N~a cpV6oE.FsӰ=|g(,SI޹;3Pt b7W~k1dCX"1>/ιC"@\猅Yܮimi># H#һ\p  ,$v>_̸h~&ߙs`2s\N*gynHDρ$T{{4opcmgUGXNe) .|~Da1~Oִt.Sr,=k5<<ȑGP]wr#s0'yGΤОghKbz4&$pq?XMct*ܗid]F$}tKcC4 ^77Q$ iZ;h/_($,UFuHM ^"T-8Wn[3I\ЩA KΡ&+: {b֡ݭGIQ8v+T:Sc8#ݵR+l#z{<[.%C}=AGp@<лD]PaRNTp|Xl>%C ΋7f]ʷtоf]Hyu {~/rU oŠaALryY*oa>tb\n2۪ySc7{pEQ"7uē0>y X_-{*gY6K_|mw}7gN vߙya lY[~Bؿ)טT Ψjw֮vyI_D{QԔtU9gcOƙ`,W >>~τ \0#j2oy:/Mϯ^UK݊VusޓnT]' ȆؚMQi3q݅ \iF4S!1&i ڂAo?Oت&ax&-^[J9W Tj6`dTsػ h͇c5n޼y+jvmg71Q.Tt!AX\8*z"kΐfYc{V};чNGh hr%µM5BDӇRW^ɞO_+ 7s=g60j!L5Yy5S>D[S+L@v\:m67zUnO;Z"* 1wћGFª}^m:}HYOkpU'M/)xY_pݺu^{oz?# 6Ǿ|/k)ma{hS:_݌F-BNfH]ke zPF8eo Ewl}Z ^V>oC]qw_[con!d|3?urpB+{,8Y 9jI[x؏$'Jn\/bȫp+?£ϝǂK'NغEZ3oŗzZ4i3^d^bn~mh#tD[V+k|+Z8\f1nuTXvm%Pq_ jLI(.6DDxs }6L7-u0oxrf͜߹簫ټz3lF:3e'/*r/wv1SȒov(AxÓ5ղpl Κ 9O);԰9Ͻ:wphwSM?X˖3olټxn6k܎C۴)$; DϬQ;usQf}~G~쉎BηmYGN*[C H ՛xKu"Dnb磉~~S/ʓ ; c۰_秅_e]Ï@0MsߟvVmZRٚLEKfWXXYfpuOHdiLxivO?>Av>|x+V`n~fcК/DNpg !wnzl$j4Lx5NMΔ΋Oot0{zqeµ4iz kr2Z~zXtoBY83<|[ג{mlzp;KfU{ԸC~;oEϏlռL),,f緸 vm~Z%gKx`L}x‰,ٟeѪ?*[DlaaaC=4mٵ?ėسuMuf!Y@VanOGLrξF;-qų괍_7_O {(::m~\HOM{Vgo[7eߡC"wp7?8=MmzluS.z Z|z3t(1/)!Ν;饗_r%u"\/ƭWk!fwAynzP *P!/ wX~ҥK^zg\z6lآ.Ivv?֔ppjy>p­K:Q*J,IQf+_?~s=#FdܹwjPntï5O uvfW=V)(1$ ȗW/KR@ZD/6 l!3|t6ҷk{ o";\+ѣG>K.im٪0,Z3 g=c9v[;J_q+ d_br7$E )&h1rFr]qRbA_ֆuCi@/VW|Lڻ w0`@:n穩Zz _}jia~ =zySn*WnMH,&)XA"fgfPVz&Љқ[[MvJyX Nm樥FMu F KKGǸ/gnڣG kӦMuܾ}o㚺sn" )~ nujS[V-蠶nKQѺulkb;cK[Vd\PHXDe$v$/7{o}o߾cǎ9͗_~իkui vU XMwA#b*T02 PNYX?h{hPs Lh<1,"Q@llݒ~nع~BB۷!]-Vu߻wj0~";l1P~XjU;wd߿Yddb̘12Dby ʅdmqg[ q {2v/+Hr2@5a6e ;i }YMڐJDk{&+QK-:Ǯ̟[";q4lzTZ}/!!tԩ6:j?L5kVO~:[<, WEep6D-e+ T`[o.΃uV[kK̟<Ӝ+V8{PĕcRKeWcPᐈ,:&DTzj{A7$|XXحUVY:99=90 I$%o e[u0\ckOGNRy7Y/[!---gΜ9źhq(,X ݻwK.]zκ __߬+W܎z=H ap'] m-ƃ60,rym۶Y>}F```;"C?@B[SSSg% 8͛Be+?y9K R <yq7ۻw;wt޽{}eHǔ '~C&ނ6f5^ۃCu.R8j،1O?yE Ѷmۼ|||ٓ^UUujkk>|o%KbߦsHMJJ:th_ZZ c$8S,ޓQ7INkmS$WD>88ԩS;wu-mP:c ~#GJբ֭['OSĥE廹f$h:?QOQb΁xb@ m)-֌1Ѵ^ԲPw0Xh'sqqyfdzg^ӝϯ$::zTT@:y9p 99ǠtwePYmp`._~׿SN=z4].׻sMTTTRBBpgtE+  J\Bke2KP@ K:x'o//aN&^ER KǏ/oYO`RϟaߥKra*}>3mzw| όG 6(_2FqSf!1%]}m߾}H_R=o޼|? Д)SnܸuV.]}tZ;|f-v !߿7!dq+3z%ߺuٳgGyxx={p=cRSx1-0{Oc|<$qvC =zۻwo2 :::ܹ3… F-ŝLi1 n1bB {%gE,4̳--;L:'116"""@Ki͛~9ٳڶmC  !C!lXoܱck׮渹=qΝ;߽|r֭[]Ly>1[X` XXH(ulɯaaau`(9cO.rwwovVJ{{L???W㤦>W0 o0,,Ll_}7BCCkʊ )Kn|/_lmg9e.i| -fDEabcM_ۿUeְ rߜA VL#ů?T_}UYfUTWWgJ;6;ѹ}?stZ H$bqܶm۵<>sRJU*@: VgVPR+H$ m߾CSv!Ra!!FC\ ] W_^n]{Zvر*44ԉ1v><<|`[ ;D"0z 25g740yGjq^qnj5D$PmiotŊٳg@:grH#k+R@ ڢ*h:f8 e||<=ӧO6!"0"$H`ee"3d <e21b(x#g 0 l/~=ÈLƫx'"ZYYٵʾ0XS]]XTTÇh4ju;v,+$$Dt5(Y,6a_LC2$>Yc<pD>"TW呹uuu9h<]6"j*s'q @_Pp0=LX xi/R Qij+EEEŨvͭ ju׺.\ &rKD,99tP1B g dEGیsD)XsJ1EHEpwh -GuXxc9UWQQqKmmm{KKK+=?#89@'ph5*@)*118pppޣGv"_+P3dȐr EOѦ$82G0<6H,7cn2ѭ,!Zarqq8qbҥK?~ƍEuK*V\vww$)9tPC˗/?~`^Thz bl$O:hMO3T#+A P9x Mм} E+EӋa f 3jH$նHQ`aaQwk G375Mٳg͟?!99M17 fb$`O |A' Y/Bnδ 8`')Y %j!̨H8NڵkW)^˻-## D"6lX񙙙֭޽::HHdG ^0 е ! R<3JG`vHlraK] osӃF~ 4,zww]N=kn cF `6F$xY,Ml)&=CÙ>6WtCN*M{uy޽{W'c";;;5kָϙ3QyͤI7")))Z)ՠD"p1[[[c76`^Y%PHv<*F&+02#! 0hD z?޽{۱cGѰaz+%FP[ouxc>p¹sxB ti^͢Gpy9&%%=~mRtx #'@X6mZnDDDL&1=WWWWݻWzjςcScǎ^{X,}FHܹ{IoLDpOc/'8;ъ6Rq>F#?EeQNdJJJo޼x˖-Q(++ݶm[/s'?n ejtGˑod9xȕ#Xl?5v]Ů];t iRSS^uJLLt̞tT*UQLLLߺu]&pCiaĄVY `2 ݻwmy'<:::ݬkڵk.3fL&7= 0H#vL@a C SJDj] ";9]xO?UpgnV kJ/_nl% L߼:‹F.E0x h}_,֮]:w\[[5d^UUUٳ'}<7U!CS,Mco>^zn_h7frjɊ+ۗ;z譺Bjj~J Tϝ; hc4E8"D3[Np@0w0l'L>m4Kn<_)MHT:{ѣG$%%5_Xm" Æ&Pt6Уꠍ?=x7o^nnnn.~V)))^~}>ĽU?ƛo1q0 #*~>#YTT[n:FEEe};wrJW4ʘmR 3ō`_Mb%m7/Mg6h ɓ'SU*U٫6M?|}ȑW^yLG.<31u'T>ͅ8 ` kRSۏ7sɥW\BDIRzzz3ؔ{*Dg@:2& eXІP؆&>|{ڵ7[ JKK?nnn{]gT?h阅x3I C5ƴQdd]YYY`Immm#Gn >J]"'''gڴisi?= =NcjF,b! h}NicǏٯYFQRR4eoٲ媧g/wߺ7n/Ut F`F1*"m$3%;Cܘ6#v۷o;-Jzp+,Y]QQ!mlZ\6KnJFt̅xY ~Ɔ\|k $(cMiTqW_?>y#䛓'O0aϕ+W*`.Ж2~@:fega;樵:Vcsu|W/((0#Ȣ KS0w3^HammH ڮ]k:HmAwWb YiiiSxhk/ Ln~ 9X/85s82 mRFShTUUWXջwoɁ0ߞj￿اO̙3OC$< N1307limo+Y@AЖWim_~Ǐ_Td622x"R]~=eԩwCBBdee5U]bh =$"|K ZIc_r;h{4x'Ji޼yE^^^uw mN㎎˖-STTvӦM*)e&`1@:f hR=10O"!G`b?`F QlIDAT ~ !kv` ОSR=3ƭ VFA!Oa<|6 h}b{Ц4:<?0\Me7%aDx::!zY UAp &JӮiV+e #at>~rb/U@:,$bvk=rUC"U DA[eO[%'R`:i R'0 퉡˯/!*X0b-5{n쪁6{_(3 #@@~M/w=!T @|)Ai}IENDB`distrobox-1.8.1.2/docs/assets/png/distros/alpine-distrobox.png000066400000000000000000000524111474517124600244120ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEYU& IDATxy`T5+}$LPܵ[[V~C h.jWVlj֪UI" v!,q' N2I&dΙ{{{@h4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4Fh4FID>mV p5"@IyRkz`a͂9[hщ+)7.$< -&n.jԤќ n+R[Yv|EzHts 6hXxs3e"~Zt,:} Z%4HoC3C^듇($P';h}~8#j16] {:o-l[)ZC`Mc#X-Q¢*w愚`I#6i4e00$ mk0iM۬(ER\ j<(DiZ"2:jN)­ǚ R*.Hm9]d{k7׺W jof#6͘$"M[gP{k7=9A_Qۗ">t\lȸ2rM6yH݌3Υr6;Di!5f[6Atڢ{80*M3o*1uz|uX-R` V ]"4'|E!RooSw K0XD&hZB#0 Rݵ$tAPC>EY༶~P(#5?Ѵ@ e.wӓ )`_5P_(k6QBOH'ilgyl"Wb;J#BDP' $v =a#C&`i xFmΎ:j9W(DFW4-5(0; ):h( 2&(%y[$!'Lma\L:KI6qe_T*^ՑN $*ʁazh]zIDɥb;T%\ ӂI)F&HI1+nF&15T)U*NHrU EHAi1aӓkt쏃gS@7}jHi% \Ѧ]kr4r9dU3vfW Mb @Q%CV]BoT9aU\ؤ(LEU߅*E'· .ƀe T5״^z_?zIH[#B|0H):6CҪIp˝<5V鸳sN+!Uߏ_"ly+[z DjښqC8oFGvYTG:MM[ꈒ N>`tiـn"r+0zRaSU/vֺ[wZgBP5HD&btرd \$!‘ \hأeS^xN!X-AZZ[4l>a v쟻.9ӫjj9[o nD/l ^oT-~ӊBֹu@ -Z-EM`Ho/24ʰe{v7{h| /T-/=PWwyVD4wCp?2&8/r b:`/K;77XPΙE8 2j`Z,nQNx٦9IY]IY?BB++gHlRwnIO$[lTbKjc>v:D|!m*-xAyA59PBB=k /i~`UOig߀W8ltK?2+DE_I j&+N΀[f۔ \^KR-ZtEنӓK`2mwU-4.|6}#+U /E#uC-jB782fPș˵|'p.3s*"6X\6`N`t"eOtb"wS௦}9TF_e,i_JSk`lR"nb}04x8/*Cl?P{lAEI_vm8IQvezJ CZtÝ51C0AxVzvѵ=4hy!e *;4y!ᔇyPpMnEhQԢf=p"DdGWWNSڕ 5>+1]3¿@uWs06{`yo'Ř4`qA;ۻ/e*=PW"԰Yآ]Nu8kKN B5;TEKVpO `Vud|൦#nl)6Q&ּ_^_ت⢨{JE)`1p>xQ__ZHpU8\C8xb;Jۭ($X\Xڬc.D"!_Aei밉7b.0Ba+,FxV]x etj~P+s[Dĝ=Ə-`KixRA@ޠ0؜ {q(BU6^6 \7+2]\?ϊ: vw wIɞ[+qy%!2xf^DX[IQB`MvcFծl UWx- }R'W!_JhIyP2A]Hb63 Ǜf<^}Ј@xODq>vNέΡcl1R} R'JreB%E*!E'9(Ե ) EQ(R75Tr{rAƊRǠQeMߒ=+ a` [V .U ڌ*v{ZH ځȾPM帉cdÈp0%'rxVL#)83fe\. `Df*)ia_Q؞uQQ.H:hPݔլ.hv'Tt /6gYOuGk$Dlʐʄԛ]F(nrHA`)7Y_p\; 7c5Wfny6-9&j| @ڇMCs6^.+m)6m@xdAmrf '踳s;d p9V[Dp3ETӦ2\N@X^Kv:!Rk멏lɯ+ZAWf:*{]YުP h0ݶ1Ո('f)avQ~bN;G#(<$yjxeօJGpn%(:W5 $(qw tCkcPx}<<јdzY^(%0PIˡ<6YǦK68lůO E6t\\u@T!,ϯr!\UQ Zp)BG#*mG3x k'6kseO\܌3Tkx:"RCAsgqxsG t0L^'PH'}4W7ɑs )lkܱyVQ$c힨O.&v.7 :Ia VH0B@}0.4awv n.+ O"39xL( l6…UV'PWI|'ٝS(.jΚ8H:,r[Jԋ(@'lC(bCiJ!z ۝CƆC(蚂ݓSjt.cLC+ʠؖ<D0DxF~5kQEݔe3r@$R+j̭/(K5#;,b"xz<*-"v!@ G &%ۜüU%}FljXxX[#ϒu_~jj7cx"IS: G5Ƶ_tpM|.W&N Xn9`G/|`m*Krǰq2 T4{prAXe"yPNON=MaxxTVm=!_=tM\,`^!,Sc/YWŃDoBTlr:b #y~QPbm9Ǔ t=S9=+2ힱ}@0(< ")X\XEr,8;7E1_sk@ʌY Q'uon)qcx )<bgؤ>#]q RuϽT ƭ|Ñ0(,rDcuЌO'0JK` 4x<=D۫'sxc5ه]^v:BV7Fƫ^;1b 4X赒>Ȫ1X]`vm@][Il!؏4tS83:28x<,ObG*^]S`:3(۫T%g! yqNGhx'>Ze 2_|U5eh3 IDAT j̍9L Wc' /J= j JpK=a([0fȏ8j2P{^h"jL\ ,QћsJ qp Gz8i`:Pz8$"0&ao.ʏ1+ c' WDQ%"qx+P)@~kRW,kj2\RAv-B_qFEu )3f b 9wI=j;x N+tx::Ye!_|RP Y!t1x )(sx /S!_a˓WEfLP [)RQdI< @mXYMS q0M`O%2_ k <+A1ihTQ ?IV$:`Ą:&mQɍ<ѫicsy.ku#G9" E "INO.lo DzuB Tws+BŅMbO;L LZL%\y]YHN9z`L`Gͼyv?w1oǎtԱ]s|-R1:vU]Ad˧D#&FZ9iF`}_DkHxщlTQ,c1C0 n x,/^3T|DaWX?Gy8'4/Bfpgy#L ]ov2WVn$ҧt8,o7H !܎V,~<NًP Wxzjdwωg?+Ǝt~)t\x2qMSݷ?~cj¥kQFZ{v\ū[,>.D 91S1 n8>9FCqހ{pO,iIpAq3 &y#SmT~gV~1 ..JpA@Vd*)355Ӧ'ǰe]hq)"w qn  I`qAˑ`2'f̘o;L?--7f4\u%86hsF"e; 9 #95>a`6%EtBKiwr4n ]bGZ{# E7HGWrNgFufB% Ű Ö(Cf0(x8b(;%]#ryr|Eէ^#a6e+Iqט $(YbhW櫱1><^=z9w]Iwt˱_X_Mt{1Ubw^7DެZf!}T nl65F`;B(9dY#J@TTS) *IXPV-uT5:á`J} CA-@V$R^!A%Q C(@+ayXA{ TQx`qMlXy?앞RY*w p`:נ¶Dsڤ|Ϙs1pJyiAV05M[@$MAG#p.BO멇_np]&@zہrRȍMDC~ _9:]Xi' e=cьߦ)m"Hhf^]`W5ǿD=߾Ѓ?^R>]ٜB;wɧ'OnlF0nk m~J+PBxAkoP䰉on`{,J&± ٌ=b)I"ZUM~M45xwL,6+#y1.9&H$gksamab79t`e!.7`bUgzѺ$$(f?xU5LЙ̜c?ƏEku: |S&=5kw:d<ێf煀re΀X*G,h- sۧ`,ۿ aqnER1.)SU}j7c%z;VweR3gvJ].ȝރ5Vm2Bka,>K7~(ǎnoi}]e˖li9SX^ZbWB`9P zhE5 {c7ɝ0 aFa 2}aÆU]'+RZ\ 6cE( JiM8Hp:«އIsg[fЯOV]~yϚ5_EEʼn1E7`-,孵J i 1J x= ;~MB;\v\pA7\|yq旁kX]>?[Ѵ<\H$ŭ;q칢i jTUX]@䳷q_:rl.oyѷO/ H.&MJꪫVmذ!}ցUư=Zd:}V:EQ_5&Rm̟HCP<@M6~(Zc"rP'*eh< \GW1wߢpo3OK/r%l6СCz뭕ݻw/{뭷R8~'p V+hR [vZO`GsZbcF W$[D7|W:v :vhscvSnjvoD"q*{bWgiu~l9u״G +a]{MRE@qO  M◿~fkӷ-##__e׮]-[ͪ zNi)&pN4' ,Yqyr<2{&oJ@ P/9s9)'y` Ve6\N3sbMG`uюw}$LhFkUs|{XgKHMMIq9pP(vw< ndggwv}%K:G3 B>:uNޙ `ф-]|u_]_Mx&Xp֫3<:`n'{%%%%O81oޱo߾kf@OF11[]zeXҀ V+Ip:B+^;a*%]_s"ѽ[1M~ҥ~n_^^ޞ燻uL?|NRVV$)BXk|>U*6#Z XlekZ([VZ AOAELf4ٳ%߸cs=`(?lش>~˖-#+rܹ{:wl>nN0aЖ-[O?t V5rM OJtR϶i.Sz]7*{/~u8XY-[))YGҥ{e<,{2&l}ee^xAA1eʔA.}?яu*ЊG("QZn'E$ZsGouNio@rVX.S;~:L`0׶>vq9s}{;tDrGu[U@ڌ9cPXbMkqVOt;xǹƩt֥Q>`e{e ^e,c8.gR YԚ sGG )XO֩7MS-p>,[ҥzO<:`N"$a^mmm+SQX'[]u&1:i[D&80߻O&L RS)ݱ_='>}Ald}w#yy?MKͯOKpK֙OO5Ow@^z3g7vnv=IhhwN>i pmm#R/XGj>&C1;#.ɛpU#M--.d?c__;*1t`2ڷLp8/JVʡ/jtޗ3miC:TO:ujMhWXaCJ$2 n?舍cF#|чEOO~as!L e8d*P_?8W]>e=CW_}u :[}hcd?U'h0>X5mEtl~x_ѣw֮[OMu͘` o?YE۷C]:w.!/o"m1ML XbwGy_8>-ɑO=Txĉ[.\ؑ/{ !Z!1NI]ɣ?{ݺ2aX.@V<;hGV-GًΝ;kҋ-Ep;wӟ;qƨJS.\pɓt!eȐ!۷o?jժg$DŧzhTZVga$a?ß ](3c;OwާOկz7os,((ظ`C|ᓈ$ 2;l^ oaz vq:LN΢BrgZ3~?<_j#׽k{tcyO?@rsslSIt"&ؤGʍ7La~?^Ȫr\3y*`˽͔R_}UW]5c#mt̙[v]we%''v Ƅyn~~-G `-h߯7߿;,)xfg{oqݵWoU-;ٳg>#;;_==O^V\\yܹu6L#VMmBx d+SNy=k^yLȻ/>$c|}ev@`>ɨQR~_fx<7xcÇg;aEt1X44KsBn&_{%7x I={w_̢jY1¾k4 C}|||^``ڵkǠ6ÇHOOw>}D@#ŝ"'GU l{`D1ص"|",[OӦ9r=??RP2g̘s?}!m۶޼ynѢE2777iO֥SdQ~7_&rgt!ރzr̘1_~^@̻yC&+T\d՚5k"Ew`B-(l @W|m+NBh#?ɓ'WݻW*&ً84~hΥJ Tv& ]y̝= á#alÇݛ~vιҶ |@ͺsp9^N~NIFdԻۀxLʕ+"""J$AΗ+7np&y7'ǎO>oNq߾}+WΝ;V$ MS4@A Aq@.uIǥZ MKsgjVXq+555ҥ~)x ]z%tesekو}?UUn+9٥~~~gMFFFΝ;G >|\onx a۹ 참`}+Ux( `ٳgd2z////r{ckoo])C@$ @8..|c5bnk>p( (<0lذIQQQ6v"##Kd2TGi &((p.t#1"WĖ|wqX*UZiӦ'THyBm&(a] ZWbˇ;~obʵ>8pvL8R0׀<_xbY|S#_"bz4j`NwL((A ,K N UMݟZkV-ǖm;bٞtؿSLl[^W"bUp#30@_὘8i"&<xxòW_[ڵkA !Y1RxH9=={72p3+>7O)pЦ, .)** +8֭[SBCCy^{5eppa~->eQQQ#R)#Oz"':cmPXX3gB!{n֭V^=r˼R,z뭷t|M@w:00jǎ3f+ %QN&:69.#,WLv;4:]5޾}ܹs} E?66zdd@pQNrrЇ[y5|g=$I&ig*= j0A&==O>;uCݖd2+8111֭# ۜVneU/Di9&:1dB.-w+D"U-"^}/T7nQ繢"7l0L$mu+_5]KD~ )%(@<@Yt?5Z]I7wY~>_P˭7n}7bIII82a„@BHg肩a D/mrG@@g`LBm~x6~/:}T[6ZvåŘ˸iStΪU߿Cy+**0dmvr`0 x≺}jk9N:t{fX,0M1 a& S f5=hO/S;)NJ'>"G)>:7I&66p#]\\)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 8p' IDATxgxUUkSn4 =$zQb+bAQԱA ,36,# RDB [=J'{>{:{ZEH.`+b*Ku/}˻j!#94`DXדE&Eպ.5DD'*I%< yE*):jOC.fs"EҍT0Q?HH=" @/8a4F\hi) $m}ZJJ E,\{Ji-t$G wE0k }aQdu'#M%Q>V`AH#P1!v]q[0$2jv=f0qrf)=yE#֓HOGr J@.R"fs i9!LBVgRx ,,%Rt$Z>ؽ9M,>V~b z--(AF)W8O*i^ 鏈R ݺ@Dz:Cc;nq5X<KJ"EGrX$BCms]Iʶ%.C B$j/L33\ZT"=Ɂ-XTb6)jol}"tk/fw6sɁ1^\R^h2E U&F]IJH}9suY(Csb^Aإe%EHhEG%x"_FZW"EG@,gLަdv $@'~: in,+#7>Cr d i):_&v ;7EA7'>;?"(KH6"FVG&~ r(?,CT%HkW]"hfAU3mxsn=Al'Dz:#R%Rt=5?i# (yZ,9ՙBѱ( (^FA WS~G#H2X gv  qXN^b!EGW0eb55'ABa.F@# xB3HH;m Vwsa):pxƮMĕp;cY{(DĤ95R):'⪙vRL!nhp?W=bG$7"EGFȤDx渉HmܟIBG>u zϨk_˴f%05 T9D M(YH1G:[$Fw,u u0^ NDv(EGR1ɹd9"zbE f+Vwa/s):z_*GPG)X73XNvHB'b8۽9lZb囒# }jrZf{)< ˧˷%EGCuЯCV@[I|[&jN%.4 ꘝ:z^uF˓SV=݁@SyFOw,đ/8TݕSz H:K1fuD(\):ޜY\!-(ߢ $i$Iՙ3&F @$:H0ͦd޶E$Rt$ On y:K9_]'d ):NEcm i^ĕLgibbQTM("+'9nLtTb cu8ÿb|KZ`;|U"h:m+YRt$;"Ӊk2kxTZ!RtH:&eatr8:kOEiV @7B#4A骚 u6#L#[x#&>.^HOG1MsRγL0XL"oXz:[UbJ0*xYl+Rt$ [vHbf&ZjBדxՏɶ*+IGGw0bKH=M6g7-=qy4I{XLh=!ih%Y?-N4A'vS~ͬT|= D K= +|ZjJr<{dFHt"3*䛗8;/\J!q@zg:!EGrpO4r^+Q<1t)߾q@ӭ$d &λ#0hA]~GN(KёA#4 OgvjBVgN fA):cIĿGB @MdWx~Ĺƻo-AHpRv'U **JDl5:*[1}řMe0B\-`Am:'26L^ϪnJD쩤h'nt D'VRrתElӑ0gU1}!̟kY*!RA4@O+JciN4B#L" K%\T ^I{Jtb>-:6jrgx˔2%z^Iĕ D ,Yd*[ $mbhx襯8bwG%֛Ǧo%t$m Q4q%D6i֩ƻXQ3Uz.EG6]fp+zȒ,@ʝ03cI:h!lZR0C%В">1,6bvM>K6):6-khWX Z2녷 ҅~hu8wէHёEx;w*Ap%F(=6, ;{>yARt$mA`ӷB/:g|nf%Ģ!"RTY{LOE/ˣRt$mE{͖Sj)Q`<]0Dضv-7 "EG҆xfLqc<uZLĬjfg/6f"EGrC#%H q-( lXj)Ѵ;۳YMLջ aEqҬAluӂg+ek#9a*YaE9ٿ} vQ*h/)ZKDNp XjQwYQ-J D^2-BKTӲ=5 nhכXޠ fwqO P`ĕzO-J O2ٜn=Mdz~wӫ>4o 1wQD-5iYWs{OMS6+):}Cyh,xLkq%_CHX{a ˙nI2N£poGr=[HɾaN6O&E"7@ x,ftqRjK^7- {lmVxB9k%ea@G'V()ݷy<+vH~Q'M,}2E?2~ s)DLg^Ԗ{]zD^'vo&8@r1 \񊦺=X't)IcHNȹDmIoWb LZ)W{E0 ,^h34=DQo^Pz իW\oۑ#ydPRѴT@'34K65{ߟQljꖱ ]Z CaLJUɜ ҤHZ =/CZ=:(NA'(T-B{fsj@Knzox=rkFz0&pHɉq h||()K w/<&5YCB(J6q <6>zd5 MuG?Bde'&D,DH#'f%fVԼ]%E'C2v*)ìKNX4idw0fjJ6~k@Oji|^=qe;F#y"x3ћ= gdX 8eB?R @u," ĢAH;.NKɵ3Lh^Z R@@-@%z@.kJWo6'E'<=I/qK1)ڙEAcj.AQU}؅A[?@~7.}͋_C .b "kj !<0봂|߾'WS0gPRS+@ԲNDRBRa,DAtV^41A^,{E_4I\IȆ,KDjٳpvlRtۀ"+fqudk\Ʀ G]-"ެ o64}׻fX[AZOݭ CN"[Y8g6`m QNxs vrF1s/iװB\I@HjEC-QWq5=ӗʭPƬvBhb 4Y,\fVl̥,E'LBoH#r)r2Ǣs`,,0da=W͚]ЬS@#āȂ!`Vg6/+SJ OtA<DǪ2% %+@x2;:i0j3vPQגEP;aD !6^_1 YPN(7uC 'KE\I%biJdk(߰tz0gtqEm 'Yzno9oWd t):us!U= \-`%f)"{ hēn7YDj&RjYl XU'A',|FL):jhR"E= "1^R# @nj*Gr100F9XtDv"^ @ɒzD󎃹{>RYJ11J8#IX@bo`EK**>jEuEs): b;u1\:w@#$W ) 1VP-vtTc)Zp-+Y&MpLU .YN-[ڇht&BSkXIWFLj"[}PԾ zNps S-}8b-UNHyBRaI(䑭sF3c8 _lǮI9AҢx|1hgTxBߡBH"TvW~\.OKO*)Y}*Q. *!Escds% )#B&2= hΒ$m"E \I'U n};搃8/$PY?H]]KIJ: TM.I;@(j?%=#ރܥ,=N#6HQ!FZs ĕ"(ƞѲoH48:JxjcEuӋ.i^uS~hP'r:Q,2 @4t:=ʝPAĔ^s9܍6IrАq5'wEcE J L)tې3H鸨q]=beXՙ6DM+ ti):׈ d,"htkIN *@{OY=e,Eca=rn&)j t~ B=5oEH):`cE%E2QWqgHnVp-i<%A JGHsH8.K(O\)QiHlwh~ w\EĸjEo_'"=eՑfsC6 H , %g&MrHq(m(@k ]_XI/ dUP):x+LZvҬEĕ!9UBd W.P@1i#P P6U8x;f7+M"=c!CQ{ڥ<Òxd( `4t Pƚ`0%-NCnR Ve&='`1%BE%jBf>gdx=h4Kk3ڟҶZȕ#$L%f U?Dq~: PY[NY_L.=v0TBWB Hiu%(:]Eu[ `47TDt}12 TS+d2Rt9|l&^ .&EsGOy!57dv]1Yr$?!b`\l 5Hi;1gTO:;fOȾ.ٟ5Qw"o!  RJ"x@[{ޒCTܓuF@>|*0De CRj>;R% ʀ%ܷ#=Y|~@1VB r-OG,E c2$"ʆ$9PE;Y=,7J9<$ejƓE$:Vj1S+>)1g bC$A>P" FEz:,СۋHч&Op3!~$M?aoJjv&ǒH>Eb 0 zQ{KjF>Wu81V "Gr$P"Y#ոrU$2گg6'kx%GDn(stp B3):'j/!bEIH e^7e#ɈBWqqDg(NZDhվ,"ln P NĴO 3nᦧ>($Q/6υ(s>ePh}Q ӿ"RRs! I\e2Uw /ísO]>A'.s:fh%}cdu2z, ;v0L3wtsDGnL.iA _'5{} DX #=Nu JlʉD{kX%GFj#ߵoO])*J__qU}ݵÆ ;Pb[pYgNjyWF\YP/ȬO44L1HCK9`}=xktiܹs+8 fdY`Aرcђ@@|  VRt"&IY2{ĤyL&0 jP)T+k"hfujduHQ* "dz|]pڴT\~Mi\W^]q8p7 `F̴/4)(W@X/50MO:m"VF^#hΜQq&L-| d0=-Ē¥}߶hx>=_|e޸ ?yj~a3sK L1pݪQ`0ؼlٲwuWŋ}s-#yDRa .7FŎESJ-%gQa2?HqyuyJlHbDX;Pk۱ t.;nĀBJFBO?}g}6 W ˔a3aa'e"r:Z?9PlfQ*][bӪ.h?B{H3D,Dt}bFN}2^3D^k8oΛAN.SO=1b72 `78K8@sjw z-C&Q/u{vncs殞â9L92 D X+8oJHǔ[%矁[obܹrKV]]|:T̝W"z!a^ 6Vϯp>8T@|0>:\}xaѼq9?|bw<L7_{ XiR={6?#<' yS[):mAIdu\F>#eGEИ6f;xR9ϝĕPsA!B}a¿s> y4{8_A}(sBܰaÎ+Xti׃9^YR t02= =){lcd?1"By=9 Nb^<<,{w ,鰂:sss-Zp­yyy* _8=!;`Ë4 v8iz=MW=0{lsq"9Gn@h<ED( v\2~Ғc;eShhh1w{7B;|DK6m/!z(C|O0TcxDɤjgF``k\oUktjZ56W41ޭݗ҅}4xjMɉgǞ_4Q|Tэ9rs̘1m۶oW ` 4X6CvNG(֕%IȅdN/Bb/tPPxB`}>y 5&o|K8PxD?v͛7ompy Z&?0hRz:\+c[]p@nF` AS͎Vj Wnv5yYu/cs?<\榻cŨa`C+\ɉk|v~2ВpZVHI#7Ygca&8~RfgKkV._y_g$::"he5j| Gθzc? :2Y,G:0SRo؋k=9O+Z&ޏD?;|+tIzH0 ٺRˮ#s[SN- k@TlNf<$nt%2$X###GѣG(hhqZtm8p_t/9N~Oq>DahL6.ϳH[6+v\anv6Tz%,zqٻa欗/Fiy~\ ȟ7o^_>==@l^1a8NV8m8laVb/LoV=rn5:_eH<X,1 -+(C_i,{0cq3)#a ]UUU~b>iEQ=zHKEٴdɒ%#i.е5 O",Jl@؇.~ Gԡ%S#o ÿB܈G370I\%-Ĭޅ.I!^o/Cvv(w*^QQQ>`ƍ7n.ZzV6'm<">ǥD\=-[)@>ͪWIm\fo=`2U_߅G ~ǢʚxHm?i6Np_-:_y@BBBڑ0Ưjq{9P<5We=PqJb(ReV=ha򡳷;nv o1Lwݧ&w.+h޸[pc[3kjjb }:W^yeYgMvcO0s_;o޼zk۷vsqw馛bk,\խCBtjD cR-#" s`TqաpQgWW~iX6D喃7vIy省ضI\]ߌ]{~&ZKGsZr <-lLz}CX|ɓ'G-]?6>裎j455U[;Pp|Sc3 cIw`Ex!.0w[ >+n*_!:+ij/⁻nÏj|kyfS0}) "s @QqOcou#w.}j_Q7Θ1c7ϣFw0 AQv`^v 7]ON-:zBW16ts8B" :yCea?i]rKR@mib\xxʹpҠ^GjĪ.H{2&={#-5n D@Eu~ak?~\zM3̳ϭzܹW6""cuYV͖^ܺuVqw}7#̡EaWr*/|;j9|FqDa *b5->)(\;f\r(854aEE()EblJx}\4xsփyQ񿑚tkkjz͏)nݺu9眳c}Q{w|sŪkHQ{LtGBEQ47T~lr 4g|5946m+%t:+!k]쁩܎G~ϛ7/D|anqH!ͶFS5f=rr?TYeUae¹x`-X@`S#k7$''[+N%:lݙ4-Lr~PhԿ؀9TwD?_i>Čܣk0qEcGK;4Yls۲zPo3r̙xۑ!{ᄓNjz ptUSoZ<{HNIElLagd%gbرc_+"{ƍm1I,ƍ^+?3ٮm۶U%u O!5:ۜYM'"i =j 667GVJFٽ3G1贋䳟}<S?{; ˞|m3fv>}-ZW_)#NN^3``"!uZDpy%noͩpT^? l S!ϿFO] |tbiƧ~zEhذaٜC:[IC[˓ulfE6Ӵ擠VRÊs5=, Gobp+K_f͆>f̘1ymT(xwoٵkמff/:+)4H'EJOV#6+[qe`˒pÏ_n\Ɲqs. ,Y]]#hbŚ .82w5'Ll7ޘp8t ur%"xVA&> 'Ʀ%[Ŋ/ok{.m\W_?yOY2|{(dxHNNh~!EGk4K/Ra rJi CqMNZȇYV9Cς,sT=|f; 4Os?Y[Wf;kgNfQ߲߳l2KQQQ:cjtHщТ* *Ut iy~t GV]ᵗfϼ wعO<)ym~g<~|RvyG?+J`̙/^w̘1'@Gl[(Q: z Ii ZRZKhcݘtظt!4(Ϟ|}رir}5ۅ1hvFL>9m ~jۦMvN<[dddƱok1\ƺIAa']4ItMKnDz/`Wunܽ{y{*}F~V2=Tw.YdͬY+`ǟ2WPp(HfPR>? }=?fv65y~{o0xx)-mbcc_{˗/ 8cl0{Gۨn-  Jj>DDn9ǻ}t5z_o{{vlVҔ>plS+1իz衸oM 1}.GEEnFtxtavOj_=CrЅ /4!16'^!C_Ƭ'@-L[sh !cے0᪊oyWVVV>ua+-gL>-}x:d:eiw??j&0|'۞z좎"8Ft"NZ!4}(qr#C,Z S1%_O㕷[YdG+>yu>c/uQ N}!B_=A` Aa9||,[Y0|ۘ2qPLqh?E)E[4|gӢϿ꫻;Ό>Ss$zX ա/Vj?tƜӦ?+W,ފcW2,1.}##tra}l,c<6鉝![%> lC aLxhof󗟽1[ŜOQ.^Qd|{Chhu%:nqKFN&N4La"|򗟽lL.쩬=ߥ(' ']_w\2O&>٤Y( 9,i5Qqy5UŔ1;&_"z/+-|0@] ^BUUK;V`펊s2߸>%vlo #=DbD Α'@Ds+!AP<`0|(Y߄*w{aԔa]zN^{v;|^w߭ ]K AQ(%$ Za glfe+Y컈j ԛu_7RZJ KC΀nyOCwhw%-^zY K.aҤIV;ֺĔ[dj|1evzۍ{ZQ"Ha Gjz}a;κj2|vKgN/'?4ܲeO>>{h96럲2gtWbFX @!B@]"hl V0|< 6SoRp$m+oĖ/iqx8}%<{lr-&Ԟ={rrr#:J> s,yY3z6ufs+UmVloh~}'R\"i{Yg_9 'Qx㵗pu?;VZeͯӦM+0a.iF &Zi{^E93sk*7! Ai"`,6Q AAm_YDw" "` $TBzﹹ}fy%H 39Sewˇ(nGq3D]95R1s}dWâ4`qػeNekozCCYFNh1 wB( QhT; *SiϤ:~ K™B#8Sg";vc׼%3$F6@ZVVl[\g 07,1bDOALm*#JԿct4kG_&TjmYs&1;N[]SEevM'&O}q{O[F,Ɨ߾ُ'}W]֪h4LZ#r,s>Q{# DkL-g˄(eArY}M;ao}GU b\@ȶ*JL 5 m;1qb!8W%/> ʳKVt%ŋz|/t `mଚ3PJNVrw(f.["@(fA\K[UCKo42á-W{Y~Iiq4=9|@e9;3m=c Հ<0%;m_yoyN%eyYʍB/2*l=UTUU9Zzb v瞫V>&Myܸq45)1y"unz5kzvV5Q$ѶR89XȞX"J'^N=TSzh8Źo߾56l(>|xwAZ^Uժϟ?c\\Y+\$K/͚5[n"}J-^火gϞ9>>2BT_?*ZB'P{uPbB:W<"MI9YuZv@.'.]ٳgOBZgm۶-k}JKK爏{Æ EO=T(~'׭[B93>.k4MbPK@ۘVBq%*U8W]IO~2+5jU/_̸Ї͝;7g<((gk-_7WULY|__.:V5{֭իW5VGM\iħ2uL*>@tbW+ ݅ivߣ!P3 ֍3 Vy8WrM>ްڽȲ\~9s222*< >7,:}3gj$5h39|D"Jt$+Ƕy~ j<`O gĉ>aaa;v8ՕRڢ!222?S3vc\=rxSSG&!cg %ϐtoo"Ҟv8wrΪY 8KggRvH<|Ҿgk&xpviBʧNإK?BHNXŠQF!...o5--n΁"Yە)$[sP_[G?jBqwT.ř\ì?\v:t.W28پZGOxREyʕifp~ɽ'W@-JĿ,ܨu ?mB#"^(7uyua+Dx~r3唜\`4Z[<ঞϰ0;S2vNI9ؽ0^[\TK|46ĔnD$(p~9" UManG\W<.miGO3F\. &=õO8p`T7.vz%u6g(Ju/R'` jdTpn,TKtg[]To[ k4_ jXNܱcGmgEEEEE~N΁2X uwC,7ricfY:A\U!@2BOTY5w; N[Y{C+h> -V[Txpq^7ntnذ!gʔ)___oFZ=xvk`qh~TD l--&:죢!wVNkqdJ>, %s#Q.Iy"Z[H7>ތƌ3gzwkcbb$ k/޴X }#.$ DƆt֤DEVD@\}8py 4h~Gx7\Pƍ0iҤe˖߿!r$1om܌ã4b|< C@t JAA |uW,:Rp7BőfG -۹In~9JOvѯ57J5pB !wyΝVXQ2}hec_a9mCaY5U!D"Jண9SϹ(MJԲH?hriEqU>sEIT7o縎~oքUf)h:b߲eKɓf+H[m@_{]:z S=Ow6p~D)]U-:N:lѱqj_0J78c\q0g9%ܭl4)" 67ׯWMu%a.Xfq& " ]z%gݺ9_U2>+ET 4 WbFXW܇Ժ]a=.v,G+Ӹ(o x3^^%'' 6bbb]pd/… }}H{^Q %n @c'+pǭuoǽ$pE0`Wgqgxb!)jeaNRmlI\xklo+Vd͚5/bZ6md]bE/ֵu>p:!r{)\UQ9 zS.w:Ot̷OЁ B8+T9sJZ+:zϵsqP`:M^B֌bŊ>̽hѢ>`hi˲\w,_<<111uJia̴x U9RK4vU)9ܢAM$ݭh~[Elg_'/e=}@D}ЭWw,x3jTO`7:t荃yg4%p25OaڗSW켘ڗao\U23Z:1] Mp4~#xU.HQQ>5~x۱c29 s{,s.$O2Tw\ؼ@QJ* Nkjf834I"  0Tmh.hOCDM!fș`jWܱ:SaݺP [e34v^g.|G<جΝ;;.\XP^^vN,7UwC•[,ԫ}z_K"@`"z.L=UoJA7>SHܭF!MǗA7X9 E2:֕պTbh͘&xh1,0DGlR|7A vwߙTk:M^-Nd n}A :3}ZQ5"T;=V IwFhx3Dpu,%Zql+_\&$屪}Bpg 8n?@BzhAo*o) =3Ti?@ X(rmE]ZC={1 nH+]ނwgVǓΪV=Ps]6%s}01  %4@a. ^h>՛^Hw(49m,u:c"W QDFIߛ+ (T[.XmY|ڇ Ukh*B0nkr5mW[*,QD:(VKREױ=h`Hanh54; j䣙ۚJyC$Q>_pwOq_IENDB`distrobox-1.8.1.2/docs/assets/png/distros/centos-distrobox.png000066400000000000000000000341421474517124600244360ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME29{f IDATxy\MϹElQ)0 71a0눱X c~c0f-TD{w-uk^sϹ<9( BP( BP( BP( BP( BP( BP( BP( BP( Eu²l7eўP(eXdY p^P( P( P( P( P( P(u;˲/Tfgɠ~< E&%av(Wn5C%;ahP%M儡W`E'#" d&.С 'C!t(:CP!x(E<Bpp CQ88С(BPC!tCPG<BQ88!pC!tCPGy'CPBP4С8Сh>8CQ/p< '<jڗpئ<](Y,\LPI:(B8!p(C!p!p C8°#:[Ϭ<{rh9"\{0 z- vz5[X儤mZ[*ȩLw%nez_<:z.: z jiP{G&9*68B:2!p!xC8\4p6D*mKM\%֗!p",4FkZQ{xu!p:P|£2zγ8GG<柭$S=<5Q G5!pT PoSpG#Q*:,vpD)?K<£\kK<̲lNe Ɯ%WIA%Wir-w^ v3Zi?Mz LGZ)k*(RiFUTTR t{O<*-p!xP1wB+A{r 뇶#81k繧8ai"f˲ aֳ,[mCOn73Xxx;r;x|8r^c\9pp*3aנ5 f[ci43 sX ì>NeǛU嘙JWJYaf[UPttFóG=Qf?Cp4e J{B=Qf?CU* Z4 =SC4fKgUpBQHCR3 Vo m*8?ݻqtЪ֭(eFpCY)mM ,cu@kI$,-=?P:X adxR8C(!pC<0t*\mD-47z/X,YVOpv%ߟRExmfПaȺ,_(暨gbE^cf)WaX=x<M6COO[,eVrڋB:* OieWX5}/kU:(*k8tx:Z4%4t!pC<!xQ8:e#؎Τ*i=Zs6?waZvJe/?h:hUr#j8rAG ^rAjqi/GVx82g& T'v7Oe?G! 8}e Щ';jN6wȿ ve7PX[7Cм ar93 S; s*ц*!x4W!xB^A0L˲Ѹ yڳ:^/a..=*^7֘} =$Z/J #9 b F?Ϡc7VQ:ObbBC47Tp~)ɘ=yr]Fbq 1?H|:7ytuGbm1Ɯv cp48*z@zZ/30Xz5KY܋.ۓ1ik6$J8]8m ca61ϟ{0y K6::3f ._ʁ<<),^52C:NrA}07bp}ptYf.]adU;yz5tx4M'P?.5)zkVþAW]]xz3'wpC4hp2B d,<y7~^2gcrl52ĉطoڴi# }Z:gaY>XV(p`>18iC[_52Uy}urxϞ=7Κv83VGΓ8~~r zS.d^?'=y6F: VϟA?{9Lm~.[L:cTTTjkksݿB0$QhSGx53!pTkᑰ@Db)M3q+fn^eE[0SxGIWL|"rw{pO׉Vvl]fzgg|)[iO]/Xujύ||2 k)l`w*<}1zFS68p`;vD[XXp3\ $gy-: OCGSja﹈oo\t _}f֭ziԨQ3gڇ=MfFZ{g Sx8*H$/c8;Σ+_wε'J5߼y7nlv݇}M2Ebp~]B=2/(\x233uVt۷o眿5NC>Wvz\3<77..]2 mЯn4h''p4C(2 ޳z`(,nV¿n od Mg}޽{[l \'NxsMT <rY܍*ƌmCNDdqλd\ [aѼ5ZLLLΝ2...'W{XV0iTFQ<|СCu>>._PC_jUu}~>66|OT uzSi4g=ȩ{\|'Ns}i*l=%RCjB " ܿ폠'ャGb2xt8~r~~~ҡCy» =4rH{]]ݮNCCCiӦ%.YNʬLTކoPMrQ,{'v=uε2DG OXh]RR_-_-C>ufԼPqw}Z㼛6 _qkH$BfJ,b>uaJ}G5ƍ---lܸi:X6}eE!!!͛gvNoOOlbԦM'atqO}xh}iȑ# Q.0 f]Zr"VJu.E8Ih彗ѵkWݻƍCjc:9m.h7@D"޽};`%֩y;f̘9996lpy򥶾dܹ1 ,hdaa vo߾]yyDgtxEg뵌 C=>{0'NӃ'YԪ;,SNmc`af~366\ti爈߹wޓkW98)Wkѡ7xt^3y^q³,[Tp֯;S/pVAHI~HfzT1c֕|}yv-\>by͛7oyn:t0X,.sN#7mZZ,dOT&66 vqxڶ¤ɽpQ_t#pL  O,Cv?ٳg3vO_V_Dz8!!!uԨQɽzjs…r8&{TJH޽{f#+)b|_-:X`00T]˾x"cNNNM2 {eN=!pT#2xoVgg܆:W;{?/cOVJ7@Ppĉ͚5[lYrY\*6Sx姉mxCס]; 1{.O{!i9Vͱpox),QST(5J4zhzS@vlx.Щ#<jc0~Vvm1g `c\37}Z ➄C6Bn0ۍk.+ONN_xqVϞ=;>}L%ѣGLJF.]姟~j?ylBGF8#!N]=8w2-Xe/uÞͫ OlٲMZȢ-ڵkǎkԱyhMGkåv .{Cz{y,f|#A(+.T! KΞ=E>>>mQhݏ]Ƹ;jii:SKx&Oڋ+E}c'.mpvv2o<cؤykBOA,,WgYVgysAA +^|y|zzzi::5k,;\QNlZc”ټRIDAT8w8֬Y#e8u ODbdmsZZڳo6dqe>~8fժUVVVvuБsJ:iiK/Ç1eJ$ qhf+}b8ۣG֛6m :vڵ :tpd^:N_ؾ};Ο?~{饘4cvD="(ڵkNNNFvɲ.t˖-^xzzv֖ ž}ЦMz/ң t N@HDDEEō?mRSS`ӧGd̝;L_B8 :fffƕ+WdNGHOۺ,^SǏxN>|cǎ͚5k 9}o޼iQ cM:o<{SS֊ڿ sDԇDǎ.wSd&M`֬Y~ߌ[ >>J˗ضm[î]ldqͶo>ƍw٬UVQPd jU:a3q) +łu{0t`/J ߙ=z4Ν2h(믿"CBBz2F:CPj}#CO-pa31rlL'.߃OׯcΜ98p .]$ 8E6mJxY1c̕/ 1nbq`_ ,ωQhtÞ={dӳ"##,XY U R4soWl2;c*5;w |csGGGWQM:GXB.ex;vo,Y-rf֘t]/"7,,,a֭-[hǃ!x4>ژ:u*va鼙x8x:a㎿ѿcעE 7;wltx:O端¾g~X; ]W̙3/X ѱ Bi08q2g[a풯QXx:tPyw^Iǁ!x<:0slMBIidSM4q֨cPN6~N077Ru<{Fvn>='b^~tl?ߢ~BI{]u0v/t o?L[a(,,{` oK!t(ʣGrJZ LMM1tP;v ƍCaa!|}} ///hii#t(D"A@@^֨Q#888M6puuQXXٳg#GG͞"",, aaa8q;:OOOk&,J0,˲%%%!ZZZ-  EEJG,˪ (eYqqqUIII̸lqiiMVVN<$-D"ݻw]O>I%>MKJ\2Q\~XXCF|^$?644l' HēH$5>ѣ4VC t-_,pCEW-.oR4aJ<հzʲl_lޞH>l>F0Gq̗kcVy:999ز2++yvv6JKKmRSSKΜ9)Ž{$BI?6e&#JULX^|_%8;@ujbjjP;Me[qqqeyy>y5ͫ<Hn+xh6Xw+cxn֭lmmkiicٳ(=="<*IyB8x&Eܲe˒#F,^8< ӧYǎfnnKWWڵkar8kkaaaunU5EzzzqA+⤧0`@#rJDՈbbXp9sX{D*PQ6OʤIKK߻wqqq-@KKKxŸ?kmaYV5mڴ}v!#xKjjjX߾}5۰aÝyueF˛I&%tܹYHHbu)ի;feggJf:Z0LM"ñ6h XW]oGg/lٲ#GڿAџ{-EKKKf+%tuG ŝ:u*=zhDYY U=B0z>[zu̢E촴VtT-駴/::p>@y\\W#F1$_ՎD"'&&=rŋ75WG/]ԪiӦo7"*/ GTqoXTTTD|yӞ={͟?,>>>X,YD[[[qrr;wܣtر0pAXXXXݓq ]es^)r=pLWU2KJJ6^W@ oO̝;EƍvFFk.::o(//O 80&jQQQg5kTN$ikkgq)g*PGa%4pϚc}uttZX ǫZ:C/B *80 ɓZ8::zJ"}k=@C(ݥb|5kִ͕GKl|̙ٕxȑ#; :($$$UPڦO666vR󭰰tݺu|>@B}:ۤI{yƜ7n_bqe 5j:`Y6$+3qOv\O@D C?KU B)$&&ٳgiӦ,+MwxVgdd$̛7/6,,LZO>NQWU=>|>_jժH&T*)))VEޮ]s=H$*yfDϞ=j./p>kFDHN0!F:X1]UG+O NrʔHeNnnn͛.TM'**]E)**JWWtʲN<Ɔu2QGp^`8*̐ K۷3BKuAG,%/UG#PDjIO>y̲DINNNEI:ftSTMjZS6+WFgggǨ:/_Lشi###ڬP1#uGy}QQggÇ?*))IR6:ũStԩ6!ТS~86*Ј =zdlj|E#H >|9r | < љLn|!4͉eYVt$}]jq] Wt8)IGPч700]ɋ/rkl:;w>633+E͏.Nm{O_5Ue5kVpر{o#yt@K(9s殭mv-mF6fDT !!CdEzE,ˊ% """|̘1h0& EbZ +طo_R޽jMo|4mm۔ Q )f Chk r{)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 떧r IDATxyeiZ{s\+3++kaA 04 laLr8l a9 l$G A(ȶE103==][WU֖˽ysι7zTddV潙7Γe\gAC: ^o6f "OJ#21> yf өȭ$I,~G3۠!Oč7~t:Iݥ`̢Zstp8d4|(Mӟyyv4Ӡ/l˲(vlmmn#'kg0p|tLQ'YT7:Y~< y޽{觋ᵵU16A: Q"(QPL 1 n.nr5hH獈۷og:,g}}-!o1qJi NZIPQPIPWja<23|ŋ?ؼ yƍTEnA_jR*(NY)83A$!8)>FCQ%̹wyN7?Oi^ |#s}_,D$=w^/Óhx`GoOǼu޵a݂aq(&&cT-A˲d4qpp@Y7SOX4hHv:~xee},{"(B`gs~>Θ^uP 11\2N9>>f4ayjM/ΛWAC:_ylSkkkehLBt#́s`ijEo|d2!Iis/_'+ڐNR\~Zkx2wv&^/hx Cƃ 9hIƋԴ0FEǀ"ޑbLIƔt۷bMPX7&1\1zOx￿ Ϟ=ͫܐNܺuyf6IrE >{;,6 *`l6,>hϿir5O 7n>U=β'766~z}}i7׮]l ^/ܤ,^GIG)a\?S.$R_`(VQ1ґ@:#tXF&JKCY {[\i%bya>88::HZ/\x4+ U5׮]w_{gϞ "ZT,`D=‘S;p㤤4m[2`D1R6Ӈ3~ވ rAc[1TB!JYEgPxco"JyevƟ?[l4&T~)fzT$We<qttl6Z?u:… ۜt|pF=0D<&vW}XP׆9og|ۅm޹g%2S}KVT'ŔN;I/4'!7o|,XYYZK]6%2#aܝGjȓd%h:U~G:I'"5 E{V 1 { cUiEᅚUU6[mZ6e4z@ U.y\ s_Nwϟ?Мt!qw9o]VWWO>BUIOQ\IOL4I1Z kH3Ah0M[|}8%OtE?zB;<C&WFj #$(`/|\u"/l3Hg<sxxHȿH/_?6!_ܹcs?4Njmll0>FD??x9a 4x׮]HRۭ;TV.rp| 7filK-SQ)ÇOK^|y3tVheԣ]| '$dTHTP M`Jz e0sl-;l x05HNUBOvݿPK.5QOC: n޼|>GmVVV-z3NSŐPh,pO؟%9d|; w(Z);kom_#6|4vthT)XPNx!Us ,UzZnNΝml%$sU1ܿ oZTc֐;sO ;۬Ū!B SQ4t<`+c|e(G)G#3FefmI|| 8fskFfQAs5 %ҫ@&vȩvx PN}h;Ѥ c }S0',嗈(/r'nj#͓$+++?3iN`C:oDKg4lަHԅ(E`0Aɔ/ܟ2m$xĆt%U!1gb1gfOLUƘ2L|DV}!FDu)+kgv{l[6%vъH"’#PeTNEk K~VhJJGtld)=.$-ڎPX '˔i)pܻwx\izj,ʛِ=^EQvٳgɒ,j{C处Q)$0ћZK<tʃG sg L!)kb5&S>9N𾃚t43lw=fVb`hEa9_Ĵ-q: R 9e|y޾IIuq`VOĉf/=v͹=4}EcM<{'\iك$ ZR51p6hAS2\f1,ǺJRPb(Z7|r<P5SlX9~ S 0(VeqRJ4QȉwwNoݹ[kcuUmɣTi v`@YVVg!ܾ}xZqxbjCK6Xvt9fFiT0 @uWJv0}aD\A(M2޽[ַXK2Z ID去0'Irͬ;wAsrKW_z+eYՒNJUWiÂEBB Sq G3)TpP%%Lu*ڱZ]UzFcYwQOrgO(}4p583N" bs{v?걦Z-rgUJX\ZCBzHD κE_gC,W%}] CQmcqҥ)nHkotO;Y˜݉BM8SEĄ pEE7'<,#V"1`j9C, a. Qq55Ѹ?sȧ8%m  u#6] F^ﰷYce}v79 !r/b0Dj (1V[ iz<;6UxX\ovP}hXRu—*Wâ(WSj^g5'!dI4,ڠHx "RI`m%e{ٽ;i+Pb%h4ִ(+"e܅aE#a æ}Zf$~aqIc]4v3L3:,M_lu?t5'!JܹsGs{knvޡxqw|Θ3;qDC znQr{EPF,,CeY2 E'I?dY/^Ӝtpն~{q{{aoL%Ʒ$hfcNs&4-`n[[ qFOop(SLTӽuEU)c*A=F,K'|~sF6Znh*NUGq9{[>gWYhr[ R D E(HVOs\ꬳ&fi6CJWO ސW]SŽbN.A}xvX{63hԗn%L$\N~"6r[(+ UE:}hsIbIU!'OM:.YN:TB1Lt1g6+WV9BJ)1R`$GcI1Al#hQҍz߸qwni[IT_G,FY=tҸ9 _U]x &U54UJ#{{suLg ?x#SA%em 3k"8TWMWkc% p_3uZ5%[y!p[{^Zܺ$5<(jN_ZVbofVO9u=7!s+|5Di;j [h+\IW3^vsj:Z'jjjWa,~)I~%\ IF'666.omnXQӄۥϯr5lI)5,22S&4+UFOۂBoTuYګxي,+UN|JHPbf|;w?|KZ +6AWE뎜 mMAsb }vv:u L@ N>AW%bWS2OU]GcΦKSb*D&N+(IroۆsW9i%SRɱVx1Aoe-;<ŚI5HT)czS¯xNFWk)q8q>!2b1QvmsJs3I2 $ 5g3ޤM[pP="Y99888v?Z/>xe$S3Vn)S\,O .w 5uH Bylc)&pLUx(1%%^=^Um382-h#kԬzY*T50uKh&8Yu!1.1 U;>ZE$^RXQ6 '|C.m›Zag> NFXAa9һ7IU 5 Lm#/(6dyb0ɋ.NAE**gV'|Ϯӷ%}2ز^tǂdxޣC4jj eR\?hs֓3. WVFUk iBA*|v9 IDATg66slH? bzy0Et:Z-:GGGv^kI|˗†tr{=<<\}r|#ȵxKoYaC h:!(7]lOb| !p/aED 0>U)Kb 'l/-V@ڔ&!mUref: $8Qg[&``=;޿C~ үfbߨE520[hkX H-9/|!6O?g6-iI"c9eRpOspk4n* xK"Fkkkz=qvpp<_~w]rҐW*Zϲ%I. q.̼296?k-O0^YPsպ`A@!)DDBU$c(*Un:*8d&A%4JLo:8iMqEn2rӦ4-I'=&N.m&-a}gZB1R+z,jly` K'vB^Hƃd3yV?}ӻv=o9Yx7G\yqto̕o];nkVe"UE>IJb8v?y?7i ɯ7nܸRŵ 677E^bYM>s%uêBđ@*j3D*>(ig|mRR$4Vt>S4Y֊8ӢF筠OBjeSiQJ 5śRXLW8Է2L>3 NO88q8.8+qQ2J{KI0"2<]eUUЖ7Fg,x[\IҜ49úx.Ocôha0b_\T,}6zZ{es4cl*T>Kz)pEa _:=/x)@ 1WN|kA)mWĉXժNh j$iXKR5GTMAh^f('"![|^=6ՅjP ˀ4Pykeo˒ {(+TZR>"j.Yk+QE4)i,sp8#7Wʍ6 )1aqPbZ cΒcDZߎɞh8:jZxJgP(üdR g;sn;IdV0srI94 0jHq}N & 1BpK3>uͱ+•6g/ _KeuZDsJϵH"seoH!sV[QNIl7=|N;ZIAYR| >LuIXFXGBE5EO-gD"fPEu@M|hGb1nUjҚlLZ,1.d2M~H>wݎc15ZN "@k]AvHn5tw^9aVxNɼ$w<;9GS'%f;ShI< cm3\|* җKLNNN 4#|kQ1XLT8d j-s ޺Т<5R[WMU/Re)ѩJBC)c&j9y)GJ SjOL5!fgkqi4ߘ{^8\ԢW:NH ( 5Rdq#`Q~ŨSah)e!e"IVth5UQl8(-\2*9 7avXFYbe+ _K`yҬ^-OHMkMdb:Wea^" fZ*mXm7s N-)lc\Z>"v֐N/tVVV֞"ʜauIL =ށ^⢵CqP|GT'iǚji(4h*QT fo6/pH*jBGcUsT^ $E5q`^@'wRniTeIYj)%c xa|!ԾNݒE H0H4 Coً Z"<-3TϏT+u1>T!tG~qh4J~91sz&lXk\5 .T˰Ҩ2*~/f^&&s~&cG2F^B[8=Ք)d]*`W?G)ʼn`}3MdSF=y Pjob )0" ch"07%^,˪$IjJd]xS^N]iOYi}vکtaYu>hIO>C׫ O?Wf$ιmzOD"cNNNj`FeY-IӴ&&a<"G;}(g>e?ht^ʲ$I*%WaXxNS8JT, teŚ֖wDyjРܷ DvM{yN=DlYm}9+Ƌ^,{FUc|>8>ɲƟsv)ic?F*{f7WMC:`xc1j(9ax5anM 3R;q|\+WG $u/\wPY86g= kcX|n*.*tDt4henuJXI899d-_5v8=\WT罿\e(,K"iL&7{9z ;.VkJ=!)xLQ r.\pUӐTUځ,*;pgd5[ٺ0 WKxcRBOffiŅh*FS Waa.&yI^ם"zyVmI E"N>Ʋ(2WEt@sC yAN?浵5ݻv |O +(|`hENӴvHLTCtrr}xWTs!.U‰i}lb"8ZiͧT҂ʄJ𵓡 9G!+.W-0ol^(j ɕAB(B$ag8 SG?FNlIkHAl6{x+ \i5, j 7fa`.qs^S5y4 :#9}qPN&&TIk[:&2[,;EⒼ1E5& )r4k-+++e/4!snxn4S@)*Okd {&,,Cy, #eaLD_G;CM;4R$[,w\R ,AVG u㤳tnsie$I"3qp3$M rIc~US*/FKy4ک:W*-Yz]K2.Jt4U+!/cFBX[/z?/>jhOD͛7;tEQU~\dz|' x0cj;d,OOlPۊT> I0-&7Y$'ceyMHfNsJ .AC5R@iޭlBass5GR#!)8 .愥g ̅E ms]S.}zO'm1;xBLI)]SD s:0ȃ3X-5Tmg9]&h 4O é 5R+X>˸~d:Se˝ʍ{MMmM $!ea )VE5 _"<"`Z ~(6޽{9u aq֭j`%I4yqg-? SyP<-4Ur8)EHWFHq"S6Y,H"nW?巁i{ZHe6Zsy9fzXQ <<(Ms5_#gչz_ ~A7UTfhrř7*E3q6DŽV)MߏSqPj<(@ ;Zx_Gݽj 6P69} QS+j˸P_ .LJc1b^?ch,րUxgi"G[z*zd|gCܯXǑ2rK=S*l*bjYL`%P?4MY]]{ofw5!7j*?ŋd&4C56uD%waW|~ט'RL]9m|$ #FM l3檶XY~j=?4K]/ .$6~+ύc1d6N:@RIW5 :Q{*/fwBǠ<Z|C\~ R1qiQ9 ᰲ_yFGq SccG/BUGq}.Q _mx_N. .h7۵UX0:izr^Y#rHׄ86DZ"3vHP;Z,P8S[3HN*QP@_הћvXYIlH鼢?."Lr4,/tC1<8Ѱq&,j`]FWGE ?{_'YYfa6a_dQ`>#bF "D#3Fh`S1(1DFvaXf}饶{|^fa믜S(^#;n5gW[Q8̄wdi2)4Ȩ4 eQU$VK'&SbBN)t(/p?î8<cZj0 L@rnnn12ԑ;gdFn/le;vfe$ -*D4e0V6^Eᡢթs'H0Ľȹj=rL s5dw`] qL1z,#!jBo L٣\.Q!@ chk?ҍEE~D@\PTF-n$W`)e*{A)u| vsU~tU@dYvu}bqaU0M ր\ iywup>MQ5<#!AHH–ʭ]4Kyobh钬ĂS2[/z eŎcTWUtwwVu.:EgtS4 cC5PQCǼ{kC𹭪g L&&- J(U Bm-NI?g hؚOA}PTqL9po 1YHceXf>iJ25|+&Pҋ@_|s:gh식@ޞ¸"L.7z 5.ƾ#KJ2l_;*1Omc@ (Icx@ی :n#5JeT*``brbŸSg[sL$. A):\9?ߥ6]]]yի;ʝu:`]NJsd cwaeF5"H V5} 4A0<6%ͬe+֣~ۃ{C-#0 {Q؀2 &h5 ߵBs$2Aww7V9K;EgtX3H ɁjW 64Dvb.Tm?iXm>- (({ ta [ZCjcN7D| l|u)67"<,c mq:LfC޲D4M_9K;Eg:J  T F"( dP[ 8IQ Rd,[B`P  -ļLѱzeh23CqƀpKai_0A( i+pVq6#V StCJy~څCM JsaGpo6YEϰ 8XXY!f#F2) Q4̅eh* ~4~pbMgQBE{0J5rʚƸ}ԩȲlUsvξ-I.$d`07w6:l` 3)-$VyLXl5E\9U9) r!!4J(`2Bh0 nw܋PVh4N霩/hm:XMɀM&v\]juTHȅZ♍uԤ%”0ckAm/efU0J^U[@_G؍]Ǫs2uW4qX cAs VG[XJ%L:ZsVX1sv>Stۈ6]MMs&1Wb ,H@ V)Tآ-!'wLOA#jK `cl.'&7q&iS`!@Phe۹$0 Sd98%)ގ&,O6><[K'at(VZu)!&F dТbM$b"B,@@'&^9W1݋)x%qKC(rWt?l$;{zzzLk%h%=/cIarSH1 +w?g;"VXIc)*Bga P-lJ8mtGVBD§GJ܍P!'g@@ʛ:o)* uNy)ȇ !^UVCp%mH5FOЋ"PB?b ,)WPzH9'k JVbQx$>DMPϼXHae]hr#Y(DŌ"Э*D }@yʔ) /vNyIYMQJ9/dE B B)\ 鄢2'(؎Bs1K77) )#gs4YB )& ~:)I@ G `".+"57,_ktɂ c:][kSm Ъ l :i*a6l`;9F>Wh b?QWaD)i/`:672R͖`bO4$p1~Xb4/Aۘ/ |aF I8Js;Vĸ===zs&wKX~=1rخa$Q`S4fNf"Ab_uz4:|!3/>i 3Ȝ$Zȑ ih X9 r*Cql<"N5!j߉pr@X$EeO\6aH2e %):/Ck==I$Ib7ẹ `ce-o h;^2\1+Y3'DOa@My9 Ud ٌ#)C 9%8 [gb!!)a񃧋R\.9;E2Zr'v|65cP1o+b=t6"vɋ\.w3Y7l !L/4^hH  H̍j\8( @JҽhbTtq`a.bnbCV4ʑ q# Pk=iW>sFw^y.50$@:1xq_ӱdK$!biDJ H CjBS,aH$$HX@j[*b tt f<6ܸ`E 7jH^Re xÑc!*'v]]] "h4sFw^dYF|BR1=кРR1Y8iZȿۉ̼J<qω>lǩ&HВ#ج4X2[ ҶxjF$WhUsb85E,}1ƆE c.ӌ36/ybgmt[oή5;^)$ 2,[f͚RLXf6.&mhښ3<)Ǎbl/~] jlW#,aҕ$r$`,^cP1Ƙƨ@3Fs.yC7@D*j˹+ B7ضۤ lW*ƹ_}}}`Gw[2Bg懛afp4bCVXtSx1@KyB^FJ<*'ǿP?/m7 !X(D8ZckAP QBц{ TᳱE+R81[ao>/sт#dZ`+G1}>T0NtfHQ c@cT:JtᇊvbOd ΢2M בrF^J.Fq=Kix g?Wn3ErvLPb fq|vHuSϘXʰ#, g{/f6S#(#J6*"Q\-4M!̈E6ıF+V(nb xNl#oh=+>zzzyEJ9O eY): m+: VҀe6Qs]tqWC^cBIED ~l8E9JJBpj7 $[bP PfAdʬ0SʩALI8ή:fT& Ml)\i艹((J:؞U\XQZDk߄gF2Li7RjBg#)ИNS ;$d/_bD\FHHWX=\È6TkH Sp" 3>MBXa86u;u]G(̈ibʔ)h6]=t:C`WA[%uKL4@C`!ch1 AA{/~ .Sqs `WJTXU|1 ؤ662h!Pb Z+ve $4'ª5Dkt W8 :Qb%"d|狐TV`F= ^W˖-{{{o8M;@8Ge`f$_f M[M!u;{2"%\Pdk@5;lCx u/jAꝊ$0Th""ʑ`kK C H$; #[_ȌPㄐveb-5y8St90ލdJSN{VZ;W輄P1jyrC #d޶2G{ֹh#U~5O!,c3njTkpBXߨaN!$^NԔ"m#}@@ Qƹ/yɎ$:IY9p-Y=;馛J{4uSrp ?vgO)->J$_:_y1L&%@ Ka1fkq7UUp+qK2R}F09b]H02%J봑yH PHn42+upA`CcuWF؛ +~ܶK-1Mӝᤔ?;,I~p7 7St=x  )(VW@6m#xj<^ ס5vw#.BEN/b]iN~a( " &B+%&LGC sq vP!Jzx+o}CϮ]v/?gY*JE]trȕW^4x`gPG3 FPS)8TLQx?ƥE[q|쉄杊-\"6f 6qZuHA9{0#!DP` +4R"Wgga:wPJMZtJ'xHF%'z ~ᇟx?{8b;S+~{&[a8BʽSt3QAekHbhǣ)،͒ؽn+EE/=Pq P68hdBT*A)UI Y}N8rwܱ;'paB=Ο!~ 7P{<ӶL`VI*:Eؼys3 -4Xd+$m 8SP$ F"7,]#!ߨx5 NN{ 8HМA5 hA40TĆó9EGȴ6HEDIl 1}~)p2rٳg/|G}tk^g'uW|>I8FN֚m=35ˌ߄h 7ITI,26XbHcdt!il^*#0`tj2Z6f[1| d 45"b$Q؞vj '5kß{&Gn'~I't"[e"Gu+iwu׊>z`ς{6t D*͐2`2,&JDUƇPf>R8 ٿ p!hTl֭}c!J6?˺3 42ZC`_)Nmi=wG0ma@cvhhr ^㳟, }+xwG嗌;M^Fne3gΜHRA0x'Ng301$*exN,pcqKx˜*f0> Fan}.+ڃF4IK`8kbkaWZ@ӡ&lTBZўإ]A½ދ;^x!-[6aSu_tG>}+j/Czg,Y&{ BStS2c7"j6!H 0㕷ljσqc ȼ=f0v[nşnEj;V*ە+b4128<iSBlZHqˮ4MSOaɒ%Xp!~MO>~_#8x"*7o18W#}k'SwXh< }MSiq,G=WeL&W2g[JnbLH\. Qmd3$lԀ%AH+6$D8&"F0&07]@]Y7ؔE?/} r zLo~ӟ< O>U?OnvaÓ<| v):Оe8|"< 5,"XBE>!8k̚ܓʽ6c/@d4RakfdIImZljԠHBiCHcaZGZn4G$(mނ<=/ܹsO}j#<2GU}>T*-o9׿^&7=o]b[.˺Eр"c:eIE[Pem(c4.\F.>60#(Ia N,쨖Fl։@z΀ВM~8Midp*0yWxc=6c/^'|WΜ5k/sԩs-Zt?.[p S,:㳑xjRX't?eG 6ˉp-)SF{(KQ{`SIR >Ӕ Kۼ۔afl!A#72AA)zpVfƳ>+;{>p㳟,:("Hϟؗ7 'ylO.x?wNΨr( xd (̵ 3q)B(ILmMO(xO6ȔKDdr=l/PJRH[]E";*:!f(F#bBN&(AbG<&cI9 Ť#x1 ؄FǗ4qI'|;gvi(J !N;cnvo~W<|>OStv-v{$WKR!JtZ'tg.M@B:-dpR@*JT$RUB2=aױjFAnaY7JsH2 4X8AS583G^CyXrs5o<|K_w܁m.^x=6o޼nppiR̺ Nx'MKXh_ NѱڵkE\.$0Jk4̋㨗xnd! o5hdQr' RTqg$((,@c>4J,-6&$ xqď'xqޟ_ {㮻?A̚5k>o~Oqw5yӧG.[s=wd4wۑ2LYs\2|EZ;k,2IWl)gMd 51DQ#l݉njmn613%"$j `bl,H_9G3k*F2hxy=8(q.3g[oſۿO]lhhhc=7ĥ^裏Κ5ooW_5a>s.gq o|?3g%ۍ$IzN?C{׾bbB1wu:{,_<󼿻Z雽Bm6ECϏl˟&b(-HҞ(.v5tKCA\  SB"%$Ou7n,$hbC-d>vQ-Qb.4fjCTJt̬i3$:D\0.l{pm뮟mo<ꫯŋ_TBf<00VX1裏&w}w[nmϘ#h]q+;ry,MV+[ouCrewOqW]u՚lq7ԝ❰6{+2@p2F#7_dQFTi.Ua8Xzebbm::s2M}FbKSI ōFG݆._4Gß-Jym 35sF }L,1ȠOArJ|⊏zMZK.]_B?$CO?])x;$9ljo}ʕ+ۉ'?'/ӧO?f5rܵ{v?;E':jvw_1yW8<āL-bp6XD1%6l`0*ITBh҅EczZW<4Ӿ^E QD;,aGLNkcI 7ȴFJSPR oKn1goF__lu'|R7I)fN8J\./V^Y5_}Z߁n*o~L9眳kY`DGfM_ո+g\0w(a"b0aΑ [!Τ|v̥OD0c#k`7ee!QMR$@خcRkRŒxv"k&wvXIfK%:Pj A B72h"(*!2nݱbr\ntƍ qgcN=]u+K\sxiӦ ~#N9唁OO?$Iҷ'.~Їf< N ̏.;630jB`Gd .nr/te Ri ) ;0&,î{Y8}Ȉ 4 a^̺\1B3WcBӄGw~ww<ȝyꪫ6s9K/^vW}{;b'ǵKH@N7o. '2,]hhf@C!‰#24 VD(ZlġYoY dk k1N3:Xѥ];9vf)~L?o3wݙ2ASfOvajsgP} r䔀$Lh|Vwş;~ٳgcѢE :蠩;u7|sN=ԭ'p”)SBڰڻgnB ӦMӧہNkWUW]uq[nMժ^hѳ/9s=_~\s͂]Y8St3lټK.䰅 s=<߲O#0 ?#\rɂ~w3͛}5ޱ=QpRÿ/{[{ ): Ҍ&фK#D ςύ uBN. Ji/8A > L)XF2 Ɍf|r(6kh `3CC[ kڽ۫z>`ߙg93\tJfVx' Nh/,o}[7OhW93=(Պ+ּo_׼fON~yD4RsöVŘHE+`n0"rRF5ñ[N4 <DZбɃ?\챤~*$BPF&Шik1q^Zs[Wrޒ%Kްa Of{.<п~ Ì3_F{%?=uGξ!=N1])R9===&oֈJ`sCm*^w'>chfҗeZ.FuB03Tv*d`edֿhJB_)AŚHNM \- Gf> :Y:e}{>`^(2`HdB Fmtbƌ[q'L}o|{ǔR;<;_⼇z虿{s=ao9xࡷ{\VՕ3YnOH)5<]Z5? 󈽮 !{aު _]2"!n07Yo2}lg&8O00!jئql7a;->gRBPr}i 4Z.4q ,x,7[ADV9=Ўbx3 Rm>hհ5!Е s2"=p`G;>=կ>_~v͛wA5 IDATz᠃ꫯ>pwqN>-{o}[]q#GgDZnT*6-JYJ$tV`'=HIJHHQ)2zؠg5gh !U Κ4!.i^`zppRaWlj&66-kr|!C\'!$ Z*"G#ɰÉFD'@8]r ;p n8e.W}ٍAT}o=/?Ӂ7MG V}\nݺ _|]]]vMSttur)&4td'Z ЦpD"0ۛدTA/ u@7-N7~ Iq\!#t핰BR =BCM eT{ 2sLKgZmXPlv!n!`|˅^سf͚ٻi^{3}{jw֗}EtDΙ!!J;D;^8 ILAoD]؏g0OMT^VPK !QU Tsye6]Q ]y>0W7Su)8ڍWj¼LazaJrJ^T*z׻Nܴig>wf9o~:>x3~/‘ .MGj-ZtLOOnW&\X,E# {/BRIP3k;`&¹ [T()s 2vb4J, Y?B)9 [DnaV8e,]8#U8Tơ 嬁nY`#訧!͘1』/[l^iwe_tzzz^g`ĀY2U[bXɆ1#Lt[H5$o\ƹ <6bJ PҰhTFoLm1s#&MHX.!pLԤ'zqB GWh9*GH&2(8Zzo-b+60ް10cY'Ü L0oؘ%& >$aI'a<`c-,o-ɒ%zjZZ$V}ԑz{Br)j]D"bx!:cƌ>}GWX9܋/8{…>~q7.]x'N3͛|wg]`TJuB.l$I'd?p`W@x{F l- MOU Y,]]}'q?"k Q'+ 1(, sN8!AXAa#ze;UU !g,\ֶ&''fiP(21 Xr9\pAox*z6l+zUVeK4(HӴc}/g޽Kc?xM7$eeeH]denYΕ5DӉ"Oӕ {K bE x*G 1+)$/94FspCb3 tdae*'F-8رXpb9Ć13qwDD"@%* !BH$P"tI[(JO78nY6m*EMo;HQQQ9BOph| N9X<Z2qN2S r3+&h2i. 9N9 D$] 7*("E5*),:1Q}JڝtAHO$Ҹ(#>>!œ9s e޽ۻtR|Ϟ`q;v( BoPcΝ .tu]Ӈ"nx׋8`袋SJOIxeLt|ZiaF`105 zs- \oSddZ "(ӻ!p.< 0T/O2YfNg!N8S Nah7'Z~wS9=/=e &{S=*4 f%^B )+$e\2?k׭[WIjnn|3ߴ</^O>y=Dĩ>7|=Tct8PE]پQuMM7AtqXAdd[]\cSM+VC)MoLcl&ch6  5 px`X+DdۜȐmHI `~$.@VFuK BL ZR;O.3ntҟK14k EQ jZG(Nr!.Ydއ~m޼y*I"э78n;X'MNB{+a0wBi&"ϕ d4 ^n)jUB9aZ@DPBa$PBt.1: TCiܝoRit8Ne$(ٳ:''G\`8GYw˗/o~W Vׯ__-nL^i&Ȳ ݞdjA Mb ٰ`{<,jqwd@V 1 *Dd2`CxBnxfE&EXB)4@eiPeHQ ,x$ZŌR %I*X"r8Sfff-[VTTԬ['Qb iǎ=Z3nL'Ԉ@q,r 0E2`c"LF6 ؐ#8'8':Kȁ Y*B Є,*u1q Iϕ2B(2"SD%y:J7BȠHG_uj'g[|yniiaV´if<3~ZqW/={vۮ]*vA̙3b9ݘv1Mh0ӑ2rr*KAxq 0Mzeqշt&Kp]̀l0ưvdYfŤ~$aƎE]4/bKyl[lٸz7<xruZλL:(zѨ/P lɂY i  @V+ D'cyKR'2K;zX4d\|vqkkkަMmkk X|衇...9s+sssv% a6~b1t+$Nvh`@[s>ݯAHF@J&&JJvے 7I~oo4 >o$/98cs`H0 򛛛+[ZZp8\x1ܹVӴ\UU ~oۦ3Z mMokkt: mNB`ZaXr-UTc0[$cF ):JVy#DQ1e/ M<:$"Lh~ҥ횦)**:F"`~[S)  *zHd=j"33#TWLedeer! WF/҈0D#”ɏeY#1֜:q_>p0 yǎ+kiiA8.lhhͪF_| Ӥ6sN:!a(Caaa QJW(\SSSbN'\. E} EQ@8-hMѤ0y!U]zҽr4M 1cFgV,pΣ@H0S%jQoΨ)SossLEQ6E"---v+^q2 !}"0%YsḦX$J"$IajI>qsJi 7Czq5#B,n|} U@YlYȑ#@ !aZ3f8`?Smmmmjnn;w2tF666>(|>o322``Z ܵcX 24MC$A8OeN``x!$ap3Swh'O-^84s̆˗gO6`0xhŊb?ンfZ>/D"oVի ^~eܹsMK|쩫["BiMg8dee% ӵ*%IfD(JbXpi- CwK18d>sIrnnOcʕ+LYw. #̀iO?hiW&M,ohhX(%P`ۑ M*ubvחD#X '=>+oP"PXd dhECRP=P~_X,oL0a=Rj?~@f^w'VVVNǶbv⋗C8sVUUU_ڲ}EU?t &L8xPQ,OET__#˲d$k'| JeȲh4X,g3t9a<ޣKV,x}D Q=#j`hhh8bŊq+VyUn߾wu4-ZH={$v1Ox`0x~4>Orp\Ld/aXP5 Ɔ "cf8Fss34MZ 4s4C_~|EmVᠢ(o˖-:lۺukmǍ$'O~ "q<0D_(8~9(:;;J"Vpcǃ`rTUUUrWVTTdmݺ͛QJ]k׮W]uR_e屚 F&Mt`̙[,(^7Z]]DwLc[MNW?$Hc p hkk,˓T#b _}բH$2jucX_nM&~.}^%pGyt믟lۇMfZ:+gD"+ZZZ{GGn7nzA%ȉ^jkn1J){Lb1tttXWL-;G7^zW__|ҥ(Yi0ƴxe˖{w(ց|իs=w>!d iBBI~t:oZ+jkk&:PD0= {% @DHA $=H1SQH˝2Ax^k(4 *Sl~-[6}ӦM 2g?ˑ$)m™={v{wxǎy~?(=→^WWWURnghL%Ñ(+'>hLĖ([[[euuu?e) 5a(URP|-Fy<>?+h+BP@6.KTs6f?fSRRRy{{;F Ix\cGcZ`(•5ƺNߤiռWVVn`@NO>s>cI$8W*'rUո5b1KKKYYYYCMMe 'G򪫮lmm bEKKKa"+Wz %hp:;;CWp.{Yjjj6(..敕<Fk%nʣ(4c 릦677@Qꀞ;wn۞={JTUUk2=[S_${JJ-`rɒ%=GL3 Vsvee8ZQQ[ZZx0䚦%`VP:HX,ƛҪ^%n:aqqB!?#=O^b1D:tݺuՄ2g MHCC;=--- <pMsJ=ѣG;> Mqi8מ۔)SjWiZd&a,k裏g͚uL&Xȑ#w^Y?B1ꟕ}_>a? p8̛xYYx<^NIp'NB-R^WWw1ƕ?_g騍U6l(jsLa{ +C%%%JYYz|>Oh4M~~xiiiꝚѰ*q6[(Fnz|:N0JicUmu1FCC"ͪBb1Q$XD邡c%$I?4iR(:2X2eJmLYG@PP^3Fbw}8_\(x 暤cܜ(bUU@EiA1B$M$Oaah&k.Zh a9WJJJ*|ɬ_~y|?oo8Ġ9Llz^^nll<s<]2ϠOzyt WjKKK?\ s_H݄9vnJ;;;[BW_}쎻&L7̙{F3tTU ݻhٲe82L3ab@A/uԖ46G|׌ۘ0qf@堮?7|RbkhQQѡk!11aqHCBb͛77K\rI$]),, m۶J_Ms ͟ń3Kh%! ɉ͟ FqL &L ]B#znm%'\6a„<@ϑ*Q`yyM0@H__K{\b^N&L pʡw0%'L01`\`O?nWzOa0SM8ob 7|Ԣu&L0aȮz|=zfIENDB`distrobox-1.8.1.2/docs/assets/png/distros/debian-distrobox.png000066400000000000000000000510361474517124600243660ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEms IDATxwx?d6! zi *lW0lX(z-"*Xba""%2 ZNc !ul;-gbhG#JSkD+pIOjtY@*#߿%v)n-OA:&Ym tn?ሯ\+~Tk(9<\ŭe^"H'l0@ Twq< 4]()+IT_ $Z@fa*@3@qkn$tǀNQɘţ&93ZNha>P mhA:Յp^}Xcu- `+A$(9RDP ";1 x˙ybhk:y g#[Eb90Kj+Zw_1Cnf-E&p[3D _Q#Vj@p ܡZ9"R/9iVfS= GVxX1VY=+$SJV h*A:dZ$c +Rr^N}^L6w0.S5 ǥc!˩)P9aeFK0fHGĺv_{/y#zs=yYsD Dd=>Ɂa^h@B/$ +Lx{cܓg_ez/tB̚DHc񚑘F`K&bhi֋2c GEi-]);#ns3sySXL&DkT)SC;gZ^<1w&>A#$UT Rj5Ng+<".cNqk٢I [א|<(h[7DU[&=%G )JC[TvV1$BꏭJDz  GVo>)bk [͛d'~mK A7T k;9bh+SfD5Lx>(p.ȭXrXKNr3񜽄+V[@ug$Jzͱc:|@?<C(F l*tPHr1Gb-t*+ZԸ8&MBqQ\ ~ʪL^IbBj3Fj}88 4EyA:Ʀ["݅ɺKɗҴߴÖӞ88Q%^]Viӛ8$yf+`0/(}$(Lb0I҂<ąh +9S21"b'`Te_UÊ[8j$>.n \"Jned2`? ѩ:2Զ~. K{YzFIt>5AI`Uxhn夐A"SeqKb8$/SFbU8uy#P! A<% Y+\3n\UY%o-#PTgOmXķ"'xH7P2ӽW`i\_\6A: #P ?Kڳ =ΊB4Ny92t 'BZ,Z2)q5z{z[h=Z SetUK7[;) Wbhc%!+\]j1fްhC{qHi?<,HtQ}CE7 |/C%k5nY/貺 !׼Пt+,@`?T~#=yAxYI~ 1 _ (' C[%,KV˙HZ:6RrЏHW%S4YJ2?p:)%1ʣ[C)`Nk`TjpqzF=~S5P7s911œxj$9H< bh ҩ:o則8W 9=Zuc1 2= /0(iZU\Z?GrN$G ?͋ XO '0\.a2J zB1W0(%Vp<*VK';C$ x3^CKHNJlDbӫ|K/_nUJAaA:+!<}CJij DQ=_8s @g*QOs P q-_xfۚk$9FTiUCx?q `aUXk(CN>wa~n`-G,͙*ub[+-OVl\=8J}i {$c%R%kvHeD5~=8Rm*囹 p5 K|p5FT@2j#&:&mpk0i c^,N %~'(ٚ',+!6+`[;ӟk=PVR` v+҃ҩ{/0ODyRulYN|#W9@|H8$o(ˋ赒$rpx7*VSq;_q[CJGOmݸ9`Y(TA>]ZNJy0ΏM`bh :9ȣ0iŭ 4 Ӿ/g|Uz5Z.4"H"]VП%?HqkaL..LyX&,mOBA}?h>nlo`? bIʉMA:zVY>~~ 8O1aH4519d[ %jX8l=Z$&{Xq$A ` ?$ *8$}zA`d{֊Fq4nʿ[YnzgN~҃|mWDHJ.ۢHS:;hw.l;`bhm?@v)9̭G2>.JsQL.R mk<++ t)/q]zJj<R] @++[%%u&H4Agbh38)ݥe~|+$:wyKPN65p KxG*etCM5.7WⒶ(fٞbըٟXbs}8HSr4Or`ͰvWSeF WDhbmV s(Ѫ81 ՞pq->c&i-q_Rrd.Š!$i]V0Ya~:ա <|T2褻8ŭe))pT N: >* z>5z 0 ,xʶvaUVHJ!C;Ra9 g-a-#_ڮj؛~la~%[貺̾`+i @<e_a&<`༢<;pbha@4Rm?L`;;8gnѯJ$z }m+r/{ }Eq0aE g(cIttYNJ,#_tYYII;]4Sp𔒣V6Kr(/գ(|n!JDy _=Ўy]|1(oY$ܧWSTNO`>|~ e\6n^=6i5y/ _ hxe* *22ʊ#HVRiç2Y$dOb"zSҠ>*]Jc' Y ‰Mr`U my>|}L8Cb6"g@VutJ~s#xJؔjޜ7v:F?)EBG*tYK:fN锧JC^ G*n-CO),Dpc'oưZ7* E1KG LGⱯGQy.TˊC;[X* > )8m4H}S -5 3@S6$T؍S݉;ҁJ^ I1Oy6]1ϪGfc9pbiERTKQ*&!9x"nTo<ٹT̀k8JdGja%q: BW`w)~ \nX?>>֏@WP)+,Fedȭ^.5IJ) YeBwbh.&+"1^JAEY:J:g$C>.%:vA7 KGNA$VlzXW |5TMbp0? Թ_WYx*)VC85O93u@+?սGZT{(2W*7J Td*ʪ |eQ-àS)q<犢M @ 0b\:CtiJjmXgpMX5W7j;痰n3,HG'rc %He3ʬ {v&JXU>+h[~ E\ms_@@ tltcwE 4 '$!c_Ď0Z#01_1d1֫>DH՝:0ݥTv4!+^,Y&]V[_1=N`2%KT (!Z)`(?,OO[:W wX#up~.a!rX(@x) $ZmI:@%Nf┊${BU$z$T m.:(6WqkZjIGKr`?:vmGJV1 }&5/8>1C NWYRXZP7ZtrvaY=LqknMT?c;g) s. [9w.H+'+t!/9NvB\t&*C"+e.E҂-gR 2{iDH@_tiYQ&R$;ISd(J __Eabhk S(O+t\:E:6>>ϗrog:OwXBz Y,Ö&aT2&~! "B9YaM:3 f܆ܾƤIKGu,Zj6qfJE8 ItH_+R^-!Vfn1RG1t G\97]H,-oO9]b}mј!pdkǠЂt@biWJd.ת?k"wCZ·I'6sȖ~VV9@`FgĹ?mn DaLY6:+XV#tYGՑae`^`$=@\ܷͶc혮B[EZ<{P 80+ODEH?$G ,nnoS4Mk)jTJ::eW|l>zw:3UƩS "ЮYl\L_Wt;rT"M\!yDWQ/( 3H=|puX~T1Mik dmBD xVNi.%[(FfT[9Ճt$Z`#_>|sWlVnMlpQv,H̠䘏@"BA ArNy/|9&2 R4B siΣkڲ"&G۱ 䚝l弬a=ZcOs 1}5s;4~=a_6/%~e ^bzY:bhcJmeu2V K[evltVX}o=Z4`JlV{X^J-:p!q8 k&Iͣʩ٦$ IDAT I,\&5oJXrztLV겺6W$#όTHΏ^CRB.Xgpė\NSB*Nwٷțϗj#4BmzU#DʘD.VF9C'0ϒ,] pOtdKm)hD#+]V<t Roiг~boks`w_a*x||DHA:%yRRBvӕY1'(_X=Z[Wm~]>~IɒJ G#$>Jpsz3ĤܹXy;0 `T^IpZR?.|&)}aVz_BpbQ1Hf%O˗1Ө}@]v#F4IMMsСd";힃-TٖA1m՝xtY݃M9οHכzm-C Q(i /۰^<~P Ƙ$JZjۮ&SyΑz*@ G]`"'=Ģdyɀ劻zeN0ak1`-lv>T`yf0 䚭)ZzkCJ!zSv|GU(6X_YNdEܻLdʷ|:QwтktӺ~E^ ~Z$IrM6͵dɒ-={<^u PDju'e#+}=dZk˰U A-ўVB}-kr"4pQ+%p;V8vٔ KeQ6j(s֬Y[~[΅錈ݛ$(-.]ZuyZ\++#G$q )o(nY5^/]jL5mXU6bI{Ww%''zbkT>Y窫jziӦmW^n1K"w6Vހ{*t"%W 'BjcJ/{`hլjDV`^V4z(%%eˣ>(!!eḸfÇo~?ǍW=kW/QIǮM C؅&9}l+̿|O0+GEvQ#mO^C]$IA7r4mڴk_ЫW4cǰ|\jMHM:tJ7Or,έb(*췹+ 8Ku&磏>җ-[&۷ረnH$G=.̙Gv2Jocn\Y^ިLC(v؞.trX _ڹ5[cmkSxƎdž Ns=JtttuW$***[nf͚7x#WD/~- 7҉ q3z!lժU7|3~ժUu]wmXi:wQX?: &GN(oc*VP}|k΀ݩ~oˈn7#gϞ̙O6lٲ8b+(pŪlPVC|ѓiY|7ttwر={߿_{СWvڵ9sf˗ooРb6cO?Xv`7EZ`e V"KcS_  C;ێRû18qĔxUfVӏڹxu [w}{1baÆmpԽ'N>}zzןxS{tFdYYYfΜ5lذ_ذ"{\rLAW`- 4|K[&U19Ī*HnB"Eqk饺*c+8pX1|J~b#/MXᬰ)48q»k׮7F,^8OgbӡCܧzj@ĉ{>cs 97, }̙{ʲh +'K"᧧iK(X^aO:麬ހ0-vrH ]Vlr > .m+hM %t~#& Sy"4%󬒹WJhI8~_>ѣGsSRRώe˖5XhQ}%b֭Q_|E[o8gk^ܓscٳgOAR?~˘1c%$$t !˲\D!v2,eЄ$37C14Um6ª{=x'S2ILߙrqx XA 4pb;?2w] _JFѨr<{СfҥK,^U\FEEdYNR`_$wjjVZ(5Yn]ѣVZuN 7޸7ވmݺu]IಲΞ==lذFn4v4P"X feP>tsN[@bh+ p| oaD-X!!#ۗVEO[''nW8K/z&OܢYYv퓏Cݺu<آETvmoٳmĉS6Bе^>~C={lz˗/7rȺe>o(N/`YYXt4Sh{6Fy#V|9ᘴ*e|e(yosFK{?>~+y<+V80a„ ժU+{ԩcbb%/knٲeSO=?o޼~ΒVBt\ t59gJ ڟb&X)\-O I1d]Va<|]Ǩ<ĝK }S}'N4KNuڵf͚5:$O? #ѣR+&y+O:5jcիWa%iii;z-ɓ[gddg$J!6aEQ1TAlh5 ~0'KJe\1Xx}_Vj9ve|;޵k޽{ ?·o߾'O1dȐ؎;v$)(v999Ν=nܸrBtf KBںMεILBwHx0yE`K}wc%^uNLƼ7\Ѓ^~}"""H9_o o}ȑM%HN~כf͚#&L  QaU.8؍$%u7|ovabhc DT4;|~-}V߾}O P$UU6,2Q'4v?p^zi @-G ^NSN9hZ`dҾXM $bhfw"QG1C[ ݥʺހAl+VԩSqm=|nQ4Mիԩs1ԭ[=iҤ!̓'Ozs Se?XDEvw<ӥM)U0% e:,'s{;\$5@$6[sVb#)|3ђ~v~111~W۷o߶'FN29~ۻsM7oޮ{キyvvvJŐsH:`C)(#lTpڢGc[Hj$9hw $Xf/Rė?~[oFrr+R` >?UYĤ=$+VªA?;[tdzHg=];CM.>l$la(|uם\pt&ڵ+^r>|cfm۶ieg޽{'Nli9hР]?|fbbb'ls rrƌ NiU..f)> j0 ..Wڭ/At?1bY^7gڵ)z_pr|^|iiiLUNooŪvѣDZKx<]> 9GyJPЎ)bhB5ΰ5Bս{-?8l3<Ӧnݺq3fXv3ʳo4k,zĈtʋ{oҥK޽{wp: ՟7)voC`.stYUR =TP Cn2:Dw!S}UZ7xc˽{[kԨw}p +VzsB9yׯyupXwŤ.5Cڎ1ɦMv:tO dɒzǑ;v܁R=;wn7Xwq͛7oc~GH9,SӨMg1ۧ5C1 klݺuiӦ[d/}=CJ~;y8qb[ecfff3R/V'Nl1ѽ{ 裏?$+=ާlU dD@ p:W^yeυ f̘(1nw?ܴQF,X377DEߗ9t޽{a,Y"Ȁe U -W]0+Rrո{=z4㥗^ډ07tSk6~}>_=inݺu]wݕ٧Oo ۷ШQ:r[aH| RO֭'lm۶}Çe˚t޽>A=vXOh෩W^[u饗vv8^5Z$u94aZ}m?dL>}WDDDnyyak͚5k4mW\3`={[_$ĉw:\:ٖUt%mYZb|ƍYn֭[~۵kWm۶u]Q.6l];vlӄf0NX5K(#=ZiA͛7^kjժ?zu `<@2ݺuK駟6mZ:t$)dJWґj:uܢڅJC J$G;]v.wѬY3i֭\>}p8B[eH'W& fT扡&p˖-۵qC:~TTTM7n͚59?lGydu҇=&&n>* n8H`n( J ջw;yZj{约~Re9x#[l7eʔׯϣ*feUc)}>0Sz[nS9[nnʔ)QVJkD-Z:c (-%I UtC[ |SftY @~T!u!,g?^K.iw rju]]~c:`[?WkUG$жad"%B.ίacƌ9u RIDATk߾}3իwlLҼYfUQu$Zt-]x#229z^{L믣 w V$)211ŋtСԄנA+V֭[Q*K:[;L*aVM ;ȈѣGמ4iҁ|SsСy-M6SO7nܾ:t.Ϣjk ;U'8.#G{wjdgeekѣG-={NϡJ]6kɸ_tYm%_XO#@$rN3jĈ-N|Yfu2d񼼼㢅OS̖2m׬!} 77w^^^jz衶ozl!?wyxDΞ _+aF|DI-[K. W^n߶mۑǏ:thwy3ziӦzy4ŭ6w":&w6jwψ|7{0 i/iȑ #""?ͫteY,5Ykxa pXʕ+z۝Y4Mky333SQzbhuY}xM.N'P)Yeiffeemj;=i|fϞx< .կ_?A:#i2jb1i 8NrGN.:z=:6mPUjG:Jl.E`}i}MYYYsrr9rϣGx .}4NMM=h+?]wuq6lذ/7TUmqƘ3Aؾ}zE:uZUYd3]V*c׮]\uUSSS)_y_F]$WQ|wޝ{nݺ5Yn]ڵ%KliӦE 8#HGc>OSgN3&PS ŭH _t.XFb.Tv3sd:yyyJMM}_{6NiՁd:t;l2ްc(n-,VݥƉHر#z竪j^z $aݽ{{O<4""L >iӦO=T t" y,$~/E֣EuĎ?dffjٳ͘1c;wLxyJ?u###]'11~iƌQ:u*IR x!/###40,Geգ˪i 9’#1}egg70v;  &?yQ}Aٶm[r{W]uUrvv\GJJʂn `{{Zn|d."ݥƈ H‚rŊ'-->p8<ϛ1{͆aW6wSt3D志5$i|ij\wuD˄ n-8(` ϗuV}G Hf߾}]vϖhzYYYB8ك>UȽ<,oӭuYijIզeB1@rݱc˖-Kxϳz߻w~ $[ RHeuM<uY Z;Ц0?I[*h7-ub\7,0NC>XV(;[R[Ym JeAW%66!I5ms{mcmmM?8_垜{9yfG$|Rmm8n1DB/_҈O͙H$kHt$m?yKш _A"Үz7udJh~$-..ϝ;y~t%'OP0 Nn߾]X?OR^O5,OH٘T#>ׯ{Ѩo%6QYY9ߓ#ƒNV?-.}ճen>8}ڵm6(Vj& ׫,:$ CCC}*[Ѓ'Ϸ92z OVPK̏yi4h4:<_ ܸZ[[px$D'9>>~ԩSV<%_UO/nYk:,-󅦦;@`*3x5LҥKhڈB_1l³# YF>FVpYŖ+u/OMR\]p l@;W%bT@-Q x _zWbvޭhA,|1&6%ػw/?tb_}SܼyKR$I0·y %{1"0R}}ĕ+WUUU1SZZ1Lg mZk!u)4jeok 9j9 !PsimrʉM4A'ix{zYJdO eaoOoZ:}+K 9qܠ ?r]vsa?όN,ue{ϴ8rABPbKGD pHYs B(xtIME -+GY IDATxweǿ.9+3GLg PT *"&@PpbĜĝݝzٙݳٮgaf Uz B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )jpj/ =^ ,[MFK:`X]II8!脔R'.WФ 7 *XUIm g,2 `퀓{ X ,(jML E],%@ݢNj[8!T} @[N-"-/ꤢ!gRk3'A8*IuREᐄRF%^@Wq8*xx/(! A'`73+r gZQ'M8!df m'p|8"N':A6A׀&sj>4h ~M% 羢N?!SHfԬ:U> N`pOQ'Qȑ!d3شKMؼE0&9. 8x.Ԅׁ:e!-@S`sb m洢Ng IWu[W: 69?M]P:1BV>IϬN*rr:8㈟}Գă%;Vc>*>9:, -{~lN$tHTnO7uRkBAR2[V}EP/a^ I|]Ct(:7gqBRDTy*&t;!RqGѹ9dci(uyM2<E%i̠y)ɑ,\`,€rqsSq [ ꂢsPBq^u'*оu”ZN˱:tgAgs{,:7PBЉ3KP*@H%K&ٶܜp $Jg;1K7 бܜ/kzGr˱p~p bjМ/},%AL/0̃]*x).ڭᜏ0hlpY mY2 4d>&x)orC6sJJ iJr15zUR7`@+A臭k+:/ 7Hq΋ncb7L|W6O"uWsc.`Dy9NNJ= r2m0L۰ _&{:30/J-.:/Ca"PA Hss;M3z|0uS@skM,ONm"2Hh\9ʥ/I1k];le%y^^1qD>(bIwkc+1$6!x0?2qQ nˑǹtE0H|'Q4ǛBt.x( 9WpWNvh9~^~1=⡍ؙBasut{s|xC?|5^ tר9]&ڎ̟]z9GC&Kڕ?&oZ 3:~T$U,3c@CM'`& : Q.Gʿ,Jia50Gu6%26;4/p)D3~.N-21.>YRzb A0 &= LWMؽi>5'y?E?01)z~Y6υa\uξU;Ĝ4Ei&dYi3 1v:ukZXIm=Ӹ ޹, \/xhoB_O3l׌W_(i`?׈*9.tZ~Y^y &Th7fx,?5kP'~4d l^WV9`~^tx8Ӿ ӥ A4·AϊDI (&/= by/ XP0hˀiyeY 2_^f9r3Ss95R\vf KTb%.Dc#BhHI n "c1Cw*oEqh v!*ӵ}G9.Fã]~ AWbvA)&+-rOGyʟ*MA;KѮ3kܜBJUvP@!BQ MVuK.3e~ p2YP ^DO&ƠN_y/ S\_,!s:hG_p8'g#wyKd^NܿYlVpy 5*d&H$|Mk[L*n5vlWNs'$M ̫)c5%xХ3nMSliPkѮ?>}Uѝ`Gqlu{iK!DB]cjh3AnS]#sj$h:i.QBMj$P YmY'iTpnu{\[Ls7"'oG PMˏ M;"| *v|j:6Q0zp,SARAҝ~zvQR39,}ބ0+-p,k=熠Sy Y? {⎟8vY2 PTԸ>~©}l'i  y1So1@hȈhW[d60ݝ][I ͫ 3x?Filgnm(-fbUd&F5͘o{ԕEhjɟ XR{A[i:fR0h_CX M/Av.LbB5 ܋H3{ Ѥ uX5Ih;VAGGuFG%ѥ2UJ^[*@btt4`;NK QjOgy,`EF '-mge-`h^UɏCH}0'-_>\f](ĠV1qƵ<|7$(&z#[<u&+VDF' _0R d-v&E:?"3B)c*0WgeVC$pBNgY-!Lq뼣սS18̥i5`4{s]U3=*fEmgZ=23BIavBJ(,c~Nh+54@`z[D.:rZ2Pms"30@1y^ vϿ!=c1i?3: Kp_3GfD̈6mS=w%*%N5/52EdFT)VnWMbȌ2qRKB{;E -הPXs'ey!p)&2#\+E8 ȳD.3(E Σ{J|(-P Nw-~PqtvI bFrdeqh5Nggphq)ф)͍̈@lBDsh,mݻVh;=7O<bdft[/{;{%b,]'"k^.:W](ug*nN.2q#ȳi 7H:q<02#cB7="3Q;y]X3ѭ![]!r݃&_ijq_࢔&2p/aNEd c{[#4<[48wS);;U|,"#3mG1ɑgڇO74X|QAOdKM G%{C{U8C-3C/*xwI3ڦ`"L ܃S|QwTD t+AJEWFG^9s`uf}Q|qAiZh?PR|q>E;*O'a^A<`~wr=$جu$*Cѫɲ)JWH! ~ *N' t[6|jAbo;rٔWnӰ>Z~Jcr\P-ucVC;ngr@mPA.1X=$T&_RPZD:+4=Öhmi% ʐzU̧NJ4>(se7A3EYa!4hoY݁i r/S {||A,ebS܎I͕Kcn;e+;7U\O'~F# NKo7Lm9ـ8=%MG h-1.TS_U'+Cz0axj0A+E˜o@;w1W 0= {}`Oyx95*ЉLN3>fMES5OL )H ŕמ$]x?[s͎pZi̫ҁ}n0(ucVbG4g#r$37*[9mzNf6PMH,fȔ9rT]Qά.4;VqWdy.o㑩[g:[BY/[Ԧ"9t jK ȴO]ψƙc 8(R"riXΪgX_-z[XWPeplc` @S=GnvfcŰdT^@Q,bوF4++6sUP*ռe7!T:1[p+S;Q )[yk+br1=VNdmG{ՍVgۊ/mb'K8600 Zg{Tt"Ootqޕ7~ Nњ4[y9Ɏv#euI)[U&#Nucdp<12ekMl.3괺=ae t iͲgj:GOne{8_ZwK{t s7maQܻ1'<'y\׵8֧̥%}ftt5İTy@1|<,p:+8zu`]ǵ[Y4~R$f|igNsn!$@4voqZ8xDyzk[KOz:|hv;@ IDAT U`s3G=7yKcF 1cU&4A7d0,%k>LXr*.:Y]ϝP">)qhN z]4s͒>uJݭu${oiySҧ&07yK]=':H՘Y' 0TuomMƒ@&cO݇h>9yK u$W&odO?<5YSҷ^Ǥz&y䖓v4D ?\W_̛4DsBx8i0-?4l@=o2vVl$A [)gNֽor)$D 8'__6c PM,C9k2tն<(@G//ǒ~6Ԥ+Wo30~$AwܤJ cAļ[`W׸Ik}fz?S圂CY]8- Qtͣ\7is _b*WBAsYLi} !QaP],(^Nr@/s4Dcn.[otI`7im!Axȷr<]댋D^Tm%:A,)i\iSҷ^ VڢqUDd#$+WH)Wx8gG#6-@g szpA1}ld&~]95| +&e`2U{&d.ɛYA¼r6^O#qgI^E"cLhm 4*%PIe~lAu^ktW945@HCZ^ ͛95L1IN[e"LW8.=Jx%.K7qqm6Қй#~)wL2.?#yV%#+1jSV"tE:afGh7qsn@ Nl*vվ_Xʛy o@l&k}ffVg7 ©>7qs+iEt .ݛ\V392Jug$@G[ɛV1of7qiQ.-̞\ǴG%h)U>/9juvsy&.ZDe^% AԂ9n =X=ymClt*HKy6/˛ EԼͶ&[%u7 %ܠcA8[7aN;m(\12Љ^/6goPU޺](p8i }3䥱zJIA V|֋%?Hd?c"6|f=ŝM@9s3 sZX_fy% ]*\\7g**)U>YV)ʮvU;udMw8;Mc-w\'gfDm&#%)=I[z`J%Q^ \Sc60Ji~"QUYo:d/CB)1F[:o& TCGhJ%ZMkxwy>P YEVЈ, E*1)Tu)u[;(m3KhcE~SYcE.۟/>?\gz?k!D//Q 1݃ޘ,ҁ smM[:!4ՕJ}|c4p&Bo⹂!,B 8 ҁ ghXi+ac# ([r `8}ܱ^Qb2OLҫͮ!7sܠt&c]$ 09x14 E S:$$`jj 1m&ߍvFY-"-;prnc [dUNq>]sWSJ<ZƵ9ey)ͦn~^K8~` :pD@WtP8m5NT^ߩNxbG7 j4R! PuZ*00wlg E֗j$c7ji *}M '"*\[u J5LCOlU-5.SQA!^p8P7M=#Z_:9/ss~dr[zR*x ) ۏ:X%fY4u~5ZQE>n"Y -wlj("|`9V_ T\Z# &ȲAޫ4- "q *6C}oēݞ&8 `# wRBЁ$)ZPtPʼn7;[4Pk[|l2Gt};8d X,goe0cLWAVE6Zu }_soTu2$k@MOQQ:T:jg7$zUS%b |`PL9kj%@TX>dzXAsDE;?"@?ɓ';b MFv.kB<ɗq8m m..>M=zIh<1`t:ҹI +N{IQ tpU0hXc|Y:580\ 0a>͛2dytԉW_}.+e9*N٥n5yћCб{SkNrxznp -@}tC=IXӵ+oh5A|{tXr%}N5jԈ=zw1zh;%`æLΕtp_G?!踁g}ƽsi;BxNƻZ:kR6O"JG0㰊<0Zk׮,][n}ݗok:t(+VK}B#߀ ;Xι:Adk#PBT41P6vS1tKn** ;`Mĉi߾gy<̛7/g`9ySW+TG֟:/TzMWBˇ7 y)owkݾπ^W7l ҟ-}? ؜͠SXPGΦ/]:* r@OosGrM7qf<= ,;rw?T `+5R4EbRlrr\wKwNJ7 T_iժƍ7ޠsY8999tؑ3uT{oK B%gSV\P#6iq(vpgre_G|9n`Uo1uTn ?Ovv-3fݓ@ ]c5 wj+Yw(0h[SW!s#+zƹ7L6mBM6>3Əτ \? ât,6[%MO ůցcq&47eIܺl"H3N8 Dǎiذa8mXx1cƌa…A.'PSU^2!KqX);a ɝ˗`N=ԴFy뭷5jw}?d nV%}ˣn@[O/X34CIOZpE뛕\5$Qm;R&Rkɤ*0i$.5jTiիYd }_}eQ'yf~A!شqc?=z4p@͛y+ٶm[KJ[^js޿v6#R(D,vCDzq0P^c~&vO@5tYg1l0=X+䛙˟49 ʾu]ZLov`ߦUA ki؍K *Ru@J++n P.KƙKMsj MdBjc=oSN9%h𛖾 ƍ?c=ƀjEQ/_ȑ#QӕLKj,m޴]' vQ8tߋ=b M. "BNŁHQ$u k }w[p.?DZ*Y&2Q:<gq~!skKԫW/;0rssYl sOJyGy'*={磏>K/,I }xza%Z#H'VDrZ%U;'x#X|=vi̙3/ӧOϕnѪrV'>|x]XaÆ 2>}$kӧOO<82d9Zbaq'X]IAD+p:hFϜ)/Nie\\ڋogZâUt-bW~'naqөXwtS{j#y/%Rɬ48:0s 8餓x6moqѢEtؑ駟RZZsVbk׎^{u]?~Tؙ)2Gx\T,M^W|r4q1{(\fyL`7N_Ң1exs(77;cӾ} 믿K.GJ^*))ߧwޜwy|QKsG /0e;JI0?QX?yn]Ӂn_\o.Hh>u3ॗ^bҤIk'СCꫯŪ>smѮ];WЎ;Ș1c7o^xmwց oxKMCtTàHHgSd5֧q.LH6Ui5kF>}XlrKsرq\l*v?Li8%֥|"ޚV fhQ۔@yyy}L8srGT1]tK/eFJKK0`gy&˗/p}Y}YN< sfMDrĢj׊h4-w(t/Bp3L:l ZG(Zs8~k vjxJ94Rx, S:>է^ztԉ3vX7o^{Ξ=;rM7j*W?O?wMy+ܞFq]wpBwNƍm|3t;,G+YbyϘUXMxY [ġEaҨH.P² p*.qL:ZԢE J}]Zmڴx:0nܸ 2ٰaӦM]vr-ڊe]Ʋe>|8K'XIJxȆM5d8D:s1(GL &hgk (: 8)=im? Nek5Rޛ{˗sTg}̛7[j6-ΣW^~nX`cǎCRMւܼC 1g\Gl+MǬ(=GSq`8{KG4IM:R[d Cp·#QG6tv!$$;cdp(_ 45FS@7p->>`DssH^ }YEx;-έ ¥Գ8 ~15&C<Lל\ih:;vwީR+Kop]wѨQj1x,XVE:Qt Aqڔs*ܾWyEm#fIUS7lVXWS)T4@"|9j0/mذ3<ʁR)4.]J9]tau]o˘Y:qSN@QZ''';G}痫 \pAA2gĎ/ܚAlG'Xq}L~.MZ_u퍙wt!0~׬Yw]i%jPӦMAzPt`jZjrՠ #5x n/wW@13&A-&p*otkyy peي͞=T+(hݺ5wvZ8z!8BV=(9r0hY^@TK3y|;k K*7ʪEy j/I1d{3IrU]tOw~Ϝ;@@*x0KϾ6]|:V bQIg rWx&ᠡہ0Nf߃0fΜIAAcܹs<111CuYZ:pUgZ^רeި0akՙ*tՆYm Hd,^sTAqBxmz+^eN V,e>Kٶm[@`v1 II74l1py VPu"ge"uDPkh8Ϋ~?4YO:tr2sjW1(܄L$= p.塵i<#bYP@WWLQ5''EGŨ+RXQv?3N2!F @Ays%[7ǎcƌ 4Xbbbb0k,HMM`…!X`eȑ#ݒ-ZEQHJJ+ `4riLu0fF<%;99e5ʓߑ*t<Ba<o:x v[pgQUձQ__/[:12+`>n(Z n`f][rl2"BWFΝ;BSt/^dǎtޝ˗/zjUйQeF!Q KxJ9 SvdFYs>$(jkkZߵ`1zhBBB:ʊHf HA@|FpxQ1o`1`D)ԃ+j4kȊljˑ#Gz*555`Z|2V .\@YYUUUXVbbb[ͫ?J踷xT`mݦ6ƭ+Bq?aC8r} b,[z-lid,@<5Ȋ%444|n/tړ!ٸsD,jńz 4ihzie̦UuŠ)HAIPq6 ׯ؂ )(p΀\Bbn.`3{キQUJΞ=+[:O%2*b@U4}.8H"< Y O6 D`ׯYhdw;t"KKY,&Ls爉!&&^z1p@z͹sHLLtd6l6l:Ouu5;wdXcIxo_(?hn~n`PpQ fI';; di3*BL^aln0ߍ2"ӆ60VZbqURR¬Y-!Co*Y`cc#}iii2TK|Kc|E4m.)6#5GȯIHnKJJ`"0N'TRRBBB8'//8S9s˗ &зo_iC@60 c>3eN> ز3bSvݻwñc7**&OLϞ=%t+Dz`=0_@.ovvB^^l 9r_~bWb!99ّ]tzuZ`/ّ|G2uTpy =?~ BsϑСC}B &w3_Ql ;Lg}R[[KE G B=s/,,d̙nGŒ%K;v#J>٤oSpZ`ّ6OĒ%Kc#(j'uyyyL6kDܬ_~ r? xx&Kz $w9mAr^ {pUU/ӦMO?6bss ֬Y̙3MetvPTTK/Ϝ?˖\'`% [в=dGݽK/Wc˰i4ܺr MMM~Ogüy3g>`D eË/h:ؠA:u*<>b7"Цi>ǁ[Ɏl { (_q&Y7 .E/kט7oyyyn-ZDrr g,//O>[VVƠA 766nD՟={】@g [|Eͥ/\Կ6o̘1cR|Ev6aaa,^W^y+`ٞcZٰaK.5F Xn kim؜u@P )cٽ^ӀX|9?Mйz*1+Vwk Dc% #gc`--W4v]56Ey>ۜ DD)S0w\FI׮]%thO_3$:@̒(N8!E[_fVVV&eRUU>}Z-el#RRRNpl:bƍft xKJP].JwyGux׋?P >ly>"+%%eNf@5Sg}.W0@СC駟6[SF n@!>55U|>O s)|r̕o4 l_n=Nuu6\RRmۀ l+V!C}vzq1j(<^F)))YL4I=tJKKEBBs]WAJmGlLUԔqɠ΅ Dff޽sbݓ l@a"77WTTT:W\bСf݌-/KI,2h4#<"+jkk: ?f{[)) BbX&)-- .4{ ^>R)&zݺuK.~ŋENNի4x;$%%| c ᵲW[mfS__/ Ā;E ))N 1k?~ؿëy߾}}vhjj_|EkG%%ձ/ ѵkW$rssň#LCO>bʕbŢK.fCN<#T"rBJ`P"# !4nr!'zVh"CNHIIiW UV)))O sd ))Vlf[6c!$^IIFaSUlN`~?)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEZ IDATxwxTE߻%=PBh&wI"  *" 6,XJQ { Fz;BIdwe[93g΀D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$DbYˠ~DP P T<:@ԫܫL @pUĭ,k@"O`1|n/@!RJQѲHrYYW#D m@;}~ rʤGZ#)'6Lo4iZ(*P O@]7*8V):KJMT/q"I~e8vTPl%Rt$er= *R)p>ۺQA'eqHёCVDVPA<g' $|ٕZQxxlz\B(kGf):pVO@sYb!Eܿ@`(EMhVA6I,\ bFKGS!jҐsB#,, ):%284B#K`rVJR6 |"_?*XNKѹଌl(T3(KCbFNƑeQH $4B^SDbn YF#E,[ј~Bbv~HqF gEx}AbE!X;:3>Ӯ PvI~BQF,-'`Ȋ_m_bC):hݬ^dĶDt[Xe^9wB%L  DB#Kq '4bP?پ%68084bt옡_Gi :\o${uCf뛟iQ+:h6,CZu܆RtZ抪m_${e:l*D'd9wTu MY u5̓c ^UA]@+V%afdL):6Ġ|6*q@"TÆG8Ĕs#q`4އE}~n"@lQc=H/^!=J#t^7*.&H6 ~2.]KUVYOܣʏ!avD羟+%I@XJuE[J$?{aHY1WI$wd1feRt+8D&Hn@{׍-E \IeےH%[hG4J围1eaZI%G"%^IcȊpѲd{lOmTj):rB#^v$BB#fw EÉHʀ EndRtn~2c8>:EA:.TKP&r ĦQ`($Br IZGJѹ[+ی (} }늫^rMҨ *~?l U*Eo E~d1 e[q<< CUC/*xqњTAF|VL|ZN?º ܄!"k .8VMz n+Z+Х9s9]:k5 ֏ kiFQҗ +P]W x%/p69$Du]yuR"eG#һ/>nQnwMlj>_LdR3 etЈ@*kdjT=K= 䚜 iZtBEhp h.}*O$Y|8YςhnTp)mi*~]~n|R.@(lˢu_2i-J wم }ܪ ?IfՙtGעzTrY^ne;$4R"~.lg. 0?8#'ձ# PL1֟*7JՈ@Wم FaaZ+8my_-4Nc ^ @-ٍV὾]9b7 Krn%X?*𖎪0V }hu"ŧ]먏dtZmRD`nZ9g%gxd82< J531)'~w洂PKkj:䜖aݫ#2Zveap#:qr[ٍ:UA_E0/⪳LNtqePG&[:YEpr<_J1'Ryjy",,m|ps:E0R'Xi=4BٕwB+,<1Z:*l#t(0#7CAgh xltm7YL%Mq?Η{/[TxZxct0e7h:ڕ(B YxY%^t|oN(2s֨B- "ED'dyx]dwJm1Yy\ckEdpR䐋bhh VPfz MYb(h>!}-t)TFڼ YqJ̒]~h/gHt)y&bsת7Rxy00]tL¥5%)hU"7xM=﯑vtUt jݴ(mmZtxJveEb!j,3J|cfWT͊e^ hGjZQ,?v&ӖUvt^i`$6Ei\gegSI2o+ѩ,`Ui曍6+Nؾ衳4c|z>sAL^0㰉DgЊh0Lvce # 6y&L^oDvم%m,ePS.Y3":!M I,٩jY*Q^up.la#(ZѱmA&: ]lŽVk oj-#: )w4)䚆eýM Ш83pEdYtV4;r@H-(p K M@#u3|et.e:IQ:%7mX6ABQ%;9~]s}Yt!FƶMg+dR]5$:WDInx2Ggb4.fsM8ݬ\DG\{$PeYX;yJq.KV(Eth#"VO%>lB@D կhW.tKR\gu -I*MNX=%:d3yFL̽#,Pex=EWdm%@*ol#)T9&`hv]qbӅSZsp8;Oc<E+w*{0Q|zaoh3J# jA%ŶGaeT-*ߢ2eE"_^Rt$$Np2\,sY:;E'PG#EǚSOXё Դ YY݌DY*#,nII=WX J': %%[:q4wdaK{%QJH# .q&:eYKu#*YKt|eYKJBpZ EG"M],kIi!ZR{%Ic-YB۳(Jw5 QxOzOh?"uVqe]za1 iUvIeW*GSpiPPP7]FqpV! 9k]OQ\NsXFYM&AF+blgŖqdY߁ȨXɅu[ .T;jyt nzyiRӋGp.䠑S%Rtn&=xҹ7 y*ǚʞ:&vAp4><"viEUU7lT浼pkdXJ[:LtHJrj\~͕Q>_I,퇂|Ӵ~^zY ȣm~<:E;V(E,wO*F-908 [τ~4pgrHѱ>Rt,%5v~hoTq$c]x MmPM+kP$e*PRt3CN<:Mr 9lM UÍ+2}UYv$YV! iRtċܠ,;"3(ZEiVSq% EG F^5 . Bt N"GG.)8vLV H)]ӺVcl:yE甋H) [U},;ĥl~ ːQ/lo~LcMlVɉKB˜v,G5(N 3cA.Wo_\}m;qRt?w-SVwX2|xIx ?I$Bēpzo7=bNlf_Ecs ӊ^0_:0I(՗⟎*Px:QYdvW7yi߳ y%~f/grFNcm^UkRu;Ui PUQOLZ!isT 5`ÙT0uodeR v/J~swAΠ߶I@*1 *y!/8 L yDmZ̅W$jWXaRtn .hc*KcϹL"H.Pɹ*,0V DO_zbgeLq 4՚v@Riܶ[jZ7lb-&:%GRK/$PA`䬯B%3>_%v!L7AuZ#|JvnYQ9p<ѨT .A۠OCo*z.6;"l: bC HMoXW*mWԿ7*ѺI}ՙ-G0a|_/~靈^5 {;dST ngӈ}r 2yUcܐC9mݵ?^|=;zǗjݤC>; ?dnz\F>Vaj(y)E y֟²Nݫ4._bLTqxŗxzd*z隮zM绾bُ1 ?pc~, ݷG蔀^À_d~<.s80|Nə }xCѻ3ᅙ8qԮnRoOw=A}Y[7>5/qa&|En5Sbᱜ%tN`PMFO(8=rV,y??Jك&CzS ãΚ )8^$qr"vAMܾ7mcҏ|W :6w?gHǦ#82/E%^ 73QłpF&_2 SA_8~q61uLFH@3:ѩ}+Vʛo'ܱ{P.nqPN/LBV^c5=A Lh;.8a Yŏj\<3q*>=uCVdءՅXMAfʍϘU9z H]ѹnS荿ɿ?DvI*M+S!T/qhlDG̓ڄ׵ Sx?v됧P7Z4}_"%(tYCMO1b X+s:LMM̆0X]qa骍kvhNkj4 Z6bslܼ/ؔ9d%Ɣ0ޣ_7*Liڽ u؀#)ܸݻWl.5cH)8}:6c:#yU.=\yw7ڵiɪY-Oh8 .@A 7x ߕ~Vtu-rv8Xj{W@rnQ(zw>=qcжy ::U*ս_- Ô{TSfBgs~Z(1Uhxut/t5 unC60ޜon$H>"3v7@s:YG$Qhrl;zN9qr" .wJ[ ㅧFRV5'/7{a=2MeW`50 8'E?TP@9RpnGtl gj2r%a$o%И)LiZ4 Fs*1u/K\g?..xxH#+ P+Z܇N/ JUǛ(8槝,ڶh씂( -yزY>Lp{jTd6^g{` gVTbPߺ͘ Od7}%8x-z@(0mqXKUfL|c tx;{ޛ+8Z?ƿ4#1ep_)o}}<?b n`ƫ-OWN`)SgtAbR닙SN6ө[CMzV.\ݽnV2K74PZeyaDDD?|C]ǯ\RtY`7d'RShCQ%ܲ7ʏ_=횗{͕l.]NB9Xh4i>S#f?QGv1|p?ĹR%00~[uUv+_ubLB{XX L‚ra&}Q|*/oяPZr)^g IDATUS2<=zILyNQXFKTx4~/>1yCF2aSԩWt:.]4ߞ?~|p1:@CNhDyZ_`pro̳/q[oQf^4]0=o^dx=Ku؄+q=}COݼ 郇v;nܸԘӧ7(\tHѱe8xj-$:+KY9 Z UILJDX4}9x}y/ ~ޞwv|~شy &k_5yat&?-@vBRTÊA̽󆷛!CuZȽx,|=j`AW5O^| vƁZh*'''yڵ3f̸y-0 d9lDrj*fp{4sy WvR,Q>40%_NQzbB*}9?]TbRENw#i٪ mZ6!9-ß؏yfnNEY s>K׎mpF{&){qSLrԩwӆ): m4蹜epr(PE IXH<}xz4A@M-PMII9h",++,xkfZ\HhDPӖ;TH#6E8[{˪zfw9–\>1g,ǿJ颒,-M*~S?v;nk6fԅX>XGI6M,9///nÆ SNo}vu[|eH5A8V>wI1Z~ v0?`oɻ(%ڴg'yss]J7t@zx:kj)0 ~G(8 Vtb qҭݗN;E}8>"5wuQ9r2lQ2b~V=KO{9EQL{Lv\UK˼mS2 ݗO!|554)9gء K~Af+4fc6Y6`0!ȘaI:0Λ7sׯ_ۧT_C&@Q0ҷE]9t1|˯t?VrȹMLJEΝD̮σ4*~ 8sQP67/& V|MrPj:չZMM <* ?ec?q,?|aժU!!!*U I=vC:7clbj;}S2 V}5|p7Uz,ygm½FwwΛ-!r|Jty#Ҿ}]vE|w5jwWQ܃;{cәTN%WlUnCQxgM?qڀ uZ W~׬KiL&Ѭ,Zɕ_ȏӮCL0fOڵK֭[Viu8mљ+Ӷ͗&U? 7:Ӧ y{>غBe>gf&?>ADZy~ FsICs Ћrڙ3g|rqyxxJZO}mr咩kxylZpz[`E]#ߨ:67![*Mm);6~À~=lg>NjߥkϞlSGMK^KRe?pi2|ven޼ݛ5k(JBt'ol&;7-?@ oM NZM%,[w`23r4O]}md[r ?61&ƅGqڼ>Ν;fp 7 V[w{<Ҥ"/taũg/i_+<ݙ8z0vm-0'Ё}8r"hp IpNܟqZug}٦^^^f͗48ePtZZk]ܦfϰUrGX5 М&ppNOfs\^}osb~)!|H}᫅foժՅcǎ]OլY哢dTVNFUfуs:-uZ}_Ss6o>{1xW.93C?ȸgi wTçŒ~v];F#ƍsܹK=\C__z*_N|rh\9qmm/1I\cDaWm VC ͪд7j_^\#o-E`K<>A^;W^s C?,[̚?y^8jlX\JBwkym\QM6_СCFcu p:=φM_>]MGPEz\MeTbZ> )0Q`0aRE梥Z]tK&^46-)#vaΟ<[3ذ;f2Gϵrذe'͝O?,[Ι9p@?77UN':Yv_fZ6Xݨ_.׳iLs-Kݕ~uuv3fAse:g| &'K'Uc4S,*[3˽+Y3MG=|RJ=┢W|.gұ'.ES*U*2eHvЕ|d-<{?1 E͞xz2O>1V"EQjBj-ܗD|FT$Ϡ2KN+8U:+eRhC]% sw`EQYԢcT~%qY*XyWVٖyh4 =iͦoj/4jwo?k&xU&uضRt@Q0_e`%osOX^n ؛?aOqϨɄ }fF ^6[٥ 1a0 Y7U9:~A5#9pE_=_;1q,46E'oo|4E)Ē_)mqU)<5GSl?Kc 9-+JQ w_nwcVn|;k٨{iI)Τ-%:̷cDů᪣W׻!3XG6vځ/w):Z-t^1/&txWs]:'s4,*׮S b @I0{g<$Bt&@b!E ⭅&)_Lzq&IWF6 `ɷ}Iбuԅ.1"#rѫ&}\ *Pb[t.zOzEcڔq^EʢgWzKb5\=Zrzmcdʦ*{v`tWx<㼽h?B&24"5y1{ EƗ *AM' o[LNH6վHw:KCUrk\ GxyC/]~L0^v ):*aU3Y%:h|VIfb>θ@=3u5e4 OPxTdc!Eôg yTu{HѱQ9a?Y~${<۴2yB`Gx:;e^VH!TNΩYŪwǵZ]jm 3@WL LСP:~Fgp(&IT2tȐG~Yvǝ,^GBwBP"77V EO+$,-RKGI OiBӗsNXR>ai(ZSHE,PUU!srrNVKLLNNN6HJJbڵM&SU6mпi8 S 1Ȗ#|F^C]o=:{MNVTI]`"'DV#\4p%τNWdRinhWZe|Baaa]wݕf2:u>zLrXS+ & *Sւ Dq ?EFYQ`||*WRP KHa ɿr0dXB9~x@o+EF,"EZ(]O`]i@QhR0 Lx{³D(uZԪLú5lPbu߱c,//[v```R)iLII;}>iH$΍) m۶AAAtR~JժU՜ݺuk]5o׮]GS6nܘ:bĈ_u|ӦMH$Έ^z<d:@v=zhSťp.洃d*?OM<ǃzRt$w55vҥVtttMVkضm[tNݎ!G曮K.mFH$ȥKt֭VtttuEQL[nM֭[GjjjҥKysݬX֭ 5jTUYm{{5t:uӦMzu$nٲ%cٵ?qݟ ͋?~\rKkNZ9ٳgQQQ ӧO~jΉ'RǍ':txϟ?_۠A:qֻ%W"-.\pW^5*݂ =sEq+Nobccc^yܕ+W6^PZjp„.]4jҊNb[`$+;j+?>OJy杘:ujsF]mG>}o&qРA-y2MRbu_H7εb1 w_3gι^zV.zwNpLs΍OHHH>|xoפ)e݇ 6Zӈ&2A<2)9H^햡)&&fϞ}yڴit:1bD'NΘ1ÿZj7Z $- MOAeJٍgdX4b̙ӧOn75Jݲeˉe˖4o޼(XeʺotNnt`p^vUEdz\'cȲ\߱Sacѻo|3Slk={~W\]]oBرc}tX0o޼vˢhe7X׽rf||\,Nvִ -h!)f@U;cSMwq|{-LzwӦM}||Beee͟?fϡZjY?*hpQv5^:滭ϐO j55sشW:7v}{uӧO|`ݽ 5G!z7\5J-=H:{>ڙ{~恾xb+9iMOe ~e)ov F3E؈)SuرšCnt BW6UkTbMbW*Т)7sLz~:?DZ~䔌w}'k`24;33󢷷w~@o:dUdffF/_pܹ ^ < ll\L $VEQٶMG̺Sby}$&52[UV[o58qą;[U _5殻`߂c c Iݬ=Ř 3ҟN!c! FO6iҤݻ+ر#>888ձLa8uTt2{]'<<5"\[Pf:` NO{o/a;侞?u6b1EU޽{̓f}47%$$\xZlYȑ# K86 nV4[F| }z7|\6x)(,EOiQ`PG5# pj?06?`ԭ(|̙zt%@ Y-XKњ%a N4D"q>M?0̴U"'n3XJlRYJ$ P!E12S֕+H%@gYvRR9nU"HnEەGQӔخ!IZW]`Sp[%H$&Q䦽IENDB`distrobox-1.8.1.2/docs/assets/png/distros/gentoo-distrobox.png000066400000000000000000001026231474517124600244360ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME0-~ IDATxydyYy#r\jޠAA₢3ueY]PGPiE㌏>3w .0ȦmMoz{8o]]uY}7H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A $H A  KpmwK] Q\F,b VV]Rs"QQ$BV)q(D&DL5U5;ֻyH=EuHRklVw'n&/5)".Cp̊hj>iD,N RB(!%ꨪAb@DTz:gU=uWQ!U+|~Us IEReUgM; !k"|Z7b'9A"sUC8Ҙsb HZADbViNkMgTQ)&Ii> Q PPuJjGR_q?W<*uԋؗl: $Ն?|^T>^vchD.#vN]$li8xx)T*``cb #K*afҨ[0PT5&*l@%$:Ixw| ; Q:WQٞ (&R٬Jl DZV ւ[ՀrOe;ٴzB(*_*Uq?GGuf6J®$JCSY0ǁ"'ӼAG!6j1ٜL 4BT*V1p>sb'&t<kK)!͈F#R^ lE~Ǹn_QNa f5 {E=$YD$xtw1mظQyI"fh q GPJS*)2Ki 41W-S>LCFB*ZfFVHu+ZԪJh5bGw]?|zϥ7$!W|O8ȪO@i*b1e1uIH'&֦sT7 bS2LOgX>Pda1Oi*M*N8ct:cN'XlXuFňZ} iy@!"E}b/bdlr$2oVc_#?MyX QUPjU\:ll5eN9ʪ|kMI $341c!ͣ!-=,YX15Uz}^ۿW aԪYVʰ[eh6ږK:3Wg{y* ҹΝP f-) ຆ|ci%ǡEdWgyؐȃ3@2=dШCyMY[B=-G| U g3&U $s]oq/t^<ĿA$**Lo.XḤV (5dGJ"ⰫloE(_F]Z)v}-Q-~Rpp/s!H~ȸvښ*1^ܗd(=~]aJm툪b_O0#'ryG8e~_|uw.g$cygCL>ԫP݆ ހ0N>NV6^|F97ߘI \x;q!6!|"JGsOktsjc.@]T*۰.*lQ=jvQ˜l$6j>'ȃ~C \[[DN#荢CP W JI+,Ge~)_9Lk?y7=h,@ciU[Vj!m?(Ek+ _Iƥ^-HWN>cszj㇕ :cՐ;: [>6CɩA[$EǃM וeHCqJRCeSh6@q1BrkHΆz -1AArD_p`4> ciܦ'ѭ]px4'Uvx%.(yu+T)֖_iTcch_\@!̣8^_߾)WWzǕEJp#OsY]Ris͇S|c~M4mUa{35Cm A? 䬍 +|NlWRIAat"0[~A][ s.U<jwUDҺԾ!=quh)!A8TeZV ^7n'~-xsΛSA%~DZs8r[2ͻx)D3apu3zzn7:Yu>6z=V<~dh!)|FPUm׽%\O~KD&XV烾 [UqrE7,s.y:g@ 1鴿zz2Wbov;n rȠ,ri KGI1aB:-~*>6~bOެA!u in)Q8r~蘰ltNVKLX$^cI%q(zZ>H,x쐤́m,>[D"9P(:$y{Pr{{Hwh%fRZ-[FLFffՄ֌Lmݟc[TG>I#CmQu Z+¡c9!]%&+> W K 4rh1BDIG?qHUiQ\{#8Zt\nW g~? ]$sxQເerȰrА\8' F0b %U% ,1dsBhK<6o@Qvj/?oՔwԍf;߼Waz5t.GUy:׉hI-+y=8s˶C6}Bh6-p邒Ҕan+ġ ЦU3j12,.}b"@M> iGpqL}iBiZ(L&]t\^wNt&ǀp .rʹ^vO:)lϬ3|Rw^' el9s7(+A0^~\ >?!JoJ*/W7|InRo"{o\K>j zsQe?Ex152f煙ɀ1:Azm]pKrmoDa01Q*d1)K `Ѿ:B(>V!7~}oa_2 5!>Jb/gjZdOv0؞"x V\lĵ:q_'&f3ܙm]aa<L u>j=(k(v9. K8FX_ZH]!Y~"OGS1|*-,, ]95fYQ*F#^CNBerLk,Jtlw:Nj ('~- "DXQY]RUjY9xl&;ިyLNx,D 7,=+oLj1q1ZQ{ߺ/ . "28-ӉGZfS9s*➻ΜH7 ӂv%T-1"ڰEţ$TcBT0 |?Vջ8K%ǽb#&_PF1V+ 뺮By5ʖ-u TƞOEücV|J֕=J84Չ׫n[.XѨk ግ(ðaQdQ0&8J@a@yx!*U .#]O ӳ73qoQɓ3b_iTBl[ J:+ {7Mnm2EJ t{a9s2^Ɖ ̏15F"^-pAol6k-"vi|ffg狘H~Z z } N1k״7%z[ߥ[{Pk/c8N@{q"`l* -Rq C]tgT*KBvjnΤ%XĄ0N@5i64 ~ zst3ʼni5mci ~vV<-:¥G~ j JDḈӭ8{׏ǡUTZRƗZMV-[[-OMm ,i)ǡK:u C7uA`[# Z:Μgmus^Ӹc9< ul0=S?D7'S a77jZh4JDRFM[lX7#_GO܍Ayx4Pըת4M(SE;{EI~OFC阽G:j@ӀCĊ8~6 Kl@>/LEZC&K=ڬ Q`y'!APp PJεZh[(A, p."lVV[둗8Ԫ{5(핻Q4- Df,LxqO @ݝ>ƄSoEQUaaqSq&G[A_H\ԁ<6,.ePKͦࢵ4?x&s-*lSA|Ao+DX\ E#mlZ67QmO;'`[DpB*"ht^`8 ,V!emDIW:ZVˁ+,,,`% }4+wEAe+ܴ)cXXL#0l2p?9 IDAT's-HiA+28cw(Me{ŢpڈڰQyl;(H$HDE/uU/SȌSXу #7QJ]X복uӄOj͖x@hean~o @YZUWjOf.)ll[*śR{IGE9 z=4kҹ8!0:hQ̤ҊJiMV/QB: e Jє6yF!k誎C͍xoܼ4eHg5?uC'|N(SnؖlQih)}/cjkCa(xΥqZnĮo_NĖ)䬍PKg7N*cOo9ݳ;]zG\Wv]b)C:ӳ~gH*rDaٜ[pupk|]@6f,S39frZecAz[n74U1nL#RR 3a +L|-={zl3qBB:ye/#$ ģ9Dzzx[j5ԔChH_Ais8vRoZpWNTδAq[Kn2 VCtXkrXGY9xz>׳Kg^{u^Џ <8Rv2x0j%ju5;/}[$T#j8j6C6kH~Ugj@TZolnVYZ.vz ¨5/rLOOqRy]> b*g<#lWֆzђw' r]X??ۃeuiҹP+/dJ%!eYF% %L qQfiLtk1 v\"bCU3mJq^ b3yGfܯv}AwEG:-{(9Z(vK33Kۭ͛rr/Ik[_a ћ11:xt::tsY<.݁d>E*ʭMecljGi$'Wћ'WlQ E/yf >jlvwZww[^a)e}-C"|_ZIgT,uIABq+jl:rfDn" gB?Hbq4|X^bbu !y$ӳ@ҬO~"\,y ᠑[ T$@^AǺJL82=;OfZׅL:x qOLR<Τ+ =,:^(/gT4ֻ1Ge]edqs't]C.JV%TnN$J+eëAA|7b^nU_*͆ec54lD2<1xęmjj .2ëv꼏a3h?t4 L1*u,tbZm6Atc'J>@q!6\lVwXk8k!K:í]QW1|_ITZ:j\QFF'Hq2{4wQuB=᳋7 *AE9501sĭ U!␫48x^@iD:F#&+dҪn]UŐU;$t|j6ɬCL"+V/¶qsYDV8q!B ^8J:?Ԧ>G#ѪF"e\]U CFSu3u*[Qdcz^Z|MGViԕMFDΠ*iW6CNPA-RM5!/ȈnJ|D:QsU?}ԽM  Mu7 >.߷ҨT\ %B#sqz靝W8kRCK)g23ڬe Q/Bq1(5vXJo?ze B˟?l7 Cff+> >kzFa!E(\CZV WC>S33)LKQe%xE { RGT͆>5>:FT:~סI$4ԇc($6wwLFC HgK!O:*[>[M=UE3c׭XNO~E9zsP cbjщ!K(A`~#^lRr)M(\t|Kz}<$`h;^C!J'GP?JNq2cpq4-=0;79)V(Y_MdDptB:{?Wyb'Zs DBwRԪ!u81;25Q(xtMwyGKHgG Fz& ܈e fDwݍ{W.WKfCG ʙ (Xڗ5Մt8(r c"|#B|Tvp l(R6|*[>鳆Ҕ4siS)<Z9R􌼼r^dퟌ7xR٣-g8Cgo>u d vq8xpC.; KeFNҷ<^^{!~VTAx(Jڨ/NW %33iScD>[=_}䯀zc U~Qrc@wݾ MaYTrȡP,zQ9F3V90*$seN䝕O֋"~Ar#8g@zCl87!ۛ&S3)͓/zx^eL\\c0УF3GH#{Ev&fm\t@8xafN:! -[ Ν٦Z[a]}Υ${uT3)nD? Akߣ5Pl.]- z-Dtpddc{~?Qp>Ɍ G^-ҰY8zܼ'ZRiZ\Q{A;c`ٹ4)VX՞sB W}cuTo@8Weln.F+1^Q\[uXX9SYs6kk5j_h3Vs $T|ɢA xS[Br0ǑJRx<-RdJQ:&|ۭWaүT]ۑCG j537Y[Qϱ7Q=N~5&?܆s@ @jr\05q"+ ^kfpڤ< ~?s\)/g?4*r1*Kw`y#O+u8x!͐rSlm6'=2 $~M>pCojϨgp*.w_pXRC.2Pse gr&q_FJ8'v4hLPF'C57H[kff opX>`w^*UN,Q:!]S{"&H(O~O P?RS|VȑcEgҸn׳6(f^Lt1{Il(=>t؋QhF~462|k5p]ׅ9á+ͮ+)&glpHV&tKsF'`GknS-Q["S,-^xp~qRTlM5`TPFj:2dbL(ѹalpI'{:CRg{=ǁY9 S'9wfz#h\}zRzt/{PHnmjgnٜpdct@eoԑcp7uϴOLX] FƅJxskpppL8(k>.laz u:[Ұ~^U1*at~]||ESgLϦӞ~_hl2@E_v3ۃSFmRMXOf0ɮσÁJvCDV9PKUpM=EρާĊƄtw|Of:(7LϤci3'nSXcrsN'NƆLȟOޏ5t"£(Wm * #679]u͐Q-(=?[6FzS\gKH'ΈBO?zKo+Mnfݜǁlrt3fPztK[wr^=T2& "^xiBW8}LLq%r' $(?)/œoBӳ[i6p` ›qOXiTGy?;Gt9TKiGV ݿ$:gNCkCy1FU{*!Gl~﫦rs^yZ_+gf1Ax0IŌ68rn:4v԰?4b3;{8]^He#KsL{|FK:۠j`ν$`@Eɘ^X}3Tʸb}C*Fwrt|֨䡟aPHwfvSg -ĄfJU7zp[esNڑ9V_D6j3$!+j2?}3){\fTU3bl <:F.]Aݙ07oX9ѡPV΃rvaK_oϒtOWM/f[*_\mf63FjxC*Gwt !Ȯl؝5roNƆZ=iFxiaB,wdHC.\_> aRi*)5^=_ҹ2N98?{,.o)RǑlgt 4^ (v[*tt 㼞2:R)X9|an!6 8ubȥͨS7N5/jOLH'H+??t͋˅~L橥f#Q*6MT9#E#Hjo2y,F'$F4o 94 +fe)zMgNol#pgAܨ9B}s17ܑTʈ\} gT]dOX*C5mBw׎0)}>~q_߀,!-,.9:0=cH/3j\W>ǹ4$eӾYWk}m; 5-TMΞ)s9sL&SB*kg>[OICG;ίyHB!/wDRg22/J<3ݗz\-g,m+m: >s=fe ekmmmYHz IDATDUZ#br\/Z飪mpNsF0&k7|ߗ(u͟%J:wIZ9V65Nj &TxE2: %6HU[##F+?3ۓJ(E w!rzy b r"6DX@ETq8Ci*Mjw: ΖB5$<|ޟ݀rNG'[t*u܀Suh3^o9ie'hln!F?_:=\ y@'l萄3Tɺo^D&+ϷQ&A'J-ǟrx>V#7iB+c!Cj:]}/`6QVҀ=jzy NĶퟣ>lnɒ%)S9h,ܸqfƌhm_$EgGe 22cnJNQ#wx\ފǡ"xoѢb aQȠX8.^:?n&"NJV s㇍iE*%EFx0nowݍfա &`L8tt~XHu/>{jڴuƻw:O?)S. GA.t3Yl/{cJj?2zǫy`RhZjڄ^0hO?:1RQ^ǏDnѶXa"-G3˜Rfu% (+lrq0j Bad5svc222)|cccի->w`1 taaJ)KNM{bb 8b\١dj,Oon(-pNHLt V 5EF/Z i(y Å=kQY CuM1vތcns>SM^:"aeWaaaū}" `5:P6}vRN88閴tpN>L(G$ :nG3rV E[ӊe!h72$%1PkGD>mi,sV$%HIeBnESA`و㹿bۏmRS{as]δ'CaÆ6Lp4}| t6ٸ8-idHө <1*8L !O$UPOt5),23Yj.&+Q_cyG/QQ:I&Si̙s9C%K.uC<O^P'NW8O˙]zgzf܄DNuHhBG'QY,8+#dd,^ jR QUو|51~^Z,ƌMPVx/ 0`-:,~z[%SFe7!996C 80E&#lEޫQPtP̱ Qs & !QDj5(qɊF4<{•<O?$nŞ4ڵW abO@.sy@^Ñ412$ߑbv x>֮]Ͽ\6fX LVh=z^n-[*>!w sA(CeKJMQ(dhZ@pV.{ć Uj#Aے,K -]xJUǂn/JKjg;D]}ycc#1cӧׅU4r`T LaQCxiheHJjnڛvW1}0Bn; {$^_o\snzͦLNNB:xwٳ'^M &lܸѓ޷z_nҤI1B)<ң9~GJcYNOHό( oU m\?kBw*-M Nmrf:}]!G.o`מ[o:W1ǎ;~܇~/V<3UuuuŝtGqqqǏ?2pn?_rF92,vܸq]k֬9 'Gk:_^RGjbsN%9;`:Q5 GtB຿aD 8!4hjD[U0\ԱBA .EB|k)6g3Nvy-ĒCNhGm߾]a5B2q/\쮻JS*l4+>#:gΜtؘ7nXqm T*ζ.]ZO ZP S\#;[*1S)" !VE.V8 cEDG /#\N q7 #yfsb﯇'*3]} ."1p  |=dѪpNظɟAQá\M21oMBBK(((/G~^%kMZp:]l(-?q"ٳgW͜9ЧOK;u8Fc1cL#GKgF^pÆ #3 cĬhi6V^]t&IVٳg=cڔr  7|ӻlٲLH2!=txlΈժ3ⲾLFfBD%t@m& Lr #qSυuxmC BRAlT*rڌeVtlHgUzQU f7፷fuZrewVaZ;0kV=CG૪˖-+2eJ'z}޼yY555oc^y9z^,Cb5 #:b!hD 4HD+ HNp| >V >At pb y'*QQfc"ܣnr=Р5k֘_}ժqid2Y{{U~푇z+V(5jTV5&+++mٲe4&,oXxq?ɇc@R !P(eW?l{@Ō`nl~Bbv8C$(1pXPlxoҡ+h7e (*AE.O>b~M8Q7nܸ5kXsrrzuB0-`L ,Q_EBZ-$e&Ȑ"GB" Oiv㰻P_ׄ9\}"T L6?o]"qqwO,_^z|'v{EGCQ?cw]2{RUrnMKO^r:CI/OjZrvk͓j$|MmD| `* "Ǎ`TmzV Ga"+KbbvŔRx=l6'**p`o>vx Ga6;q|Ktyr k]-._F}ff8 ԩS/;v8q\Ȥ˗/:tPs=ۤIFvk޽nvI3=F.YHycpsRF#ꐘZ$30~(sv4o 4Db^-$b-xͰ@ilm5h$II2tnE\nDrʭ@YI +\.OЇ1Fcq?-yoJjb+cCŝG\~朜D !]!Hꪫ2yWeee/:ujNAAAgxI>쳚91999#GgAY4 / a7Ia ܎0BFԌdw䌘7%v8q:\hD WimjkPXXGKp`_!NBcǁaV*Ӥl~;Y(X#wI@gd[׬Yslǎd9,F1$!jqtZK8%d'6؈ u]F E "uv|@ )E^rgȡ1P(H k |ف*$~ޓ娯3ns p ZiR74111Njԍ7ܽ{o9p?~Xh4XzCpOP IDAT-*bf^QJ+\.ljāӧOuرiӦUtx駟?^#4uPSS`Ço:E?|RzzGOt\^/,v7N4򘐖0} L.K3*TDL w}n&1+oF Uj!m!9I4RR䈉a;M )UeI(N拹!M3e=G)5QJ )[k߿~;姟~uĉ0ڵk:tիFcV?,3fLk63EG6֯_Kr!gރ"y!w00툏 C0KiT߃͠+88"r He& BR@"&J-lǒ2)8fգuFlY])a⬌Xj @ k+̿L ˲ꫮj1clotg̘5oD -B Er2Xh T*rynw'O"9TGQQjQ!4 X-6UwxQT1?/%K"tߨr%ξ)]?;??{N0'={Xmg^stxjR8 fd4Y;2Bq^/ZfU׊hJzifM`h(ZEa(L y..7()EA~5&^< X5P P'hP[ @uuѰ!əO(R$h[ قNJrϳ\x ~1, CP21HK#3SoT)8Cъرo=CPWcqχ-pJyRE^hS[[]8jРAVZپ}Ǜ;{7dȑqV:aXj;zN>8xWļ;p foKݫ1bDj>f8-hh0A&AVj;@IPC[1c1MOi:<_(J%R%6 ç z  f5Օ0J= "x!4:#%{𫇒oYd1'N+,ϫx~37fGYS\sM\. q\ïڸp={{+w^tEw]pBԛîZ//qMjΝUQQb]jU_TJ5\=:x(T%JiiTè\A0` uv цfz@!L>Trt ބ:֣SB (4*2 J( o?u>/\?qm۶|駍3fzgS^y~/>6jԨ4Bsر^z)C: 8j&&&vy&W])c5m-p(/#)9HHЊې,FCTR- OCW$d?H)+EF hZDvt:mB.M(+EeE zvB`1Ea^`pt;e28@|g:.7p+W\2$O뮻R`g>jdȐew='"+'WCA:-sh6PTP4JV9)N7V;6'V;,5uFXNp|"`|7(p{~>~"wwzf&I=nܸ{օb?7h}m۶%uʼn Ҵrʦ &d~Q !0 XJ[6 \.lV'ܗz= j29nsF_ NO MMTUQYހښ&L6!ㅈj_9  ? A N)GdRN8b2;f~0`]y.aƎ_7mt^\PPcgffy晲[josǁΫr=>kM (@?Jh'@IQf )Ptj $vylhF Sf "j.Z!`+@(aǜqL(ƌСCz}yW[R%s= 7xcD#3f,Xӻw9@Cl~y`>e'0p80ZJArJ<b+;;zZ%  K36Ya0aЛh.J{ IĶPi '@a àu=y<+,X!uܹ5kϊmL۱rvΜ9ZBO?j{wV>ȇ }\sM\~~~T޹sgiNN0?{$G'f)&C$@C#޴Z(/C\ :$'!!QhĨ "Sx=^8na;ap`9aa:`9p8ryv{vytzvy"2ŀQ:D,p?<U4\.͙3'aye'Ru:]ٺ .,Dyz h/#C qb=ӍF+XE1KNFl jr ,_x^8q7N6lV'lV}z_argΜy |9C}N.'B t:*+V?B8g= P| PR\ `?EYVpEk5su 'z/RPp(h!\ѓ=JwՄ\.&Fs,ޝE8?2[K.uΜ9 !PxSYYYO?䓋eȑ ˗/7n@e;:HhZ6_kiii޵^Y\\вnɒ%͛7amnݺ믿C?nذ[oj4y4$9plFظqc춅<O T /=XՆ۷F8܋/XSWWpwh4|:Ob>',))QOaرΝ,---gѳz'Hh2dHӖ-[}ᇊaÆ$t.x,%w($Y!t~Kn] .@i(ŋ577;zZ*r\ѥ 챜Ng%ꫯ:nW:X,M<@Q!4EDF'ݻѮ`yswȐ!2kЙ8qtve?$YP_`0غj=}ľ$\ `)aIGy$R꾀Aǫ^x"]K]a&$r P&!7͆ tvqƍ:vWHJI OE]tq˖-'nuٳ'wر _IDATQ\K!;!I"ID !0"_qmU>|0\?bD !#< N>HqIBn{@`ٲee\1pDΓbK"Y?"Z{lꫯ X3[K"$`_~.Ryw,ꪫj8_k-$tB91Dn‚hjKЩOzH"I(#iH.= =NI$$a S^H%'$DvF0#D Ds;|W&@KJI$:6_<IENDB`distrobox-1.8.1.2/docs/assets/png/distros/kali-distrobox.png000066400000000000000000011751161474517124600240730ustar00rootroot00000000000000PNG  IHDR1j{gAMA aiCCPICC profile(}=H@_["U;(dN"KB*ZUK?& IZpc⬫ ~8;8)HK -b<8ǻ{w^fT2ɄͭWta}bFb>+)x{zYJdO 3ݰ׉6->q$8j.ƹ谟gLz8L,XncV2TI∢jϺp⬖yOP^[^:a$E a!FF4'U cqANof 4Ytn :QmqJ[tp .<\Q IDATq>A~S78o= RUGd h>Q,7k>frx?R2)d;PncA IDATUHqMNUZD@wlAUBmVN;TC Ok4O=UmdC IDATF NBJ4fVM+SEK3GJM<DC L@ CE KK  J&JOp. IDAT?FKD=I K: ?F I1?DH.'IN3UN @UM IDAT{FA~MH\IsBGIB3FF @VI9Gd`GH`5 IDAT6JD" 5A@ ,t8rFIE;/MN ElTKF7P IDAT*LUeDFLA+/V% sBQ       )MU      ^Bw        >M IDATF    ɼL9Bh !    YLB !   *AB` $   _M>% +%  'V()& 9 ^C*)/) &VA]S{ IDAT ./( cOA~B 92 ?+?v93%KP;  5;+OC?q ;A!3MUn E6r\@L   3h+ wVe      : IDAT@3 \@I!    3 fc        sa( (>9a '$       <  eB6RM,&!  R"A/o.GG1-% - :*b(H:,6-$ @q0r/[&I#9. a O!@m.%ր IDAT;-2I 34+K T#R"~4I; =7' >~ d*'U;9H?8%8*;`(V;;>+) :f+}56:(I1 '  k-R#>b*(<;@  DD Y&Y& o/'VH73"L 7 B (\(N!P IDATV;?F$   #"?)'Ij-;,A~6R$@Ac+ 55a*5w3w27/ U$=i-:'&Y& f+ (zx4^( .+  V%6.m/ =N"y t16W? ))T%0M!_)    Q#'-f,G 8.7]"^)/c,J  *,% w4u ](R$Y- [(:q2=&<0 c+!d+b*N"8{.ܒ\ IDAT-Z'Ae,= <8#F1EJ 8x-# V&L  W%J  H: X& [' 4"5(:`* 7|6,H5ZE7e+.A}K!B Y$3< [(J l/H s4N"-! V ,i-x B U%84?  ! _*X' R#B  9! 6w IDAT 9K J  S%F >O#$ f,9t:3%h. 15^).M!,J!;  *r3t3  m IDAT B    `**  ux<5 "[(7 ~8^*=-l1?+> h.321 v IDATx5#vkA~#< ' (I .8 f O$ۄ~ IDATO#  _+]* J"x7 x6 ;7p3F F  JQ IDAT)G ĉͽѾ*;2C4U))"Bxڱ "HaPc!*3= ˒ԯ*Ql>zcB*">x8 ܧ׵ҿ #3*Ng,bbc+E6|9 ߷㾤6ESjea)'&9P(I`L|b)q)~9 }ٱ #3zPKF i|$OlMOc*ax77 Жֲ{{YWU"w*Oi9t"e(3 IDATH"c.״ϺYdokhe:2*(9*Ng&\c$ g0Ai߷1>KwtrKC; ?W%E\Ic;)) _,=ƒش ,{tuh]Q | %KbGei'WJ"E ՜ֱ ir|tj`&+Oh3nle(s =4  ٲطɳCScvn72+.A)Kd"W5c)8 '       7Wl޸'5B~xC?< ŹD^Hn03      Bkְ!sw|]VO&JcBeD'=sy_ IDAT $)# ձ ajsohb+%),Pj.if&x39- TٸĬ/EXu:5/sò1F)LcSGgA~%L =B*:\r۳-:{xQKD {Ķ D\Pg- ԭyx]XT)Pj;|g5&:ߧ׳ bhneba3-% .,Ql(bf}%|߷㾥8FTwroLD:8N'IaM  +7gXO/022/*FZdмcXLGOWpoo>93 nnn!D ˇӠ} ?KX|tmA90ͽ':IaPC73/ mrwlwy~&2}{OJE yyy =!VFѾ jns_\Z0(0/01.)bu/Cη hnwne[ߔ" +l(}}VQKnf\>92<> IDATYMC92*䱱sss {v:5@K{v>;8 ^VMri`儂 JE?L^mopnQ[fa[VVe=;8j9;<p~%/|w 4;BJl û  81*EHM IA7Tclm #*mbVV]c*$yw`UIZbjaWK 배4!SHQZ foxgdb.)#UUU(((-bbb𠠠m# 0)!}@P_7>A2AH{555ڧ(((- '''DV IDAT|@:2,=wk,AM4GTsi^???' o UNGɸ#m`SPZeWdpVNDϽ|||eee, A~ pibcn{NIBkut>CCYYY܂#n/)"COZ>DEJMNw444򴴴Ρ ,,,'zQF: %5qjb6HS?P\iaWҿKKK2s j_RVOGO]jbmxLJFƴfffooo+  zriÿfnwDHHhvt9BG000◗!!g|; D IDAT0+%@IS;BGAHMr---/// nNF= ,vk_NTZOYdobTKKK!qj`Vúmz VRMelsryKKJµeeeppp$!p"uATfHPzqf);ij:::.ge IE? $iaV=M[FUc]UKɼ`ZK q]nf]>>>²c²  chmdcb5-&ry9 IDAT0(z@P_4CQ7/'t_B:1(4@ *4NE<p WOFx#iysfW tMX_whʿjs}  ZdnǿtZP]e/)"~FQ\,6(2;%-OH@ sпVfm g\Pvivoe[ ce6 IDATI?5ɷ|zlǽ,AS4Ex,&kRqmijov3.(*3=#,<6/s_rmgkt|-&nmmjkl91'uqkclw,,,0/0szqh`mz#& cof\n~NpeZ zI&(,/-++&"&" f\Qwlattsmg`W IDATvR ȽȽ  6)$& ".tqnkcZxO»A~uX/KKKxZ666)5.whI@8v %'&w x#999!ۺ IDAT%%%%+++9yQQQQwwwѴꧧ''':쪪xI  BBB0777=mmm&yG <<<;;;4eee>>>1x7'??????'ޟttt"111(((y:???DDD鰰BBBttt"߻555/rFZCCCGGG<eee&UUU߇###n\|DDDppp4zzz)000ꏏ===$ r) IDAT~EEEsss- GGG6PPP .{6DZlAAAuuu# ZZZ y 7e\PX_gwww [[[yyy"ryal>EC?v||||xxx(((Ҡ---0{3*; 4@F|CCCzzz999HHH.}71B͹ ɪwxhCKSBBB߮ '''K "g{H+Bykfnw ʿ]TIP\h('6 Fj IDAT 5! BA?:>C! mmmWWW =(%Ї; \clpke1+$)ub`]%%%ۊxy&̔nkqx^ZT" *%%%ޡ#U0>؀ե*8}DA? mliž  *%%%mmm:{}?N(.a WQK;Qa30& '''888FFF:|)p"x;v*;ؿEC?fsAAA󚚚ppp/// $F `"ֱ !uvymaV%%%󠠠mmm) Izb Iޥ IDAToݶ$3@|xID> %%%yyy+!xc3ٸǰW^fhhh93.%%%ތ ,uX+ֱ ajxoZ$!%%%䘘}}}fj im!݅֯1oa]R %%%𰰰ZZZC do{ň)))CCC!%%%uuu% BfPWڬRRR}}}///.%%%҃ ! _d$ um~ fff$%%%ۡrrr]>XSg IDAT}FTTT %%%붶www ; 9UX*...옘555 %%%rrr  CKH$LLLݎ%%%%%%xxx񥥥) "DDH ^kkk#%%%ᛛ򀀀&T 4<;:@***yyySSS %%%񷷷# 4 );5.+ |#888ꐐ555%%%䂂!/-,!!sssjjj""" %%%ᖖ6!  nV |||jjj.) IDAT%%%zzz$L  6󌌌RRR+ %%%kkk"-FFFWWWsss蝝<<<|||^?﹎yIDAT2IENDB`distrobox-1.8.1.2/docs/assets/png/distros/kdeneon-distrobox.png000066400000000000000000001506371474517124600245760ustar00rootroot00000000000000PNG  IHDR1j{gAMA a cHRMz&u0`:pQ<bKGDtIME /$IDATxwgu9jWْ-m@z $ BB/ \M In%1^B146ȒlIVof)+6:aW̜}]A" T֢4"ҌҢ"Є4V RR1Q  (YESH(L +:$002}mdF /K$%Z8j?  zzVTʀJhIf QTW8p 8 $Arw%Z :(? 6еlAd  B ƀ^>}GP%BKsPРV W^#D[XHIɨ0&pYEحpC%'3. ٪@-^kD؎ yA3jbEy LZ/yrxJ yҮ(j]`K+W+"QaPχ.YR>P*ݠDKTP&4 ]]3PǽB JW"(jQuT8u^S)0(?H`@.m^3lwUU  BX(J1!'nHY&csVxM))'?_z 9;g#z܁KUle4vHYU&iLS7HfA9Q?!_~I)̘ڿ-A~sZRUD;;ݞm\QH0% 2Q~:!B( }J+.I>.0gE jʀW~JxaU%$ol.B0MGwS0z(]n^3¥߅^lyA+Ǽcx 0*89ADažC/d#ۣs|CEt/t;:i M*@(rŕ5M|rmt+0};7ÏFN0 (W6sgSeDKۻg!.= V4z_´ A^P,\r0K"n7v#gգׇv/1yNHUc R!?u{jN5 @\а/zC4:noWP6 TɅ=U~ D]ͩō畷S潔}+Ahrjn#<<>ӓ#fs(#z_iB ѿ QvY B}4e SQCeȎy;|6h,ll;-nUT#qylP.5#_~/k^H9Uhpp"bJf6-Y>f $!T@UuBE"\p#Q:iUEv(긣5 hl_0-3h:E_j' N& ˤe3sd,n-Uw?Yʝ$R e޺c|`CXTEGb4h/Ut+hQsl7yLJ ?>Q&i Rܰԟʅo`A{ Vz8'e[VH `Li_LsVǓ KL?1iRLf3|[[(6WJm$杻357(\p+jy]j4<9d6{w 9B.fC*)Vƪ*6Tְu5˩GZeٟGço#d,qp.Q~@B t:w7 Hzy:rxB!V˭ݼ*N8pԆi2$F=5Ƒ)s̙9;ªm7N˛!﮹FH)r %ː6MbUwݽT89Z?WMTQ1D,dsUk*j"QB/nGgEL%yploaY#"V>$/d ;C{[(*5(7Է5XJ}48_DA["4ONa&L%3so++:uxG&Fv6 RɧOAZ"_@{6H4j/ *pr4*&J}$Ν-Zz4Ӄk韛A~0teRX:PX9e0sfTs 3i[[\ nlhΖ.m!(~BS3S|08P:c=+<*}0<+G}ݻQU.Cny*EnTE(M{#W6Q1DH9NsI~2頣2OԐ}JR<fsUw6wqgK'k+j<#'ʳ|~0tl 8C%דO>~;OW-7O!"pM]3̋)&͍;ʣCgR`\m+1 B[Y95vϖvzm>q<8:@2EwnDn`^y=裎܍"W!S!~4k+yG&^C},^4 f$=OFzZQvMI#qHZxCZnnlC:$r<]oz`ڭ"*7yiE8[.+'?TM$WM݄t 䫽G;=AF+_lNpjxs:no.zf957gO+ˤVGRѧPo5:s;R0kwn6ND>̿}FQV*kxMpzf?4:Ůɱ/>W}yVt}3 ]X+ۺm>{l|9, :6D@'v0ʎ&/ZΩws\d)<eW: ,"~e:5|`6>~;-|z]xt?NMOv.Js,EC3S?OֲX_YcGU$^~@4Qwzlv% AIտk,s.#us7bZ"Xp\R\ï &ƪ:Wr{sNt<::'=cC^HKtqpsc+c\] Pr #||\#\I sH>b3RY3e[%A^-qwqVV]aY9Ls2`?ټMUuu0 ;q=hz.o" ߋGno!5V2I!5^λl-QI>'?T"fUyk+i6 N&823X&b }ozpjl<2Sy7j[Pn[f_U啼c5wv" gYLd}Ǩ+ o'Cmҋm BT#D ,s]Xa@ϵ?,Ub.~o6WIOa,^@]4epÃMS|'3 ܗ-8Y3 4~ƦyPS(wQ$r:e݁zAxΐ1#Ķzno`{m-2bFe2c?c`MGmcU-q;/i,i hnBr=7='ᇃP@Ux'Hk^Yyg@׶UMW}_!),T6]Ǟcz4,نRT]˻n%-EbNмfnȦowd?MO:/nrA6l杫7Rx0*~l2<OAa'?GSK ; 876UXWYI=!`w菅E蹀h/[EAUK#,s_#-t"e w7n+#C|hףpCi[ʙf8>N%gH[Ń#}$~ "xbo˱{i>QLOSl%5Fذw"ZinF[yykJ"<>ɿ~ ( S?4k=oWu10dr3H&K2ɐL1_ USr&gݎ eѹ$r@1Ġ6{YKajl@"a#k0aj1i@aœPo (gia1-nPܶlr?.Ȕ´Y_U֚:6WױxUlٺ83N`<4kZPz:U>ke8=GβvhJN& ZClGa]ta=m)YASAu)f{boϙ9Ǔ[8- <نՑ((jxqk'd<4;'Fyr|}Sz%2X†ZUD76%LS[Gd-nmglPC#,>= <-x?- H-Ÿ 9K`p$`")Gp_n汑aLtIkSQm힝A #3L3+v&*+犺nin&+*mCϸ[9VFTB<1 +;Z/lh-+V3Ãe`. f2]AHg8fCU jp}[s;wloIA"QB *rf*Q&4/}N+%H< *@'\0TQC;{A\XWUc=ULܴٓ"7o6πjcyr|jt'M.Ju$u ͼcF>rڳhm?Te00p3BP]oDy8\ə5l4\^K[;xIkj́li `Z/jn$hѱaҖUķh(īmw.h(9>t_xiLh\Y$f.Z0"cտZ1g7D E~Z"d/nW7y'yS؆J~6ص xcD]v`;b7tC.]k7q}c ~ ?q?27B;De8*<42 dKQFm ̝zvlYw-܅ >KBitC*9G_9ҐQGv6e]Px5XRd8id(';9iFR)9wG[m{5+!B4@/uS̙&ejx㪵3hҦ_?u ^L0ikV[eDC!P}SDLFꉣbl\6 \oqm:#^ʝf0I|^ϠD< sSE,r 9:o,sφLT]&6Vz=2$6RV/?lf`3B\[{vjQl0rtf'F0'#e/@S>*ܽ6lL.\\pr*Ñ!_:~=$),u@%ܲPֲrq}C3W54p7#G)pLfY 0)31ܘɿrҳQ/'yەONM'{=RcQOxA$'^#+t9L*$FؒNg rR%eT%ԑ縧8)t%jCopym=o[;:/׶s1q81C#|xSLdҞk<;}/㯶_ںC?Cbqqks75S\cs`'>>s &lg3zx(k:{xMl.q圙s\aSߦ/1 I<~9G#LR.s#˟#TD,BȊHU  ~k&QOq}c344QVAy؎6rdfP?e a]U^ůVRV^l|S-`p.#p㣌S^ qϖ.v$o`:|tqv$hH 5I3aru}#xMTTzn_<3>)cREMȹ2kT>g1TP@yqCm7]`={6CY'K|;s${п H<9gU9אZ~Rx_ڃvlr{x7V˯k7zͮSgsϲs|s̽=A\> pDϋ?ۜ ~2ϩYZiC憥JU$ M-lH"p:yz`ue5ʃ;7:k@{OTpp$_$/۞9ǁ0>y`eo_˹: 3T߉Ⱥs}%K[ˮۻv螧ϤW\M;_W\-E[~79;nrPw]I9LYz*턊(kL3Ӂ +D9IolwacC#84>OnWMr9$=Чa& ssj9N+A+4aO-UZWh )>)32UDݍ[h++gOHh|=y{N1˭YJ"a<{ |}4-mTF"<;9A̭8y4֖ve+ekxq)Dj s>t U2__9'Fozb }^]_'9_1\GՕ|lUg-PsNNgwc`nCy!0ち$詬)lPSa";X_]; F]ukIPpuCS`+ZQ tԬr|kOՊF\6|H. #6:YYtcS Zetݻ^mhw\-ͭuHl/?Ÿ~'FGl?e[0ޱrjj1 t963éY9M-b{}?;:@ R_$j"ey7zoDYJ],G_ں"j`.ɇw=swy:Sq^6ԖT ÉiO0UЎ LM&P]c˹TCi{}}ģ.m-T|p"+ySpͅ2qmCos :9@u".n˾u:~mny꟞˽}:lR-m;hB<\z`<42]#7I"{Vꆦ{&3KR smc^Ut&uAۍoxThE+3oz=Ǩ@Ör8~):6T;hm-jC=-si7jk&`@jc{&s9:|.N,S%Ss|xC-5u^,,溦f51NβX>-ltYky$C3٬C v|4Zg)Tdt)N-tRE"b͗V, [cpb R! [xߦ˼3^eH v)q.*n\FN^Weug!jh""cd-/K"/Ba?~S)W8炠Yxbq֑2@־uL}A捯EEd,Kz913Gǜ\ ! ݍ[y-|;TsӓO^['襲8hϧcs'lo$3yr`\(m9yS$-2o֦+'1İy;mA=Rq,AA0V9+YϠ3)[lLU2O.uU!OMW{v첼*Ua[x-DA1bt?~qG[F_oul616Q^n/&LF0Y>mԉnii!47E"ԗq߱y۰Ø}Ll2磲c+::mT8;u<ɹGhEPHd?;U$XG"|ej |AX|Re[s n#jSr*WW%"F>cu@ x )Y?vhh숩=vd8Z^~/3C9>N~כ򋹶?n"x.:|$leUU?K h:55m@"׋YWg~-pb+*y)gkmlL#, yeuɋʺltcf?riML\ї[oTE2`i'Hp~mvFcXɹeo۹t8 I;a P_Vxu(P$,Je6v43/"dяnj{o ,R|1,. lʂIgxtxĸR9n?44yftqF7xo%hq@ +Mܶz5oJ,rXsss1e|1~;*׵sEK+k͹J2 `Ip8RJZJ*/[l]]FcƺgaزXhh7Ci30 Wɥ@LggwDx\щɒU%1$“<9:Z4Okq^a]`Jϟ`.{#8fL&e */KŭCzA**-S MӦɷNd&EtV^_j">){".T)q^f3I~喊JԖarAg,:y"MwM+~3N %}t&/ U/tK` -m TΊ E%?ٶ%%nmi-:!WG}}oT~;ݹj-ݼqV{&_Z 4~g :huQb}}.Y2YǸl""(7Bϗ>G!"Q/yBUD|΀ TEf$Yڪjޱ~}` 5n?]챟<{&ƋPw^v\.<0Jþ^׮:")q7Z&"bШUB*bQ].jemEG S)wױ*d蟝dyovݿV gW d,T|]Il[K 57eJ:Ϲg\d 4Z ԡqbg\-HHmTG$0G%ՍMrUw@þu$\ %C'rFIJ9ρp1yCSS<>2jb1^ܳ;4W)qFyjE\uJg3Vr*+9GWenU%lM2nim5 i"P"}|d6g2 :xe!ۥE$wׁ++;vP#hĜĚKj *Lt3u*Q ^WG P)x&בk;.da+9SzB2mn6XzO}pz%eqsk /jm-ʩÇ92 d[tB #mO`S|A†41''Z2k##a}u,Uձ=B5uY)pJ^tQ뺮^өBT [LC;aEm^NfhnI|UE"ڵTU։ TT8ω/6*WD"mb &'ѹEs<24\t<nB}T %[kխ̪f7P/|N נ,hŸBd.,--\|r9>{0#%kTsʙE[wvrkO[aNN.qYO˗wt*x~:E:溟Js{ZV&Ú{UI:j'GE&˲w++TόO,y>rU2kV{[!gZu.C!p'py$¯^~UhmόOpl:Pg,Uzjk؄eǏMJET5O`hPn"an5UqTm a[suc#חrfs9tә}}|e/QDL/9J@0Uk;;瞜5*"YxLڱ3bd$<N)$ QUۮ=7<Ԡ19:*Uk8h(\.#CED  xMOw>#y)vR)9C"<88#瞪Q^e3puUY{<6`u򷀤 8j&2MYҗH,3q^jaB<,N wUVR:,0RLL'gf8xbs9^ ooXOweX.Aw[0'V0q}lya U(rgkJ%AZ|jXOzșm48؃"ҰbŚjZ[" 'ggY_N,N+>|3$<-**P5UMl)')r&#&xtxdž92 ev}ly#4P;׭{3-[DPĜjm92Y&4=R5 E0TAuM(F#}AԹKKp .8K͚U2C7/(JqY},cZ_"RUkn,!NLD>LEDbYPq[{o])w+}\-56㼲{/h穑Qp(̙53쟘f''-\Ɂѱb9L`Mlq2I9 +V_W6e]uuw&Lg2FX(q#-- [$8@ /Amu-@ՂԜe MO; @/.Y䚦ƀ6lWG4Y/\tsxDSL34v1꩎ŘLP_b,ws.GupP\L'*UB{&雝,EQmy&i[v*JY87o_^E<´,or.5-x(įtnoXGY8lY͌ώ G UĜj=O ` 9Gl`UJ*+:?>ɷXtӀJօi6`c #,YUTyW]# 3%YlkgD6"u,ڠ4@iaJU`6L\ *:$__SMf"k9C!?a1halfUa&\T 5vft~#׬﮿ 5՘?ry HDC!ȧJ{ WY<nr*p  ~{=B*rv,*Qƴ0K5sbbEڲ8<53B-~Qhmu(73YV XloZyI8/ ^ [j \x=>4L.l3xqfſ]q ,xIfpuuDBY%$y4NuGM͐"*7RUQ?ә,'gfI4 AU鮪lTqep+G©]ŕ rNG{Z\*'84pN.7N؋wfM5}]5լe,D1vx^r~:҃%]-= 853d&S[Ht-n>o/՞쉣gQ lh*h*y.ERWKu4Ga,F+WzS8WX\GN[,߇S tE瞪c167c,|3i^iY0L[**/+s)}X⽗Ro1CJAZG,J[y6?DM2?†u7MUv/Pතp[J<7(W˳G\9=_!.oi5jY ~V0;X^RQ{[wQ]UsJՆ6uVVsr,geITn2f}muf?1e_[~9NƵ=f gA|ɵ( ky}gV&CqOL2 lll2(yˉitY͚'E}騪*S`Zq@=-ʩĬh)Rhp%7}j/ӷ:~{/3Jᜉ\r4Hsnac,i{N%fJ1U4Wx!CA5q9}Z^TS3E aàZE6Bރ|K JҬJb"~X"@2k$ j"U +*޲B8XUS۱+~ 3A; P[gUmMPg2Keb͜$;XUUAĻ8ue6@ 1A S}ˊώL9'b?=Օ%USӤ]UoYbr[{+wt]j%r[W;L\DQcj}vG; Ewrx Td,⧥N\9Z]OdQx.)ºxlt:{HhuUUqβ8:ԑ@ۜoݰ6B%U"m;*$Fs.N V9g8]]ek&xWLgлˈ;O 8%,P:-*--fV#TG"Eә,LnIՙaYYLNG+*76sUSC ŅJsMW7u"JaaYV@UN%f3jP^ G_{Qaēp@ݛJg RSy=JU`4>}]m6Pm\WWÁ:dN\P\VV$uMg 'Dz>S?Ǎ dL-#X (wrLE%2EKeE~(Ąm{a7<'3OOVD( 1-+h9M?l8;JHB+iA0W<H[xSwlQbѠ%0J3"b XSS͵͍-3Z׭dmcb LB RWH\)S5⌱x]-Ś\,d`LX7lȶf"ڐy5R"#R]ȉ~e7rk{+ 7櫓*W6n>wGG}vB'ET9va-ZU&{YM!;q7bD=y$s&csi4kWE4Jm ݣIbq7 =DHU576֦ kw6^,{Fw_X |>KPkT-T*!MVoAU.wvO^{.dVYD@Xx80h*wRHUC\tW}!n֩oe2y e1Z‡&SPJN ;`_e!lY?z-/j/R4x |WW/DspMUa 8=P~}>tV*ab/"v\\^;>S66S H&⠧vR!QҘ/kЉƑ%BDsESӎҢyaEK<aP빒qMU u +/"djIUWU[o,3:A .M",PRxqW+߶pA1?49͉,*l6tUBM蝙\PFgP&0va'Mj咪ju}-''c=L&|:ALH)<֋}젊#-p{C7m;/!d:)fɪ 64S`bZJE$S ~|8!'NӭU~(ea vkR,{/H}<(oA#͢~;[kyeD ~k4hSn& MRPXS]ErO?̾Dd.&TX&Ww򞫷su{wo}Y߹ v 3LmYT%z ymlk$>O3اUxtp?|Iv7]Ut9ZϖTእʬ/҅BnUUE.6 ]Wcg-Xh.+3+FeѦm8%$Req:fz=WC?e&9:&i~t8O){̋Ww?n5P"2_o&|ޙYbPx=,,ؽgF'0PU*%%7I E/؋k %ζ`N<BlR$ewN:ڹWKI=w)P_綞UӞ'L,x1q†D~qz3އ?jd*\t=*uMa*4lUD~:8$L{t6>;]UtUV,(Db[aԬDbI&'b8% X(8hz}.Bh9 ,eUu5j5i蟞m3Z,V&z#$1~|丷-U66PVX>쿦ªz^SU!6?,vaB8])vdr"C \S 0uyE.z{KHP,l8cD+bL|]MQw]U-rU.%v <{- MWEm۶[@mzyꟄO! %Y{ 0ɑ6MM<|%!u w.V s%(~ QU2Y YfIRcJԿ U<(ewYid1ZX鴽8^r⺴EBp: fnK iޱ.l:}R AT˙#BGTr! {=0/f,A$ TWYNQR oq>!+pH<<3 Q`- K"T@(Lm,g˚ipɏ `񜍳c4a!th#U ɜ`r.?Ș^`IP̽P /rl6DWNe~=6.g1'&׸F|Ol&<80% Z9bۂ9\[4LҌsxo?-qHf(Υ881ۨ*/jcS] /t[y9^^b8H.aK!/.D%gZyR)rU0Nɽ&yr$e3.=i#A?prj oM"v:++0ׇ@زX.gYeCcΦ(>pqiMCyI:ON Y:q?j+,j>pf.ovPۿg<^XI޹R!B܍$,*ɹ.LRT) ʶ5f3g.JNesp[1pAϥ)璽p89@crU[q35UvO1-;zT.gQT v rg=2v[;Z[ᥫکEmC0׷577_u;sH1Y}-r2+;C ҿ@[NSً*x)2U991/A(' f3TcTD"EL&ܶL])tsy8m^"njwm2_`}v?;vr<}Pwr& w HC4*jcQ?4\á'3Q<{\Mw=ĢJdE[@MNϐʙy*D™_.kk%4.D#B(|B!ph|O>v=PS^:[90:A ZtTh;9`0_{!Ta)K!JQ;xvdjڵ] 'LPsESW6{,BR>0_;t"o!_菷T:th~ XvץKd ad.Ū ,uFYOڻޜ/e@#璽OGm,d2'+}?=kϮ뿞=@Wu2ΡOSX:]3d̤3}xxn1p÷MsaQ)ξu/_xLGe]T֮ta<{󩽇ILiL3,ˎM룆xS /$`8=Օ䬋+-<7Yax3-&ݼ^ݺ3?O<Lߺr☎$cG)S|G, C Is}a Z&"Wge-vPxl`?£#_c^pÒbi,5 Ҧ `hH>60KV_Tx9K*}GsĿ4.w{w695I.}ƲbIrLx)J_byYMe esxzp߼b+7>ص*c9?|=C^?eall8t` <~HɅ\D=2<4jxEOl] THÏ"yF^8Llh>d4) I\9at.ul㽈/|'N^jɨv V6SjjYWlBCYd3, 㹀oZYY4>x+_̋z:V>.6M 1k+ˆ 8HhŤʸݵpEBAֲxfto9Y l[N n[a:xQX/ ]*|3q#㓎] woRAa=ǖbeSh6ղPJ%&RL3z^}Y 1") 3C"k)!#c~Gs* 8x@ Бř1DHfMfjf))1LŊܫ,~+\G{Ilo=H*+2DS] u']P ˲x@v94$p#<|۬@Y$LmY\D*M0v0-~<)4?Ш_>#*Ë% }*-cC__2Eov^UU Dxt`|9/\r}D85#O!RJ8MsBOr*rdsf0'Ѭo1o)+;m|jS)g`aU8DM,x^tT8)|k6B-cT4K'ٙ?/rqǧg* 55UG. ? ݶt/>w/,{[q+y[OEҎlJ 91qwT%T961 _ ۖ}ԗŨ(DK1<唭jyT0d0JɚTUe%*}a򴮶X 'Cz ڶr;t9^QJ eJ\rV.I~N&fmu/0vJOue> PΥmɬRm)Uis57 UD  2939wB;S^x69aw&1 ә rnd#)gZv ИOIcA2 x\?Lɞa qO;%E|*m\>XJgU9-q DFfχF]xM}jπ)NLc%D'׼oYXoplt1EWSϞ%̑ʙKn88`GKC[+6Pv'P7tFDN?l0'7y볩h^ |5S^.kjibpU 8P`s} s}8g3U?RJ]c]5Ū^δ891eY6g_$P#ٍJaTg\Ft&KE$UՕCv%2~I FETG0/(#}b~+˸eQ5/ G'??8/j7)$J?\Ϊ.b&9sVC!bW4!Dw3W4o`x[N@54up]Q]Yl; HqqZg9Ow !iEX@HeJ**ebba lcx D/}]HҠA>3d,oƭw,_7C 졧54M:9 䏿S;!oj>p'xs7,Gⱍ˧g@8 CS NLN=~Rp-z][M/k tɹTq_3isك`8=\ iqd2QU \L2<32'UF\ڀS\(dot?z`'F ??| ˛ @ \sgT-P Emo|*|U fx6dh[Zp3̩e}rfY mGMTMTǂY c㓌θ9 Bj>T:ڗ bnzۓ"!(hPU/kL~vtmXx8u*KXe8sK- 5\PC}D| 1E 2Rnl ɏ mc^KxW/S[CwmUО}h@m@k )2*qĭ?>p\t&RYMƓ h*S3,6c/865j'kSWU9jgpb8&̉1qEd ~~2Cmq 9"g٩K>7l(\U ^HN 9Ԁǧq;Vw: HMɡю^NkͳUmTd0D8<2,+}BN 8kο hVk 훱spQe} 9ɢP ͦ鉡2_YA}R8M){akc-7w6/r#%TO쾲;TuI_ "/hoa{~uJɾ̀cnb)孍^v[3sNE}|R-μn,粖Q`6S6PxN~>#xx;bp} ѹi m!!pbj@\K ιEOƦyo$ೣ!^ |-y11mQ&k%_߽Ow,%lO+~9/4WaqcQ޸mp80 <ǁщ|.lK*k̯&80<3;931 U2C1d70?V ,2%92%?dQ7P/3HunL[tmpWa4ylywuѳ؆#EuMUnV{7SiҙtбRJU~Sw1'{]C:9 8~rRc̣^lJU(3´4 ԸKZDxrpTH_ܝTEWJOA?:]RƯV_N[P3%qWA]Wy˕D&$£NѓCMgc[JW 4WquG ^icșV}4}cp$w=o0mT7QtPD~خsS+ةΫ3+K2T,_{d wmQikU-p(Ex-廉k<]M'3Pw~KNܱvwI9,_yfa&gg[JSWZrE[ݵ"?!!~JNpp k)Xnϔpjߎ .>ʔk\"x*/GU*fOZL> KHzybXډ ~}j㞧 GA{B93|!޵+3kR^Bͣx.wR8~}u?FMeU[G=ɃO89ĚKz"_50mMG ᩓ L84D}kPGpJxR}׋AlᐈQ zԈ%ojI8|HgQNֶ:^骥k (F$J#u'OgP}>sۂ Ru0;x|QK!?<׫묲l]Ǖ+ nfigњ&V 쯢)w:+irdM+G3vQ 5׮ڋ"rP蠄)o rQ(l ȇ+\B"4?tںJvc)E) :5CENH_em<1G&K'?|]> owxR:OyϏ]Q6_AQ3D[Tc%\Ox_0/i#H_"ءU?1&R{ `k*xkmiJ6meo|re5J: J ~8M}|} x59(C$w?e8?7"%t_By$W9 `(c _gm)'V$CBN:G~nၓCL F]t׸FT1#}H:mUc^Zޖ6p4?9 ޢk k~i{_y}Rp[g] xtܾWm]-Ҽ*]~'gW~PL^\oʦ:v7V,<۵*%qE|ƨOxJBa99.̡+)T\/sc 2@[ejuIk|cɻ Je4{v<nH"KR#1Gs>EVܯ&}D HP~bJ{M%i;U k4D822ݏ>mL\`K8n78Gp4RI2K#E<\z_PB͜<|ghتhuk\;,?9xYc/ڃby3LʢX'bCj}'宯d*˿=uٔ<2}WodcCs WpPM}s9+-o qy_ŪRIUd>yWK Mu[v*xlS 1l> A% N>px}ST6U{ xfjc}Ľlhz,ԃboyek(wNd.q1(,qƶ ä87U!b*E`.g򭃽E-liqϗSnL285=oPvj^c9H;ظ PTpo ƾc{*kk{086:}vkSoTeGG7vJ&}ty|CQߞ~"b<"ءRV.t4wTZu!1x]CEDcyoZx~..CgG&O$3=@tVD|Mn,Q<¼4'_O{Z)Oc}u 7t]M>g'l%$㶳ĵBFpgNvQ0o|5h-g>rvx~~Lc%"]+9Zˑ} G[FToreT`,G Uy~kϝ$kjs6{'K387c.Y W[. ,yHPU-F$$:΂?)XEA>~9UWї]uݭ1/5prphɘ&Vڑxv\rS3N79 6^~Fȼgԑz LdGyL.}yiR,[/!6 })d20*uf>|eT_8JI<] 0q]JjcNA4Ui,#w^\^zw>ؔsº޽ӶģTƢmdž|w`yڥ*aDpq ^ʁTtJK)c`K_{iQi&;^r7c*;:KW?gYRēf*UTEJpSJFu/oq^t9;10["4}m7rs?} /]p?pӴE V*9etN꽠G vvLTE#Ƣ*?\,XVcr+^0݋HA>Qb) ǽ%y$y%E[U9ͫ'Tͦ=-C.yr(%[}m_ 1y8BdCUA*bĎW]8K%[\5a<]6%#xRqC79/O/?{i:9ڵtm)YA@C|ke]W`=Ίcr>ٶE1k bz- : @L4ȫA"==Ee\Z.uTc d-e!$f8;*1nlb6X6.? ,qVQ0s6Hq/{>:[V,puї@O}-nk1y_'I;J#2O݂ R{xmW;s+s ĚSp-m_s$fXYaYL+ kb!T95UMԗEeO3#,"@|-֪ o&x$zǧط`pz|wi~m9=9@zD#F(sl@vAeoA |υc(dOl*#5yܹ_M į1&h,݉ \Zj'MC^dK<G23Ad"IH$yqwܶw{U[ui,UnA66`5$$%$ B qqլVڕ:3cʝwJڕdǟ+{97;yRb&n|s ~8irϳ1,Ŏh-q+!ݴEDr- [gq튅E& z%ذMYi eWO_s-ߤz_h@w|(TDfM ѵ 5%4ײEԟPaá~:rF+NZwLj.h`(yS6t$xC:oQ]Gܖk kDoMO5G]2od\+`#"B:orp4esڼ!~k-.y4&eիG ,櫮G` A@c9 .5: jy@BSAhg줳oS[hJͭ6%cQ:R g ^3q'Ժj>j)rΝFDJ|ל~[y}v=ܼy2zͥL 5nl8pȮp qTiOI$rhzz߼1k(-o~ k9N FDuU3} `lӒ̾^yJMR-Ci6 ZdNs4tu(ڛ`f 8˝|w3WxT\OQl [>޼ϧ>B/=Ưwtů"ӐL𥷮f՜i%֕R|uM ?آD ӗ4L%-VGr̠tA؇p ǚшDoZ5Ny5M]Aq*Ec-JgL]U<`mq.ƹӛQ |(syy^$i|yؾzyR!pF:^hW'Y\Ȓ²Sr}OgkRpܛEެjI:,K,l٭\1*oӚhK""d rFaoD <01 h&f|z͹|%n^FŀkY;w7,+>"Q|iX5 cBZ ẕ ԛ#tqOcW ^x[+ 57~<㫷3OcFw3=AwW{W{t! ¾zevkBu4BC"J2R`&Gְ׏D:`63{WN뵳_ᝇ?J4ftfe39{Z#U1tgG0-@&oM.D!hፋfs™ki.A'o58 {y@zٜ3kݟ<|3>r-a!X)f'GUJ&`!?62]Jt"׹+Vr6#* kTE6ySQ=ܽ!f&1gGSф3gN#.KfSdn 5Lv^aSAk)Ek2΍z枻?-(E-~4P<< 5d m7p6\?".L{uRhN/c$bSߠ{X5 xgyӳ]p^(_.hhAu,Ԛ5Ol'6qo67!hIf4q&6VS8}l_Jexb^E0lKU[HS|o s*'לD?\]g>^R YEB56k/J$vNpYww~?HPX\6\d<'͇ByoW|-d-JQr%^NC2Qo׾i3eG( 0F230,ˋgxǒvn[C!kZ< ?Q25kLX07gZ|W٫N i$:q4TSX\C[uxD^*=خoh'/n]dՅKWgp{)EU xަg」i>y]t4>R[ڜFOƝz :~n .dg/]J q4}I5rV6Zs-o;oIg[>Jlo3rLA+oxRd"kX frtd38QI1Ln Ι 䟞;)h9?=g隰k/>36j5U3uIb$"*ezoBYJ`Gv6a_YDw&RARHU#K5UAѰ߿j 7];g'uP?9ӢYSG2ovS3qLm kE}K.G/}LYVz++sC}beX 9%1-.WxKmm] g0>;w.m't [{G^H{6+8ODטȚųr\Om&hmD(pZ ET LVt?X۟L޲"ipR_1_ӲKHDtQ9ZO0$&h6Ǧ~zu/mށL@eSvWsT2=3k,5G¢pOn_|}ØPݺDkV/xS^a;lE5_9Zv绦E8Kc{D])/NYʄjypyq*//젣{cdf~y?ek؀0>q{+MU1 ppiB"Q$|G*dP@hͻY<5(IeQ&BLרE }vf(ptM؁ޕsڦ_cxY ok츾An;MK[_3j_5 ]ۙ3, ģ:Q]ͻ0 g]am׻Rc_߸ xa14-rKX}dB1bAdH7rcݷ0Ŷ2PRrh4 xcx@.ФeC)xlk'(kX83hjsh:#kZ Uef Uh_yb4H=üzp}HttgF\? <]cWk{>r;@)D:1ePxvReh!2ǣ(QM)%|mD\ z@h7rGㆉY*Iu-_GwbwLVY(<S)Leȉ1Rȓ3̓ Zx\)VHB׎Gt`A HD#4TǙZWͬ:f71u,lk`J]=0* W|,M 쮡1{h΁Q90C98%4oO J@O5f&ZHm#G 1R>)Z4^ƖKhخ9䙝xhDcVLKu4-ř|lr. g}8"MCٚ(9+|JqAOT#zė½.ᯋ*Y)#%GRG=O>wecrJ*goPmK9+`i[3_֓5l52Aշ}e^¦j}CiX,oY#mY#X;E|xAY87.Zb^k=wR^6d4i) ´lū︄y ֡N{UDv_)_4BSyawϞ5oo簔"'4Syek"bA{HCs=tyY#jVMmg&ˤ6{1EXEkaҜsfo6%c̩M~zF Ai'v)2gh/a҇馛z~hzaDm n"wy j:kxL(9Bׄ+fNcV/h MU1Зy˼H$jYX^*N"EDHe?8QWwnU":sY5wvӘTM.7hV7`2WveXY׏G%@؄iu|TWZccLˢ*NC2Uٍ<<w’M%cr>-z/wߞ˝0Ml3& h9zMgOo$9uUq"!AGĹhv 9Sg|ؙ' #n'2 GD;󻻩FPC2"x>80rz pJW0ʞ}[q5n^}LG)pq>~Y|siMzU\n& :IlH`P*xmwf ,7E^*t_/{se18a}a~v+mus0Ub r 6-*R 'ϝJ/ &Xxa<sNo6Sʦ2 )vQ:,go+ΥcJck,y7ڳ;X9s Zl?T.!޴FgpIhp8>dDccɫ&vCNڌY{[X"?Af>1CcD1-W1,cd_0c<&i>X8)0cAi}n[h8azy*DBY&nS|vXl@ T2z2)O4wYm|Uh6Brt~~>O e0Ge ?&@NXt= LGmD:%CMyA˙v+ESM]]|MUe+`[[d8ctrG8R p`HrJi:r}2j OVY4t2f7ח9s\yMXG09:ᜏ <ÅMH*ʥ7i|,sqRDDge{3>kwL:QMfw>1V?J*\׾"z|nmSt:=a#<.l ,T&U-u1^O}7k<6AFsL'ϧxWt4!p\rVޱr.O!،dr p}g3fNXyx`[<"K)e½4{Dnȶ*Vϟ5+fs#j69]g6.2b ^>qNIM['ZcV>6Z/ St:| +A O. vzƲ_m?`@V.[jjy/$"4%lej}harp(E~ ͧc|Dt)Uʚ%7^ lLb~6_i4]Jڢ,ˉ۝~ ѣb峛3WO踘,ỳ¯އf*0%(;gT $sSꪹj\u^K5W| Kg@6/rYTx kWEәTK2<9Qv_͎zM,Z5U,e q)j!>>'k6[Ky`$ 2u' :sO(3+0-}mNVdگStDjxOölK򦥳y9 YB"9B:o?Kyvo? 3%gB~Q@"],.YʬZ@hCOo'kwxDqr\֚*MoySY5-TE#(TC_IjB6oq/?__m(G#iB|8)اetEj~5O@ǕE_F7*bǟkG.{R܁8/ug/`ռW7Y&i6bm9f$BejV+*"3EIDe =xd=0*FL63X53PT擿np:ˋr׺TR>0؀a>A~ b e)Qlm+qvf4z!/ˉE!J1αw Cìb{][;F'޸;5G,&Nm"]wә]Ϸ,Go 0 Dt6eZ}V7s&Ҙ{OO%k .^a,cx!%q5?Sng/=S˿kSۻsWDQ\,¶:f4TS_'k^aM? 0βa/o[:7i)4 Eְep`(]zF s&&Y8+,K;#+"I8x u|olDxxs'ǿưNMG'A^lX|['}U-xBN*8˹2"Bkm+gr7YMuT#K\MH慿Z~TJI*o01əgNo*MO~`:Xa*hsǻ/䊥<Q]1!&%Fc= ;yr~w;)l? ~sQN32󎳥xc&XиG!rhOWw>Uu:|/( GWd<):[lBaY\mYRS\8ic^k=U1gok3#<8K!3,^F]U,`xϱz7/R <Wc@ǕEW!F}rwN0 `IJPyF>5dy9s洱hjT93nȆM}O12BeFmaGmb;yN9=[vet >9+{{;p*|#h8>b8J=N\otȻwϹୈv7iefv}hy]@m@4 .͑\LƢ9:\`~[=˦7mLORѴPt1TtMņ|6aGl8;|߾ y0BR7MRYGqhl:!F3 ;PlBF!}]4.Yw8@:%2`Y+ۯE?ot~G}גDNv&Kz4(އs(H3wc\9x4t^0LC)xj[NC2ֱpJho6AM"F<&9o2iʌ:1A4 3K\MׂGkaYdr,Sfv`wR gr  $jSp|Hg(ihqL/TAKtv+ozx n)/ ?D|oyfV)RޒzcZzFҼ!ѩhM0.I{S 3kPM[mMqj1xyf6TTs4} S &j3ytlT4Rt 50J(S eri6z{]8"`*y&UqU"D4M-S"Ѵ[Hʲ29NIyݚWŲQ"2VQkˣG.W(҄i Kb̤Sr/˻ofR2::3-L >yNebumm]F|G*g]5Woǿz䁁wM+8n߈VH:`s)IS^۴ _.DUQޑݝl靓6O5ey)i"2q|ۏ< Qp?wtk͍&`:),jֳ0LKaJt4=’i |]ݛs;ghvW"@)nKp\ '-L?(9r?!@R6]X*a M74RS,+O8[c^K-i  U_qy7L-GBL)tȤ\kG"h_1LoHz~"p``G6g^9qΞ›Lg(tMA^׃p3 fN!mX[ʘT}~91&U^4{D/5meg{o-踲ܵ(>-N8V|R4 Up2?'@ us9o7\sq;Fa>۰,"fξf|OGϾh_]B")JW:+[W(^=K#34kzuz+Vo>ÉNփ+o* ꯀķebt+Or9ԭHHY+5?vB Ě4&GxZ>^iI%c \Roor$XUԵaūT~n-K1ߋCMK)+yrzʝ,~|i(c"@8G0B1(,]N:E7,ebtdnazt=˴JB}Y8Y}W9V~ܸ=ȷU&ե7K8azӠ"nlvpJޅPOM*S\Kfhj= NLôLevhG_=c[ MyKįw0-xEykmG#A,~ s5@zG. y0s ?]%TᄅM5 Qa?w,K&o8Kw/TS}Hc9G 8eHcK[$)K:.v;W@Uf+vv\WptE$$e)_6IJ'2X/LQ%zHr]|V_~4#ܭ@7rd9 :G)n}L[)~_`|L35ϊJJ&b! օeG~Ih<&="!eO*o_Qq=e%hM̌E[vui9FiDqXd|>>49kD*hp1Hg~a9^x\r7)ʳ88Api\ږJ|qDS4A3&jz۩{^,A8e-Z a` T.wUϏ/E>7ey?/+ )O ^͑80ǿ@]iWΤB:/NO?#|O4 eGvN˱iЙ {čJ,}  ax LH Vc'r9-yt3.Ҹi<ك=܉ 5bgVk,rt&ABf# +HuvCuO_ۜL '\eeY]֓:\ÁROcoӽ c k v=JY֎h9 :(o~ОԊ:U[w\)q+8J^(X5Ǟ߸e;UR 0Wp `(R؃C ?G_0gcMN8-i9a.wV.5ՉxwǻkvNOIf0/tAIAcίTp2 |&++>M(FN 貁GI#;pf6|}SD|ARDڭl+L)|ZR`9|~hB>R#!QWVK~iO,/1sl؁""/YSKO<-4蜢I-?]e)˺Jke$j_sj\N!O[BQ9fz[EKĵ@_2sӔeGJ%(hՂgyz v&4]8o>`?lٌdhz*˴{ YNH+h\3,3߄eMwL(5LSA5!RTakGlƶڂ#x k/Ԇ 8ĘY46Ӈ ~=n`vTHeXNFNogIjը-Pj )(ZAZA5 @-PHN:%#|LD d4024:8pXAȨHNԶ*<%tEXtdate:create2023-07-14T13:46:49+00:00i%tEXtdate:modify2022-10-26T00:56:08+00:00GIENDB`distrobox-1.8.1.2/docs/assets/png/distros/opensuse-distrobox.png000066400000000000000000001002021474517124600247730ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME yO IDATxit\y{޻վb#$MvYbo%Mrl;ͶI0a;$39}f&}8ٖ,Q.q'AĎB/w>hm[ N T,]}}(P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@6$8zd4,DlhC|14 BP?ջ /րւ'Wk<W+I&JZyo}\@t6~{T7 KMTH"=@IђА@H $8-8 NV4[u4Pͼ ZtA`da,"k6}w:@':מJhL@i2v hɜ{ŗw[5.Kz{zՀ0 2*ZB I+ZyL?d:.h% -6؅җ .Z*"`ŗh@e1Q_Q(kq?hhj-ExZE|ωBt-q+ѲW.`HW|4Y5 h9EE؟t3+Zm{;: 2`/d%r*,0 Lg@k8(ost4[jCO{E A_ l_| @,8KM`3O[;dt"}!e" 5U@*8C|4h4%-zJ,|C.Xw-0"Z}'ݧ0 *Vt 8<(j5rש ҦxՆџn9ggi]I+3?x~^yFi>tֿ.%o>A+VK)j֯SƁWAiW/GY x?1Z;Q;v6 uA{O4NKu?C|v4\l,a>kXi.t^|G&zPN5llqvvCIGX.Nӕ٘e.J _nPWթBur5bcڞ͊;f~qݶ~NO[D^#A9O]ӈU,gJ6{H͸[;lĆ;S_hY[ڛ.ڗR#W,ȍNsT/d|D장lQ"75Zҡ>tVylVN+崂|i-bxJK&C䐿=}MGwl8%Q"jC]WZZk57T+ޑ\ufK1RMc1Z}1SAs?x#X5t7ح`ڙ w9ayKx~noBmv|fkNOmizŤ5|₪/Z{}e׽D(놬ciW駬 斫fUWEKצ:Q~ |_{J*԰Ohyvt*%Uy=V u{e>ޖFX(lLO,LrcT-4*ƑܳoZP ˅{v,/}G:lVbȕ"kiu35b7rgO[{#] KЕXϖelᨼ9?E/G5hox <tk(64~VxoP>#u&+I,' 'N'_PGM՝( `o#Wt\K:_|g꥾L+xJ4ZWݰWߡwn(omwSo%O 1!du)ɳ3zc=2_JGv(ܛ]QU=W+1Dq"K赸VVGQkߺbc;-+J֤ߍTWs[ꚱlr'>ͰaHJwսXG={nKV2}Dȓߺ% M ?x⪐WJb7zW5@zeSYA2]\_N֞ӧ ~5Xڪ/#yӶR[߾̛Il VW 7욿nrrkzw8C+D)nj8PܞJ Lª[l3uKfן٭|nV9y#|UޯTo=[m6l#DfU6<7xMWs:!͟y\)FΓ;|FhUڱFooyudJmfXWl+֪{ӵWëףhovgm^̛:=OZ% +Uр {|m/ka+!9hoxK|[M]悪3SZW r@<:_bKϢ=( =oD%6fRQ;ݚmxRsZ4ud5G>9@gNkQG[,U֖4_kg ts[= fИ6<]YMā]h#mo'}>"Akj962+/R$N Pw:3WH'gk ϯ: 0vw6vvwq­}HGz¦8~C̈5q$=>Y>׽je Axw|agrrSn8|㱝yw-;=ZiDzP&h6CVwl[8 sՉZ9VܮVd>?im(|{ߡi*r=OCp Ycg"=V6RmxՙꛎeR[Ȝ9nS^0yu"pRڠѸ+.1Yow 񈝌K)T wpM{x%*<3Cc~!3s/7>x6tzt >4Ѹ?eL8f4ȿ BR eLdK]x Z-  k͑>?v6tn~c@/ǔXc_o_oM])zIaƜmXuzL<]V!c;@::k?COXͪ:{3\sWO[9vߠ,CZ7].y(#b'[R6\]0W <{=_U謁6|&lcrt6.KtOvIޘ|aʍ^_k^WxEkA$(ӺT$TȊ}!\ ڨJ-  r/v|/f7Vm6GeZ3Vj5{3)ݽsFgt n9_0$cFI8IҡnR^2^ҡ^bv%"% %  hSZF2ԕggXxmhQV%.4_6\7v|=Y%iCDYZcbGP}ُW?t8TY^s)lbS*bX*F؈IҤB][Ȇ GY H ş6|F F5,Tk*(uctٽĭ-$>N7Q;N̉ H:$B8F4XX֖Pϗs) .|G{T9}J?\-掎kY^zqjhF,ZI\_3_?KvMM'jm% v m' fY!v'fipzeB[Sln165Y~s 'NXox@iuꛏt)O܈S=qVĄ(R!3 k\VSpscjn mKi5Bf'Ig;ş0"8a3`BŒm#٫74ȉ3SjLthJui>-Z,=6lɵ@J#-Jnb޻1'7mVk#`r M&#2DgxD$ab!3cF*dnSzO{&`E\}%/]/=9OyHDnaEC4Jy`:p"g4k d[&(}*yrS_P)ޜyù/$_֬qR;ek'p@TOLWF".+R@DD"|˃ nDH}\}GXi֚ eb*kuK%T4*s"Q_0 ;-l_F:jCUVĎ9w k>plegO~(Kwi2+0#(iup:)PsKXTZkZ93,&3峼1uf|]%$SNͿygG|m ׫c0"9ߕU w& 8irpϯ''uys^TK2DgoJy oO^2nz&vAδޕ|EtϫQrh4 L-BE:3[;I8ZyL?}OL44Z3gӁ.#{BZ;uZW| Tc7g|#;kcF1EMJ5] 9nP(5Oodvi.pj(g1S9E]@AȌ.XL3kٳv;Wû_7oRzٿȯEt\M+ 5X$,~|swB)g'Yg'v2N.bC=yOKgtVz X5: #hjF3L:LT$E&Mgt+ 3؞_v|'qk |?nڹj'=WNk.'w| "Дk H!b!jRc+)=x3 fK̖fMRsXm~_gxwfw=ϡZC͑b0Y>Xd>M+c&4f|o[\OD ̑gKZ@\>"nPlR?αR!ҡ=Ee q]j;YDd78"Z3[=L oS1t/v l%*[YOB s{f_҇ WT{ Q%m|sJVB&J€E3Y~ccdEf*cTU&zQN.V/&DڤԜa*Grb3QJ"K-520E"vV aE>y窗,tny s|Z ,^ ġܓdrbc22a.X4*'qz5jx7ʼ;I}jpή$"2#$tzlOof7{/~RcRc>krc!>͑ܳLG|CZ1T] 6®,]Zns|풂7٥Pݪ}[8t5.QVNs"gct[1?QLBmC3]81Qh4~5-@՗t] Źm@4o\uх}\FȌa;ɗ@2cT&Uν7J^iD[jxxfC_XC5!P_\vԨyUG+T4 !+mD@ش14-r峣錯Wi ?n9t~"W"nfXZ h ([LWG*N0Q#_\v Cm$DKF&<`}^ƝfZ擷|q ۾(ۀ/^9.UL~|嗘*"W#_Sq8f o*GR*Tt6 -px8w#:v4o7^9-?b&U/TUN!WRoPm&)P tTGXM_O?pe))t ˀߥ ""6Z|' 3Q:Aޤha|nM dL6;=:@?=pv:7?N8,@kf`Si8]8jEe>Ĝ70V_D͏fퟻ(y;k?ގ `u>7=Pӯ1U>ı*c8FK9B7YD$l#x 6C )ȓw<;$sc(䪧9Yf~ C"v+筩ʋ#y 9?wc;kvoy0;ρ٠%.T\FW W[ULjYYvrB6ȹXp0}k70/>nnS@_]r-j-$ h%`J #c IDATK%q4E$lf0T!!a(Ԕ4SO"&d6xD)4J՚9Uy%jrR2~K4bM,j,Ճ @K;i:#Cl3TӃcFTùLd5ߤΓ1[9luQQ\7Ù)%_Пlycۻ7Y"v#Ёf=Llx p7*/(xA72v"v tp06Si[W'9[|3Vzߤ\= a2/O婸 \[a8s톨h7m4GKϥ= :^}! r%_70@&n"7Om}t'ID$i5-(1a+NI wt` q ]Խ_.G½|ȝe6 r,e'ne\`dޘ/M ogz_EAIxKTKxg%ai*2VzJzRQ;,7eiJbrcQj5қ6_R!g(6κ03u o>:,inբ> OqK'\,#W<30oggB(i,S-NQqvdY 0I*A^"WuLQ$I{ ˊt_B}fzx<-`JIo|{B `Z^0 B՛杙+{:l1{Rsc]BW|EE^X.:`"NtIT̔pz$p3UƮu'w ,9w-5!'E%gKszlM"nMUۈl#Q|V`W ܴW8"(オZ6ZĝTq5vɎhVzmӷ{Dv6kew2Te\ rAJ]wF:܃ZXe0uÙUw@-OQn̿g`L”k񙯍spr#ή"ls$"uC:@gûVHZL8q5 V+W&tؖGXG*c*!jϻ =|uv]Q!jG*!˝r] :5FFILCK@G3WNUȩ0!dV`՚4-gl *KFI"yǤ9 <>zbpJǭAffbJz&&tlbvvi yj^6I/0__8W'pv1Sje"fg(RTYF o2_\W4!2gvW2<@(+dRi%id%0싸^s߻,sle^XN7GYy/eFI#?@~#[g{ا tth@keiw\m sM1}ߠ5ŋAQn坙8>2/j9ޘ t_6YADa67XEf˓4SӉij=߮ƗC4t-z#XAaq ~{ca7yD-wޙzb=zTiW4~AFu_ gx:rM1"5j|YIf{5@g:,+פb`.OџE*AI2vF]* Ͻbcؒ΢hwlJœ.`GZcCZU4$lC[Y{ЫmnyZ;@l }]Y%e(cv ^ckJLrlq/_T%f+8]xϑDg4s]IŸ`2Uy n"lӮ٪[n @:N+ w4>Mdm:*dpvluƊo!b`0a+mO-Su~k,#cZK.8ye7yj Ǚ7{]PM ]f"<hHE}`k> t6sxK>텨VIj^yF㢵Kk -Ns,;ղ+v"LVd|:zcŔttF[ɋV]{3, @mBN1䮔w6V{9ѺeմQQDhݞQnWd(1TqO7uMǦj,U"$DXW ݢ``ly)ԧr ~b֖ W: gH{khc^ifʧV˷J1BFH6 R_և`"{Yb:_c|s H;Cwb/a: gy=j*TՎ2p}@ i,8$Jc&@gWMrՉ%(N:[X몥O[9ir:c={Fn\ut1PBΉ\(c #:f)MTik֋ӺNTrQ^=kNzuy<5v3}ɡ%̗ ^wQPԽYˣcqBV،[wlk`X:Af Qix@rk0^G IW^ݕF+]3o[}6,T!+X:Yq:k̿DQ^'C]l\A_.|][g`(y[%@dc|h\ER ^tKGab6c:XX# nf Յset|uzYv|^G~uEobrg Pzk^(fb)e@2ÖN$]l%~ ѹg[FouJ߻Fra/'b%|lycOU])6(~0 vpLW_rr[gވct+̕elM}[>NW%kJn-'m21Ƌ/mܚ{~*:MAG0 T"̽ ԆST}#tFrd* sQF +6xcDؑD(Mo|7'^e#fk e%.p62W1E:ܻ|W{צcg1B>M:A6}; z~uZ7nS,UjLqa:?vFW-C]ũU-y[h$2)N5]mtDҟf0)*G׏Qh(Ǚ¹^:"".6tGvЗ`zHy]&#<3_+=Dž5ߢ79tk[7n+-x@Ik3/|wE 2&r|5&+/SߵXZhLjr1;l(13^vd啉V.M_^[`mDu1;u^;TpziU ʍ󎏪J{&B (Y銮ʂeUWW⊢.6VtAuŎ i:>(d|s9>sR_J_lSK:x LX# #  a +ҵYvsQ0kM&KbT⺳G֗}Hw5G _TxwS\'2z"6 W\2(؛ᄮҷqCůZ#d ֫QPDد(J~f2zcI7'ΖB#n䖯"s*|A%]xaOtHcڐ Ѱb,u}e9UÆSA#"JXT;]Jqpң(Ǧ@l*#G*NMmFo=[V&V?bP6$[AVaGT6|at]W~I0 l 8, '8TxJɯĦ]4nHWj)ntMniHv1SVVFii)555H)"))$,c+y@RT(R<1(7xveRo2£5]JoIQaq*B%͑ELZƷyi6?ǵ*ߖڈ#KI8aƧװC6-&53Y &tmiXLV̪jŤZt׽ubNr+`{巔yr;#FnB-h8)}'b,aڵ˗t!Cp3p@233Q#_.E_lUD, IDATzeO 4|:!/ʀdfJo;9k mE(dݎI=Tҁ_(PϭWt:5)tm[<QY$[`9B[bZwRFk+5[q0#eV@b qdƝiy{2|{1κk3/Y%Kp8뮻iӦa7$RVx *}; l>d N vS1kְ HsdՆT5K~ؓ+OpP?r/~̻ b ͆Mch @bx.AË.=2Ӑ&O Eu[jzn矫f<#lܸv:<#̛7x/$&ݣSHD QTA`7H`FmRBNɷtJ9Ɂa%E((D{sNfV늾d3wQVR'(]MM@ Z[ZTٗ"qort>4+s:]3} 0P\3gG$4Eo&+B ԥU$Y{.<şFzlkZQ]@iM֒[-(*O2^0HmE- EAVZ̙3ywkĉx㍴k^̟?Sֹ5p0̙\֡[kU /Q,&Lm۶G?ЬY3y޽{ٱcm^qE RK`y+/+["@o867yfWPރ*@S?)fldue\{҉3"VUM ]z !mk]fE(Ę[Շ>ӚmB7jq=K,a̝;q8L6)Sлwo4v?,֯_0gVWc43&   ~끱! Y?R MjT$OvRbX4bj0!2TTR!j=UP(7RoB R@9 Ze>l,ZԾ O?O`:G;[BQ.$//yyl3Lyy;Ej! 9dkɑ TDCfjqVOI?fCZvߔH c:ԽuUf7@D4*=*VLG%qٴ?]"~ ܹs'c֬Yu:q ?>c+ ?|h'-ӂv'a=sW '."LXiRFp9a0(Bê&cjM zЋXK B((W7tSnz87Q\G!HH׫ fjmUذi14jMFlgZ % VS&ń#劊 -ZĔ)S=yiB2?t A#7W+PF w!` P s(ZXkqLqش8db-Ͱi4Uä0V&;f~{5 і7̘1cܹsmaqw;cԡ>$g2ەgj4YZ)Ry8"M~ҍUK"=7-IwYLKE>F",Rǯk"A#!utCGJc)MjM$jâُ*prϞ=L&"'Ck6cΥU$EJ&棏>f˖-<.++{wK/t_ӉLqԩsk㗶 h#UdƝG˘$S$62c|駇>'_:94sMk':&WB;[CaιW'=#b|/K]j9eRI0Єu_Ejݼ-9qW7z-{.f̘1'vsY6-2>rى[J 1 Xnv ?{9hHALJ,K3Zv"3L2bL/EESLMQSSÒ%KxYn!kӶ &L`ȑ$'%Rs\Z^|cPWjz@-_EB0V%d$ bVX$f;6;-coMCQCl@UV1c {:+9(:;v9sO: 'U3,lwϓ%Y'ԂSslhhA,tfrg_^#]]mɉ^z'xcG\n} gZ0~aC=dɒ<7:C+U6*$SD2 1)D23&֖TInM-QbJJJxwx衇(..>q%.#1.92-~wwU2k]+5*[9T "TBD ##܆xK& [gM$Oa+}v/6m~!MۯgMhټI?#{vc$Ycl̙{Li$ln,i)N`tDOu ґ2 U(8mIv ڎxk1vf;6s46S46*,7hX< u ޻IngWTibڙ|.?cRm۶kҤI;s8+%8HΝK;Z5WOjh;ԒPďčIkiO-q8,pR2%b3Ezt). D_cHa~}9Nu}8q" b9S}GU9T?/-siӦ8q^"m@ ]f;e@*"hE8bFS_CQI1̺ ?aMU[.]^8YmN?ﷵ% =ۯKzJ}rDq40aIf{a)ĥDD.c̐|BV-9Z`֓9r%r u36ocT DZZW]u!nN'#?C|r_?/ qHr,Z;jԨ4{$'F^RbBsFH'pDu/<; ^̚=9g)9t_~\p~dggzpOgu]ꫯ㎤, `/:t#J-Ù#"A}'e,+fpYO1kDxw<6c2+?]2rHC.]h޼"_.I&O7֌3뮻O?;ǎrryye$ť4qu{ȯ~ot;{ܒ Bp+0H_ H{85NcqѭwMrE8: gp8P4 2nܸKx׎ XUu3Њp$ڸm-~]d5\y=\'lt::4(_ф0ЉC9؊ sXTF\rz,Z#F}-Xx1]v=1m3y5ٽOux<|{-.{mhݽc!S+Dpocuoڵ(B6m=j_$vT:v޽x[l Ǯ9rηzke]W?;͆&r)Y-u>K?sLٳgl2mƌݻ|Ŋ[|f:t;eggTlT>p[%R~AȩA f3yotGM\3b,Y=a-^xcFFo"XX‹?e/z׼.]d !b3q!C: jbDphJ2PTU{}_ooB;RWj>j׀Bavi;:dkM-D[K hQﶟ!  {pp*pʩ T TT 8 }DѨ!O KS>j"P0V ZgI%֒F5[ T )bBSͨw޴\|Ŝ}ټ<6-ZIJe5jr GRa:ks~W PEx㍻&M$[l)h4Wq' K3 B~;R"$ٲJ$dŬ1̪ M92R2@F]1 1aHt p* ~pq*pJ5Ҩմjz&<{ET;6-)!ԑS'ڔÜB5XKvS&Ռj3&ՊYԛ&%%qm1dΝ̙35d̙ی0ָˍu`A=< $eFIA礡I=Xkf5|PЄM9|4C ># z4tt *q+p*Ux|A'>݉_4T UF@⩃_~76f~[o`:ut\u̘1^z} _Qk([m_# kv8u# %>4o[6ybccxHNNnۓW_}uƍ~鬔>Mtf^Pu[!yVꝍ.џo]( j#)[o0q8q"~Xʋ֡CKnה;B%M8}fB.G@>Դrq[=U9Uϩ/ѣGgϞ,Ez<_tӛΝ4hPiI'<4 !>^%^O}G~ܴCۊo+6W _ "'/T7_̸q(**jsDŊ?YvQت9w|mrKhs" Hm@,Q.]D}5l]Ow"yrk׮̞={{m͒xi|Gz =zM߬z3N8!HgMA]UJ%ai'R7+߼ZNjw:$d⦛n^ݼy4iUUUq)*ukgf5oh<=CQNܒ&zl֐-~~R~D YT^̲8k|\')W_ݜ9sxGp:1Ivݹc̝G|-ܡKǓe.NCl"bkM§;WH!Óq2}͜9ӧv7ۥK#>3Lp% "_p@VKH,IIYf=#s1m^-&xPVv n~roV_-UU1b}7i$ΝK ȌΡgXK3^r{¯W6W|Ƣ}?R7E C\ve|8fcǎ^k\Npx0D[0Ljyo)#sbbݺu\veL47xo\ x7Ypan|›' <1x[˲-%D2ҧzVپSXᮬ>3c/-mI"Kāa||s8oߞmҽ{wzq:=QHyxm3aYHn2 KPj.E3jIkUɧ[b)9qt:Yf k֬Ϸ1l0l6rRJiBJ)njUUl6[#f ;o(0V 0x=j}zg}[1-cUaV#"|RzQ!5.˕v喔'Eu=9 ?裝Æ h:K',@+t ="N-nv,O\7{sǶf1 DDT&E!++ MUU:=R7N ?3*t]~޵D{4;@9./̓!+&~>xkHl=ϹyzpW ĨU27*"zիrrJ'''E{dqY$ i)XvmǽC)J:^3zq-&KR yYu='*[:?ƚ`s܄*cAC,-z@*kd.4 ~.ByĶhԂM.?RA5@UT>or@ {bDPz /]NW>{5:!B8|";L&SrAA'&&nU,((=2f/Xg=җn1c֮][D'n m) );5 oT+{+֝Umb{dZuISd=HŒj~޽{W۷EnnnsUUK.ӧO#!)cǎ>e޼y=e!2av]P*&|" ܫmnw}U+ş]61Ȉ`Vm戸DPسgϚ~MB}YQ~8|O?j-֮]{o`ʔ)F#sxgYLx.#ljQ. Cl-nu{_؎Uѩx[~"'~0`@m%M|Ȑ!wa֭[W~7իW跑#G1uT]v箷vNΌ `?>ޣ2B< wV"5ؽ)fI}(SRe;%3'EeV$8TE|?vܹa۷oߧO6m]wKqYcyw{$=zϚ5o߾%M;'j9e,2"ɟ#wڏ*5oЛ ~.y˝`mW)ikImf-дH5><~7ΚjRRرcAҷo߾9eʔuǏ(!.]͐!CQ5oFѥ^y U/î$&*I>@ Pp[#mU8.! )H|AU6-kT,1Ti3EUDYk`KZSb j=. \rOAUS. xEr_nҿ= Q&f~J^Kȓ-g?6B͔)Sv6lvOҹ {ĘMAn6lذK.F>Ί_A}cJBn$5U=V5mn%mMqV9lU}f\mfU3f͢UblEMESͬMS*0 %Ѝ@0h=~ uz _Ч~[zjqܷS 8yxf]:fA9;>j~]8|0yзlSDϝ;7 ߿i*O?BY1pa.[d6t:=zk78P>EH(1ni4B RGaxUauTUM֭jV-AشxŮ%QZfV4b4ŢB0)&fn a ]A zA^+ O,RzE;qB3cqd{Y9{̣NA VBoNYj~Q&;vl^ҲeˮƖ '4&?2zիW|;P!c% ^$C2@G>RB!a< )@X8~7[)frǭ4DUx<5caa͞={_iZ)B:r[Ony3 zO:8!/%cAx_Wɣ%uJz"c&5W\Gv vOΪsYQg 7$0Pli$ܽfJ" 8C"J+B$ZAM߽Y=6-8rnmt󘘘u'nku̘1 èkVnFkޥE#H1$-8K 'VEPU떔vbaԶjժg):thln!?" XbrՇXL>:M2m\^;%ƮHE|  .ʨ]>jR\qw}ޞ={R%*B: m޼9wƌzӁaGܳEהR$x<#B9 lӐ{ n*y뭷n4iRTShMtsxV]GhBG4U[U[J!:!eGЦӒ*A@AJPw?w59ݻw{Q&@:r֭y * m?S;/BtN_)$B ҡ*(jc2$k J 3M4mPTۄ$rV4ir-2Lב GY'O.5j3---3\xNyy_ɓ'o)))&0clٲhUUU;g̘.::{JOdG=/Hhtt;un{&_ԣGÌkDʯDA PJpYg}W467 >p$I(V3"hB$R@Ǐ/ݾ}v)cٳgǤIv՚Juf) mvv)v=0eʔ eu +555%s%!!s8">&< sL͛W?|>cGZ@'кu#\D3݇#Y&0 ]J)WZHI>" _~W\6X"8L#7vH"X, _y]{HI'==3{M&~=\B" E"e#t wd"  V NRoDp`Fi(a v"e$Y! E`ڦx,NDf1ؑVYBK+ _=w@m9%cC44+p$%IOmfƮؐK+DK='!.G&2I89>f}IENDB`distrobox-1.8.1.2/docs/assets/png/distros/redhat-distrobox.png000066400000000000000000000360141474517124600244120ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME 3Q=+ IDATxwSևߓ2J@i*E*TbT ! ETzA.D Uzg(3':5IYQf2>{k                                D!(8R6(Px=8}$igmJ5GԳ@qd2 lENi6[r3gW *m@5rv`# G@8[dlu!6z偘\ Hi+uRRT]{qt~~(- Q-&S"9Y, !;i*%*0*VMnPhѓ\vC GO>d+^,ަT,ꋶ=&pZ`0p핁2OO6%Dt{LFz] ~|+}՚juQQmT^΍T ]i;.!NX[8@д#6nM+R퀉@f}|Cs ":.8n-K8Y ,NlQ> ;e ¡?u~DӖٔJ(i(ЋK(ǰTy6#] 򹠀>lNyȰ;VaXeDB%6)]GF#$ HzkUX9 8qm&9-n0䉾"8!8` nw/RSHVNWFX]_iSmJpSPo,Q(wM(Z9f+:q2aKP]f x[*`T |3.֯9[YFC`M&` *%tbVv 7!xw< z X:> -]D'VNltPȅq0fh7":$5F+`A ȸEBD'Ab9Bި̳C VV9k%䝲DoflP,DBY!#\ʉ4w! ]"#\G|Dq512MWy4A B"@o2yk$!PnT%. rAE":WrLH3%d4? 2":WBׯ@~JeJ+SٵKC*"#O|HFB3qy,Kq:m2BFDGt{DtDt N2.BQ6udq]7! B`&ƴ}"h$VDu +:)(U{ $QNqfӀ{ְBs-PQD'܌$3#6j8xn" + J}hA PEDt1v0 JNWq3PD'قM.-f¦N8ŀ2߅6{\\X`(u=FEA(l*m=.¤}u؊Γ <.s]1Rt f&w؊N tTҽS,ʢ!3\E~9^`# rNt"""L@P[I@!(Tv$ \.W1FQd Fc23CW؉R*p1`$#u 4p 4oX;BQUo`.B ,:'~tB҇?ItJct{n` QDtDt|.E{b!S \cM ьsVW:.pԵ@ǫXe,!0D'd+ #bF-(eX߱;S@e&vRY ІALyHid+ qSӢmJehZ JH (](qF%(k Μo,WM0+7$סTy`?D8VJzWxȣ !=mT rއNdDhnpk9k:˿L/>"PG GsivX Mh&c 3Exΰ;EUs:o)`h!j%d4{,@52a S6SB&Ej|׃DL-d>"2!MYN@+Q1p/KQ<"SwK050hAgkt 3,NI_|@ *dDGtLt$OX[ZT~s` ַtIT/eGH_.*n7 hi aџ 2ؒ'P ɑء,Fql(|8 )F7b08DxC"mkN{[e+{Uf@GqrNB//;<7b$T` `VAb=|4 |Šl29[,M.5FF6dm-CL'0">ai|myu=h^!r*/\ yKmS~Y8j@|GK?n״4;,FKtP_k4XO^ )(DZ ip2^Ҵ!DM%rծٍMW ?wN`.8Dx=.v8 q6.` y̋nc""=A}j%8 U|ί@Y=/ |Rۡe1r/& ,O IbnU!+B13(_YȜ LABpu6`tZ#4mgl)):0h/5 ,`|Ȩq% VS&E!߇̏!&'c]HLU6]/{[@gNg0H֧- GhFZ1.p@˩xco²t)petP eĭ #P`AUSH FBp$G<5XyW YDuvp za6lx):&׍2џ+zԪP]ĘbYS c.=X:$a$~hh-"[x/S _tԅ؂MRi+gr18*65WS?Xi.B~)3URRyl`ZaK (2\S< G=kCF! y8rJzD#OQ@,D>ڇ`zReTp!-޶kZI-3S>*| LA 1!7*. :9pϱQːձC3Af.X \ʝ f=lUܫXk1HZ\h}-L8Q0) |o VvX]Z~b9ݖMf;4YRҴݮLp7mqBӷo_j֬je׮]L>ի} X^""b7&? O-=49 1)H9T1c;vdɋ7Yh>h1 x g61wHBnp,u*%S#FеkWTttA͛InG[sSOksAVw-4Ν;ӧO5k|O5feֳ%#Y8Lt{+.:F`zd I]c˚:"k楗^'...odL7ϲ< <(`/pj)0i7AwBrɰ+շo_l6,Gr2+>[+ tpQ X#m.7i| \.pOc/D J+\(ٓaÆQb,6yQ9zoMc̸q76 s@ lMt}0. '`Y gfCɿ1lehJ=z4M4joMؼNe̬YY>-#ϧlDWk"Ю,Ηʕ+[oѺukJ(QJKcӊ7v,s֭0b>U]j_t4-ƈ["C rShQ ?NŊ Zv~)cFdcRUWxxfDE9Dk&ExHŃ3SRXj Ƃ]"Iwo ,'g|GZn"1Ʊ5݂y]Y"^*Pg":Z!Aʐ% Rwc :qp !eOr-+sgGmoOBWEC`>)Wx `rB; QI+ȯAz6aÆ >x Ru/[Q`͚,wm\BC_1@8+<1D%s.Y?~lI@2 qʔ)kFn(V,?#Gl߾,;3.o±MŦTZ$ .4$u^ L {fȐ!TT)Źx~ggϫuړO'm`Db1v OeYn…م:h JG"Nz q3SuΑ:诼 nY3[ᙩ޺ϦMcҌF*4@O-GGkddfaH B/1(eE-ק];-".N8lY+Vd@O&ٞ*_v(#'ŧQ-^L /M]+SF d3ǏW?^c3v{L "bhs)4mF 1#b+1z}%?4oϙ-CdllH˙#GȴۉTkt4U7Νu\//Q*.At}ia;F_>Z1ϸW/bK q8w|‹]0/({5,Qϸa9uջw_Y12\i ucc5RSor{~(H+u0iҮIKL$Trh>>$d?2O-x㣏(]j_ߕUx'&"x b(ua7J{ 8!٢c9%oO>I |$wg6m̚+8p} =(]z->[2kTR jۖ>{s=`89s4p`U WxGt g0*e%dJZ0Y /0dLAOOٳ߷;v_Y?wUkVcUh#,+~rl/MN݉m~r9z4ϾFϛ t0\߁&kS* d7-[u6Zu^+^JGDՊ)-)p*ԩs aO?1טyҤ/iCwޡb͚~ݴDΛǐ~8pd1*R:%a7"s4@cY6U0l>@ȓboiY1͊}4[q45jĢKtt<\̞֭6 |pY[ּؿ?k:6.]ʻ/7;wou-4u/v?fYv,v*X&0b[+%?W?n+/*вwoz++V$X14RL.zz1dҤFIDATv'I8~qbŊ[oѪcG.߻z53ƌay: Ni"fb״R( x94dzxk-M'|Æy~$Ƞ~zTkؐbebn>oE?bW-)LĘiؕDh^ٓG 60pJޫgWWY4ZlLnXOR;2ƎG!.ғ\|=e 6+j7qG},??NM}sV-X_'|nwȮiEQEYzXh|~}--[b_g?O>y+٘1<6x0Z~)uUw&#-Ƥwa~>A%m7N(d/0` p^&M3y2U4kkKܑ~Hc/y1]3s&1n^ !X?0aeY6fM08o߿S^b%*ŐQRp3׹aCFOp,!|=F1㨇E Q6c4E]uFf3Lݏ<ݠ|T&MNK^jL2w.eeFO^3{1"$r_lM{YCI`ؽƌ7z4i}F=zTT[7@|<'aCr+O=[_|?OF)uI\Cj4`,^g6{95bȑ9r$h*9>}Ԫ0 N Yp!#GpLV+j׾߄`Mhs@`,AV㏬;Vxxnh:V&G\A9sZVf drn>,8ҮMTbci[exU(:w;5aՋo}{srk &ePC>aKMU6RlF&s{>GeIJx|@#x'鯿ҲC|9opĎ7`7g>ý?իyahX*jL1 ^T_W? _-[Ҁ56Mل =x?c̛6S$ޡA~=|BM]-vvlevSeIH=0ӿ'M=O L5Y9w.BRSxqc|6Ϳ1_r(f/_N#iX?s@, *.{_|_g;~s~ Of?rٷq#>ww`fI`Νt}bm6^sؔJhͿ#G*†R*쫯ӟ3 ӮU+у?]ƌ7'[=իeҩo_^'yO?ͮ5k]x8aݽzL&x ~ڼÇSEtr/>' nAOL\x#N巵k{A^I&͛GM>p ۿ9{ݷȏ?βiNyF ~^W?k[AOzz Cz_2:!=&6䝥Kxq|f<0𣏸ۙ?u*g^Gr2fo^IܦyR8ccN;L\ R)vMn("v/a[iDҬ}{6hs9d-tI1dn d ||L Fѡ{wVTD' x/-!KѲeڿ?-7YxwtN">s%w/ٓ"ayG*z+90Wmmy)$oؐNJE|VB#͇Y1>>o=`GD;Z8߇NBh&u,aŗ_ҺJB^wz+Wr[́gtZx\.'Ry ` K}Z~dl,v_}֛+7TуWq0\R^D' (x~k :y]0}\2B[y];v %+-SMx(e_إ ֯ӹmDtچ2M{'I8,6&%=ƒQ~}^y].]Sw巷P3ָ1%8Dt RxnM$&PQs\j9_x}{[xsL ۴ay0u*-Vk/W&0맟hޱ#ָ$SXlCOCƁ\P#yٳ>@;X1?<irc>^0g~b:H~uߢi1%w։#ˠ}{Ͽ;snj~te5~<ׯO22yH4χ3H>u@\z?Tn,dN_1^CZmDwI>4O.I}ǘ^H-`]V[^к2H|t=8 ,tDHe-< ¢it>q}G0ttbJ.˅{UfM!`, ;1c+B0GDu@,@WwD+ŀٳ-hq6 Eat `8v OfNw`|!n$#\|r`O5m(J܂qLaT~cҥ1r$uVzXUF8ݛJI LR<ޯ) C\J`]ӊT5u y7LW%vd.{8t#pcf̤F4!Dk_|1$Etsz{\RS1(U@i; l]WݧsSOQ#J7LR'&4EDxZN8OJˆdgo*P5@U:lNZ)Vł>hgwS FI&m۶%V:ԪUޟ\[bbSNUVH]Qɴλ]Q(+>1bD^ku$Q5Xi@p 6LV͛*W]s5zZZږ-[IMM 222TzyÑpB{n~j-BDGOM{㽮u9By׬8-#ͱ^sĉE&T9qĺÇ\r[o99lx2׬Yo߾elR-+#kv l6NI]k TZFbL&Sd2e"B7o~݁fײe4mڴQNG)\K6ׯQFrHNV^QɞGn;߿4bѿ{{֭oNŋ'1-[\kט1cS,YfA8|VZۿ5罤qԶm,K꺞uV>6nxiF=ǎk+Ϡ Ѻur߸q߿#MӮVM?z_~9?yԫWĉO6o޼luտϤeŕ k=x஻ᄏɁ3fA1LWr\lm'SS:ti ɍJ \.WZz2\:qwF](8F7dȐfsi7ߌ?yG}􆘘k}|!(6<֭[;kulZdÇG#N 6:R$7ӭ[S[n6|2KlG$āKW,YRI&70qhW_}K/Z9._F ŋ~uԩi/t{(Lq,ƙǕp:oƦs%O8W|ٳ'r8GZڞ~,7ױk׮RRR;˕䳤clA](u?_{&}֨Q#e޼yۜNgra]wݵ:))o l߾}7wgYđ 󥋲m۶ɉiZ@g޽^zBRwuW v꺮x<Դ"8ݺuKg#WFb0Z+_4kժe_vnNw6n8ZC>|xRJ/H t]w]vsFN]sŨF)A [ǏٳgOnܒl.S 1c~˕F9rdw>}i}zȴ0jdɒ7|s_BB^.СCwK0%99yG8NRRɓ']t,>7H"RPIeddӥرcǾ&M 򢓙yjٲeW~._V`'J *T8v}Er~cիW?ʢzm7h`o6׭˸ =V` \4M=z.?7 1q8q/ddsi(T-(Œ9f̘-IIIg s褥%O:Oɔ͵1J֕( p'6.W҂ v9Γ":Wu,_Fsp;HDG[,]t9q'UD矸cΝ;~9`7/aO)`]гw޻;vL)ƢNHH84jԨ}%b.!F{A.&0+'^t qڴiMt~嗻1eu=`%FgWAу}Svf͚g/^3333#Evg^z{&MNZ]D?AWt͛7 AWM#5˂P&cxrxĈVJBAtΜ9w=8yL`6PY z%%~RSSO8Ujl}5"{,9&;u&YdvIt<OʦMq9xCSi X,{w={vNaѣGvm{,`,RF 9y1bOBB¾@CX]P]n .F.OdsM79fϞ5==HaNff lW^r6րYn V.lpn;vlA)ߝ:u:I[@o.)BQxȮhgРA߯Ǐ?+!4`"pNA*M ט1cv;w̕>=555al6[]l B{Z˗Oꫯ;δKDGυ藔p,Zh]Ŋr'qA "0N8ڴisjӦMذaΒ%K(50Jhr*(>|/9Xn _-F m QB#'c<0rd|%6N3 Wf%eh&)BN0 8Ǒ Qlܮ ^0BI]y]5ޟہ=_t*A<,,1;]IENDB`distrobox-1.8.1.2/docs/assets/png/distros/rocky-distrobox.png000066400000000000000000000351051474517124600242720ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIME6 Q IDATxyXTea}QpWTܗrT0Js)m52w4Keiҗin@.X(03P>3 }]^Wp̻\J&ՈZ낮 ;-f3J3ɾba`ME+5 %9ؾLB!H}m{1`ϣh7AwOEB!1YraxɂS&C#Il~NKEB!'0P9^ PB2y0͊tjb)d:&%i,*N SW50 :T 5T0,hz'79$֢q8IǠ=tVs6J;%`JJwC1RifgHkt#bS&RicT$!Swa*8_ (y QCҩ\G)gTD8R{=* N8@`@c7D``/IEAOZm`4=VV=:H F#[B-I|HZ1)D|A!s$Pp[V3PpM&0Pxc>c$=G5uEhD7E! w<"qլ~bIxpp?QDK0 5C׸1ĮL!&&BO9-!Xj,ܩ=9$U g6c sPsmNA3H:SfS +C[UX9ugk64a&<~ݷNa^jF-?0PEOd sܖۖQL¾rvCq<[=/pLIp NC+N;hQ 59sz0IMZ[[4*hWK(8ucN uCl =D ,.cө} g;&阊pf3e4E3Cycav"jJkHҩe-5:@wxcYTԦfH@Re&tn,ScX0 R{bI'0P,d4vGhZ(t]xxcgGz;:Xl^lF8/l7 xg#C|1قĻs"r?& C%/JSOktVВAdy("N!ZA= 3DҩGԓteԔORRJ*( VB! n:6s *LV:N݅_4}~[4ҫ 4y\gMN(gAT[L-2=݅w0 A&Qǣ ^?p? zh,3:9JCdH8w\`&sD:NA`8J /N*A9l-DIHXUANN݄j|zrPt,@jap0A"56ґ,$Ѩ ^8F:ο "-q@B5/ґ<A=ҰS_=﯊f@FG!xgϿ]s"$6֘H!dqsTQmH#FZ|#pi BgG:.:'jG+H1gJ6C&DtYp&!KxbE::u8A H瘨tҰh Pu8i A,oQKJ& G^/i C < }#3A< ٛ^ޢ$sH0  .@&s>f-HG0H>&Z;iXJ02T|t ПCf~f^qè#āD*v^6ҫD<K`G5H NBbԥ"4vuO7H'׊=O!Me#)9Yf^1#F8} _)+xO TMTpH < ƝbĤA틄CP,P3|ɔ~)<22rtttzgϞ N>r}Lϸ&">lPSůq 3Ohܦw_9۷oO~饗mmm[æM/=$$ /{?3oF衱ElJM+*5BьSRtĤ#G6Zv4hP/"':ʞcSf0E9,ANMXs.#GL3gNJ6m0={|Z7nlTZeBJO5R3edrU^|184R4FN|i,#?%:g,[v߾}YYYT$I?sLG}Tn`bWX5ws_ͤҫQeNi-V')XAo!իWyIֿN( =zt Roڴ,*ܙ!gqH)/OS.PF y^8ŀn'cɓMQ_7`mmmowIII h| sGː ҷ/tS)h !0<иţFѶKfU }}}/^f͚uYk7=f̘說pnd/݉+u;-S7`F V!{0qZ!~Ua( EK3^^^Y֭KӧJ4f9t'N$̝;ӥpzSj^ w3=p^$888,X;靖Wg'o߾=a̙-233mJְp+벿e/[pN) dST E3RVpc|ر1W\>}zظ3]DDĽiӦ[YYrh79#ksN8e@c ©`c4.ZZ'x VXNs͛qcƌѝ:} =ݛfسPyDLF:*? z̰Y (- 3g׮]/^ܹs#SNq$hժUPÿmݡm%?u y7#{St EiF&SpQpL!)#iXٌ,tJB'{wf0;;;n$qFQqQg;2>Pé_` }$SN7mIzknYߣh}I};64hP}RfYV;va%;+s]6N3z?<ӎtu$S8n2 ~=iKOt钲|^zAiIe9;{\Zx({3}"(|4 0Rz \vQ7?6˗/6lX}w-_Sz9҇,Lt UV?ҸR߁D#ݴ^>}zٳk׮]0RO;0g2URCX+A TpNFr9ݎ?̒Ϛs`_L>=ֵ("IyO2m Ke : ,ng`#I8߯BSrm%s՗ٝZɧ?0o޼汱EЗ#Aațy WH8/Ԣ|$ҡ%;[cMx>&55FIvhT*ko7V*QK `xWqʕYu D PACJ $"{n;o/_  UhRG)۶mmߡCϽ{FTZ...K,iygذaKy Ec=LDI{ ᝂE>)phи"H2O@=Ri/Z z D6yyyIj777{Ƙ^ YO8qsō>xo?hTtӧO'6VRRg)Nd-YVIR}h#sŁ% N/?A1K8ڬ{W\e˖k&L׺ukڵkZ`A|bbb'?:::rĉ={pE%WRi,::pÆ QҩEͫeH(8ug1hDn1}DfXpJ䜧KY/_V9rf6(a[3gΜW^yZww>uTp0Y?!C4SVXq?*uL@B##8{"HI(XשJ(Ε@d͛7N<)?~NHH=x_DDD^75Mƞ={bg͚uWN͛>m4w6 0jڶ 7?'rP/+X, <[F±|@v\);֬^Cӵ^]'O, ¬BCC]9bRQRdZ}3;;[T&M;nN:ԩSZ9=pȵk5mԍ12D&޽`ܸq ^Plu ^t#אpGw/9?4sWi<=|mR:wvvΘ9s駟Nԩ}NNF5Ȣ;w^1bݻw#W\i7cc~~~YK֭R4Ȣ\Ir~ɓ']vͭMF!q3f!9h>/N}*7-57҅o''֔)ST]vU7lPV]999ƌܵk#SLj*OBQf49/o/.'7ځ!9bcc :4{M pr-- Sadn==FT|,8xU:o3gR\]][UrlllLm,H\|-[ٳgOkn9f8m?x h<װ?5 C* UMJra@8::IFJcVO>>AAA %IG KVPKbgR"Ke TX}#"nүWóEՃ]}L}c<5{Brgׯ_Ś5k_p(6dheY.//㬶KގJ޳gՒx.~,^։R*J}yuӹ|rUjkw#bkv$奣^zpwqB4cL֫W &PMqqqqq;s>lذ؝;w& <ťÝ;w.]doN׉r,I$ $ZiZjm8r(=gD=h MguW_iذʕ+cܦK.i;vӲev?wWt2̻ÊJ! =탃]wI=GMŒد>q#r̦~Zm4h`3q~97gk^sBU 7?۷oo߾z櫯tըEzxxxU>eU`}J(24ekUF–_G_9n'Ugɉ޼yst׮]\0YԹs_زeM۶mcU^Iyqv6gl c V* _g7zP' _:Kt-[ڽ^qqqj=\6ڵW; ^0)W^wSC+\>qD'H>v;QQQNٹW0 [`I8$ꄁ~c|1qG E5~v;z>}{wMzzիWi޼yo>l6mWׯ__QF uHd. nkpdێ6K__4.Z}zm"=;_/),,ؽ{wDǎgΜ饏qww;w ޽{{ARXY(M ¡Ac`gmcaw_B٠; nǢ?lV\N_.-޽kW娍1ʕ+co޼>bokkk,KVr߂/Cc)Tt߃ϳز+h3rt0Jaݠt|ܸqӧOߢE61.c܊cpH8Ɠbmr:#4^hFNR=z믿v`*1mH>C©RԜe}Ym~?4֡?k 'N׷ &(o hB#Spy]Φ^2~53V-Wt&M5a„ζnZ94;;h-.7e|ޠVN[ ٓ;Q>ިQg-j׮],}z >@&TRUq+8}Ͱc-GpPzhjٲeZHHH͛VZ5f͡.si4Y(0}>S3.`Q8~e__i;wik׭[W~se۷Rt3z̪2`% SUig#»o[ƩvG;h?f,xVH5gΜ?~| {{&XpǑ*^kP3G,]O.\)[^+f-ĹP4׵֣59֬YӤA͹>N:u̇0hи4VT>q*&LBPKNߡ^ӢvvB){}H/fqIx ?"ORa{St?/[wa)HJ3i*ZcI~{3XL]53Ϗf #l(©{TVV1a}n&|4I)F6mۖ;vz0P-oIp&ʞѢAcP,e#™FO:z+Ϧ$x-T QZaXGn &|<T@$_KH8$"-'J}*ڞg&ln#Z-(-d5B$H8~L+,;y8|-Z歽ѱm{k ލ`w_y\`;~0sLpÔJiEG)C<~ 8,0&jq_7O\;CX=gnM{0WYSgX)T~^cעE{>>>.M6ernn={)S+_5mԨQ6mJhӦ I&@c8XYY߿?!ֶO{;wJ9rO?f9uԵI&y^|EUcnPx1 }||B ѣGs.߾}֒%K}JC)Qwޅ={֏ƘԳgO#---̙3YN:lٲ҇tH8w׷^tttP*}S-,,L:tP(/_lدK.7nwuu!?$aAܹsj޽FGG%X⨿),˹W\I;v, {|܆6e^^^PYo bccӧntt_?[bSvfY䛸;s۶m[Džұck֬IiP(lq$Qy|d7[7::-]ʌ3 `_߅ Rپ}{K/dokk^JI8cF}t=nAfnVkp/^5k,/Ba_&$$'$&&>9rdC[[[}?X"tC7+++M˖-:teͪvud cH:Rtm:=m7O!#'poj5^{?k#)5٤ʧwΝVt-_~JE.]]tH8^Y)d$N\:ossB1\T3?݉j{{ۻwVԫy{{sDDDsKҩfh b:yg_}9chPVX8yo*^xaaa7x5\VVVtpphi ulٲZYA͸z#,,FyS,[og-w4j7Boz=ѻ/zq߿snͮI޷k999XjUҤIpuu-M*+++ιtܹ+#FPl֬~{[eՠjqqq'O֭[ǧ9@]DS*m!;DTm@PO=S6ޝ9ox ^u.RRR2>UVyIpxu޾uIOOrQdd$7onUe암T @Gҡ|,_׎^"`R7nĎ3>}ګOYtZI&9EDD8^p3R*`;i|dpaR/E8|8:1E֭~wG&x{{Y9^v-k׮Y~~~JIc eok=t~}0}6$Y(J7__zϟްaC EHSNСC .4+y>"5] 09* #d84;B%*9fbZmkNU^^^͛oM4,68 J_\ZWdmD u?Tkص-]%G[{/1tи9s4 +kJ>G~Pj(IҩĘKMf?{84 (} i?bĈYf%tԩ u,y͛7cV\i&2^_-WZL-zq<,6e{q*PK1( PK}[}QzՆiґRRRׯ_?~#~V!V/W7!阒= Q\DBm|zW=$꫸^{ޠojسgσ#GzqG@(9UH:&HSmr @?T*" !=:% SX?Kt*[jz{nR#"Q:$9s&z֬YO>]Q H:H`91 `4BO8~J.jJx wP4YxŐ!CϟCtƌ)Iߺuŋnڤ dX `*#B1A C?!0>=`'p G2_cp`.1"*1E1qܸqٞ͠sūS:iiil٢>}'U)/`!}?IǬ Q쌧,͂%,2c.uΡxԫh&w͉CUV-sNaaafϞ]֭[v}h‡N?H:Ŀ9&*] ox 5 s\uAq( D*֥})ׯtbT*A:,\|9}вI:( Ϡ =88GT! qC$ g[E(ZQ[W^mݼyzGƒN|||~}Veu/|#( I&spUDP̝3s7js70p.mFѴ_Y(Z^3pe 6,A~8Rd&'*Tc O.4ђi`7E1vĉ)I'++ƍDQlSs%{P4A )GEK׺u낭[^˻yi|_dddy/5M޽{/v1Ak02V^ARеkפ3gHnlȲ}ҥC I,KHk^0]S2:4cƌhιdݻGEтҮ ` Ta>4 E3;%vp[[[ҥKgddreHGI^~UD`?vq\0g)+W^֎;>&yDZZg7n\qѸ AX*m+K~~~I.\eYGW:AAAsIe͵k.1^9mb ,W+d&Z-Ϙ1#ᄏ3W:u[n]ļy2^`=T-aE{IB@5or@w i3*A5Q&PI0=7AQg(Z#/uThc*^ J({_YS'z5AC'^^pPT HHQq,!$ /Nu0zHE# J J"RIENDB`distrobox-1.8.1.2/docs/assets/png/distros/ubuntu-distrobox.png000066400000000000000000000535661474517124600245000ustar00rootroot00000000000000PNG  IHDR1j{iCCPICC profile(}=H@_S" JqP,.Z"TB&~AQp-8XupqU?@\]]%1ݽ;@fu^1άWFf0 3˘<=||,s5k1'2ìoOmV !VUsQ.Hu7y2SyocYԈ'#SvYY+UYuCcK BAEPAV IڏyÎ_"B"9Pnĸ/1 vFͶmq+/ׁOk--rn-M.w'C6eGr9)kno}>)*q#y^xwW{oi!rbKGDC pHYs B(xtIMEpvۃ IDATx]u|TewKݡ8$kBqÃR(Eԁ"mqw)N HBܓ;Z%$k{޹s9ܙs> @O@{ I /TkuB e0)2|ʼnDeyN_% n7p(DM$Jx"^w<%F: E@Yz}5TAZeX-H$'CyԤuC(#+Bl;Oy&A]P@%bxP<wܥU^ph\{t̄@7ϡ.I@]c F2``$DtqvjQ 52L*F(wzq#bÐO< tq#(iY1 ~cL,t\gޔnT$[ Qa2< #h B?PI&).0M {yPPPIbl$20)^MD@:SZ3[\Rגb@aq0B $b@(X@C&F:E' ro BqBܡ,H*q' )TD P5NG8XCȁ#@ &b( ։ &F:fGl;OyᇂNǀ,Ⱥt[AjM) ZgSHS̤r]p"23f)["ujZWjzWL-JIOfS@< vu(w@=fR P"0Mx$,/wsE+F{3ѝJȔZA4g&Ő\?ν'|u]u;E9/lu4.*A J!/8`_5x}NfR!O%t 2ݶ yA 0b¡-?gkRR|L!Wut]Q\:hhZTIۭ><`3)6b>Nn\]_PN rH vk91iV}5L,"#Ã鼁;I1byuNT$QJ[D{tD* 3sbz kl8{9<ӦIZ B޸Pl=Q$>*q',*@r u5\(9餱]bMNXsfF $ʎqH*,jb6ЦH'<ȣ:62bȗʝ TX_$.*UɒPi{- .ďUޗУdT9ڸIW ׂg([iK6 (C(0?qd_f> Jp,OkvT3+&]!н$8'78@8D "Wfz+6;|fti%.)hS^_xQYePc'wXpld!S- s_:pZM$k@\De*B\D%ʙliE(QD܇:61JKS⋺:8J{9 uOTN1@cfZBׄfSU Io~2!.vk>3' ~|TţH>9ʚg4 KWޱ21+`ɸyC0`W 83Ue#i\ۜY?B޸VzD>38h4ztN21 Deaߢd!K o+(o*Q=Q\ÖkuPuIɠӁw}ov9yZ=CP^d5_-n*UmȅWa6;F &0 a0[t/Gk [9X3IGˇZ Rj7Ok;$ I^@c#c/uFUGQrQ8[vQ-őp@zj"$c M7H΋@GW|h¸ maWKbgըlDHq?WڨQ =9&Cyf̀O?-@MfmT(^~|V-pVu!L'}󮶡Ч%BfO괐hb}JeOmQ|ɮ~j5J0Vȧp"!(oq<Ș"u ~ƽ^ԝn6S{?²ku ґ hpH*Eɐpjm>q6@y'c&4ϱN"jDST.=![j5 |B/txѢiw`e+ Z18)!ҊB!ϟt }JL@phۧ@GJ*Uf孋B8= FE!ѷN[ W} 2pDbx>.58#AuA1\"6)sNY@8]3| QC84'Bw)n0bx~9_QN5F46A*'dQofP말}T.AI{^ŽTy`Avs>1fb;kN;KDG 0#nj͐7 65/Fw iI<{]s➃j5ـ^% _CܼOYaow8II',((m˄9xLf]~}aJo&@3j98w$Hiker`~YE n#é\[2Q#޻ OW8=j}ڸGA}zLY[9=8{Gpr'% ,giJ~'$~7);r~ s@ LF8=) erƧ^yЄ߇\:>t1K8JطꫣC\&h\rl?(n_ fc iQLί o_n>-%^ o ] ; 9ѧ$ 1d_9f'îj#A("R/eN`$=q*YPڨߘ_A[%0[$~lrS2Y#N(o]o -.1S:B63_%%}$0*)NQR %Wü{#_Sj|=yj -)?BRwc=- c~ :c< (, CZ٧DJ*XPJRF\5>S!Ҫ$+\//Z8<ʗ?m&NДp7 A,2TeT< WCT,D^e>ECu"3 Ô'g֢}LeI$KڄOnnj` q 3qm]SXm}?̷'ǴNurAnu M:bF|g.sAcH봴)S;VȦV C(.(Hw[A "@iB/g@҆/CC>y_W^!VV4)NtX% TBP=j . ϙ?XMI]b F4a߸ |h2`)Dnh!VȾ|j,~lG#rhW[l%8v*%/|Vc7 ?Y8~< 2mP=+G Tm˲SY "YR$m &괌e>[tZ$}ovU@ew6boT^?k'[NBy&b$ku `sՇtYĬ B/r6QO/Wt\=*ThUⲕ̾ª`oP= SfSPB7'Vxt(m.#c#fۖ2k" 1{%L(W=o{Id[CﰢV孳Є7bMhIM@(y7_Ȭ ׼EZ#;yN()в$ o̶X̳2 Bd2lqΐikb.xQn}n9p.CUD̄>%0c$OZm oYj­qRe#~n޳mIe"6.N pԁ}jq=X(oE=P^?epSSt[s|yIb=X!ţ {3xJ:D}3[}^'"uH?#* yˀ&y$]|T/3˶b(\>=GWN{ YMUFeŦ|·mpC)[!a=!S:7isYtQn3k,q9"B_+OP7Kep6SI*օIs!(o1ڼ'9+qf*4̚N%x),q.!h擔 ϙ[ܘeV<̚Tw/m.Q _[tHkK)0-wRDz׍sP D:f\$DelKox:0C$R["wRI}a\09,Ȗz:.}&BYbOB(F.uLſ(5*⢘%!h@uy;6TI(]NY\v~*'TmTY0a5i7|[+~947;Z}hH':Yq.|ީݖD+|YaQμW uPm]m]R,"I:/6٦<,XHZ1qt%jo!vX@Z QgSnf0=8Z }2^8>^v>9ަd+JB9yMO՛H:|XpIg\DI'1&Sx:D(ZيU:!U]Ul|V:27mӉ9JfK:!,xU1-c`x  G<kl /wʵxWaV)e\Bd r=N qX 6^@PW[as,ש` E i9BfgZkU?NPp1("#Toă6&D׮aξy("c:24"y:ȇV'ISத17mjӘvD ֶ귅av$^ڌl թX 'K&ľUBTA9 H,_IDžNQ%f+y<\m3UӪ54V#+gwi&*/Tx3 .z֓>նD6I7 >:z!^B]j1#$ڒh{392<sg#m&˻yCu\(aPHb%Y  4baS E9Nݱ {v!ym >̒D˃v2Z ځ K:fZU-V3uRhs΃ef IDAT/iQ撔,A\|T0kBI|M:̞(oE/N eۊ<e>u%!Uc>/3]"٬mˑ~'ͧ~r >rr1F:Et62X mV$YFC"mϣ{/gȳůIGHk63ڼ 5I̚8{gV4|6?DRM_C2nd-H~VENnP1nGbٗ3rHk77FM=hy YWbO ?!4P>\ϗJ\S@eZɸO\e]IJ3<;hB/`c;ֽ>qU[Đ̺Su/m4Xlgk֕ C#w;+p ƒ7(P˖ͩH e8>#>Ɗ[& v2m?~uulz0dXTT HGˮtu`N⢐w8>O"(H@mtP A3B89yWdά oͨ[bѢEchۥ+]^o:hڡ:?Lτt+#B2r Y̑m|bKFu(\T­l#/ؽ{7:uI&H8%ܜjw~:-RGGnbe8~,ZXA)}>Pz֔- '[[:$t:OѣG\z5DZӧOlj1vWp'ʖpU2'R c.BZW {C)̤.0K"8wSO>̙3Ѹqcޝׯ=zŋ;w.*oϰ޷v|vN߇~->qL70N*k`-C(_^?Sd)>؈W[vIJmbb"v؁e˖!<<Iၥ }QYY(Cp_y;\^'괄nkf^Hk45x^ǵk0|pt .bܸqr ƍOOO2Ti3'/_Ŵ!8b=%&^MŕDf[wX6G:0n|C"C*my/o).!z!T4Yc3 1m;tڵ C Ν;sTPK.W_}ʕ+[$oSR"At U}JH|tՐrzrѥCw:-c cS_z_Կ%'֮]\;p@7jղ0[Ǐ"d|l9{FBrT PÉ `6<VB "Ӌ@)eJNlڴ 9תiڴ)֭[cCdLԣ>R 1""1ceSlR:-JɅpqL%ر:4A3\ -*&!'wL:F Ճˌ1 no2233o> :?sy___,XsE5 #B~kSGgO"IWxRAG.$twaȔ^=FYvif'Az1GжW0uT̝;qqq9>}:/_mTQ55FǏ wn\t Ov vRaN5: 8[‚g|dy>k@T%n/;c6nތ%K:wޘ0a֭ KJgN#dr|Xc{y 0W bӢ0ѓ'mJy-YFgBn\kcЧqXSn]`ҤI-v€ Q:A2zS>,~şjpdB؋^ɑVf_p'< vQj/H7MP!uwrROq;-x /8SNE>}Q^2ۖ-U+Kg'? vh-P)PVY\J~wDhb_sz'<~/v؉'bĈPB"&SSqmY>ousaocÂX;T9l:?sh@hwmY݆~ B4j~  'R9zDbZF>cL< 4X,}g&%"[w #uzWBɷ6U3߰ UjJ\;s G ȸփF0t?e&)Jm` BEàz`%1x кbɜxxx`ʕر#,IG;cɂ8&IPFBpRlcvI:~ΦI7| M *a#iYg@ym97Bzc [j)S7OĪ9wOы\JLT7#) 6ddwR]Ն^EkSU6^ o ]kס_C\:O>E ˁoӦMCÆ HĖ-[jժ\H GG5PNd%cX8vGףówXaRiЧ]0uȡkUp,%}?? <4 vNuQݻ_}BHٶfGPgյ!98w ѣGbŊchܸ1V\~ʸ:}hHԨ>e@Z=™7f 6,j**R;"45k@u ;{*nAQo4qqc*,ZO)#FqQG|D8~߸K֮Ë\&P` R 8cz3˙ Hk5]D>D8Tm2r? 1qqq"7QfM̚5 ڵ}c&^!?~[)'>|ʕ+w)S_~BAlY&MWHv(qyZ[8Y|n] ]" ;W7jY?ĴF*y }OKBȾr ggd򆁐5jqԩc2e F ___E)o##t ބ٣X?X`A6yafXa{vޅslΑBl[nc'CM!p30 D>%^&Q9 * oUHׄ]ƯB'`e]zL^^^5kzBQZ- Y߭ŽB:O8vU:=N~⛥K,&}F"nzr,܆5YWca*\>_V<0bC]KӒg*3Aof3yCUB("M2222OÆ _u֐J ~/k;ׯC#Jwՙ8kOYFsrሯMACbTvcZطnK+7/tNV,!O?ʕ+… oq-7p@?5j(p^ p|6oVRU։cXv-~w(הd3gի޽{q]t7 oIƁi&AT2vKu#$ӏƍ+Zjܹ3Cj۷o(妀;H>CCq*Suڴg^atx\}(ٳgcv*p|Y[r:P#I p%!(F 3 /.WmzۜإR[^H%0ydsvlk9.YbHx*e ~]bFI׫W/OmYb{!Ҁ`](]XùCB&ujhcW: Pn޺ GvfZcGeg*(?24J%N؎+cx.<ԕvӧO͛cNrbv2)a]:=ЩV^cbhӻ/~kX>m*~4jL&sP -ajKrv-}V&d_ԡ(['N‘30s \g.3zoZ_)tDn7N?OO;i<ޓckJ$hԭ6ً?BV[2U2i2׭;MV؏GQcpًB_ cchԄPp *\;8c i@fu{Ń ;q k >FIR!WN^1sz\/DN/3]8`ސ8tLsHh\EL G"jL d]F,]B4R~_i #lJY`Ԭp]cyn9}Am[CK"1:'O@`zX|n59w_&9TZ蓊~=(F+JY鈛?),zw3UzuL1vd)-1ɵ 'o媘2W._F;qz` ICBsNMWsfjM EUqtX{ 5nbҝӅ&r#U](@P)[!zRh_ʛgu~U}6#2MC$|=B!կ[޽{Qr@y?6@NqrP63}$Zx/{m^92 !i'Qn=豭q$_%Xס_x,-j#@&SN8|B ck43Ȝ-*KR]IC7J?gaASmyYev'g|2v>j~'\­{?!%aƀ>!}@у9$10.\Nf7mu+Sf,_MCxӭN O,X=*4ll5c)s -~h¸D}jvƈEKpu5.f-%~qLn<͸ƪH%<\:VMijO!a$]2w`)P1u/]QFٳg}B[ZGM6U*8vFT[bt*i)"LhY8 bvO P?n#MF'Nh?P&C~nn T4V>%e b{"MJ:-OCGy c`z_ u*DO³O#)Y;x*zTe#OY}4iSE䄏GƞSQΈf0;tSهZIDATxOsEROMM9}rjG/'Ŀ:5BR.*6)1='^us'7YTV k׮ѣ;v\.Dzeb1 ]ޘi캟R;w|u6ld5t~ˊVh1'7~_ $k@T:2QrdwթFmTQDBq꧷ -U>HCB `ĈW5s~a…prr2OX! n=,ߺ}zCΔUwBM:t\ XA(]b N.B=| pr+8{'D )>+ |ft%@UKi.^"C yn:d2̞=ˋ^#G4~ņpF:¬An(/)L&3{VwoD\eB H$€˖-T*_||혫Ub5j+3vI`+3mJg B۷ooʕ+R,r (^>_ J C~Wf:=z]^ۗ_~CeEOI' !__Zk_ t{yϙ8q"~Gb`] egӹsv/Ο?p!88۶m{M<'O֭[M?=,ح!(^IɊ~_{/_Qի'O"##9d2u seҔRvl7nƍov?:@*->m~(6/T*-mS4tId`M-Bhyz/A%HCjb"2(\rqJ5١Ctv.Aԝ8*T@vv6Ґa^㦄29 ӂ㊊ }y$UJ|(H/8 4^h{B>k'⃚5kڵkDVVd"..QQQx !@dC\N*FG*FQL @:FQJT*JD„g ӚnH&,a  ҥKU(BJ!t5ʰxovvv˗/euQXk8Nf Y8FJcxX5a,ډ7nf|m۶nnnϐH$ӧo4**qǎN7n(0#[]J怿3 @{N C5a/:I/_lժUgϞX9qĽ |lz^s{cǎ}vK ZΧ*;; iR C tw 111W6m^ ѣM4kPJÆ i֬Y۷o{~veQJ/kAܹbgGIlܾx?"x-/.EQR3un ̍6m}l8-uD |ʹH\SY]bu8C3g7(l17wtzlM/o/=y+W=u66 Ǧb=' [}HȊwV!^ǼK yT^me[(75E<7ױC[峨-NJJjٴiSеk ` ,غBFz=-=*I.gckyͷt\TU.ddXq&7H`0Tdff6zYjpjۯr,Eʖ~7woZUDlKƓu4S)'Mʹ8'DarRΝ;WZ1HS` I 0€dMUm `PW&ݖm|)#x!e?~ 3T^^^jժ1c ;up 6ۈ/-H{`ZJF.hBr@?{1?{y|{{XgϞ﫪j婩պrںO5jLi,55- pP7ԕyrC.WI6n %okkF:###{ʔ)Ƙ<Ks2j.EU@l .ĆnaK̈^Ī̱0Z!ԟ?eZO>&++˒g@vr 1Rf{h6INT6N~#Ym8 H|v)K^?hxcԽ2twyǸnݺXǜapn9,9=1 mk&QӢvf!~ͯ3{bxwmH*,\bҒ߽h&Ơ#o MEmpcCbH%?_O?±?ec2?;m4Cttvf+hέ,HV$bJ&%gkZca-V<9W<2].+tdAAAko߾v:I'H>htC_DlM&^kbW~ێA\B"?[#Bȧ'I ))q~o(5ұ'F /$35i&tzx 8gA3NÇWZ69cnv٩g5| !v4iT \+K>9n4qdܤ8 QU>;;f zs5d(Dі\:RQSz=6E@q?ѕpohx8O͡ ۰-^!z?n0MtqtZdDlF&v5Sdh۳T011jhtS[[{w߭ݰaÈzK}M^C# $ $b{h6qr;[h9r>!!!ܹCzt 7%ׯ:s挥W89ns||Wgh- Zca Ŏ;vh8q@EQ},P'&&\OR1]8G'okcE( Qs[գR ڙ{Uћ|M=۶mۅ9srtttH???Aґh4ӳcbbKKKډhU! BPf7C5ddH!qt7txvs9,Q\rmg͚U|) PVVV ҐhѢN%"08hMNtb\* M"=$ ix;O5emf:99+VT9e>_|SGn>xn[n5 f jS(q(E(E@&.eD(0FZ4]eeb?i儯!AE ;SH1_J BpxZ냨`%+F: yQ>F9 !gbX:iR0L 9$UN٭<9Eco`Ekƅ^n-1)!IU\2Mߤdʬ`>b,Il\r@i{\zNB>s_@/T! Qs{ x =q?BCƕY]Z--1"jPDCC>*k꥿s}";R]L4ұA؍1 p:(B(ثgK ʹ=)Ru@@mx.rs0 4L"@H#OsNZ_PFUHUP:)Y"]isZbe1ֿ[]^ gKt.t4'ix{zYJdO eaoOoZ:}(+K 9A$~~5y(PbYPcQ?yZ= me4G" B:*BVOzH.\0r,ݚ 7)z_lcmv<WZ_k37:ZlM.w']2$G }S8}U88JPwoi\zrrcbKGDC pHYs B(xtIME 4 IDATxw|UsN`BqŲ*:jUZ~Z-_nPJ% ("K=M8 \q*AnkzxGwK` 8ӓUᓎϑF~$ #.:MᓎϐXX%[@hЗv|t sIF:U=uS?j>|IGϤa'6<uA8e"rS|GpOIB"`2%}s'iT3D]9C8k\涆GЇO:>BxUnOU,|}[WU~ [$ӱᓎ]K8Օ 8{5G%*#'"Q=}OU~ L^\JR׸ Q=Y>Q>gM. \,*OMs|8UD;@K(܀mV>|΂czm\W|3ԡ|rmz5ILq3> i)ayWeU·_G݇O:CST xU Ig!Q5`Q؟0 'VςtS9zxS/6ܟ t| r$+KD 8""ğ>/哎 gQe&'Ϗr$g&g M[YZ8*Ep"{ڠ/<'i-`펊oXIǠQ1FQ>IJNuoXIǀ'3K\OeU*?t(g'p:#GEp?n.pЋb瓎ŕk  ] \jiɅA}1N>5{7pXǂ, $f"A!qhG1PO݇SʙQRB{t*P,Ka#۠O'^(*Ⱝ$SPc{2-%g'YDnӉwYۖ#7A.IT(g'@8EbiZ[BP +tt|Z/ *Si⪻?d*3]qsQdsAy>+VX d;7uB8PZ]Xt| +#QQbKWI:}56ȴp|'b ]ix \x1IG9 'gt, LEN_ñ 哎L!pz\dEZiϛ9ghIG"cpt>! _t'#V5-jtu/tck'_4OILJHb&W-+8U.WⓎ΂T# z ǃNH,g7pD<}ٱ#8f|oXIG:= Wզ֣IGO'E5t,C]Iɞ"@8/: ꓎V#zf_Vҭuܿ.a%Czx|&-d`t3HA'[0e|.*_#t& pd #)XsɞF:T#-ArVhN q2%;xae󛋠iWd| $O{˼ Wd%e?I.=:(K!k9[&B'']Eg"|p~^) B|{^^N6z6c\O}хp([v=Ph|DM :@vt@,ⓎO:>v ۱[护3{Wq[.t||M_$tU[*QW{c'Ou$}*YR8UckVT~ fӴYG{T}+t~k~g}z`vl_!rp3/臍ÀqYA$9GM_d>ؼo8Q@ˀٳOSNRf|zc3yAQfH5۬4JspVtPtpz|ܠ&Fd 8 l`<[{K]D։t]rt64qv͐$آ˥DR{ C%4O!WrH.UBf&mF VmkCGl? r8 RzO:3m9LTdc1J|:6 u = [ g3IG_6ٚ Ea4p\ 9)b ! >vbsTl1 "e(o!VPkdL.20Ct⋦c0GT`A/#ROHhr 5v}co%fv DQH2|UAuՂKE=&#EAZb2@}^%۪Vq ٪|aPZ/C9YRd[ e|:P&Q5c),{)J&r s݌J۱)KC!WdT'@S`gn~ `OxEb5%oV{ҼDO xڒQں$x;q@NJjS(:_-9OQ\'(& cIGɳ@jz ZZ8e ؂ZXX( A*E a\*:e@D+ (g!%HDU낮 L* >pR!UH,^.ŕo)L " >9''/,Ctiri@+1$ccG\ EX %#reP C(f|0`"3wJTM_(X/&%Jh6,N!M;pNG] p1;G( g@тā#_PtIraSꓡ)suou g"ڊDOA6We[IGo% g(r!F KOn& 珇RbɅ3 PkDL[uU6% h ww͂烓f;DJ-JT88pHTMNݐLmGdCyxg@Qqe=@jhu"CMxFs,EUxa0nɪ[NXXݿ(iK:"YoQUbHTO?\0zw LXjK(,LBUՕ۬{YG,߻ʇʟi?} x:)C.-ENTU~Xr^ p2g" TVjgb?89n|K:A i/N9y#F_ME&u{_w9'.s-6C%@"ntQ.X;՞G4^UBe?aCDNW9BB!ȓL-i4|$܇ESI=Շ/O:CnTL.;` #H^HYB[3I<NNǖ' FX1Y'@_whJ+*F ;%OMbϘp9N[Nq@^j2mOr |GCHQ RZ#y]vcG]#v^=aϋS03$B86ԟNڬ_&rrPv5ۆP"I/nvq9J:sVcu_U6ˆwyЕw}dt L=7e05b$RTszgV*WWwwbf'#e 8XbA(b 7 {FvQĦQ'E@kX2|A0h&U/%֏&kwP\;rzܳl(k)Ʋ /+m8I'Me)X2_VE*4oJ7s8w`'>^1{C$F; *)*@r|O+MϮ#3}xJ6x2|$lz1Hļ\9*ngĨK=-G+#V$뤻C^"z3M^z7F1ZH\NjBՂiS mhGb)j^}M88Srr`t4CܳIZHG$YZ rn3U4ED '  -h2/ZyuҌJ?ΪK:6ڜ܌P((ކF#Ge^ FMuom3vD\҄v ޳]#mUփA@ h,@, ~Q`5?]|'uqϪ,z& H |/'bO$@).AFEdfTuH$3q@U Ze͢2?4#v`^B$F[HX=?M_"E8g,Z@>u#s""^I;nCIa3;BK%K8"EHYRZAQHѶV~n]YQY8 O+"$\oȧûA J+̞(^Tڑ, q짆:C6}[laд`]&,zb`M!;=rHKѶ7477=Q|"21gl6{Z+DtY`ܴՖ.ǣ/k=du% L/!I١0VprS@+)5[G'M= v9HG!шǖ%K[z!XCrX)(\.1Kmp{,JZz5wJny ;=a0x{wI"FV0Q%= 5Ig*(1d"FqI[Ȍۻ'X{r_{0n. dU1ƔR,,BAr V%aPxV~!ɍFtȺuK\q _HDZ u PޕbrC |3^ %m&KB ,t(pXf#bq4ae"k5'zޭ <',qmGQtcrReq&7Gqjl&Wq^5*Lvհ~<&A+fCs(dNf&騛0;Xcul)(F!̌*D[MD| wԋ00^ ݦ9l2iPtrU"NN*rԪi* $FuUeױ*%#*yn_*7w@6bd8Px`2fݺ܆:H$ Lzp ݼ"7=ϡZ1椴x:{[3Iـ6֧cSUIO\M ]M\[ n,j{z%囈֖l7ef =cuAj{nj,m-hddӗ Ŕm$? =l)fHZMOAQ ~žxK{\wLLCEƆ&r+⺨4v4i)JQPFLFG[Rd#z͋=ʉ\.GTksjy}JE#ƍv Ba$uM:$RHQ!nn@mo5!cgsĮ%''pSM \kch{l,*&~?$T?g>lnh{wjYQBa`ڄNbgr.T_UDu] \ӱ5cu-(]LT( ͍L&$35 0GS`MīϨNQuc<Lj\RcGnsD:T-RLoD"U!31.*SE#-u@IviIE!fA(.1-F*]ݴo]O|b`)+ӗ9b~{ẦqK3" QCxf RT^ŤgP8ڰ ~QLw\>|8RV0/gS>B]V@JʼOF *FM^Α) PgǢvSʟ]h"si:2~DǴ@h7:kCHiE#!8 $h=Y!λ.nc=5l6,K9V 8q£&ի@5&4{hKn&SbHQ .,?R#;B{l!@9)=\Wг. R4̔-(p\mmE{L={ˡ 1`MG`)**nRm/Ȝ(pA #r@%LQ-K+LC'4ځעM v34"O8*WY u!atZiX FJJ2*]_ CCSUǂn`yfT6=${M$цzcy48qL\׳cOy<"auR6σo2rd(clT>I\;+ Cp1jjWX_5|7 *mCtr:bChh*&;mMIUPϭ< 4o.=5MޖKݚ|A3b7xE53cAn*RiY&&M c42JfԘ oq)Otr&iWwD[qk7ld{li'V"$4 a%vt@KP 릐y(8ev[_4cqIsW*z aDm3Ul@R vBܡTP/nÐо ?xXm4 ;*+L^al@#̟%ED7Aƀ8T\.E#!PC餳C\$C< $<)ҖLAhr#DFe4}A$As$:s qCbJk2̓&|J`8cFbDcv?ټM!b$#TZ_~;ɁcОsV4Wu-cO<Dz Κ%o7v|ST.ٚ bk(tבM9ғn"o{b+vF¦_VW6-+ZM֯Vx 8FgNB!SJ#'Ve$_v7pkjoC=o34YNRjn2(.Yg-2+rGB{g_wwd={=Tyϛ2&ߍ$P |6"x6x+wjb+g7bAA*g76R.[ '+$HTU/ e Ŧ[hū$=  ӊFC|g!n] `GpܬwGpҜ80X6.K0lTZ4[IC"p2 <Z߲pYITU=R!\#L'^_+ >y?*FЎW gL4bveyx¥%F]sHs)/Z] Ϝ><Q,+7tzz@E ؏ǓWUV]M`)vA1֠Og5g%鸮vS^a60gYNwʧݙ{eƁUފH`uf;9^ہO*FB^3@!zQM@h|ufa,ic֑Άw5?ź'?76F̷7V}KN7Zu[N(pI@hP3{8R8:tZǙ|k T5EZ;kox_ʻkZ=1e]WS5o? ]j\W*c@yOM Z\ 1UֹtKy5 ю̵6k1(WVP{?kn5O;m{ǢO=i3j(!ظ̻Kb'arǫWD9 (c]4CCݎ.l8@!Nqyiy_}߽[r7?[o5k3iI'_= U>zpxYGAvX$\lh/Ox\d77da\]W8szE05T8Ndٲep ?Jfet2~U(Wգ|cH;HY7#!9=@?7 KXuhK(cx]s-ZǬϪMw &>E&hz .8 < \,I'È9 ;8] F#/NE[S^43s~Fo;,{c ˿\;jԨR/o[o}vqp '8@N%-)r0 S`exH^>R>g"$0[gOL@Ѷ>#U^[o>Vo&Lh֬YC=tO˲2V؊+~텿GݘXtSU aK]8$RD¸~, ))3K y#A0.֡M )[pVol/O2um;&M Bt]'M>믿~ҥKwb xp|kZXiD.Ѫr*'#˃CHYEDC7'8SvE<ѕh-eK5CkkmpckǗ|6bY_uٯqcHpWܕS!O:[#^=L\1$a&`]2ݛ27hc]Fn,Msbl~D|3FڮyD]tUTHTٲ}Ж[amFk#m*n{pevޓk'~n&H$,Yre;úhx*;)Cl*GZp(cl% ).AJv)9l9;![[okGym'~wn'oT뮻3*%#ں?ܻ6 {ϼ뵽gȐNJKn+$Zx`fVAē"3hSuжb yrxe[urRao_/:| >z;,5kڕ^Ɛ y|8nX吿#'b)m₲iX4UGE+Qv*mw=sWe߻O4=k6/kW_}%K*b#L`0>tI83u)l87BBAAFڦўmM>Iw7 چ5d j7)M{ޤ ᴙ4Fh}sɉ.6=t4]{=+Dn~x}sŊ {-'Yx\ apbT @9D#6jvp[S'UJ{!9AKfpB~){6m14ɐcjjG;ZWwsɉm\A=fx-ιJwۛ_گ=(XSB&zXBcPNj0E.t) yȰ\))Y#޴F"y@%M@tXNC*Jwnv> 7-$KN,5E^>A(VZ_2ލ+~I%4$M ׺8(C,dX' |)ѫ7:FcoȦϩ4M *+׷yG.9iK9S\myr-#,XP'5!wTG~!p* lJSMzk.R jb7 3NF7=nV^ݕOg0%SuE}I V5[L0$7Ff pCj_ѻGm$6gsXF+:;'=Jmnbnyn馾x9rd %ɶKnق%r7]U?ݨc}6ٰ{_ />7EDg>5kS2ݳq_W+FcM˃>v̙a+nm^.w?ͪր s3rTCVA8 2w_Ar ($6ArCFjfYu7?VfMDao/ܲx%]ϽΟ˔{Gvx_kno}{3$`pwS#tL'j;Q6JNQ7Pg QBvqoR2457xge.Yb{2}9Fjk6,y9^yy soӦM{;,;v8noo}Ǣ]w]wʲ12ZV[T> ^*;`ptJв`]!4DYbu#&99溛9n^j{~ɯ﹧a#FqY#C>Eo}m u?κϰm=Mow>SZnƍw@ 1qږ,Ye]V[o0_<=_ p)p֨A(d 8mKFr$TiJӯ*åv5y㢴 ,|9=.-Eyyp[~̜?ǟ~q ދp~ 7r՗?s[ӍgawI?[,Zmv|IIIoۏfΜ7:Swy+3g=G60w ^~\y啅#3%bխ뮻f7 H'Q5svɅ2$'Op$H_7vZ1]zGM];{'8ll!7S>Wy#{>f:N=˷6Oί搣O=7YuIg^\sC UD"͞=㪫cÆ ^J}A~H~a*c4oW(=l^ZѶV䕕n|_=}SnN$m;;j"$`i-B!4@TWE]1@cyg%j7@VO JV!:hK3ҼC}N$!0! w^m:jO&ٰ]͏p֩|?eXH93T>%oo0eѻS\ZGĢb8XVVlغug?\x^x^o83(--?֬Ykm8$ hos$ԈvpCX0Xݧ×1k=d v}ۘCOM䶷>&| OiY7`W_KKGsϚ=sw1 GuTŋ衇F7OVr8Hd8E) `%LM h[KFZT!9Aq"y{rڔ+oύgCwh0K/Ht<=:;xSʷ{crI'`v%"gRD* R,xmEZRn@ߵ2iNb1[=[ȄSG5[k.zӿ].= ^[2'e7|sYg8uԃZZZʼX7x㪏?/>8///mHVyPQLra&KXIJ:@%$Dޠ|OXp'ÿ9zwXkY6lX`ܹs=q{5oN$IDAT?FOOilnzƞ(g)G r9Tcp6A,_ozwn(ˀ@cWͅ_c-x8eʉ@Dz4g媞 787RXb ơ^P&s]^ A50𰑀@Ï~IGu|+9wQ,z⑾$I.:DXn{;EԩS? =)SP {gpAN{PVqR [?Igv cPց4M9z%<6E~O{n9:&N;+//.M3?/ÇW^SpJOo|~G/^>s.8FH`€WB9XeNowIa.v DT;Vo^Coyrͻ^ĩNfMd3 smWq!ϫ'8Wkk12EwIr5#XH^Ve2B"[ moN5` y95`㦟grYz}͏8mgy_PFۚoy.׬j!>o޼U˖-9,+c_I'Yur09 %HYyթY5dJ{c; u35>~ǽypŽF5JϿHt\ێ338++z΁@b֬Y?ӛN:&8X9n *-7%)z[Gu6ngӛ <Hhcvb/ @^*ϹOoo#zo8sxe}D]nSN㏏-Ʒ,|미} 6ƷH'Yu`;DaC^~k8Ic0nwN/˩s: }N A|;xe\y)b[Lu#Lxjp{9}y^:ZvNi'r{bh{}饗r>jY3JToY WAAYUI2qī"*xqPpTЀ: "A @D’NuլBtwR,u[oQO+hc9QP.hu;t95qdHɦn`+[4\w)>gqlzt}pv# w$y-+{H?Zӯq&u޽(99kDDD|02h}rRQ1Rߔ8SSjV03."q rhχ R9rj|v816qB 16ؑC8;v"$^At|E @T XZM!YR,*e͊\q>HX6Ys1/|ctNKF8n 19\㊨P!TM΄r`hD|3I_vҦ\oi3mA3({)+ظcn[zMώ,OQLghiH3qM5 ǦHG9ja,Tέ% sMlI IrCe@O[ֈhܚⴍ, Y|67GI]?F[IǽapGKz GF#6G4GRU-h1pUpDJ9[ܹGiϲ*Ҏקܾ%ŷ[3#ic~ڇsn7&D\K]!h!m0>CEZn\Z"X p`/pA{1WYz5L5i3w+9Xݒcm@Z UfoIy,鰇T1'5C*+l;~e;8kK75[pg/-:/^57 C8NIbQ:}Cf&VYyK-іUU$fIM~_W7DqܘKWl/.jmS3{/'oM8+y1Z:K7HͳI|KǭUh(*oezL \7=PQe`57֬'WY4k𧧱jf~XvONMΗΨ3q-֯Z7l{t#%NʊI9B%!5G/UfA^nZyIIR7cuGQA>9քԽjg0`=eѻ7O5y4Β#杫-/6HU$0NlA4Gl:nYT^]1!//6T"BhqRэ:m@K將jTE%&ٽ| O26cSbE.=hݱ Mqk)> vdOc3ýGc2[ GA -P`jN~Q`qH ԲPK^[,kJ5߸N5sbj2 U*YV~㦥K^I }Űq{vdԓOeQ∺LAQ/D"ۜ Ȳ-!|OΆo$*<K'V,hy.OYN~g¹SC:Z^UAT%l/mVHGBʝ5ADDg9.8+PK GGpdZoH ($f:Q^]U}Hc8őG[T,"H6ҹ B.F6Bi b%Շ! 󡴸h5_$T!<[b5K!BL4oׅyMЧSwt o9=`˚ҩCl(oAA;wn9q85-,D p.V蘖2$;gMX^!i@|V@ a1 ?3lX)dyk(nr}1gB:\zy)Ng%KZjm۶KIS^ :ʆ(%@i/Eݜ #\ ? Bv@ Q 9O‰[iAd+vУC }%z>1zV۷ou XhSO[mNc) Ԃ\-"gA6R߿۷ YXPB+rjs4bY״I)3),kbjX <0;/O7PKee0IbmO+SXX5k֬;wwà>}uf )ʋb4"PRo05"]\^ +% LZQ3`ȻZpZ4OXrrWZU2y۷o?3^3mڴC#FBtJE Q+u9"N!H6"["TX,$nILoo](&P&8gykc̛,obۨ?LOO?n#ߦOnܹsjHW&@j[L{3P;wx5/4lOLVzU%x 7h8g<r+)> 9`>}ڤv޻w-7hѢzN+ds!H{)q*sRdy9x lʀqi֛VxIuIxh~n{1MC_:#ʲvXu}1{{o裏rk]%']ZJвs9Ȓb"TZ./2'- !9NqU Y2gyiΕQ”wF8fN" :x\ϞÞSR|SN=w=jsw}I_|~uN-IYJQ;2E!d%ayy}i`KS)X fQ!qSF=ϛDu>'?g1[1lذ܌_&LвEL0nnY"$]I.J- {s5(202QN%{F>0E 6L+4\ dH .;7a_k&'{oFJԯ8O9!֒\6%4+qSF8i$M }<=?F?GуHiP'Dx^״ib ةw ZZR%LTU޵$6?ͮ2S-=ktSf,¼W]IMl7N6.wE5۾z1hty}mρDޟ={:q{pPo3&-rW,%-w5݇=ϼ9㍷(!MZ3'*Gn'؇sFdoKd M^HL!*Oޕ?YDS7,$/2 4Ƭ6[Rr߀heصҩCZ툢tZ@neqo|cppa6mYwvfΜYGM|||%Z KDLҷu֌dۚ5kL.}xGQ4Aw@!DŽbE\pru H m:LhV.^KdN=fo]p'_VoIt%NNNZU/h;33.](--Z`{ԩsssu)W9j%䭽WP@7AN920uA8g_헿)`S/0?/YVNķh 3ذ4{O}[nW^ye1cUB8Vg*`0L?k fIHiIH;jL9Q܍V#Է9JҐdygP}„peWU];ד.ر#몫*MJJgϞs:`0PtڜմqVEa)6X[4%r^ITjQ;;)UB(In?v+pDŷO/'''{7|bUU+X,` xR+u__5 )Ӥ$ϜiLOp *qocNaR=m D:,%%eѣ/QU2C_y8tXN7 )fE1r۞d< #2*V(7}ӤVGkexݥS_{01xkDtA:-ܴiS ڧW+0X+Tͬ(@w$݁v@ZOs\^ 8"_!5$~yqEU-ׯ0&9\<~}(Ht@Jڽ{w֌3{Uo} tc^EEB.-1{SO1کS.p DEOAjSp)H*-{챽'NnӦMsqH+yݹ&MPB0Wǀ9iR[S8Lǯ*_ ݖc.TfǩxD:6Z>ģ̣$>LT{cݠF4&B x?!_~)gTZ'<&52 g됇$.x֬YG.X,t|7l3Iʲ*CKZG )o&!6%Hh)ЌqbA$F@I_SS RR8*$HQ&ԣzH!4goȤIzS3D:2k/G}QGVe>FƅR~2HM&E5f)1+HDDȓDs"AJPDET!W'$^(7-1 -bSykɓsFQ֪Up$SXXw֧=JX0%,jXc"+)))vQ=*hĕGt}gtRVE*$0N0Y3x<%B:>l۶m pƲ0` A;b/J4hl)ʤ=lذՐМ*G;`./Je=y}F:%%%f̘h'L -bq΍۽{w|p8tnwqjjO{.&Hr% 1,h)4UEW]uU?tTU-w~9U$p-€F#X*6oܸq/騇mĉReU) 0|+QQQiӦ,..>v6c9sҴiӊX\qn@{?TʴiӦtѢE[].WFZǹr-;v̯6nc@-"*HJJݶmUU}RJ?.^:SJSUսcǎɇaE h.$ͦ7.g.n1{==RM0hm<?,:| hmP4L #()DkL9^ds)*q#y^xwW{oi!rbKGDC pHYs B(xtIME,vڴH IDATxw|TUϝT@BGA*El+*]%e-BXW)4AQz @ǽA5P̝s<`0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 !3՛ &KEnYdu$ W Nx劖 D#E@ޥV'> aQK-{V!ިO%$ik]۲ %?; E|X?| ,H@^e@)BUPE1}vv{]3! xjSR7T7އ)*,H]@CZ9^bᾶ e-v!P$HA_3. lDArTՏMh2BcAڢ)ˊlwkW(Vt3^5Ru@T 6}^>\&Y2ւZ4)k<qmilgR(*{-VPA3c"&/'!'*M@KD@\5& }}ZD,-z +0Ĉx%$9^Tj[&@{ӀS8_ɫ?ؖ=ssA֠ [~dH!a3~9o[v3=ndq45RNX~,F(mW>%OC >EZu֩@{E[M4"Mr_&*z"p6끯Yk}fcp4wχ/Yhp: '3tV  a5f;lD'Ymũh ' rg8Xײ19gUTD%4P2۫Dz h#x3BnjJ 'ܾ-*%fSvUG :d B` X ,|ֺg 5cDz;;7vC7q0^PD+;ę#Jщn+DOEdlBk E}q cRl@wzd3: XKXs|3~_aƈN0eΔ'>m.+z;5p.o-~˧AMCb3IgR`eG #z0SIy%R'ac8:8f V$ WTV[x EE8&fDt$Eܹ[f,JPwCeV[ Ut؆Әd_ \ Zˍ3Csn$rX@th6`zA>&}yHcSfOI¢3\`ZՂ `0[wVx΁>j#۷kH!i3i$|( \n0 ߜӮ,cx;J0#NcQ ,<ݍRP>-D12rXXXKAi[hd _(X R[_b5cV+]U_-fjtw#:N/qnd RaE8IN'*ZQql`7[_gʪ9<ƧBe(/!R8vf? `:%B!BZ-:k X3l[jA )P Esss֧ Zp*{`PELlي=\.9`d-2gJ4u3{g- `  5lsP:@'w.ATE?/H*ը0'YV$HwtOz|<E R+FY<5Jts)jD c'x:p}&uƩ1D1Y=Bn\U} | w)EW Z^+hKnq=n}|zbF?z56NDu^ LUI὆K'Z?E*"pr92y=yQIƍ2KϺ\cKq,IT=I $ߗj` >m$9@oR xc6f;6[E8 z^%0Ex#:QHI}|5~'sqcd e.tA&3qD\TβlEuΧsN5"&x 89G 6jySp_3q|^X.ȓVؚP:ϐj7瑱P}uQ6ɄӫioAL>;8YѮe7W{PP8i}y4Npzw=gfY YbŎ3q>xOE)c)٢r(f2StșC-ϗ2aoVB)+Y5~gՏ!g٬65NsHoAh5,6kϨ8hXɓ '3 Gww9&h7i9+qJ95 8ʎHpz5%WV[ c98̝;/2 ȾҲir pjUMs 7*DGضe |o/BUԇ~ήS,L8#*U+pDN OG6 ˲pU5}/0jG9C,8NAH`: rԋNEIbé ǵp&^]>rEȎ$;d'*=,{4S9gNe-> >DEAP+dD=ډm(*jEJ%r%]Tu!NHX:ǛnOBSE;^I g§ná7=1{H$kꟀ.BB9֔SU~#Cm {)⁓&9r>ΉڱJKU>X'Zb>+>ob6]{JKmn "R)M-dAjH;gCHERIb(wnn;޾#~Gmc298%DY 449L dD縙gvq+wDJK bo>?g꼩;YUSJ$8Ac 'Zb*`n2wJ>BGtcN>i/޷ai)5s}9~ S:HAf l4{b8ZoJ8@ DNqRX p~O*,V(q|k[=/D±j3ty+GE*84BPTM_Ez"Z )s,װnox.(DKnNDT>‹z_2ST8̦8mb#taGps}=ۄ)IBi"M-oNV@w gNF`=E:eޔb(mH~ĩ3S"N+GHffW KA*?)VDD_j qrmȷ?8jNns(\DBğ_gK ("`ʜ)< #lֹs R6!Bё/yfϫ·cBPc[s!8 b=x9uPslkB95$[M-XT̍>KG?R+BWPbDxu&P%8nI6k DK K4uAjGP0m^kTFQUE>]s6RJF9)\E8+Ž3E$ Ĝr<2QYG|zeձ,ˈNUA2"lDXx/}o98uTu~2ӱϓr`=-TnM!s FQ`BIk[baW\q} Dd3 -֣t~-um,*4"S  6[ qBCpE;E_J(H; mclϜ[|pZLs> ]P\(ÊUN2Tb;NUx&R!@O"TmK-==uؖmmg' N Wꋪ$I FCtjۥA>Qf9_WUSeF9 rO"~;ާtbD$)nb|) JEeOLZ9UE D>6uF~|煊F*w+FTLȼ HK(9NK4;Ss?g|ͤ;?(%2W4%< `_WW\DyGa7R4uU -VQMND'3G}T*|VN:B}A‚EHt|D_/W0h&Yc%p㨞 (IkR^W>hyEa,_PB> ecG J?O)bh҈Ftɏ8MZ* ,ETtm폞yFL #\FټKb<$:v.KTj.D#Y"8WMMNX#sc-A"ee|T@V ^!Vx H$H"n^e$qb{BtRg6E0l#ѭ XDnV'jD*VHNh B_WBuT+{i(&T7hTсz\d(d$᱁e|vJ|HX#:UEȏSSUL8&,H {Y/9?KID.D*jGȏehj&HdpR";eWUHŊ3 -;g6519`Dj,>`q)/O<'{'rvU)d#N'9'"$GY@gDJHY:uHma oWt53P,k7$`f$RR;_u^9H"t6UFACR kSED%1~$E'߈NAh\{ֵ6.]s[ug'<+uPGPtJT5A#\:RN@x*df]4)Q SꞻeDTwFVthĦHT4)OLTZti8.v9ѱTgGPt@c #@3c6HwJ&,JAر]4"rJTkq{E */N ?!]sǧY9>=3?RDwkuԎP0D6md͊5j5o`O_@|V+B {@wpaRὋD  Xjycz}{#3g~w:+HˈNDv lR.O޲eOxm/Xs_*ՋkF)Lb~g.Hs*[7neڛӘ ꫮ&33ϺDN߿vZq?bvl{q䕗"ңh{"f k4e6{=ev͝ @( E 9ܓ'bIN"{ ;s.S_ʁC>5fs̛X IDAT9R;w޶u[s_v9=p_.~ղU)zD,̎'jDgؗ;pܕP:$յ^t=oEڶ/xuJ5 gswŢ/T6=׮S{GФQ/kӁ\>`h*<'f"C$ݶ45HV`%k(/vߝ ` kd`ǧacA ìY|G{s͍Ѭ;iڸ/ iP_s=f@!"` L%}E6u#p a`_^J>gM9Up>p&ދjQdZձ̙cfز7󽙼>pwЯw? /Gߝ yXW=]2 O"` H'Sٖz&wn~`q+#@͵rY<]C$">m)Hۢ¢|f=[ȝwɥ/v@gK.Lݔooe%eI8qFt[Rכv ݀ aʹՓn}UR,Rt4`e[ohl^˗,? _yhI 6믹~%1!u٨?O=ԶcǶ8ijlp၎Q:jWTbE38S,_}p;ar>ɉlJEp'd~BUErgoEܭoĄ[w}ϖJ̺4?':uW뺪[nC= /xx"D#0 '%CDAD?vĨ)|듷+BmEN5%@od EkzfECn2Qmۇky:s/{VbzPp .,{@Λ?EGu qxV XNXt(]IDq6|!" σRXl6߻k!FML֐,gԏȅ>}̚5+wyg}ji`,8D30{T<Jg L19mcqNd(MLAZprR]!#8%*/*[qYk\ '_Dxxp{ p'pEbb7s5ѲyK,LsoƏ_O  x xш/oMřq"<$"omoz?{Bv{lcR^V >PWTŻ0Y$J*OT |PxȾ#hH~} 1tիWoC ,h+.ת{*E'FQ,,ƈS)kLPcVM1ELTHDAUET0||ġ F;08pE.9wos=s-[SV\z8w\ ֈOY[ܜ]F(^{<_͙#XXN+:JEԵl.0͸s]w3"k 5Z\\o}wb~~~̯\YUqNFe$p%IOcgT$9 wD@g鍷k۶gs[lY+GmA%#زA(K[X u~}E<מ 0)w;} ^) 59i&''g?i֬Y޸qc!7n7/Ɖ~M%أz}d N$}WAvGy= &" 4(8q⪏?8pV|>v!buڵ̙3z뭯[ju8@cՍ[pVM"l\ҧ7+fR{8N']9FW_G@luۦM.A;Mȡ2Kq|([D'D_N}:Λm܌Sw0Æ ے[t7UVZMZݺuK7B>!NFGص0E'0p@6G/ %"VN-Y9 80xӧg}vݟz5@M: bРAy[lG,N|cԋκj>8:ܭV$;,HvEс)s8[KHH({'m۶miYV:wmҤIưamvҥK bO~Zk^t8M;*6H^]w|&Ud5eo5owMcbbٳg{EEŶ#nO9~yB38 íQ),ũBr^sPEK2Pe8m/'lV~<(eee{^}I:tho-//?\:>`kn0z7jQBE#Y|:xKAF0pï,}guVݘڑ}E(--%#=G3mΟ?hж}UW~ŋ^߆u~/|L=#_QQQ[omӟbӦM?И1cV~iii9-Q+jg 7*d5893j|9Mm{D={_lծ]^ey0ܴ}ʕ+K, ̞=άY/g~M[4e洙nHl%K,X;U׿j5o޼T~@ԩSˮeeexYSRvSR!|C%@7ıS|O!8 Qpo?GydKhոqb}K}|EYY:uNf_>.uϾ䓡G}yqq$Hu]Da(qTAr~=5`o~N8g-7]tEIIIG{.{e: Kkשʹѭkz-[?\y啵ڷoh [~;m*7:Wgh˾E M8U^Zq_Z_ܪOgiJ&~3qoUo{ՙ1cZoҤIȲO\rI3?mb$''8p`ÌRG~?6ŋ-r 7?Qqqqe~*}}i|9+fx2ˁ8} +EtM4ctzs=l$"Ǻ+ѣiqqf.2cNjxƍ;n}oV*ZTz0rAf Pq ="87o׿\vmeXaҤI~g%fff&oܸqe˒j{ZDu")@[V4X8EUe-h}ƋΠA;N)))N8]fMƍsɒ%x䘘ڵ+MHHH" K⋻xu*3tuky 322pzYfl{UKXJD?ĩ9+Z8)g)2Fnp3W`4hץK3f$*C=ӢnݺI&LXZVV?Z# +4iM7re?sgϞ-{|bդɘ7{9ylٷ qd!Jsn: e4E1-t ӣ"og]=Zi\ZZzV}v{/׺unaKӦMK̙ uǾ ,XPԼyU7N,˓UbŊ뮻:{ر-+c+3fɓ'ݻwf 8?>d(9H˳N)¶`*<L(<豋#@A@>eߎڲ_˨GeߪO2(1 VUtvi%929&6lؐ۷o~Gjjj]/߶mV?ŗ]vYkVJ.h믿mĈIII ~9H|/u-YN?GPлCLD& I(\ƾFԊr,y歟~?xa~TU>'o߾SO=`mmy&L֭[~eeftR{-8qbI')"vkk0G8xLv_7؀-A{wG\ _/ EiSf-Pp.M7ēO>yWVVv`kFʵx؂ P(T0^zi[֫_[kUW]լVZG3s9suҥW_nܸqu6lX%Y{=~m=Pʚ;v0aN>feUI;_3wz e"{FtG|8Z8́֊B٥.*B; ,B8[ NR\% C2NIĵj'x@VV￿9s^hoW{_5*u3eee_{ _7T<oug֯6;c&D%}X[B+W|vPT\ h N`7nP=(R q +:U~`ak(,5Ã~?_~N?o'Oꫯ>QUi{s뭷嗋Ug}vZ 8*K8޵p=wuWw?Q͎8lP]AB g.{cחv_6V0P#:@N2XT1i $+ ģ?_}^fW^y=xǏ?OB]dIҹf{7$h[<쳙TyueUW]{ѦMF`FtÌ4>~dq툑:]k㖕TիG _s5;s% 999999un5sOJz;^z饒;SUemڷoӭ[vew 0i?afr`=8MgGs'z7PN4gLum۶~:k֬mvZqeܞxv:t3a„u%%%?+(///:uꚎ;&y-*CpO4iՒ%KzqJ$Lj!= Xֻ[ C %ׯ̙3y ~XΝ;c֝;wN[\e?&&&oxұc~np r-_-YP׫Èo`zK:=`80NضyC/Ugggwx7o?NsC/]+Wc0s$sϫp`xUM`5N޼ Ge狫|͛7oc,X {ڴiwƌy&Lڶm{DE#dϫԊ%ϊ5Nx]l gҪhYVݻzwW^y֭[Vnذa30OкnyȰ/⋯OSK/… njc~ou~뮻uRRRhFtiX * q$9go߷]5-WZuۏ,]tc=ִI&~9FfN;a7%8vpm|/gEIDAT iӦ٬Yveff֟W^żyԩS9ψNu|Wf;qfabcb}Ԝ\nMhܸq7[;wqǖ.^2J'(P>xŸ6 lׁmZ},@ r;ϱx^>^q[v3w^XJ+s &U;7- ǰ}m%?9d|Ⱦ\0))乤u>UtgM$,a2'e="pMпkvk0kFȈN2b 1@ LjOS{~պO>=4iR߾P(6fWQ{S l}e*t9 !ŌR1yh:锎N:u־:i]{]-OnK,kǍ7Xщn'2`ՠFmTeh4gIR1_/]{܃MٳgXUcbr뭷믻!DmDJ)ax8W3Ή oeLr/N"@ܼy9Gw7]~訪ڀ,| ѩLoɾ*OtNt֫vU@/ί!QnS۶w1qUy(DJ)>mbDYkY]Mndk|Gt&[jM BVںP`e`x ̃Ǽ((3tINKs=;~slt:.+h4fvgL&TTTtKO_-2$I*F Oė6,Ht  S)G,_9n8"•)wEIQQ9v7Lfn;uc H|NV)[94h~`{v=fdVƛ_r&:0q#Y ? 4ٙ(y󒓓#s%fS>t:{ޫ̙sJYÑ!A|keO`X k 2.1 U0I@d0c,KBRRڤXyn7??hq8˜3g#33t3`XF>'''D'a4wIr!d*Z4" ^(]bp*6ӄ(,C9׻S :d7ZreoAA˗Ttq8Dcj &믿,))Y駟rrrh3kY=9*y k,0@p~r R0]yEؑ?,kbgZ7xTԾ>wRRYV/ N}}}'s@||ozѾI|'N< Wj6zAֿ^8@hOd`XEX4AbBl>#G2F`(e3V I@P$' `0.((X޾Joϋs厎7|3a߾}7NV[!щ!Q 8Jywo<,i|>Ha[0%h MrEPGFI#G,! ^Ӿ !~ n⌙fK'E *XXXx ۷/rxbo+ah 66eIYP%AS8KX*2$&)Y<񓩂#<auEDŽ89[8fbM CXh믅@-ti'>|xpݺu"zֲE{qr=ib6DP=|&GVs;;;VXaq{,;O$G]]]w^^^u|A][[['\.oX7Dٴnݺ N:o1.[6}Fnn/((VTɦCS,Nӗ`׵wߝCJKK( W]]}|Æ `tDKnjYWL(\5g)}EEEsF Ν;۶nݺBT&w`Hi׮]~C=DVOvVDI.ۯ())555m,M綾^ZwD>+Z$$:L=@M)UUU+^xOGG=`ڱ}_~yJ:@vv`eee׬Y ]v{4 3WC!\ w\Sz;t` _6O+ǣ{]wi\.WDqܹovd?;ov/.˨3 HxNNvbvءQ(fgg+**^rNqqqzvh4S5@ّ; l9UHe_KK'|4FGņӧO7}Zt$Ir8Nt*))q/P%f"j3ߟ ީL@rرkZ¯Rm۶9,ˁ<zC3 xݼy^j'2(.Gե{'|Y$:rwww3<z/L͖(|pN"ڵl6NeG3̓۶mkQ*hlMAtVnϞ=g|× Gd"r,rؿm)ESSS[~~~{Ő3VWWwfee G |n$Xݑeҥ555m$y~w}ד5ˢ#˲QwM7F #D90-[YSr9@___s=wVPH">A,";D\\jbht* WTbt-Y"5QL:zIt.8e8z虼(~1KHeӦMC?s$I_6-[EQ?3A>Azx"wظFϧzsŢ0͝;wls=^<>HyMDT`l6$~-62Dr Ǐ盢K+M G?W@l,BG.oI$7GLc8ѰGQ&bbA4E믿|ĉHȧHd; Q\nAL1WAX"VV&v^/))D1x  . |ͣLk6ۦXwy᪫ օȢN"^s}E :t.77g(uA`Tی555$ ]jёe~̙7nG%p0:'Aӈ$)hTZZjt:ιt DGx׺ =ua9!Z7 elё?l;w.|` h f7"… m_|) y#9reQm6Cd9Gkkk[B[*N>VtsIeFߴiSov Rc  riii޽{OڳgO **2D BLb XK fgD6gA`Dh;]l9H Gf _%B4_%ID4(@s`3(AC0rC8 > #& hoQp 5x|]2=* jIENDB`distrobox-1.8.1.2/docs/assets/splash.gif000066400000000000000000000064041474517124600201300ustar00rootroot00000000000000GIF87a`0w! NETSCAPE2.0! ,`0ԧok]UICͫjD^ l=jmLii]_"DiL>=ee$MŌȰƺϷО^٪̴ڳИ㻽դ3&lFp_-<E/` !6nFg]\7>2:PȜ>p'=v?4:fI9y2)"P %F١rՁ,z Aĺ*PRBZ-YZ*{.ߦ~UY ؼf ٱW+Cq@\2nn3&#k30x*TÈ4`[udK>Xpújԧ/-i[5༨!xwJz=vZKC6,yCG&IO-TVh(Syw xGMFFAelTP" ИLQEԂ,J`Hbn/tU-t g"~$AHTA3x2&dP9V%lRuyQe_(VYUWV咹)'HIIhyUXfZMahq јFJ\"i)j,cxxچeLBZ&.ZX$WA&YF+v&jm}+k覫! ,T$ԧok]UICͫjD^Kn ;'ݒEtlAƬG:xa+K]ڥKT(MmS˺sV*/%a֭aq7$( FGMUKFxqH";;3FY{hQ{J.STfm}(ym6r(ys7spa_/?'7jOy L3(]߁((^H͇'cf+yf;UւL {h3ӆbpX)=Hgxr8"#gxɌt;qv勽ɀZtb(1i!`> cT2昈y `&B!VՉ`g|!jtg+.v*' ,]zuԪCE߁xӁ! ,T$ԧok]UICͫjD^Kn ;'ݒEtlAƬG:xa+K]ڥKT(MmS˺sV*/%a֭aq7$( FGMUKFxqH";;3FY{hQ{J.STfm}(ym6r(ys7spa_/?'7jOy L3(]߁((^H͇'cf+yf;UւL {;eXVO~I`RHgxrbdg!#gx t;qv%ɀZ".iF\dQ͘c"Zf8r-z觃I&NXeqy:g} ajg,@/v*' O^zĞ'ԪCE߁Ӂ! ,T$ԧok]UICͫjD^Kn ;'ݒEtlAƬG:xa+K]ڥKT(MmS˺sV*/%a֭aq7$( FGMUKFxqH";;3FY{hQ{J.STfm}(ym6r(ys7spa_/?'7jOy L3(]߁((^H͇'cf+yf;UւL {SFXVO~I`f!4ژ4"܀+ d18ИJ&g1$=> c/A2V`<ݘ$Vі_6cT3yYg\`&A!VՉ`G"ZOl8qFHgfy'6pȒGY[Kꪬ:Tx;distrobox-1.8.1.2/docs/assets/splash.svg000066400000000000000000003472021474517124600201660ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/compatibility.md000066400000000000000000000401311474517124600200330ustar00rootroot00000000000000- [Distrobox](README.md) - [Compatibility](#compatibility) - [Supported container managers](#supported-container-managers) - [Host Distros](#host-distros) - [Compatibility notes](#compatibility-notes) - [Non shared mounts](#non-shared-mounts) - [List of distributions including distrobox in their repositories](#list-of-distributions-including-distrobox-in-their-repositories) - [New Host Distro support](#new-host-distro-support) - [Containers Distros](#containers-distros) - [New Distro support](#new-distro-support) - [Older distributions](#older-distributions) --- # Compatibility This project **does not need a dedicated image**. It can use any OCI images from docker-hub, quay.io, or any registry of your choice. Many cloud images are stripped down on purpose to save size and may not include commands such as `which`, `mount`, `less` or `vi`). Additional packages can be installed once inside the container. We recommend using your preferred automation tool inside the container if you find yourself having to repeatedly create new containers. Maintaining your own custom image is also an option. The main concern is having basic Linux utilities (`mount`), basic user management utilities (`usermod, passwd`), and `sudo` correctly set. ## Supported container managers `distrobox` can run on either `podman`, `docker` or [`lilipod`](https://github.com/89luca89/lilipod) It depends either on `podman` configured in `rootless mode` or on `docker` configured without sudo (follow [THESE instructions](https://docs.docker.com/engine/install/linux-postinstall/)) - Minimum podman version: **2.1.0** - Minimum docker client version: **19.03.15** - Minimum lilipod version: **v0.0.1** Follow the official installation guide here: - - - ## Host Distros Distrobox has been successfully tested on: | Distro | Version | Notes | | --- | --- | --- | | Alpine Linux | | To setup rootless podman, look [HERE](https://wiki.alpinelinux.org/wiki/Podman) | | Arch Linux | | `distrobox` is available in the `extra` repository and `distrobox-git` is available in the AUR (thanks [M0Rf30](https://github.com/M0Rf30)!).
    To setup rootless podman, look [HERE](https://wiki.archlinux.org/title/Podman) | | Bazzite | 38 | `distrobox-git` is preinstalled. | | CentOS | 8
    8 Stream
    9 Stream | `distrobox` is available in epel repos. (thanks [alcir](https://github.com/alcir)!) | | ChromeOS | Debian 11 (docker with make-shared workaround #non-shared-mounts)
    Debian 12 (podman) | using built-in Linux on ChromeOS mode which is debian-based, which can be [upgraded](https://wiki.debian.org/DebianUpgrade) from 11 bullseye to 12 bookworm (in fact 12 is recommended) | | Debian | 11
    12
    Testing
    Unstable | `distrobox` is available in default repos starting from version 12 (thanks [michel-slm!](https://github.com/michel-slm!)!) | | deepin | 23
    Testing
    Unstable | `distrobox` is available in default repos in `testing` and `unstable` | | EndlessOS | 4.0.0 | | | Fedora Silverblue/Kinoite | 35
    36
    37
    Rawhide | `distrobox` is available in default repos.(thanks [alcir](https://github.com/alcir)!) | | Fedora | 35
    36
    37
    38
    Rawhide | `distrobox` is available in default repos.(thanks [alcir](https://github.com/alcir)!) | | Gentoo | | To setup rootless podman, look [HERE](https://wiki.gentoo.org/wiki/Podman) | | KDE neon | | `distrobox` is available in default repo | | Manjaro | | To setup rootless podman, look [HERE](https://wiki.archlinux.org/title/Podman) | | NixOS | 21.11 | Make sure to mind your executable paths. Sometimes a container will not have nix paths, and sometimes it will not have its own paths.
    Distrobox is available in Nixpkg collection (thanks [AtilaSaraiva](https://github.com/AtilaSaraiva)!)<
    To setup Docker, look [HERE](https://wiki.nixos.org/wiki/Docker)
    To setup Podman, look [HERE](https://wiki.nixos.org/wiki/Podman) and [HERE](https://gist.github.com/adisbladis/187204cb772800489ee3dac4acdd9947) | | openSUSE | Leap | `distrobox` is available in default repos (thanks [dfaggioli](https://github.com/dfaggioli)!).
    Prior to Leap 15.6 ``podman`` logging needs to be configured properly, more details in [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871). | | openSUSE | Tumbleweed
    Slowroll
    Aeon/Kalpa | `distrobox` is available in default repos (thanks [dfaggioli](https://github.com/dfaggioli)!)
    For Tumbleweed/Slowroll, do: `zypper install distrobox`.
    For Aeon/Kalpa, **distrobox is installed by default**. | | SUSE Linux Enterprise Server | 15 SP5
    or later | `distrobox` is available in `SUSE Package Hub` repo.
    Enable this repo and then:
    `zypper install distrobox`.
    Prior to SLES 15 SP6 ``podman`` logging needs to be configured properly, more details in [this openSUSE bug](https://bugzilla.opensuse.org/show_bug.cgi?id=1199871). | | SteamOS | | You can follow the [Install Podman in a static manner](posts/install_podman_static.md) or [Install Lilipod in a static manner](posts/install_lilipod_static.md) guide, this will install it in your $HOME and it will survive updates. | | RedHat | 8
    9 | `distrobox` is available in epel repos. (thanks [alcir](https://github.com/alcir)!) | | Ubuntu | 18.04
    20.04
    22.04
    23.04
    24.04
    | Older versions based on 20.04 or earlier may need external repos to install newer Podman and Docker releases.
    Derivatives like Pop_OS!, Mint and Elementary OS should work the same.
    [Now PPA available!](https://launchpad.net/~michel-slm/+archive/ubuntu/distrobox), also `distrobox` is available in default repos from `22.10` onward (thanks [michel-slm](https://github.com/michel-slm)!) | | Vanilla OS | 22.10
    Orchid | `distrobox` should be installed in the home directory using the official script | | Void Linux | glibc
    musl | | | Windows | Oracle Linux 9 | using built-in Windows Subsystem for Linux | ### Compatibility notes ### Non shared mounts Note also that in some distributions, root filesystem is **not** mounted as a shared mount, this will give an error like: ```sh $ distrobox-enter Error response from daemon: path /sys is mounted on /sys but it is not a shared or slave mount Error: failed to start containers: ... ``` To resolve this, use this command: ```sh mount --make-rshared / ``` To make it permanent, you can place it in `/etc/rc.local`. ## List of distributions including distrobox in their repositories [![Packaging status](https://repology.org/badge/vertical-allrepos/distrobox.svg)](https://repology.org/project/distrobox/versions) ### New Host Distro support If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it. Or just try using it anyway, if it works, open an issue and it will be added to the list! --- ## Containers Distros Distrobox guests tested successfully with the following container images: | Distro | Version | Images | | --- | --- | --- | | AlmaLinux (Toolbox) | 8
    9 | quay.io/toolbx-images/almalinux-toolbox:8
    quay.io/toolbx-images/almalinux-toolbox:9
    quay.io/toolbx-images/almalinux-toolbox:latest | | Alpine (Toolbox) | 3.16
    3.17
    3.18
    3.19
    3.20
    edge | quay.io/toolbx-images/alpine-toolbox:3.16
    quay.io/toolbx-images/alpine-toolbox:3.17
    quay.io/toolbx-images/alpine-toolbox:3.18
    quay.io/toolbx-images/alpine-toolbox:3.19
    quay.io/toolbx-images/alpine-toolbox:3.20
    quay.io/toolbx-images/alpine-toolbox:edge
    quay.io/toolbx-images/alpine-toolbox:latest | | AmazonLinux (Toolbox) | 2
    2022 | quay.io/toolbx-images/amazonlinux-toolbox:2
    quay.io/toolbx-images/amazonlinux-toolbox:2023
    quay.io/toolbx-images/amazonlinux-toolbox:latest | | Archlinux (Toolbox) | | quay.io/toolbx/arch-toolbox:latest | | Bazzite Arch | | ghcr.io/ublue-os/bazzite-arch:latest
    ghcr.io/ublue-os/bazzite-arch-gnome:latest | | Centos (Toolbox) | stream8
    stream9 | quay.io/toolbx-images/centos-toolbox:stream8
    quay.io/toolbx-images/centos-toolbox:stream9
    quay.io/toolbx-images/centos-toolbox:latest | | Debian (Toolbox) | 10
    11
    12
    testing
    unstable
    | quay.io/toolbx-images/debian-toolbox:10
    quay.io/toolbx-images/debian-toolbox:11
    quay.io/toolbx-images/debian-toolbox:12
    quay.io/toolbx-images/debian-toolbox:testing
    quay.io/toolbx-images/debian-toolbox:unstable
    quay.io/toolbx-images/debian-toolbox:latest | | Fedora (Toolbox) | 37
    38
    39
    40
    41
    Rawhide | registry.fedoraproject.org/fedora-toolbox:37
    registry.fedoraproject.org/fedora-toolbox:38
    registry.fedoraproject.org/fedora-toolbox:39
    registry.fedoraproject.org/fedora-toolbox:40
    quay.io/fedora/fedora-toolbox:41
    quay.io/fedora/fedora-toolbox:rawhide | | openSUSE (Toolbox) | | registry.opensuse.org/opensuse/distrobox:latest | | RedHat (Toolbox) | 8
    9 | registry.access.redhat.com/ubi8/toolbox
    registry.access.redhat.com/ubi9/toolbox | | Rocky Linux (Toolbox) | 8
    9 | quay.io/toolbx-images/rockylinux-toolbox:8
    quay.io/toolbx-images/rockylinux-toolbox:9
    quay.io/toolbx-images/rockylinux-toolbox:latest | | Ubuntu (Toolbox) | 16.04
    18.04
    20.04
    22.04
    24.04 | quay.io/toolbx/ubuntu-toolbox:16.04
    quay.io/toolbx/ubuntu-toolbox:18.04
    quay.io/toolbx/ubuntu-toolbox:20.04
    quay.io/toolbx/ubuntu-toolbox:22.04
    quay.io/toolbx/ubuntu-toolbox:24.04
    quay.io/toolbx/ubuntu-toolbox:latest | | Chainguard Wolfi (Toolbox) | | quay.io/toolbx-images/wolfi-toolbox:latest | | Ublue | bluefin-cli
    ubuntu-toolbox
    fedora-toolbox
    wolfi-toolbox
    archlinux-distrobox
    powershell-toolbox | ghcr.io/ublue-os/bluefin-cli
    ghcr.io/ublue-os/bluefin-cli
    ghcr.io/ublue-os/ubuntu-toolbox
    ghcr.io/ublue-os/fedora-toolbox
    ghcr.io/ublue-os/wolfi-toolbox
    ghcr.io/ublue-os/arch-distrobox
    ghcr.io/ublue-os/powershell-toolbox | | | | | | AlmaLinux | 8
    8-minimal
    9
    9-minimal | docker.io/library/almalinux:8
    docker.io/library/almalinux:9 | | Alpine Linux | 3.15
    3.16
    3.17
    3.18
    3.19
    3.20
    edge | docker.io/library/alpine:3.15
    docker.io/library/alpine:3.16
    docker.io/library/alpine:3.17
    docker.io/library/alpine:3.18
    docker.io/library/alpine:3.19
    docker.io/library/alpine:3.20
    docker.io/library/alpine:edge
    docker.io/library/alpine:latest | | AmazonLinux | 1
    2
    2023 | public.ecr.aws/amazonlinux/amazonlinux:1
    public.ecr.aws/amazonlinux/amazonlinux:2
    public.ecr.aws/amazonlinux/amazonlinux:2023 | | Archlinux | | docker.io/library/archlinux:latest | | Blackarch | | docker.io/blackarchlinux/blackarch:latest | | CentOS Stream | 8
    9 | quay.io/centos/centos:stream8
    quay.io/centos/centos:stream9 | | Chainguard Wolfi | | cgr.dev/chainguard/wolfi-base:latest | | ClearLinux | | docker.io/library/clearlinux:latest
    docker.io/library/clearlinux:base | | Crystal Linux | | registry.gitlab.com/crystal-linux/misc/docker:latest | | Debian | 7
    8
    9
    10
    11
    12 | docker.io/debian/eol:wheezy
    docker.io/library/debian:buster
    docker.io/library/debian:bullseye-backports
    docker.io/library/debian:bookworm-backports
    docker.io/library/debian:stable-backports | | Debian | Testing | docker.io/library/debian:testing
    docker.io/library/debian:testing-backports | | Debian | Unstable | docker.io/library/debian:unstable | | deepin | 20 (apricot)
    23 (beige) | docker.io/linuxdeepin/apricot
    docker.io/linuxdeepin/deepin:beige | | Fedora | 36
    37
    38
    39
    40
    41
    Rawhide | quay.io/fedora/fedora:36
    quay.io/fedora/fedora:37
    quay.io/fedora/fedora:38
    quay.io/fedora/fedora:39
    quay.io/fedora/fedora:40
    quay.io/fedora/fedora:41
    quay.io/fedora/fedora:rawhide | | Gentoo Linux | rolling | docker.io/gentoo/stage3:latest | | KDE neon | Latest | invent-registry.kde.org/neon/docker-images/plasma:latest | | Kali Linux | rolling | docker.io/kalilinux/kali-rolling:latest | | Mint | 21.1 | docker.io/linuxmintd/mint21.1-amd64 | | Neurodebian | nd100 | docker.io/library/neurodebian:nd100 | | openSUSE | Leap | registry.opensuse.org/opensuse/leap:latest | | openSUSE | Tumbleweed | registry.opensuse.org/opensuse/distrobox:latest
    registry.opensuse.org/opensuse/tumbleweed:latest
    registry.opensuse.org/opensuse/toolbox:latest | | Oracle Linux | 7
    7-slim
    8
    8-slim
    9
    9-slim |container-registry.oracle.com/os/oraclelinux:7
    container-registry.oracle.com/os/oraclelinux:7-slim
    container-registry.oracle.com/os/oraclelinux:8
    container-registry.oracle.com/os/oraclelinux:8-slim
    container-registry.oracle.com/os/oraclelinux:9
    container-registry.oracle.com/os/oraclelinux:9-slim | | RedHat (UBI) | 7
    8
    9 | registry.access.redhat.com/ubi7/ubi
    registry.access.redhat.com/ubi8/ubi
    registry.access.redhat.com/ubi8/ubi-init
    registry.access.redhat.com/ubi8/ubi-minimal
    registry.access.redhat.com/ubi9/ubi
    registry.access.redhat.com/ubi9/ubi-init
    registry.access.redhat.com/ubi9/ubi-minimal | | Rocky Linux | 8
    8-minimal
    9 | quay.io/rockylinux/rockylinux:8
    quay.io/rockylinux/rockylinux:8-minimal
    quay.io/rockylinux/rockylinux:9
    quay.io/rockylinux/rockylinux:latest | | Slackware | | docker.io/vbatts/slackware:current | | SteamOS | | ghcr.io/linuxserver/steamos:latest | | Ubuntu | 14.04
    16.04
    18.04
    20.04
    22.04
    24.04 | docker.io/library/ubuntu:14.04
    docker.io/library/ubuntu:16.04
    docker.io/library/ubuntu:18.04
    docker.io/library/ubuntu:20.04
    docker.io/library/ubuntu:22.04
    docker.io/library/ubuntu:24.04 | | Vanilla OS | VSO | ghcr.io/vanilla-os/vso:main | | Void Linux | glibc
    musl | ghcr.io/void-linux/void-glibc-full:latest
    ghcr.io/void-linux/void-musl-full:latest | Images marked with **Toolbox** are tailored images made by the community efforts in [toolbx-images/images](https://github.com/toolbx-images/images), so they are more indicated for desktop use, and first setup will take less time. Note however that if you use a non-toolbox preconfigured image, the **first** `distrobox-enter` you'll perform can take a while as it will download and install the missing dependencies. A small time tax to pay for the ability to use any type of image. This will **not** occur after the first time, **subsequent enters will be much faster.** NixOS is not a supported container distro, and there are currently no plans to bring support to it. If you are looking for unprivileged NixOS environments, we suggest you look into [nix-shell](https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html) or [nix portable](https://github.com/DavHau/nix-portable) ### New Distro support If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it. Or just try using it anyway, if it works, open an issue and it will be added to the list! ### Older distributions For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04, compatibility is not assured. Their `libc` version is incompatible with kernel releases after `>=4.11`. A work around this is to use the `vsyscall=emulate` flag in the bootloader of the host. Keep also in mind that mirrors could be down for such old releases, so you will need to build a [custom distrobox image to ensure basic dependencies are met](./posts/distrobox_custom.md). ### GPU Acceleration support For Intel and AMD Gpus, the support is baked in, as the containers will install their latest available mesa/dri drivers. For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](./usage/distrobox-create.md) documentation to discover how to use it. Alternatively, you can use the [nvidia-container-toolkit](./useful_tips.md#using-nvidia-container-toolkit) utility to set up the integration independently from the distrobox's own flag. distrobox-1.8.1.2/docs/favicon.png000066400000000000000000000012641474517124600167770ustar00rootroot00000000000000PNG  IHDRa pHYsodtEXtSoftwarewww.inkscape.org<AIDAT8KSa?g簳i&\:JZ_`ȄnB,R**@o*JdΉ:lG9[9n颚 \}xއ+~uphLx)ۣbڀ#>zPwNA@($i'T;ESSK CYilGوnҏY$Q4oX~-"trMDQL*$|jkkPU/'(,,rn X@U]+I)6u>es3FG{99F?M`ۜ-P|@bgQ%) ~(gF&hmiJ5*=}h}_zC z  GR`h *Q1,әKv^b_|EDdSӔ"8@=@Hd<|LM}M"{<Xzo kg82DˡB(sҫ ߅W/pЈnQ-*ƭF /NƒjBIENDB`distrobox-1.8.1.2/docs/favicon.svg000066400000000000000000000055751474517124600170230ustar00rootroot00000000000000 distrobox-1.8.1.2/docs/featured_articles.md000066400000000000000000000056611474517124600206600ustar00rootroot00000000000000- [Distrobox](README.md) - [Featured articles](#articles) - [Talks](#talks) - [Podcasts](#podcasts) --- ## Articles - [Run Distrobox on Fedora Linux - Fedora Magazine](https://fedoramagazine.org/run-distrobox-on-fedora-linux/) - [DistroBox – Run Any Linux Distribution Inside Linux Terminal - TecMint](https://www.tecmint.com/distrobox-run-any-linux-distribution/) - [Distrobox: Try Multiple Linux Distributions via the Terminal - It's FOSS](https://itsfoss.com/distrobox/) - [Distrobox - How to quickly deploy a Linux distribution with GUI applications via a container](https://www.techrepublic.com/article/how-to-quickly-deploy-a-linux-distribution-with-gui-applications-via-a-container/) - [Using Distrobox To Augment The Package Selection On Clear Linux - Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Distrobox-Clear-Linux) - [Benchmark: benefits of Clear Linux containers (distrobox) - Phoronix](https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1305326-clear-linux-container-performance-continues-showing-sizable-gains) - [Distrobox - A great item in the Linux toolbelt - phmurphy's blog](https://phmurphy.com/posts/distrobox-toolbelt/) - Running Other Linux Distros with Distrobox on Fedora Linux - bandithijo's blog: [ORIGINAL](https://bandithijo.github.io/blog/menjalankan-distro-linux-lain-dengan-distrobox-di-fedora-linux) or [TRANSLATED](https://bandithijo-github-io.translate.goog/blog/menjalankan-distro-linux-lain-dengan-distrobox-di-fedora-linux?_x_tr_sl=id&_x_tr_tl=en&_x_tr_hl=it&_x_tr_pto=wapp) - [Distrobox: Run (pretty much) any Linux distro under almost any other - TheRegister](https://www.theregister.com/2022/05/31/distrobox_130_released/) - [Day-to-day differences between Fedora Silverblue and Ubuntu - castrojo's blog](https://www.ypsidanger.com/day-to-day-advantages-of-fedora-silverblue/) - [Distrobox is Awesome - Running Window Manager and Desktop environments using Distrobox](https://cloudyday.tech.blog/2022/05/14/distrobox-is-awesome/) - [Japanese input on Clear Linux with Mozc via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/JapaneseInputOnClearLinuxWithMozc_en) - [MID (MaXX Interactive Desktop) on Clear Linux via Ubuntu container with Distrobox](https://impsbl.hatenablog.jp/entry/MIDonClearLinuxWithDistrobox_en) ## Talks - [Linux App Summit 2022 - Distrobox: Run Any App On Any Distro - BoF](https://github.com/89luca89/distrobox/files/8598433/distrobox-las-talk.pdf) - [A "Box" Full of Tools and Distros - Dario Faggioli @ OpenSUSE Conference 2022](https://www.youtube.com/watch?v=_RzARte80SQ) ## Podcasts - [Linux After Dark – Episode 07](https://linuxafterdark.net/linux-after-dark-episode-07/) - [Linux Lads - Season 7 - Episode 1](https://linuxlads.com/episodes/season-7-episode-1) - [Late Night Linux - Episode 39](https://latenightlinux.com/linux-downtime-episode-39/) - [Late After Dark - Episode 16](https://linuxafterdark.net/linux-after-dark-episode-16/) distrobox-1.8.1.2/docs/fonts/000077500000000000000000000000001474517124600157725ustar00rootroot00000000000000distrobox-1.8.1.2/docs/fonts/Inter.var.woff2000066400000000000000000011724001474517124600206140ustar00rootroot00000000000000wOF2 S4URJ?HVARA`?STATF / D6 T0 6$N c-[һ^)ľ#9bJ;"wV*UZA&m 46(xhn_́c >_*i53{3?QQDHREҒ+<`Q(?)(N ? AU*Y$Iduͽ,IEU5l0Ԋ߬o5`f&z +Q ^00gU;8lwp{/B"As1KIajQqpʠvU6UubRjb^)ؖmm3?)@=Ʈ~.+hA]SSPKc,n^m$`Sb d@ _@]54C憎 lf괲T5왹*uC~ta=6@0[&6e BX Cthm(wN~O[\R Ma`="ܷ7侃^8_&[7d ٯbq BGQof[ZCjm<HhE:`C B.ZHAхdqad*5IS}Dܛ@9ylՅU]zY\Qb 0Ҩy`xdta PY+U!K|BLE|<>>,^hb ƽn7ŷ6C M RltErW؀Y TIfR9>So*8!9v ka|" -ͮ6 >B{Ҋ,]s;~@1Xh U߉<.STNIq'X ЎKں/~b?)!Sԍ[>^4X'.Ȃv3)u=2`(~$Iv~dHUS }4Ld}#N/\tlQώv⤷;y jb)*5 H7'2xzK 2637F5} RbKe9RzǠ1a\P|p4h硱{hf$}ʼ%.%P"HFA"BvIRgI Ԗ!!=ji}ԦI_&\Mo8Թ̕;5^7'^ ȭTma__p%jGY}}d%']aY$&@ {MWh8vsgcg䢋:oOKizAt33rZv?TzӸݺW.W:TRu7yyiYۈCS0_9FBqXT_/3kbub${ԣgfrr=%=߯i 8FDALB2%36-DSG2M+E2Wƪsҷ*jSDR*6fL(0S0 Cp0 z]{#-r[4vnDc1=m0#< #0 Q2QfA?EQWs)nOmM).MC)6ǥ9oֵMYoI9sN8@G_ZAu0?.;Mrr?jh|pjMgb6O,,"`a1A$`XDYD0&E("A$V{MWR ]+|9Qg\sPMMN~VUn-'|6Y:@w `כ\o-ﲬ~-HLeF#8;8"`)* ~H 2XE `[//[̔ev;yS#?Xv.}Jb&&X2fA҂jK+XZ!3į_!nN#:-EQ jT*Rôԣ.snj .L0 L0$ﲞ庬m.z.?|rggs|̥F γ46ͧ4Ҭeğz&xBe @`!1!ۦ}}q\Q0<((+R*E1lleM 1"ߕԊPy(zj) 4 `YYͺ2;h*<.k"K,y^ZE 3==5տSq#ߟÿqt~chKޫp%ZTUn-$9㰄 } HT S{/;IciD<&XflalZaaa֟.*\?_% a! !奾EvnL <iEpCK/xD"# EQ*ueo"tu=FSRH [F 5N#RЯD?sLT=jU^ŪW5 Na48#η,[1CSI@l*B K(ȷ%ԕx|O(Uc̛|U/!IKA$A (Ӳl˶,ˎ(8*%56ݦL'fgf=پNf{r:ޮxLN88L45KM!^K 츄LKGyz._qNo%ܘްYk}NP|؉g:7oI4ݦIgzyE(PXBP` %(Qbv3k@IPǵԬ , 9AS 7@yttQF#NE䯋[oٙNϗ#u XD79i,y_xZ<3,7 W[{o2ƚ`'#L/Cpq@ALv%f1 uB@a UxAl={DraTs'iiEQwU G $Ze6EmUCt6==.ڼ*dww\!Uw_ow0 #PwfZv^&/C~-3~aǒ#Dav&0&8?l"{734 f&70%P*J(g_=@4` r[9bȌ`Gzm>e޽V/ &#$/) t} @ h8'MA &wa2grۂpQ~":TT )tWT#s%AtHi @HR.*rnv=@9$Rhh+Sk#-{N3M1BfBP80e#H1! @e mڠYJt ?\4.QnEb_[rrۭbڅ_N=͊U(:utcՉ7Z*4X@2>m05dFIO #;Y+eg1R~]^2"BhdK$Re^3+~.`AD(I"(Dɖ[uvv>g_ӻM׹TUZ\]3jӡߣŬH6)jIWKtPAa<g4]}}/g !RKG#%~_uz4qwn$A=e-߲JZ?Xkr XaB0#;3^ט5K|UX* HB8EUfYQY;` tψgT~Azg,d@S]5MX1_ZIxA"L{pITWDWOl(3rB’d`B6$ܹs0,{`bYF{K?Uw9//e#CAN:6WJKK׽>;)n%,]  PTUw0Cb_l?>IʁUJ 6ƶH%ZxhSkda-k1{+?ӱG4cU쐻%v>9\6&B*Q=3YB6=5V ` f Ha|u?srgO<娅_Y]͌WLTD{d9@.3-cKARx zrU-/W9`(!%RZʿO[~Prf96}E#""R !z?%g*y˩0F!9E|l !"!2HDDD.|O(xn6*""ٔ=i9$7sEb"*vRJ,Bv?"z /"Ͳ\ or~}*Vka_{ù Bq"adk.{SkS%@X ֚B!B?s?0ь,@@AoPcuQD*8qXvnN3;j094ti#P5*uis+j_MC;ԧŇ,9ԷS~l4.AT$SFCC"D i!`H!c Lΐ:!O yZՐ!/ @lC! 8Gpȯ1X,c) HT-!L#yp(S% DVaՐ!C2:#`,xA #ωA~ c;.%唸ױc2x`/\'9{ję+t+'|qwYQVFVXC˽}YCCڇھٳjho{#%FONj8$@oBH Àl d {99` ع]݁=ہ@z6Чj a! > d| s\2 ] u0(l %(>(=(`Wwa K'/q7@As|_?Ol2Zo\ ~Iz=?_(+՝& E~Ht"Wz5Wio6ǡp$B7ka <l'^,h3jDh`5_}%o tnDIz>u#wW=fZe4Qce}ֳeh%X՚YC@ d0M*Pv P ~p!h.s@ܼߟb 8#[-Rk4{˝r5`T `L`Z` f4GJKmւ b2ȃ7.@ Iiөt~%ҁ721%I.X\Y@{5ᯑW>Kt^Dca$BPmQ haB Tkk%7B yGmSmHYBM C ,"$j# b,K JH9luioXQ"oؓnRzOTUN:>M_|5AuB;7?jf^l X[:GME\'\m;£N \Kk/ xh,@ED}t` ¹%b/G ýBik%T] a5e g~8lөt@A]3VR6{^6}=jvt=wORM )y؅Eκ뷬 _!( dDv˷j] t4\u.H\ aL1&HTCP4šUc aA]AAUiXX(<%UEpj &%>喡:z𫽄j >~Uۦ'_Q-*hvO {{5Zt(7R ZzFK; E2賡:, 磑s C5-A*DA{7@!Kۻ _^H} AYbxQ-5vStK &ee6Tv5XSQ̭)pxۍpH2cS|!!+BQl,\SOADQf:3Ed1A;^(pZ Z-q)̜Μѧ"yD$soƒ/ȸ}VW˓t#|(7q_\9:(Ylp=8SxЉƍc'd?r dVN9I2-w؄rGapXiqI(G3/PdɫϷ2+/x^xQdVF  +NaJE׼nGJ[Oꖁk-c]f@$ elx%5A#SKvދU *C98bD0p F^ݿ CWz7Aڐ jиPj _g(СR"Ie5rFK8e5@jaVYfqn2,$Ƈ#A06'M+GxꈧRi؉ Z[pTXfQm<7W}mѰ'F>hpzӖ:-Cիfn-[ܤJ/5R4Yi#l+&3Bsyr5'̠D;X0' $Lt6P.,ڹYʼnPjK*ar-r$ٷaoyv+ ==L"/beQ.Gb7*{{֪ӥ1ȼa L S 写zeUI( f}]/nL DogF.wRm6IH_8꛷-؅wOn\ys*$o^deaY )x:"tM17*ΐ ͢N"n qtVi(?r-f%l 1s44Q6tlM-qlE]Y&V)6z\_9p$ty+JW9m#n5ه9y,٘,]X<L;>e-d2L8IOo/lub ʏ5װN~E=i:EןwVg&STs⼏Ƙ]H q! 9N9&Ȇ9'0db(|Q'_D'Y S1{x츒r캊cd5/'rsV kv3oryTWL]98 ]3=,4UhJ/> =k`=AU]2 4/kǺR5G7i=ڢ=iu9\Lft/rWJ!J" 2Nuzs.$b~*EuhISRi5F̶_9]S뒾Bo N-kO>,A GDkz fX'_ӄ[Ow\χj ]K]L(K!YCjO!,{wPa.<ʩ*j!J_Đ2|8{J?xaě әExKg5:h«FoMvX~q3IeK6}SA͊l;NUG:g[0 8LLx#$Q0lO `\g+7fqǽ/lpɣ`”l=VBsgu.X pk'"_[Cyn~> UtxhMt"]Ij5UT5&E|krpM/yxca,[:иFZ)dCWf?}G[tӊP|y::>zOu]l5U4-m+Vw*F؂B.y;79lX D tGI ?3/Y y.~qC¹ѵ\;<.=xJѧ6Q7X\>%J|KGdgGJ l-qp#ް \wPa%"mDl#ڃzה..#P`\hS G*DdΐI κ~IH\s74cf堺G A隽٪G4f5ZP]4 >Ҏz 3lzv=4Ӳ'/2Zк#n賋fyG"#Qvfw=70Xes@tj&ɛN::#)|`x)ӣޝD;l}F1:S,uc62F ߎ|͖[&.oQm\|e1Rbdi=60;c\`\yFxcl} `a)rK ԭq%ճ2y6LmH! e9Å닧vZF^7ON'L>YL3 R7cxoׯ[>9}o[v1nZuQ'4UgxnClipUÉ^zL.&k붜F?~E,$ ґ5jYvJ#C̦-Vs(+̊BNSʜ!m5@R(5MC o5hᩀSC/X!b[kBX);s貁̜DfSųfl`qL?*g+h-2gsƽ_1dnG6& 9} D$G4=,4:r40sγCqW:/M x]BRYp-c(+ fXCD|KWn: f k%Xab]߀ςi$o8tIei$[!PMޯw@ęV!+Vv] Zi[o1iT6BlON-I$g@2IBJ1C*PNVȉA|xA39e}$tj-TX.tVPO_c4W{ :^Kk<AQPYT"W:%UP'"{6wVfRx,>`Ds泠PS(VI_zT屋JU+G]<( LJ-ҏL,%7)+n+-LzɹVRۏ.N b跕(:ki "v>(&]03ѫe;HsOnVIwb"1TXDOK(dPf4y H{zفH U>_}1*eB2YEN]͐5[A!6kaSFOuV~!^g,SNWPNAp'aʖKއZ^W)eZo\OcA269&NZN%B2A8̊En?8 tm$g[8nA 3hA_/LfM #ߕұ_SRxk#f}ڛp0ZώU mlֺޠiل;c)Tzp-tb)ݻ}8Hf̻:/p[ 1J ewOWnO@ڕ8k<=W^NL!x&7/jHr. 1% eKKgܗ.3## VXZ !gx-+L]:l.4S57z\XX|=1] $c麜N7CSgj*Ym'FҩL(ήNDyjJ>פ${1hwŁZ)V ƵhMRkQt0U1J(ɉn8>qd*%ӝeNdʱ7ФagIV]}\Ϣ D*l. 1AaE_Gcw0%0s8 zv¶ ?薛`\iջKW 8EC0EdSXNV2N5 U f2 \P)nvyQ)Mbőt*4Q=c^]w e| K?Y/_!=k eR_Xؖn#=i\X߱bsϲ"+Y'$*9UP}hUpa:8Ը5hQq~6~ gmo#ᳯ"!7=p+BMR _mb@X~5Fp} )g-[+#6J0^WjY68V) V"XZH lFh8϶нGY{/8K8z/[U,+6 >i vtZ3i]):խiܱ8?A ^Юn&G6tF%^6^4•wOb02w?/)8 ]V}ۀ J j@:yPFT$e񪋖ֆ&=R[ Fk0$jSQt1y&^ҵY:$y:%_K2)s)vlP<OQo젬R93IEŇn+ȃZ;rVq[́o.ѝKI^!I31lTIhlxfLl*/IJ+P@v9f#>}n%^*}26̀\~ˠJy%Cgս~% ԥܯ K\߻~3~cB5J>OM[iy[jB8R9VU݃8s 3Lm@acvQHDz02 Z ҫOI;)-2ځ- 65ލ([Zs][Zo.Թ{~VR^&{YƻH7 $|Hi#܌D舧`[9/N0Dq%xb䕥q{$>.SOFNB`ig9 ^pc>笶ڋَy)>\L+*q5\,v܍?ABN ;U!!6CY.rcd9r#˿P뗕I_maE +Bhϼ/E?]()cװYb^Oz{/{oNu|o{}o-PފּTZ|Hзr.|kg 0T`K78sD=G8*2|"ǟ: ձq hMjh&Eir\OPu^0 NzF{m J84a5ꨰFY po'vf<GG_ރ!1#Bs@W MCpHƔe}zЮcIVDv^ʋy6"o0xm]p䓚Yd/ig.ڈI"^xnͿdp!6!aΧ>3bnenwǗ&L+_{;|,^ǯ%h2[@FP $E3,gQ;.+0 IJê QHzb IH5iB)V[#K.u;Cs.rIL;8:I29@j:LgNr׸hF JNkXǨObWB%ê'Pu=C2dFRҭH!"\ Y$NLERe6WTPً}e@aPҭ1A$A04! %Y6ߑ>ʺM: Kg2VܺqK*DF$ #d\͒Ա(vdH>phxm#pmOC&lD"!Y`H"# n0~4J,I5LtKt=E_~(0H%]X*@& wu>}T|)<L$,1V @mx=6> [ϳgU!Lp2BTE%]5(kR8۸{x(Zmc8:s}7IEaHRAl6?x6{<d_jk@ [vurGRSoHlv]qk?d%J+6:IwN2EBf%7eCxQ " 8vW)A Q`_Q)ע@ \'*6UB!D筰9P+)pDiHG2EpȖr,%2{ܓ#,2B,](5u8:UЄe"G$Y1Hy> 8<-usHB!ũ -Pg!o/GF 7f<-V6QZVYt."ۮ5XO0`+Fl:L!X^I3r-M"Ǵ݇$#{I"FX ^ !|*T?@J:""ыs':SԶ\#U-ɏ SrC5BR˵Ȣ+#|&Jc1z3I&B;%eE7vmM9R8J;%ּ:P42|,³+Eh/D˴8'i G8  6ӷ̋lPRy\qd}fq_YTQo>r"vtdRg-+*Fl!A1JͰDph0B*0-O1@a0 wHTQXNҮ=7X_웡G,ޠWRRJ)L: p@J)G1c11c*Y􅁧:Sx}6䒐xqqdmjzNux&" ,|;v"rMkx4t L,Jb)SB*j 2:PX:Lm 2(pz#$ A]G sȑ5jIW<)b5c[ I5Č&`Pt$RJ)RJ֔RJ)sbs |-p%ʱk˭.YP 7S*gԆ|I'=dO'&ے++T.~#r3`HJr-WQg{9,Zl5z3BRk:=`0Iv=^fv5Qw)R AaKRYu :!+*RNUcPNLa&>a8V"{Mk遍CG+9o>c zht\ϱZkZkK6RI^>Dķ<@DDDD۴z*.CH.C&,8[ 542HԈ6ВLPN&`p+AR4r6^%r{ „j tô8‰?#H~:$a`܄IS͘5]Jv$rTȿ3S $L-ϴd3&P|?^McI Mچ) DIVT: b[zV~WUUH Ȅ'[\y c`~@V\LYF4Y-swºou^0s GDcZ}8jKԜ%ɖ p ~ NaI>)ԝ Td Jh2[@FP ')x~e; υ>F@:|?ck2% {7ml' ^n qBo )HlrCX<) |pX^V/sO׵#>\\#!|]N2ccob𙼿8tH!d"z3BRk:=`0Iv=^ԿN2y.p!zs#h0/bQ Ҝyܨ5j7QX-ע+wuJҸ<Ȗ (aO?dx;Aٚ\ .nzA#, 'H'-}˞!UR`"*/X&P;p6w.a yɮc-{smi^%YQ50-V?zerM &}|CI GO0(/#Lҧ׬Ąz RkHzS1 kO:Y$oHF*xl5o}84OSVǻ R7Iq4-H8Bbj8s#=I ; N'~`Ӆwf7XNuA*={!2woXT&W(UjV FB0b )a9/t=^aB5ƅTaZv5pabj6w.ll;5Z_Y\&W(UjV FB0Vl Jvx&Tc\H{ރGFP 'HfXDIVTM7L!z!#($E3, $+j;DO=$kvN:s aqnlN&`p+AR4r6^%r{@ Riv r ';3 qy\1} pHȴDPq!n>??0b8AR4rka9^%YQ50-V޳/?m~W(Y)M~6v֫skp;iy[uЌ7Kㆭ|O$!!"y3ש^jVoނEKo5zY#DBe9\Ln^A!R*dTNJΞ.puǘbvA̵z&#vҎ{HxD`EM cƩ^}ݛz; &o g܈ժSAqAtѫO !ը_%# *DBVXRl\!}vC] qKx`zRp".YY|wBqV_IF=T =4IJ68+$2r9sq9s9so#c$S6QOTWh0,"!ԡSWN,{/}KQo2Djթ i|nhɂmE3l)Z⡞4i%^bjX˛UQeJnuVXAc4 ppTD1|`Ojp v)Uf=5jrqڜЮItrZ3:7n{F7r;4a]_{z;O<5π^vւXyLzAEB=epC;SKS'Y lwrr(Sg+*Ry-kYm[: % iY򺤻4_;ڎYdxo`cQvi@ lyn|C L(BUM7Lv\/~ū7`phxAdEtôlk+`phxAdE2&Rx#ȦO ޾W|rl'{y`~ H@DZq?!׸3_Gp`Yyk4yi 6CgILó7} MZ஢2q`Ďe`h%e92gmM .y0 =HQwKgΫZ>w-cp8;4ar{x=`GSח`(T!ktl N.e>^>~ Q-?K\h)V"lG_'!)c3b2. ӲoQ[]ߥ#($E3, $+e;D/`phxAdE͙/,,V[u |/@= 5->E6Q@'^DI)42dʂ-g˻2# *P K8xʔPJ9/F q!ժSAɐYVmDbG'T&G1a"r*=˖{2eɖ#W|Eb{c%JѫONd$Ub*I j0}>up2'9uni抛DCf.ئБifL?xVq qVT 7H)e?t>-;j+cն`'_y8Y:|# 3rtoC-vkU'3w w?5tIDqr" w=!Go1˰ͱ-cYtG|hWJVY(<䃇 nS n*d+*(P!"Ĺ'S)QcAlʋb>7% KċVD"2BMtxT!>J'ڦ7 4IB*5/^ܗMN b/Ecb IRr&D1H0!@QL>XPd1 Y&^j7 FVd_GO%SRpne|kW*h9n?v¥&&Qo[Xڶ) gՂ9蕾&/DE{5<9 QF*ri8J hʝP+N'~K5V#YbM|M [X;t)4s Y| y#(F$2Bcs08<B%$UȨ; A1si6TV(}b FcNija B=*UUYs[dRZslr H(ljqY)sJW7O/`wYeVIDW7@pfgLq9~k\w7t,I&PY_l)loOu8׮' %A? `jW%d<=ox,onfBɵ|_Ijc߉rߗVNҁn9@j kQN|U3f#/cUO6/IF>ꁳ^Orؚ||'4cHu9{*_HQVRghI%ƕi-0rDXoG] ZJnZ y] 9D{5uhˆK &jKלRO{-* ʮgeqJGް\_9-P{e#1o#~,#1-,}q_9NBۋ` or,s^j9̵'dǪ[K_iMIu}Iɥ4'].m胍 dz[mNDvMy2˙tP3 >w#/.ˎgkե4A |ёRʀրW¹L8Jx3?9Uo*I) Oz9)_vF5-kyFe8i?3cQY9">t\pToIy KCK?``y]J_O|&c~X/>bn53㨫.}d)5O7W >k 4Y\-ţoVڻ(X|kg{lࢋ~/-t{Nj8dW˜D@ZxT>VS5̸Bj)sK^ v/#K#!"<+WƎUFD;PeN8Kd8(llWY2hîT^ʑWB4=< xnV6kT')~4c? eϊj&g 9F>V?Nz@rHyKN}*/-C-".Q }?|#\sݖa,' %ذ<c4 7-|례VCBmuy(cyKqڹnߢh"ZmeG~$"6hbǓX*?Ԑ&fCG< ~ &l0 _Y,4F1N .;n8?P/y@lLZ_bՆ}!&\biS}#%a?.*7ahu>lVlI6m bwPlF*+р&i7l\NVPMC1bU0ްA5` 'E`Z-W"2Dbv$HړarZf K3ITx\O;s dqF.*Qd,)6&TRj|\^GYl{?}n%a5#ؽ^P,[4}3`Gwo\xgj<,Ob2/jE5oqmtg@w-L?$ekB}P8)G0pSBKΆphw^zJQ{jE,vVHjC q]b[Jrpb_=Fl]Qڅ31_x;=چ$0 , ?(6$$bI: k+m oN:,z`_{9Vc|Ǐx_wi ]ͿފҠIg_+j:l1k\3=1gEM([Su8(nTY6괟.KZj-V#j~Bd/U}QՔiRR8eM#g^^;z-WJ4Ig'|a_FnӢo,e9=ҟ1`8',(2`QUy'OuYm)`Nvf OLN3zVGF9h9pl%*yUAb E}p[ #1h`(.ݰ2>B3yk֞auH8KAYIV{=І/JY𙽧[neqoj0+oV($ ^PRjaU:JW(EdI'AoC:{wOg|T {M+3OC8 G̩'M#mjQ8ed"KJ3VACGC۠Vafz;M#*)LRK c7*FN0FofA6dNb;}8 L`9+aX.\Y~1>Dy[": p>!{S~MӾ=蘿C69ANr>%~9Uk@M6V^NMt2q0.铿钿/ʌbLOo9_d ٛS?R;d2(j *n A~2>)gsn$Q5*%cU(o*U3O (`2lpYHV7E.jWUQI>4 !hXf_ld6[ iVc쭬@.AiъAv*Yb%>_ĉ##"!bAÊ￝z|G_ ^K?um[O9+µ vXEbq Ɓ.!1)8?g!~xݕ|WKopRdu-!:E>3#(H|R:^ǫe XҚw;b̈3+6' J /iZݒ K5,G%r[ɭ[Ů{5 Sfţ>)1@aͳ0[Sf\*0Lؠm])[jᷡNpiͿCwUܘ4ou';[JtLEhjW2&Ž[~Ʋ04ˋĸ<_$d8 wO3r8"*XD Vъ]%eЧteHfà(55RMi}C|y4"Q$I"Yp< CHLxrVI4ǿ{VɚV)Ԏ.AGR^i.'~hϹ\ʕ\P|FbSͥ9VǮXbWC{n_1]Rkw{\;/M&w:DZ/{#=gm_!8OA.,~rjb+4d].qv ~?*v wjqk6׍uLNof쎘 m i͉㤍&Z.(e dMI+t{ >J#VU C4mm ;lcFw ջ^a&3l?nz*})w_h3f;] ׹ny>SnvO3  *HZ7HN$^0 A0G^jX:IF8Nm:^W:OfW\R]+^4̱ ӓ1U"9Qj'xyyxL EQ+cZwE}*5M%X@/蓋*fIfĉ!%ɖllM.9f(̲Z6 G9 ׹]g $aߙ;s8% #.a^!Wj/7zuȞq!rqpA0m}#.D-*';Dٽ͝-IC~-_uR锿BkW&_ ҦP?kS>a9ƇmR*rtZ]JP.56s% ?iL +fiYf=N_$wUrjUa>a59W ($ O,L:&׭ ܠA#lM)ޠ҃/d^Vz5,aI}aQw[TwqeAPc >>UNuE+ /@}7?~-ٽgPpi,Jet\y%JA5TQ|UÄ%Q`H-6=o0M>9nyAiߡ?hw{8IEb,5=.`\:.RHy.ԢFleG|` S5E>ʨIln!Yg^We%O5Ar:s1PgRGQop6\oNw5 S.쇃A8Kj|YM1y'%/͎o[D`2X}~ϒ\%FqT,hwgJORUdJm~=ɥl<{޷W>e(V³vo֓LQ&]y?wğ%lg{R?lSA>g:^' hw#J-'"T]Z$LS%Yv'˻SK [h)C6E9jgY}n-WB=aEA/U[_Dm ZQ%ҧ #F|te=JMi\ JIPt^Z0@M\6>a.|G7)C4QM/"qT5&V y?Il dzdxbY|]+!H|f]lQM1qET˯b_]LT r^ `Yvme=s%I8 S CWT\l./( U]+yn^S{rZyW5$0+jC`U5/;T="^_EP1(QXQ1jC`ik+z$iF_ZKJ+Ià3 c1f?ҘxAO9dίjɹko=DrQ"E]58)B2nȸq=uwua(eлN1z GX$ˁo-dXrie:i qAֱ9Er<%wT *PÊs~u\ JEaFyÙωs9G$IYlg ]^%x^uX;^ŗg\T4FhT*JR?TE 6 x u1yۓ&b/Xro画?Ѓ~gMzh=Бg"OVNEK+/Jj &* # 䋔HGO"p17zb F (RɁL U0&1#J Q0#a&JMR>[ >h W#3l.T[1w \O+E{*i  2BF͸Ѫ_aNRHp0yd Id FbKo2/21_$Vs9G$IYl8vꑣ$s$II03bW_$s$II03\bI$I$I$I$I X%$)I$033ؒ(,$IIdffff}lps*IR$eP蓓{%ԅEAI90~㉥{cw:ˎ1#yz'QMl/e}@ u?˱tF_L8:eEtQq7Q",ҷEd SGG=*a0%ñLq}ZW\w}s{x3)؇: ǩCh!+ΰ3l†:jN1#lXCILVn#[oº9GqZo^njH9E_fON +ᣔƮbwa9v䕝ߧBcp)UA< >)>y^1cC,dIKel SX]%pmf! 8~yޟll@fㆋ}49cL8+R'{g I |-+5ʊ2GkfmpxU-"|nBǛ$N/ aWwz((] KyҰ#}^i9B&'e%I90Oe":`x~>fo``f&0*ȳ+fՇecS$dmδ7^]h|҉TM+w,F" *:JbSuңהi͘5gѲK&ӿW-?)lBGcU},5*|56wNhGsMz52H:ju[jɅoN$2Ԫ÷(wl/x'< /:joI\R}V6S)zrrGWz͸ߝ㫾<{Iy~/Jyy(vcYJ ޥ+ajA ars%Ĺd쒫N)*qJ1l4w~1 A)IHQ8z))y()xqBpT"YP,>YoC6J^3i3av5ӹ#k[GJJ(};'5Nz29!Ӷ-^FPP!n2 }l";Z(B%ڽrnk!=09&JGg7dV˙\,Jۈ,F1as7r~s*XHRe:_'/sV9Ĝ~Yx\(~ QJ.sJ(?]dw.?$0sx\UQ6bqD dw kI#*EIqvU)@}^iI ̱v8gK+:yЏa;)&+S]uMץ۠!#$cغߖmݶ'5ؤ'3MqS} %RJlUW{ާ At<ͣ/@*sB*vEЯK{Ry Ĭ|Z_VtM¸$@ˑ.+K9j0 WP GV_[ǎFp<0n09gy:8)A`'[IC6XWFZwb>`~w! h28=>?T_0q;K57]i~Lym)kj<)CH'OlfC UG*z9BϓµzYv$Ϡȱnl[PBAـq e\P's^ @ԟ' ~y(g(Wi$cm.jƻ=7$q!@ojD!\ ~,rA>(Xނ''x|;QJL@MW Rʡ׍5Ú:{.so#:V,;|Y? DPDC3VeNx ƲtJ\2WXuWhOI_Y[#CF|/bأJmMƱH=檖j&F`pq"MJ{R%=1Z'?aҹ+ J@23Q˜bLZPr@32%38Ӌ=Qq%Mbd*=9zXʢsL0V)I AEa^k-`biAeY/-LrGez Y ,~ӏʳߛ9W~/:+]9i\# Ԋ0WDVQ9d&Q9+J/\ uɧgaĢX"X^ rE&GRD*a/,,v?1Y!N!fX9rr07hR޴l@9@B|0R --nz7/?R Ax(ybJw 4RaP朗c鮜v~dihm=_|O;I+u#^# l~ >[X 43q3qp&|*"QBjCF2,a\`12I$'yo4vҙfi\bSPhaST׫Kj7Yޏ6p   ޑ4=6\Ĥ:5Lfm#t/3˼0]¸>3DȏʑsZ|7޿*&㵼$[˴e2L~g칯}ۏL~M(o׿ݷ0MQ.i(ԉ3Lȗ|lіTB@A@AIr6-۰X6g}37oA @f=ik q֑Qqg! N|DlPh 1.cG8-#\BhvA8+pW"1ആx  =%z:3p: !dΩ|N:!8 p78=8`pxn#\%Ž`E# c1n xbBn0W8  z FDJ+-WT͗~J9V1F/+w w-ӄ (=gmI*vW}8=lK}իH/pG6yP|գLdj6˼x_2_;DTW P@(7wrU73ofԺy.ܬ. g&DRߥļfW͟N>2VYr:4U1_3S3 DWUe=az8P̅ʙTy3*k~2_z_!"qr}N`&8fJD`oI)c󅗤isey976̒bsb"X#_*m$ICM ,pO2Q7c6-!Ķ~\8fTocUվ]ȭˠ]C(#T:1QYGjF{6E&t`rk7 t^$1XKS RUD:+׍JNZDٿ%lEScLG$Zs.ȇ'>~۷^syo>iU[gަ0*6&FH_yx`*&NTlvRIF'3t4_ OwF_TޏfY$t7zf%77Y,WFϣ&OT3s`tsɐ\fUB*x?_Z+q#6쇳gs]?@&X,:ä/X5yΎAT-hb`R__I̟z% )-#-7 ԟh3ϗ;6_~F(?k}km}UΗcE`Nœ<Ύ* 7FRE[d9\e\#4;=p9sXTLcL*{a`eI3;U]_fW66DzJK7qJXܷoa^xԕgɅzUjxk9.TZe4"q+TK沩')j'y=mnZanSr3~L +O0 ]J#>쎥X$<Ej~5qdt,ļWt+EHdZb.{aX$m~z|6N2:)x.D$" dS!4Vկ$$ @V`ޒ͞];QfP2Gw%p5C̔@6b+YRl֋AEQJAv]H;R 1Pztc>0d$a[TT-c,tLtX{]>;p |_"'mB5'ZBF~֔6GZy@U3^lQ12Pej37W6v)woaΧ̈́jG7QnSR f >izq/ gG \W'BEeݕ.Nz0b$"S'Vdn/&v/IwG- .bY ZY.gM?r vxl -r+c2Jus=Ykܪaܸ%ʀwURcPq9;XEeR8K`dA"(0(3d8.!=\^ sfR.%I9J2e,tьȬ*ep&BQr2ιIP.V'KU2-_"eQ2]!^@v%dUdHA^Lk ѓ%6Pդt$rOFJ4'+sW PNJ\}Kxȼ3^McRy)(I5w8&픤zdN݋ՈQ\c0Z#V@<+jsjDx̪ nvrq;ӵDW4!sNDX@“_3c35*\f.Ƨ98ď`H)r"+TivF]:bUqjh& +pZk8792txe <9BH zWzh 1z.`bU~CWx Ё&R`2MǷ_jD15i6J"""g_T\ڟ?]Q_Ի>SoȟH`^½O?v9Fau2}8L.xb 0gm\ ;?8@,\ȭr? cAdO.s!b,W/O667 ۾O:uyJ#wnvCS7?gH9ljoMȗ(?׵$q}2$/x{# bݿs{(m<WZnR>R.ѽTrh ܂6lY9`\HOlC 2SBZlҭR,;k*(^VK,D#U';^HWYP%Z KVW]W[4ޖ٪b[76MtJh5En{ bxwת0~Ev*{:4w7K7_iv3nG' rɛc(sOrO44^g.,$ i!/&EC؈LIa)/_n-? W l}״Wn_瞗(m7>/1I{sK]ه\V:7}v߿1cp{rF1kILS?th }a,!%6P;H ,Hg46*əc71klg톧#&=d IFMu%kW{ka;]STsΕ%xAiZ̻اz>PN0ضɡlw|'ۛ=ۗ=hO׷Oi=gIݓoقP)٩l:w#k` y>u"ވg˽bݞ~䦔zqkY?Nv3sOpO,l7o9 vs &w׺) ;y.OIi=P%/~:IÌg6W0<_i##گJiܴeipoor1jjވ/4(.Yt_JJmLTo)M4!hu)߭^qx?|˸Ɔ)#Z7эiTÊ-^Ӎ67X76kz%K2JQ~ʵ驃Rb\h-i$ߵ}b[ !(,ngM:}?.{ʷa?V3|#-~LB}rB [(h4tb 7P_eD "RL,2Vf2͙-fwROU=9-9?ch?G?g:}lvQj> Qٞ^8TK ը Uji҂ihQr-エpՃՉIHZ J~m?_S~# {yatW:|cg9yO Km3Ё>NuWp57ݏ?muҶH97=Vz׹5^iv޽ze9 cu&=+cjgMa QO&A5nWklЃJ&ޫ?ˆ+X!4Fuћ7Z4ϝᙴ6e*=smwD1(LǙfpCyW1鱷CO<"='#4i8'EanZ E„c_{E֫u,3M241M18ƛl\75=iPN嶸(?#\SCb[h[#q{KlQKJ*aqO㓀 ['7~([b%/n\֭]dsSHt8ASQDy7>+Aotܽ[ew,yVL$?ate`k:4LB{ &`r[` v0彽x`ԴC`LKKѼ40xoBS`V0;Miyn4?0/-G4X,d Kg|-jqkV[Zגt2B%:`yhVXΏ|[zUaX a.XPւM`mց#`=3Xv l@# iD;.MQ): 6C.`sl(l(llhXA3>v`W|v`OL{a}p#ؗvGsl4 .\L.!&v\NL+hNJZ% F8ZZF\ 4 %7me-t ;iHpGp7;Ң}tt{CS >C|7 wCAQ(D?EXG Ra]X?²-5o ba K C*FJ`"*Atʂ: P]`E9@%TFW U+TAuj͡&zP=:`K^@=G/8 (hN(S)fThP\ -Q&WCkmp=* p#ME܊pxnGx;U%ٽ%ܓ>/9>x09~x89" d*|. >FO!)>+G|Q/!_S2 r,|Bn?3=˜6ɸ^v̈́>UU臎A 8ҝqDa0C*0,4 p: C`$ (>0$@c1ML8p"+0D&LOdiMTSQP.0zӵ{2fva,Y@ܑ٬0G+y&+iH # 2#,|!ՉeX1٪ndڕnT37#+1la[7AtB6f@mmzhE;5RyWS}S^ ><(gs߾OH 4 PeBBO(,p!AE< P4PLQe(ڏ(Q 5RSCQ%A⯌Z'SAX|eQ;څrr;y&O  sU{akHYG>='h-JF4ZFL|TLF%GkY;89!#.9˨FT$Jj:vC6#3${DE$֣ZM;jF j"+Q39ZYJŠ6* JuRzݽrMoꫯOs t  4LmF#$ڋSBTU{B~3FڸqLX[k3``@"Ż>c=,&K9rɓB:QR%VUjX=rkD`ukOVSD6bB^Æ &#FhL9榋ĂhVDf- ^/ ްM6dB[.ot(jû{^"} b+>HQ!ӏ#>c|'(OlK9a;J`{CKN9Eid+F;*a]ԼObwey}"Atq0&00poHGK A)^X01F߱q7 ¾8$q#NoT1`>mp<348g`<@A2Q0#TI* O!'*'y41Hr! bXk#_){y@?>롟r_/>C 20Lp?R1Z1&$W=mmg쮽qM=LMir f%0CnYzM2+ 6Gg6=oz}_)2-r'RaeJRee[#վHuVa ?dЏ6!?+ȭ^4{=Hq:U'u&L/6h'f܇Rc{[܊u;DFވ6'wzB^{+|.t=R@]wD M~ ȏL~BhI^(6Kw~-@$W&g%WqbR옒b7 $XSU5%}JD@mՁ|z!_M6:ijxڜ%^guz>pG+  9%M|:G0.Џg3q4S5J5gDyA.FyE.E#~#WΓ#UAPmp u.Ҡrk[)]Szm}!UƤL̘ʜm!- B?ųv]wvS3  < Qi? Z7סhOHOOo{q>+"Tp7AD.tGt]+Q [xQL|1|u00e"MQ "Dqa&L(Z#Lcȸ10 @@fE``"y ]D ,`>,w;HZ,#W,H ] z1@Wi_% 4tCg Ps䀼[L)~&ӣ"p/ >pp&.9rrZ]uVӍaIm&G|[j#X-! awetװaW7n{u[qj1~U ?aGE}0_q$}(oi/e}8xAEIO]++UWu'&P̃m<5*$Dy ,Nx%H(Q Utt! 9Ǭf jEծ]w)/w?ƠA51UjQH!#Flix^ĝz KmoI c$m:,,mzؾF\\xxUЪRN5o5Ä$]+ f.ɦ&19 S`~y}s]?< fZ}mښ\vوWHh=.1"s7Ă$znc^zum 4,xVY2ZDK:#7#wc_-i2&ܸ!qOyR[ I$9,vUGris"}e R O *US㉥5੧ԩNFbeX񺷄s(#{Mp'?r {p{S 8]tJ]˩RacWwM+_3;'.*jjŞ4dV6lXV"!F8"F#I>J#)|46+ƍ{;*0H1EҺУG>}c@U6,o G>fG>~m?+עo"'!!&?p}~ѷOOh4>UA=r>Q+ #ʟ`d "%YkKERS~j7w^t*5[3.p4\v7T+GqA,ŝ0Zd#?eaVb_gD S▛<*`*^5ꫢQuRXW_zACy[\4ۿ?G[og`1޼@|;X㠑M|.NP"7%č$oa`\77g(.\#] mUmzʁ$^#y;.P^h]mJ0ټ?`t ^LjN% -~WNep Tø ytܼ܆a=Z#clXݝoz*k`z;_bTY (ud9Q/ ^U9jfkVSF T?L$,":BT>}80a߯|ER/ϊ3^Y)4BYW%Jٸ#ȦYcjIoA@fXpgln㦞 z! #z {e2Iw!E.E|/D08'} ØEYdrf4F-כ7 W.$0&xn+Wy x58vF4jBHK4 <(1M}6 w,؀gQKDCe`Do`&c~,!ɱLkaN b-՜Y2Ϸ33$YD` I8, 6_) ,}Ô5aq 9az5g#BTdPS P84tu\̠;\\F_Hi6yw ʠ 96艈A? @@GS I*Ipi%ګ@ Beq+-֪;aŭlp= SRHַI n$?g;ײpޅpC6`"P+7Py+WrkvI][$?q]Lk7](.ع b3W1Ui}gT6CyapYK2c~L㶨$~>+ʹiYy~;q(5hQj5dov=G^pCЗ-ԈY]<RzH٤v2S֮qM@7B2j޽;€*Yd]w1؀bsum4'OT9H[b @]A;B'@_uk^7fz=$(s"Tt%S)N,2!C)E |Ս7J x+u&,ɲ)@+#,TS8lU&s?S, ?b'U9U]Ӥ} S8#gEidۊV>I-%Z054N*. ,aCCtHfb~1Q 5v#*ǔ{O}*(ސl/(@C jZ6`C7gCL= ŏ 8a#hD=.0PS! dFhNU%AZs;O' (%8QQ@AG( m'nq aXGtEf8UP#/.p&N+$i]R+Of}``|;9Crk]Ǘu W!{_Uy֛+-BLA/XlrŸRx q:p@췝N{5r-! bl'z.zb/܃vs|T4˜ظ5Jw#G48^=~F9CJP(S[{h6R?B.]+>I.%φj9 nIwx/0}h=m`fdI{4 aC1No#0 Xa.`n!/QG$902lWGqijhgwͲ`j~]EtLGc@!rd f~|q&._}|289I@Bp{ϊnr o'T Z78TJ{Qѫ]=wu9-KۗިQp[TtXYj.|I<.Zwm Lq+3v`Ώ/_0eےIdq\I sr5/ ۅ,Qq'ŏ ɾSN!M {2P%1EV4竅pifPlP$E&.jMR`(hO~S}:w|+rKZ$>椅[jD3'MF>*E)lTW@v T5S?`i& a[,} a.o :@&0ӡ0/@U4\Z`DnC--X.3L+M]lǀ#l;$,}rɠӄVLDf7_4Ps0& (~jHO ^TVs|0o>qIhSB4$p 2uoCְ4Wf0WD;нh3_G"ސ ¢Txʴ:č?W>,ԩ. j׆Kt|Z">䚍n낵ģ9=#A>j3 誮x~^}M4Ɯui#:丆s)L<)vӔϓ7ě+"̪3P&iUJ,?g?5U9D"F$LYeOԯ ("$fWc:o+)$>DĐ.4Ev\dE,֜0i~>\>=CSP6R f؞|^cJk@W(ńRU- Zo0qM P/ :ָU)g%9) -n|DiOKWMa[A3w"7Z 'Ba1Zbv|, ^h2:yf|- =4?l@IbOq TJ|BoYӕ"|EatS0F3PV-J GOx- `&jrPxg9y*((\n-X`q9ЕIMvop 3Hl,ؔg˧b]s3Bqqk /&8gi; D+x&`16 G-|/cC9yԋ31p-G("mh jy0b#K;=k:PᾃxJgC;(Gkr.{R1'YkuR ,:5u+H3[#̫`SFʪo3<o^* ^D3vaP@`dJ0TCdJܼhL&hc[y kמ| ]X q'] V0pn Zsl1"$S3&|4Z. SJf;Y?@i]RQt^8 +7`!u+^Hodg˝q9:-*ItZ/JuvTlj2*qdh:ϝ>(tី>Ϫ͞?{aٳ\B>.J$Wn{|3lpKĻrs|.P|AҥX?xOsiJXj<Xpq0V NK`B2vEC1 oCAZ1[V󾚾񚥨ޮk[@{;x(c蠽 ?[R+ r[Ib9'׾|Py RB i G=" E$K6w mSu0&ker۞l|P6+!ҽ ]1's)'3bfdJp#;Jz-+E(:_] {_/{ahi'2gY銆% {ᜧtFDH)'W`ܝ|ݠޓH>t4j~K`FJ/@w+wnы%^.(:Tpg0i^&7vLSl]?pװ3!ZL:=?~uI~tlܧ ̣V.`K1ģt]2gc0`޸tzm7Tr4kvY1G}1(EmBgU== 95I+A,L9qr4߷B wR T/>g>twMZmtf-e)߅P#;}{1smMՅvtũ-װ9.+J=^ p %cş4D`}p.䂊#8ent2T/iV-g虡]cFcl!#??/6/:IP$JѯrFI|µ2**uWT ͗o߱FEw]uYv䋚0Ji# ѣ/5 ~)96C7 pQ5Gg̰#v(}^ Wyֳ2e}3M^˄" csU/&>\[ üᘋ  2݆8Uⷖ{[X1#&G}MN[I%ƇG8¯AW 62ep ?G<<޺ 8\H]{zkMH vIpi"=#&|?rm:bpd򸵦T}#˯ WˀFI t He(C3{:J0A&6 ډXu fN E^R6/_9MiL$+W̺}^2wYeZ+4@U:yRP}iZx;"ϵz:t!|Q%xEf P1QAhHScH=2HεNIXߨ`>&+'=|NKx`E(P=At$tSZ]@ŀikcn2Od5\/IABnC =sj%˟Q3|c}Hˡ27d17"1BDZªĩqi\Gܼ YI=>P"|Q&GQ}ĈOVzhf-Oy9iqN1OJ(6^'ʅUZi- sMmʊc3V\Y% 9Z._vdftlvlo`niNOh~IFÔa̎NsKk&ݹflDOu=-71gF0\yG[*R97{vea TƜQkܴ@13tԝ^5{'램-ǥ?ß?3˕?q )5qw<z\Oߪ/WO\ nV}JEvG|8|/EI2)0π##k1֑DQaz Uvdpg(E~4.^*nz|j7(qN~-Erho)Xþ/r*/; -箩8~|Y%O(īhњzٷCVUP*@zu^i2`ly;CkE)_2V]SS? kUKF=i/wrD_6AwT8|X;}?^L̺Y^W'8_&PhͱO]Vp-WvU&P๠qrGwi-QCיm+>سUvb@t1mYSp8⎗ӊcn{#l!;jg|ANt={&ZA2= k1Gv̾ĭ9M(}w&ZMV@B%gsNûD+)-rD`Kj.ø@?RGYQ% pk(#o: Ar=P+ 85fI TC430<n cȕXͰ(A+y'O~R||7XƉrbQs zn՛z89cA- QK ,ՙlڐ"<-$#6Rjŧ`}!vZxZ, 2@ "f@6vs_T'<-IQ͔h8  i޴:61bsnܑuYqL^w%ivm@ וHv:JY)1{H>;=[e 'ldPO gM[MbŞTDX@H(*"G6:|J72M/Jexo'*"fȽ}Ύw0}SЕ^KA++R ù= fgNyeKz0w[+WϳAǢ802;lMPL 3? Wv3cc3K'M:IJ}ωYBZhztuNid^7(WZ<bap&+NÏ@H;݌ĥaJh硕iwYaj"ot>Fl{!O('@stCAvEP"LD박"4 בvlƦ2g m@ѥ_[T,ګKH#D4 .;ceXS*Oui Vͪ>լU2(ܕ빅FsJJBu/Tf?W wO׶$Z[֔J6!Yg 0~또%`9އrP8lb7<7^yc=41m rֺ?c.N~w/Oͭu  ru+_uRGf3b7 G0c;9LKQ ",^gR HLFb\LҭGMk/ =aAYUM[Mνj%߷ŋ 򡑋euL*8p`ScF +·wڇT5olYH_ Hd}QF5^m@NI Oj|&U'0mWwMySd̥TTK&o< ^N<oj"/8ŷe,R/x XntJQ:qk*Խ0E:RL=%쿨]YjkLe>9O'> +lFw򆴡4i4i'I2PFȬ$Q'Ӂk02} b3# [H!{Oހ`G M a9DFTVvFl7m7jb#$*6 O8sJX ztc)R@tt:"= G{ Кt8ڟMkP V/faKfU UTGɌHHs5H}Υjw&LZ@L|q:=w<8eg jU2tvCao=7p1YVΑ"іߠ)1 &Sw9'`ȑ(LA$ip{=ݻ 'gv r_gx/Ճqw+_T;y^I#W‹X;-(T8.Q3=h#ѐK4aE([OOPξ|,Ne"b EO#]ƱVb_H3>v U0)Y3٥.IWT;lB0+BR`F+-}*,'_do tT2So1%Hؘ)ubeyQn~pf=-UlY!0gR[1,.=9VK.8%0 #%]{А^rw{~oy+;w7t_M׾m wc3\FplL XA))f1rl. ++7%J `wZY5{&WPK4,k;fjB]pܣt`k2/f0=y o `'5o$mOWXf|U|;SL%L&\,w1?Og jY57.ўš1L{QC+ c s;e5q:ˊ0v>>&m}Ab3 p0noU0"[ Q_w(P9$Gu֪9ջ1C ,7 ՅH$-pܘ0;8#B?U[ap$pcp BC:]mY(#cgH3ZA]C6` FE̳e ]ޢ3w/]v}1;+Վq/r9Qt䲣ˠ\>Czs[p2)Rl^]k2{;:3K9kqjc;J²֝0aBCUv!PvCeES3oڪI/sʶGȪdb8Dʑ&XM pV-|ɧ;69O]"NG8| jUkKsLcϩl%F9$'XgDܴGW2c˖M^_FSS>#ĮYzgKm$C% c0&0}D<*{rO9.AA2荒:Yk4@T}&A4@چ5f*Ҟv'o7;Sxi!O1{ѭ 7ӱT= +"8܌2/u 想L fzNX !0+75~̈>5}*eua&'}@l4`5οڴt(yevW?ƇZUjt^,zf~>=gKqx퓧N rv@D  ![mCTNp I]:MF\^p:Rz4ٟ]\.~p5i͙6pon¼ny) &bИvx ]$4ng6?V:w~pc1ge Nx*n:=7Vse½ƻ݊ᕋwCfޠV?@;H)]=*O,tV p^ 6;-?b={ KwUcVWbVo-{:2K*PMh}wj:*cHiƤ)o~wUvPd>Kܵ!w3> _&]g!̵AίpZ:dk[C/5c^<[a9ե.@0:cޏJ~/ja, vb;}ǍbA(EePv_=ՏCnL/$*v%vϋȇMH @ H` Ͻ&\Y9_zXզmPKGN+bȔ-(-^X}X~1]jp͵pƝ<Of?fcoxGWÂ+l8pژ^ my-gVRB :.c9,OX&>VǡAwykU-{[\D0ҤW@6Ÿt(~UKGx8 ."@9P `IA8I:\]yGf5P1r~ *Ϙw\Շ?V ;cFoogЯvH\gKUir =l5E5P[ ο&`=cz2QK^9X190JXP󫫽: ߢ?;-omº n ?x-UeTpʡSjR0=('MDN~R0Oeo] L}J - +DTό)wICV qrl@J8=!6Q,8G|eG,}`:AkUvXZH oacNV Ӌ)' oLUTd~-n4YS☂=N̊H}M9+)z_Q`燵yaIhFشZe)γ'GFxiB)EhFQM8I/s׫&Hg <؜{@-c9 \i0l9o!sV޷U|mOΣ/@gM n^\~Uroڤ74]WE}@B @'n3jn*O 5K)kC])^^5Nv6g] Z^ɖh=w|}IcXo'܇6901t}od]M{'ںuO;n7DL {Jz>)~.0#+%!Q9M%%[ֶYBڀ!g7 s_kngjmSw#Vh6A@:y k``ύ'S@45l1hXb"zpj^:UCV֐)A{ee˴mM*P꘡YA V{(*7`{} O mX+@\ pڂ?zӔpOh OJYY9$NM3L7yE>|.Zkρt5cQ*5(UDne)|wѱ3D9QP@%*Pw*hs¯UY/0L厳g~.Cû4o d{a~Hcyޓvp_[UU:'2|J95ÿRV< _oU|\pbixgbGy{urW2<&kI[[p*w_77w\.p|Gᶳ-N|0Џ9oA1k!zwY [U_՞"#O13ۭC| ]mZ5_u\]7;Vz~''9F?ŀ?Ժ +ZV>q>@om`)@x0b@?voڹ_agR1{@$ܘ?Cmh-Mr[nmxOqt<p9a*\@!*cmf69η׫l^Xej=ɞ0w̼v#V[RJn^9;667D۞[e<̕"IegGf3؎tIc=vCL6^'!}ZE"yh1+oTP"2YhaKf>w( ye0g*ԐhoU 3seRQhZ~OhH5!ux4R ~1._F״{X3 t; ޕur{*\:hrΫ/)yQ]BF^(=.2R{[$=C '.s+,R/@ Cvu9Xz zsr 쵚_˗r/._*,mE]4^nWz[{2\nFh&Ts = {ywDGOXZ^ x,oO zl] &/}hx{c ;Scpr&_U ^XSQS"ngk69HBrjVa?lyY]ia6ʣ[}.u!)kgto]+w!E nw*} q7q+_QOVYDj.ٮƁC?TfT%{{bWq35"1 a/Su6,+k׵Vcͧ/woQ}1=kYKE*g-Z!!kKp+J#ʡm}Y))-)S;wҳH6bČ7'NRm?*T_c&XVTgI*~0Qsj~Fɍd5k^ȮZSA}_X]|pJAZrO[6ٍʹ<pJMC3JhReElRÜH).B z;@BKkwB/#q,0`ib\53X_8]3fV?E[7d(M1U)4*D;l}a}y742)4΍YчZͽɡ7Ȏe;(޼ao}MO>+g<-SO؇q~Z֔1s4r;Zut"ZdE] ~ģo1 /Ǯ)V-wݽE<{ǭ=^)'i!4KWU:KEkj/%"=kϠ):>옂9sIQ]1ߚ]:xPPdL*)^OO@.j6FP@ 9==8Ncp\"Ŏgt "=VƐIWIft{X <9E&cjIs5>(( Mc1bhvXj@BAwxn ; ĊC6'QÿPsdMRoC'wyGѣM UnW@i '3ox{6|M}/B@3h:~wr.0οjj NM 9[\_Qj͘SOr SA2Z[#!6g$hS͛wU]m&Aaiq+Y*g7 ?1֕4XFJE<*>V[]Vm !BM0trЛf@L\S\H%ն*C]!r8JdSJ&}}vBTTww<Ûe6 &bgPĂ. f`p8Lj8al1[ ~")ˑBӊé,oBǨ)͕SeZ/-MI\ t@ʾPƴ:K8bE ƃ7la*+eykTUj9C>\k`GL|TPѢ][W׉W_gOzKq^0} unX]> zW^ӯMŒ+ɀmtjzb]wu$Y[t,."ep0\Ä)I^3֢ϤA^9!9ԳD>&1(!(lZ&C,s n'zV`0c3)q@AW ^H&rE9cr2ZW$.Õ c9$<19nyҤ6 ow,Vq+o@H^oqap h¾Y@A'oj~S9vW~'4T$+5F㸏ҹ tʿ{ij$Ҏ2z.s?uٻ+&-0K^? }tC1z?BHG\e#V{;ƞƠuP#7Y1w> qp _kW(B' C}CO g8)֡ .LI5UBJr2N.m Sa݄"w=I-쐖G y{U~N  gĞ!~XP&dCcL1xHhKC#V#Ə\l`\]* ǑcL}u"Kl Fx]X~V3/@zȎ֫n =.Ӎ,|{-SdeLH2޹,TzJԋ3+mi?4Iɶ}.;1ŕୗɅ8\*=-Mf_#0Az88[,A5սsHR8ZJ\hgʯjyuyNJ`Rՠ_7K}¿,m/S5XӤRn8mpZV΢v׵P3*ݑz1YV{fu);7piCP qX!E2Z5+JóGjRgHaC͑٪UGŠKByЦK[A R~]eMxϭD0uXS>y|'U2@yi󜮌sKÊnU'Yǽܥ`zE)e 8џ_fddK?ne6{@UTj=, ey2u2&Z_+Z%)ųc&UI9`e&#YC;x$E @l6K` B9*C(Q W=Z MbCu7D ] r'b`HnuWV\c*5e :iBBח 8A?qq8B@J!҅cr攨  hX`3/,3,JbduəFbyݒ^^x]j{>w|D {<$ka {h N-KZzylNZ5Oo[2,j5B$g+lUE9(06t  LgfF !Î}-ZQ$aOV%Hyp  +Dv,U#12 5()m &F.B#^^@B995E apo uVq hL"ǠٽGv>7I$L_'#@,b=I>5kCL;gwywŁGuܱٗ__V9iQRf/$,w@νVskhJ{y :CL#^JI(FC:z&wUiQK:Io 03{IP@}𻙅 z/! (/ >$f_m!a.(.[k 4 d>@&myqwt_k/̱9,6XD&PߍL'p2U ^[پ- <ڰGP4On-ȓwnx Q9]Ŕ6^/’œ<<gDR$P,_]gpckuC I79Ufl&A)Y7țk5sdUbBҴJ@)gC} i41Ubfu{}f`]%>+rSsSŶTST|ZJO0qRE\+<\.X\48$oknS2y<%l4GLj׺Sk~]{=67ڐT@Qe/JJokbM|8aA*ݿ}~Xf.@D0<&.Vy[a⢨~ThSSa%I1D| B^Ke<={>dyF+"vvY]y*oS;]08xH?/@n++>\ba\=yܞ*W=hVkU quG+ǝEoޤfȢROÙ? GZfU*gX,dp \9KĻ ]Fa?twm˼ >wypԯE*C HVw[}b'!@nsBxLϩfBbѓ ~V?vqC:גzl)Ռ֑D2.GD NHsX+a[JO4(tPIJcaȳ7 )gѳc`1^Wc[Ss+7$z<GZXAa{'" jo/x"Y R m$+%OJ#DC?ʰ*AjFNq]^x)l<]\C)#sهEԴZ|@yDؐNF5I3,Ici-lH"S̼|uP#0F g4QV+̐g."s)mI rԬ;{mL(xFj`$NQ+{,V#,Lj_:#Yja'&HJeqm-Id31s4ZX6[0puac\I=CR4h聱`=5/8(%9'Pl64*OƷ=02=t2h<`uł'ŀD23zF)sůP+>\E%T^#_<.c]9ŒaN(mղÅוm BXR:+{l`{yէU)Ddú{\ hOHڥȎdŁ> 'kR$e7"|o~`5[ `Vf$I +"{%. ^p#:)Q/ Y "`8fy-XOy,ߞM?fJ3?}o̱?#/ߙ-r.l:X0V^t1S(M y ŽWY`ԕrڟ ?CqLLPFcj\홇8iح_s nt{BeXVclDђȸ%#FbfW4 /?'I0ܥbkP&l3 '#ѱi_`I@L2ߩ ~SmCeqN}˿"ȮaӸZk2Fc |v&%5\q x``1&!ڡ ?(Rk ^QU?F\HlaqQͼ6ljR;q\/nk RvƉ3d w(Nm "]@3 $.lD=ؙhq奜XhS~J._..G4q 4?sU7O76- &,K"Q."6䮽"^- {+%bbݒ8W]z%ZOix8gLi]_x:i 0Yb޹}D[(~FΖ穆TN624͏pʎf<Φ`ol%L,=YZ1!AX[x4P,z%٫~-POa4RBʖ9;=HAa.g~Ol>W߽_Ŷ܌YBhV5NڌFυ5205eTԬȩNOGX§GEh-5YC0H؊VZ:T r kfTzC=G.G:88g*ޓf!-܏!KB*ӛLqLa` ŸV' X otj|55~׈p-ڽcE҇)Hi?ˮ~zkv>Ԥv{I\t)ϻ>t>̵*3an{A3,Nwe;dNp#T&6pX [@[=%|RҲVZd\C=+撺kܐX|n鶮A豐Oڰz X e?p=_ Q뫪+^u`F=Ge"M>w҂B'bR;#^ՠy-#,E|_aLxyd ~佖&L!xz7* Eds )ߵZEl E9rOt4}DG GEDQ()&0RXAhۙ---C)(m*wf^B ԾU Y92`tEVJI<)q10j P0!ūIcdgR)Kq4=qtl=ΦoM;)UAoAraΣ$sNeutfv `@İGbx@E u pxJ8GkBԡwr7e= : w:&MȮC'$a5ӸCӧt2N R^O V0aqd{_'R YDP׶?gI.(6 "卑 /=P -Dm2[4%_E?_fW5xwW|fiUonh}T&ghFLDl;h@kPլZ(uQo-;ς?%UC'e{x贩>~6O~ws^ٳ$I4#̙I2|(:-v43h8BpEUrŊLh#N gmj95a\2)1 .;+=Ԃ̠)fG;&uNqy:\/`z!Ǘ7<-΢,Cs䂰-sdɢXJ''%m:QEYgmP)jx%p6rP Oq;6Hi_B?GoDC;7t&.‘M@` n6]VD#V3ID7(2);|b`֬%˹Y /hY.I{ ngTR= zY$PIm&kݏ@lU N&D5 beji#;Rn]ҙ0潗;]`V'0`w]Tf}G:/V͠XWGBo<ָܸɴMks^a*Ƙamc$ji.v>m|IJ\ /Vq ScY:?}Q|7\UG'tJqsr9KrJ1E}[҃2)` uDb+7`&Cٟ\?:D$lOIߪHVZlʃG$WW{"rj2!8U z>br9KBcCCtx}4{9oAv_ (knѡH=W^ Vmٚ$ɤY, |wAuɽZ~k%33Cˬ)l 5ߪjʭ%(.=[f ek^ϊC#TudZ;(y̮dׄ)aHQ54;܈񹃹:vۄ`ˉGm$_aD9ҕ]k0Nqr#/gP|rlvKn6v&ഉx: I9aȻ}pTp~rFmL9ƿᮏ5_UΏ ?w& )^H/ӽ8|+_5MITG6F;=8>5 bBFX 7]x&{|y;sfKK}fRB|Y[vl.uHfyk|) 7dreOGd־ew91σaHM߈/XD?y$)m~\M"d E+T~C.:̍ @^.@$:IJOO1N6U*R'ZN@Q4(!;-9r(rȡ8ƇP]g HAAٔntq%E 9V{!0FH/Ai2m7MJqT (fY}0k4f- yd 4,ғ^[Ji*7߂Z ˍ߫<*=[_ݷn 3{@h̒ )Ϥ[Hpo~ѭԝee6*6$P:-[FX ˰ɫJ/uI EErWAĬd#,+ϲgcvZ*BrYQxU_ʉ7B .q ƤjsIҜ2F89GJ^P]o`&,wH6ܰ.ZH$"mfZgG&E jjM Ktw@o'HϢ( 4$ang$͜mu$@̓S wmS[/Tgԩ&' y(\gun᾽ %  o;~]tuGkN{t_>3Px ~[t7x-YI53 ܖ1DtHuJZwPgHۻj,jŕ$ p4F%!ȽT&h p߃'pa,S4˔mBƸǴF4A#=~/N? N䉨u4 ʍ>Ŗ7K΢a<^w^˝hNI׬]*K/]vAyB;òpD|S.bqD3H3:7 `f82!ߖ_Iio:Z=l`] *{H!)Խ[nl11iJb)/C +7T$R=q,\'$4[M1pqukTSv@CnI =Uz8/tWL Z֭ ~rGKpذնi'2(q?L;N^Ej(.9`~/SU)^dC^ۆb>wџG4-#sI7me_a䌉'&]rv; : l9AG [ SE5,TtI\{'[~޾#k {_D,۫lGyuq8c JH~^g[ך[ʾ?m9H:):Թ((7̍'Z#8>ٍU#6S 8CrHT7b`^p5]#ŝYʑ:+a]} I~hrto^5*ܣkǥnOhxlrqǂGUd͋{oNH0fBlm۽5;qz })-ݡNxQKQqu 鍘3Gti=鉴ysTíecR?TJUvS 7%l6,:iCS(uwdaRtfMKFG/{OXGgdp~-|TMDrI"XqtEZ=mɝ fB"THR*Ć1hp.! FuJ 6<8..T F_rV8J/ %0 f|LELm66&Y1i/fo3Hu+oNT0U j!9DDizY`q Ǎ#(Mk$WŻ$P:3l[O?Ps!&:)7U=SL@D aH(zdĈ ~b U\Yӹgw~EDbCcۤ:ꑤg*k TpKNO}ЅӐ"K o !$vYhյ97@i >mzCy1;K2P5mͅukocՠZ3XG@A^{{~-'-dTE!y Nn4VjC!tlkuƬ-9kkEVeyVS#oN.ȼE&{b`\<>bķ(]FzIΡ ,ɥJ~ BpI n0ChNvd+gs t&q n4NcoTV>Zs^|Gww,%%vgp#Rs%g ]7L)DvBUC L }!gگq2FYÛԝZR@TzKI!m|Hr SLGjS*UaqdXʘ0g)$ͫtKkHTRFD'Xs̭X+ 4kP\wn!Ptm VsQ>u>&vFY`{`_8iH8xOiK̿O :m6}JXCnu٘:2(txVxdA5q;\|av?|stƲn1Hxv.9eXѡLwN)4dX0&&hvߜqxC>۸u6Z'.ssٌ f9١  FNъI;@j<3J'e 0&MIn!>ԑ#KBJ[ ,44GPg qh˗16O+NA$y$BsÎ :sH,\'xS BY!.ep*zKphډ/ȴ [NUl.9xCidL}]J/* !YҝzR`NTw‹#86F{HET_:Zqθ޼17] zʏXwK"=ǚk RXGv&6w#`U7ZycN?R2 fE+A!Ȯ 2tA,E:~3C݉d/x p aFxBG$9-Lwxs[\fnWG+WiTh%  gΛ/75*ZDg OO$ /veu=t%42:?@y>|=s)?{v_LÛ 2k3,=ZmpEjo\V?/zŵw.,(We0 j%UQɮb^v KQ]ұj;\@7L˦ V?|Cv16'j[jt TpC̜~q״G 1!-RqQkTXz-ߪdk(?e}VrpHA(L ik?V$ZujCWVmMj*ϿM+[~ݢȽ?>(#J-F,D?Ւ&r IafoOV1BCyzmO.?4e0D4v?ӟdž^#_ebԖaPۉ-m> ={vsJ_phxszTvc_ yN9%j}i(`[@5ܪUC=_}yS{}g¶mJv)NӰaNv"3AN@hy_,~"Ouv#'nޡN{54꿼m+nG#|'>zW"yX9RR{Ѻ$ lJHyGFPPSBWvMTQ~cJ 3 o*\e]2?U? )9ivlJÖ<uƭaBlD;ƢPI2̰u꣜?Nm %4ArXgJ!F"i+݆=EHqj]x-DGt[]_VgAS–qRܪF:I2Xar:+8o@-'G2Dx{QO,lLɈ%-6,>Ti $PFdm7$!t)H4O(OS}G=/d.c]KF2MY=(Ӡ4О hÀmr/C܃$r4Np/?7`R~(Ja 3'H8x:u2Ny'Ŀ~Nfƶj#Uu"sKu +ֈl)[l3&6 ǸbS0N=ّe !Da>'4oz AF~D6j5z!H*|~;|z0@&q{@}/j,AhA'&p1NWi Q{}U-VvT9 6O^,$H«Et(+K}f*U RVl.f)!Bݞno-˦Mަ}Y =p-.Q&x LWh]vHޡJ\JilݦLMI7*$,Qb}#=ۈ Ze+`Z"CYP_aUYvY5BA_W.`%q婍&56!A=;C P>x%)|zIS&E ^GurǬxR8|фE$O3LSwWB͐QاśIZ⦎))_UIVͅQ r~z,mM7hGu5}uFY"yU%AВ" wU # GfmE S, ݹh%AUL<3-NI8 +,YzC=I\uVy4ߏ_EtsIy?LT`AI]f~fxT+hUvU79J#Rb?͕vs@ɑ`5 bS<o( _?m?z)#bJ7ʃ vG%R%_h9A EWZ@2~&:`Iq?ʶ^z%`ydtYH*Rwe52Zgi@-a,Lҙ SQס"S \7q|7|(vӞp){ bad cO_.@ tɤxВ֑O 4=R|U+ s=S<~҇ Q"{nQmSjKNΑ[KXP9՞ȞK>^IKw}CgQT'-ᅬ@:ɨu" ) gkRQ^,*k1pRǟ2+YA?jF@Q*nˡ\䬐t%yǗxD<)_Ha<1$b9(%u5LߟIt7kCr`<e/XJ.K ^(  R\I|mʭ\HZY1-%r S둟+d<Ƃ灠F*_M4*UZzѮ} ] th0M7"rV4o~*T%j//lXOG,/OHQ}̓OV^3Kp&?~^*ڱ_?dc=̉%{ a~9xoj)l`ࢢ^5"\T+0DHSs畩K]Ofr 93gV5+} ARZ+E$hJC(iPc"3^I\#X>Yi;bK <#=)SxlK05=IؚS(]llt0!UU]pns< hYyk9nU62MJ0by<:J$KJ3I&e,6*Y'A7]^^e * 40d眩8MAraQ}S|,^yocnԈݺ[W֬DBG؍\s8s"8 QyH[JjL6|}yJ2\YdY&n╥eARYI#i[狇ZHG:EGFTdl>Qw{?[LVU9;0*_)M?\u _~;LHJP\tA L@)ii߮_(e|^@`pI3VXu^}: A,]QK`$qfZ@olPyϯ^gи2u%3d %1 kʥ"Ha:;"Qʋg;mյMc PXmFC{0ӿH9*FzƬ穑/qpΩt%]<['NHY;F*Vt|OQ35[,яh@1G+3B¡܅gbM˃(&i09- dv*_gOhٞ襸5TvZ7P&ZB-ԣ$,5lIJNeuGSP CÖh-B>zd<7甏0iG ͏nGƓI _wf@yVP, >4(~;bX3$dȉAkvٛc23;f@i0ef $P"Hu  RXKtxxI/1^.5}~d~M'隵7ﺳCr`Pk CV|D@ܤKYIqGUs( (*f[{0ܣbLv])+%9zkU+a\(,8vW9L/)x[ݡ02b%]^F)k}3t"H ձ3 ^L hvjF$x7| CL) HHC)j6TG^chyam ݜź W,?B@?`ي+x2 H@8A4ok):6He@/H6|z? :g; _ .]5#7p._墠߻+՛V-h7J3:)4}mk퉓w6b n#|÷C2~68|N#O =&~8x"hL4:$'? $3slOW* ָ3#̏ńO>J_yt/n_[sfZՂar. ߕMb߹$&ee(Kp pJT8J=c2%"r}k+NS9/h7"i8ה,*W6}=^ĩLGfI󛠛9bn9E3]]oA)z"5tC 9aBP{`ur^(MMw,Qzz]:YSl_?d/g(v?;i^y 2> "*wU; :(pl>@&JQ9VvoSgiX"Ϗ\\#X-T 7A..VHC,SٽP$r <3!1DJu fei>!r=vwGw?9H2i j42=PU,QoHy;SJ}do? P A+VؽgdTUyk﮻40цwGG,Si$ⲑ?GPx>:nibys|Hٴa63lkcSBьǎJ d {|\q4X,5 ZWcN,̘= C9B|(>ԩiҝ쬸tnGV $H~v#2Ǫ MKޙ8aS0dd<4j lbbbSKkO ܵlMPJ\zmJ%UZt}X!7|)UW[Zjf9+xR αoe:8IdGXդSԝ@ Y2O*@ O!1y6&!ι˜{n>}zɓ?N_sS)w AhLtK$=mf=KY@ uKwiz-t@$ReǂMSNR;!'!pR>1D eJ^pؤ+οPBdH3psM>O̰ܘ<;2&$iI(Ռh*^$ XUbaÚ76Zîk'z\ ti1|b )ѼDP 2t*)$6QҧF =EFIJz]DGc}#d?=vظÚh6vujD2JԚW',NL=vW͑If,vfY1ϼj:VpNldɾ"` z~ n@?L{D}x#Q? |OE>!|yQEz $ꭩ).%FcFKbv5?q|\&_ 6e 9~Ϡx/mOsVv>~;}LIܞ׷`'=\nEmۥ@Kbn4Rj*RQh#U!yxٲ֝UG 9$~鬒#Q8Lw<{}F%&['*BPYC2 .v9!Nd/k>6AGr.+qcWfG).osFU1"|4H" ](hs>m͢<3W3׹r؛,\StܑSa0FN cDb#Kv[ڵow׾d?mvI;T-Oy&L 9x$jr64.Ze5&kvA]=ljQ%S7 6dLtKv(JL9(}R?C;R Y yDʓH!ŀ((% ]lX4M_2`#*~{04%NM{0(9e3.'ARbsNey浞ZG# 6N$H;~'q*75=W.ao2L>=wҔS*N2h>Ư|P!ȴ8BQHDIK]az4ĿIޒpnsC k߬&\ 0Pнm1 + }NS]1"W@ӒdT c\La*lZ俕NQ53Vfg)%@%3L2qnvMò ֗lo~P˦ 5ۥ #?ԗb`3Ry-PBb-$o[zߔHGt>jjFÈ["` F\ej{Ƹl2fMo_{\a6;W} ɂڥ.*](VŒWsDQ'QE$L9̂yZm_)ZŅsؐ8QHJY熬aMy#?1 lJFw urK;ؐŮ؃}B2|Ȓ2`#KvӜ]vҍJJw+6# nJFhB/W 7E610WxKL\N<(an=Nѿ_Epu/txSot$yvQHT.\-o~ڟ1bW s<(e[XA>=whރ39B.1.7d {AB|8#CEHynf~>N s К e_݃u3/wBءukbnB._Uz+rSS $d\i2n &?I}ηlp^H∵0rǮ9'-с?9LH<`Auو.j[b{CmY\"ٍ%طz7Uq*e۴xg?g+֥:_LkT{]6@/5^Y >XsM]ƶ#72tsuWzwFuZJOT{b7K dei]*Do]ˁ=@@ `f)-22FrC F Xa`Rթ [r|܊:60#1kZM59zDSW''gߏOӏ֏O\8/[7LXiC60 UBu~2i/!/]1F©Mߵ;\_I0aWc@]ʚz_1c\cEj^=Zh7F7+H'; 0m$II$$$$ q}$O+}Q56̓"&IPARdM*2VȪuǮFrC F *H\dŸo̳m1v 6 PYo [eIMiL10{B$|Y׍lTʀA((ļo>E$N' LlEDvpfxBIqϫX̤JXLX5F;i*tTK3W:C`_Vԍ24c 9͜I߲ }X 8+%8txJy]mRL%ArtSvdpؚhOVL}7o_/&;)6Y 穭uh-wmy930/RdrRhuzGC1 )a[R>BpDuHM#(-ҵphb"[uPK*gw: {-f!3Xa"b8;?Y968])*kЮ$Va IWY3yda?ʔ d\Q:&4ɓ"2MY-l?Mj8s&̍x-; “7Δz>,͟N!==q{=t~F|o5a}mڞZ:v=?nO^S9/\z,װv޶)vyV.֎PS; ɻ*"*CVbVp4cwZ֊S6zUG%5G'Ww֯e*Aߣ=(n;~_a}w5UYo2">̊,FDDDDD&DySDDDDDDDDDDDDQdûgO^\SZZnUo`i^j0e%ٚBLosE*I=#_a̯ mu"rJVewh<~VOb#W^?*vuQluյPÿSC_b}vg|+g-^nWNf+So ,>:m_\ޗWOO4}Sy&TK-ZdOH7uw:aab?yb;`R(-NNi,{E<A, sy_a>yJ$<eyUba'mHz̟9p(K)so8O$pMւr{PYD$Qf/`@ouPLs&Hgi#,ܺR)֘upMuԹIz̽g916D?w|ܰ?)xnVӰ?p_JW_W ny}?o*ۊzk3zew0-Z0{\Oզr͖KM6W~!{sI;+ h+od޾\s;']o\&c]8էOͬjk~{2<Κ"j0QQ.ғϞ ß!aW'0^0z`EMrbe# x7Zւ`Q0pMq6pHTtX٫{Z p`@y~pR磶Z_:wh\S=U--s`Y5ZWzVM\g:@vG<"|B~] dF-=,T+ﵒ"&>`^aƑT 03:eidz6Gz[XqUcsiv"|2R ĩ5)yhLsl̯gYJNEi{xB/J!D*nq!9^yf=o*kV1;*6H;Ǔ9 E@4N|4Eᙬ) DzR#_0{8o0iW# j4l1 {A@T$q Ƣ@F6h!mݓ Mn[H"FY9\No^]1,p ZVĝZ" P7ȭE3 ^YoKՊ^Q$i`dVJf &9;P{!<3vYSAB ։\6CPsd<@6 3Te VzLв@xD伒A^M|tjP7 Y YwX1sQSB9F9Z,[PjS[4J8`ad9jDc"F] m5ȥqM:[HГ>Gqܺqڴ\w\v7[ `7@X$-!*XoJ%Kt1fknjF_5Ro 忔 R9,G70( v@u =ctɡI|{{֤75yjn H ]2`_C+agt.xQD o%o8zƖ-Mo^ZSWfWRdF p!|vK9Ip=(V{BT!㶃 9I`ϦA hnQ;ZAXkT縤͂nA=4Aͤ]JpJ΢ø#@Zq< ҉rubiR6U0ɣ:'`[gOrFCaDzY\i<9e*L"7"02jō@K bt$B\9+1en{B NVbs~BAx*怜*x@P`+ۨŌR/W,5/=94,!6*jd6 wh[~C=v*-t+}ˈ$$ Ko$0_tP+FHKDFAfm9ߧu#_I^2-2}TQ@35;>"% !DC3%~Z"#`Hdv@:$*FIf `)|Y;D9F9ZځVҀ8W 67a(,}V9gSWW$Qj6!4zƐkkx=ڂ+ʐ-vo0q44 qM9@0Mj2]QTõvwIZYHƑYLTa1"u"Lbb1Jw3ºK³ApD̂sD1ӐC A-s>#Q N8W+I  dwV*<5JR$#:?S?I Rr(jjF<&Ik1tIWC h9VJ-U+ o6iSheT1KC^`L-(QQ+x{ϱ '|reL,5]I2FgC@)n8c!&rp"!ܰx@ KrP#F+J ،)uӮo3MeRĸ xMflT.+aŮxr\ڑC)oTDeUiwojeWbF")+(+%##_֩J1˄#?&j\:ҺDKװ6JmI:^;H17 8 2FO"%ef cQV']#PSӴpΞ(и5y;eTW`&LfPѱvuگYLg@Q7͘j7i3't.l2+Qe%1_/e1QVC_1s^l=jA|Y/lc~-%Yo-Bi[` +ʹqBGؒXW ]ob>Dٌz0,k)ҾH{Ѻ pSqygtT40dFR!"붦ך̌KT`@X]v ^Lu#I3#y9n#@kmU "@HMAкM_T3;eͦrtTI篣/(Б7ܫ̉Ϫ7a/3^^.ާՙMNUY4 #?

    Bxv:-΃H @}0X4 Ӷy(&R S^ 7,u2nU'o-gN::"(ao?[eRۡ=f]9m%Z߳z!+[le)xLfҌ%%paC6¢a a `;:ɣ"`ˈ$[}2;( ۘfQr嘳y L&?cU0LV"LF @8g3MNx G`y$C*-xBgr2:il3*h4mho,A7IK%k 2mOHx2bPk3pd}a7FSM)PY 1 HFC@2 mXft7yn LG73ؚM82WF3"GsRfla:j 3=Q=QlfB^gǛ,KhVVc43k4i9P̉$9 SŖlnX̃XUv^jާL3C9=J=5hE,0?A5v'n0p* ۿ$hl?YZL0*69v3Lw>Qi֎4hGI*ˡc1qG)F;g\lZ4Pvlz,2^I^wn6;.pqtwLv v#s a^aXiQu0d1dX-,15bx#U %lITK!֬v ^J-`Vk1`9$/d[vCzV*hAZЮZEwv"UUVCQ*=a3lj:2S¼[+lVnHhxH( ZNygZq,A瘽KH){E~:̳7y%h1pmD{nuq4Y7Jn,$׏l㙗fnRˍ5*om ux7};kQ͠룹Y Cl( C^[fWx"CKӖO[ӉLj=fj<}%cݾ1Ph;~=Ov_"JA'bT$(}8yW>)c1%̧iTX L]&|9LG'އbh6I/]Ј7fp..m}m ٸ-63MѝمU9F^gj,Mfi3C"#lٰg]:tV?9 )zEvsh4Bk8Ÿ<a_}%/:jYO4vfNpN)v־s&"w^^wI% 0hW dB>5N,vaB* fV'& ;QuE+򊷕x(EQ;κK/սz/LNl'3-o|ra9LL{0cI+gJ\ʪ#\SIu5u]v-l&H=¶^*Mgg:2B]XCSg{{,QwY=:|i7Eg]@i3K=5Hڐѐuh6Bo6b0 h O7m)ii}nPs͛yj[.Z>iml>WObo+mȵSO6dvFB$TL,m% &MZLhSMi0ij̩PM::$%ILw3h`<#VLg!eciu9r,-[+s0;G>0 69Ye6sjdՄr]1D+e mY̛|ڻ۾G a_BGw0:Qg;,e͎p4ǴԂ0ini7>.KwVfB:ZY;ū.wy],To7E>qV9v0"OL2^D\XK4^̒=4Ki4|wwYFLvYʃ˯UAll㊇x*|ReU{=T>XúFahi fX'gjG7o8Nk#aڍ{&[MahilΨZj+[g9!U0ڮf 3N$JJL9LuXI& _rxH:yxTJcZi24*OCا}eP!~FCys *lgV3bSޘe0"s/M (fLCBPˬ]34a&-F}a7SzaJPӄۙhTUZ`4sbv9΂{`k, Ju`Lh̘ԸSrNCmQ!,M[pH PuC2e8Ma ,0T.Ӷ8 R*NIF$_d(Lu3ٍ h1tfGxtJ}xyؙlSr$6Bn!6v&yc9:&lg-@ֿO;`#;I괭3|`sE0ﻤeRw qT- vp7Ul t[Shbyc YaB.KdXRs,wJû'}EҲ0%-_s:+c"*=}ۣQӕ:+T [ujOWKVBgu^WOEUf5OBTe*۵ T//"7x#[v:ttVn85?^M3|dj47`nVY+ܷ: *s/Ws"f$j"H$ٚT`TU^2d p EJ)Z`Z9uOpi4mi!!ikBIk(j->o3|&tX>e{sºBuC~4zX`buY?}hog{Fd~Z?2~{eߥgf> }/}2[/$0O1<&SV$l*HQ3Q,hm$65} *pv7897 &io[ۡיeat4>%SY 6Lb$ZnUJ eU5+E78mDDZpRX=c;1퐘xDhpZegJWufOZ*^q~vDp?hb+8P!ީܓ#^"I ˩dl. \)44S5K~*N$?j*rSO* .0G6]d>*v.яRQhS=,ƬqfKUGR$b*FZkI;`db1aĈ+$!urJB qGRH!M CuV:-nckx{JZ\#a)N œ\ZdZ]l]]ݙvy7Wܔw7gxmey[|ph$98&N#v+`Z 8WF<&+pRqn78<#Y;*ɪ;۾ b 4d_ 7\VP8ϩIT0E^Xe;q աFv~OמIk0 3eg$a@n1Vnݶyq RG!7 u7FoAF̬@TYI@G2Jq PLp\.D#Oc,h 9?v*3*L;_LYcy R!]EzmurԼFz}qABO'b/R*L%X=~Kqr,yaB`s[όYyHͫ{QV،8|IՃ҂#jZ*Ԓ9^U*+LhV3E[0 u1qJfc:+җ>5H` 5Y ?[5"lS"qba¦G%!P75qd3ʒ#LOqWaHÇFW]7c*]3f!dcYwV"+KZ!EpYʱ#Rx PwM x0CF,`a|p/ؿ7!yo%8xVwZ8p}9 nP( @5dTK`r@ *Jj^DJ ;"2RjNLu\mnn;-ɝۨR?q&e">\j}!k4Ͷꪔw";$n/PC&X1hcBՒx7 5=ذzF͏2ɌѴ6Z {`@% Jl[bVg41v#UUꞀxűeBE%}cmlaK!ʹ3(iPE`5X꧂k>n}#S3úH~ $[/riyK/g+pXJ;|'QyM˙ B3E݅Qj{hJrv'IπM; v+3J98cw[KWvC*2c鍒i0LBEg#o$#?[V.:̔Y8 cZspz7/F !Co BFS[K˗H/GG|4(} P7j M:b M!N _[[ˋi bt32'oqV*qc D5cELnVmX{J)nIf-{4̦A `zTC ayc & m0zPkzIXk0Cd5g,EETKN܇ 5e ] C2J Cx5535s)I2z`[+s< wLd,LGBB]=lHrΩn]Әɳu(,h;=dc&-z Sy))A0˭2ZXy\#1W_vo9  7T/4yͻ,k+@k\o}C_N ش2ů5d2gʬL<l,+Tb:O/]H-+xw_R-lQ~wst+L"<\>(hd<6~LfhV[n3*w~:]T%yUe'B>\o2n\Ǎ)hfO.9T |̌W=6/[?"Rz*$)25Vd 2%JH6jꉦyIkn֚/sqtR(i:O<W qeW;{!׈|[p8qΑ... 1oȤǃyR^ 68Һ {B4vf! 0!Zv(Gײp$~,|-i炈qTPw1?8Y-c"g0h d]&s62f37܅jf'3YkI5݌+Q̈z4 yb#qƟֻ,_,09O'~1gHSC}Oa>s o7YW55R=_Tdu6=z։59"̩PY M?H2CRxd0C#cdczMcKY/MB'~l lO.W @oBc!5M$p "mQ?2 ~]#rHB*10*$&;5bъ|tm,%#4P疀f 4s o@g= )%>`|P (<3n>_X XDzJCbCim ṿz>FB0Sòܙ {Ubqq.r1l_S:,"gV ܷU>|sݺA^yZ_'N]a:R{oS) Aj7> [ŕXCaI5ve;6d8RF,7Kzm5 &ó V ´bD *%7OThX&|Уw+Qͦc>Ίn(84]/LծK 9C7[&\NoG.T ..d*ك1ʴ&R(Ze&q`x r'K׀AO1cbD/]z4; BѾ_i^su}$d!)זIで pHjTX$>iEb^< <)B䚞h|;[8d)2ߨn.PP4>a3ow<~"Jπ'vr7Hh)^@0aݎeWFt}氯]'N&'ּl}'+r&Oւ߷jWźy}T0C5\S G3>Ia\]$f-xEq@QώyA߹8pa'L5t ^}yjP$ GHTdE$dwoR!woBH'.>/EyӳUϊe . XF\Bh<"4mCHmn$y\?C n@DfMVI; Wa#Wcͺ͹f@H h ;ki<ъ ҧlɅoO@As&&JLO# C:f 2Z8Zm ^x 0A5telĊQiYf>atŮ%r*LhQRA"pޠdu^}l[㱷pS{ іC9s%EmVg11Vfܼ(:Mi5_=s\aE|:-yYRܗ[rˉU^- f`9(\qVf:_Yp1*xp<[ra!nO7ҘIkH'8(UG⮆*}wQCV9WjLE <ww.#U$SZ1$%,d貋}624|>BD[}[sHiEG_ "E ^{Bt~}Q^(έ$"1vp[p$/sdG1Px:i,:?)iK9U+s`B [Bj\cR٬d6jUd vV* |>(wҴC6t9Yn{!^&щHv ij_}[R$V!3wou? Bj}m2{2_(4 1'=,ʿiϞEԙJh~0Yaܵb(x AM#'kh^>sP:48̵Q<8iFͩ1yT'Qv@A)E[!F(c`C]ŝze[p=B#3~$%b!pE$Q9 iR@pRC6FBplހBw[hmBZ ZkUb:eR3/PřWC k6wCR-7E "^2AtW5i2R.!uz׊\fP*ˤyG?"*h$P( k)r5 :GN!|.|At ޭ U۱̜rr״8Jb8-S>ɂ 'Qw&>*ez81 2ixŸu ,XAbz9sQi^SK+63@,KT.0&֞faݞIޥ8s5ߒX7ٓbCD7Suŀ.WblMLXշ# :_;2ĭɭZ8-<|nixZ͢7Yp^.|MS._ӟ.~&X .~ cr.я8vQʦD;?k;{57q˝W=xխqEgꯎ͟[ٷIzh9_*7D:fԕY&ٹ@ņbyϊKM[2q 3ŵs($7a܃?6 h/;c ~TwS`dj-=_?OܰI,u $r>D E !AVӆšs[nhOp1|asE})i]5r"/x=Q?\80RmM\/VH|NtzsP.?< 34*oRq |\t𩅴?ue\ 4o _FGME%oN3g0_'B*]puMJkNCUJƜ`)jJ|X=)qW #~IT!T*B]UY V=l6,i.XDa\5s,lmYQl?ʠ#4i8рD/#ȩ#dH$Gw U>Wjggr91~;W1j: pWcM/c rD-緖 >v(S:LfgIF:x28vFuFe8YG*@Xp0l :!KWAsK@lJX$5 Θr9/֪PgAr=s?t(f`LG};@U2AT['l^yQ<a=Kic߹ ] 'qDFkG+Nlh|UqÑ{~fjJ𙌀X&M"lUpצz'GYgNQ~#'d>B#u6N|J(.bA/TjDA+roɾ˼r jqaTv9wPUzί~-5vZԻOq{ i7>HJ{Nx3 HI&6nqx,2n tM ? q w(tpTB%Q`M:[ZA ,0#2+J@judW~Y~> D*bMbAQ ȏI NdL+R0<Vi5XY NomxV7V?lQ0x1+? l|R"ЇrᔔuG/VcFG*hl]E5O35f\dpT nxX!5*ryTF5!qfGvSAPQf$_q-b%5WH_Hs4Ar}$<HgCiI3iK6]<- Mb4}q$emOkL% Lo2v+ EX`?k<٧B5,4B M*$&YsV06ib[3L6_(q i bh]4Y"3oV;Bգ*GlphE/ol g%B֐ es B܅ed4։~_* ug]:o$c(DM׷%kopmP+j#St%Cۉ T5&`fNq %U}Fe\P M'!J^(OH&8 yP,ec7Xǎk$a' %3p$ 4(|'_`a|L)dN@+@qH[ S__SɻI-a\\X%_XA)IZO'TCrY,Υ`nz#^W^KKp߾g@[@'xvuG^J i=MvHf}N4d2f`d5LOxYfuNh=j.<*g+TKB2D袒?1T5Nr)(F玒t y%7RSC:RNRT7/z7\ EXHJ^߾4N&,\Si3W1ee$JV5wDTEqVݤϚed[Gqc?0.w ) A#@MKg3ߠl*in䩫hoP/*hG`f}8tnE&Bkō|m0p^)3.s-;ʜ$.G|Yĝ.sP G6B6,Q)R@< 1n;گi{xꪞ@Q94|p}P)#ϑ`گjĀ6\6?<}H㨍d ?Ҥ"9WC=‘WxAAvB.NbryA(g۪?s;iHoJ3ƷT~P,?nzF)!ؐ\k̅#2;ƽ2|]=+K&ra k܅~GXX CxIxx\KGtTv/*MJ}nk̺z':,A u?BFA,U@:I@R SȺV"EQUQyRBԥ/wlAd4pg%s(pu!2ui^x`6rȠ9?b?w;Ct~y#P} ;^m!-˄ 3zcWR)p/[ahx#j","(v풹͞X wBk``aPE%c1$o!j@dDьzW<ʲVIv0lPCÏ Pe=yt&oB7ţ< X}6H 3K2C| ga {4 :Z脇M&}Cvʟ"U̢!3{v"ͭgV޹ ucdVa7nxokZ?v<)/dUS4Hzwxɠd6y?uHƳ+<3_e[\,U<ğcJ\:^C+~qNFm|!H 8 '$Cv8]F/Ɣ %uP^7s̺s`Xn|v}=;UA.#6( ۡT":t};:̿q{,R 2VNĔRIG2"Xt?ߞb;~ya}َEfnm"n޻9—ym7Id+s{Rbu Kَ7dFEF 0Yz% -ՌjcHMҽ0 !긵VRK:BeČ,<ږ[Wue=^]c3%9O^[;,\~!ljafGvUtIzԞctn*D1+@\ vyS0T?7쬛]jz`^;b58FPӣJ1¤-;sV%T$EMׄ Zl0r9H.؇ y{L7;viŅW$0i$v:ⓣ3Je}9E=GM7Epס]?z}:',}e]qno?՚ 7NYI=UKUh@:^ Nƴ1|SiMK)ՌeBb|_̓-f??f|5rxUN7r8ZTļ6~yQVmT&TcF̞0IXt! 4Vzv}rcMTy$TQA>"OhmNy Fo⽜|Uh;n`~|A%hlEʳͥ:<^a-X &RCde~mB#xi0)5ѡl2sf>3z+~`GbPA͐A6!lG.~+e܊<- K hT"W.W8sxl K^ V3z=RhfJ j=l.ᆅ?<򕢟l̸̮< _AئK=恘s GL+p=W/0}0r*z(6,8^_a~Sfo&UzJ&u0bbLVn! Pj-xWu,}ixoٵϭ>iQz>G+sQsnkH%8O_dhZX9w˾y(ZZP}FAgҿHhĚj[2SvD9?㟺:՘众vZ0ilc,؜$#ӻF[P?{ÙS.%raP36\Sہ6,Cӹ?QW.Vrb>a<(WZjC@۔eXgw%b s֦j EZD[J?xKH0JR.6,ffC%"2NY()r#硌ntR셫fs]V +]-*a >+].׷cЛL^J0zqݪz UVFW{񝽻{?LcITM1U=fя]GG8J p!b8v7ޯb AuOFpE*q,dbI1"- w4LK *RJ Ȣ1C-ɹ/-[в&OlΪ/5z˥icB4Ue$ù(ߍ%HMBڝ9 jЬmjZ7/S0K*bQ8ܪfF_䃛ӿHF81eH[P0Y<-B?6SיDew8C|~ 8+ >K; g:PcQ$,,yqjA  mۓ3W m&p۲Â˖''oH"wjBA!xKh3Lmjtf g^%;u3~FͷG7F/FFP Ǟ+c!p ԒA_iU%8~JeT86*r$g7[0UMȀ @!@#PNz/[YߟKawk c}\#2zF8q=B0?,XBɯ  @ ńr,'Es@d\9>]Qu>X߅4.|!dHfj%fW)^ 08Tx_=M@ .ai5b_!JQ=WTLVvm P? ֹrRD{"9 ɉɍS+ )Ì; edPq!y&] E3pC#_c,̀Ƈ|pÀ KjӠv,%/jւYB R#fb)ahZ[2Rptŭ^6RL+WaR K'.d# Օe-.oL{_,EЪX9fqUCWsէKᨵNJj R MaXYO|sԆX0Q͔ZE RȺDoc&άh0wγꃈ.Jv} fj1}Σ c#Ϳ}ϱoqZA☮+`c9} 6q77v.wkK?*a+RI;NVl^yvUDL?P$B:qϦ 8f^0K fª9k8:; B2JZK 󞽘J;ji, +I +/VF(F賦 +ꌧ(jRh:ۘ2Ѣ`Iil޵&lGyˆCEf+87آ(cMh٥hoDTP'=I+_9gfN∌ #mᆥ}xY J;=ie7ǵY&n/YG56!Z.5C#nX2ufT)RwN𐋰nnda@|w蹑N΂r`2J v{YlS{aZ(%xȵ%WIJ0]P1MUt؞#eʂ)! !2ۙGb]7I_h ֒@B!W~}vy`oꔗrtm#'B?V ?GJ! %0Y6Ef1#$0Smw.7-ñթ4esD4˃La; !mfjԶD)YOqJCD0å1@\/FӪ{pq%:9ĩe<§>RX.?РXqz/϶wbhB^GeP۠{jb2"+{:K'=~+n\k_JqtA}. 3=fbJaANpkld.4)c56D{VTŸGq02 -Z|* Oɠ*c|&< &5屯WfVRGj=)~A*k(T?ֿfmJV Ys;e3(\UY]$-L^]^rދ-yοh k^hzwz%ޛ! EtRr{1kI,-gUo;FN@NdCP҆X+']  0l S\.Pn399~~B>PBH`wF 7m3k)'zJ7x:C;z2Ӱ)`{k,H8s2 sK7nU8T6)^};38BMXjYL̰K?q8e/4Тea- 7DnooɿɁ<RX XjHh!KZo3 wB(-̳:kŌ]tL Syw[>2|HE$)tMr# cQZsůb̈́A xtE U5o;,8:xΟS2BiB['Bl#~`x}$$+`B5lYAEgu?9zHFo5Nl|mgM'7gnD}&Б-P ov/0x^i~ [:x35SԠXa+m֪+zv>#QwŒ" @ذ/u:>gRxv_c}hQFYNU@r"H: ɷS57z}p*ಂ,VP[9wNg^&`IF'ruoC#XZ1WҵQrׄ'!ed4$?`yd ɫs\!~bgJF< 4 H,`}~rjߏwXRÕO6HM0r4~zKΒO `?( ' @L(/olbE\c$[j:=Z3:__b#JP0s8cg%zv{da,xq.#s@ǡ,8u(9ƮÃU~_4]W&܅(hJl$r%Q a D٨ۆhl+zH"J[ I/#h0[GhU]m)9RM}9`oG}:T?W>,3+ndg2sQV& f[݌0l4؜Wz% <s _JLFc)L%ܣ:D$Ǟ#TvO.ŸY8Z|dŮA̕LWi7S9/>T|P]:oǗGMh%6 MmRޟ<{uR 㷷W ںǹKߺr N̛ւo^JVD+:~z ]8 WçL@lt,:ЅܮBh2LBB4}0S=ezx>$Ij7RG}BN=45r{㳳aj\ˢsq伱Lz;$`9.d H$"kt #sG۶tt>ԉ_;,^W%s/;t=F0﵍U]ktkK xgqJpD~a?;B-5m(,Iă>ar!Q(fj!(M:SUI q3j7#'"kTjj0L*yf}t_ojn{X;5 س2Y6Eao$'9mRm:RTRۓTtT<1tzR5X᧨R,2P ixwvNʴ6>WD7<apEm%R#G ЃXg`]k~Vf@\^_о9CYݓ4A4`/Jۂ-Sұ<7~JPq+YQy5?EWe2Z ϺMx]wz<>}MOLjPXSjk:oaSR4xn tǽvRմpNX"]Dc& p@ BO,jm-BN).T+zĝl,R\:AficByӈXe@8xq8l9SM0sOh8M٤>lVtof!1S.vvwV(l% R(bˉCU-Ev\?5[]q!ˀP),%lvT4@s`#pKz-f,x[6֓ey-U๏cA=v, N-k+,uKUAT1w#n\P0v/"f֩ fS\gJʦTW68Np8i7p[I0%yfG8 esW ꤰUV+\%}@K/["I@yBn7ˉ[ElE_0`ʩN|+q.us[D;^Ij']|4KAO$::i F7 \h5v 1-J&INCgyGiF\ x#U#mzhA/cE/Hi)'0JҠM4O6<5i=.xAO\249p?圯-ufªj ¥%[pb ?9i8#osA+zcgNpNس mF:gd*صH6(ٚi;][jxe:HQPo> U+.`bP*t P>XJ wަ|lM^޼tZRqoeWvmɹ( ?-\猆Kq=)eb|4E*rbz &UsZu &]8.lC6qS#Y'nEݨ *90JEXUN#\B^䕀`u "l;AJZ(e9J 7qq[VO]UQF#]]f<ĝWqȄȿڭ cx[10㽭mz*E_Bg+k$T2 wfV9T|o^(N+~#Hw̄8>!BMYG\)\ʫըgk+pTflCb:OoO,ߙp{崘^ w*܍2Ь+;lkג 'JOv8;kInƖ' |okSV!]r CYik m%z|~?46XZ! Offi!Ý)6Pk*jN)Fl"?ѭەvlr .Q<+Wa nLaC ي8edxU E_1sҏlkD8.Oқ2D—}{WƘҜcT_wEU) O)E-xLӃ%#ن0 ˦\LKTFQ $s>oZ2 ..qAS@:7*0@tw`뱆II{J)"4j(,7[op-]οiɪ{Ee6`sVlXKH6^@M{Y5Z x"|YUepm28W.;4 &U/^=nK%(ɇ.BS_k^IE`'kv^YLeNsf|—Z .w*()䁤P98 Q7OZM5?=4-#[Dpש40 4c_-Tͬ>SҤ6 0S@׵)LxZTw؋Y c:#i֍_6(4MS#RqԨfj[S8 V`8YU|H<*k w^urйơ!^jS7Iiw`af9M/Oc\89kX/3OCS۞Sk^uf̸nXQ~?&> ͟tĩB՗RUokt.n,RmAת]ցO2wk.o@FO5yg1F)Y]eBl 3f 竌0R3ҟ0c3FJ%gP<Mr!FE %2W)&H, lYzO1>F -=>Z@,;O[)Cn J*X1gq;YwqqLUm$5cx\-=Z4}~;90bd7y9%׏Y}8шq Oe jLB7W+EEF:NspF6U,!f37Q'e.wʞZܮwP^ i%2MQ#{.-k7w ;]cp8R0ͱ2R?uE:.[: 7.*gf3 @|i_."I'ǐvA&sp( IJ84<:7"=\>=CA!%iX`*X]].9DMmtȵ7@PK,+ `Bo;Dj[)Y[˷;A ]oRw@81o\}$>`ir(o^X(3 u޻>1o94rpx_n]FȪSͬV4h+|;5 웹i2De]$^~T.'BnQa5>=B{oSӐL%mSKQܪ*bt'.c? 4H5Dv4WIb5El3 fKI"bAz #Ӳ"_5,9gioò=ћ3/ЙPw fX X1&,-8u~t#0eU,kCfnrP0b^!]k%[95֒1!,PjZI~s\g1jN9PoK5d*څϜ1"+ SO=8J o{G\NHs+^Ov?tzin~Ʉi XBټi&C]A66Jbo_+@-T Ku0VNP`^\āF+lt[F)nyyЋoph,>*^%`"`0spH:ң?+k#)!?s8_1>c⺦;FXf;_UjYt'ON*D`6g֠&- dhӗ(g]ڜ1B#٪Mc>>0M +ڜn*,! ՂVaq:H,ݗ8Cͫ8|2,+h~AyyRnFUD80ĭ3)Xan}xP+ozShMozqi1}5F xvc=^1 .:Sxx!,aQΣi-TdJ2 zZzA3;sQct]J0f0Xol )a Nwa폯%S(:=~󬓶X1s6iLt ? V 3/Tm!٪Q\ %ٔAODu}i(z"D) ǶWy&0||b.Ȟ9*hJb{_g&sUk2+H${yd^g˿2Ɏ}+FRIF{-ٽ@v,T(˱7o;Zu]]f+ʋ( Nf"G"LMZ1èmnq7N"8I{vE kLC;,ŏ7y5p?T#U }J2UO9%tt'3~JpE};@m k³/STŚDJ&S\fl,͓(;l(4\&A;|n٨Hoy1wQLEMtVWYPq:`lj356y #R6E)~9u̿%7a7{g:*ʦK'ԴYdN z&qr/:pq{xl{Lc!{SCػ 7 uA` _J,DILuFon'Y1+RC8?O%,:Wbfe)ܬ}>D/4#-= 6V*ACݙgKe(r G1wp^l$RCַ9 do0ΧXP*:x 3U8) j[Xb1c)U(:U*ABQF{bWs$L/g.:nډ-`ً-uсX$Ն'B35198N-uqIs,)(,9sCX/H)͎ޜ53k .ZE g]vȷr$O,#}#cQ\ol;8A:e"jU> d*0l"FD?#ePX{ RHp }@-Ҁ+iϭ)^B649c? *Z#*a=L DV<T'*-<#)Ղݚ2E/+`-5hw7N~o΀#!d QԀE*qǎ-&ፍñ܆#o8q931~ )@. 9Ѹ%^5o>ǯhX҂q󅃈"86 )Aƨ,@@1 4(msCG)}YD~!! ,#"=a*r6h=rYkM;t\+/_JUOut0/;\hU|^IXWܑFOlTXS]-ұyk~X p{HQP_$\6 eN9wP0eLdcWࡂN`aO@@yWkRTQwR޻i8 :+B[j}yn1N k;jzۇ-'I25PcrkmofPxa\ُD|4A֑B5I^H^ʒF%˨WQN\ ƍ1KNdŕ9MZ{.s&HB(x݀AXn{!GO|ZEQXH)vd6& Bvڌ |t(Y@ &O-;="%8> {L&>ѕ 119᭙`|M;D2D/ȉz2ᡷJ{PØFR, }ۆقU2 j 6Zr1 m 7u1ǡ5Ĺ2ۛBX )J/{)2<2z}h!C%Ƨc?^̾j'Ylo pP/PyٵQ Ljp;`N"ĦS;ϓ)RW*\Pt7L7WSt$az-W8uH Q ,6o@;<4HIkL& ;?VuDՋ24e?^Q e'IRKwX~; J(Y_UߎFF%ؔ _+A|P5uD'a:([eytp؜ e>c"Đ˙;6'CJizC+ {oݟ25RvX|03b5 z> oB$R{iPn m2: HLaT Xu".K#ܲƆֆ>Y4eK\gRWߕpJe]$j͊ m݁6wbʪh3"ifȴINE'i{F1QӜ9b&}e<YMfުf"S!@ӕ{'jZ?ˆ3y^7dA+ƬG0#T(Yl.PHXM@Ya?X|IBHE\S(@6¢츎OSrE!AnQ-Py;2+R@bEc%S`=0Ti1ވ޼ 3vn]xT{0=3YЂ@zaDUV}0>1wSpOvRP MGXi:S6~NKM@UkHw1_W?%LCH)$ Ks8g%h & /)Ǯ;*RI켘Erc\HU(T|(¡T Yr|DE&`Cbi14Xt]ĿЙfشFe螄+f x<0=TE`e߫g̈́#ݙHc A 3*n" \+E2HOw$##bRYf'" KcC`(s&!#-FA ?} ?LGrXdm+J>kAӕddxR\@$)pc(KvY!pqk0*4fr^P#~_c8|wXňK(M^}tsg\ct.åűWZ.@Ɠ[ĸLd'ϯP[aQe @_1Lw2h7"/E`bx9nHtdj陝kE^ ӣ$~~B*7(])A) <8T]+~ bm etoIE~HhG$/ְ 5+'\-6?Wx-*.]`ƽ~ ǃ`a a$)$0c?\ϧ/mlZ9ySԲ ?^?r$ܗtCӝ~gB =-%n2ΪJtu`="?M[+#LQ{Ptku؇,x+eP28*!&kWAEnQZ=pMgWY^#)"/$m"0&n,R|0q h 2qz%nS4iʬz FN\|(z[ .FZn蟝ÚZg bo9}'1z?5: F@ZPr+5.O˽d3XAp) n0cJ΢N'^ǷaCEPǙ8,ZR(nѩӯ c'{#mRz9|]HFi\ǁiٰKS0rg G |cO"5ߡGnt N1.iUur 7dQyE3*/G̘L:ü'XUTD(H `4 A i@!C꒯-$ :A܅҂[䒤 HQįԿAz tMs&T5%̍X7S7{SK_TZ_cʇCF^#'ܰ2 ?Śϑk兊=`f!p**D=_Z{Q, hhk$bBS(FN%, ϝAA΋KDk s$ml$N!2_aBN*۸HsĖ\6,î1!vcN4%p {"Ђwu ôSw> 09w7[.^%XOx[]4mEXlZcUezPkra*8躞sp;[F&{aTly|u|\>l2Ljev;nmhcū*&nbDr#^`NUm/^4E(טSUqԗDumDSݰcx]DF02Ϲ&܆B\5,yN%I :;1DKZ9IIBg=bG$Ook0;9?1M;JX 9E㛯Ef#>)ڳE`Ϋ?MެhVmq +0 .Qob,z. &NͭW/3a#o\lW>26;B0(;BEmex-_†iM4܎ggODzWݳ T> h;pˤ9q;X Л3}o°|Gtaaߖk%x&=G+:wz\G(%c~g4sL ~ɰIV?В!J5Bˮ+LHPiBjV<x]l0y~%xm\o9.n+4c!~!{!2%gKs\)MN>Vz582DZ39ᰅ `IVDA17g+0 \(b|/%ZOpw+wA 2,ڸ8TH27n )z #IPz#K d8J-ghA@uOǾh7/˃e/&P$`i&N,pSZUBMRdBR(k6DBhp.YN=)=ܳ \Zڪl4F> pp؂l cZSfD~XUNh,}YUa\݃ ڈ>],&;Dnj!ZJOa>{\|z“y/I2i'"sDA@mo:}GMM"E&h't=JVpix1&Qb=!K7Ѩj|?lYD_0,*E?UB" u~+' C$!}ptFIHU*c+e;$%ɺWoX<sbsc\_`Cs.xc RM|(pz茲V8.e)Dhuk܊I 򥳄{.~B[h*,s0j o\;w^т?BNEOEQOм|$I~LQ^csm(@2ҢHyF>ѫ֙my9>&R"@{a~%̓L#מqU7u6!9V4&vxRF @>2F_.28 ~m7VU:jm>QZ+v8ΞpOvLq^? dNV%C'4%oQocR}G&v>íh_ˡ1Rwaӧ8 _ƒ!̔)\"{o5Q7I@YTRsC^Hb-*3sJf&FЃQ=8rk'tqaiE 2%xNgt#G^e=m5(kQ@BFJ*<RL3a:˕Ҹ+zdV JWj"#M2>X>ƖDNfU&pŌф ~8HCE]lJQ}X]mYgf|%Y.<*ENNDedr(/]ˣGfӺ86OT6w ىcNw[E۟g]QLO΄)CQv|4S9Gn:4R̡g$!~WYNJXH PGGm:TKy3wV sVeHvi2p0f=]ltK/&#G03_hY"3<;3nh17N#P6yEKSQŶL?SXhՒ{ y Mqe~?Z0OZ$Sx|,NqckƪLȥr'7ir:vy,+vr *tҽ| = g<Nt{B إdxb76DPg&W> 兩x(n4,_(1S(C >PrPuΨ0 [ F`~ թ"hu9BDvV c_p!`DIQNaGQ!r?)N]}LckʚW;'|PdD|&Rn{ mɾ  ] 'l;b:Zl6B<&6jN.ҤW#U27:S<+*ZI njܠD\ٛu)v )-1=g5 :b ي=rǟWDK(Ιf A݆>f$y E†pl^&j搟ZX *,x)(|u){=gD] ;HH'J¾tĜ2‚5eQp[V[13 5-@Y˫P}9FujPN"2s a_^}ߌLIDG-Bc *ȡORpd>JP)бS]SXNlpW "xOkJT?MBe%[ uE&d=NvR=Le*QӻsݺDi,6Bu'b'1f2WbJVՋ++ > }YRT#+Zs! T렔Ұu=;bGnkĵʐz!j؝IoeV? }' %t8؊ K;njx{Ϲm Rn^\4%k.sv{N(g rZݓʌ%Bq&ǩmII FIc>K҄/aK+I'SWݸ|kcsߘxp;t9CDT)G= }.1N}ttۦ 8}Y/e:Cjc2^ =PpwNHjuv-%u92ɕ&2=)&dji85*忆V3n>Pdv 75mHPQmJ-v168ݱ0ÇΜhvᔻc)ǺGba).&zr_4ޠX>dD* PaUeUA:9a_#ea5OA1)m|<w/p$.փWk/3iUDέ @ѹ)I8~ШT1 $'ZJ<fBvB4uh @Wz+345Y'C?Z(dԂ{Fs/2ra=#x;Yz!Bmm~1uFq\rkS[#gKA5R{AY֋LjR a(6:–p[X$Z8Հ 0,4N(fA(Ȭ bܼ$1ѩ[XDra |-9^Nxs 靑44oz*QjqsDŽTcnMzb&wfV"#&VG~dHjR 4#=," $n=!.01PPEpeZeXdڐTKmsv.wI׽ szY UNbG[`R暮 yݽG;h WյɴEzI1ZCug ެDAS-ŏ)#ߞ$%?Ub&@6~{ C@ eyʉ7SxRQXb1(M:›*,TЦÂx\ `[PwR8}ͼ'ӉqsӞ~d26FJ:=NA! gy;kq4$1AbFu:0:堾G/{_hQ]?r@ 8SG8֮&|:$#*AR%bZl%/tF8!{;ɰ[,hssߝ€ e=Vte[Gst^`,=oeT(O,o7άЭ .6ɇp(Oi1;B[ h{8,n9Dzھ ..YlX_=g+!/ IEdLvѱ-xs:ryկ4fn$~%MP8/wq_͂ (>g>AwZ]\1Qb^+h7+P) 7ְ C}I' <19WE}v3 EHUQh4ۡ!U5jbEI'Q(sDž3ؙƣ:&IHᣔ6rCv4}k]╷p=['=T/q)"ǐs#[|0G pe܃[*>Ӳ[DvKFVzR[axp`mU8=Q끡 ?SHFfΫF$S1-MtK*P%X3VQ|\4`1, aBCe(H%RYRx8jbʄ5 dQd w̤ާupCtxt+n4 LSd[,YK#|hqQ٭x͌K|o ؚхgڽ^d"y@@Ψk?bx,a@xChJӔ_z+lhOw*݅GsEw8ߖݰ9IhBj`@kh-rL2+wwvgaJcP(8+W<?__ZɆ@G~ '9|T^(iLdTAa悭s."!m:k$@%D$* 5K6l mX: |)`ڈ%N`)TDC?U:Eرd2C2幟.m! q:ս5^Ǎ< +T8Vnϭfi~"-q0lz/f2$:ъ ߳A0)^AλL},ߩw٣%<@LeZ`Ʋ:|x2m(5_kO57i,TB?TDʘX}l(זft"D3,U-VZk3R*yOUjz,؂<e:u?]0ӵFM;!sˈ-*=7l$Z8hWn{H0aZrGuN  <&r7wuNp9:l;I՗Nz,js3ՓvK -ۗ=3#_{'KL,~2iR-o^nA[-;HpU~➐VvKraP4Mc ز[Y ZNDy :!6P1&e}qErҹjvZ޲^z:(IpwPE iB)9B:Mm͙LG;n<ƧmL| jVUs7^{‹"4vᮩnEME~23n+Q,PC-3Ѽ^n:eN[b`ӭïQhW: Uv)d51Y<4tC&CyD8$hFL(>H|,$-FŅBf} 'yX.bBROՏ5Q۷3Y??) ID~bMqWG(iVb ^lO25 47n;`k?7gt~Cj8[t|odSXM >Gݰӭ~HsP:nG; xa), [w[ugq+P=#j PPP^!&:g6 ,8*뙂GWDP.p[_TsFHm -A}v.]XX .Mqxa%hk,Ehh֑g/;.:36qo ADԽ!/CDBQf3gQc<(hE/k]v~~W{>uk\,)>p!ޔ)1Mrty:sƯ.I(hRkZ2Iך0rN?bcHb $'Aouei+ 3Es#]p-ecz';ƢSmōۙvw^q~~YguRan 8>]iZw%xg~?qK>J-ЏGNנÓowhc$(D1fK 6}0D+E%P4orqkkܟ!*0[w)Ep z7RWN$;QڥK~``;1>(ŇEmμ^7~>1hb Àg!wtmU}w>L|rjpX O}*aE ceV,\8s^Ȳ$pAb+IpDvL[Qh .z̨yoRSBCKCmGkr$yohጛl?@;Zm["MV+Aoe2b!P2u3!Bqr ޠٱD'':: 2N*Eu9[&3Ze9Ei^uَ@>zpe e*BR>0N ?ox؛gfjdVt]\3Fx2'q-y_ h>mz?]"&/*>*迢*>=bs:Zh'`sSrT*e(*A<ɾ_UFU8C\lLK[\{}'&sK|est?h_^m$ Qcc(sxf"AFK毿_}<][Xn.5d4}NL^b80}5M";NYY1`86&3_V٤nSb~8 A4UUd{;yh{ํ#r]acFgƙmOž\#[Z~,a&QLE.A8UJ* 2 ӲQNrT(L\C: nG+⃨Ü~ۮ58=h1ǾCTQg'+nwe]$bEʼoAXp9$&VwRڀ'mb8R>iڊwHXeZ5ef@M矘DIjG Q/׼&GVz<Gr07׍L&upw}ƣ.OGg):|x'Nwv$gi_[6l+Uؽpyq AOߑ8tp% BȐb 8z`\6Z4;J$hΏ߀B h1`99{P8'\;} u ,tH ;oـu BӾUNЧ ŭ> ?Iz>nG` v|-`rx6²YOjr9vw4'sYЏXs1OY6ⷎNB1I;W yr LO`/SöNN/dh^IanxU`%AقKKi)3n}TJz,[ur蚔:{NCR]kqWݚ/B{-e*OŃiQM-B{.$͢=B6S8i4wYVT,~7_ ʔcXiςYuɭ$8f E$t>YNg(:N§9=#F C_#)+/Viܱm.7o0n= w6$fY/Ĝzs+ `иIw.+81@E[jA{iSIpNҁ,N8U*6͔K߰U l]kfP)x).X:ɮ0ˇ0h zP•P{>Hd)>D"[Sá!J`Mt9(mc~&ݭc[Ĥ@"=2*n9G=ó28FP*#4'(ʊϹoJw{$&Œ MD@?^{>Pm⭩˹xS8xP/@O4 u*#LWVzv1rT`*Ϸi9Q1!`k>5hC\bwxBk?7H柩MfzM5\ɲ+ ܢ9įxKpяo]i0X# bKG/Ae_`Of穀8ؐVGU\U:"еQWeg_`w|ʼnST"Ȇ*:p9iqq֩w+t@"KqԓLa@1]}4(9$)88J[0R캉I7v+a(ԋ}y 6p[;莾'.&;'>z,vKX녊mkڕ'}ӺNS'8ElS˖f(ŃzDo-)>.'!:Oqշ/!~1&kW l_{b!CL|}e 0!ayPq֬BTB¡Ƚ-|~Ɓ ZyN֔d=Ɠ07 :Z|ڞE?v;m\ YEteFRZs)z .'O6 Z섿Zqyg iK>]O^Ld_' ˑFe]qo#{(g D JSIdLGi7&>w=/w;Php~#PXE.ǦlAHewģ12:4n)ya&k޶+z}tCE"cFm@|0J.88 DMvY?Uh?9E =B\Y,-q.ѽ-2ZO?6;)'iU(huKe T{4)M|Lz>G)3!TԲz-z^8+C"E>nP)fr ?BdGWd#X=KCʹ7@}%-?HѨFtYy :? LW%^zfXGsN6ᑗd ўpD-)~T+)qCg=~]Wk?|$i9ɨˠ޲7ZCƛxK|})#vf35|ł(YR+)EV~ 9N3r+hΘ7)o]c:.\vט> ss:::6yN'.\C:/x)p:ʭy:]oqlDwFxd/r*'j:h|Չ>waUPT3 :nN¶ZQDwZU(ѓ;ݖp Mr~2ĝsf{FKl\,c}]5і2`teM_bd113O%yp݅p6{ʵ&m{~FD+G&7 tvVh~.}{Vo@dz1k:cyƸ`7ad}JyBt(a\PXsA+ߠAϝ:@\I*& E+ч8 C!m|q?;}vak=S62U=U].&w}=U-L!yȝ,^6>Y}e̗V5wX}KF.cIܥةE]ҿ֍7pMIK9 RAKF1Pd? řL\stXw칋(Zy^k]!n^\ NV!S%؎7 xAP YPBLCDx|`IDTշΖo;P?oE#YϾ'<$Mw{FoNo[V̓k̄TFCd봘>Q- OK=.x#o0)l;PSm-wNizV0K,$P4QWE\vxk^ bGٷ7-E<3WVn xqaM 6cft?I '˧`ݔr"υi:/E.e6ކZ,65,M)瑵͞[y~AKeqߚ!}u#A%h [iz6sȲYɯ,UrB&A9xf&<k|zyY > b)!8==͝y퐳^HbjuJtƓZcʡV㈯qLfXV+nY- o充ԍ<YI'pY%x! }r&! zв0 x??}tXn=aǼ &p$$"aYڋ[x>e/۝S- ΙwJ?xE_8֙H8Ȉr{]DWx|ܚ]lZڨ:QUڍwU3"(qf&)Kae:Pt%Ba&!pq0p^Ki% U[W.Rз|Ƒ9Lʓ6͓;_ D>{ pX䞭JV J AK}_eF:LSnnϹM?sX ^o?r|t?d,YY>^ %Tt2AA璯rt,/bs_cݻf#fL̐8X5*,Vf>ԫ˓jl>h)u]KqcŠoaa+,K4pɍt dW%%+ wӆU1ϩ7ոz0Uq?%,#2Z0O\Ҏ%LT& &ZHS"{Wԃq0ndL>DԾe/L7V6Qf=CtgZyr~-%yyEzDV*( %-dG-Y"Z iΝM".mo2?wDMDItYc~XP4C 84OFԚ@_c=fQvUdAm*qWi<ތ:q]2f Xx~ «tB'#հCM] 6 WUϯ꣋<.-veKIQ) acw~%fY*:$qcFSv͐xJ@T7gpK`}V/^E5I^ rB@ ?C&%py!]ff]pznK4"lkn~iƓuz3IW,Ze\OUd$@qJj'R7~RˍjӟAdF/h`e5"$rҵWb3.e۳[M~Ss(#Vj<&.Y4L+wvnp:^bG6l݃^<ͲVo996GސyMQD|cp轊(),xa!s?ˠpLȺfCqɗ_ouby9ыڅ08KL|Ne|] Ɋ<%N#5<xD3LAUR@0 .eS&,^ĸE%+&2q|-8l̀%3Kȁ5IgN{}&JH%2_oGb58>Uvq(¤!1#K? WaFo$R+!*#|Lx|y/zEȇy)k̢FH7I(; 05#4;U|v\C@8.$PwO@SlY9 R>(7EhB^we>["L &hVnn J͎ jf~97mNmJ뉚ե[d<f)œ b&\/ Vj`K( 5U#L. ^ |otw{iQ(ߪn!>~>5 MXQ%XZc2t/e1Z#Waq(69۝rٜ1%f< dP}d'w1fv !_Y@ѸobFPZyolI4~HD =P>zqTNfuJ{#D1^Il1?BYفY ؁}+sƾE9́y/gMR8OIrħwE'\EЬ^hmx!I8Ii{ML>tbX*N/@& mB׌ Rv`3s+u7B 6v^1v3(JU7ue/j~ h*A丽g_)#ÄwF2--vU;wr90]'$ Bx++6j(D.1޽SE|u $nv(Ʀd6KrJoM!}oaqUij1S&dCDr@L3h2#!}B&) U4</@={U`o3p,qL ql P'Z;}iڸ,_|s>0S%拋X"]KFm3x6nTjT2Gws$kAuX>x1dHkC2Ee& ÚhoXXص"U|}&.sq2h#_,YU$Х4O5yjr̋ibjVw L ,k 4->g)ĺ_f[qP**GbEɯkQYtIb,cK;n|cD M 9D[b&Te1+AB32S;٢}/E@8 Q1|6;PfRY3#mMÎ[O%Njͭ\y:|"J.ZAoV`r&Rk.y9P3ڍkO$$]$4nRt̽ p %#e.iښYjWG L;s. ud\n[=/3/+cDj::3(v){dHJe$Fn64'4ퟔ,\%5!;"Ce,00hL%CF*}Hy_}/Í F.uP_K$O5ƹDV偻C`.j{vM$9#fmW$7XO# :g/rt&8\ծyDc8++tXrѩFj{.@?h6^CޭR2%;9k8E LscQ+MѯOX8*@:iU|=o''n~R nSw() NjϪQަvj̘agY6/c?2R#љ{CM‚ OBH$i-ǁKL/lNcI=ڼXBvJA{ſpF]h)oҾM`waC"Dcp$5 < KOivAB\^,]>;^k>UDYXexy;;˧TA2>5'i&]Vsw|Xsť]Z{ݘ<á\ge+ *qsJ0P6Fy3YΖl!Z0}K:W|Ks>/7,a(5TȢ~>;K3 BnD~Vsk 61tׂK_b2Ա~0Z{l/ rقY>HgtĜ9>?3P)vX|XTx::YpPrDH+}_,j՛/gK~i~ANDE /]J +.@^4Kj7I^+Y٣Rf%Ge&,&o\nkb SFmX9Tjc<>P=JC"Qd  [iCˮӚD4Lm%z;S.E)ZXdARD\S<m㕙|kƯ8 ߷Z\@IZ,wS;a ]f]pCaj蚖iGyiSu?~nNFUEMӧarߡ7gYI ͎Twȉg>cOУ |$5R{bMO}c7wbnj@l&3./&z266n״aMU `wEB8ƂK*,M"1(O&+[-zm8rGgZyxnVba?lV #[BX) BeD0@pAjr 㮰bWmD \uSN+q키1a35[$h] ")V" a恐;Q%+$s$YB4)_Ap N`!2ҥLJ'p!`'w ONe<&+&f LҽsN:yDrj&62q ^$~iKy#' :.::S_NlO\EL /χzX6{@EVOS}hK88#9_|/`V/ktF>4ӊ^_]3(T(؟#tܕ22ȁX6d96T6YTЇSgjz)Y膰ɡ2H@#= ~a8]mLvguzRbO^;$c;{H6&q ^om3&F~ ]+Qqd5 RN_GT'q큄m9:c)ˊh!3a^At԰ximϫH??}we9op JqQ@+ LeLAtnsz?Ԋ!}2O#C\QIӜP 7[/ AҝH:\fv]ө/_C2?Qai}8be/!rK$з⠮Y":4\NGm&PG@{< X%7{YOOTK޻sj!{s!xogKyqxF(kpЋSNuDU"Ѹi{y+4ekKW 8C d'=:n][Gup#b!"$*c ǡ.ɚ00uRoNE?A|%lsyLH&C_z677ZcA^___Ycq^k_o:Ss~qn%{]QkI͋va ƣ,\ KY2#C@U}a?0~IJ}wdn4Y>gI$eu ;{U&nLr6ml+_<HYדM@%fYHԑGFh:9죭]r}4u$+8!yaJv#a(އ>A-uUagO:WSLԥ4Ӈů,qD角#ɌilfND1'Jq?*# .O7#$̫Pz3{˄'w5W1圯 ń5 Q7i~7Hd}x/1~ Z:rcվ/_a)J;S~=ķA ^<<,{]Ȃ"n\%աKu{GTX#KSc[%W7A8n_}W37kUi3Wka}Af%1[PK僐lᛆ!nSމPmU1g޽\Rm 7L6=?6 ?M6`LrSmHp.O0 *\EZ}bG)] Rp7wKhSh=ybNq>g8F`?P,ECu}7G+{dJvKK&'MS^ pf%B1nrߓQUHM\ja2>KK/\t kD c?~7 O7M.}Qɏ.E󹔘Jz1@.`46 2(ML"35%PVo}Ġ''"vGcLx{a35Ld7g|ٶ},~*LLoSLUu+b+1(V],x݌'V2lԈpdM)Cw>Sw".]a*pAt/nA6vhR3X<RkZ"yL\2Y?y2|)WMJ;ǂ}ɲoҪk};xd% ca>uA7֓+uɞͬ>P;+{*CZC[i{-.pfr2?=qPDIjjwIFbneF@{yg fI4(o-1|䙄#AFZ1#脆V4m>g.$X^Kਪ\rù6Y G*a8H@vqWxpGp Otcu˿T`Zɶ\E) x_D)W3dLR4D/F % ({1j$ OPSD GeG7!)Ee׽|tcupfTPla=\`Bԥ6>(2ZnZNs+q!e=uIs;'L<Y.*Dcr0RYM3h a_MbQU֨?8^>Ŷ>;Am"6x3=ǘQK.*\Ӂ%%NVUk߬$:aJj·e&-IITI_%YJDa%L x^AufAmoCud3fh; TrQaQ+GHJq1tŞH(}[b+և%YZCgELI9-!ʃ:юdq)XE2̞7{+S'~F.+ A)#Z ɸ`tܲ8@5]/'hḱ&y69ƛ̵5z?0O?jlsg mE!⹢hm&4awS_!mMm%n`hZXD{Z~e쀌>TBQR <U"H_&l2(۸L9Ǩk w *e ^* M3M:'m(S=??6#8}Hܥ̌SZڴ>[Uvy x$(kW)n_ uQ̐uBLڰLH0kw%pO̓_c>_*ίZJoxL2RE!!>>AM1@"7% mjŗKiS Llq6GՅK.V4>j:91PIc1='#p- 865)crjU"&:M1V)nI֊ٵٓ}u4+Ļx)M|Fcr%?OKbyw|" TFSXc?tY $[o\5p/n c;{zK^b;v x:wIsE|K{X*yp'Fp='GE3F/1kwQi.0?en:+l r+_J\8~N9R2t?ptk`%.a;J7ߧrܳ2'-ԗ̉o>q# 塀}@˧sIt,창Ds1ɕ|mzj"T>TJGzt3y'~*H13X3FQ1*TՂW*a\F>NGoBK1>h uXK+t*8zzdK/͢/ϳVU *xH5vE}dW{£Q <` |rWoB K8[9 ̼I>Bz/4Ľ* t<.I*jaR#B梀}OdXh 7%>|x_Jߋo_e3gC&14O} p?=uv-w(O}VY&{>0x71LƞLcf|^N*]#DWF7N׌,HH6l:]${S8oI pLnaN1B\vU_R;dS!)Gƫa&`9Z]sDqZ¥4\|GeVd8E5nlSDyb}#Ժ,^Cr*hi]I5d(h2 vUIuxs!O5K[E(? u8lPd=ME:Ż.$*Qh9rJ]ӛt1Jѝ-4$7`$w] mFC6co!}8#zw'BC. g=p&0N,i󮏎G 8tT:1A_Eϕb}FuEM]/ӵ`0?#ǩEMU6ŠjXjl}b+2jeBǗXK˱y-Nv .Thco$6W`p2nXFrW,._HaD oMɽ%@Rfv?l4%_N%/Mv/ߜ>(ȳ6w ]+y?8ww{aɸ+MkJݣp~Txb vqe{ ;¡]?9kHp :.E>g6_Ń*PgHbIzKL <ԡl|p`Ye_vĝ?t9oe^4<ܠE9i4≖9ڑL,36\{k#ѱAX|tA4'ܻ3a E?BcOR2v{,7[7)-qwzoƾUTѺB@NČ'dؑn ݭA) AZRC.H-^:1Jv&SNU 6$HN+G*O广SS3 hbZsayC/PWKFtG':Ws<JɅ덽 RGz(NXY~nZ2u6r3@ԗ2h3cрPO^@׭o3#=ԉVmw{uK9D15C^ abL`jxkӹ);VF4q/_2OjVDVhHr%zޏک5&3ߴQ֤ޝ uMlB@If\ڡX1ֵG ^b''>2Iߡ76?D% [2Pؖӳ%zӒGnVLAxEsG&QysܜZgfs~,TH2AIA(C7ls#(*jPsX*hRқhgyݖFɌ6":9~ܼ_ĭT"+KΩʬ X$pxt0.!!VYh)AqdS\rZeJ F|(wZƁee"` vm="bKSZyq57 e'C*Iλd <⊥?A?zR eOa竕Vk&  OairѾ}O,G9 CIBqFa$3}p#h`}'b*BU_!6Xw-[$"#Wk@5(@%˅] +J4aV׫8 MSowch֓FM`<{1PHhuZqȵy Jլ10 qp3)Ǐ-r tv[KMK>] NLM1sRQqJMM#xfTsR4n(7F߷6M Ehas]*`Ky^i\4im!u)V{%1.,"JMd4}N;DvNo{o>Ǧ]!{S_,ج*&{`Oiu~wv<`JF>>-S: 0:!AQr ם:zi|-z7p b 3Kn>oEpug*9;o˪ N/:FMO%ToM)ЅVKִ1f\L7V[`@} {dcM`S{K}yAQEp|m~ !ފX^`trLPXA\eBhl^QgkH/QdBx'`-oA4.5a1fG5vp3 ½/JE!{VlώNC9EVunOzg5`fz*|_lnДgث>x-Q{C2|ƴi8\ht8xeE0ATVpUL"2?LӀ:L9-QHX/5ReV"E2DKHOЪJkFZ{ؘ5!+gwQ,F}N/M`5x3Jr\ CAJħZѝd}fLe0+-[6Fnߒt5c@l@Ͷsd*6Nd 49r2͹IrM=cM'}⡡3'I!NFz4uz=ozP%U jhy˞n1Rx{[̹v={<ˎyw{b Fes F}@9{ܔkz8 c_Pr_ gGCV?N+5ĪnLW/ _슠.:T.Džݹ%SCBJKOo`s8 v8hiV*O1l͙geopuyJ K x3}}~ ˝g8.t?:qT@Rw?֥">A,s)ʢ(E4cyӌ׀^H%AЁC*r\JFHu@Ywq,šqouǃ/2z1xjRAU?_5O}%wU,r S?⛫J':y,J7j @nI!H4mfGڒO_$ ܎36?4B;Ն487G 3feg@==ꜹ ^)X{%<A3)R[[mǶDF@X<CDžphi4rb\&:4c Fp3] ~.- #VS>,m1b뤇2xn1&qf,EWr>Fd~eOguZ("JD덙ęX/ 'f+n1l]192 T;vx*Cmi][eG)O̐@p%3PptS`YZp]NoiZ74 7{=ο4OJEGK,ԓ ~OE 8PtHlYYA%2Vɘ~Qtr. ^^" s5xzAQ晊H=(LwZ5a@6ڍw&8=c郉h&Z,J`HN1POEGg@ |]|9-Z˰S U=:xz-.b ڏ3H->ŒZOIq)-Njːu[hJٴ@!75 i+\.{DӴrɫ^)RمQ䬾Isw>lvԇI?ްTEFԝ^X:FdІJgÊ!߂Q"pm6'l9vURš55pu[kG!|Vȱc}f5%ח?R>UgndoĮsI|qLW7Ӑ4DXk i0.XǕǀ]*Tܿ.m)} X(̈́-C%s ͋Tˢ5"7*sI6>~;c-K, k'Ĩ[h_TNl侱1$׹_lOb Lk+vJZsdpHX$nGfpNwLuDpÿ2vp[ 0?@%N"2aȅȿFI]՜gY^;>r2cwx )N :^h)9nL֭"/yu;v6LlFE0au=?h&xTojzyLBQu R'0 Z~`;Z;}ӄxv#f\@AH@!sF%gfŬžd·Oӽe?$I aHo{!BP$EҒ4"=Gs 0TvC Ft݉{+Y߅nCA$s7ƣt\@)ejpgUv7ټy$V>,1 CMCeЅ._’oz'c0v)fU[߈ٙ[O yn(i6?K:6Ӥc]?|HgQ@>yH7bm𱩬ǜ]S=5QloƐ{<33VRI5]"ut ?kRnXۇ ѫ x92e^pV.Fɜ>~GTmSK Ng߲݅/r`Sy>,ʾ„5A\_c8Hz[MN DXL+S]-iՆq9h0MFJ9_bDHE\r]k($6XRtY|`%̀M'+/tYTpjx``SGY 6-|)/ zVF4OЛ<_y̿zvM8))Kf%%ǤɱR叨r&+Aԏy~KR:mU^dG&jW/T+}U\QP8q *nS.W^e׹զa,I~Chy=ɝmhV*ܣC.s̀Tpߤ:SuyhP"aFXuEZ걯]k܃?e(F ( u,X;k56;6ǥ+1`bfл38Lt[2Kvtә1Da_Q&j=kN%@as؋(yݹqbݘ2%'񁥙IpNm|F,sO4a _R I9SPE]7ITdIaiظ5mw{oP%YEP3Ү/ߌNt3FCDr: $VٿfEiX &hjZHQK,,6Q 3=80P1QdgZL1ęgM"~BRVdvK9wxyr0x(%6On.氽? PUeFs(Dd?Z-?nBDͣT}_O"!ԝ#xf/ZiE. Ğz[5HA$v,Г.j\CYE]k!ahC)أ6ŏ8J=_qnp1*9O0^bec߄4jU>ue VQP`K6sS, dJ)Rs0Tv바#X(ĈڞE;Foag9P)=qˈLg3$J5TQURQM+pZT}8;DTAk1,JrRs/>o.M9:m۩J Y0̙G6`/ [b+{GّkL.&?ýfw%"# W:nA Oeح[Lv Yo zXo…PGvAJ_cGi;f/ &tuT~\ 24›σYHCY `S MB)=+)4Rs8w y'C3Ѓ F\9_w]縭L9+*Tqq/OUY_w)/[[_\:%7&W-=901wK:h!U2oGg-rh)>V B]_V;7RsdVnfy].\iCcz4GKZb,=90%wdFj}7n tc|ܒC7d 'ori Cs ̕ey 'w2YMQ # AGv)B0l1z~=y۶4d T(ENWIr' R.¥S̗cɇMT"kܵ$ޚg\ϝ8XcE6$f ).nkc;֡I3f> n\2YFCfl5&F^*]F !6Q?"t\ӉtQڀ~^w+H':6e=ph 1}9sO7 #'-x;+/R'IsX2 ڏ^ SvWJNѐr6CQoDCK6 XytAPբ.ض`$=V;/7eTBE,R*$?nGGVgGg7v{9HāEpK/'ҋhiX2YikRL#8A>>0*zJu~h\iHx)XڳKʴ̂.HG5P@[5S½'w+Ws}!obaAß`qQTHdȒ뇩YGFgSƔL }"1RzR<N/JdٺИS./Jh㰧xƵkp PA-D͸-`7vJّH؏f4?o`^®6 :W2k{ vO+{ )3#f߼K22|&6eC/_d_jO¶UYr4SY>A'Gch .:+jmSjAx!hAPr (7~vP6I4WgG|MbY6 pbk jf @3c|kr5qj// ^EZStTݑ g?3a㍄u!arSvsMvUo!r(+Jsa> 6-a +vX춻r~ߴ9R!±~P5DƉ2C5!1/,~458?7\{>Ӿ@_΀ ~|}P(1&KÖC##^'B6$=.ck܉M4Mv=w=@ut)O'z:+˻NBgptwV"W ;* I!LHamJkI~[v} :ry,S?so_O~K?!fN=}㧤+k56LKujAyB2;~gQnjWqA4?Q^e{<ݒ;7Ed6s ?KQ] <5uS 6wA,HGC;' ;ɋuDqN~I# g%e9K1~ mTaBSiVӵbjrUX$GM;=QEnFnyFb'TI9j0ForXKUaXJ}C Gw|n.,_8eǒFIaJ;ޘ`yLӄu $/2H,q#XC>7 FmTNYg4IrMi&HY!79nAպ7Y,ʊS~dg˜2xvbn'.2$>:Ħݐ '(BmQjIߪP^4ON4KUB鏰G-c<$CN1!4 id&AK׫VMpL@ptjL ق0_u8a0n5ѷGjJ *olg0'wm#i2V\3ebxp2jS%w|,~EԥWZۀTެ@:@,I<`-BRz&1^e6*,f#rxAζV>Ђ:a(g! #y4YzdE|T)@,{ .s]'ÒS Tcar7eA".2VrZ(&MS߳w;*֜m]϶W smxٵMN)\;f$һLWLp #k8j%͹sJ;8Dw7C139â!e07/l9- j@rJPTQ;帙޼yV2bLnU"MOZNq`S5f9b9Vwl4k6s6]c T7^v2FqUe36{"eŪJq蔀~Lњ(XųYJ`8P̠.Bg!Uż^L"Pp"'c,e|51{Lk`~NRĉ9Etq(b[<T)3GGH Dy^oʽfAy}HiE*,"w1Q(蠿c8 ۞p3[w(T8|r,B`| (i]A_)ڝϞв"yջ[Oǿf)xg"Vw(B1&CpLFEoeoÎnM03pLQ)s~dq)Ż,!\-Dud*^*/'.8^alvU79xQ'&я, j,kzYwPa8QmcTfc7v &.!Qu%䢬]v+jX|vg;[[ɾ.pѤ'a)Gw=i߀<ͪC="%X/G˾O;Β+>ԊнFkg . %#}b ؓkʦey3 ݋I⽎f[YNSf==JW5҅5T.X{5쬏!=|rh^)bWU&!/Tqm/Uk@a$u#\'jdA!8z~| 6tDKFoVU(V|y=ڧs%@D =Ru6w(aFUԵqK4 (⿑iFPj,+#ї}HUCi.ucA3<8$&DXXHs-yz@>fҿӝ@lGˡNE \Lq/M{#VTJy?$?@9GMۢIu(uS!ЇQ n+:]}R(͟sK53~Nΰm5%QCyafyk+ȸn# m5tI#ڕM0CFC[;v/Fz"!.B1y/K<8լ=ȑ/DNcTb&Qb{ '?+c+Kxt:ߵlN04L!H=fQ8c68YB譎~9VTówOfYmoዮ8E7T<}yuܳc{Y. M{=q0ߠ,CFr\Xo[,O+jwإ睁*w4u"YFe{$+ h\Sڭދ^ t"CtӸK JJ{==hIN\\ ,^cLe'd@ cA^{n#)8O{qk\Pm?jMEK'e2/`r"l2b7jZ| =YG ~P~"/+q_\h;c04>n\R1xe{0\x~l[T7ίlLX#Nɘ2S9K|! N%s6,Fǡl",&49M"(D2r﫬!qhCr9z]5!aL&uR(tFœ3נp% Jx.w.16]E |!&n|cc٩k* - R+)aq-[oR~\"Rn OúMN]B-%gQ^fUUsr|1tS"5s]S5$4bEd/3^k^_K TܥXzۤA[Z#,?yן_hɻɉ 8Oy"#}-l>{]YarGcTr^A)q{|{UaӒfh;8(ȸvXsѷl-P 0/jht!t9* `1Pe쎘.d旴/7}[u6w'0{~bZ(eAs+ a Z^gKw@f7 r LeԒ26~qtus:(^[]3-+ϲ7?rF^i IVofx(@A2YlɲM@ "u؆[ ؕ٘7/N\w/e6*픆Zvjzs\Z#? WYX70Ta.Kcۤs=b$ZS!q7'C ^/-*@^2^qO{!25;'R\xcӃ9F|hqD]ksjqh]7mϝ(h&QGep#rgy޶®Odf0eژ?GJ?T73n1h ##a VOc,`ǐ%V]-X>\/v_sq|j-c/`N˪7v䑤? `>S/&.!rh5g w=UME: "BLZP}Th$SOU.5Y a .8#hCSvl*kqXJ' hK3 *X}쫕+O7_,nn Wuzjn 8QK/ڋxQe9GؘNdDҬ{I(ъryj$- @-@1u '+$H3&G_#SNb9x"vńIF\ U+YgmbZKHV }ϔ13vkfIer He[UͤLwi "𽏋@3Uu:e/L8 m|GUΰg 9k2AIAWIf%9d9|-q4rAʇ]m.kcc es"6HC*Ci9wx^ڻK+ofT5TDrhu_/(sKSO. ʜGqo2z9wEȰ;eX 8 ?ǃC>Py`k q R0$PfԸY(ÏِD0tG8 _Ba 1²!4N[%?6H| -ɯAQ2quUP4ֳO0("LjO%Jާ$5z XHOFu|)`FV,k8u)kv|qR8veU)\Mbhleab Vh:f /).U|ԉ1'ɝp0W/+S?^ PF2h \lSdʉMJ./M|aCs|TyHIk8Zr;)ْ'Ѥ+p/6GavZR/qY2$^ KW[ WdHF{E|&]gvQqKKlW炁mXnuS+g^@ݙ/|f WkWOol DWjGWz*MUE7lDWda/`P\: x>1,2b./]@YU@i'DihB]V^l1 kG::mҵ0zH+/'S}hZ*ߩ ċizhA`vmOYc1VWYam&No\MHb :ggX_h%d2)iuaE?sy*5r>Kn𲍇 B >$3L\kN%6^t?x 7>m%;%viu-NEfAGP[;/j1gJ ʬ\*8i6ۙ sr!ׯj l4bΑ^Ϝ3kE8gcEȫ^9`]όU 3#ʾSҨ~Y,v^'cX':Gܓ{$L]`g2u,r?` F縦"wOpfMwzjot=6BkK_B}zL\^K9k(١Iȗ}WD*\%c\0ŽY0燑!6~7gbM eBS&Z$MA{K2[ӡdEorX>UY3U~Xtr_"MvIBԏ2('f2Q$&֮KWWvʪ3XCXwP桒@]'2+dq.hGt>-}s]c:gkUL1I[.NxMSBtB;ˋw[J`F)mtڸm ێGe1-78N᪳ -.MccKcX "Ñy|]/fiM# tq7˵(Fo ;{vIl ?OMP=I_g[xm^Nj,W4G'{IalEF(^2$?|<ǎ .t"J=q+4?]Ѻ=?id jQ?7IC=gXͿb#q[x%j7Ni ϙײ*faՋ4eHXI$cdj, #)rFO=>m|Ԗ[45 7ʅGƭ}Ǽ.@c#6z7\Ɋn=Ra`ɉ q?x{EQ'E ?i`j?KFǘ(jՅoIydi< NwB#JxQR`"&RC0(ˬT[ /o 0)i„GNnMJ?$m.uie漈v}Л 3JewLwC8- h Tl65rk0 .y >*yk}No4GQ֦ } y"J;Mvxf4Qڞ4zEGL򀇬f-|EE[688v1^hyؑTi: QWXVcȋy_ =Fi4gHL0. 3U$zv2wTrQ#`њΰ~umJԝBx_Fg{8WH)oH=71., v{dxg\jtHYܩoͿEW( @"[&ubSy_&v9{rDG)vrf",ADBL ><>,]{ss>. `5#@K[T&P )2 tH W\Fpѱ O y>uf9>PǾa22qgLF-rz+P.`jbqcX8l{hiaT`; _(z8]zנ!vB'"HMbq5D@;[9sUrc\IťAX4~tI&cO0*~Mḧ́$F󼺮◞}ۧl~Q= NuƏ/K~KűG+R[Kߐ涙Q).}vضG2hÑݨ)=r|fFo0?eٕ*!92 ImԫmɁf~G#=uDŽ" HF»3 ل(O-Qx]tNq#<*{eNHᷔTkHw򱯳F9]vu J\LcuU ǻ.6 ۨ?ZQ& h!'qנր .M<)+̃׉HtZLD$ɒ3L%piYG)Y?ïulΌ^# h"o^?C%]CGs;C,p j'h;bt"12rnz_CEh[܁m0Gz%f'ŮA]auz1y2= uF8_7&itՆ3!K,^#kYMٙ nL:53bM) Ȣ/luۣ3*[>-AЇH\M1be~dK>rԱuL6g0"p!L2#)J Q̂anyQ8DCT(&!=$p.T̉YЎkrCc8xclIH˛v rͻCZжJEԒdzJU_M%V!A؀]XlX  t{pF q{o4\crye,Z/_aIvQM賸N{ʁ9HMEG{/ S}s ltrss̾B;7EVopʈ _ijN>)u;6nx oZTkak&Vh\ ίx' H|=qKw>EZVbCki\n ?ch BJnt[` J8Wޢ=cRT.״s +fWO .eO򸈛7U<>,gxnM{4!5gu'y[K¡~W/T4qTDJ'FA{U >ʳwp k7y:z ?!㭫A8Zo-LQ²a`Q>&Jw`;A`'"MUQ`*%BP T]K@ fcp\iI+@yBH]T\#(:Qa͘1=ڸ׾WQsH -eb ԰+6GfKrVcJ4^'Kp}3/Lc6T¨776 B4ȑX 2FyOU4,|" `"9\U-,ٛs8T+Zh<*١4#J"&,Y/MGD s5FОޖ]aj CG`<,'H;h3smWYijIR: P Ϲq(8CS&@p[0|du.}~;&:zDC? \,sU7ZY :4LL8$v<@ ]8MP Ʉ;!J;̳"B"@&:#zݹkS0H'޶e7K,^[(q%vḮj<6-/9PBAN(SAs!L l&v8 )E)}F1n#c ڰͪ}ʹ$XB58>uB0fXlLo|ƶ+G/{u/HfEYyګƙd$%{1V4?:y'"m+Swʼv}n]TgfUVS\.KQ|K+Aċ*^?E;MDEk(MNY7{;O]^Ȳm{F?51_WH*81 zpĿ;Wwvg qNsDaE6ҊPc(c^*nxS#걠,КSgِy_LAqx㯩,?Ieٳòkvzf/nɫ}jP`'Fʞz"μBNcJ{RAj~$[!g8O0x'I6#@BG3訑Ԥ(-?.5h 8ZVr_(d@˫hPf'{43?'zq7=/|lճ!W%VMe2j&>w^|غ 9'ųZE~(xov!]n N4 pJ݊8?Dy&PWl[\sJ?@8c\<ΦMR2*{G6{|QGpXs^MZoDH,'k'V5',bN0=ٖe#g5Ų.ڢ&[4v)Ã0.o!{$ğܑ$Y2%[%ޚ,Y+{ߣvo$NcݕֱT5\qݐdw]YlY#5>2XyOشתsL5dL8X-giS:ˠ?4(N|ӌ;2pO3X0OdKWs IlVYZWzEbxz:Φ I4(/J4+AE"/zkV-d&4"CKpK_B /R5&~xdf%,Wd~a2=Vwl'w_|uv0~% Eln\EKkֽQ|c;+,._xh{P)\F[7go#5q.S=8K&[[-U7Swkuiܹ'XZ'8Ӆy;,}nŲWUU6Q;iW T{eNF'8iƥʷdcdQ<^1Dݸ?uQ ؞|(E]365kHBt:|Py_([9^8G[kYC.[`L)ꀊ_{ɮa&t&btGKk2t*~?#6^vvx|^ 9Ʋ* ^V,uYdh;׹cGB(2*ZѥѬ(tcM֓;_pFwYC !ͦ?!Ȗq~'>G25=|UplOyOSEts`hW)Wq M =vs?U] qK L'ή6ë9\` f"=V{Dͯmݥ2~ښ_;X.j|P&+3@;26!Pܹ%gӓe2j.lOe?V-ˉ/&pKhd01y3r\%Ep5%#;>J0с-!7J0vN9>۬qWݜ< f9P^E/$CqU|cͅMEpȈ.5Ҝƌ;XڟxG[Ψ` UA%Ξ=4~޳ǔ} v:WY8↖_i 6琱 ZcK43|]X%/sWgqjqwͯ2+\nIFZ_e>|l֠O} {omٜ֕tJB3o$ٕܲVNS̫^A A|!'|r ďS,?#yi ZJd7z(%x@5~8Nֲtwꇛ,V֗l01yI`A/ 5Ļ<&IQe=I|]e_eΟmk*"޴RL$.f]s]׃kWHYz1Jn2n3`Wdm>Ks|+&6w]̈8={wi*͘7ǖb55Dɼ.hXɰaut</g o:pP;JOW8<.10ggGaOF\%?N@YR 3MuU!sPW Ὣe{^+җG2_}IIkěz 䋾u9L nnBcP?cCٿ xߩG#М:kR<\z{K'rޖa L^m,5v⅘:r!z0 PL X .T?dzQ'RHiexWQ!=[4 K{W3rVP(-ZJotTiU7kt( U5pKk"}]_ˣFE*‹qˈ&J ̎x|FAkD8_h|{8O~}wei4e%;~kuT;ZT6`7hOM{a*YfoÙt&Ñ@?1m~P I#VQP0i}Xe]g^d)}`)9OЎA>yj%Ff>[SLlC#H i~\ uIQKξ=Cm$L)̍ydײӹ⭙/xߋ?n?$A^=EN."nGV%1h: ď`Q"KBJWgи,zRx0&65Tq*0k5:n ڜ id%*~iFEvhԆ0ٜmjIj t)OܗVk5Vc6FX&ɥ#O[|2vC~{rB' M#[V qk6ޤc>y3Kć UWNVCh@^㚵qeQߋl}+qC/@W{錘@l邠5UrHm9^Bǵxs-E"s=&8؅~4n+ #G5sҰ;V(.=M\Q᪱ڶGo9a&ႫIq Ԅp#6PDcTg6|s]Lz>/TqNJHTz,Y9,g8~(*q  opf.q1VfF835K@^|ʊHJ(r2pL [)rxv ehQ9ebp2K@>’ Q x08! 7r enxQl- W1;!3< lW OZUg;*֜];}c6>-j*jPajpOfhyci] fHk+vI , "qd),R8tEp~pՀ_+i#** K:c1_HFw6Ȇ@m[ٮVE 3:3Ak(\?|9T-`^#0P*WW %z#^4{inDˡ ҅)fUjo)V-z趇bh9q69U-eMc-=vLsZyX+WOc9%8|{ S ܸ2!d L^y@/? R^;\w ӆҮۓ=ɕy1; zgb'0:§쨌9e%`ں|$c_{cwk{bdl=Q@-sNU S8Q>*@ 6X+=N[p-IjKi0ԡQ5  '  OW5@v @/bKX#TEsUIoSzye\5аE$!+S}^G4>1SBcH|/b!#ʙ%me)؄qh 8gEN yewvs欐"y nKp#rD.%֯\Qb ϩ/;Q ( *Q9O%zS+hal[TY3 [C~S}(YwpK`?V<4lKӝ_:m uZ[QqN3XKg̑Cf0̇G%m,M[v#Io:e~k{){GCeu".m/\+V,wbpagONf}yMz1^1F2G+*4#cv8'~X#-ŽϠ/64VD#ה .4W$oؕ'ls i+JP$\0X؟Xߘ)Odv\?B܌j KDS)Bg7Ʋl[HgvkCNP8aH).MA )gLncf{S-ZۤrE@)"Hi#xb%YĒi ¤uAzK+K\|^ 67&,?ً/ 2moqW8aտ;0+ܶs+ܷ^^H|__F_JO8uxi.ܖd ZXnn!g]&3a CuٓdvZsa:ƱB6mqSY}tks\Ti(mh*O`ior8-Z-T0\\iZIz,9/h&MD6{>0G=bH*XW>ϵRDYnwZLlrEd6[ ,03=@B<%Z!b(iWKWt =h6m'Td Um\xlza~b…LRBq Vᮁ>:Kwig}nؤNk'Tp$#><Pw"4J8̣YFD׏64 i>&3}Bߙ3\SX$'_:7zW¢y=w4Rv:H.Ti6Wl3fY%$\}A..˻2S+MPR5qB!tN:HA帮en%vX!gv3шJܥ0bQӪ @+ż)'bEUb\G<LV3_ƣrʷ` E,$: lD"QZ]1őٶ"!+gtݹ*.FB}yuxRhdZ;q:cNsmTS]sOBAPXА<; v4zٿ%ܬl O&VY6o е \->碽#݈'qqhW0+(p,$L36TDQA38#P@ݪ҉ S4{AvYqw<3Mo_5 е6zR*"Кak:ݵ}s|B ktK1saoe!60Va>"mE~ޝ}8 愻(yCXcuDnU0Chu.Jrp 2XoS"3 y_f z4t{Ʃ.EXϲykwF?cߤ?OA;$kWRf`# ނ>gnD'Q 5H1vT>4gɤ1&7٧%b1 2\D$(d3fE{ľ;dzoL*ǾpzLO`Os#^6*[e3%fLhmiSI1%f@~c:S\pgX5tw`WIl R¹"vD6܊@MNRV1{&FT<-J g@K. kUP ,U{5JێQU }"&* qT  EyI" OI8vʆ >b,AWw<^(iT p4|C&3c Jt@Pղf6]iK[kpd*ծv[ [[{Cng$GԾUJ.t~a$p; #ѵP KUdeh:XL`xrTx™gG:0x)4 x2_}zIo kNt&2rLqIk2Ms%wz2-}JF1=S +zXX-ć>[81_\ӑc<]"\X kT1Rh$NT5YWed^+zWj ޔI23v*g߯"3jH8yU~89MVx@80J9S݆lލ'? W^@>`d:<7ns)FGjUI",S-?V3DBNԪ# 11"C.h8 A^X}s&l.2` XYi$`nI#ꐃ7,!]Fȵ|tZC nŘ,(Sog UoWLK*:=b L=w^gfvLcEGny߯vd{(-?o[+|SSjQmD\A_m83@>5Ķg,jbT,I?s>vk .Db~ȶ:b)yM`!7>iCf'tyKq)u1?e="xgtfH=jx.] BK* ڞ3?TSˌsE Pi0A5TJDIF1eE̐6TWoZhݼtAjόG/$YNdfҙcphYT7P_0Cxzvg qߑ/M~P;jYfE}}>R_]C"p{jks>c;KlNSY$2jn1˟Ϭ&P7o_KPN=-N"z ).'K FO,CeMMV%!)S9d):`~_\of4ڋ{ sv(L2a:fɾ=?dD0T~!q[3P} HÏ`s1'lGGY=ޅnRn!JltN6KJlU>NF+CEǏɥ/OzF7lHb%uZD\B3}0np8Ӽ^)rWr b2Wzs|m.r:HD:W^bb/:Qvgx^ M;˅ <|VN~u/2XmOdU$' ah<PV,T -hA!N9/6s|g+."#8 h5ead(9L СPڷ϶&_aU4}Yv ^|6jLF+iꉊM&ߛc걽@kaԎS ]=E2CIc3#PщJb*~gBZ^԰p[B9%2&F>ux͛s^PZ-5K25H[5_yo4fC2(%P*R"uWT{X/Z;/&P3$8(.@|@yGZ&6(I) a6u}zmǞKlxǫӾhL*A̐{µ|݂{А v)__ [??~w,.mԫȡߔ"+56ij !P;JA2eHntVXRfT; <:]!Ӈ8aC/61ئW ;qTlY㩃zGG)2ǼLI(%SfI0CziB0"ZmziОaE@Q dm2;rSa%JGWZ 0 >pY4r+,mg:dFuRwRh(&!@ySDqGsܔ<#*ĚѠF`h}O{|[x*;cnmp|Eج_3z:?G#d,Ad7_G?k;ܡh+D9F/s?iw7&BYnG1u1yx@ъ=nIePc-'Su}"ظՒ+loP}(:h|RL',ٯ>AYZ  d˹e>L|Ӕ=ߚtm*hzQP*;DVNݱPt~pPIKX|o@^G&D7HYuIB}+;k VX,骍eR'W ,0 {o;d~VU9!i)I;);e /~e`e# RsM VXJ87I]Ԏc\:bxw&HXNʇPB A>.Rv |rU}ptϦ:s7&ZsUD5h U`tOt_z;ESC ǹscfPlzZT#sy%RԾ(Yk٤`%Qv52Rk>'RL2獋,;'*=Tೈoz:`ʓS{24g{2`D:08=HͱC;u\*AULq.nddkp/ C3\UmWj%rhXʅ$2 FEYTyЊ\|7I|؇WhAqLNX{hdznڀz#Rr0C~Zx4mRUYjY?iCK"rvڳ nǢd%Ȫ }{LN,&V:ifW`_F.p%/hc^Ĕh[ȼ@;z=Xc&] JmÚmrEfQ/9*lv1:/2ƴ7[K6f![^6=j0b@6i~ w(R j]I &97@^LR*IL]O%ˊM@+j3 v{n&L-NLPĝRĭi?FFc_  exA'm\מvhkYãG ʈbhAVgz ̈́~^$%}ny{W2+歭23KLV93ۛ]$vwD97"hSA^Lߠ)M>CF 1FK)'b괊Y}.yĸYc:j~m^>ris9.tPS[0IZ'L=kLWHg~{0.yU@Ь 7_/'mLp;揪rEbi JR[j{۷#'˰.-\4땛ZmzPA/zyq nT0s13V DkH'Z/Q0IH޵mqp`Bҧtm5g$ݾ,Na@i #r@\k&vAm3 5r+cԇvݫJ !x^J^\\!En]RlǞbFn~4z-pLHOp{y;1/H\ƫs$fgBp:8|OA`,t^Gx p % V .iPpoMieA˯EI8qMaOt}yd+SILxd:o!É8R,|.r;PE`u uEGbt D-Z:7Sݏ[CcX7>#H#b[mt f4t8W v>(/x/D(EbȢ& ~pY>+5~2  JiYL#7?ҹޛ]A[׸Z'n /ᛟ_`_~ TqRC e E3!6'aziò塝N=` ZQNn@ KZ#Sw"x͊qeJa)+]O0ߜn#@=Q^3@ր;k1<^B٨O˩/?P5 -.!f>`[ױVB} v^R #n'Սu]x8$l,F𛇃zwd Mc2.A{y}LbDJN.ngjS #58 7EmICx-KNĻwਖ਼OJ%wTĬH)-Rg6cq |NE^Sɫ>4bMN-%PnƆ+ cb'\+ ^3iZ.~)푊Ft԰d<?Hè`[WH'\/"ڦ-΄&\U"8#~Q$2T$ӫ~]MjX ^ϣ{<κL:#76eGp2#]iT4Iի0 s77}Fc9[e" 'Xfup@PLrE]vLDP@uMŎ#))go2rsg qQwiɓ_ыeϺuÑC/&v9nJ'!T"b:?QJ iC|'X|3ǵ^bKg,zPwtWiܓkdkaa ˛tQr[a}>-.%Q,6qecΡW3C% CY_. f/,OW6O|g^X|N_?WR#nOB$ и2`irh)bZ,6@bw,O{ @@p Qz6,Ϟgq#8e )/*:r#nz+} Ib,JYw87XwwJs`՞kҰA4qH%Z 71Cz|v\rLʏ.7#IErS9G5+4tf6:`ɒuE Y^@҈fpLv'DHz%UkK섩Sne<ҤPNoUR7k/~ tN#m=Ό]lrR;Vhrs1>LSoxrNIQΖˌ""2 xtF"Wc m tHF(s C(0Da"7ռ*+vn;<TJkcCoZoQ܊B{z!M?kNSP /;-\wʫf Y*%R7}0@6*n]MJ :fۀƤ캔nӃ3mPz"V4ё76 5+ZyYS@ [OS):`sEu?hvv3nRO<斾K|<Ty6x$]C0uxy&dldRwN#?x\]]n[<ؚZݘ 0GMDnRţ`.2']7`peK9"Wҵ ?xdUphcqL җ 1NXc*(tzD-{qNE?GK~>llglޘ xbRǣW] (t,|h5?k6l"*TrAlԨ;,:<}k%9&J:-ߌQʊ\>93sU^)mI3WVc{zK$Tva PlI6Yʉv6"V¿(Qu2՚04 F]FQ\#覢עZgG!<?0n5|Q:\Q%SJn*ؤ1i# ]=?V>/C ou C{5-C1K *{ ̯/e[Pz$?S3>.~Gbِ:|[}NF`{ߣ/ӱ"!֤h%AcSn =|),矢C.0א b^ԁ,U[އt .24Y%b"DAuI~}*bx6x򍈨 qfx9op3.1;$䘍ٗۗ]4;ac0/?77ujѽpQ԰< 6:-ֆLU<Ԟ`[:x™dKG,c[Xdy(KEM9?Bh)r6;bU}>44׀c#B^W/ C "!жG|w[bU;Pt*\6Q6Y4Me8~[4~PH-9ŹP0#qS6<5r%6J A7fR> z&{̸c6E{{Gk\fI6OMǛipmGkgD4ʭ@ q\kڝ~*xoꀊ.5JW^zNSv&U17GYTl$*3L IWӦu&7.Dp$r:W+q=ܗo "M GȾ6ꃦ\kdD#g,v{Jҗĵ,JE;yCe#`gSƠÓҸj_q _sR Z;P'JB|K8`tr1xFK߲KF `%[EBl&(4-7Bd=m{X8򢆰Ӡ?-!I u/L/x hٷչ-?@#~7(O{`*aІ("閴B{6SQYSi^TDNU0v:H:%-Jb` KV 2@^S0C!e2 gs߈㞷GB6|0ZZM7r<}% Ty9& si\c1J4d$χ(Rx8&(4mG؃?7[^BL`C+*&΃+vӉ7#@̉NU`MM9o{$A&fٚ9 8eo%N.<  j}oK&߅Q]kSD{tW{wqxt D(q7!`[gHQՙwc +Eo"q і{̒Q%<lw(-{)J$@3!ƚ3 K*jה>h۠l>S L*<8uIf6nw63< o /0/M`Qϥ'آ2\)r/uQ~JL9OΤrѥWPp ]db"gx?%ΤvQpf:&Jٸb r~30C-N Nv|S+Uԋ;?`Po0 cԟx}t69+P ;Z :=OP4fQ©-$GM4[e?TR"Rg#DK#~I0I`GSD,1,{ D$کSuX喴i&OtՓJQPv "L9Ը _52I} zD`ڒշ6# '~/[A{Od ȧ$t 0k_Ft x vto rfE־#N4:ޣpNt kca blFbt}$xMgb25d*te,pAzfj2,2T.| cp#eF^tA.Qɾ3v[!\kYsX8%sq8GɢV"#|?J`DVqTn4 (;]l5;bg=*ߘӷ^:շWͪ\̅YB.Ё hD% MFW-|: Durs6w:`TEs 2A3x{§n'79%io\#9wq1N.{I,4n T "#7mkĖYZSސt̓iix鎜eU$YYrŹHD*(Sy.mVK)׳O0T ~pslT_o5(?-ߠF3L=s"R_u9א AAt 8F9EF=X*Y35=C~ߚ=d~zW./V_ԘtX׏oDh!zL -'X&[zrH_R;|y#NpK#:};N2~Vp\odYwpfĿͼ :۰}s ݴ]A:f 3E~?%NE"5/:=%ɋ&C2b*e<J|5 zRqd*w.@ )c: aԠ%X1Ud˒t,D~xAlRIv{:5j$nII)3]VS. 8,!O_a^{6/{X W;x/454DFfsbꍸJo !N+]qv)kֶo6@)Qq'>FUkg"\2 :&T7yIfe_7!T@pn23CpKSarf;qpp1Lovz .R𫉙7 $~6F`۵F8;ތk3I|"D4hat.?FY)@Мgb@VE " 5aF/:D}͂EtZZ \k{w8==<,xy~ ૥ivtm\蛡Jy%躟Q҉W7"_M&@BK@-v4JZC@0FR|#4 U,Ԥ(Ej7h!- L "FgVd4@H4CT$s@^xIsns561Ɓ2&3t<;ȌwmG;<9^3v0e6\HX{Y1܉!}hMvq+MB6RGkJpRǐgSjYeg W9|,g:=.+'pj!ڠY!\X Y~P!GыV2CZcx gQ5̄%yhzzԿUL~aV0$cӝZ~8c> _`Bߪ")Q )fv䉒ŵ 8K/z?ADp4c4SVxIkf#$__% |= ByG{lQ\0d |rֻfbA]2SdT0}XO"dΈ eqx-wlF}ȋ7Cz;vL2ša'/'ca3 {!WсÄ}[.^g<5EbSS4[1Wl~Qta cy>Ik=ms#̨H1[^<1M)qYm7ap '!CRlP)m,G1̞. 9T6j|Wڞ$RS-ХkitM+v})@N=ґ*p .>R^dv$=v4z \kD'ޙ>2,:ȵN-.-Ģsj7I \xJ}nc`V r<ɮZth!&F%'M'AAuu#.N۔a?j9.0G9n_:X*V裶+V?TTWvy3SK"!>V.yh)ɨ Yf3RS `rdaf6ԣ~a%XMc({PK` % ,< CKj4iN͑]C&J--*EǬ)+pWN5jBDvv$ZXj -^SFA͝P&1~J읂 t(#ZGz"+gC#Bͥ8_+r Q<=dҭ)/(C ;ˡ]XipZybZ-6G8qF6ũ(k"vhsTҙ%G`15W @"jeClD;|a>.иg㫄ElJNޫ0ٽ~+<6P┵ \{*6V'u(^XjnМa/inFJ7e"<^/u.A7&I)՘XX4G^Xf99mfkXP˴TT9?hC挌3 u g_7ʼn:N2떕t3c@M_Jy@ |F%{K"V8*{D uxTRͲ5xqarJMǠԐQw5 v+ Fj33Vs}kϴl?*Y'峬y'{#f+[ vղ3/kUPqM_ΣOa:0oUm?Ncϰ]wh[ꎣ+40aeUTS {\C2, Y3n!~[q[EF ;O{{ }72>]ZfZ7(6uzTj璿c8 hZBZtqNVϪȁӍBC|VbD:+xjaq?+Gp#⍠f^AWf%x9 uɡ "_'Ͼy8+]NMncpT]TJ꺳­RicIFg=(cE!J{1ŵ];u3g-ϯǚv[La1z!EN`_^֐(|iH`F5<4:5-gƗ5֮Rkog馈z|pY>hd}OGTGnZwxE9kY@ϡLT)eGXKv'Z?+z \wa,2.|죞 e/=/| <fO@X#XbfkV,aMmJz'؏M&uvgpfILmM2lZ i(;vZNGV$*ǪWCOgC&ɮᱮ^WW4$) t|rG=$ZԦhm# 邘9%OBp pwmThPOic?,ڄד/5}q[-o/R1 M_1̕0K! WR21+;3 ѪC 3S U>|hVlrWy@!21TO \![t]wxF֢ 4`JӤҮl\o 6\I5\+[;;Z?'\oWmBndOSH9j=Yqeaz/hyƎQìVj ؟auwiH4U MPI='\|G_^43x%84t7l1ŨyH'~(͢t0])D- NIfp>&CU)QhNE9getozk,Mh􂨆θ8.yFjW$-D܍Uk ||{CPDb:M y+Qm*}2i3I5mKCutMhvDӖ Ck~i*A\9S zR+YVF"[⁢+ﺦC-|]tZ +"Kh6teXO>ʁ`tT<$ו%B vqoY[lD/p {_((~ v5dG'?0Ht n\vռ e (y "ֺ1ςjKZbkA, o]@UE3# #ԿbGcsv9E9<{RK<^Oyd\ Ok; Gk㥰;sjxܧ"gj1c@[H-*2ےqXOuCKOSzcR;٤<1֕[EI%4 R]۫F+&2ưߢl; MF+ Է;X Jt;l !i$G>Zt놀R{NA)y)k0|Piܴaڪ-3U31MRԚ-*7+ֵ=٬%L܆C!1i*(u]  d1T]DNKAAFSN)0Y>#x~2⺙O}i&zZ*Oz!8f{SˀPpx(r-]U|SP ;EƇu3p$pD_+k:&^,zYG~GnIw˜׬UT E@.qȑ8&=`k(# v+wp=q ?/FPRyz=LEb[XPaA/I=y% nyh1ayHaZfœ_B]P={^ߤW3^ ~ ' f;L9M@s v}Ҽ%J#Tѹw]0E!/9>p?ٚ,Bֿ|@rqũm2@PutC樭oBQyR -NJ!vLX]C&\퉪Lgm,棖l9]QbeY<_`8SLS9&C^Sʿ:N5"7(*?Eˇ@D5GQhQD{8(Yờrc.ۨ,ҝk|0¬9&=+sڝ~c[ȤgpvKCd.x\T/Nϧɣ CסbwxvTͼGS /d_nn\<8pSXO-}CڲBbkbmw[dh;7j5w>F 4=svmؒb:MǟJ "+1aAea "p¿8p?7'w?p,χ| ;4xqr-]=|IL}񈫶ɧ_ң6SZ:ǭ&h_RΎ$ik] [,:d|eJ~ozx.y.2CjFɷeᕝ=y"ehH+F̛z?Riej6&>~8dDf/7XprCoɽ[WA4o!dYcMᖾUNΘFm G8._ %6x}O7rEJ TNZ4cR#hO\ sBԚ@0N" c?w(ۡO.ceΊ5 և<&3;L 5ne!,ѹ4Tס7r`s&zV ze/Х4&.pbT(Nnw\u4mH{bI45Эb.zpFa!c`Ood8<>'p}e䚵3A_qP kt i10.aa.\1i'ү_~>yG R.T!mD^qPYU/C#=~3V ζo~5Ζp#k-CƯeTghe KnE ;n%h>dm}cA>{bA>[>>1=Ĕk-Ϲ$ߑ.ǔ$A]韽 Xd& hu?0p@{[pӦh-~_I_'U$b P"3D9z cgb.haF`zS|L֮N'Hi5P =WYYlaii}WYicUf$A 2N LO Cva7MvNYc:!Mi );ý6:B,iiyZP'뿴>0Ѝ%FW<`LipVG^+b첝6B4&)K3X^:JK=5ws%$!@0yx|`/'A1`שSopŔ uObl{wWOuI? H J3{G b5\PjQt9pWnsҎ 9cv XzRETA|b-!}?l端qŃYc R-]"$~ ؛%.)pmשp?B*Y}mEvV-ϣm@i?3o?x+ u-q:Z=..UL=հxU-^s?Žf8 rP;9po_#je#ad٬5W!~7ru$}Lt'3 BԀ'ܪ7~s;?"5K&oVR8'iH]?}.l>,m}1 3+y9GC3wpgG ίѳKxȱ92[I^R~pP!ʳFU&ԨJ}o;o{}zbfHyO|TBjΕ8%iM`XK:DcÙ/~{by竵˅Au\r9U$m~"T_xs<&qUF&rٯz\'/C62)OFM~4ym r9 W/;R^TzE ;*Zs>q:ó(9־2?qs伕:niNkPvZ4Vk9? .4*k17Eđj=lHp7?~Es_XRIDT"\tDfuU  ]q1,CjVK̃䭛|V~((Sۛ"YuGdK&:Bo $j$N=C.tQ_or+Pa# %Z[w@Rj$ȟS"BKw4\89U1zXޚ>u]?b!f#@[BjB;ú`"^nQ]>zgKч+,xbHMY3s$2,-L}] x7a' V]daܮI RuؗRM:LmfzR\ɘOWn H=^P9S6\D?FA FXÖFrYc]d/hjEl'7keըX_ Eqɾ4BCWut]ZFPEس;FLj:_hoe$r8R#!iy>H{ WgkMp"}NBR_/YRU%)L?KavNCX" 7 t9̩7D Dq Do5Vr-۔/FQBz<=\^p >8h0= Gd]?9`b y@ KMߌ7uD#@9E?K8 n'B 90;[p8 z?5&^˔O0[o wcM6_l.&./}!LJP.'{'Sp 6aP/Aΰ[ ohf>3P웪\RԈRf6Cb 'vTGnJ1 몡җArWyqh[R =5\ n 5ܒ*J|'NǫCѥ~! Bksg7(%ԛ| G|i SҖK]mB,]qP%}lJ`&Ne{U\A9һdJVz>čRk:!d$;+UD^6 ~4L$ybBr3ZQmҝN#M|Y95 t7[yH*qo+AIWzX(!XăTo\G:J,E7Ww˟}؇:oQ8EaoҾ('oDkRp"JB' SPHV{! Y3ج[PG;Cc\N4xCv 6 ʝ~Y:}(*,h@ f ]EJ.VN>/f 0z̟Y-CÕ+NϯE;U+k<#ȞHO͕s+m5k<7=Ăbg%QN72l}6Z`pBYB=6zz#{RћjېQ9/fs>^RnKJDr7R7;'71.vM&`<ً^^^,*J:;31?WH,$#6 A[L4 v_PeWi,#z꤃$tmq{{{ &Q?r-E+< +aSX0]Ͼp@;[j.6yd2;28 _SGJqLYM> 59Z0w #BA ).*41G:⡋7 w9; (AAEA?q>}05/R{Fu;|0W8:0 :`o=x4#>dSPZtqIKb~R97V^w+7ڑoG|! Ux֓[,j@=[_\SHzSA&34J6X2 T004Sm7;kΣN=svF ,dkPt4n_#Nqpe`ݶ@-;ja;MSKm]>h7PD8wVxRx"L'K!ZK $F :j/cQ.2DH#cjcp!(hX̗UkT?ooRG2<ۡK_C. uFk)YI+w:)!)\Vq|ȹ;ʔ\v#`&{WRiLŚTkT>Dm/U;w7DRo`Q'"3ty536kڮ;Պef Vw|pzŊtP}YK K46I-ۤ!Hx}Sq+Wڮu+\y[>Kp,͢WrkP3aCHٓ~VUh ?p /񨇽[1_'ŧLVUL X::<[]mkhŃetcȡ?֡ νʯR u.Ql%gouhaZ[ϸUqn(:;˜Uّ#I(<3;]V-ԕSYWq'PP[I*LZYٜP,xj2bB uJv~]Ў?~ʰ+GnE=j|KmITe{O_g;w1e\OՂvH! %TgڮRpyn5dzh荍a{\2bƿ7ki*54[#I *M#Tao'a|!S/z?ejuGcH7Zv{-s+Cd.T *EI3:6nC^L7zUݟ(=U\B`b E$JZE{/7Y-)]T T$D? ך8 ȏ-&+Jd!- +a= JlӉ]x!x 8 ʛ8o0ZoT2~f @ʆIf+lr lב259t L-fBhlpch.3o@|EO`*WgTgWLg7a~^D aA8QZ&IX4v4P /.2_a91c8o1d!k<QJZ1r$&t|-vPk //$nyw>$s)8C> Vct}zm㖀>X y>*TJb\06҈vk2R-ÆO}iK\DHի$wXH,(IzA+^<4'{6Q2f vu[b!zTiV& C}WMLxqyxO]taߠh$flg1㼫⽭*Oq83/$V_F%c=ϓ/qz3&gM(8vҐKֹ+bLKЪ ˛Qyr0r|ƷeyM<0ʶfoD3FNǓ5L شm`5nNHg}n337l/ qaݩfVx\X ?pE wɉz-H%Ǿ%)jsNdX8ϗW .fMt> uh[/Iy:p{jJFNw4˵3GTGxn'W4\Ѝpc]L7י%/,v `n.-|i{ 0g$؜6`FSgE.vՑiSH>HՕvVt7Gj3g9!ZrX4iI_ `-̱(JV9,TM5 SUw u3˦ڜ"'?MihC'U ܴ̐6:w k;k.3 hl|30l+E.& \ oϳYmuIoٚ0`O7yх/"BIߦ)KJ,;'v %AsAv|_nx>ӯ-h++[rUmoyJXO["F:]׀V/ءVCR]#bPKxJ?xmҥsve:1=Kbss.tO;*[>DӈW %.O*£܃"sٲVw\Ebˍn%֏b-Qxwtx/p0/ėjExzşֶ[ɂ:5Fpo냡UL&UPʽ/{*xߘ!L@]Cت^N w-jDj46G ͹&=:*OH+sg \2Ue qXZ?=QiEX?Ǥ|zͬOQ*f:&a8 @a9w_P5 )4f¥+4ŃMnJXOQ;0X  ԋQ>sӟPd <# syp"hzkXPdjJO{ՖZKfb[4|y\Z*J,&_I1`aUV6*5yn\@~ ә$ȞUUa^B uM,T~3h!t{\aw?Eavw|Er%<^R\mQk@=Ȋ^&M8دZ{%)/++2*X 3KZ\qq4gXϟ7g6ӊG}L:8;9J4{ѕ1R%@Y80-26ln)Q^+/ kLՃ AqA<'.{?I]U-]?#ΡӾxޒld X41x.8,'-Qy"ZS?3=Ma1Qo2xucA<&a%d 5` .l{;O2fW{## _)V| ޗ^(gW;\nIk@jm mQk^]h4h[Ñ[BZJLqijm> %d}ط Zh~ɸEIL-aF%@AXnVwiTo(ja( L:!]1b}Yἃj*ad*aQ\2^b%''Z0Kd=`y7s%gNcD5 n\ΤWsThp[^᭪;j, 9Yul6coCs3_r2{YtbBuٚO+Q>vI^@ULJc) I{҃f'Һ@d4[|*CAV\͕8n7bc>,`lFdJO9_9>K QdJ~ l-kBR-j-(16 u3ޥ9 ;8<R~vLŐUpV,#|kDN*a)ɍu#\Y&톛2Wlseȝ[$9ƣS6s |G(^u DSw!xi-m Voi<7M(`k ?0OBY נcTMd)JIďŹ q0Δ+eUNכ/Z }zY#Fi&`pV)¯4 <6d{q uؗ$?k#oXEyؿ&o.rkўSq,^.05n`w5GuuXJUk ;EV&_LI49Šr%v-Sf?NFK-wGs0%C0.u_/qΏ ?l^1vz5[v q97oa4\Bve#YHL9x٤1A.ge-(IJ*c[)k3=AcÇHb#0!,-w}Q2mic굳<^ 锊.26KvⲨ7 ),UK% =Y7W׽W+L3d#(am1CWYߓlJx'`c䖒+ȘFӵp[z͒Rk'7+w$YX Wz:[.ۛ\ Zc;bks2FO,IG{*n3di0*&TX~ Z<2*3PY{PЭ+s#e#4nDo85la|F集ޮ{Oy&8aeb 2ԧa J5 /Dʥ9L=JPjud o Dv:/US6O^3/AXTm;]G_?O^s̠sIqӽ/GGϮ+l7 'idyz6زs{w L0Alvf=J_sPpz:P`ʕ s?wnx>\Ov3^R>}d^&nKVsR#[XE[5W^X\.tia.3^}Po')]\ÑS&0*פ*z0([51sA,+ H3 r2CJNFx;%cǼaL& [oAMh3h?t\0ܴtfp3jR)hu=H=?6|@PKd#N#Q*x hr7;3+Gy V,uXnx S}~\aa~2 ^V]"NG?[ ЄK^P~һUG|.ԽI1_*C~=Me`s6kWZt& A/gŭ݁ճmK$NHmWÿ; YyI:g^G69y`F/YteD{[wR|a4SJ\jk||fpܤ͇Bu|};h$Ғb*ˡ+tZV>Y,{%Y>ɩץqDy-)  H]胔1|բ<̮xqxJA v޽  g^jD|oL)"Q&8}3(_l C kB(y/ T^pbSe8Ġ"=٫>:E =1ʨ EGn;eq#$#@D,tMXpJvsM5:Af5NF8O,j:$ PG&N;ȇڤ:Qw4Pg~SZ2Sldnuwzt}=p]fInBB PM1I\ UE\b}#B[䲁=u[ W@L]}i.qIe 3XFCv OɅCm. Ci S+3p}Jrq3z`mGcbuIwA)B%j6fWxM(ɁZ \ɾT:*/a} 7h KOC|g"F8RgAIqmR+~rdpZn-tBUOJL(UZ i& {o>( 1e֖xŇI$JHR 92 EkFTR(xD`qѱ-R*Rq`. ĮLT#n,?-2X40޹,r}T૬P@cS/r<Ǚ\ZD#]AS4vsOv@p Mhʈ!mp; yBWRNqJ+5Nux0rtb&>EId(*S}}s,uB; j /&-d[M((}\f ="#KBRZJ+Es4k[(" $88A( 8=MnivyATh>YjŴ?Xщ(BpEњV7} [{kl,#Ҋ`z8OO2Qaߺq 9hEuR\f~RB%ѥ8H$&9RٮۑEUNqLDJ"aCoUYRќ9ΰ >9NvYĊrd@!E pCVŽ {+hk}7' ~/NAU.kİGJVhI;r0pKR}bv ȹX\;JlPL7D*DL˪tv J=L2*tu+ыVJf! ˳U/bqr8TSφgE^H4u*(ץW_Hf=wĊ؊i2&7LuCvʍ[}8 *[EY \nsW, Q@pXM97ާΨ7 7L|~aYĶ`bXh8~[C0?*dJD<Х va`@TsZ[d6BTk%MZLc }gcP8Xu~ZԥrWB)OГA]g14żsUɾ|;*AnTaRi%BV啡EK=2%x#a"gu~tR|~ w€,Ńq Xo[M.{AumnBmB 6кsA2lҟ`-vDK|B Cf5N'6-Zߵ(!Oe+,1{[;H4\kzf?eCg k^_u^ il&gX=EШl1jU XB 6~>XWi:ry_/>!}o O:v/Qh{lYzrQFPr[Cs[Kk;Ȇ5JԈ$vǰ)]f'fBQ hk[/*^-(q5_`:S~.yVOSsSc u r%uے^o8+xqzԾ4v9blTWZ˛%g"oSY >p\/'q[[mބ֞">~`D e-ˍfLOqR7X&`G~'ܯ2#q?w맞fA?Bv>Exr77Y<1KFߒ>BeQO*L\ulZzS;{,@~h\Lty龁/^*EFPlGsQ/+'}r ԲZ O$u-iVooCu';|d%_];y;}wO|?;8H;*63'faf߾Aw6ĹҘ86xfElocI]sd0$N6}$;gK=Gqm%E 5ٙr͐ÿyҒ^w 5m.TR˞rY~i<$w =R}bGQuzw E$Ql ^(?pK:{^Yvf$Nu W3MQx%璩@$}Ebr۾y]O>0N=Ma5Q)ʠTc%1.xұE~$ ` e:֬xM(_0&dQԶXzUtvg(T}J8m# K3 Ok:G7X tj%,=*_Hh 8u-Eܠ6sQcde(] ;/6AS{QM5YWCO?acp;s3hv9ܨ~C tTbqq!ႅ[ՠ&<`=oK@<`0Il/G)`y{[|,FEKPo[jS-\|+X]/PoJ?w/Z7}pw֊T A.%Y7e5Dtyt˕bX.)x̏5j8cj:B^sL%1t\ֳħyC_]Z Emƃ_1jUbKE>Za]8Eb%6*reb|Xa*-[݇SL7{Y_.JviL-9ڣ+cW =rOԪ)Ju1/ߦ(rmGgY9T5ۃ!ptZ@5g*}gJƾw\( 7;j 4C}8WFLZynise|8|Fij.8a"i<&4[zmVa ca9_IW(f01NUCQІL4zOBz .LI,aF&7b PRqȨaLm}sZ8FX$Ac%%*!8DoDafAđI%B9(b& T6ۊcKn$a>!IRgo@p_57sC fR,xjq{KYZ3ȁif@6%!Wl]ըza{Y0!V60ܰ:h6SScbov)>f\+ IS͈͐Mȝ4@l d=2U'5dtNW [os ~zK y c!tKmmʏ)|<dzl0e9ED͓%Sna_C[:( "hMNul%.bvl3A!r % La[\ oK Kͷ5#1z?ټo Rmh`hg /j32_΀/ TpkXג3pCWhffx,IR+y/UH[wu u|G9pLDEJ ~J `*7Dndž8U1iXMx+{cu3JHYZ$YlqFŃzn #1/PA5]N^]` շ劶Wǹz şk.ئ :7Z̿C+;Xh6^fQ9VNBa'O _mnqZDUZGC=0hŜ޿kՃ+&A9xS9ZjM۪BwU>/Fkή<V|bn\$=jyZ;K\}Z:˰Յ,/р!;˔J-QDT lbۨY[[9 bb_M0&(`B*$ z>ըZ& LD/̹!>c"A*{ ;OEe`(QDkjk ޙEcRUO3Vy9"+Z2rvg59ey돟ɑ]5usbnx:͟c%y븼FTo(]Nyґa|\կeө՘\Jx a0C1T'inaS  "C?_Z$OP1`8:Y̝`M(U*ZHdk` ۤHjl^ݐrӏvUY~P9 2ݼIȥ!C&]*&~AAFJSK ]b\$]}P(EʈsSҫ  r6U;uP$]3jD|=Uw 2I{x w[*NzH_QfׇBpXrb|ó;w`gՅnk?|&2:džq}@Ss0G6yښ:/ԅ# nh@ĘK(* U]r bK3R;Sc4/U2~Yb [,{YO~w駲ٞWKB"I;)[Eb7۶~/s4x~؈D2U؋% !ߵ c7C o]K]tB`Z^EX(\brX͕̿~ɴ< lpu<"'x_զVTZ3B~AkQi=,Puc"([5|9S;(D(Fq r[Q턆Nl"wV~ff~5^nHwɥ  zetB=*t%tN(7{c|?nKu>*B(H5L=Frpk;i>"?`n.Y< APdШdbyzkM6 zل'l5"hHasRG_*өeZaVµ&4ԫ3eB]Y m h" W O#1D^؞]DjF->`c׆f coZj :nRʵ߳Any;}Ց_6)koZHv甹ǛU#cjoa|ۂ nK4]&mU&Mź1W\NB-EL"Õ f-D/dxiI.PQ$lVnݘ+Q#w|M#`&T`c 5$4%9O/&%3*ڥx?ab6Пm&nt{E)ϧ`wG\06M =þ}UPredc=`jJ4t&S,] }ox  z'X$A ? |v^2=K$Gc2y3&gQh]lrrAi]J9tsr᱇S8QZqw--“0aWb|іչr^`Ҩ<~CUSn8);c1w-FVF;]ì2_x~}fm䌅 <.TP/mJ7: _\_Q`ް>ϵtn" LiՑxC3hUy(;,+0$aMwݪGJ~c]sXIJ¯/xw( >^A7[97'w#0b9ƇhZc[(_/k1mBdx5#]+#Qm0tW"LЉ3h$ !Ӥ%͈nH{oUd%:.gyL]rp^]w_͕cJJazD&3d(rxsF$ȱ9uC¢ڱ.AEqҌ{F5,'?n-ze,KYǯ6 ~ᰖVS,8^'+[q1Oxt4w1ő-ѡ5^Hf(Ѿc~r#\G&oTʍͶNJ;z/N5 f&qF>XN> ź՝mL+p vȳS^kLI4aAé*2)9BK.&V0%Y~wy鹭Q%i9⥢G*i _퍗eWdݫdWjqWYc>ȹ?ԴgبU1Onu^wӟ3YYNK=o/mSnG`u\ &ASs$JxY@mۏGϬzxNwU=,WLR_6p%؊?k: ClSZktR6P9h,yZnted1:W;:0*}/Nʯ7O8L}P: t'Kg+3˖1=Ck GiLҸs>RͩTa~%;^5d E6OxTI+L z ҋ_wU/UJ5@tW(KWmJ#%2OA=H\uF| ࡢѤc'P3Tj$ ))[+jﰮZޕb}1p76O(jT\v):&BXhOÂϲt C7LQSfұy..Db]F`*B ~sZ?re#J}i3Ŭ6_eF!^lfU҃K O0M(xtu> #:ǁ̯^"Aľ$sU#px3q|йatT?mIw19%3Ũo3aOcBW%LG!g7̓Q+~ n -uw`j?v{̌wba}Bn%,@Nqך#3"pk_btKkW}_ٍ . pޖ ,9>}hN0En{wroTTw _W\[Vܰ>md،my'0!4shqq}IՒiet^.bY?qS'2{9*_Xݔ h󭽚`E NN.H 8ձɩ5"Io5kӲÙz0vJZ{|k,~;9u`&JU~ϴߘxRdK9*mmVB{'j?\wHdܵ]\gf|"4/v۷]YAŬK9%hj[.*UF~_ZrK.|=a~F&~3Gfxu|Qrmk ݣ ܁hXM;=~~|Z5_sJ v/ʌ:k֫kjV`F( 5zsQ4?'ѴbJA/^Wk)=; k|~U+4n5ԕ 9sc4*0{jcUxRXK?]=a"k>3uBeel0`<*85Y0hq}@)0B<6otNeW8.g,c:jL˂+W9vyX,>$աD"BlJ$zhu?OJnG˲Vh(VE7B~,/fP1y+'rc ~Ňy2 H?|\Uc=RkH(Ė1gpu@dCJi!))LUbU&DL=;ikB-Cʹ=PItn'NU3uD9F[mWt^(Hlde6żl.z)m<4CSU`i M4&(zDLk-IZ>C+ ; 4txk3L.mkJ)P:|8# (2N|_(O!dVk|`ƏFܧ2eɢnrg΁3 -1þ~WZr)HŌq" .vm2o?8} X7BDXMafeA^-"scĎuZiu=^mI1֍*bD (@wx\DȔD<ۊAajPӥ#bʿFE.!TE s~tr*RJ"GAMn 5d)3]M7II&{5;앥iO In].#Lwbl $I7Rz"(vH %+m,:.]f>5$}GoGƑe{n' HS0Kfog&ifԞCi=Eݫ΅4(7ߏj:hGPyv6 8F]¤g܅ 6v^ ##TD{:ExiIbqtQ/;`,{/һG9_EfoW|Dp|U9[.Cs؃^@:6\l+fT"m5k-t1Z ,_Ok7gJO/E{@2 9P5/{~y=Ew;U|}?O4+Vٯ/Ykϕ̧G6#HRu:Ȇ1'hCWhBB3b81E#UZ\%c崰D9'#lk&3dNbǧ z$ `4ΤUkEL#q'b~+%rVc_eŒT#R@:ȵ<|`]pَyИej81Uik,:oH6Vy;1| )GURW>T(eIe~WC*_~b0†)5ZqU_Y%.*{ˀKM◅e5F)Q(UkO$yS xd3  D~܄xN!;!B{֪.UXaNQăKh PM?9=<6F6+|F͟MMXu2 {̐i~钀GG:cM>/0ɏڸ{*\e[`"ᱹɋԌq y.¸{U&6PabΪNҬ.8(s1^'h 9RN_!p cp1yWװO}Wpe>  X'~Z9Z&MЉ*67N`Bۗ9z" EҎ$`7lo@w@p#(S3[?%E#xk5T)?Vn`>ϼ-$iW;h\\)kY6Ҁ$:A\41# :*c'iޖo ^Zju+YW{BdѦS}R͂7#K]x3!ܡ!Srzb&D)gP|Kb}2_VUYwOuuӹ#l@C͑|1xp}h`cXt$4i*TZ'* ɡ pS ^CU*X*M5p* JyЧ_ydYCDdo1 }F= ˣ@:Y[;5xE,G3(53kA*>Œ f6L24vXe3ua}ۋeof!0L!7€zM*>zn @1ֵ,v&JBSuM`PƎ ,1 ~.QXӌ|睷tl)]CS6iTmh-‚:1h?L9D%Yˏ ÷ sSY5ID**}՝m~Xv>;?Blz1QptPC:1ƆN<-CUC7REoSH(tt>2O4Ζ|Z"]Qco![11(I(0-A?L\)%L^ܫlK}qU{x- 2;(>pԫ̞U E{."O("t-:6Q~[ndwhp  V숉 xZB*5#ԖHH KNF,ɚ P)=B]5]A[⎿ p&n/ Za=l?Κ|d6}N7ma$f;16!'HC%K39)YWwJ8<] 1Z=/xA'D⊋_nmXV [m+*yCz}zblG}uBQYޑ&G|XqeGvݩsn/Rkd'd9 5ce vJ\AH$);ګʳEL<.qsJKEPxö8WU>jkU{+_C_!6XSHAz A" aCoB'8WZ/դ=E(42Ll0reUH :QIL4pt!r7sH7ޑA RH B}+ ]] !4&ed+Da[xj7 Ѭ 6aA(h nIMr9dZOCBe>!C$4#)WB>tg`̶G>}Iʛ0T& n(HaW߹>~1j]2]WCg.wq3}XӨDKzmx[^Zʝw(cmJ2*hXr`d5N 5ic `y cߌk5]nf?zt*vxV%0#IV9ǽ9Η`Y=bBB0D#*{s 3#V*gV"3:a|tn3 XsWE7`}o,]Vtq_jF9 'ts Qz9"TЃ.Tَ˧{ Zn: 3-ZcWպ0- 穤qAiL9(':dw8Et$cwawq}yFV`*d8;?yHa/}NfIИniO[Lr1шù)[]ǯ{@\3^ [{W/Vl ś5$i⵼*)-%SՁB3( T)AO΋ȱ\jpR$IFMbCxF[ߍ鵮cr K☩ۻ#?Jv5R>KpWOv+BW3wEAUBhL7@/Ì`?2ݱ,:4e0 u1\#K֝nNMS{=Oa^l=s^|>*+ĸlbJ˕j通U=-;_R jiM;Na5hbZo4O٤{# >v$L+G^:S. i$&Q!6{dӾ&2Sv΂IL+{U^rؗ޵, LHDK^N1f CXA,SQe~ ѩZp;P=ZgA68TtwG+ N:]wh )-b-v{I7KІɭR\E2B$D&<]>+?'5+3ηSwS:'lŽL2n F pa65cͰi.3ܪ;l[=IQY-18(w.V \#Hݐ 7]y:bhbt{(D=uŸ P8.JK|3a,< 6LQfz`XGo4-:.[~f|2ȟ:Z'K{#i=Na""K Yľx5fB"hct.yqQހ Bx.gҚ0霁GK _vCEChVq/2fbœC* !vyg{zILƒmX"sUͥnn9h0FU5d[ S7Ej-t}" )P0fЬNs2xEaJ7ܸ(8ӷWg}SZKOܨ%KoW`ZX܍D˲D *$8wՖ]!kH^z׏QzYBSΣ^\K@ 4Zu=?\:(7t[Vxp0ORj.khSnQ-n`76,`ի;|~))R֚bv݆-'-^FWZ3Yem^P8KEt*~m:~#_*x^1jբgy%GVkF>lv`łJvo-Xf(xI<4N`>K a9HPˑ6YPc |!4ROtHF3oW^ܢg2Pf^\'wنr5j/LG}YJ{GNtDyDž4xM!bؙ#zx{yvc`>ToT2)-d 6'F۸N> JD28֋' 뱴@R#,ѷSEM? 8^lQ®_nD4ez10PUˊP!;k'?u^ &}.acS<@yU r6KK[d\҅Z wl~f \G9HcNq{望3M88mt &*D[6AҴ1a*r|**qli8)DL驩VBR\a$di#fO̳ 82TΆ0ؓwP-$hX Xo Iz03Uyxt2#"`'"| iKp7¥ZS&"j*OC9cj1reGύU,(ؾfz|h}ggcQ ZnÚu^3H7{4RفO.Pe:>F\$Nmqp+?3TyHzRF#d0 V>c} ٚŁ@4$4wzXX縰ºբjf:Clq&,,DWXXE Hp 3kc{2'o}ل 3 fxadQ m&BIӯ|)uPZѧ}(sWF6хΡZPgMn0F[d+IӣN/HmTخ9O{>:iw#齽hi${R=T%E/oM5ru3BG4BQa2a>}[>ߠt. Z"`œc)|(# w>%&_쭑aP_<%cEd~A\i\PIi#xlr~LԴ1[dOX5vZ隖ۑFif'2=.ϟ :b?wXSHvݾع "1Q{;e!]<k^O$Z?V¿Af"9fϡsNHqQ|)3Ӥ ϧc Gb ǢYq _+A}%0\v&g7=riBBZAZ0V/#e.Ywwfk&S}up |lq.-]ꄋyXÍexa a|gfs@zBů=?+&)4ϠGtP`G?WbRTC)$a%k/7,z( bTX99wr=06ϔRĩ1H ~؃a شO֗}lLF.O@>h \9FBzYռݥ1BQ~R*](ro/B̤3-6sï`SͿ%]?*񣕜ehhr0ʝp [nma;mNtΧnރlD# ̜' v8X~hOUI?$MA?4,'c'"l_n0ha3)ll;XeΚuHWM+[K\i,l赡D][k"q{*7xzP/Iӣ}.pv*kV=6ׯyN%*Y8+tNhcDV5l6ě'fa#2&+e+D {!໊1d+ESJ}a"$;_Ɩ|n]OjR,Z#kIBylSgj%i 8{qHjKPFZ*2R.9n*0i8~BGE#y"'*tRIs ıpJ?%DՔv:EʛdbKum;N'= <I'-Y_:ybƾu0SYB^ຨm&LEVӢ, )2AR8"C-(e5~b{-OU\Um7 `PtejYiL~8A+AI'lzoFa-h"eBp'E?Ԋvj%+5̚lBW=B 0ڜf?# `PDD-׋qmo@D;bD/'^ξiO)řdmL=`}I25{(ג\њy7y5m/2ܛz5 ^#WψG(nURF9`Dp.#zYQʟ3e*. tV/hN|)Y"]oË o =*{rLjĶL=Mu0]?]U!8 ?Cm ?(҃"l0cLbG4P(><&MΉe2vff_귗'dOFϴnH!-]=<'\@]LR]~ֱĺ >|}:%Yv=q5h /)m gF,!~[cMgxrrBS-+btl2E@J6$N,"pGz3eYgYg+l+m?ǼawUEKm)kL!~PЄhٺM [ .N[^ 䎲"e4€[rp[]VǴ9tO^;rvhۂNzՌ^1ӹw,R^+e[&gaPc %?w\°w]06kM8R.X8l}]5\ jęxElowaKSk|-FK^ܯA0%zgOIEaZݯu [4/8/IMٙVבeD-NtbɵO e K 2&{ hlNzOdt<,XxFlFqS*& #uA<,Ѩh(X[()b[z|Lnuز( o3y2Uy\ԫ|M>T~:% 3tgߗX NTof?x;ww% :&J6HQm?p{H$0b WKVNlL:qhcS5uP񠼽K!C˞>!x/c硩 cҬ ݔ,+Ie cބ1RЕerAABrnZ;m.%-J7'JBP 8˔75Q6$-pID.:Ss {<4.|ګ뱐ÉD n63+Gduac]V !.Dܯ@3etfv@$+UqXX.o \݆Bԉ4`ӖOz'WT\$;ʷ=.EdEhJC_z# =^xy<ϡe{^;ĝ@`3vƌ ۼ䏥ۊMCC\(:84DQ-f(;[} 諼"*% mD pcWc 4$/n[[F:߻{mo VGh,1 -=7&Mc1[ra,aƟ @B{yl6DWn)5Kpm.48 QZo9MRuۣX2 Nɰ$wTzb['{_/a.re$kxBCsE^YČ>!A̼Xv-Y2m] w0^J‹lNԱk-0xr6[&< *K#(,UsGh/"`35! v^~X=7$kJd)<_Fz=48$ _m>FֿY1_HL)GMp۬&JI2RrH_YZV̯7B+gwg^%! $'R$-8UBA |ʹρ6tU* >/B3OCt^*CFNMeFGzNɍV'!Rq=P \\8ѱ0 Gms9Z`*2x`B\^OuL43bt$ 0 U&P ެ!wi,R~&q$|1&͂" *Hpo2OIA)hED4,"f`g隨L~ǝNR| MG€oD0CX cA3Amc3+ڕ5L' 4 c"CJP 29K; ä HG}A5>ƕ+sId9}DtbFFג2F>\&*̏d r9,KY&,_G97D+ǖݜmKa SVXw5W`ki)JQ[oTur3r* V9k~F:qE,65kM%9 z(4;%'.恤/t /f+ Ui5CBhq׹pɢA?z GSK<4y FDJـzK5D,AXXyzaPh.qglF[eD|;-fuJu7 RL 1Y>@"K& >Tst9˨)ܻ v'ULl2^Fa\A>Qo/@:%WdKvBP{ϴ?X҆u7mnŹVpO{ O\m-f'ϐ߈8 b7z/ѴIF'|i{GȎ`~i㸿;ձ`ڶ`.K*-aNYxMzLg_ȕf[!$CXJAN}pbbef9~"F/玜ƇХ}d ~s}:!)^j>8>us{k koUDTY^(1}1OCɮШӟ%[g ߋtEh <7J~|>D7-@L'v҇)3=pCԝ\sETPv/#ԼVgXe B ]Aw\_7CŗMS<[Tܶ¡V%9nVw^T$2[ r!Ce Mk@&QF֫!]CM^]Wu֝!ѩKﳖj̗e_\on5 $\;-|,%:{X;nQu*WR'k.HѭdFiT~o#LT*s=9).E+ژS qҠ3a#PlBru^͠/(J2:d\&ME g أu$isC<K: \lRt@.G0&_cpgh-oq J'*v;a!,^5M { LxCWLfu_zāWhttaʴ i`)ֈIpAd*6>=t$nu=0hAd$b0Jn͋H7Pyce^9P:UbKitiFC*ۙ|J(ld}02\'nixwAq`y.wXc758G#k>uJtR|q |m;LAg꜏7FMv[^.y!߹?ucm͝: f5䆚-zkVgd Ƀ|NW""x{pׇNskNjoyR!UI9AF@lLi\,SF+q. û.~/),79jT/G*'hV^1}e_D*UA`:T@|DQCi6Xh$N` /Ty+`ۍ$y,MAL&u@rJ|iꢖǢ~O7_Ky%miίΛ1ߧȳ $T Pdq|8-.7{swzs2d{L>чKd|)L^|Ӏ(G${*kk4Pl7\%JڭZz=YRڂsspMUё6޴(`YSd6gI#Gqs+'KFC5Q1_/7l3:;]d?f:V6>;Rr v Sɂϭ9)]wI~G*7 iʣ=\rY k |d+皴MXoOZ~Bi6~ y7a[֕,n&Njl#l_cpش|-B#[N&·º_WR?|w4I'#x`1h6SJ1~uLj.WhޯJ~޺5*X)\7cO hZ HmcwNߪx=lpGv8 UA̖@|!?;'x2Cmyխa^ӂlUmC2JGSxD25ɘ|tIcXm0x$ӜKU| .TTVJyQ.L`'rj)jhR;OĂ5U/i\ݠ3FWaMT"m9ӫn:C>n޴ӱKS 5~ç$~/d@ƶTȱbp =ϼIZ;́jOwE*Gqv2ؽKTM|fzH{L9WtT x}TOSSWfor̎q7s[mf_2df;P9 Q'>Jc?v/Vd{({d^û\:ྖct.ZNfR@jlf:8|r!3owx:,UVET(ɩ5;MN5t?,4d,э^9rd!&S^э͠ k5ZوZ _VF HFt۠?5Õ*7pmiuɒƅg=(@̒R?jSћ|U>kpYnUS@*R̈8ur0W=H<f_B{U(?z$6y/x {SĔQ :97m.RŸ7\" S3E~[뀿Cg.:ѾIFϾBX_?v٭ӯܝA|K0DtfɁ\b}z~MT3-E3bJH ~x-9ŒDjoCk$Ul#juW3M vقf kU2CS|MI%g#JۊjȤ?ihӦܘrP?M:.~\( b9?mԲYN b{,zPDQN9EE jh : !I' 6q%:aЃ8#Æ0kڏ{K/D$|ndluܡ~o{*ҲU*, ݕe͕~O۷s^|֔^ 8ɠq>ljm !$LBN{t(*_FA5?{Xڨ #` GCT$-ke܏8ICEsԋUKl:R _zGgt5~R?B`Ux2-c ֭U!j~ N= &.CQAJSY|'=kDR`,,}4:Fw/!|ɷߏ78w߼ r~Z2p(+eئv于3&>[~g,ASE^4F$ILĠ\V-G nNwS -EeǪ,wF p#b]Oy;}=,㘀rBYiK٠c(#q%wbC័VGY9H[$X^gsX`}׼Mnsy3/c@T8w츙ܮl#:ўVf+|{"eiz*=3nZCsE=;0qѿFH|J3]4ua m=>XgZO(3s7EnOK6Tlp|yڸy񥢟 U۱䵵-F +}i5ۣs0(Qȃ׿: \3^xVL.uxZWxQ#Mkْ K"yf;#<6I';SV*=v+d o%CTiyǦ##=$0wC91 ^2HzpOwm/{6| Tq >Tb-!?1{CIep0hn]ae Q&g1ġnam{s°u!CkH$vκZ.NiVGDb+'*Z}ؓ_%Ւ u3Oh"1N*sfyN8PTḱ1d]ſR%;i]3 wԁ:(UCSM]m*&n|Et+QѯFB~pJ A6Cmk X >2 8:(i-@"R5^=%Go u>5M^ T>t\W Vo(3xGt OFա-NkωhǪyq Ril$IIMRPy8ꉳ 8P* -wCXp3 |UTUD4 C!32`Bܕ3c ZʵQ6r2RٸR SZKRZ,o'?[{]u,FbE/04 }h9O P8]4JR6ӁsnTnoe)?Z^!dLZ_a I|cA'ò kGekNmA6ͱ+u34o!4FH.7T aGE| Af[sc~\H>2V7nnH/UFrۚeg=ݾ'4/죴7^GIia.[2qq'ZuUzzgR/m=,sb^dž)}}y7]+S;-FbtNr0_vMD,ͺ3}Pnsoҽ| K]g5T~<2^WMQM5av^(fܒϒb{wd.VDqF\#"K^:9K s BctN8_zw^T- !}sط!gzfn_S7\gh߆97~;4k[DUJ,6XtwO3L'|)QxFO=_3gְ!q(Vlhϱz0 t[>lz&Wu?S/6NO:YU.X*K¤onjkKi`X+[ .<`>sgiY#0C3\~UE_` J!#V[{/Fb,ǑQk̥OiM!U1{u&z4(^tבAA9| /e>H#^Dvx-+a'ۥQ~UzGGGSƯ/΋5Mކ)*黗(BOe̋w_-3}!~Q/W4t}Æ1j<;Zټu˫Pn,aIBϔ Sߙl!rKgOneS6‚7/i[>>_FmLlը"Z럊f)$.DiP~u8P2g]weYY={}d裃 G!ie}:{*=ة؆2$84ĊЛ[9 1,_f?2NVUm+Z(bZjCPwmآ WB-j>g2 5rO}51xl#SZsx`JEaƢ|."U% rn]Qs?94x_,fCVXS>`Ng}wd!&8vQq! T㌉jA&O*N<$āh=AʛzrcnҐkW&6RΩyܤ34fԿxk hB)TX}#$hc0+Y bp0P0Fӂ{J7O$`#%o\fpr峄|0NqW"W]A'^YXc>lN^]m(PҒSKI :V7܂p<,9ISAvu]ZN[[v?0: ~"jqo %RIr^$Mn0/|#=N0/eK/l scភ't'p rXQ_4%wd뒀 7Gs=uk)xJF(ѐ =,xznwYl˧Zgw gwVtJe<])['C(L }ِƎy hy2 cßhxyǽ>wCpYf1N˴Nl'4^F'=jL~(i+;5?Fa Mi9.Vz[TY j5+SlR"zZ5TnjU~Ԫ:Ly8tx/DMߜ]V9dzI &)w:ޔƇwvIH㙧~GiQ ִB~+y@)-Y~Ï0j͢W"P¢1<3obНo5S]6_T G3$f.SrF0?nqPÃ?fT iLZ(Ϥh~VU]]'|gS%ȜtW]G,P&WgLc@JGlJfz 7daVثnH#rR nS*x0o9bl]G%{Hz_:6jCJ!k ~@Pfh"pqЯL3(7hbKF|EY֗\IM$㭁6}Jy+DaJH!zNIQe} 6  ۃiT-]YXQ^GS $V@צ?qh NH1͔$_ ܠr *E>qz pR8rSD8q83U~;XmŠct9]%pb$i!T%uh'@.&#0 ޻:J}ձf#'cKV0UĮn8Lw4 Ѣllðl]F_O-#-ܧ1uaG(WOQ$Jɰ[lefdLd.)WB:bՎߟ .Xaj 2DyMQvu0};VRJrVRA} ^*_B#CkldPxb3t9QQ6_>EX9% YNpr|P1֗wֆ .d*bhefPw T,bO6wEr[lxV>\0s K1Usw23wp_'/\ِ-ӽAA/ Z[?SSBzG~'Luzf=Yr\%-5Zp:r%x?\sB_@~ಓt /fƼe5! V]QdqIW%P2Ih08nUe9`_{8>^mA 6aUY6•IAmVMCl7@%`2) ZKWn`H(${R:QG-窬Wgc/pW,X%-7aIED<AY )b>0 ~oJQ|?҂i7kQ)j>9>&*V1;`;>b.8*4QDD* 0bR6GH!Dl1>52z (9$xEtCBQ __ͅ',.ߛ9Tp7sޝžojNZgyrksY_5ю_*a]̎!|vGiPw/ySŹWJF0-o$bVBj nS[֗Wi2Jc'^o70SKi ߅{4`Ґݙ (⏊l8С+ 䪳AA6J^ZJ'΄[ïu>mNb!8RЕ # 9H%"4BׄoJ#,i_mohoSvPmZؑ=2Ue5籓0ރTZ~&oKF 8`RP!ː753̨SOG" >t  >mJ9NUvlL_2 gcԴr,nj)cuD$c T7K.Z2R)##M㿟C #oCTÅkغQ3T4sBMKT)QƇ["O/%p>&ɯ4P +S66x6au/]j4JPDGڞoi IGbYB Ch]*kTLtò奅az)`$Wgͪp?\ #8=0[W_}CU";GDCN׫uLӕ=vaiKH =~XL^q]xzf'#S&dЇ=Z^E/+Aޔ ҭ65?DYS#,G𙖙јs(IOPw4;oaE2IwDq"A?kYKhADbngkh7` jƷ0׼lv68mPcAhu9߫~:^B_OݓSy1ljͪs%Z BkghEha ;gF~kvm*.y& cGz4XfEӮ<5ݨOԚߞlL^,6@S~:j1jvHjw%n>-e>p)N<&n2VY/ jA CqI\n>m$$F|fڦoܫȧnmraS~gR+qK21XN *>rգQ 3-wlzfZls!kti{_='C]Smrq24Z"-jڢM\G~68i>a|h=n%q* 6tY#7/E\}Tf3-H}+*y:?lH˺xI=t} u}/<"2O1:,6`,ڋe@,1 (}+i)čFQehs֎[ Gd nº xj.わŸ&Kh^2lOOIu Pq_#fo-Eai `lhCcc$ .-9Thxv2=uq)SB{9y;O*HbɐjVjg]MC+遟AD>2{h"lս F⠾YU_vךǘO{i,BxEKiL)}|lpg Ҿ*~5\KSOMrGHK[8s;ԠгOrp?6JY_4E\nK%:B&xM| n725-_ }WP.b)cW 7¶q40>0D8T/Ҩ1{ͻVs'RS!3 N3~/@Xup̿>ݯ]\+u pR2eZu+)WHʨZ%Jkћ;^L20E-2Ʉ;0⫅bk2&H+  P.GRi%JOywhE\ m3,k'rA‘%ҼL|n*7O2<=*c"̄}j'_@6Etif8{ŠPg%⃈j0.d8%2=Ϲ3'O3 i_~'UrnGGzjŶCy}Jv'떍CK;<ק]L j?as$;$c(`, f.~Ў kq1cuqt\u T:0XBO=c d $^3+;#_Cix9E8Ɖ ]@D7#;VUZ5& GX6!bd| A;o\.4W 5iwI銕o*0kydžRѓgK]{_l}f#`JeE UY'菙)3i,ءy?xPie}!Ր 7NWQF<[8c(˺Mh'h,Ji> ٔ1wCF􄼅ǃ)6CE;DUvfwi'Rd!ۓ5q9O\%hHvS"bh]95I'qG!A8 p_ýg&m;:nͼF | дb# q|Yqa7B7 HS拦$ 6nҫ a?.$Rt9\7q 3hzSS NڴSm, R%SIxGTiǿybYT.zm~ۓܾςGniLXCUcr#w Z:G# ^]z#ht-Vu-V5 hꩺ%b0Hn۾>o(II$fuC|DP ܓhC4\-s] 9.7x")]M׮2ͼ ?p<+K; ^~諵7?KHńQ\@(T#]*.g>'RwT.uOb:ɽχuYrm*T]:d#|7G X}62HGG#'ӕo.e^Ʀco3{FG TyreCrK&L2k!}(u5ZDpn0 Gl*!<!Ֆqy`Rl>oPZ.$jU>^/5 pJO1 C饜8JB"5$n)IH"E=d\ _5;?>upW)L4#a[(AAK (pG7 #GRLeVH9vTF ?L\Px<<$$`<-FXTjJ+< \Ԑ'Kk6KbdڥeAҰ)ҧ ŇHXdYNr O Kq2, sʭ<#bH$r8ZDP  sJ @vܺSaUh?;|¥L3@l<. Ҋ9|J Eܘnr&l%KIw@ֽU%);z;ڰeA2no:/~Z _Fpk4-"U|,DY>K0X>d'}}|R zA9M^2N. 5>l]V$GSu:*Kd)nBUg0 [P8A>?^e3+nlsq ԗ ,KcL(!X+{¾  җcjo!]RX*2OޡX3PzձY'(1'U"CXCһ ,vYNK3`i!NK(F,ȑ%eFILA?lg=ڈoCFŋ1-]PU]P 5 cm@zڃMPъܺ5 ec"5ess#yfjԫ ELyV2`ǒh`1؛bo+b`0drRRE#CrGA& %-υLJ$RgskBb'Kè`d `%VEVȄDoNes78,%]?t=c*rȪS;PIO ,^d\$AAW܌&~;ޢ\}.{9ITuXO|j.>=lțAӈ'Tɓ-*]jCDo2 ʵI`c<ס $u֫bo׫G5aw8i8u8cvR?1IFg@\s{YAQIB?ZkS u6ncCPqeՋ37ْr1愪Kt9t6q&MYH.'J-=@KIݛ=708О'7αOJ ns! Ц 'Ylh(tb-jW*#u`KUo5~8pSJn֋gC=\L'H/bҚ@x.Q_w}dV0TVxt]2`pf7 }y:x9k44&/1g-MÒQA4 6)>Lk= b]@#a^%ʺ@FfO[LdpS*OqEa Pň6-cʠm W|Ye$n>LlZ7s١XN I OzQo [%$*1/ۜ>%)h#5X6F욫3ԡsq3JPNRgFPTtԑO}:ǔ @_ۊϽA@Qzԟo}3ڙwO[o<{@$N] S&toH1+uyHkUwrut6ިStډ5^ٍjhld11k^"z&t{g窠-kN?b9z=%x_]E}44 c'gO(qHvaS)3j5BU%EKOXُJ'qxfL[;+pGWǙކRBdg&=u9 LuFm WykckRL>]*Fp%6=x2/f-ϗT/]+WCPI l]qX8qaǰGCE`)'o K ?]WtN}^@J7!y^M/wHQ{'` .V7ձ~OD{w8F=P\I6>U>?r  X3M|H5b`(it\i\cL|gW!+) i>zptĩA1G=ÉK*ǣyY&tȑW}= tEy$v E̝t ZO,,IbINT>'\kPgoO7#kjMTHAryP˔ 0 8ލZArtdz-xU#$lꁺhYaxЇXBEg;zOo^91xf~Vә=URD˙Wk zgGr*1rf1&8, w~^5N3yI.>uH-YWs_N~xDuyMlS) ^{lxW[x@$!j8T;-nU.85zӔ dҘC]4t.}u.?CGYN*]g 0pCeh>x૲Bd2-^pj j/Y2Q\ә鳭s9! .gmHVA0=@$dX0LZז"l=3+B;BL;f>| JI9uJB^4EM4&NL݇AO3ߝ>nK6nx '~pQclr5Aͤ l׉ͫr5_FN:5ѩdkضIM ^7C\_,Hw,*ֳQ3)Ŧ[ҖRR#`6!7UF'`|PǼ/mr7o9<=(G(܏5s6s0}!ؑ&e:wX!81z(74O'@{]U:>d0f~j&\6C7 ںzco+?-]ty_̬ZEjeM3G z4x Sds4RJ|X",+XϘS  >4%UPSA~Ĉe*itX8h #BҶz(dRqAZDse!?O!F%5lckܡG_ O}_ JtťO;z& o17\*Eν ysGTNI'sTBOOK>V7C_mK$lVU VteN wέqD; ad8z! I-}*c%1 L̊&҂y,|Epeh=/EޅӕQKii~BndEnUd8waD {~AP62f&.i5MW(ѓDbsF-XWCZFꊠ$0kLs˞=*nx(\3Q<y^&& }.KKCL'"򜝡s6u@mal\tCڠم(DG]9t$]('X{x =xc (݌7 ncb2,Vq QFڙ85C:x7WYz!nW=IWn&θe6=%}:JM巴>4UBE|&LZ!.d fv'DGyX>&K1-!H:/!KF4XKq%ovuP\ s|啉5Т".bywț>ԙ r.?q QL'jCݯS2z(@fB#unCF!V5d&9DZj?.*3@a\k11qB ˲KA`6?g9 h!Bw)bn.k W클A^>U|6dhy,T/;l:(SØCa9uuF|"]Ҕi(YOS3R8Qf6!qa!dJ<#~݈ǂ?5!7*Ԗ0{_0 H]Ty "5V26( V *A#?vP^!}D'"C7ƘmƥN(eUD} >oW[!Sh=! Lω)Pi;2gYzJ˕{:3Qq택.y-$l %7!񝘂 Mc)VP6Uw!)SZNL%&%i#~6K3 M6јmtJJ#)#VBډ-tC 7!XFNײU.c1Oy2U-o8Lar[.ծ_AӢDoE0A@9,>:7=׽b8h%iY/QsiC%}<-9i*ib"1~Y4[~pб"3.*ǜGO͞obK8schqmpi+qI[gmy8r4)=AA%ACS[FbSŒ0ż퉛TQ+A=EV~uA/ȻB_ssI^ca(mc Ɖ{G񓦟uJLV14|,cIxYNj2tR9N!ImAMؓkЋ𶼼%F.sc~EjII+H8N OnXOD}CXze'Jfs$M؍dD-SvnS»H*͛Y@d<á/$Mm)*Āf[ N)Y;C23ly91n0 UyְQo6I+]"1+A8T?s .`(kh yz,AUȦ$9*Nҍ~ HP\uH+*er89S;) & (t%&OO&qh76Xq/lhs ɮ,1߭"mAn;%2@1Iv'W[#2rck5F9@" X]MNHxu 3>*-s%;CɼQYE;tqåt:w;M{*HEQ=<,6 Ibs *28)\+3e = {9hj]{T`.G~Ҫ)2QI\&tWQCeq_$i(Y@J "I嫰$ZZj$&cW׋GwhQ'y+x'nou6.ݹTу,s!o_\= ;o?iF6\q/5[e&k^-$)uFBw2C]&/ X+ ," љRɶ5HA.ވ;~$Zpz4˃Zwv }_UK"F90/TLlU{l?;= qpĜ,x48j҇Ilo6~4M#fQM}mKX G'bRsdQ􎓚ˢiNsQn@ϐ %=Ep5iXTe/F#xg惣yIKߙN$&d:Je!`Nz؀{[&UyOE<՘cZ7N& Z9AVcCȧ/ 9|@] 쏵=_y,nx?B9$Ls >#*RWȚ,xৎ Q"Y (AH'K--8UΦ7Hl=qf{#R^n鯑k&e+h{IQ î 'O'w5(Yk p|n_t?*rBQ}Kx9Et$*͔ vΑ<ۜDk]$껎8؍y#/Vga; ؛Eßd}H94c$)=[/*"|ߟJ9[sėq) {"]B2CNvj1fjbcڟSٰ8%-\Gyt}-a'6`I{xy$_ Sx\^+[=oV(~N;ő~w:3W>mZo= f`vz5N(}dطq՘m"r Q9fCVWp 10k>? Jg>76Acv͞>ݱ$ڊO3<HVZ:FXta gאBɷϜ* EL+Va5I72lTPB@<j0ZVӱ#8jz%Gcq'lFIHKX5fs‹R@ZYϗE:2)o՜kM|-Ar )*8e@-U+CZ.E侬#98WOx+(qo- )ǿZW3US`LVoCK c}mDŴ>)d۵f0jMzC!6p҆g)J]͖M };w;=[MQy7ֺN! ~#{]3uĦL",2z'-~B7v9D5.D!/o{u"?lYNڴ}xPU~$VNҏ~lZ)ؐS&jF>VrD *]7 9L!eo\3SwI_y,dv >wo L0;0yIJ xeWnWx=iX*p3V(M=9K GLt;ԽscE1bJFln_ޡ&m?uApAm6ǿ$iFKKg+"'\1{g6ȋIXtvP?VmyGn*7.`}h5zGbk)yZATV@q/0wn\ݨMޖnLuqpznGc_pɱYҤ\Fa]Ƙx_n0lTѲ~`y!?-|/1+a|ݞs|9T?G)ea!|[&=av^S 3Kou!bLpmsXW9V%D8MW^\ȎGVvEixޏ76q7c? ]2qוfo14HܻTFpn ]-Q[.S%,*B 7J^vr2Fm8W`|fJ47֪ucTmƼU7zA&JXF[Z\,s+օ}-*:rGU9hѯi"^ 9FźD4RGĕy DR<m eZm# Kl%mg𘓔޽R/ofxԛ\^ɭxD(CK} yظc@XG#})r)el\%rӅU;M [8t[LF;(c@R)BEI=52("4㈄-L$c 8-`9ږwft}'D:6ˁYy22œ:J#?断GWb:$y/e'p>gteǀ:TRyOM$hZM3x3BC )0>t)٥*||PSrz)Օ,䵀?$[ '2y9/i\sC-w0zu.XLScL\TvEAi4p8PcE֯Ao41$!L{èFKPdU: TдZy޷x~Ā J̕EV\ŀykt ut¬"Ǒ亀]!O ᙪK/ݡWp>p]2X-(@Y_EHa| %H\qEg(l4(~d%n08]_K $Giaő =)^&9*2e:[4P?IMQ|\ȲF-x(M6 a8١jIp)*D<e*h}h)ﯛ71:h[v> kѤi"<]a=rqJPiQa  ֬úN'֦GH;/=u V̚m_8<*!*$ow r%^,F5n5>_yrHjwk-ѺcӢ r,GQ~B&]c-a\Q3+Ќ5F7kJX_(Xj9,u'24agwwd9Q <Zy-Nai)N1Jrm&$L4PǙUa$? NCܹwrFqC%ѵ bWqI6%ޚ"FtDv`{31ԙ 3 iN\6gTpb:E1L`O8SŖX噎^r٘W@+SZ]1jg拜ZTbu]E=+m-z(t⻪ghxb0]5izv0a[<s_3CCG}Ie a /\J_z_MVLxJeOJVH+t''ҩcc#>nuqOΟ$NxuK$ܰ_F (֕HJ@TƒKPREMf<ҡ2>w+4wEX6qDް #K(`VtsyԀ9`V%3&E%'̘JSk!j #*c4$ Iʒj(]O-fZ]{Z+$D4lq$M%Ňc'#Ւ0N9jJN'ST li~0GMz)"fp oSR#2iwSJbhT2 =xC_/̂~4U3: 7t1(`ߋk+)\X$|5"Rj%m ̣q| 1hh0 SUuMLGl{rӹMG4hGz:8HwToNI`Uꚳ-i](hefV{p}YA R9N嬩9Fc,U9;vaBZFOSoRp#W=NTwj9t2Ywc3buTN,$o-_/^ࣼ~GIa+h8q? Nܛ'LѤ"DY܅P8t{MŁ:'q̙8/h(mL+:30ș N=*ԷoJ)}DrxYI2rB㘠쭂1aV,8O%G:[!41 G8tfsrPִx!Z[L6=-{WkYJR:hlwn+`ɾo/oY/\Ed N:[SxIyDVrT71XIlB9r!.l&tCPLDX]#M.Bc?}4UHRKjHT]7հGlP#@R7#{q%YRގYyJ]ɅǝTP=/,wkIhJ+l1`N.|9nϫb!)f4MJ;z.O|1 u.wΗOأc~pmC-5j?/[?.Ȇ> w`޶Z$T*}w'-4:B,esCCrrd> oWM5Mh?vS5g`bW a* ;myg :59u%{$oҏsMMxS\mA`Pzi3IP6KU}׷CY}UM>O (P vW|m\*KM=8wԋ$+9kT ;2޵eXk50HKp-%* ΓicӚӡ0K%j@E`1P)у.P5D?sk߇>QJiU,ˣ좖P-˴VJ=ILR-kŃx" 49 uf魢]tRv!trc0:{\}fB*n,V<ߖE)Z^c]{|U-kBA+Hz|aHM~֝vkܢpXXoOwi#C"C/n~=|M^:u5-OSǶ-铢t\e$ƩU_u&hB|cO22J 4 Pq!z-g;ܴ 63q'.j:[81ѥk'fIjww\!pzĸVc4ƎZ٥օ\A!D~u2>S6t uHz{h|dp61úKlJ&4*9Rz^)KZ~ \"oWr&\+xқ.'q(iËE$8B'> ;FjKĜ@lPEuT( p}*rD]-sLGA|Qק6,?uSңq^U=M^Jb`><7i(ogY}ubY8,`W _I{)3>+yskL" JD+% poш,n <\Z/qI}#a(chI-]/wS ΢7i7=TR-A';tb˖~/ҏjF)ֻiDKퟐ7nMt|\$-֪8eڭXoFrc]XqڗkߪhpH,8߆{#}Kw 79 ژ?Av-:tPkVr1ߠ8UFd[M^Bh-1|bLFՂ B'wz҉x G|WWnl-9A51 DV8.á`#W K24Yr-I߹7yE0(ha24N)]ϯ Jy>pEc?[MObE5O\-nɌ瞤kղn\zwrUx4ЀG;m\J͍㡖X]]A(43tvẪϘCr`KD9I.I @D4vF"IVHΡ%MA+ |Xҿ%#^Wb]7w1>aA/ijڬL+ C3Au3=YEb\~ʛGGk|q͸!W,)/sd9vs"h,^LhdL610Vbaɣ49tSVjsR67 cx$WsO~RME@_"r3ٍJ6eP#yz,>.?<润%/ggb٥(P db&U 3a>ū*PP6~_SE[k` Lҡ V[B!LDd#i7`C;bürkoR\uQ?~nl 4C=ϴl3V1a'Rʇ3~Mx+eJI|;d3^V8"ex`sgpN&T×gp‹ k]s_GtGebxW A?&s4>!o80lx ]mc|mf, >*+@[s]?S :yh`&YXZy;sdK,.Y0JZSuuà`ဢD1_p' KMi1!3&iv}Jw37lvRX;ʥFW&.J'ݽO,KoV1~f)-Je 1=titz]tFNqk$Z5CxIz b[ש9ͤO]^# *y0q5mm@37q9,^ kn1 hNDx拭k̥?˥N'ݽ@kfGPt`֗ +r+c' la%Oid;>qEԯ +C&_fC@#C:G> %S&KIl4-(D&9Uw:'t* >ZC,*Iw\m9à%VN푢x4P3qNeK%:6iy5&˲g X!Lq xc @EAdiNوM+lk+azrF)oPY!Z ,m|*a;Ѷ9B_ Qv̒l=n[HiGӏV9x>]vm8|Bѹ/*ȟ)>b(n-;Jg}P.'v9PE^ŋWy+USe3fARд:|~bzi4#L5\Rl?U[Rl%rn]3:miq[/T9;AD9^njF&hQ֯p2׷u:BB%16tո Pe;$ ,>YcFkL[ 1<FhƯFpbxp♾\)kƵ^`=∂ۮ_ W/&btǁԙ,E!{/zfG,5v(9܎ѤC"j#)=m6Sbͽ u&L_HJ~T͹!x[CjbL. ›$3窓D nW/gXaS;-jQumb#֖,AD{5_y{>JJ4ZͨC 6 6 4ud˰<ͰHKsmѤzy".a37OjM+WUìhhrJOb`ySMm5cPyڈ[khUQ5 r#-\"1 f8Y=52%hL_o{m4_/y_<`]I[1VEy<>tV=NzCkǟ60-x y*7p}\uU_z,2`uxv%o\CydD*ˬj:dКc9X MSd2,XAWէ@`*wx ʰ,FŴ[=0Q71 2rޭ.+t:^#iR3®py?ox'Nn D:IhΓ+Av.םʌ<[#Ahb{*M|ֵ' 'K.ͮ70.7Yj&A8 Jd*NRq]-gZ)V 'fc*7+8E"/GQ0Zd4CK/kVjn9d F8} ~|gV'#ѠK2]ܺ{6ȯ F` ~а'ǞFMwkY[̾˼Sm$eCiOA}i[Sb:7IYA%"pAO$jė5?@جnKNhY]*lC? N "Vx{ɜ@!ys. l%.F /^ lfɀ\F )sy + 8@tKSy->#}{&b*űc?zvx'u˯, , u>Ek<9 [Rr?>WOAOHRe4,Uߋ1-$xp/[}Hἢ쪿(2>l6cK*/Tþ%!? #Xz3 0aE,TVGT:TiSla8Ag11~9/W9Y;|M&"k ^üf.S:Y*TBtAPnSxzUV T~Uk N/Nj1XvW{1H;E"Ϫ0zMDZvى^0@e1v߅rgpj.B |dB`b &fk+& eOEEFǣT-U7]( ?76AóUvxP~i޵o>OlgwݩXwL;a& 2'^HdoyoP/r˕Rn ahJٝύ7,q5/䩡"MЦ]^e!R5AaҨq tz 0E~h"!`)s&Xoqy ȥyBMQG\^*b2"ZUc " m&PY }lPW֞t~ܦYKa;ncx 6 ׳$)ƦPYqjȥJ\%^+XȂ"q=yR@JumFfеözri\(H8"} g{z_!8qa0$oVU  ȐNg}S,Jl1bx-4sBP(4·QxYJzYwot?3PMHk7;ħb)3EªO%>s{qAֳ)\ HAv׽y~$>%tkCO[B)%^8L(rmag@K$>u6gF^VRc/bItB L!zN4#!ke͘{8I0Xŧm:b(O"L4IkN2mvp&bʹAeN63I!ׄ:xӫ cA6/6t #:c wBPá&4B8K^s-bV\p[Q:u5d ~W*Hm2R =Y#ouYYx&4?DнҰҫH`hc+wU"c|ԣ-$~#Q .t1X#wd1ccOʙQF*a05 FR!Kg.OhDѥyi e%Q/pʥ<د.T!?vD8-^ :]`S76ha4?-BCK[Kg-z lgiYgVSk%rNuͪ=> * UlaM3UoՓ?霣om%0>|* dwyzM ?RP6sc^ߗCL@A=W&L_Z~`Z tE4 MB !xm̡@8Cb(ag>Ja \z.R[UWފV;*kr4ʬ]8+yӠ1kBpO&w5mSuV߿%IOw;  ަ2jh3 ,(v馕@! xHٰP W;>kH.DXph_ZHK E`iqjHbH#=a*FNt C"h—R$ej9+*iEӉ1ֲh;]",Ӧz &JT|h}/1cdt%C52հM5\rCx% yılKE5cg ?ыUȺήnT|)u:66B;SIhMip-}㹘KV|y|ג&!e̙v5I6b+: \:\K1c96dWgrJ>@zsP`66_[w~(3,4*.|9Wvs!"!A{PlK˪6WƂ|!i#l`9:2tr~&ϛ23*B4 :m5w01̄ld#wc;Pc25:Wu"8!4u CX]G+(Zhm8"^ͅ QU|~  -UT9Wks~nT$~+sӵWx1eXĀ>40(J}3'!r.݆Z _UQ)S+0oF8U->Ÿ✧5Kh<ݮ;'?qsGߜN]Zh£]#}Eg^xC訢!GeB5 %d"d[uNl/Eϥ^.n`+K**{ٍ-ʓ  ׇV ϧs5KS6K]XR.SZ~v\f)iE E®>`;SNffߪ L{R;v%/Q[arE=@>n5t{&'бv:w4]f~[8%k8kLu\=TSR{~y1ρT ;s{zhr<˘sʕ =p͜˱ebuQDR<Úޛ0o4_p⏑/@GcqMo s%1==L;OPx_"s-mxPF _ spR!#F&MvRaI/<+~Wbr Zp<3fa5ocj6euw"^TĚŤ%Ӳޟ@k=ؖppK[zI|͈Vn}>;(W8Z<0S_xmphLyakZ#c䘍nnǣ+B+v.ͽY] ~ m7"(&#[YT0LfFrV#|a6~Z-c$+ٚG^=A#aI=Rߘ/+`^k6xs/?k>Ek9&1g3YBqA^`rP{7bBv?/ȼnrfZ7^pM"ό'O 5]^,wfq?>S4DFMD{Ey$ -q2wuoA.Gր̸pt'qqg1Jƾ)tW8ϚIma/ ;0`d-:w\dIqPRv윎FxHwzN9TxΫ0!.oJwUkr&֐D*mt(p!;r$ut~#;xGFEU>.R:u6imաZ gX~[`ySB 1Psl!G[aU2xapaOO&$_ Sӑ}hwmt;:>hk+vI[@#^ $g+=%3RU=ͻF5 w\NKm\c4oߏ#hP'oQ~l"oCSa.dely*Iaػ7FM}ՔX*ul ~YJч($Tb;Ыx 8qTqhPL ,E` QZ 韺R(c 5u^㴙. WF%F|==%IޚBP[ =WξHoT*GY_ŌJQ.WɆ1Z%'( =B.z@roS;b:c﫻Q ;6‚p4RoQˈСҹ5T3XLExzG&W.֯')9ĻTE?[gIy S65fcDC3*m֖fOx MgfIۓ{B9ޜVhyG2T"gPrU?'ߣKXVZ~S$UM.%Ki~!fJfhoMr4 BoߡkAB+X^P4tt`&v"*/p%IE*BxzWUS Db+Ge䃶}H0hkےpwg mxt_:[Jc>eo]3X@:7[˛n^ًz8f]Guk.\Xd1!ґ0Ƴ =\=ycT ݁X* J9}x7k6ً kܵ[9"Lůj5&-:^&_a6~'Nz+1T᪊Ikj` r2+h&VxKMv5BЈ@ e:H$J̪P:Wh*+ O}"3v|2WQ4Ͱ2-0Z-qRޭ=q T4O,ZHUE6W( W}C*7M-\baMߣK4#c2vGқ]Tv _gDt_ے {FON%#7 z;o8a80M9JK'Aryb lDx7BkI.F=Lt&,fXXFXF(x2V6C6CQ d[I^玡3D9ض *s9 A:jHnqݲZzǮt+ג 1wy)>UVva4y*w`y&ٱ,= 뷐1˜j[O6 f;:Pmq`AH[WIC ޞ-. t8ͩ=YFAM+Dژ@p&e{6U"@,yq) ϼ$sgF{Y,,`$ `˪+Cg4zXÛTC֗l`4ͯ@SIKoƢ(f&:wǃ WK'b(cBv\|668b}'"~%? 9<>I u!u7`< ]Y#Z۴+ O*d>FrenR*n絹3M. $V&e&w &9 "JKA Z6[zi@sM٠YV}ȃGP=MsChIĂ) Loym#@,dAKa[) zEXpThض)憀pA݉#OxԇlI'eHG_EJ"nG<$:*BS0 ҩp%!rV3 Y) $_궍j!2aL j=E?AJhfVQvϼ;qq]Cy{Km0Xd[]V&ùUN$2+YXx![lWթF}Ƅ4׎0Χ8Lr,Z]JB|󝜌O%LQ2Yu]=ސ9F psjj(sآ:^S:?j{Q@%sir}"<2ב7KBvU??ojŗƎSdD{т*t2=8 ڻB>p(龃h#ֱ&Acs h{E(xFa8j:e@xuES#1 DW4RD r35vZ]) ǢaT<{]Ggy%okBtVpN4|LI"ږοqﰍ_tlJ47IipzK(J>E?&~w|%BWծ&OEr;O5*_3{CjjT4RO-MP&om)<_u/LR yF,_huZ"<.%*3MI0m: OMr%s˄a#cj%跈_Jt\c 9aqfp0#٭b}RϼxiwCGD* [qZJekp@S_^&\PJXCǫ1bSe,8lV9EEijcPF&moX hkv߻D\NP`+l)Vφ$bF5 ؉E5D!$B+1pila޺qo]kq+lZvB#KqܨUfZݚ[V~ӨM2 %h\%arRVy/^]%?盉D$ӄ8'0b<-M6y}( mZV]Vߚdް>MV$kcqVUfX[ayP҆Kr39@ k|!/p~ܑvĭ\"8PXkMH-VѭWK/? 96s9>q\&xD_M=4Nb'CSÿ^ENevkXk_2$2*LD 7%V$)y0/(Keg(<\]45OxÔ=-xWx30kd_,OT6W4؟kk`:Rט@ЉPBb\jH#`*Fckhzb8LnDanYxD↛æos}m=Վld\{s4S&:ZFr]>j,:%3-$8LaN,Oኋ쾫o4zz9/$Ӿ~[:;+4KR^kՋgqDq|û.ǩ{^do3 /bW{~pvw@4~xHa=p㗇/ל}6HA?߰~!OP?5SIEӠxV([X\X|[f96?<( P‹yo 3KAGG_{m7}ޜw\"W9= k8l _Iإ c&$7gW:fcd-w4Dڥ#D2'3HGJ^D = ]iǃOc3wBYncm#~}m<'$r ޡl#slvZ?|pO֓_}#mF"JxlO:q# *8hb'RCe_WP4aM㥧CK;4<6 ,rr;ʛ8?ՂeTse`\`Q p 9 [h"e!4b%FRKg_~ѽ-քצ_6-\g—Z/)UbBPs%+\諪7|R(%6 aJ\-Ͷg\F.ѲӆlYC}.a\Nd,μz i; q)rΙBfmGL-B.GS@5 XD; ̑yLzvFrߓe蓖T$0]D %a{>:l10̏@N}؉")Эӝ {v1,Lgx(ZoiUp-ا]&pK!X{b¨, 3Ȥ#pBjPp+xAGg=%VAu_1rk,Y8sgUrS2viJ9h'"h7A,RLcs=gct1[aG降QɚW(b3ʞ  lX++P|wnw]O=oL!o ;Rix-`*dѾ:=F46rD ᴩY$R>&l󖰹K{prRB`& cOM-Oδ/MMzMie^o\m8kj}71>'&$P8ɸAK@z@_%kqD#cJFPҷ Fu!G}7%ιsL<* c<>,M̿K ݷ`@w,C y?YnC&:7&WEs-0"M5C]A7xkM斶ih%Q>:{5K^~-N0|~1O||Myvz# .1ckW[-޸W 91h$>FlE hM8TR'KSZ`05I}Hj"xbpd]I?4+jzF1ECMCLꔶŋu|r{Lu ]ih^{|X[ur 2Vyxr/{tgEJ"cNq`ظTŞ\lbZKcJA3L5ZjP:HX\NVgaxa7Dv;$|}N$7䌂r*PRt;E{M[oO:9U2+1-F%7<$ÊU(#zZ-C2M&(dWqo1N,d; %[ *gUs~pA*wDgܘ%ޮq֦RDeyΤLRCzOJ$#ΞP^%wIN2EzOˣGV6] |T *ъ0%(2 ƨ$]Y՞QVcӆ@Xԁ2envArܨ~TEl9{h,NeFl8b"$.]Vi$hdc\c? 07`*af޲E {CI{.Ē'l^j'"WyGy h~ٻwWn:SD b E  q aQ(OFSg_OBӯRwK,z0[Rex<`~^f)-|ƞN`/Ih6v @6R iWD{d^lML†1K'y;Q16}*m &ہq1-w<ҙ<|C.vUJsbV2{6~|vNk_oʉ먔TF]u+jviS4p]Nm]v,$\]8l!3SD{jIWm($60[9B˙?Hv- Y"BeVT~QWvl䰯ȉ&`m?"cمe ۔:Nhqoэj?+G>#`a\D% ]|%PlBop*LP"ͦ1۲ӜQ~3oISYlQM;]7qUH;S[:SmZ |O(giz{_n_q&I!٣JYJMŏ:e^XD/&dkJf1I sz 1FZH'?> zIl9g/+;իjY.9Y5-@c => t1{WhH3ϑ>A`D1Xvغ@=3DECO;[١D" 灌$ʔia@qh6ȼET~ bd\I^AJJaI8:ُe'V;_lw>Ksm%ijN~K\#ʒDчsWN9".j[NͰ./"$&;a&W6`4-ְ,R( @,O yԚJ3,6 ,>%")XkuzdXmvx}|@bQF#DѤPJۄM .2P*P482BVֆ|Vd۵K6oK لbA26#\%7'b+*& !H"Jd@V'H1f"󥒈OTؖn:2rW[}~ uȥ3GqD8͝T,JjSkށ]gxbO;'K`phxA3ZU6]12@aU^Uݴ]?Ӽdлq^zcDp(:7z&AB̂+@WP B9U~ohFP 'HfXDIVTM7Lv\(N,/ʪnڮi^D*? ☓F6hXDIVTM7L+:@O(NTBeM|4(~<_9?Jɉ$w^ó\d܂Q6~!)1}Pj/o,KD{&j# #($E3,6 "D*+*F&j;.!PD1X@$)Td9\_ %R\T5Z`4-Vt=^_@ap`qxDPitpy|P$HerRhuzdXmv6oaL8҄I)!h3f1DcEq$$ RDi (K)&R0F`V=z{GP0)s &#(F77R=< ,oK z:GPGȶbYnoJTƅLPL>퍏\ٔViM. -`y:KRQQJ+0vv7CKjYBRibt e'ݣXnU`*պ`?Aof+ҦBj!Xz :V/IkhnywdA;8 }//aFY2Z޺1̺ fzRsue|jZ8ĢY7rz` #($E3, #(dζndfy&y O$;),Ӿƚx#9zF ǘ>i]B͠8YcEޔ=ZIZ40j?i+ ܟ%fs6ӓmыN5͈Ztn[M!lȲKnf2*$EhͬvSqԈT>*ޞ玩ZUݨ23}͔*iϤo |)*rZyjd6`sYELR⋱ J[X#As񅰃3խ g^U6N?"ֳ"[}UTNOҷ8nZ/h9 ycy D,fy a(N, #RE^'ek#CEFAK)I|̀xiDdo4|kdDR] VoZ7s#y(ۏ, \{k5FؘcOSxi`ճ5 JK).S`±Np+Q 7P{yŷ*WdgNR(Wg 9ُŝ=qa*I5fW&k {LEyRڂ$E3,7^EI Pt_%u펳 ua@w41N^6.4A@k E'`}Ы /jHdBXwIa #(&pKo@/R3E72\vFtzhL^] B0bZ I$IdFJ%z`7Jiz.h3EM0bVUTqU‰ !AICQKm#*Sk3;mڂ,*fb LCTq&bJT<ĦgS$CGlb}C *?))^p3tP! Q.Z'$lf2ABUOyvX 2n1~ɰ^8NͰ#ML}j. C*'>MRek}|b!{oi?߷@nKL۟҄jߍ"=vֳN̺ {/=5l-|[2= -]!"T o%C=X1{ I1]Y;iط`E"X' ƚ9~ħ~f;LJ)ovIZm:wG>)X 17s_|?Gu^w~ ^shendE{U~>ztVWcsD(9ŷؔ{9dǏ$WJ%n^dnE2:MlP 'Hַ ;cPxSde3{ H%_ ўڱOhS 0a=9P 'Hfup#@FP 'HfX.aYeYeYeY8֛0O\ '\ /`z߱kd-?$[x?\>v(~9tjgW+E>6{v֠x!XM` S #($]hbMţq|Jɟ;-cH)NW\~^1fl yϕCque F'Qح|_F/#ŚV7Fp_7bj9yW'}5- ꫛ` <_,`r0yZt)V]؈$E3, #($E3,7`7& ɇ0ARw|vH, J7"D*+B^ I I 8G32iҺZԍ?omУc-&&'֚9XGo䢶LeK΀3.RhJdxB,,S6e0Y)Aj3?ht޴>?3mIѽ1!̢V0͐Ti(qJ[9hIݪRMm&cG*\`S)SOar능N&@~? _~{Ip{6E{6Ixo2@2oʼs0ts@Mag7Nus&V\܊s=qwjv¢ôOSC[|Cq5i|eU6c8u?K.mMwL"T|}.__?bq7s)N>(]efsŮ~53_I]9v.E.-Q$o\j -Cݠ`$8Ö!'R [bo nm~6!CcImp0KJ (? uVJ+cZ@)Tep{xY7dUdW?vD)Ro:ClmP`њUJ#x^8|NRcʪf\-Ekؗ5_˒vIw!A1 )C戚{"/:Ϊ:8nڜrh֮Je_L%]distrobox-1.8.1.2/docs/posts/000077500000000000000000000000001474517124600160115ustar00rootroot00000000000000distrobox-1.8.1.2/docs/posts/distrobox_custom.md000066400000000000000000000031771474517124600217520ustar00rootroot00000000000000- [Distrobox](README.md) --- # Create a dedicated distrobox container Distrobox wants to be as generic as possible in supporting OCI images, but sometimes there could be some problems: - The image you want to use is too old and the package manager mirrors are down - The image you want to use has not a supported package manager or no package manager at all ## Requirements The only required programs that must be available in the container so that `distrobox-init` won't start the installation are: - the $SHELL you use (bash, zsh, fish etc etc) - bash-completion - bc - bzip2 - curl - diffutils - findutils - gnupg2 - hostname - iproute - iputils - keyutils - krb5-libs - less - lsof - man-db - man-pages - ncurses - nss-mdns - openssh-clients - pam - passwd - pigz - pinentry - ping - procps-ng - rsync - shadow-utils - sudo - tcpdump - time - traceroute - tree - tzdata - unzip - util-linux - vte-profile - wget - which - whois - words - xorg-x11-xauth - xz - zip And optionally: - mesa-dri-drivers - mesa-vulkan-drivers - vulkan If all those dependencies are met, then the `distrobox-init` will simply skip the installation process and work as expected. To test if all packages requirements are met just run this in the container: ```shell dependencies=" bc bzip2 chpasswd curl diff find findmnt gpg hostname less lsof man mount passwd pigz pinentry ping ps rsync script ssh sudo time tree umount unzip useradd wc wget xauth zip " for dep in ${dependencies}; do ! command -v "${dep}" && echo "missing $dep" done ``` distrobox-1.8.1.2/docs/posts/execute_commands_on_host.md000066400000000000000000000070121474517124600234070ustar00rootroot00000000000000- [Distrobox](../README.md) - [Execute a command on the host](#execute-a-command-on-the-host) - [With distrobox-host-exec](#with-distrobox-host-exec) - [Using symlinks](#using-symlinks) - [Integrate host with container seamlessly](#integrate-host-with-container-seamlessly) - [bash or zsh](#bash-or-zsh) - [fish](#fish) --- # Execute a command on the host It may be needed to execute commands back on the host. Be it the filemanager, an archive manager, a container manager and so on. Here are a couple of solutions. ## With distrobox-host-exec distrobox offers the `distrobox-host-exec` helper, that can be used exactly for this. See [distrobox-host-exec](../usage/distrobox-host-exec.md). ```console user@fedora-distrobox:~$ which podman /usr/bin/which: no podman in [...] user@fedora-distrobox:~$ distrobox-host-exec podman version # <-- this is executed on host. Client: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 Server: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 ``` ## Using symlinks Another way to execute commands on the host, is to create executables symlinking `distrobox-host-exec`: ```console user@fedora-distrobox:~$ ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman user@fedora-distrobox:~$ ls -l /usr/local/bin/podman lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec user@fedora-distrobox:~$ podman version # <-- this is executed on host. Equivalent to "distrobox-host-exec podman version" Client: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 Server: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 ``` # Integrate host with container seamlessly Another cool trick we can pull, is to use the handy `command_not_found_handle` function to try and execute missing commands in the container on the host. ## bash or zsh Place this in your `~/.profile`: ```shell command_not_found_handle() { # don't run if not in a container if [ ! -e /run/.containerenv ] && [ ! -e /.dockerenv ]; then exit 127 fi distrobox-host-exec "${@}" } if [ -n "${ZSH_VERSION-}" ]; then command_not_found_handler() { command_not_found_handle "$@" } fi ``` And then, run `source ~/.profile` to reload `.profile` in the current session. ## fish Place this snippet in a new fish function file (`~/.config/fish/functions/fish_command_not_found.fish`): ```fish function fish_command_not_found # "In a container" check if test -e /run/.containerenv -o -e /.dockerenv distrobox-host-exec $argv else __fish_default_command_not_found_handler $argv end end ``` And restart your terminal. Now when a command does not exist on your container, it will be automatically executed back on the host: ```shell user@fedora-distrobox:~$ which podman /usr/bin/which: no podman in [...] user@fedora-distrobox:~$ podman version # <-- this is automatically executed on host. Client: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 Server: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.6 Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 ``` This is also useful to open `code`, `xdg-open`, or `flatpak` from within the container seamlessly. distrobox-1.8.1.2/docs/posts/install_lilipod_static.md000066400000000000000000000024141474517124600230650ustar00rootroot00000000000000# Install Lilipod in a static manner If on your distribution (eg. SteamOS) can be difficult to install something and keep it between updates, then you could use this guide to install [lilipod](https://github.com/89luca89/lilipod) in your `$HOME`. [Lilipod](https://github.com/89luca89/lilipod) is a very simple container manager with minimal features to: - Download and manager images - Create and run containers To install `lilipod`: 1. Add the Path you've chosen to install to your PATH (by default it's `$HOME/.local/bin`. - [See here how to do it](https://www.howtogeek.com/658904/how-to-add-a-directory-to-your-path-in-linux/) 2. Ensure you have /etc/subuid and /etc/subgid, if you don't do: - `sudo touch /etc/subuid /etc/subgid` - `sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 $USER` This is particularly indicated also for completely *sudoless* setups, where you don't have any superuser access to the system, like for example company provided computers. Download the latest release of [lilipod](https://github.com/89luca89/lilipod/releases) and put it somewhere in your $PATH Provided the only dependency on the host (`newuidmap/newgidmap`, of the package `uidmap` or `shadow`), you should be good to go. To uninstall, just delete the binary. distrobox-1.8.1.2/docs/posts/install_podman_static.md000066400000000000000000000021121474517124600227020ustar00rootroot00000000000000# Install Podman in a static manner If on your distribution (eg. SteamOS) can be difficult to install something and keep it between updates, then you could use this guide to install `podman` in your `$HOME`. 1. Add the Path you've chosen to install to your PATH (by default it's `$HOME/.local/bin`. - [See here how to do it](https://www.howtogeek.com/658904/how-to-add-a-directory-to-your-path-in-linux/) 2. Ensure you have /etc/subuid and /etc/subgid, if you don't do: - `sudo touch /etc/subuid /etc/subgid` - `sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 $USER` This is particularly indicated also for completely *sudoless* setups, where you don't have any superuser access to the system, like for example company provided computers. Download the latest release of [podman-launcher](https://github.com/89luca89/podman-launcher/releases), make it executable and put it somewhere in your $PATH Provided the only dependency on the host (`newuidmap/newgidmap`, of the package `uidmap` or `shadow`), you should be good to go. To uninstall, just delete the binary. distrobox-1.8.1.2/docs/posts/integrate_vscode_distrobox.md000066400000000000000000000110771474517124600237630ustar00rootroot00000000000000- [Distrobox](../README.md) - [Integrate VSCode and Distrobox](#integrate-vscode-and-distrobox) - [From distrobox](#from-distrobox) - [From flatpak](#from-flatpak) - [First step, install it](#first-step-install-it) - [Second step, extensions](#second-step-extensions) - [Third step, podman wrapper](#third-step-podman-wrapper) - [Final Result](#final-result) --- # Integrate VSCode and Distrobox VScode doesn't need presentations, and it's a powerful tool for development. You may want to use it, but how to handle the dualism between host and container? In this experiment we will use [VSCodium](https://vscodium.com/) as an opensource alternative to VSCode. Here are a couple of solutions. ## From distrobox Well, you could just install VSCode in your Distrobox of choice, and export it! For example using an Arch Linux container: ```shell ~$ distrobox create --image archlinux:latest --name arch-distrobox ~$ distrobox enter --name arch-distrobox user@arch-distrobox:~$ ``` Download the deb file [HERE](https://github.com/VSCodium/vscodium/releases), or in Arch case just install ```shell user@arch-distrobox:~$ sudo pacman -S code ``` Now that we have installed it, we can export it: ```shell user@ubuntu-distrobox:~$ distrobox-export --app code ``` And that's really it, you'll have VSCode in your app list, and it will run from the Distrobox itself, so it will have access to all the software and tools inside it without problems. ![image](https://user-images.githubusercontent.com/598882/149206335-1a2d0edd-8b2f-437d-aae0-44b9723d2c30.png) ![image](https://user-images.githubusercontent.com/598882/149206414-56bdbc5a-3728-45ef-8dd4-2e168a0d7ccc.png) ## From flatpak Alternatively you may want to install VSCode on your host. We will explore how to integrate VSCode installed via **Flatpak** with Distrobox. For this one you'll need to use VSCode from Microsoft, and not VSCodium, in order to have access to the remote containers extension. ### First step install it ```shell ~$ flatpak install --user app/com.visualstudio.code ``` ### Second step, extensions Now we want to install VSCode [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) ![image](https://user-images.githubusercontent.com/598882/149207447-76a82e91-dd3f-43fa-8c52-9c2e85ae8fee.png) ### Third step podman wrapper Being in a Flatpak, we will need access to host's `podman` to be able to use the containers. Place this in your `~/.local/bin/podman-host` In case of access to host's `docker` to be able to use the containers, use `~/.local/bin/docker-host` For podman: ```shell curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/podman-host -o ~/.local/bin/podman-host chmod +x ~/.local/bin/podman-host ``` For docker: ```shell curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/docker-host -o ~/.local/bin/docker-host chmod +x ~/.local/bin/docker-host ``` Open VSCode settings (Ctrl+,) and head to `Remote>Containers>Docker Path` and set it to the path of `/home//.local/bin/podman-host` (or docker-host in case of docker), like in the example ![image](https://user-images.githubusercontent.com/598882/149208525-5ad630c9-fcbc-4ee6-9d77-e50d2c782a56.png) This will give a way to execute host's container manager from within the flatpak app. **This works for Distrobox both inside and outside a flatpak** This will act only for containers created with Distrobox, you can still use regular devcontainers without transparently if needed. ## Final Result After that, we're good to go! Open VSCode and Attach to Remote Container: ![image](https://user-images.githubusercontent.com/598882/149210561-2f1839ae-9a57-42fc-a122-21652588e327.png) And let's choose our Distrobox ![image](https://user-images.githubusercontent.com/598882/149210690-8bcb9a0d-1dc5-4937-9494-8c6aa6b26fd5.png) And we're good to go! We have our VSCode remote session inside our Distrobox container! ![image](https://user-images.githubusercontent.com/598882/149210881-749a8146-c69d-4382-bbef-91e4b477b7ba.png) # Open VSCode directly attached to our Distrobox You may want to instead have a more direct way to launch your VSCode when you're already in your project directory, in this case you can use `vscode-distrobox` script: ```shell curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/vscode-distrobox -o ~/.local/bin/vscode-distrobox chmod +x ~/.local/bin/vscode-distrobox ``` This will make it easy to launch VSCode attached to target distrobox, on a target path: `vscode-distrobox my-distrobox /path/to/project` distrobox-1.8.1.2/docs/posts/posts.md000066400000000000000000000007441474517124600175100ustar00rootroot00000000000000- [Distrobox](../README.md) --- ## Latest posts - [Execute a command on the Host](execute_commands_on_host.md) - [Install Podman in HOME](install_podman_static.md) - [Install Lilipod in HOME](install_lilipod_static.md) - [Install on Steamdeck](steamdeck_guide.md) - [Integrate VSCode and Distrobox](integrate_vscode_distrobox.md) - [Run Libvirt using distrobox](run_libvirt_in_distrobox.md) - [Run latest GNOME and KDE Plasma using distrobox](run_latest_gnome_kde_on_distrobox.md) distrobox-1.8.1.2/docs/posts/run_latest_gnome_kde_on_distrobox.md000066400000000000000000000140651474517124600253220ustar00rootroot00000000000000- [Distrobox](../README.md) - [Run latest GNOME and KDE Plasma using distrobox](run_latest_gnome_kde_on_distrobox.md) - [Using a stable-release distribution](#using-a-stable-release-distribution) - [Initializing the distrobox](#initializing-the-distrobox) - [Running Latest GNOME](#running-latest-gnome) - [Generate session file - GNOME](#generate-session-file---gnome) - [Running Latest Plasma](#running-latest-plasma) - [Generate session file - Plasma](#generate-session-file---plasma) - [Add a couple of fixes](#add-a-couple-of-fixes) - [Using other GUIs](#using-other-guis) - [Using apps from host](#using-apps-from-host) --- ⚠️ **BE CAREFUL**:⚠️ THIS IS EXPERIMENTAL, JUST FOOD FOR THOUGHTS ⚠️ **BE CAREFUL**:⚠️ BUG REPORTS FOR THIS TYPE OF EXPERIMENTS WILL BE TREATED WITH VERY LOW PRIORITY # Using a stable-release distribution Lots of people prefer to run a distribution following a stable-LTS release cycle like Debian, UbuntuLTS or CentOS family (Almalinux, Rocky Linux). This ensures great stability on one hand, but package staling on the other. One way to counter this effect is to use a pet-container managed by Distrobox to run packages from much newer distributions without giving up on core base os stability. ## Initializing the distrobox For this experiment we'll use Fedora Rawhide as our distrobox, and Centos 8 Stream as our host, so: ```shell distrobox create --name fedora-rawhide --init --additional-packages "systemd" --image registry.fedoraproject.org/fedora:rawhide ``` and ```shell distrobox enter fedora-rawhide ``` ## Running Latest GNOME First we need to install GNOME in the container: ```shell user@fedora-rawhide:~$ sudo dnf groupinstall GNOME ``` And let's grab a coffee while it finishes :-) After the `dnf` process finishes, we have GNOME installed in our container, now how do we use it? ### Generate session file - GNOME First in the host we need a reliable way to fix the permissions problem of the `/tmp/.X11-unix` directory. This directory should either belong to `root` or `$USER`. But in a rootless container, host's `root` is not mapped inside the container so we need to change the ownership from `root` to `$USER` each time. Let's add: ```shell chown -f -R $USER:$USER /tmp/.X11-unix ``` to `/etc/profile.d/fix_tmp.sh` file. This is needed for the XWayland session to work properly which right now is necessary to run gnome-shell even on wayland. Then we need to add a desktop file for the session on the **host's** file system, so that it appears on your login manager (Be it SDDM or GDM) ```shell [Desktop Entry] Name=GNOME on Wayland (fedora-rawhide distrobox) Comment=This session logs you into GNOME Exec=/usr/local/bin/distrobox-enter -n fedora-rawhide -- /usr/bin/gnome-session Type=Application DesktopNames=GNOME X-GDM-SessionRegisters=true ``` This file should be placed under `/usr/local/share/wayland-sessions/distrobox-gnome.desktop` (If it doesn't show up, you can place it under `/usr/share/xsessions/distrobox-gnome.desktop`) Let's log out and voilá! ![image](https://user-images.githubusercontent.com/598882/148703229-82905d23-f3d0-41bc-a048-d12cdf8066d0.png) ![Screenshot from 2024-02-21 23-32-13](https://github.com/89luca89/distrobox/assets/598882/9b981f40-fdbe-4ed4-82cc-1e96b6e945e5) ![Screenshot from 2024-02-21 23-32-03](https://github.com/89luca89/distrobox/assets/598882/d2200195-74c6-4a1c-8ddb-a9fabe775999) We now are in a GNOME 42 session inside Fedora Rawhide while our main OS remains Centos. ## Running Latest Plasma We first need to install Plasma in the container: ```shell user@fedora-rawhide:~$ sudo dnf groupinstall KDE ``` ### Generate session file - Plasma We need to add a desktop file for the session on the **host's** file system, so that it appears on your login manager (Be it SSDM or GDM) ```shell [Desktop Entry] Exec=/usr/local/bin/distrobox-enter -- /usr/libexec/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland DesktopNames=KDE Name=Plasma on Wayland (fedora-rawhide distrobox) X-KDE-PluginInfo-Version=5.23.3 ``` This file should be placed under `/usr/local/share/wayland-sessions/distrobox-plasma.desktop` (If it doesn't show up, you can place it under `/usr/share/xsessions/distrobox-plasma.desktop`) ### Add a couple of fixes To make Plasma work we need a couple more fixes to run both on the host and in the container. First in the host we need a reliable way to fix the permissions problem of the `/tmp/.X11-unix` directory. This directory should either belong to `root` or `$USER`. But in a rootless container, host's `root` is not mapped inside the container so we need to change the ownership from `root` to `$USER` each time. Let's add: ```shell chown -f -R $USER:$USER /tmp/.X11-unix ``` to `/etc/profile.d/fix_tmp.sh` file. We also need to add a process in autostart on which Plasma shell relies on a process called `kactivitymanagerd`. Not having host's systemd at disposal we can start it simply adding it to the ~/.profile file, add: ```shell if [ -f /usr/libexec/kactivitymanagerd ]; then /usr/libexec/kactivitymanagerd & disown fi ``` to `~/.profile` file. Let's log out and voilá! ![image](https://user-images.githubusercontent.com/598882/148704789-3d799a85-51cc-4de7-9ee3-f54add4949bc.png) ![image](https://user-images.githubusercontent.com/598882/148705044-7271af0c-0675-42f8-9f45-ad20ec53deca.png) We now are in latest KDE Plasma session inside Fedora Rawhide while our main OS remains Centos. # Using other GUIs Thanks to [J.S. Evans](https://twitter.com/usenetnerd) he experimented and wrote a beautiful blog post on how to use Distrobox for much more than simply running apps. You'll read on how to set up a working Ubuntu container with IceWM running on Xorg using Distrobox: [Read the Article HERE](https://cloudyday.tech.blog/2022/05/14/distrobox-is-awesome/) # Using apps from host Now that we're in a container session, we may want to still use some of the host's apps. Refer to [THIS](execute_commands_on_host.md) to create handlers and wrappers to use the complete selection of host's apps and binaries inside the container. distrobox-1.8.1.2/docs/posts/run_libvirt_in_distrobox.md000066400000000000000000000070251474517124600234610ustar00rootroot00000000000000- [Distrobox](../README.md) - [Run Libvirt using distrobox](run_libvirt_in_distrobox.md) - [Prepare the container](#prepare-the-container) - [Launch from the container](#launch-from-the-container) - [Connect via SSH](#connect-via-ssh) # Using an immutable distribution If you are on an immutable distribution (Silverblue/Kionite, Aeon/Kalpa) chances are that installing lots and lots of packages on the base system is not advisable. One way is to use a distrobox for them. ## Prepare the container To run libvirt/qemu/kvm we need a systemd container and we need a **rootful** container to be able to use it, see [this tip](../useful_tips.md#using-init-system-inside-a-distrobox) to have a list of compatible images. We will use in this example OpenSUSE's dedicated distrobox image: Assembly file: ```ini [libvirt] image=registry.opensuse.org/opensuse/distrobox:latest pull=true init=true root=true entry=true start_now=false unshare_all=true additional_packages="systemd" # Basic utilities for terminal use init_hooks="zypper in -y --no-recommends openssh-server patterns-server-kvm_server patterns-server-kvm_tools qemu-arm qemu-ppc qemu-s390x qemu-extra qemu-linux-user qemu-hw-display-virtio-gpu-pci qemu-hw-display-virtio-gpu" init_hooks="systemctl enable sshd.service" init_hooks="systemctl enable virtqemud.socket virtnetworkd.socket virtstoraged.socket virtnodedevd.socket" # Add the default user to the libvirt group init_hooks="usermod -aG libvirt ${USER}" # Expose container ssh on host additional_flags="-p 2222:22" # Export virt-manager exported_apps="virt-manager" ``` Alternatively, command line: ```console distrobox create --pull --root --init --unshare-all --image registry.opensuse.org/opensuse/distrobox:latest --name libvirtd --additional-flags "-p 2222:22" \ --init-hooks "zypper in -y --no-recommends openssh-server patterns-server-kvm_server patterns-server-kvm_tools qemu-arm qemu-ppc qemu-s390x qemu-extra qemu-linux-user qemu-hw-display-virtio-gpu-pci qemu-hw-display-virtio-gpu && systemctl enable sshd.service && systemctl enable virtqemud.socket virtnetworkd.socket virtstoraged.socket virtnodedevd.socket && usermod -aG libvirt $USER" distrobox-enter --root libvirtd -- distrobox-export --app virt-manager ``` ## Launch from the container Simply select the `Virt Manager (on libvirt)` entry in your menu, entry your root password and you're done! ![image](https://github.com/89luca89/distrobox/assets/598882/ca4f8fed-c8bd-4a01-b845-48be1aafd523) ![image](https://github.com/89luca89/distrobox/assets/598882/2f709b1b-f0e6-451a-8b59-3ed3177b9fcf) ![image](https://github.com/89luca89/distrobox/assets/598882/3f5f36cf-749d-4832-93f0-8eb9574dea9a) ## Connect via SSH You can alternatively connect from an existing VirtManager Now you will need to **Add a connection**: ![image](https://user-images.githubusercontent.com/598882/208441337-4dbade85-4c72-4342-b9ee-acd76b9b1675.png) Then set it like this: ![Screenshot from 2024-02-19 19-50-04](https://github.com/89luca89/distrobox/assets/598882/bff78725-63c9-4da6-9d25-318c58162673) - Tick the "Use ssh" option - username: `` - hostname: 127.0.0.1:2222 Optionally you can set it to autoconnect. Now you can simply double click the connection to activate it, you'll be prompted with your password, insert the same password as the host: ![image](https://github.com/89luca89/distrobox/assets/598882/27bba705-223f-4876-a2fc-b6d102b7130a) And you should be good to go! ![image](https://user-images.githubusercontent.com/598882/208442009-fe9df606-e6a8-44f9-94c2-1c2bfba4ca15.png) distrobox-1.8.1.2/docs/posts/steamdeck_guide.md000066400000000000000000000117301474517124600214520ustar00rootroot00000000000000Latest SteamOS (version 3.5 and later) already pre-installed `distrobox` and `podman`. Before using `distrobox` on SteamOS, it may be necessary to upgrade to the latest version since the version provided by SteamOS may be outdated. You can verify the currently installed version by running the command `distrobox version`. For instance, on SteamOS 3.5, version 1.4.2.1-3 of `distrobox` is installed. To upgrade `distrobox` on SteamOS, you have two options: ### Option 1: Install `distrobox` in `$HOME` By installing `distrobox` in your `$HOME` directory, you can ensure that you have control over the version you're using, independent of SteamOS updates. This method prevents your modifications from being reverted when SteamOS is updated. Note that it's essential to add this new version of `distrobox` to your PATH to ensure it's utilized over the SteamOS-provided version. To install `distrobox` in the `$HOME` directory, run the following command: ```sh curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME ``` For more detailed installation instructions, refer to the documentation [here](https://github.com/89luca89/distrobox/blob/main/docs/README.md#alternative-methods). To upgrade the version of `distrobox`, follow the instructions provided in the documentation link above. ### Option 2: Overwrite the provided `distrobox` installation in SteamOS An alternative approach is to upgrade the version of `distrobox` provided by SteamOS. While this simplifies management as you don't need to modify your PATH and you wouldn't have 2 versions of `distrobox` installed, it comes with the downside that your upgrades will be overwritten when SteamOS is updated. To upgrade the `distrobox` version provided by SteamOS, execute the following commands: ```sh sudo steamos-readonly disable curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh -s -- --prefix /usr sudo steamos-readonly enable ``` Please note that disabling the read-only state is necessary to perform this upgrade. You can find more information about this requirement [here](https://help.steampowered.com/en/faqs/view/671A-4453-E8D2-323C). Once `distrobox` is upgraded, you can use it as normal. --- To run GUI application, add following line to `~/.distroboxrc`. ```sh xhost +si:localuser:$USER >/dev/null ``` This is needed to ensure the graphical apps can talk to the Xwayland session. You can now start using `distrobox` on the deck, open the terminal and go: ```sh distrobox create && distrobox enter ``` Refer to the [quickstart guide](../README.md#quick-start) and to the [usage docs](../usage/usage.md) And don't forget the [useful tips](../useful_tips.md)! ## SteamOS 3.4 and earlier To install Distrobox on the steamdeck, we can install both `podman` and `distrobox` inside the `$HOME` so that containers will survive updates. ## Install Podman To install podman, [refer to the install guide](./install_podman_static.md): - Download the latest release of `podman-launcher` and place it in your home and rename it to `podman`, this example will use `~/.local/bin` - Make the `podman` binary executable: - `chmod +x ~/.local/bin/podman` - Setup `deck` user password using: - `passwd` - Setup `deck` user uidmap: - `sudo touch /etc/subuid /etc/subgid` - `sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck` And `podman` is ready to use! ### Alternative Install Lilipod To install [lilipod](https://github.com/89luca89/lilipod), [refer to the install guide](install_lilipod_static.md#): - Download the latest release of `lilipod` and place it in your home and rename it to `lilipod`, this example will use `~/.local/bin` - Setup `deck` user password using: - `passwd` - Setup `deck` user uidmap: - `sudo touch /etc/subuid /etc/subgid` - `sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck` And `lilipod` is ready to use! ## Install Distrobox Installing distrobox in HOME is quite straightforward: - Install `distrobox` in your HOME following the `curl` instructions: - [INSTALL](../README.md#curl-or-wget) ## Setup ~/.distroboxrc We need to add some tweaks to our `~/.distroboxrc` to have GUI and Audio working correctly in SteamOS Ensure your `~/.distroboxrc` has this content: ```sh xhost +si:localuser:$USER >/dev/null export PIPEWIRE_RUNTIME_DIR=/dev/null export PATH=$PATH:$HOME/.local/bin ``` This will force the use of `pulseaudio` inside the container, right now `pipewire` is not working correctly inside the container, and it's a SteamOS specific issue. `xhost` is needed to ensure the graphical apps can talk to the Xwayland session. `PATH` is needed to ensure distrobox can find the `podman` binary we previously downloaded. ## Start using it You can now start using `distrobox` on the deck, open the terminal and go: `distrobox create && distrobox enter` Refer to the [quickstart guide](../README.md#quick-start) and to the [usage docs](../usage/usage.md) And don't forget the [useful tips](../useful_tips.md)! distrobox-1.8.1.2/docs/style.css000066400000000000000000000204161474517124600165160ustar00rootroot00000000000000/* OS Component Website ==================== shamelessly stolen CSS from systemd https://github.com/systemd/systemd/tree/main/docs */ /* GNOME Color Palette */ :root { --rounded-corner: 12px; --blue1: rgb(153,193,241); --blue2: rgb(98,160,234); --blue3: rgb(53,132,228); --blue4: rgb(28,113,216); --blue5: rgb(26,95,180); --green1: rgb(143,240,164); --green2: rgb(87,227,137); --green3: rgb(51,209,122); --green4: rgb(46,194,126); --green5: rgb(38,162,105); --yellow1: rgb(249,240,107); --yellow2: rgb(248,228,92); --yellow3: rgb(246,211,45); --yellow4: rgb(245,194,17); --yellow5: rgb(229,165,10); --orange1: rgb(255,190,111); --orange2: rgb(255,163,72); --orange3: rgb(255,120,0); --orange4: rgb(230,97,0); --orange5: rgb(198,70,0); --red1: rgb(246,97,81); --red2: rgb(237,51,59); --red3: rgb(224,27,36); --red4: rgb(192,28,40); --red5: rgb(165,29,45); --purple1: rgb(220,138,221); --purple2: rgb(192,97,203); --purple3: rgb(145,65,172); --purple4: rgb(129,61,156); --purple5: rgb(97,53,131); --brown1: rgb(205,171,143); --brown2: rgb(181,131,90); --brown3: rgb(152,106,68); --brown4: rgb(134,94,60); --brown5: rgb(99,69,44); --light1: rgb(255,255,255); --light2: rgb(246,245,244); --light3: rgb(222,221,218); --light4: rgb(192,191,188); --light5: rgb(154,153,150); --dark1: rgb(119,118,123); --dark2: rgb(94,92,100); --dark3: rgb(61,56,70); --dark4: rgb(36,31,49); --dark5: rgb(0,0,0); --primary-color: var(--medium-armadillo); /* Set your project color */ --borders: var(--light3); --dark-armadillo: #4f433c; --medium-armadillo: #70594d; --light-armadillo: #f0e2d1; } /* Typography */ @font-face { font-family: 'Inter Var'; font-weight: 100 900; font-display: swap; font-style: oblique 0deg 10deg; src: url("fonts/Inter.var.woff2?v=3.19") format("woff2"); } * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } html, body { margin: 0; padding: 0; font-size: 16px; font-family: "Inter Var", sans-serif; font-weight: 400; line-height: 1.6; scroll-behavior: smooth; } body { color: #241f31; background-color: #f6f5f4; /* ⇩⇩ put footer at the bottom for short pages, such as the 404 ⇩⇩ */ display: grid; min-height: 100vh; grid-template-rows: auto minmax(auto,1fr) auto; /* header, stuff, footer */ } h1, h2, h3, h4, h5, h6 { margin: 3rem 0 1rem; font-weight: 600; line-height: 1.25; font-variation-settings: "wght" 600; /* needed for webkit */ } h1 { font-size: 1.5rem; font-weight: 100; font-style: normal; margin: 3rem 0 1rem; } @media screen and (min-width: 650px) { h1 { font-size: 1.6rem; } } h2 { font-size: 1.2rem; } @media (prefers-color-scheme: dark) { body { filter: invert(100%) hue-rotate(180deg); } html { background-color: var(--dark5); } img, video, iframe { filter: invert(100%) hue-rotate(180deg); } } a { font-weight: 600; text-decoration: none; color: var(--primary-color); cursor: pointer; font-variation-settings: "wght" 600; /* needed for webkit */ } a:hover { text-decoration: underline; } b { font-weight: 600; } small { color: #777; } hr { margin: 3rem auto 4rem; width: 40%; opacity: 40%; } img { display: block; margin: 2rem auto; max-width: 100%; } img.full { width: 100%; } img.pixels { image-rendering: crisp-edges; /* older firefox browsers */ image-rendering: pixelated; } /* Layout */ .container { width: 80%; margin-left: auto; margin-right: auto; max-width: 720px; } /* Singletons */ #logo { display: block; width: 251px; height: 26px; background: url('assets/page-logo.svg') no-repeat center; padding: 5rem 0 3rem; margin: 0 auto; position: relative; } #logo a { display: block; position: absolute; top: 0; left: 0; right: 0; bottom: 0; color: rgba(0,0,0,0); /* make text transparent */ cursor: pointer; } .page-logo > img { margin: 0 auto; } @media (prefers-color-scheme: dark) { #logo { filter: invert(100%) hue-rotate(180deg); /* uninvert */ background-image: url('assets/page-logo-i.svg'); } } .brand-white { background-color: #fff; } .brand-green { background-color: #30D475; } .brand-black { background-color: #201A26; color: white; } .page-link::after { content: " ➜"; } /* Footer */ footer { text-align: center; padding: 3em 0 3em; font-size: 1em; margin-top: 4rem; } /* Make tables vertically aligned to the top */ tbody td { vertical-align: top; } /* Github Code Highlighting */ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .cm { color: #999988; font-style: italic; } .highlight .cp { color: #999999; font-weight: bold; } .highlight .c1 { color: #999988; font-style: italic; } .highlight .cs { color: #999999; font-weight: bold; font-style: italic; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #999988; font-style: italic; } .highlight .err { color: #a61717; background-color: #e3d2d2; } .highlight .gd { color: #000000; background-color: #ffdddd; } .highlight .ge { color: #000000; font-style: italic; } .highlight .gr { color: #aa0000; } .highlight .gh { color: #999999; } .highlight .gi { color: #000000; background-color: #ddffdd; } .highlight .go { color: #888888; } .highlight .gp { color: #555555; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #aaaaaa; } .highlight .gt { color: #aa0000; } .highlight .kc { color: #000000; font-weight: bold; } .highlight .kd { color: #000000; font-weight: bold; } .highlight .kn { color: #000000; font-weight: bold; } .highlight .kp { color: #000000; font-weight: bold; } .highlight .kr { color: #000000; font-weight: bold; } .highlight .kt { color: #445588; font-weight: bold; } .highlight .k, .highlight .kv { color: #000000; font-weight: bold; } .highlight .mf { color: #009999; } .highlight .mh { color: #009999; } .highlight .il { color: #009999; } .highlight .mi { color: #009999; } .highlight .mo { color: #009999; } .highlight .m, .highlight .mb, .highlight .mx { color: #009999; } .highlight .sb { color: #d14; } .highlight .sc { color: #d14; } .highlight .sd { color: #d14; } .highlight .s2 { color: #d14; } .highlight .se { color: #d14; } .highlight .sh { color: #d14; } .highlight .si { color: #d14; } .highlight .sx { color: #d14; } .highlight .sr { color: #009926; } .highlight .s1 { color: #d14; } .highlight .ss { color: #990073; } .highlight .s, .highlight .sa, .highlight .dl { color: #d14; } .highlight .na { color: #008080; } .highlight .bp { color: #999999; } .highlight .nb { color: #0086B3; } .highlight .nc { color: #445588; font-weight: bold; } .highlight .no { color: #008080; } .highlight .nd { color: #3c5d5d; font-weight: bold; } .highlight .ni { color: #800080; } .highlight .ne { color: #990000; font-weight: bold; } .highlight .nf, .highlight .fm { color: #990000; font-weight: bold; } .highlight .nl { color: #990000; font-weight: bold; } .highlight .nn { color: #555555; } .highlight .nt { color: #000080; } .highlight .vc { color: #008080; } .highlight .vg { color: #008080; } .highlight .vi { color: #008080; } .highlight .nv, .highlight .vm { color: #008080; } .highlight .ow { color: #000000; font-weight: bold; } .highlight .o { color: #000000; font-weight: bold; } .highlight .w { color: #bbbbbb; } .highlight { background-color: #f8f8f8; } /* Code Blocks */ .highlighter-rouge { padding: 2px 1rem; border-radius: 5px; background-color: var(--light1); max-width: 100%; overflow-x: auto; } @media only screen and (max-device-width : 480px) { /*mobile*/ .highlighter-rouge { max-width: 80vw; } } .highlighter-rouge * { background-color: var(--light1); } /* Inline Code */ code.highlighter-rouge { padding: 2px 6px; background-color: rgba(0,0,0, 0.07); } /* Buttons */ .dialog-buttons { display: flex; flex-direction: row; align-items: baseline; justify-content: space-between; margin-top: 6rem; } .inline-button { display: inline-block; font-weight: 900; font-size: 90%; padding: .4rem 1rem; border-radius: var(--rounded-corner); background-color: rgba(0,0,0,0.05); color: var(--dark5); } distrobox-1.8.1.2/docs/usage/000077500000000000000000000000001474517124600157455ustar00rootroot00000000000000distrobox-1.8.1.2/docs/usage/distrobox-assemble.md000066400000000000000000000175151474517124600221060ustar00rootroot00000000000000 # NAME distrobox assemble distrobox-assemble # DESCRIPTION distrobox-assemble takes care of creating or destroying containers in batches, based on a manifest file. The manifest file by default is `./distrobox.ini`, but can be specified using the `--file` flag. # SYNOPSIS **distrobox assemble** --file: path or URL to the distrobox manifest/ini file --name/-n: run against a single entry in the manifest/ini file --replace/-R: replace already existing distroboxes with matching names --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES This is an example manifest file to create two containers: [ubuntu] additional_packages="git vim tmux nodejs" image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=false # You can add comments using this # [arch] # also inline comments are supported additional_packages="git vim tmux nodejs" home=/tmp/home image=archlinux:latest init=false start_now=true init_hooks="touch /init-normal" nvidia=true pre_init_hooks="touch /pre-init" pull=true root=false replace=false volume="/tmp/test:/run/a /tmp/test:/run/b" **Create** We can bring them up simply using distrobox assemble create If the file is called `distrobox.ini` and is in the same directory you're launching the command, no further arguments are needed. You can specify a custom path for the file using distrobox assemble create --file /my/custom/path.ini Or even specify a remote file, by using an URL: distrobox-assemble create --file https://raw.githubusercontent.com/89luca89/dotfiles/master/distrobox.ini **Replace** By default, `distrobox assemble` will replace a container only if `replace=true` is specified in the manifest file. In the example of the manifest above, the ubuntu container will always be replaced when running `distrobox assemble create`, while the arch container will not. To force a replace for all containers in a manifest use the `--replace` flag distrobox assemble create --replace [--file my/custom/path.ini] **Remove** We can bring down all the containers in a manifest file by simply doing distrobox assemble rm Or using a custom path for the ini file distrobox assemble rm --file my/custom/path.ini **Test** You can always test what distrobox **would do** by using the `--dry-run` flag. This command will only print what commands distrobox would do without actually running them. **Clone** **Disclaimer**: You need to start the container once to ensure it is fully initialized and created before cloning it. The container being copied must also be stopped before the cloning process can proceed. **Available options** This is a list of available options with the corresponding type: Types legend: - bool: true or false - string: a single string, for example `home="/home/luca-linux/dbox"` - string_list: multiple strings, for example `additional_packages="htop vim git"`. Note that `string_list` can be declared multiple times to be compounded: ```ini [ubuntu] image=ubuntu:latest additional_packages="git vim tmux nodejs" additional_packages="htop iftop iotop" additional_packages="zsh fish" ``` | Flag Name | Type | | | - | - | - | | additional_flags | string_list | Additional flags to pass to the container manager | | additional_packages | string_list | Additional packages to install inside the container | | home | string | Which home directory should the container use | | image | string | Which image should the container use, look [here](../compatibility.md) for a list | | clone | string | Name of the Distrobox container to use as the base for a new container (the container must be stopped). | | init_hooks | string_list | Commands to run inside the container, after the packages setup | | pre_init_hooks | string_list | Commands to run inside the container, before the packages setup | | volume | string_list | Additional volumes to mount inside the containers | | exported_apps | string_list | App names or desktopfile paths to export | | exported_bins | string_list | Binaries to export | | exported_bins_path | string | Optional path where to export binaries (default: $HOME/.local/bin) | | entry | bool | Generate an entry for the container in the app list (default: false) | | start_now | bool | Start the container immediately (default: false) | | init | bool | Specify if this is an initful container (default: false) | | nvidia | bool | Specify if you want to enable NVidia drivers integration (default: false) | | pull | bool | Specify if you want to pull the image every time (default: false) | | root | bool | Specify if the container is rootful (default: false) | | unshare_ipc | bool | Specify if the container should unshare the ipc namespace (default: false) | | unshare_netns | bool | Specify if the container should unshare the network namespace (default: false) | | unshare_process | bool | Specify if the container should unshare the process (pid) namespace (default: false) | | unshare_devsys | bool | Specify if the container should unshare /dev (default: false) | | unshare_all | bool | Specify if the container should unshare all the previous options (default: false) | For further explanation of each of the option in the list, take a look at the [distrobox create usage](distrobox-create.md#synopsis), each option corresponds to one of the `create` flags. **Advanced example** [tumbleweed_distrobox] image=registry.opensuse.org/opensuse/distrobox pull=true additional_packages="acpi bash-completion findutils iproute iputils sensors inotify-tools unzip" additional_packages="net-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt-dlp" additional_packages="git git-credential-libsecret" additional_packages="patterns-devel-base-devel_basis" additional_packages="ShellCheck ansible-lint clang clang-tools codespell ctags desktop-file-utils gcc golang jq python3" additional_packages="python3-bashate python3-flake8 python3-mypy python3-pipx python3-pycodestyle python3-pyflakes python3-pylint python3-python-lsp-server python3-rstcheck python3-yapf python3-yamllint rustup shfmt" additional_packages="kubernetes-client helm" init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/gopls@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install sigs.k8s.io/kind@latest; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/conmon; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/crun; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/flatpak; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/podman; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open; exported_apps="htop" exported_bins="/usr/bin/htop /usr/bin/git" exported_bins_path="~/.local/bin" **Clone example** [ubuntu] additional_packages="git vim tmux" image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=true [deno_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl -fsSL https://deno.land/install.sh | sh; [bun_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl -fsSL https://bun.sh/install | bash; distrobox-1.8.1.2/docs/usage/distrobox-create.md000066400000000000000000000256101474517124600215510ustar00rootroot00000000000000 # NAME distrobox create distrobox-create # DESCRIPTION distrobox-create takes care of creating the container with input name and image. The created container will be tightly integrated with the host, allowing sharing of the HOME directory of the user, external storage, external usb devices and graphical apps (X11/Wayland), and audio. # SYNOPSIS **distrobox create** --image/-i: image to use for the container default: ${container_image_default} --name/-n: name for the distrobox default: ${container_name_default} --hostname: hostname for the distrobox default: .$(uname -n) --pull/-p: pull the image even if it exists locally (implies --yes) --yes/-Y: non-interactive, pull images without asking --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --clone/-c: name of the distrobox container to use as base for a new container this will be useful to either rename an existing distrobox or have multiple copies of the same environment. --home/-H: select a custom HOME directory for the container. Useful to avoid host's home littering with temp files. --volume: additional volumes to add to the container --additional-flags/-a: additional flags to pass to the container manager command --additional-packages/-ap: additional packages to install during initial container setup --init-hooks: additional commands to execute at the end of container initialization --pre-init-hooks: additional commands to execute at the start of container initialization --init/-I: use init system (like systemd) inside the container. this will make host's processes not visible from within the container. (assumes --unshare-process) may require additional packages depending on the container image: https://github.com/89luca89/distrobox/blob/main/docs/useful_tips.md#using-init-system-inside-a-distrobox --nvidia: try to integrate host's nVidia drivers in the guest --platform: specify which platform to use, eg: linux/arm64 --unshare-devsys: do not share host devices and sysfs dirs from host --unshare-groups: do not forward user's additional groups into the container --unshare-ipc: do not share ipc namespace with host --unshare-netns: do not share the net namespace with host --unshare-process: do not share process namespace with host --unshare-all: activate all the unshare flags below --compatibility/-C: show list of compatible images --help/-h: show this message --no-entry: do not generate a container entry in the application list --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version --absolutely-disable-root-password-i-am-really-positively-sure: ⚠️ ⚠️ when setting up a rootful distrobox, this will skip user password setup, leaving it blank. ⚠️ ⚠️ # COMPATIBILITY for a list of compatible images and container managers, please consult the man page: man distrobox man distrobox-compatibility or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros # EXAMPLES Create a distrobox with image alpine, called my-alpine container distrobox create --image alpine my-alpine-container Create a distrobox from fedora-toolbox:35 image distrobox create --image registry.fedoraproject.org/fedora-toolbox:35 --name fedora-toolbox-35 Clone an existing distrobox container distrobox create --clone fedora-35 --name fedora-35-copy Always pull for the new image when creating a distrobox distrobox create --pull --image centos:stream9 --home ~/distrobox/centos9 Add additional environment variables to the container distrobox create --image fedora:35 --name test --additional-flags "--env MY_VAR=value" Add additional volumes to the container distrobox create --image fedora:35 --name test --volume /opt/my-dir:/usr/local/my-dir:rw --additional-flags "--pids-limit -1" Add additional packages to the container distrobox create --image alpine:latest --name test2 --additional-packages "git tmux vim" Use init-hooks to perform an action during container startup distrobox create --image alpine:latest --name test --init-hooks "touch /var/tmp/test1 && touch /var/tmp/test2" Use pre-init-hooks to perform an action at the beginning of the container startup (before any package manager starts) distrobox create -i docker.io/almalinux/8-init --init --name test --pre-init-hooks "dnf config-manager --enable powertools && dnf -y install epel-release" Use init to create a Systemd container (acts similar to an LXC): distrobox create -i ubuntu:latest --name test --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" --init Use init to create a OpenRC container (acts similar to an LXC): distrobox create -i alpine:latest --name test --additional-packages "openrc" --init Use host's NVidia drivers integration distrobox create --image ubuntu:22.04 --name ubuntu-nvidia --nvidia Do not use host's IP inside the container: distrobox create --image ubuntu:latest --name test --unshare-netns Create a more isolated container, where only the $HOME, basic sockets and host's FS (in /run/host) is shared: distrobox create --name unshared-test --unshare-all Create a more isolated container, with it's own init system, this will act very similar to a full LXC container: distrobox create --name unshared-init-test --unshare-all --init --image fedora:latest Use environment variables to specify container name, image and container manager: DBX_CONTAINER_MANAGER="docker" DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test-alpine DBX_CONTAINER_IMAGE=alpine distrobox-create # ENVIRONMENT VARIABLES DBX_CONTAINER_ALWAYS_PULL DBX_CONTAINER_CUSTOM_HOME DBX_CONTAINER_HOME_PREFIX DBX_CONTAINER_IMAGE DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_CONTAINER_HOSTNAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM DBX_CONTAINER_HOME_PREFIX defines where containers' home directories will be located. If you define it as ~/dbx then all future containers' home directories will be ~/dbx/$container_name # EXTRA The `--additional-flags` or `-a` is useful to modify defaults in the container creations. For example: distrobox create -i docker.io/library/archlinux -n dev-arch podman container inspect dev-arch | jq '.[0].HostConfig.PidsLimit' 2048 distrobox rm -f dev-arch distrobox create -i docker.io/library/archlinux -n dev-arch --volume $CBL_TC:/tc --additional-flags "--pids-limit -1" podman container inspect dev-arch | jq '.[0].HostConfig,.PidsLimit' 0 Additional volumes can be specified using the `--volume` flag. This flag follows the same standard as `docker` and `podman` to specify the mount point so `--volume SOURCE_PATH:DEST_PATH:MODE`. distrobox create --image docker.io/library/archlinux --name dev-arch --volume /usr/share/:/var/test:ro During container creation, it is possible to specify (using the additional-flags) some environment variables that will persist in the container and be independent from your environment: distrobox create --image fedora:35 --name test --additional-flags "--env MY_VAR=value" The `--init-hooks` is useful to add commands to the entrypoint (init) of the container. This could be useful to create containers with a set of programs already installed, add users, groups. distrobox create --image fedora:35 --name test --init-hooks "dnf groupinstall -y \"C Development Tools and Libraries\"" The `--init` is useful to create a container that will use its own separate init system within. For example using: distrobox create -i docker.io/almalinux/8-init --init --name test distrobox create -i docker.io/library/debian --additional-packages "systemd" --init --name test-debian Inside the container we will be able to use normal systemd units: ~$ distrobox enter test user@test:~$ sudo systemctl enable --now sshd user@test:~$ sudo systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-01-28 22:54:50 CET; 17s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 291 (sshd) Note that enabling `--init` **will disable host's process integration**. From within the container you will not be able to see and manage host's processes. This is needed because `/sbin/init` must be pid 1. If you want to use a non-pre-create image, you'll need to add the additional package: distrobox create -i alpine:latest --init --additional-packages "openrc" -n test distrobox create -i debian:stable --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test distrobox create -i ubuntu:22.04 --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test distrobox create -i archlinux:latest --init --additional-packages "systemd" -n test distrobox create -i registry.opensuse.org/opensuse/tumbleweed:latest --init --additional-packages "systemd" -n test distrobox create -i registry.fedoraproject.org/fedora:39 --init --additional-packages "systemd" -n test The `--init` flag is useful to create system containers, where the container acts more similar to a full VM than an application-container. Inside you'll have a separate init, user-session, daemons and so on. The `--home` flag let's you specify a custom HOME for the container. Note that this will NOT prevent the mount of the host's home directory, but will ensure that configs and dotfiles will not litter it. The `--root` flag will let you create a container with real root privileges. At first `enter` the user will be required to setup a password. This is done in order to not enable passwordless sudo/su, in a **rootful** container, this is needed because **in this mode, root inside the container is also root outside the container!** The `--absolutely-disable-root-password-i-am-really-positively-sure` will skip user password setup, leaving it blank. **This is genuinely dangerous and you really, positively should NOT enable this**. From version 1.4.0 of distrobox, when you create a new container, it will also generate an entry in the applications list. ## NVidia integration If your host has an NVidia gpu, with installed proprietary drivers, you can integrate them with the guests by using the `--nvidia` flag: `distrobox create --nvidia --image ubuntu:latest --name ubuntu-nvidia` Be aware that **this is not compatible with non-glibc systems** and **needs somewhat newer distributions to work**. This feature was tested working on: - Almalinux - Archlinux - Centos 7 and newer - Clearlinux - Debian 10 and newer - OpenSUSE Leap - OpenSUSE Tumbleweed - Rockylinux - Ubuntu 18.04 and newer - Void Linux (glibc) distrobox-1.8.1.2/docs/usage/distrobox-enter.md000066400000000000000000000063651474517124600214310ustar00rootroot00000000000000 # NAME distrobox enter distrobox-enter # DESCRIPTION distrobox-enter takes care of entering the container with the name specified. Default command executed is your SHELL, but you can specify different shells or entire commands to execute. If using it inside a script, an application, or a service, you can specify the --headless mode to disable tty and interactivity. # SYNOPSIS **distrobox enter** --name/-n: name for the distrobox default: my-distrobox --/-e: end arguments execute the rest as command to execute at login default: default ${USER}'s shell --no-tty/-T: do not instantiate a tty --no-workdir/-nw: always start the container from container's home directory --additional-flags/-a: additional flags to pass to the container manager command --help/-h: show this message --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --dry-run/-d: only print the container manager command generated --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES Enter a distrobox named "example" distrobox-enter example Enter a distrobox specifying a command distrobox-enter --name fedora-toolbox-35 -- bash -l distrobox-enter my-alpine-container -- sh -l Use additional podman/docker/lilipod flags while entering a distrobox distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l Specify additional environment variables while entering a distrobox distrobox-enter --additional-flags "--env MY_VAR=value" --name test -- bash -l MY_VAR=value distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l You can also use environment variables to specify container manager and container name: DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-enter # ENVIRONMENT VARIABLES DBX_CONTAINER_NAME DBX_CONTAINER_MANAGER DBX_SKIP_WORKDIR DBX_SUDO_PROGRAM # EXTRA This command is used to enter the distrobox itself. Personally, I just create multiple profiles in my `gnome-terminal` to have multiple distros accessible. The `--additional-flags` or `-a` is useful to modify default command when executing in the container. For example: distrobox enter -n dev-arch --additional-flags "--env my_var=test" -- printenv &| grep my_var my_var=test This is possible also using normal env variables: my_var=test distrobox enter -n dev-arch --additional-flags -- printenv &| grep my_var my_var=test If you'd like to enter a rootful container having distrobox use a program other than 'sudo' to run podman/docker/lilipod as root, such as 'pkexec' or 'doas', you may specify it with the `DBX_SUDO_PROGRAM` environment variable. For example, to use 'doas' to enter a rootful container: DBX_SUDO_PROGRAM="doas" distrobox enter -n container --root Additionally, in one of the config file paths that distrobox supports, such as `~/.distroboxrc`, you can also append the line `distrobox_sudo_program="doas"` (for example) to always run distrobox commands involving rootful containers using 'doas'. distrobox-1.8.1.2/docs/usage/distrobox-ephemeral.md000066400000000000000000000023741474517124600222520ustar00rootroot00000000000000 # NAME distrobox ephemeral distrobox-ephemeral # DESCRIPTION distrobox-ephemeral creates a temporary distrobox that is automatically destroyed when the command is terminated. # SYNOPSIS **distrobox ephemeral** --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --help/-h: show this message --/-e: end arguments execute the rest as command to execute at login default: default ${USER}'s shell --version/-V: show version # EXAMPLES distrobox-ephemeral --image alpine:latest -- cat /etc/os-release distrobox-ephemeral --root --verbose --image alpine:latest --volume /opt:/opt You can also use [flags from **distrobox-create**](distrobox-create.md) to customize the ephemeral container to run. # SEE ALSO distrobox-create --help man distrobox-create # ENVIRONMENT VARIABLES distrobox-ephemeral calls distrobox-create, SEE ALSO distrobox-create(1) for a list of supported environment variables to use. distrobox-1.8.1.2/docs/usage/distrobox-export.md000066400000000000000000000074441474517124600216340ustar00rootroot00000000000000 # NAME distrobox-export # DESCRIPTION **Application and binary exporting** distrobox-export takes care of exporting an app or a binary from the container to the host. The exported app will be easily available in your normal launcher and it will automatically be launched from the container it is exported from. # SYNOPSIS **distrobox-export** --app/-a: name of the application to export or absolute path to desktopfile to export --bin/-b: absolute path of the binary to export --list-apps: list applications exported from this container --list-binaries list binaries exported from this container, use -ep to specify custom paths to search --delete/-d: delete exported application or binary --export-label/-el: label to add to exported application name. Use "none" to disable. Defaults to (on \$container_name) --export-path/-ep: path where to export the binary --extra-flags/-ef: extra flags to add to the command --enter-flags/-nf: flags to add to distrobox-enter --sudo/-S: specify if the exported item should be run as sudo --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version You may want to install graphical applications or CLI tools in your distrobox. Using `distrobox-export` from **inside** the container will let you use them from the host itself. # EXAMPLES distrobox-export --app mpv [--extra-flags "flags"] [--delete] [--sudo] distrobox-export --bin /path/to/bin [--export-path ~/.local/bin] [--extra-flags "flags"] [--delete] [--sudo] **App export example** distrobox-export --app abiword This tool will simply copy the original `.desktop` files along with needed icons, add the prefix `/usr/local/bin/distrobox-enter -n distrobox_name -e ...` to the commands to run, and save them in your home to be used directly from the host as a normal app. distrobox-export --app /opt/application/my-app.desktop This will skip searching for the desktopfile in canonical paths, and just use the provided file path. **Binary export example** distrobox-export --bin /usr/bin/code --extra-flags "--foreground" --export-path $HOME/.local/bin In the case of exporting binaries, you will have to specify **where** to export it (`--export-path`) and the tool will create a little wrapper script that will `distrobox-enter -e` from the host, the desired binary. This can be handy with the use of `direnv` to have different versions of the same binary based on your `env` or project. The exported binaries will be exported in the "--export-path" of choice as a wrapper script that acts naturally both on the host and in the container. **Additional flags** You can specify additional flags to add to the command, for example if you want to export an electron app, you could add the "--foreground" flag to the command: distrobox-export --app atom --extra-flags "--foreground" distrobox-export --bin /usr/bin/vim --export-path ~/.local/bin --extra-flags "-p" This works for binaries and apps. Extra flags are only used then the exported app or binary is used from the host, using them inside the container will not include them. **Unexport** The option "--delete" will un-export an app or binary distrobox-export --app atom --delete distrobox-export --bin /usr/bin/vim --export-path ~/.local/bin --delete **Run as root in the container** The option "--sudo" will launch the exported item as root inside the distrobox. **Notes** Note you can use --app OR --bin but not together. ![app-export](https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png) NOTE: some electron apps such as vscode and atom need additional flags to work from inside the container, use the `--extra-flags` option to provide a series of flags, for example: `distrobox-export --app atom --extra-flags "--foreground"` distrobox-1.8.1.2/docs/usage/distrobox-generate-entry.md000066400000000000000000000016141474517124600232350ustar00rootroot00000000000000 # NAME distrobox generate-entry # DESCRIPTION distrobox-generate-entry will create a desktop icon for one of the available distroboxes. This will be then deleted when you remove the matching distrobox. # SYNOPSIS **distrobox generate-entry** --help/-h: show this message --all/-a: perform for all distroboxes --delete/-d: delete the entry --icon/-i: specify a custom icon [/path/to/icon] (default auto) --root/-r: perform on rootful distroboxes --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES Generate an entry for a container distrobox generate-entry my-container-name Specify a custom icon for the entry distrobox generate-entry my-container-name --icon /path/to/icon.png Generate an entry for all distroboxes distrobox generate-entry --all Delete an entry distrobox generate-entry container-name --delete distrobox-1.8.1.2/docs/usage/distrobox-host-exec.md000066400000000000000000000025261474517124600222060ustar00rootroot00000000000000 # NAME distrobox-host-exec # DESCRIPTION distrobox-host-exec lets one execute command on the host, while inside of a container. Under the hood, distrobox-host-exec uses `host-spawn` a project that lets us execute commands back on the host. If the tool is not found the user will be prompted to install it. # SYNOPSIS Just pass to "distrobox-host-exec" any command and all its arguments, if any. --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version --yes/-Y: Automatically answer yes to prompt: host-spawn will be installed on the guest system if host-spawn is not detected. This behaviour is default when running in a non-interactive shell. If no command is provided, it will execute "$SHELL". Alternatively, use symlinks to make `distrobox-host-exec` execute as that command: ~$: ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman ~$: ls -l /usr/local/bin/podman lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec ~$: podman version ...this is executed on host... # EXAMPLES distrobox-host-exec ls distrobox-host-exec bash -l distrobox-host-exec flatpak run org.mozilla.firefox distrobox-host-exec podman ps -a distrobox-1.8.1.2/docs/usage/distrobox-init.md000066400000000000000000000023741474517124600212530ustar00rootroot00000000000000 # NAME distrobox-init # DESCRIPTION **Init the distrobox (not to be launched manually)** distrobox-init is the entrypoint of a created distrobox. Note that this HAS to run from inside a distrobox, will not work if you run it from your host. **This is not intended to be used manually, but instead used by distrobox-create to set up the container's entrypoint.** distrobox-init will take care of installing missing dependencies (eg. sudo), set up the user and groups, mount directories from the host to ensure the tight integration. # SYNOPSIS **distrobox-init** --name/-n: user name --user/-u: uid of the user --group/-g: gid of the user --home/-d: path/to/home of the user --help/-h: show this message --additional-packages: packages to install in addition --init/-I: whether to use or not init --pre-init-hooks: commands to execute prior to init --nvidia: try to integrate host's nVidia drivers in the guest --upgrade/-U: run init in upgrade mode --verbose/-v: show more verbosity --version/-V: show version --: end arguments execute the rest as command to execute during init # EXAMPLES distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user distrobox-init --upgrade distrobox-1.8.1.2/docs/usage/distrobox-list.md000066400000000000000000000020141474517124600212520ustar00rootroot00000000000000 # NAME distrobox list distrobox-list # DESCRIPTION distrobox-list lists available distroboxes. It detects them and lists them separately from the rest of normal containers. # SYNOPSIS **distrobox list** --help/-h: show this message --no-color: disable color formatting --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES distrobox-list You can also use environment variables to specify container manager DBX_CONTAINER_MANAGER="docker" distrobox-list # ENVIRONMENT VARIABLES DBX_CONTAINER_MANAGER DBX_SUDO_PROGRAM ![image](https://user-images.githubusercontent.com/598882/147831082-24b5bc2e-b47e-49ac-9b1a-a209478c9705.png) distrobox-1.8.1.2/docs/usage/distrobox-rm.md000066400000000000000000000020471474517124600207230ustar00rootroot00000000000000 # NAME distrobox rm distrobox-rm # DESCRIPTION distrobox-rm delete one of the available distroboxes. # SYNOPSIS **distrobox rm** --all/-a: delete all distroboxes --force/-f: force deletion --rm-home: remove the mounted home if it differs from the host user's one --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --help/-h: show this message --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES distrobox-rm container-name [--force] [--all] You can also use environment variables to specify container manager and name: DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-rm # ENVIRONMENT VARIABLES DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM distrobox-1.8.1.2/docs/usage/distrobox-stop.md000066400000000000000000000022521474517124600212700ustar00rootroot00000000000000 # NAME distrobox stop distrobox-stop # DESCRIPTION distrobox-stop stop a running distrobox. Distroboxes are left running, even after exiting out of them, so that subsequent enters are really quick. This is how they can be stopped. # SYNOPSIS **distrobox stop** --all/-a: stop all distroboxes --yes/-Y: non-interactive, stop without asking --help/-h: show this message --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES distrobox-stop container-name1 container-name2 distrobox-stop container-name distrobox-stop --all You can also use environment variables to specify container manager and name: DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-stop # ENVIRONMENT VARIABLES DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM distrobox-1.8.1.2/docs/usage/distrobox-upgrade.md000066400000000000000000000032331474517124600217320ustar00rootroot00000000000000 # NAME distrobox-upgrade # DESCRIPTION distrobox-upgrade will enter the specified list of containers and will perform an upgrade using the container's package manager. # SYNOPSIS **distrobox upgrade** --help/-h: show this message --all/-a: perform for all distroboxes --running: perform only for running distroboxes --root/-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over "sudo distrobox" (note: if using a program other than 'sudo' for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or 'distrobox_sudo_program' config variable) --verbose/-v: show more verbosity --version/-V: show version # EXAMPLES Upgrade all distroboxes distrobox-upgrade --all Upgrade all running distroboxes distrobox-upgrade --all --running Upgrade a specific distrobox distrobox-upgrade alpine-linux Upgrade a list of distroboxes distrobox-upgrade alpine-linux ubuntu22 my-distrobox123 **Automatically update all distro** You can create a systemd service to perform distrobox-upgrade automatically, this example shows how to run it daily: ~/.config/systemd/user/distrobox-upgrade.service [Unit] Description=distrobox-upgrade Automatic Update [Service] Type=simple ExecStart=distrobox-upgrade --all StandardOutput=null ~/.config/systemd/user/distrobox-upgrade.timer [Unit] Description=distrobox-upgrade Automatic Update Trigger [Timer] OnBootSec=1h OnUnitInactiveSec=1d [Install] WantedBy=timers.target Then simply do a `systemctl --user daemon-reload && systemctl --user enable --now distrobox-upgrade.timer` distrobox-1.8.1.2/docs/usage/usage.md000066400000000000000000000013401474517124600173710ustar00rootroot00000000000000 - [Distrobox](../README.md) - [Outside the distrobox](#outside-the-distrobox) - [distrobox-assemble](distrobox-assemble.md) - [distrobox-create](distrobox-create.md) - [distrobox-enter](distrobox-enter.md) - [distrobox-ephemeral](distrobox-ephemeral.md) - [distrobox-list](distrobox-list.md) - [distrobox-rm](distrobox-rm.md) - [distrobox-stop](distrobox-stop.md) - [distrobox-upgrade](distrobox-upgrade.md) - [distrobox-generate-entry](distrobox-generate-entry.md) - [Inside the distrobox](#inside-the-distrobox) - [distrobox-export](distrobox-export.md) - [distrobox-host-exec](distrobox-host-exec.md) - [distrobox-init](distrobox-init.md) distrobox-1.8.1.2/docs/useful_tips.md000066400000000000000000001011131474517124600175220ustar00rootroot00000000000000- [Distrobox](README.md) - [Launch a distrobox from your applications list](#launch-a-distrobox-from-your-applications-list) - [Create a distrobox with a custom HOME directory](#create-a-distrobox-with-a-custom-home-directory) - [Mount additional volumes in a distrobox](#mount-additional-volumes-in-a-distrobox) - [Use a different shell than the host](#use-a-different-shell-than-the-host) - [Run the container with real root](#run-the-container-with-real-root) - [Run Debian/Ubuntu container behind proxy](#run-debianubuntu-container-behind-proxy) - [Using a command other than sudo to run a rootful container](#using-a-command-other-than-sudo-to-run-a-rootful-container) - [Duplicate an existing distrobox](#duplicate-an-existing-distrobox) - [Export to the host](#export-to-the-host) - [Execute commands on the host](#execute-commands-on-the-host) - [Resolve "Error cannot open display: :0"](#resolve-error-cannot-open-display-0) - [Using init system inside a distrobox](#using-init-system-inside-a-distrobox) - [Using Docker inside a Distrobox](#using-docker-inside-a-distrobox) - [Using Podman inside a Distrobox](#using-podman-inside-a-distrobox) - [Using LXC inside a Distrobox](#using-lxc-inside-a-distrobox) - [Using Waydroid inside a Distrobox](#using-waydroid-inside-a-distrobox) - [Manual Installation](#manual-installation) - [Automated Installation](#automated-installation) - [Using host's Podman or Docker inside a Distrobox](#using-hosts-podman-or-docker-inside-a-distrobox) - [Using distrobox as main cli](#using-distrobox-as-main-cli) - [Using a different architecture](#using-a-different-architecture) - [Using the GPU inside the container](#using-the-gpu-inside-the-container) - [Using nvidia-container-toolkit](#using-nvidia-container-toolkit) - [Slow creation on podman and image size getting bigger with distrobox create](#slow-creation-on-podman-and-image-size-getting-bigger-with-distrobox-create) - [Container save and restore](#container-save-and-restore) - [Check used resources](#check-used-resources) - [Pre-installing additional package repositories](#pre-installing-additional-package-repositories) - [Apply resource limitation on the fly](#apply-resource-limitation-on-the-fly) - [Copy/yank text to host clipboard](#copy-text-to-host-clipboard) --- # Useful tips ## Detect if you're in a distrobox Being this tightly integrated, it may be useful to know when you're in a container or not. To detect you can just check the environment variable `"${CONTAINER_ID}"`, if set, you're in a distrobox. ## Launch a distrobox from your applications list Starting from distrobox 1.4.0, containers created will automatically generate a desktop entry. For containers generated with older versions, you can use: `distrobox generate-entry your-container-name` To delete it: `distrobox generate-entry your-container-name --delete` ## Create a distrobox with a custom HOME directory `distrobox create` supports the use of the `--home` flag, as specified in the usage [HERE](./usage/distrobox-create.md) Simply use: `distrobox create --name test --image your-chosen-image:tag --home /your/custom/home` ## Mount additional volumes in a distrobox `distrobox create` supports the use of the `--volume` flag, as specified in the usage [HERE](./usage/distrobox-create.md) Simply use: `distrobox create --name test --image your-chosen-image:tag --volume /your/custom/volume/path` ## Use a different shell than the host From version 1.4.0, `distrobox enter` will execute the login shell of the container's user by default. So, just change the default shell in the container using: `chsh -s /bin/shell-to-use` exit and log back in the container. For version older than 1.4.0, distrobox will pick up the shell from the host and use it inside the container. If you want a different one you can use: ```sh SHELL=/bin/zsh distrobox create -n test SHELL=/bin/zsh distrobox enter test ``` ## Run the container with real root When using podman, distrobox will prefer to use rootless containers. In this mode the `root` user inside the container is **not** the real `root` user of the host. But it still has the same privileges as your normal `$USER`. But what if you really really need those `root` privileges even inside the container? Running `sudo distrobox` is not supported, instead, it is better to simply use normal command with the `--root` or `-r` flag, so that distrobox can still integrate better with your `$USER`. ```console :~$ distrobox create --name test --image your-chosen-image:tag --root ``` Another use case, what if you want or need to run distrobox with the root user, in a login shell? Before the 1.4.3 release, it wasn't possible. We couldn't make a distinction between someone running distrobox via `sudo` from someone logged in as the root user in a shell. Now things are as easy as it would be if you were creating a rootless container: ```console :~# distrobox create --name your-container --pull --image your-chosen-image:tag` ``` And: ```console :~# distrobox enter your-container` ``` We trust you already know the implications of running distrobox, as well as anything else, with the root user and that with great power comes great responsibilities. ## Run Debian/Ubuntu container behind proxy It might be that you're trying to set-up your distrobox, but you're stuck behind a proxy. A simple solution can be crafted using `pre-init-hooks` ```console proxy=http://my_proxy.domain.example:3128 t="echo 'Acquire::http::Proxy \\\""${proxy}"\\\";' > /etc/apt/apt.conf.d/proxy.conf; echo 'Acquire::https::Proxy \\\""${proxy}"\\\";' >> /etc/apt/apt.conf.d/proxy.conf;" http_proxy="${proxy}" distrobox create --image debian --name deb --pre-init-hooks "${t}" ``` This way, we're configuring `apt` before using it. ## Using a command other than sudo to run a rootful container When using the `--root` option with Distrobox, internally, it uses `sudo` to be able to interact with the rootful container through podman/docker, which will prompt for a valid root password on the terminal. However, some users might prefer to use a command other than `sudo` in order to authenticate as root; for example, `pkexec` could be used to display a graphical authentication prompt. If you need this, make sure to specify the desired command through the `DBX_SUDO_PROGRAM` environment variable (supported by most `distrobox` subcommands), alongside `--root`. Sample usage: `DBX_SUDO_PROGRAM="pkexec" distrobox create --name test --image your-chosen-image:tag --root` Additionally, you may also have any further distrobox commands use `pkexec` (for example) for rootful containers by appending the line `distrobox_sudo_program="pkexec"` (replace `pkexec` with the desired program) to one of the config file paths that distrobox supports; for example, to '~/.distroboxrc'. It is also worth noting that, if your sudo program does not have persistence (i.e., cooldown before asking for the root password again after a successful authentication) configured, then you may have to enter the root password multiple times, as distrobox calls multiple podman/docker commands under the hood. In order to avoid this, it is recommended to either configure your sudo program to be persistent, or, if that's not feasible, use `sudo` whenever possible (which has persistence enabled by default). However, if you'd like to have a graphical authentication prompt, but would also like to benefit from `sudo`'s persistence (to avoid prompting for a password multiple times in a row), you may specify `sudo --askpass` as the sudo program. The `--askpass` option makes sudo launch the program in the path (or name, if it is in `$PATH`) specified by the `SUDO_ASKPASS` environment variable, and uses its output (to stdout) as the password input to authenticate as root. If unsuccessful, it launches the program again, until either it outputs the correct password, the user cancels the operation, or a limit of amount of authentication attempts is reached. So, for example, assume you'd like to use `zenity --password` to prompt for the sudo password. You may save a script, e.g. `my-password-prompt`, to somewhere in your machine - say, to `~/.local/bin/my-password-prompt` - with the following contents: ```sh #!/bin/sh zenity --password ``` Make it executable using, for example, `chmod` (in the example, by running `chmod +x ~/.local/bin/my-password-prompt` - replace with the path to your script). Afterwards, make sure `SUDO_ASKPASS` is set to your newly-created script's path, and also ensure `DBX_SUDO_PROGRAM` is set to `sudo --askpass`, and you should be good to go. For example, running the below command should only prompt the root authentication GUI once throughout the whole process: `SUDO_ASKPASS="$HOME/.local/bin/my-password-prompt" DBX_SUDO_PROGRAM="sudo --askpass" distrobox-ephemeral -r` You may make these options persist by specifying those environment variables in your shell's rc file (such as `~/.bashrc`). Note that this will also work if `distrobox_sudo_program="sudo --askpass"` is specified in one of distrobox's config files (such as `~/.distroboxrc`), alongside `export SUDO_ASKPASS="/path/to/password/prompt/program"` (for example - however, this last line is usually better suited to your shell's rc file). ## Duplicate an existing distrobox It can be useful to just duplicate an already set up environment, to do this, `distrobox create` supports the use of the `--clone` flag, as specified in the usage [HERE](./usage/distrobox-create.md) Simply use: `distrobox create --name test --clone name-of-distrobox-to-clone` ## Export to the host Distrobox supports exporting to the host either binaries or applications. [Head over the usage page to have an explanation and examples.](usage/distrobox-export.md) ## Execute commands on the host You can check this little post about [executing commands on the host.](posts/execute_commands_on_host.md) ## Resolve "Error cannot open display: :0" If your container is not able to connect to your host xserver, make sure to install `xhost` on the host machine and run `xhost +si:localuser:$USER`. If you wish to enable this functionality on future reboots add the above command to your `~/.distroboxrc` ```console -$ cat ~/.distroboxrc xhost +si:localuser:$USER >/dev/null ``` ## Using init system inside a distrobox You can use an init system inside the container. You can either use supported pre-created images, or have to add additional packages. Example of such images are: - docker.io/almalinux/8-init - registry.access.redhat.com/ubi7/ubi-init - registry.access.redhat.com/ubi8/ubi-init - registry.access.redhat.com/ubi9/ubi-init - registry.opensuse.org/opensuse/leap:latest - registry.opensuse.org/opensuse/tumbleweed:latest You can use such feature using: `distrobox create -i docker.io/almalinux/8-init --init --name test` If you want to use a non-pre-create image, you'll need to add the additional package: ```console distrobox create -i alpine:latest --init --additional-packages "openrc" -n test distrobox create -i debian:stable --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test distrobox create -i ubuntu:22.04 --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test distrobox create -i archlinux:latest --init --additional-packages "systemd" -n test distrobox create -i registry.opensuse.org/opensuse/tumbleweed:latest --init --additional-packages "systemd" -n test distrobox create -i registry.fedoraproject.org/fedora:39 --init --additional-packages "systemd" -n test ``` Note however that in this mode, you'll not be able to access host's processes from within the container. Result: Systemd running on openSUSE ![image](https://github.com/89luca89/distrobox/assets/598882/aa70ce88-2ca6-4266-b530-f51956bd4a0a) OpenRC running on Alpine Linux ![image](https://github.com/89luca89/distrobox/assets/598882/eb6226d5-6992-47d8-a42b-f3e90e5809d2) Example use: ```shell ~$ distrobox create -i docker.io/almalinux/8-init --init --name test user@test:~$ sudo systemctl enable --now sshd user@test:~$ sudo systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (sshd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-01-28 22:54:50 CET; 17s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 291 (sshd) ``` ## Using Docker inside a Distrobox You may want to run a separate instance of docker inside your container. In order to do this, create a [container with an init system](#using-init-system-inside-a-distrobox) using rootful Podman or Docker and using the **unshare-all** flag. Example: ```sh distrobox create --root \ --image registry.opensuse.org/opensuse/distrobox:latest \ --additional-packages "systemd docker" \ --init \ --unshare-all ``` Inside the container: ```console luca-linux@tumbleweed:~$ sudo systemctl enable --now docker luca-linux@tumbleweed:~$ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled) Active: active (running) since Sat 2023-08-26 19:21:34 UTC; 3min 47s ago Docs: http://docs.docker.com Main PID: 1924 (dockerd) CPU: 1.268s CGroup: /system.slice/docker-b63c525a32a313837146cfb00ed09c151eabd3137ad62779f47d3924c92f7b16.scope/system.slice/docker.service ├─1924 /usr/bin/dockerd --add-runtime oci=/usr/sbin/docker-runc └─1942 containerd --config /var/run/docker/containerd/containerd.toml --log-level warn Aug 26 19:21:31 tumbleweed.localhost dockerd[1924]: time="2023-08-26T19:21:31.188589166Z" level=error msg="failed to mount overlay: invalid argument" storage-driver=overlay2 Aug 26 19:21:31 tumbleweed.localhost dockerd[1924]: time="2023-08-26T19:21:31.391206840Z" level=warning msg="WARNING: No swap limit support" Aug 26 19:22:54 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:22:54.385157019Z" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1 Aug 26 19:22:54 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:22:54.385241039Z" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1 Aug 26 19:22:54 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:22:54.385250887Z" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1 Aug 26 19:22:54 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:22:54.385411802Z" level=info msg="starting signal loop" namespace=moby path=/run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/bd4cb19537b4c39131b084e04> Aug 26 19:23:16 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:16.575589748Z" level=error msg="failed to enable controllers ([cpuset cpu io memory hugetlb pids rdma misc])" error="failed to write subtree controllers [cpuset cp> Aug 26 19:23:16 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:16.575764283Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/system.slice/docker-b63c525a32a3> Aug 26 19:23:44 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:44.744144975Z" level=warning msg="cleaning up after shim disconnected" id=bd4cb19537b4c39131b084e04c354712bac71c6d1ced33d6d1d6933ada0507cc namespace=moby Aug 26 19:23:44 tumbleweed.localhost dockerd[1942]: time="2023-08-26T19:23:44.754027382Z" level=warning msg="cleanup warnings time=\"2023-08-26T19:23:44Z\" level=info msg=\"starting signal loop\" namespace=moby pid=2221 runtime=io.contain> luca-linux@tumbleweed:~$ sudo docker run --rm -ti alpine / # ``` ## Using Podman inside a Distrobox You may want to run a separate instance of podman inside your container. In order to do this, create a container using using rootful Podman or Docker and using the **unshare-all** flag. Example: ```sh distrobox create --root \ --image registry.opensuse.org/opensuse/distrobox:latest \ --additional-packages "podman" \ --unshare-all ``` Inside it install podman, and add subuids for the user: ```sh sudo usermod --add-subuids 10000-65536 $USER sudo usermod --add-subgids 10000-65536 $USER cat << EOF | sudo tee /etc/containers/containers.conf [containers] netns="host" userns="host" ipcns="host" utsns="host" cgroupns="host" log_driver = "k8s-file" [engine] cgroup_manager = "cgroupfs" events_logger="file" EOF ``` Then you'll be able to use both rootful and rootless podman inside the container: ```console luca-linux@tumbleweed:~> podman run --rm -ti alpine / # luca-linux@tumbleweed:~> sudo podman run --rm -ti alpine / # ``` ## Using LXC inside a Distrobox You may want to run an LXC instance inside your container. In order to do this, create a [container with an init system](#using-init-system-inside-a-distrobox) using the **unshare-all** flag, this works with either docker, rootful podman, or rootless podman. Example: ```sh distrobox create --root \ --image registry.opensuse.org/opensuse/distrobox:latest \ --additional-packages "systemd lxc" \ --init \ --unshare-all ``` Inside the container we will need to first setup the lxcbr0 network and enable the services: ```console luca-linux@tumbleweed:~> sudo systemctl enable --now lxc-monitord.service lxc-net.service lxc.service lxcfs.service Created symlink /etc/systemd/system/multi-user.target.wants/lxc-monitord.service → /usr/lib/systemd/system/lxc-monitord.service. Created symlink /etc/systemd/system/multi-user.target.wants/lxc-net.service → /usr/lib/systemd/system/lxc-net.service. Created symlink /etc/systemd/system/multi-user.target.wants/lxc.service → /usr/lib/systemd/system/lxc.service. Created symlink /etc/systemd/system/multi-user.target.wants/lxcfs.service → /usr/lib/systemd/system/lxcfs.service. luca-linux@tumbleweed:~> ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host proto kernel_lo valid_lft forever preferred_lft forever 2: tap0: mtu 65520 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether 02:81:bf:43:1e:65 brd ff:ff:ff:ff:ff:ff inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0 valid_lft forever preferred_lft forever inet6 fd00::81:bfff:fe43:1e65/64 scope global dynamic mngtmpaddr proto kernel_ra valid_lft 86309sec preferred_lft 14309sec inet6 fe80::81:bfff:fe43:1e65/64 scope link proto kernel_ll valid_lft forever preferred_lft forever luca-linux@tumbleweed:~> sudo ip link add name lxcbr0 type bridge luca-linux@tumbleweed:~> sudo ip link set dev lxcbr0 up luca-linux@tumbleweed:~> sudo ip link set tap0 master lxcbr0 luca-linux@tumbleweed:~> sudo ip address add 10.0.2.100/24 dev lxcbr0 ``` Then we can proceed with the LXC container creation: ```console luca-linux@tumbleweed:~> sudo lxc-create -n test-nested-lxc -t download [ ... ] # Here do the interactive rootfs choice, I'll use alpine:edge amd64 Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs --- You just created an Alpinelinux edge x86_64 (20230826_13:00) container. luca-linux@tumbleweed:~> sudo lxc-start test-nested-lxc luca-linux@tumbleweed:~> sudo lxc-attach test-nested-lxc / # ps aux PID USER TIME COMMAND 1 root 0:00 /sbin/init 266 root 0:00 /sbin/syslogd -t -n 273 root 0:00 /sbin/openrc default 293 root 0:00 /usr/sbin/crond -c /etc/crontabs -f 300 root 0:00 {networking} /sbin/openrc-run /etc/init.d/networking --lockfd 4 start 301 root 0:00 {openrc-run.sh} /bin/sh /lib/rc/sh/openrc-run.sh /etc/init.d/networking start 347 root 0:00 ifup -i /etc/network/interfaces eth0 367 root 0:00 {dhcp} /bin/sh /usr/libexec/ifupdown-ng/dhcp 372 root 0:00 /sbin/udhcpc -b -R -p /var/run/udhcpc.eth0.pid -i eth0 -x hostname:test-nested-lxc 375 root 0:00 /bin/ash 376 root 0:00 ps aux / # ``` And you have a working LXC inside your Distrobox container. ## Using Waydroid inside a Distrobox Waydroid is a popular solution for running Android applications on Linux using an LXC container. Since these containers run inside a Distrobox, you can also run Waydroid. > **Note**: Wayland and the `binder_linux` module are required at the host level. You can install > the DKMS from the [choff/anbox-modules](https://github.com/choff/anbox-modules) repository. ### Manual Installation To do this, we need a rootful container [with Systemd](#using-init-system-inside-a-distrobox) plus some additional dependencies (tested with Vanilla OS Pico and Debian Sid): - libpam-systemd - curl - kmod - dbus-x11 - iptables - mutter Let's create a rootful and unshared container as follows: ```sh distrobox create --root \ --image ghcr.io/vanilla-os/pico:main \ --additional-packages "systemd libpam-systemd curl kmod dbus-x11 iptables mutter" \ --init \ --unshare-all \ --name waydroid ``` Once it's started with `distrobox enter --root waydroid`, we can proceed with the Waydroid installation from the official repository: ```bash curl --progress-bar --proto '=https' --tlsv1.2 -Sf https://repo.waydro.id/waydroid.gpg --output /usr/share/keyrings/waydroid.gpg echo "deb [signed-by=/usr/share/keyrings/waydroid.gpg] https://repo.waydro.id/ bookworm main" | tee /etc/apt/sources.list.d/waydroid.list sudo apt update sudo apt install waydroid ``` Then proceed with its initialization using: ```bash export XDG_RUNTIME_DIR="/run/host/${XDG_RUNTIME_DIR}" export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/host/$(echo "${DBUS_SESSION_BUS_ADDRESS}" | cut -d '=' -f2-)" waydroid init ``` The above environment variables must be present each time the `waydroid` command is used. ### Automated Installation The [Waydroid image](https://github.com/Vanilla-OS/waydroid-image/blob/main/recipe.yml) from the Vanilla OS Team is designed to streamline the entire setup process. To use it, proceed as follows: ```bash distrobox create --root \ --image ghcr.io/vanilla-os/waydroid:main \ --init \ --unshare-all \ --name waydroid distrobox enter --root waydroid ``` Once started, Waydroid is automatically executed via Systemd. Check for the process to finish using the `systemctl status waydroid-init` command, then start using Waydroid with: ```bash ewaydroid --help ``` Make sure to use the `ewaydroid` command each time you need to work with Waydroid. This command is a wrapper that sets the proper environment variables to make it work with the host D-Bus. ## Using host's Podman or Docker inside a Distrobox You can easily control host's instance of docker or podman, using `distrobox-host-exec` You can use: ```console sudo ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman ``` or ```console sudo ln -s /usr/bin/distrobox-host-exec /usr/local/bin/docker ``` This will create a `podman` or `docker` command inside the distrobox that will transparently execute the command on the host. ## Using distrobox as main cli In case you want (like me) to use your container as the main CLI environment, it comes handy to use `gnome-terminal` profiles to create a dedicated setup for it: ![Screenshot from 2021-12-19 22-29-08](https://user-images.githubusercontent.com/598882/146691460-b8a5bb0a-a83d-4e32-abd0-4a0ff9f50eb7.png) Personally, I just bind `Ctrl-Alt-T` to the Distrobox profile and `Super+Enter` to the Host profile. For other terminals, there are similar features (profiles) or you can set up a dedicated shortcut to launch a terminal directly in the distrobox ## Using a different architecture In case you want to run a container with a different architecture from your host, you can leverage the use of `qemu` and support from podman/docker. Install on your host the following dependencies: - qemu - qemu-user-static - binfmt-support Then you can easily run the image you like: ```console ~$ uname -m x86_64 ~$ distrobox create -i aarch64/fedora -n fedora-arm64 ~$ distrobox enter fedora-arm64 ... user@fedora-arm64:~$ uname -m aarch64 ``` ![image](https://user-images.githubusercontent.com/598882/170837120-9170a9fa-6153-4684-a435-d60a0136b563.png) ## Using the GPU inside the container For Intel and AMD GPUs, the support is baked in, as the containers will install their latest available mesa/dri drivers. For NVidia, you can use the `--nvidia` flag during create, see [distrobox-create](./usage/distrobox-create.md) documentation to discover how to use it. ```console ~$ distrobox create --nvidia --name ubuntu-nvidia --image ubuntu:latest ``` ### Using nvidia-container-toolkit Alternatively from the `--nvidia` flag, you can use NVidia's own [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html). After following the [official guide to set nvidia-ctk up](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html) you can use it from distrobox doing: In case of podman container manager, run: ```console distrobox create --name example-nvidia-toolkit --additional-flags "--gpus all" --image docker.io/nvidia/cuda ``` In case of docker container manager, run: ```console distrobox create --name example-nvidia-toolkit --additional-flags "--gpus all --device=nvidia.com/gpu=all" --image docker.io/nvidia/cuda ``` ## Slow creation on podman and image size getting bigger with distrobox create For rootless podman 3.4.0 and upward, adding this to your `~/.config/containers/storage.conf` file will improve container creation speed and fix issues with images getting bigger when using rootless containers. ```conf [storage] driver = "overlay" [storage.options.overlay] mount_program = "/usr/bin/fuse-overlayfs" ``` Note that this is necessary only on Kernel version older than `5.11` . From version `5.11` onwards native `overlayfs` is supported and reports noticeable gains in performance as explained [HERE](https://www.redhat.com/sysadmin/podman-rootless-overlay) ## Permission problems when using VirtualBox If you have VirtualBox installed on your host, you may encounter some permission problems using **rootless Podman**: ```log Error: unable to start container "XYZ": runc: runc create failed: unable to start container process: error during container init: error mounting "/dev/vboxusb/002/005" to rootfs at "/dev/vboxusb/002/005": lstat /..../dev/vboxusb/002: permission denied: OCI permission denied ``` This is because a rootless container done with `runc` will not port the host's groups into the container. The solution is to install `crun` from your package manager, and recreate your container. crun supports the flag ```sh run.oci.keep_original_groups=1 ``` Which will allow porting the host's group inside the container, thus making it possible for the rootless container to read vbox files. ## Container save and restore To save, export and reuse an already configured container, you can leverage `podman save` or `docker save` and `podman import` or `docker import` to create snapshots of your environment. --- To save a container to an image: with podman: ```sh podman container commit -p distrobox_name image_name_you_choose podman save image_name_you_choose:latest | bzip2 > image_name_you_choose.tar.bz ``` with docker: ```sh docker container commit -p distrobox_name image_name_you_choose docker save image_name_you_choose:latest | gzip > image_name_you_choose.tar.gz ``` This will create a tar.gz of the container of your choice at that exact moment. --- Now you can backup that archive or transfer it to another host, and to restore it just run ```sh podman load < image_name_you_choose.tar.bz2 ``` or ```sh docker load < image_name_you_choose.tar.gz ``` And create a new container based on that image: ```sh distrobox create --image image_name_you_choose:latest --name distrobox_name distrobox enter --name distrobox_name ``` And you're good to go, now you can reproduce your personal environment everywhere in simple (and scriptable) steps. ## Check used resources - You can always check how much space a `distrobox` is taking by using `podman` command: `podman system df -v` or `docker system df -v` ## Pre-installing additional package repositories On Red Hat Enterprise Linux and its derivatives, the amount of packages in the base repositories is limited, and additional packages need to be brought in by enabling additional repositories such as [EPEL](https://docs.fedoraproject.org/en-US/epel/). You can use `--init-hooks` to automate this, but this does not solve the issue for package installations done during initialization itself, e.g. if the shell you use on the host is not available in the default repos (e.g. `fish`). Use the pre-initialization hooks for this: ```shell distrobox create -i docker.io/almalinux/8-init --init --name test --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable powertools && dnf -y install epel-release" ``` ```shell distrobox create -i docker.io/library/almalinux:9 -n alma9 --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable crb && dnf -y install epel-release" ``` ```shell distrobox create -i quay.io/centos/centos:stream9 c9s --pre-init-hooks "dnf -y install dnf-plugins-core && dnf config-manager --enable crb && dnf -y install epel-next-release" ``` ## Apply resource limitation on the fly Podman has `--cpuset-cpus` and `--memory` flags to apply limitation on how much resources a container can use. However, these flags only work during container creation (`podman create` / `podman run`) and not after it's created (`podman exec`, which is used by Distrobox to execute commands inside of container), which means changing resource limitation requires recreation of a container. Nonetheless you can still apply resource limitation using systemd's resource control functionality. It's not recommended to pass resource limitation arguments (e.g. `--cpuset-cpus` and `--memory`) to `distrobox create --additional-flags` as systemd already provides much more flexible resource control functionality. To list all distroboxes and their full IDs: ```bash podman ps --all --no-trunc --format "{{.Names}} {{.ID}} {{.Labels}}" | grep "manager:distrobox" | cut -d " " -f1,2 | column -t ``` - Removing `--all` flag will cause the output to only contain currently running distroboxes To check your container status with `systemctl`: ```bash systemctl --user status libpod-$UUID.scope ``` - Your distrobox needs to be running for its scope to present (e.g. `distrobox enter` before running this command) - Replace `$UUID` with your container's real full ID - To make things easier when tweaking properties, optionally set a environment variable for the current shell: bash/zsh: ```bash UUID=XXXXXXXXX ``` fish: ```fish set UUID XXXXXXXXX ``` Everything provided by `systemd.resource-control` could be applied to your distrobox. For example: To make your distrobox only run on CPU0 and CPU1: ```bash systemctl --user set-property libpod-$UUID.scope AllowedCPUs=0,1 ``` To hard throttle your distrobox to not use above 20% of CPU: ```bash systemctl --user set-property libpod-$UUID.scope CPUQuota=20% ``` To limit your distrobox's maximum amount of memory: ```bash systemctl --user set-property libpod-$UUID.scope MemoryMax=2G ``` To give your distrobox less IO bandwidth when IO is overloaded: ```bash systemctl --user set-property libpod-$UUID.scope IOWeight=1 ``` - `IOWeight` accepts value from `1` to `10000`, higher means more bandwidth. To see all applicable properties: ```bash man systemd.resource-control ``` Changes are transient, meaning you lose the resource limitation properties when distrobox is stopped and restarted. To make certain changes persistent, first check the currently active properties: ```bash systemctl --user status libpod-$UUID.scope ``` Look for the `Drop-In` lines. Something like this should be shown: ```console Drop-In: /run/user/1000/systemd/transient/libpod-45ae38d61c9a636230b2ba89ea07792d662e01cd9ee38d04feb0a994b039a271.scope.d └─50-AllowedCPUs.conf ``` Move the transient overrides to persistent overrides: ```bash mkdir -p ~/.config/systemd/user/libpod-$UUID.scope.d mv --target-directory="$HOME/.config/systemd/user/libpod-$UUID.scope.d" \ "/run/user/$(id -u)/systemd/transient/libpod-$UUID.scope.d/50-AllowedCPUs.conf" ``` - Replace `$(id -u)` with your real user id if it did not get expanded properly. - `50-AllowedCPUs.conf` is only an example. Replace it with something you want to keep persistently. Then reload systemd daemon to apply the changes: ```bash systemctl --user daemon-reload ``` ## Copy text to host clipboard To copy/yank text from the container to the host clipboard you need to install `xsel` in the container for Xorg hosts or `wlroots` for wayland hosts. distrobox-1.8.1.2/extras/000077500000000000000000000000001474517124600152175ustar00rootroot00000000000000distrobox-1.8.1.2/extras/distrobox-example-manifest.ini000066400000000000000000000066141474517124600232010ustar00rootroot00000000000000# This is an example assemble file to show how options are laid out # You generally have a section header, followed by options so: # # [name-of-your-container] # additional_flags="" # additional_packages="" # entry="" # home="" # image="" # start_now="" # init="" # init_hooks="" # nvidia="" # pre_init_hooks="" # pull="" # root="" # unshare_ipc="" # unshare_netns="" # volume="" # ############################################################################### [ generic1] unshare_netns=true unshare_ipc=true # This is a comment! # you can put them how you like [generic2] # Comment additional_packages="git vim tmux" # this will enable nvidia driver integration nvidia=true [generic3] # Comment also here additional_packages="git vim tmux" # Comment home=/tmp/home [arch] additional_packages="git vim tmux nodejs" # lines with spaces, wants quotes home=/tmp/home image=archlinux:latest init=false init_hooks="touch /init-normal" pre_init_hooks="touch /pre-init" pull=true root=false volume=/tmp/test:/run/a /tmp/test:/run/b unshare_netns=true unshare_ipc=true # We can choose to start the container immediately, it's off by default start_now=true ############################################################################### # A more complex example now ############################################################################## [tumbleweed_distrobox] image=registry.opensuse.org/opensuse/distrobox pull=true # Basic utilities for terminal use additional_packages="acpi bash-completion findutils iproute iputils sensors inotify-tools unzip" additional_packages="net-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt-dlp" # Development packages additional_packages="git git-credential-libsecret" additional_packages="patterns-devel-base-devel_basis" additional_packages="ShellCheck ansible-lint clang clang-tools codespell ctags desktop-file-utils gcc golang jq python3" additional_packages="python3-bashate python3-flake8 python3-mypy python3-pipx python3-pycodestyle python3-pyflakes python3-pylint python3-python-lsp-server python3-rstcheck python3-yapf python3-yamllint rustup shfmt" # Gotta work additional_packages="kubernetes-client helm" # Setup golang stuff init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/gopls@latest; init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install sigs.k8s.io/kind@latest; # Add some useful commands from host, to the guest init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/conmon; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/crun; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/flatpak; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/podman; init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open; exported_apps="htop" exported_bins="/usr/bin/htop /usr/bin/git" exported_bins_path="~/.local/bin" distrobox-1.8.1.2/extras/docker-host000077500000000000000000000040121474517124600173640ustar00rootroot00000000000000#!/bin/sh id="$(echo "$@" | grep -Eo ' [a-zA-Z0-9]{64} ' | tr -d ' ')" DOCKER_COMMAND="$(command -v docker 2> /dev/null)" ENV_COMMAND="printenv" # if we're in a flatpak, we fallback to host-spawn if [ -n "${FLATPAK_ID}" ]; then DOCKER_COMMAND="flatpak-spawn --host docker" ENV_COMMAND="flatpak-spawn --host printenv" fi # This little workaround is used to ensure # we use our distrobox to properly enter the container if echo "$@" | grep -q 'exec'; then # we do this procedure only for distroboxes # we will leave regular containers alone. if [ "$(${DOCKER_COMMAND} inspect --type container --format '{{ index .Config.Labels "manager" }}' "${id}")" = "distrobox" ]; then # Ensure that our distrobox containers will use different vscode-servers # by symlinking to different paths # This is necessary because vscode-server will always use $HOME/.vscode-server # so we're forced to do this workaround if [ -n "${id}" ]; then # shellcheck disable=SC2016 ${DOCKER_COMMAND} exec -u "${USER}" "${id}" /bin/sh -c ' if [ ! -L "${HOME}/.vscode-server" ]; then [ -e "${HOME}/.vscode-server" ] && mv "${HOME}/.vscode-server" /var/tmp [ -d /var/tmp/.vscode-server ] || mkdir /var/tmp/.vscode-server ln -sf /var/tmp/.vscode-server "$HOME" elif [ ! -e "${HOME}/.vscode-server" ]; then mkdir /var/tmp/.vscode-server ln -sf /var/tmp/.vscode-server "$HOME" fi ' fi for i; do # interject root:root, we want to be our own user if echo "${i}" | grep -q "root:root"; then set -- "$@" "${USER}:${USER}" shift # inject host's environment elif echo "${i}" | grep -q "exec"; then set -- "$@" "exec" shift # inject host's environment for j in $(${ENV_COMMAND} | grep '=' | grep -Ev ' |"|`|\$' | # refer to distrobox-enter:L454 grep -Ev '^(CONTAINER_ID|HOST|HOSTNAME|HOME|PATH|PROFILEREAD|SHELL|XDG_SEAT|XDG_VTNR|XDG_.*_DIRS|^_)'); do set -- "$@" "--env" set -- "$@" "${j}" done else set -- "$@" "${i}" shift fi done fi fi ${DOCKER_COMMAND} "$@" distrobox-1.8.1.2/extras/install-podman000077500000000000000000000021221474517124600200640ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX echo "This script is deprecated and unsupported" echo "head over to:" echo "" echo "https://github.com/89luca89/distrobox/blob/main/docs/posts/install_podman_static.md" echo "or" echo "https://github.com/89luca89/distrobox/blob/main/docs/posts/install_lilipod_static.md" echo "" echo "for updated instructions on how to install podman-launcher" exit 1 distrobox-1.8.1.2/extras/podman-host000077500000000000000000000040121474517124600173730ustar00rootroot00000000000000#!/bin/sh id="$(echo "$@" | grep -Eo ' [a-zA-Z0-9]{64} ' | tr -d ' ')" PODMAN_COMMAND="$(command -v podman 2> /dev/null)" ENV_COMMAND="printenv" # if we're in a flatpak, we fallback to host-spawn if [ -n "${FLATPAK_ID}" ]; then PODMAN_COMMAND="flatpak-spawn --host podman" ENV_COMMAND="flatpak-spawn --host printenv" fi # This little workaround is used to ensure # we use our distrobox to properly enter the container if echo "$@" | grep -q 'exec'; then # we do this procedure only for distroboxes # we will leave regular containers alone. if [ "$(${PODMAN_COMMAND} inspect --type container --format '{{ index .Config.Labels "manager" }}' "${id}")" = "distrobox" ]; then # Ensure that our distrobox containers will use different vscode-servers # by symlinking to different paths # This is necessary because vscode-server will always use $HOME/.vscode-server # so we're forced to do this workaround if [ -n "${id}" ]; then # shellcheck disable=SC2016 ${PODMAN_COMMAND} exec -u "${USER}" "${id}" /bin/sh -c ' if [ ! -L "${HOME}/.vscode-server" ]; then [ -e "${HOME}/.vscode-server" ] && mv "${HOME}/.vscode-server" /var/tmp [ -d /var/tmp/.vscode-server ] || mkdir /var/tmp/.vscode-server ln -sf /var/tmp/.vscode-server "$HOME" elif [ ! -e "${HOME}/.vscode-server" ]; then mkdir /var/tmp/.vscode-server ln -sf /var/tmp/.vscode-server "$HOME" fi ' fi for i; do # interject root:root, we want to be our own user if echo "${i}" | grep -q "root:root"; then set -- "$@" "${USER}:${USER}" shift # inject host's environment elif echo "${i}" | grep -q "exec"; then set -- "$@" "exec" shift # inject host's environment for j in $(${ENV_COMMAND} | grep '=' | grep -Ev ' |"|`|\$' | # refer to distrobox-enter:L454 grep -Ev '^(CONTAINER_ID|HOST|HOSTNAME|HOME|PATH|PROFILEREAD|SHELL|XDG_SEAT|XDG_VTNR|XDG_.*_DIRS|^_)'); do set -- "$@" "--env" set -- "$@" "${j}" done else set -- "$@" "${i}" shift fi done fi fi ${PODMAN_COMMAND} "$@" distrobox-1.8.1.2/extras/vscode-distrobox000077500000000000000000000006551474517124600204510ustar00rootroot00000000000000#!/bin/sh container_name="$(printf '{"containerName":"%s"}' "$1" | od -A n -t x1 | tr -d "\n\t ")" if command -v code 2> /dev/null > /dev/null; then code_command="code" elif flatpak list | grep -q com.visualstudio.code; then code_command="flatpak run com.visualstudio.code" else echo "vscode not installed" exit 127 fi ${code_command} --folder-uri="vscode-remote://attached-container+${container_name}/$(realpath "${2}")" distrobox-1.8.1.2/icons/000077500000000000000000000000001474517124600150245ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/000077500000000000000000000000001474517124600164635ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/128x128/000077500000000000000000000000001474517124600174205ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/128x128/apps/000077500000000000000000000000001474517124600203635ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/128x128/apps/terminal-distrobox-icon.png000066400000000000000000000116001474517124600256430ustar00rootroot00000000000000PNG  IHDR>a cHRMz&u0`:pQ<bKGD pHYs``kBIDATxyTW?M t;QcĈ%8yI{3oI2gl$$K4jbT QQQw?t7R]so{˯~ IBu|"G@ Q(p8E"G@nl̙`Zk p܇Wn|mIni\R?4A"#"3aب'x0nŦ-dd] M+yK78.$n|*AØ9s(v;~ gϞtrL.(-+aw4J #EB%;Tы_D6q ,JK|]/F{괌=9)3d!{_@fANr}LYi93VߋosJC eLw9_q7*&mCNe\XN_/h~$qʔsǃ"g%9G9=뢶2֢BίVBW" 8V.oYXZV%CmWtBd(mozJ Gm#C]qx7.oIuVm Vh~ -j٦51fFO8ںCoP(+ZY@+?Ûo A^B|. RJpEόl(@«@4PP"A 0QNZы***DTp8jwb82;49;~PoE0iU U 4"D"oNJ+씔h*/zhf4jQj .X.8[*x oDkmڛ,o@;05K\+%^#H"6FKpPU* ",DfF *_17V* /\Y";2hB4tn$4 L<؉SlݺRHNgٺi=hp:EMDAMAҨE5'eSPٳ2n(6lhx?^p6]wsLӤ._˥Ky NN+oGnSz4 ѓ4XVoŽovp8os #'`,z={7Q^^qko+F.\sۛ_sϛIHH INcJ _V@uk1wytCKuC#O&{Rip,7{.}vnϋK.]*;م >݌^'=΢Gbntf3k?HYYW׺wOZ-TTT@r/1_&?]fv$C歘@!UwQQ,Y? a8{}v'*:wH;㈋Ep>l5s/Ɖ`ܙi]{Gb{׃׋\uz}24e; ϛL=;w=<0֯op&MGjZ~8s2ɉۉ_yڴ%30W]ѽ{W>q=wr}u3Ig+@Z ^Q""2ݻ̟`L֬@IisPLfҶp"T|]7 7HICe(.*t\@Iqu(@xJ}|uIHr? ba$M[ٶlv;nF&qx6mMjc_yvLS=!IǏf ufBܰaj%m-)s3bx ֒2 ưMݗQo>i>NUP>x@`@㋋Kxz.>B^=GbaXŋԱ# b~u/^"uN֔99.a@&Aj&N]ſƘ1Ø=kF6=)v9#Bo^m"=R+D{ jh$'w#3;?0ƢՈ 0nhkvھ #52 JF֨Ⱥ/ꄛfVNc̙=! N"5u f|WbhF`Xز+WyÄPQQ;ǎl2z60B29NK]a1Xٳ?zgK/ʛ~Kp!C9~ԱbaP,k I(^JIIV vy;=/9~L|w[&I#ɗv4BC,[.M~,^Y Y0&)i"˖-A׳jzBڳEрZ^_w$p81l6l6{fSep6"B.q_/bҿs2cFbUgRg2e?fҡC{:ʧ)..qܻ@th *fh˄unxZ1n᷺5[d)IN$=/[ȶ_HEVT!r <=,]ҧe/ " 6heQYyl$MMߴ@5n"";rU:mxʞG<ʞA\AfÁCcޣ&{מVZDxT' _!&]+zzzg9,|pƏjšNI>$=Ɠ4 W8BBhA5drP :(WnY06;DlBCCkݼ @~5V#G58o$kťt՛OVA]P"XjѨR$ac "Yu("Əa̩tuXlk6oކ.oPTZVѽGzz- :x'OQPp@ey1yg &2\1߿T{InF17 DQY9U+M7I-j֭YŋKn:H>l9'A4!ׯ?? D4%6kť8]V@s,~I*+ c m@$*+)Dʋ^nP+ ?DQ!DO^d$QQe A۫۵4U?NUe%*>8PjQa2a2q8%u●EFekYf%& QBՠQJUU8% Ӊafw`YXl8VCN/%%l7mılV pӦ4(+|wguyƭ`F ͙f0\074iq1˸cX BuBwJBA_?7/僘Xؠtïؐg6~!FY}쩠^PAi65EAMSӔ_Ud  e| v;)r R!mceIC'¤nD5^q#̟3o%oSyq۱ 00 :a@Gnj0 \ x/>Dc7qź.|׮+W< np^S~""CeXXqGOs@?g1ai࢓N ,^tF>} mv <?G?=Ϟ. l/?~31BCǥZ^n5RpMnrcF5zI 7Vڤ㻀ZFR;+g35?{~X;A|uY+1 RIp؅sqVڻv$LRǴh+5shh;;]{M HKuB=<0 Y-=e_=hC ؏_%q s+ <ݪ-uzΊ ۦ$ng>pTg //H# ?01j(YpI$|@d0hF{ZFGy$'d7msTs h<`,KD|Bt܋^H&D+Ԧ=.~._g 터@ޒK~X5 TOuۥ nBPGb$TªFpcby%ȁM5apm?9C~=^k!Z x 4c+ tX5Q`p],U4wgBH[}]5(p/sxu?1ﳞB^UnyvR_STW]gb0tJG` i'jJe2T&}欇ᓇF垁a.06یz9~Q#K6ΆcPvK&_6/ 5[@,"X1s@wtsCWMv$@kYۜ`! ϿYfgN CS_6ChoGYGW6?,yKW#犻Z-M-5((E/V[' [B^*( a<v]dρ3/6lѠmuۂN-̝!R_􃄫2LޢXvt?ѽ,>r`U[֧_ը&dݮkn;`_c/DJvZˬpcd x}Dpo_О@G*85Y \w3ic}u4P~v]z=Q_̔Ѭ)mT- g%K.Ybw( %R 'R̲&4J<{SfO5ӞO T磝pݦ'w8Iá?{AK$"|u4/K@!T jK'_34-7,-]AQhӇu;5W܄3M+S1й̵ o|*ouI^LW$K,f}TM[*Fm̍ (Ai^IENDB`distrobox-1.8.1.2/icons/hicolor/24x24/000077500000000000000000000000001474517124600172465ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/24x24/apps/000077500000000000000000000000001474517124600202115ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/24x24/apps/terminal-distrobox-icon.png000066400000000000000000000045151474517124600255000ustar00rootroot00000000000000PNG  IHDR cHRMz&u0`:pQ<bKGD X pHYs``kBIDATX՗ytU シ  C@ HLQ %(j*b@RTBT U] F200` 1/y.e~]og Os .@GGia7HTJ0JSi$iD sTHI&8qTPTc%ϥR* @MSd`p?~%$ij dͦvZZA1ƀ*֪4P~jj8; [`L),Xj4,@@falۋg؄VyPZVv3Om-^|&#""+D0@'WVPe tI' -`ZhVl@+-tmcl 졂RJ/oV#cOYb>/C&^߾$P@1%\b a( ݫqSK6Bu+ٵ ׵]a{d<)AT ի^p`bO@l1>yxXv ̽%KL `)`r ܽ Ւ> 輩Rcr@J h;]<@Ta.f3ž2pM-P Y<8aȻ( >=}20> ˎN+f ~q26 tA7A'Rk5V\3j'oΩ"p9P_[ tuo) Y=j |ȝYu[.p4W}6ږVE2J ?0{_dOG>!Rt"o44~v]?]%V~2wBIENDB`distrobox-1.8.1.2/icons/hicolor/256x256/000077500000000000000000000000001474517124600174245ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/256x256/apps/000077500000000000000000000000001474517124600203675ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/256x256/apps/terminal-distrobox-icon.png000066400000000000000000002033721474517124600256600ustar00rootroot00000000000000PNG  IHDR t% cHRMz&u0`:pQ<bKGD X pHYs``kBIDATxw|րFH4  6,+ "" v ( (HK%7 Qzp23ovΜ9s(4F5FhFh4{!Zh4f/D Fh@h4-h4FFhBh4^4F Fh4{!Zh4f/D Fh@h4-h4FFhBh4^4F Fh4{!Zh4f/D F=B kwWFh4BxKk4`a(]k_fj@7|m}5{Ceq__zP[@h`^\p٩!B@-#>Yb?,Bg;olId;9N>?,r@"y~.OT< (U@AX8竜lqy@* |Sοɯ(AGT:4/O?x~=ʩ~_M;T͏WU@yb*_U6jNG5'T>*壘**T u*ܹ\z`:+ߣs"8WPE9|bvR XlI$xQrq1ݍ`>i En{1x @i{ {+/3h =q= wDu:O] '6_TN̂;(eue .mUV7kߩKx9< w1۠NVߪKhF9Ca[F.q at]ȁ g0tP9Cz8݁ e(>+Ë0. a@9P|kρ C.d^p` a C8 !| 22Ǘ&t'?~:rtf@]Cd $2T″9PIĮP Ї>pL.0Nw~F3 Cd\ 4δAz3r ps%Oɑ q 9vy\0Fw` (>9yhnd=>.KkU39^e U3b򀚩fRd5 f34PT |bfߩ|VU0|jjpfj`j60U<j&oJb&AR[V`&/2 Vf1 xQRARxAbZ TsxTLf<0`j+1l5,Tvg2XfL|y<sWMM`9_Lf2," jG?9 fZ؂Up?~PULV#?&Uq&3j=mLb_>^r(j 6N/.xxFBu/F qƟYfG%m{HM?"9d|!s`<ك9(nP:zT)?(5K3/3좲BUU uuo?5 XmMPu"Bgp4Pϑ#9&)r g|=2Q&($G(ZzJt5F5TRcX`` Xܠԇj0nƲƨN  Tڠr>e3 fpoƨKX-(S|H>KAU/g)ˏOv;Bh"jڪU0uwX1T;qn *C[ϷP՝PjzwW'gփ:IQ Rkzp;Oսj40Ky5)|jR&`=6jgp#@=n' Xnu b.֪[junc:P{Dn Ѵ5 xWOo`,0uowf<è Nqۡlt芏* Li %ݘ q}CaQGs9ɼ&g ke= wny1l}meS @S*cI_;|_B(:ϭEVGmsr-o@ I2 sAned B$`;R(  ; jDzA5ǂD9(QĐbYM_bHRI_IM%jRͱN=z9iS;@Kۨ ђJO,. K_ђ*lLzpy˝v.qڽdL2`Ts6!v}&R)AIR 8K8'@PlB:ir˝vup )V[ 3h[e<ˁ3HQ$r}G$@OFVEv=dbzE9JQv*eHcp.CdH"IVORJ5ZfPV-5Fe%Vr7q'!rjV { Q;cl;?c k lTcJ`jZ : 2BXc\~.. c9خNV9xit^ {S{Ny+wڵ*dLۡXNplP}c+;Xn?WJXW[ƩG<·bcH7P9d\E`>s@Kw +xP6tf\2C"*]h a@ VXR[@)rLjxA0|  A4PV5[U/Fc\.y[E~Jwxǁ@|@=;$ Xͷ\Cwv J}q҃xQ*@w\U.*ʼ! kF @".DI5`&qA e(W:^j@ #䱚 CeӀ.Ü~/ 39A>+-e;0S.L`x`-v}À"68KC 3y<# U\E10KY XX(!CV8@<L,wsh4`:1 `5Pf*5_}H4*ng@`04P7<93-LnN=F1V܏`ՠ,UٴyP9žA+0{8*4w:D?.Pzw )5 e+vp"Y` V?9LQ>PR2d"8V;K㸙}@f1 LPL3A%(Z04 yi{$Tw,8qnfFK^v/b a/U1`2PXM'y@2xSE}0Pc@*C 9 (Rv)srmFqs?}yyTs+@1u+,o.r']q5qmcG@wfLM6fF`5,XZ^n s`cE8 *GTZ[BuYCeU<5WK5f]ꏯ?6x' C@ZN1!О6r!]FjY"gب.1f #8(,Ņb٥Q^c̈)_rZ<'wCvhn$">53򳏳~>%1ct'~6Q`dIs#fFwSFcŬf"-َ`fd7{߱͞E*YN?Cfa F6MT;`7FkFy-ҰXfFkFk-45lj};4/ߵo_oat(/01UPMuѝ 'E6JU &# *v1tsyuJ)1BNgԻ[ w?mM;1q4ot}@\3"3i=@m|-$ {H[տe ?~2aĂ[`PT-oX]PkM]m9TV?_}Fř-y9^..ϗ?ݞ]K*?ݞQ4d~~[hUߴn.兟CEy(pY|'e_9n3$$q 7d7w*~<~"FG $Tmm;%Ή{u )S?@.t~yn'7e(/bbG[?#,{;_>)Exԏ?6e [bAQK*_ns< *:X _ƃe6Y nMDHZm_j4?[P'SK=CRjT0xxJ= mf,w{y:~Cl)vL})ь VtS!c!uUK)99}&!}i~i|)s%Vkhf;i8_1Wm_|moo5.2BQ;/; ZR_G*~@fT^`ŦI80D &N0fOvwZ f{vS_1  BmךmmJ~6ԙ/'V+Rm[l}řM>vkCemWgkkM3Ɓ"9Vvw+5Fqlm$GLPj*$:,[PwoYPݯr~͹z5,уﮆ}`g͎;WAtR-+[ ~_:v[OY K /'P}]xk3WN#iu Fi~= GJ_9xyTP JzIu_6TsS]Be %=]v_OoݍZ pƪ}vU7B6tu(j.5 .``Z юq߉@h4{:|pJaeCݶ#BP, *ΪSy T82ww:v 4ӎS!B]cA0=?M`:r8ǁdIUFi9;^btSE`]fM] ݷ/XG>\0j߭}QA$xZݸNX vX^r;:.XVJkfCM 5x`]`]hUi'Hݭh4&h ҕ 99*s!H kVkm|OO5VPX x*P!?tM iCR[Fh$DIL !h5BCBn*^ݭNH4OXkt|}w7? Gs:1`%Y,@NA2xLuUu޲ 9#h}cFh&.]q/2@R@P(u:^4H/Bfw7zl: U*@ըzU{ +V`LAjŀ5F7`4J=SKPS&A>չjX]kP T5xI AV . h(0ZUM""^ @[k4&YV& f%'h  eQkܸ $DRtLG@!h'Vh47&I,@~"S"j xh #@xvw:Wh4 G'vj B+h4Msm!Vfj9 ,LV-heFh4 ON:ǹ6{?V-h Fh4矁Brr`9Zj9&˝e-h4FӒ]B. z>rZFh4h* 0U  (bwws@h4]-Urh4@@oT-ϫe}ez `oA0nPU5F4DVC G`? EFGGsTZoh`oaL}uz=2- (k>&G298@g@^ir,HFpx1 u/%kx]U \\Qe`挜q\GGRR`!xu;2~fKk7h4?ጙƞa5{ 9jTu~t ;NFpF{b!7>X|۹zz8{6 Bu o5{uRZA`zTX9*^US@5mqi4i4MmqU5{ ,`%0 =PB1x;I @ k-r|,߂tgL=(b4_+ ;uΕˀ$ww:zނ"HIr&R \"H*p,s s!%TJYSU/Pg Nz?.;D_yFN=}wC3'4Ry:C!ԏsAK@ZeeU E?ZFoly; [8P0pZ.B꿅?rxIx$G= wc=ޟA̅ZH"]Jך2$F{n0o|Q) mGwBlpO>>ʉm'm~ |7%·@oApM혚gw*JRocxM>,M,._w^@k4Ҡ/lۿ1j<&V.h : ;O/[W@̨̂/!2;qmk@ #DPwk,]T/`sP* tW3@"Hz2 Qux$c$4\2ePwޖo BPy@͛Fmxvy"ŁbV+@ơKubi?=k4?! (i4cK{ &$ABSV j~(OY+@E5`t hxɝLU#Ǎ%8G%X+jK K0FrCm1?dߵnOypiABLs!.n_AI:d~n˒&Q\SjZ j꣺;|50ࡹf@h´WM93fV%H9E|>|@njSmW_NU u xKks DD=J: ȼ"_m2 0E{cD:ԋF: (g5 LSzLO]E`Q "OJ;21p7/ 1gd=41mn~4&涘A0qS!{r?r[̖PqHl7y ?(|lq\R tfvh4(~'0(rIi'ЪuZ[ho1E~ ` NDޒ~`w,Z({#8=Rh^W99#YQixf&<\;?p9!z2ՑG^rz2 (y\=2c@^t <1b;'ŔtO*0_3tIzPURB3Y %iS}40Ue}VmMT<G-~9:DGk"@s |&EmN5}̉?fp "i/?y 3 (e;QO@5+Ipg/MxbVf ڧ%u xǷN' 7N4S'6 ҅6iKm9 Ma-4HILt[%Z"Hخ@8n67@#}VEm~1/nwG@mO?t1fZi~pQ8`kk W pOpINe!0@}O`<8C@]f:Iġ@t`mvwj4(-;=cܼ+ߠͿ'lq@ 96uPK2YRTpoɈS27d_ԩb^%D|LBp7\ߋ3>RJ@zxI.!LA7rX_ &Ap{5CEUsz8xqA&elݱaH[5Z؄Zj-O0V WÁ<+ 5]n0O\˜*."~8DLI~+l~hqsiN7/x%<yT5;HT8 3xI>Te?jߨ}+2@CBc7%5@th~Kxo6a?f+P$+lW`xx'lTs`ė ڴc:<#NqAyNr2Dju{SP4ܛbc_s\Ԇ軁A5,V'@7r5 _]e]J)3Cylz j&l8jm(Pǭ<^$ l2mfW= --& jW7+( Uz^+SA<9Ї @pIMfuWL.ˁmK6t6N[ й; rqq5f@{oWq)p8m\ޚ"UW/p6UOld x'$ѫ3jgz"DPy$6{u\_cjLbL'`1C8O<Ё O>b?3eG7| ԿP8w۱Psn@ ܶaK5+J'Cޚ!Bdž'c.4y_5l=8ZVX (V;fGw%bPďz,fm6m j^!̟;]1h2 -pu|-2 d?4@=f}>Jbz.ɲoZ!Զ* ߻c>Pt77}.|o?#;@?NfHDn2Q@H>(,| /mUTNߦKK3=o0PsSANP\T+jNC3e\]$^$pZFWi/;Q˜+厈߸]-.܀`@O7xC%+ XFSJX¾@'Fp-p1i| j} j .VN^6 _E׼c&4#h̐H"I A8^[Id`Dzh4?QZ5{ EM41,q?5g4é_+ߠ5s{fm:A,]eSGxoޗORJ?s7YP.ncPnE;,ttLufju2S./l.RD~S=h4_$[ 0WƂz @ { @z1V*@ 8ɡ Y׻)xk|i%COY7mPn/CEo?3}7`M /9Ɨ e,`%ˁ?v^=k4ݍ؛;N+ zX쨀;Sww{了wPplAzsRnz@hPCj}:^PK/|}B_(ygBìGm_HI]MI$QXFi4? ñ7b,Yla[bz$ρf]SVYr v|x໡$kSPsWMPuݰ_-5W^!H_Yir T*| <$K_sh @ʰe@,r`9NlּsZ%L6{>ݾ*靗[/)to{GW]P5BO{A\-3)J:&D^x| w Z!c-&/C5Tߐ;e=P1UnmB*_[~qi!N}p 0[e$Wό|$Wd9\ȗmZi4o>eK4- H6Te 9jo[>ȟlP/ t}ugp0+(xh:JM4ߟh4{-=%Z[H~r nd&Fx9ػޓ90x3D, h4-3[ CC {$Ѝ@-RH"SthqUfBMк/#llr<ƅSmfAIr:-ș]]-*~(7P 9j0I}8 g?o;j:~wWo&X3ӭ~88x~f>lLúŕV, Fh_}^ @x^oҊ_>v8*>l^# Ϙܘj.*{ ]tlIOʛF|G41rTm#vwE:_h 9m5g|x;\*>l׸FT WByv!D=6'fOg}B.64,'vZD IO,] qġJZ09wa8}paq\B>f x \x5{*(x(r`;Y2i i@9J#(H,e5д4F/h~m]Nx|x;\U|8nO!wfၿ9;~i@6q 8H ;23ϟkY ``wW I =GQ'!DmX@ v@^4w\ކ=߅7n [)UC]YLKπe#2;:ZG&p3'9w*Z`"@Yr ir9"48@h?#&6 (~h,(zI`5Hk4G8}۽]x_5{'qNt4U/*RLǿyFhZ3F]h [ `qF=4>AH5FeNI;9iM|/v9N:I/U'"Fh44^_ iUi&ГDz9i]7ާ5FiNs 8qLL7KQekҺ_h4)a>n~KZ{F%;-h42XcҸ@кŁ/X-Ѫ_Fhgy@=k[\}@|{ 8sEF4Ѥr_-g9[ql3@ @m,Fh~MHr}X$XFsgaU%W dPH[3@Ah4-$a ]cŽmP$K`h4/@翑BHl Qh4ơu {mv@Hh4nUxgF)ZA|йGh4wi@ت#`8LpSh4fZD '=@zJO=[0Ht@Fy`9XH `9KYNO@m+h4+4zh" (=t$DB@ ,F^ ߉,ir> B'ـJٴK>Fhb xG#ГБBrJPW{h4{!5z~,U  @)JTj%#45@ :Wk/qܸ@ ^\@4NqҶ$i+I8<,t*(+# ܨJ ]h* tFЌ*5m}TdY=U`TjPDBq ҉^Rd,h@h4 ߫^F`,gOF>`?Q j;0y* /66g;H`W8<ǹϕ3,0ZY_'Hq:yS 9D\8 p"òZFOq+@Jp&g u:ܬ]C%d,'Pj5\%_:Yc(ꮾP'7b6]mT9o <+Vr7A@1tzBc/TOPyl"U.n HlF~^Bh2Vi4Es~U*@zp,MYR*"\(AGrcxv>HsEfl|/1ʘ0,XPlS| |`u6@; ol DvB?~vno W[3|&ax,dpJ ( r6 qz"E*Age6@c./+uy7D15S ƪ ;:4lu A| 5ZO%=RzDQ@@ %D;\cд=P "<,G~ g1 d2'pژ$ ܗ7uSyw(<pr4`"(zq ^Jhd\㒨]foD ` 8SZ~c9Ds d fѕ#~l ;2t ukWsT{#@r ~@`{C(ѺaXO*5l^ /s r.뱀9|HFotۨ, YR ޗ={qD Eanj$Yƭ:pr P@%5@ e@xFhpû!vU98(*$2Dq}2\}ͅmm{JLhZ~JöP; ^%"!1Z迧 p=P `!=1 5,h4?KtYOmVԃdIG'#O3\)w5ho"8P9ɛc<ծw=x8b+a_`-[Y ,$f+VQ!;58 Ā!y!`F5 pz^9ޜ"xXA|9ςgq-Ws\BGN6 Ԏg19 (w hAJZ6Q \tc(w Z uF@Jʻ޼ \ϙ"I#'yT l ZJߵ] 5 VT֓FE@?.f=1Dt!v[@gt5A>" ՁWm4r8 {ij53$N'M?w<{UFh9@WԀ̐9zns{Q"Btbifx<K|Hm m+oq  @.5ҢQmW-ʭ !5E=Ż|Z5ߝ Y r,#eNi@4Q`a o _ܘVn׸ "DT!רX׹{  ,U}i60:Pz G 5\ϮIbָi!ܽs|>qYFF < * p}Moڐleml_ GUq4|aCp^\Ľ?tNsrS!l2_vەk::ݔ_jtZ}aV.l={۸BY05gv(\b̃۸ 5 r5iJsMk;rpHdݨ1j&7BwP6D_3fx|C-!kԫR͔!kS!癜Y!ᩄ/k:}}`9weAÆg76;_ؙPl8KC;C_b ak+w&ʾ+]_> uk׍m:{okojOI/*"D6D KbGn_{#(yj/]=;BP*E2;d\Of n cX$?~l1W*_CitY0nt_nsR'zݵOJN/@i =@ & 49m>kG|썃Rl)t:Ӊ٧@!͝d_BlG0u3C YB޹yo^l鼭 S  eyeftݑ{7-jZ[z>4U*W!UP*e=f7觢vw}ov 9+?$>xTB?tBƨww o6LxnPԿdm`Pq2N&eQ!D@[Hc*R e\dU++zO7beB!nB± u8vBl4DΈ"l0^07p=DZ`G8#n@Ozbultx`f/FmT[r):x]<"yǃgu Jv v8[~t>_E=Ž d"= 򡨑B)q @ mf'7tX۾;t tz7;)cS~ ["yC?(y}dža[l[ l&{aP6\ߏ q^^1$$^d\Q:J:M`'ZQ_>_ ՟VWCfCIU7 T踨@r}򚤛 &2fe1/+7c-Ĵ6W}ϋ2?.*Rv?T<]k]g8 *AŪ,p $&2t9Mbo3v'S`㮎 Ad,yM*|-&no"&G?wcYJЎfӼ|ۀ4LA - Z|fo;~APR: bF1{Ctk jb6%)Ǎ];>MBZV=p2dncq}"d83z?kiƣ5#}F,My;9G^y1iWoY[6ml Fm~bv|PsqŵA}M}EC;E Ʌ+J\ cK~kd^% 5ncП8SCCU?T?-g䗽 ?o+ :Ӿ4mdDe d\!:kHv/YX\u_ yYyS[GuO2O7:a,$ăڮ^fC;7 ?jE2zḦ́1cA41=w D;¯R$! &_ ͞J*Q@Jgq37 rw_j>9ɘ$Wyvc<6M>POs@Q ޯzKʄ sMhkʔ Kze<釧Yw׌0@+W ȃm'@[` msM9M"ANdp'#hHl־c!Nw|!˻ _ɗ> ?|@EqEuPvS٘Py@ŗ3_;H$ Nn+v楴_A/ sDRlnn?XSLPۧvPH ?x3ȵrq@.vGf}ӱe"p ʳPͪKͅ[b :;(ᝄ jJԴ"055{7+?Z/i@N?v=j4{8gQsg)5`>n$xjl)F_pȸՆ F}e`4b |ɗr9>W_s}~Z2w?5l?CUW· (lꓯ`{CŭUkjP?mb3*g\FAV?ҖDNxi2Sn5;..Z\RFս] mwG吵5֌ Kv$|w=qmahOW 1=WP >d{#sف(P#[VU(' j3!VgP$9جT.ڇڅ# w[778;냜 }c [Fgv"I9WN"̧;e5D5.y7PJs( $QXF68 (`+vP=Tou"gg'sD[11y1 1yBasz}Z"t8:=2d1#b xyyχ{b>b Eδ_|5W wm_*kJY.Ae*I&hx4_jj>@C]d jZ A/P^YֶllZ%ݛb-yGA[#5=+׀OΔKI-gp.q}%\=_y ,2"lfy !:U{P;*s*T 39y{7< %{J} l!j FHQ Ley\5s+y8 V,9W.ԧH~"ʨ"H"U41W% zDo`GԬow^EOgO{tP zqFIw]3_ߠ!$ kJ6ȉ%9TX92v!KBNlZS/&0~wun\ L^=0@4@ ` j߄3+A{D*rtX9 4ɠyN\6SD p TP 8qƋb hڊqX4lDH5LNMJuBB9qԲ#p=x{PФ\,V͍ #/el\w䶒e)g=p~a["(ehA囲 9! \4An=g}~ѧm?Wuo ^ 4+5SxNNlps~z+s@x A?ɟ f0' O5iAy$CXNX> ̄G4^9."5Ǡl}&P:GY;p oPh:ڛu54T_q:RT=\u;9] ypry9X8"c=1`6OS麟 V4.QX@4_(L~sH A1b/ 5>ddXBZ. '# v> qTR+b`OWXWA :cg @L[%0__i\A#ADX M6v*:Qh-N3Pޯ|[E.duȞ.wb퐳,2oX^pN.nxMq6ELf>`<,˸A6! +I{Z7\ʀl >4Bw χv .C`Vm}`*4=` *V4\q._)xJ*m q;-|:}7hvkk6ަWt rqPgEi kI fit^dGpNwmẅ́ ].tz,8lZ}eg%Vz*.^`zwww1Uo|G.]{e4$=0n0!w@ڐ!nDmY?dx.y8p_>}93'|W}K}H"hB]3Mb$6'{m伒=&qX4fGAi)Akާ]w]Yn\ P$Ђ( =(htP$P7OV*44hh#;ăP-]y{r ߋXH{}~< C䣑#Cʌ&KuܵAǒkF%ڻo5lnP<^i](-]2\A'\SAN6MtDp* C.fAcV\?>126s\@E3`[ -`6ƨSۀ$64] !CFC"XᏇyBC`ʪ+~PʤpRbx=4H9Y cbJ0BPtPcKS}5lxVnmZ Ge@hн!|ͬG3Λ999P 5y" JN2~e#xDaȎ,=B`5Pߤ텺O=Yk >5#jO?Y7MB>$x-'zY29^[ ű`̞l^q|ɳb7PD1%  x=7^^H|%=VRZ3u{fښ@oB@?C?A7=X*-g<=p9 Fy:Nk(_)G[A~J94 o?&ߖ`ԅSAԋI@9Y@TSey~h~PܽxfɏPieP#`k`˵;Y E-X$/Kr0F]ԸͰE#C1zb3 de'SAn. L-AE^;ƇM\+ <<>y`n G # |9P~ܯW_\r>LO!L̑oAb{a_Ǎ+H1)| x񊖾[}+;r{8Hh5b;k84 43< 8U`?Ko#1]J&0 6A=at|a~$i`193wA{YR$j̏A̽1"ި,0ޥOn!́%~QֆpF9]_w/wbx61s@1f@|+>5NϴOW-堶S/@[I,G8Co6UMtTY'Xරs5HmDG*9hji~Wvw8b0Ϊ; ^aߢ[ #'5:뻜B(kX6CP_U{6@C>>6@=^T+@s! 09Mef`di D~$ _BJߔI3!fnL` ڧv%/a ^13 ⿃ K[Ke @6--@[rbL(߮Z';}x d#J8v?Wr@u*J̏`z qO'o\2 LJbh55KvsTVf&4]_GS f5?r?_YY[փI<?aCBV@;ЏA?Won2 {Fq3W{BVa/i4 bmP=1(RҤl'xP PXG@|%_{;½JO.3w2rz^ 1sJSKZ=*n8͠,OǢ́'KK by! wʝ-ˀN-< cycl$0vf|9-DDEI΋ubjx{:)R )@ =doPՍw%aeO Eԁi1'6EW5&GD^"̫jA`(c*: G++GqjhA jpcÉp81D b ]@kΣ,RA]G BP? Y*}嗱|м$jnvEMpw v)OC'IԠ1ih+-͚m Z Ԇ恽 E $2RtIBn~i.\)YS%xnFHX9V>*x@W PkաP9.s=PX~SE[[_UoV@+h,n҈X{2My\vc{BaY_;A5խqIXěV~'>rhFv&}¿ {11ʯ2 RRK L@Ge1<fPf2N"J5<=n, 5WT@~10~d\j]vhv5qC,PlQ[iWYm!/^I7pKB0/x5J~Jд4;h]hjrTjꋝis ߕ Wҧ՜Yv&H b+~(]QE//b88}Cg v6Л xp~7yAKoZ`jxEB> $>Ɔ,-Bཁ̳c 7G Ayg+ƀu&ޓ$=WPEַrqC}IT]A(i]j.߸aZD$B[iFc2Ee\o<= \# /cf9t]G}wm13e<,j B[c7@sKS ٜr Jt*@O)Oc# dcpnW)p}ԧ>b` F~ -kr'1j@߀JHT@JR69bRL~bǞ>A2, !pQCq3e9k|X8B;9V>i`G+~2w^dh3z2zd~]xg7A%]iAy;@Dբ iNUL_xO<\%X({dB(;WTROkK+ђz  $ `% : MsE .<-Eo] vЀ; eOlծn!}Wx> " [//> 3-M)RtH#}% B8o<څAnsyE17 ߄sÀՀ\h](_^ };\yDXN+?FB=Ah@| c-zs=zI0/ʁyl-Mc`1|q6r)KČn1rGeHm59 Sf'aCg< ^[Q <3"(^'F*tVI(U2? dɘN?{ ' , t"bH4po6? ySF3*ȝJ(N}%|M|7Pʣ9 c=Tը֠7*J d6tq0r*u/D? oӭ&4T;z4ꃸ Y簋#Zf%BVz9oB8zRi39Jk I , 7C[16G@>3 cbIT{Zj!l&<*/칲._ 9r2 P}=f{ n +TPB&VgUU-h ;6g.&w %r-o6s:VA‰āqK a ͠F]`6ǛoafE}E/q ޓgOt9ɋs?ɭo2M|T#ً!~ #XY4r %y'x'tmE+pk\ߺAEPK$]߸ܸ@5_5_~ R" $aA nDSSDpth (b1%\PNJ:6 5_8"@ ^TԯxR:vO( >)\N3PNUW m£b  S@.@w_h/r6h;Dӑ=!_XezUi8=ћ#S}}E{?erjl #ցzPvYzdrӕyE),p~.B7E5}CB_2@vDm z/@/P 8I"[xX/rsOW,YzOz57P-w~&T "%|F9|5A nTQ Q"O ]bhGib27D\,|'aF Ń@4QD|V;;J]e39W_WF I$&Ciuckq/=s?ENa @__CDeāq`442cOE'C3CrMpAwqZPpGe`?m?o^-SxY,ʷ0 2PF$~ f2Jun3/m $)i"=.[EgoE@<&̐/X!fܧ(`HrJA@pͅ/.!KPh`I *_ Hk5ps?Y2X =b| y/ %x{voQef([,;u=0|57B7 sPȰbGJ|>if]mYyb4$s P[-304oWboCisvgk1Ptfi9Tʴ3vPVk1a_F> o })Ś[4q* 08`5!KH0N5c8CJw@e{+tFG?9yj wZ pLC?@[Axjxs‡qSN:iZH(O_-g.ӽ&i\O*au;I2sDϲ+*{Cq1\.p~݅K;!?,eG*j }#jGAE @#`UGo9О-ޭ`StUgrV9]׫qQy ԜkPXqJJ7֠ hkb0N͜`gQTSĊh`<)"Y:X~,[y??*;P12Ȭ}$-MHƔ=ICZVr "n6cuC.vumg7 ҃k({AmO&BΠMy?BԬc!sV>ŔWjBw. Rǥ% < $I4'\#"22r  8j2.^;<*u@1WD uƁ2ۻʊϕ#A+kar'? aEJ뇶f#tj@iUAtw Vb9$suHw n i2[^&e88TP'@yz=7P*)(jN5\xP< fПшlěfQ XbF\#Gfq0P€&4 pc* ǀ8ey+ܽ;̭\5 *zU,ֆf`m}Z7$N ,]-,M @ 6Eݓ@03噎Cʐ!S!U!Rlx 6oUPvϯv7i' 'VH6q5ĝVifFoʏh ' ޻Qq3VupUvˋ/)^Jͼ3 1?>C E S9hNkj2*5 ^*y8?#GH ŠR3 ӝrzPU#5xeT.RACh C1N <4&߿* >Z@3PXA:. [,s\ƉC(DϹLkobГfprp%-W~,tuuu ʙbwƼ O;:4Ot$I|7 N [d)d5 zL9v}i.ųjw zU&XN61w| }Fl9[NmAp< y9/Yr^3d ۮ^FTm[""p=򂰊"F|+^:ґy@$Dqu3D0A2MJPS{+eQJȻdO/- D5F5A ~^t)i@W;xo_/R8p$ b$aCC  hd],`hno]3Ob{A ElOA{{GW2JRr>~>l{[,,tauוֹnXNYNnr&ٶ T ` D.#xs)T_ ?/xd͜>d2 !9PvkARɆMٯ٫pOw0ТCLb dԛT*RWsc ~?jCF5ݾ\t"4 i*qP<-JyZ"C?8K'` BPOE Amx!9:[S>! 㮌YCY3e n9q7ebXfA\4WL^~n*cYbxưhɑpqWƕ6mPkuڸ ibn|DD}7ݺ@yA/i |Cm\ߋ\.}L3X"T$>Ay*ʰ#&o5p>|Ő3,g~~)*XW~^u96jF`x6@G8ЙNg?/ȷr<$@Nri&3Ts I ?=<\ A jpBUL( -4H"l`<L{}5W@,f <62uDCҠA7]]{'8s$;^ gU+|2PDg;ŏH;0m֞NPW~ŽrI(*ї~ HG/ ۻP02D~y,< )sL!)"[HNrǸ@UֶPPut2h7derk/,9\YXR;`P򸒯&4")VNwqsx^NS@N=y|57WhWܮ(֠5CA#lWAfi`ؠK׏p%l-y"x1_p?.Mf)Ȼ*WU~YhkjZ@}?͵fp2c 1/jp==Wt lslEݐB^ !nJ%EzP?[B~QmA;Ov Д"z3DJY|% Jڗϼ~.ȸVW8<. -o &M:,v@R{S@D 56sY f*X5hF#?W$1@.K ( qGhD jP?jY-p2@~G 5U(+\C "OzL! (} `P1o!>r.x_Wȹ 5\Z3(] [ y1Nzb#PI+(;`?a?6E{TS0Ttw !!%֙_}>_  x4 ͠yEqBkl[3@[,bzg=f "jZ0QLzp/g7:ȟW0eΩ&3UW :7qedޜ]~`&u+/xYM@hDJ<4% eJL3AӝA jwAbd +p "8Ah7>+Ucxu e4zkZ~*VVT%ffĦE j ޥ@78(:]Y"{{9o@{}W)n.D#2Yꧠzw ^9DmR=8IԁzF^}Sm |EN*K<`y#'_RYrh Z/ɣ@-: C醅W@%y hb''dm|@UA5$j :vn hEz_R d BE!5eT0 #\~#@=%W GIԀLa#WzJ/O ڊB<\ ɭ%&A 鑿s^b)(khPF`kfio۝WO@OU[gmMw1M$^j4]4ECzɗ@la*C.e2[ ~My߰ rlV閏R< E]o=];$0֧eYS4H+|σ~*=`YGYH4 xW8&_y].µO‚$[zO; 4/@;@_G JK `1d駃ᘡW*S sd.) nm%A j fM]@va @ը e%+K@NKEO^qY 7I.Yr'K zL!k4uUăအ/tR/$ O0**͕!rcA6@}QJ/Z Ƃ& `GG;WOg@'yJ0?8>` $F$Hᶰg@?00 GaA8 FދPԵh80(i_d1EFp-bJd7Woe E?)hh=%]B%x@I`W[3ۛVnw;uAݭ-~+K|gQ> %$$o\;F953P Ob岵TP h'~[O< `Df :XeVP_l XX>\ mPl+[246`qP 0BGqI_ⅿlZ&Y,Q" ,.4Eh=&Fw#Fn 6*ʽ ,,z?So qc7K t[ysC ̼(v)iѐbAΖQ"El= ŇXe!(ǔ1h_,\S <6 LtwhS耞 8WaB=6FW/ppv/qi"ЅApip=˻`a=l{0Ǘ/@| ҅ϟ'{ZDBq`$Aj,ٛ,JH='@{~ Z<+ɀIO^jC9 =rlsP/fvuS gް UZZ#@Msh<`~O,[v6k9C&y/1BrND$mNmAqQ΁dK8Tբ>{B Ȥg8#>ɩInAgԙtBA zb.Xw[}#r> g> _c,1& xb?O?_ +(}Rp.vĹơq@mл #t1"4Ē baG&T(εg]@ݥVw, DqB*ԠH F p ˶w$CPUȶ!#| bhozI5]U\dǧ`hma; Y=M#+;+AJ~ A+FpvGvpDm&Ҁf4 UZ?q=Z Xn6q"pttQCCfFqh&k>>$ocl(, .K)%J_4w{ Zl1\Ocg CA𹡯@^w2|+ 'N(ڜ_ж(E% Fk5KA^3@[N}hFk>_?s_5T2JM6`srw԰E:5ΐ:ϓ? ߅&YQIA+ tEXPmsK4Q;!>&gl1 uOR.44W>(3LfXK"rqҋ "4Rx dL!.G9>`;ue ?=0nw+},*BvxEF,B9 ]A~6]J6NRagyIm&G@8ăygGI02JPHur%Lx=Ox^SO: (*yl735&<iSGBZĔ;!yw@T=Wy[ yc/8áKd,1ŭ@_IC"€0wͼk=끯YƻOӇ߁C 9NJ߀ xݞ`m[Lk;44t R$ <<<1K p{8_sj\%W|帺d79F|Y>^6=\}2vpjf.GUz-6oB]j:$]^;*>~?ZC!){ɺ66O󋿛N&dy׷?'p]<{?`6 ,^Zi.gwT@ P6S|ԫ=Ԉ #`B 렎QAVݥ` Б-{!Ѕ*ʿN\k}!ǐG"ā\ ߕ_\i D<*<tu`ͷa}lm9]@<X->>#>ǜhfUxsl8}\$x] QnӐ+eVv';Mjsj voP;Փ ^ni 1kF18!_?gC i֖~P&ީHC~ [،#ZbWX0m<j,js9!UYA{nZ?>i2t3!?C}#j~A;8竽aю%d1'wrlVaý^𝡍!_ik{* z4Gg } BA7u+CEDz+`82׵} xx/+_SR3z4t~= &(~F%׭QߚTUOmt^k_O_aUoV>o՞دz#kߋٵ όU_JoоBFL5g5$V\w?'?mׅ@,矕w]9~$O_J]; MjWw2wCd (*ՅlUOˑ)CPs;N@9z. \MN|] p?vs$رsvmw00AoOѽ!2dn hg %Ưo!m`"|\YJz=z@RN*J @*H ` )@E-R4F0B H&EI=`S ,ş>T]>`,BE >gKה/RD ACkGkO%_Z " HI# EZo2$_cEYjAfɫq:_.?M/˿ڸ̢dYϼ&̼^%/+ ߟ 3WY\?2ԟRr.E񽦼ȸn\" @DI+n%/ 4пۡ D}'bB'n)/ÛL{;]nb0]69!%2 K@"Er|8. XLޢ'>Wpep89JART=G54jƩۍ!hPAAɕWJA=֏l#C! YFx&q>9\W^8_rւrTPxR,ˌC0d9 D]Q.C]ly,pBLi`p=z l^[P TSZW닒?1^h" 9B.+{wRPrݽDQzD6f 2jRd DD.:;ETqiJz/>'jCRho#ŨWuP^6X̷1H<-3@ 1X 10A(@Ci6E<10xu41@ @:Ӛ A Ct1K#{CAb@4!7.)B< sm 幁k(͹A i il%Nӈa b`K?a=o~a Kȗ r XN:'@ `1 ,\Z,cdLǗ9@?`fȟ?]/g1?Y.\'XLMHGO mr?_'N r'D҅ї^iO:2X 2]{9D"F`\|{[Lr $߱z<~ӟ-r?׾qKAV~qw2엟L3e:)~-y@f Hg-e*V 򔴪2UYt{}(_Z /\CσV,ASGՔS}XoANPzS!t}ܐ =!!F| A}Pnn*xynK>/X'6-n^ }z0QL*oU5ƝyqֹW@%nĽym*!?,Օ$8&C W^W[N>0`f`/1h%֔GxqdJJV崺 8D@oT N?m9 !Dwڰ2W(/@t.~#!~.ƒ> -bG°^(S֮llX s/+OW!#Ԏ2 *Mn%D>5"D׊vED8KF ,NѝV@pqW6رVt'ڀfX,u/}N 7΃z"C^-bx D| ; /px.@2ai>`ib,"Dgf1 |+~nWhA8H x@tSL1@8\E$$ Q/Ё^.Ab"d,7x ڋ $xDa&q'^ "d  v_@N1˱ f_SEA KNAp+s"<-Lf| #J.ȩr*.gJHȠJEf>_ʩ 'dr0=zyESr))W"*#_Sh& 6a&wßo2p"5ـɀyDl+9[.90dm~ayK8wr7] _/cId9uR fmE '3K~)dO{BG!;x`w~@.?Y(Re_eJ뢊a7 !}H4xqWO ^ ]tApqxC꼋7s!^Ԅ0v< [Y;5Զ+F[p8~O7\ >,m|$Oģ* 9yuA}X=Z@^ 1ODD[ py^(M`׸ޘ =2{d^׀*}C89SOIfL@#b 3BN\"}[]Q wxP< ZwІ6,z5K;Gs\ KZ`*Sl'rh"A"mt}]790 PZAP{x&@>^Av]ya=o]vV8, @G?4RyX{44߂6PK &p!B CgC'-[)Rb`%3?Ӎ+qVT{SV 4\Y v8#@J4c%N@MQA?L?\ρl/[ V5AS,^Daѓ.)'1TN|K1I|K+xQLAΒ3h f ټ "r`kbl,1Y.1]󁙾%gt1/Yrh gM/I-)EGD QS _\?D3ċ ק!k5@|-xEb0ȕGxZ b#N f @#J`}E_$yr/0Y r`24r:s@d"S5B0EN߀-/\/g20us T#_e"0ks ^Or񝾸r|)yr-<&9Qd yLV`)t` _N40i9_&SB |?틳/g3ߎe ߔr||ro/sp5Nd`'4 ~>sqS1 ȷO'?31 _d:p\4RZV&ECM60,4mtr }*L|&koD[8bQQЍj AT~ch  5/8y\z1cfCiϦ^UA=SXdh,W(E ;ʖ-# / "xc|z;g iuZRجХPWeJو] QFDRXj&Ub}Vj Ig5GAA>J\}W.v y]RI&9՚b#&S|Vְ#lAV@CC%QRjmMk⾋[;[7 JƅOKs.eU͜wA Xg,=sU'|%?+@nbA[[n kz՛Mi`y1@XfZB;^U{gc(x?t;@yZyS} aq@e<$Au{=8'8ZC٢(( ,K,l72WS3>Yzkyzq+"4$;1g2jSOd @ [zљv@F@cU_} =}@1d$ =RO=* UcPh xAYD/Ύ'!W !cPz46ȜYȾ/gm ZV#S!~k`Ey^vc={!&8{jk)?hq n tBZ*芴WAtDAN&<" FpW@e7jSmbP+lP AyP= @}>A"4Ele=߳|fOn"76lRqEFxty{HEˀ4ŗد@Hs.A88!d'Q LVQaД/ԯWH&N`4Md|ɀm]E d)'=d@8NT fq -ȯLU2pڀ^r% 3dn@>]+gG Ҁф_el )_026X7h;Dn,:^n4jy WQG|-; PdA|dߌm3v [rsKgb;Ȼ@(+OIP`F|Ώ@U E'p庾vZ~&n_{w(}݅ oV." KDqpBE Z WɖǹG{Pp`O: w]9R7{N/5\LH~214| jN[ 9r._lu|&^m@:0jzcDġ0J.NjS;6 s"&_-aCC}-{@~%BO fBc!ACsKlչ/CYpٕ~]Iv@rVx03nV7Ph.`1| Fk Q@7О I4Ee U q1ixT&ʭʭiPS-%[VT)Uj+P PUAUZW}odm@4fN Q6S9 f6WwF~א_i v֕77_H$7y`N 5Ǫ~;O? hH~A/?<ȍF@r x9;f** &oWr 3t5!0r[3<,o rHƒ ?ŷ`  ,hih53 , \a1I =@KrftM|kp7>p?\ 4 0Гp_C -c B@ON SZ` ^_ 3:⁆hI`0~4a%`` z~ p 2_~$l|6 3Ёx Q ԆJ ф蚂matu;fxv'`DPp e,@+׀u'4pmqtM%N+x{y{}/įHX4268 сO[N- Z ߻+(9X^1z2uܕ JTiR+{$ BHqCU)(nTUI h?.. C+X;p)D 6[M)7%!mW 侐@y;^ u-ʿ<#Q.'x~Ϡh{cjk %b1K.twOJo`@J]+;'蝆j)?C)o> >~IWMu6?wwuNpV{sBTK&&0|fl @}ShNsbv9NQ^(?ŀJ,n|OG[70H>Ls-ƿVbxXDiJk7LUUW>x _2 īb7[ɽ~T@l峅-b7r ybwtz#="q1/ r!.fP_xɿ]-!}o:_ &Q˯t МWjf!|NxV$_BuS]z<'BП_\nE\W '3=@@A,)Y; GM.Pzyau:lco84ZzI*O_"E==)Ol'=(V8]o }7Q@F]9mJkv<34pC}ѩoƒ:\ORt(seَ &+ߡx|u@<'TPA& X2QȦ}GX;LkMa0CԇPڧRz_ yvJygWrx#> UWj}Af045S3ٰTf4DH"xI:Ё .x'Q@+7~ q P6QERmbSx1V@MCl ld5pߓA?H6lrikϡ2l>ZJe ?L!6VMMl=kޟ6t ϵ4W{%"d3X-́}J9vbhKRVg@R\{ ˌFGPg3A(&̈́.6+NIe5+{5TTq(Ņ r/+ *\V$@i2wyWy±|a7R3Rm qܘF۰e6XoX6Cu# %NWqqeOpust5k@Fx,y(_L$@h ܄Qy9ݮer|YqNqďb:Xan Co"B1 Ӡ=_uO0m^ Ғa%C^6'*CF8>ǧ^2GYe{1 .w~VZ E x~+4XbbcVnR z3D9W%tL 79UgDONXuչb⮍[  nUP5j6ϛ^^r A > = xC8E%(/Ѧ\0=lildwVc@uU_k{VIFPصpOEyEœݹsv32 zn !95U@B"]n,?X\+߂3ꯁvwX 75\AJcCq)#J8Tkkg?B!F ։5_ub9 |OM޷KQ9JG. m*cRg(;B=eM'rP ;Թ9!/Y!B`olm=.s*CUgg*{{A[}1L A>-S|TG\z5"7G9JȗL0LyA>ZsXWY[C؃}BATU ddgJ)RԤ ^ױAAPַrTةĂ=9;,8s첼K'N#y9Y 4 EUʕJjWq:aNXl=?oN6?;s|fht "E:"gҿ+gHaHH6(5JזPR>+;{wM)ۧ(<.9灓O^z[G^CGCpb[88ZQ~Y鲾J`yò˂t#dȜ)I !1?" 8J*ޓ't:NFx%Tuq7@C&Wx ~97l 8W9H"k$o36C_é < od8 v?u뭕oNSS'ՃN_ ˶_z}#[2Jv)KYf6QL&H +(PN)(f*t% L,YۂrʴڽH3kAYtS;ӠE h*km9<=y^u1BSs&fL7f"wnpv_ҧJCi/AU]kYXkx]º!]d`gg VUWV>a߆kPXp]Tp)"[q+,CZ FEX=LO|KNs ea-0,- >~a ŽUAIwRS?NiδuofaY= %㊿.-㉐Szl@ptъc%PҶ䮲um.?,'2PPW& Ac@chHпK\DnLQ`1LFgW;J Ĵ=1J- adW(0;=-8ouz+ &&B{/*P0p4x]]. _`|XJ'6 $_7UT׶wL:L>a~Ic ~D WD Ϊ! ڊ iE9 >va7J|s$cUPU_z9;uK~k`YpM向1,m$''78QNĽpxmGC^+NX447F Yr%PH!7)g$ebKA6@Ε `zTbj  +EaBM>qylq0@y!ǎ_ yh -9>J6 M+V&+uK06[ o ` 2xg-OYRFV)$z'3Ÿ M'AZĵ?;,V&pf[su 2\(j4hԻlCSէ꣡8X/i"U 2Eu$"Ǘ r  nE`9f{;Ti&ߧ_=mlR=\F];) \D7e=pCyiۗ =2z(R*FT +|>JmfY F)W=B:j`uY#CؼлCɄZS;5xlؒm2\Y%kU `ږ>Gx'vJ8qb?9 kW$|ik~e>OBt貨@]ylƎK Oupc Zá[eƁZz}-UD;eHJ|*< 2EC'P ~v,"bE9T.߁~>z@NmI#z94tx3 jjjVbGF0w)pᏅsBVjσΔU .hZpz d;EƁ|FVKb rQ %pr22H05^'ӵw>Ї' Ar=XZ\4;Rwnc`gKd8 p004w1EPUR{[\'FCҚ1BK HEEE%C!{6w~In͆{#_XQG%E}5Rs2ȆX\uyUQ'!}_zA6Je9 ) G$Nѓ"?6u5Vپ9.{)-݂PdPY6T[ü߃,7J !E10 e #jN†VN }z#}xJS}AO6g `hbH.h M_z!sa;gk?ox< zjL~ʌPe򾠶6mQ@~҂[02>3"`ܨ@d80 L\.g ԧZzյ Au:J9%&q;Ujo\0Ǚ'á@FJaͬM^|k ; @#z4P:*u@\' Q`79(8/T Ys\OLhЋ@_ԷBU}]sn*zU xU l ! Cjۺ!خ/@Q#wuvsu ̋MO萹v/[2 ܗ,_C7z`bNB364 B',ZV]?Y 作7phakv}|!P:ү3{7~qP@"DȤ-0:/l]WC hI& @xf'www ϊX[On54q4mӼ'~~aid?Y`LhÙ} V(>ܯޅJ>("WRץ ucgtJu-u/{c`dZfz ZDx ›+[qSGp2d N^!{s ׃:G[p-rzVbxKb"(1h(s`PTo`&.0fF7Z5ln\yͷ}Cy{Z: dcH\J*ok)ov T]tT́+;|QkdIe $CɰN²eձ8p=)__ZkHF~QRK/v%1rCuվ*G?꼴?:`9u|B> s>>o՟{<%= ݣ @#ٺ׺lX` <T2b>K` + cL^o˷{P3r7H61Y|^&jYZM&H&hO1DF׉*?lQwS eeѐ߳ ;vB[2(xZpsv{@{?%B\#.g*A.ִ9cMRGlH! K6hv]-oG[Ym uOntנ. eV_iqII@\ߍkTnucmQ 1b\⌊Ǡ0e"i(Qv5xڙ3xk0S 9ݰX*Q] P4~YVjC?gWPk˭r+Ѓ#~El(Y㿪gTM/VDse?GHE$d;ߪe'QO!`L6D;r+>ҁ.z%~." d:syh#g#~n'Ai@4,cku,|'ɢO.򝥻3_[\yTrP5 J\XJn 3׌_ Vp_?}sh%ZzcQDcR ) 0)$9XNO6^)!2ʩ@6tڗzϥ}Kܹsj_?w4`@`!pn5e\JIb~h׏akwe?Q Ŷex7m[c/ B} EST?*g#0ʏ'3`4c4.MAt!X7_iKomuXY>1zBּ^WOxZxz7{k{? V`/'q nl?}9fNM Q@+ H49cQa𘽏rg(x:Fy'C7tV. %vx[ ˴ !8H $H ݝ\ WmnR1KI|T3u|j֟f'x "[[@<'OhL (UhjIW?Dg'rU-,o3_Cp=] ģ,|sx:d ݶv_{WoD$!#`+7l1PO&3b!hBCSrH*;?7x{We nb:;Ur6͠Ga #H%mNz?eq_'$H i@a55ȕ y;r]SwC|}C80Ǵp2'.[Y7sX05-Ug.RrB#ߋ@=TS TV;5j8 !p@E  o9_.>\GooG_Kߧ~{M7Uz8U8qR-LdX՝w $ȯVd_}}^vTt5XN謘11[6n^RO\&w_-(Bs3dig rs)Ru=Ih6p3ەn|K#l@ D`C`y ?!zmWzG0VzA &\Fu;Z](4f!ɚ1y3BZtP3ל/! $HMhՋ/Is~ŢR WBCSL (L'`o7OG{~f _-|RpEU\N0WqqeL**)A 1bxN8P 7P@1@I bP D2m7ǂJ(!TGuH*A^(@_g'cn=z m xAրQ(lăI)AqA+vn::tG$hlK'N%`}Ӛa`P-ÁVl +3 :A r&5:Q 5]-S`dY` 3AM;׷kȔCCGn籀--Lbsat65ˣL߂ :DQhI#.Щ x@5D~JsNkNo$mW٭^'G I*@d`]CK>._Z6|;ov%DjmV@S3S& T̈́Ώ]AQ- ԭi%QlXwwZ ]$ $ș0a\|!7;!YRE2.G2]!<:SD(>ht(VxxܙYyxnlҔY4qfPm,PRF(#AL}ElEg]GN%qP} p@CP|~|\?>jk>'oA(?5!Op2cBg, ,B'0 h( /@vdU&q.,7ȵ`W'ykz ԹlP*A rMPDE`A%P $qz M 35X~:VROV;v€@^$a؀X‰$" dS0>4 /F>ABmh%z!he`<̓3,awhdY@[< {Lie>ςu߅ PUS&QOW/" $R#RSt&b+8;UJ?ry_]w;BnGGNJz~83u Vory9z>j2M J@`;bM*wxA0dZqp!.ѓ6zRz@v H@h+rW`\#!sAg'r:x ;r$oAfq%7'3]`Ir$eMڧ@m:v~!eF/կM1`+tHh8_~+Dv|!1=Qhhܩɔg:6KFo5nDDŽ~ʱ}J% A9[RXH2_Tr_:P8`_hȽ؀Mp7CAΚWtQeߕ d(J{PRz*YNU* @yD)WܠީTEYGiJ e (neSBJhl@lWm= mi[|rvo2d{y dg$c\h ]>(ntj F']4#B AcXBGbC)4j$!+INb4~z, ? b"sM$HsX!:={ X އDx)qp Y OOymҫJZ=w{#_ L]WS[*zZ5EVIDATZ]%B-2Gyb"]i E8)!bQrZ9`9od=9ENe_L"^y8h,m@Bcqd 9FQ }x2г] ^E0=bN3w녶m?BȮ{%4]nI6]Lf.Iey*@ AZ$l~+]]z,lxcClN=~rUTU<1qk+3Y}_|кkZ1'wcR07>0hiD~Fy}xue(~1ezڴLMSL9,k=ì/mz-DԏXQ=$g{!ݴa!2751:R7$ A9YN0Wσ#pWp=n*WT%Ve;GcS(ZDPԥP- ⋋_ JJbQyx^2ziwUVMw[-R8$Bp- PEQtE09|y).Z6~$J8 0wm>5戾yKgQ4&5  7& 3+f~"A !sBɐ]!q`oe5d?Mb|j[}<<8$H 95`ndn ёDDXs3Z88NTt"00 ˊ+jZiqI]+G㈣T%:+pqwo#o &*F"4g8JS̍̕`oUla`O{BȅCBhdXyx3 ZԎX)ɋU Έk'r!|OTe{ }KoM Ao?\y5g@D;"k]`_k_z;1uQZk=멠3>6RAN7:L~&W-nOH,-[:QV] M@^-05Pm <\,"kkA`abAp$ˆ#(È(E> AM $B5tw39}Tzޭ[ OEi"7FqCڬ`K#_l {/WW#`wccc8p99 KΓΩp=<,\Op怳s489{9c.8z8`?ZGukX_fX=P۶6vzKuCKX5 -ꃴOAʊS .҅eЁ2QL:#1A(/f  ǔq,gD62Y.[!f2d̔BԹ< }F={*%xd*4_ռGgaܶ'^]\]t^XUxY}_1o_r[$Fxq㽡Ӡ ^Ku @`0Gnv-ACPN+#^ ^_|f~ɁL;;g|h}e;9f,wěJӿ ='5*U9Ithнq %``2b14"P_"WKbt{M@A19AƂ\+hH)jq1l"Aδ\KA?.tbX9.U ˇP =;` '8N%PxoСˏk;χy M 4+'Y 9w@/C!RRy ( ]P.'=DFuRcwz(Q{ pQ~.?e hf4-ezl_|3n )pRMkeL@x[H5c5P(&⊬1 'J/Q  91{l0XT R( )4D_[ D#H6I-։W˟(>T$~jl"ַ_>e/@5=Pp٤! q}\/q֪+Z**7ݛ*ρ#U*Eo"Ft  0ѓznᲔp9CșV ^ UJ[0=gZ`LР#|徠Bߵ[}6U4xO]},k Z40.V@,yّڣUݶ/BpCm+5 ~{D o부k͚(ePIu/u uPD)@ R7եBwNISr:Q(s@N@']֨C "up' ޭ.PV> "F< b4Qm@ٔ*1˰vh<6SKz]+o(2B%`z;_@W.ga;5K+u-e8_Uٻ+|gK/ʄ~uóS;vl rv#?p58ϹF{{{Yi ۖJKT5PݠvY T&K\(q eʞ>VBy{(N)10kZD}w@#$I>9mscqZVOrCr导P5"*4ώ邔/SKzA dX]+~ܸ'T~q-qqł-r?ʳ IoY q8??ˁpZIENDB`distrobox-1.8.1.2/icons/hicolor/36x36/000077500000000000000000000000001474517124600172545ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/36x36/apps/000077500000000000000000000000001474517124600202175ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/36x36/apps/terminal-distrobox-icon.png000066400000000000000000000073131474517124600255050ustar00rootroot00000000000000PNG  IHDR$$D cHRMz&u0`:pQ<bKGD X pHYs``kB?IDAThy\Uǿk2 x!ҫ9%iCW Nu5+ɬ4!&8`NJ)p8(oїY:{ϳmUu+ 'N\UXU 'N6\L!sIp,"v<jQ{Ջ*Pm u [뭂ASTh=jZSAfj3PPGQ6|+J1x }l,[ Iyy=d̐AOlw1KCj]hh:#ٺfMm6V@ʀGOWesoAǷ:z%Ab 8 tPijXDbSIdQ:ZJE,8H/V<8,9 K.N 2sx_X $+^yEA5Wߪ0L+>rR>DMpԂg/;j:~J@%,8pk:M麳utt#`„0b^YiwƟ˲v,q1s/Sdg6 ,X}'ڬve5I=w\ZR6rtҶ/&V޿(օ<UuU#~1P.g#@05 P&?N& UMϭPu I=$ۤV5΍D- M];\Ah1U5rD8WPiIt 6harBޕ d UNp/rc<,~/xXj̞!4Wt|4: =x9 /INe/u4}坍ʄ2Lyȯh8vX&64+cLJw RJ p4~Wfi'`r<|^q.xG֐2>?%5{qQPjVpʜ,+. NʻWbrSX]x 7~hBӋN 1%xc8T Rϵؕbw5vRr껲AFcw(>>C|&~˨l@R$ks(Z iJq B~' iЗc:U*)A' JSt31C jD5ppmvJp|iғVi T=#a?p/_yR}C,ѩ*TnJXTan dž<if г@{RADoy&F~yyѻg×[u $IP܂:̂9HFHe4M??'}ڽ~9Ss;ৗ/ͻ*ɶԄAyW_ '=ϝG~#X?I)kr5\۵`ܐBh5lږҾHK8Ev{xֿ@6-Go><=lkR~!ۛ[}4Ji̝\T,e[* " 'h9*+KS~)ƃX}SڀxHo}2.)  {զOA s@+kgMϫplNjUU5 NwqI:ƚ!Tٕg=6H">i)*LOΘ(*!:P89,3 lcmPSfk~?0mNS.̗ltHVrEV`AFJ8im %{|e2P !,$6}87)W](-V4:(00\5sΡpHbz:\v=<"r3# ZӮMTJ=x.<lgSlAtY'&LyNb$XL%gA tr X $+@:X. i`/,_jB(5 C3>y's^>y2||L>5@3kyz`{p{A^qWgcgGgx>m W9WWqIurrF 1G렿wsmzTY-O>#^BPsAQGpʕSS^__9 P*QJe\P!^ZҒ ʵi %{@%FAb$@ 12y}o})wDK<2F+=d:,S N xiT#]Y!0ަ0궔a0wlț\n6cߧ={mSr-H|- Xjj` +` y}}S^W~jg}x7>_z{:;^N;fL4aS9PNB.ۿ{aST絿&9Qd/[ n*x8dL&::Xw `p?V/"nPPuЕvEu[~z;'@Ӕl4! 2Ko#@ߥ/ϸVw= !` Pu BΐV2] AElj*kK0b elwAcrc 2!b.1d<  h>`{l^G|&z%C9Cs#3F^osN*E6?F<ГxQG= qK%r i j,Ypµڥ'`JQ`kSq(sŶ*8xu.1Q13F"Cv+P.r[W@@QHYb.1TWA (~@R?Rg>ƶ3W@'?wlu1uyq#c!2/ (_"&X>TF֊f^NBK,Qp+09+.4P-Sl#v"_X;(O=c[ɲvT:b(M B?mD 5br(akKN7ߛV+'M p:u pY@)\i{t9u((YNޝ?v\h_Z QSԃw=#6T <N93 ܠQ!hA@SzTY* A>?ulmսaPcU2J(4A\&t̘TשdU+ -7do-h@~{ gAVZ7la#ϵr~~Dͥl AƧtn >$TU3JG3}6$0"y'ց6LX)ZNAY珘ě r} `ߑHLN@ x_B qAsک`}lu5Pxt熭/ϩj` |/V9s Clr*ek5 VÀ[#_!o'dȼ< 6 ؁7~-` ο< IwB %T#i#>**A Q 4 /0/sf׹1C9 O^_Rsqj,E7E=9)9_Ut`<ߋ35PEd>Jbb >zw:?I+F2p'=i8)h0TX@^8@Wݦx4xxܮnԇR^`NI ߯]$ .&G# Z wGE^[gL͵Z e^ xY|| K+ea6Wbf:U3Ld"]^RQחeB0WW xjv\> 6ji &w3ɐEnj~4Vd0ݦ5=[vFmb2'u{"Zv رa0]0q\ju5ͩ]A _!*@ <<&bAЕ>$6yFYtŻSN?} JI;9 >Ԯ30Y ~a~M̔E$)Rz% <7BeQEu!m O3rfA ~ZL໠Q7{fh8: !!ÃC ,ouU᠚^zvQh<ǫ*XGI<>6X F(\wp@oz;+! 0+w5;[@L6>|_lt;A*VC#S!ouC!~^piϕƗ~]kݹ"5 sυ|OT-p:Q<`5(Mnj07r+8QQ2stbqPu9; ֎gġ.gޅ܍Wjk"tD1}`ȘAnHfmd Y 3|M!h Kϖ+\ Ys2ҵOC??*P׭n lxSXހA¯/ٓ[ {~8VޔUv z=rr7v_VbjZW_ |!HȧkS )dp?W塀 >Y!4`J2sԝj2c?FR}Zo 9(-Klց#5 1gY3k~ X.J]p!ww^{/$ l lk f)L5[롺fu} s'2e4u\ kkk$p] C'wlrrp[)J{^ҎT MKMln(ʏgU ͞ \7vωr@k%O.kd2/ jگ^Xͫ^z6v*%5( 1*=$AzH<CZ1ti .XbeF}&l=0ܣͲ'KW(BGK0{ñSvCՖV$ڪPFa+IIZWh[ "l005 vG1S2-6UAУ-7<@N2*Kݰ[ oC-o`/갓zP*P5֨bZ*VWj"H&dey^^8^r(#e;=b8y2M2Q"G $N4^VAk5kɋO |IwТ^~!aq_j6^Jjo,m"ssRjp[ޑKEVpQx,iZ=vw=ŧ.0[i7XYOYGu5 jn^`U/ODd kvY|W| -'4 (c`%O@Sfc"&I2 $ea' '1p<% )6A‹ ̃:O`%=CxNٶ9jI[ m^m3$ t|) (􎲧!/9*V@EҥzUw4j9ʋC1&€O8&%ċP;2z6}ݠt_ _iLsvJZUqJW @ @Dd 4 ~ ^&{6H("rt9%@ߐG 4FjmYaŵqY^ǃzG{Q[l |o_:-h:gc.OI:z=]v'_W缗cML[KѾqOZKJ րr:zO>_aoGh vA$\C.58py959A|ڊ5aӾ3ZI/GZwc 7Mӑkk?~#o=b;q xtl/0?'_>. 55om!ԯE0;$Yh;"%s"s⿏Z)2IENDB`distrobox-1.8.1.2/icons/hicolor/64x64/000077500000000000000000000000001474517124600172565ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/64x64/apps/000077500000000000000000000000001474517124600202215ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/64x64/apps/terminal-distrobox-icon.png000066400000000000000000000202351474517124600255050ustar00rootroot00000000000000PNG  IHDR@@ cHRMz&u0`:pQ<bKGD X pHYs``kB IDATxyxTEu; a"KIH$0, ʢ *(\QpD@ePd_ KBB;'8#sO>]uS= NW.,.0VNn JV|ZzT7x*hBhC0I$@c AbT phL0Ehb"*UE !T(کv4VA@(npb7)MTA@3]jDA0E d';cr 1#y7{H|*#^*,C |d/J*ǀ}.vq8q.d$"WSr 0^1'Aj, D5>ë3$gVn[~Ϫ̅U.,>+Hdž bCX6r-6 ?գSOW0bp-F ?^kgpzn^ PhF.&~uDp3 T;ȐP]B+Y|Cv&@|*߹Qp چ|c00AȕDN/0k\VvZi*58ѽh6&`ߐOm4T#g[@1Ydb(;q݀rl Bwp xM诀g8WG@HSB6p Kk9 q+")4F)%Gn{+<*ڜ(a-JVv*G`9_Pv[+;OOi2?V(ݭyaIrZU&nVC ֽp6}Dc-0-3c1&n5Svo8o2.z*綷NB9 Id{wVj"@ծiuXzh| XyG$j)4<Cyy8p\ޕ)TY%*S˼KS<+/HO0hT+l5MmѠa&a`qkY>m`iWXr}.`moɝEE';6(7ȫO, k@߄j#\{!HKw:a…YON:뭓@VsԢފ; daEk)&GQQjn;d8-,F{&=\j[L9) kԆek=`-+j *^mT@E'@AK& …h[e m29q;\ ?2m!(9́z Јy *XAb> ?>T/uZ]냅o-ՙ 8g: 2nkjY{0S}ޛ0r cԯ%SH_=2C5)Xj (@SYAf%VFE ?wqJ{ʢz\=β3eB 3S@ TZ'!_MO!X==W5ǀ$/A#((/6hm;/< ayb~ ;FLOS!Jk Wcy,_xI. ¿&S)@SihuG9$,J C)P@OO0uUm̠pSySyS%pN?1qR/d`-ofPSAe:D K~9\f7e'իNN >@N?*Lq!@>\m6eVnq <^s7h[R޹N7tw( +? EˊWr䭲 7ЖơcZKyj2j2>@Eǧpbq4N 5ML056U,q{IEs7m;xNtO%^Y>8%+Ø;ZXH2=Syx:; wDh1 |:Sz9l+ Sd0ns̏(]4d?/1e8_O-W-`Z:$ئ"nr㕾[P`֯ 5CW3dP/w S38S+S}`+=e2}x8FwO?n@ldmgR|C s:` 8^zFe :q+)܂lצ7՛tަ#)BЁ4@$ c={'>ѺGw?W:ՂAk:~tܱ}MoKI|CoY G9} I'& #K_* -@qeaե_^myΗ#N ss#(Xn!'5y ~;}jO@ޒO4 <? 1Gx(]îRϧ)`7u O[g 9.Rg,pk*fKd/=@sfuڅE5g|V::m,* \ښ}+͵zj}U :,EaX>dSNp"!fWLhwf{~JWuU_xxXkkGKeXSA-d!.jR?J9`>V׷C<#iSL_ү,谲]$I}UHW!jUVO>ӻGA'-Ɓ!pV[ ׾?2t4or-_}YNpt5xph谺}aEY-p~N;~4} S?O~s=W ?G3Ѱ/ñsGu .6qr,(wrx_/aq5`֡< ;H;RHy*3eJoS=Rϖΐy,B Hz;)씀ۻzM95k.sqa`߽-(U֤:M %9 H1)}A*mdJAҶ:r^gB[lyϦ}pfNJzLxλ`tQCkO'kG߄̗_ l,\/޿$:-(mܲCwn5 ii:RR_N j2$j@#ZH;w](;PdۍUa#OtPS P lA+ԾTςS:smW $6W[$<3l>Zvp aIaCޅ.4 bz48ylY)$J _/BҚ~dw-}?+.Ha ÝZ d?f͠J f:w J)~ 8LUB}3δpH޹ ( ,7hhgT!pJo"y"ti N#L& Hhqhά<;ڤj ih1๲g< #Y k+kfW { kc րڦQ/KK=f;xxQ ܎NtRKɒ@o+z٫])܁<=\ۓ?2" WJ'A(hB-w_aYHt_@ ]7m0{"?Z|y-x -n!/ڬ٠M&i7$BGV=P8c)udd͍J[1H zAo^h tqGaXG[>595xcOfiPDiҁnպs? 9P~78d9#^Q3 اް̰^hz~wR7i3Q'(K9Apj\< ںZiF鱶p\ -o? D}|-sT|Y%5T-MI+cOD(ՔFf4 F!@#9=ړ9H΂a ؓ=6G'{eAS ˋ`}[賁h+d;%I.Dyz W#s.K184`0pXOZ3?jpY zʷK zM |P6쭲\#]vԥ6TvNY e맮*@dEagj]ey C_h MGLm 2 J$eYuVyXYUP^Zu AjJ:j@ a-AB?UЇsKЇP9gTV>T@ߖa2T/u3 P$AR֗byh&@Ӄ`~Ӽ~4 W;.\<\E%Gdil>pϳJ/X,宖A^ҙp`/Y |wiI, 59ZPT-Af@BI,<Г Oz28ڂ XzȋA H,` B EgrBԐ=|H#,8$|lalOʋ`eأeaK;g@[KTT\g[ip$kI!iK id14"hE Bal䥒Jzyys >'0 /k+l\qyG`a록A_YD x3_k̆So ntbB_>XzZY@RK(e#@V4rRN8L 2$]gv`d:\96+3 + ]䰴"PtL8'KO<'GDH5;rZ5P8i,^O5N +I|gm2r z;Udka0 ڊkG 7ׅɃχgCӁO=*d/˾ܩZ"hxZD]V=agߝy{As3@_sAŨ:?\~"fKK߈!&kѡýJd2}tQe Vr 9r@K=b $@ \A$TBG3W\A^I&VvDLI DGyC~p?a:Ay @#jS W_.b΃V0pw(ox%H6`5' (Ìu8Ë4* b[Ď ]R|_ux(/<]Oun c/$%ÉwO\</+Dm65Ikuk#k$xm~fGiܩ&tX |: F`ߚ߅T=]kuEd $pri e:`vkI_I7ߊqL:tMLg:"r2]6Eʥd3.(tqZ e PP>e\Y{12}8\00L1xR[3߷z,N}<=ZZZ|}O(ZU4d00z=~ w [oVu--%zg2r/Mࢹq s~U_].T=s=oǬNIENDB`distrobox-1.8.1.2/icons/hicolor/72x72/000077500000000000000000000000001474517124600172545ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/72x72/apps/000077500000000000000000000000001474517124600202175ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/72x72/apps/terminal-distrobox-icon.png000066400000000000000000000230701474517124600255030ustar00rootroot00000000000000PNG  IHDRHH}o cHRMz&u0`:pQ<bKGD X pHYs``kB%IDATxw|U3鍐F B:H*""bÊ EQPPPT "#@H!@Rv7u)$> \O;gf3;sQF)(2(P2(_LG[.n yy!mGڬk_)͏Z:,/XhNÖΖb԰Y!{Lvb[`in 4icANEm }M' u A_N }0cNs~ ^9 rBw my=rC܅CNj9AR9!'*',5Lι?+n3rٍ߃,mRd8XX<-򸥻#0W7͑`e2U$2w2S%nMMmjzżLMρ鱬w!;@0-2j)YmL?iUt^xCWp>P(`~#]KV%V#Fc8=Bo\tmHX4 ϴ @Q*TGM6EI@ڥH6\2<}|)^IfIz d8臥,}t$TjJ/% ȋ9c^gB́T:uhGlUoI7Ҷ嶹R.L9,AVHhTR\G(rSBE@8o (UFP.ϊ!߇M!_ +L}+eBatEvaEP\:3wD["?7Q^˳gN>c Oӎ?Z%`/\ioc74D̝@(j6V}x Vw! %}*$F@Nѝf?9);/jZŝ ~ X?3L׺_֙?7~24x}a"}L,䢣K0(2Jn HToк/?Μ7uHw30ȩPw]c։1/= 5hxJ5P݀"dݥ8\Un^Sw t_U ; wZª osrqb4M[ WCk] AOZӡ-u]g@PIuStB)6.x# TT]TO<r,9j EAj Ѡ@UQe+W!Z _ @91g=Qpڵm*v꾮RDH`|!թτ+~jc{LPUkBӑ q/idKSfJTG^Ԯ9TcO0&M6P~+!6>~.ئ򲎀zTU]`׸.\t "r9t@h ;. HKjS~@#?}GW 9'?k!@[~E$lA>A ղ4c)ο# pB.{\#>Ka4IjVUjLzmE_|QTbVv&rYapn gQ@*j)) V~ľ;gٱ}jl.jj6W- 襫1b 8!8!KsK==D} cS{/* H-аb3ry=wbda uJAPh@b(P?D+ZZ{zo׾ֆ L=@zC9$a۫|տ_?оѦY.?K:, xIC5WOצּPjP/P<ɚfz[цv:K. PL1~V3c3K J>Y:P5Ol qߧߧ_=> -g n =@Ł{oU|'J6Jy t# m W!xvka; 9CX6,z-D% m@ =bt*݅;ol=\S^Z"TlRpV{g\,dc} sΠ:~C~lG]cAf{^& M;gM;,{(A-V E;'f{9 Txb9sNQ̟/*G91<"o]-eZl_1{sTm\p_xāTjG|Tx)fh4 7豴H+?ش#>665p>gG=#amkkBOm7!R-_h <yXz/f}>lS2vO~nK_J)I8))FE1Vg‚3" ۂO @UX:_o{h8jj:PE"BRaū+@c@2m ԏ[О&hs_>v geگZQ#j۾3xSa+!ah… Px׺֧ #k7U*q3KӜJVD57luޅ(e `i bb {+MF7y,!>RS~as`Moo&C&!B M7 O777ZoK]|ꁐx(Dec5qqq,Lu+ {\iv~a7sga.&P cޙU38Vٵ_؋TJUމ69()O]7g"hMrZ> y 8.tzԺPgumnZ)xTyRdP4haQ>x#BFBɕU|;ʣ+T 򠌖@NEG}&gDfsK.  ,lw;<ɤPZ7PA*YS"K.Y>8vEoqP4kB1[$A$~g|t|'%*'_쨾3j?6c-נV[?Y;q0stV0}J7 RZ g%/4.=t_|柣]2P3ЋAjNޝG~}FU ;uԞvsǩ37 9`m: H޴xi^#Dka{سitg @reuyV9HW:o~߅7?O<?8=dzn*c@C"i 5póWֆ洤M\@@p.R(`f@ uGUfpw=oFS#*g ČӗCꨕMB~u C o4;Wak𶮻Cڢ4kCvyCvu[=n 1cN䳗|(&S>.?qPq`3 vr#P1>ukX!L=U[vMs|(A0t i_95~b~:~O'~hXxőPT\X{x .hq aj^8~t }n;R0_kZVMe¬Ru! NG mAD⛻K^zAMp &ܿŮmcRhA-Ug?~ AE߅!|c^~>ofk#6 σ&RH}=xxy]f V}A[8t,d0آl8FB*9g˕9r]c]X@ROBjZ&6@LIөx GTb)RnI! d^(?A[3[x uD}>H ZI!lI?Aޢ#KC'˝i':A+>_0M(>Џ]#rYJ!q9I )X#mdcgaEEo-uHQ a%!CπJWiBA}<ҋN!H#}W #=>)H/P>:A?=ֺyRY@4)}i;f ~O$ȥ;m|,4lLdC8ἂ+_}6u L`c'v~5ZxnM xVh/$08PoKtqU[ѣG_<%έs!jP{YGtUs=g=X@[VT jkJJ+6J#X*@E>\a K,7.rY&`7{ x2qn<)r0-4* Ş:nkhӱ[Qݠa^߅<W4LQ Y"D!ߒ0tind90RH+Ր17Hf0[TgAvNY ={?tpo^ 4.*W8C{V_|=Kz@MjcS N,m3x]{|&Ř^,%j zj]@Mў->=qAH|6ҥ *%Co^=w!A[c4m;z/`_``[·v6ģK` ? $$( M, {G;5hIi\  ҷMhz;xq=ʏ W߽>^^HE-ʫ<  xBzYB/F%9ƨ@eT-UI2A&RR@ PjrtGˡU᥍E/ x2nk+XjQ;t85x='Svb8&8AUG<,3jcEu#OmG8 Qqt)#D}/4/&c"6uգΥP%9$_'m}U-Z9}oZhgAE[iF3J/gxyU&؉otag~гi4^0jh^PeAUۗr(ȱw USZ&/2h6H a,!K-[} }?\WœL@w? N#Yenqf8᤟bg 2M.}ʷσPe^kCmIvB5HV(p3׽BDзKn&R8)NzS65q18pVS D'th>IENDB`distrobox-1.8.1.2/icons/hicolor/96x96/000077500000000000000000000000001474517124600172705ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/96x96/apps/000077500000000000000000000000001474517124600202335ustar00rootroot00000000000000distrobox-1.8.1.2/icons/hicolor/96x96/apps/terminal-distrobox-icon.png000066400000000000000000000335161474517124600255250ustar00rootroot00000000000000PNG  IHDR``{ cHRMz&u0`:pQ<bKGD X pHYs``kB6IDATxg`Tڀ9lz-N( C EQ 6Ŋ ^C :H/)Z$$3ߏݐz~W}~dr̾3gμSߙ#  cĮvοWcW;j `_]і$D(&INv2ʲreO<R@Eq @E*"q*T$"( x+@e*dKE TEy<o*S*^6ǟNBp(`K-=˚_2'x [d2t$pH$O"6?d+A&DHOnHIݿ $@-@&Hp'~d_L~d`r!&L S&aI#d>@$dq k?Ќ79tQEg(,)@̏jAt蔘wrW {j`zjz;K "ADKQE,QA(@` 0"Vq (h*z'kxX'-^Q&Pp l[PZ7^ _QV8* )޼J"4 ʈb6 1C&I5P{rH5I)#eoNyH)AfVSjAFʻ22AK)U'+@%wZ 2~ ;%eW e]ro.;Qސ)5 c,2^=rP#HLd|d ȉLAʙ2xٞYt{V, ̥1!99@j5=dXYִ@\{4<$1Sbb8OO`@gbAlVe 5b/LaC 3 6MVDP'D1WL0 ֊Ybh):e\>$D+ &+LO"\s 2L^&ʑ*9P}9$#@^Kyx\v1 8H@!If,:|fYgl=W"{4c]\ހaҢAyy t?ݮA@+.yP|K"kٍ76ot6.݋; ).wJ @C-c-PUO9c0f,|)`3cZ#|/7[ R.|k)vm ]F[ӓ#~v0**XN:'mNpB 8cq ~ Mu}g4?/ch>>$DZh:t۵ΖN< =[-p:v_'ޡP۫  4 ئxfyVr(q ӭ}A֮Ntkq!x GȟF*~CC%;(8?Z\Wj?خs7u3>a}Hˁ08u ;Cu mRڦ _#xȴ:a'oMZ R5%{ ]bPQT% PJV|r|BHCa1M4G[b6KN; 99'sgaai0//sΣxb+s %'^301Y<+,g,4X)RA@eQJuvy䰵)YU&X2Wޔ% a& 0׈pd1|]?r&p0bcIi[  Z@)>-jN(*G =y@vS990`%jW;f@!ki5R^@%@@!n)ҳcAe/+Gb.VKXgd @.`"bS(,d 4&2HNk*+@ҵ[0nj%YhlF\v)X tXJTsr39* ~luC4h9Usrtm.7 BtjqXJeDqrpFx=(8 %( ,PvB捨c!gەa1I֭Zϭ[/vs@7cBI < xO bm~B T!ExBphu0s-oCgw9*ט&z3|pxB @Yq~4;Ő[VB}ZFYUz g':e_m-)w-qPn9`^U!'wq@ĊJ$ a (,*lvGY r*Kl-gv_vܳk %Dž/k k;ؿrw>F%QIR\@[:0RXB#l:j@R# "W_IZP.!kttv@  c๝'uCv`lͨ3`7k8"B91=WFI#H)M8/@KmvcZw-*z%X,d;^◅-XWqd<`mZ‽Ĵ,@ိ9/^ `!<`4RGwM!!΁[rƾY?N䭃 Ӊb Jqυi;7 z\RRl}L.+`]v?2Ɵ?tj8$ն șoz f) jٌt ĺ+lH_i}@Tf 2 _!gս0L^*D YeCYi/_8g;v@.]YLƊybf$ q'θS aV-̌D=T=E";uurcM@Vx^ 窂(z?d[->N.r\?ǩ1hV8.Wgx, @ 1,Tsb=*p(]%WcӞcg&#Μ 1ҳ ׷[ ,݃wFulM oX:Bʎ+,`h,7yP,)p)tu^FV)g!4@yPMZBI70ҰQ a&Lc' {6Qrb(& co;+ȒvXWr%W_ЃX&h> ̩0J e $Ukk$gЏoR 612$b4\hitT|tUpW)QCS@dؚ, -+i"Wx`Nq #,42 dݚ&ۮܣ_CtdyMO<_{5t\ (hnQrѥu6asKa׾9movqZRIB Prc8A 1q#al\ 8|e(g6'|0J6vPQs@S:ޝ:4%W|0o\qñ ;Av| E1)QxgW?S8bŒyX!8"Ӂh #g耺ThO[  ڈFx%oCK5H@)% Qۤ`nr0nrvT7|z9t3B/g/tSe(AbkOt| Hc??vJ ۈMn{I1] .hj87ibmˇwA)3-MRNeO\V$^eсZM"%J](?s^`mҫ!?y.4 43@۹ 矡%WGJ{fWIY+_GDŽ r|+= P>_{*@٩n7$ y Fut 3/'':P*+b( ;jy.)Xs ˍ +gyd (W+ bFSH<{oi d;uRwUrp%Pc2P y.ڪhb <,)h+ڈ`.u `Ռ^\k9]'ikJ0s*RggKcSX׶el}K_d@eR#{¼V,A`+ \6ߩ}=WAEFy2(C1J'!uuI+J ] ˵AIUdY!"bb)4#\~ߙ=%1?8ξSXsdg xuDw y>MSvXC p[˂G#ȡr|L-e'6u2|̵a+`g$He1[.$i Yd RvjIk0s R#f| R~ z!k71J w``_ c52UZ~W4?+M,b3_C8Ho/.\A^m?k#+{*T]NT8998'ݙPqb{ÈZ \>޽ i2K X:b'q!P־*|EOٹ pDSi A8 L_[,WgM&*hĉ${vSCsthAO*89:j>^tm?+xY^8Ns\,yރKSܦv֫Ybȅ*8JP^!ԡKKƮ"72TARHP:('dw{E<_-n4n'!Æӿ TPSe ru5Ec\s%>,L/~|r[?甎-Qi7ߑEP*(ey <ꦃ=r{M4A~%]r 9 luY< ZcxmYxQΛS@QV!@"$."D ^mH 4f{5X| Gڧ੡Cdp蹠gb5|_ErC W.@HW9ק\;,[_49p xw ?%oj; ¾C)qUI\5 |G\ \u.u 7@v[ 9Wobŝ an\t (;萦ɚ55 e0bg!dE?wkS=#pw qʭA f֛k* jL "?<y$pvӅP/@"f`xß!)m@4xUƨ%oF8!NP<8ĩ@7IbI{p}tn*;/]׸ JbTNA #G?y8E;~Hp9{"pq*+ﯔ-]C?z=7r&ԟ^` [ˁ2 \7u9 M[h.3D}v|{Gy ñoʁUmVGǏG~O./oQD%^9 \:7A٨PI]Đ#@~sr 'AYX{?@.kI[X\8ІL Td NI[?nϸvP\x]]A}ot{utCAIUn*C|GG#z>ޱLuNV?'SF±?>{zFh< yGLA :;W5}|w.! >.ǠÈۼNiNAnn!$2 .?™pɝ-vB;uAx`AeO8\Q68rXڟ;oi?־}CݽBrʩukThwm@(M5O' 1&d83DH܂NQmåK=bw%aɉKS6!24ɠAS;ʌ_:ѦӢz'̋\7ʩ}{[XT# yp@V9\ЛQ  -8X=@Cb aZMɤE @!g**D?[csݯpm\sUYQC>}J0>q:=wy-?g^=3x),-G4`7xwߦ=L)3g}uy|xzO]~j>, [shM9 O!EV]P !nce9X /$b9 y.#hGAk+S,قV!W~  b<Z]?vͿzz 1kmZvO&,5<;kK7/ N˗ 6#8*_z_=Sk tߡOlwnd]3Hx'n~%phO 9$Po?Y`M7OX=³jhSdޢ%WVԦ6f% n bЈ"`=,܁gj;{ " 5^~Z.ؼsp1+SߎڤB捃N@ [V08{lȅrCֳb@e.$Gx֔o`mv[> 5n=u _˙w$pqA|K-%4-) O(6EjU+&fBXzIhP6Cf uk{-=8H7??>9Z:hspAubnJvnA[ڵ2Cв Cc]c]I553O;{{F߾bZ nj_1Q|&2Y*U:?w=W.P#(ȫrŃ x Ql}QX@+fό;>p>ttF8tp9Fj\zs(H1ŨKQ1pc鰠qC?+WZQ1X9gi9䩓|sD@tPZ9R%|GNZơEJ<na[*cxA< H7?>eRIλr*j ʟ/f|-k;<9Y b*&}!rgwd퉀sݟ9Ks͝ Cv8F\=E=p 2Wdi|UΔ @au )Jķ."_gȻ`%VWv,mf (Z+4yLD©=8A-C1una:L8]y 8HQ 5lȌYiLMM rƘ\~|GB. 'RnrR)]r!mCMXr_+|N{!kT#-f9mv r(?ѡEr Yd0u?2`T@J5.¥/ՈI3i3:pR|E>EFtouhb8z2 T&qEFJa@~zOe= O\.n. :An88h,E! h+@%VK΄PwPw_q@G@6c dE(qD $_˦Ŗˀ#Ztr͊T<B0A`56\]vo)U֝{El  ?A.+j[/lJ1%4çӢCԼIҨ1&HS^ i kvN?VT%Xw *թ YnTSj2K<Y5{d> C5Mɕ{B.C_Ҙ䶐oU7 f,c:m]~&3묓u2-\c? >z 'Tr /;>bs1w C:0 sd+{ E}hj(+La-@RHG@cPbPP`  ϒρq5")2W~ēwƦ'*+!LM![h|'X)J&&1ZjAPB+@b(;a'/+ 6 ;S@0 A}t?[0@}k?@}e˯YX,|G d m_"Ln2Ar N;g[ q]k] `#{9 e*^5>SA|+& e[Fl~_5\0$ZF ϵ ѷ 3W\qe2EEb*cT5P(!8\1 N #LYozo|'y%N[A\ |,t "v2DZ`DuzLx\AtDQ_₸ D( @tw4V• ='D8r*H)\83:jCG9^ .n}7$; "P_/Yq.?@ "뮇ڿꢍڳ,$~Lfj UEUQ B{h23@AgZ܁#*<_+%Vlݏ!p)0 'Ё2 դTm(``g 5R"s@ D`Iz ёh02E^:Ӊr(;xG K#rkW׭d_Ef kr!]Bl W4g-=.w;t@LÕpsp~{^Mo QD8(x]&9c Ǐ8vz_hy*g7NvєF CC!SƤ1 [exdE&-rrPOuC/-[i2e\x|ԇp4O!po=6 BDKDQGhW#էAͶDŽOgׯ:QZ )I8thFjpRܝ{%3 G8bS'D-Qd !4&-R4asE$9-J"'H3=l+rꈺSTA_SET#$1a6~tF:jxcC2U$rUg3b(mJݚ~ڱ{"8R@t#hж~0p}؟b{5+s:$N|wKU798*Ͷ)r-`a<sz{ew^ aF´U7??,h/PvVa%G~`Z`Ԃjn =X>@K`E{ԕ{KGQ|!ɭ^k G W._jeDWI8Jk@;M݅Oxghhjh;` ֎Eh# H<IYj սztCv0&Së‘7'8T˔ rOy(]~}B囖l5,x4dGMl>ĮI2 ?)jLR*a܅+iDm0;XY@t-ЯoS?"s + anvcwk-#K$,+2 c@cu0ř>52ZMy"l"p.EMI8ᄃ,Cmro %d.:b5$UMv[zJvn{_k eT ^`eOuuYu#v#1H_53_}N~:\mɼf@;ڊX_9M@H=^['DOͧL 9Z:CKT*]+z ]1]ccoo9mr:o&s@WWAF8 ޿]P8%7,IXAт {+-?}) ,&BmA)3+Q緤<(3 t({M ^դ+~CA՘\ P@UbPmEז9݄cIn섬r i8*ÔVap YF}miK!<}^Ywv@IM|ѳ GH.^= N|s!?`@Ub/Ұ*~;3_sFCZeedy~hDvP݈BǕRz-@a^Ň0~b|fip%YEsB$_7ٶS/rd}@ MNN9FN")oeo,\,'|i1B9o\8vT x$q6Sp$$To \uzoSqcodzEøĸX͝SA ӘFbR>x4,P0<Yk^Aa/b>ʚ!<>8W/>Ҽpyp γM?/Q9=Xy/nkTt:t,W@ۢh#BԦ&4n3Bm]GYN`6~`\a xnOqx$TWkUw+;>m/- 6vlm0p.˜S};@y[<&1!9.\tҹO~lxT# @cjQW}yBӋr@?y6VG^`Xyo@YKc o7jFc18=t0V>y:)r 0i/Vy ʃ]TE,T>&EKxE۞#1P-8ePP7xT rIp?nվPo 1'CN\/&wƃgg.Bfr@T)h*5AP2@4ʓ>uAR^`>jӖ/-Wwkh distrobox-1.8.1.2/install000077500000000000000000000161371474517124600153150ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX next=0 verbose=0 version=1.8.1.2 # show_help will print usage to stdout. # Arguments: # None # Outputs: # print usage with examples. show_help() { cat << EOF install --prefix /usr/local Options: --prefix/-P: base bath where all files will be deployed (default /usr/local if root, ~/.local if not) --next/-N: install latest development version from git, instead of the latest stable release. --help/-h: show this message -v: show more verbosity EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit ;; -v | --verbose) shift verbose=1 ;; -N | --next) shift next=1 ;; -P | --prefix) if [ -n "$2" ]; then prefix="$2" shift shift fi ;; *) # Default case: If no more options then break out of the loop. break ;; esac done if [ -z "${prefix}" ]; then prefix="/usr/local" # in case we're not root, just default to the home directory if [ "$(id -u)" -ne 0 ]; then prefix="${HOME}/.local" fi fi dest_path="${prefix}/bin" man_dest_path="${prefix}/share/man/man1" icon_dest_path="${prefix}/share/icons/hicolor" completion_bash_dest_path="${prefix}/share/bash-completion/completions/" completion_zsh_dest_path="${prefix}/share/zsh/site-functions/" set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi # get current dir curr_dir=$(dirname "$0") cd "${curr_dir}" || exit 1 # if files are available, install files in dest directory # else download targz and uncompress it if [ -e "${curr_dir}/distrobox-enter" ]; then if ! install -d "${dest_path}" "${man_dest_path}" "${completion_bash_dest_path}" \ "${completion_zsh_dest_path}" "${icon_dest_path}/scalable/apps"; then printf >&2 "Do you have permission to write to %s?\n" "${prefix}" exit 1 fi for file in distrobox*; do if ! install -m 0755 "${file}" "${dest_path}"; then printf >&2 "Do you have permission to write to %s?\n" "${dest_path}" exit 1 fi done if [ -e "man" ]; then for file in man/man1/*; do install -m 0644 "${file}" "${man_dest_path}" done fi if [ -e "completions" ]; then for file in completions/bash/*; do install -m 0644 "${file}" "${completion_bash_dest_path}" done fi if [ -e "completions" ]; then for file in completions/zsh/*; do install -m 0644 "${file}" "${completion_zsh_dest_path}" done fi if [ -e icons/terminal-distrobox-icon.svg ]; then install -m 0644 icons/terminal-distrobox-icon.svg "${icon_dest_path}/scalable/apps" for sz in 16 22 24 32 36 48 64 72 96 128 256; do install -d "${icon_dest_path}/${sz}x${sz}/apps" install -m 0644 icons/hicolor/"${sz}x${sz}"/apps/terminal-distrobox-icon.png \ "${icon_dest_path}/${sz}x${sz}/apps" done fi else printf >&2 "\033[1;31m Checking dependencies...\n\033[0m" # check that we have base dependencies if ! { command -v curl > /dev/null || command -v wget > /dev/null } || ! command -v tar > /dev/null; then printf >&2 "Online install depends on tar and either curl or wget\n" printf >&2 "Ensure you have all dependencies installed.\n" exit 1 fi if command -v curl > /dev/null 2>&1; then download="curl -sLo" elif command -v wget > /dev/null 2>&1; then download="wget -qO" fi printf >&2 "\033[1;31m Downloading...\n\033[0m" if [ "${next}" -eq 0 ]; then release_ver="89luca89/distrobox/archive/refs/tags/${version}.tar.gz" release_name=$(basename "${release_ver}") else release_ver="89luca89/distrobox/archive/refs/heads/main.tar.gz" release_name="main" fi # go in tmp tmp_dir="$(mktemp -d)" cd "${tmp_dir}" # download our target ${download} "${release_name}" "https://github.com/${release_ver}" # uncompress printf >&2 "\033[1;31m Unpacking...\n\033[0m" if [ "${verbose}" -ne 0 ]; then tar xvf "${release_name}" else tar xf "${release_name}" fi # deploy our files if ! install -d "${dest_path}" "${man_dest_path}" "${completion_bash_dest_path}" \ "${completion_zsh_dest_path}" "${icon_dest_path}/scalable/apps"; then printf >&2 "Do you have permission to write to %s?\n" "${prefix}" exit 1 fi for file in "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/distrobox*; do if ! install -m 0755 "${file}" "${dest_path}"; then printf >&2 "Do you have permission to write to %s?\n" "${dest_path}" exit 1 fi done if [ -e "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')/man/" ]; then for file in "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/man/man1/*; do install -m 0644 "${file}" "${man_dest_path}" done fi if [ -e "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')/completions/bash/" ]; then for file in "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/completions/bash/*; do install -m 0644 "${file}" "${completion_bash_dest_path}" done fi if [ -e "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')/completions/zsh/" ]; then for file in "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/completions/zsh/*; do install -m 0644 "${file}" "${completion_zsh_dest_path}" done fi if [ -e "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/icons/terminal-distrobox-icon.svg ]; then install -m 0644 "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')"/icons/terminal-distrobox-icon.svg \ "${icon_dest_path}/scalable/apps" for sz in 16 22 24 32 36 48 64 72 96 128 256; do install -d "${icon_dest_path}/${sz}x${sz}/apps" install -m 0644 "distrobox-$(echo "${release_name}" | sed 's/.tar.gz//g')/icons/hicolor/${sz}x${sz}/apps/terminal-distrobox-icon.png" \ "${icon_dest_path}/${sz}x${sz}/apps" done fi # securely delete unneeded files cd if [ -n "${tmp_dir}" ] && [ -e "${tmp_dir}" ]; then rm -rf "${tmp_dir}" fi fi [ ! -w "${dest_path}" ] && printf >&2 "Cannot write into %s, permission denied.\n" "${dest_path}" && exit 1 [ ! -w "${man_dest_path}" ] && printf >&2 "Cannot write into %s, permission denied.\n" "${man_dest_path}" && exit 1 printf >&2 "\033[1;32m Installation successful!\n\033[0m" printf >&2 "\033[0m Shell scripts are located in \033[1;31m%s\n\033[0m" "${dest_path}" printf >&2 "\033[0m Manpages are located in \033[1;31m%s\n\033[0m" "${man_dest_path}" if ! echo "${PATH}" | grep -q "${dest_path}"; then printf >&2 "\033[0m Be sure that \033[1;31m%s\033[0m is in your \033[1;31m\$PATH\033[0m environment variable to be able to use distrobox without specifying the full path.\n\033[0m" "${dest_path}" fi distrobox-1.8.1.2/man/000077500000000000000000000000001474517124600144645ustar00rootroot00000000000000distrobox-1.8.1.2/man/gen-man000077500000000000000000000034401474517124600157350ustar00rootroot00000000000000#!/bin/sh if ! command -v pandoc; then echo ' Please install "pandoc". This tool is needed to convert markdown to man pages. This tool is needed to convert files under docs/usage into man pages for the installation. ' exit 1 fi for i in "$(dirname "${0}")"/../docs/usage/distrobox*; do pandoc --standalone \ --metadata title="$(basename "${i}" | cut -d'.' -f1 | tr '[:lower:]' '[:upper:]')" \ --metadata section=1 \ --metadata header="User Manual" \ --metadata footer="Distrobox" \ --metadata date="$(date +"%b %Y")" \ --to man "${i}" \ -o "$(dirname "${0}")"/man1/out sed -i 's|\" Automatically generated by Pandoc.*||g' "$(dirname "${0}")"/man1/out mv "$(dirname "${0}")/man1/out" "$(dirname "${0}")/man1/$(basename "${i}" | sed 's|md|1|g')" done compatibility_file="$(mktemp --suffix='.md')" HEAD="$(grep -n -B1 "^# Compatibility" "$(dirname "${0}")/../docs/compatibility.md" | head -1 | tr -d '-')" START="$(grep -n "# Host Distros" "$(dirname "${0}")/../docs/compatibility.md" | cut -d":" -f1)" END="$(grep -n -B1 "# Containers Distros" "$(dirname "${0}")/../docs/compatibility.md" | head -1 | tr -d '-')" sed -e "${START},${END}d" "$(dirname "${0}")/../docs/compatibility.md" > "${compatibility_file}" sed -e "1,${HEAD}d" -i "${compatibility_file}" sed -i "s/^#.*/\U&/g" "${compatibility_file}" pandoc --standalone \ --metadata title="DISTROBOX" \ --metadata section=1 \ --metadata header="User Manual" \ --metadata footer="Distrobox" \ --metadata date="$(date +"%b %Y")" \ --to man "${compatibility_file}" \ -o "$(dirname "${0}")"/man1/out sed -i 's|\" Automatically generated by Pandoc.*||g' "$(dirname "${0}")"/man1/out mv "$(dirname "${0}")"/man1/out "$(dirname "${0}")"/man1/distrobox-compatibility.1 cat "$(dirname "${0}")/man1/distrobox-"* > "$(dirname "${0}")/man1/distrobox.1" distrobox-1.8.1.2/man/man1/000077500000000000000000000000001474517124600153205ustar00rootroot00000000000000distrobox-1.8.1.2/man/man1/distrobox-assemble.1000066400000000000000000000213471474517124600212170ustar00rootroot00000000000000'\" t .\ .\" .TH "DISTROBOX\-ASSEMBLE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox assemble distrobox\-assemble .EE .SH DESCRIPTION distrobox\-assemble takes care of creating or destroying containers in batches, based on a manifest file. The manifest file by default is \f[CR]./distrobox.ini\f[R], but can be specified using the \f[CR]\-\-file\f[R] flag. .SH SYNOPSIS \f[B]distrobox assemble\f[R] .IP .EX \-\-file: path or URL to the distrobox manifest/ini file \-\-name/\-n: run against a single entry in the manifest/ini file \-\-replace/\-R: replace already existing distroboxes with matching names \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES This is an example manifest file to create two containers: .IP .EX [ubuntu] additional_packages=\[dq]git vim tmux nodejs\[dq] image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=false # You can add comments using this # [arch] # also inline comments are supported additional_packages=\[dq]git vim tmux nodejs\[dq] home=/tmp/home image=archlinux:latest init=false start_now=true init_hooks=\[dq]touch /init\-normal\[dq] nvidia=true pre_init_hooks=\[dq]touch /pre\-init\[dq] pull=true root=false replace=false volume=\[dq]/tmp/test:/run/a /tmp/test:/run/b\[dq] .EE .PP \f[B]Create\f[R] .PP We can bring them up simply using .IP .EX distrobox assemble create .EE .PP If the file is called \f[CR]distrobox.ini\f[R] and is in the same directory you\[cq]re launching the command, no further arguments are needed. You can specify a custom path for the file using .IP .EX distrobox assemble create \-\-file /my/custom/path.ini .EE .PP Or even specify a remote file, by using an URL: .IP .EX distrobox\-assemble create \-\-file https://raw.githubusercontent.com/89luca89/dotfiles/master/distrobox.ini .EE .PP \f[B]Replace\f[R] .PP By default, \f[CR]distrobox assemble\f[R] will replace a container only if \f[CR]replace=true\f[R] is specified in the manifest file. .PP In the example of the manifest above, the ubuntu container will always be replaced when running \f[CR]distrobox assemble create\f[R], while the arch container will not. .PP To force a replace for all containers in a manifest use the \f[CR]\-\-replace\f[R] flag .IP .EX distrobox assemble create \-\-replace [\-\-file my/custom/path.ini] .EE .PP \f[B]Remove\f[R] .PP We can bring down all the containers in a manifest file by simply doing .IP .EX distrobox assemble rm .EE .PP Or using a custom path for the ini file .IP .EX distrobox assemble rm \-\-file my/custom/path.ini .EE .PP \f[B]Test\f[R] .PP You can always test what distrobox \f[B]would do\f[R] by using the \f[CR]\-\-dry\-run\f[R] flag. This command will only print what commands distrobox would do without actually running them. .PP \f[B]Clone\f[R] .PP \f[B]Disclaimer\f[R]: You need to start the container once to ensure it is fully initialized and created before cloning it. The container being copied must also be stopped before the cloning process can proceed. .PP \f[B]Available options\f[R] .PP This is a list of available options with the corresponding type: .PP Types legend: .IP \[bu] 2 bool: true or false .IP \[bu] 2 string: a single string, for example \f[CR]home=\[dq]/home/luca\-linux/dbox\[dq]\f[R] .IP \[bu] 2 string_list: multiple strings, for example \f[CR]additional_packages=\[dq]htop vim git\[dq]\f[R]. Note that \f[CR]string_list\f[R] can be declared multiple times to be compounded: .RS 2 .IP .EX \f[B][ubuntu]\f[R] image=ubuntu:latest additional_packages=\[dq]git vim tmux nodejs\[dq] additional_packages=\[dq]htop iftop iotop\[dq] additional_packages=\[dq]zsh fish\[dq] .EE .RE .PP .TS tab(@); lw(23.3n) lw(23.3n) lw(23.3n). T{ Flag Name T}@T{ Type T}@T{ T} _ T{ additional_flags T}@T{ string_list T}@T{ Additional flags to pass to the container manager T} T{ additional_packages T}@T{ string_list T}@T{ Additional packages to install inside the container T} T{ home T}@T{ string T}@T{ Which home directory should the container use T} T{ image T}@T{ string T}@T{ Which image should the container use, look here for a list T} T{ clone T}@T{ string T}@T{ Name of the Distrobox container to use as the base for a new container (the container must be stopped). T} T{ init_hooks T}@T{ string_list T}@T{ Commands to run inside the container, after the packages setup T} T{ pre_init_hooks T}@T{ string_list T}@T{ Commands to run inside the container, before the packages setup T} T{ volume T}@T{ string_list T}@T{ Additional volumes to mount inside the containers T} T{ exported_apps T}@T{ string_list T}@T{ App names or desktopfile paths to export T} T{ exported_bins T}@T{ string_list T}@T{ Binaries to export T} T{ exported_bins_path T}@T{ string T}@T{ Optional path where to export binaries (default: $HOME/.local/bin) T} T{ entry T}@T{ bool T}@T{ Generate an entry for the container in the app list (default: false) T} T{ start_now T}@T{ bool T}@T{ Start the container immediately (default: false) T} T{ init T}@T{ bool T}@T{ Specify if this is an initful container (default: false) T} T{ nvidia T}@T{ bool T}@T{ Specify if you want to enable NVidia drivers integration (default: false) T} T{ pull T}@T{ bool T}@T{ Specify if you want to pull the image every time (default: false) T} T{ root T}@T{ bool T}@T{ Specify if the container is rootful (default: false) T} T{ unshare_ipc T}@T{ bool T}@T{ Specify if the container should unshare the ipc namespace (default: false) T} T{ unshare_netns T}@T{ bool T}@T{ Specify if the container should unshare the network namespace (default: false) T} T{ unshare_process T}@T{ bool T}@T{ Specify if the container should unshare the process (pid) namespace (default: false) T} T{ unshare_devsys T}@T{ bool T}@T{ Specify if the container should unshare /dev (default: false) T} T{ unshare_all T}@T{ bool T}@T{ Specify if the container should unshare all the previous options (default: false) T} .TE .PP For further explanation of each of the option in the list, take a look at the distrobox create usage, each option corresponds to one of the \f[CR]create\f[R] flags. .PP \f[B]Advanced example\f[R] .IP .EX [tumbleweed_distrobox] image=registry.opensuse.org/opensuse/distrobox pull=true additional_packages=\[dq]acpi bash\-completion findutils iproute iputils sensors inotify\-tools unzip\[dq] additional_packages=\[dq]net\-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt\-dlp\[dq] additional_packages=\[dq]git git\-credential\-libsecret\[dq] additional_packages=\[dq]patterns\-devel\-base\-devel_basis\[dq] additional_packages=\[dq]ShellCheck ansible\-lint clang clang\-tools codespell ctags desktop\-file\-utils gcc golang jq python3\[dq] additional_packages=\[dq]python3\-bashate python3\-flake8 python3\-mypy python3\-pipx python3\-pycodestyle python3\-pyflakes python3\-pylint python3\-python\-lsp\-server python3\-rstcheck python3\-yapf python3\-yamllint rustup shfmt\[dq] additional_packages=\[dq]kubernetes\-client helm\[dq] init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install github.com/golangci/golangci\-lint/cmd/golangci\-lint\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install golang.org/x/tools/gopls\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install sigs.k8s.io/kind\[at]latest; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/conmon; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/crun; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/docker; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/docker\-compose; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/flatpak; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/podman; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/xdg\-open; exported_apps=\[dq]htop\[dq] exported_bins=\[dq]/usr/bin/htop /usr/bin/git\[dq] exported_bins_path=\[dq]\[ti]/.local/bin\[dq] .EE .PP \f[B]Clone example\f[R] .IP .EX [ubuntu] additional_packages=\[dq]git vim tmux\[dq] image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=true [deno_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl \-fsSL https://deno.land/install.sh | sh; [bun_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl \-fsSL https://bun.sh/install | bash; .EE distrobox-1.8.1.2/man/man1/distrobox-compatibility.1000066400000000000000000000253621474517124600222760ustar00rootroot00000000000000'\" t .\ .\" .TH "DISTROBOX" "1" "Jan 2025" "Distrobox" "User Manual" .SH COMPATIBILITY This project \f[B]does not need a dedicated image\f[R]. It can use any OCI images from docker\-hub, quay.io, or any registry of your choice. .PP Many cloud images are stripped down on purpose to save size and may not include commands such as \f[CR]which\f[R], \f[CR]mount\f[R], \f[CR]less\f[R] or \f[CR]vi\f[R]). Additional packages can be installed once inside the container. We recommend using your preferred automation tool inside the container if you find yourself having to repeatedly create new containers. Maintaining your own custom image is also an option. .PP The main concern is having basic Linux utilities (\f[CR]mount\f[R]), basic user management utilities (\f[CR]usermod, passwd\f[R]), and \f[CR]sudo\f[R] correctly set. .SS SUPPORTED CONTAINER MANAGERS \f[CR]distrobox\f[R] can run on either \f[CR]podman\f[R], \f[CR]docker\f[R] or \c .UR https://github.com/89luca89/lilipod \f[CR]lilipod\f[R] .UE \c .PP It depends either on \f[CR]podman\f[R] configured in \f[CR]rootless mode\f[R] or on \f[CR]docker\f[R] configured without sudo (follow \c .UR https://docs.docker.com/engine/install/linux-postinstall/ THESE instructions .UE \c ) .IP \[bu] 2 Minimum podman version: \f[B]2.1.0\f[R] .IP \[bu] 2 Minimum docker client version: \f[B]19.03.15\f[R] .IP \[bu] 2 Minimum lilipod version: \f[B]v0.0.1\f[R] .PP Follow the official installation guide here: .IP \[bu] 2 \c .UR https://podman.io/getting-started/installation .UE \c .IP \[bu] 2 \c .UR https://docs.docker.com/engine/install .UE \c .IP \[bu] 2 \c .UR https://docs.docker.com/engine/install/linux-postinstall/ .UE \c .SS CONTAINERS DISTROS Distrobox guests tested successfully with the following container images: .PP .TS tab(@); lw(23.3n) lw(23.3n) lw(23.3n). T{ Distro T}@T{ Version T}@T{ Images T} _ T{ AlmaLinux (Toolbox) T}@T{ 8 9 T}@T{ quay.io/toolbx\-images/almalinux\-toolbox:8 quay.io/toolbx\-images/almalinux\-toolbox:9 quay.io/toolbx\-images/almalinux\-toolbox:latest T} T{ Alpine (Toolbox) T}@T{ 3.16 3.17 3.18 3.19 3.20 edge T}@T{ quay.io/toolbx\-images/alpine\-toolbox:3.16 quay.io/toolbx\-images/alpine\-toolbox:3.17 quay.io/toolbx\-images/alpine\-toolbox:3.18 quay.io/toolbx\-images/alpine\-toolbox:3.19 quay.io/toolbx\-images/alpine\-toolbox:3.20 quay.io/toolbx\-images/alpine\-toolbox:edge quay.io/toolbx\-images/alpine\-toolbox:latest T} T{ AmazonLinux (Toolbox) T}@T{ 2 2022 T}@T{ quay.io/toolbx\-images/amazonlinux\-toolbox:2 quay.io/toolbx\-images/amazonlinux\-toolbox:2023 quay.io/toolbx\-images/amazonlinux\-toolbox:latest T} T{ Archlinux (Toolbox) T}@T{ T}@T{ quay.io/toolbx/arch\-toolbox:latest T} T{ Bazzite Arch T}@T{ T}@T{ ghcr.io/ublue\-os/bazzite\-arch:latest ghcr.io/ublue\-os/bazzite\-arch\-gnome:latest T} T{ Centos (Toolbox) T}@T{ stream8 stream9 T}@T{ quay.io/toolbx\-images/centos\-toolbox:stream8 quay.io/toolbx\-images/centos\-toolbox:stream9 quay.io/toolbx\-images/centos\-toolbox:latest T} T{ Debian (Toolbox) T}@T{ 10 11 12 testing unstable T}@T{ quay.io/toolbx\-images/debian\-toolbox:10 quay.io/toolbx\-images/debian\-toolbox:11 quay.io/toolbx\-images/debian\-toolbox:12 quay.io/toolbx\-images/debian\-toolbox:testing quay.io/toolbx\-images/debian\-toolbox:unstable quay.io/toolbx\-images/debian\-toolbox:latest T} T{ Fedora (Toolbox) T}@T{ 37 38 39 40 41 Rawhide T}@T{ registry.fedoraproject.org/fedora\-toolbox:37 registry.fedoraproject.org/fedora\-toolbox:38 registry.fedoraproject.org/fedora\-toolbox:39 registry.fedoraproject.org/fedora\-toolbox:40 quay.io/fedora/fedora\-toolbox:41 quay.io/fedora/fedora\-toolbox:rawhide T} T{ openSUSE (Toolbox) T}@T{ T}@T{ registry.opensuse.org/opensuse/distrobox:latest T} T{ RedHat (Toolbox) T}@T{ 8 9 T}@T{ registry.access.redhat.com/ubi8/toolbox registry.access.redhat.com/ubi9/toolbox T} T{ Rocky Linux (Toolbox) T}@T{ 8 9 T}@T{ quay.io/toolbx\-images/rockylinux\-toolbox:8 quay.io/toolbx\-images/rockylinux\-toolbox:9 quay.io/toolbx\-images/rockylinux\-toolbox:latest T} T{ Ubuntu (Toolbox) T}@T{ 16.04 18.04 20.04 22.04 24.04 T}@T{ quay.io/toolbx/ubuntu\-toolbox:16.04 quay.io/toolbx/ubuntu\-toolbox:18.04 quay.io/toolbx/ubuntu\-toolbox:20.04 quay.io/toolbx/ubuntu\-toolbox:22.04 quay.io/toolbx/ubuntu\-toolbox:24.04 quay.io/toolbx/ubuntu\-toolbox:latest T} T{ Chainguard Wolfi (Toolbox) T}@T{ T}@T{ quay.io/toolbx\-images/wolfi\-toolbox:latest T} T{ Ublue T}@T{ bluefin\-cli ubuntu\-toolbox fedora\-toolbox wolfi\-toolbox archlinux\-distrobox powershell\-toolbox T}@T{ ghcr.io/ublue\-os/bluefin\-cli ghcr.io/ublue\-os/bluefin\-cli ghcr.io/ublue\-os/ubuntu\-toolbox ghcr.io/ublue\-os/fedora\-toolbox ghcr.io/ublue\-os/wolfi\-toolbox ghcr.io/ublue\-os/arch\-distrobox ghcr.io/ublue\-os/powershell\-toolbox T} T{ T}@T{ T}@T{ T} T{ AlmaLinux T}@T{ 8 8\-minimal 9 9\-minimal T}@T{ docker.io/library/almalinux:8 docker.io/library/almalinux:9 T} T{ Alpine Linux T}@T{ 3.15 3.16 3.17 3.18 3.19 3.20 edge T}@T{ docker.io/library/alpine:3.15 docker.io/library/alpine:3.16 docker.io/library/alpine:3.17 docker.io/library/alpine:3.18 docker.io/library/alpine:3.19 docker.io/library/alpine:3.20 docker.io/library/alpine:edge docker.io/library/alpine:latest T} T{ AmazonLinux T}@T{ 1 2 2023 T}@T{ public.ecr.aws/amazonlinux/amazonlinux:1 public.ecr.aws/amazonlinux/amazonlinux:2 public.ecr.aws/amazonlinux/amazonlinux:2023 T} T{ Archlinux T}@T{ T}@T{ docker.io/library/archlinux:latest T} T{ Blackarch T}@T{ T}@T{ docker.io/blackarchlinux/blackarch:latest T} T{ CentOS Stream T}@T{ 8 9 T}@T{ quay.io/centos/centos:stream8 quay.io/centos/centos:stream9 T} T{ Chainguard Wolfi T}@T{ T}@T{ cgr.dev/chainguard/wolfi\-base:latest T} T{ ClearLinux T}@T{ T}@T{ docker.io/library/clearlinux:latest docker.io/library/clearlinux:base T} T{ Crystal Linux T}@T{ T}@T{ registry.gitlab.com/crystal\-linux/misc/docker:latest T} T{ Debian T}@T{ 7 8 9 10 11 12 T}@T{ docker.io/debian/eol:wheezy docker.io/library/debian:buster docker.io/library/debian:bullseye\-backports docker.io/library/debian:bookworm\-backports docker.io/library/debian:stable\-backports T} T{ Debian T}@T{ Testing T}@T{ docker.io/library/debian:testing docker.io/library/debian:testing\-backports T} T{ Debian T}@T{ Unstable T}@T{ docker.io/library/debian:unstable T} T{ deepin T}@T{ 20 (apricot) 23 (beige) T}@T{ docker.io/linuxdeepin/apricot docker.io/linuxdeepin/deepin:beige T} T{ Fedora T}@T{ 36 37 38 39 40 41 Rawhide T}@T{ quay.io/fedora/fedora:36 quay.io/fedora/fedora:37 quay.io/fedora/fedora:38 quay.io/fedora/fedora:39 quay.io/fedora/fedora:40 quay.io/fedora/fedora:41 quay.io/fedora/fedora:rawhide T} T{ Gentoo Linux T}@T{ rolling T}@T{ docker.io/gentoo/stage3:latest T} T{ KDE neon T}@T{ Latest T}@T{ invent\-registry.kde.org/neon/docker\-images/plasma:latest T} T{ Kali Linux T}@T{ rolling T}@T{ docker.io/kalilinux/kali\-rolling:latest T} T{ Mint T}@T{ 21.1 T}@T{ docker.io/linuxmintd/mint21.1\-amd64 T} T{ Neurodebian T}@T{ nd100 T}@T{ docker.io/library/neurodebian:nd100 T} T{ openSUSE T}@T{ Leap T}@T{ registry.opensuse.org/opensuse/leap:latest T} T{ openSUSE T}@T{ Tumbleweed T}@T{ registry.opensuse.org/opensuse/distrobox:latest registry.opensuse.org/opensuse/tumbleweed:latest registry.opensuse.org/opensuse/toolbox:latest T} T{ Oracle Linux T}@T{ 7 7\-slim 8 8\-slim 9 9\-slim T}@T{ container\-registry.oracle.com/os/oraclelinux:7 container\-registry.oracle.com/os/oraclelinux:7\-slim container\-registry.oracle.com/os/oraclelinux:8 container\-registry.oracle.com/os/oraclelinux:8\-slim container\-registry.oracle.com/os/oraclelinux:9 container\-registry.oracle.com/os/oraclelinux:9\-slim T} T{ RedHat (UBI) T}@T{ 7 8 9 T}@T{ registry.access.redhat.com/ubi7/ubi registry.access.redhat.com/ubi8/ubi \ registry.access.redhat.com/ubi8/ubi\-init registry.access.redhat.com/ubi8/ubi\-minimal registry.access.redhat.com/ubi9/ubi registry.access.redhat.com/ubi9/ubi\-init registry.access.redhat.com/ubi9/ubi\-minimal T} T{ Rocky Linux T}@T{ 8 8\-minimal 9 T}@T{ quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8\-minimal quay.io/rockylinux/rockylinux:9 quay.io/rockylinux/rockylinux:latest T} T{ Slackware T}@T{ T}@T{ docker.io/vbatts/slackware:current T} T{ SteamOS T}@T{ T}@T{ ghcr.io/linuxserver/steamos:latest T} T{ Ubuntu T}@T{ 14.04 16.04 18.04 20.04 22.04 24.04 T}@T{ docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04 docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04 docker.io/library/ubuntu:22.04 docker.io/library/ubuntu:24.04 T} T{ Vanilla OS T}@T{ VSO T}@T{ ghcr.io/vanilla\-os/vso:main T} T{ Void Linux T}@T{ glibc musl T}@T{ ghcr.io/void\-linux/void\-glibc\-full:latest ghcr.io/void\-linux/void\-musl\-full:latest T} .TE .PP Images marked with \f[B]Toolbox\f[R] are tailored images made by the community efforts in \c .UR https://github.com/toolbx-images/images toolbx\-images/images .UE \c , so they are more indicated for desktop use, and first setup will take less time. Note however that if you use a non\-toolbox preconfigured image, the \f[B]first\f[R] \f[CR]distrobox\-enter\f[R] you\[cq]ll perform can take a while as it will download and install the missing dependencies. .PP A small time tax to pay for the ability to use any type of image. This will \f[B]not\f[R] occur after the first time, \f[B]subsequent enters will be much faster.\f[R] .PP NixOS is not a supported container distro, and there are currently no plans to bring support to it. If you are looking for unprivileged NixOS environments, we suggest you look into \c .UR https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html nix\-shell .UE \c \ or \c .UR https://github.com/DavHau/nix-portable nix portable .UE \c .SS NEW DISTRO SUPPORT If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it. .PP Or just try using it anyway, if it works, open an issue and it will be added to the list! .SS OLDER DISTRIBUTIONS For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04, compatibility is not assured. .PP Their \f[CR]libc\f[R] version is incompatible with kernel releases after \f[CR]>=4.11\f[R]. A work around this is to use the \f[CR]vsyscall=emulate\f[R] flag in the bootloader of the host. .PP Keep also in mind that mirrors could be down for such old releases, so you will need to build a custom distrobox image to ensure basic dependencies are met. .SS GPU ACCELERATION SUPPORT For Intel and AMD Gpus, the support is baked in, as the containers will install their latest available mesa/dri drivers. .PP For NVidia, you can use the \f[CR]\-\-nvidia\f[R] flag during create, see distrobox\-create documentation to discover how to use it. .PP Alternatively, you can use the nvidia\-container\-toolkit utility to set up the integration independently from the distrobox\[cq]s own flag. distrobox-1.8.1.2/man/man1/distrobox-create.1000066400000000000000000000305321474517124600206630ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-CREATE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox create distrobox\-create .EE .SH DESCRIPTION distrobox\-create takes care of creating the container with input name and image. The created container will be tightly integrated with the host, allowing sharing of the HOME directory of the user, external storage, external usb devices and graphical apps (X11/Wayland), and audio. .SH SYNOPSIS \f[B]distrobox create\f[R] .IP .EX \-\-image/\-i: image to use for the container default: ${container_image_default} \-\-name/\-n: name for the distrobox default: ${container_name_default} \-\-hostname: hostname for the distrobox default: .$(uname \-n) \-\-pull/\-p: pull the image even if it exists locally (implies \-\-yes) \-\-yes/\-Y: non\-interactive, pull images without asking \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-clone/\-c: name of the distrobox container to use as base for a new container this will be useful to either rename an existing distrobox or have multiple copies of the same environment. \-\-home/\-H: select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files. \-\-volume: additional volumes to add to the container \-\-additional\-flags/\-a: additional flags to pass to the container manager command \-\-additional\-packages/\-ap: additional packages to install during initial container setup \-\-init\-hooks: additional commands to execute at the end of container initialization \-\-pre\-init\-hooks: additional commands to execute at the start of container initialization \-\-init/\-I: use init system (like systemd) inside the container. this will make host\[aq]s processes not visible from within the container. (assumes \-\-unshare\-process) may require additional packages depending on the container image: https://github.com/89luca89/distrobox/blob/main/docs/useful_tips.md#using\-init\-system\-inside\-a\-distrobox \-\-nvidia: try to integrate host\[aq]s nVidia drivers in the guest \-\-platform: specify which platform to use, eg: linux/arm64 \-\-unshare\-devsys: do not share host devices and sysfs dirs from host \-\-unshare\-groups: do not forward user\[aq]s additional groups into the container \-\-unshare\-ipc: do not share ipc namespace with host \-\-unshare\-netns: do not share the net namespace with host \-\-unshare\-process: do not share process namespace with host \-\-unshare\-all: activate all the unshare flags below \-\-compatibility/\-C: show list of compatible images \-\-help/\-h: show this message \-\-no\-entry: do not generate a container entry in the application list \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-absolutely\-disable\-root\-password\-i\-am\-really\-positively\-sure: ⚠️ ⚠️ when setting up a rootful distrobox, this will skip user password setup, leaving it blank. ⚠️ ⚠️ .EE .SH COMPATIBILITY .IP .EX for a list of compatible images and container managers, please consult the man page: man distrobox man distrobox\-compatibility or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers\-distros .EE .SH EXAMPLES Create a distrobox with image alpine, called my\-alpine container .IP .EX distrobox create \-\-image alpine my\-alpine\-container .EE .PP Create a distrobox from fedora\-toolbox:35 image .IP .EX distrobox create \-\-image registry.fedoraproject.org/fedora\-toolbox:35 \-\-name fedora\-toolbox\-35 .EE .PP Clone an existing distrobox container .IP .EX distrobox create \-\-clone fedora\-35 \-\-name fedora\-35\-copy .EE .PP Always pull for the new image when creating a distrobox .IP .EX distrobox create \-\-pull \-\-image centos:stream9 \-\-home \[ti]/distrobox/centos9 .EE .PP Add additional environment variables to the container .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] .EE .PP Add additional volumes to the container .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-volume /opt/my\-dir:/usr/local/my\-dir:rw \-\-additional\-flags \[dq]\-\-pids\-limit \-1\[dq] .EE .PP Add additional packages to the container .IP .EX distrobox create \-\-image alpine:latest \-\-name test2 \-\-additional\-packages \[dq]git tmux vim\[dq] .EE .PP Use init\-hooks to perform an action during container startup .IP .EX distrobox create \-\-image alpine:latest \-\-name test \-\-init\-hooks \[dq]touch /var/tmp/test1 && touch /var/tmp/test2\[dq] .EE .PP Use pre\-init\-hooks to perform an action at the beginning of the container startup (before any package manager starts) .IP .EX distrobox create \-i docker.io/almalinux/8\-init \-\-init \-\-name test \-\-pre\-init\-hooks \[dq]dnf config\-manager \-\-enable powertools && dnf \-y install epel\-release\[dq] .EE .PP Use init to create a Systemd container (acts similar to an LXC): .IP .EX distrobox create \-i ubuntu:latest \-\-name test \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-\-init .EE .PP Use init to create a OpenRC container (acts similar to an LXC): .IP .EX distrobox create \-i alpine:latest \-\-name test \-\-additional\-packages \[dq]openrc\[dq] \-\-init .EE .PP Use host\[cq]s NVidia drivers integration .IP .EX distrobox create \-\-image ubuntu:22.04 \-\-name ubuntu\-nvidia \-\-nvidia .EE .PP Do not use host\[cq]s IP inside the container: .IP .EX distrobox create \-\-image ubuntu:latest \-\-name test \-\-unshare\-netns .EE .PP Create a more isolated container, where only the $HOME, basic sockets and host\[cq]s FS (in /run/host) is shared: .IP .EX distrobox create \-\-name unshared\-test \-\-unshare\-all .EE .PP Create a more isolated container, with it\[cq]s own init system, this will act very similar to a full LXC container: .IP .EX distrobox create \-\-name unshared\-init\-test \-\-unshare\-all \-\-init \-\-image fedora:latest .EE .PP Use environment variables to specify container name, image and container manager: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test\-alpine DBX_CONTAINER_IMAGE=alpine distrobox\-create .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_ALWAYS_PULL DBX_CONTAINER_CUSTOM_HOME DBX_CONTAINER_HOME_PREFIX DBX_CONTAINER_IMAGE DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_CONTAINER_HOSTNAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE .PP DBX_CONTAINER_HOME_PREFIX defines where containers\[cq] home directories will be located. If you define it as \[ti]/dbx then all future containers\[cq] home directories will be \[ti]/dbx/$container_name .SH EXTRA The \f[CR]\-\-additional\-flags\f[R] or \f[CR]\-a\f[R] is useful to modify defaults in the container creations. For example: .IP .EX distrobox create \-i docker.io/library/archlinux \-n dev\-arch podman container inspect dev\-arch | jq \[aq].[0].HostConfig.PidsLimit\[aq] 2048 distrobox rm \-f dev\-arch distrobox create \-i docker.io/library/archlinux \-n dev\-arch \-\-volume $CBL_TC:/tc \-\-additional\-flags \[dq]\-\-pids\-limit \-1\[dq] podman container inspect dev\-arch | jq \[aq].[0].HostConfig,.PidsLimit\[aq] 0 .EE .PP Additional volumes can be specified using the \f[CR]\-\-volume\f[R] flag. This flag follows the same standard as \f[CR]docker\f[R] and \f[CR]podman\f[R] to specify the mount point so \f[CR]\-\-volume SOURCE_PATH:DEST_PATH:MODE\f[R]. .IP .EX distrobox create \-\-image docker.io/library/archlinux \-\-name dev\-arch \-\-volume /usr/share/:/var/test:ro .EE .PP During container creation, it is possible to specify (using the additional\-flags) some environment variables that will persist in the container and be independent from your environment: .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] .EE .PP The \f[CR]\-\-init\-hooks\f[R] is useful to add commands to the entrypoint (init) of the container. This could be useful to create containers with a set of programs already installed, add users, groups. .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-init\-hooks \[dq]dnf groupinstall \-y \[rs]\[dq]C Development Tools and Libraries\[rs]\[dq]\[dq] .EE .PP The \f[CR]\-\-init\f[R] is useful to create a container that will use its own separate init system within. For example using: .IP .EX distrobox create \-i docker.io/almalinux/8\-init \-\-init \-\-name test distrobox create \-i docker.io/library/debian \-\-additional\-packages \[dq]systemd\[dq] \-\-init \-\-name test\-debian .EE .PP Inside the container we will be able to use normal systemd units: .IP .EX \[ti]$ distrobox enter test user\[at]test:\[ti]$ sudo systemctl enable \-\-now sshd user\[at]test:\[ti]$ sudo systemctl status sshd ● sshd.service \- OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022\-01\-28 22:54:50 CET; 17s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 291 (sshd) .EE .PP Note that enabling \f[CR]\-\-init\f[R] \f[B]will disable host\[cq]s process integration\f[R]. From within the container you will not be able to see and manage host\[cq]s processes. This is needed because \f[CR]/sbin/init\f[R] must be pid 1. .PP If you want to use a non\-pre\-create image, you\[cq]ll need to add the additional package: .IP .EX distrobox create \-i alpine:latest \-\-init \-\-additional\-packages \[dq]openrc\[dq] \-n test distrobox create \-i debian:stable \-\-init \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-n test distrobox create \-i ubuntu:22.04 \-\-init \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-n test distrobox create \-i archlinux:latest \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test distrobox create \-i registry.opensuse.org/opensuse/tumbleweed:latest \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test distrobox create \-i registry.fedoraproject.org/fedora:39 \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test .EE .PP The \f[CR]\-\-init\f[R] flag is useful to create system containers, where the container acts more similar to a full VM than an application\-container. Inside you\[cq]ll have a separate init, user\-session, daemons and so on. .PP The \f[CR]\-\-home\f[R] flag let\[cq]s you specify a custom HOME for the container. Note that this will NOT prevent the mount of the host\[cq]s home directory, but will ensure that configs and dotfiles will not litter it. .PP The \f[CR]\-\-root\f[R] flag will let you create a container with real root privileges. At first \f[CR]enter\f[R] the user will be required to setup a password. This is done in order to not enable passwordless sudo/su, in a \f[B]rootful\f[R] container, this is needed because \f[B]in this mode, root inside the container is also root outside the container!\f[R] .PP The \f[CR]\-\-absolutely\-disable\-root\-password\-i\-am\-really\-positively\-sure\f[R] will skip user password setup, leaving it blank. \f[B]This is genuinely dangerous and you really, positively should NOT enable this\f[R]. .PP From version 1.4.0 of distrobox, when you create a new container, it will also generate an entry in the applications list. .SS NVidia integration If your host has an NVidia gpu, with installed proprietary drivers, you can integrate them with the guests by using the \f[CR]\-\-nvidia\f[R] flag: .PP \f[CR]distrobox create \-\-nvidia \-\-image ubuntu:latest \-\-name ubuntu\-nvidia\f[R] .PP Be aware that \f[B]this is not compatible with non\-glibc systems\f[R] and \f[B]needs somewhat newer distributions to work\f[R]. .PP This feature was tested working on: .IP \[bu] 2 Almalinux .IP \[bu] 2 Archlinux .IP \[bu] 2 Centos 7 and newer .IP \[bu] 2 Clearlinux .IP \[bu] 2 Debian 10 and newer .IP \[bu] 2 OpenSUSE Leap .IP \[bu] 2 OpenSUSE Tumbleweed .IP \[bu] 2 Rockylinux .IP \[bu] 2 Ubuntu 18.04 and newer .IP \[bu] 2 Void Linux (glibc) distrobox-1.8.1.2/man/man1/distrobox-enter.1000066400000000000000000000073571474517124600205460ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-ENTER" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox enter distrobox\-enter .EE .SH DESCRIPTION distrobox\-enter takes care of entering the container with the name specified. Default command executed is your SHELL, but you can specify different shells or entire commands to execute. If using it inside a script, an application, or a service, you can specify the \[en]headless mode to disable tty and interactivity. .SH SYNOPSIS \f[B]distrobox enter\f[R] .IP .EX \-\-name/\-n: name for the distrobox default: my\-distrobox \-\-/\-e: end arguments execute the rest as command to execute at login default: default ${USER}\[aq]s shell \-\-no\-tty/\-T: do not instantiate a tty \-\-no\-workdir/\-nw: always start the container from container\[aq]s home directory \-\-additional\-flags/\-a: additional flags to pass to the container manager command \-\-help/\-h: show this message \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Enter a distrobox named \[lq]example\[rq] .IP .EX distrobox\-enter example .EE .PP Enter a distrobox specifying a command .IP .EX distrobox\-enter \-\-name fedora\-toolbox\-35 \-\- bash \-l distrobox\-enter my\-alpine\-container \-\- sh \-l .EE .PP Use additional podman/docker/lilipod flags while entering a distrobox .IP .EX distrobox\-enter \-\-additional\-flags \[dq]\-\-preserve\-fds\[dq] \-\-name test \-\- bash \-l .EE .PP Specify additional environment variables while entering a distrobox .IP .EX distrobox\-enter \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] \-\-name test \-\- bash \-l MY_VAR=value distrobox\-enter \-\-additional\-flags \[dq]\-\-preserve\-fds\[dq] \-\-name test \-\- bash \-l .EE .PP You can also use environment variables to specify container manager and container name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-enter .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_NAME DBX_CONTAINER_MANAGER DBX_SKIP_WORKDIR DBX_SUDO_PROGRAM .EE .SH EXTRA This command is used to enter the distrobox itself. Personally, I just create multiple profiles in my \f[CR]gnome\-terminal\f[R] to have multiple distros accessible. .PP The \f[CR]\-\-additional\-flags\f[R] or \f[CR]\-a\f[R] is useful to modify default command when executing in the container. For example: .IP .EX distrobox enter \-n dev\-arch \-\-additional\-flags \[dq]\-\-env my_var=test\[dq] \-\- printenv &| grep my_var my_var=test .EE .PP This is possible also using normal env variables: .IP .EX my_var=test distrobox enter \-n dev\-arch \-\-additional\-flags \-\- printenv &| grep my_var my_var=test .EE .PP If you\[cq]d like to enter a rootful container having distrobox use a program other than `sudo' to run podman/docker/lilipod as root, such as `pkexec' or `doas', you may specify it with the \f[CR]DBX_SUDO_PROGRAM\f[R] environment variable. For example, to use `doas' to enter a rootful container: .IP .EX DBX_SUDO_PROGRAM=\[dq]doas\[dq] distrobox enter \-n container \-\-root .EE .PP Additionally, in one of the config file paths that distrobox supports, such as \f[CR]\[ti]/.distroboxrc\f[R], you can also append the line \f[CR]distrobox_sudo_program=\[dq]doas\[dq]\f[R] (for example) to always run distrobox commands involving rootful containers using `doas'. distrobox-1.8.1.2/man/man1/distrobox-ephemeral.1000066400000000000000000000026631474517124600213660ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-EPHEMERAL" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox ephemeral distrobox\-ephemeral .EE .SH DESCRIPTION distrobox\-ephemeral creates a temporary distrobox that is automatically destroyed when the command is terminated. .SH SYNOPSIS \f[B]distrobox ephemeral\f[R] .IP .EX \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-help/\-h: show this message \-\-/\-e: end arguments execute the rest as command to execute at login default: default ${USER}\[aq]s shell \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-ephemeral \-\-image alpine:latest \-\- cat /etc/os\-release distrobox\-ephemeral \-\-root \-\-verbose \-\-image alpine:latest \-\-volume /opt:/opt .EE .PP You can also use flags from \f[B]distrobox\-create\f[R] to customize the ephemeral container to run. .SH SEE ALSO .IP .EX distrobox\-create \-\-help man distrobox\-create .EE .SH ENVIRONMENT VARIABLES .IP .EX distrobox\-ephemeral calls distrobox\-create, SEE ALSO distrobox\-create(1) for a list of supported environment variables to use. .EE distrobox-1.8.1.2/man/man1/distrobox-export.1000066400000000000000000000106641474517124600207450ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-EXPORT" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-export .EE .SH DESCRIPTION \f[B]Application and binary exporting\f[R] .PP distrobox\-export takes care of exporting an app or a binary from the container to the host. .PP The exported app will be easily available in your normal launcher and it will automatically be launched from the container it is exported from. .SH SYNOPSIS \f[B]distrobox\-export\f[R] .IP .EX \-\-app/\-a: name of the application to export or absolute path to desktopfile to export \-\-bin/\-b: absolute path of the binary to export \-\-list\-apps: list applications exported from this container \-\-list\-binaries list binaries exported from this container, use \-ep to specify custom paths to search \-\-delete/\-d: delete exported application or binary \-\-export\-label/\-el: label to add to exported application name. Use \[dq]none\[dq] to disable. Defaults to (on \[rs]$container_name) \-\-export\-path/\-ep: path where to export the binary \-\-extra\-flags/\-ef: extra flags to add to the command \-\-enter\-flags/\-nf: flags to add to distrobox\-enter \-\-sudo/\-S: specify if the exported item should be run as sudo \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .PP You may want to install graphical applications or CLI tools in your distrobox. Using \f[CR]distrobox\-export\f[R] from \f[B]inside\f[R] the container will let you use them from the host itself. .SH EXAMPLES .IP .EX distrobox\-export \-\-app mpv [\-\-extra\-flags \[dq]flags\[dq]] [\-\-delete] [\-\-sudo] distrobox\-export \-\-bin /path/to/bin [\-\-export\-path \[ti]/.local/bin] [\-\-extra\-flags \[dq]flags\[dq]] [\-\-delete] [\-\-sudo] .EE .PP \f[B]App export example\f[R] .IP .EX distrobox\-export \-\-app abiword .EE .PP This tool will simply copy the original \f[CR].desktop\f[R] files along with needed icons, add the prefix \f[CR]/usr/local/bin/distrobox\-enter \-n distrobox_name \-e ...\f[R] to the commands to run, and save them in your home to be used directly from the host as a normal app. .IP .EX distrobox\-export \-\-app /opt/application/my\-app.desktop .EE .PP This will skip searching for the desktopfile in canonical paths, and just use the provided file path. .PP \f[B]Binary export example\f[R] .IP .EX distrobox\-export \-\-bin /usr/bin/code \-\-extra\-flags \[dq]\-\-foreground\[dq] \-\-export\-path $HOME/.local/bin .EE .PP In the case of exporting binaries, you will have to specify \f[B]where\f[R] to export it (\f[CR]\-\-export\-path\f[R]) and the tool will create a little wrapper script that will \f[CR]distrobox\-enter \-e\f[R] from the host, the desired binary. This can be handy with the use of \f[CR]direnv\f[R] to have different versions of the same binary based on your \f[CR]env\f[R] or project. .PP The exported binaries will be exported in the \[lq]\[en]export\-path\[rq] of choice as a wrapper script that acts naturally both on the host and in the container. .PP \f[B]Additional flags\f[R] .PP You can specify additional flags to add to the command, for example if you want to export an electron app, you could add the \[lq]\[en]foreground\[rq] flag to the command: .IP .EX distrobox\-export \-\-app atom \-\-extra\-flags \[dq]\-\-foreground\[dq] distrobox\-export \-\-bin /usr/bin/vim \-\-export\-path \[ti]/.local/bin \-\-extra\-flags \[dq]\-p\[dq] .EE .PP This works for binaries and apps. Extra flags are only used then the exported app or binary is used from the host, using them inside the container will not include them. .PP \f[B]Unexport\f[R] .PP The option \[lq]\[en]delete\[rq] will un\-export an app or binary .IP .EX distrobox\-export \-\-app atom \-\-delete distrobox\-export \-\-bin /usr/bin/vim \-\-export\-path \[ti]/.local/bin \-\-delete .EE .PP \f[B]Run as root in the container\f[R] .PP The option \[lq]\[en]sudo\[rq] will launch the exported item as root inside the distrobox. .PP \f[B]Notes\f[R] .PP Note you can use \[en]app OR \[en]bin but not together. [IMAGE: \c .UR https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png app\-export .UE \c ] app\-export .PP NOTE: some electron apps such as vscode and atom need additional flags to work from inside the container, use the \f[CR]\-\-extra\-flags\f[R] option to provide a series of flags, for example: .PP \f[CR]distrobox\-export \-\-app atom \-\-extra\-flags \[dq]\-\-foreground\[dq]\f[R] distrobox-1.8.1.2/man/man1/distrobox-generate-entry.1000066400000000000000000000021031474517124600223420ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-GENERATE\-ENTRY" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox generate\-entry .EE .SH DESCRIPTION distrobox\-generate\-entry will create a desktop icon for one of the available distroboxes. This will be then deleted when you remove the matching distrobox. .SH SYNOPSIS \f[B]distrobox generate\-entry\f[R] .IP .EX \-\-help/\-h: show this message \-\-all/\-a: perform for all distroboxes \-\-delete/\-d: delete the entry \-\-icon/\-i: specify a custom icon [/path/to/icon] (default auto) \-\-root/\-r: perform on rootful distroboxes \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Generate an entry for a container .IP .EX distrobox generate\-entry my\-container\-name .EE .PP Specify a custom icon for the entry .IP .EX distrobox generate\-entry my\-container\-name \-\-icon /path/to/icon.png .EE .PP Generate an entry for all distroboxes .IP .EX distrobox generate\-entry \-\-all .EE .PP Delete an entry .IP .EX distrobox generate\-entry container\-name \-\-delete .EE distrobox-1.8.1.2/man/man1/distrobox-host-exec.1000066400000000000000000000030041474517124600213110ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-HOST\-EXEC" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-host\-exec .EE .SH DESCRIPTION distrobox\-host\-exec lets one execute command on the host, while inside of a container. .PP Under the hood, distrobox\-host\-exec uses \f[CR]host\-spawn\f[R] a project that lets us execute commands back on the host. If the tool is not found the user will be prompted to install it. .SH SYNOPSIS Just pass to \[lq]distrobox\-host\-exec\[rq] any command and all its arguments, if any. .IP .EX \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-yes/\-Y: Automatically answer yes to prompt: host\-spawn will be installed on the guest system if host\-spawn is not detected. This behaviour is default when running in a non\-interactive shell. .EE .PP If no command is provided, it will execute \[lq]$SHELL\[rq]. .PP Alternatively, use symlinks to make \f[CR]distrobox\-host\-exec\f[R] execute as that command: .IP .EX \[ti]$: ln \-s /usr/bin/distrobox\-host\-exec /usr/local/bin/podman \[ti]$: ls \-l /usr/local/bin/podman lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman \-> /usr/bin/distrobox\-host\-exec \[ti]$: podman version \&...this is executed on host... .EE .SH EXAMPLES .IP .EX distrobox\-host\-exec ls distrobox\-host\-exec bash \-l distrobox\-host\-exec flatpak run org.mozilla.firefox distrobox\-host\-exec podman ps \-a .EE distrobox-1.8.1.2/man/man1/distrobox-init.1000066400000000000000000000026741474517124600203710ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-INIT" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-init .EE .SH DESCRIPTION \f[B]Init the distrobox (not to be launched manually)\f[R] .PP distrobox\-init is the entrypoint of a created distrobox. Note that this HAS to run from inside a distrobox, will not work if you run it from your host. .PP \f[B]This is not intended to be used manually, but instead used by distrobox\-create to set up the container\[cq]s entrypoint.\f[R] .PP distrobox\-init will take care of installing missing dependencies (eg. sudo), set up the user and groups, mount directories from the host to ensure the tight integration. .SH SYNOPSIS \f[B]distrobox\-init\f[R] .IP .EX \-\-name/\-n: user name \-\-user/\-u: uid of the user \-\-group/\-g: gid of the user \-\-home/\-d: path/to/home of the user \-\-help/\-h: show this message \-\-additional\-packages: packages to install in addition \-\-init/\-I: whether to use or not init \-\-pre\-init\-hooks: commands to execute prior to init \-\-nvidia: try to integrate host\[aq]s nVidia drivers in the guest \-\-upgrade/\-U: run init in upgrade mode \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-: end arguments execute the rest as command to execute during init .EE .SH EXAMPLES .IP .EX distrobox\-init \-\-name test\-user \-\-user 1000 \-\-group 1000 \-\-home /home/test\-user distrobox\-init \-\-upgrade .EE distrobox-1.8.1.2/man/man1/distrobox-list.1000066400000000000000000000023221474517124600203670ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-LIST" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox list distrobox\-list .EE .SH DESCRIPTION distrobox\-list lists available distroboxes. It detects them and lists them separately from the rest of normal containers. .SH SYNOPSIS \f[B]distrobox list\f[R] .IP .EX \-\-help/\-h: show this message \-\-no\-color: disable color formatting \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-list .EE .PP You can also use environment variables to specify container manager .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox\-list .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_SUDO_PROGRAM .EE [IMAGE: \c .UR https://user-images.githubusercontent.com/598882/147831082-24b5bc2e-b47e-49ac-9b1a-a209478c9705.png image .UE \c ] image distrobox-1.8.1.2/man/man1/distrobox-rm.1000066400000000000000000000023471474517124600200410ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-RM" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox rm distrobox\-rm .EE .SH DESCRIPTION distrobox\-rm delete one of the available distroboxes. .SH SYNOPSIS \f[B]distrobox rm\f[R] .IP .EX \-\-all/\-a: delete all distroboxes \-\-force/\-f: force deletion \-\-rm\-home: remove the mounted home if it differs from the host user\[aq]s one \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-rm container\-name [\-\-force] [\-\-all] .EE .PP You can also use environment variables to specify container manager and name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-rm .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE distrobox-1.8.1.2/man/man1/distrobox-stop.1000066400000000000000000000025501474517124600204040ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-STOP" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox stop distrobox\-stop .EE .SH DESCRIPTION distrobox\-stop stop a running distrobox. .PP Distroboxes are left running, even after exiting out of them, so that subsequent enters are really quick. This is how they can be stopped. .SH SYNOPSIS \f[B]distrobox stop\f[R] .IP .EX \-\-all/\-a: stop all distroboxes \-\-yes/\-Y: non\-interactive, stop without asking \-\-help/\-h: show this message \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-stop container\-name1 container\-name2 distrobox\-stop container\-name distrobox\-stop \-\-all .EE .PP You can also use environment variables to specify container manager and name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-stop .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE distrobox-1.8.1.2/man/man1/distrobox-upgrade.1000066400000000000000000000036501474517124600210500ustar00rootroot00000000000000.\ .\" .TH "DISTROBOX\-UPGRADE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-upgrade .EE .SH DESCRIPTION distrobox\-upgrade will enter the specified list of containers and will perform an upgrade using the container\[cq]s package manager. .SH SYNOPSIS \f[B]distrobox upgrade\f[R] .IP .EX \-\-help/\-h: show this message \-\-all/\-a: perform for all distroboxes \-\-running: perform only for running distroboxes \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Upgrade all distroboxes .IP .EX distrobox\-upgrade \-\-all .EE .PP Upgrade all running distroboxes .IP .EX distrobox\-upgrade \-\-all \-\-running .EE .PP Upgrade a specific distrobox .IP .EX distrobox\-upgrade alpine\-linux .EE .PP Upgrade a list of distroboxes .IP .EX distrobox\-upgrade alpine\-linux ubuntu22 my\-distrobox123 .EE .PP \f[B]Automatically update all distro\f[R] .PP You can create a systemd service to perform distrobox\-upgrade automatically, this example shows how to run it daily: .PP \[ti]/.config/systemd/user/distrobox\-upgrade.service .IP .EX [Unit] Description=distrobox\-upgrade Automatic Update [Service] Type=simple ExecStart=distrobox\-upgrade \-\-all StandardOutput=null .EE .PP \[ti]/.config/systemd/user/distrobox\-upgrade.timer .IP .EX [Unit] Description=distrobox\-upgrade Automatic Update Trigger [Timer] OnBootSec=1h OnUnitInactiveSec=1d [Install] WantedBy=timers.target .EE .PP Then simply do a \f[CR]systemctl \-\-user daemon\-reload && systemctl \-\-user enable \-\-now distrobox\-upgrade.timer\f[R] distrobox-1.8.1.2/man/man1/distrobox.1000066400000000000000000001461251474517124600174300ustar00rootroot00000000000000'\" t .\ .\" .TH "DISTROBOX\-ASSEMBLE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox assemble distrobox\-assemble .EE .SH DESCRIPTION distrobox\-assemble takes care of creating or destroying containers in batches, based on a manifest file. The manifest file by default is \f[CR]./distrobox.ini\f[R], but can be specified using the \f[CR]\-\-file\f[R] flag. .SH SYNOPSIS \f[B]distrobox assemble\f[R] .IP .EX \-\-file: path or URL to the distrobox manifest/ini file \-\-name/\-n: run against a single entry in the manifest/ini file \-\-replace/\-R: replace already existing distroboxes with matching names \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES This is an example manifest file to create two containers: .IP .EX [ubuntu] additional_packages=\[dq]git vim tmux nodejs\[dq] image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=false # You can add comments using this # [arch] # also inline comments are supported additional_packages=\[dq]git vim tmux nodejs\[dq] home=/tmp/home image=archlinux:latest init=false start_now=true init_hooks=\[dq]touch /init\-normal\[dq] nvidia=true pre_init_hooks=\[dq]touch /pre\-init\[dq] pull=true root=false replace=false volume=\[dq]/tmp/test:/run/a /tmp/test:/run/b\[dq] .EE .PP \f[B]Create\f[R] .PP We can bring them up simply using .IP .EX distrobox assemble create .EE .PP If the file is called \f[CR]distrobox.ini\f[R] and is in the same directory you\[cq]re launching the command, no further arguments are needed. You can specify a custom path for the file using .IP .EX distrobox assemble create \-\-file /my/custom/path.ini .EE .PP Or even specify a remote file, by using an URL: .IP .EX distrobox\-assemble create \-\-file https://raw.githubusercontent.com/89luca89/dotfiles/master/distrobox.ini .EE .PP \f[B]Replace\f[R] .PP By default, \f[CR]distrobox assemble\f[R] will replace a container only if \f[CR]replace=true\f[R] is specified in the manifest file. .PP In the example of the manifest above, the ubuntu container will always be replaced when running \f[CR]distrobox assemble create\f[R], while the arch container will not. .PP To force a replace for all containers in a manifest use the \f[CR]\-\-replace\f[R] flag .IP .EX distrobox assemble create \-\-replace [\-\-file my/custom/path.ini] .EE .PP \f[B]Remove\f[R] .PP We can bring down all the containers in a manifest file by simply doing .IP .EX distrobox assemble rm .EE .PP Or using a custom path for the ini file .IP .EX distrobox assemble rm \-\-file my/custom/path.ini .EE .PP \f[B]Test\f[R] .PP You can always test what distrobox \f[B]would do\f[R] by using the \f[CR]\-\-dry\-run\f[R] flag. This command will only print what commands distrobox would do without actually running them. .PP \f[B]Clone\f[R] .PP \f[B]Disclaimer\f[R]: You need to start the container once to ensure it is fully initialized and created before cloning it. The container being copied must also be stopped before the cloning process can proceed. .PP \f[B]Available options\f[R] .PP This is a list of available options with the corresponding type: .PP Types legend: .IP \[bu] 2 bool: true or false .IP \[bu] 2 string: a single string, for example \f[CR]home=\[dq]/home/luca\-linux/dbox\[dq]\f[R] .IP \[bu] 2 string_list: multiple strings, for example \f[CR]additional_packages=\[dq]htop vim git\[dq]\f[R]. Note that \f[CR]string_list\f[R] can be declared multiple times to be compounded: .RS 2 .IP .EX \f[B][ubuntu]\f[R] image=ubuntu:latest additional_packages=\[dq]git vim tmux nodejs\[dq] additional_packages=\[dq]htop iftop iotop\[dq] additional_packages=\[dq]zsh fish\[dq] .EE .RE .PP .TS tab(@); lw(23.3n) lw(23.3n) lw(23.3n). T{ Flag Name T}@T{ Type T}@T{ T} _ T{ additional_flags T}@T{ string_list T}@T{ Additional flags to pass to the container manager T} T{ additional_packages T}@T{ string_list T}@T{ Additional packages to install inside the container T} T{ home T}@T{ string T}@T{ Which home directory should the container use T} T{ image T}@T{ string T}@T{ Which image should the container use, look here for a list T} T{ clone T}@T{ string T}@T{ Name of the Distrobox container to use as the base for a new container (the container must be stopped). T} T{ init_hooks T}@T{ string_list T}@T{ Commands to run inside the container, after the packages setup T} T{ pre_init_hooks T}@T{ string_list T}@T{ Commands to run inside the container, before the packages setup T} T{ volume T}@T{ string_list T}@T{ Additional volumes to mount inside the containers T} T{ exported_apps T}@T{ string_list T}@T{ App names or desktopfile paths to export T} T{ exported_bins T}@T{ string_list T}@T{ Binaries to export T} T{ exported_bins_path T}@T{ string T}@T{ Optional path where to export binaries (default: $HOME/.local/bin) T} T{ entry T}@T{ bool T}@T{ Generate an entry for the container in the app list (default: false) T} T{ start_now T}@T{ bool T}@T{ Start the container immediately (default: false) T} T{ init T}@T{ bool T}@T{ Specify if this is an initful container (default: false) T} T{ nvidia T}@T{ bool T}@T{ Specify if you want to enable NVidia drivers integration (default: false) T} T{ pull T}@T{ bool T}@T{ Specify if you want to pull the image every time (default: false) T} T{ root T}@T{ bool T}@T{ Specify if the container is rootful (default: false) T} T{ unshare_ipc T}@T{ bool T}@T{ Specify if the container should unshare the ipc namespace (default: false) T} T{ unshare_netns T}@T{ bool T}@T{ Specify if the container should unshare the network namespace (default: false) T} T{ unshare_process T}@T{ bool T}@T{ Specify if the container should unshare the process (pid) namespace (default: false) T} T{ unshare_devsys T}@T{ bool T}@T{ Specify if the container should unshare /dev (default: false) T} T{ unshare_all T}@T{ bool T}@T{ Specify if the container should unshare all the previous options (default: false) T} .TE .PP For further explanation of each of the option in the list, take a look at the distrobox create usage, each option corresponds to one of the \f[CR]create\f[R] flags. .PP \f[B]Advanced example\f[R] .IP .EX [tumbleweed_distrobox] image=registry.opensuse.org/opensuse/distrobox pull=true additional_packages=\[dq]acpi bash\-completion findutils iproute iputils sensors inotify\-tools unzip\[dq] additional_packages=\[dq]net\-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt\-dlp\[dq] additional_packages=\[dq]git git\-credential\-libsecret\[dq] additional_packages=\[dq]patterns\-devel\-base\-devel_basis\[dq] additional_packages=\[dq]ShellCheck ansible\-lint clang clang\-tools codespell ctags desktop\-file\-utils gcc golang jq python3\[dq] additional_packages=\[dq]python3\-bashate python3\-flake8 python3\-mypy python3\-pipx python3\-pycodestyle python3\-pyflakes python3\-pylint python3\-python\-lsp\-server python3\-rstcheck python3\-yapf python3\-yamllint rustup shfmt\[dq] additional_packages=\[dq]kubernetes\-client helm\[dq] init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install github.com/golangci/golangci\-lint/cmd/golangci\-lint\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install golang.org/x/tools/gopls\[at]latest; init_hooks=GOPATH=\[dq]${HOME}/.local/share/system\-go\[dq] GOBIN=/usr/local/bin go install sigs.k8s.io/kind\[at]latest; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/conmon; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/crun; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/docker; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/docker\-compose; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/flatpak; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/podman; init_hooks=ln \-sf /usr/bin/distrobox\-host\-exec /usr/local/bin/xdg\-open; exported_apps=\[dq]htop\[dq] exported_bins=\[dq]/usr/bin/htop /usr/bin/git\[dq] exported_bins_path=\[dq]\[ti]/.local/bin\[dq] .EE .PP \f[B]Clone example\f[R] .IP .EX [ubuntu] additional_packages=\[dq]git vim tmux\[dq] image=ubuntu:latest init=false nvidia=false pull=true root=false replace=true start_now=true [deno_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl \-fsSL https://deno.land/install.sh | sh; [bun_ubuntu] clone=ubuntu init=false nvidia=false pull=true root=false replace=true start_now=true pre_init_hooks=curl \-fsSL https://bun.sh/install | bash; .EE '\" t .\ .\" .TH "DISTROBOX" "1" "Jan 2025" "Distrobox" "User Manual" .SH COMPATIBILITY This project \f[B]does not need a dedicated image\f[R]. It can use any OCI images from docker\-hub, quay.io, or any registry of your choice. .PP Many cloud images are stripped down on purpose to save size and may not include commands such as \f[CR]which\f[R], \f[CR]mount\f[R], \f[CR]less\f[R] or \f[CR]vi\f[R]). Additional packages can be installed once inside the container. We recommend using your preferred automation tool inside the container if you find yourself having to repeatedly create new containers. Maintaining your own custom image is also an option. .PP The main concern is having basic Linux utilities (\f[CR]mount\f[R]), basic user management utilities (\f[CR]usermod, passwd\f[R]), and \f[CR]sudo\f[R] correctly set. .SS SUPPORTED CONTAINER MANAGERS \f[CR]distrobox\f[R] can run on either \f[CR]podman\f[R], \f[CR]docker\f[R] or \c .UR https://github.com/89luca89/lilipod \f[CR]lilipod\f[R] .UE \c .PP It depends either on \f[CR]podman\f[R] configured in \f[CR]rootless mode\f[R] or on \f[CR]docker\f[R] configured without sudo (follow \c .UR https://docs.docker.com/engine/install/linux-postinstall/ THESE instructions .UE \c ) .IP \[bu] 2 Minimum podman version: \f[B]2.1.0\f[R] .IP \[bu] 2 Minimum docker client version: \f[B]19.03.15\f[R] .IP \[bu] 2 Minimum lilipod version: \f[B]v0.0.1\f[R] .PP Follow the official installation guide here: .IP \[bu] 2 \c .UR https://podman.io/getting-started/installation .UE \c .IP \[bu] 2 \c .UR https://docs.docker.com/engine/install .UE \c .IP \[bu] 2 \c .UR https://docs.docker.com/engine/install/linux-postinstall/ .UE \c .SS CONTAINERS DISTROS Distrobox guests tested successfully with the following container images: .PP .TS tab(@); lw(23.3n) lw(23.3n) lw(23.3n). T{ Distro T}@T{ Version T}@T{ Images T} _ T{ AlmaLinux (Toolbox) T}@T{ 8 9 T}@T{ quay.io/toolbx\-images/almalinux\-toolbox:8 quay.io/toolbx\-images/almalinux\-toolbox:9 quay.io/toolbx\-images/almalinux\-toolbox:latest T} T{ Alpine (Toolbox) T}@T{ 3.16 3.17 3.18 3.19 3.20 edge T}@T{ quay.io/toolbx\-images/alpine\-toolbox:3.16 quay.io/toolbx\-images/alpine\-toolbox:3.17 quay.io/toolbx\-images/alpine\-toolbox:3.18 quay.io/toolbx\-images/alpine\-toolbox:3.19 quay.io/toolbx\-images/alpine\-toolbox:3.20 quay.io/toolbx\-images/alpine\-toolbox:edge quay.io/toolbx\-images/alpine\-toolbox:latest T} T{ AmazonLinux (Toolbox) T}@T{ 2 2022 T}@T{ quay.io/toolbx\-images/amazonlinux\-toolbox:2 quay.io/toolbx\-images/amazonlinux\-toolbox:2023 quay.io/toolbx\-images/amazonlinux\-toolbox:latest T} T{ Archlinux (Toolbox) T}@T{ T}@T{ quay.io/toolbx/arch\-toolbox:latest T} T{ Bazzite Arch T}@T{ T}@T{ ghcr.io/ublue\-os/bazzite\-arch:latest ghcr.io/ublue\-os/bazzite\-arch\-gnome:latest T} T{ Centos (Toolbox) T}@T{ stream8 stream9 T}@T{ quay.io/toolbx\-images/centos\-toolbox:stream8 quay.io/toolbx\-images/centos\-toolbox:stream9 quay.io/toolbx\-images/centos\-toolbox:latest T} T{ Debian (Toolbox) T}@T{ 10 11 12 testing unstable T}@T{ quay.io/toolbx\-images/debian\-toolbox:10 quay.io/toolbx\-images/debian\-toolbox:11 quay.io/toolbx\-images/debian\-toolbox:12 quay.io/toolbx\-images/debian\-toolbox:testing quay.io/toolbx\-images/debian\-toolbox:unstable quay.io/toolbx\-images/debian\-toolbox:latest T} T{ Fedora (Toolbox) T}@T{ 37 38 39 40 41 Rawhide T}@T{ registry.fedoraproject.org/fedora\-toolbox:37 registry.fedoraproject.org/fedora\-toolbox:38 registry.fedoraproject.org/fedora\-toolbox:39 registry.fedoraproject.org/fedora\-toolbox:40 quay.io/fedora/fedora\-toolbox:41 quay.io/fedora/fedora\-toolbox:rawhide T} T{ openSUSE (Toolbox) T}@T{ T}@T{ registry.opensuse.org/opensuse/distrobox:latest T} T{ RedHat (Toolbox) T}@T{ 8 9 T}@T{ registry.access.redhat.com/ubi8/toolbox registry.access.redhat.com/ubi9/toolbox T} T{ Rocky Linux (Toolbox) T}@T{ 8 9 T}@T{ quay.io/toolbx\-images/rockylinux\-toolbox:8 quay.io/toolbx\-images/rockylinux\-toolbox:9 quay.io/toolbx\-images/rockylinux\-toolbox:latest T} T{ Ubuntu (Toolbox) T}@T{ 16.04 18.04 20.04 22.04 24.04 T}@T{ quay.io/toolbx/ubuntu\-toolbox:16.04 quay.io/toolbx/ubuntu\-toolbox:18.04 quay.io/toolbx/ubuntu\-toolbox:20.04 quay.io/toolbx/ubuntu\-toolbox:22.04 quay.io/toolbx/ubuntu\-toolbox:24.04 quay.io/toolbx/ubuntu\-toolbox:latest T} T{ Chainguard Wolfi (Toolbox) T}@T{ T}@T{ quay.io/toolbx\-images/wolfi\-toolbox:latest T} T{ Ublue T}@T{ bluefin\-cli ubuntu\-toolbox fedora\-toolbox wolfi\-toolbox archlinux\-distrobox powershell\-toolbox T}@T{ ghcr.io/ublue\-os/bluefin\-cli ghcr.io/ublue\-os/bluefin\-cli ghcr.io/ublue\-os/ubuntu\-toolbox ghcr.io/ublue\-os/fedora\-toolbox ghcr.io/ublue\-os/wolfi\-toolbox ghcr.io/ublue\-os/arch\-distrobox ghcr.io/ublue\-os/powershell\-toolbox T} T{ T}@T{ T}@T{ T} T{ AlmaLinux T}@T{ 8 8\-minimal 9 9\-minimal T}@T{ docker.io/library/almalinux:8 docker.io/library/almalinux:9 T} T{ Alpine Linux T}@T{ 3.15 3.16 3.17 3.18 3.19 3.20 edge T}@T{ docker.io/library/alpine:3.15 docker.io/library/alpine:3.16 docker.io/library/alpine:3.17 docker.io/library/alpine:3.18 docker.io/library/alpine:3.19 docker.io/library/alpine:3.20 docker.io/library/alpine:edge docker.io/library/alpine:latest T} T{ AmazonLinux T}@T{ 1 2 2023 T}@T{ public.ecr.aws/amazonlinux/amazonlinux:1 public.ecr.aws/amazonlinux/amazonlinux:2 public.ecr.aws/amazonlinux/amazonlinux:2023 T} T{ Archlinux T}@T{ T}@T{ docker.io/library/archlinux:latest T} T{ Blackarch T}@T{ T}@T{ docker.io/blackarchlinux/blackarch:latest T} T{ CentOS Stream T}@T{ 8 9 T}@T{ quay.io/centos/centos:stream8 quay.io/centos/centos:stream9 T} T{ Chainguard Wolfi T}@T{ T}@T{ cgr.dev/chainguard/wolfi\-base:latest T} T{ ClearLinux T}@T{ T}@T{ docker.io/library/clearlinux:latest docker.io/library/clearlinux:base T} T{ Crystal Linux T}@T{ T}@T{ registry.gitlab.com/crystal\-linux/misc/docker:latest T} T{ Debian T}@T{ 7 8 9 10 11 12 T}@T{ docker.io/debian/eol:wheezy docker.io/library/debian:buster docker.io/library/debian:bullseye\-backports docker.io/library/debian:bookworm\-backports docker.io/library/debian:stable\-backports T} T{ Debian T}@T{ Testing T}@T{ docker.io/library/debian:testing docker.io/library/debian:testing\-backports T} T{ Debian T}@T{ Unstable T}@T{ docker.io/library/debian:unstable T} T{ deepin T}@T{ 20 (apricot) 23 (beige) T}@T{ docker.io/linuxdeepin/apricot docker.io/linuxdeepin/deepin:beige T} T{ Fedora T}@T{ 36 37 38 39 40 41 Rawhide T}@T{ quay.io/fedora/fedora:36 quay.io/fedora/fedora:37 quay.io/fedora/fedora:38 quay.io/fedora/fedora:39 quay.io/fedora/fedora:40 quay.io/fedora/fedora:41 quay.io/fedora/fedora:rawhide T} T{ Gentoo Linux T}@T{ rolling T}@T{ docker.io/gentoo/stage3:latest T} T{ KDE neon T}@T{ Latest T}@T{ invent\-registry.kde.org/neon/docker\-images/plasma:latest T} T{ Kali Linux T}@T{ rolling T}@T{ docker.io/kalilinux/kali\-rolling:latest T} T{ Mint T}@T{ 21.1 T}@T{ docker.io/linuxmintd/mint21.1\-amd64 T} T{ Neurodebian T}@T{ nd100 T}@T{ docker.io/library/neurodebian:nd100 T} T{ openSUSE T}@T{ Leap T}@T{ registry.opensuse.org/opensuse/leap:latest T} T{ openSUSE T}@T{ Tumbleweed T}@T{ registry.opensuse.org/opensuse/distrobox:latest registry.opensuse.org/opensuse/tumbleweed:latest registry.opensuse.org/opensuse/toolbox:latest T} T{ Oracle Linux T}@T{ 7 7\-slim 8 8\-slim 9 9\-slim T}@T{ container\-registry.oracle.com/os/oraclelinux:7 container\-registry.oracle.com/os/oraclelinux:7\-slim container\-registry.oracle.com/os/oraclelinux:8 container\-registry.oracle.com/os/oraclelinux:8\-slim container\-registry.oracle.com/os/oraclelinux:9 container\-registry.oracle.com/os/oraclelinux:9\-slim T} T{ RedHat (UBI) T}@T{ 7 8 9 T}@T{ registry.access.redhat.com/ubi7/ubi registry.access.redhat.com/ubi8/ubi \ registry.access.redhat.com/ubi8/ubi\-init registry.access.redhat.com/ubi8/ubi\-minimal registry.access.redhat.com/ubi9/ubi registry.access.redhat.com/ubi9/ubi\-init registry.access.redhat.com/ubi9/ubi\-minimal T} T{ Rocky Linux T}@T{ 8 8\-minimal 9 T}@T{ quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8\-minimal quay.io/rockylinux/rockylinux:9 quay.io/rockylinux/rockylinux:latest T} T{ Slackware T}@T{ T}@T{ docker.io/vbatts/slackware:current T} T{ SteamOS T}@T{ T}@T{ ghcr.io/linuxserver/steamos:latest T} T{ Ubuntu T}@T{ 14.04 16.04 18.04 20.04 22.04 24.04 T}@T{ docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04 docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04 docker.io/library/ubuntu:22.04 docker.io/library/ubuntu:24.04 T} T{ Vanilla OS T}@T{ VSO T}@T{ ghcr.io/vanilla\-os/vso:main T} T{ Void Linux T}@T{ glibc musl T}@T{ ghcr.io/void\-linux/void\-glibc\-full:latest ghcr.io/void\-linux/void\-musl\-full:latest T} .TE .PP Images marked with \f[B]Toolbox\f[R] are tailored images made by the community efforts in \c .UR https://github.com/toolbx-images/images toolbx\-images/images .UE \c , so they are more indicated for desktop use, and first setup will take less time. Note however that if you use a non\-toolbox preconfigured image, the \f[B]first\f[R] \f[CR]distrobox\-enter\f[R] you\[cq]ll perform can take a while as it will download and install the missing dependencies. .PP A small time tax to pay for the ability to use any type of image. This will \f[B]not\f[R] occur after the first time, \f[B]subsequent enters will be much faster.\f[R] .PP NixOS is not a supported container distro, and there are currently no plans to bring support to it. If you are looking for unprivileged NixOS environments, we suggest you look into \c .UR https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html nix\-shell .UE \c \ or \c .UR https://github.com/DavHau/nix-portable nix portable .UE \c .SS NEW DISTRO SUPPORT If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it. .PP Or just try using it anyway, if it works, open an issue and it will be added to the list! .SS OLDER DISTRIBUTIONS For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04, compatibility is not assured. .PP Their \f[CR]libc\f[R] version is incompatible with kernel releases after \f[CR]>=4.11\f[R]. A work around this is to use the \f[CR]vsyscall=emulate\f[R] flag in the bootloader of the host. .PP Keep also in mind that mirrors could be down for such old releases, so you will need to build a custom distrobox image to ensure basic dependencies are met. .SS GPU ACCELERATION SUPPORT For Intel and AMD Gpus, the support is baked in, as the containers will install their latest available mesa/dri drivers. .PP For NVidia, you can use the \f[CR]\-\-nvidia\f[R] flag during create, see distrobox\-create documentation to discover how to use it. .PP Alternatively, you can use the nvidia\-container\-toolkit utility to set up the integration independently from the distrobox\[cq]s own flag. .\ .\" .TH "DISTROBOX\-CREATE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox create distrobox\-create .EE .SH DESCRIPTION distrobox\-create takes care of creating the container with input name and image. The created container will be tightly integrated with the host, allowing sharing of the HOME directory of the user, external storage, external usb devices and graphical apps (X11/Wayland), and audio. .SH SYNOPSIS \f[B]distrobox create\f[R] .IP .EX \-\-image/\-i: image to use for the container default: ${container_image_default} \-\-name/\-n: name for the distrobox default: ${container_name_default} \-\-hostname: hostname for the distrobox default: .$(uname \-n) \-\-pull/\-p: pull the image even if it exists locally (implies \-\-yes) \-\-yes/\-Y: non\-interactive, pull images without asking \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-clone/\-c: name of the distrobox container to use as base for a new container this will be useful to either rename an existing distrobox or have multiple copies of the same environment. \-\-home/\-H: select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files. \-\-volume: additional volumes to add to the container \-\-additional\-flags/\-a: additional flags to pass to the container manager command \-\-additional\-packages/\-ap: additional packages to install during initial container setup \-\-init\-hooks: additional commands to execute at the end of container initialization \-\-pre\-init\-hooks: additional commands to execute at the start of container initialization \-\-init/\-I: use init system (like systemd) inside the container. this will make host\[aq]s processes not visible from within the container. (assumes \-\-unshare\-process) may require additional packages depending on the container image: https://github.com/89luca89/distrobox/blob/main/docs/useful_tips.md#using\-init\-system\-inside\-a\-distrobox \-\-nvidia: try to integrate host\[aq]s nVidia drivers in the guest \-\-platform: specify which platform to use, eg: linux/arm64 \-\-unshare\-devsys: do not share host devices and sysfs dirs from host \-\-unshare\-groups: do not forward user\[aq]s additional groups into the container \-\-unshare\-ipc: do not share ipc namespace with host \-\-unshare\-netns: do not share the net namespace with host \-\-unshare\-process: do not share process namespace with host \-\-unshare\-all: activate all the unshare flags below \-\-compatibility/\-C: show list of compatible images \-\-help/\-h: show this message \-\-no\-entry: do not generate a container entry in the application list \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-absolutely\-disable\-root\-password\-i\-am\-really\-positively\-sure: ⚠️ ⚠️ when setting up a rootful distrobox, this will skip user password setup, leaving it blank. ⚠️ ⚠️ .EE .SH COMPATIBILITY .IP .EX for a list of compatible images and container managers, please consult the man page: man distrobox man distrobox\-compatibility or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers\-distros .EE .SH EXAMPLES Create a distrobox with image alpine, called my\-alpine container .IP .EX distrobox create \-\-image alpine my\-alpine\-container .EE .PP Create a distrobox from fedora\-toolbox:35 image .IP .EX distrobox create \-\-image registry.fedoraproject.org/fedora\-toolbox:35 \-\-name fedora\-toolbox\-35 .EE .PP Clone an existing distrobox container .IP .EX distrobox create \-\-clone fedora\-35 \-\-name fedora\-35\-copy .EE .PP Always pull for the new image when creating a distrobox .IP .EX distrobox create \-\-pull \-\-image centos:stream9 \-\-home \[ti]/distrobox/centos9 .EE .PP Add additional environment variables to the container .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] .EE .PP Add additional volumes to the container .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-volume /opt/my\-dir:/usr/local/my\-dir:rw \-\-additional\-flags \[dq]\-\-pids\-limit \-1\[dq] .EE .PP Add additional packages to the container .IP .EX distrobox create \-\-image alpine:latest \-\-name test2 \-\-additional\-packages \[dq]git tmux vim\[dq] .EE .PP Use init\-hooks to perform an action during container startup .IP .EX distrobox create \-\-image alpine:latest \-\-name test \-\-init\-hooks \[dq]touch /var/tmp/test1 && touch /var/tmp/test2\[dq] .EE .PP Use pre\-init\-hooks to perform an action at the beginning of the container startup (before any package manager starts) .IP .EX distrobox create \-i docker.io/almalinux/8\-init \-\-init \-\-name test \-\-pre\-init\-hooks \[dq]dnf config\-manager \-\-enable powertools && dnf \-y install epel\-release\[dq] .EE .PP Use init to create a Systemd container (acts similar to an LXC): .IP .EX distrobox create \-i ubuntu:latest \-\-name test \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-\-init .EE .PP Use init to create a OpenRC container (acts similar to an LXC): .IP .EX distrobox create \-i alpine:latest \-\-name test \-\-additional\-packages \[dq]openrc\[dq] \-\-init .EE .PP Use host\[cq]s NVidia drivers integration .IP .EX distrobox create \-\-image ubuntu:22.04 \-\-name ubuntu\-nvidia \-\-nvidia .EE .PP Do not use host\[cq]s IP inside the container: .IP .EX distrobox create \-\-image ubuntu:latest \-\-name test \-\-unshare\-netns .EE .PP Create a more isolated container, where only the $HOME, basic sockets and host\[cq]s FS (in /run/host) is shared: .IP .EX distrobox create \-\-name unshared\-test \-\-unshare\-all .EE .PP Create a more isolated container, with it\[cq]s own init system, this will act very similar to a full LXC container: .IP .EX distrobox create \-\-name unshared\-init\-test \-\-unshare\-all \-\-init \-\-image fedora:latest .EE .PP Use environment variables to specify container name, image and container manager: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test\-alpine DBX_CONTAINER_IMAGE=alpine distrobox\-create .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_ALWAYS_PULL DBX_CONTAINER_CUSTOM_HOME DBX_CONTAINER_HOME_PREFIX DBX_CONTAINER_IMAGE DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_CONTAINER_HOSTNAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE .PP DBX_CONTAINER_HOME_PREFIX defines where containers\[cq] home directories will be located. If you define it as \[ti]/dbx then all future containers\[cq] home directories will be \[ti]/dbx/$container_name .SH EXTRA The \f[CR]\-\-additional\-flags\f[R] or \f[CR]\-a\f[R] is useful to modify defaults in the container creations. For example: .IP .EX distrobox create \-i docker.io/library/archlinux \-n dev\-arch podman container inspect dev\-arch | jq \[aq].[0].HostConfig.PidsLimit\[aq] 2048 distrobox rm \-f dev\-arch distrobox create \-i docker.io/library/archlinux \-n dev\-arch \-\-volume $CBL_TC:/tc \-\-additional\-flags \[dq]\-\-pids\-limit \-1\[dq] podman container inspect dev\-arch | jq \[aq].[0].HostConfig,.PidsLimit\[aq] 0 .EE .PP Additional volumes can be specified using the \f[CR]\-\-volume\f[R] flag. This flag follows the same standard as \f[CR]docker\f[R] and \f[CR]podman\f[R] to specify the mount point so \f[CR]\-\-volume SOURCE_PATH:DEST_PATH:MODE\f[R]. .IP .EX distrobox create \-\-image docker.io/library/archlinux \-\-name dev\-arch \-\-volume /usr/share/:/var/test:ro .EE .PP During container creation, it is possible to specify (using the additional\-flags) some environment variables that will persist in the container and be independent from your environment: .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] .EE .PP The \f[CR]\-\-init\-hooks\f[R] is useful to add commands to the entrypoint (init) of the container. This could be useful to create containers with a set of programs already installed, add users, groups. .IP .EX distrobox create \-\-image fedora:35 \-\-name test \-\-init\-hooks \[dq]dnf groupinstall \-y \[rs]\[dq]C Development Tools and Libraries\[rs]\[dq]\[dq] .EE .PP The \f[CR]\-\-init\f[R] is useful to create a container that will use its own separate init system within. For example using: .IP .EX distrobox create \-i docker.io/almalinux/8\-init \-\-init \-\-name test distrobox create \-i docker.io/library/debian \-\-additional\-packages \[dq]systemd\[dq] \-\-init \-\-name test\-debian .EE .PP Inside the container we will be able to use normal systemd units: .IP .EX \[ti]$ distrobox enter test user\[at]test:\[ti]$ sudo systemctl enable \-\-now sshd user\[at]test:\[ti]$ sudo systemctl status sshd ● sshd.service \- OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022\-01\-28 22:54:50 CET; 17s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 291 (sshd) .EE .PP Note that enabling \f[CR]\-\-init\f[R] \f[B]will disable host\[cq]s process integration\f[R]. From within the container you will not be able to see and manage host\[cq]s processes. This is needed because \f[CR]/sbin/init\f[R] must be pid 1. .PP If you want to use a non\-pre\-create image, you\[cq]ll need to add the additional package: .IP .EX distrobox create \-i alpine:latest \-\-init \-\-additional\-packages \[dq]openrc\[dq] \-n test distrobox create \-i debian:stable \-\-init \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-n test distrobox create \-i ubuntu:22.04 \-\-init \-\-additional\-packages \[dq]systemd libpam\-systemd pipewire\-audio\-client\-libraries\[dq] \-n test distrobox create \-i archlinux:latest \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test distrobox create \-i registry.opensuse.org/opensuse/tumbleweed:latest \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test distrobox create \-i registry.fedoraproject.org/fedora:39 \-\-init \-\-additional\-packages \[dq]systemd\[dq] \-n test .EE .PP The \f[CR]\-\-init\f[R] flag is useful to create system containers, where the container acts more similar to a full VM than an application\-container. Inside you\[cq]ll have a separate init, user\-session, daemons and so on. .PP The \f[CR]\-\-home\f[R] flag let\[cq]s you specify a custom HOME for the container. Note that this will NOT prevent the mount of the host\[cq]s home directory, but will ensure that configs and dotfiles will not litter it. .PP The \f[CR]\-\-root\f[R] flag will let you create a container with real root privileges. At first \f[CR]enter\f[R] the user will be required to setup a password. This is done in order to not enable passwordless sudo/su, in a \f[B]rootful\f[R] container, this is needed because \f[B]in this mode, root inside the container is also root outside the container!\f[R] .PP The \f[CR]\-\-absolutely\-disable\-root\-password\-i\-am\-really\-positively\-sure\f[R] will skip user password setup, leaving it blank. \f[B]This is genuinely dangerous and you really, positively should NOT enable this\f[R]. .PP From version 1.4.0 of distrobox, when you create a new container, it will also generate an entry in the applications list. .SS NVidia integration If your host has an NVidia gpu, with installed proprietary drivers, you can integrate them with the guests by using the \f[CR]\-\-nvidia\f[R] flag: .PP \f[CR]distrobox create \-\-nvidia \-\-image ubuntu:latest \-\-name ubuntu\-nvidia\f[R] .PP Be aware that \f[B]this is not compatible with non\-glibc systems\f[R] and \f[B]needs somewhat newer distributions to work\f[R]. .PP This feature was tested working on: .IP \[bu] 2 Almalinux .IP \[bu] 2 Archlinux .IP \[bu] 2 Centos 7 and newer .IP \[bu] 2 Clearlinux .IP \[bu] 2 Debian 10 and newer .IP \[bu] 2 OpenSUSE Leap .IP \[bu] 2 OpenSUSE Tumbleweed .IP \[bu] 2 Rockylinux .IP \[bu] 2 Ubuntu 18.04 and newer .IP \[bu] 2 Void Linux (glibc) .\ .\" .TH "DISTROBOX\-ENTER" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox enter distrobox\-enter .EE .SH DESCRIPTION distrobox\-enter takes care of entering the container with the name specified. Default command executed is your SHELL, but you can specify different shells or entire commands to execute. If using it inside a script, an application, or a service, you can specify the \[en]headless mode to disable tty and interactivity. .SH SYNOPSIS \f[B]distrobox enter\f[R] .IP .EX \-\-name/\-n: name for the distrobox default: my\-distrobox \-\-/\-e: end arguments execute the rest as command to execute at login default: default ${USER}\[aq]s shell \-\-no\-tty/\-T: do not instantiate a tty \-\-no\-workdir/\-nw: always start the container from container\[aq]s home directory \-\-additional\-flags/\-a: additional flags to pass to the container manager command \-\-help/\-h: show this message \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-dry\-run/\-d: only print the container manager command generated \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Enter a distrobox named \[lq]example\[rq] .IP .EX distrobox\-enter example .EE .PP Enter a distrobox specifying a command .IP .EX distrobox\-enter \-\-name fedora\-toolbox\-35 \-\- bash \-l distrobox\-enter my\-alpine\-container \-\- sh \-l .EE .PP Use additional podman/docker/lilipod flags while entering a distrobox .IP .EX distrobox\-enter \-\-additional\-flags \[dq]\-\-preserve\-fds\[dq] \-\-name test \-\- bash \-l .EE .PP Specify additional environment variables while entering a distrobox .IP .EX distrobox\-enter \-\-additional\-flags \[dq]\-\-env MY_VAR=value\[dq] \-\-name test \-\- bash \-l MY_VAR=value distrobox\-enter \-\-additional\-flags \[dq]\-\-preserve\-fds\[dq] \-\-name test \-\- bash \-l .EE .PP You can also use environment variables to specify container manager and container name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-enter .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_NAME DBX_CONTAINER_MANAGER DBX_SKIP_WORKDIR DBX_SUDO_PROGRAM .EE .SH EXTRA This command is used to enter the distrobox itself. Personally, I just create multiple profiles in my \f[CR]gnome\-terminal\f[R] to have multiple distros accessible. .PP The \f[CR]\-\-additional\-flags\f[R] or \f[CR]\-a\f[R] is useful to modify default command when executing in the container. For example: .IP .EX distrobox enter \-n dev\-arch \-\-additional\-flags \[dq]\-\-env my_var=test\[dq] \-\- printenv &| grep my_var my_var=test .EE .PP This is possible also using normal env variables: .IP .EX my_var=test distrobox enter \-n dev\-arch \-\-additional\-flags \-\- printenv &| grep my_var my_var=test .EE .PP If you\[cq]d like to enter a rootful container having distrobox use a program other than `sudo' to run podman/docker/lilipod as root, such as `pkexec' or `doas', you may specify it with the \f[CR]DBX_SUDO_PROGRAM\f[R] environment variable. For example, to use `doas' to enter a rootful container: .IP .EX DBX_SUDO_PROGRAM=\[dq]doas\[dq] distrobox enter \-n container \-\-root .EE .PP Additionally, in one of the config file paths that distrobox supports, such as \f[CR]\[ti]/.distroboxrc\f[R], you can also append the line \f[CR]distrobox_sudo_program=\[dq]doas\[dq]\f[R] (for example) to always run distrobox commands involving rootful containers using `doas'. .\ .\" .TH "DISTROBOX\-EPHEMERAL" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox ephemeral distrobox\-ephemeral .EE .SH DESCRIPTION distrobox\-ephemeral creates a temporary distrobox that is automatically destroyed when the command is terminated. .SH SYNOPSIS \f[B]distrobox ephemeral\f[R] .IP .EX \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-help/\-h: show this message \-\-/\-e: end arguments execute the rest as command to execute at login default: default ${USER}\[aq]s shell \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-ephemeral \-\-image alpine:latest \-\- cat /etc/os\-release distrobox\-ephemeral \-\-root \-\-verbose \-\-image alpine:latest \-\-volume /opt:/opt .EE .PP You can also use flags from \f[B]distrobox\-create\f[R] to customize the ephemeral container to run. .SH SEE ALSO .IP .EX distrobox\-create \-\-help man distrobox\-create .EE .SH ENVIRONMENT VARIABLES .IP .EX distrobox\-ephemeral calls distrobox\-create, SEE ALSO distrobox\-create(1) for a list of supported environment variables to use. .EE .\ .\" .TH "DISTROBOX\-EXPORT" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-export .EE .SH DESCRIPTION \f[B]Application and binary exporting\f[R] .PP distrobox\-export takes care of exporting an app or a binary from the container to the host. .PP The exported app will be easily available in your normal launcher and it will automatically be launched from the container it is exported from. .SH SYNOPSIS \f[B]distrobox\-export\f[R] .IP .EX \-\-app/\-a: name of the application to export or absolute path to desktopfile to export \-\-bin/\-b: absolute path of the binary to export \-\-list\-apps: list applications exported from this container \-\-list\-binaries list binaries exported from this container, use \-ep to specify custom paths to search \-\-delete/\-d: delete exported application or binary \-\-export\-label/\-el: label to add to exported application name. Use \[dq]none\[dq] to disable. Defaults to (on \[rs]$container_name) \-\-export\-path/\-ep: path where to export the binary \-\-extra\-flags/\-ef: extra flags to add to the command \-\-enter\-flags/\-nf: flags to add to distrobox\-enter \-\-sudo/\-S: specify if the exported item should be run as sudo \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .PP You may want to install graphical applications or CLI tools in your distrobox. Using \f[CR]distrobox\-export\f[R] from \f[B]inside\f[R] the container will let you use them from the host itself. .SH EXAMPLES .IP .EX distrobox\-export \-\-app mpv [\-\-extra\-flags \[dq]flags\[dq]] [\-\-delete] [\-\-sudo] distrobox\-export \-\-bin /path/to/bin [\-\-export\-path \[ti]/.local/bin] [\-\-extra\-flags \[dq]flags\[dq]] [\-\-delete] [\-\-sudo] .EE .PP \f[B]App export example\f[R] .IP .EX distrobox\-export \-\-app abiword .EE .PP This tool will simply copy the original \f[CR].desktop\f[R] files along with needed icons, add the prefix \f[CR]/usr/local/bin/distrobox\-enter \-n distrobox_name \-e ...\f[R] to the commands to run, and save them in your home to be used directly from the host as a normal app. .IP .EX distrobox\-export \-\-app /opt/application/my\-app.desktop .EE .PP This will skip searching for the desktopfile in canonical paths, and just use the provided file path. .PP \f[B]Binary export example\f[R] .IP .EX distrobox\-export \-\-bin /usr/bin/code \-\-extra\-flags \[dq]\-\-foreground\[dq] \-\-export\-path $HOME/.local/bin .EE .PP In the case of exporting binaries, you will have to specify \f[B]where\f[R] to export it (\f[CR]\-\-export\-path\f[R]) and the tool will create a little wrapper script that will \f[CR]distrobox\-enter \-e\f[R] from the host, the desired binary. This can be handy with the use of \f[CR]direnv\f[R] to have different versions of the same binary based on your \f[CR]env\f[R] or project. .PP The exported binaries will be exported in the \[lq]\[en]export\-path\[rq] of choice as a wrapper script that acts naturally both on the host and in the container. .PP \f[B]Additional flags\f[R] .PP You can specify additional flags to add to the command, for example if you want to export an electron app, you could add the \[lq]\[en]foreground\[rq] flag to the command: .IP .EX distrobox\-export \-\-app atom \-\-extra\-flags \[dq]\-\-foreground\[dq] distrobox\-export \-\-bin /usr/bin/vim \-\-export\-path \[ti]/.local/bin \-\-extra\-flags \[dq]\-p\[dq] .EE .PP This works for binaries and apps. Extra flags are only used then the exported app or binary is used from the host, using them inside the container will not include them. .PP \f[B]Unexport\f[R] .PP The option \[lq]\[en]delete\[rq] will un\-export an app or binary .IP .EX distrobox\-export \-\-app atom \-\-delete distrobox\-export \-\-bin /usr/bin/vim \-\-export\-path \[ti]/.local/bin \-\-delete .EE .PP \f[B]Run as root in the container\f[R] .PP The option \[lq]\[en]sudo\[rq] will launch the exported item as root inside the distrobox. .PP \f[B]Notes\f[R] .PP Note you can use \[en]app OR \[en]bin but not together. [IMAGE: \c .UR https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png app\-export .UE \c ] app\-export .PP NOTE: some electron apps such as vscode and atom need additional flags to work from inside the container, use the \f[CR]\-\-extra\-flags\f[R] option to provide a series of flags, for example: .PP \f[CR]distrobox\-export \-\-app atom \-\-extra\-flags \[dq]\-\-foreground\[dq]\f[R] .\ .\" .TH "DISTROBOX\-GENERATE\-ENTRY" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox generate\-entry .EE .SH DESCRIPTION distrobox\-generate\-entry will create a desktop icon for one of the available distroboxes. This will be then deleted when you remove the matching distrobox. .SH SYNOPSIS \f[B]distrobox generate\-entry\f[R] .IP .EX \-\-help/\-h: show this message \-\-all/\-a: perform for all distroboxes \-\-delete/\-d: delete the entry \-\-icon/\-i: specify a custom icon [/path/to/icon] (default auto) \-\-root/\-r: perform on rootful distroboxes \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Generate an entry for a container .IP .EX distrobox generate\-entry my\-container\-name .EE .PP Specify a custom icon for the entry .IP .EX distrobox generate\-entry my\-container\-name \-\-icon /path/to/icon.png .EE .PP Generate an entry for all distroboxes .IP .EX distrobox generate\-entry \-\-all .EE .PP Delete an entry .IP .EX distrobox generate\-entry container\-name \-\-delete .EE .\ .\" .TH "DISTROBOX\-HOST\-EXEC" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-host\-exec .EE .SH DESCRIPTION distrobox\-host\-exec lets one execute command on the host, while inside of a container. .PP Under the hood, distrobox\-host\-exec uses \f[CR]host\-spawn\f[R] a project that lets us execute commands back on the host. If the tool is not found the user will be prompted to install it. .SH SYNOPSIS Just pass to \[lq]distrobox\-host\-exec\[rq] any command and all its arguments, if any. .IP .EX \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-yes/\-Y: Automatically answer yes to prompt: host\-spawn will be installed on the guest system if host\-spawn is not detected. This behaviour is default when running in a non\-interactive shell. .EE .PP If no command is provided, it will execute \[lq]$SHELL\[rq]. .PP Alternatively, use symlinks to make \f[CR]distrobox\-host\-exec\f[R] execute as that command: .IP .EX \[ti]$: ln \-s /usr/bin/distrobox\-host\-exec /usr/local/bin/podman \[ti]$: ls \-l /usr/local/bin/podman lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman \-> /usr/bin/distrobox\-host\-exec \[ti]$: podman version \&...this is executed on host... .EE .SH EXAMPLES .IP .EX distrobox\-host\-exec ls distrobox\-host\-exec bash \-l distrobox\-host\-exec flatpak run org.mozilla.firefox distrobox\-host\-exec podman ps \-a .EE .\ .\" .TH "DISTROBOX\-INIT" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-init .EE .SH DESCRIPTION \f[B]Init the distrobox (not to be launched manually)\f[R] .PP distrobox\-init is the entrypoint of a created distrobox. Note that this HAS to run from inside a distrobox, will not work if you run it from your host. .PP \f[B]This is not intended to be used manually, but instead used by distrobox\-create to set up the container\[cq]s entrypoint.\f[R] .PP distrobox\-init will take care of installing missing dependencies (eg. sudo), set up the user and groups, mount directories from the host to ensure the tight integration. .SH SYNOPSIS \f[B]distrobox\-init\f[R] .IP .EX \-\-name/\-n: user name \-\-user/\-u: uid of the user \-\-group/\-g: gid of the user \-\-home/\-d: path/to/home of the user \-\-help/\-h: show this message \-\-additional\-packages: packages to install in addition \-\-init/\-I: whether to use or not init \-\-pre\-init\-hooks: commands to execute prior to init \-\-nvidia: try to integrate host\[aq]s nVidia drivers in the guest \-\-upgrade/\-U: run init in upgrade mode \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version \-\-: end arguments execute the rest as command to execute during init .EE .SH EXAMPLES .IP .EX distrobox\-init \-\-name test\-user \-\-user 1000 \-\-group 1000 \-\-home /home/test\-user distrobox\-init \-\-upgrade .EE .\ .\" .TH "DISTROBOX\-LIST" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox list distrobox\-list .EE .SH DESCRIPTION distrobox\-list lists available distroboxes. It detects them and lists them separately from the rest of normal containers. .SH SYNOPSIS \f[B]distrobox list\f[R] .IP .EX \-\-help/\-h: show this message \-\-no\-color: disable color formatting \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-list .EE .PP You can also use environment variables to specify container manager .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox\-list .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_SUDO_PROGRAM .EE [IMAGE: \c .UR https://user-images.githubusercontent.com/598882/147831082-24b5bc2e-b47e-49ac-9b1a-a209478c9705.png image .UE \c ] image .\ .\" .TH "DISTROBOX\-RM" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox rm distrobox\-rm .EE .SH DESCRIPTION distrobox\-rm delete one of the available distroboxes. .SH SYNOPSIS \f[B]distrobox rm\f[R] .IP .EX \-\-all/\-a: delete all distroboxes \-\-force/\-f: force deletion \-\-rm\-home: remove the mounted home if it differs from the host user\[aq]s one \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-help/\-h: show this message \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-rm container\-name [\-\-force] [\-\-all] .EE .PP You can also use environment variables to specify container manager and name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-rm .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE .\ .\" .TH "DISTROBOX\-STOP" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox stop distrobox\-stop .EE .SH DESCRIPTION distrobox\-stop stop a running distrobox. .PP Distroboxes are left running, even after exiting out of them, so that subsequent enters are really quick. This is how they can be stopped. .SH SYNOPSIS \f[B]distrobox stop\f[R] .IP .EX \-\-all/\-a: stop all distroboxes \-\-yes/\-Y: non\-interactive, stop without asking \-\-help/\-h: show this message \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES .IP .EX distrobox\-stop container\-name1 container\-name2 distrobox\-stop container\-name distrobox\-stop \-\-all .EE .PP You can also use environment variables to specify container manager and name: .IP .EX DBX_CONTAINER_MANAGER=\[dq]docker\[dq] DBX_CONTAINER_NAME=test\-alpine distrobox\-stop .EE .SH ENVIRONMENT VARIABLES .IP .EX DBX_CONTAINER_MANAGER DBX_CONTAINER_NAME DBX_NON_INTERACTIVE DBX_SUDO_PROGRAM .EE .\ .\" .TH "DISTROBOX\-UPGRADE" "1" "Jan 2025" "Distrobox" "User Manual" .SH NAME .IP .EX distrobox\-upgrade .EE .SH DESCRIPTION distrobox\-upgrade will enter the specified list of containers and will perform an upgrade using the container\[cq]s package manager. .SH SYNOPSIS \f[B]distrobox upgrade\f[R] .IP .EX \-\-help/\-h: show this message \-\-all/\-a: perform for all distroboxes \-\-running: perform only for running distroboxes \-\-root/\-r: launch podman/docker/lilipod with root privileges. Note that if you need root this is the preferred way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary, specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable) \-\-verbose/\-v: show more verbosity \-\-version/\-V: show version .EE .SH EXAMPLES Upgrade all distroboxes .IP .EX distrobox\-upgrade \-\-all .EE .PP Upgrade all running distroboxes .IP .EX distrobox\-upgrade \-\-all \-\-running .EE .PP Upgrade a specific distrobox .IP .EX distrobox\-upgrade alpine\-linux .EE .PP Upgrade a list of distroboxes .IP .EX distrobox\-upgrade alpine\-linux ubuntu22 my\-distrobox123 .EE .PP \f[B]Automatically update all distro\f[R] .PP You can create a systemd service to perform distrobox\-upgrade automatically, this example shows how to run it daily: .PP \[ti]/.config/systemd/user/distrobox\-upgrade.service .IP .EX [Unit] Description=distrobox\-upgrade Automatic Update [Service] Type=simple ExecStart=distrobox\-upgrade \-\-all StandardOutput=null .EE .PP \[ti]/.config/systemd/user/distrobox\-upgrade.timer .IP .EX [Unit] Description=distrobox\-upgrade Automatic Update Trigger [Timer] OnBootSec=1h OnUnitInactiveSec=1d [Install] WantedBy=timers.target .EE .PP Then simply do a \f[CR]systemctl \-\-user daemon\-reload && systemctl \-\-user enable \-\-now distrobox\-upgrade.timer\f[R] distrobox-1.8.1.2/uninstall000077500000000000000000000056111474517124600156530ustar00rootroot00000000000000#!/bin/sh # SPDX-License-Identifier: GPL-3.0-only # # This file is part of the distrobox project: https://github.com/89luca89/distrobox # # Copyright (C) 2021 distrobox contributors # # distrobox is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # distrobox is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with distrobox; if not, see . # POSIX verbose=0 # Print usage to stdout. # Arguments: # None # Outputs: # print usage with examples. show_help() { cat << EOF uninstall --prefix /usr/local Options: --prefix/-P: base bath where all files will be deployed (default /usr/local if root, ~/.local if not) --help/-h: show this message -v: show more verbosity EOF } # Parse arguments while :; do case $1 in -h | --help) # Call a "show_help" function to display a synopsis, then exit. show_help exit ;; -v | --verbose) shift verbose=1 ;; -p | --path) if [ -n "$2" ]; then dest_path="$2" shift shift fi ;; -P | --prefix) if [ -n "$2" ]; then prefix="$2" shift shift fi ;; *) # Default case: If no more options then break out of the loop. break ;; esac done if [ -z "${prefix}" ]; then prefix="/usr/local" # in case we're not root, just default to the home directory if [ "$(id -u)" -ne 0 ]; then prefix="${HOME}/.local" fi fi dest_path="${prefix}/bin" man_dest_path="${prefix}/share/man/man1" icon_dest_path="${prefix}/share/icons" completion_dest_path="${prefix}/share/bash-completion/completions/" set -o errexit set -o nounset # set verbosity if [ "${verbose}" -ne 0 ]; then set -o xtrace fi [ ! -w "${dest_path}" ] && printf >&2 "Cannot write into %s, permission denied.\n" "${dest_path}" && exit 1 [ ! -w "${man_dest_path}" ] && printf >&2 "Cannot write into %s, permission denied.\n" "${man_dest_path}" && exit 1 # uninstall for file in "${dest_path}/distrobox"*; do [ -e "${file}" ] && rm "${file}" done for file in "${man_dest_path}/distrobox"*; do [ -e "${file}" ] && rm "${file}" done for file in "${completion_dest_path}/distrobox"*; do [ -e "${file}" ] && rm "${file}" done [ -e "${icon_dest_path}"/terminal-distrobox-icon.svg ] && rm "${icon_dest_path}"/terminal-distrobox-icon.svg [ -e "${icon_dest_path}"/distrobox ] && rm -rf "${icon_dest_path}"/distrobox printf >&2 "\033[1;32m Thank you for using Distrobox. Uninstall complete.\n\033[0m" printf >&2 "\033[0m Removed shell scripts located in \033[1;31m%s\n\033[0m" "${dest_path}" printf >&2 "\033[0m Removed manpages located in \033[1;31m%s\n\033[0m" "${man_dest_path}"