feat(v2): scaffold hardware/v1 frozen baseline + M1 Neural Processor

Begins the V2 Neural Multiprocessor / Dataflow architecture per
docs/v2-description.md, per explicit user request to freeze V1 and
start V2 development, copying from V1 what's needed.

Scaffold:
- hardware/v1/: byte-exact, read-only copy of the current V1 codebase
  (rtl, testbenches, tools, constraints, a representative subset of
  synthesis results, and reference docs) -- verified identical via
  diff/cmp against the live top-level tree before being made
  filesystem-read-only. The live top-level tree is untouched and
  remains the project's "production" V1 (see hardware/v1/README.md
  and hardware/v2/logs/decisions.log DEC-0001 for why copy-not-move).
- hardware/v2/: mandatory structure (rtl/sim/constraints/synthesis/
  reports/scripts/logs/docs) plus the full logging system required by
  the spec (development/architecture/simulation/synthesis/timing/
  benchmark/decisions/experiments/errors.log).

M1 -- Neural Processor (hardware/v2/rtl/neural_processor.v):
- 8-stage pipelined perceptron unit (P_IN=8): input align, 8
  multipliers, 3-level adder tree, accumulator, bias+activation, INT8
  saturation. Genuine 1-tile/cycle throughput, not just a wider
  combinational datapath.
- 7-state FSM (NP_IDLE..NP_ERROR per docs/v2-description.md §6, with
  4 baseline states merged into NP_WAIT_OPERANDS -- see
  decisions.log DEC-0002); valid/ready/data/last stream interfaces
  per §7.
- Bit-exact vs the frozen hardware/v1/rtl/neuron_parallel.v + mac8.v
  + mac_unit.v: 7/7 tests pass (hardware/v2/sim/tb_neural_processor.v),
  covering regular/mixed-sign/extreme-INT8 vectors, both activations,
  a zero-idle-gap back-to-back-tiles throughput check, and an 8-tile
  job -- verified with Verilator (see below for why).
- Real synthesis + place&route (Yosys + nextpnr-ecp5): 0 CHECK
  problems, Fmax 183.12 MHz at ACC_WIDTH=32 (PASS at 80MHz, ~3x V1's
  isolated PARALLEL=8 Fmax of 61.71 MHz) and 176.21 MHz at ACC_WIDTH=24
  (a user-requested comparison experiment, also bit-exact-verified;
  see experiments.log EXP-0001/EXP-0002 and benchmark.log).

Three real bugs found and resolved during M1 development (full
diagnostic record in errors.log):
- Two independent, reproducible Icarus Verilog v13.0 scheduling
  defects (ERR-0001, ERR-0002) that silently produced wrong simulation
  results for standard sequential Verilog -- confirmed via Verilator
  5.050 giving correct results on the same minimal repros. Verilator
  is now the trusted simulator for hardware/v2/ (decisions.log
  DEC-0004); Icarus's affected protocol-violation check was removed
  from the RTL and deferred architecturally to the Neural Director
  (DEC-0003) rather than chased further.
- One real RTL bug (ERR-0003): last0 wasn't gated like valid0,
  letting a "last tile" tag leak into the pipeline ahead of its
  actual valid tile on back-to-back jobs. Fixed and verified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
