aboutsummaryrefslogtreecommitdiff
path: root/advtrains/textures/advtrains_dtrack_shared_unload.png
blob: e9fc5bdfa549ef9a94b0bd9c52b31762c70c0973 (plain)
ofshex dumpascii
0000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 80 00 00 00 80 08 06 00 00 00 c3 3e 61 .PNG........IHDR..............>a
0020 cb 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0b 13 00 .....bKGD..............pHYs.....
0040 00 0b 13 01 00 9a 9c 18 00 00 00 07 74 49 4d 45 07 e1 05 1f 12 32 18 30 e8 11 07 00 00 1c 37 49 ............tIME.....2.0......7I
0060 44 41 54 78 da ed 9d 4b 8f 63 cb 96 d7 7f 11 b1 5f b6 d3 76 66 65 56 9e 2a ee b9 f7 f4 80 6e 06 DATx...K.c......_..vfeV.*.....n.
0080 ad 6e 86 30 00 31 40 e2 0b 30 41 62 86 e8 19 12 df 84 11 b3 46 4c 18 a2 e6 03 20 f1 21 68 d1 6a .n.0.1@..0Ab........FL......!h.j
00a0 b5 1a 5d a1 f3 a8 3a 55 27 9f 7e ed 67 44 30 58 b1 73 67 65 3a 6d 67 de 7b 2b 6d 69 87 54 2a 67 ..]...:U'.~.gD0X.sge:mg.{+mi.T*g
00c0 d8 7b 7b 6d c7 8a 15 eb f5 5f 4b f1 c4 f8 37 7f 9c fa da 2a 7c d3 60 34 58 3c 1a 88 e2 88 fb f3 .{{m....._K...7....*|.`4X<......
00e0 ff f1 bf fd af a7 6e c1 7f fa b7 ff 72 e3 b5 0f e7 5d d5 80 01 e5 3d 46 81 d5 11 58 fb ac 7b ac ......n.....r....]....=F...X..{.
0100 9b ff 0f ff f5 7f b2 69 fc e7 7f f7 af 5e 44 d7 ff f8 be 51 7c c5 f1 4f 4e f1 97 b7 54 ff e8 37 .......i.....^D....Q|..ON...T..7
0120 10 19 f8 70 0b 45 03 bf 9e c2 ff fe 01 fe e9 3f 04 eb 61 91 c3 6f 7f 84 f3 13 f8 f6 1c 6e 56 f0 ...p.E.........?..a..o.......nV.
0140 db 4b f8 c7 ef e1 c7 6b b9 e6 4f de 43 5d 93 e8 a7 be 6c 51 82 77 f2 45 69 0a be 01 eb 1e cf 6f .K.....k..O.C]....lQ.w.Ei......o
0160 1a db ae 7d 38 af 34 44 0a 1c 42 64 12 3d ff 1e eb e6 b7 8d 97 d2 f5 b5 c7 f9 31 4c 8f 48 9a 86 ...}8.4D..Bd.=............1L.H..
0180 44 79 92 77 63 92 c8 91 d8 86 e4 57 53 12 67 49 f2 9c 64 10 91 bc 3d 21 49 62 92 b2 24 99 a4 24 Dy.wc......WS.gI..d...=!Ib..$..$
01a0 6f 62 92 55 49 32 8c 48 4e 87 24 65 41 52 56 10 3d f5 65 29 9a d8 28 70 9a 32 87 41 04 4a 79 0a ob.UI2.HN.$eARV.=.e)..(p.2.A.Jy.
01c0 fb e5 fc a6 a1 d9 7c ed c3 f9 ca 85 eb 34 44 fa 65 f7 58 37 bf 6d 6c 7b d6 a7 e8 fa da 23 8b c1 ......|......4D.e.X7.ml{.....#..
01e0 18 28 6b a1 25 8d 60 b5 82 0b 0f cb 02 aa 02 d2 04 de bd 81 34 96 6b 56 25 4c 0c b8 06 7e b9 11 .(k.%.`.............4.kV%L...~..
0200 c6 ae 6b 98 27 30 1e 6d 60 80 38 15 ae b7 ce 13 27 1a e5 1d a9 56 d8 e8 cb f9 4d 43 b1 f9 da 87 ..k.'0.m`.8.....'....V....MC....
0220 f3 ce 41 92 c0 72 09 56 43 51 c2 d8 3c ef 1e eb e6 b7 8d 6d cf fa 14 5d af 31 b4 82 a3 21 0c 62 ..A..r.VCQ..<......m...].1...!.b
0240 b0 16 46 03 38 99 c2 30 83 f1 20 48 b1 04 fc 42 98 60 3a 12 a6 8d 22 98 8e 21 9c 66 0c 33 61 a6 ..F.8..0...H...B.`:..."..!.f.3a.
0260 a7 57 d0 2b 5c 03 de 82 b7 1e e7 34 f3 4a 3d 9a df 34 b6 5d fb 70 5e 76 bb 66 10 19 86 46 93 a2 .W.+\......4.J=..4.].p^v.f...F..
0280 9f 7d 8f 75 f3 5b c7 0b e9 fa ea c3 83 52 72 04 a5 09 78 64 11 27 03 91 0a ab 12 14 90 25 9d c4 .}.u.[.......Rr...xd.'.......%..
02a0 ca 12 f9 8c f3 70 7c 04 b1 09 d2 a2 82 c9 70 83 04 18 18 85 35 9a c6 37 24 69 8a 35 11 51 5d 12 .....p|.......p.....5..7$i.5.Q].
02c0 a9 2f e7 37 72 ab 51 1b af 7d 38 5f 57 f5 a3 1d a8 9b e7 dd 63 dd fc b6 b1 ed 59 9f a2 eb 35 86 ./.7r.Q..}8_W.......c.....Y...5.
02e0 73 b2 8b b5 92 c5 76 41 47 a9 1b c8 8e c2 ae 56 e0 bd 88 fb a2 12 09 60 ad 30 8f f7 f2 2f 8e 64 s.....vAG......V.......`.0.../.d
0300 fe 49 09 50 35 0a 65 3d 5a c1 20 76 98 bc c0 b8 c7 f3 db c4 d5 a6 6b 1f ce af db 81 cf bd c7 ba .I.P5.e=Z..v..........k.........
0320 f9 6d e3 a5 74 bd ca 50 f2 bb 9a a0 94 5a 27 8b 6f 9d ec f0 a3 81 2c 70 f8 a8 30 8a 12 eb a0 65 .m..t..P.....Z'.o.....,p..0....e
0340 9e 34 86 93 89 cc 3f 29 01 8c 89 51 ae a6 f1 50 96 06 63 e4 02 c7 97 f3 9b c6 b6 6b 1f ce af 93 .4....?)...Q...P..c........k....
0360 18 b9 7d de 3d d6 cd 6f 1b db 9e f5 29 ba 5e 63 18 25 ca 60 12 43 e3 20 8b 64 c1 8d 96 7f 4a 09 ..}.=..o....).^c.%.`.C...d....J.
0380 43 28 25 e7 fe 20 95 85 cf 62 61 08 c2 b1 11 69 28 ab 0d 12 c0 da 1a 8f 28 41 69 6a b1 d6 d1 38 C(%......ba....i(.......(Aij...8
03a0 ff 68 7e a3 19 b8 e5 da 87 f3 eb 76 e0 73 ef b1 6e 7e db 78 29 5d af 35 b4 16 5b 5f 79 88 63 59 .h~........v.s..n~.x)].5..[_y.cY
03c0 f8 61 26 3b bb b1 d0 34 a2 1f b4 22 7f 55 ca 7b ce 8b 4e 30 4c e5 bd b2 de c0 00 c6 c4 a8 2f 76 .a&;...4...".U.{..N0L........./v
03e0 b1 26 d2 ea d1 fc 6e 12 60 fd b5 bb cc ff 3e ee b1 93 04 78 01 5d af a2 03 88 2e 48 d9 88 32 b7 .&....n.`.....>....x.].....H..2.
0400 cc 45 fc 97 95 2c b0 51 22 1d 5a 7d c1 7a c8 4b 58 ac 64 c1 9d 97 ff bd 17 e9 f0 e4 11 90 37 35 .E...,.Q".Z}.z.KX.d...........75
0420 89 6f 18 8e 8f 48 7c 43 c9 84 a2 5c 42 bd 20 c9 14 ae 76 ac aa d5 46 62 0b 6f b0 4d 43 16 2b 9a .o...H|C...\B.....v...Fb.o.MC.+.
0440 aa 22 c9 6a 56 a5 43 2b b8 aa 6a 62 ad 30 ae a2 c0 11 6b 45 ed a0 b0 16 63 3d 78 d0 a6 5e 3b b7 .".jV.C+..jb.0....kE....c=x..^;.
0460 0b 5d 05 31 b1 56 c4 f1 f6 95 52 66 f9 22 ba 5e 4d 02 00 c7 23 f8 f9 4a c4 b9 d1 a2 ec 5d dc 8a .].1.V....Rf.".^M...#..J.....]..
0480 66 1f 47 77 46 03 59 24 0c 61 c3 ee 5f e4 b0 5c c1 62 b4 c5 0f 40 b1 82 34 a1 5e 2c 71 51 86 77 f.GwF.Y$.a.._..\.b...@..4.^,qQ.w
04a0 4b 6c 95 53 e1 59 cc 3d 71 e4 b7 ba 42 aa da 41 ac 30 a5 a5 70 5f 5e d7 be e7 f1 77 af 1b 17 d3 Kl.S.Y.=q...B..A.0..p_^....w....
04c0 2c 4a 32 a3 89 23 05 45 41 63 06 8f e6 76 a1 ab bd 27 ab 62 eb 0f 7a 35 77 2f a2 0b aa d7 91 02 ,J2..#.EAc...v...'.b..z5w/......
04e0 1e 6e 66 f0 f1 16 4c 2a 0c 30 48 61 12 6c fe fb 4a 60 51 c3 c7 2b b8 0c ce 23 ad 61 3c 84 41 26 .nf...L*.0Ha.l..J`Q..+...#.a<.A&
0500 9f 7b da 13 98 c4 64 89 c6 eb 88 d8 7b 92 c9 11 6a e1 68 8a 82 c8 80 ad c5 29 b2 d1 c3 36 90 2f .{....d.....{...j.h......)...6./
0520 c8 74 4c 55 55 5f 5c d7 be d7 54 dd 6b 7c 4d 74 94 62 ac c7 79 d0 59 4c a2 0c 93 0c 6c e5 30 51 .tLUU_\...T.k|Mt.b..y.YL....l.0Q
0540 14 6c db ed 74 b5 f7 7c 7b 72 b2 dd 13 18 bf 8c ae d7 1a 4a 89 9f bf d1 f0 fd 4d 38 6e ad 38 a8 .l..t..|{r.........J......M8n.8.
0560 f2 52 9c 3f 77 12 20 81 df 9c c3 c7 a2 d3 09 ea 1a ae 66 f2 dc 4f 32 40 41 c3 72 d9 a0 22 0b 5a .R.?w.............f..O2@A.r..".Z
0580 71 b4 ca 99 af 0a 70 60 8d d8 9e 66 8b 22 a4 ac 88 9e b9 0a fe f5 7b d7 d9 f0 5e 74 ef f5 ba 9d q.....p`...f."........{...^t....
05a0 96 ab 14 95 39 94 b2 54 ae c6 e0 77 a2 ab bd e7 22 5f 6e 57 02 dd cb e8 7a 95 e1 45 c9 5b ae 84 ....9..T...w...."_nW....z..E.[..
05c0 69 55 09 79 10 44 47 43 11 f7 ad bb 5a 79 58 e5 72 fe 0f ac b8 82 23 03 3e 12 93 11 b5 c9 0a 68 iU.y.DGC....ZyX.r.....#.>......h
05e0 40 19 48 95 63 9c 3a 8a e5 9c 54 3f 0e 8c 6c 1a 49 14 7e 58 bd 3e a0 a2 f4 97 af 93 24 e2 cd 24 @.H.c.:...T?..l.I.~X.>......$..$
0600 25 8d 0d 71 9c 90 26 31 6f 26 5d 70 06 bb 3b 5d ed 3d c7 83 d1 d6 df f4 a5 74 bd 96 1f a0 55 e4 %..q..&1o&]p..;].=.......t....U.
0620 9a 06 46 b1 bc 4e 63 18 24 62 0d 68 dd 49 80 c6 ca 31 10 6b 79 7f b6 12 97 f1 68 20 b1 84 68 03 ..F..Nc.$b.h.I...1.ky.....h...h.
0640 a3 61 34 e4 f6 e1 99 af 1e 05 46 b6 13 ed be 30 61 ee 5f 97 de 53 d2 f3 a2 7a bc db e7 09 c3 18 .a4.......F....0a._..S...z......
0660 8c 83 95 85 f8 99 74 5d 2d cb dd 14 ab 17 d0 f5 5a 23 32 70 32 06 b5 12 91 5f 35 b2 b0 df 7f 12 ......t]-.......Z#2p2...._5.....
0680 db 7f 94 75 cc 32 cc e0 c4 c3 f5 5c 94 c3 db a5 2c 87 73 a2 37 e8 4d e6 86 6d a3 4e 71 b7 0b 1f ...u.2.....\....,.s.7.M..m.Nq...
06a0 86 4c 77 09 b3 36 1b 42 ad f7 5f af db ed 62 88 8b 4b df fb dd e9 ba 0b f1 66 db 7f d0 17 d3 f5 .Lw..6.B.._...b..K.......f......
06c0 8a 7e 80 61 26 ce 1d 8f ec e8 2c 91 5d 7d 94 75 a1 6a 85 f8 09 86 99 fc 11 69 38 39 92 38 c2 d1 .~.a&.....,.]}.u.j.......i89.8..
06e0 40 24 82 de 28 be 4d f7 e0 ad 88 7d 18 18 d9 16 66 4d 8c 46 a9 f5 01 95 c4 e8 2f 5e 5f cd bb ef @$..(.M....}....fM.F....../^_...
0700 a9 9c 3c dc fd 1f 3f 4d 76 a7 eb ee bb 77 f0 d8 bd 94 ae 57 51 01 c2 a6 33 ba f3 f9 a7 49 70 f9 ..<...?Mv....w.....WQ...3....Ip.
0720 6a b8 5d 89 32 88 97 a3 42 2b f9 2c e1 b7 1a 04 d5 a5 6c e0 7a b1 e1 08 b0 0d 58 84 6b 8c 82 da j.].2...B+.,......l.z.....X.k...
0740 8b 8b f1 28 f9 32 64 ba 4b 98 d5 b9 a7 43 c3 c9 bd d7 77 bb 3d 04 2c 9c 82 8b 19 1c 25 72 04 34 ...(.2d.K....C....w.=.,.....%r.4
0760 56 16 7d 17 ba ee ee bf 83 b2 1e 27 ea 45 74 bd 86 f6 9f 85 4d 60 ad 88 fe c8 08 7d d6 86 85 0e V.}........'.Et.....M`.....}....
0780 e4 46 46 76 b8 0a 5a bf d2 e1 90 0c cf a0 82 39 f9 b4 0e 10 25 a4 5a 11 f9 9a 24 53 e4 2b 87 8e .FFv..Z........9....%.Z...$S.+..
07a0 09 61 50 8f 47 33 6f 76 08 b3 5a e1 26 ef d5 17 d7 99 58 de 9b 5b 75 f7 fa cd 04 f2 95 10 96 26 .aP.G3ov..Z.&.....X..[u........&
07c0 60 3c 8c 54 13 be 1f 52 0d 85 de 8d ae f6 9e 17 b3 7c fb ae b2 2f a3 eb ab ef 7e 0f 55 0d 9f af `<.T...R.........|.../....~.U...
07e0 25 ac 9b 25 8a 61 2a a6 a9 43 c4 7f cb 1c ce 89 05 f0 53 23 4c 33 19 0a 63 38 2f cc f1 26 e4 06 %..%.a*..C........S#L3..c8/..&..
0800 44 db 9c 38 f5 03 07 4e 62 f4 17 81 91 5d c2 ac 85 f3 64 5a af 0d b5 9a 88 bb d7 9f 66 cd a3 dd D..8...Nb....]....dZ........f...
0820 de e8 f5 0e 9e 6d 74 b5 f7 ac 16 d5 0e 3a c0 cb e8 7a 0d 06 c8 2b d0 51 42 a4 1c a7 91 15 45 2e .....mt......:...z...+.QB.....E.
0840 04 88 ca 4a fc fe 71 04 b5 85 b2 d1 54 3e c1 53 31 48 c4 d3 19 47 b2 59 96 79 38 22 36 39 71 e2 ...J..q.....T>.S1H...G.Y.y8"69q.
0860 e8 b1 b2 f5 30 30 b2 4b 98 d5 37 4f 87 86 ef bf 7e 93 34 1c 65 1e 85 ec 76 1f 25 8f be 7f 57 ba ....00.K..7O....~.4.e...v.%...W.
0880 da 7b a6 83 ed 3f ec 4b e9 7a 9d 23 40 f1 fe 6d 4a 9a 18 3e 5c 78 9c 13 bd 20 8e e0 7a 09 9f ae .{...?.K.z.#@..mJ..>\x......z...
08a0 c5 2d 6c 0c 4c 8e 14 ef ce 33 66 4b 58 14 21 27 20 e8 06 9f 6e e0 6a be 41 02 b4 4e 9c 87 0e 9c .-l.L....3fKX.!'....n.j.A..N....
08c0 87 21 d3 5d c2 ac 4a 3f 1d 1a 8e b4 ba 7b fd d0 b4 ab 6a 47 aa d6 3b 78 b6 d1 d5 de 73 27 25 f0 .!.]..J?.....{....jG..;x....s'%.
08e0 85 74 bd 8e 17 d0 13 f9 25 91 18 24 e4 55 70 b6 ad e0 bb f3 10 e0 09 c9 22 46 39 12 37 47 29 4f .t......%..$.Up........."F9.7G)O
0900 59 4b f0 68 b6 12 69 f1 ee 54 8e 89 68 93 15 50 5b 51 7e ee 2b 5b a3 a1 e2 b6 a9 ee 52 a8 37 9a YK.h..i..T..h..P[Q~.+[......R.7.
0920 81 c5 1c a3 e5 7c 5a 56 16 a2 f2 5e fa 75 49 ed bc e4 b5 0d 1b 6a a7 c4 16 7f e0 ce 55 d5 c3 ef .....|ZV...^.uI......j......U...
0940 df 8d ae da 15 e1 de db 93 02 57 fe 65 74 bd 92 23 10 ef 1c e3 a1 30 c0 32 87 e1 00 cc 3c d0 e8 ..........W.et..#.....0.2....<..
0960 c4 e4 93 f3 de 63 94 e5 74 0a 3f 5f ca e7 f2 4a 72 02 63 03 d5 26 25 70 9b a3 e4 b9 76 eb ba 6b .....c..t.?_...Jr.c..&%p....v..k
0980 1f ce af 73 17 3f f7 1e 7f 08 7a 37 d1 f5 5a d1 40 8b c4 b9 ac 0b 8b 59 c3 df fd 00 da c0 3f 78 ...s.?....z7..Z.@......Y......?x
09a0 d3 f9 01 14 a2 ec e5 95 78 03 95 12 25 72 9e c3 e9 64 83 0e d0 e3 02 f6 0f 17 d0 2e be 0e 21 e0 ........x...%r...d............!.
09c0 d8 88 cd 7f b3 10 1d e0 57 6f 65 f1 5b 2f a6 d1 f2 d9 38 f8 0c 3e 5d 8b b4 3c 1e c3 af cf c5 29 ........Woe.[/....8..>]..<.....)
09e0 d4 e3 02 38 1c 5c 40 1b f5 fb ed 87 90 d7 37 86 55 25 ae df d9 52 f4 80 38 0a f6 3f 70 bb 80 eb ...8.\@.......7.U%...R..8..?p...
0a00 5b d9 e9 59 0a 93 23 98 2f c5 7d 3c 5b c1 f9 b4 c7 05 ec f4 ac fb 84 0b 50 4a 12 3a 87 49 27 e6 [..Y..#./.}<[...........PJ.:.I'.
0a20 8d 16 89 35 1a c8 6e 6f 75 80 24 91 c4 91 d4 c0 65 88 05 f8 c0 c8 93 61 60 e8 6d 4e 9c a7 1c 2c ...5..nou.$.....e......a`.mN...,
0a40 ed fc 66 07 cb e6 6b 1f ce af db ed de ba 67 dd 63 dd fc 76 cd ea a5 74 bd 0e 03 8c 87 c2 00 65 ..f...k.......g.c..v...t.......e
0a60 25 62 5c 07 2f df 6c 29 ce a0 61 38 9a e3 10 34 b2 8d 7c 2e 89 e4 28 a8 6a 91 16 e3 ac c7 05 ec %b\./.l)..a8...4..|...(.j.......
0a80 f4 ac fb 84 0b 80 2e 0f 63 96 4b 1a d8 a9 92 45 3f 3f f9 52 a9 53 21 7d 3c 6f 44 02 34 21 7b f8 ........c.K....E??.R.S!}<oD.4!{.
0aa0 64 0c a7 e3 a0 23 6c 73 e2 f4 b8 80 3d c5 05 84 d8 44 1d 2c 92 45 0e 1f 2f c5 b9 d3 ce a9 20 ee d....#ls....=....D.,.E../.......
0ac0 75 48 15 d7 5a 2c 82 cb 5b 51 08 17 45 8f 0b d8 e9 59 f7 09 17 e0 bd 88 fa c6 8a 43 47 ab e0 11 uH..Z,..[Q..E....Y.........CG...
0ae0 0d c0 8f 36 60 05 b2 e8 57 33 b1 58 14 12 02 2e 2a f9 9c f3 5b 72 02 ad ad 05 5c 10 72 e5 f3 a5 ...6`...W3.X....*...[r....\.r...
0b00 f8 5b ad ff 72 7e 5b a6 cd a6 6b 1f ce b7 3b 30 5f 16 a0 15 95 57 cf be c7 ba f9 6d 63 db b3 3e .[..r~[...k...;0_....W.....mc..>
0b20 45 d7 2b 09 00 6c d8 f9 b5 15 8d 3f 8d 25 48 f5 dd 37 c2 b8 ea 81 d5 e0 bc b8 86 b3 b8 43 05 7d E.+..l.....?.%H..7...........C.}
0b40 7b 16 40 a3 fb 24 01 d6 cd 57 75 f5 ea 12 e0 29 ba 5e 33 23 08 c4 94 8b 22 51 ea 9a 80 fd 5b 15 {.@..$...Wu....).^3#...."Q....[.
0b60 a2 ed 2b 3a 74 d0 b2 10 f1 5f 54 62 2d f8 00 27 2b 5d 8f 0b 90 5d 75 40 b8 00 ef 65 21 b5 16 4d ..+:t...._Tb-..'+]...]u@...e!..M
0b80 1e 64 91 ad 15 1b ff 62 26 76 3f 4a 98 62 55 08 03 2c 56 21 59 a4 92 e4 90 8b 1b 71 6c f5 b8 00 .d.....b&v?J.bU..,V!Y......ql...
0ba0 0e 0b 17 a0 14 4c 8f 64 87 ff f4 8b d8 fe c3 4c e6 87 19 9c 1b 31 f7 fc 5c fc 00 a7 53 59 74 ef .....L.d.......L.....1..\...SYt.
0bc0 c5 f6 af 9b 7b 99 56 aa c7 05 08 9d 87 84 0b 08 b9 7d 46 c3 d9 71 80 78 2b 11 ed 97 33 49 fe 68 ....{.V..........}F..q.x+...3I.h
0be0 43 e0 4a 89 2f 60 3c 80 7a 1a fc 05 4a b4 ff d9 0a de 9d f4 b8 00 51 02 0f 08 17 e0 ac d8 fe b1 C.J./`<.z...J.........Q.........
0c00 96 64 db ab 15 7c 17 aa 7d 9c 1f b7 d1 42 d9 f1 65 05 1f 2f e4 f9 3e 2f e1 f4 58 ee 71 34 80 b7 .d...|..}....B..e../..>/..X.q4..
0c20 d3 70 7c 3c f9 a3 dc cb bf 4f 52 45 1e f2 ef 2b be 0c c3 6e 1a 6d 48 d9 28 f0 7a 7d 58 b7 28 bb .p|<.....ORE...+...n.mH.(.z}X.(.
0c40 d7 89 89 1e ed f6 64 d0 a5 63 dd 2d d6 0e 74 b5 f7 dc 15 17 f0 12 ba f8 e9 15 82 41 5a c4 7e 16 ......d..c.-..t............AZ.~.
0c60 81 49 24 a4 db 6a fe 55 23 e1 e1 51 38 12 e2 58 8e 0b e7 e0 aa ec e2 18 de 4b 34 50 6f 02 86 b4 .I$..j.U#..Q8..X.........K4Po...
0c80 3e e3 dc 7a ae e6 8e 46 79 9a 7b ae df 36 23 67 37 b1 e5 9e bc ee 61 fe 7d e9 1a ac aa c9 5d 4e >..z...Fy.{..6#g7.....a.}.....]N
0ca0 41 b3 36 23 f7 39 74 3d 07 17 f0 5c ba 5e eb 08 48 63 51 fc ae 6f a1 2e 64 61 15 62 f3 13 16 be A.6#.9t=...\.^..HcQ..o..da.b....
0cc0 3d 02 06 89 e8 00 ab a5 30 f8 20 81 65 29 aa 51 8f 0b 68 17 fb 90 70 01 21 a9 d3 84 62 51 79 09 =.......0...e).Q..h...p.!...bQy.
0ce0 3f 5f cb 11 70 7a 2c 8a 5e eb fd d6 c1 42 48 13 c9 8e fe e9 52 2c 87 c9 48 2c 85 28 ea 71 01 c0 ?_..pz,.^....BH.....R,..H,.(.q..
0d00 81 e1 02 80 ab 85 d0 93 86 bc 04 8f ec f2 aa ec a4 41 7b 24 5c 2f 44 31 54 08 68 f4 76 25 05 a2 .................A{$\/D1T.h.v%..
0d20 da 98 42 8f 0b e0 70 70 01 6d 92 87 0b 41 9d b6 0a 88 0e c9 21 ab 4a 00 1f e3 20 05 8c 91 df cc ..B...pp.m...A......!.J.........
0d40 04 9f c0 30 0b 9b 46 09 54 ac 71 3d 2e 20 84 ad 0f 03 17 d0 fa f7 ab 52 82 3f 69 a2 38 9d 40 92 ...0..F.T.q=...........R.?i.8.@.
0d60 78 66 2b 59 60 e7 84 21 5c 70 18 c5 1a ea 14 4e a7 8a 41 e2 19 0d 84 99 b3 54 a4 47 8f 0b e0 70 xf+Y`..!\p.....N..A......T.G...p
0d80 70 01 20 0b 6c 14 78 14 91 51 e2 9e c6 d3 04 bd 45 21 ae 61 ef 65 53 c4 46 c4 c4 20 d5 ac 0a cb p...l.x..Q......E!.a.eS.F.......
0da0 20 09 d8 02 1d 5c c4 9b 9c 38 3d 2e 60 bf 70 01 00 26 32 64 83 14 a5 14 8b 95 a7 aa c3 f3 3b 81 .....\...8=.`.p..&2d..........;.
0dc0 81 47 26 1c b9 0a d2 41 42 9a 24 94 35 14 95 97 85 57 41 89 65 0b 34 ac c7 05 ec 21 2e 40 c1 20 .G&....AB.$.5....WA.e.4....!.@..
0de0 d6 78 9f 70 bd a8 71 d6 63 b4 27 09 e1 e0 c6 76 a0 51 a3 15 e3 34 66 96 83 b7 15 b6 f1 1c 4d c4 .x.p..q.c.'....v.Q...4f.......M.
0e00 0a b0 56 3e 9f c5 3d 2e 00 38 2c 5c c0 90 06 53 2f 59 35 8e e3 51 a8 04 6a 3a 85 ef f3 b5 98 87 ..V>..=..8,\...S/Y5..Q..j:......
0e20 91 f2 4c 7d ce 0f a5 64 0b 0d 42 01 89 45 2e d2 f3 66 11 cc c4 e7 78 a0 7a 5c c0 eb e3 02 0a 3c ..L}...d..B..E...f....x.z\.....<
0e40 c7 43 4f 86 9c f1 69 b0 06 4e 8e e0 6c 22 c9 22 6d ce c0 52 39 de 1f 87 6a a2 5e b4 fe 34 16 37 .CO...i..N..l"."m..R9...j.^..4.7
0e60 70 12 85 a8 e2 36 27 4e 8f 0b d8 23 5c 40 00 87 ae 0a 11 e5 7f fb 03 fc 78 21 0b d9 fa 05 ce a6 p....6'N...#\@..........x!......
0e80 e2 eb 6f 1c dc e6 12 3c fd f1 02 fe ef cf 70 79 13 98 d8 88 33 e8 fc a4 c7 05 ec f4 ac fb 84 0b ..o....<......py....3...........
0ea0 28 6b f8 70 05 a3 04 fe e8 bd f8 44 9c 97 5c 80 e1 fb 60 a5 58 61 dc 9b 05 2c 91 78 c0 74 22 ba (k.p.......D..\...`.Xa...,.x.t".
0ec0 c1 b2 e8 ea 05 59 d7 e3 02 76 7a d6 7d c2 05 64 09 9c 8d bb ec 1f ab ba 5c bf bf ff 41 dc bb e7 .....Y...vz.}..d........\...A...
0ee0 c7 c2 ac 27 13 61 94 b2 96 a3 e1 f4 18 28 45 4f 28 2a f8 e6 b8 ef 17 b0 d3 b3 ee 4d bf 80 36 c0 ...'.a.......(EO(*.........M..6.
0f00 93 89 9b f7 36 87 c2 75 39 7f e3 21 c1 e4 eb 8e e0 2c 85 79 01 f3 3a e8 06 4e 94 c2 58 87 94 b2 ....6..u9..!.....,.y..:..N..X...
0f20 6d 4e 9c 1e 17 b0 67 fd 02 c2 51 34 3d 8a 50 c6 53 d6 96 51 a8 16 fa 66 2c 75 02 5b 04 90 14 87 mN....g...Q4=.P.S..Q...f,u.[....
0f40 56 9c 1d 47 f8 db 86 51 e6 59 16 82 0e 3e 3f 11 3d a1 c7 05 70 60 b8 00 2f 36 fe 9b 37 19 d3 71 V..G...Q.Y...>?.=...p`../6..7..q
0f60 44 55 85 5e 40 56 dc d4 d3 23 51 06 ef 98 3b 8b 38 7b 93 90 c6 9a cf d7 52 60 32 d2 62 2a 8e 07 DU.^@V...#Q...;.8{......R`2.b*..
0f80 3d 2e 60 a7 67 dd 27 5c 00 88 22 f7 cb ca 33 9f 83 b5 11 59 da 90 25 e2 09 bc 9a 75 d0 30 eb e0 =.`.g.'\.."...3....Y..%....u.0..
0fa0 d3 8d e7 62 09 f3 85 e1 6c 62 89 63 41 0c 5f cd 85 69 fa 7e 01 1c 60 bf 00 25 a5 5e b2 41 ca db ...b....lb.cA._..i.~..`..%.^.A..
0fc0 b3 21 69 d2 65 03 a5 b1 98 7a 9d b4 00 a3 35 67 a7 23 c6 23 d9 b0 cb 5c f4 81 8d c1 a0 1e 17 b0 .!i.e....z....5g.#.#...\........
0fe0 9f b8 00 0f e4 a5 47 9b 9a b3 a9 4c 14 56 22 ad 6d a8 17 df 39 83 f2 c2 31 ce 1a 92 54 a1 c3 fb ......G....L.V".m...9...1...T...
1000 2e a0 88 50 3d 2e 40 34 eb 03 eb 17 50 59 88 7c 85 6a 1a 56 a5 c4 03 da ba 00 b3 55 e7 a4 92 c4 ...P=.@4....PY.|.j.V.......U....
1020 50 c7 50 17 14 cb 92 61 ea 30 a1 93 58 db 54 aa c7 05 70 60 b8 00 60 3a 6c b3 7c 1c 2a 24 85 36 P.P....a.0..X.T...p`..`:l.|.*$.6
1040 4d c0 07 84 8c 20 8f 84 82 df 4e 41 2b cf cd c2 4b a4 30 74 15 99 8c b6 30 40 8f 0b d8 df 7e 01 M.........NA+...K.0t....0@....~.
1060 c6 b4 d6 4b 08 05 df 33 0f d3 a8 cb d5 54 4a a4 41 5d 77 18 41 df 32 47 24 21 e4 1e 17 c0 01 e1 ...K...3.....TJ.A]w.A.2G$!......
1080 02 54 97 02 76 39 93 12 30 d6 4b c9 b7 3b b3 34 24 04 b6 d0 f0 c6 c2 8f 97 70 33 87 38 e9 fa 0d .T..v9..0.K..;.4$........p3.8...
10a0 76 ee fa a7 7e 94 be 5f c0 fe f5 0b 08 48 e5 b6 5c 7c 1a ba 82 2a d5 e5 66 dc b5 8b 09 73 59 2a v...~.._.....H..\|...*..f....sY*
10c0 c9 a0 6d 12 cd 43 f4 70 df 2f e0 77 a0 eb 6b 8f 8f d7 f0 f9 4a bc 7d 69 04 51 0c cb 46 8a 3d fc ..m..C.p./.w..k.....J.}i.Q..F.=.
10e0 b2 82 0f d7 a2 0b 38 0f 9f ae 04 40 a2 42 42 68 94 8a 8f e0 7a 15 2a 87 5d 85 fc c1 4d 2e c7 1e ......8....@.BBh....z.*.]...M...
1100 17 b0 5f b8 80 ba 96 af 1d a6 b2 fb 67 a5 40 bc 4f c7 21 5d 2e 0e cd a0 90 24 99 24 92 cf 3a e0 .._.........g.@.O.!].....$.$..:.
1120 32 97 cf 0d 82 05 30 c8 04 40 d2 e3 02 38 1c 5c c0 37 c7 e2 ea 6d 1a 71 04 bd 1b 43 e4 84 21 7f 2.....0..@...8.\.7...m.q...C..!.
1140 35 95 60 56 1e c2 d9 6f 4f 44 52 94 25 4c 52 38 8e 05 44 32 8c e0 74 08 65 68 20 dd e3 02 38 1c 5.`V...oODR.%LR8..D2..t.eh....8.
1160 5c 40 1a cb 99 5f d6 9d c6 bf 5a c1 85 0f 1d c1 c5 42 e6 dd bd 62 91 ab 12 26 61 c3 fc 72 13 b2 \@..._....Z......B...b...&a..r..
1180 83 6a 98 27 5b fa 06 f6 b8 80 fd c4 05 e8 00 09 1b c4 62 a5 8c 06 70 32 15 1f c0 78 10 8e c2 04 .j.'[.............b...p2...x....
11a0 fc 42 98 60 1a 7a 09 46 11 4c 43 8f 00 83 7c de f4 b8 80 56 07 38 10 5c 40 70 fa 24 01 ef b7 cc .B.`.z.F.LC...|....V.8.\@p.$....
11c0 43 7a d7 00 7e 5c 88 72 dc 3a 89 5a c5 b6 f5 fa 39 2f ad e2 ae e7 92 3d 14 69 f8 e6 b4 c7 05 08 Cz..~\.r.:.Z....9/.....=.i......
11e0 a3 1e 10 2e a0 6d 01 5f 54 a1 ed 4b d0 83 ea 46 d2 bc 8d e9 7a 09 59 17 ea 02 85 34 b1 b6 71 a4 .....m._T..K...F....z.Y....4..q.
1200 f7 f2 1b 6e 2c 12 d5 e3 02 f6 b3 5f c0 5d 9d 40 05 4d 70 62 d5 61 13 1c 1f 71 87 11 68 0d 63 1d ...n,......_.].@.Mpb.a...q..h.c.
1220 fc 01 d6 77 cc d3 56 0a 53 aa c7 05 88 a2 74 40 b8 00 13 da c3 24 b1 98 d7 59 24 0b 6e 5a 87 5b ...w..V.S.....t@.....$...Y$.nZ.[
1240 28 0a d9 56 08 1b a4 b2 f0 59 dc 39 80 8c 91 dd 5f 56 3d 2e 60 27 7a ff 10 b8 80 3f fb 3f ff fe (..V.....Y.9...._V=.`'z....?.?..
1260 f9 4a c4 bf fe 2f 77 f4 2d 72 a1 25 8e 65 e1 87 99 ec ec b2 11 33 b1 45 0e 7b 2f 96 40 1a b7 29 .J.../w.-r.%.e.......3.E.{/.@..)
1280 62 5d df 80 b2 ee 71 01 3b 3d eb 3e f5 0b 70 c1 2a 2d 1b 31 fd 96 b9 d0 5a 56 5d a4 2f 89 3b 7d b]....q.;=.>..p.*-.1....ZV]./.;}
12a0 c1 7a b1 ff 17 2b 59 f0 b6 ed ac f7 a1 bd cc 26 27 4e 8f 0b d8 3f 5c 40 1b c0 39 1e c1 cf 57 22 .z...+Y........&'N...?\@..9...W"
12c0 ce 4d 28 02 79 71 2b 15 42 e2 a8 73 e7 67 91 30 84 0d bb 7f 91 4b 5e e0 62 24 7e 00 bd d1 89 63 .M(.yq+.B..s.g.0.....K^.b$~....c
12e0 5a 07 8e 42 19 4f 1a a9 47 f3 9b f5 95 cd d7 3e 9c 5f b7 03 9f 7b 8f 75 f3 5b 1d 41 2f a4 eb b5 Z..B.O..G......>._...{.u.[.A/...
1300 86 f3 52 f0 f9 e3 2d e4 a1 70 f4 20 95 18 7f 64 be 54 02 8b 1a 3e 5e c1 65 70 1e 69 2d e9 e3 83 ..R...-..p.....d.T...>^.ep.i-...
1320 6c 4b ad e0 be 5f c0 7e f6 0b 68 23 7d e7 27 d0 68 f8 fe 46 e6 9a 50 d9 2c 2f c5 f9 73 27 01 12 lK..._.~..h#}.'.h..F..P.,/..s'..
1340 f8 cd 39 7c 2c 3a 9d a0 0e c9 a3 69 dc e3 02 76 7a d6 bd ea 17 e0 45 c9 5b ae c4 2a 51 a5 e0 05 ..9|,:.....i...vz.....E.[..*Q...
1360 41 3c 84 49 dc 1d 53 ca 4b f7 d0 c5 0a 06 56 5c c1 91 01 1f 89 c9 88 ea 71 01 3b 3d eb be f5 0b A<.I..S.K.....V\........q.;=....
1380 68 15 b9 a6 81 51 2c af d3 00 ff 1e 66 dc 39 a9 7c 2b 19 ea 0e 0f 38 5b 89 cb 78 34 08 21 e5 6d h....Q,.....f.9.|+....8[..x4.!.m
13a0 4e 9c 1e 17 b0 7f b8 80 36 21 44 ad 44 e4 57 8d 2c ec f7 9f c4 f6 1f 65 1d b3 0c 33 38 f1 e2 02 N.......6!D.D.W.,......e...38...
13c0 8e 23 b8 5d 4a 7a 86 73 5b ea 04 f6 b8 80 3d c6 05 04 bb 3f 8b 65 97 8f 07 72 d6 8f 06 d2 33 a8 .#.]Jz.s[.....=....?.e...r....3.
13e0 35 51 15 e2 27 18 66 dc d5 18 3e 39 92 38 c2 d1 40 24 42 8f 0b e0 c0 70 01 e1 d4 6d 4b c1 f8 10 5Q..'.f...>9.8..@$B....p...mK...
1400 a1 d4 4a fc 15 b7 ab d0 51 2c 04 80 da f6 32 04 7f c6 20 95 50 7f eb 47 e8 71 01 1c 0e 2e 40 9a ..J.....Q,....2.....P..G.q....@.
1420 47 77 2d e2 ab 26 ec 76 2f 7f 9b 7b 67 7f 64 42 ff c0 a0 f5 b7 e9 e2 84 60 90 62 4b 91 a8 1e 17 Gw-..&.v/..{g.dB........`.bK....
1440 b0 7f b8 00 ef a5 04 dc e7 6b c9 f9 cf 12 c5 30 95 54 75 87 88 ff 96 39 9c 13 0b e0 a7 46 98 66 .........k.....0.Tu....9.....F.f
1460 32 ec 10 c3 91 11 24 71 d5 f4 b8 80 bb 4c 9b 97 e2 02 5e e4 d3 ff 1d 18 20 af 40 47 09 91 72 9c 2.....$q.....L....^.......@G..r.
1480 46 56 14 b9 10 20 2a 2b f1 fb c7 21 90 57 36 9a ca 27 78 2a 06 89 48 b8 38 12 7f c7 32 df 22 01 FV....*+...!.W6..'x*..H.8...2.".
14a0 7a 5c c0 fe e1 02 e4 08 50 bc 7f 9b 32 9b 55 7c b8 68 98 1c 89 5e 10 47 70 bd 94 fc ff b3 a9 b8 z\......P...2.U|.h...^.Gp.......
14c0 88 8f 32 c5 c9 49 c6 87 9f 2a 51 16 47 72 24 58 0f 9f 6e e4 c8 e8 fb 05 70 58 fd 02 94 f2 44 7e ..2..I...*Q.Gr$X..n.....pX....D~
14e0 49 84 e4 46 e6 55 d8 64 2b f8 ee 3c 04 78 42 ee bf 51 8e c4 cd 51 ca 53 d6 a2 f4 cd 56 22 2d de I..F.U.d+..<.xB..Q...Q.S....V"-.
1500 9d ca 31 d1 e3 02 7e 07 ba 5e c9 11 88 77 8e f1 50 18 60 99 c3 70 00 66 1e 72 16 02 ea 57 ce 7b ..1...~..^...w..P.`..p.f.r...W.{
1520 8f 51 96 d3 29 fc 7c 29 9f cb 2b c9 09 8c 8d 34 9b e8 71 01 1c 58 bf 80 10 0d f4 84 22 51 2e 2c .Q..).|)..+....4..q..X......"Q.,
1540 66 0d 7f f7 03 7c ff 4b 27 99 ef 97 8d cf ab 2e 0f e0 f3 8d 7c 76 b6 dc 92 11 e4 d6 a4 5e 3d 0c f....|.K'...........|v.......^=.
1560 8c ec 12 66 ad 71 68 bf 3e d4 6a 94 be 7b 7d 35 f7 8f 76 fb ba 8c dc 5d e8 6a ef b9 3b 2e e0 f9 ...f.qh.>.j..{}5..v....].j..;...
1580 74 bd 4a cb 18 04 d9 43 58 f8 c5 4a ca c1 c5 11 fc ea ad 2c 78 2b bd 8c 0e 28 a0 e0 33 f8 74 2d t.J....CX..J.......,x+...(..3.t-
15a0 47 da f1 58 2a 89 a5 d1 16 6c 60 63 1f 27 43 3c 0c 99 ee 12 66 35 ea e9 50 eb fd d7 eb 76 fb c5 G..X*....l`c.'C<....f5..P....v..
15c0 ac a3 a1 dd 7d bb d0 d5 de 73 67 5c c0 0b e8 7a 8d d1 58 f8 ed 07 e9 13 3c 1d 89 f4 1a 85 14 ef ....}....sg\...z..X.....<.......
15e0 f9 8a bb 82 d0 0a 01 8f fe ed ff 13 65 36 4b 61 12 3a 88 37 56 74 81 8d 39 81 3d 2e 60 3f 71 01 ............e6Ka.:.7Vt..9.=.`?q.
1600 4a 49 42 e7 30 e9 c4 bc d1 72 14 8c 06 b2 db 5b 1d 20 49 24 71 24 35 d2 3d bc ad 1e a6 b5 f8 05 JIB.0....r.....[..I$q$5.=.......
1620 f4 c6 ee e1 b5 a3 76 ee 51 73 26 6d 14 69 9a 12 0d 87 64 a9 d9 1a 66 8d 62 43 a3 1e 5f d7 be 77 ......v.Qs&m.i....d...f.bC.._..w
1640 ff f5 ba dd fe f0 fb 77 a5 ab bd 67 b5 83 cb ee a5 74 fd 3e c6 5f ff e9 5f 3e eb 7d a5 24 a1 63 .......w...g.....t.>._.._>.}.$.c
1660 3c 94 dd 7c 72 14 50 bf c8 99 5e d6 9d 79 1e df 43 11 9f 84 dd af 95 e8 0b f3 55 7b 74 6e 70 e2 <..|r.P...^..y..C.........U{tnp.
1680 f4 b8 80 3f 3c 2e e0 cf ff e6 2f 9e 64 82 bf fe d3 bf e4 cf ff e6 2f 1e c7 2e c2 02 cf 72 49 03 ...?<...../.d........./......rI.
16a0 cb 43 45 f0 f3 13 09 f2 dc 67 16 a3 42 cb f8 b9 b4 8b 35 5a 98 e2 74 12 74 84 8d 4e 9c e6 31 08 .CE......g..B.....5Z..t.t..N..1.
16c0 b3 0b 8c 68 a2 2d 41 71 63 62 d1 44 f5 e3 eb da f7 ee bf 5e b7 db 1f 7e ff ae 74 dd 7d f7 ce b8 ...h.-Aqcb.D.......^...~..t.}...
16e0 80 e7 d3 f5 fb 1a eb 98 e0 a9 c5 bf c3 05 04 ac 62 1d 9e 6f 91 8b 5e 70 35 ef e6 da 22 11 3a a4 ................b..o..^p5...".:.
1700 8a 6b 1d 98 e1 56 14 c2 45 d1 e3 02 80 fd c0 05 b4 4c 70 ff ff a7 dc c1 b3 a5 28 72 59 2c 8b 9b .k...V..E........Lp.......(rY,..
1720 06 30 88 73 1d f2 07 e4 77 b9 9a b5 f9 8e 5d 4d 61 17 ca cb 6e ce 09 dc e2 28 79 6e fc ba c7 05 .0.s....w.....]Ma...n....(yn....
1740 3c 8f 09 36 24 04 61 c3 ce af ad 44 fc d2 58 ce f9 ef be 79 5c 01 a4 ad 0d 64 8c 30 4c 8b 0a fa <..6$.a....D..X....y\....d.0L...
1760 f6 2c f4 1d de e6 c4 e9 71 01 5f 17 17 b0 69 f1 ef ff ae 10 4a c2 45 a2 d4 35 b6 ab 20 5e 35 c1 .,......q._...i.....J.E..5...^5.
1780 09 14 d0 41 6d 93 a8 a2 92 e7 f2 01 4e b6 31 1f a0 c7 05 ec 27 2e c0 87 76 70 5a 8b 26 0f b2 c8 ...Am.......N.1.....'...vpZ.&...
17a0 d6 0a ea f7 62 26 0a 1e a1 34 cc aa 90 85 5e ac 24 59 a4 a8 c4 89 74 71 23 0c fd 24 03 fc d5 f7 ....b&...4....^.$Y....tq#..$....
17c0 f9 13 1a de 97 29 56 ff fd 9f ff 8b 67 90 5f 3f 73 de fe 1e ee 51 f3 57 cf a2 f1 a5 74 7d 3d 3f .....)V.....g._?s....Q.W....t}=?
17e0 c0 f4 48 76 f8 4f bf 88 ed 3f 0c cd a2 87 19 9c 1b 91 50 7e 2e 7e 80 d3 a9 2c ba f7 62 fb d7 cd ..Hv.O...?........P~.~...,..b...
1800 bd ca 2b 9b cc c0 7e 7c 9d f1 5c 3f 40 9b db 97 44 70 76 2c f9 80 5a 89 68 bf 9c 85 aa e1 f7 9a ..+...~|..\?@...Dpv,..Z.h.......
1820 47 c7 46 3e 73 3a ed aa 84 b5 51 c1 51 d2 33 c0 ab 8f e7 fa 01 9c 15 db ff ea 56 82 6c 9f 17 01 G.F>s:....Q.Q.3...........V.l...
1840 1d 6c c4 bf 3f 1e ca 19 2f 65 62 e1 e3 85 f8 09 3e 07 cb 81 60 0d bc 9d 76 b1 85 7e ec 21 13 3c .l..?.../eb.....>...`...v..~.!.<
1860 65 0d 68 2d 62 7f 32 12 70 47 96 76 9a 7f d5 48 42 48 59 87 dd 1f cb 71 71 7c 24 8c d1 ea 2f de e.h-b.2.pG.v...HBHY....qq|$.../.
1880 c3 3c 17 29 d0 33 c0 1e 32 c1 46 53 30 d8 fd 51 04 d7 b7 50 17 5d c7 f0 ab 99 bc 1f df 3b 02 06 .<.).3..2.FS0..Q...P.].......;..
18a0 89 e8 00 ab a5 9c ff 83 04 96 a5 28 87 1b d1 c1 fd 78 3d 26 d8 68 0a fa 2e c2 7a 34 14 17 ef cf ...........(.....x=&.h....z4....
18c0 d7 72 04 9c 86 26 50 2d 1a 4e 07 0b 21 4d 24 2a fa d3 a5 f8 02 26 23 b1 14 a2 a8 97 00 7b c9 04 .r...&P-.N..!M$*.....&#......{..
18e0 1b cd 40 e0 6a d1 f5 09 8c 8c cc 15 95 74 15 6f a5 41 7b 24 5c 2f da ca e2 12 3e be 5d 49 7d c0 ..@.j........t.o.A{$\/....>.]I}.
1900 36 a6 d0 4b 80 03 1b 26 b4 86 37 ba ab 02 a2 b5 68 fb ab 4a 00 1f e3 61 08 04 85 76 b2 26 f8 04 6..K...&..7.....h..J...a...v.&..
1920 86 19 77 4d 25 ae e7 5b 9a 46 f5 63 3f 47 dd c8 4e 5f e4 90 26 8a d3 89 62 94 49 ff c0 61 d6 45 ..wM%..[.F.c?G..N_..&...b.I..a.E
1940 4a 5d 70 18 95 95 b8 8c 4f a7 8a 41 80 8f a1 45 79 8c 4c cf 00 07 37 9c 0b 59 d6 28 22 a3 30 46 J]p.....O..A...Ey.L...7..Y.(".0F
1960 a1 90 dd dc e6 68 56 a1 04 8c 6b 44 32 a0 14 83 54 8b e2 97 88 94 d0 5a fc 01 3d 03 1c da 11 10 .....hV...kD2...T......Z..=.....
1980 19 b2 41 8a 52 8a c5 ca 53 d5 21 1f c2 09 0c 3c 32 a1 76 a0 82 74 90 90 26 49 68 26 e9 ef d2 c5 ..A.R...S.!....<2.v..t..&Ih&....
19a0 6c 08 65 3b df eb 00 87 35 14 0c 62 8d f7 09 d7 8b 1a 67 a5 5f 50 5b 1b b0 b1 1d 68 d4 68 c5 38 l.e;....5..b......g._P[....h.h.8
19c0 8d 99 e5 e0 6d 85 6d 3c 47 13 89 1f 58 2b 9f cf e2 5e 02 1c dc 18 d2 60 ea 25 75 ed 04 16 1e 2c ....m.m<G...X+...^.....`.%u....,
19e0 81 56 e1 fb 7c 2d d1 bf 48 79 a6 3e a7 2c 73 01 8a 86 02 12 ad d2 78 b3 80 eb 59 2f 01 0e 6e 14 .V..|-..Hy.>.,s.......x...Y/..n.
1a00 78 8e 87 9e 0c 49 84 4d 83 35 70 72 04 67 13 49 16 69 73 06 96 ca f1 fe 38 54 13 f5 a2 27 a4 b1 x....I.M.5pr.g.I.is.....8T...'..
1a20 b8 81 93 48 94 c4 9e 01 0e 69 04 70 e8 aa 80 da c1 0f 9f 45 8c 9f 9e 75 7e 81 b3 a9 30 c0 e5 42 ...H.....i.p.......E...u~...0..B
1a40 9a 4b 4f 2c 7c 9a c1 7c 01 6f de c0 70 28 c8 a0 c9 28 54 15 eb 7f d5 c3 1a 65 0d 1f ae 24 92 f7 .KO,|..|.o..p(...(T......e...$..
1a60 47 ef 25 30 ed bc e4 02 0c df 87 6a e6 56 02 42 37 0b 58 22 f1 80 e9 44 74 83 65 d1 d5 0b da dc G.%0.......j.V.B7.X"...Dt.e.....
1a80 37 b0 1f 7b 39 b2 04 ce c6 5d f6 8f 55 5d ae df df ff 20 ee dd f3 63 39 e7 4f 26 c2 28 65 2d 47 7..{9....]..U]........c9.O&.(e-G
1aa0 c3 e9 31 50 8a 9e 50 54 d2 81 a4 57 02 0f cd 10 50 52 e4 b1 6a 44 c4 17 ae cb f9 1b 0f 09 26 9f ..1P..PT...W....PR..jD........&.
1ac0 7c 36 32 e2 f0 99 17 30 af 83 6e e0 24 85 3c d6 21 a5 ac ff 49 0f cc 11 84 ec ee e9 51 84 32 9e |62....0..n.$.<.!...I.......Q.2.
1ae0 b2 b6 8c 52 31 ff de 8c a5 4e 60 8b 00 92 e2 d0 8a b3 e3 08 7f db 30 ca 3c cb 42 74 80 f3 93 00 ...R1....N`...........0.<.Bt....
1b00 da ed 7f d2 c3 53 04 8d 56 4c a6 19 6a 56 f3 e3 cf 56 7a 01 d9 00 5b 8b 3a 47 0f c0 20 8b 88 b2 .....S..VL..jV...Vz...[.:G......
1b20 84 d9 ca f1 f9 da b2 cc 61 94 4a 24 d1 da 9e 01 0e 72 2c 0b f8 65 e5 99 cf c1 da 88 2c 6d c8 12 ........a.J$.....r,..e......,m..
1b40 f1 04 5e cd 44 c4 13 c4 fd a7 1b cf c5 12 e6 0b c3 d9 c4 4a ab 38 23 00 12 6b 7b 1d e0 20 87 56 ..^.D..............J.8#..k{....V
1b60 52 ea 25 1b a4 bc 3d 1b 92 26 a2 13 2c 73 b1 f3 95 be 2f 2d c0 68 cd d9 e9 88 f1 48 f2 c9 97 b9 R.%...=..&..,s..../-.h.....H....
1b80 e8 03 91 e9 25 c0 21 9e 00 e4 a5 47 9b 9a b3 a9 4c 14 56 90 d7 6d a8 17 df 39 83 f2 c2 31 ce 1a ....%.!....G....L.V..m...9...1..
1ba0 92 54 a1 c3 fb 2e a0 88 e8 b3 82 0f 73 54 16 5c 53 a1 9a 9c 7c b5 42 2b 4f 1c 89 6d 5f d5 5d 3d .T..........sT.\S...|.B+O..m_.]=
1bc0 25 49 0c 75 28 5b 50 2c 17 e0 2c e6 5e 27 b1 a6 d7 01 0e d0 0c a4 6b 0d a7 70 a8 d0 4a ae 69 02 %I.u([P,..,.^'........k..p..J.i.
1be0 3e 20 64 04 79 24 14 fc 76 0a 5a 79 6e 16 5e 22 85 a1 ab c8 64 d4 b5 9e ef c7 81 0d 13 a0 61 55 >.d.y$..v.Zyn.^"....d.........aU
1c00 80 b0 f9 7b e6 61 1a 75 15 43 55 e8 34 6e 6d 87 11 f4 2d 73 44 a1 75 5c ff 73 1e d6 f6 6f a3 79 ...{.a.u.CU.4nm...-sD.u\.s...o.y
1c20 97 33 29 01 63 bd 94 7c bb 43 ea 87 84 c0 16 1a de 58 f8 f1 52 d2 c5 e3 a4 2b 1f 73 a7 50 f6 bf .3).c..|.C.......X..R....+.s.P..
1c40 ea e1 31 80 b9 57 f9 a3 2d 60 dd 66 02 fb 7b 85 4b 94 12 4f e0 74 d4 a5 8a b5 18 02 7f 8f 5f fa ..1..W..-`.f..{.K..O.t........_.
1c60 71 20 e3 9f bd c3 7f ba a0 fa f6 9b 50 ec c9 4b 96 af 01 3e ce e0 cf 7e 0d 4d 2d c7 c1 f7 9f a4 q...........P..K...>...~.M-.....
1c80 78 d4 bb 37 e2 f1 bb c9 25 74 7c bd 12 3f c0 b7 c7 e0 1c c9 ff 07 d6 b9 c5 e0 d7 f6 a7 4f 00 00 x..7....%t|..?...............O..
1ca0 00 00 49 45 4e 44 ae 42 60 82 ..IEND.B`.
>1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130
/* mini-gmp, a minimalistic implementation of a GNU GMP subset.

   Contributed to the GNU project by Niels Möller

Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
Free Software Foundation, Inc.

This file is part of the GNU MP Library.

The GNU MP Library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

The GNU MP Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
License for more details.

You should have received a copy of the GNU Lesser General Public License
along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */

/* NOTE: All functions in this file which are not declared in
   mini-gmp.h are internal, and are not intended to be compatible
   neither with GMP nor with future versions of mini-gmp. */

/* Much of the material copied from GMP files, including: gmp-impl.h,
   longlong.h, mpn/generic/add_n.c, mpn/generic/addmul_1.c,
   mpn/generic/lshift.c, mpn/generic/mul_1.c,
   mpn/generic/mul_basecase.c, mpn/generic/rshift.c,
   mpn/generic/sbpi1_div_qr.c, mpn/generic/sub_n.c,
   mpn/generic/submul_1.c. */

#include <assert.h>
#include <ctype.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "mini-gmp.h"


/* Macros */
#define GMP_LIMB_BITS (sizeof(mp_limb_t) * CHAR_BIT)

#define GMP_LIMB_MAX (~ (mp_limb_t) 0)
#define GMP_LIMB_HIGHBIT ((mp_limb_t) 1 << (GMP_LIMB_BITS - 1))

#define GMP_HLIMB_BIT ((mp_limb_t) 1 << (GMP_LIMB_BITS / 2))
#define GMP_LLIMB_MASK (GMP_HLIMB_BIT - 1)

#define GMP_ULONG_BITS (sizeof(unsigned long) * CHAR_BIT)
#define GMP_ULONG_HIGHBIT ((unsigned long) 1 << (GMP_ULONG_BITS - 1))

#define GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
#define GMP_NEG_CAST(T,x) (-((T)((x) + 1) - 1))

#define GMP_MIN(a, b) ((a) < (b) ? (a) : (b))
#define GMP_MAX(a, b) ((a) > (b) ? (a) : (b))

#define gmp_assert_nocarry(x) do { \
    mp_limb_t __cy = x;		   \
    assert (__cy == 0);		   \
  } while (0)

#define gmp_clz(count, x) do {						\
    mp_limb_t __clz_x = (x);						\
    unsigned __clz_c;							\
    for (__clz_c = 0;							\
	 (__clz_x & ((mp_limb_t) 0xff << (GMP_LIMB_BITS - 8))) == 0;	\
	 __clz_c += 8)							\
      __clz_x <<= 8;							\
    for (; (__clz_x & GMP_LIMB_HIGHBIT) == 0; __clz_c++)		\
      __clz_x <<= 1;							\
    (count) = __clz_c;							\
  } while (0)

#define gmp_ctz(count, x) do {						\
    mp_limb_t __ctz_x = (x);						\
    unsigned __ctz_c = 0;						\
    gmp_clz (__ctz_c, __ctz_x & - __ctz_x);				\
    (count) = GMP_LIMB_BITS - 1 - __ctz_c;				\
  } while (0)

#define gmp_add_ssaaaa(sh, sl, ah, al, bh, bl) \
  do {									\
    mp_limb_t __x;							\
    __x = (al) + (bl);							\
    (sh) = (ah) + (bh) + (__x < (al));					\
    (sl) = __x;								\
  } while (0)

#define gmp_sub_ddmmss(sh, sl, ah, al, bh, bl) \
  do {									\
    mp_limb_t __x;							\
    __x = (al) - (bl);							\
    (sh) = (ah) - (bh) - ((al) < (bl));					\
    (sl) = __x;								\
  } while (0)

#define gmp_umul_ppmm(w1, w0, u, v)					\
  do {									\
    mp_limb_t __x0, __x1, __x2, __x3;					\
    unsigned __ul, __vl, __uh, __vh;					\
    mp_limb_t __u = (u), __v = (v);					\
									\
    __ul = __u & GMP_LLIMB_MASK;					\
    __uh = __u >> (GMP_LIMB_BITS / 2);					\
    __vl = __v & GMP_LLIMB_MASK;					\
    __vh = __v >> (GMP_LIMB_BITS / 2);					\
									\
    __x0 = (mp_limb_t) __ul * __vl;					\
    __x1 = (mp_limb_t) __ul * __vh;					\
    __x2 = (mp_limb_t) __uh * __vl;					\
    __x3 = (mp_limb_t) __uh * __vh;					\
									\
    __x1 += __x0 >> (GMP_LIMB_BITS / 2);/* this can't give carry */	\
    __x1 += __x2;		/* but this indeed can */		\
    if (__x1 < __x2)		/* did we get it? */			\
      __x3 += GMP_HLIMB_BIT;	/* yes, add it in the proper pos. */	\
									\
    (w1) = __x3 + (__x1 >> (GMP_LIMB_BITS / 2));			\
    (w0) = (__x1 << (GMP_LIMB_BITS / 2)) + (__x0 & GMP_LLIMB_MASK);	\
  } while (0)

#define gmp_udiv_qrnnd_preinv(q, r, nh, nl, d, di)			\
  do {									\
    mp_limb_t _qh, _ql, _r, _mask;					\
    gmp_umul_ppmm (_qh, _ql, (nh), (di));				\
    gmp_add_ssaaaa (_qh, _ql, _qh, _ql, (nh) + 1, (nl));		\
    _r = (nl) - _qh * (d);						\
    _mask = -(mp_limb_t) (_r > _ql); /* both > and >= are OK */		\
    _qh += _mask;							\
    _r += _mask & (d);							\
    if (_r >= (d))							\
      {									\
	_r -= (d);							\
	_qh++;								\
      }									\
									\
    (r) = _r;								\
    (q) = _qh;								\
  } while (0)

#define gmp_udiv_qr_3by2(q, r1, r0, n2, n1, n0, d1, d0, dinv)		\
  do {									\
    mp_limb_t _q0, _t1, _t0, _mask;					\
    gmp_umul_ppmm ((q), _q0, (n2), (dinv));				\
    gmp_add_ssaaaa ((q), _q0, (q), _q0, (n2), (n1));			\
									\
    /* Compute the two most significant limbs of n - q'd */		\
    (r1) = (n1) - (d1) * (q);						\
    gmp_sub_ddmmss ((r1), (r0), (r1), (n0), (d1), (d0));		\
    gmp_umul_ppmm (_t1, _t0, (d0), (q));				\
    gmp_sub_ddmmss ((r1), (r0), (r1), (r0), _t1, _t0);			\
    (q)++;								\
									\
    /* Conditionally adjust q and the remainders */			\
    _mask = - (mp_limb_t) ((r1) >= _q0);				\
    (q) += _mask;							\
    gmp_add_ssaaaa ((r1), (r0), (r1), (r0), _mask & (d1), _mask & (d0)); \
    if ((r1) >= (d1))							\
      {									\
	if ((r1) > (d1) || (r0) >= (d0))				\
	  {								\
	    (q)++;							\
	    gmp_sub_ddmmss ((r1), (r0), (r1), (r0), (d1), (d0));	\
	  }								\
      }									\
  } while (0)

/* Swap macros. */
#define MP_LIMB_T_SWAP(x, y)						\
  do {									\
    mp_limb_t __mp_limb_t_swap__tmp = (x);				\
    (x) = (y);								\
    (y) = __mp_limb_t_swap__tmp;					\
  } while (0)
#define MP_SIZE_T_SWAP(x, y)						\
  do {									\
    mp_size_t __mp_size_t_swap__tmp = (x);				\
    (x) = (y);								\
    (y) = __mp_size_t_swap__tmp;					\
  } while (0)
#define MP_BITCNT_T_SWAP(x,y)			\
  do {						\
    mp_bitcnt_t __mp_bitcnt_t_swap__tmp = (x);	\
    (x) = (y);					\
    (y) = __mp_bitcnt_t_swap__tmp;		\
  } while (0)
#define MP_PTR_SWAP(x, y)						\
  do {									\
    mp_ptr __mp_ptr_swap__tmp = (x);					\
    (x) = (y);								\
    (y) = __mp_ptr_swap__tmp;						\
  } while (0)
#define MP_SRCPTR_SWAP(x, y)						\
  do {									\
    mp_srcptr __mp_srcptr_swap__tmp = (x);				\
    (x) = (y);								\
    (y) = __mp_srcptr_swap__tmp;					\
  } while (0)

#define MPN_PTR_SWAP(xp,xs, yp,ys)					\
  do {									\
    MP_PTR_SWAP (xp, yp);						\
    MP_SIZE_T_SWAP (xs, ys);						\
  } while(0)
#define MPN_SRCPTR_SWAP(xp,xs, yp,ys)					\
  do {									\
    MP_SRCPTR_SWAP (xp, yp);						\
    MP_SIZE_T_SWAP (xs, ys);						\
  } while(0)

#define MPZ_PTR_SWAP(x, y)						\
  do {									\
    mpz_ptr __mpz_ptr_swap__tmp = (x);					\
    (x) = (y);								\
    (y) = __mpz_ptr_swap__tmp;						\
  } while (0)
#define MPZ_SRCPTR_SWAP(x, y)						\
  do {									\
    mpz_srcptr __mpz_srcptr_swap__tmp = (x);			\
    (x) = (y);								\
    (y) = __mpz_srcptr_swap__tmp;					\
  } while (0)


/* Memory allocation and other helper functions. */
static void
gmp_die (const char *msg)
{
  fprintf (stderr, "%s\n", msg);
  abort();
}

static void *
gmp_default_alloc (size_t size)
{
  void *p;

  assert (size > 0);

  p = malloc (size);
  if (!p)
    gmp_die("gmp_default_alloc: Virtual memory exhausted.");

  return p;
}

static void *
gmp_default_realloc (void *old, size_t old_size, size_t new_size)
{
  mp_ptr p;

  p = realloc (old, new_size);

  if (!p)
    gmp_die("gmp_default_realoc: Virtual memory exhausted.");

  return p;
}

static void
gmp_default_free (void *p, size_t size)
{
  free (p);
}

static void * (*gmp_allocate_func) (size_t) = gmp_default_alloc;
static void * (*gmp_reallocate_func) (void *, size_t, size_t) = gmp_default_realloc;
static void (*gmp_free_func) (void *, size_t) = gmp_default_free;

void
mp_get_memory_functions (void *(**alloc_func) (size_t),
			 void *(**realloc_func) (void *, size_t, size_t),
			 void (**free_func) (void *, size_t))
{
  if (alloc_func)
    *alloc_func = gmp_allocate_func;

  if (realloc_func)
    *realloc_func = gmp_reallocate_func;

  if (free_func)
    *free_func = gmp_free_func;
}

void
mp_set_memory_functions (void *(*alloc_func) (size_t),
			 void *(*realloc_func) (void *, size_t, size_t),
			 void (*free_func) (void *, size_t))
{
  if (!alloc_func)
    alloc_func = gmp_default_alloc;
  if (!realloc_func)
    realloc_func = gmp_default_realloc;
  if (!free_func)
    free_func = gmp_default_free;

  gmp_allocate_func = alloc_func;
  gmp_reallocate_func = realloc_func;
  gmp_free_func = free_func;
}

#define gmp_xalloc(size) ((*gmp_allocate_func)((size)))
#define gmp_free(p) ((*gmp_free_func) ((p), 0))

static mp_ptr
gmp_xalloc_limbs (mp_size_t size)
{
  return gmp_xalloc (size * sizeof (mp_limb_t));
}

static mp_ptr
gmp_xrealloc_limbs (mp_ptr old, mp_size_t size)
{
  assert (size > 0);
  return (*gmp_reallocate_func) (old, 0, size * sizeof (mp_limb_t));
}


/* MPN interface */

void
mpn_copyi (mp_ptr d, mp_srcptr s, mp_size_t n)
{
  mp_size_t i;
  for (i = 0; i < n; i++)
    d[i] = s[i];
}

void
mpn_copyd (mp_ptr d, mp_srcptr s, mp_size_t n)
{
  while (n-- > 0)
    d[n] = s[n];
}

int
mpn_cmp (mp_srcptr ap, mp_srcptr bp, mp_size_t n)
{
  for (; n > 0; n--)
    {
      if (ap[n-1] < bp[n-1])
	return -1;
      else if (ap[n-1] > bp[n-1])
	return 1;
    }
  return 0;
}

static int
mpn_cmp4 (mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn)
{
  if (an > bn)
    return 1;
  else if (an < bn)
    return -1;
  else
    return mpn_cmp (ap, bp, an);
}

static mp_size_t
mpn_normalized_size (mp_srcptr xp, mp_size_t n)
{
  for (; n > 0 && xp[n-1] == 0; n--)
    ;
  return n;
}

#define mpn_zero_p(xp, n) (mpn_normalized_size ((xp), (n)) == 0)

mp_limb_t
mpn_add_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b)
{
  mp_size_t i;

  assert (n > 0);

  for (i = 0; i < n; i++)
    {
      mp_limb_t r = ap[i] + b;
      /* Carry out */
      b = (r < b);
      rp[i] = r;
    }
  return b;
}

