@echo off
rem ===========================================================================
rem  XCOTA TAG v3 four-player (preview) -- 2v2 tag teams for X-Men: Children of the Atom
rem  Generated from the release spec by tools/make_release.py -- do not hand-edit.
rem  Drag a clean xmcota.zip onto this file, or put it
rem  beside this file and double-click, or run:   xcota-tag-v3-4p-preview.cmd "C:\path\to\xmcota.zip"
rem  This installer holds patch deltas and hashes, not ROM data. It makes no
rem  network requests, never overwrites its input, and refuses anything that is
rem  not a clean, supported set.
rem ===========================================================================
setlocal
set "ROMPATH=%~f1"
set "SELFPATH=%~f0"
where powershell.exe >nul 2>&1
if errorlevel 1 (
  echo.
  echo   ERROR: Windows PowerShell was not found.
  echo.
  exit /b 1
)
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$t=[IO.File]::ReadAllText($env:SELFPATH);$m='#=PS'+'BEGIN=#';$i=$t.IndexOf($m);if($i -lt 0){Write-Host 'ERROR: installer marker missing.' -ForegroundColor Red;exit 9};& ([ScriptBlock]::Create($t.Substring($i+$m.Length)))"
set "RC=%errorlevel%"
endlocal & exit /b %RC%

#=PSBEGIN=#
$ErrorActionPreference = 'Stop'

function Pause-IfConsole {
    if ($Host.Name -eq 'ConsoleHost' -and -not $env:XCOTA_TAG_NOPAUSE) {
        try { Read-Host '  Press Enter to close' | Out-Null } catch {}
    }
}

function Fail([string]$Message, [int]$Code = 1) {
    Write-Host ''
    Write-Host "  ERROR: $Message" -ForegroundColor Red
    Write-Host '  Nothing was written.'
    Write-Host ''
    Pause-IfConsole
    exit $Code
}

function ConvertFrom-Hex([string]$Hex) {
    if (($Hex.Length % 2) -ne 0) { Fail 'internal hex string has an odd length.' 8 }
    $Bytes = New-Object byte[] ($Hex.Length / 2)
    for ($i = 0; $i -lt $Bytes.Length; $i++) {
        $Bytes[$i] = [Convert]::ToByte($Hex.Substring($i * 2, 2), 16)
    }
    return ,$Bytes
}

function Get-Sha256([byte[]]$Bytes) {
    $Hasher = [System.Security.Cryptography.SHA256]::Create()
    try {
        return ([BitConverter]::ToString($Hasher.ComputeHash($Bytes))).Replace('-', '').ToLowerInvariant()
    } finally {
        $Hasher.Dispose()
    }
}

function Read-ZipMembers([string]$Path) {
    $Entries = New-Object 'System.Collections.Generic.Dictionary[string,byte[]]'
    $Metadata = New-Object 'System.Collections.Generic.Dictionary[string,object]'
    $Order = New-Object 'System.Collections.Generic.List[string]'
    try { $Zip = [System.IO.Compression.ZipFile]::OpenRead($Path) }
    catch { throw "not a readable ZIP archive: $Path" }
    try {
        foreach ($Entry in $Zip.Entries) {
            if ($Entry.FullName.EndsWith('/')) {
                throw "the archive contains a folder entry '$($Entry.FullName)'; use a flat ROM ZIP."
            }
            if ($Entries.ContainsKey($Entry.FullName)) {
                throw "the archive has a duplicate member named $($Entry.FullName)."
            }
            $Memory = New-Object System.IO.MemoryStream
            $Stream = $Entry.Open()
            try { $Stream.CopyTo($Memory) } finally { $Stream.Dispose() }
            $Entries.Add($Entry.FullName, $Memory.ToArray())
            $Metadata.Add($Entry.FullName, [pscustomobject]@{
                LastWriteTime = $Entry.LastWriteTime
                ExternalAttributes = $Entry.ExternalAttributes
            })
            [void]$Order.Add($Entry.FullName)
            $Memory.Dispose()
        }
    } finally {
        $Zip.Dispose()
    }
    return [pscustomobject]@{ Entries = $Entries; Metadata = $Metadata; Order = $Order }
}

Write-Host ''
Write-Host '  XCOTA TAG v3 four-player'
Write-Host '  ================================================================'
Write-Host '  *** PREVIEW: see the included README for scope and evidence. ***' -ForegroundColor Yellow
Write-Host '  The clean input is only read. A new patched ZIP is written.'

Add-Type -AssemblyName System.IO.Compression -ErrorAction SilentlyContinue
Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction SilentlyContinue

