@echo off
rem ===========================================================================
rem  SIX MVC2 COLORS v1 -- Marvel vs. Capcom (CPS-2, mvsc)
rem
rem  DRAG a clean mvsc.zip ONTO THIS FILE
rem       or run: MVSC-SIX-COLOR-v1.cmd "C:\path\mvsc.zip"
rem
rem  Input: dat-official 21-member Euro parent, verified member-by-member.
rem  Output: mvsc_six_color_v1.zip beside the input. The original is untouched.
rem  This file contains patch bytes and hashes only; it never downloads ROMs.
rem ===========================================================================

setlocal
set "ROMPATH=%~1"
set "SELFPATH=%~f0"
where powershell.exe >nul 2>&1
if errorlevel 1 (
  echo ERROR: Windows PowerShell was not found.
  pause
  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:MVSC6_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 ''
    Pause-IfConsole;exit $Code
}
function ConvertFrom-Hex([string]$Hex){
    if(($Hex.Length%2)-ne 0){Fail 'internal hex string has 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){
    $Hash=[Security.Cryptography.SHA256]::Create()
    try{return ([BitConverter]::ToString($Hash.ComputeHash($Bytes))).Replace('-','').ToLowerInvariant()}
    finally{$Hash.Dispose()}
}
function Get-FileHashHex([string]$Path,[string]$Algorithm){
    $Hash=[Security.Cryptography.HashAlgorithm]::Create($Algorithm);$Stream=[IO.File]::OpenRead($Path)
    try{return ([BitConverter]::ToString($Hash.ComputeHash($Stream))).Replace('-','').ToLowerInvariant()}
    finally{$Stream.Dispose();$Hash.Dispose()}
}
function Test-Bytes([byte[]]$Buffer,[int]$Offset,[byte[]]$Expected){
    if($Offset-lt 0-or$Offset+$Expected.Length-gt$Buffer.Length){return $false}
    for($i=0;$i-lt$Expected.Length;$i++){if($Buffer[$Offset+$i]-ne$Expected[$i]){return $false}}
    return $true
}
function Read-Zip([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=[IO.Compression.ZipFile]::OpenRead($Path)}catch{throw "not a readable ZIP archive: $Path"}
    try{
        foreach($Entry in $Zip.Entries){
            if($Entries.ContainsKey($Entry.FullName)){throw "duplicate ZIP member '$($Entry.FullName)'"}
            $Memory=New-Object 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 '  MARVEL VS. CAPCOM -- SIX MVC2 COLORS v1'
Write-Host '  ================================================================'
Write-Host '  LP/MP/HP/LK/MK/HK select MvC2 LP/HP/A1/LK/HK/A2 respectively.'
Write-Host '  No ROM expansion: 21 members in, 21 same-size members out.'

$Source=$env:ROMPATH
if([string]::IsNullOrWhiteSpace($Source)){
    $Candidates=@((Join-Path ([Environment]::CurrentDirectory) 'mvsc.zip'),(Join-Path (Split-Path -Parent $env:SELFPATH) 'mvsc.zip'))|Select-Object -Unique
    $Source=$Candidates|Where-Object{Test-Path -LiteralPath $_ -PathType Leaf}|Select-Object -First 1
}
if([string]::IsNullOrWhiteSpace($Source)){Fail 'drag a clean mvsc.zip onto this file, or pass it on the command line.'}
try{$Source=(Resolve-Path -LiteralPath $Source -ErrorAction Stop).ProviderPath}catch{Fail "file not found: $Source"}

Add-Type -AssemblyName System.IO.Compression -ErrorAction SilentlyContinue
Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction SilentlyContinue

$Vanilla=@(
@{Name='mvc.01';Size=131072;Sha='565f2c1befc6dbcd727b65c8954d3263b1e8105cd16be3ff7399c0ff513d144e'},
@{Name='mvc.02';Size=131072;Sha='b460ea0d95c967e5276d0f1f6e0a68d3bcc6008ce7952b970069a211e460ec63'},
@{Name='mvc.05a';Size=524288;Sha='1dfd50972c8796624051857e16ddc2296932c39fb05ecfcd1bae6180a369285d'},
@{Name='mvc.06a';Size=524288;Sha='132316e99d02d197cd8b4b9227dccd9215f5f741bcd21d5abf5c3f07fb64354b'},
@{Name='mvc.07';Size=524288;Sha='8b29a492800ec41c9818f1cf880697b298af69c75d0dd6864ed06e65223930eb'},
@{Name='mvc.08';Size=524288;Sha='402a848e3860f20cdcf3ec80c640f27eaef36f4e7cd78a330913baedcd5356d8'},
@{Name='mvc.09';Size=524288;Sha='fd0e680e0e1b14a5d1e913ddaef37076dd80203326e305b1fe1f8070be0cd6b2'},
@{Name='mvc.10';Size=524288;Sha='e24119140931bc861bf791758af8eb375892260d8ffb633369ebedcbe21f172a'},
@{Name='mvc.11m';Size=4194304;Sha='5587602fb97953d0cd951392b3bbaef2d317ae943ff2f6608c46cb627b7b16ca'},
@{Name='mvc.12m';Size=4194304;Sha='971b949ca3ad2471bf5ddc5c87c10286eacba51c30b4cc2261328ec46732b920'},
@{Name='mvc.13m';Size=4194304;Sha='689b9f2e2f9105f6b6a456e836a289c65caf642d9c7d246ea95c2db256f2ce0d'},
@{Name='mvc.14m';Size=4194304;Sha='1be6ba60b3cc0e6b647c2a54ca06b948dbc72eb32efdead84bcaa1d2efd69db5'},
@{Name='mvc.15m';Size=4194304;Sha='37365288e38a8c41fb5d2eb72808038478def8c8aa368d85816b70a89f6a6f55'},
@{Name='mvc.16m';Size=4194304;Sha='c94231770a7377bf6c7817427f28b87db79f3be03287279e8a19bea34cca85be'},
@{Name='mvc.17m';Size=4194304;Sha='dc29f2f0bf56d60408e9b9a2fcfae6c684f8be97712c94f146386c9bbb9ab46f'},
@{Name='mvc.18m';Size=4194304;Sha='4f3ceefa11958fd92f88047f876e37a5a9a226ca9c28e3b9915a03f39a268947'},
@{Name='mvc.19m';Size=4194304;Sha='d245405b8fa57b315300d915b9b5f96859bc31b9a97f653e370c7f0f28a1fc7f'},
@{Name='mvc.20m';Size=4194304;Sha='6cb08b23e33cc97bd14c6bf0ed179c99952146328f0dc0f01e8135c2783466bd'},
@{Name='mvce.03a';Size=524288;Sha='48128b6f98c5171a0e734e99f01a273f526f2da74f08635732068c60c891d757'},
@{Name='mvce.04a';Size=524288;Sha='71ded7040f279d0ddea1326fc062465159ccd832a327230098e5740d2a747d67'},
@{Name='mvsc.key';Size=20;Sha='9ba914d01fdb50c562fef4d4a5c7ff4779f92340322272696a46025d33f7155c'}
)
try{$Read=Read-Zip $Source}catch{Fail $_.Exception.Message}
$Entries=$Read.Entries;$Metadata=$Read.Metadata;$Order=$Read.Order
$Required=@{};foreach($R in $Vanilla){$Required[$R.Name]=$R}
$Extras=New-Object 'System.Collections.Generic.List[string]'
foreach($Name in $Order){
    if(-not$Required.ContainsKey($Name)){[void]$Extras.Add($Name);continue}
    $R=$Required[$Name];$Bytes=[byte[]]$Entries[$Name]
    if($Bytes.Length-ne$R.Size){Fail "$Name size mismatch. Start from the clean dat-official Euro parent."}
    if((Get-Sha256 $Bytes)-ne$R.Sha){Fail "$Name SHA-256 mismatch. Start from the clean dat-official Euro parent."}
}
if($Extras.Count-gt 0){Fail ("unexpected extra members: {0}. Clean parent only." -f ($Extras-join', '))}
$Missing=New-Object 'System.Collections.Generic.List[string]'
foreach($R in $Vanilla){if(-not$Entries.ContainsKey($R.Name)){[void]$Missing.Add($R.Name)}}
if($Missing.Count-gt 0){Fail ("missing members: {0}." -f ($Missing-join', '))}

$Patches=@(
@{File='mvce.03a';Offset=0x064EAA;Before='0ed5e63cd579';After='f4fc120c584f';Purpose='Mega Man six-color intro row 2'},
@{File='mvce.03a';Offset=0x064F0C;Before='f97c1685e04f';After='fc0e73756bd1';Purpose='Mega Man six-color intro row 0'},
@{File='mvce.03a';Offset=0x06987A;Before='2207ec1c56c0';After='40e7f7b19308';Purpose='Shadow Lady six-color animation guard'},
@{File='mvce.03a';Offset=0x07AF6C;Before='6ee505c4a592';After='911551a5da56';Purpose='character-select animated fighter six-color reader'},
@{File='mvce.03a';Offset=0x07D0C0;Before='864efdb0a015';After='363e5c1d0c1c';Purpose='Mega Man six-color intro row 1'},
@{File='mvce.03a';Offset=0x00C434;Before='ebd9765671ff';After='f1276db0719f';Purpose='six-button decode'},
@{File='mvce.03a';Offset=0x00C440;Before='0ef18564e99d';After='a15762f7a171';Purpose='duplicate modulo-six'},
@{File='mvce.03a';Offset=0x00A4BC;Before='60753f547b95';After='3961c328b0f0';Purpose='body reader a6'},
@{File='mvce.03a';Offset=0x00A5B2;Before='67fb5daccaac';After='70bdd1f958d5';Purpose='body reader P1 slot A'},
@{File='mvce.03a';Offset=0x00A62E;Before='514b658c75c6';After='c5b063fea521';Purpose='body reader P1 slot B'},
@{File='mvce.03a';Offset=0x00A682;Before='df942762045e';After='2613d3509bef';Purpose='body reader P1 copy A'},
@{File='mvce.03a';Offset=0x00A6C2;Before='2f02ba9ab95f';After='2288c6c8f005';Purpose='body reader P1 copy B'},
@{File='mvce.03a';Offset=0x00A7B2;Before='62d1c2bb0f78';After='a80bb5e8d32d';Purpose='body reader P2 slot A'},
@{File='mvce.03a';Offset=0x00A82E;Before='d396708885bd';After='2b1720145f7c';Purpose='body reader P2 slot B'},
@{File='mvce.03a';Offset=0x00A882;Before='4f581520a74f';After='4f5ebcf01dae';Purpose='body reader P2 copy A'},
@{File='mvce.03a';Offset=0x00A8C0;Before='70048b4ed4ed';After='388920215904';Purpose='body reader P2 copy B'},
@{File='mvce.04a';Offset=0x037690;Before='f2f1ee8bca79';After='872b24e0e8cb';Purpose='six-way character-select side-art palette source'},
@{File='mvc.10';Offset=0x074000;Before='ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';After='0072020804002a6601720208050022660272020806001a6603720208080012660472020809000a66057202080a0002660072f94e000048c4007202124152410c060002650072f94e000048c400702e1077023e61f94e0000c6a400702c1077023061f94e0000bca500702c1077022261f94e000038a600702c1077021461f94e0000bca700702c1077020661f94e000038a80061de00fcc06000c0d1754e714e714e00722d1277b23061f94e00008ea600722d1277ba2261f94e0000d0a600722d1277b61461f94e00008ea800722d1277be0661f94e0000cca80061ae00fcc2600081d0754e714e714e000000000000003f00722e4a020012662e4a620006662d1277b216602d1277ba10602e4a620006662d1277b604602d1277be410c0500426200702e305200400c02003665400c20001263400c24002a65400c2c00246248e24055046048e240538f54fcc04002fcc2600081d07c203f000050c0d1f94e0b0098761f307c201d00242af94e0b009676fcb1920000fc066600614000714e400c050002630070754e800c920000fc066600615800714e410c050002630072754e6e0c2a0052000c672d4ab7790666f94e06008298f94e0600a0986c0c2000520020676e0c2000520018676c0c2a00520008676e0c2a0052000e667c201800c06a754e7c201800c061754e6c0c2000520020676e0c2000520018676c0c2a00520008676e0c2a0052000e663c201800c06a754e3c201800c061754e6e0c20005200226600702e107702400c050002630070fcc0600042d07c201800c061c0d1f94e0600b44e2e4a77020666f94e0600b44ef94e0600b04e6e0c20005200226600702e107702400c050002630070fcc0600042d07c281800c061c0d9f94e0600164f2e4a77020666f94e0600164ff94e0600124f022f6c0c200052001e6600742c147702420c050002630074fcc4600041d47c201800c061c2d1026050206c2288021f24f94e0700c6d000000000000000701110400c050002630070fcc06000c0d1f94e070074af';Purpose='744-byte 68000 selector/reader/UI payload in stock FF space'},
@{File='mvc.10';Offset=0x075000;Before='ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';After='e00fee0edd0dcc0caa0a99098808770766065505440433032202110111010000cd0dab0b880977085606340511011101ff0fff0bef06bd029b04790357010100cd0dab0b880977085606340511011101ee0dbb0a990977075505330322020200d10eec0bdd0dcc0ba80899089707860666056304420251014000200020000000dc0cc808970786068405520220002000fd0cdc0bca0bb808a705a40382010100dc0cc808970786068405520220002000dc0cb808990886066304510140000200d20ede0bdd0dbc0b9a0889087803670256054502240113010200020002000000cc0cab08780467035601240002000200ef0caa0f980f530f430c300910070100cc0cab08780467035601240002000200cb0fab08890867024502130102000200d10fee0edd0dcc0cab0a9a098908780767065605450424032302120101003000bf06ae059b046a036802280105001201ff0cde0bac0bac057b03690229013100bf06ae059b046a036802270105001201ef0cab0a9a0978075605240323023200d10fce0bdd0dcd0bab0a9a098908780767065605450424032302120101003000bf069e059b046a036802250202001201ff0cbe09ac0bac057b03680225013100bf069e059b046a036802250102001201cf0aab0a9a0978075605240323023200d20fcc0cdd0dcc0caa0a99098808770766065505440424032302120101003000bf079a0a780856065606220310011201ff0dbd0cab0b8a096807670523033100bf079a0a780856065606210310011201ce0cab0a9909770755052403230232008d05eb0fc90eb80da70c850a6308410630047c045a0248012600150011010300ff0feb0fc90eef09a70c850a6308410630048d02490105005a02260011010400ff0fff0bdf09bf079e068d057c045a024801260015000400f000f000110105005802b90d970c860b750a53083106100412044701220200010001100200000300ee0fb90d970cce09750a53083106100412044602110100002202000100000400ee0fde0fbe099e077a05580247012202000100011002100147054705000005004502eb0fc90eb80da70c850a6308410630043401340124001100210311010300ee0deb0fc90ede09a70c850a6308410630043401230000003401110011010400ee0dcf0bde09ae076904450234013401240011002103100147064706110105007503da0fb80da70c960b74095207410630046402540254024302320111013300ff0fda0fb80dee0a960b7409520741063004db00740431015402430211013400ff0fee0bc908a7059604750364025402540243023201210197009700110135009e09da0fb80da70c960b75095307420631058d086c076c064a04490335023300fe0fda0fb80dea0b960b7509530742063105e8018c0722026c074a0435023400fe0feb0bfe0dcf0cbf0b9e098d086c076c064a044903370396019601350235005f03eb0fc90db80ca70b860a6408530742054e023c033b021b030a0208023300ef0ceb0fc90def0da70b860a640853074205cd075c0324023c031b0308023400ef0cee0caf098f037f025f034e023c033b021b030a0208023f073f07080235001101ff0fcc0c6303fa006400d507c506b5039503730250003000200010000600ff0fee0edd0dcc0caa0a99098808770766065505440433032202110100000700ff0fee0edd0dcc0caa0a990988087707660655054404330322021101000008001200ef0fbc0c52069b055201d40bd20aa4067902620220002000110100000600ef0fde0edb0ebc0c9a0a970a8909780867076406530542033102120000000700ef0fde0edb0ebc0c9a0a970a89097808670764065305420331021200000008001201ff0fcc0c53059c064606cd0dcb0e990c6903560714042202110100000600ff0fee0eeb0ecc0caa0aa70a8808770766066306520542033102120100000700ff0fee0eeb0ecc0caa0aa70a88087707660663065205420331021201000008001101ff0fbc0d7707cd0e7707ef0fde0fcd0ebc0d9a0b890a7707660755063600ff0fee0ecd0ebc0d9a0b890a7809770766075506440533043103110100003700ff0fee0ecd0ebc0d9a0b890a78097707660755064405330431031101000038001101ee0eb9087707da077807ee0efb08ea07c906a80597047807660356023600ee0eec0eea07b908980687057705780766045503450334023102110100003700ee0eec0eea07b9089806870577057807660455034503340231021101000038001101ee0ea2086707b2097707dd0ec409b308a208820771067707420631053600ee0edd0db308a208720761065106770842073106420531042103110100003700ee0edd0db308a2087207610651067708420731064205310421031101000038001101b80e960d850c630a3107ee0dcc0a8804110f2208ae007e043901140209001101b80e960d850c630a3107a00e720c620a42072105ae007e04390114020a001101850c630a4108e20fa00e720c4207ee0dcc0a8804ae007e04390114020b001102b80e960d850d630a3107ee0dbc0b7806110e22089c0b7b093805260409001102b80e960d850d630a3107b00f720d620a420721059c0b7b09380526040a001102850d630a4108e20fb00f720d4207ee0dbc0b78069c0b7b09380526040b001001b80e960d750c630a3107ee0dbb0a7705110f2208b20185044200110109001001b80e960d750c630a3107810e620c620a42072105b2018504420011010a001001750c630a4108e20f810e620c4207ee0dbb0a7705b2018504420011010b001101840b620a410830072102cd0baa0966066c002207860964075405320339001101840b620a410830072102900e700c500a4008210586096407540532033a001101510930082005b00f900e700c4008cd0baa09660686096407540532033b001101a60d710b410830072102cd0bab096704210f2208a80b86093702250039001101a60d710b410830072102900f700f600b40082105a80b8609370225003a001101600a30082006c00f900f700f4008cd0bab096704a80b8609370225003b001101a60d710b410830071102cd0bab096705210f2208a80b86091704040339001101a60d710b410830071102710d510b600b40082105a80b8609170404033a001101600a30082006a10f710d510b4008cd0bab096705a80b8609170404033b001101c90eb80e960c740a420721051104060f02077f055b033701250013000c001101c90eb80e960c740a42072105650d430a3308210611043701250013000d001101960c740a42072105d50fa40d720a510830067f055b033701250013000e001301c90eb80e960c740a230402020102490906049a0959063502140113010c001301c90eb80e960c740a23040202650c34072405020301023502140113010d001301960c740a23040202c50fa40d5307320511039a0959063502140113010e001301c90eb80e960c740a120301010000800d000a890856052502140113010c001301c90eb80e960c740a12030101650c23061304010200002502140113010d001301960c740a12030101c50fa40c420621040001890856052502140113010e001101c90eb80e960c740a420721052004930a4007aa0a88086606440432033c001101c90eb80e960c740a42072105810c610b4108300620046606440432033d001101960c740a4207210586086506540532032102aa0a88086606440432033e000000c90db80e960c740a420721052004930a00066a0148001601140111053c000000c90db80e960c740a42072105810d610c4008300620041601140111053d000000960c740a42072105760816013208110610056a0148001601140111053e000100b90eb80e960c750a430722052104930a13076e015d000a00180058003c000100b90eb80e960c750a43072205810d710b4108310621040a00180058003d000100960c750a43072205760709008b00580047006e015d000a00180058003e001101cf04ae047c035a03480336032503d1059401ff0eff0bff07df04be030f001101ff0f7c035a03480336032503f10bd1059401440f020c01090107010510001101ff0dff0bdf04cf04ae047a034703f10bd10594016502020c0109010711001102c30f930f720d610b510941073107d0065207fd0fde0bcc0ac30fb20f0f001102fe0f720d610b510941073107f10bd0065207440d760964084308320710001102ea0fde0bc30fc30f930f720c5208f10bd00652075107760964084308110011017b0d490c37093507250624041404d1063405de0fb90f980e7b0e6a0c0f001101fe0f37093507250624041404f10bd1063405440e750964084308330710001101df0fb90f7b0e7b0d490c36083506f10bd10634052405750964084308110012016b06480437033603250324031302b2065603ff0def0bbe099b078c073f001201480437033603250324031302e20bb2065603440e120b11071106010540001201ff0dde0bad086b06480447032503e20bb20656035603120b1107110641002001b506930582047203610352034102b1062205fd0efb0ec40e930cc7073f002001930582047203610352034102e20bb1062205970e650b640a4308320740002001fd0ef90ba60db506930582046103e20bb10622053205650b640a4308410012039a0c770a67095608450634052304b1062802ef0fde0fdd0dad09ab0d3f001203770a67095608450634052304e20bb1062802970e640b640a4308320740001203ef0fcd0ece0b9a0c770a66094506e20bb10628022802640b640a43084100110100050008000a100c300d500f2202330355057707ab09df0cef0dff0f1200110100050008000a300d500f700f900f2202330355057707ab09df0cff0f1300110112012402360348045a056c067e078f089f09af0acf0cdf0def0eff0f140011010001110111020105300c500e2202330355059808aa0aed0dfe0eff0f12001101000111011102300c500e700e810f2202330355059808aa0aed0dff0f130011011101330344048506a707a708b909db0bda0beb0cec0dfe0efe0fff0f140011010002020302030307300c500e2202330355059c07aa0aff0cff0dff0f12001101000202030203300c500e700f800f2202330355059c07aa0aff0cff0f1300110112013302450467049905ab06bd07ef09ee09ff0bff0cff0dff0eff0f140011010007000700080009000b100d2302330355057a08aa0ace0ddf0eff0f42001101000700070008000b100d300f710f2302330355057a08aa0ace0dff0f43001101120123023503470458066a078c08ae0a9d0abe0ccf0ddf0edf0eff0f44002202000220021007300441066109330333035505a80baa0aec0efe0fff0f4200220200022002100741066109300e710e330333035505a80baa0aec0eff0f430022022202330355056506b70bb70cc90de90fe80ffb0fec0ffe0ffe0fff0f440016000005000700080009000b300e2601330355059a09aa0aee0dff0eff0f42001600000500070008000b300e300f600f2601330355059a09aa0aee0dff0f43001600160125024702580288089909ab0acd0ccc0cdd0def0eff0eff0fff0f44004002da0fb20f910f800f500b2007ca0fa80e960e740c4309a007700511011500ff0fef0ede0cab0a6606ff0faa0aca0fa80e960e740c4309880a060211011600ff0f800fde0cab0a66067e085c06ca0fa80e960e740c43093b040602110117002103da0fb30f920f810f500b2007ec0fca0eb80e740c4309600e320a10021500ff0fee0fdd0eb80f430eff0fb80fec0fca0eb80e740c4309880a310310021600ff0f810fdd0eb80f430e200f100dec0fca0eb80e740c4309000b3103100217002302da0fb30fa40f810f510c2008db0fb90ea80e970d660a600e530a11011500ff0fee0edd0dac0a6806ff0fac0adb0fb90ea80e970d660aaa0b320211011600ff0f810fdd0dac0a680686065404db0fb90ea80e970d660a32023202110117005600eb0fd80fb60fa50f720c2007da0fb90fa80f760c54099900770011014500ff0fee0edd0daa0a6606ff0faa0ada0fb90fa80f760c54098808420211014600ff0f940fdd0daa0a6606b9099707da0fb90fa80f760c540976054202110147009a0efe0fd90fd90fa60f830d4209db0fdc0fb90faa0d990bdf0f8f0a8f084500ff0fee0ede0dbf07ef0eff0fbf07db0fdc0fb90faa0d990b8f02af098f084600ff0f950fde0dbf07ef0ebf03ff0fdb0fdc0fb90faa0d990bdf0daf098f084700a200fb0da50fa40fa50f730d3207a60fa70f840f750d540af3010f096f004500ee0fee0fdd0d9f0eef00ee0f9f0ea60fa70f840f750d540a0f0d9f006f004600ee0f940fdd0d9f0eef003f0eff01a60fa70f840f750d540adf009f006f0047001102c90fa70f850e740c640b2208000700096508970ab90cdb0dec0eff0f18001102c90fa70f850e740c640b2208000700095408760a8809a90bdc0dff0f19001102c90fa70f850e740c640b22080007000911090009000a000a000e000f1a001201a70f850e630d5209420832072006000743067509970cb90ddb0efe0f18001201a70f850e630d52094208320720060007420764096409970ab70efe0f19001201a70f850e630d520942083207200600071107000700080008000c100d1a001102d90fa70f850e740c640b42093008000a6508970ac90ceb0dec0eff0f18001102d90fa70f850e740c640b42093008000a4505670677069908cd0bff0f19001102d90fa70f850e740c640b42093008000a110a000a000b000b000e000f1a000101970e850d630c52094208420630050006110503060508060abd07080c48000101970e850d630c52094208420630050006020504070509070b180dde0f49000101970e850d630c520942084206300500061107300400071007400c600e4a001101b90ea70e850e530b430a32082008020a2501250046015601dd04980048001101b90ea70e850e530b430a32082008020a14003500570068008a01ee0d49001101b90ea70e850e530b430a32082008020a120a3007600b500b400d610f4a001101860d640d420c310821072205100500062203330444035304dd05660648001101860d640d420c3108210722051005000622022202540454057606ed0e49001101860d640d420c310821072205100500061106100300060007400c500e4a001101d90fb70e960c64094306cc0ccc0ccc0cff0fd30f510f110f110a11081b001101d90fb70e960c64094306110a1107fa0fe80fd60fb50f940e630a42071c001101d90fb70e960c64094306ff0edd0cbb0a89075604bf096905470425031d001101d90fb70e860d64093306cc0ccc0ccc0cff0fd30f510f220d100b20071b001101d90fb70e860d64093306100b2007fa0fe80fd60fb50f940e630a32071c001101d90fb70e860d64093306ff0fdd0dbb0b88085505cb0c7706550545041d001101d90f960e860d53093306dc0ddc0ddc0dfe0fa20f700f500e200c20071b001101d90f960e860d53093306200c2007fa0fe80fd60f940f730e520a32071c001101d90f960e860d53093306fe0fed0dcb0b98095505db0d7706550522011d001101db0fb80f970d650a4306cc0ccc0ccc0cee0eb10f410f410d310a10094b001101db0fb80f970d650a4306310a1009fa0fe80fd60fb50f940e630a42074c001101db0fb80f970d650a4306ee0fce0bad0b8a085506410f210d100911064d001101db0fb80f970d57094306cc0ccc0ccc0ced0e820f410f410d230931084b001101db0fb80f970d5709430623093108fa0fe80fc60f850f740e550942074c001101db0fb80f970d57094306ed0fec0cca0c9a0aa108410f210d310822054d001101db0fb80f9a0e540a3306ec0cec0cec0cdc0d930f410f410d210a340a4b001101db0fb80f9a0e540a3306210a340afa0fe80fd60f970f760e530a32074c001101db0fb80f9a0e540a3306dc0ecc0ca90b98088c06410f210d340a12074d00100420053108640c860ea70fc80f6d004b013a001700510a620b830db20f1e00100420053108420a640c860ea70fc80fea0f830db20ff20f9e07de0cff0f1f001004200517003a004b016d008e039f04510a830db20ff20f9e07de0cff0f2000000510051008640c860ea70fc80fc306920581046101510a620b830db20f1e00000510051008420a640c860ea70fc80fea0f830db20fe30fac07dd0cff0f1f0000051005610181049205c306f507f608510a830db20fe30fac07dd0cff0f200000001101210254067608850e960e290d350a240a1006410452057307b20e1e00000011012102320554067608850e960eb80f7307b20ee20e9c07cd0cde0e1f00000011011006240a350a290d3d0f4d0f41047307b20ee20e9c07cd0cde0e2000000510050008530b760da80fc90f7a0f580e470e460b510a620b830db20f4e00000510050008420a530b760da80fc90fea0f830db20ff20fcd0eff0fff0f4f000005350a460b470e580e7a0f8a0e9b0f510a830db20ff20fcd0eff0fff0f5000100520052108530b750da70fc80f430c320a20081107510a620b830db20f4e00100520052108420a530b750da70fc80fd90f830db20ff20f650faa0fdd0f4f001005000611072008320a430c430f530f510a830db20ff20f650faa0fdd0f500001021103130224064608650d860d5403330233013201220533065408b60e4e00010211031302130624064608650d860d970e5408b60ee60f9807bb0cdd0e4f000102210032013301330254035504650522055408b60ee60f9807bb0cdd0e50001101c90fb80f960f640c3109100700050003000a00047707aa0add0dff0f21001101c90fb80f960f640c530b3109100700050003f30367059a08de0cff0f22001101b80f960f640c100755058808bb0bdd0dff0f9906cc09ee0cff0dff0f23001202a60f950e630c640b21062102100100013202000167080009000d000f21001202a60f950e630c640b43082106210210010001580901040008000c000f22001202950e630c640b2102120111062403000d000f00062404000dcc0e000f23001203b90fb80f960f640c3209260913061305470a13055608660d860fb80f21001203b90fb80f960f640c530b320926091306130547082108540c860fb80f22001203b80f960f640c26094505440baa0b860fb80f330a9a0c760fee0db80f23000201c90ea70d950c840b6409420731051102000b1102700ba00eb00ee00f51000201c90ea70d950c840b740a6409420731051102670857059809dd0cff0f52000201a70d950c840b42074006700ba00eb00ee00f1301240235035705680653005400c60f850b730a62094207310620041102000a1102700ba00eb00ed00f51005400c60f850b730a6209520842073106200411026709b406a70aed0cfe0f52005400850b730a620931063005700ba00eb00ed00f640272048305a306b40753001701c90ea70d950c840b6409420731051201000b1201700ba00eb00ee00f51001701c90ea70d950c840b740a6409420731051201640b6e03b50eee0cff0f52001701a70d950c840b42074006700ba00eb00ee00f28012b003c016e037f045300ff0ffc0fd90fc70fa60e850c740b52093007100500031101fe0cde087c042400fe0ffc0fd90fc70fa60e850c740b52093007100500030f0f0f0f0f0f0f0f2500ff0ffc0fd90fa60e850c5209300710050003fe0cde08ad067c044a0237002600f00ffb0fd80fc70fa50e850c640b32092007200410031101fd0ceb007a042400e00ffb0fd80fc70fa50e850c640b3209200720041003b006b006b006b0062500f00ffb0fd80fa50e850c3209200720041003fd0ceb009c067a04730033032600ff0ffc0fd90fc70fa60e850c430721051103200410031101fe0cde077b052400fe0ffc0fd90fc70fa60e850c430721051103200410038d098d098d098d092500ff0ffc0fd90fa60e850c2105110320041003fe0cde079d067b055b0033042600ed0ea60c840a7309630953083207210642083007300611022c02ce077d035400c80ea60c840a73096309530832072106420830073006a909a909a909a9095500ed0ea60c840a6309530821064208300730062c02ce079e047d034c0184005600fd0fa60c840a7309630953083207210621060005000411025505ce077d035400c80ea60c840a73096309530832072106210600050004a809a809a809a8095500fd0fa60c840a6309530821062106000500045505ce079e047d034d007b015600fd0fa60c840a730963095308320721061104110311031101b10fde077d035400c80ea60c840a73096309530832072106110411031103b90ab90ab90ab90a5500fd0fa60c840a630953082106110411031103b10fde07ae047d034d0085005600110100051106220733084409540a650b860da70ec90f8708cb0cff0f8f09270011010005220733084309540a860d28034a056c078f0900060009000a000c28001101000522073308540a650b860da70ec90f000600070009000a000c200f2900110143000005100721084409540a650b860da70ec90f7609b90ced0f8007270011014300100721084309540a860d200040026005800743005009500a850028001101430010072108540a650b860da70ec90f430053005009500a8500310e29001101000621053206430744085409650a650b860d970f0108100d500f75062700110100063206430743085409650b2101320254047506000675088708110c280011010006320643075409650a650b860d970f0006110775088708110c310f2900110100061007220733084409540a650b860da70ec90f8708cb0cff0f9e09570011010006220733084309540a860d1202420444055605000600071108200b58001101000622073308540a650b860da70ec90f0006000700071108200b400e5900110100061007210810044309540a650b860da70ec90f8707cb0bff0f9e09570011010006210810044309540a860d0201320153035504000600071108400b58001101000621081004540a650b860da70ec90f0006000600071108400b800e59001101210532062206330744085409650a650b860da80f55068809ee0f9e085700110121052206330743085409650b2201000112032404210532054306300b580011012105220633075409650a650b860da80f2105320632054306300b400d590011010304da0fb80fa80e860d750b5309ff0fed0deb0bb8078504520220002a0011018808660644042202050604050304ff0fed0deb0bb8078504520220002b0011010304da0fb80fa80e860d750b53092202ca0fff0fcb0ea90e870e430c2c0011021404da0fac0fa80e790c750b5409ff0fdf0fbe0e58091808360911012a00110257081707570a3508250514041404ff0fdf0fbe0e58091808360911012b0011021404da0fac0fa80e790c750b54093508ca0fff0fcb0ea90e7a0d430b2c0011013003b60eba0d860c970c750b5309ee0f7c0f6b0e560f000d070601012a001101440d000d16050403400430043003ee0f7c0f6b0e560f000d070601012b0011013003b60eba0d860c970c750b53090403a60eee0fa80e960d980d530b2c0011010407da0fb90fa80f860d750b5309ff0feb0fe70fc50f830d610a20065a0011016608440622041103060905080407ff0feb0fe70fc50f830d610a20065b0011010407da0fb90fa80f860d750b53091103ca0fff0fcb0ea90e870e430c5c0011010405ea0fb80fca0f860d750b5309ff0ffc0ff80fd60f830d610a20065a0011016608440622044106050604060405ff0ffc0ff80fd60f830d610a20065b0011010405ea0fb80fca0f860d750b53094106da0fff0fdc0eba0f870e430c5c0011010305d90f9b0da70f860d750b5309ff0feb0fe70fc40f830d610a20065a0011016608440622043102040603060305ff0feb0fe70fc40f830d610a20065b0011010305d90f9b0da70f860d750b53093102c90fff0fcb0ea90e870e430b5c001101ff0cce099d047d035b003a00270015010f0fc90fa60e740b420920052d0011019d047d035b002700ef0acf06ae038c006a003800c90fa60e620c50082e0011015b002700ff0fee0ccf078c03590037001501c90fa60e740b420920052f001001ee0fcb0f650fa2027001600130013000eb00c90fa60e740b420820052d001001650fa20270013001dc0fe80e650fa406130a4001c90fa60e620b50082e00100170013001ff0fdd0fbb0f330e020940013000c90fa60e740b420820052f001001ee0fbd0d770866074405330411021001b908c90fa60e740b420920052d0010017708660744051102de0edd0e7808880a23032203c90fa60e620c50082e00100144051102ff0fdd0fbc0c5506120221031001c90fa60e740b420920052f001102ee0eab0f770f550d220d220a00081103990dc90fa60e730c620c40095d001102770f660e220d0008ee0eab0f890f780e560d3107c90fa60e620c40095e001102220d0008ff0fdd0dfd078d00980076002203c90fa60e730c620c40095f005009ee0efa0f870fc30e420d320a500d6009f70dc90fa60e730c720c500a5d005009870f760e420d500dee0ef90ff70fe60ec30e4008c90fa60e720c500a5e005009420d500def0fdd0d0e0d8e0208080604620ac90fa60e730c720c500a5f000002ed0ff40f870f910d320c320a10081103f10dc80fa60e840d620c40095d000002870f760e320c1008ed0ff30fe30fd20e910d5308c80fa60e620c40095e000002320c1008fe0fdc0f910f8d01000c00082104c80fa60e840d620c40095f001101cf04ae047c035a03480336032503d1059401ff0eff0bff07df04be030f001101ff0f7c035a03480336032503f10bd1059401440f020c01090107010510001101ff0dff0bdf04cf04ae047a034703f10bd10594016502020c0109010711001102c30f930f720d610b510941073107d0065207fd0fde0bcc0ac30fb20f0f001102fe0f720d610b510941073107f10bd0065207440d760964084308320710001102ea0fde0bc30fc30f930f720c5208f10bd00652075107760964084308110011017b0d490c37093507250624041404d1063405de0fb90f980e7b0e6a0c0f001101fe0f37093507250624041404f10bd1063405440e750964084308330710001101df0fb90f7b0e7b0d490c36083506f10bd10634052405750964084308110012016b06480437033603250324031302b2065603ff0def0bbe099b078c073f001201480437033603250324031302e20bb2065603440e120b11071106010540001201ff0dde0bad086b06480447032503e20bb20656035603120b1107110641002001b506930582047203610352034102b1062205fd0efb0ec40e930cc7073f002001930582047203610352034102e20bb1062205970e650b640a4308320740002001fd0ef90ba60db506930582046103e20bb10622053205650b640a4308410012039a0c770a67095608450634052304b1062802ef0fde0fdd0dad09ab0d3f001203770a67095608450634052304e20bb1062802970e640b640a4308320740001203ef0fcd0ece0b9a0c770a66094506e20bb10628022802640b640a430841001101ff0fcc0c6303fa006400d507c506b5039503730250003000200010000600ff0fee0edd0dcc0caa0a99098808770766065505440433032202110100000700ff0fee0edd0dcc0caa0a990988087707660655054404330322021101000008001200ef0fbc0c52069b055201d40bd20aa4067902620220002000110100000600ef0fde0edb0ebc0c9a0a970a8909780867076406530542033102120000000700ef0fde0edb0ebc0c9a0a970a89097808670764065305420331021200000008001201ff0fcc0c53059c064606cd0dcb0e990c6903560714042202110100000600ff0fee0eeb0ecc0caa0aa70a8808770766066306520542033102120100000700ff0fee0eeb0ecc0caa0aa70a88087707660663065205420331021201000008001101ff0fbc0d7707cd0e7707ef0fde0fcd0ebc0d9a0b890a7707660755063600ff0fee0ecd0ebc0d9a0b890a7809770766075506440533043103110100003700ff0fee0ecd0ebc0d9a0b890a78097707660755064405330431031101000038001101ee0eb9087707da077807ee0efb08ea07c906a80597047807660356023600ee0eec0eea07b908980687057705780766045503450334023102110100003700ee0eec0eea07b9089806870577057807660455034503340231021101000038001101ee0ea2086707b2097707dd0ec409b308a208820771067707420631053600ee0edd0db308a208720761065106770842073106420531042103110100003700ee0edd0db308a208720761065106770842073106420531042103110100003800e00fee0edd0dcc0caa0a99098808770766065505440433032202110111010000cd0dab0b880977085606340511011101ff0fff0bef06bd029b04790357010100cd0dab0b880977085606340511011101ee0dbb0a990977075505330322020200d10eec0bdd0dcc0ba80899089707860666056304420251014000200020000000dc0cc808970786068405520220002000fd0cdc0bca0bb808a705a40382010100dc0cc808970786068405520220002000dc0cb808990886066304510140000200d20ede0bdd0dbc0b9a0889087803670256054502240113010200020002000000cc0cab08780467035601240002000200ef0caa0f980f530f430c300910070100cc0cab08780467035601240002000200cb0fab08890867024502130102000200d10fee0edd0dcc0cab0a9a098908780767065605450424032302120101003000bf06ae059b046a036802280105001201ff0cde0bac0bac057b03690229013100bf06ae059b046a036802270105001201ef0cab0a9a0978075605240323023200d10fce0bdd0dcd0bab0a9a098908780767065605450424032302120101003000bf069e059b046a036802250202001201ff0cbe09ac0bac057b03680225013100bf069e059b046a036802250102001201cf0aab0a9a0978075605240323023200d20fcc0cdd0dcc0caa0a99098808770766065505440424032302120101003000bf079a0a780856065606220310011201ff0dbd0cab0b8a096807670523033100bf079a0a780856065606210310011201ce0cab0a990977075505240323023200100420053108640c860ea70fc80f6d004b013a001700510a620b830db20f1e00100420053108420a640c860ea70fc80fea0f830db20ff20f9e07de0cff0f1f001004200517003a004b016d008e039f04510a830db20ff20f9e07de0cff0f2000000510051008640c860ea70fc80fc306920581046101510a620b830db20f1e00000510051008420a640c860ea70fc80fea0f830db20fe30fac07dd0cff0f1f0000051005610181049205c306f507f608510a830db20fe30fac07dd0cff0f200000001101210254067608850e960e290d350a240a1006410452057307b20e1e00000011012102320554067608850e960eb80f7307b20ee20e9c07cd0cde0e1f00000011011006240a350a290d3d0f4d0f41047307b20ee20e9c07cd0cde0e2000000510050008530b760da80fc90f7a0f580e470e460b510a620b830db20f4e00000510050008420a530b760da80fc90fea0f830db20ff20fcd0eff0fff0f4f000005350a460b470e580e7a0f8a0e9b0f510a830db20ff20fcd0eff0fff0f5000100520052108530b750da70fc80f430c320a20081107510a620b830db20f4e00100520052108420a530b750da70fc80fd90f830db20ff20f650faa0fdd0f4f001005000611072008320a430c430f530f510a830db20ff20f650faa0fdd0f500001021103130224064608650d860d5403330233013201220533065408b60e4e00010211031302130624064608650d860d970e5408b60ee60f9807bb0cdd0e4f000102210032013301330254035504650522055408b60ee60f9807bb0cdd0e500011010304da0fb80fa80e860d750b5309ff0fed0deb0bb8078504520220002a0011018808660644042202050604050304ff0fed0deb0bb8078504520220002b0011010304da0fb80fa80e860d750b53092202ca0fff0fcb0ea90e870e430c2c0011021404da0fac0fa80e790c750b5409ff0fdf0fbe0e58091808360911012a00110257081707570a3508250514041404ff0fdf0fbe0e58091808360911012b0011021404da0fac0fa80e790c750b54093508ca0fff0fcb0ea90e7a0d430b2c0011013003b60eba0d860c970c750b5309ee0f7c0f6b0e560f000d070601012a001101440d000d16050403400430043003ee0f7c0f6b0e560f000d070601012b0011013003b60eba0d860c970c750b53090403a60eee0fa80e960d980d530b2c0011010407da0fb90fa80f860d750b5309ff0feb0fe70fc50f830d610a20065a0011016608440622041103060905080407ff0feb0fe70fc50f830d610a20065b0011010407da0fb90fa80f860d750b53091103ca0fff0fcb0ea90e870e430c5c0011010405ea0fb80fca0f860d750b5309ff0ffc0ff80fd60f830d610a20065a0011016608440622044106050604060405ff0ffc0ff80fd60f830d610a20065b0011010405ea0fb80fca0f860d750b53094106da0fff0fdc0eba0f870e430c5c0011010305d90f9b0da70f860d750b5309ff0feb0fe70fc40f830d610a20065a0011016608440622043102040603060305ff0feb0fe70fc40f830d610a20065b0011010305d90f9b0da70f860d750b53093102c90fff0fcb0ea90e870e430b5c00';Purpose='21 vanilla fighters x six derived 96-byte select-art previews'},
@{File='mvc.06a';Offset=0x004000;Before='ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';After='0000ff0fab0b770845063404230311010000ff0fff0def06bd029b0479030000ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0100ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990202000000fd0cb808860663044101300020001000ff0fed0ccb0ab908a80595030300ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0400ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990205000000ef0cab08670345012400030002000100ed0fcb0fa90f650d530b20080600ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0700ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990208001201ff0fcf038f044e003a0128010500400bff0fef0cbf05ac047b0368010900ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0a00ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d070b001201df0cad036b044700270125010200400bdf0ccf0aaf05ac047b0368010c00ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0d00ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d070e001201cc0c7707550544043303220211011101ef0ece0cac0a8a08680657050f00ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d1000ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d071100ff0fff0bbf069f057e054d051905300f020c040a0306c90f970c640a11010000ff0fef0aaf074f033d010a00de0fbd0f9b0f690f310f120d010b030800000100ff0fff0dff0bef09df07bf07af078f076f07e70fd00fa00f700f400f000d0200ff0fef0faf0b7a05580112010101040f000900051103960d4209310800000300ff0faf0b7a05580112010101df0fbf0f9d0f6c0f130f150d040b050800000400ff0fdf0ddf0bcf09bf079f078f077f075f07e70fd00fa00f700f400f000d0500ef0dcf0b8d076904350112010101f80f830c50080006c90f970c640a11010600ef0dcf0b8d07690435011201de0fbd0f9b0f690f310f120d010b030800000700ff0fff0dff0bef09df07bf07af078f076f07e70fd00fa00f700f400f000d0800ff0fc90896047503540232011101350f040c030a0206b80f860b530900000900ff0fc9089604750354023201de0fbd0f9b0f690f350f040c030a020600000a00ff0fff0bfe07ec00db00c900b800a700a600e70fd00fa00f700f400f000d0b00ff0fff0edf0cae097c0748033502670f350d120a0005b80f860b530900000c00ff0fdf0cae097c0748033502de0fbd0f9b0f690f310f120d010b030800000d00ff0ffb0bfa07e900d800c600b600a500a400e70fd00fa00f700f400f000d0e00df0bbf088f026d024b0219021702f80f830c50080006c90f970c640a11010f00df0bbf088f026d024b021902de0fbd0f9b0f690f310f120d010b030800001000ff0fff0dff0bef09df07bf07af078f076f07e70fd00fa00f700f400f000d1100f006d000b00090007000500003090207000500040002ff0fbb0b770700000000ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a8009700901002002310341045205520663077408960ab80cda0efd0f86098a038a038b030200d209b204810260004000200037011500040003000200ef0fab0b780800000300ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a8009700904002002310341045205520663077408960ab80cda0efd0f86098a038a038b030500db0da80a870965064505230337011500040003000200ff0fbb0b770700000600ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a0707002002310341045205520663077408960ab80cda0efd0f86098a038a038b030800de0fbc0d9a0b7809550633044e003a00280016000500ff0fbb0b770700000900ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a070a002002310341045205520663077408960ab80cda0efd0f86098a038a038b030b00eb08b9079805770456033402800f550d340a04060304ef0fab0b780800000c00ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a800970090d002002310341045205520663077408960ab80cda0efd0f86098a038a038b030e00b408920872075106310531046e0a4c08480528041603ef0fab0b780800000f00ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a0710002002310341045205520663077408960ab80cda0efd0f86098a038a038b0311000000000ff80fe00eb00e800cff0f06004b008d00bf00c80fa60e600a310700000000000fef0dde0cbc0a8a07ff0f06004b008d00bf00de0cbc0a670546030100ff0eef09ae0a8c0a6908fa0ff60fe10ec00fa00f700f000fbf009f007d0002000000000ff80ff00fc00f800dff0f270349057c07be0ac80fa60e600a310703000000000fef0dde0cbc0a8a07ff0f270349057c07be0ade0cbc0a670546030400ff0eef09ae0a8c0a6908fa0ff60fe10ec00fa00f700f000fbe0a8d085a0605000000000fd70fc00e900e700cff0f010043008300b400c80fa60e600a310706000000000fef0dde0cbc0a8a07ff0f010043008300b400de0cbc0a670546030700ff0eef09ae0a8c0a6908fa0ff60fe10ec00fa00f700f000fb40094015401080000004b00f00fb00f900e700cff0f43046408970bda0ea60e740b52093107090000004b00ef0dde0cbc0a8a07ff0f43046408970bda0ede0cbc0a670546030a00ff0fdf0faf0c8f096f08fa0ff60fe10ec00fa00f700f4b00da0ea80c75090b000000000fd50fc00f900f700fff0f25005a009c00de00c80fa60e600a31070c000000000fef0dde0cbc0a8a07ff0f25005a009c00de00de0cbc0a670546030d00ff0fdf0faf0c8f096f08fa0ff60fe10ec00fa00f700f000fde00ad016b010e000000000fb10fa00f710d510bff0f050328043b057d08c80fa60e600a31070f000000000fef0dde0cbc0a8a07ff0f050328043b057d08de0cbc0a670546031000ff0fdf0faf0c8f096f08fa0ff60fe10ec00fa00f700f000f7d084c0639051100e90fa70ed50f940c740b53083005450c1308ee099f075d000900070000000000ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cff0ddf0bbf099f076e054e032d010100ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d070200e90fa70e77084404330422031102390a0607be098b0759042801140102000300ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cff0ddf0cbf0a9d088b076a0538020400ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d070500e90fa70e5e053904250312020000600e100bbe098b0759042801140102000600ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cff0edf0bbd099b077906680457030700ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d070800e90fa70e86085405420421021001600c3008ff0fcc0c99096606440411010900ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cee0fdd0ecc0dbb0c990a770866070a00ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d070b00e90fa70e610b3108210710051003310b0007da039a0248000500040000000c00ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cff0dfd0adb08ca06b904a80297010d00ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d070e00e90fa70eff0a9b00780056003400450c1308ee099f075d000900070000000f00ff0fef0fcf0faf0f7f0f5f0e4f0d2f0cff0ddf0bbf099f076e054e032d011000ff0fff0eff0dff0cff0bff0aef08cf07af078b078b078c078c078d078d071100cf049e047c046903460234010000870f660b0007ff0fef0ddf0bf00bd0050000ff0fd90fa60e740b52094008d00fa00e700bff0acf079f046d003a0017000100ff0fef0ddf0ccf0bae098c076905ff0fff0eee0ddd0cbb0a9908770655040200c40f940e740c6309420631040000760e650b4308fe0feb0fd90ff00bd0050300ee0eda0fa70e750b42082006d00fa00e700bcf09ad068b045802460024000400ff0fef0ddf0ccf0bae098c076905ff0ffe0fed0fdc0eba0c980a7608540605008c0c5a0a48083606240412020000760e650b4308ff0fdf0fce0ef00bd0050600ee0eda0fa70e750b42082006d00fa00e700bb90d960c640b5109310710040700ff0fef0ddf0ccf0bae098c076905ff0fdf0fcf0ebe0d9c0b7a095807360508008c065a0548043603240212010000330d22081106ff0fdf0cbe09d00aa0050900ee0eda0fa70e750b42082006d00fa00e700bcf09ad089b078906670445020a00ff0fef0ddf0ccf0bae098c076905ff0fff0def0cdf0bae098c07690500000b00c806a50584046303420221010000760e650b4308fe0efd0cfc0ad00aa0050c00ff0fd90fa60e740b52094008e00fb00e700bd70fa60d850b6308320611040d00ff0fef0ddf0ccf0bae098c076905ff0ffe0efd0deb0bda09b807850542020e00ac0d9a0b78095607340512030000760e650b4308ef0fcd0ebc0dd00aa0050f00ff0fda0fa70e750b42082006e00fb00e700bef0dcf0aae098c07690517001000ff0fef0ddf0ccf0bae098c076905ff0fef0fde0ecd0dab0b8909670734041100800f600f300f000d000b0008af008f006f003e000a00ff0fdd0dbb0b00000000b70f950f700f500f200f000d000b0008ff0fef0dcf0bbe0a9c08790600000100f00fd00fb00f8808660655053303ff0fef0ddf0ccf0bae098c07690557040200200e000b10080005000300015e034a03290124011201ff0fdd0dbb0b00000300b70f950f700f500f200f000d000b0008ff0ffe0eed0ddc0ccb0ba90900000400f00fd00fb00f8808660655053303ff0ffe0eed0ddc0ccb0ba909980876060500470f160d040b0308020401035a053804360315021301ff0fdd0dbb0b00000600b70f950f700f500f200f000d000b0008ff0fff0dff0cff0bde09ac0700000700f00fd00fb00f8808660655053303ff0fff0dff0cff0bde09ac07890567040800600f200f100d000b0009000747043503230211010000ff0fdd0dbb0b00000900b70f950f700f500f200f000d000b0008ff0fdf0ecf0dbe0c9d0a7b0800000a00f00fd00fb00f8808660655053303ff0fdf0ecf0dbe0c9d0a7b08580646050b00910f710c510a31072005100266054504330322021102ff0fdd0dbb0b00000c00b70f950f700f500f200f000d000b0008ff0ffe0fed0fec0fda0eb90c00000d00f00fd00fb00f8808660655053303ff0ffe0fed0fec0fda0eb90ca80b87090e00820e510e300e000b0009000758013701250115001300ff0fdd0dbb0b00000f00b70f950f700f500f200f000d000b0008ff0fff0eef0ede0dcd0cab0a00001000f00fd00fb00f8808660655053303ff0fff0eef0ede0dcd0cab0a890867061100ff0fc00f800dcc0c99097707300f300c3109b80f960f600cc6008300220200000000cd0fab0f790f570d300f400bb80f850e6409ff0fcc0c9909b40f9f0001000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800edf08ae058c057a020200ff0fc00f900fdb0fb80f650fde0fbc0f8a0fdb0fb90f640b000f000a220203000000de0fbc0f9b0f8a0f870f650fb80f850e6409ff0fcc0c9909b40f9f0004000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800e990f000f000c00090500ff0fd00f900fcf0c9c097a077e004b001800c90fa80f860c7e001800220206000000fe0edf0dce0cbd0bac0a8a08c90fa80f860cff0fcc0c9909b40f9f0007000000ff0fdd0d9909ec0fc80ea50eea0fc60fa30f800f99096606440422020800ff0fd80fa50fcc0caa0a8808660644042202da0fa80f760c99006600220209000000db0fc00fa00f900e400f200db80f850e6409ff0fcc0c9909b40f9f000a000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800efd08cb00a90087000b00ff0fea0fc80fde0cae067e00ff0fcf0c9f09db0fb90f970cff0faa0f22020c000000ff0fdf0cce09ae068e037e00db0fb90f970cff0fcc0c9909b40f9f000d000000ff0fdd0d9909ec0fc80ea50eea0fc60fa30f800fff0fef0ecf0c9f090e00ff0fbd0f8b0fdf0faf0f0f0dff00bf007f00a60f730f400bf000900022020f000000fc0cf808f000d000b0009000a60f730f400bff0fcc0c9909b40f9f0010000000ff0fdd0d9909ec0fc80ea50eea0fc60fa30f800fdf0faf0f0f0d0f0a11001101c90fa70f850e640b0007ff0f0008ff0fdc0dba0c990a7609000f000a00001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f0201001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c02001200a70f850e630c42082006ff0f0007fb0fb80d970b74096408100d000803001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f0204001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c05001101d90fa70f850e640b3008ff0f000aef0dbd0a990878066706000f000b06001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f0207001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c08001101a70e850d530a42083005ff0f0006080b0609050703050103000b000709001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f020a001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c0b001101c90fa70f850e430a2007ff0f020a78005600450025001400a00d600b0c001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f020d001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c0e001101860e640d320921071004ff0f000665055404330333031101000900060f001101ff0fff0dff0aef06cf05bf049f048f02ff0aef06cf05bf049f048f0210001101ff0ffc0fe90fc40fa20f800f500e400ce90fc40fa20f800f500e400c11009f026f024d023b022902ff0fcc0c8808220dec0fda0ff20fb20e510922020000dd0faa0c880b660a4408ec0fa20f820d30076a0a4808360735062405da0f0100220df20fb20e5109ff0fcc0c880866064404e301b10180004000200000000200bd048a03780356023402ff0fcc0c8808220dec0fda0ff20fb20e510922020300ec0eba0b870965063304ec0f920f720e2007ff0fcc0c990977075505da0f0400220de10fa10e500aff0fdc0c880866064404420f210d110b020823050000050066074405330422020101fe0fdc0d9809400eec0fda0fc10f910e40092202060045053404230312020101ec0f920f720e200754064404330322022201da0f0700220dc10f910e4009ff0fdc0c8808660644045605340323021302010100000800880f000f110d110a2207ff0fad0a6806220dec0fda0ff20fb20e510922020900fd0dca0ab808a6068404ec0fa20f820d300788086606550544043303da0f0a00220df20fb20e5109ff0fcc0c880866064404cf057f044c001800230000000b00a20f700e630c42093406fe0fcb0b7908220dec0fda0fd70f820e440822020c00de0cae0a7b0848062604ec0fa20f820d3007f60cc40aa10871065005da0f0d00220df20fb20e5109ff0fcc0c8808660644045d083a0627040502030100000e00bb0f990f770e450b2309ed0eaa0a7707220dec0fda0fc10f940e400922020f00df0fce0e9c0d78093506ec0fb40f860e2007df0cbf099e076b055804da0f1000220de70f940f550aff0fec0c990977075505f909d704b7028601540200001100ff0fea0fa70f860e530b31082005ff0acf079f046d003a001700f20f42090000ff0fea0fa70f860e530bff0acf079f046d003a001700ff0fdf0bbf079f040100ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000200ff0fea0fa80f760d530b00081005fe0dfa0af707b50573035200f20f42090300ff0fea0fa70f860e530bfe0dfa0af707b50573035200fe0dfb0bf909f7070400ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000500df0eb70f740c5108430521021101be0e9e0e4f0f3a0b25081005f20f32040600ff0fb70f740c51084305be0e9e0e4f0f3a0b25081005ef0fcf0f9f0f7f0f0700ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000800ff0fea0fa80f760d530b00081005ff0fde0f9b0f680f470f350af20f42090900ff0fea0fa80f760d530bff0fde0f9b0f680f470f350aff0fdd0fab0f8a0f0a00ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000b00dd0fea0fa70f860e530b31082005aa0f770f440f220b00080005f20f42090c00ff0fea0fa80f760d530baa0f770f440f220b00080005dd0faa0f880f660f0d00ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000e00ee0e960e520b3409240612041103cc0c99095505330322021101f60f13050f00ff0f960e520b34092406cc0c99095505330322021101ee0ecc0caa0a88081000ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d0011000000c90f960f640c3109ff0fee0daa0888066605ff0fcc0c99095505000f0000ff0ff80fe30fc00f920f600f300f000cff0dff0aef06bf048f046f042f0101000000210243047507a80aca0cff0fb90f630f000f000b00070004bd077a0002000000b70f630c42092106000f000b0007000400035803360224011200d00f0300ff0ff80fe30fc00f920f600f300f000cff0dff0aef06bf048f046f042f0104000000230345057808ab0bcd0dff0f760843053204210310020001bd077a0005000000c90f960f640c3109b90f870f550c33091106ef0fbc0c89094505000f0600ff0ff80fe30fc00f920f600f300f000cff0dff0aef06bf048f046f042f0107000000230334045607890aab0cff0fce0f8b0f390f470c25091305bd077a0008000000c90e950c6409310568063503130102000000e00f900f500c3008000f0900ff0ff80fe30fb00f920f600f300f000cff0dff0aef06bf048f046f042f010a000000210243047507a80aca0cff0fbf088f056b01490037000400bd077a000b000000c60f630a30052004b5078405650243012301ec0fca0d86094205000f0c00ff0ff80fe30fc00f920f600f300f000cff0dff0aef06bf048f046f042f010d000000210343057508a80bca0dff0fa50983076105530432032101bd077a000e000000c90e950c640931057f043c02280115000200e00f900f500c3008000f0f00ff0ff80fe30fb00f920f600f300f000cff0dff0aef06bf048f046f042f011000000030054007700dc50feb0fff0feb0fc50f900f700d40073005bd077a0011002004fc0fd90fa60e740b52093007000f000b00090006ff0fba0ad00fa00e00001101ff0fff0dff0bef07df05cf04bf05af038f026f00cf0daf0c8f0b5c0901001101ff0ffc0fe90fc40fa20f800f500e400cfe0ced09cd00ad009d068c0602002004ca0fa80f860e540b32092007090f070e060b000ad00fa00ed00fa00e03001101ff0fff0bfe07ec00db00c900b800a700a6009500d80ab608a407810504001101ff0ffc0fe90fc40fa20f800f500e400cfe0ced09cd00ad009d068c0605002004550844073306220511041103ee0ecc0c99096606ff0fbb0bee0ecc0c06001101ff0fff0dff0bef07df05cf04bf05af038f026f00cf0daf0c8f0b5c0907001101ff0ffc0fe90fc40fa20f800f500e400cfe0ced09cd00ad009d068c0608002004fc0fd90fa60e740b520930070f000b0007000600ff0fba0ad00fa00e09001101ff0fff0bfe07ec00db00c900b800a700a6009500d80ab608a40781050a001101ff0ffc0fe90fc40fa20f800f500e400cff0bef08cf05af048f036f020b002004960f750d530b4109210600054504330322021101ff0fba0ab00f900d0c001101ff0fff0dff0bef07df05cf04bf05af038f026f00cf0daf0c8f0b5c090d001101ff0ffc0fe90fc40fa20f800f500e400cff0bef08cf05af048f036f020e002004550844073306220511041103d00fb00f800d500aff0fbb0bd00fb00f0f001101ff0fff0bfe07ec00db00c900b800a700a6009500d80ab608a407810510001101ff0ffc0fe90fc40fa20f800f500e400cff0bef08cf05af048f036f0211001101c90fa70e860d540a2207ff0fcb0c87088f096c074a052803200f000b0000ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b01000000ff0fff0bcf0aae068d046c074705600f300f000c0007c00f900d600b02001101c90fa70e860d540a0007ff0fba0c87097006500430021000800f500b0300ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b04000000ff0fdc0fbb0ca90a870864065305b900970075004300c00f900d600b05001101a80f860d650b54093206400f100b00076706450423021201dc0e870a0600ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b07000000aa0a9b0977076606550533031101600f300f000c0007c00f900d600b08001101c90fa70e860d540a0007df0d9b096906dc0ea80c75095307400e200b0900ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b0a000000ff0fdd0dbb0ba9098707640553048f076e053b024303c00f900d600b0b001101c90fa70e860d540a0007ff0fcb0c87085509330711050003800f500b0c00ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b0d000000ff0fee0bcb0aa9088706640353027f0b5d0949062504c00f900d600b0e001101a80f860d650b54093206760854063204400f100b00080006cb0d87090f00ff0fdf0dbf0b9f097f075f05f60fd20fb00f800f500f000fce0ead0d8a0b10000000aa0a9b09770766065505330311018f076e053b024303c00f900d600b11000000ec0cda0fa80e990d780b67095608050666068808aa0a870da80fff0f000000009f0ddb0fa90eef0ebe0b8c086a064301000a000e750f650a870dff0f0100c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c02000000df0fda0fa80e9b0d790b68095708250517074707aa0a7a0c9c0fff0f03000000ac0fdb0fa90eff0fce0f8e0f6b0f46085b0a8d0caf0e650a870dff0f0400c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c050000007c0db50e850c79086807480536053004000c550d660f990cbb0dff0f06000000f00eb80f960d8f0e5e0b3c080a061604330377079909650a870dff0f0700c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c08000000d40fda0fa80f8a0e590d490b380a0609440655077709890ea90fff0f09000000a00fdb0fa90eef0dbe0a8d075b04210439065d088f0b650a870dff0f0a00c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c0b000000f00fea0fca0f990d780b6709560805064c077d08bf0b870da80fff0f0c000000bf00ec0fba0fe80fc80fa60f620b5207af01ef06ff0b650a870dff0f0d00c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c0e000000c10fd90fa70f680a3709370826070406110a210b210f6c0c7c0dff0f0f000000ec0cdb0fa90efc0ef90dd70aa70842028a0fad0fdf0f650a870dff0f1000c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c11000000bf059f007e005f055c033a032802ff0fbb0bb90fa60e800c5009770f00000000cd0fab0f790f570d300f400bb80f850e6409ff0fcc0c9909b40f9f0001000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800edf08ae058c057a0202000000fa0cd808b604a500830061003000ff0fbb0bb90fa60e800c5009770f03000000ee0add04bd039e027d003b00b80f850e6409ff0fcc0c9909b40f9f0004000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800ecd0f780f350e250a05000000de0dbc0b9a097807560545042302ff0fbb0bb90fa60e800c5009770f06000000de0dbc0bab0a890867065605b80f850e6409ee0ecc0c9909b40f9f0007000000ff0fdd0d9909ee0ebb0b9909d00fb00e900e900ece0c89085605240208000000ab0f890f660e000f000c00080001ff0fbb0bb90fa60e800c5009770f09000000cc0fa70f800f510d300f300ab80f740d4208ff0fcc0c9909b40f9f000a000000ff0fdd0d9909ec0fc80ea50ed00fb00e900e800efd08cb00a90087000b000000fa0fe70fc40fa00f700f500c5008ff0fbb0bb90fa60e800c5009770f0c000000dc09db03c903b901a6008500b80f740d4208ff0fcc0c9909b40f9f000d000000ff0fdd0d9909ef0fbd0d8a0ad00fb00e900e800e0f0c0d0a0a0708040e000000f40fd30f920e000f000c00080001ff0fbb0bb90fa60e800c5009770f0f000000c20f920e000f000b000f000bb80f850e6409f60fcc0c9909b40f9f0010000000ff0fdd0d9909f40fc80ea50ed00fb00e900e800e920e000f000c00081100cf049e047c046903460234010000870f660b0007ff0fef0ddf0bf00bd0050000ff0fd90fa60e740b52094008d00fa00e700bff0acf079f046d003a0017000100ff0fef0ddf0ccf0bae098c076905ff0fff0eee0ddd0cbb0a9908770655040200c40f940e740c6309420631040000760e650b4308fe0feb0fd90ff00bd0050300ee0eda0fa70e750b42082006d00fa00e700bcf09ad068b045802460024000400ff0fef0ddf0ccf0bae098c076905ff0ffe0fed0fdc0eba0c980a7608540605008c0c5a0a48083606240412020000760e650b4308ff0fdf0fce0ef00bd0050600ee0eda0fa70e750b42082006d00fa00e700bb90d960c640b5109310710040700ff0fef0ddf0ccf0bae098c076905ff0fdf0fcf0ebe0d9c0b7a095807360508008c065a0548043603240212010000330d22081106ff0fdf0cbe09d00aa0050900ee0eda0fa70e750b42082006d00fa00e700bcf09ad089b078906670445020a00ff0fef0ddf0ccf0bae098c076905ff0fff0def0cdf0bae098c07690500000b00c806a50584046303420221010000760e650b4308fe0efd0cfc0ad00aa0050c00ff0fd90fa60e740b52094008e00fb00e700bd70fa60d850b6308320611040d00ff0fef0ddf0ccf0bae098c076905ff0ffe0efd0deb0bda09b807850542020e00ac0d9a0b78095607340512030000760e650b4308ef0fcd0ebc0dd00aa0050f00ff0fda0fa70e750b42082006e00fb00e700bef0dcf0aae098c07690517001000ff0fef0ddf0ccf0bae098c076905ff0fef0fde0ecd0dab0b8909670734041100f006d000b00090007000500003090207000500040002ff0fbb0b770700000000ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a8009700901002002310341045205520663077408960ab80cda0efd0f86098a038a038b030200d209b204810260004000200037011500040003000200ef0fab0b780800000300ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a8009700904002002310341045205520663077408960ab80cda0efd0f86098a038a038b030500db0da80a870965064505230337011500040003000200ff0fbb0b770700000600ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a0707002002310341045205520663077408960ab80cda0efd0f86098a038a038b030800de0fbc0d9a0b7809550633044e003a00280016000500ff0fbb0b770700000900ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a070a002002310341045205520663077408960ab80cda0efd0f86098a038a038b030b00eb08b9079805770456033402800f550d340a04060304ef0fab0b780800000c00ff0ffc0ff80fe30fd10ec00db00c900bc00db00ca00ba70b800a800970090d002002310341045205520663077408960ab80cda0efd0f86098a038a038b030e00b408920872075106310531046e0a4c08480528041603ef0fab0b780800000f00ff0fef0edf0ccf0bbf0aaf09af089f07bf0cae0b8d0a7c096b085b084a0710002002310341045205520663077408960ab80cda0efd0f86098a038a038b0311000000ff0fab0b770845063404230311010000ff0fff0def06bd029b0479030000ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0100ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990202000000fd0cb808860663044101300020001000ff0fed0ccb0ab908a80595030300ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0400ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990205000000ef0cab08670345012400030002000100ed0fcb0fa90f650d530b20080600ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0700ff0fdf0fbf0f9e0f7c0f690f360f250fff0dfe07ed06db05ba04aa03990208001201ff0fcf038f044e003a0128010500400bff0fef0cbf05ac047b0368010900ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0a00ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d070b001201df0cad036b044700270125010200400bdf0ccf0aaf05ac047b0368010c00ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d0d00ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d070e001201cc0c7707550544043303220211011101ef0ece0cac0a8a08680657050f00ff0fdd0dbc0b9a097807670645042402ec0fd80fb30f900f700f400f000d1000ff0fdf0fbf0f9e0f7c0f690f360f250fff0cdf07bf069f057f065f073d071100ff0fea0fa70f860e530b31082005ff0acf079f046d003a001700f20f42090000ff0fea0fa70f860e530bff0acf079f046d003a001700ff0fdf0bbf079f040100ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000200ff0fea0fa80f760d530b00081005fe0dfa0af707b50573035200f20f42090300ff0fea0fa70f860e530bfe0dfa0af707b50573035200fe0dfb0bf909f7070400ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000500df0eb70f740c5108430521021101be0e9e0e4f0f3a0b25081005f20f32040600ff0fb70f740c51084305be0e9e0e4f0f3a0b25081005ef0fcf0f9f0f7f0f0700ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000800ff0fea0fa80f760d530b00081005ff0fde0f9b0f680f470f350af20f42090900ff0fea0fa80f760d530bff0fde0f9b0f680f470f350aff0fdd0fab0f8a0f0a00ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000b00dd0fea0fa70f860e530b31082005aa0f770f440f220b00080005f20f42090c00ff0fea0fa80f760d530baa0f770f440f220b00080005dd0faa0f880f660f0d00ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d000e00ee0e960e520b3409240612041103cc0c99095505330322021101f60f13050f00ff0f960e520b34092406cc0c99095505330322021101ee0ecc0caa0a88081000ff0fef0ddf0acf07af058f046f045f02ff0fde0cce0aae079d057d026d0011000000ec0cda0fa80e990d780b67095608050666068808aa0a870da80fff0f000000009f0ddb0fa90eef0ebe0b8c086a064301000a000e750f650a870dff0f0100c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c02000000df0fda0fa80e9b0d790b68095708250517074707aa0a7a0c9c0fff0f03000000ac0fdb0fa90eff0fce0f8e0f6b0f46085b0a8d0caf0e650a870dff0f0400c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c050000007c0db50e850c79086807480536053004000c550d660f990cbb0dff0f06000000f00eb80f960d8f0e5e0b3c080a061604330377079909650a870dff0f0700c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c08000000d40fda0fa80f8a0e590d490b380a0609440655077709890ea90fff0f09000000a00fdb0fa90eef0dbe0a8d075b04210439065d088f0b650a870dff0f0a00c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c0b000000f00fea0fca0f990d780b6709560805064c077d08bf0b870da80fff0f0c000000bf00ec0fba0fe80fc80fa60f620b5207af01ef06ff0b650a870dff0f0d00c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c0e000000c10fd90fa70f680a3709370826070406110a210b210f6c0c7c0dff0f0f000000ec0cdb0fa90efc0ef90dd70aa70842028a0fad0fdf0f650a870dff0f1000c000d000e000f207f50af70efc0fff0f7e059f04bf05df06ef08ff0aff0c1100da0fb80f960e640c3008000f000b0008d00fff0fdf0dac0a6d064904130100001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c0901001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f0200b80f970e750d430b1008ff0fcb0d970ae00fef0dbf09ae0789005700230003001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c0904001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f0500b80f970e750d430b1008e00fb00e700c9c0fef0dbd0a9b089f005b00140006001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c0907001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f0800b80f970e750d430b10086d0649042702ac0fef0dce0b9b0856053403010009001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c090a001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f0b00ca0fa80f860e540b2009fe0fcb0d980af80fee0fcc0faa0f450f240b12060c001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c090d001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f0e00da0fb80f960e640c3008960e640c3008f70fff0fdc0fa90d750a420710030f001101ff0fff0dff0aef08cf08af088f096f08ef0fcf0eaf0d8f0c6f0b5c0910001101ff0fff0dff0adf09cf09af098f0a5f0afb0fe00fc00fa00f800f600f11000000fb09e704d401a202820363043304ad0f590e060cfe0fcb0ca90a760700000000fb09e704d401a202820363043304fe0fdc0dba0ba90a8708650654050100ff0fff0bdf09bf069e056e0007000505ff00cd009a00680036000400000702000000610f550d550c460a360825061301de0ace057a04ff0fcc0caa0a770703000000610f550d550c460a360825061301fe0fdc0dba0ba90a8708650654050400ff0fff0bdf09bf069e056e0007000505ff00cd009a00680036000400000705000402cd0dbb0c990a77095507440522049f074c070806fe0fcb0ca90a760706000000cd0dbb0c990a7709550744052204fe0fdc0dba0ba90a8708650654050700ff0fff0bdf09bf069e056e0007000505ff00cd009a006800360004000007080000006f0f4f0f0e0e0c0c0a0a08080505f00cd009b004ff0fcc0caa0a7707090000006f0f4f0f0e0e0c0c0a0a08080505fc0fea0ec80da70b8609650754050a00ff0fff0bdf09bf069e056e0007000505ff00cd009a0068003600040000070b0000003604350324031302130102010100f00cd0098003ff0fcc0caa0a77070c0000003604350324031302130102010100fc0fea0ec80da70b8609650754050d00ff0fff0bdf09bf069e056e0007000505ff00cd009a0068003600040000070e004007ec0adc08bc098a077a0858072706b70e660f560aee0ecb0ca90a77070f004007ec0adc08bc098a077a0858072706fc0fea0ec80da70b8609650754051000ff0fff0bdf09bf069e056e0007000505ff00cd009a0068003600040000071100';Purpose='23 fighters x six 96-byte literal MvC2 palette blocks'},
@{File='mvc.06a';Offset=0x04726C;Before='1c00c4811c0084821c0044831c0004841c00c4841c0084851c0044861c0004871c00c4871c0084881c0044891c00048a1c00c48a1c00048e1c00c48e1c00848f1c0044901c00a4901c0064911c0024921c00e4921c00a4931c0064941c00a494';After='1800004018004042180080441800c046180000491800404b1800804d1800c04f1800005218004054180080561800c0581800005b1800405d1800805f1800c0611c0044901800006418004066180080681800c06a1800006d1800406f18008071';Purpose='fighter palette-directory pointers for ids $02..$30'}
)
foreach($P in $Patches){
    $Buffer=[byte[]]$Entries[$P.File];$Before=ConvertFrom-Hex $P.Before;$After=ConvertFrom-Hex $P.After
    if($Before.Length-ne$After.Length){Fail 'internal patch length mismatch.' 8}
    if(-not(Test-Bytes $Buffer $P.Offset $Before)){Fail ("{0} stock-byte proof failed at +0x{1:X6}; nothing written." -f $P.File,$P.Offset)}
    [Array]::Copy($After,0,$Buffer,$P.Offset,$After.Length)
    Write-Host ("  patch : {0} +0x{1:X6} ({2} bytes) -- {3}" -f $P.File,$P.Offset,$After.Length,$P.Purpose)
}

$Patched=New-Object 'System.Collections.Generic.Dictionary[string,string]'
foreach($R in $Vanilla){$Patched[$R.Name]=$R.Sha}
$Patched['mvc.06a']='be22d6cf23d84a12e3520e6c344dd974141c7b730aa58a1295ffa6df1eddcc0a'
$Patched['mvc.10']='f21f3a8881734f844350e9063b0ef8164cdd6edbafd7fb68c37b08d0b7980969'
$Patched['mvce.03a']='d69f8b5c05d745d899377cddbb9ccd4b39af698ec8cf565db6cc634a7a97de2b'
$Patched['mvce.04a']='d7aa82828984f939b09569c79d62d77b65a05f1af9f7a1a2c8179f17ff13b37d'
foreach($Name in $Order){if((Get-Sha256([byte[]]$Entries[$Name]))-ne$Patched[$Name]){Fail "internal patched hash mismatch: $Name" 8}}

$Directory=Split-Path -Parent $Source
$Destination=Join-Path $Directory 'mvsc_six_color_v1.zip'
$Receipt=Join-Path $Directory 'mvsc_six_color_v1.receipt.json'
$Temporary=$Destination+'.part'
$ReceiptTemporary=$Receipt+'.part'
if(Test-Path -LiteralPath $Destination){Fail "refusing to overwrite existing output: $Destination"}
if(Test-Path -LiteralPath $Receipt){Fail "refusing to overwrite existing receipt: $Receipt"}
if(Test-Path -LiteralPath $Temporary){Fail "stale temporary output exists: $Temporary"}
if(Test-Path -LiteralPath $ReceiptTemporary){Fail "stale temporary receipt exists: $ReceiptTemporary"}

try{
    $File=[IO.File]::Open($Temporary,[IO.FileMode]::CreateNew,[IO.FileAccess]::ReadWrite,[IO.FileShare]::None)
    try{
        $Zip=New-Object IO.Compression.ZipArchive($File,[IO.Compression.ZipArchiveMode]::Create,$true)
        try{
            foreach($Name in $Order){
                $Entry=$Zip.CreateEntry($Name,[IO.Compression.CompressionLevel]::Optimal)
                $Entry.LastWriteTime=$Metadata[$Name].LastWriteTime;$Entry.ExternalAttributes=$Metadata[$Name].ExternalAttributes
                $Stream=$Entry.Open();try{$Bytes=[byte[]]$Entries[$Name];$Stream.Write($Bytes,0,$Bytes.Length)}finally{$Stream.Dispose()}
            }
        }finally{$Zip.Dispose()}
    }finally{$File.Dispose()}
    $Check=Read-Zip $Temporary
    if($Check.Order.Count-ne$Order.Count){throw 'output member count changed.'}
    for($i=0;$i-lt$Order.Count;$i++){
        $Name=$Order[$i]
        if($Check.Order[$i]-cne$Name){throw 'output member order changed.'}
        $Bytes=[byte[]]$Check.Entries[$Name]
        if($Bytes.Length-ne$Entries[$Name].Length){throw "output member size changed: $Name"}
        if((Get-Sha256 $Bytes)-ne$Patched[$Name]){throw "output verification failed: $Name"}
    }
    [IO.File]::Move($Temporary,$Destination)
}catch{
    if(Test-Path -LiteralPath $Temporary){Remove-Item -LiteralPath $Temporary -Force}
    Fail $_.Exception.Message
}

$ReceiptObject=[ordered]@{
    schema=1;kind='mvsc_six_color_windows_install_receipt';status='PASS_INSTALL'
    feature='mvsc-six-mvc2-colors-v1';clean_parent_only=$true;rom_expansion=$false
    vanilla_definition='21 dat-official members matched by name+size+SHA-256 in any ZIP order'
    input=[ordered]@{path=$Source;member_count=$Order.Count}
    output=[ordered]@{path=$Destination;md5=(Get-FileHashHex $Destination 'MD5');sha256=(Get-FileHashHex $Destination 'SHA256');member_count=$Order.Count;all_member_sizes_preserved=$true}
    changed_members=@('mvc.06a','mvc.10','mvce.03a','mvce.04a')
    target_button_order=@('LP','MP','HP','LK','MK','HK')
    mvc2_source_banks=@('LP','HP','A1','LK','HK','A2')
    palette_policy='all six literal MvC2 RGB banks; parent/Sakura donor reuse for six MvC1 variants'
    palette_arena='mvc.06a +0x004000, 13248 bytes, stock FF space'
    code_arena='mvc.10 +0x074000, 744 bytes, stock FF space'
    select_preview_arena='mvc.10 +0x075000, 12096 bytes, stock FF space'
    patch_count=$Patches.Count
    patched_member_sha256=[ordered]@{'mvc.06a'=$Patched['mvc.06a'];'mvc.10'=$Patched['mvc.10'];'mvce.03a'=$Patched['mvce.03a'];'mvce.04a'=$Patched['mvce.04a']}
}
try{
    [IO.File]::WriteAllText($ReceiptTemporary,($ReceiptObject|ConvertTo-Json -Depth 7)+[Environment]::NewLine,(New-Object Text.UTF8Encoding($false)))
    $ReceiptCheck=Get-Content -LiteralPath $ReceiptTemporary -Raw|ConvertFrom-Json
    if($ReceiptCheck.status-ne'PASS_INSTALL'-or$ReceiptCheck.output.sha256-ne$ReceiptObject.output.sha256){throw 'receipt verification failed.'}
    [IO.File]::Move($ReceiptTemporary,$Receipt)
}catch{
    if(Test-Path -LiteralPath $ReceiptTemporary){Remove-Item -LiteralPath $ReceiptTemporary -Force}
    Fail $_.Exception.Message
}

Write-Host ''
Write-Host '  PASS -- new no-expansion ROM written:' -ForegroundColor Green
Write-Host "  $Destination"
Write-Host "  MD5    $($ReceiptObject.output.md5)"
Write-Host "  SHA256 $($ReceiptObject.output.sha256)"
Write-Host '  The original mvsc.zip was not modified.'
Write-Host '  MAME/FBNeo still expects the set filename mvsc.zip. Copy this output'
Write-Host '  under that name in a separate ROM directory; keep the clean input.'
Pause-IfConsole
exit 0