mp_limb_t
mpn_add_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n)
{
  mp_size_t i;
  mp_limb_t cy;

  for (i = 0, cy = 0; i < n; i++)
    {
      mp_limb_t a, b, r;
      a = ap[i]; b = bp[i];
      r = a + cy;
      cy = (r < cy);
      r += b;
      cy += (r < b);
      rp[i] = r;
    }
  return cy;
}

mp_limb_t
mpn_add (mp_ptr rp, mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn)
{
  mp_limb_t cy;

  assert (an >= bn);

  cy = mpn_add_n (rp, ap, bp, bn);
  if (an > bn)
    cy = mpn_add_1 (rp + bn, ap + bn, an - bn, cy);
  return cy;
}

mp_limb_t
mpn_sub_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b)
{
  mp_size_t i;

  assert (n > 0);

  for (i = 0; i < n; i++)
    {
      mp_limb_t a = ap[i];
      /* Carry out */
      mp_limb_t cy = a < b;;
      rp[i] = a - b;
      b = cy;
    }
  return b;
}

mp_limb_t
mpn_sub_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n)
{
  mp_size_t i;
  mp_limb_t cy;

  for (i = 0, cy = 0; i < n; i++)
    {
      mp_limb_t a, b;
      a = ap[i]; b = bp[i];
      b += cy;
      cy = (b < cy);
      cy += (a < b);
      rp[i] = a - b;
    }
  return cy;
}