$SharedHunks = @{
    'xmn.13m' = '3FC006:8080,3FC00A:bfbf,3FC00E:bfbf,3FC012:bfbf,3FC016:bfbf,3FC01A:bfbf,3FC01E:bfbf,3FC022:bfbf,3FC026:bfbf,3FC02A:bfbf,3FC02E:8080,3FC046:0000,3FC06E:0000,3FC086:0000,3FC0AE:0000,3FC0C6:0000,3FC0EE:0000,3FC106:0000,3FC12E:0000,3FC146:0000,3FC16E:0000,3FC186:0000,3FC1AE:0000,3FC1C6:0000,3FC1EE:0000,3FC206:0000,3FC22E:0000,3FC402:0000,3FC406:7f00,3FC40A:7f3f,3FC40E:7f3f,3FC412:7f3f,3FC416:7f00,3FC41A:0000,3FC41E:00,3FC442:0000,3FC447:00,3FC457:00,3FC45A:0000,3FC45E:00,3FC482:0000,3FC487:00,3FC497:00,3FC49A:0000,3FC49E:00,3FC4C2:0000,3FC4C7:00,3FC4D7:00,3FC4DA:0000,3FC4DE:00,3FC502:0000,3FC507:00,3FC517:00,3FC51A:0000,3FC51E:00,3FC542:0000,3FC547:00,3FC557:00,3FC55A:0000,3FC55E:00,3FC582:0000,3FC587:00,3FC597:00,3FC59A:0000,3FC59E:00,3FC5C2:0000,3FC5C7:00,3FC5D7:00,3FC5DA:0000,3FC5DE:00,3FC80A:5555,3FC80E:aaaa,3FC812:5555,3FC816:aaaa,3FC81A:5555,3FC81E:aaaa,3FC822:5555,3FC826:aaaa,3FC82A:5555,3FC84A:5555,3FC84E:aaaa,3FC852:5555,3FC856:aaaa,3FC85A:5555,3FC85E:aaaa,3FC862:5555,3FC866:aaaa,3FC86A:5555,3FC88A:5555,3FC88E:aaaa,3FC892:5555,3FC896:aaaa,3FC89A:5555,3FC89E:aaaa,3FC8A2:5555,3FC8A6:aaaa,3FC8AA:5555,3FC8CA:5555,3FC8CE:aaaa,3FC8D2:5555,3FC8D6:aaaa,3FC8DA:5555,3FC8DE:aaaa,3FC8E2:5555,3FC8E6:aaaa,3FC8EA:5555,3FC90A:5555,3FC90E:aaaa,3FC912:5555,3FC916:aaaa,3FC91A:5555,3FC91E:aaaa,3FC922:5555,3FC926:aaaa,3FC92A:5555,3FC94A:5555,3FC94E:aaaa,3FC952:5555,3FC956:aaaa,3FC95A:5555,3FC95E:aaaa,3FC962:5555,3FC966:aaaa,3FC96A:5555,3FC98A:5555,3FC98E:aaaa,3FC992:5555,3FC996:aaaa,3FC99A:5555,3FC99E:aaaa,3FC9A2:5555,3FC9A6:aaaa,3FC9AA:5555,3FC9CA:5555,3FC9CE:aaaa,3FC9D2:5555,3FC9D6:aaaa,3FC9DA:5555,3FC9DE:aaaa,3FC9E2:5555,3FC9E6:aaaa,3FC9EA:5555,3FCA0A:5555,3FCA0E:aaaa,3FCA12:5555,3FCA16:aaaa,3FCA1A:5555,3FCA1E:aaaa,3FCA22:5555,3FCA26:aaaa,3FCA2A:5555,3FCC0A:0000,3FCC0E:0000,3FCC12:0000,3FCC4A:0000,3FCC4E:0000,3FCC52:0000,3FCC8A:0000,3FCC8E:0000,3FCC92:0000,3FCCCA:0000,3FCCCE:0000,3FCCD2:0000,3FCD0A:0000,3FCD0E:0000,3FCD12:0000,3FCD4A:0000,3FCD4E:0000,3FCD52:0000,3FCD8A:0000,3FCD8E:0000,3FCD92:0000,3FCDCA:0000,3FCDCE:0000,3FCDD2:0000,3FD00A:0000,3FD00E:0000,3FD012:0000,3FD016:0000,3FD01A:0000,3FD01E:0000,3FD022:0000,3FD026:0000,3FD02A:0000,3FD04A:0000,3FD04E:0000,3FD052:0000,3FD056:0000,3FD05A:0000,3FD05E:0000,3FD062:0000,3FD066:0000,3FD06A:0000,3FD08A:0000,3FD08E:0000,3FD092:0000,3FD096:0000,3FD09A:0000,3FD09E:0000,3FD0A2:0000,3FD0A6:0000,3FD0AA:0000,3FD0CA:0000,3FD0CE:0000,3FD0D2:0000,3FD0D6:0000,3FD0DA:0000,3FD0DE:0000,3FD0E2:0000,3FD0E6:0000,3FD0EA:0000,3FD10A:0000,3FD10E:0000,3FD112:0000,3FD116:0000,3FD11A:0000,3FD11E:0000,3FD122:0000,3FD126:0000,3FD12A:0000,3FD14A:0000,3FD14E:0000,3FD152:0000,3FD156:0000,3FD15A:0000,3FD15E:0000,3FD162:0000,3FD166:0000,3FD16A:0000,3FD18A:0000,3FD18E:0000,3FD192:0000,3FD196:0000,3FD19A:0000,3FD19E:0000,3FD1A2:0000,3FD1A6:0000,3FD1AA:0000,3FD1CA:0000,3FD1CE:0000,3FD1D2:0000,3FD1D6:0000,3FD1DA:0000,3FD1DE:0000,3FD1E2:0000,3FD1E6:0000,3FD1EA:0000,3FD20A:0000,3FD20E:0000,3FD212:0000,3FD216:0000,3FD21A:0000,3FD21E:0000,3FD222:0000,3FD226:0000,3FD22A:0000,3FDE4A:fefe,3FDE4E:fefe,3FDE52:fefe,3FDE56:fefe,3FDE5A:fefe,3FDE5E:fefe,3FDE62:fefe,3FDE66:fefe,3FDE6A:fefe,3FDE8A:fcfc,3FDE8E:fcfc,3FDE92:fcfc,3FDE96:fcfc,3FDE9A:fcfc,3FDE9E:fcfc,3FDEA2:fcfc,3FDEA6:fcfc,3FDEAA:fcfc,3FDECA:f8f8,3FDECE:f8f8,3FDED2:f8f8,3FDED6:f8f8,3FDEDA:f8f8,3FDEDE:f8f8,3FDEE2:f8f8,3FDEE6:f8f8,3FDEEA:f8f8,3FDF0A:f0f0,3FDF0E:f0f0,3FDF12:f0f0,3FDF16:f0f0,3FDF1A:f0f0,3FDF1E:f0f0,3FDF22:f0f0,3FDF26:f0f0,3FDF2A:f0f0,3FDF4A:e0e0,3FDF4E:e0e0,3FDF52:e0e0,3FDF56:e0e0,3FDF5A:e0e0,3FDF5E:e0e0,3FDF62:e0e0,3FDF66:e0e0,3FDF6A:e0e0,3FDF8A:c0c0,3FDF8E:c0c0,3FDF92:c0c0,3FDF96:c0c0,3FDF9A:c0c0,3FDF9E:c0c0,3FDFA2:c0c0,3FDFA6:c0c0,3FDFAA:c0c0,3FDFCA:8080,3FDFCE:8080,3FDFD2:8080,3FDFD6:8080,3FDFDA:8080,3FDFDE:8080,3FDFE2:8080,3FDFE6:8080,3FDFEA:8080,3FE802:e1,3FE806:e1f3,3FE80A:c4f7,3FE80E:ccef,3FE812:90,3FE816:b3fc,3FE81A:20fe,3FE81E:40fc,3FE822:00,3FE842:00,3FE846:7283,3FE84A:22cf,3FE84E:80cf,3FE852:98df,3FE856:b3fc,3FE85A:22fc,3FE85E:4cf1,3FE862:00,3FE882:80,3FE886:32c3,3FE88A:629f,3FE88E:489f,3FE892:089f,3FE896:2bbc,3FE89A:62fc,3FE89E:0cf1,3FE8A2:80,3FE8C2:00,3FE8C6:7283,3FE8CA:22cf,3FE8CE:80cf,3FE8D2:91de,3FE8D6:b3fc,3FE8DA:22fc,3FE8DE:4cf1,3FE8E2:00,3FE902:00,3FE906:7283,3FE90A:20cf,3FE90E:80cf,3FE912:99df,3FE916:b0,3FE91A:20fe,3FE91E:4cf1,3FE922:00,3FE942:00,3FE946:7283,3FE94A:20cf,3FE94E:80cf,3FE952:99df,3FE956:b1,3FE95A:23,3FE95E:4bf7,3FE962:03,3FE982:80,3FE986:32c3,3FE98A:629f,3FE98E:489f,3FE992:009f,3FE996:23bc,3FE99A:62fc,3FE99E:0cf0,3FE9A2:80,3FE9C2:00,3FE9C6:7383,3FE9CA:22cf,3FE9CE:80cf,3FE9D2:99de,3FE9D6:b3fc,3FE9DA:22fc,3FE9DE:4cf0,3FE9E2:00,3FEA02:c0,3FEA06:d2e3,3FEA0A:c4f7,3FEA0E:ed,3FEA12:e9,3FEA16:e1,3FEA1A:c4fb,3FEA1E:ccf1,3FEA22:c0,3FEA42:e0,3FEA46:e0f3,3FEA4A:e0,3FEA4E:f2fd,3FEA52:06f9,3FEA56:44f9,3FEA5A:00f9,3FEA5E:30c3,3FEA62:81,3FEA82:00,3FEA86:7387,3FEA8A:26cf,3FEA8E:8ccf,3FEA92:99df,3FEA96:b0,3FEA9A:26f9,3FEA9E:48f4,3FEAA2:00,3FEAC2:03,3FEAC6:7387,3FEACA:23cf,3FEACE:87cf,3FEAD2:97df,3FEAD6:b4,3FEADA:20fe,3FEADE:4cf1,3FEAE2:00,3FEB02:0c,3FEB06:619f,3FEB0A:22cf,3FEB0E:8ccf,3FEB12:99de,3FEB16:b3fc,3FEB1A:22fc,3FEB1E:40fc,3FEB22:00,3FEB42:08,3FEB46:639f,3FEB4A:22cf,3FEB4E:88cf,3FEB52:99de,3FEB56:b3fc,3FEB5A:22fc,3FEB5E:40fe,3FEB62:04,3FEB82:80,3FEB86:32c3,3FEB8A:629f,3FEB8E:489f,3FEB92:099e,3FEB96:2bbc,3FEB9A:62fc,3FEB9E:0cf1,3FEBA2:80,3FEBC2:00,3FEBC6:7283,3FEBCA:22cf,3FEBCE:80cf,3FEBD2:91de,3FEBD6:b2fd,3FEBDA:20,3FEBDE:4bf7,3FEBE2:03,3FEC02:80,3FEC06:32c3,3FEC0A:629f,3FEC0E:489f,3FEC12:019e,3FEC16:21be,3FEC1A:62fd,3FEC1E:0cf2,3FEC22:80,3FEC42:00,3FEC46:7283,3FEC4A:22cf,3FEC4E:80cf,3FEC52:98df,3FEC56:b3fc,3FEC5A:22fc,3FEC5E:48f4,3FEC62:00,3FEC82:80,3FEC86:32c3,3FEC8A:629f,3FEC8E:409f,3FEC92:18df,3FEC96:03fc,3FEC9A:62fc,3FEC9E:0cf1,3FECA2:80,3FECC2:80,3FECC6:33c3,3FECCA:44b7,3FECCE:0c,3FECD2:e9,3FECD6:e1,3FECDA:c4fb,3FECDE:ccf1,3FECE2:c0,3FED02:00,3FED06:7189,3FED0A:23cf,3FED0E:82cf,3FED12:90df,3FED16:b1fe,3FED1A:a3fc,3FED1E:86f9,3FED22:c0,3FED42:08,3FED46:6b9f,3FED4A:22df,3FED4E:84cf,3FED52:90,3FED56:d1,3FED5A:c1,3FED5E:ebf7,3FED62:e3,3FED82:00,3FED86:738f,3FED8A:22cf,3FED8E:80cf,3FED92:99de,3FED96:b3fc,3FED9A:a2fc,3FED9E:80fe,3FEDA2:8c,3FEDC2:00,3FEDC6:738f,3FEDCA:22cf,3FEDCE:8cef,3FEDD2:c8,3FEDD6:92fd,3FEDDA:22fc,3FEDDE:40fc,3FEDE2:00,3FEE02:00,3FEE06:738f,3FEE0A:22cf,3FEE0E:8cef,3FEE12:c8,3FEE16:e1,3FEE1A:c4fb,3FEE1E:ccf1,3FEE22:c0,3FEE42:80,3FEE46:33c3,3FEE4A:46bf,3FEE4E:0c,3FEE52:99,3FEE56:30,3FEE5A:60fe,3FEE5E:4cf1,3FEE62:00,3FF002:e1,3FF006:e1f3,3FF00A:c0f7,3FF00E:c0ef,3FF012:80,3FF016:83,3FF01A:01,3FF01E:03,3FF022:00,3FF042:00,3FF046:0083,3FF04A:00cf,3FF04E:80cf,3FF052:80df,3FF056:83,3FF05A:03,3FF05E:0e,3FF062:00,3FF082:80,3FF086:00c3,3FF08A:009f,3FF08E:089f,3FF092:089f,3FF096:0bbf,3FF09A:03,3FF09E:0e,3FF0A2:80,3FF0C2:00,3FF0C6:0083,3FF0CA:00cf,3FF0CE:80cf,3FF0D2:81df,3FF0D6:83,3FF0DA:03,3FF0DE:0e,3FF0E2:00,3FF102:00,3FF106:0083,3FF10A:00cf,3FF10E:80cf,3FF112:81df,3FF116:80,3FF11A:01,3FF11E:0e,3FF122:00,3FF142:00,3FF146:0083,3FF14A:00cf,3FF14E:80cf,3FF152:81df,3FF156:81,3FF15A:03,3FF15E:0b,3FF162:03,3FF182:80,3FF186:00c3,3FF18A:009f,3FF18E:089f,3FF192:009f,3FF196:03bf,3FF19A:03,3FF19E:0f,3FF1A2:80,3FF1C2:00,3FF1C6:0083,3FF1CA:00cf,3FF1CE:80cf,3FF1D2:81df,3FF1D6:83,3FF1DA:03,3FF1DE:0f,3FF1E2:00,3FF202:c0,3FF206:c0e3,3FF20A:c0f7,3FF20E:e1,3FF212:e1,3FF216:e1,3FF21A:c4,3FF21E:ce,3FF222:c0,3FF242:e0,3FF246:e0f3,3FF24A:e0,3FF24E:f2,3FF252:06,3FF256:06,3FF25A:06,3FF25E:3c,3FF262:81,3FF282:00,3FF286:0087,3FF28A:00cf,3FF28E:80cf,3FF292:81df,3FF296:80,3FF29A:06,3FF29E:0b,3FF2A2:00,3FF2C2:03,3FF2C6:0387,3FF2CA:03cf,3FF2CE:87cf,3FF2D2:87df,3FF2D6:84,3FF2DA:01,3FF2DE:0e,3FF2E2:00,3FF302:0c,3FF306:009f,3FF30A:00cf,3FF30E:80cf,3FF312:81df,3FF316:83,3FF31A:03,3FF31E:03,3FF322:00,3FF342:08,3FF346:009f,3FF34A:00cf,3FF34E:80cf,3FF352:81df,3FF356:83,3FF35A:03,3FF35E:01,3FF362:04,3FF382:80,3FF386:00c3,3FF38A:009f,3FF38E:089f,3FF392:099f,3FF396:0bbf,3FF39A:03,3FF39E:0e,3FF3A2:80,3FF3C2:00,3FF3C6:0083,3FF3CA:00cf,3FF3CE:80cf,3FF3D2:81df,3FF3D6:82,3FF3DA:00,3FF3DE:0b,3FF3E2:03,3FF402:80,3FF406:00c3,3FF40A:009f,3FF40E:089f,3FF412:019f,3FF416:01bf,3FF41A:02,3FF41E:0d,3FF422:80,3FF442:00,3FF446:0083,3FF44A:00cf,3FF44E:80cf,3FF452:80df,3FF456:83,3FF45A:03,3FF45E:0b,3FF462:00,3FF482:80,3FF486:00c3,3FF48A:009f,3FF48E:009f,3FF492:00df,3FF496:03,3FF49A:03,3FF49E:0e,3FF4A2:80,3FF4C2:80,3FF4C6:00c3,3FF4CA:00b7,3FF4CE:00,3FF4D2:e1,3FF4D6:e1,3FF4DA:c4,3FF4DE:ce,3FF4E2:c0,3FF502:00,3FF506:0089,3FF50A:00cf,3FF50E:80cf,3FF512:80df,3FF516:81,3FF51A:83,3FF51E:86,3FF522:c0,3FF542:08,3FF546:089f,3FF54A:00df,3FF54E:80cf,3FF552:80,3FF556:c1,3FF55A:c1,3FF55E:eb,3FF562:e3,3FF582:00,3FF586:008f,3FF58A:00cf,3FF58E:80cf,3FF592:81df,3FF596:83,3FF59A:83,3FF59E:81,3FF5A2:8c,3FF5C2:00,3FF5C6:008f,3FF5CA:00cf,3FF5CE:80ef,3FF5D2:c0,3FF5D6:82,3FF5DA:03,3FF5DE:03,3FF5E2:00,3FF602:00,3FF606:008f,3FF60A:00cf,3FF60E:80ef,3FF612:c0,3FF616:e1,3FF61A:c4,3FF61E:ce,3FF622:c0,3FF642:80,3FF646:00c3,3FF64A:00bf,3FF64E:00,3FF652:81,3FF656:00,3FF65A:01,3FF65E:0e,3FF662:00'
    'xmn.15m' = '3FC002:0000,3FC006:0000,3FC00A:3f3f,3FC00E:3f3f,3FC012:3f3f,3FC016:3f3f,3FC01A:3f3f,3FC01E:3f3f,3FC022:3f3f,3FC026:3f3f,3FC02A:3f3f,3FC02E:0000,3FC032:0000,3FC042:0000,3FC046:0000,3FC06E:0000,3FC072:0000,3FC082:0000,3FC086:0000,3FC0AE:0000,3FC0B2:0000,3FC0C2:0000,3FC0C6:0000,3FC0EE:0000,3FC0F2:0000,3FC102:0000,3FC106:0000,3FC12E:0000,3FC132:0000,3FC142:0000,3FC146:0000,3FC16E:0000,3FC172:0000,3FC182:0000,3FC186:0000,3FC1AE:0000,3FC1B2:0000,3FC1C2:0000,3FC1C6:0000,3FC1EE:0000,3FC1F2:0000,3FC202:0000,3FC206:0000,3FC22E:0000,3FC232:0000,3FC402:00,3FC406:00,3FC40A:3f,3FC40E:3f,3FC412:3f,3FC416:00,3FC41A:00,3FC41E:00,3FC442:00,3FC446:00,3FC456:00,3FC45A:00,3FC45E:00,3FC482:00,3FC486:00,3FC496:00,3FC49A:00,3FC49E:00,3FC4C2:00,3FC4C6:00,3FC4D6:00,3FC4DA:00,3FC4DE:00,3FC502:00,3FC506:00,3FC516:00,3FC51A:00,3FC51E:00,3FC542:00,3FC546:00,3FC556:00,3FC55A:00,3FC55E:00,3FC582:00,3FC586:00,3FC596:00,3FC59A:00,3FC59E:00,3FC5C2:00,3FC5C6:00,3FC5D6:00,3FC5DA:00,3FC5DE:00,3FC80A:55,3FC80E:aa,3FC812:55,3FC816:aa,3FC81A:55,3FC81E:aa,3FC822:55,3FC826:aa,3FC82A:55,3FC84A:55,3FC84E:aa,3FC852:55,3FC856:aa,3FC85A:55,3FC85E:aa,3FC862:55,3FC866:aa,3FC86A:55,3FC88A:55,3FC88E:aa,3FC892:55,3FC896:aa,3FC89A:55,3FC89E:aa,3FC8A2:55,3FC8A6:aa,3FC8AA:55,3FC8CA:55,3FC8CE:aa,3FC8D2:55,3FC8D6:aa,3FC8DA:55,3FC8DE:aa,3FC8E2:55,3FC8E6:aa,3FC8EA:55,3FC90A:55,3FC90E:aa,3FC912:55,3FC916:aa,3FC91A:55,3FC91E:aa,3FC922:55,3FC926:aa,3FC92A:55,3FC94A:55,3FC94E:aa,3FC952:55,3FC956:aa,3FC95A:55,3FC95E:aa,3FC962:55,3FC966:aa,3FC96A:55,3FC98A:55,3FC98E:aa,3FC992:55,3FC996:aa,3FC99A:55,3FC99E:aa,3FC9A2:55,3FC9A6:aa,3FC9AA:55,3FC9CA:55,3FC9CE:aa,3FC9D2:55,3FC9D6:aa,3FC9DA:55,3FC9DE:aa,3FC9E2:55,3FC9E6:aa,3FC9EA:55,3FCA0A:55,3FCA0E:aa,3FCA12:55,3FCA16:aa,3FCA1A:55,3FCA1E:aa,3FCA22:55,3FCA26:aa,3FCA2A:55,3FD00B:00,3FD00F:00,3FD013:00,3FD017:00,3FD01B:00,3FD01F:00,3FD023:00,3FD027:00,3FD02B:00,3FD04B:00,3FD04F:00,3FD053:00,3FD057:00,3FD05B:00,3FD05F:00,3FD063:00,3FD067:00,3FD06B:00,3FD08B:00,3FD08F:00,3FD093:00,3FD097:00,3FD09B:00,3FD09F:00,3FD0A3:00,3FD0A7:00,3FD0AB:00,3FD0CB:00,3FD0CF:00,3FD0D3:00,3FD0D7:00,3FD0DB:00,3FD0DF:00,3FD0E3:00,3FD0E7:00,3FD0EB:00,3FD10B:00,3FD10F:00,3FD113:00,3FD117:00,3FD11B:00,3FD11F:00,3FD123:00,3FD127:00,3FD12B:00,3FD14B:00,3FD14F:00,3FD153:00,3FD157:00,3FD15B:00,3FD15F:00,3FD163:00,3FD167:00,3FD16B:00,3FD18B:00,3FD18F:00,3FD193:00,3FD197:00,3FD19B:00,3FD19F:00,3FD1A3:00,3FD1A7:00,3FD1AB:00,3FD1CB:00,3FD1CF:00,3FD1D3:00,3FD1D7:00,3FD1DB:00,3FD1DF:00,3FD1E3:00,3FD1E7:00,3FD1EB:00,3FD20B:00,3FD20F:00,3FD213:00,3FD217:00,3FD21B:00,3FD21F:00,3FD223:00,3FD227:00,3FD22B:00,3FD40B:00,3FD40F:00,3FD413:00,3FD417:00,3FD41B:00,3FD41F:00,3FD423:00,3FD427:00,3FD42B:00,3FD44B:00,3FD44F:00,3FD453:00,3FD457:00,3FD45B:00,3FD45F:00,3FD463:00,3FD467:00,3FD46B:00,3FD48B:00,3FD48F:00,3FD493:00,3FD497:00,3FD49B:00,3FD49F:00,3FD4A3:00,3FD4A7:00,3FD4AB:00,3FD4CB:00,3FD4CF:00,3FD4D3:00,3FD4D7:00,3FD4DB:00,3FD4DF:00,3FD4E3:00,3FD4E7:00,3FD4EB:00,3FD50B:00,3FD50F:00,3FD513:00,3FD517:00,3FD51B:00,3FD51F:00,3FD523:00,3FD527:00,3FD52B:00,3FD54B:00,3FD54F:00,3FD553:00,3FD557:00,3FD55B:00,3FD55F:00,3FD563:00,3FD567:00,3FD56B:00,3FD58B:00,3FD58F:00,3FD593:00,3FD597:00,3FD59B:00,3FD59F:00,3FD5A3:00,3FD5A7:00,3FD5AB:00,3FD5CB:00,3FD5CF:00,3FD5D3:00,3FD5D7:00,3FD5DB:00,3FD5DF:00,3FD5E3:00,3FD5E7:00,3FD5EB:00,3FD60B:00,3FD60F:00,3FD613:00,3FD617:00,3FD61B:00,3FD61F:00,3FD623:00,3FD627:00,3FD62B:00,3FD80A:00,3FD80E:00,3FD812:00,3FD84A:00,3FD84E:00,3FD852:00,3FD88A:00,3FD88E:00,3FD892:00,3FD8CA:00,3FD8CE:00,3FD8D2:00,3FD90A:00,3FD90E:00,3FD912:00,3FD94A:00,3FD94E:00,3FD952:00,3FD98A:00,3FD98E:00,3FD992:00,3FD9CA:00,3FD9CE:00,3FD9D2:00,3FDE4B:fe,3FDE4F:fe,3FDE53:fe,3FDE57:fe,3FDE5B:fe,3FDE5F:fe,3FDE63:fe,3FDE67:fe,3FDE6B:fe,3FDE8B:fc,3FDE8F:fc,3FDE93:fc,3FDE97:fc,3FDE9B:fc,3FDE9F:fc,3FDEA3:fc,3FDEA7:fc,3FDEAB:fc,3FDECB:f8,3FDECF:f8,3FDED3:f8,3FDED7:f8,3FDEDB:f8,3FDEDF:f8,3FDEE3:f8,3FDEE7:f8,3FDEEB:f8,3FDF0B:f0,3FDF0F:f0,3FDF13:f0,3FDF17:f0,3FDF1B:f0,3FDF1F:f0,3FDF23:f0,3FDF27:f0,3FDF2B:f0,3FDF4B:e0,3FDF4F:e0,3FDF53:e0,3FDF57:e0,3FDF5B:e0,3FDF5F:e0,3FDF63:e0,3FDF67:e0,3FDF6B:e0,3FDF8B:c0,3FDF8F:c0,3FDF93:c0,3FDF97:c0,3FDF9B:c0,3FDF9F:c0,3FDFA3:c0,3FDFA7:c0,3FDFAB:c0,3FDFCB:80,3FDFCF:80,3FDFD3:80,3FDFD7:80,3FDFDB:80,3FDFDF:80,3FDFE3:80,3FDFE7:80,3FDFEB:80,3FE24B:fe,3FE24F:fe,3FE253:fe,3FE257:fe,3FE25B:fe,3FE25F:fe,3FE263:fe,3FE267:fe,3FE26B:fe,3FE28B:fc,3FE28F:fc,3FE293:fc,3FE297:fc,3FE29B:fc,3FE29F:fc,3FE2A3:fc,3FE2A7:fc,3FE2AB:fc,3FE2CB:f8,3FE2CF:f8,3FE2D3:f8,3FE2D7:f8,3FE2DB:f8,3FE2DF:f8,3FE2E3:f8,3FE2E7:f8,3FE2EB:f8,3FE30B:f0,3FE30F:f0,3FE313:f0,3FE317:f0,3FE31B:f0,3FE31F:f0,3FE323:f0,3FE327:f0,3FE32B:f0,3FE34B:e0,3FE34F:e0,3FE353:e0,3FE357:e0,3FE35B:e0,3FE35F:e0,3FE363:e0,3FE367:e0,3FE36B:e0,3FE38B:c0,3FE38F:c0,3FE393:c0,3FE397:c0,3FE39B:c0,3FE39F:c0,3FE3A3:c0,3FE3A7:c0,3FE3AB:c0,3FE3CB:80,3FE3CF:80,3FE3D3:80,3FE3D7:80,3FE3DB:80,3FE3DF:80,3FE3E3:80,3FE3E7:80,3FE3EB:80,3FE64A:fe,3FE64E:fe,3FE652:fe,3FE68A:fc,3FE68E:fc,3FE692:fc,3FE6CA:f8,3FE6CE:f8,3FE6D2:f8,3FE70A:f0,3FE70E:f0,3FE712:f0,3FE74A:e0,3FE74E:e0,3FE752:e0,3FE78A:c0,3FE78E:c0,3FE792:c0,3FE7CA:80,3FE7CE:80,3FE7D2:80,3FE803:e1,3FE807:e1,3FE80A:fbc0,3FE80E:f1c0,3FE812:ed80,3FE816:c080,3FE81A:de00,3FE81E:8c00,3FE823:00,3FE843:00,3FE846:fd00,3FE84A:fc00,3FE84E:fc80,3FE852:e180,3FE856:cc80,3FE85A:cc00,3FE85E:8100,3FE863:00,3FE883:80,3FE886:fd00,3FE88A:fc00,3FE88E:fc08,3FE893:08,3FE896:dc08,3FE89A:9c00,3FE89E:c100,3FE8A3:80,3FE8C3:00,3FE8C6:fd00,3FE8CA:fc00,3FE8CE:fc80,3FE8D2:ec80,3FE8D6:cc80,3FE8DA:cc00,3FE8DE:8100,3FE8E3:00,3FE903:00,3FE906:fd00,3FE90A:fe00,3FE90F:80,3FE912:e381,3FE916:cf80,3FE91A:ce00,3FE91E:8100,3FE923:00,3FE943:00,3FE946:fd00,3FE94A:fe00,3FE94F:80,3FE952:e381,3FE956:cf81,3FE95A:cf03,3FE95E:8703,3FE963:03,3FE983:80,3FE986:fd00,3FE98A:fc00,3FE98E:fc08,3FE993:00,3FE996:d800,3FE99A:9c00,3FE99E:c000,3FE9A3:80,3FE9C3:00,3FE9C6:fc00,3FE9CA:fc00,3FE9CE:fc80,3FE9D2:e080,3FE9D6:cc80,3FE9DA:cc00,3FE9DE:8000,3FE9E3:00,3FEA03:c0,3FEA06:fdc0,3FEA0A:fbc0,3FEA0E:f3e1,3FEA12:f3e1,3FEA16:f3e1,3FEA1A:f3c0,3FEA1E:e1c0,3FEA23:c0,3FEA43:e0,3FEA46:fce0,3FEA4A:f9e0,3FEA4E:f9f0,3FEA52:f900,3FEA56:9900,3FEA5A:9900,3FEA5E:c300,3FEA63:81,3FEA83:00,3FEA86:fc00,3FEA8A:f900,3FEA8E:f380,3FEA92:e781,3FEA96:c380,3FEA9A:c900,3FEA9E:8400,3FEAA3:00,3FEAC3:03,3FEAC7:03,3FEACB:03,3FEACF:87,3FEAD2:ef87,3FEAD6:cf84,3FEADA:ce00,3FEADE:8100,3FEAE3:00,3FEB03:0c,3FEB06:fe00,3FEB0A:fc00,3FEB0E:f080,3FEB12:e080,3FEB16:cc80,3FEB1A:cc00,3FEB1E:8c00,3FEB23:00,3FEB43:08,3FEB46:fc00,3FEB4A:fc00,3FEB4E:f480,3FEB52:e080,3FEB56:c880,3FEB5A:cc00,3FEB5E:8e00,3FEB63:04,3FEB83:80,3FEB86:fd00,3FEB8A:fc00,3FEB8E:fc08,3FEB92:fc08,3FEB96:dc08,3FEB9A:9c00,3FEB9E:c100,3FEBA3:80,3FEBC3:00,3FEBC6:fd00,3FEBCA:fc00,3FEBCE:fc80,3FEBD2:ec80,3FEBD6:c180,3FEBDA:cf00,3FEBDE:8703,3FEBE3:03,3FEC03:80,3FEC06:fd00,3FEC0A:fc00,3FEC0E:fc08,3FEC12:fc00,3FEC16:d200,3FEC1A:9d00,3FEC1E:c200,3FEC23:80,3FEC43:00,3FEC46:fd00,3FEC4A:fc00,3FEC4E:fc80,3FEC52:e180,3FEC56:cc80,3FEC5A:cc00,3FEC5E:8400,3FEC63:00,3FEC83:80,3FEC86:fd00,3FEC8A:fc00,3FEC8F:00,3FEC92:e100,3FEC96:fc00,3FEC9A:9c00,3FEC9E:c100,3FECA3:80,3FECC3:80,3FECC6:fc00,3FECCA:fb00,3FECCE:f300,3FECD2:f3e1,3FECD6:f3e1,3FECDA:f3c0,3FECDE:e1c0,3FECE3:c0,3FED03:00,3FED06:fe00,3FED0A:fc00,3FED0E:fc80,3FED12:ec80,3FED16:cc80,3FED1A:cc80,3FED1E:e180,3FED23:c0,3FED43:08,3FED46:fc08,3FED4A:fd00,3FED4E:f980,3FED52:eb80,3FED56:e3c1,3FED5A:f7c1,3FED5E:f7e3,3FED63:e3,3FED83:00,3FED86:fc00,3FED8A:fc00,3FED8E:fc80,3FED92:e080,3FED96:c080,3FED9A:cc80,3FED9E:de80,3FEDA3:8c,3FEDC3:00,3FEDC6:fc00,3FEDCA:fc00,3FEDCE:f180,3FEDD2:f3c0,3FEDD6:e180,3FEDDA:cc00,3FEDDE:8c00,3FEDE3:00,3FEE03:00,3FEE06:fc00,3FEE0A:fc00,3FEE0E:f180,3FEE12:f3c0,3FEE16:f3e1,3FEE1A:f3c0,3FEE1E:e1c0,3FEE23:c0,3FEE43:80,3FEE46:fc00,3FEE4A:f900,3FEE4E:f300,3FEE52:e781,3FEE56:cf00,3FEE5A:9e00,3FEE5E:8100,3FEE63:00,3FF003:e1,3FF007:ed,3FF00B:cc,3FF00F:de,3FF013:92,3FF016:fcbf,3FF01A:fe21,3FF01E:fc73,3FF023:00,3FF043:00,3FF047:7e,3FF04B:33,3FF04F:b3,3FF053:be,3FF056:fcb3,3FF05A:fc33,3FF05E:f17e,3FF063:00,3FF083:80,3FF087:3e,3FF08B:63,3FF08F:6b,3FF093:68,3FF096:fc6b,3FF09A:fc63,3FF09E:f13e,3FF0A3:80,3FF0C3:00,3FF0C7:7e,3FF0CB:33,3FF0CF:b3,3FF0D2:feb3,3FF0D6:fcb3,3FF0DA:fc33,3FF0DE:f17e,3FF0E3:00,3FF103:00,3FF107:7e,3FF10B:31,3FF10F:b0,3FF113:bd,3FF117:b0,3FF11A:fe31,3FF11E:f17e,3FF123:00,3FF143:00,3FF147:7e,3FF14B:31,3FF14F:b0,3FF153:bd,3FF157:b1,3FF15B:33,3FF15E:f77b,3FF163:03,3FF183:80,3FF187:3e,3FF18B:63,3FF18F:6b,3FF193:60,3FF196:fc67,3FF19A:fc63,3FF19E:f03f,3FF1A3:80,3FF1C3:00,3FF1C7:7f,3FF1CB:33,3FF1CF:b3,3FF1D2:febf,3FF1D6:fcb3,3FF1DA:fc33,3FF1DE:f07f,3FF1E3:00,3FF203:c0,3FF207:de,3FF20B:cc,3FF20F:ed,3FF213:ed,3FF217:ed,3FF21A:fbcc,3FF21E:f1de,3FF223:c0,3FF243:e0,3FF247:ef,3FF24B:e6,3FF24E:fdf6,3FF252:f906,3FF256:f966,3FF25A:f966,3FF25E:c33c,3FF263:81,3FF283:00,3FF287:7b,3FF28B:36,3FF28F:bc,3FF293:b9,3FF297:bc,3FF29A:f936,3FF29E:f47b,3FF2A3:00,3FF2C3:03,3FF2C7:7b,3FF2CB:33,3FF2CF:b7,3FF2D3:b7,3FF2D7:b4,3FF2DA:fe31,3FF2DE:f17e,3FF2E3:00,3FF303:0c,3FF307:61,3FF30B:33,3FF30F:bf,3FF312:febf,3FF316:fcb3,3FF31A:fc33,3FF31E:fc73,3FF323:00,3FF343:08,3FF347:63,3FF34B:33,3FF34F:bb,3FF352:febf,3FF356:fcb7,3FF35A:fc33,3FF35E:fe71,3FF363:04,3FF383:80,3FF387:3e,3FF38B:63,3FF38F:6b,3FF392:fe6b,3FF396:fc6b,3FF39A:fc63,3FF39E:f13e,3FF3A3:80,3FF3C3:00,3FF3C7:7e,3FF3CB:33,3FF3CF:b3,3FF3D2:feb3,3FF3D6:fdbe,3FF3DB:30,3FF3DE:f77b,3FF3E3:03,3FF403:80,3FF407:3e,3FF40B:63,3FF40F:6b,3FF412:fe63,3FF416:fe6d,3FF41A:fd62,3FF41E:f23d,3FF423:80,3FF443:00,3FF447:7e,3FF44B:33,3FF44F:b3,3FF453:be,3FF456:fcb3,3FF45A:fc33,3FF45E:f47b,3FF463:00,3FF483:80,3FF487:3e,3FF48B:63,3FF48F:60,3FF493:3e,3FF496:fc03,3FF49A:fc63,3FF49E:f13e,3FF4A3:80,3FF4C3:80,3FF4C7:3f,3FF4CB:4c,3FF4CF:0c,3FF4D3:ed,3FF4D7:ed,3FF4DA:fbcc,3FF4DE:f1de,3FF4E3:c0,3FF503:00,3FF507:77,3FF50B:33,3FF50F:b3,3FF513:b3,3FF516:feb3,3FF51A:fcb3,3FF51E:f99e,3FF523:c0,3FF543:08,3FF547:6b,3FF54B:22,3FF54F:b6,3FF553:94,3FF557:dd,3FF55B:c9,3FF55E:f7eb,3FF563:e3,3FF583:00,3FF587:73,3FF58B:33,3FF58F:b3,3FF592:febf,3FF596:fcbf,3FF59A:fcb3,3FF59E:fea1,3FF5A3:8c,3FF5C3:00,3FF5C7:73,3FF5CB:33,3FF5CF:9e,3FF5D3:cc,3FF5D6:fd9e,3FF5DA:fc33,3FF5DE:fc73,3FF5E3:00,3FF603:00,3FF607:73,3FF60B:33,3FF60F:9e,3FF613:cc,3FF617:ed,3FF61A:fbcc,3FF61E:f1de,3FF623:c0,3FF643:80,3FF647:3f,3FF64B:46,3FF64F:0c,3FF653:99,3FF657:30,3FF65A:fe61,3FF65E:f17e,3FF663:00'
    'xmn.17m' = '3FC006:0000,3FC02E:0000,3FC046:0000,3FC06E:0000,3FC086:0000,3FC0AE:0000,3FC0C6:0000,3FC0EE:0000,3FC106:0000,3FC12E:0000,3FC146:0000,3FC16E:0000,3FC186:0000,3FC1AE:0000,3FC1C6:0000,3FC1EE:0000,3FC206:0101,3FC20A:fdfd,3FC20E:fdfd,3FC212:fdfd,3FC216:fdfd,3FC21A:fdfd,3FC21E:fdfd,3FC222:fdfd,3FC226:fdfd,3FC22A:fdfd,3FC22E:0101,3FC402:0000,3FC407:00,3FC417:00,3FC41A:0000,3FC41E:00,3FC442:0000,3FC447:00,3FC457:00,3FC45A:0000,3FC45E:00,3FC482:0000,3FC487:00,3FC497:00,3FC49A:0000,3FC49E:00,3FC4C2:0000,3FC4C7:00,3FC4D7:00,3FC4DA:0000,3FC4DE:00,3FC502:0000,3FC507:00,3FC517:00,3FC51A:0000,3FC51E:00,3FC542:0000,3FC547:00,3FC557:00,3FC55A:0000,3FC55E:00,3FC582:0000,3FC587:00,3FC597:00,3FC59A:0000,3FC59E:00,3FC5C2:0000,3FC5C6:fe00,3FC5CA:fefc,3FC5CE:fefc,3FC5D2:fefc,3FC5D6:fe00,3FC5DA:0000,3FC5DE:00,3FC80A:5555,3FC80E:aaaa,3FC812:5555,3FC816:aaaa,3FC81A:5555,3FC81E:aaaa,3FC822:5555,3FC826:aaaa,3FC82A:5555,3FC84A:5555,3FC84E:aaaa,3FC852:5555,3FC856:aaaa,3FC85A:5555,3FC85E:aaaa,3FC862:5555,3FC866:aaaa,3FC86A:5555,3FC88A:5555,3FC88E:aaaa,3FC892:5555,3FC896:aaaa,3FC89A:5555,3FC89E:aaaa,3FC8A2:5555,3FC8A6:aaaa,3FC8AA:5555,3FC8CA:5555,3FC8CE:aaaa,3FC8D2:5555,3FC8D6:aaaa,3FC8DA:5555,3FC8DE:aaaa,3FC8E2:5555,3FC8E6:aaaa,3FC8EA:5555,3FC90A:5555,3FC90E:aaaa,3FC912:5555,3FC916:aaaa,3FC91A:5555,3FC91E:aaaa,3FC922:5555,3FC926:aaaa,3FC92A:5555,3FC94A:5555,3FC94E:aaaa,3FC952:5555,3FC956:aaaa,3FC95A:5555,3FC95E:aaaa,3FC962:5555,3FC966:aaaa,3FC96A:5555,3FC98A:5555,3FC98E:aaaa,3FC992:5555,3FC996:aaaa,3FC99A:5555,3FC99E:aaaa,3FC9A2:5555,3FC9A6:aaaa,3FC9AA:5555,3FC9CA:5555,3FC9CE:aaaa,3FC9D2:5555,3FC9D6:aaaa,3FC9DA:5555,3FC9DE:aaaa,3FC9E2:5555,3FC9E6:aaaa,3FC9EA:5555,3FCA0A:5555,3FCA0E:aaaa,3FCA12:5555,3FCA16:aaaa,3FCA1A:5555,3FCA1E:aaaa,3FCA22:5555,3FCA26:aaaa,3FCA2A:5555,3FCC0A:0000,3FCC0E:0000,3FCC12:0000,3FCC4A:0000,3FCC4E:0000,3FCC52:0000,3FCC8A:0000,3FCC8E:0000,3FCC92:0000,3FCCCA:0000,3FCCCE:0000,3FCCD2:0000,3FCD0A:0000,3FCD0E:0000,3FCD12:0000,3FCD4A:0000,3FCD4E:0000,3FCD52:0000,3FCD8A:0000,3FCD8E:0000,3FCD92:0000,3FCDCA:0000,3FCDCE:0000,3FCDD2:0000,3FD00A:0000,3FD00E:0000,3FD012:0000,3FD016:0000,3FD01A:0000,3FD01E:0000,3FD022:0000,3FD026:0000,3FD02A:0000,3FD04A:0000,3FD04E:0000,3FD052:0000,3FD056:0000,3FD05A:0000,3FD05E:0000,3FD062:0000,3FD066:0000,3FD06A:0000,3FD08A:0000,3FD08E:0000,3FD092:0000,3FD096:0000,3FD09A:0000,3FD09E:0000,3FD0A2:0000,3FD0A6:0000,3FD0AA:0000,3FD0CA:0000,3FD0CE:0000,3FD0D2:0000,3FD0D6:0000,3FD0DA:0000,3FD0DE:0000,3FD0E2:0000,3FD0E6:0000,3FD0EA:0000,3FD10A:0000,3FD10E:0000,3FD112:0000,3FD116:0000,3FD11A:0000,3FD11E:0000,3FD122:0000,3FD126:0000,3FD12A:0000,3FD14A:0000,3FD14E:0000,3FD152:0000,3FD156:0000,3FD15A:0000,3FD15E:0000,3FD162:0000,3FD166:0000,3FD16A:0000,3FD18A:0000,3FD18E:0000,3FD192:0000,3FD196:0000,3FD19A:0000,3FD19E:0000,3FD1A2:0000,3FD1A6:0000,3FD1AA:0000,3FD1CA:0000,3FD1CE:0000,3FD1D2:0000,3FD1D6:0000,3FD1DA:0000,3FD1DE:0000,3FD1E2:0000,3FD1E6:0000,3FD1EA:0000,3FD20A:0000,3FD20E:0000,3FD212:0000,3FD216:0000,3FD21A:0000,3FD21E:0000,3FD222:0000,3FD226:0000,3FD22A:0000,3FDC4A:fefe,3FDC4E:fefe,3FDC52:fefe,3FDC56:fefe,3FDC5A:fefe,3FDC5E:fefe,3FDC62:fefe,3FDC66:fefe,3FDC6A:fefe,3FDC8A:fcfc,3FDC8E:fcfc,3FDC92:fcfc,3FDC96:fcfc,3FDC9A:fcfc,3FDC9E:fcfc,3FDCA2:fcfc,3FDCA6:fcfc,3FDCAA:fcfc,3FDCCA:f8f8,3FDCCE:f8f8,3FDCD2:f8f8,3FDCD6:f8f8,3FDCDA:f8f8,3FDCDE:f8f8,3FDCE2:f8f8,3FDCE6:f8f8,3FDCEA:f8f8,3FDD0A:f0f0,3FDD0E:f0f0,3FDD12:f0f0,3FDD16:f0f0,3FDD1A:f0f0,3FDD1E:f0f0,3FDD22:f0f0,3FDD26:f0f0,3FDD2A:f0f0,3FDD4A:e0e0,3FDD4E:e0e0,3FDD52:e0e0,3FDD56:e0e0,3FDD5A:e0e0,3FDD5E:e0e0,3FDD62:e0e0,3FDD66:e0e0,3FDD6A:e0e0,3FDD8A:c0c0,3FDD8E:c0c0,3FDD92:c0c0,3FDD96:c0c0,3FDD9A:c0c0,3FDD9E:c0c0,3FDDA2:c0c0,3FDDA6:c0c0,3FDDAA:c0c0,3FDDCA:8080,3FDDCE:8080,3FDDD2:8080,3FDDD6:8080,3FDDDA:8080,3FDDDE:8080,3FDDE2:8080,3FDDE6:8080,3FDDEA:8080,3FDE0A:0000,3FDE0E:0000,3FDE12:0000,3FDE16:0000,3FDE1A:0000,3FDE1E:0000,3FDE22:0000,3FDE26:0000,3FDE2A:0000,3FDE4A:0000,3FDE4E:0000,3FDE52:0000,3FDE56:0000,3FDE5A:0000,3FDE5E:0000,3FDE62:0000,3FDE66:0000,3FDE6A:0000,3FDE8A:0000,3FDE8E:0000,3FDE92:0000,3FDE96:0000,3FDE9A:0000,3FDE9E:0000,3FDEA2:0000,3FDEA6:0000,3FDEAA:0000,3FDECA:0000,3FDECE:0000,3FDED2:0000,3FDED6:0000,3FDEDA:0000,3FDEDE:0000,3FDEE2:0000,3FDEE6:0000,3FDEEA:0000,3FDF0A:0000,3FDF0E:0000,3FDF12:0000,3FDF16:0000,3FDF1A:0000,3FDF1E:0000,3FDF22:0000,3FDF26:0000,3FDF2A:0000,3FDF4A:0000,3FDF4E:0000,3FDF52:0000,3FDF56:0000,3FDF5A:0000,3FDF5E:0000,3FDF62:0000,3FDF66:0000,3FDF6A:0000,3FDF8A:0000,3FDF8E:0000,3FDF92:0000,3FDF96:0000,3FDF9A:0000,3FDF9E:0000,3FDFA2:0000,3FDFA6:0000,3FDFAA:0000,3FDFCA:0000,3FDFCE:0000,3FDFD2:0000,3FDFD6:0000,3FDFDA:0000,3FDFDE:0000,3FDFE2:0000,3FDFE6:0000,3FDFEA:0000,3FE812:7f,3FE816:7f,3FE81A:3f,3FE81E:3f7f,3FE822:3f,3FE846:7f,3FE84A:7f,3FE84E:7f,3FE852:7f,3FE856:7f,3FE85A:7f,3FE85E:7f,3FE886:7f,3FE88A:7f,3FE88E:7f,3FE892:7f,3FE896:7f,3FE89A:7f,3FE89E:7f,3FE8C6:7f,3FE8CA:7f,3FE8CE:7f,3FE8D2:7f,3FE8D6:7f,3FE8DA:7f,3FE8DE:7f,3FE906:7f,3FE90A:7f,3FE90E:7f,3FE916:7f,3FE91A:7f,3FE91E:7f,3FE946:7f,3FE94A:7f,3FE94E:7f,3FE986:7f,3FE98A:7f,3FE98E:7f,3FE992:7f,3FE996:7f,3FE99A:7f,3FE99E:7f,3FE9A2:7f,3FE9C2:3f,3FE9C6:3f,3FE9CA:3f,3FE9CE:7f,3FE9D2:7f,3FE9D6:7f,3FE9DA:3f,3FE9DE:bf7f,3FE9E2:3f,3FEA42:7f,3FEA46:7f,3FEA4A:7f,3FEA82:7f,3FEA86:7f,3FEA8A:7f,3FEA9A:7f,3FEA9E:7f,3FEAA2:7f,3FEAD6:7f,3FEADA:7f,3FEADE:7f,3FEB02:7f,3FEB06:7f,3FEB0A:7f,3FEB0E:7f,3FEB12:7f,3FEB16:7f,3FEB1A:3f,3FEB1E:3f7f,3FEB22:3f,3FEB42:3f,3FEB46:3f,3FEB4A:3f,3FEB4E:7f,3FEB52:7f,3FEB56:7f,3FEB5A:3f,3FEB5E:3f7f,3FEB62:3f,3FEB86:7f,3FEB8A:7f,3FEB8E:7f,3FEB92:7f,3FEB96:7f,3FEB9A:7f,3FEB9E:7f,3FEBC6:7f,3FEBCA:7f,3FEBCE:7f,3FEBD2:7f,3FEBD6:7f,3FEC06:7f,3FEC0A:7f,3FEC0E:7f,3FEC12:7f,3FEC16:7f,3FEC1A:7f,3FEC1E:7f,3FEC22:7f,3FEC46:7f,3FEC4A:7f,3FEC4E:7f,3FEC52:7f,3FEC56:7f,3FEC5A:3f,3FEC5E:3f7f,3FEC62:3f,3FEC86:7f,3FEC8A:7f,3FEC8E:7f,3FEC92:7f,3FEC96:7f,3FEC9A:7f,3FEC9E:7f,3FECC2:7f,3FECC6:3f,3FECCA:3f,3FECCE:3f,3FED02:3f,3FED06:bf,3FED0A:3f,3FED0E:7f,3FED12:7f,3FED16:7f,3FED1A:7f,3FED1E:7f,3FED42:7f,3FED46:7f,3FED4A:7f,3FED82:3f,3FED86:3f,3FED8A:3f,3FED8E:7f,3FED92:7f,3FED96:7f,3FED9A:7f,3FED9E:7f,3FEDA2:7f,3FEDC2:3f,3FEDC6:3f,3FEDCA:3f,3FEDCE:7f,3FEDD6:7f,3FEDDA:3f,3FEDDE:3f7f,3FEDE2:3f,3FEE02:3f,3FEE06:3f,3FEE0A:3f,3FEE0E:7f,3FEE42:7f,3FEE46:7f,3FEE4A:7f,3FEE56:7f,3FEE5A:7f,3FEE5E:7f,3FF012:7f,3FF016:7f,3FF01A:3f,3FF01E:bf,3FF022:3f,3FF046:7f,3FF04A:7f,3FF04E:7f,3FF052:7f,3FF056:7f,3FF05A:7f,3FF05E:7f,3FF086:7f,3FF08A:7f,3FF08E:7f,3FF092:7f,3FF096:7f,3FF09A:7f,3FF09E:7f,3FF0C6:7f,3FF0CA:7f,3FF0CE:7f,3FF0D2:7f,3FF0D6:7f,3FF0DA:7f,3FF0DE:7f,3FF106:7f,3FF10A:7f,3FF10E:7f,3FF116:7f,3FF11A:7f,3FF11E:7f,3FF146:7f,3FF14A:7f,3FF14E:7f,3FF186:7f,3FF18A:7f,3FF18E:7f,3FF192:7f,3FF196:7f,3FF19A:7f,3FF19E:7f,3FF1A2:7f,3FF1C2:3f,3FF1C6:3f,3FF1CA:3f,3FF1CE:7f,3FF1D2:7f,3FF1D6:7f,3FF1DA:3f,3FF1DE:bf,3FF1E2:3f,3FF242:7f,3FF246:7f,3FF24A:7f,3FF282:7f,3FF286:7f,3FF28A:7f,3FF29A:7f,3FF29E:7f,3FF2A2:7f,3FF2D6:7f,3FF2DA:7f,3FF2DE:7f,3FF302:7f,3FF306:7f,3FF30A:7f,3FF30E:7f,3FF312:7f,3FF316:7f,3FF31A:3f,3FF31E:bf,3FF322:3f,3FF342:3f,3FF346:3f,3FF34A:3f,3FF34E:7f,3FF352:7f,3FF356:7f,3FF35A:3f,3FF35E:bf,3FF362:3f,3FF386:7f,3FF38A:7f,3FF38E:7f,3FF392:7f,3FF396:7f,3FF39A:7f,3FF39E:7f,3FF3C6:7f,3FF3CA:7f,3FF3CE:7f,3FF3D2:7f,3FF3D6:7f,3FF406:7f,3FF40A:7f,3FF40E:7f,3FF412:7f,3FF416:7f,3FF41A:7f,3FF41E:7f,3FF422:7f,3FF446:7f,3FF44A:7f,3FF44E:7f,3FF452:7f,3FF456:7f,3FF45A:3f,3FF45E:bf,3FF462:3f,3FF486:7f,3FF48A:7f,3FF48E:7f,3FF492:7f,3FF496:7f,3FF49A:7f,3FF49E:7f,3FF4C2:7f,3FF4C6:3f,3FF4CA:3f,3FF4CE:3f,3FF502:3f,3FF506:3f,3FF50A:3f,3FF50E:7f,3FF512:7f,3FF516:7f,3FF51A:7f,3FF51E:7f,3FF542:7f,3FF546:7f,3FF54A:7f,3FF582:3f,3FF586:3f,3FF58A:3f,3FF58E:7f,3FF592:7f,3FF596:7f,3FF59A:7f,3FF59E:7f,3FF5A2:7f,3FF5C2:3f,3FF5C6:3f,3FF5CA:3f,3FF5CE:7f,3FF5D6:7f,3FF5DA:3f,3FF5DE:bf,3FF5E2:3f,3FF602:3f,3FF606:3f,3FF60A:3f,3FF60E:7f,3FF642:7f,3FF646:7f,3FF64A:7f,3FF656:7f,3FF65A:7f,3FF65E:7f'
    'xmn.19m' = '3FC002:0000,3FC006:0000,3FC02E:0000,3FC032:0000,3FC042:0000,3FC046:0000,3FC06E:0000,3FC072:0000,3FC082:0000,3FC086:0000,3FC0AE:0000,3FC0B2:0000,3FC0C2:0000,3FC0C6:0000,3FC0EE:0000,3FC0F2:0000,3FC102:0000,3FC106:0000,3FC12E:0000,3FC132:0000,3FC142:0000,3FC146:0000,3FC16E:0000,3FC172:0000,3FC182:0000,3FC186:0000,3FC1AE:0000,3FC1B2:0000,3FC1C2:0000,3FC1C6:0000,3FC1EE:0000,3FC1F2:0000,3FC202:0000,3FC206:0000,3FC20A:fcfc,3FC20E:fcfc,3FC212:fcfc,3FC216:fcfc,3FC21A:fcfc,3FC21E:fcfc,3FC222:fcfc,3FC226:fcfc,3FC22A:fcfc,3FC22E:0000,3FC232:0000,3FC402:00,3FC406:00,3FC416:00,3FC41A:00,3FC41E:00,3FC442:00,3FC446:00,3FC456:00,3FC45A:00,3FC45E:00,3FC482:00,3FC486:00,3FC496:00,3FC49A:00,3FC49E:00,3FC4C2:00,3FC4C6:00,3FC4D6:00,3FC4DA:00,3FC4DE:00,3FC502:00,3FC506:00,3FC516:00,3FC51A:00,3FC51E:00,3FC542:00,3FC546:00,3FC556:00,3FC55A:00,3FC55E:00,3FC582:00,3FC586:00,3FC596:00,3FC59A:00,3FC59E:00,3FC5C2:00,3FC5C6:00,3FC5CA:fc,3FC5CE:fc,3FC5D2:fc,3FC5D6:00,3FC5DA:00,3FC5DE:00,3FC80A:55,3FC80E:aa,3FC812:55,3FC816:aa,3FC81A:55,3FC81E:aa,3FC822:55,3FC826:aa,3FC82A:55,3FC84A:55,3FC84E:aa,3FC852:55,3FC856:aa,3FC85A:55,3FC85E:aa,3FC862:55,3FC866:aa,3FC86A:55,3FC88A:55,3FC88E:aa,3FC892:55,3FC896:aa,3FC89A:55,3FC89E:aa,3FC8A2:55,3FC8A6:aa,3FC8AA:55,3FC8CA:55,3FC8CE:aa,3FC8D2:55,3FC8D6:aa,3FC8DA:55,3FC8DE:aa,3FC8E2:55,3FC8E6:aa,3FC8EA:55,3FC90A:55,3FC90E:aa,3FC912:55,3FC916:aa,3FC91A:55,3FC91E:aa,3FC922:55,3FC926:aa,3FC92A:55,3FC94A:55,3FC94E:aa,3FC952:55,3FC956:aa,3FC95A:55,3FC95E:aa,3FC962:55,3FC966:aa,3FC96A:55,3FC98A:55,3FC98E:aa,3FC992:55,3FC996:aa,3FC99A:55,3FC99E:aa,3FC9A2:55,3FC9A6:aa,3FC9AA:55,3FC9CA:55,3FC9CE:aa,3FC9D2:55,3FC9D6:aa,3FC9DA:55,3FC9DE:aa,3FC9E2:55,3FC9E6:aa,3FC9EA:55,3FCA0A:55,3FCA0E:aa,3FCA12:55,3FCA16:aa,3FCA1A:55,3FCA1E:aa,3FCA22:55,3FCA26:aa,3FCA2A:55,3FD00B:00,3FD00F:00,3FD013:00,3FD017:00,3FD01B:00,3FD01F:00,3FD023:00,3FD027:00,3FD02B:00,3FD04B:00,3FD04F:00,3FD053:00,3FD057:00,3FD05B:00,3FD05F:00,3FD063:00,3FD067:00,3FD06B:00,3FD08B:00,3FD08F:00,3FD093:00,3FD097:00,3FD09B:00,3FD09F:00,3FD0A3:00,3FD0A7:00,3FD0AB:00,3FD0CB:00,3FD0CF:00,3FD0D3:00,3FD0D7:00,3FD0DB:00,3FD0DF:00,3FD0E3:00,3FD0E7:00,3FD0EB:00,3FD10B:00,3FD10F:00,3FD113:00,3FD117:00,3FD11B:00,3FD11F:00,3FD123:00,3FD127:00,3FD12B:00,3FD14B:00,3FD14F:00,3FD153:00,3FD157:00,3FD15B:00,3FD15F:00,3FD163:00,3FD167:00,3FD16B:00,3FD18B:00,3FD18F:00,3FD193:00,3FD197:00,3FD19B:00,3FD19F:00,3FD1A3:00,3FD1A7:00,3FD1AB:00,3FD1CB:00,3FD1CF:00,3FD1D3:00,3FD1D7:00,3FD1DB:00,3FD1DF:00,3FD1E3:00,3FD1E7:00,3FD1EB:00,3FD20B:00,3FD20F:00,3FD213:00,3FD217:00,3FD21B:00,3FD21F:00,3FD223:00,3FD227:00,3FD22B:00,3FD40B:00,3FD40F:00,3FD413:00,3FD417:00,3FD41B:00,3FD41F:00,3FD423:00,3FD427:00,3FD42B:00,3FD44B:00,3FD44F:00,3FD453:00,3FD457:00,3FD45B:00,3FD45F:00,3FD463:00,3FD467:00,3FD46B:00,3FD48B:00,3FD48F:00,3FD493:00,3FD497:00,3FD49B:00,3FD49F:00,3FD4A3:00,3FD4A7:00,3FD4AB:00,3FD4CB:00,3FD4CF:00,3FD4D3:00,3FD4D7:00,3FD4DB:00,3FD4DF:00,3FD4E3:00,3FD4E7:00,3FD4EB:00,3FD50B:00,3FD50F:00,3FD513:00,3FD517:00,3FD51B:00,3FD51F:00,3FD523:00,3FD527:00,3FD52B:00,3FD54B:00,3FD54F:00,3FD553:00,3FD557:00,3FD55B:00,3FD55F:00,3FD563:00,3FD567:00,3FD56B:00,3FD58B:00,3FD58F:00,3FD593:00,3FD597:00,3FD59B:00,3FD59F:00,3FD5A3:00,3FD5A7:00,3FD5AB:00,3FD5CB:00,3FD5CF:00,3FD5D3:00,3FD5D7:00,3FD5DB:00,3FD5DF:00,3FD5E3:00,3FD5E7:00,3FD5EB:00,3FD60B:00,3FD60F:00,3FD613:00,3FD617:00,3FD61B:00,3FD61F:00,3FD623:00,3FD627:00,3FD62B:00,3FD80A:00,3FD80E:00,3FD812:00,3FD84A:00,3FD84E:00,3FD852:00,3FD88A:00,3FD88E:00,3FD892:00,3FD8CA:00,3FD8CE:00,3FD8D2:00,3FD90A:00,3FD90E:00,3FD912:00,3FD94A:00,3FD94E:00,3FD952:00,3FD98A:00,3FD98E:00,3FD992:00,3FD9CA:00,3FD9CE:00,3FD9D2:00,3FDC4B:fe,3FDC4F:fe,3FDC53:fe,3FDC57:fe,3FDC5B:fe,3FDC5F:fe,3FDC63:fe,3FDC67:fe,3FDC6B:fe,3FDC8B:fc,3FDC8F:fc,3FDC93:fc,3FDC97:fc,3FDC9B:fc,3FDC9F:fc,3FDCA3:fc,3FDCA7:fc,3FDCAB:fc,3FDCCB:f8,3FDCCF:f8,3FDCD3:f8,3FDCD7:f8,3FDCDB:f8,3FDCDF:f8,3FDCE3:f8,3FDCE7:f8,3FDCEB:f8,3FDD0B:f0,3FDD0F:f0,3FDD13:f0,3FDD17:f0,3FDD1B:f0,3FDD1F:f0,3FDD23:f0,3FDD27:f0,3FDD2B:f0,3FDD4B:e0,3FDD4F:e0,3FDD53:e0,3FDD57:e0,3FDD5B:e0,3FDD5F:e0,3FDD63:e0,3FDD67:e0,3FDD6B:e0,3FDD8B:c0,3FDD8F:c0,3FDD93:c0,3FDD97:c0,3FDD9B:c0,3FDD9F:c0,3FDDA3:c0,3FDDA7:c0,3FDDAB:c0,3FDDCB:80,3FDDCF:80,3FDDD3:80,3FDDD7:80,3FDDDB:80,3FDDDF:80,3FDDE3:80,3FDDE7:80,3FDDEB:80,3FDE0B:00,3FDE0F:00,3FDE13:00,3FDE17:00,3FDE1B:00,3FDE1F:00,3FDE23:00,3FDE27:00,3FDE2B:00,3FDE4B:00,3FDE4F:00,3FDE53:00,3FDE57:00,3FDE5B:00,3FDE5F:00,3FDE63:00,3FDE67:00,3FDE6B:00,3FDE8B:00,3FDE8F:00,3FDE93:00,3FDE97:00,3FDE9B:00,3FDE9F:00,3FDEA3:00,3FDEA7:00,3FDEAB:00,3FDECB:00,3FDECF:00,3FDED3:00,3FDED7:00,3FDEDB:00,3FDEDF:00,3FDEE3:00,3FDEE7:00,3FDEEB:00,3FDF0B:00,3FDF0F:00,3FDF13:00,3FDF17:00,3FDF1B:00,3FDF1F:00,3FDF23:00,3FDF27:00,3FDF2B:00,3FDF4B:00,3FDF4F:00,3FDF53:00,3FDF57:00,3FDF5B:00,3FDF5F:00,3FDF63:00,3FDF67:00,3FDF6B:00,3FDF8B:00,3FDF8F:00,3FDF93:00,3FDF97:00,3FDF9B:00,3FDF9F:00,3FDFA3:00,3FDFA7:00,3FDFAB:00,3FDFCB:00,3FDFCF:00,3FDFD3:00,3FDFD7:00,3FDFDB:00,3FDFDF:00,3FDFE3:00,3FDFE7:00,3FDFEB:00,3FE04B:fe,3FE04F:fe,3FE053:fe,3FE057:fe,3FE05B:fe,3FE05F:fe,3FE063:fe,3FE067:fe,3FE06B:fe,3FE08B:fc,3FE08F:fc,3FE093:fc,3FE097:fc,3FE09B:fc,3FE09F:fc,3FE0A3:fc,3FE0A7:fc,3FE0AB:fc,3FE0CB:f8,3FE0CF:f8,3FE0D3:f8,3FE0D7:f8,3FE0DB:f8,3FE0DF:f8,3FE0E3:f8,3FE0E7:f8,3FE0EB:f8,3FE10B:f0,3FE10F:f0,3FE113:f0,3FE117:f0,3FE11B:f0,3FE11F:f0,3FE123:f0,3FE127:f0,3FE12B:f0,3FE14B:e0,3FE14F:e0,3FE153:e0,3FE157:e0,3FE15B:e0,3FE15F:e0,3FE163:e0,3FE167:e0,3FE16B:e0,3FE18B:c0,3FE18F:c0,3FE193:c0,3FE197:c0,3FE19B:c0,3FE19F:c0,3FE1A3:c0,3FE1A7:c0,3FE1AB:c0,3FE1CB:80,3FE1CF:80,3FE1D3:80,3FE1D7:80,3FE1DB:80,3FE1DF:80,3FE1E3:80,3FE1E7:80,3FE1EB:80,3FE20B:00,3FE20F:00,3FE213:00,3FE217:00,3FE21B:00,3FE21F:00,3FE223:00,3FE227:00,3FE22B:00,3FE24B:00,3FE24F:00,3FE253:00,3FE257:00,3FE25B:00,3FE25F:00,3FE263:00,3FE267:00,3FE26B:00,3FE28B:00,3FE28F:00,3FE293:00,3FE297:00,3FE29B:00,3FE29F:00,3FE2A3:00,3FE2A7:00,3FE2AB:00,3FE2CB:00,3FE2CF:00,3FE2D3:00,3FE2D7:00,3FE2DB:00,3FE2DF:00,3FE2E3:00,3FE2E7:00,3FE2EB:00,3FE30B:00,3FE30F:00,3FE313:00,3FE317:00,3FE31B:00,3FE31F:00,3FE323:00,3FE327:00,3FE32B:00,3FE34B:00,3FE34F:00,3FE353:00,3FE357:00,3FE35B:00,3FE35F:00,3FE363:00,3FE367:00,3FE36B:00,3FE38B:00,3FE38F:00,3FE393:00,3FE397:00,3FE39B:00,3FE39F:00,3FE3A3:00,3FE3A7:00,3FE3AB:00,3FE3CB:00,3FE3CF:00,3FE3D3:00,3FE3D7:00,3FE3DB:00,3FE3DF:00,3FE3E3:00,3FE3E7:00,3FE3EB:00,3FE44A:fe,3FE44E:fe,3FE452:fe,3FE48A:fc,3FE48E:fc,3FE492:fc,3FE4CA:f8,3FE4CE:f8,3FE4D2:f8,3FE50A:f0,3FE50E:f0,3FE512:f0,3FE54A:e0,3FE54E:e0,3FE552:e0,3FE58A:c0,3FE58E:c0,3FE592:c0,3FE5CA:80,3FE5CE:80,3FE5D2:80,3FE60A:00,3FE60E:00,3FE612:00,3FE64A:00,3FE64E:00,3FE652:00,3FE68A:00,3FE68E:00,3FE692:00,3FE6CA:00,3FE6CE:00,3FE6D2:00,3FE70A:00,3FE70E:00,3FE712:00,3FE74A:00,3FE74E:00,3FE752:00,3FE78A:00,3FE78E:00,3FE792:00,3FE7CA:00,3FE7CE:00,3FE7D2:00,3FE813:7f,3FE817:7f,3FE81B:3f,3FE81E:7f3f,3FE823:3f,3FE847:7f,3FE84B:7f,3FE84F:7f,3FE853:7f,3FE857:7f,3FE85B:7f,3FE85F:7f,3FE887:7f,3FE88B:7f,3FE88F:7f,3FE893:7f,3FE897:7f,3FE89B:7f,3FE89F:7f,3FE8C7:7f,3FE8CB:7f,3FE8CF:7f,3FE8D3:7f,3FE8D7:7f,3FE8DB:7f,3FE8DF:7f,3FE907:7f,3FE90B:7f,3FE90F:7f,3FE917:7f,3FE91B:7f,3FE91F:7f,3FE947:7f,3FE94B:7f,3FE94F:7f,3FE987:7f,3FE98B:7f,3FE98F:7f,3FE993:7f,3FE997:7f,3FE99B:7f,3FE99F:7f,3FE9A3:7f,3FE9C3:3f,3FE9C6:7f3f,3FE9CB:3f,3FE9CF:7f,3FE9D3:7f,3FE9D7:7f,3FE9DB:3f,3FE9DE:7f3f,3FE9E3:3f,3FEA43:7f,3FEA47:7f,3FEA4B:7f,3FEA83:7f,3FEA87:7f,3FEA8B:7f,3FEA9B:7f,3FEA9F:7f,3FEAA3:7f,3FEAD7:7f,3FEADB:7f,3FEADF:7f,3FEB03:7f,3FEB07:7f,3FEB0B:7f,3FEB0F:7f,3FEB13:7f,3FEB17:7f,3FEB1B:3f,3FEB1E:7f3f,3FEB23:3f,3FEB43:3f,3FEB46:7f3f,3FEB4B:3f,3FEB4F:7f,3FEB53:7f,3FEB57:7f,3FEB5B:3f,3FEB5E:7f3f,3FEB63:3f,3FEB87:7f,3FEB8B:7f,3FEB8F:7f,3FEB93:7f,3FEB97:7f,3FEB9B:7f,3FEB9F:7f,3FEBC7:7f,3FEBCB:7f,3FEBCF:7f,3FEBD3:7f,3FEBD7:7f,3FEC07:7f,3FEC0B:7f,3FEC0F:7f,3FEC13:7f,3FEC17:7f,3FEC1B:7f,3FEC1F:7f,3FEC23:7f,3FEC47:7f,3FEC4B:7f,3FEC4F:7f,3FEC53:7f,3FEC57:7f,3FEC5B:3f,3FEC5E:7f3f,3FEC63:3f,3FEC87:7f,3FEC8B:7f,3FEC8F:7f,3FEC93:7f,3FEC97:7f,3FEC9B:7f,3FEC9F:7f,3FECC3:7f,3FECC7:3f,3FECCA:7f3f,3FECCF:3f,3FED03:3f,3FED06:7f3f,3FED0B:3f,3FED0F:7f,3FED13:7f,3FED17:7f,3FED1B:7f,3FED1F:7f,3FED43:7f,3FED47:7f,3FED4B:7f,3FED83:3f,3FED86:7f3f,3FED8B:3f,3FED8F:7f,3FED93:7f,3FED97:7f,3FED9B:7f,3FED9F:7f,3FEDA3:7f,3FEDC3:3f,3FEDC6:7f3f,3FEDCB:3f,3FEDCF:7f,3FEDD7:7f,3FEDDB:3f,3FEDDE:7f3f,3FEDE3:3f,3FEE03:3f,3FEE06:7f3f,3FEE0B:3f,3FEE0F:7f,3FEE43:7f,3FEE47:7f,3FEE4B:7f,3FEE57:7f,3FEE5B:7f,3FEE5F:7f,3FF013:7f,3FF017:7f,3FF01B:3f,3FF01E:7fbf,3FF023:3f,3FF047:7f,3FF04B:7f,3FF04F:7f,3FF053:7f,3FF057:7f,3FF05B:7f,3FF05F:7f,3FF087:7f,3FF08B:7f,3FF08F:7f,3FF093:7f,3FF097:7f,3FF09B:7f,3FF09F:7f,3FF0C7:7f,3FF0CB:7f,3FF0CF:7f,3FF0D3:7f,3FF0D7:7f,3FF0DB:7f,3FF0DF:7f,3FF107:7f,3FF10B:7f,3FF10F:7f,3FF117:7f,3FF11B:7f,3FF11F:7f,3FF147:7f,3FF14B:7f,3FF14F:7f,3FF187:7f,3FF18B:7f,3FF18F:7f,3FF193:7f,3FF197:7f,3FF19B:7f,3FF19F:7f,3FF1A3:7f,3FF1C3:3f,3FF1C7:bf,3FF1CB:3f,3FF1CF:7f,3FF1D3:7f,3FF1D7:7f,3FF1DB:3f,3FF1DE:7fbf,3FF1E3:3f,3FF243:7f,3FF247:7f,3FF24B:7f,3FF283:7f,3FF287:7f,3FF28B:7f,3FF29B:7f,3FF29F:7f,3FF2A3:7f,3FF2D7:7f,3FF2DB:7f,3FF2DF:7f,3FF303:7f,3FF307:7f,3FF30B:7f,3FF30F:7f,3FF313:7f,3FF317:7f,3FF31B:3f,3FF31E:7fbf,3FF323:3f,3FF343:3f,3FF347:bf,3FF34B:3f,3FF34F:7f,3FF353:7f,3FF357:7f,3FF35B:3f,3FF35E:7fbf,3FF363:3f,3FF387:7f,3FF38B:7f,3FF38F:7f,3FF393:7f,3FF397:7f,3FF39B:7f,3FF39F:7f,3FF3C7:7f,3FF3CB:7f,3FF3CF:7f,3FF3D3:7f,3FF3D7:7f,3FF407:7f,3FF40B:7f,3FF40F:7f,3FF413:7f,3FF417:7f,3FF41B:7f,3FF41F:7f,3FF423:7f,3FF447:7f,3FF44B:7f,3FF44F:7f,3FF453:7f,3FF457:7f,3FF45B:3f,3FF45E:7fbf,3FF463:3f,3FF487:7f,3FF48B:7f,3FF48F:7f,3FF493:7f,3FF497:7f,3FF49B:7f,3FF49F:7f,3FF4C3:7f,3FF4C7:3f,3FF4CB:bf,3FF4CF:3f,3FF503:3f,3FF507:bf,3FF50B:3f,3FF50F:7f,3FF513:7f,3FF517:7f,3FF51B:7f,3FF51F:7f,3FF543:7f,3FF547:7f,3FF54B:7f,3FF583:3f,3FF587:bf,3FF58B:3f,3FF58F:7f,3FF593:7f,3FF597:7f,3FF59B:7f,3FF59F:7f,3FF5A3:7f,3FF5C3:3f,3FF5C7:bf,3FF5CB:3f,3FF5CF:7f,3FF5D7:7f,3FF5DB:3f,3FF5DE:7fbf,3FF5E3:3f,3FF603:3f,3FF607:bf,3FF60B:3f,3FF60F:7f,3FF643:7f,3FF647:7f,3FF64B:7f,3FF657:7f,3FF65B:7f,3FF65F:7f'
}
$Sets = @(
    @{
        Set = 'xmcota'
        Title = 'Euro 950331'
        Detect = 'xmne.03f'
        Output = 'xmcota_tag_v3_4p.zip'
        KeyName = 'xmcota.key'
        SharedRequired = $true
        Own = @(
            @{ Name = 'xmne.03f'; Size = 524288; Sha256 = 'fbf9d43649e0d696c81525f2dd6b8a629ead2939ffd91a96630dc4e49fe218fe' }
            @{ Name = 'xmne.04f'; Size = 524288; Sha256 = 'e8294f4bc36041e8be469cc375d57c07873e8c0fe524e81ee1e53ea1d05f5f1b' }
            @{ Name = 'xmne.05b'; Size = 524288; Sha256 = 'c77e8637001aa2741fdde51437c751ff23661eb12679217a41f95a0533807ac3' }
            @{ Name = 'xmne.10b'; Size = 524288; Sha256 = '064efdc37bcffe63de12e79dbde427d46842af1add192e29672c98a8762370cc' }
        )
        Shared = @(
            @{ Name = 'xmn.01a'; Size = 131072; Sha256 = 'e4f316a6e4ec6d9e83506723c0a0d1c9c393cf595ca209f7e673c655f947c845' }
            @{ Name = 'xmn.02a'; Size = 131072; Sha256 = '0e4f00671c9c3f0059956511d65ab8d8a9755c74556d8b263c6f283d141fc58b' }
            @{ Name = 'xmn.06a'; Size = 524288; Sha256 = '76f7440177c5ecf0bc9dadf06b41f29feb6da521c0b56a1fe68620faf6d6cd3b' }
            @{ Name = 'xmn.07a'; Size = 524288; Sha256 = '84a56c4f42e2859e22bbe0e1543decc8070393d6cbc61d8d89520367665fa9cf' }
            @{ Name = 'xmn.08a'; Size = 524288; Sha256 = 'a6c80b179f3c414711a7bc5e88d4cd1b157709fea3accae5587394b9bc52d003' }
            @{ Name = 'xmn.09a'; Size = 524288; Sha256 = '77f67f5d9e61ebd68213b69ed5ae1c53c296110b506041bf84b6e3ad58ea5732' }
            @{ Name = 'xmn.11m'; Size = 2097152; Sha256 = '55010b3a25c14fafa50f2270e4d458f24ccd605710d153ec1696d1b34dfe2a07' }
            @{ Name = 'xmn.12m'; Size = 2097152; Sha256 = '01aa15b9a9e395102957595a7406743fc6ddc5d5337184f1af5302791b4cc7ab' }
            @{ Name = 'xmn.13m'; Size = 4194304; Sha256 = '4f3cffe5d49c577179d0fcee5136d2313c0741a3ec6f9e8fa6c389f89670f2ba' }
            @{ Name = 'xmn.14m'; Size = 4194304; Sha256 = '60c268ee73a54fbdf1ab0b53750e5de76f1ee2aee86ae3ed6ae96096007240ac' }
            @{ Name = 'xmn.15m'; Size = 4194304; Sha256 = '628147eaf4994c4cfee36bdaeda4674a5f1760b9ef71a7f85717b52ead381b08' }
            @{ Name = 'xmn.16m'; Size = 4194304; Sha256 = 'e42184c725f82bab2e1e76c14035b1c00f1178619789290f25eb762a820e35fe' }
            @{ Name = 'xmn.17m'; Size = 4194304; Sha256 = 'e0d244716f44ea4e2bab385f24bb5cffa89432abb106250caa5ffb41f19ffbae' }
            @{ Name = 'xmn.18m'; Size = 4194304; Sha256 = '0c90d9379ae6c24ff21341719b0377e83b5dd14436afedb9ea6773f874c3e487' }
            @{ Name = 'xmn.19m'; Size = 4194304; Sha256 = 'd5ef11ad523f2f3e39c4f1906a6a299608cdef00129d791ba95e431229433202' }
            @{ Name = 'xmn.20m'; Size = 4194304; Sha256 = 'f0f288a4d443beca9e1ba7303a95f07b87479795e3b87c5f954b70e61f08cd8b' }
        )
        Optional = @(
            @{ Name = 'xmcota.key'; Size = 20 }
        )
        Extras = @()
        PatchOrder = @('xmn.13m', 'xmn.15m', 'xmn.17m', 'xmn.19m', 'xmne.03f', 'xmne.05b')
        Hunks = @{
            'xmne.03f' = '0005C8:ab058126,000AEC:5b9571fd3930,002DFC:317a114f2e6e,0035C2:61dfb2e8,003B06:dd93836b2580,003D0C:266379adf037da91100a17e5c0ad,003D4E:66bd114bd801df6146d91750ef803bc8,0051C2:908f8c4695ba,0051FE:6a5a987bc1ed,006D8A:a69ac20e8331,006E36:2844e034,006E3C:85e7e371,0071AE:59f1fc4a,009304:833f7b57ce1146da,009408:6abb6db193314e2a,00945A:94aca9f11efc3e1a,009808:f11c00ad727f,009F46:0be637b9819624f0e834b5ab89679041,009F74:c2cef3ebbc89d797,00ED64:dd6851ff,0137C2:c2a418d0ae6f,0146CA:b22a831c,014F76:3312de229a8a,047CF6:2314868ba873,047D46:4a54cd657e08,05064E:49f0eca4e9b8ff57f9ad,060444:81d763ce,06CD54:20c24807ad976c39,06CE6A:d0479ddcff63e9e4,06EB74:769b30746c8b,06EBA6:a1d84b23a2bdf92b'
            'xmne.05b' = '03F800:4d584f434154542d474176200030f943,03F811:0020f02e4a020000670800f943,03F81F:0060f0754e082f00702e103000006712007c200100a4437020000010305f20754e2d300cca5f20754ee748fa,03F84C:fc33617a,03F851:0000f07952,03F857:0002f02d4a80c800661a00f943,03F865:0020f000617800f943,03F86F:0060f000616e0000605c006d0c080084c8006652000061020bb94e14008c172d0c040000c800672200ed4d00c0f943,03F89F:0020f000615000ed4d00c4f943,03F8AD:0060f00061420000601e00ed4d00c0f943,03F8BF:0020f000616e00ed4d00c4f943,03F8CD:0060f000616000df4c,03F8D7:5fed4d00c82d4a80c8754e29420100294221002942250029422700754e294a210000673600294221006942120029422700294a2500006722002942250000610e,03F918:40068000294a24000067060040060001403d0c00ae421400754e294a01000067a400b94e14002c1300669a002910210000673c0069521200000c0100006628000061560100677e00007e291e0200070a01007c1301002600006162027952,03F977:0004f0006060000061940100605800294a03000067200029420300007e291e0200070a0100314a0c7000660a0000617400006032006e4a900100662600007e291e0200f1500c70070a0100314a0c700066140069421200b94e1400be1f0060060069421200754eed4100c0c8bd00660600ed4100c4754e082f0061ec,03F9F4:294224002e300c0068b00c00006d1400006e0a002e4a0200006708007c13010024005f20754ee748c0e00061ce,03FA22:00600600e748c0e07c130100210069421200e9502500294227007c33fb,03FA40:2200294a2400006708007c33050022007c3d3c00f6002e4284007c2d0200000004007c3d020008006e420a007c1d0400a0007c1d,03FA75:00a1007c1d0100bc007c1d0400a2002e42aa007c2df7,03FA8C:00001c007c2d000000602000ae421400ae42180002701272b94e0000d89edf4c0703754e293022006ed10c00294a240000661200400cf2,03FAC4:006f16006953220000600e00400c0e00006c060069522200006146fd40446ed00c00294a240000660e00400c0800006d1c0000600a00400cf801006e1000690c28001200006406000070754e0170754e690c0c00120000620a00293022006ed10c00294a260000671000690c0400120000660600e9502700294a2500006720000061defc40446ed00c00400c8000006d0e00400c8001006e060029422500690c03001200006568006e4a0600006630002e4abc0000661e00fcb3,03FB7F:0000f200671e00fcb3,03FB89:0040f2006714000061dc0100600c00690c9600120000653200294221006942120029422700294a250000671e0029422500006168fc40068000294a24000067060040060001403d0c00754ee748fa,03FBD8:007c291c020046dcae339001086047130200073c46dc713d046050002e42af006e134a0014006e134c0015006e134d0016006e13a30017006e33c00018006e33c2001a00092fb94e0000a09c5f22691d14004a00691d15004c00293018004002bffb403dc000403dc200403dc600403dc800403df8006e42c4006e42ca00291c0200864846dc31300860403d9001403d9201e95020000061b4fb294a24000066160040062c003c3206003c24040000000176006012004006d4013c32fa,03FC96:3c24fc,03FC9A:00000076403d0c006e420e0041332200422d1400ae421800431da300431d4d002e30be0040045000403d10006e4212007c2dfe,03FCCE:00801c007c2d0000006020007c2d0200000004007c3d020008006e420a007c1d0400a0007c1d0100a1007c1d0100bc007c1d0400a2002e42aa007c1d110007017c3d1000f6002e428400e9502500294227007c130200210069421200092f02701672b94e0000d89eb84e3c31006190005f222e4a030000660c00092fb94e0100dc125f220e2fb94e060096c9b94e060038c3b94e140074225f2cdf4c,03FD6B:5f754ee74880f02e305000400c18000062160040d0fa4116003022000000670800b94e0700cca8df4c0f01754e950295019d029d01a802a801b002b001b702b701be02be01c802c801d102d101d802d801e002e001e802e801f102f10100000000e748dae000742d3050c06db050c4006604000174ed4d00c02e4aaf0000670a002e42af00b84e3c31ed4d00c42eb4af0000670a00421daf00b84e3c31df4c075b754e403dc400403dca00e7484040b94e14008821006658010061e8f9294a010000674c01b94e14009012294a210000673c006e42c0006e42c2006e42c6006e42c8006e42f8000070294a270000671200294227003c300004403dc000403dc600403dc400403dca00006004012e4a03000067fc0000618cf9294a200000672e002e32c0004102400400660a002942200000601a006e02bffbc0006e02bffbc6004002bffb403dc400403dca006d0c080084c80066ba002d0c040000c80066b000006140f9294a01000067a400b94e1400e21300669a00294a030000669200003241024004006788002e32c00041024004410c400400667800007229120200010a0100314a0c10006666006e0c0200040000665c006e4a0600006654006e4a900100674c002e12a00000671600010c020000670e00010c06000067060000603000e95003004002bffb403dc400403dca006e02bffbc0006e02bffbc2006e02bffbc6006e02bffbc8006e02bffbf800df4c0202754ee7484080006188f8294a010000672200b94e14009012006b1800294a210000671000294a250000670800df4c0102754edf4c0102f94e0000a0a26e3d0c0036006d0c080084c800664800394a,03FFCD:0021f000671600394a,03FFD7:0041f000670c00394a,03FFE1:0045f000663000394a,03FFEB:0061f000671600394a,03FFF5:0081f000670c00394a,03FFFF:0085f000661200b94e1400c01200660800f94e06007aeb754e2d3090c12d3290c5092f023ff943,040027:0020f0404a00660c0000612400006704000170f943,04003D:0060f0414a00660c0000610e000067040001721f345f22754e294a010000672400b94e1400e61200661600007429140200020a0100314a0c20c257024a754e424a754e0074754e2d3090c12d3290c5e7484020f943,040093:0020f00061160042d0f943,04009F:0060f000610a0042d2df4c0402754e0074294a010000672600b94e1400e61200661c0029140200020a0100314a0c2000660a0042d431340820754e0074754e28305000092ff943,0400E7:0020f0284a020000670800f943,0400F5:0060f0294a010000670600293004005f2248e2754ee748fa,04010E:7952,040111:0008f0b94e14004c13ed4d00c0f943,040121:0020f000613400ed4d00c4f943,04012F:0060f0006126003910,040139:0021f03980,04013F:0061f000670c007c1b010053c82d4252c8df4c,040153:5ff94e0000ec9b2942210029422500294227002942200029420100294202002942030069420c00694212007c338f0008007c338f000a006e13af000e0029420f0000702e1002002d0181c800671600110c020000665200693d04005000e9500100754e2e305000400c140000643a0040330400fa417000303200000138097640b200670a0000612200006714004154410c1400006504000072cb51e4,0401F0:043241330600e9500100754ee74880a4ed4140c8007a0c7418daca51fc,04020E:07744594006f1600ed411dc9c5d04253181001b000670c00ca51f6,04022A:0070006004000170df4c2501754e060008000a000000020004000e000c0012001000ee08000012003942,040255:0020f0754eee08010012003942,040263:0060f0754ef943,04026B:0020f02e4a260000670800f943,040279:0060f00072131241d2fa41ee0330340010114a006626004233040053131000bc1201008234e7487a00b94e0500e806df4c005ebc1810008f58754e69b40400006606008f58754e4233060053131100bc1202008234e7487a00b94e0500e806df4c005ea9340400a916100000722e122600ad0312c98f58f94e05006806f943,0402F9:0020f00070161000612c00403b50c0b91c,04030B:0030f0754ef943,040313:0060f000702e10020000611000403b50c4791d,040327:0070f00200754ee7488060fa413e03003241d230340010114a00660e004233040040131000bc120100003241d23034001049e269b40400006612004152410c0a000065e8,04036C:00720060e2,040372:4233060041131100bc12020029300400df4c0601754e3910,04038B:0021f03980,040391:0061f000673a007c3b5f00dc6ab94e1400ce22394a,0403A7:0021f000670e00b9429200b042b9429200b442394a,0403BD:0061f000670e00b9429200b842b9429200bc42754ee748fa,0403D6:f941920000432d4a80c8006742002d3004c9400c020000671400400c040000662e006d0c040006c9006424007c3b8f00dc6af943,04040B:0020f0007e00613200f943,040417:0060f0017e0061260000601c006d0c8f00dc6a006612002f7098429842c851fa,040438:7c3b5f00dc6adf4c,040441:5f754ee847c0002d0f81c800673600007c111c00672e003c3a1f20317007d02932040000612e003c3a28203270337007d0,040473:72060c0200006506002932060000611200cbb100640a00984298420060f4,040492:754ee74820f8fa4554010174414a006b2800f9451400f0050138fcc80500c4d40074420c0a0000641000324a00200067080042520060ec,0404CA:074a00660a003c32440000600e003c32bc01023844544ce74492410000e04006006000612c003c303a6000612400007642b6006416000070321000304006006000610e0043520060e8,040514:df4c1f04754ec130c530c03058424150754e012f2e32500079b2,04052F:0050400067440079b2,040539:00504400673a000070390c0200,040547:0020f000660c0079b2,040551:0026f000671a000170390c0200,04055F:0060f00066140079b2,040569:0066f000660a001f223c02fb00754e1f223c000400754e014a00661200002f00619c,04058C:df4c010000670a000172f94e04003281f94e0400fc7c006182,0405A6:00673e008f58404a006618007c1d01004d007c1d0100a3003c24b8000000006010002e424d002e42a3003c2448010000ae940c0082ec422d1400f94e0400d27d00702d3050c0754e003f4f57564c52454e49004553504c59434f454b00004f434f4c53535355000059434c43504f005300005453524f004d0000000043494d454e4100000000505352494c41000000004153554d4152004900004d4f47452041455200444553544e4e494c450000554a47475245414e5455414d4e475445004f00004b414d55004100000000080006000000100012000a00040002000e000c00140016000000e74880700036f94180000140033249e249e9c1d0033241020100c19000701010004600324102800041d240027f00418039328000204041460334425001050067060040000002425801050067060040000004df4c0e01754e00722d4a80c800670e006d0c080084c8006604000172754ee748c0,040700:791b80002140afcb2d46afcb7c1b0100decbf943,040715:0060f10078043000616e,040720:043241d2803300104452440c04000065ea,040732:0061b0,040736:39080700,04073B:0069f100661600fc130f00,040747:0068f1fc138000,04074F:0069f100601a003914,040759:0069f14202010041b40067180039000f00,04076B:0068f13902fe00,040773:0069f13983,040779:0069f1007a0078043442d4313000200036430240043909,040791:0068f100671200434a00663600b909,0407A1:0068f100603400430c400400662c00043c46020100014a00670a002d0d81c800661800c50df909,0407C9:0068f17952,0407CF:006af14002bffb803300204452440c040000659e,0407E4:451baecb451bb6cb1130293202006d0c040084c800662200390c0100,040801:0020f00066060029300400390c0100,040811:0060f00066060029320600403baacb413baccbdf4c,040827:03f84e4a0be748404000702e1002000061d6ef294a0100006736000072291202000e2f0e208002,04084F:00,040852:800c,040855:00003800670c00800c,04085F:00003c00660600010a01005f2c00702e10020041d241d040d0f941,04087B:0060f1c0d01030df4c0202754e,040889:000040,04088D:000044,040891:000038,040895:00003c08208002,04089D:00,0408A0:800c,0408A3:00004000672400800c,0408AD:00004400671e00800c,0408B7:00003800671800800c,0408C1:00003c00671200,0408C9:70754e0070754e0170754e0270754e0370754e400c020000651400012f003241553903,0408ED:0000f1df4c0200754e0170754e394a,0408FD:0000f100661600394a,040907:001ef100660c006d0c080006c0f84e906d00610601f941,04091F:0008f100720074fa43f0002d080000d9cb00670600fa43e60003760070191000383909,040943:001ef100663000006190,04094E:00672800043048e5fa4530,04095A:72240000007a6a0c0800060000660400017a42ba00660800841100104152cb51c0,04097C:4252420c02000065a2,040986:c113,040989:0004f13942,04098F:0002f13942,040995:0003f100703910,04099D:0003f139b0,0409A3:0004f100646c00f941,0409AD:0008f130100000003848e5fa41cefe702c00002d4210c82d4220c8043fb84eb06e2d4a10c800670600b84eb06e1f38f909,0409DF:0002f12d4a20c8006722002d4220c86e20b0000061a4fe006b12003901,0409FD:0002f100670800482cb84eb06e3952,040A0D:0003f1006086,040A14:f84e2a6e0100030200010203007c06300061b6fe00671200063048e5fa4156fe702c000000610e004652460c04000065de,040A46:754e6e20b00000614afe006b2e00006186fe006726006e4a0600006676002e4a820000666e002e0c2000a00000646400680c0800060000675a0000702e100200000a0100003a48e5fa43f8fd7122000005304054006140fe006734000530405448e5fa45defd722400002e320c0069920c00006a040041442e340c006a940c00006a0400424441b4006404004a22492db0006e20b000683d5000b400754e394a,040AE7:0000f100661000394a,040AF1:0015f100660600f84e526eed4d00c0007800614600ed4d00c4017800613c0039080000,040B15:0000f100671200f94d,040B1F:0000380061640002780061200039080100,040B31:0000f100671200f94d,040B3B:00003c00614800037800610400754e043fb84ec02e2d4a80c800670e002e4a030000670600ae528c011f383909,040B69:0015f1006618002e4a010000671000b94e0000369b00660600b84e502e754e2e104a00006b18007c1d,040B93:004c0008702e4a0200006704000c70401d4a0000607203b94e0000c4a5394a,040BB3:0000f10067360039080000,040BBF:0000f1006710002d3044c040041000c033,040BD1:00443839080100,040BD9:0000f1006710002d3044c440041000c033,040BEB:00443c754e394a,040BF3:0000f100660800f94e00000ca02d421ac8ed4500c0ed4700c40061540039080100,040C15:0000f100671000ed4500c0f947,040C23:00003c00613a0039080000,040C2F:0000f100672c00f945,040C39:000038ed4700c40061200039080100,040C49:0000f100671200f945,040C53:000038f947,040C59:00003c00610400754e6a4a0a0100667e016b4a0a01006676016a0c0400060000676c016a0c08000600006762016b0c04000600006758016b0c0800060000674e017c200c001816d04300702a10a20040d0702000002a3050002a4aeb0100670e002a4a0103006706003c301a0048e5c0d000702b10a20040d0712200002b3050002b4aeb0100670e002b4a0103006706003c301a0048e5c0d22a300c0018322a4aa30000670400414441d018382b320c0019362b4aa30000670400434443d259d84190006a040040444098006fc0002a30100058d02b32100059d24190006a04004044183259d241b00062a2002a4abc0000670a002b4abc0000665e002a10a900006728002a12a300000300671e00440c1000006304001078000801000066040044446bd90c0000605e002b10a900006728002b12a300000300671e00440c1000006304001078000801000066040044446ad90c0000603000207044b0006304000430003248e249e20064040041522a340c006bb40c0000640600404441446ad10c006b930c007c1b01001ac8754e2d0c040000c800653e00ed4d00c000613800ed4d00c40061300039080000,040E07:0000f100670c00f94d,040E11:00003800611a0039080100,040E1D:0000f100670c00f94d,040E27:00003c00610400754e6e4a8600006720006e288c00394a,040E3F:0000f100670600006110006c1d80005c00f94e000070cb754ee74880804c20006138fa006a0e006c20520000612cfa006b3200482db000683d5000b4004e21b0006e315000b400400c0200006416004e20006106fa400c0200006508007952,040E9F:0012f1df4c0101754e394a,040EAB:0000f1006610002d300cc06e900c00f94e0600aeeb2d300cc000322d340cc400613c0039080000,040ED3:0000f100670c003934,040EDD:000c380061260039080100,040EE9:0000f100670c003934,040EF3:000c3c006110006e900c006e920c00f94e0600bceb40b4006c0400023041b4006f04000232754ee748c0c02e30500040d0f8416233702000002e4aaf0000670600fcd08000f943910080422e4a020000670800f943910000431f701122810200f000f09882c122c851f2,040F5E:7c1b0100bbcbdf4c0303754ee748fe,040F6E:f94d,040F71:000038ed4500c0434a00670c00f94d,040F81:00003ced4500c44e203c30,040F8D:009842c851fc,040F94:431d0200007e291e0200070a0100073c46dc713d04605000711d0e70af006a1d300030006a3d320032006a3d46004600e7486212b94e0000029cdf4c48467c2d020000000400ae4208007c1d800084002e42a000e74862120070b94e000088b4df4c48467c1d,040FFB:004c007c1d08004a00434a006708007c1d0c004a0031300860403d9001403d92016a1da300a3006a1d4d004d002a300c002a4aa30000670a00400430000060060040063000403d0c006e3dbe0010006a3d940194016a3d960196016a3d98019801ed4100c4434a00670600ed4100c0482db000683d5000b400006114010061a0fef907,04107F:0000f17952,041085:0010f1df4c,04108B:7f754ee748fe,041092:3907,041095:0000f100679800f94d,04109F:000038ed4500c0434a00670c00f94d,0410AF:00003ced4500c4007e291e0200070a0100073c46dcae33900108606e4a900100660600f1500c70b907,0410D9:0000f103304054b901,0410E3:001ef1b901,0410E9:0015f100614a00c891006166102e4201007c3dfe,0410FE:50000a28037afa4182f75826ebbdb00000660c004427b0006a375000b400cd51ea,041120:394a,041123:0000f100660a0000613e0100618800df4c,041135:7f754ee748fe,04113C:4e242d2004527c260000742c006116002d200e527c260000f82b00610800df4c,04115D:7f754e804a00672400402c2e202c00eeb552000066ee,041174:e7483080934edf4c010c7952,041181:003cf10060da,041188:754e394a,04118D:0014f100662400e748c080f94191008042f943,0411A1:0000f33f70d822c851fc,0411AC:f950,0411AF:0014f1df4c0103754e394a,0411BB:0014f100673c00e748c0e0f941,0411C9:0000f3f943910080423f701122810200f000f018248202,0411E1:0f,0411E3:0f8282c122c851ea,0411EC:3942,0411EF:0014f17c1b0100bbcbdf4c0703754e0c2fb94e0100be535f28754e2d4a93c8006658006d0c040084c800662c006e0c2000240000662200092ff943,04122B:0020f02e4a260000670800f943,041239:0060f0110c01005f2200672400394a,041249:0014f100671600082f6e205200002f00613ef6df4c0101006b0600f84e022e754ee7483000ed4500c0ed4700c44b25b0006b355000b4004a27b0006a375000b400df4c000c754ee74880804e20006100f6006b0e00fa41100048e5702200000070df4c0101754e,0412B1:0020f0,0412B5:0060f0,0412B9:0000f2,0412BD:0040f2394a,0412C3:0021f200670c00394a,0412CD:0025f200661200394a,0412D7:0061f200670800394a,0412E1:0065f2754e082ffcb3,0412EB:0060f00067180039080000,0412F7:0000f100672a00f941,041301:0000380060140039080100,04130D:0000f100671400f941,041317:00003c283490015f203c02fb00754e5f2040b0754e092ff943,041331:0000f22e4a020000670800f943,04133F:0040f2294a2800df4c0002754eb94e1400822bb94e140058223942,04135B:0000f13942,041361:0001f13942,041367:0015f13942,04136D:001ef1b942,041373:0020f1b942,041379:0024f1b942,04137F:0028f1b942,041385:002cf17942,04138B:0016f17942,041391:0018f13942,041397:0014f17942,04139D:003af1e7488080f941,0413A7:0000f21f709842c851fc,0413B2:3c208f008f00c023,0413BB:0034f2c023,0413C1:0038f2c023,0413C7:0074f2c023,0413CD:0078f23942,0413D3:0001383942,0413D9:00013cdf4c0101754ee748a0f800384e200061acf4400c02000064a60100762e160200f945,0413FF:0000f2434a00670800f945,04140B:0040f2f941,041411:0016f1c3d0284a020000670c00285302000066040010422e32c60041020f002e4aa30000672000013441020c00020800000067060041000200020801000067060041000100410c040000660a00bc10010000608e00410c050000661a00100c010000670a00100c020000667c00bc10020000606e00410c060000661a00100c010000670a00100c030000665c00bc10030000604e00410c010000662000100c020000670a00100c040000663c00bc1004007c110c00020000602e00410c020000662600100c030000670a00100c050000661600bc1005007c110c000200006008007c11100002002a4a280000669c00043241024004006752002e32c00041024004410c400400664200100c040000661a0000617e000067320010420061f2007952,041533:001af100602a00100c050000661a0000615e00006712001042006102017952,041553:0034f100600a00df4c1f0540b0754e6e02bffbc4006e02bffbca00043241024004006724006e02bffbc0006e02bffbc2006e02bffbc6006e02bffbc8006e02bffbf800e9502000df4c1f050172754ee74800c0294a210000666c003907,0415B1:0000f100666200007229120200010a0100314a0c100066500041d2714a0810006746006e0c0200040000663c006e4a0600006634006e4a900100672c002e12a00000671200010c020000670a00010c0600006614002e0c0200980100650a00df4c03000170754edf4c030040b0754ee748fe,041624:7c15010029007c3580012a002a422c006a422e007c15020028000170b94e1400f42d00614400df4c,04164D:7f754ee748fe,041654:7c15020029006a422e007c15090028007c3d5a00f6002e428400fa41de0a0061e60a0270b94e1400f42d00610c002a422600df4c,041689:7f754e0061dcf8f94d,041693:000038ed4700c0434a00670c00f94d,0416A3:00003ced4700c44a22294224002b4aa300006608007c1301002400006164e1294a24000066160040062c003c3206003c24040000000178006012004006d4013c32fa,0416E6:3c24fc,0416EA:00000078403d0c006e420e0041332200422d1400ae421800441da300441d4d002e30be0040045000403d10006e4212007c2dfe,04171E:00801c007c2d0000006020007c2d0200000004007c3d020008006e420a007c1d0400a0007c1d0100a1007c1d0100bc007c1d0400a2002e42aa007c1d110007017c3d1000f6002e428400e9502500294227007c13010026007c13020021006942120002701672b94e0000d89e754ee748fe,041790:2d0c040000c8006730003942,04179D:0001f10076f943,0417A5:0020f0f945,0417AB:0000f2006140020176f943,0417B7:0060f0f945,0417BD:0040f200612e0200602e000076f943,0417CD:0020f0f945,0417D3:0000f20061ee0200614c010176f943,0417E3:0060f0f945,0417E9:0040f20061d8020061360100610e00b94e14000c2bdf4c,041801:7f754ee748e0f80076f941,04180D:000040f943,041813:000038434a00670e00f941,04181F:000044f943,041825:00003cf945,04182B:003af1c3d4121800703907,041837:0000f100660800007800601e002810100100722912100100b200670e0000630800017800600400007812b800671e0084147c2092008050434a006708007c209200a05007709842c851fc,041882:4352430c0200006580,04188C:df4c1f07754ee74880600c228102,04189B:00,04189E:0074810c,0418A3:00004000672800810c,0418AD:000044006728000174810c,0418B9:00003800671200810c,0418C3:00003c0067120002b400601400f941,0418D3:003af100600800f941,0418DD:003bf110b4df4c0601754e0061a8,0418EC:00660800f94e0600a0cd754e006198,0418FC:0066100040d07c2292008050f94e06005ccd754e006180,041914:00661000037c7c2292008050f94e060072ce754e294a010000678c00ed4700c0434a00670600ed4700c4007e291e02002b30900100617200070a01003907,041953:0000f100672000f947,04195D:000038434a00670800f947,041969:00003c2b30900100614a0000604400314a0c7000663c00073c46dc72523c6032303c60400cf000006528004004f00080020000,04199E:fc802c004048404a006612003130086072b034600064060071520860754e073c46dc72423c6032323860803538604092006f12000134fcc40300fc840a0042927293346072b034600063060080353460754e3907,0419F3:0000f100679800f94d,0419FD:000038434a00670800f94d,041A09:00003c2d1000c8000c060000676600000c0800006672006e4a9001006768002a0c0c00280000673600fa412007006122072e4abc0000664e006e4a0600006646002e0c2200a00000673c00006152027c150c0028007952,041A61:003ef1754e6a521200092f4a22006140e05f2200671800006016002a0c0c00280000670a00fa41cc060061ce06754e0061fcf52a4228002a4221002a4225002a422700b907,041AA7:0015f1b907,041AAD:001ef103304054b901,041AB7:0015f1b901,041ABD:001ef12a423000754e294a01000067a803f94d,041AD1:000038ed4700c0434a00670c00f94d,041AE1:00003ced4700c46a522e0000702a10280040d03b300600fb4e02001a001a00fc002c01de01080326038e041a001e0260027001de013907,041B19:0000f10066be003907,041B23:0001f100668c002b4a0300006644032b1098012a12320040153200000c020000656800010c020000641a007c15020031000061ea0640020003006708007c15010031002a0c01003100006606034b2c00612efa0067fc027952,041B7D:0038f12a4231000061ba06000803000067100000618efa7952,041B97:001af10060d8020061b0fa7952,041BA5:0034f10060ca022a4231000060c202b907,041BB7:0001f1294a21000066b402007e291e0200070a0100314a0c700066a202006194f300609a02033040583901,041BE3:0001f100678c02b901,041BED:0001f100619cf400607e0200617c026b4a90010067f0012a4a2100006710006a5212004a22006100df00605c027c15030028006a422e0000604e0200614c026e4a90010067a6016b4a90010067b8012a0a01002c00006730026a532a00006228026a422a0000614602fa41fc040061fe047c150b0028006a422e0000600a026e4a9001006766016b4a9001006778016a0c96002e0000641c002e0c2200a0000067e6016e4a06000066de012e4abc000066d601006106000060ce01e748c000c8910061aa044a22294224002e4aa300006608007c130100240000615edd7c15040028006a422e00df4c0003754e6e4a90010067f8006a5212004a220061c6dd006786012a4221002a4225000a2ff943,041CFD:0020f0434a00670800f943,041D09:0060f0006180f35f242a42280000605c0100615a016b4a90010067ce002a4a2100006710006a5212004a220061dedd00603a010e2ffa410004006116044b2c006110045f2c7c150a0028006a422e0000601a016e4a9001006776006b4a9001006788006a0c0c002e0000640a000061fe000060f80000660e00006116016e4294012e4298016a0c58022e0000641c002e0c2200a0000067d4006e4a06000066cc002e4abc000066c4004a22294224002e4aa300006608007c130100240000615edc7c15040028006a422e0000609e000061c0007c15050028006a422e002a4221002a422500006084000061a6007c15060028006a422e00006072000338445400619a0000676600b909,041E13:0015f1006176f22a422800006054006e4a9001006748002a4a2100006710006a521200092f4a220061d8dc5f224b2c033800615e0000672a00b909,041E4F:0015f10061a6012a4228002a4221002a4225002a4227007952,041E69:001cf10060060000600200754e7c378e0094017c17020098013907,041E85:0000f100670e007c3d8e0094017c1d02009801754e6b4294012b429801754e2a4a3000006684006a0cf0002e0000645e002e4abc000066b6002e3010006eb0be000066aa002e0c2800a000006740006e4a0600006610006a0c1e002e0000642e0000608a006e0c0800060000660c006e0c04000800006716006e0c0c00060000666c006e0c06000800006662007c15010030006a422e00f909,041F1F:001ef12e4284002e428300006046002e4284006a0c1e002e00006538002a302e00400c4e000064300040041e000372400c180000650400027268e20008000000670c00f909,041F65:0015f100600800b909,041F6F:0015f140b0754e2a423000b909,041F7D:0015f1b909,041F83:001ef10170754e4b2c0338006114,041F92:00660400754e2a422800007e291e0200070a010069421200006142da29422600006120dc7952,041FB9:0006f0754e0a2ff945,041FC3:0000f22e4a020000670800f945,041FD1:0040f27c15070028006a422e002a4230005f24754e890101008c01040094010600ae010100d8010400e748fe,041FFE:ed4700c0f949,042005:000038434a00670c00ed4700c4f949,042015:00003c007e291e0200f1500c70073040d071420800070a010047130200fa41b2,042036:047c183018324153331f00004052c951f8,042048:ce51ee,04204C:4c204b2c3c30,042053:00d82cc851fc,04205A:fa419e,04205E:047c2032203041d0415340539f170000c951f8,042072:ce51ec,042076:4b203c30,04207B:00d0b9006604008b208858c851f4,04208A:fa41fce70370582ceeb9b000006606004b2db000c851f0,0420A2:2d20045200617a002d200e52006172002c4201007c39fe,0420BA:5000b907,0420BF:0000f1b907,0420C5:001ef1b907,0420CB:0015f14b2cb94e0000f49d7c3d80004400434a006708007c3d00014400394a,0420EB:0000f100660a00006176f10061c0f04b2cb84e3c31b94e1300ccfd0e2fb94e060096c9b94e060038c3b94e140074225f2cdf4c,04211F:7f754e804a006718004020e8b95200006606004b21520028202c000060e6,04213E:754e02000400020006000400720000005a0000000000840300000000e7484080082f4e20006134e75f20006b1800f943,04216F:0030f13142000048e5f943,04217B:0020f188230000df4c0102754e003fe748c0704e20006106e7006b9e00003648e5f943,04219F:0020f13122000000678c004120103400660a00b142000000607c00283202002e4aa3000067200001304102fc,0421CC:000800000067060041000200000801000067060041000100413dc000413dc6002e30c200404641c0403dc400403dca00f943,0421FF:0030f13152003000723112003042b20065140031420030033249e5f943,04221D:0020f1b1580010df4c0e032e30c4008f543c02fb00754edf4c0e031f303c000400754e3930,042243:0036f1fcc0556240061936c033,042251:0036f1754e0000fc33,04225D:0000f77942,042263:0002f77942,042269:0004f77942,04226F:0006f7754e082f394a,042279:0021f000671800b9429200b042b9429200b4427c209200804200612600394a,042299:0061f000671800b9429200b842b9429200bc427c2092009842006106005f20754e7c31002102007c3100210a007c3100211200754ee748fe,0422D2:007e006112004752470c02000065f4,0422E2:df4c,0422E5:7f754ef943,0422EB:0020f0f94d,0422F1:000040ed49746d7c26920080407c24920020417c2092008042474a00672400f943,042313:0060f0f94d,042319:000044ed498c6d7c269200d0407c24920068417c2092009842294a0100006624003c301e200972006168004a263c302e20087200615c0048263c3010200272006050003c3000210972006146004826027200613e004a263c303c20087200613200f941,04237D:0000f7c7d0284a060000671400284206002e3090018038403902002c420800284a02000067060028530200754e403702008b50c951f8,0423B4:754e790c0800,0423BB:00844800666c00b94a92008040006762003910,0423CF:0021f03980,0423D5:0061f000675200e748f6,0423E0:7c2a,0423E3:0000803c20700000a0fcb9700000a0006508003c20700000c08c90800c0000480300640c007952,04240B:000af7006018007952,042415:0008f7007e006112004752470c02000065f4,042428:df4c,04242B:6f754ef943,042431:0020f0f945,042437:0000f2474a00670e00f943,042443:0060f0f945,042449:0040f2294a010000679600f941,042457:0000f7c7d02910020010128010010c,042467:000067180000b2006712007c1108000200e85006007952,04247F:000cf7006166000074281402000230fcc00c0048e6003a0c78409800615a01053800611a01023cfccc0e004ee61e7a469a00610802107a46da00616e022d0c040000c8006624002a0c0100290000661a002a102800000c020000670a00000c03000066060000617204754ee748b0fef941,0424F1:0004f7c7d0007c291c0200060a0100390f,042503:0000f1006710001470474a00678200187000607c001470474a006720001870394a,042525:0014f1006614001e70394a,042531:002af400670800007000605600063241d23132041041d27c240000623372240010314a0e6000670600fcd48000003249eb7c2691000040c1d60f7400781332410200f05a8253b200670600813601788b54ca51ea,042586:444a006708007c1b0100bbcb8010df4c7f0d754e400640004002,0425A1:03400000e0c038410610004102,0425AF:0341000020c138c238c338754ee74880fe7c2092008042007c474a00670c007c20920098423c3c6001027a0630043228340400283606000061b2,0425EA:8850cd51ec,0425F0:df4c7f01754ee74880fef941,0425FD:0004f70076301600700067ac00007c291c0200060a0100063040d0313a04004072314a0c600066320031300800390f,04262D:0000f1006718007c20,042637:000038474a006708007c20,042643:00003c283090012072400c30000065040000727c20060006d5c1d0303400503c3001113c3220113c3a0111007c474a006712003c3002113c3200113c3a22113c3c60014382013f023f0036063004323c34e06c006102,04269A:1f341f36063004320061f6fe0536063004323c3444610061e8fedf4c7f01754ee74880,0426BE:007c291c0200060a010000780076314a0c6000662e00063040d03138080032363400390f,0426E3:0000f1006718007c20,0426ED:000038474a006708007c20,0426F9:00003c28389001007000617c0046dc313004600176390f,042711:0000f1006704000076053241540061be01df4c,042725:01754ee74880,04272C:f941,04272F:0074ed7c26920080403c32e000474a00671200f941,042745:008ced7c269200d0403c32100110382836020013304002,04275D:03419000611e0000702910020040d03130040000760532415400616601df4c,04277D:01754ee74800,042784:c033,042787:000ef7440c9000006306003c38900044b6006404000436430c9000006306003c369000017c474a00670400227c2070474a006706003c30d00079d0,0427C3:000ef705323c3420,0427CC:033f3c36000846860061c4fd1f3603303c3250,0427E0:3c3480,0427E4:00617c0004303c3240,0427EE:3c3470,0427F2:00616e002070474a006706003c30500179d0,042805:000ef705323c3400,04280E:0636006188fd3070474a006706003c30e00079d0,042823:000ef705323c3401,04282C:3c3600064686006166fd3c30a000474a006706003c30d00079d0,042847:000ef705323c3408,042850:0636006146fd7942,042859:000ef7df4c,04285F:00754ee74800fc00384ce840020f00003f444a006730003c30b00004364be94390474a006706003c30d00079d0,04288D:000ef7023f0134043643534be1468605320061fafc1f341f3000673000440c09000064280040d404364be93c30a0004390474a006708003c30d00043d079d0,0428CD:000ef7053206360061c4fcdf4c3f00754ee74880fef9411400f005fcc00500c0d03c3aa0,0428F2:434a006706003c3ac0,0428FC:0078440c0a0000641000304a00400067080044520060ec,042914:247c474a00670c003c3c5c0104344ae7429c465300764453006b24000074181442044100420c190000620e0045d40630013f006152fc1f324650cc51e0,042952:df4c7f01754ee74880,04295C:0061d8002a302a00fcc08000fc808001400c8000006306003c30800000381e7c474a006704003e7c3c3ace003070474a006706003c30d00005323c3430,04299A:3c36000746860061f8fb04303c3260,0429AA:3c3490,0429AE:0061b2fe3070474a006706003c30400105323c3410,0429C4:06360061d2fb4070474a006706003c30e00005323c3411,0429DC:3c36000546860061b6fb3c30a000474a006706003c30d00005323c3417,0429FA:063600619cfb6070474a006706003c3000011e76fa411e0003783c32c5001834003f00617cfb1f304050cc51ee,042A28:df4c,042A2B:01754e546049604d604560e748c0c0fa4140007c229100c0430f70d832c851fc,042A4C:2a302a00400c6000006418003932,042A5B:00da4b0108030000670a00fc33,042A6A:9100d643fc130100,042A73:00bb4bdf4c0303754eeff9dff8cff6bff49ef37df212f100f0,042A8E:44f400f0bff000f700f000f000f0390c0100,042AA1:0000f400666000790c0800,042AAD:00844800665400fc330100,042AB9:0094eef933,042ABF:0004f4,042AC3:0090eef933,042AC9:0006f4,042ACD:0092eef923,042AD3:0008f4,042AD7:009ceefc338e0d,042ADF:008aeefc333051,042AE7:008cee794a,042AED:0096ee006712007942,042AF7:0096eef923,042AFD:000cf4,042B01:0098ee754ef94e000042ace748fe,042B10:006110040061bc003912,042B1B:0000f400672a00010c0100006730003953,042B2D:0000f4390c0100,042B35:0000f400663e0000617c023942,042B43:0000f400603000404a00672a000061c60000602200404a00661800f923,042B61:000cf4,042B65:009ceefc130400,042B6D:0000f4006006000061140100614803df4c,042B7F:7f754e394a,042B85:0020f400670e00e748fe,042B90:0061b202df4c,042B97:7fe748fe,042B9C:0061dc02df4c,042BA3:7f394a,042BA7:0000f400672400e748fe,042BB2:f923,042BB5:000cf4,042BB9:009cee7942,042BBF:0094ee0061f6013942,042BC9:0000f4df4c,042BCF:7f754e0070390c0400,042BD9:00004800663800f941,042BE3:0000f200610800f941,042BED:0040f228122800010c020000671a00010c030000671200010c090000670a00010c0a00006604000170754ef9419100004ff943,042C21:0000f53f70d822c851fc,042C2C:794a,042C2F:0096ee00670c00f923,042C39:0098ee,042C3D:00e0f5f923,042C43:00e0f5,042C47:000cf4f94192008000f943,042C53:0000f63f70d822c851fc,042C5E:3942,042C61:0001f47942,042C67:0002f47942,042C6D:0004f47942,042C73:0006f47952,042C79:0010f40061a000fc130100,042C85:0000f4754e7952,042C8D:0002f4007e391e,042C95:0001f4077c470c400000644400073040020700073249e6003441d4420207004206180048e149e149e741d0f94392000000c0d2f941,042CCB:0000f63f7818204002e0,042CD6:4280c022cc51f4,042CDE:4752ce51b8,042CE4:c713,042CE7:0001f47c20,042CED:000040007028103000006722007c220100a44371220000113040e2c033,042D0B:0004f42930040040e2c033,042D17:0006f400600200394a,042D21:0020f4006742003930,042D2B:0022f4,042D2F:72400c0300006510003c2200f000f0400c060000642400f9419100004f077e8120e8412000cf51f8,042D58:c123,042D5B:0008f4fc130100,042D63:00bb4b754e3930,042D6B:0002f448e2f9419100004ffa439c07fa45d807077e003241021f0041d2b130001000344206100042021f0042d4723100200200e84120004058cf51da,042DA8:e823e0,042DAD:0008f4fc130100,042DB5:00bb4b754ef941,042DBD:0000f5f9439100004f3f701122810200f000f018248202,042DD5:0f,042DD7:0f8282c122c851ea,042DE0:fc130100,042DE5:00bb4bf94b,042DEB:000080b84e9828754ee748c0f0c013,042DFB:0021f4ee335000,042E03:0024f4007229120200010a010041d2f1330410,042E17:0026f40061300003300052c013,042E25:0020f47942,042E2B:0022f47952,042E31:0028f43c320103b94e070092a5df4c0f03754e3942,042E47:0020f4754e394a,042E4F:002af400662400e748c080f94191008043f943,042E63:0040f41f70d822c851fc,042E6E:f950,042E71:002af4df4c0103754e394a,042E7D:002af400673e00e748c0e0f941,042E8B:0040f4f943910080431f701122810200f000f018248202,042EA3:0f,042EA5:0f8282c122c851ea,042EAE:fc130100,042EB3:00bb4b3942,042EB9:002af4df4c0703754e394a,042EC5:0020f4006682,042ECC:0061120000667a,042ED4:00611400006672,042EDC:00609c,042EE0:f941,042EE3:0000f200600800f941,042EED:0040f2390c0400,042EF5:00004800662400280c0100290000661a00280c0200280000670c00280c03002800006606000170754e0070754e394a,042F25:0020f40067a0002d0c040000c8006692007952,042F39:0022f4790c4000,042F41:0022f400648000390c0100,042F4D:0021f40066780000763916,042F59:0020f44353790c0200,042F63:0022f400661a003930,042F6D:0024f4ed4d00c0434a00672e00ed4d00c400602600790c1000,042F87:0022f400663e003930,042F91:0026f4f94d,042F97:000038434a00670800f94d,042FA3:00003c400c180000621e0040d0fa411a003022000000671000b94e0700cca80060060000617cfe754e980298019f029f01a802a801b102b101b902b901c102c101c802c801d302d301d902d901e302e301e802e801f102f10100000000b94e1400b623394a,043009:002af400671800394a,043013:0020f400670e00e748f6,04301E:00617002df4c,043025:6f0061700100610e000061fe03fc2800000080754e790c0800,04303F:00844800664201390c0400,04304B:00004800663601e748f2,043056:4c26007e0730400c020000650e0040553901,043069:0000f100670a010730400201003901,043079:0081480067fa00073048e5fa410201702c00002e4a01000067e600f943,043097:0020f00708000000670800f943,0430A5:0060f0007a294a010000671200291a0200470c020000650600050a010045da07304002010040da006156c740446ed00c00003c07384ce544060c003c36,0430E3:03f94170000080cbb1006450002830060040021f004490400c04000064380010300034420200e0420c00e0006728004002,043115:0340504690006a04004044400c300000641200283002004002,04312F:0343b000640400003688500060ae,04313E:430c,043141:030067340043040c00430c1000006c04001076430000204651460000e0c638c338053040063160c0385c424650c638c338fc3850605c424752470c04000065dafedf4c,043185:4f754e,043189:000040,04318D:000044,043191:000038,043195:00003c790c0400,04319D:0084480066ec00790c0200,0431A9:0004490066e000e748c0,0431B4:007ef943,0431B9:0020f0474a00670800f943,0431C5:0060f0110c01000066b200390f,0431D3:0081480067a80000703910,0431DF:000049474a006708003910,0431EB:000249400c0a0000648c00fc8005000022414848eb49eb4106b000400620201b74474a006704001c74410000e0c138c038fc38ead8023643002000c338013643061000c338c038fc38ead8c238003844061000c138c438fc38e1d8023643002000c338013643061000c338c438fc38e1d8c2380136435800384454c338c4383c3a336047dac5385c424350c338c438fc3850605c424752470c020000652e,04328A:df4c,04328D:03754e393e,043293:0022f4007c391c,04329B:0020f446533930,0432A3:0024f41c7200743c3610000638007a006118003930,0432B9:0026f41d720a743c3644000638487a00600200e748f0,0432D0:400c18000062440148e2003afa414201007c301c00504eeb792013002030c6d0013c4eebf94391000040c6d20f7c1830400000f0c032ce51f6,04330A:fc130100,04330F:00bb4b07304290006b0201400c34000064fa003c3c08006fdc16003c3488,04332E:444a00670e003c3c08016f9c16003c348001087e400c080000640400003e400c2c00006508003c3e3400409e429cc7cd86e642dc3c300003444a006706003c300d0345d0f9410600fcb400344ae042d442d4702000204002,043387:0040d0f0d00000885418344202600041847c267000f09ffcb9700000a0006508007c267000f0bf0638033a1830400c,0433B8:00676000400c008000660c000638450610000060e6,0433CE:404a00674000440cf0,0433D8:006f3800440c8001006c3000cbb9006432000432410640004102,0433F3:03410000e0c1380532410610004102,043403:0341000020c13840060060c038c2384406100000609a,04341A:df4c,04341D:0f754e0d05080f090c070e040a0b060000e74880f00076f941,043437:0000f200619c0000670600c3080000f941,043449:0040f200618a0000670600c3080100034a00677600f94170000080ccb100646a00283002004002,043471:03400c1600006654002832040010344202,043483:030070420c0001006504000170030100673800410c4d6000660e007c316f600400505400602400410c616000660e007c316f600400505300601000410c7860006608007c31206004008850006094,0434D2:df4c0f01754e390c0400,0434DD:00004800662e0028102800000c020000671e00000c030000671600000c090000670e00000c0a00006706000070754e0170754e0070754e22,043516:52,043518:72,04351A:92,04351C:c2,04351E:e2,043520:f2fdf2fbf2f9f2f6f2f4f3f2f5f2f8f2faf2fdf2,043535:f2dff2aff28ff25ff23ff22ff42ff62ff92ffb2ffd2e,04354C:2c,04354E:29,043550:27,043552:25,043554:00f820f830f850f860f880f880f780f680f480f380f181f082f084f085f087f088f078f058f048f028f018f008f108f308f408f608f708f806f805f803f802f8'
        }
        Patched = @{
            'xmn.13m' = '6e79f47213abb3ee0a170d1b62fc2f064455e6bbf805121f8cb1fc022603beb6'
            'xmn.15m' = 'eab79223b198fcd49a6dae0046e39f3d5fd0562c96fff60125bdf90521e9be44'
            'xmn.17m' = '82fe4cdad95f42e29a3f61de1467ff3708082e2ce45335724897826d827b4136'
            'xmn.19m' = 'ad6d6ffeb6839f0ebcd7fa3c63561f2d448c97d31c42ab42ab39a381247618f9'
            'xmne.03f' = '82d8ff84506e47158a92853d49ba580524e139d9a37f42bed0d84cd8f26d646d'
            'xmne.05b' = '91afd5d7dedb17fba86866098e7d7a251ccb6034412111e63624d2637bc2b1f6'
        }
        Fingerprint = '1d5d12c021894bb02dc97c34b4df1c2452c2e759b0b25e0f2c69fc8aa91e097d'
    }
)
$OtherSets = @{
    'xmnu.03e' = 'xmcotau (USA 950105)'
    'xmnj.03e' = 'xmcotaj (Japan 950105)'
    'xmned.03e' = 'xmcotar1d (Euro 950105, Phoenix Edition)'
}
$Previous = @{
    '53dd28f4a18661dfc273548a696488500d93893342d9ee1f79941e7d347bd614' = 'v1'
    'd31c5facf74aa7568423956f6661050e6a00d243b277225118d44e632bb2e6f0' = 'v1'
    'f8e005c0ec6e0093e311735dca45243dd4a33fe26c3fd42af1544b972bd3e9c2' = 'v1'
    '7c7c05146a2b3dca49fc6156f04d9aa7f552efe75175c6d6a13fb2f34411a201' = 'v1'
    '0f531b461e018df81fc04716118d80a50bf0eaf0853590f3c8ea91a57efc1eef' = 'v1'
    '06459a639426d305737bf61d47739b0dd1cbb27f60acbb84befe1317ae789be8' = 'v1'
    '288dc7153bb03974247f63b8544b08003e9b26f3cc585db62c43ba87190d1305' = 'v3 two-player'
    '285d95c241c87f3fa04020e02ea27671569162e52f8f0fe59e79a7b4ba9f799b' = 'v3 two-player'
    'dbb433cb23a72fc29ad2d90381b9d6b600671522b55793bb2453c37c192fc9bd' = 'v3 two-player'
    '02b2ff315346bf4947e900b2f8b0faf18d19a542b6623b6b23d90547ba55d449' = 'v3 two-player'
    '1bbdebfdf13137ef72f5b4ff0a68dc06cf94d853f408ec60446551d127d9daea' = 'v3 two-player'
    'fcdce6b86339ab452c1786096e30702b6fb5ed4dd71b5260a2a0d273c4dd33a1' = 'v3 two-player'
}