This commit is contained in:
2026-09-05 14:06:53 +02:00
co-authored by Claude Sonnet 5
parent 07a48e401f
commit dc0b331d3e
161 changed files with 1151210 additions and 0 deletions
@@ -0,0 +1,313 @@
010102010000000000000003
01010201000003e8000003eb
02010101000003e8000003eb
bd4be50f0018cd950018b85f
ff7afec3ffe201f6ffe201f6
0a733a08ffefd14affefd798
0cc49dadfff87fccfff89d15
1d9b7be4000dc1da000da8f5
518e08db0006102e0005eaf4
020873adffe94b82ffe92649
4586613effe49f1fffe495bb
5dc3db5efffb7993fffb55d4
000d8ec2ffe7b08bffe7cc27
6a2d0d24ffff2aeeffff3f64
9fdb2eeefffd2e32fffd38fb
60e536130005083e00050220
fcbe4fa5ffe9f34dffe9d840
1468468effeefd23ffeee617
c6d8c7c40015fa85001610f1
729062190001366100010e13
3625df60ffe6d55effe6d0cc
6ca9d49afffc4da4fffc3a78
dff589f8ffe8da9affe8dfbd
4a8439c1fff44c47fff41a68
f838cdd7ffe95c12ffe9627d
7c11807d0019ab16001974d2
ec3d9232001e5c0d001e41cd
e796233d000236be0002496f
75d886370005ed470005c0c9
4b542a430019d8150019fbaf
c6ff8ebc0018ab880018ca0a
0191475a001b17e7001b306e
89a8be3200066e1600068a1a
c4b7555f0000e3a80001144f
d076684effed2df2ffed3782
5640429ffffb8ddafffb8a58
4117ca88ffeaab8effeacab5
a8c8576ffff92268fff95b61
3699aae0fffcb954fffcae5a
22a650990009702e0009440a
01aed7a8fffa3798fffa455e
8f85a70afff59ed4fff5d1a5
75b451bdfff480bbfff448cc
e807fc26000e4f58000e4e18
8dce0e6f001c8f7c001cac04
f212f33cfff61190fff60d88
47e8493efff4c5d7fff4d0dd
90a6ba8e00065c850006a311
06467307ffeb5f30ffeb63f9
df01ea67fffd474cfffd3e51
57dbef48fffb3582fffb2427
d0e0a190000786790007b609
18bf4e1a00000bed00000dc1
4d0c90c5fff9f65ffffa13cb
bd5ac4faffe1c904ffe1b2de
d351238a0005b7e500059986
cca902e5ffe4fea9ffe5101f
2aee00f9ffefcb56ffefc862
262d65e2001610e600160bbe
e83c7786ffe45874ffe41a1e
c0d3b71afff8091afff80cf0
158651e4001a1dfb001a0b1d
2528ed6d000f9846000f95f7
818d72c300040eda00042cbd
569a14c1ffe35fdeffe338ae
c65666fdffec908bffec7bdd
8b2b8c8900056c0000058e45
da075361ffe91ba1ffe93a0a
d1b323befff280c4fff285e1
22a36a4efff4570cfff46afe
a2e5e8a5000a98d5000aab47
1806ddb6000ebe28000ec8d6
cc0f01f0ffeccfa4ffeccc88
e1f88b06000aaeec000aad26
f9a0742cffeba0b8ffebb748
dd701d67ffee5b3bffee5796
6ee89cbefff5ced2fff5de4a
f764246d00000bbe0000178e
d9e7ec75ffe6106bffe60b16
1087d468000a1aea000a017a
fb4c4542000408cf0004191d
ad8513ddffebfdf4ffec233c
c857dd2cffedff1fffede613
f58610e00000ea550000ed93
e08d873e000a2688000a179a
5a5805befff4fa3cfff517e2
28be8b00001cbe7c001cb42c
c6b09528fff33d6afff33ed2
5104857c00026c25000231d5
0dcf3a68ffe54401ffe55914
005098cd000fe29c000ff754
0fe227a5ffedd757ffedc7b8
02242eb20012993900128b7d
1c0fdccc001a4bf8001a54ec
fbad7b4d00175e8e0017852c
edf7978b0008510f000881b7
be1290d900075546000761b2
5f82de74000c0f56000bd12c
3fd736d4fff5aa50fff596f1
158cb806ffeadfcfffead49b
f9109392fff281cafff2b030
24d9bcdefff14a52fff14dde
ce987afeffee4aa2ffee5dfe
5bd538e8001d54e6001d405d
e295dbab0011dd3b0011f60e
98d4b1300000c8ee0000cbfe
d20d3e3cfff46124fff46d56
bbb98c4800025276000244f9
6d7d0d280010e58000111cc1
e46e3766ffe429d7ffe433b9
16e45fd0000814130007ffdb
e9c9ca810017828e0017a249
acfb04c9ffefbf47ffefc00f
6214fc7bffea734fffea790b
723a814b0011787a00116d19
931e969a0013e2b70014002d
8070984ffff40561fff3ad49
667a3b760000eb8f0001375d
f5826451fff6d249fff6f757
60be22ba0005dc600005ba54
e7e33a56001b4244001b5895
2e56624300007ae20000a3fc
7e8c3039000919e10008eb79
7ae441adfffbd2ebfffbb080
858bed6700019f650001cff7
a8e6ebadfff8c48ffff8d44e
5fa08676fffc382cfffbdc50
53e41748000a084b000a05af
95cbb6ac001b7bd3001baa42
71eb5c63001072fa00108d49
6fabe1a0ffea6066ffea472b
a71a8387000f27ef000f59fa
4e1173f2001a5d5f001a5c43
29b8b1470004b00300048e92
db1cd7e5fff815c8fff8160f
3b77d220fffbe3dbfffbf988
ff2b8ae7ffe853d2ffe85f2d
141cadb8ffeaefacffeb0934
c1f8e920fffd7840fffd7758
770eca72000f8fbc000f7e32
912cf5eafff65ffbfff64dd9
ec6bc941fff1f3d1fff1dd7e
7279f2e600177a630017b1b1
8fb5eb02000a150b000a35fc
d061af25000046a2000028bd
e018796700012509000152b8
cf68ffb8ffe96fccffe95c2c
da396a58ffefb77affefd374
d1c5447dffe4cff6ffe4fbff
5aa1bcef0016b20400169522
5385e2c1fff43347fff412c8
a470fb25ffe95c3dffe93344
7ac9d65e0008739a000849f8
3e9b54bb000e8812000e58f8
53ad5aedffe91c99ffe8fb02
53718c9d00072b4f00077cce
5aa84e25000a86f0000a7346
8a6f14d30019a19800196aea
a30ce8ee000c3c3b000c398f
541bdc500014c30a0014c0a6
dd7e2e2f001df291001de9c9
7f70d3bb000c6d70000cb121
d8a0830ffff605ebfff60d98
e8f75f56ffeb152affeb35ec
b2116cd8ffe82a97ffe81489
e8c8f3f400195f5900196535
c9ddc1cc00156fe100158432
05eefe06fffd2a9efffd2a38
c702f4dd0018d2140018d346
fe905fe5ffe6ecc7ffe6e3a2
c839475afffaeea7fffafb25
1eb92900ffebe60cffebddba
3387b1eaffffbcbeffffab6d
375319a6fff841a5fff84ab0
37c0abaefff16e10fff17b8a
58e15d9dffe93e90ffe90ff1
0608f0a9001aa3bc001aa95c
57387ae8fff4dd48fff4e4e0
d50c7bf0fffcf9eafffcf036
765f6f0affea3899ffea68b9
779ca35afff142b5fff0f387
e52db31f0002538300024571
79b4bb9dffeaafdcffeaa69f
4df6a2270011b9e20011a88e
83fb97c70003759f00038f71
c5e953a5fffb076dfffaef39
e36e3631001a7e88001a7c68
c60d67affff807a9fff7e420
87cdee52fff7c6f1fff7d948
4007693f0000b1550000ccec
cb59e67c0010e45f0010c55a
ab126a5c0002c8890002e8a7
ad0ecf19ffeefeafffeef55c
1594631f0003f3ec0003f70d
10bf6e4cffeffeacfff01b44
f6bce59b0005f4f500060244
dfb3f459001191ca0011978b
6aac6ba2ffe8eb95ffe8a183
469a77b800132ee60012f18a
5f4c0e11ffe80987ffe826a9
ed07ed3bfff57238fff56d52
4524a14d00092d6300091a84
6da73ea700016bce0001305b
036537880015f6980015ddff
4b1b177bffe95188ffe9647e
516bee000010b65d0010d838
2c2e483bfff90577fff91df7
52c79733ffffd4f0ffffadc3
9a8876bb001cb489001cc48b
d017936dfff7513ffff71e86
fe406099fffbb688fffb8f68
4d41a9fa0000bc040000d19b
2be3b042000217d70001fe58
d51ed089000aa2e3000ab429
15543321fff9c073fff9cdea
00b0456a001e3125001e4db7
a9c24f5ffffe9ae0fffecd43
e4b540580010ed9500110bc9
9914566dffe30f0cffe32b9e
934b5c8d000f5e20000f14dd
01e8e447fffcc85afffcc07e
b186310dffff9006ffffb829
9531b440000b8d06000b658b
5e91ac9bfff8b9e8fff8b24a
e2cf86cbffe290d2ffe2afd2
352a774affec354cffec6064
1b28625c0011bcd20011e442
ebb924d2fffd973cfffd9697
f628063200112e2300112dbf
f0ebd212001ddcc0001ddad4
9809356bffed82d6ffed9555
87760c65ffe82b7effe7f874
7cf12f75000e27a1000e35d8
7818690b000afc7a000b0c3d
cd8003b3fffaadc2fffac65b
5cf076df0006a1de00068ce8
87bc0071ffed22caffed42ee
1d5aef1cffeb76daffeb7f30
9405e60000096b2d00096911
cd803798000d550c000d5834
78ae10bcfffe5296fffe27e6
6fe3d11600035f2e00034e91
00da01e7fff76c6dfff76c54
7425d4d200066b9d00068449
fc98810e0004c82a0004c2d8
43470923ffe6f196ffe70566
e2dd1fcdfffd17bffffd15ac
dc6c6a5effe7135affe72b16
c9bafe95fff5f191fff60171
77db3bd00011a4f0001188ad
c247cd16ffea3ce7ffea2753
3bb375b7001b8a72001b5756
c7e3b109001cb08a001cb438
ae22add9000c1902000c1ac3
7add47470008b1aa0008b4ad
0c1c78f10014e7ff0014e247
5f0af63e0001410f00014259
b95a6ed3fffbd619fffba9cd
7e0dd8e9ffe38120ffe38b1e
8d444401000dd383000db53b
da03c35f001a5a49001a4334
0d57fd99001cff2a001d04ca
d3857cd7ffe53c59ffe53e1c
f5fc0382fff33391fff33243
7b6ad9ab0015dc2800161c09
3ea59fccffe617e6ffe61590
6a652d35001a821f001ab542
c1bd05f600086bbd00087c08
3fa3eea30010d1740010c11b
07a3c41c000783b200077a97
83ab4a06fff31622fff3415f
1400aea700065e2100067aa3
6ab0674b00110d1300110a20
c844a0cffff3c843fff3cbc3
bb00e5b6fffc80c3fffc8891
6cff3413fff42402fff42772
9915a9bd00060cc700061b19
2e49e366ffe59e12ffe59fa2
eed43421ffeb98d1ffeba29d
54c74021ffe6825dffe677e9
49f501c9ffe38652ffe382f8
8ffeae58ffeadbceffeac080
ea49377c001a73b8001a8816
8a329f4cffe45d3fffe42967
89ed38d600123321001232c6
b8b9e67effe20b06ffe21232
b223216a000977ca00097aca
a8f383b80017099900173139
26470afe0009ac5e0009b6d4
fffb6c91ffe39120ffe36251
0caa4684fffdaaa7fffd84b7
5abee23cffe3c639ffe3a7fd
9db182baffe35ed3ffe39fd4
6e185e55001d0bc6001d354c
b59259a6ffe7d780ffe7d870
de8de9ff00145872001467cf
d730383e000a1aad000a208d
6a621909ffe83872ffe861e7
f156d0f9000860af00085cf5
3ee2b8abffeafed9ffeb0f7d
a401d9970008d79a0008e73d
7ef08639001cf4a3001cd199
25fe55bafffa5738fffa3fb0
808080800000000000008000
807f807f00000000ffff8100
808080807fffffff80007fff
807f807f7fffffff7fff80ff
808080808000000080008000
807f807f800000007fff8100
808080804000000040008000
807f807f400000003fff8100
80808080c0000000c0008000
807f807fc0000000bfff8100
@@ -0,0 +1,313 @@
0101020103010401050106010701080109010a010b010c010d010e010f0110011101120113011401150116011701180119011a011b011c011d011e011f0120010000000000000210
0101020103010401050106010701080109010a010b010c010d010e010f0110011101120113011401150116011701180119011a011b011c011d011e011f012001000003e8000005f8
20011f011e011d011c011b011a0119011801170116011501140113011201110110010f010e010d010c010b010a01090108010701060105010401030102010101000003e8000005f8
de6f407d1a76fd194d997493175c283612cccd068b10f8f29916e0a45e07c2becb2b22ce16cd58ce1c75a47567c1079d4d1efd5a60cade2e0484d3c09cecc4f8fff7b5d9fff73e0c
b9e11f2f5d61b449753f6eb40d91ecd44c54b3c748bc32f18a6004ab71ec79762fe9e271aebb07e82283f68d59d37e286766a5f9a22d794abe6f3c61eeef2384ffe34194ffe39105
24bbeffa5eae61cf97e32dd6238637b46e3d9580f47e063f48dda07c0a28278e2b83fdad756f4edd49ceb264c6aef4cf71b5008fe37a679a283db15f3f9b04d2fffc9c4afffbbfd0
cea51e5a6edeea1b0bbe4f675107ff6c18792f6a41428cde5bd450f3c48934f2f5c5c841f51f19ad9a6edaf164a20c199bdae700f5bb884191569fdc39a5e831001743760017129f
447e9a0a9c1e11528463cc01e763141ae3ccbc18c609248308ae0c0c783f09a8cf14159a9eea7b977c30a25b3938d9badb62c58f08a0f616508a5f17b515638e00010ac300007eb4
f395bed3d1236409be3c54f008a2cae4d068d26f2ffd212a3ed29b3d24989bad9356d28e66c793dc3235b59df2931323a49b7fbc9d1e48f58ac51c8242c1cc2d001cbf8f001c8890
b76195624ccdba61eeacb046ff900feb078c8fd8951342380de3a3582fdea5d4f6e93123e4b892815c443c19d7c655608e75d1d6174c8cf2cb4b3575366ea1fcffe9643fffe971ce
98ab7bd95ec4a5dfb97e7e32e51e627a99297b365a5a500506d3b4c4dde1d1965ade6643d9df244b7b5d023404e89e5d6726baf68780f708a588e56a5ba8e933ffedbde9ffeea900
0bd1b328532fcb24b26320b4faa2da2ae709d18506d5bebe35addea26386b3077f5c62d7a18d57697f114bdb854e99d693cbaa063912e06457f1742335426270fff5806afff5e2dc
5031b525f6ca02523e726b7c600cefeb7c20bcb21897ffcfbd7c25703e65298085678ea0d58b2f497005fe7abda1561f34b84aab25dc5a87bfc94b8ff2d66fcfffe8239cffe8503a
2e756bd6b569fcb44695d5a7e967845c88a729c2b32638b31f8a850e61ecc38ef8bcfd8f60e355d1a233242619a94f7c0a498bf5379a78dba461cf617424db35ffecf34fffec445e
d53f7efec8a0295535092101305b829174f792840bc3e039330962239ea7b3cabdfa1d97a5d070337155f00753eab535e9615701e022f359aa2ef87079cb25b800198432001a31cf
96acdab91625f2833c4602f401cc6c030bad3e2b28717bc0f6b421efb0d34960a84f59846f6e16f85a4bb0fed5aed21436038b6e12ff0132b10d3db761356d2f001b53a6001baf6a
5b73c2523581c423b0f14fe70876baeb49104388445f7c01bf0202a510cb548a7b1e7cc020918f884807cb96ce7bfb58192ef9645ff41d3a9afc29d49ffd19260002477700022bf7
2a977fc8cad0448e8bceb6600b4e48bc48d08aca59aca19e79645aeeaf1229dccf9587e23c5217f1f31fbef70204d4960dafbbdb614bbb877b4e24012a02420fffe8bb68ffe949d5
5bad567f113b1ac52364c3514babedb9ad875b0e246f63f1747f97d99a08f5c468fcc1ce5fcb658a52a481ddad343cd9d24f2c4cec0e13b7f9c3500bb7b8640100171f6b001744ed
a684fa51da60c8ce6c44f46a43e14139f893e6f916c170c9394c36a898d461fd14fdc5076463cf1941ac56a21aa19fbda53645ff3016c3929da282e054c405b8000740f900079fec
cf96697c9cb116efb08450b30d4777a2e2516226141e8646e82aa4e24794e1b732e0b37038be0a940881b5c6c4a38633e72905db55ed661ce97560bdf11097ef0010b1210010867c
09a1404ab4535617c8d9ba20ae29fbf1bb4808375b9a061caf87fe32574bf1001e23edebcc676bfc599da963990d484439e42bb697efb4443782ea85ab678b80fff04d54ffefe96e
1af40daaaff360794ead7f46f4dbe4bb097d7d85ff329696d980e31f204213c30b48eae190ba936614c66afefb2a0fac17bb4dd7d76b17a5878b1b3dafb1a53d000a178b000a60f6
406aea06148f7068984b6911c69ee1dffc24c896721c717955e7fc773fe3dfed4e8d56a179bb3528cae7e156c42a6d9e870465de092f9dc57da595905046fe500015307e0015484e
afab6b57caf42641345a36adcd74edf86ae933f540c81453ffafb40da0931c337bb8251bf4d2f6e5d267094d24081e6693a1dc668b94fc6a1f6c0855cf6c36f6fff22ddefff29fcd
51ab7cda40769028bd64cde6e1197684c59f8ed7feb70752a6f1d18053dcba255bc5060ba88bc157d68ec40a276b6220f2d95478fdd6f251b02b1db957a29d59ffe19fcaffe15874
cb95865a76b7f7ace2f96fb9729f09f153292ced7500046367f51ad0d3051f133f8f845945f8dd1e20bb667812f7af80adeeee06901ef46e5829ecb6ba8a50fdfffaab80fffa5a4a
99a46e0e4821b899523a627bd40343ef245c0bc1b1b116977e68e95fba7a31805139949cf8474d35e26187bb2a40e6d3b172756e4f1dd6ceb6a5e3842da97e06fff2ffe1fff442c2
f592a840cce640cf6439978357cd0cbb263d3154c02dda2d8d0b4d69fdbbc5c8ec0f8f20d29acfb70f98f25e65c65078ee98e585a0d4664d2ea83f22f25137a8001720bd0017a618
32521f8efa60406d89228726095b491d711782a837df537391ea814f2b6205349539ed67900dae49615f9de27e2a64503adf777d0b940b15644b5f15df930bb3fff382d7fff454f1
9352cbfed7fa252bd7f1b773b39b8e3f55e665cd8aa01b139720e394287934576500d4b612e068d5ea547d859c9ab893919426a9c3236d65093a227bf1435242ffece1c0ffed43f0
03f2462f86d1b2cab49158e7da3803f8597b9fd00a99e0d215f161cfdcdf24c960e488e97d210a40389375c3a8b97c9e11dfd6f4b83bb3bb587364f837d5d3ddfffd7743fffdcfe8
97f0447225d37bb812311dd0658bffb8af4da8f3f2fbfb1f28a7f2cb48533ed1f662b4e3c2b2a6e8c186917de6ecb6087b04e3a5072a16682ad8bc0ff9261a81ffe9f722ffe9b538
55d2b7e459f899506e8a48c285f8acffba72b44e766b8a4a1eee25cf317e6ec21f8d20050602240774e5818e06202cf640bfa0666a511851357dcad17f2fb8f7fffeb532fffe677e
4b11987d3ae4690f8b9fc1a36d0142d46f4f4b08e672117d371f1cb6270097dfe8b05cd0a1222dd1e305c268bff06120113fb992c6f2b1e64dd8c47cc4f3e228fff85f8dfff8723d
89b46dadaf83ce3c6f7f7900600beb1e31a684cadc9ab1c3a64bd039a9d937f68c82d9462d89b1762ad246b4f24024d91b6e4a0dbd4ef9756c816ba0751b8bb2ffed49d5ffed4859
02764cece219022cbc818fe241da8ce440f2ba244b78e33558f98a2725a8a374e4923aa754d1d56bbb2563c303a51e86831d9fb3dc8c3b90b741039013836a9b00066b7d0005be96
8e059679b65d4f1e62c2e1a80d320acf0b588abd863211453126f38cdd3dca78ab221eeaa6171d81f4ca7e7ccf3f2b7936d4f704cd2ceeb1044dd98ca381bfdc0017b61a0017bfa2
e3d5cd54418faefd3853fcce257ae7b2eb592b4bff3da32a54af9715c5fa56f914a0893da30464d095a853b1cb32c5b2618cb93feb1401df27e4058040bf1c8000051b8400046846
694f4b735c99250661fbddbf51f177f945c3fb685c02d1affd1b6c82b9584d53a486ebd9d96b96acab90eaf2b07aa05a8b1a0578acb65c6bcf0b25af22437c4bffed4774ffeda13e
181ad1eb9b1ff4d382924cdd44225e2e78f0d9bf86bad591bbc1aa3ccda9d9fd3a470b621f6ce0f668069929f10059a69a7ebe3c1d42993d8b961045ff2bb208000e67b7000ec345
9ed7e155b192eb18210d969c6e41716a66ab960bac47a81f5fdd3a479965f1617bf71cf0785e8f9ab0b3088ae0b3d40cd769645acaade51f56dd00629d656ba3ffeb6164ffebbed0
20d2c74071f293fab03b38972adb3235daf9aaedae1b356c5eb928b201ae196e836a96a8dfcc1b88bb5d6128cb49f348fe1b7629ffcd43354c29a77d9f6fc78d0001e31f00015ebc
09564232466f2c7b7e40122a583acd44e236ed8875322e831f2949da5e1b2793e45211c3afca8fac2c5a9e8703eaef58c7ae421b2a3667272458a98e7b5de7a70008eff9000a4db9
031fec28a8652ad21cf6fcc40b99194fdedd9f3ddec0cea3132ff410eca34a3d72d38b9edb76712810b82bd19c7e4022aed000d4349ee2972651ce91eb4ff948000dc73c000dc671
9a3064923dfce471280d5cf09518a2793ce625aca6e3e08df7d6a1bce5b8bb45cd699fdf6e20a7bb76746754edf4f397722d048358d119b9d3f323265b573fa8000ec3bb000edabf
52239aa6b5c1b18da6d4d0a64de30a3a11de9b34ca7d73a2eb13eec6eb2d1a0c128de076590ca02ab9384a1276873dbb01fd8fea979877426a6b1bb352000a400001a66c0001cec4
013c25c698b569819814a66ffae4067a43bf15427d386d9c461ed4a214f0374edc45dec586b6d2963a5ed08de7fdd151c50e5a22741f86444b1501ce8f962965001853f60018a39c
541a85bcd8dcc3479ab7521ad2c26fbc40a728f35b83eae19e5544b26be8aba4b3e5a28ff34515f71b292971a89471f6d5963e284fea6b6903608dedb201fe94ffe6b70effe73489
acb25a61d06415c563b5a7cf318b519e704550ea5976d7d8383831ed76c62b84cde97d37e00ff55fc52745a74faaa7e94ff2fd8b31578741b2e3b77706a289fd001539900014f720
18c31bbdb49cc9c94cc018aa4f24c5fb06b8562a71915968bd1dbe84b36d3268a98ba01c02228440280543afcc018246c584829ff4cae9593478d7d535e7f3b9ffe880f1ffe8c659
271d3724ab9ee74f9380428a4bee1e3d6c5a060dcb36cb707278d9037d27a2fa444051ed006ecccf1b05ad4b4d4de007f9ad21f09ca0e4b2ee35dcfc113e6ee8ffe3f5b3ffe4bb14
669617a45323c85c9d796da3c79518d0312e908f2e1e3f57d4f1dbb6cdbcb6fa6765d9970f98f436b650847f232c512f3d5b74c08551617440153ef2826653a60009a16500093519
7de236bdc70750a81e1a0ccba5e2c362274e59fed7f78ecb18892211e35359b7388cc6974bfe48cf4e4aef24c5a4d8717de024d7a495c64704f3a7df64bdc3f600053cb50004eb80
4d3e7c2d9c0dc0cdb39589578e28d29ecd8ee535e977d457f3d81dabe0eec289f880ef56d5d3696c03afbfd7f688e1f9e2977a72228ca0f6a5b4db318226de52ffe2d46fffe3797f
fa11c0f689e33fc6ef07da30a06e74470ec6aeb78c6907f4ef2a55bdf97e18d4cf7bb521af244f1aa54d516fcd9861643a823bb20ed519d8504a6b5530f2298ffff5eb09fff5ae4e
3f9650751825608cfe4d34ede2cfea3c22a6ca8b8f39e63157641defd1c200f6c1beacd560b265b60571e81e8834cde43a054558488b59e0e4556559c92deb1bffe34e7fffe3125b
3ff7da022ea49c30137ed48e77890daa2b372a48b36c91e7e91166a4e5af9fd63e05ac8bbaf6d647f5459e6be119ca9f9760d93a0df1fc4542ac7ae5043c7e6bfff2411cfff1d37b
f4840c4822c71c78514c0eda142e8b5064d0241f3b02e17c4b434ddc97edc579e7cc6d44dbe8dbab66f8e39de0b7498a0d82196e8d5282631b94866daf785b89fff46864fff3845c
4397ece9e5cd18da90cd8454b20435e402932fe180d8df003fdbb57533c5b517c32f5a9bbdf5bcbacec33e90d1a45a7c8217948302e46a97a0ce75904085b218ffe283bcffe1ed51
9bb202de3c9223121638c60ccc81d712737b1e1ee9d0bb16291219a01bedf1af8caaa40a751c8e46a0ab29244c182882f2552269e4f4236fbb118a8ca5a5dcdf001b28c1001c1817
4db290886e2443f576644a4705070a30778cf9296f731f0236584aa43b65bed90ae337f0420d7f98616f61bde53b75a2ea95596a38ac7319ddf395e17b6bc6e20007bb4400085868
aeb88c93c49849274692c205e6191c1c8878d08014b1c400bb827311f56537295e5c8802fb12663342432fb7757b94066e9b2ed433fad744f9ee200e7f63770afff08181fff13d50
ff7ffbbaa0d175a00accf05a4d87c018319c800f96f71a85b7aae7bf27ce94115f57f87e01852091deccd0d3dbb450884f5726afd7a6db9ad97b2c3ef95ae0effffdea4dfffdb1ee
c1ead787898bc5f978e5e27e9627b444760b2b82077773a96d45f79659f0c24e0b9f716e25a97c6171873b72852b8e30e15693eaea839dd50de11b3ce60df89600093dcf00094e45
8c19ccdc95578f545f03fbdb578e0b2eb0cf6f2d1ab58e2914db2336a74d9c2948b1737424e3ea6420d72123ed1b086d3be36c1be10886548a46384e53d6224300063b8e0005879e
8c99d7fcedfa838386b99c15a90a4a91a2a524af4409847932d0e837a17b57f2a8e2db435a9858fdc9e2492bc9652dd0ca1580ea95bf7e147af733ae7c9d28cefff30e45fff2bce1
e92f095b2e8a6d38f889394dd8adc5b0c5eb988857432e8f5e48c36ed2e00f139b50341532e226c78e0d3b5a5223f4c29278e2daf263ce8919c207cc54f97882fffc5e27fffc6485
830d6934b8436b27ebd01e5288a03db7d290c50cf1bf03a0d68a3e350e222bd1d40737dc32d2e9707ab0b1bee1fa7c51d6dbb91fabb60189689b19cc2f672d8b0010e74400112b17
51ebd4836efcd343762d81abaf51be46daef4e2030982dffae5bf61c4a1b5cb3f719c9ad003cd8f04e41776f74761a5a6965a28ae62c01eed389ad84d6f4e189ffe45e85ffe570c4
60153a8df135165a55ed447bbe0b8dabf84830eed8c61cfca24bd73653ade73f4259d7263b8a386aaea5e655027f3f364b71be4a9d46b3c1819be4291f2226bc001d5857001da373
e3529f336d3020b33f5bdca78efe8971980e010a3072d1b5ce35b7cfcce7013bd0ee4442f8f04265654f68c678888368810998f3fa2ac381e8568fea1264737fffed251dffed54db
448c32f7eb0946856ca6b681c34d030f71d677ab7cd8485bbb12805e09567ce116fb42efe87a310422348a1b02f04a9c55ec52af6389cbbe2bbfe9fd29e38805000f98ef000e4a41
23d41d9993760b56bab4187848b0102afb311b5027e87c36867f0f96ec47f8d46658c50bc309fa3c1bfb7799bb0be4de0873b35eb3e2f907f0aaaacaa49d58cdfffe4c8efffdf698
3ca3a56dd4fb0b9c788bf8aa08486fbe6dfe3b41a4a86a2aea2c9aadc483ed81782e06a5599579c9737b86f942bec839bc35b254462f03dbfab785640939c3f5ffea9c82ffea3d89
68e07cebbfd3302d77e36540c1b3c6dcfdc223db55af6cc4c61a18926f991fd5c7f4505ccdd25012618c5d80c265a003f62ebad2c83bc9a8420b6b702181ffc2001e1bee001db15c
65813af1f7f64e41bb83352188bcdc95a51d75e51479ce5815561d0754b3e9cbb6c11389290b53567b1ca3d59882d7d327e4d9fae387bd01d88a095eafee6e100003dd6d00049362
fd119ddc189a521fdd497817ae5547348eb15025929140fcc66e5a007e46efc790d8189a450fb9110ce3c8e3ad31a26503be95a5cd3594a887c7508f2d604a920016e915001755bc
f0426c1d588840c99714f9b7fa04c1c3c6ff5f3c446614ca04537704a93b9a7dddf8512d25fb67e0755cf753604b0ebe269170b95b6d357533e377e23df2de4c00064d2400064149
b00a4e8fcc03d4f215d5f1def7f92bc20e5dfadf56a7f2ca7471a1eccbbb176cf470115490553face965515fb9eee887e5be198627706ff2d6be0d20aaf54e96ffe250feffe240bd
046348ed2bc27ce1bb30326abfdcbe6166363200acdb20d7ea967dac22819ad1870b458503655be89beedcdd648151aa24d92a929247fd057444bd53f00cac8afff821cbfff7856a
49abb2529673df3209b6264115a2a7ccceb24eaededb9f01731d5b94416806606183a2d57d1cf125a81b4b75527a62a5655e47ff025abd71a3872c7c46cc5d48fff0c2f8fff0c97d
847ba617d14dc80d3e8a6ce0e50172b72d5d9ab858e76421bb4b87d249df367cace771e002ff3c1b9a0103bab293ca86df5745d5b9ea3cbc7f043e399046614afff4467ffff41174
06f98dbfe1dd09e8ab94168e5d47ea8e1a024e2b081ae47958e3402dd79f4bb362f08ed3c3c1e8754d15dfc1f96cc71f66ffa6f885f52cdb1d31cade337bc8130008ac1800093e44
9ab37f97edabfcd240742aa507299e5c2745179db309b5abcc57810f84dfb994a2357065befb9c17d1437bb10dd3c5da3f81a49d75374628a96227744c98c550fff132aafff10997
55e396d3d8b6428686d6334864e7d692a0d8720731b699e04cd8d7361f2dcce9f9a33950b298a9029dfab195de78e8881f30f0b7a94329c0494f214701bff525000700dd00078040
f7be2d1fbfa80c069e23373b39f43efcebad5905834d2b67187256da157f29d7603e09ff98160e52330b08a7c5cf6f6d934091b83f51199a86a7f053e3c0f098000d97a3000e3556
78f283debbf6c5d7b5beeceaf8cdbc1b8eb0ed11d057ae455486705605bcbe1bbe4e086c8da55b92f0a7fff873e418afed22f8ea993f81034d2b45055adb6990ffedab00ffed5b0b
5a42d462af1ea77ba8f7271b83b0e8045e80b1acd6b2070a47a777f1474656cf3c8e492fcd0bacaf6ba53d4fdf40b3ee10b20abdf79302a3a444b1ee152d11600009776600093a82
97b37ab52aa8a2ba8980ec6566bf58e0e056b81705941fe9fb5c32bee70bd0161c792695dea0cc6bc1593a73b37b2ae97a95861decbf6991d785648872d80a970003dab70002fbee
4e2fd61abfd2d31ac15d8265c2f15be9d257eb0acc947044d1dcc7e34ad2784838745f6133617a57ab4a9a26f9a0e3b2e22ffd4df5a403f1b492d9974aeb6420fffa2947fffac469
f0917324c4a8fc899c3f36c251cd7b6ba80559ce3b502765b1a4716f37046e4ce3879056742414f63a8b04c000799217f741abfb2cc7ec3c652d117f49a8c363000f790c000fce78
3e6e6f2bed5863d82799deed1c3b4fea649668402d0bbdb83da9ee5af4d26749b8816011b676e48b0614032e7cc01b1a004528cf50b8c437bf33ef06f13257e6ffecdf47ffeca845
c29b5a84e22ddb8b1a97370fd5e468ae9840ac147970dcd5130ff7f355a044279c09f1d562d410419ae6193e78db11a002eb7f688451c596f922ad3334a686c20016c4980016a8de
5bae57b0a664ac878fa63f1c2e9161f5e6ceacdbc260d7c6c532df5c4856124bdb16c791ba237ea0d4487b673a259416228577285018f0ea81dc38bcaa1fd13d0014f7680014dce4
a42637dd5f6d2f5d90a18019b0025cf7f3498810a1119ad37a9c60bc514569322d37a83b2e977ecd5be9650d8980534b5fd106e5b51124db5ce8f89114cb89340019501100194bad
55af11f4e538fcec4106be0bc52cd3048f3d90b8972244ada7e19738158483d952512262dd1a2e2d1e43f65cd31bbd1d5900f748899ed0661acd53e5c3d9010bffe27e8effe26517
5431bad805682e5f15abb2c14f09fa2aab415f1b5904db7de8ed732167269c5dc03cb7da02b4259aba728ee891208cc7244dfaf68da8bafee0f19a1d77b1c147000844ac0008375e
14038293ec234f9f90d521a12fd70ab75c939866769b3fc85f1cd0bc9598cf1ea983ffbcc945ebd1bfb3f46c9050d0f4c970edd6d5dada4c46980585a0f06f29ffefbc8affef6a79
3c4f74d39a67efac852dcb7731f23bd5941a15e67d58bfba5b7e30e0e059bba303b84ec76fadfcb9781e5a46bb15817aaf0b2e7c33ae0d82fbbf1e96452bacdaffe21976ffe1d605
e70686017e688cee3537d0ca0112fa47eb923cc99c9f1486adf7181342f3ee98ad464675dbc578d67ab5d3845a7270ea90db8d821ad9a4697f3f0b0ce6fca07efffc28a9fffcb6ad
44055ec45a0988655d9add67d61eecf8e7676f092ae9456a5c47bcc49137155a6b6d300960992fd4149e1cf8879067598e1d4b781e94af18b2342cf090b93449000ab323000ad47f
ed3bb5809fd5e3401d43dc330acd25f17197606ff0ec3c68861ea306fc1eca1e8a26a1834be665d42c6bb7f257ef701f3ddff08ee03704f0335f8be2be74cb290018ac500018e4ce
5652b16f21880add15bbe8c0db0b6302b00d05fff813e06369cab4d10f3052e4712a054f0da5e09294bbc6dfa09666e5ac2579087968860483782997cbd60637fff9e47ffff9f154
272949e936f7191334b6a011b93be51f47f55eda5133531855a8ae51aeb7d2981eeb497afccea2053f2aeef42076eb304b314c180d03d82fc920b6a32fd8118a00176b7700178446
976a6c7310875b768babf02059986023914782bf2668e8825239f38827db02a992a514bd86cc420a5ea0eea0a8fa98384090ed774cae84df4182a01ff8c4fd4f00011ea30001368c
af3c4618ebaef220ff492531b687b2d7ceaf5734b318f3acbe1eb5be3f5014432d02201162d357f88398149b6fb736a3f265ca89746358e9ff903dd1967487180017d21300181c81
a60cd48c16a7efb1cd9c6e183df0505bf02472f2c17a050b45ba28b8b72a9c1155d6a93d39e34232582dcb1e697881685353820aa9f9e587b965e231ea8ff00b000a7883000a5cb3
4cf75d0478dae432addbeb3fe87ad589c75a227feca17badb86fa7c8b368cb6a710c62235198521ae3440915cd2e1a27e1b74bc73198aeda15eacf7efbfdcee6ffe88156ffe7dd2e
ca1c695c16342bcaf3686ac572a8d5f8734e4dc7e9359655dbb440b473e418af5482cd2b3850452983cd2312c64b3383d35aaaa8b51d7ff8901609dc83d0ce24fff05cf5ffefe548
70bdd286d01df2f5d438ed8225d7dbd65dc8b49a11306b95908afde3bed22d2e57f60855929992b74def356b1e86edf64633383442741b102f1c8b52c6f50858ffe90d1effe99543
5de07829862f64b55ea10f1db10a7fe7182f4b8d9b29116857c9f454cf0ac4c27b3fd5b50bb82c3ead92379b29fa382e1a5a612dec1ba7a27559d6bb21a23a8b000480050004824f
473177dff489efb8174c2c344dd0a47f8085e46f8ed60b521356eca80c94543ead4a4f626bdd1382c711b98481d2e4c92b60f6b715edc940fac78179a82b6ecdfff1c050fff1ceba
f88cad13ed6ca219aa2438dbcf729508c976a288b7d2bca388c02c55a63d2ecbc6b9795d61b4cec53be51970bc5ae515c08d8cc187bfe27c424da46008617583000370a100038fd3
e90f5bfb5e1b1482a8492d0e2dbec57e3b2dc831977d8aac205320b9420a3d078e3a4cb0661d0232e670ed87f61c1297af515ff8cf8e4509068fd3f377ec794dffea12ccffe9af32
84a5f5957b4ce9e2328c22c1b959e6260aa9befa6242e0f24612d30edcdbd9c886011b69f85bc724bf1a266807e8ab5eb207d7e7cd721fe57b76bd6fa039606400139d5e0013df6a
19db23e0b243ad05f0465655cce4a71ec287df5d321f2dd9ca30c2d9c2b76e955245528df8e8ce67fd328dc9e78322ba24625aa2c43f79fe3af5969f82da24e900122cd6001220e2
0a11cb6714c43e3588441eb8c06b247a96a25169ee658aa579ecd745b545dcaeba10787f84871f3e08febc90f986dbe7536671bf061d5f0f2cf9a0e3907240d9000c70b2000cf6a9
3d7bae3978305f7e18c615122947fb3215ef99b2bb47689afaf666e33e3ab601bc86f6446e75fd87ed4d4968ffcb2cdfc8a402a0ed1d25ab9d44c1a5aa647f7cffe6dee6ffe79a5e
a868203d258ceaf16d22871ac74170f68e35014619ae6acf67565c6583c6526320537ddeac2cc1a95688a00bd1c118763404918c34a950ba59d0411cae6d8586fff20df9fff225a4
ae55c65ab3e3fe6eb038c5e3009d1942c02023ae6f0b5f1c7d89296218c86779afc7e3c3341e53be90369fc9a5e75190f821134f11c31c5555d96e17ef3a2d5dffeef338ffeec3e1
fec16bb979e317a2dc3995f21eac2dd47a04f97121b6dc6057b393cc88e29de7dffe8df653db73a5ff739c31f865eb476bc5e5cf0b8df2627bff77d52679dec9fffa3513fff983c9
2128d6aa38989c1abc04fff016f08e1c56fd0b3d4c41738e1966b4e0c818d6adbf758362353281bfe642d3c32e01fcb8a120118cafb28a5c93eb872f0e8dc429001c3399001bb487
bdd3baa319693760b1b60b96bff7228d37962f44a6894d5741b3a5f0df921386da3a4f0924ffbcb8cd841023fd5595593117a33cd4a11ff1fbb738b78462e874fffa20fafffa5169
1736e9cad3ebe844b8bbecc00257e4c92a448c9871d5f1bf01b4d3ca9df68f7faed57f25adf65db0b90439d239bdd5c37c6a42f588bfeb51ccae7da2d63537b6ffe9d355ffea0259
c2a9cb3cfb535f8fc381de8b656ba5cd0175cb67ac777159cd00d0bcaa62a74cff09247ceb08680c8a2c2f4be3f078a58282d4a1be3854149dfa73d4e34f64b6001e57ba001e512d
224148fcf8462c6e082285a6d18baf5cc066b2bb02b95c4bf11de9b979bd54d421ecfc43d1dca37652020a9d5297c503836cc86de85626dda44c3ff03702d421ffe78c4effe6e9f1
693d1830d6f400ce916f8fa6c530e564c464065c2fb5ab524a2f2048d0fb4d25f100b2bb072a5e1b5a4f08bd44ca75e4d334ac81ea079f58f5b5da8188cb4589ffe28d62ffe29f4a
3586677460cca3278c6faa81d5cfa272de6c2582c9faa2c6b391477625bbe3c742692572ba62b6be8689d8e9c2c4647ba3d341b6aa3fb17b3f8783b25977132effeca0f9ffed3654
325367e0149703d98f0b37eecbf4a2c800dfb3d9f0a0da6d770862c575711c30bcb2430316003944601d411b641e60ba0c2c8e616a1d965fa3e2f63aa588f6ed000742ee00078aec
49c340d17a9a6f907a0b11c21f199a4cee765528ad0e20ada90177b4f8606b379da813f3afc982761472d6bad1d71551b3c9f09ac6fb49533cbd7fb98b2b7bb2fff48e06fff3ba96
583db083b1824a8ad578a573c671e488b22653d763eeea4e221c7cd22ce5784c74f6a9a0e97507ca927f105a1ec83f85c5789c536f6abac49edde08f6f2a56c1ffff347dfffee6db
c6bbff271d87d7b93b41a9a33771507e5fcc45c2f6f4be13bef0215245055cbb0e93355e19ef6f8007f683048d56cae36b70ac14101e3a5a3d9236547fce6d8f00048f3200047817
e7d01c776fe48722a54385728f4e350af992dddb0f47e60614e1df335054147f52fecc72979a57d46ae8748cc7d1794a19a0a63f9bbf83b5b2eab68269bb9cac0015610e00154ecc
fc0e7f6441b7779707a25de2d4bcd26b7d3969e26469e4c287d9df66c0b4657ec88f0dadd1afa167fe461578917eb1186810fd5be166302ad77c9e81e02b7bc6ffe5ed5cffe6149a
1129650f2a6b2f848b6096030746d05eb879c5906469a7ef28c5ba9b0f3705c1c2ba1f710bf3814c9e0f7c9c929caad25f5a11973869b2c590a9c49f754204e3fff95f18fff9fb4a
3fcd89c3cd28e6d4c2e479197fe60177862d2361455ff35c0e6bf2b1959f187c6976bb902197b9f117bda2f8e24c0e25e4ed50674b4654deb9462750c2836c05001629b60017074a
c947c98d564e58b8e413be80226d7e1fcb6835a8abaf557059f7886ff3d6b57e5b37903c9ad6a3a99b470615f90fcef99db9f6138554173c574dbabeed6dc6ab0012162e00125a57
e07e9ffa85af8506998bb82a2f4cadc3b063d021dc20555a74d10ff24ddccbfebce2af352f64a07989bb2d6073f6d5f00fd9b8525b122f07df9c33eb8325a342ffe54567ffe54d02
8ac23760a245950ac34becc973b503dad6fac17e0366a0fea2834b6b3787222487fee201fbfefe5f5966e170493b7fc841f9917cb543b867b5f98f3967a2ba56fff6df25fff62d8e
07e0c56d039340ee6e7b8ac2c4077b1e6c291782b816aca762853925d8c7f67be04a77ffa1e66987aac5374451889a4c20fd469a4d39ab62b9d353a5ef5e19e7ffebcfdbffeb6fa6
8b6e8208c2c70f1f814141ef24d56695ad4d3764be16598d3d1ca03c0670ac5f040d81e6fe253705812ca8cd1aa422af8a5d65a51b6b09cb7b6545d92bc94f1e00091cb300081989
175afbb65a8e9d76ea8fc0978f04e32f126ad0c96eb07eb45d92e7c512704d9965eb266e1f3ed2fcf15180932fab4a19208a7e713efdbb9dcc8228c4daafbb4ffffa4432fffa28fc
1b732ec1e5e51370919779f704454daba4a46f1e5c897fd68d0f707351324c7dd3cefaf29f5e297172251c380467241ea598aef0bc431556c4cd61d50f1eac1affe5bf80ffe6537e
bd49d5867dbf3b9eac34c30048e1360c1900cb4e31be79a59ea3cf0c976b42e4c5b6a2fc29ea7f81d3f9d9ca45db3986f40c3d06647bb10882511236fa867d11ffe1a23effe0c650
51a811e354f450738727ce9cc5b6f15dcfdb322b92abfd0fe0c654a4f8920eb26334326dfc88076147e65ccdeb9b59eb53eca1fe12f0ca13d6f246f207666d9e000b621e000b6f24
a9e7caec34594420f126decaf07f08a5b87dc365ec0c365bc81a18aa1b5a715ecb92bd793b574296c590cda988ec727935ca63c20b21626b4d61dd2afc763891fff27296fff2ef13
b703337f37a7e696365e375a286dea07dc7a55eb640365acbc02ac8389bbe3a1f56318c5f2b889ef07758f3aeb3cada5d945a10290904a866f831199667bb029fffdb85ffffe0926
d4bcba7cf5bd46c96b7a2b9a0f821f0e3b92334d59cf8940e72b3cf6ef5bf1226f1946507ac0cd6e7e452783a961e2bdfd6780d1893953a5807e7210e6fbc5d3ffeebb34ffee0106
0aaf8887c5ef00504bccfdede8b34d20355ff1308a0fc318f393f8ce6bb00e199743b0da965c92dcba0f4b6a44c691ddb3d874484b64152c9855a73ad156b649000446a0000453a6
748f14546fa6ce11b92a35da96f34431be980a376db154372312215ca05afda37b9e4c9b2ce83ce64e4992cee734f49481ea960295c37115a37dbbd82ff839bf000c2002000b91a4
af138c6a39ac6d0e94d370df8fade4929e186ffd0eabbd2d29e2e07c1632caf6cfab759729f317d53dfa5dd0c97b6cbc434f6d5fad4a39d54d9646d6916bf83d001386800012a05d
19b293681deb20f4e12d790ff7a42e59bec351645cff0a9154556d8803759fc37b2564c6441575fdf540b84c7e0c60b38fa24980ebfe69d2cd98d34d69a3da060016d96c00168523
a8b4e8c39ccf98a20f99eebced2c16684b27e326946881d575d052f0a7af19924a6e6ef9c431710b16f13996fdd9b332ae1ea06853ca4a69f14e6bdd233c0bd9ffe29e06ffe2a0cc
9be9ab904cc2fb39d342a33cc66eceb130c72f4169e94fc3c3c3a2ab97dfcedfd6ab6f68a619155e960ac39e5ccfbeb5ae3bee335ebc1225ff09f8643b36ce9a0011d66300122c35
85151748dfba7e2fa62cda5b01e2708ca9314cb11b5a4fbfff94de09aa5fa0ef35bb4d50a4c22c97feb6fe8cb8396a35b543e417a6698e7e66e6a251e70a9240ffe58672ffe463d1
7455c95dda43d7983357fc6041f78d48131fc36c5f45d0785524548ec308f1ac10cf34c9106f4a80dff2992cbac999071da1f0c10d2512e61cead6d20c3289350008a4420008380b
8eaf1445316afe14a961d9e57851dd28af7718ad90fdf331aea363b2c08e3b844257ee0fe145821235c987dba986e583ad83ec5e2d36ded9b736ff63d6f68bd4000cde67000d674f
67f8a9042a431fb3c19e9dca9cbf54658d5d95d518c11954d7fcb3be294bd2c3fa106f86ac0003a8463eed896a3f2da75ee5c62fd28a095c1ffeebf7454cf7a90006805a000704c4
2643b2462362784c6378aa47fea5a0ef7d9ab6e46a07501122f72a7fe697025845c4a4e8c554d5db60604f2b10822f011a3925b47b33875a605a6bdabb8c79b6001636b100168347
d1c18741ea828d9ceea3ee299f1d31662ec770387cf7f6481432f5bb2bc23f46023ae0a988a36b93fcc27b5649ced648d3f88513c2e423a9649a0b7f489343280013654900138103
14c8bd3e357a851e6ec34e068df85654760599f51c2c33bdf6bc84b36ce47ac0dc419accfca112970832c5cf2cd5d4022e8088be5f2f2e8c17d1b1861ca3f64f000e9cb7000eb9ba
0bbc698a82414ffd563f8d3f51df504f951226eb836d263699dedfa2b4124b9846c03eed72a9ac712611ded85e9a86a141d1753e5f54a0696e73d90685febbeefffb3c29fffa996a
14bd259ea005c91b77329d23ab91577b270fe00c7e6458ee2026a629eeffa79d62d5208b420b5d910423cecb2cae9f6bcd4cd8817e6b58abad575ce15f2ffb47000f2652000f3ccb
023fc71460cffd8aff7b5a8d08a0873b20c0fcfbbde595f11eef4c392f9887559e5935b2bb40f7a4a6511a1f06c4f05d4686e9fb96b320cfeb3f0decf4080aa2ffef1aa4ffee24cd
aabc221d85863a932f7d8d39a8a286a73ea01cab7497d19ff6898ee6edc6ca991d9ee509911b8f272b9216e7b6ca565d082f703ca2f476e9b358ef71d7c60be700194ea90019ac4f
40d2ed1176d80dbd500070dfd95564654ac52665c07352e4c589e02a1660c37ac1acd9e7093f3ab761876ecaa46ae281d31ca6dc2f0353b53cc1584613fe789d000d3d2b000c78d0
aaf7300358114a785b3d4c6a3637bfd42f642dfe1fc804e9421dbb98688435bad7347599bba484210bf123f1053a3704ec766583cb4bc37306204d068b9bf8befffbb5cffffbb961
fd4f9f3e0df5650474b21b3b57b423d98230c76d8d55ba935bbc8aa3fc50a0d5da6248df27fc207f4ba381148ed6e510cae8718fd2219b614b7f1e4f930921b3fff874ccfff7b564
82e47f147a77ecc7d6818dafed1c8ee20e142a0e322abf28af1684223793f44f143709908afb49b358cc9bda07f26b604aed507d054788c908f216acf305d3f2ffeab98effeb6aab
f24239a6aa3db6f322056fdc4b80b7e4c3588d23ce96c57a286fc7700cdad7dd0708f2d92e44808a54233571d1e6b8b54e3fb4c903da9f51d7e9cabbd9a4b9e5000b93f7000bc1b1
ee8c3f277f8090a558e26a640534693c55f817dc728bc2c65a0bdfb205e78ca10c965f54d9799229b7c53181689432cd3b92b7d0be3fd7319dd431cd1561dbf5ffe1e850ffe1cd83
1d5ddbb807635fd7d6861630f68972b87027cfc3c4f0e65d00a5bb954fd1202c73cb0c5bef69e7c514aa09253d90c7c0f862c18d4dd5c7d227f5fb6642726e48000151340001a9d7
f52c783c7b82cc2a8eb498994b45d900971a2b7cc31b6ee61ad5b201075e01bfe72bfbfc0b5bf036a27436d3fee5c964e39959822ead265b163e309313d126a9001e2f50001dcc95
a218f58b90110eddfd02eb05541a49c62c8d762e55754468e1f17e6567a7d6f3c1b5b2d7e5cf45e2539f2e3c3fe570649f2c66cbfcd1eca5609415db01c00b440010214900104721
1e7dffbe4bcd7cf980879f5a4971a5c48ae88ee951e7d153da8efdb7102271ec76b3058316c4289acc1f67928716204609e43da90b0ca7a1696a80010dcfafeffff593c6fff5b3fe
8148baf4f521ee7193abeb15cda017d5df5e1b744298dde24dbbafa1d14edf31af3f3ef0a25f6e4acfde5fd53a516523c3153f2b1e80c0128f849af14b2f68a7fff60b16fff6054f
4304c29ef8c03af4935bed7465f4a2f7d01cd60a40a7871ab06e64e746f78550e12d37ce08f556640d4db9366d0d05792b503f1436d316848677e263d48ada29000a003800093f03
518348ba41828a4e736f52a15a3c9f94a90918128655bf8ff52d552762ace63e7360dc955b5ebbb0914d09968db492ffeff73dec596b18794cba08deb5707167000d1d6f000d58dd
abde8bc0e974c04c4a9fd67489c93758a8b5ff68959bac2e3ea1caa3437cf7e06f1d7a79bc382f2a7768a0eb02b8d3ee2c81e3a724eeffa26431fc09c5e6538dffecda07ffed94ec
f71db82c6b0700d65b25f7949d04292ab4d4d938b62f354974ea3409f5004c92f2b43642334a38e0e3d7c710455d63909121758f370f2d3feb13a2a2988074fbfffb7894fffb8931
1a126b29ad9c1c7241cc132670434d72dd4fb8a51a2f080102ad01e7e1e85424b67fb6d36b4a3089f97a94cb135126f492852c8fe14742658ed71b4f04ec5061ffea8422ffeb8e68
032fb5ccb7cf1ae204afd4b220fac2ab401601539dda1f94d832c1bba79e4d515c4c09a131934ffdb507e899482bbe80d033244d0c294b9578f7863c60957eb60017e5eb00181903
4ca08d8b1e298ebc1c74d86b62b914c76b8c6c60c0d88bfae3714a210e2930a37f3f3a6aff2e2fd02e55c901bbe2d0fdcbd53a315dd8653cd68c27d8aad24cc8fffd3e99fffdb746
9abcf5cc5680f3e71f9f4355c0701ae3c6d94abab0bda6b8a0c07fb3bf7b48d6ca36643a05d6069e5e80b76f2f965337079d838f72748fe66f7a5051eb8dbaf3ffff0df1ffff5d5f
ff7896259c757f5db95017ec958d91bd35f38f54a01cf385faf7f2e727e3e35f53ee7de80aeae4959bb961fec047d01feeaef61981c34995e67c06fc9ff111ba001cb3a3001c95a8
84e0e86f4d252803c379eb2bd26c724d82469d4b8eb416222d6105b00aafe55de24333ce1dd6b2eff3ab711a69b14b3876e9710c6183fb97cf874718b83f9f8bfff23453fff20f95
1c3eaa8c1bd28b0d882bbccda211ef761054fc3551d3903240ff898cffbeb060e0012660b2973ba60890be2201e11dd3efd8ff6af0e8be505e187d033a2b03bbfff06634fff076ee
263825289784d5765a60407fc4e227427561606b4b503180485277cd83b390980f35a68b0d3d9c4325127d8894e78b073cc417c5e34f7d6b30a721cb9c75894bfff0a1f2fff15be1
fec9569702bbeb1fcafbb726d52b195e0987c721a7f3f0122de5b28b3104a563f29fccc897574701fe3eb9dd7d7ac6af6324e0e1806ce9d894b16a4dea720f240009f3ec000a17c6
b42a1a4d8bfd4477301ed9f8680859b8896318b4258f1c72ecc3b7050adfe283ebe7865eaa1203f00911a5bfba5a498b346a180e21bd4e6f6ced69abcdfc889afff87042fff837da
6f5297077dca331fba2c761a055363c56d4e819ea534b58512988f155a41fed6641df4bdb7c8f8712c3972490473826f1e2518d64a7516b05f9e6a3aea5265defff89197fff8fdb9
d4f0e888f30b654a4e5c605b2ad4918a942c66d97e113f4622bf1697b217c7d703b7e5162bb906b324716a376c8e123a1008cae19e050fb74a6ba93d11a99169001d7443001db271
c447371f47e955455d0bbe9a86174d017491b5db086aa5fa1498fcdee8da3f4a1b254d8d1fff70394823fabe7769b7ef935d4aa993ecf3af249ea2612f4f774e001343a80013526e
0732a4388de05743807cc5bc8569c059dcc523c2351e26c77d1f4092928e776e9518e24ec23f4223847a310865dcbd5bbfc26db80a2f17bc43412960d918ccf7fff08e9cfff011ad
5a8c5fe84c4f1eca36cffaed174bf18a392d6fe3c72da331e840c25544c0ca6a2cb42562c55e136a3fe8f83034c837c31f21deafb6a3a4f1876921af48d0dbdd001df766001d3836
3b4079c14a5000b52921a03aeb87960cc31af9421b45faf426137a2440f3f9e2d39e88d35eb92f730d3cae91b227ab17bded159b6e1465b83310f976f85da75a00140f2c001417f4
4e070c1caa773dcbab286a14454d18ac32816069d46cf0e8a292f862c3caec00b9821d242bfd4f0137fedabf419f472d2ba1418108c3c01ca185becf2caf9646ffe27b2cffe27bc1
37b7aac5d0db996cb2a25d681bd0613109957f9195cab8eec4d047aac29dfb65ecff0ccdcbbe0acf5af098386de3866b9368357a844364ec716625d32debca9d000659a800061d8e
7ba0516ef5a358c76e5bdbcd69305751bf1e63bfac4c53a1508e4ce875cf2a600cc1b85116d5570af99413718ff35e4f82fcb7e16aac1005391096753cbaf2620018fe2b001870cc
5666bc90246b68b5099e2cb4a36098bcc6f06639e69e5d060c0aa221c7da98dcf60cb03bb5b6d8ac3ef49c554d15578d2151f2dd48b93faed2ef8822242828b7ffe33067ffe317b6
f38cddf0ffb96491b73ce59764eaaaac3ac219c5b94b44cdb2843737b5ea5a53f380ca8105d8fc32fd3b405938dbb6ec560de8c097b23fcfc8c402054cc17c5d00191b1700199d86
5c4eec8c015c21c4b607049f294f59200e5ee57bbd891359fcae6b8d30b1cc5101bfa5dd45e3e842ef4e6ec426e5824310b6b910cf39392ec36c4794d998861a0015a4be001522d7
a3b4acd0dc4b0586f1970463eafc71ee8e88b69a12bdd7113a49ccf68b1b9424d1bdb2627a36972bb83db94860156012f49dd4d332bcd5db079f361a9c9c1a09fff8f771fff968a8
a020cd8fc41e4c6477a7722cfe5279cf494950879e241c7e066d7a6591946de48c4bd3d3dea96b04241af8c917c7fbe69a2a6147d6d7ea0b4fabb024796e7251fff6a9e0fff71882
430ed7b028ceafb4fea21e580df75da704ce6d4bc48cc7903eef7b84591eab7a3e6c0346d40426abeb1ba2aefe0d24e76ed06f83cd93852a50cd83a04821425b001e76b2001e9382
dd082366e4e22c95dfe06d2022b8a9d3689153f43f8e0e1404870ca6f19c4df381f3a8b800ecd1aeda3116c50968245cf566fe34faa9875e915621ede008f4b9001beb88001b8e90
a2a8ae1808e78129aaceb5020a264d9c8d3c789351d8fdda76d18034b24af15d81aec9bce10a49fd99034d595cf106105597c9946b430a7fa193b3299ef92c68000cc7a8000ca89b
6a100453cdd68638bc4762fd62b9515f1b91196e0666c90c91946a4f567bd60c5082ec35ef4d8b0e2302835a7f37b87a4129d0d41988511864077f705f4c9ac1000c06a0000c753f
6e67df070d853e626ffee5f660415e42a8f149196f0d7bb5a2915525d197de02e6f561c401487705abb1d119e094bdb74c99e12c141d94ab3bf0794a053a6df0001555ca0016386f
d0743e66f0a3960266d1bc1e5e6db5a30d648e645ac383052105f14e18a97c0753f7c69ded1b7091b0bf827ed32a200a821fedfd2f546cee0f7a4ac404efd0e20016b0f200163e7e
0d993b07f6720daca7265af3791f3403cec0a1f2059b107e34f0a031a59e1d8f3ae43311e30ab12c89ad158f857e6cfafb481a852869758c22bb58b7e8059660fffee39cfffe3c5a
e304499e3e11b296829a7540ffca28aafff608fc7eda1d27ae8278cb0ada14e6c9058c6a0fb369cf2bd3f7b90b1c9938c5d5d1068ae8eb14bc709aae1f8416ae0011606e00114349
0b64ce02ef1a499418599a3ce159ab1b63d25cc88abed4ea8ff5e110e3c5dcd647cd5b97840093bf2e7cbcd042ddd4bd2181b4333670bcca02ae801eb0cdc0ffffff83e8ffff6484
d7b6faa020a8a80a387c92ccffe38b796a0bdb43f4c6622a08237768b8ff3e3c0b422e3611961d4b7fac0a616378472e385d86e72ce098fa01201d4f25655792fff37433fff3eed3
06575b54433c54a9b24b0c9c16277ff5727b875f272d5563945bc34588c03b600553d0fdba036e4984710d65280e3da3c2149ace966d9a5fed5b1c0f1906218900166d7700161525
b3ccc0c76b2c5818c11f1394ed5959fac2013c45eedc68991c108efe4984b45021e27b435df6e947ee1c0fe6b0cbb81d9770d40340dadd53e9d15c19cec623f40018410c0017fc36
74af374bd13e4d649028f1351dd58fb1963e2cf508ad2bd306a1ab21a86e6d771fd4dd163d4463f6ef419c6cd0cb66994e726c973078b3469c615190956ae95dffe5ea50ffe4fc0f
540095e5a55df701ba953142f4b7c3916185028adf6ae80d9ec0a7d084b7dd40fed49994b6556aba504cf1512f71acf1bb89771c0436f77c95b7ffdf48baa08400017d3300023a7b
ccc6e49ed774cdbc7e356d6485b663d63a35404f2d2f44d8a6a9f4fa62ba1fed29dacb980eca153467a14e8d3edd20c6d5c07bedfce9ae2992587919cb30ccb1fff8867afff8a7d1
9d00ca71df4a2d486c3a10a860a3d9f8dcd64f4d67e56c1520be265ba044f55130ac46b857449fb2ab7b7122727fd10e8944452d6f1b44a0b9c25cf1eae1886e00032cb70002f443
8e18a4756a32519ecaf2a922c5ea5c2ee3d59305383e0dc6757cad575e772df7a146c4e14aee3a85c327cc31093bcb13fabaee1ebe3da47ca032fdea462406ea001850ac0017e3c3
ac579d9c8584047a3f59d70127a44e2d4a350e3135cc499eb772a57d9df342ee1c9d23dc43fbfb96c15f2ffce50772d454df1b1e62e83e5f12bc7fcf2cc2beecfff58352fff5273c
fc162ec2cf36832ef0c5803d0005a409dcc46c13d7b1c4f67e60355ec974ce3c7f753399ebd7d7b8465c7ae16f863970884d9b21bff4f9ba9ff86b4911b9384b001c2fcb001c46e8
26df797b9755534d4491ab8261520b3d67300c83d494056a47147da0f9c88d66b7e6f4e65aaac8ebe941e634c7530ed073d5964c731242116aa4d6f136d696f6ffe78624ffe72c17
c853cd73de9f9170dea2d8bcd882ff4131c2211b8adaba49cf7ec61aee254ea88a5a6b3ef491c35a44584afcca74c207125caa5ec27f877ab44dd84c5e0a3dc9ffea991dffe96f33
1c1b102211a7122becdc1fbbda5cf628bb08c80f2cadac539a77c40976683d789d4cec9ac9b57c8889ab37a643857a575a1beac6abc5f2c80caf1d1aab83b2a4001be7db001c092e
c5fdace7052e12f67e0b50133332875e7e5e8e6ece16ebcdeb606b81ca8a35aed3cbc6db01be33dae879e20ccec78a063bc2292242790a1f994c5d56b50de4b30017abaa00178817
9a2458a152853b9fd187c14d15c3411cd3efa7cffc3da5fce8a181cf0a136b88f6f6265f703ddb1640c7641d758ea7895a87bcef6f13ea94f4a91b41951de896fff8f9bcfff8a33d
9a06c3ae943685ee33c5dca3fcce107f4d2904991219c44be27309a3e60e3d594ddd4993a08b08c31cc19e2bbe1ed00659004bcd4f8afb8c696114a50a1a0ce00008af5d0008899d
f08eb8b8e70dd6cf9bc708d6c01b7432afee3f9d30710a787d99c8647bc40e14520915eb9b5bf8b4f53a3ab8012a966915b33efebaaf76ff681a65fa95737f91fff0300fffef6c0e
68d113eb439d18aa033860de5b33bb749f5637dec021664a4231cdcbbfcb4a9c8993bcfb230da35568035e12b6a97e547395ee50b6732cc8349d72c5421573870007660b0006ac9b
be3155c1132d60178a0d001647ff4c9e5ba9b1a221b9cd49462fb3855564f52a7883bbac248b38824574a9c0d02741060665674c33be1385ce0b3f1101a681b2000ac70b000ad808
ed1f593b0191f74762ae5198c6f854c9a2e51c282381188bb23989590d358d12645b393afcce69096647995c6d2ad8438b84f566540449bd061204d9d6eea72d0000b95200007322
5bcd0c247989ae1fffc66d70ca0ae5fd16d6bfe51a6c708233d034b2964943075764ccc5892faf8d747e17f6c473f86d2190e4747ad72d1122eed943e4c30c7dfff236fbfff1de60
bd30f16e5fb1860d3a44115b1144ed3b0a77678e308449994250b5ac34b2ef75d8d43f3f5087684d76d38ed1a0b296fbed332873b825a4b83e58aadee8e2561cfffb83a2fffb9471
2cabba310c57801bcf3689b65826a92ab59f16743749dba5aed35d09ebc8f17d02a53cb35c7f6cc727eae465bd64b1941ac6a72c9f0cc22ce6d7278f777b6f78001b45af001bc0a4
c009f70cc86c8752869eda06d23a4bdaa5346e3ae0ce58dd18d70057a4b315872cc6648128e3ab01d5bb23687a2967d22978256daed3331aae0d144181cce2f6000227d300023a6f
5cd96b61d4ef5690f236b1eea77605f06fe7641e196ca401949f31f5c736199b436a76adc5c07e0ade8d47b29d41cb72355dd61a5d282b38ca5a626b5fbb3746fff92f80fff920fb
de2fe85c0b23f4544bd607d8580719d00ecb58c5afb31546c4a626c18fb685f1b760d325e245d67c05522118edaa6b6df5c024b2aa3a1fd78c67f105c7dae90effebc97effeb94f3
270a27d729e4403c066e64ca5af0081b529e41d0704e5358f85b420e632b500a53e79aeec1176a6d5c197e8184e94e699004d4cf46c134e2fd56076ae7ade45afff7867ffff7a83e
f73f9419655f2857ce3f8523f313f864193953f9324f3e6ed658f215d44944cce3a622c2c47131d7b1b178617155bf0412131932cab5138bc909a80d22914f0f000d036b000d52c3
f8aa3add23893caf1a9298c02f8cc3f3b6eb0af0b3c4f7c776752760e1b2bc4ca8ae03670da77fab19e8aedca504e72248f96870635d4d27b0cc57ca8992ae68fff6814efff706d8
c079a2ffaf6e442001fdd6e0ad38bee717fceda46411d59a47074ff052f70781c42cff708493ef845981cc36f95c6f059a4601c5825eacf24d723a05acf7f262fff45ba7fff407eb
6806786bb75a8ea8efb2b13d1747cdbdafed31c054bfeba05ea96fb352b8381c208425fb4396ed64a4bfeff5ac5195d102c7b6339c33def40b4a4e8abacca5defff36e9efff306a4
775cd66294313c630a979bc43f648564a648a9bbc314949ba831d560282ee371ec70c9a025033917a78cc198bdbdffab21542dde74b9e788c8ac5a72ec59e861ffe7425bffe7d921
2f79878cf8955f5f46fc9f0a0106887c712080e9133f090a3946ed1fda26b37d5d52aac11c02c1ec88ba3a46633b8e315d0bda1ff21a33dc4b334a652471897bffee9accffef3391
85240ee43df77b32759629c4b3f416f685596fe206a849e07fd3bb62edf6fb14eda65092842be9f102f1cd48e11568dc3ab8b16692df185a040e31520985190bffe62b7bffe52892
b90a924f75335113ad54895c8cb2f85f984b930356b232c86193b9bca230625727932127b6adfc76efd913bc289904a61721cec7763a5aa5f14e87145f5c088dfffe2070fffdb7be
4eafe389c902e6449e296f805e0ea7977d2efe39e5acda398053c16105cf3a871e0c243b2384eaf4fe6fac17f02a2ff21a35741fa70bbd1b91e8d42e520818e0fffcc276fffc41d2
f22f6a02993b58fe54e31c997f00661cd10d9f685320107ea8e489d767eeb95ae1e25d49ea0b4a4122859d0a71f417b118e904baf22ae1e0b1d2e75daa7ebe18ffff77d1ffff1b49
8f7fae072a555badc1680899424f0fa32a9e4e53ef864df6ddeca3ed867288034f8489831e6fb101e6959c76cf21e916949620f4cf6dd054cf3d82772a65d147fffad45cfffa15ba
1220e56b3175095dbf80b9fb876fac57bbc8ca0095f6fd86515a74289121ce0394be933661629f6fa108b1dd660f32f261ac8d9a6ac7f4dac04e3d636d94da2300150f1b0014f91a
d20c8bbca651ed7b92853a2199c1e0a8d444944aebbadbd1756f16eab73c4bf027982bdaad33c7f5a5eb0939ff3b57db9b0f544720c57467bcd4467857fabb97ffee2c68ffeed8dc
69d3129fb4aad644c0994848a9cd4b4b6590d95117e7dcd9245d17df78c42ef124f5d5c592068b251aece26b587d733078349449164bd1fa5b8ef58f7fad99af0016a3c300169fe0
8f3e3abbafbfec6b8618ead0a92ec3b28a23cb07f57174cfea44216b88173024132ef06c36b52e7627e77459e074deef6acc8a3fa0d0fc2820ff167b5f95425ffff7172dfff6bfa9
1b9248069b8c8b6195caf7a2853d74a98e4e54697c762ccc8055eb7b87257e4c26deaa9a104d20a380c94c95bde9d9996f9fcede5fc5f855fc70c83aafbdb52affe4e858ffe4aa9d
2ea1203db8e5c5a39abc6a585fbedbcdc4524b806a908a9f24bdfe040f491459a502baf1283228797e2d5e962cd343778eab5e9d20c5bdd12d2f7914ec8374c6fff69fa6fff6d568
7a4f2c74dcc04abca6b838c2e00bc26eef1e360622fc2d6c6928f53be6907926fdaa5e997d0541ab0aadbeb57480f1526c4660e6d9fe07f0250de07153bd5161ffea5e5fffea63ad
c6e127b6d2622231d09e7600f2d31a4a99eb36b2a426b14ab7cd62afd0b8c5eab0a6612f60fa70c7e47f01869e3e9830d96cf50bed1629c48f3b5a404cc8e51b000490a300041935
e2116239dbeb1874a8fc74a9ad46497d6a0d3315d43133f0111b00b0b35c85d7dd61c0453fffa18693a55b2ead6f8fd7e8a65e8c75ad21275ec1a4d1f5ee2e0dffef54f6ffef42e8
c44ca5383428bce57f4a1a8cb95ba39851b1d27a701d7d7fc16bc4276b49cff17c88e0cb01a7f4a46d2dae2fe1ac2671acff44262ea7714b176c68b39c85c7a4fffa0d07fffa6fc6
4d3a2601c3aa638ffe45246ec00656b0f7d115ca0889985618c2898eb7fdca477fffb78f2ea673fde8c5e4adf3390d8638e26a8c5233de02a6e4f0d786b771e400016a6200015efd
449187563eb2827baa9bc5479870d9f56b637aa328f9d361aa39f26fc2d0062ea6a0cf89875305cb0ce3b49b975121d97162f2f1bbde9cb204bd3ca1a90f85d0fff77dc1fff70155
83a9f0694d86de4945032ff2ce6eba411f650ad527722a94180a8bf6a63229ee11c1e2855212dc77e2892c46f87af8682e88505b9e178d4a76229c6d7f46b1d8000ce3b3000cae9f
fa3a7d500d2736bbfa6f7ac32fc0c013b19acd9be65ddc780016b8b6b4e37f0a9460037d54e3ae57998cae1b824deeb39948c8491c83df092e8d26efbc637747001c9d1a001c2e97
3f126e8d2ac97588407667b041f952af1d06c933b644aea85924b7242d347936ae7e4f1940b0bd23fbfbefdce179133013cb611064478e8ea37f7c313475d2980014610900141737
c9d3aae40b9e9f8ceb8d3dea8c0836842f870834d9c6513c1ccd659e8197935890f4833359633c03b2f4853ed1e58fc4e7bede1bb718317b094d9218ad9b840cffef7085ffefb705
62ba8fadda0af0093866fa631600a2e4409f2e15254169b96b87d1ce87569ba554bd2baac1b0b931a53f1ebc7e7a79733ce43079d5d69dd97a12ed802bd444310017ed080018306d
138ca95b2f14507854c1cf9d4a464385cd1fc69092bea68559e2265289985aaa35210f0a52bbaa64f77c981e56837a2909032f172b58c4d5901807577176f2a00005fa3c000653f8
35fd6bdd3b23f58861edd7aea75d6e13b30cfd0817299055723bd5be0310220871d0a71f3b1beb7056a03934f7552cd3fd4049132cd37bff9aaf7d0e666ec113fff172c3fff1684b
be71febea0d066bc8ce6bf573b565c2fd5d25087c09a320f871f93f5df576c24e97fddb72a0ffde75189fe39264056cf15fd44ee4fd04226af368c117f1a6138fffbaad8fffb6b6f
c908bc944c2967f9a9450e1936229398aa9f0171b6dd0b2b7045a15fa17c2486748e6c5ff82da44202059364f66870ce7cfe2b73f7452d6440a10983095aa4b7ffe7bc73ffe7a079
89aeaf706f0dbb4111e27e1e31d9de1b52adbcaef02955f800c78241e1465bec0be3ab01d2e2b751c6ba8c3ce72ab2a65bbacc0c72f498df1206f822e6c6190cffe74ec0ffe6f98a
6d0babedbd7b6345f888810782ebe40af59458c1f6b9f6df70fdb02a1be43a2015ff3593ff7985164508af001120c2ac2afd3e75d68d6ddb032187d584d837a700187c9800189f5c
72bcbb601961720eabbd836bd3efde76a83c168d368767f19a11e180b759f0a6054a9d1c70cb8c9de09c6dc3746219f361fa4111b5697b5f1466a2a099488d88ffebad46ffeb9015
173696379ffc429e3f823829527f83dad585a23c5cc322b9facb75e3898fe9c5a7170501100ed378261ebd8227921752bb380fa961b50f81da79bc9c3fab3243000c9558000c6686
cd77127811ed6cf01639b142138dd9d288213c72747406a12dd375f26547c7fceda1a165bff15be9f8305703ed9fec94a31786a46d19cc6ee52f10bc7177a793001844560018bd9a
285976cb418722432439b03f65cd3d532dbf1f6ab618fade68ba95c217ca9e841a3f3198318014fc2e012c0a0811d4df4f40506787a581a9aa0d1a5b42276fd3ffed2b30ffed897f
583c2b3a1b8e4a9bffb0c65320a3967335bbe68aa3975379e91661c9e4b815fa45a1dd117500166dc54aa09d054ceddaf6c42d555e60e630477794b7c0c771f80018e48800194794
b176166c1870782a44bd95ba025c15a951f799e8b5345e7d2208696f70ebb1383f66a5b604d0725d54502e2382cfe1c3451b0428c8f7a0484e8518b57341a8f5ffe37e1cffe43f42
24fa2ecd98d456b285df80a4f581ed64daeaa19d9db63e8aa5d842ae0f1565f7bcf5cbb52b93f8d56ad156f11e6b2c8a349ddfc6485f1eb3d374cd6aec3c085d0010d4b00010d80f
b07f4f01e84f4e8a0e097bc1b1af226be8333dc03117127f14241e3a5931c49105830f4415d77a3c02aa60b1fb53f3bf4d0f45a66ce19ee10ccbb91d85f33fb9000545510004fd6a
b07a29488a1789c245ffa39ff59e4e4954777955c03bb73a203b82b66a61d25d8b5e23c7ca7a865c49bd67da9c56a3636d6e691870e9bc938350a0743891c89fffe9ba56ffe9783a
3e225f8f9f8670060563645c472d0b6a7d0e3c23cacbbde8f4c1015ab5dad7ae154cd60f994490127f5b47f68d6a0562c77004369cda62b6ef9c4f7ff05d1be6001ba7e3001c06ec
a4e94bd0f512661dd04cdac5099d4b885d72896f09cc6ebb705e4eb01b4942506e682b24824be3c974ddd07b92928e8bd9ba966c2cba459a0d67137ce428f27a0001992000017fb3
bbc746679d55ab39adff20a6acf879f72eb5306a2551a9588399e8743735ffeed1f6b2f60e12be389b77c7c1916af8e65a41d68aa51334217781e21f812288b9001bfac6001bb24a
c560cecae3f35282fdccfd5ae201846d2702c9648ec7aa4dc43399ee6f383808e2fe925239eaaa565d828031adac86a1c0b5813c23c8dbcb97c42225166724a3001d6fdf001cd36f
750488544450c64daccfe557f2eb09147717318e9b6e33333967768a6c70080d52c7a92db22c51d8bdabb929cea584075d5af4ebdd6eb6765ea02e7e43fa163d000b40ce000ad0e3
c5c129d420b16195e4c73988ba164cc99850a3af52c05c7170276aef04c2f559a847e2e04fb740af4fd1345662b2e80b6517d19bcccce3a356074ed1f16f909cffe6e37fffe6929f
99dbca7d6039ec66cc41f452bea75f7cf991e691457131f9539855c9d0f1593d43e0f63bec365f9f21831b236cf7e7b486a99c9f13ed8f986312a192d68b5560000314130003fc63
c8fb8274629c5865f1c7132c7d448d60e015b2e09db7b1a0d1596500b1b44e25f9a5445f1189654e8981cd627b255fddf55c9075f8de18bc2bd6913032dafed7fff36cdffff380d5
5c4f3055c03d2fd0b69939cfa1decb78f1804a8d895594b3389d89ba3ea65d2e4e814edc8e7089d855959f345bdbec5baa5ac6eb2a362229e3e831c0c5ae9adfffe65ab7ffe5c98d
958201c85d9b12f7d8fbd9e5cc58520c709a01f6c9c262e371953fd03af196719c2181969a9c57256f3677c03feccb39dfb1343aff5ec3225f67eaea04793f7effedac62ffedb641
73ebf0edaa164d18b18819f2645db1d2d335b1199071c5ba6480eb9e46e188358fc5dddb317dc46f84cdef2e77827a56d388b7f10f6a17bf7434c6023e1fa99bffed212cffed6d15
1f9d5d3c45a475fa5bca91027ec7a809689162f20e4774c45bc2e9b7f78482c99637c14f50942fb31a9bd5222e52d829f9758d2d51a2ae5231583c9dedced895fff87b09fff75931
e1ffba6a6f0c9913c0fd078215c0b1c44014c16c2199efc261acee2cf3589bc623e5bb96f80d61b405bb0088e337dc365c3d594c9f2b72f3ee477f7a3ea054fa001ccc7c001cad95
5cfe0120ec89b59edfa866e4eed5a50a6f015cfea8872af4fe494c0d6ce23962de0cd1786a381d816f7cd2d3f923a1c8f8d8af47c8ef836a481b6037b9779d08ffe96b77ffe9ba0c
077924127ebbc10f81ed969e901f9693fa53607aef2cf8bf8eaa4f71875d4adb32a877c9caf77a9ba078022d7391e6643f4b0a7f4b56768aba33e7bffa125338ffe7b42affe7660f
06776ddae10b8db0df41cb042838d14b7e8375382e3bc471da8f54a3ba13925e10d40fd92c78f69a7ed49b3d9a2e23be67814926a3d77e26de0e4c2447e709e00016f8c000165534
662fe36651955b44268c249823c1bd908aba9871bb352775fa52e3548631f14a230d2323c31c767d71e43e25bd07d890337b114b6c8623dbeccb2e97d5ce3b32fffd7989fffd6a95
5446418a98ce11d98479c58721dd36b8f417fd5bc44fdae2a51aaaf6f958f9dc9b9e77f29237f4dce337e8e2e6f57865adee060d618faad9d1a177b8adbf0dcbfffb5d68fffb403d
239ffa3e99af994193f9e783a4d10e0edaa264a410b27dd8528d50222f45edffd0d9f4af1586dfeeb1d65fb5b42d21c6bffd9175e99acc83391ef493a3ef1da4fff02446ffefd8d3
808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080800000000000080000
807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f00000000fff81000
808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807fffffff8007ffff
807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f7fffffff7ff80fff
808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000080080000
807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f800000007ff81000
808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080804000000040080000
807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f400000003ff81000
80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0000000c0080000
807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807f807fc0000000bff81000
@@ -0,0 +1,313 @@
010102010301040105010601070108010000000000000024
01010201030104010501060107010801000003e80000040c
08010701060105010401030102010101000003e80000040c
b7483466dbcb9526cdd4861542989600000a7c2b000a5814
4815ad15958496bac69368ca9a275a0bfff723b0fff76aaf
ae51d46e25713b1ad5ecaad9299e8191000bbe7b000bdfc9
ef360dfed3ae2d9bf90201eabdb94f6500004cdc00007771
6d45e4cf7242cbd0a8f8fa0d7cea95fdfffe2ae1fffe6dfd
391199224f11253452fad45f542a4438fff04e74fff05bba
67075abf5947d9955b0c7bc62881867d000888a700083696
8a208357a1184f28d0588c25e0d87265ffe8b7f6ffe892e1
931115638e31f7222ada4a82569b073d001cd276001c7169
731f310325856ae736d5faf0ac43f6b3fff28dc3fff26476
2f764e0c36424cd56ddc69a24dfa9ce0ffecdfe2ffeccf2c
3f7e82c0ef5b8129eba9a2a807e72c7cffed50a4ffedb0d8
06b04540b9ffe2f8d21b32b635c7418fffeb9092ffeb655d
7a6e2abd117279d26748b144d75fbf0c0013decc0013efc7
9bd460653c0826f1c0c3a20b115c6eabfffb52fcfffb76aa
b1ce9a34dd6661c7725bb497468b8dafffed19e1ffed3d23
d518c1d2d6d7929513761c0bee8a7133fff6f96bfff75e2e
7195000b0ef33d3454dbaec2612409abffee5142ffee4014
c0f320b6aadfb15c58fc7c645f7ea5c9001d1e98001d78a9
17f25acd3f112e2b0a50912898e4c7a8000efa3d000f03b6
bcf4f55ec369634ae2349f9b849e48b1ffef2153ffef5d7f
94bb2b70a6b6bd7a47c7c98b3c58abf6ffee77b0ffeec2f8
06125f9667a9ed35b3caf85b28848be0fff5d316fff58de2
28e2a70fbdb984b5f3031ad461757455ffe454faffe4d036
3fe63ae2d915e01534d3c1fad65ee7e8000fb011000f884e
6ececdfa2b30df16d31aaed4b655dd3e0006db3d0006b4a7
7392021baa4fd900d7794b8616786cbefffa4a0afff9b5a5
811074997aae0cd6efdafce50995e959000d54a4000cec2c
2908baf8fb17185c9becbd36a325e2450005fec20005eea2
4b41e2013fe6c565f390be2ea9c384c7fffcc541fffce4ac
161db028f0f5805b07197aca3bef0b4ffffd2435fffcd3d0
6a7c39956f0e758d13c388335fbb73220016a21200166856
b4f8d975269d81baf50f2864e451833efff987a1fff9740f
fa9b6bd6837f7e7ab9b40197caed5c2b0003d1e20003e8dc
d04ebcd930dc3dc5b9eedbacb07de96e000af3b1000abace
b72ef1606f97f053c3f73f035995002400085eed0007f727
4fc1480ee648e3d05317bd4815450ed5ffff30aaffff1735
e0f4966f5ac1bc89d1c80b108e805d4800013bad000176cd
c7e71f4ad3b7b9821986c4ec6f683fb800103d9300109007
43d41faae1cce47eff2890933607d8150009b05e0009c0ae
c71419b54020ed7001e230c5a68079cb0016a4980016a146
dc5ec6dbe9560010a97694cc78cad72effe20228ffe1c2c0
fad568a676736debc7f63f75da44141a001763ff00178377
c37cb0cd6f4129b747445b712a4f699d001a8494001aa6d8
278096d2b8fb101ee37038b0a66abdcf001146aa001112dd
7ff9b9c1b1657ecad1521f95069de0fcfffa2433fff9da9f
ddcceb697e44c7899b0cf20e8c60b73e0010c4850010bc4d
772ab23f01ed4d8125f5068f0c2d8e3c000e73ac000e30e1
e13352661fb2a04909e6823c986ddf74001ba4d5001b40d4
c1c2bcdc194ac947351050f00d658d36fff9ac66fff9a860
b76a21a0be48aa62ebafa461af3db86c000379090002cd0f
0261d1b2b0c1f948b460692b49c46aacfff5cee8fff5b0f3
e9c0904fb7dd27b28f3c5ab885482711ffe73f3affe6ccb6
1547eb50f98216058dfd4737ce400371ffe97389ffe97c19
5c56b7101c87a663215aa0b1b5dbe29c0015003500152a4c
62b319bbcf47b51128ac5c080ac7fa65fffb5e1ffffb187e
8126721ad1b97c16b4450fd19a9ba6c7000c9e7e000cd3f4
ce2737533f358361661d0ee72067ac07000a4dd5000a4a7e
2c87a56ba9c1e0c100c000926693b50c001d12a5001cc627
8f181165fed8e84237925802ff7a7755fff80862fff80eb6
b018c5975ae20076508d773b1e8652bdffef5128ffef2b0a
96696d0e93c68585a8eab34f4b6aa1a7ffea49d0ffeaa7f9
564b654626ede20b535a478f7856cb1000182e3a001881c5
dfed96b14627ad18d073479c2d6bca8cffe8f3acffe913b2
a234597ab87321659e2ec0eeb64373f8ffea1c98ffe9fc85
3101f0a525e72c661e767690afe934ce0012e4110012cf30
52616bb1de0ae2840a0e17faeae1a01cfff2979cfff29b09
017c1a554e4598d50c73365b416b3877000aa153000b1eb8
38f9390cd37ff767835832b853e49d71ffef8faeffef0911
40e324027459d0c96e18100dd3d55765000040090000a0b7
b9bc479b044f5c88ad11300695839b97001344e400136b22
398a26a3e06e18bedfae126e09758723fffbb12efffb7b0a
cbb5abd876193e0bc40940fc01f831d8fff6b317fff6d34a
42b51761feb4bce61e9f5d2ce84ff231ffeaa3e7ffea9b50
489911a340c4422339bd494b0beea94dffebe282ffeba4ea
0b28392cf2316542e24558d111a91875ffe3a66bffe3b63e
6669918d6f128b3a6f806272c8d3bb0e00009a370000dd6c
a7c4cbc70273d47153555e620a184647000543bb0005a5c3
9cc907a60f93c630b65295dd03739a470009a87800098637
51cd0222befa74ebe6ca95cd2c6b63eb001b05be001b12f9
687e3c3467638d2620c6f3a330fe7c7bfff6b617fff744e7
871b9634b7f8a0a35057d07eb09b5db7001353b200135f2a
6bcec96e66de4c2f289fe024e043a84400016031000100a9
fffbd0e19af79c3e23704626e310dfa4001470380014852b
ddd414e8c4fdf148c574ebd471a927f5fff2b2a0fff2740c
b0839f0acb195ba0f65f5ca8d254d2e000066b8e00063ad9
c9f59c462a8716b1a414d1144140985b001181b000112e7d
141b1944e7bdf2ea4fdaf5838657c8adfffc118efffc0464
93a3b9e21d8b6b3b06bb0941c5038bb1ffffde3a00003da2
4204dde6c6bce1adf1f80b3f86c701c1001b5ec3001b9ae6
0af0188fc7f63b343665190c1678b0f0001b9404001bbccc
5504e54025326065298c223152247dbb0005ccd20005d245
c2b882bdbf2aa9e751b9ce1b3789e3fbfffa067bfffa01fd
8166387c3465a820318a96eb32229c460003096e0002d8e0
9d225798be0e8481dd0b46eaeaa218730015ca0b0015decc
6896242717a3cc2d6c3fa59b3c2a2723ffe4f0aeffe50743
f2b40b0458a29c4e95d9bec686d3994cfffad160fffaad0b
f48198675fc8c34cfb1c3665f204fa4dffee2577ffeded6b
267abbba3a95d4a83853830e03f43b94ffe8ac83ffe8baa9
26816495be64663ea586b4456215438400104c0400100cc2
5932e501bd3a2b06e7d9c32950ec9c8a000578ab00059da8
aef9f53b15bf7cfbb4e4ff43fa3720d1000ead82000ea659
393c857a359571a58271dee965b29f65001632b200154d83
6366e14b9f4ec873bbe05138bb0cf8560004a47b0004a08e
59de6c333352a82f34196712144364f9ffe2e365ffe2fc17
03326f4287af8cf9e2cb5bf59e972431fffce5ccfffd5dd8
44b031dbd65436133f2bc04cb9e63b730005b1680005a499
f90b283f8abd2e617f6d7bd3d1e6f114ffe6c316ffe720ff
50641c4d226cfd156af6083e1652766cffebb325ffec1f8a
bbb217cd36096e5ac86f326341032422ffe2202affe259c6
94de250907cbcd843347eaafe7686669ffecd352ffed2f01
1cdd3bfdcd1eb5207e0dbabba81ddf4efff0bcabfff0ae0a
7674f1b8731a569ef14d18a00e4fab4b0004794a00047ba4
629f8445178b68aa3b14780b64fdae56000434f90003ae04
2232966739645ab5031fef6600e5fc33fffa4e5bfffa1f0a
539d8bc5e825c28f064ff124af4a8f34ffe71026ffe6f44a
f9d0ae2e24fcf0cd00a4f9a08bdcace7ffed3e5cffed4ed8
16bf4181b1cb4c1e88741fcd2de58c6cffe215a2ffe196d4
9ccf8b8deb66fdc266e909a08c08f840ffe8c8a7ffe8f68c
4f04fb983f175c0251f2f5f960ad6504001599230015811b
87782ca499757f68facb2e4b7756dc34fff54434fff52f93
e7af192720bd174cf91cfa3e5db1fe74ffe5130effe4fd67
ce233906f7fd214de2f562a7b53c3174ffebcea8ffebb708
bca8d2e7520399b177060a7fb6ebb6e9ffee2205ffee731a
8b90fb5630f15e7dc0f5382cfbcce5d9fffb30e8fffb9f01
2640d8dbb3d30a991daa9ecb888cc934fffa8419fffad2a4
a63dc30fbac127c7193dd17f15f260c4fff3d4c9fff39b4d
946f50ec1023319003212c1c29f4253efffe4868fffe0c51
03335ff4a956b90cd644c59b4cce80b1ffebf327ffebf385
c6a7c433712b03fe305cc0b0ac2b28c50003c03f0003e956
27f237587a3fd308fe5ea0d52fd211900011ad6c0011da52
e56ed41aa68c2d8834db17a3184cd59c000d66d0000d727b
62994ae17b180482441cc4720a6e2aa1fff456bdfff41157
755a8ad0918d693ef848cb4a03146518ffed8634ffee08e3
50eb182ab845a7195600ab5b97e44ccfffe546b6ffe506b6
f3790b75211c1ada72262c58c824436bfffdd484fffe0753
314f80096d7aced6e0b386b1772f14090015cb0f001657a7
9a87153463862b7340a5a75ec31745c5fffa7db4fffa4981
778d71d2da87b726362334b3428d692d000abd9d000a6787
ef850e3b5ab9b8b0fb2639039d7f3a2effeefff6ffeee221
232947efe675728277512e2dfa868a3b001d80bc001d5309
8636eecb76b0fb4e3706f941b1d473f3000616200005e0f8
f2935b6e5623b9783fb462394f3c9d490002a5430002b634
cd443203803bf6feadc2fc2eb5b75616fff32dcafff33391
377143a0ef27ca7606005e75181b8351ffef7e05ffef67a2
55ade9241882593eceed313267b735980000992c00005e80
ceed591380bd78b4949ae63db7311287fff8a49ffff8bb2b
e259812fd85d80d85c8f8bfd259f3e4c00166be600162cc5
3d0a9a7420c552e675e6d034105c728dffe1aecaffe13028
ab78a726ad0a52e5867f6d718085e017001dd7ee001dc533
ef286f9c9049c543044174687dfb6ed20010423c000ffec6
3ad04a1fdbc29ac2b7840bf43f117015ffefc322fff01319
60dc4ac38aadb96d0647e2cce88b4abffff0de3bfff0c710
798ba083b24a31a7eb3056ac2aad4acffffdc4d0fffd58de
37850ab05453191f70707ab0f708dcc100033af300034f1d
bcf250a377ce3c755a1b41b514400646ffe195ecffe17dd9
55ef3a16173a1aac06f36ce99d68225800099c29000971a4
48dd3f091a221c0a332379fc33588ad8ffed5a9fffed8097
d62507012e68669aa3d6c4ce53d1f9effff6cd53fff6bd88
bf6552a08ce02879f29df8b6250ce282ffe3ea2effe3eb6b
14e7a8a7c082118af4065ae66bb627860016f3090016ec67
cb5e66cedb29effa191c03cb362098affff2a153fff29e2f
033a1a950e741bef813584afbe3bcc5200136fa300135713
35b83866e0a478ea565a17cc91d44253fff9dfeffffa2a91
a3b2e2d467440fccf003cbd6692669720010e5d40011667c
94f230ed09843b0ca98132fabfd9ee63fff837b3fff86561
a8c0635d9360606284ad53849b35af11fffdda24fffdf5b1
914d181d43cf2b9e1e565758d39b95a3000a478c000a6c34
f9bd85ea6cc76aa933329767408eeac5001532280014cac6
deb9c9b1ed4e1946114c2b4999a66b950015e9f200160e31
04ddb3ded7a90311a47ac60bde437d42fff5b8eefff5b9bc
f3ec704da2535324d8758cacf95e7613000f42e7000f6cc5
84c37268c407fccfa3c9e4f77542ae46ffeb03c9ffeb6b7a
e902db12fb364e8d5f38a2fc752cbeb7fffc0aa3fffc20f1
cae028e53409288138e0555b94896825ffe55c3bffe5a532
fef358ec43d67cf5622a83b027b1d82dfffcd3cffffce0ca
0a053117ead48bc73c486f142665232b000057c50000a89e
1779e5215c316779e0b0e887497dd193000fac1d001042cc
91b75fb91ea20265ac1e40ddb1a5130effea9fb7ffeaa552
dbd6cac1d3e74496d22c74a1199e1341ffeebfc4ffee83aa
6484122c02dd089f3752232c108a5583000ef2d1000ea8ec
2794431374116820c869dc26d47052a1ffe8eebdffe8a9f8
42da9b6cc27932f2bc8576b18d5274490007b61700075a25
5b9b15df3a43d7c78f40345cc2883134ffe25b3bffe26a62
b368e7f92ed0b631dd262c35d2418f2400034b120002fe07
c829ce6aad13ddf6a7f0b9e441c63bcd000c0727000bd789
4567d0e8ae382d60c01cc59642bbcf40fff26ae8fff27d7f
65a671a01470a44f91f77d37425ef3dc001a4055001a17a1
fddee7a9390c343b5f9829996552b965ffeaf5c5ffeada92
70b87bfa6e52079fc4460ea763112b55ffead4b1ffead278
b6277d9d8bef3aef164aedca3d03a5fffffacd43fffaa101
df6c71731cac38f21355b73273b16654fffd9740fffda5df
efbf6909cf6446d2ddd8ed95f1854949fff65671fff6682a
5ada9db6ebb22ff3a3bfe61e5bf6de78fffe8789fffe9be1
b3901ebafe80fd3510d6158f3258b75e0012318e001235e8
1c9917b5b6c9ffa3f378d67d75b30b55000103dd0000c7fb
2dc85ea9cee033ca2e24bd97b5866bbfffee80fcffee7d36
d072437559782912a143afc24a3fa445fff10b2dfff13531
4fe4a2cb672db8c8156fc84816528b37001c39a8001c4d99
94f1e5f9f4e61dfe33da293a340848c80014315300142cfa
87d653da7a20cfd8ef154c3a615e600b0010c79a00111d9b
453de9207bf11328545f8b31cfdbb7c00011deab00120a1b
c3dc309b89a8d82d4ec2eca7c35619e20003762c00036a54
7b82544f145637d6f6f22d59764ccd48fff8144dfff81442
3751cbaa579062248fac167b8114ec7bffea43abffea6ab6
6e0aea5f38eae5544ccf251bc8db74eb000b3c51000b1eb6
f636a368c55f1b1c9664b4b4e60a0862000344400002f89f
d6edc920fdcd92e498e7eaa37cbdc569fff244cffff2272d
f6dea61c2754dfedbf228b183384df02fffa913afffa6b65
3ee407b217e95227e87414ed0f95cb3cffe9a5b7ffe9882d
06a247226e2381e403832ddfb777efc7fff57f3afff57df8
d00022fcaf35cb061c1e493caea79a46fffd76a8fffd791f
5a2bc58f9a38625eb1caa1ac64c6e7fc00124ba500129c0c
76d8414f5e8d714e7acb0275f3c86f8fffee877affee3ace
8e2eaa422098bb450b2b051c41704fa4001b6fe7001b2817
409e7e95229c8b95752a5892065ea82c0011a85900115f44
8b9c7d11ccefa4d9fa929f2504dec294fff13d40fff192e8
eb08039624717eba4e5ff34e0b211ceffff63550fff63965
fa515245fcf591aaf05a8a20b06a5149001bea7b001c05be
175fcd87e324395316682efedae9e0bcfffe91bffffed548
030083af7d20ded073b50710c535bce7ffebed25ffec03de
f1d6b346756249557e8713c2b1fdca0f00107ae100106aeb
71280cdf1ccce2fb2c642450566557de000170f70001aec9
4e82e302fcc656c8d1287dbe9ca8acd5000e8463000e54c7
c632e830e0b489aa6e9ac4973d2c641a0007b89b0007dbad
60f9cfe84bd046708942d466401bb5ce000bdeb9000bd671
5f081111e9417406bd9546d5764dd250ffe9a639ffe9cc90
8f13dbc7cd09f3d9313ff4e5d2465651001428500014444f
1b2eba80265c8d98e1fed0b35dcce940ffe5fb3dffe65581
5ac7442fc82ac66f098e399c6e3fb4fb001d151f001ced83
cae6f36567cd8caa3812749e4fff9b2bffe5dc9bffe5b5ab
c6f3ff6084c91c035e8e28164d4be2e9ffeda203ffedb262
d686ca96df340791934db0010fa8ebeb0017bd670017b982
7339786ae66a19855e2ba71c87709df9fff3ba3afff3c291
49523c1d1c49208b47f36c5ff3998ccdfffc0b35fffc638f
22dcffda462bd2258c0a97773a6275b6ffeee4e6ffeea46b
76dfa247cdeb846a57e2c57c7c5d778800091ec0000894cd
b2580eb1665e3728557c839097c05fc9000538560005acf3
b7cc4ac52f93627b3c19614e0b791ed8ffec478cffec8452
40a9e4cce211bbb58026aea827b45a9e0010bcc300109a14
f363168c25a8d0d3160a5ea055ee58a7ffe39321ffe338e4
26b926e992b876e8ed4278599a386577ffe7b894ffe7fbf5
d6d50ac33ff99775f298a0dccbb1ee25ffe30d95ffe3017c
c7d4bdc94a344bb7f763821e7f3005cfffffd9c3fffff035
af5a8628a5c09fc32aa6e24a837a2a10fffd4210fffcf001
ab8ac0f6f17fcf9a18a26a0d807a7913ffe33b55ffe339a5
5ca5d10b891a765f0cb225bee87c8271fffabcaafffa6935
9ba2b6ce1d9a7533f6c1c3caadebfc7e0002a13a0002f4b0
5789153690237e2688942b805575a0e3fffd18f2fffd472c
4b852a2192aa0a6aabdc6f82d9ee78de001b3c42001b0edb
e9289e016228f6b48b421301a9d2df380005235f00051c00
10b0aa90b58309a9d8abeed8087fb8a4fff706b2fff776d2
59f6232e0b63a69475a67c36f8e4e63dfff3961afff3aed7
3766b0e18dfe9e50fccbf8a6ca48b40b000cefb7000ce2c7
3122f997dc8fd1ddd354b07d9e011acdfffb7e6afffb62b8
9f84dd71736442842cda1771289e6518fff789abfff7b3ef
38b83f0ed769743d5d74ca2dd99ac132001a9e14001ac07b
982fe5a1e5de08a630f4d1dab69f1260fffee12dffff0064
72295afa25e39589c6ab41c61515dd78001dede7001e2172
025dd6549d6f49ccbcce8fb88485168cfffef630ffff0e0d
71bb53d45ff8253790a82559ddbc9e5affec9981ffec8bf8
6d91eb73ce5674efd1c4954b8ae96531001b89a9001b4211
d6a42acca07fe81b149b6137bfd59b43ffea12fcffe9e4d3
823785a842d0bc686730ddb2e3c884bb001d79ff001da6f3
347e44dc56e3347615606f6bf4fd2a2e000ce2ed000d3f24
e8bd3bca1328e51fe561b12428279eb0fff2facffff303b9
6a91ba12459fbccd12fb00429065ea90fff7287dfff6c618
906767fe48cebaa9214bb5c6355fe251fffc8320fffc83d2
f325fa3235d3789333fcc63159f16fa8ffed7727ffed006c
efb850605a347e2948f932fa0d859036ffe3b69fffe3deda
83ed6a54bcfc9ea33ab06d4a9361dbfd000ce23d000d177a
1d58e66bf7f44fadd4590490158d42a4001603f50015b7ab
2698043ee6176a07a7133a54b4266bac000f9669000f668a
d04a625ead2bedf952008d9e2e551fb9ffe28b43ffe2c6a6
85b7edecd24b819ba9d349141f11ef34ffea49cbffeaa695
a6019601595263cecc658effcf7ea82b0015ae4400157bb4
670de80e82ac2689fc5076fe7b687f700000fd7300018068
7761858719b008971ba24237979830ca000b708d000bf17b
c88949769c319df934fbcd3a560b7c82000a5c83000a41da
07d2082c17e5fced450abb3c44869517ffed7254ffed38d2
ec1f82e2bc4ac91f2542825ff34a00b6ffe9008effe8c99b
76e6453dcd0a84951f81050d9a04ad30001490730014a676
86e413b844cf099da91fdf799e59ac16fff5047afff4b88f
82c549a5cb06a36f62b3946fd9a6b0380019bae800194456
5fbcb5cc39d6ee4d6a18bab1ee2fe9a6ffe7dc4dffe7e7db
eec7983fefc2588889b714f504f0537e000a74db000a83d0
ed32593452602f57747c5374115bff0f000576c5000617a4
7dbe69d3a592966ba3be2c700642cec70009d99f0009d9a4
93f2c7e49586cd774deab8c9e31a385dffe60c79ffe64e34
481742921c2e831e785a3278925519a4ffe60e97ffe60333
9b717e8827ddc3c340646b0a636e7b610015b0ce0015c8b0
4a74cfa4572a35bfc270733b6794e72b00127524001278d3
c20a6258901d05934a89250ca4498b750000d7ce000077e2
ae0c9595b16a80f5bef56bfb10b6da96fff27f56fff298dc
e1cd28658ddf399e5e58498802c6ded9ffff604dffff7215
4d90cc91e659d22777c125acea09866d0017118b00169836
a38f5226e5b4864c7d57b7a8c56754afffefd0b0ffeffaf7
93249eb07fb94c7ca1719d502bdf347c0017c83e0017a3e7
bf89e99ee41a5289900b72af1b35f6f1ffed859cffed60f6
4610fecf337e89567b1f1e182801c33b00099b35000994e5
808080808080808080808080808080800000000000020000
807f807f807f807f807f807f807f807f00000000fffe0400
808080808080808080808080808080807fffffff8001ffff
807f807f807f807f807f807f807f807f7fffffff7ffe03ff
808080808080808080808080808080808000000080020000
807f807f807f807f807f807f807f807f800000007ffe0400
808080808080808080808080808080804000000040020000
807f807f807f807f807f807f807f807f400000003ffe0400
80808080808080808080808080808080c0000000c0020000
807f807f807f807f807f807f807f807fc0000000bffe0400
@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""
Independent Python oracle for rtl/mac_unit.v and rtl/mac8.v (aspect C.1 of
the re-certification campaign, docs/validation/01-datapath.md).
Deliberately reimplements the arithmetic from first principles (two's
complement wraparound, sign extension) -- NOT by reading the Verilog and
transcribing it. Every function below is checked against Python's own
built-in arbitrary-precision integers, which have no width and cannot
share a truncation/sign-extension bug with the RTL.
Run standalone to regenerate the golden vectors used by
sim/mac_unit_tb.v / sim/mac8_tree_tb.v:
python3 tools/validation/mac_oracle.py
"""
def to_signed(val: int, width: int) -> int:
"""Interpret the low `width` bits of `val` as two's complement."""
val &= (1 << width) - 1
if val >= (1 << (width - 1)):
val -= (1 << width)
return val
def to_unsigned(val: int, width: int) -> int:
return val & ((1 << width) - 1)
def mac_unit(x: int, w: int, acc_in: int, data_width: int = 8, acc_width: int = 32) -> int:
"""Bit-exact model of rtl/mac_unit.v: acc_out = acc_in + sign_extend(x*w)."""
assert -(1 << (data_width - 1)) <= x < (1 << (data_width - 1))
assert -(1 << (data_width - 1)) <= w < (1 << (data_width - 1))
product = x * w # Python int, exact, no width -- the whole point of an independent oracle
prod_width = 2 * data_width
assert -(1 << (prod_width - 1)) <= product < (1 << (prod_width - 1)), \
"product overflowed PROD_WIDTH -- data_width assumption violated"
raw = to_unsigned(acc_in, acc_width) + to_unsigned(product, prod_width if product >= 0 else prod_width)
# acc_in + sign_extend(product) computed directly in signed arithmetic,
# then wrapped to acc_width bits (matches Verilog's silent wraparound
# on a fixed-width signed reg/wire -- confirmed intentional, not a
# bug, because callers rely on it: see docs/validation/01-datapath.md).
return to_signed(acc_in + product, acc_width)
def mac8_tree(products: list[int], acc_in: int, acc_width: int = 32) -> int:
"""
Bit-exact model of rtl/mac8.v's balanced binary adder tree +
final accumulator add. `products` must have length PARALLEL (a power
of two, matching the RTL's $clog2-based tree construction).
"""
n = len(products)
assert n > 0 and (n & (n - 1)) == 0, "PARALLEL must be a power of two"
level = list(products)
while len(level) > 1:
level = [to_signed(level[i] + level[i + 1], acc_width) for i in range(0, len(level), 2)]
return to_signed(acc_in + level[0], acc_width)
def mac8_full(x_vals: list[int], w_vals: list[int], acc_in: int,
data_width: int = 8, acc_width: int = 32) -> int:
"""End-to-end oracle: PARALLEL independent products -> balanced tree -> + acc_in."""
assert len(x_vals) == len(w_vals)
products = [mac_unit(x, w, 0, data_width, acc_width) for x, w in zip(x_vals, w_vals)]
return mac8_tree(products, acc_in, acc_width)
if __name__ == "__main__":
# Self-check: a handful of hand-verifiable cases, printed for a human
# to eyeball before trusting this file as an oracle for anything else.
cases = [
(5, 7, 0, 35),
(-128, -128, 0, 16384), # the one INT8 x INT8 case that does NOT fit in INT16 magnitude terms symmetrically
(127, 127, 0, 16129),
(-128, 127, 0, -16256),
(0, 0, 0, 0),
(-1, -1, 0, 1),
]
ok = True
for x, w, acc_in, expected in cases:
got = mac_unit(x, w, acc_in)
status = "OK" if got == expected else "MISMATCH"
if got != expected:
ok = False
print(f"mac_unit(x={x}, w={w}, acc_in={acc_in}) = {got} (expected {expected}) {status}")
print("ALL SELF-CHECKS PASSED" if ok else "SELF-CHECK FAILURE -- oracle itself is wrong, fix before using it")
@@ -0,0 +1,486 @@
bde50000000000000711
4b0f0000000000000465
fffe0000000000000002
7ac300000000ffffe2ee
840a00000000fffffb28
3a730000000000001a0e
08f200000000ffffff90
0c9d00000000fffffb5c
c4ad0000000000001374
381d0000000000000658
7b9b00000000ffffcf79
e45100000000fffff724
088e00000000fffffc70
db0200000000ffffffb6
73080000000000000398
adbe0000000000001566
45610000000000001a25
863e00000000ffffe274
995d00000000ffffda95
dbc300000000000008d1
5e4f0000000000001d02
008e0000000000000000
0dc200000000fffffcda
b16a00000000ffffdf4a
0d2d0000000000000249
246d0000000000000f54
9f2e00000000ffffee92
dbee000000000000029a
5d6000000000000022e0
36e500000000fffffa4e
13fc00000000ffffffb4
4fbe00000000ffffeba2
a5c300000000000015af
14460000000000000578
688e00000000ffffd1b0
ecc60000000000000488
c7d800000000000008e8
c47200000000ffffe548
629000000000ffffd520
197d0000000000000c35
36df00000000fffff90a
25600000000000000de0
aa6c00000000ffffdbb8
d4a90000000000000ef4
9a5600000000ffffddbc
df890000000000000f57
f5f80000000000000058
ba4a00000000ffffebc4
398400000000ffffe464
c11600000000fffffa96
f8cd0000000100000199
38d700000001fffff709
bf7c00000001ffffe085
801100000001fffff781
7dec00000001fffff63d
923d00000001ffffe5cb
32e700000001fffffb1f
239600000001fffff183
3d750000000100001be2
86d80000000100001311
374b000000010000101e
2a540000000100000dc9
43c600000001fffff0d3
8eff0000000100000073
bc0100000001ffffffbd
479100000001ffffe138
5a8900000001ffffd62b
bea800000001000016b1
32c400000001fffff449
55b700000001ffffe7c4
5f7b0000000100002da6
d06800000001ffffec81
764e00000001000023f5
dd5600000001fffff43f
42400000000100001081
9f5000000001ffffe1b1
41ca00000001fffff24b
178800000001fffff539
c9a800000001000012e9
57c800000001ffffecf9
6f3d0000000100001a74
36aa00000001ffffeddd
99e00000000100000ce1
59220000000100000bd3
50a600000001ffffe3e1
990100000001ffffff9a
d7ae0000000100000d23
a84500000001ffffe849
8fa7000000010000274a
850a00000001fffffb33
21750000000100000f16
51b400000001ffffe7f5
bd1800000001fffff9b9
e8fc0000000100000061
0726000000010000010b
8d0e00000001fffff9b7
ce6f00000001ffffea53
f2f300000001000000b7
123c0000000100000439
244700000001000009fd
49e8fffffffffffff927
3e1affffffff0000064b
90baffffffff00001e9f
a68effffffff00002813
0673ffffffff000002b1
4607ffffffff000001e9
cfdfffffffff00000650
ea01ffffffffffffffe9
675effffffff000025d1
57effffffffffffffa38
db48fffffffffffff597
4dd0fffffffffffff18f
a1e0ffffffff00000bdf
9018fffffffffffff57f
4ebfffffffffffffec31
1a74ffffffff00000bc7
4d90ffffffffffffde4f
0cc5fffffffffffffd3b
43bdffffffffffffee76
c45affffffffffffeae7
fa82ffffffff000002f3
d323fffffffffffff9d8
518affffffffffffdaa9
cc02ffffffffffffff97
a9e5ffffffff0000092c
9c2affffffffffffef97
00eeffffffffffffffff
f9f2ffffffff00000061
2665ffffffff00000efd
2de2fffffffffffffab9
e877fffffffffffff4d7
3c86ffffffffffffe367
96c0ffffffff00001a7f
b7d3ffffffff00000cd4
1a34ffffffff00000547
1551ffffffff000006a4
86e4ffffffff00000d57
25edfffffffffffffd40
286dffffffff00001107
8172ffffffffffffc771
8dc3ffffffff00001b66
5614ffffffff000006b7
9ac1ffffffff00001919
8fc6ffffffff00001999
6656ffffffff00002243
fdd8ffffffff00000077
8b8cffffffff00003503
2b89ffffffffffffec02
da53fffffffffffff3ad
0761ffffffff000002a6
bdd17fffffff80000c4c
23b37fffffff7ffff578
be087fffffff7ffffdef
226a7fffffff80000e13
a34e7fffffff7fffe3a9
16a27fffffff7ffff7eb
e8e57fffffff80000287
a5187fffffff7ffff777
dd067fffffff7fffff2d
b6cc7fffffff80000f07
010f7fffffff8000000e
f0da7fffffff8000025f
e18b7fffffff80000e2a
f8067fffffff7fffffcf
f9747fffffff7ffffcd3
a02c7fffffff7fffef7f
d1dd7fffffff8000066c
1d707fffffff80000caf
67e67fffffff7ffff589
6e9c7fffffff7fffd507
e8be7fffffff8000062f
22f77fffffff7ffffecd
24647fffffff80000e0f
6d747fffffff80003163
d9ec7fffffff8000030b
e7757fffffff7ffff492
a4107fffffff7ffffa3f
d4877fffffff800014cb
68fb7fffffff7ffffdf7
454c7fffffff8000147b
42ad7fffffff7fffea99
13857fffffff7ffff6de
ddd47fffffff80000603
c8dd7fffffff800007a7
572c7fffffff80000ef3
e4f57fffffff80000133
10867fffffff7ffff85f
e07b7fffffff7ffff09f
e0877fffffff80000f1f
8d3e7fffffff7fffe425
5a057fffffff800001c1
58be7fffffff7fffe94f
1b287fffffff80000437
8bbe7fffffff80001e29
00c67fffffff7fffffff
95b07fffffff8000216f
280e7fffffff8000022f
51857fffffff7fffd914
047c7fffffff800001ef
0d3a7fffffff800002f1
cf68800000007fffec18
9e008000000080000000
9850800000007fffdf80
cd0f800000007ffffd03
27e2800000007ffffb6e
a5e28000000080000aaa
022e800000008000005c
24b2800000007ffff508
1cdc800000007ffffc10
0fcc800000007ffffcf4
fb7b800000007ffffd99
ad4d800000007fffe709
ed9780000000800007cb
f78b800000008000041d
be908000000080001ce0
12d9800000007ffffd42
5fde800000007ffff362
8274800000007fffc6e8
3f368000000080000d4a
d7d4800000008000070c
211580000000800002b5
b88c80000000800020a0
06cb800000007ffffec2
f99380000000800002fb
1092800000007ffff920
08248000000080000120
bcd98000000080000a5c
defe8000000080000044
ce7a800000007fffe82c
98fe80000000800000d0
e65b800000007ffff6c2
38d5800000007ffff698
e8e280000000800002d0
db958000000080000f77
ab988000000080002288
b1d48000000080000d94
307a80000000800016e0
d23e800000007ffff4dc
0d3c800000008000030c
17bb800000007ffff9cd
8cb9800000008000202c
486d8000000080001ea8
0d7d8000000080000659
28e4800000007ffffba0
376e80000000800017a2
6695800000007fffd55e
165f800000008000082a
e4d08000000080000540
e9ca80000000800004da
c9818000000080001b49
ac04400000003ffffeb0
fbc94000000040000113
f262400000003ffffaa4
fc14400000003fffffb0
7bc7400000003fffe49d
7281400000003fffc772
3a4b40000000400010fe
93964000000040002d22
1e9a400000003ffff40c
80984000000040003400
704f4000000040002290
146640000000400007f8
3b7a4000000040001c1e
767b40000000400038b2
f564400000003ffffbb4
8251400000003fffd822
2a604000000040000fc0
22be400000003ffff73c
bae740000000400006d6
3ae3400000003ffff96e
562e4000000040000f74
625640000000400020ec
43774000000040001f25
7e3040000000400017a0
8c39400000003fffe62c
7a414000000040001efa
e4ad4000000040000914
5285400000003fffd89a
ed8b40000000400008af
67a8400000003fffdc98
ebe64000000040000222
ad3a400000003fffed32
5f86400000003fffd2ba
a076400000003fffd3c0
55534000000040001b8f
17e4400000003ffffd7c
4895400000003fffe1e8
b6cb4000000040000f52
ac71400000003fffdaec
5ceb400000003ffff874
636f4000000040002aed
e1ab4000000040000a4b
a0c74000000040001560
a7834000000040002b75
1a87400000003ffff3b6
4e73400000004000230a
11f2400000003fffff12
29b1400000003ffff359
b847400000003fffec08
dbd740000000400005ed
1ce5c0000000bffffd0c
343bc0000000c0000bfc
d277c0000000bfffea9e
2053c0000000c0000a60
ff8ac0000000c0000076
2be7c0000000bffffbcd
b614c0000000bffffa38
ad1cc0000000bffff6ec
b8cbc0000000c0000ee8
c1e9c0000000c00005a9
f820c0000000bfffff00
5f77c0000000c0002c29
ca0ec0000000bffffd0c
7291c0000000bfffce92
f52cc0000000bffffe1c
ea27c0000000bffffca6
ecc9c0000000c000044c
6b41c0000000c0001b2b
0372c0000000c0000156
f279c0000000bffff962
e68fc0000000c0000b7a
ebb5c0000000c0000627
02d0c0000000bfffffa0
af61c0000000bfffe14f
2576c0000000c000110e
e079c0000000bffff0e0
1867c0000000c00009a8
7dcfc0000000bfffe813
ff68c0000000bfffff98
b8bfc0000000c0001248
da6ac0000000bffff044
3958c0000000c0001398
f1d1c0000000c00002c1
44c5c0000000bffff054
7d9ac0000000bfffce32
5abcc0000000bfffe818
a1efc0000000c000064f
53e2c0000000bffff646
85c1c0000000c0001e45
15a4c0000000bffff874
fb70c0000000bffffdd0
25bfc0000000bffff69b
7ad6c0000000bfffebfc
c95ec0000000bfffebce
3e54c0000000c0001458
9bbbc0000000c0001b39
535ac0000000c0001d2e
adedc0000000c0000629
bd53c0000000bfffea47
8c71c0000000bfffcccc
9d5a00bc614e00bc3e80
4ea800bc614e00bc467e
258a00bc614e00bc5040
146f00bc614e00bc69fa
d3a300bc614e00bc71a7
e80c00bc614e00bc602e
ee5400bc614e00bc5b66
dc1b00bc614e00bc5d82
50dd00bc614e00bc565e
2e7e00bc614e00bc77f2
2f7f00bc614e00bc789f
d37000bc614e00bc4d9e
bbd800bc614e00bc6c16
83a000bc614e00bc902e
0f2400bc614e00bc636a
e85f00bc614e00bc5866
f75600bc614e00bc5e48
ccb200bc614e00bc7126
6c1100bc614e00bc687a
d8b500bc614e00bc6d06
e8f300bc614e00bc6286
c8f400bc614e00bc63ee
c9c100bc614e00bc6ed7
ddcc00bc614e00bc686a
05fe00bc614e00bc6144
ee0600bc614e00bc60e2
5dc700bc614e00bc4c99
f40200bc614e00bc6136
ddfe00bc614e00bc6194
5f9000bc614e00bc37be
e5ab00bc614e00bc6a45
c84700bc614e00bc51c6
395a00bc614e00bc7558
4b1e00bc614e00bc6a18
29b900bc614e00bc55ef
00d300bc614e00bc614e
33b100bc614e00bc5191
87ea00bc614e00bc6bb4
723700bc614e00bc79cc
195300bc614e00bc6969
a63600bc614e00bc4e52
37ab00bc614e00bc4f0b
c0ae00bc614e00bc75ce
ff5800bc614e00bc60f6
5de100bc614e00bc560b
9dbe00bc614e00bc7ad4
06f000bc614e00bc60ee
08a900bc614e00bc5e96
577a00bc614e00bc8ac4
38e800bc614e00bc5c0e
1bd5ff439eb2ff439a29
7b0cff439eb2ff43a476
f05bff439eb2ff439902
766fff439eb2ff43d1dc
5f0aff439eb2ff43a268
c577ff439eb2ff438345
a39cff439eb2ff43c306
5afeff439eb2ff439dfe
e5b3ff439eb2ff43a6d1
2d1fff439eb2ff43a425
79bbff439eb2ff437e15
b49dff439eb2ff43bc16
c94dff439eb2ff438e27
a2f6ff439eb2ff43a25e
2783ff439eb2ff438ba7
97fbff439eb2ff43a0bf
c7c5ff439eb2ff43abd5
53e9ff439eb2ff43973d
a54cff439eb2ff4383ae
e336ff439eb2ff439894
6e31ff439eb2ff43b3c0
c667ff439eb2ff43875c
0dafff439eb2ff439a95
3487ff439eb2ff43861e
eecdff439eb2ff43a248
5232ff439eb2ff43aeb6
4069ff439eb2ff43b8f2
073fff439eb2ff43a06b
79cbff439eb2ff4385a5
e659ff439eb2ff4395a8
7cabff439eb2ff437586
6a12ff439eb2ff43a626
5cadff439eb2ff4380de
cf0eff439eb2ff439c04
19ecff439eb2ff439cbe
1563ff439eb2ff43a6d1
941fff439eb2ff43919e
106eff439eb2ff43a592
bf4cff439eb2ff438b66
f4f6ff439eb2ff439f2a
e5bcff439eb2ff43a5de
9bdfff439eb2ff43abb7
f4b3ff439eb2ff43a24e
596aff439eb2ff43c38c
6bacff439eb2ff437b96
a2bbff439eb2ff43b808
4677ff439eb2ff43bf3c
9ab8ff439eb2ff43bb62
5f0eff439eb2ff43a3e4
4c11ff439eb2ff43a3be
80800000000000004000
80800000000100004001
8080ffffffff00003fff
80807fffffff80003fff
80808000000080004000
80804000000040004000
8080c0000000c0004000
808000bc614e00bca14e
8080ff439eb2ff43deb2
7f7f0000000000003f01
7f7f0000000100003f02
7f7fffffffff00003f00
7f7f7fffffff80003f00
7f7f8000000080003f01
7f7f4000000040003f01
7f7fc0000000c0003f01
7f7f00bc614e00bca04f
7f7fff439eb2ff43ddb3
807f00000000ffffc080
807f00000001ffffc081
807fffffffffffffc07f
807f7fffffff7fffc07f
807f800000007fffc080
807f400000003fffc080
807fc0000000bfffc080
807f00bc614e00bc21ce
807fff439eb2ff435f32
7f8000000000ffffc080
7f8000000001ffffc081
7f80ffffffffffffc07f
7f807fffffff7fffc07f
7f80800000007fffc080
7f80400000003fffc080
7f80c0000000bfffc080
7f8000bc614e00bc21ce
7f80ff439eb2ff435f32
File diff suppressed because it is too large Load Diff