mp_limb_t
mpn_sub (mp_ptr rp, mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn)
{
  mp_limb_t cy;

  assert (an >= bn);

  cy = mpn_sub_n (rp, ap, bp, bn);
  if (an > bn)
    cy = mpn_sub_1 (rp + bn, ap + bn, an - bn, cy);
  return cy;
}

mp_limb_t
mpn_mul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl)
{
  mp_limb_t ul, cl, hpl, lpl;

  assert (n >= 1);

  cl = 0;
  do
    {
      ul = *up++;
      gmp_umul_ppmm (hpl, lpl, ul, vl);

      lpl += cl;
      cl = (lpl < cl) + hpl;

      *rp++ = lpl;
    }
  while (--n != 0);

  return cl;
}

mp_limb_t
mpn_addmul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl)
{
  mp_limb_t ul, cl, hpl, lpl, rl;

  assert (n >= 1);

  cl = 0;
  do
    {
      ul = *up++;
      gmp_umul_ppmm (hpl, lpl, ul, vl);

      lpl += cl;
      cl = (lpl < cl) + hpl;

      rl = *rp;
      lpl = rl + lpl;
      cl += lpl < rl;
      *rp++ = lpl;
    }
  while (--n != 0);

  return cl;
}

mp_limb_t
mpn_submul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl)
{
  mp_limb_t ul, cl, hpl, lpl, rl;

  assert (n >= 1);

  cl = 0;
  do
    {
      ul = *up++;
      gmp_umul_ppmm (hpl, lpl, ul, vl);

      lpl += cl;
      cl = (lpl < cl) + hpl;

      rl = *rp;
      lpl = rl - lpl;
      cl += lpl > rl;
      *rp++ = lpl;
    }
  while (--n != 0);

  return cl;
}