$ParentSet = 'xmcota'
$ParentZip = 'xmcota.zip'
$Here = Split-Path -Parent $env:SELFPATH

# ---- the input: the dragged file, else a supported ZIP in the current folder or beside this file
$Source = $env:ROMPATH
if ([string]::IsNullOrWhiteSpace($Source)) {
    $Dirs = @([Environment]::CurrentDirectory, $Here) | Select-Object -Unique
    foreach ($Dir in $Dirs) {
        foreach ($Candidate in @('xmcota.zip')) {
            $Path = Join-Path $Dir $Candidate
            if ([string]::IsNullOrWhiteSpace($Source) -and (Test-Path -LiteralPath $Path -PathType Leaf)) { $Source = $Path }
        }
    }
}
if ([string]::IsNullOrWhiteSpace($Source)) {
    Fail 'drag a clean xmcota.zip onto this CMD, or put it beside this file and run it again.'
}
try { $Source = (Resolve-Path -LiteralPath $Source -ErrorAction Stop).ProviderPath }
catch { Fail "file not found: $Source" }
if (-not (Test-Path -LiteralPath $Source -PathType Leaf)) {
    Fail "not a file: $Source"
}
$SourceName = [IO.Path]::GetFileName($Source)

try { $Read = Read-ZipMembers $Source }
catch { Fail $_.Exception.Message }
$Entries = $Read.Entries
$Metadata = $Read.Metadata
$Order = $Read.Order

