1 Commits

Author SHA1 Message Date
github-actions[bot]
ac666d3011 regenerate database and docs 2026-03-24 21:44:50 +00:00
3004 changed files with 89934 additions and 2348954 deletions

View File

@@ -11,18 +11,17 @@ on:
type: boolean
default: false
permissions: {}
permissions:
contents: write
pages: write
concurrency:
group: build
cancel-in-progress: true
jobs:
release:
if: false # disabled until pack generation is validated in production
regenerate:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v6
@@ -32,9 +31,52 @@ jobs:
- run: pip install pyyaml
- name: Run tests
run: python -m unittest tests.test_e2e -v
- name: Restore large files from release
run: |
mkdir -p .cache/large
gh release download large-files -D .cache/large/ 2>/dev/null || true
# Copy large files to their bios/ paths so generate_db sees them
for f in .cache/large/*; do
[ -f "$f" ] || continue
name=$(basename "$f")
# Match against .gitignore entries to find target path
target=$(grep "$name" .gitignore | head -1)
if [ -n "$target" ] && [ ! -f "$target" ]; then
mkdir -p "$(dirname "$target")"
cp "$f" "$target"
echo "Restored: $target"
fi
done
env:
GH_TOKEN: ${{ github.token }}
- name: Regenerate database, readme, and site
run: |
pip install mkdocs-material
python scripts/generate_db.py --force --bios-dir bios --output database.json
python scripts/generate_readme.py --db database.json --platforms-dir platforms
python scripts/generate_site.py
- name: Deploy site to GitHub Pages
if: github.ref == 'refs/heads/main'
run: mkdocs gh-deploy --force --clean
- name: Commit if changed
id: commit
run: |
git diff --quiet database.json README.md CONTRIBUTING.md && echo "changed=false" >> "$GITHUB_OUTPUT" && exit 0
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add database.json README.md CONTRIBUTING.md
git commit -m "regenerate database and docs"
git push
echo "changed=true" >> "$GITHUB_OUTPUT"
release:
needs: regenerate
if: needs.regenerate.result == 'success' || github.event.inputs.force_release == 'true'
runs-on: ubuntu-latest
steps:
- name: Rate limit
if: github.event.inputs.force_release != 'true'
id: rate
@@ -53,39 +95,15 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Restore large files from release
- uses: actions/checkout@v6
if: steps.rate.outputs.skip != 'true'
run: |
mkdir -p .cache/large
gh release download large-files -D .cache/large/ 2>/dev/null || true
python3 -c "
import hashlib, json, os, shutil
db = json.load(open('database.json'))
with open('.gitignore') as f:
ignored = {l.strip() for l in f if l.strip().startswith('bios/')}
cache = '.cache/large'
if not os.path.isdir(cache):
exit(0)
idx = {}
for fn in os.listdir(cache):
fp = os.path.join(cache, fn)
if os.path.isfile(fp):
h = hashlib.sha1(open(fp, 'rb').read()).hexdigest()
idx[h] = fp
restored = 0
for sha1, entry in db['files'].items():
path = entry['path']
if path in ignored and not os.path.exists(path):
src = idx.get(sha1)
if src:
os.makedirs(os.path.dirname(path), exist_ok=True)
shutil.copy2(src, path)
print(f'Restored: {path}')
restored += 1
print(f'Total: {restored} files restored')
"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
ref: main
- uses: actions/setup-python@v6
if: steps.rate.outputs.skip != 'true'
with:
python-version: "3.12"
- name: Refresh data directories
if: steps.rate.outputs.skip != 'true'
@@ -94,7 +112,10 @@ jobs:
- name: Build packs
if: steps.rate.outputs.skip != 'true'
run: python scripts/generate_pack.py --all --output-dir dist/
run: |
pip install pyyaml
python scripts/generate_db.py --bios-dir bios --output database.json
python scripts/generate_pack.py --all --output-dir dist/
- name: Release
if: steps.rate.outputs.skip != 'true'
@@ -118,17 +139,14 @@ jobs:
${PACKS}
### Install
Download the pack matching your frontend, extract to the BIOS directory.
Download, extract to your emulator's BIOS directory.
| Platform | Pack | Path |
|----------|------|------|
| RetroArch / Lakka | RetroArch_Lakka_BIOS_Pack.zip | system/ |
| Batocera | Batocera_BIOS_Pack.zip | /userdata/bios/ |
| Recalbox | Recalbox_BIOS_Pack.zip | /recalbox/share/bios/ |
| RetroBat | RetroBat_BIOS_Pack.zip | bios/ |
| RetroDECK | RetroDECK_BIOS_Pack.zip | ~/retrodeck/bios/ |
| EmuDeck | EmuDeck_BIOS_Pack.zip | Emulation/bios/ |
| RomM | RomM_BIOS_Pack.zip | bios/{platform_slug}/ |
| Platform | Path |
|----------|------|
| RetroArch / Lakka | system/ |
| Batocera | /userdata/bios/ |
| Recalbox | /recalbox/share/bios/ |
| RetroBat | bios/ |
### Changes
${CHANGES}

View File

@@ -1,96 +0,0 @@
name: Deploy Site
on:
push:
branches: [main]
paths:
- "platforms/**"
- "emulators/**"
- "wiki/**"
- "scripts/generate_site.py"
- "scripts/generate_readme.py"
- "scripts/verify.py"
- "scripts/common.py"
- "database.json"
- "mkdocs.yml"
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: deploy-site
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install pyyaml mkdocs-material pymdown-extensions
- name: Restore large files from release
run: |
mkdir -p .cache/large
gh release download large-files -D .cache/large/ 2>/dev/null || true
python3 -c "
import hashlib, json, os, shutil
db = json.load(open('database.json'))
with open('.gitignore') as f:
ignored = {l.strip() for l in f if l.strip().startswith('bios/')}
cache = '.cache/large'
if not os.path.isdir(cache):
exit(0)
idx = {}
for fn in os.listdir(cache):
fp = os.path.join(cache, fn)
if os.path.isfile(fp):
h = hashlib.sha1(open(fp, 'rb').read()).hexdigest()
idx[h] = fp
restored = 0
for sha1, entry in db['files'].items():
path = entry['path']
if path in ignored and not os.path.exists(path):
src = idx.get(sha1)
if src:
os.makedirs(os.path.dirname(path), exist_ok=True)
shutil.copy2(src, path)
print(f'Restored: {path}')
restored += 1
print(f'Total: {restored} files restored')
"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Refresh data directories
run: python scripts/refresh_data_dirs.py
continue-on-error: true
- name: Generate site
run: |
python scripts/generate_site.py
python scripts/generate_readme.py --db database.json --platforms-dir platforms
mkdocs build
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: site/
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -31,11 +31,8 @@ jobs:
- name: Get changed BIOS files
id: changed
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
files=$(git diff --name-only "$BASE_SHA"..."$HEAD_SHA" | grep '^bios/' || true)
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} | grep '^bios/' || true)
echo "files=$files" >> "$GITHUB_OUTPUT"
echo "$files" > /tmp/changed_files.txt
@@ -49,11 +46,17 @@ jobs:
fi
- name: Post validation report
if: always()
run: |
gh pr comment "${{ github.event.pull_request.number }}" --body-file /tmp/report.md
env:
GH_TOKEN: ${{ github.token }}
uses: actions/github-script@v8
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('/tmp/report.md', 'utf8');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: report
});
validate-configs:
runs-on: ubuntu-latest
@@ -65,7 +68,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema==4.23.0
run: pip install pyyaml jsonschema
- name: Validate platform configs
run: |
@@ -85,30 +88,15 @@ jobs:
config = yaml.safe_load(f)
try:
validate(config, schema)
print(f'OK {yml_file.name}')
print(f' {yml_file.name}')
except ValidationError as e:
errors.append(f'{yml_file.name}: {e.message}')
print(f'FAIL {yml_file.name}: {e.message}')
print(f' {yml_file.name}: {e.message}')
if errors:
sys.exit(1)
"
run-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml
- name: Run test suite
run: python -m unittest tests.test_e2e -v
label-pr:
runs-on: ubuntu-latest
permissions:
@@ -119,25 +107,43 @@ jobs:
fetch-depth: 0
- name: Auto-label PR
run: |
labels=""
files=$(gh pr diff "${{ github.event.pull_request.number }}" --name-only)
uses: actions/github-script@v8
with:
script: |
const { data: files } = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
if echo "$files" | grep -q '^bios/'; then
labels="$labels bios"
for sys in $(echo "$files" | grep '^bios/' | cut -d/ -f2 | sort -u); do
labels="$labels system:$(echo "$sys" | tr '[:upper:]' '[:lower:]')"
done
fi
if echo "$files" | grep -q '^platforms/'; then
labels="$labels platform-config"
fi
if echo "$files" | grep -q '^scripts/'; then
labels="$labels automation"
fi
const labels = new Set();
for label in $labels; do
gh pr edit "${{ github.event.pull_request.number }}" --add-label "$label" 2>/dev/null || true
done
env:
GH_TOKEN: ${{ github.token }}
for (const file of files) {
if (file.filename.startsWith('bios/')) {
labels.add('bios');
// Extract system from path
const parts = file.filename.split('/');
if (parts.length >= 3) {
labels.add(`system:${parts[1].toLowerCase()}`);
}
}
if (file.filename.startsWith('platforms/')) {
labels.add('platform-config');
}
if (file.filename.startsWith('scripts/')) {
labels.add('automation');
}
}
if (labels.size > 0) {
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: [...labels],
});
} catch (e) {
console.log('Could not add labels:', e.message);
}
}

52
.gitignore vendored
View File

@@ -11,8 +11,13 @@ site/
*.log
node_modules/
# Generated site pages (built by generate_site.py, deployed in CI)
docs/
# Generated site pages (built in CI)
docs/index.md
docs/platforms/
docs/systems/
docs/emulators/
docs/contributing.md
docs/gaps.md
# Large files stored as GitHub Release assets (> 50MB)
bios/Arcade/Arcade/Firmware.19.0.0.zip
@@ -29,45 +34,4 @@ data/
# Large files stored as GitHub Release assets (additional)
bios/Arcade/MAME/artwork/snspell.zip
bios/Arcade/MAME/MAME 0.174 Arcade XML.dat
bios/Sony/PlayStation Vita/.variants/PSP2UPDAT.PUP.3ae832c9
bios/Nintendo/DS/DSi_Nand_JPN.bin
bios/Nintendo/DS/DSi_Nand_EUR.bin
bios/Nintendo/DS/DSi_Nand_USA.bin
bios/Nintendo/DS/DSi_Nand_AUS.bin
bios/Nintendo/DS/DSi_Nand_CHN.bin
bios/Nintendo/DS/DSi_Nand_KOR.bin
bios/Nintendo/DS/dsi_nand.bin
# QEMU EDK2 firmware (64MB each)
bios/QEMU/edk2-aarch64-code.fd
bios/QEMU/edk2-arm-code.fd
bios/QEMU/edk2-arm-vars.fd
# ScummVM data bundle (79MB, fetched from large-files release)
bios/ScummVM/scummvm.zip
# Arcade BIOS ZIPs > 100MB
bios/Arcade/Arcade/svcpcb.zip
bios/Arcade/Arcade/ps2.zip
bios/Arcade/Arcade/kf2k3pcb.zip
bios/Arcade/Arcade/ms5pcb.zip
# Dolphin/Ishiiruka SD card images (128MB each)
bios/Nintendo/Wii/WiiSD.raw
bios/Nintendo/Wii/sd.raw
# EasyRPG soundfont (142MB)
bios/RPG Maker/easyrpg/easyrpg.soundfont
# Temporary files
tmp/
# FBA2012 Toaplan samples (>100MB)
bios/Arcade/fba2012/samples/fireshrk.zip
bios/Arcade/fba2012/samples/ghox.zip
bios/Arcade/fba2012/samples/samesame.zip
bios/Arcade/fba2012/samples/tekipaki.zip
bios/Arcade/fba2012/samples/vimana.zip
bios/Arcade/fba2012/samples/fireshrk.zip
bios/Arcade/fba2012/samples/samesame.zip
bios/Arcade/fba2012/samples/vimana.zip
bios/Sony/PlayStation Vita/.variants/PSP2UPDAT.PUP

View File

@@ -7,16 +7,6 @@
3. Variants (alternate hashes): `bios/Manufacturer/Console/.variants/`
4. Create a Pull Request - checksums are verified automatically
## Add a new platform
1. Write a scraper in `scripts/scraper/`
2. Create the platform YAML in `platforms/`
3. Register in `platforms/_registry.yml`
4. Submit a Pull Request
Contributors who add platform support are credited in the README,
on the documentation site, and in the BIOS packs.
## File conventions
- Files >50 MB go in GitHub release assets (`large-files` release)

131
README.md
View File

@@ -1,124 +1,41 @@
# RetroBIOS
# Retrogaming BIOS & Firmware Collection
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
Complete, verified collection of BIOS, firmware, and system files for retrogaming emulators.
**7,302** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
> **6733** files | **5043.6 MB** | **8** platforms | **287** emulator profiles
## Quick Install
## Download
Copy one command into your terminal:
```bash
# Linux / macOS / Steam Deck
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
# Handheld (SD card mounted on PC)
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard
```
The script auto-detects your platform, downloads only missing files, and verifies checksums.
## Download BIOS packs
Pick your platform, download the ZIP, extract to the BIOS path.
| Platform | BIOS files | Extract to | Download |
|----------|-----------|-----------|----------|
| Batocera | 361 | `/userdata/bios/` | [Download](../../releases/latest) |
| BizHawk | 118 | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 161 | `Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 448 | `system/` | [Download](../../releases/latest) |
| Recalbox | 346 | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 448 | `system/` | [Download](../../releases/latest) |
| RetroBat | 339 | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 2006 | `~/retrodeck/bios/` | [Download](../../releases/latest) |
| RetroPie | 448 | `BIOS/` | [Download](../../releases/latest) |
| RomM | 374 | `bios/{platform_slug}/` | [Download](../../releases/latest) |
## What's included
BIOS, firmware, and system files for consoles from Atari to PlayStation 3.
Each file is checked against the emulator's source code to match what the code actually loads at runtime.
- **10 platforms** supported with platform-specific verification
- **329 emulators** profiled from source (RetroArch cores + standalone)
- **396 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **7,302 files** verified with MD5, SHA1, CRC32 checksums
- **8765 MB** total collection size
## Supported systems
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 362+ more.
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
| Platform | Files | Verification | Pack |
|----------|-------|-------------|------|
| Batocera | 359 | md5 | [Download](../../releases/latest) |
| EmuDeck | 161 | md5 | [Download](../../releases/latest) |
| Lakka | 448 | existence | [Download](../../releases/latest) |
| Recalbox | 346 | md5 | [Download](../../releases/latest) |
| RetroArch | 448 | existence | [Download](../../releases/latest) |
| RetroBat | 331 | md5 | [Download](../../releases/latest) |
| RetroDECK | 2007 | md5 | [Download](../../releases/latest) |
| RetroPie | 448 | existence | [Download](../../releases/latest) |
## Coverage
| Platform | Coverage | Verified | Untested | Missing |
|----------|----------|----------|----------|---------|
| Batocera | 361/361 (100.0%) | 361 | 0 | 0 |
| BizHawk | 118/118 (100.0%) | 118 | 0 | 0 |
| Batocera | 359/359 (100.0%) | 358 | 1 | 0 |
| EmuDeck | 161/161 (100.0%) | 161 | 0 | 0 |
| Lakka | 448/448 (100.0%) | 448 | 0 | 0 |
| Recalbox | 346/346 (100.0%) | 346 | 0 | 0 |
| RetroArch | 448/448 (100.0%) | 448 | 0 | 0 |
| RetroBat | 339/339 (100.0%) | 339 | 0 | 0 |
| RetroDECK | 2006/2006 (100.0%) | 2006 | 0 | 0 |
| RetroPie | 448/448 (100.0%) | 448 | 0 | 0 |
| RomM | 374/374 (100.0%) | 374 | 0 | 0 |
| Lakka | 448/448 (100.0%) | 445 | 3 | 0 |
| Recalbox | 346/346 (100.0%) | 342 | 4 | 0 |
| RetroArch | 448/448 (100.0%) | 445 | 3 | 0 |
| RetroBat | 331/331 (100.0%) | 330 | 1 | 0 |
| RetroDECK | 2007/2007 (100.0%) | 2006 | 1 | 0 |
| RetroPie | 448/448 (100.0%) | 445 | 3 | 0 |
## Build your own pack
## Documentation
Clone the repo and generate packs for any platform, emulator, or system:
```bash
# Full platform pack
python scripts/generate_pack.py --platform retroarch --output-dir dist/
python scripts/generate_pack.py --platform batocera --output-dir dist/
# Single emulator or system
python scripts/generate_pack.py --emulator dolphin
python scripts/generate_pack.py --system sony-playstation-2
# List available emulators and systems
python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems
# Verify your BIOS collection
python scripts/verify.py --all
python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast
python scripts/verify.py --platform retroarch --verbose # emulator ground truth
```
Only dependency: Python 3 + `pyyaml`.
## Documentation site
The [documentation site](https://abdess.github.io/retrobios/) provides:
- **Per-platform pages** with file-by-file verification status and hashes
- **Per-emulator profiles** with source code references for every file
- **Per-system pages** showing which emulators and platforms cover each console
- **Gap analysis** identifying missing files and undeclared core requirements
- **Cross-reference** mapping files across 10 platforms and 329 emulators
## How it works
Documentation and metadata can drift from what emulators actually load.
To keep packs accurate, each file is checked against the emulator's source code.
1. **Read emulator source code** - trace every file the code loads, its expected hash and size
2. **Cross-reference with platforms** - match against what each platform declares
3. **Build packs** - include baseline files plus what each platform's cores need
4. **Verify** - run platform-native checks and emulator-level validation
Full file listings, platform coverage, emulator profiles, and gap analysis: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
## Contributors
<a href="https://github.com/PixNyb"><img src="https://avatars.githubusercontent.com/u/40770831?v=4" width="50" title="PixNyb"></a>
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
@@ -130,4 +47,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
This repository provides BIOS files for personal backup and archival purposes.
*Auto-generated on 2026-04-02T13:38:26Z*
*Auto-generated on 2026-03-24T21:43:44Z*

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,65 +0,0 @@
ИИ<EFBFBD>Ш
<EFBFBD>Щ<EFBFBD>Щ<EFBFBD>Ы<EFBFBD>Ы<EFBFBD>ШШ
<EFBFBD>Щ<EFBFBD>Щ<EFBFBD>Ы<EFBFBD>ЫИ=ИИ
<EFBFBD>й<EFBFBD>й<EFBFBD>л<EFBFBD>л<EFBFBD>н<EFBFBD>и
<EFBFBD>й<EFBFBD>й<EFBFBD>л<EFBFBD>лИИИИ
ЈшЈшЈшЈшЈшЈш
ЈшЈшЈшЈшЙ§Иј
ИјИјИјИјЙ§Pј
ИјИјИјИјИИHИ
H(H(H(H(H(H(
H(H(H(H(ИЙИИ
X8X8X8X8 ЩX8
X8X8X8X8ИИИИ
hhhhhh
hhhh<18>Нxp
xxxx
-xp

View File

@@ -1,65 +0,0 @@
Ш
99;;8(
99;;-Ш8H
(H(H(H(H-H8H
(H(H(H(HШШШШ
XxXxXxXxXxXx
XxXxXxXxШШШШ
hh€hh€h€h€
hh€hh€ШНШШ
<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>»<EFBFBD>Ѕ<EFBFBD>ё
<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>»ШЩШШ
ЁИЁИЁИЁИ)YЁИ
ЁИЁИЁИЁИЩэШш
ШшШшШшШшЩэ ш
ШшШшШшШшШЭиа
и€ии€иа
и€ии€и

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More