mp_limb_t
mpn_mul (mp_ptr rp, mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn)
{
  assert (un >= vn);
  assert (vn >= 1);

  /* We first multiply by the low order limb. This result can be
     stored, not added, to rp. We also avoid a loop for zeroing this
     way. */

  rp[un] = mpn_mul_1 (rp, up, un, vp[0]);
  rp += 1, vp += 1, vn -= 1;

  /* Now accumulate the product of up[] and the next higher limb from
     vp[]. */

  while (vn >= 1)
    {
      rp[un] = mpn_addmul_1 (rp, up, un, vp[0]);
      rp += 1, vp += 1, vn -= 1;
    }
  return rp[un - 1];
}

void
mpn_mul_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n)
{
  mpn_mul (rp, ap, n, bp, n);
}

void
mpn_sqr (mp_ptr rp, mp_srcptr ap, mp_size_t n)
{
  mpn_mul (rp, ap, n, ap, n);
}

mp_limb_t
mpn_lshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
{
  mp_limb_t high_limb, low_limb;
  unsigned int tnc;
  mp_size_t i;
  mp_limb_t retval;

  assert (n >= 1);
  assert (cnt >= 1);
  assert (cnt < GMP_LIMB_BITS);

  up += n;
  rp += n;

  tnc = GMP_LIMB_BITS - cnt;
  low_limb = *--up;
  retval = low_limb >> tnc;
  high_limb = (low_limb << cnt);

  for (i = n - 1; i != 0; i--)
    {
      low_limb = *--up;
      *--rp = high_limb | (low_limb >> tnc);
      high_limb = (low_limb << cnt);
    }
  *--rp = high_limb;

  return retval;
}