# ---- which set? One supported program ROM, or a merged ZIP that holds the whole parent set
$Hits = @($Sets | Where-Object { $Entries.ContainsKey([string]$_.Detect) })
if ($Hits.Count -eq 0) {
    foreach ($Detect in @($OtherSets.Keys)) {
        if ($Entries.ContainsKey([string]$Detect)) {
            Fail "this ZIP is $($OtherSets[$Detect]). This installer takes xmcota.zip."
        }
    }
    Fail 'no supported X-Men: Children of the Atom program ROM in this ZIP. This installer takes xmcota.zip.'
}
$ParentHits = @($Hits | Where-Object { [string]$_.Set -eq $ParentSet })
$OtherHits = @(@($OtherSets.Keys) | Where-Object { $Entries.ContainsKey([string]$_) })
if ($Hits.Count -gt 1 -and $ParentHits.Count -eq 0) {
    Fail "this ZIP holds several revisions at once ($(@($Hits | ForEach-Object { $_.Set }) -join ', ')) and no complete $ParentSet. Use the ZIP of one set."
}
if ($ParentHits.Count -gt 0) { $S = $ParentHits[0] } else { $S = $Hits[0] }
$Merged = ($Hits.Count -gt 1) -or ($OtherHits.Count -gt 0)

$Known = New-Object 'System.Collections.Generic.Dictionary[string,object]'
foreach ($Record in @($S.Own) + @($S.Shared)) { $Known[[string]$Record.Name] = $Record }
$OptionalSize = New-Object 'System.Collections.Generic.Dictionary[string,int]'
foreach ($Record in @($S.Optional)) { $OptionalSize[[string]$Record.Name] = [int]$Record.Size }

# a merged parent ZIP carries the other revisions' ROMs and keys: they are left out of the output
$Dropped = New-Object 'System.Collections.Generic.List[string]'
foreach ($Name in $Order) {
    if ($Known.ContainsKey($Name) -or $OptionalSize.ContainsKey($Name) -or (@($S.Extras) -contains $Name)) { continue }
    if ([string]$S.Set -eq $ParentSet -and ($Name -like 'xmn*' -or $Name -like '*.key')) {
        [void]$Dropped.Add($Name)
        continue
    }
    Fail "unexpected member '$Name' in a $($S.Set) ZIP. Start from the clean set."
}
if ($Dropped.Count -gt 0) { $Merged = $true }

foreach ($Record in @($S.Own)) {
    if (-not $Entries.ContainsKey([string]$Record.Name)) { Fail "required member '$($Record.Name)' is missing." }
}
$SharedPresent = @(@($S.Shared) | Where-Object { $Entries.ContainsKey([string]$_.Name) })
$SharedMissing = @(@($S.Shared) | Where-Object { -not $Entries.ContainsKey([string]$_.Name) } | ForEach-Object { [string]$_.Name })
if ($S.SharedRequired -and $SharedMissing.Count -gt 0) {
    Fail "required members are missing: $($SharedMissing -join ', ')"
}
if ($SharedPresent.Count -gt 0 -and $SharedMissing.Count -gt 0) {
    Fail "a partial set: it has some shared members but not $($SharedMissing -join ', '). Use a complete non-merged ZIP or a split ZIP."
}