mp_limb_t
mpn_rshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
{
  mp_limb_t high_limb, low_limb;
  unsigned int tnc;
  mp_size_t i;
  mp_limb_t retval;

  assert (n >= 1);
  assert (cnt >= 1);
  assert (cnt < GMP_LIMB_BITS);

  tnc = GMP_LIMB_BITS - cnt;
  high_limb = *up++;
  retval = (high_limb << tnc);
  low_limb = high_limb >> cnt;

  for (i = n - 1; i != 0; i--)
    {
      high_limb = *up++;
      *rp++ = low_limb | (high_limb << tnc);
      low_limb = high_limb >> cnt;
    }
  *rp = low_limb;

  return retval;
}


/* MPN division interface. */
mp_limb_t
mpn_invert_3by2 (mp_limb_t u1, mp_limb_t u0)
{
  mp_limb_t r, p, m;
  unsigned ul, uh;
  unsigned ql, qh;

  /* First, do a 2/1 inverse. */
  /* The inverse m is defined as floor( (B^2 - 1 - u1)/u1 ), so that 0 <
   * B^2 - (B + m) u1 <= u1 */
  assert (u1 >= GMP_LIMB_HIGHBIT);

  ul = u1 & GMP_LLIMB_MASK;
  uh = u1 >> (GMP_LIMB_BITS / 2);

  qh = ~u1 / uh;
  r = ((~u1 - (mp_limb_t) qh * uh) << (GMP_LIMB_BITS / 2)) | GMP_LLIMB_MASK;

  p = (mp_limb_t) qh * ul;
  /* Adjustment steps taken from udiv_qrnnd_c */
  if (r < p)
    {
      qh--;
      r += u1;
      if (r >= u1) /* i.e. we didn't get carry when adding to r */
	if (r < p)
	  {
	    qh--;
	    r += u1;
	  }
    }
  r -= p;

  /* Do a 3/2 division (with half limb size) */
  p = (r >> (GMP_LIMB_BITS / 2)) * qh + r;
  ql = (p >> (GMP_LIMB_BITS / 2)) + 1;

  /* By the 3/2 method, we don't need the high half limb. */
  r = (r << (GMP_LIMB_BITS / 2)) + GMP_LLIMB_MASK - ql * u1;

  if (r >= (p << (GMP_LIMB_BITS / 2)))
    {
      ql--;
      r += u1;
    }
  m = ((mp_limb_t) qh << (GMP_LIMB_BITS / 2)) + ql;
  if (r >= u1)
    {
      m++;
      r -= u1;
    }

  if (u0 > 0)
    {
      mp_limb_t th, tl;
      r = ~r;
      r += u0;
      if (r < u0)
	{
	  m--;
	  if (r >= u1)
	    {
	      m--;
	      r -= u1;
	    }
	  r -= u1;
	}
      gmp_umul_ppmm (th, tl, u0, m);
      r += th;
      if (r < th)
	{
	  m--;
	  if (r > u1 || (r == u1 && tl > u0))
	    m--;
	}
    }

  return m;
}