function Test-Member([string]$Name, [byte[]]$Bytes, $Record, [string]$Where) {
    if ($Bytes.Length -ne [int]$Record.Size) { Fail "$Name$Where is $($Bytes.Length) bytes, expected $($Record.Size)." }
    $Got = Get-Sha256 $Bytes
    if ($Got -ne [string]$Record.Sha256) {
        if ($S.Patched.ContainsKey($Name) -and $Got -eq [string]$S.Patched[$Name]) {
            Fail "$Name$Where is already patched with this version. Start from the clean set."
        }
        if ($Previous.ContainsKey($Got)) {
            Fail "$Name$Where is patched with XCOTA TAG $($Previous[$Got]). This installer takes the clean set: use your clean ZIP, not a patched one."
        }
        Fail "$Name$Where does not match the clean $($S.Set) ($($S.Title)). Patched and wrong-revision sets are refused."
    }
}

foreach ($Name in @($Known.Keys)) {
    if ($Entries.ContainsKey($Name)) { Test-Member $Name ([byte[]]$Entries[$Name]) $Known[$Name] '' }
}
foreach ($Name in @($OptionalSize.Keys)) {
    if ($Entries.ContainsKey($Name) -and ([byte[]]$Entries[$Name]).Length -ne $OptionalSize[$Name]) {
        Fail "$Name is $(([byte[]]$Entries[$Name]).Length) bytes, expected $($OptionalSize[$Name])."
    }
}