struct gmp_div_inverse
{
  /* Normalization shift count. */
  unsigned shift;
  /* Normalized divisor (d0 unused for mpn_div_qr_1) */
  mp_limb_t d1, d0;
  /* Inverse, for 2/1 or 3/2. */
  mp_limb_t di;
};

static void
mpn_div_qr_1_invert (struct gmp_div_inverse *inv, mp_limb_t d)
{
  unsigned shift;

  assert (d > 0);
  gmp_clz (shift, d);
  inv->shift = shift;
  inv->d1 = d << shift;
  inv->di = mpn_invert_limb (inv->d1);
}

static void
mpn_div_qr_2_invert (struct gmp_div_inverse *inv,
		     mp_limb_t d1, mp_limb_t d0)
{
  unsigned shift;

  assert (d1 > 0);
  gmp_clz (shift, d1);
  inv->shift = shift;
  if (shift > 0)
    {
      d1 = (d1 << shift) | (d0 >> (GMP_LIMB_BITS - shift));
      d0 <<= shift;
    }
  inv->d1 = d1;
  inv->d0 = d0;
  inv->di = mpn_invert_3by2 (d1, d0);
}

static void
mpn_div_qr_invert (struct gmp_div_inverse *inv,
		   mp_srcptr dp, mp_size_t dn)
{
  assert (dn > 0);

  if (dn == 1)
    mpn_div_qr_1_invert (inv, dp[0]);
  else if (dn == 2)
    mpn_div_qr_2_invert (inv, dp[1], dp[0]);
  else
    {
      unsigned shift;
      mp_limb_t d1, d0;

      d1 = dp[dn-1];
      d0 = dp[dn-2];
      assert (d1 > 0);
      gmp_clz (shift, d1);
      inv->shift = shift;
      if (shift > 0)
	{
	  d1 = (d1 << shift) | (d0 >> (GMP_LIMB_BITS - shift));
	  d0 = (d0 << shift) | (dp[dn-3] >> (GMP_LIMB_BITS - shift));
	}
      inv->d1 = d1;
      inv->d0 = d0;
      inv->di = mpn_invert_3by2 (d1, d0);
    }
}