# ---- a split clone: this version also patches shared graphics ROMs, which live in the parent ZIP.
# Read them (clean, hash-checked) from the parent beside the input and write a complete set.
$ParentPath = $null
$FromParent = New-Object 'System.Collections.Generic.List[string]'
if ($Merged) {
    $Layout = "merged (only its $($S.Set) members are used)"
} elseif ($SharedPresent.Count -gt 0) {
    $Layout = 'non-merged'
} else {
    $Candidates = @((Join-Path (Split-Path -Parent $Source) $ParentZip), (Join-Path $Here $ParentZip),
                    (Join-Path ([Environment]::CurrentDirectory) $ParentZip))
    foreach ($Candidate in $Candidates) {
        if (-not (Test-Path -LiteralPath $Candidate -PathType Leaf)) { continue }
        $Full = [IO.Path]::GetFullPath($Candidate)
        if ($Full -eq [IO.Path]::GetFullPath($Source)) { continue }
        $ParentPath = $Full
        break
    }
    if (-not $ParentPath) {
        Fail "$SourceName is a split $($S.Set) set: its shared graphics ROMs are in the parent $ParentZip, and this version patches four of them. Put your clean $ParentZip in the same folder as $SourceName and run this again."
    }
    try { $P = Read-ZipMembers $ParentPath }
    catch { Fail "the parent $($ParentPath): $($_.Exception.Message)" }
    foreach ($Record in @($S.Shared)) {
        $Name = [string]$Record.Name
        if (-not $P.Entries.ContainsKey($Name)) { Fail "the parent $ParentZip beside $SourceName has no $Name." }
        Test-Member $Name ([byte[]]$P.Entries[$Name]) $Record " in the parent $ParentZip"
    }
    foreach ($Record in @($S.Shared)) {
        $Name = [string]$Record.Name
        $Entries[$Name] = [byte[]]$P.Entries[$Name]
        $Metadata[$Name] = $P.Metadata[$Name]
        [void]$Order.Add($Name)
        [void]$FromParent.Add($Name)
    }
    $Layout = 'split, completed from the parent'
}