/* Not matching current public gmp interface, rather corresponding to
   the sbpi1_div_* functions. */
static mp_limb_t
mpn_div_qr_1_preinv (mp_ptr qp, mp_srcptr np, mp_size_t nn,
		     const struct gmp_div_inverse *inv)
{
  mp_limb_t d, di;
  mp_limb_t r;
  mp_ptr tp = NULL;

  if (inv->shift > 0)
    {
      tp = gmp_xalloc_limbs (nn);
      r = mpn_lshift (tp, np, nn, inv->shift);
      np = tp;
    }
  else
    r = 0;

  d = inv->d1;
  di = inv->di;
  while (nn-- > 0)
    {
      mp_limb_t q;

      gmp_udiv_qrnnd_preinv (q, r, r, np[nn], d, di);
      if (qp)
	qp[nn] = q;
    }
  if (inv->shift > 0)
    gmp_free (tp);

  return r >> inv->shift;
}

static mp_limb_t
mpn_div_qr_1 (mp_ptr qp, mp_srcptr np, mp_size_t nn, mp_limb_t d)
{
  assert (d > 0);

  /* Special case for powers of two. */
  if (d > 1 && (d & (d-1)) == 0)
    {
      unsigned shift;
      mp_limb_t r = np[0] & (d-1);
      gmp_ctz (shift, d);
      if (qp)
	mpn_rshift (qp, np, nn, shift);

      return r;
    }
  else
    {
      struct gmp_div_inverse inv;
      mpn_div_qr_1_invert (&inv, d);
      return mpn_div_qr_1_preinv (qp, np, nn, &inv);
    }
}

static void
mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
		     const struct gmp_div_inverse *inv)
{
  unsigned shift;
  mp_size_t i;
  mp_limb_t d1, d0, di, r1, r0;
  mp_ptr tp;

  assert (nn >= 2);
  shift = inv->shift;
  d1 = inv->d1;
  d0 = inv->d0;
  di = inv->di;

  if (shift > 0)
    {
      tp = gmp_xalloc_limbs (nn);
      r1 = mpn_lshift (tp, np, nn, shift);
      np = tp;
    }
  else
    r1 = 0;

  r0 = np[nn - 1];

  for (i = nn - 2; i >= 0; i--)
    {
      mp_limb_t n0, q;
      n0 = np[i];
      gmp_udiv_qr_3by2 (q, r1, r0, r1, r0, n0, d1, d0, di);

      if (qp)
	qp[i] = q;
    }

  if (shift > 0)
    {
      assert ((r0 << (GMP_LIMB_BITS - shift)) == 0);
      r0 = (r0 >> shift) | (r1 << (GMP_LIMB_BITS - shift));
      r1 >>= shift;

      gmp_free (tp);
    }

  rp[1] = r1;
  rp[0] = r0;
}

#if 0
static void
mpn_div_qr_2 (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
	      mp_limb_t d1, mp_limb_t d0)
{
  struct gmp_div_inverse inv;
  assert (nn >= 2);

  mpn_div_qr_2_invert (&inv, d1, d0);
  mpn_div_qr_2_preinv (qp, rp, np, nn, &inv);
}
#endif

static void
mpn_div_qr_pi1 (mp_ptr qp,
		mp_ptr np, mp_size_t nn, mp_limb_t n1,
		mp_srcptr dp, mp_size_t dn,
		mp_limb_t dinv)
{
  mp_size_t i;

  mp_limb_t d1, d0;
  mp_limb_t cy, cy1;
  mp_limb_t q;

  assert (dn > 2);
  assert (nn >= dn);

  d1 = dp[dn - 1];
  d0 = dp[dn - 2];

  assert ((d1 & GMP_LIMB_HIGHBIT) != 0);
  /* Iteration variable is the index of the q limb.
   *
   * We divide <n1, np[dn-1+i], np[dn-2+i], np[dn-3+i],..., np[i]>
   * by            <d1,          d0,        dp[dn-3],  ..., dp[0] >
   */

  for (i = nn - dn; i >= 0; i--)
    {
      mp_limb_t n0 = np[dn-1+i];

      if (n1 == d1 && n0 == d0)
	{
	  q = GMP_LIMB_MAX;
	  mpn_submul_1 (np+i, dp, dn, q);
	  n1 = np[dn-1+i];	/* update n1, last loop's value will now be invalid */
	}
      else
	{
	  gmp_udiv_qr_3by2 (q, n1, n0, n1, n0, np[dn-2+i], d1, d0, dinv);

	  cy = mpn_submul_1 (np + i, dp, dn-2, q);

	  cy1 = n0 < cy;
	  n0 = n0 - cy;
	  cy = n1 < cy1;
	  n1 = n1 - cy1;
	  np[dn-2+i] = n0;

	  if (cy != 0)
	    {
	      n1 += d1 + mpn_add_n (np + i, np + i, dp, dn - 1);
	      q--;
	    }
	}

      if (qp)
	qp[i] = q;
    }

  np[dn - 1] = n1;
}