$OutOrder = New-Object 'System.Collections.Generic.List[string]'
foreach ($Name in $Order) { if (-not $Dropped.Contains($Name)) { [void]$OutOrder.Add($Name) } }

Write-Host ''
Write-Host "  Input : $Source"
Write-Host "  Set   : $($S.Set) -- $($S.Title), $Layout, $($Entries.Count) members"
if ($ParentPath) { Write-Host "  Parent: $ParentPath" }

# apply the hunks in the spec's order and rebuild the fingerprint text from what was applied
$FingerprintText = New-Object System.Text.StringBuilder
$Hunks = New-Object 'System.Collections.Generic.Dictionary[string,int]'
$Touched = New-Object 'System.Collections.Generic.Dictionary[string,int]'
foreach ($Name in @($S.PatchOrder)) {
    $Name = [string]$Name
    if ($S.Hunks.ContainsKey($Name)) { $List = [string]$S.Hunks[$Name] }
    elseif ($SharedHunks.ContainsKey($Name)) { $List = [string]$SharedHunks[$Name] }
    else { Fail "internal patch list has no hunks for '$Name'." 8 }
    if (-not $Entries.ContainsKey($Name)) { Fail "internal patch references a missing member '$Name'." 8 }
    $Buffer = [byte[]]$Entries[$Name]
    $Count = 0
    $Bytes = 0
    foreach ($Item in $List.Split(',')) {
        $Colon = $Item.IndexOf(':')
        if ($Colon -lt 1) { Fail 'internal patch entry is malformed.' 8 }
        $Offset = [Convert]::ToInt32($Item.Substring(0, $Colon), 16)
        $Hex = $Item.Substring($Colon + 1)
        [void]$FingerprintText.Append(('{0}|{1:x6}|{2}' -f $Name, $Offset, $Hex))
        [void]$FingerprintText.Append([char]10)
        $After = ConvertFrom-Hex $Hex
        if ($Offset -lt 0 -or $Offset + $After.Length -gt $Buffer.Length) {
            Fail 'internal patch range is outside its member.' 8
        }
        [Array]::Copy($After, 0, $Buffer, $Offset, $After.Length)
        $Count++
        $Bytes += $After.Length
    }
    $Hunks[$Name] = $Count
    $Touched[$Name] = $Bytes
}
$Fingerprint = Get-Sha256 ([System.Text.Encoding]::ASCII.GetBytes($FingerprintText.ToString()))
if ($Fingerprint -ne [string]$S.Fingerprint) {
    Fail 'internal patch fingerprint mismatch; download the installer again.' 8
}
if ($Touched.Count -ne $S.Patched.Count) { Fail 'internal patched-member list mismatch.' 8 }
foreach ($Name in @($S.PatchOrder)) {
    $Name = [string]$Name
    if (-not $S.Patched.ContainsKey($Name)) { Fail 'internal patched-member list mismatch.' 8 }
    if ((Get-Sha256 ([byte[]]$Entries[$Name])) -ne [string]$S.Patched[$Name]) {
        Fail "patched $Name failed its SHA-256 check." 8
    }
    Write-Host ("  patch : {0,-10} {1,5} hunks, {2,6} bytes" -f $Name, $Hunks[$Name], $Touched[$Name])
}

# what every output member must hash to once written
$Expected = New-Object 'System.Collections.Generic.Dictionary[string,string]'
foreach ($Name in $OutOrder) {
    if ($S.Patched.ContainsKey($Name)) { $Expected[$Name] = [string]$S.Patched[$Name] }
    elseif ($Known.ContainsKey($Name)) { $Expected[$Name] = [string]$Known[$Name].Sha256 }
    else { $Expected[$Name] = Get-Sha256 ([byte[]]$Entries[$Name]) }
}

$Destination = [IO.Path]::GetFullPath((Join-Path (Split-Path -Parent $Source) ([string]$S.Output)))
if ($Destination -eq [IO.Path]::GetFullPath($Source)) { Fail 'refusing to overwrite the input archive.' }
$ReceiptPath = "$Destination.receipt.json"
$Temporary = "$Destination.part"
$ReceiptTemporary = "$ReceiptPath.part"
foreach ($Path in @($Destination, $ReceiptPath, $Temporary, $ReceiptTemporary)) {
    if (Test-Path -LiteralPath $Path) { Fail "refusing to overwrite an existing file: $Path (move or delete it first)." }
}

$File = [IO.File]::Open($Temporary, [IO.FileMode]::CreateNew, [IO.FileAccess]::ReadWrite, [IO.FileShare]::None)
try {
    $Output = New-Object System.IO.Compression.ZipArchive($File, [IO.Compression.ZipArchiveMode]::Create, $true)
    try {
        foreach ($Name in $OutOrder) {
            $NewEntry = $Output.CreateEntry($Name, [IO.Compression.CompressionLevel]::Optimal)
            try {
                $NewEntry.LastWriteTime = $Metadata[$Name].LastWriteTime
                $NewEntry.ExternalAttributes = $Metadata[$Name].ExternalAttributes
            } catch {
                # member names, order and bytes are what matter; timestamps are best effort
            }
            $Stream = $NewEntry.Open()
            try {
                $Bytes = [byte[]]$Entries[$Name]
                $Stream.Write($Bytes, 0, $Bytes.Length)
            } finally { $Stream.Dispose() }
        }
    } finally { $Output.Dispose() }
} catch {
    $WriteError = $_.Exception.Message
    $File.Dispose()
    if (Test-Path -LiteralPath $Temporary) { Remove-Item -LiteralPath $Temporary -Force }
    Fail "could not write the output ZIP: $WriteError" 8
} finally {
    $File.Dispose()
}

try {
    $Written = Read-ZipMembers $Temporary
    if ($Written.Order.Count -ne $OutOrder.Count) { throw 'output member count changed during the write.' }
    for ($i = 0; $i -lt $OutOrder.Count; $i++) {
        if ($Written.Order[$i] -cne $OutOrder[$i]) { throw "output member order changed at index $i." }
    }
    foreach ($Name in $OutOrder) {
        if ((Get-Sha256 ([byte[]]$Written.Entries[$Name])) -ne $Expected[$Name]) {
            throw "output check failed for $Name."
        }
    }
} catch {
    $VerifyError = $_.Exception.Message
    if (Test-Path -LiteralPath $Temporary) { Remove-Item -LiteralPath $Temporary -Force }
    Fail "output verification failed: $VerifyError" 8
}

$ChangedMembers = @(
    foreach ($Name in @($S.PatchOrder)) {
        [pscustomobject][ordered]@{
            name = [string]$Name
            cleanSha256 = [string]$Known[[string]$Name].Sha256
            patchedSha256 = [string]$S.Patched[$Name]
        }
    }
)
$Receipt = [pscustomobject][ordered]@{
    format = 2
    status = 'installed'
    release = 'XCOTA TAG'
    version = 'v3'
    variant = '4p'
    players = 4
    preview = $true
    set = [string]$S.Set
    title = [string]$S.Title
    layout = $Layout
    tool = [pscustomobject][ordered]@{ name = [IO.Path]::GetFileName($env:SELFPATH); sha256 = (Get-Sha256 ([IO.File]::ReadAllBytes($env:SELFPATH))) }
    cleanBaseOnly = $true
    downloadsRom = $false
    networkAccess = $false
    embedsStockBytes = $false
    inputArchive = $SourceName
    inputArchiveSha256 = Get-Sha256 ([IO.File]::ReadAllBytes($Source))
    parentArchive = $(if ($ParentPath) { [IO.Path]::GetFileName($ParentPath) } else { $null })
    parentArchiveSha256 = $(if ($ParentPath) { Get-Sha256 ([IO.File]::ReadAllBytes($ParentPath)) } else { $null })
    membersFromParent = @($FromParent)
    membersLeftOut = $Dropped.Count
    outputArchive = [IO.Path]::GetFileName($Destination)
    outputArchiveSha256 = Get-Sha256 ([IO.File]::ReadAllBytes($Temporary))
    outputMembers = $OutOrder.Count
    changedMembers = $ChangedMembers
    patchFingerprint = $Fingerprint
}
try {
    $ReceiptJson = ($Receipt | ConvertTo-Json -Depth 6) + [Environment]::NewLine
    $Utf8NoBom = New-Object System.Text.UTF8Encoding -ArgumentList $false
    [IO.File]::WriteAllText($ReceiptTemporary, $ReceiptJson, $Utf8NoBom)
    $ReceiptCheck = Get-Content -LiteralPath $ReceiptTemporary -Raw | ConvertFrom-Json
    if ([string]$ReceiptCheck.patchFingerprint -ne [string]$S.Fingerprint) { throw 'receipt fingerprint mismatch.' }
} catch {
    $ReceiptError = $_.Exception.Message
    foreach ($Path in @($Temporary, $ReceiptTemporary)) {
        if (Test-Path -LiteralPath $Path) { Remove-Item -LiteralPath $Path -Force }
    }
    Fail "could not write or verify the receipt: $ReceiptError" 8
}

try {
    Move-Item -LiteralPath $Temporary -Destination $Destination
    try {
        Move-Item -LiteralPath $ReceiptTemporary -Destination $ReceiptPath
    } catch {
        if (Test-Path -LiteralPath $Destination) { Remove-Item -LiteralPath $Destination -Force }
        throw
    }
} catch {
    $PromoteError = $_.Exception.Message
    foreach ($Path in @($Temporary, $ReceiptTemporary)) {
        if (Test-Path -LiteralPath $Path) { Remove-Item -LiteralPath $Path -Force }
    }
    Fail "could not move the verified output into place: $PromoteError" 8
}

Write-Host ''
Write-Host '  DONE. Wrote and re-verified:' -ForegroundColor Green
Write-Host "    $Destination"
Write-Host "    $ReceiptPath"
Write-Host ''
Write-Host "  Patched members: $(@($S.PatchOrder) -join ', '); every other member is unchanged."
Write-Host "  Your $SourceName was not changed."
if ($Dropped.Count -gt 0) {
    Write-Host "  Your ZIP is a merged set: the new ZIP holds $($S.Set) only ($($Dropped.Count) members of other revisions left out)."
}
if ($FromParent.Count -gt 0) {
    Write-Host "  The new ZIP is a complete $($S.Set) set: it carries the $($FromParent.Count) shared ROMs from your $ParentZip"
    Write-Host "  (four graphics ROMs patched), so it does not need $ParentZip beside it."
}
Write-Host ''
Write-Host '  NEXT'
Write-Host "  1. Keep your clean $SourceName where it is."
Write-Host "  2. MAME: copy $($S.Output) into a separate ROM folder and rename the copy to $($S.Set).zip."
if ([string]$S.Set -eq $ParentSet) {
    Write-Host "     Fightcade: back up the $($S.Set).zip in Fightcade's ROMs folder, then put the renamed copy there."
} else {
    Write-Host "     FBNeo: keep it in a folder without $ParentZip. With a clean $ParentZip beside it, FBNeo loads"
    Write-Host "     the parent's unpatched graphics ROMs and the new life bars do not show."
}
if (-not [string]::IsNullOrEmpty([string]$S.KeyName) -and -not $Entries.ContainsKey([string]$S.KeyName)) {
    Write-Host "  NOTE: this ZIP has no $($S.KeyName). MAME and FBNeo need it inside the ZIP to boot the set;" -ForegroundColor Yellow
    Write-Host '  add the one from your own set to the renamed copy.' -ForegroundColor Yellow
}
Write-Host '  3. Pick two X-Men on the select screen (the first one starts). HP+HK tags. At Level Max,'
Write-Host '     QCF+HP+HK is a team super and QCB+HP+HK calls Cross Over Fever.'
if ('4' -eq '4') {
    Write-Host '  FOUR PLAYERS: P1 and P3 against P2 and P4, each on its own controller, on the native CPS-2'
    Write-Host '  four-controller input profile (the one the Cross Fever four-player builds use). HP+HK joins.'
}
Write-Host ''
Write-Host '  NETPLAY / CRC NOTE' -ForegroundColor Yellow
Write-Host '  MAME and FBNeo report the changed ROMs as wrong checksums; that is expected for a patch.'
Write-Host '  For an online match both players need this same patched ZIP.'
Write-Host ''
Write-Host ('  patch fingerprint  ' + $Fingerprint)
Write-Host ''
Pause-IfConsole
exit 0