static void
mpn_div_qr_preinv (mp_ptr qp, mp_ptr np, mp_size_t nn,
		   mp_srcptr dp, mp_size_t dn,
		   const struct gmp_div_inverse *inv)
{
  assert (dn > 0);
  assert (nn >= dn);

  if (dn == 1)
    np[0] = mpn_div_qr_1_preinv (qp, np, nn, inv);
  else if (dn == 2)
    mpn_div_qr_2_preinv (qp, np, np, nn, inv);
  else
    {
      mp_limb_t nh;
      unsigned shift;

      assert (inv->d1 == dp[dn-1]);
      assert (inv->d0 == dp[dn-2]);
      assert ((inv->d1 & GMP_LIMB_HIGHBIT) != 0);

      shift = inv->shift;
      if (shift > 0)
	nh = mpn_lshift (np, np, nn, shift);
      else
	nh = 0;

      mpn_div_qr_pi1 (qp, np, nn, nh, dp, dn, inv->di);

      if (shift > 0)
	gmp_assert_nocarry (mpn_rshift (np, np, dn, shift));
    }
}

static void
mpn_div_qr (mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn)
{
  struct gmp_div_inverse inv;
  mp_ptr tp = NULL;

  assert (dn > 0);
  assert (nn >= dn);

  mpn_div_qr_invert (&inv, dp, dn);
  if (dn > 2 && inv.shift > 0)
    {
      tp = gmp_xalloc_limbs (dn);
      gmp_assert_nocarry (mpn_lshift (tp, dp, dn, inv.shift));
      dp = tp;
    }
  mpn_div_qr_preinv (qp, np, nn, dp, dn, &inv);
  if (tp)
    gmp_free (tp);
}


/* MPN base conversion. */
static unsigned
mpn_base_power_of_two_p (unsigned b)
{
  switch (b)
    {
    case 2: return 1;
    case 4: return 2;
    case 8: return 3;
    case 16: return 4;
    case 32: return 5;
    case 64: return 6;
    case 128: return 7;
    case 256: return 8;
    default: return 0;
    }
}

struct mpn_base_info
{
  /* bb is the largest power of the base which fits in one limb, and
     exp is the corresponding exponent. */
  unsigned exp;
  mp_limb_t bb;
};

static void
mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b)
{
  mp_limb_t m;
  mp_limb_t p;
  unsigned exp;

  m = GMP_LIMB_MAX / b;
  for (exp = 1, p = b; p <= m; exp++)
    p *= b;

  info->exp = exp;
  info->bb = p;
}

static mp_bitcnt_t
mpn_limb_size_in_base_2 (mp_limb_t u)
{
  unsigned shift;

  assert (u > 0);
  gmp_clz (shift, u);
  return GMP_LIMB_BITS - shift;
}

static size_t
mpn_get_str_bits (unsigned char *sp, unsigned bits, mp_srcptr up, mp_size_t un)
{
  unsigned char mask;
  size_t sn, j;
  mp_size_t i;
  int shift;

  sn = ((un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1])
	+ bits - 1) / bits;

  mask = (1U << bits) - 1;

  for (i = 0, j = sn, shift = 0; j-- > 0;)
    {
      unsigned char digit = up[i] >> shift;

      shift += bits;

      if (shift >= GMP_LIMB_BITS && ++i < un)
	{
	  shift -= GMP_LIMB_BITS;
	  digit |= up[i] << (bits - shift);
	}
      sp[j] = digit & mask;
    }
  return sn;
}

/* We generate digits from the least significant end, and reverse at
   the end. */
static size_t
mpn_limb_get_str (unsigned char *sp, mp_limb_t w,
		  const struct gmp_div_inverse *binv)
{
  mp_size_t i;
  for (i = 0; w > 0; i++)
    {
      mp_limb_t h, l, r;

      h = w >> (GMP_LIMB_BITS - binv->shift);
      l = w << binv->shift;

      gmp_udiv_qrnnd_preinv (w, r, h, l, binv->d1, binv->di);
      assert ( (r << (GMP_LIMB_BITS - binv->shift)) == 0);
      r >>= binv->shift;

      sp[i] = r;
    }
  return i;
}

static size_t
mpn_get_str_other (unsigned char *sp,
		   int base, const struct mpn_base_info *info,
		   mp_ptr up, mp_size_t un)
{
  struct gmp_div_inverse binv;
  size_t sn;
  size_t i;

  mpn_div_qr_1_invert (&binv, base);

  sn = 0;

  if (un > 1)
    {
      struct gmp_div_inverse bbinv;
      mpn_div_qr_1_invert (&bbinv, info->bb);

      do
	{
	  mp_limb_t w;
	  size_t done;
	  w = mpn_div_qr_1_preinv (up, up, un, &bbinv);
	  un -= (up[un-1] == 0);
	  done = mpn_limb_get_str (sp + sn, w, &binv);

	  for (sn += done; done < info->exp; done++)
	    sp[sn++] = 0;
	}
      while (un > 1);
    }
  sn += mpn_limb_get_str (sp + sn, up[0], &binv);

  /* Reverse order */
  for (i = 0; 2*i + 1 < sn; i++)
    {
      unsigned char t = sp[i];
      sp[i] = sp[sn - i - 1];
      sp[sn - i - 1] = t;
    }

  return sn;
}

size_t
mpn_get_str (unsigned char *sp, int base, mp_ptr up, mp_size_t un)
{
  unsigned bits;

  assert (un > 0);
  assert (up[un-1] > 0);

  bits = mpn_base_power_of_two_p (base);
  if (bits)
    return mpn_get_str_bits (sp, bits, up, un);
  else
    {
      struct mpn_base_info info;

      mpn_get_base_info (&info, base);
      return mpn_get_str_other (sp, base, &info, up, un);
    }
}

static mp_size_t
mpn_set_str_bits (mp_ptr rp, const unsigned char *sp, size_t sn,
		  unsigned bits)
{
  mp_size_t rn;
  size_t j;
  unsigned shift;

  for (j = sn, rn = 0, shift = 0; j-- > 0; )
    {
      if (shift == 0)
	{
	  rp[rn++] = sp[j];
	  shift += bits;
	}
      else
	{
	  rp[rn-1] |= (mp_limb_t) sp[j] << shift;
	  shift += bits;
	  if (shift >= GMP_LIMB_BITS)
	    {
	      shift -= GMP_LIMB_BITS;
	      if (shift > 0)
		rp[rn++] = (mp_limb_t) sp[j] >> (bits - shift);
	    }
	}
    }
  rn = mpn_normalized_size (rp, rn);
  return rn;
}

static mp_size_t
mpn_set_str_other (mp_ptr rp, const unsigned char *sp, size_t sn,
		   mp_limb_t b, const struct mpn_base_info *info)
{
  mp_size_t rn;
  mp_limb_t w;
  unsigned first;
  unsigned k;
  size_t j;

  first = 1 + (sn - 1) % info->exp;

  j = 0;
  w = sp[j++];
  for (k = 1; k < first; k++)
    w = w * b + sp[j++];

  rp[0] = w;

  for (rn = (w > 0); j < sn;)
    {
      mp_limb_t cy;

      w = sp[j++];
      for (k = 1; k < info->exp; k++)
	w = w * b + sp[j++];

      cy = mpn_mul_1 (rp, rp, rn, info->bb);
      cy += mpn_add_1 (rp, rp, rn, w);
      if (cy > 0)
	rp[rn++] = cy;
    }
  assert (j == sn);

  return rn;
}

mp_size_t
mpn_set_str (mp_ptr rp, const unsigned char *sp, size_t sn, int base)
{
  unsigned bits;

  if (sn == 0)
    return 0;

  bits = mpn_base_power_of_two_p (base);
  if (bits)
    return mpn_set_str_bits (rp, sp, sn, bits);
  else
    {
      struct mpn_base_info info;

      mpn_get_base_info (&info, base);
      return mpn_set_str_other (rp, sp, sn, base, &info);
    }
}


/* MPZ interface */
void
mpz_init (mpz_t r)
{
  r->_mp_alloc = 1;
  r->_mp_size = 0;
  r->_mp_d = gmp_xalloc_limbs (1);
}

/* The utility of this function is a bit limited, since many functions
   assings the result variable using mpz_swap. */
void
mpz_init2 (mpz_t r, mp_bitcnt_t bits)
{
  mp_size_t rn;

  bits -= (bits != 0);		/* Round down, except if 0 */
  rn = 1 + bits / GMP_LIMB_BITS;

  r->_mp_alloc = rn;
  r->_mp_size = 0;
  r->_mp_d = gmp_xalloc_limbs (rn);
}

void
mpz_clear (mpz_t r)
{
  gmp_free (r->_mp_d);
}

static void *
mpz_realloc (mpz_t r, mp_size_t size)
{
  size = GMP_MAX (size, 1);

  r->_mp_d = gmp_xrealloc_limbs (r->_mp_d, size);
  r->_mp_alloc = size;

  if (GMP_ABS (r->_mp_size) > size)
    r->_mp_size = 0;

  return r->_mp_d;
}

/* Realloc for an mpz_t WHAT if it has less than NEEDED limbs.  */
#define MPZ_REALLOC(z,n) ((n) > (z)->_mp_alloc			\
			  ? mpz_realloc(z,n)			\
			  : (z)->_mp_d)

/* MPZ assignment and basic conversions. */
void
mpz_set_si (mpz_t r, signed long int x)
{
  if (x >= 0)
    mpz_set_ui (r, x);
  else /* (x < 0) */
    {
      r->_mp_size = -1;
      r->_mp_d[0] = GMP_NEG_CAST (unsigned long int, x);
    }
}

void
mpz_set_ui (mpz_t r, unsigned long int x)
{
  if (x > 0)
    {
      r->_mp_size = 1;
      r->_mp_d[0] = x;
    }
  else
    r->_mp_size = 0;
}

void
mpz_set (mpz_t r, const mpz_t x)
{
  /* Allow the NOP r == x */
  if (r != x)
    {
      mp_size_t n;
      mp_ptr rp;

      n = GMP_ABS (x->_mp_size);
      rp = MPZ_REALLOC (r, n);

      mpn_copyi (rp, x->_mp_d, n);
      r->_mp_size = x->_mp_size;
    }
}

void
mpz_init_set_si (mpz_t r, signed long int x)
{
  mpz_init (r);
  mpz_set_si (r, x);
}

void
mpz_init_set_ui (mpz_t r, unsigned long int x)
{
  mpz_init (r);
  mpz_set_ui (r, x);
}

void
mpz_init_set (mpz_t r, const mpz_t x)
{
  mpz_init (r);
  mpz_set (r, x);
}

int
mpz_fits_slong_p (const mpz_t u)
{
  mp_size_t us = u->_mp_size;

  if (us == 0)
    return 1;
  else if (us == 1)
    return u->_mp_d[0] < GMP_LIMB_HIGHBIT;
  else if (us == -1)
    return u->_mp_d[0] <= GMP_LIMB_HIGHBIT;
  else
    return 0;
}

int
mpz_fits_ulong_p (const mpz_t u)
{
  mp_size_t us = u->_mp_size;

  return us == 0 || us == 1;
}

long int
mpz_get_si (const mpz_t u)
{
  mp_size_t us = u->_mp_size;

  if (us > 0)
    return (long) (u->_mp_d[0] & ~GMP_LIMB_HIGHBIT);
  else if (us < 0)
    return (long) (- u->_mp_d[0] | GMP_LIMB_HIGHBIT);
  else
    return 0;
}

unsigned long int
mpz_get_ui (const mpz_t u)
{
  return u->_mp_size == 0 ? 0 : u->_mp_d[0];
}

size_t
mpz_size (const mpz_t u)
{
  return GMP_ABS (u->_mp_size);
}

mp_limb_t
mpz_getlimbn (const mpz_t u, mp_size_t n)
{
  if (n >= 0 && n < GMP_ABS (u->_mp_size))
    return u->_mp_d[n];
  else
    return 0;
}


/* Conversions and comparison to double. */
void
mpz_set_d (mpz_t r, double x)
{
  int sign;
  mp_ptr rp;
  mp_size_t rn, i;
  double B;
  double Bi;
  mp_limb_t f;

  /* x != x is true when x is a NaN, and x == x * 0.5 is true when x is
     zero or infinity. */
  if (x == 0.0 || x != x || x == x * 0.5)
    {
      r->_mp_size = 0;
      return;
    }

  if (x < 0.0)
    {
      x = - x;