summaryrefslogtreecommitdiff
path: root/torrent-types/src/Data/.Torrent.hs.swp
blob: 0aecaad62715c86c160dab5e567abed5800a5d96 (plain)
ofshex dumpascii
0000 62 30 56 49 4d 20 38 2e 30 00 00 00 00 10 00 00 20 b1 8f 5d d7 34 0c 00 b2 6f 00 00 6a 69 6d 00 b0VIM.8.0..........].4...o..jim.
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 78 70 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....xps.........................
0060 00 00 00 00 00 00 00 00 00 00 00 00 2f 73 72 63 2f 67 69 74 2f 64 68 74 2f 74 6f 72 72 65 6e 74 ............/src/git/dht/torrent
0080 2d 74 79 70 65 73 2f 73 72 63 2f 44 61 74 61 2f 54 6f 72 72 65 6e 74 2e 68 73 00 00 00 00 00 00 -types/src/Data/Torrent.hs......
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 75 74 66 2d 38 0d 00 33 32 31 30 00 00 00 00 23 22 21 20 13 12 55 00 .........utf-8..3210....#"!...U.
0400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 74 70 0c 00 7f 00 00 00 02 00 00 00 00 00 00 00 98 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 tp..............................
1020 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 86 00 00 00 00 00 00 00 99 00 00 00 00 00 00 00 ................................
1040 01 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 72 00 00 00 00 00 00 00 1f 01 00 00 00 00 00 00 ................r...............
1060 01 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 ................................
1080 01 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 63 00 00 00 00 00 00 00 11 02 00 00 00 00 00 00 ................c...............
10a0 01 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 7a 00 00 00 00 00 00 00 74 02 00 00 00 00 00 00 ................z.......t.......
10c0 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 6b 00 00 00 00 00 00 00 ee 02 00 00 00 00 00 00 ................k...............
10e0 01 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 6e 00 00 00 00 00 00 00 59 03 00 00 00 00 00 00 ................n.......Y.......
1100 01 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 6e 00 00 00 00 00 00 00 c7 03 00 00 00 00 00 00 ................n...............
1120 01 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 6d 00 00 00 00 00 00 00 35 04 00 00 00 00 00 00 ................m.......5.......
1140 01 00 00 00 00 00 00 00 0d 00 00 00 00 00 00 00 71 00 00 00 00 00 00 00 a2 04 00 00 00 00 00 00 ................q...............
1160 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 42 00 00 00 00 00 00 00 13 05 00 00 00 00 00 00 ................B...............
1180 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2000 61 64 00 00 12 00 00 00 8e 02 00 00 00 10 00 00 98 00 00 00 00 00 00 00 fb 0f 00 00 d2 0f 00 00 ad..............................
2020 b9 0f 00 00 92 0f 00 00 71 0f 00 00 54 0f 00 00 51 0f 00 00 0d 0f 00 00 ca 0e 00 00 8f 0e 00 00 ........q...T...Q...............
2040 8c 0e 00 00 45 0e 00 00 34 0e 00 00 31 0e 00 00 19 0e 00 00 d5 0d 00 00 86 0d 00 00 83 0d 00 00 ....E...4...1...................
2060 57 0d 00 00 2b 0d 00 00 ff 0c 00 00 d3 0c 00 00 a7 0c 00 00 7b 0c 00 00 4f 0c 00 00 23 0c 00 00 W...+...............{...O...#...
2080 f7 0b 00 00 cb 0b 00 00 9f 0b 00 00 73 0b 00 00 47 0b 00 00 1b 0b 00 00 ef 0a 00 00 db 0a 00 00 ............s...G...............
20a0 c4 0a 00 00 ae 0a 00 00 98 0a 00 00 80 0a 00 00 6f 0a 00 00 5d 0a 00 00 5c 0a 00 00 42 0a 00 00 ................o...]...\...B...
20c0 2a 0a 00 00 16 0a 00 00 04 0a 00 00 ed 09 00 00 dd 09 00 00 c9 09 00 00 b7 09 00 00 a3 09 00 00 *...............................
20e0 9c 09 00 00 9b 09 00 00 80 09 00 00 67 09 00 00 57 09 00 00 43 09 00 00 30 09 00 00 1b 09 00 00 ............g...W...C...0.......
2100 14 09 00 00 fe 08 00 00 e8 08 00 00 d3 08 00 00 bc 08 00 00 a5 08 00 00 92 08 00 00 7e 08 00 00 ............................~...
2120 7d 08 00 00 5d 08 00 00 49 08 00 00 35 08 00 00 1d 08 00 00 09 08 00 00 08 08 00 00 f0 07 00 00 }...]...I...5...................
2140 dc 07 00 00 db 07 00 00 c6 07 00 00 ac 07 00 00 9b 07 00 00 87 07 00 00 74 07 00 00 5e 07 00 00 ........................t...^...
2160 48 07 00 00 2e 07 00 00 1b 07 00 00 1a 07 00 00 00 07 00 00 ec 06 00 00 d9 06 00 00 c6 06 00 00 H...............................
2180 c5 06 00 00 a8 06 00 00 91 06 00 00 79 06 00 00 69 06 00 00 54 06 00 00 3f 06 00 00 38 06 00 00 ............y...i...T...?...8...
21a0 24 06 00 00 23 06 00 00 09 06 00 00 f6 05 00 00 de 05 00 00 dd 05 00 00 bf 05 00 00 a8 05 00 00 $...#...........................
21c0 98 05 00 00 86 05 00 00 72 05 00 00 5f 05 00 00 4c 05 00 00 45 05 00 00 2c 05 00 00 14 05 00 00 ........r..._...L...E...,.......
21e0 0d 05 00 00 0c 05 00 00 f1 04 00 00 dc 04 00 00 db 04 00 00 cb 04 00 00 b5 04 00 00 a3 04 00 00 ................................
2200 8d 04 00 00 7c 04 00 00 69 04 00 00 53 04 00 00 41 04 00 00 2f 04 00 00 1c 04 00 00 06 04 00 00 ....|...i...S...A.../...........
2220 f3 03 00 00 ec 03 00 00 eb 03 00 00 d6 03 00 00 c1 03 00 00 ac 03 00 00 98 03 00 00 81 03 00 00 ................................
2240 68 03 00 00 56 03 00 00 46 03 00 00 3f 03 00 00 3e 03 00 00 29 03 00 00 10 03 00 00 fc 02 00 00 h...V...F...?...>...)...........
2260 e8 02 00 00 d2 02 00 00 ba 02 00 00 a5 02 00 00 8f 02 00 00 8e 02 00 00 8d 02 00 00 00 00 00 00 ................................
2280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 2c 20 72 65 6e 64 65 72 4d 61 ......................,.renderMa
22a0 67 6e 65 74 00 20 20 20 20 20 20 20 2c 20 70 61 72 73 65 4d 61 67 6e 65 74 00 20 20 20 20 20 20 gnet........,.parseMagnet.......
22c0 20 2c 20 64 65 74 61 69 6c 65 64 4d 61 67 6e 65 74 00 20 20 20 20 20 20 20 2c 20 73 69 6d 70 6c .,.detailedMagnet........,.simpl
22e0 65 4d 61 67 6e 65 74 00 20 20 20 20 20 20 20 2c 20 6e 75 6c 6c 4d 61 67 6e 65 74 00 20 20 20 20 eMagnet........,.nullMagnet.....
2300 20 20 20 2c 20 4d 61 67 6e 65 74 28 2e 2e 29 00 20 20 20 20 20 20 20 20 20 2d 2d 20 24 6d 61 67 ...,.Magnet(..)..........--.$mag
2320 6e 65 74 2d 6c 69 6e 6b 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 20 4d 61 67 6e 65 74 00 00 23 net-link..........--.*.Magnet..#
2340 65 6e 64 69 66 00 20 20 20 20 20 20 20 2c 20 74 6f 46 69 6c 65 00 20 20 20 20 20 20 20 2c 20 66 endif........,.toFile........,.f
2360 72 6f 6d 46 69 6c 65 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 romFile.#ifdef.VERSION_bencoding
2380 00 20 20 20 20 20 20 20 2c 20 69 73 54 6f 72 72 65 6e 74 50 61 74 68 00 20 20 20 20 20 20 20 2c ........,.isTorrentPath........,
23a0 20 74 6f 72 72 65 6e 74 45 78 74 00 20 20 20 20 20 20 20 2c 20 74 79 70 65 54 6f 72 72 65 6e 74 .torrentExt........,.typeTorrent
23c0 00 20 20 20 20 20 20 20 2c 20 6e 75 6c 6c 54 6f 72 72 65 6e 74 00 20 20 20 20 20 20 20 20 20 2d ........,.nullTorrent..........-
23e0 2d 20 2a 2a 20 55 74 69 6c 73 00 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 20 2c 20 73 69 67 6e -.**.Utils..#endif........,.sign
2400 61 74 75 72 65 00 20 20 20 20 20 20 20 2c 20 70 75 62 6c 69 73 68 65 72 55 52 4c 00 20 20 20 20 ature........,.publisherURL.....
2420 20 20 20 2c 20 70 75 62 6c 69 73 68 65 72 00 20 20 20 20 20 20 20 2c 20 69 6e 66 6f 44 69 63 74 ...,.publisher........,.infoDict
2440 00 20 20 20 20 20 20 20 2c 20 65 6e 63 6f 64 69 6e 67 00 20 20 20 20 20 20 20 2c 20 63 72 65 61 ........,.encoding........,.crea
2460 74 69 6f 6e 44 61 74 65 00 20 20 20 20 20 20 20 2c 20 63 72 65 61 74 65 64 42 79 00 20 20 20 20 tionDate........,.createdBy.....
2480 20 20 20 2c 20 63 6f 6d 6d 65 6e 74 00 20 20 20 20 20 20 20 2c 20 61 6e 6e 6f 75 6e 63 65 4c 69 ...,.comment........,.announceLi
24a0 73 74 00 20 20 20 20 20 20 20 2c 20 61 6e 6e 6f 75 6e 63 65 00 20 20 20 20 20 20 20 20 20 2d 2d st........,.announce..........--
24c0 20 2a 2a 20 4c 65 6e 73 65 73 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 00 20 20 20 20 .**.Lenses.#ifdef.USE_lens......
24e0 20 20 20 2c 20 54 6f 72 72 65 6e 74 28 2e 2e 29 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 20 54 ...,.Torrent(..)..........--.*.T
2500 6f 72 72 65 6e 74 20 66 69 6c 65 00 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 20 2c 20 69 6e 66 orrent.file..#endif........,.inf
2520 6f 44 69 63 74 69 6f 6e 61 72 79 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f oDictionary.#ifdef.VERSION_benco
2540 64 69 6e 67 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 20 2c 20 69 73 50 72 69 76 61 74 65 00 20 ding.#endif........,.isPrivate..
2560 20 20 20 20 20 20 2c 20 70 69 65 63 65 49 6e 66 6f 00 20 20 20 20 20 20 20 2c 20 6c 61 79 6f 75 ......,.pieceInfo........,.layou
2580 74 49 6e 66 6f 00 20 20 20 20 20 20 20 2c 20 69 6e 66 6f 68 61 73 68 00 23 69 66 64 65 66 20 55 tInfo........,.infohash.#ifdef.U
25a0 53 45 5f 6c 65 6e 73 00 20 20 20 20 20 20 20 2c 20 49 6e 66 6f 44 69 63 74 20 28 2e 2e 29 00 20 SE_lens........,.InfoDict.(..)..
25c0 20 20 20 20 20 20 20 20 2d 2d 20 2a 20 49 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 00 00 20 20 ........--.*.Info.dictionary....
25e0 20 20 20 20 20 2c 20 63 68 65 63 6b 50 69 65 63 65 4c 61 7a 79 00 20 20 20 20 20 20 20 2c 20 70 .....,.checkPieceLazy........,.p
2600 69 65 63 65 48 61 73 68 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 56 61 6c 69 64 61 74 69 ieceHash..........--.**.Validati
2620 6f 6e 00 00 20 20 20 20 20 20 20 2c 20 70 69 65 63 65 43 6f 75 6e 74 00 23 65 6e 64 69 66 00 20 on.........,.pieceCount.#endif..
2640 20 20 20 20 20 20 2c 20 70 69 65 63 65 48 61 73 68 65 73 00 20 20 20 20 20 20 20 2c 20 70 69 65 ......,.pieceHashes........,.pie
2660 63 65 4c 65 6e 67 74 68 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 20 20 20 20 20 20 20 ceLength.#ifdef.USE_lens........
2680 2c 20 50 69 65 63 65 49 6e 66 6f 20 28 2e 2e 29 00 20 20 20 20 20 20 20 2c 20 48 61 73 68 4c 69 ,.PieceInfo.(..)........,.HashLi
26a0 73 74 20 28 2e 2e 29 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 50 69 65 63 65 20 63 6f 6e st.(..)..........--.**.Piece.con
26c0 74 72 6f 6c 00 00 20 20 20 20 20 20 20 2c 20 68 61 73 68 50 69 65 63 65 00 20 20 20 20 20 20 20 trol.........,.hashPiece........
26e0 2c 20 70 69 65 63 65 53 69 7a 65 00 20 20 20 20 20 20 20 2c 20 50 69 65 63 65 20 28 2e 2e 29 00 ,.pieceSize........,.Piece.(..).
2700 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 50 69 65 63 65 20 64 61 74 61 00 00 20 20 20 20 20 .........--.**.Piece.data.......
2720 20 20 2c 20 50 69 65 63 65 48 61 73 68 00 20 20 20 20 20 20 20 2c 20 64 65 66 61 75 6c 74 50 69 ..,.PieceHash........,.defaultPi
2740 65 63 65 53 69 7a 65 00 20 20 20 20 20 20 20 2c 20 6d 61 78 50 69 65 63 65 53 69 7a 65 00 20 20 eceSize........,.maxPieceSize...
2760 20 20 20 20 20 2c 20 6d 69 6e 50 69 65 63 65 53 69 7a 65 00 20 20 20 20 20 20 20 2c 20 50 69 65 .....,.minPieceSize........,.Pie
2780 63 65 53 69 7a 65 00 20 20 20 20 20 20 20 2c 20 50 69 65 63 65 43 6f 75 6e 74 00 20 20 20 20 20 ceSize........,.PieceCount......
27a0 20 20 2c 20 50 69 65 63 65 49 78 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 41 74 74 72 69 ..,.PieceIx..........--.**.Attri
27c0 62 75 74 65 73 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 20 50 69 65 63 65 73 00 00 20 20 20 20 butes..........--.*.Pieces......
27e0 20 20 20 2c 20 73 69 7a 65 49 6e 42 61 73 65 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 49 ...,.sizeInBase..........--.**.I
2800 6e 74 65 72 6e 61 6c 00 00 20 20 20 20 20 20 20 2c 20 66 69 6c 65 4f 66 66 73 65 74 00 20 20 20 nternal.........,.fileOffset....
2820 20 20 20 20 2c 20 61 63 63 75 6d 50 6f 73 69 74 69 6f 6e 73 00 20 20 20 20 20 20 20 2c 20 66 6c ....,.accumPositions........,.fl
2840 61 74 4c 61 79 6f 75 74 00 20 20 20 20 20 20 20 2c 20 46 69 6c 65 4c 61 79 6f 75 74 00 20 20 20 atLayout........,.FileLayout....
2860 20 20 20 20 20 20 2d 2d 20 2a 2a 20 46 6c 61 74 20 6c 61 79 6f 75 74 20 69 6e 66 6f 00 00 20 20 ......--.**.Flat.layout.info....
2880 20 20 20 20 20 2c 20 62 6c 6f 63 6b 43 6f 75 6e 74 00 20 20 20 20 20 20 20 2c 20 66 69 6c 65 43 .....,.blockCount........,.fileC
28a0 6f 75 6e 74 00 20 20 20 20 20 20 20 2c 20 63 6f 6e 74 65 6e 74 4c 65 6e 67 74 68 00 20 20 20 20 ount........,.contentLength.....
28c0 20 20 20 2c 20 73 75 67 67 65 73 74 65 64 4e 61 6d 65 00 20 20 20 20 20 20 20 2c 20 69 73 4d 75 ...,.suggestedName........,.isMu
28e0 6c 74 69 46 69 6c 65 00 20 20 20 20 20 20 20 2c 20 69 73 53 69 6e 67 6c 65 46 69 6c 65 00 20 20 ltiFile........,.isSingleFile...
2900 20 20 20 20 20 2c 20 6a 6f 69 6e 46 69 6c 65 50 61 74 68 00 23 65 6e 64 69 66 00 20 20 20 20 20 .....,.joinFilePath.#endif......
2920 20 20 2c 20 72 6f 6f 74 44 69 72 4e 61 6d 65 00 20 20 20 20 20 20 20 2c 20 6d 75 6c 74 69 46 69 ..,.rootDirName........,.multiFi
2940 6c 65 00 20 20 20 20 20 20 20 2c 20 73 69 6e 67 6c 65 46 69 6c 65 00 23 69 66 64 65 66 20 55 53 le........,.singleFile.#ifdef.US
2960 45 5f 6c 65 6e 73 00 20 20 20 20 20 20 20 2c 20 4c 61 79 6f 75 74 49 6e 66 6f 20 28 2e 2e 29 00 E_lens........,.LayoutInfo.(..).
2980 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 4c 61 79 6f 75 74 20 69 6e 66 6f 00 00 23 65 6e 64 .........--.**.Layout.info..#end
29a0 69 66 00 20 20 20 20 20 20 20 2c 20 66 69 6c 65 4d 44 35 53 75 6d 00 20 20 20 20 20 20 20 2c 20 if........,.fileMD5Sum........,.
29c0 66 69 6c 65 50 61 74 68 00 20 20 20 20 20 20 20 2c 20 66 69 6c 65 4c 65 6e 67 74 68 00 23 69 66 filePath........,.fileLength.#if
29e0 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 20 20 20 20 20 20 20 2c 20 46 69 6c 65 49 6e 66 6f 20 28 def.USE_lens........,.FileInfo.(
2a00 2e 2e 29 00 20 20 20 20 20 20 20 2c 20 46 69 6c 65 53 69 7a 65 00 20 20 20 20 20 20 20 2c 20 46 ..)........,.FileSize........,.F
2a20 69 6c 65 4f 66 66 73 65 74 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 46 69 6c 65 49 6e 66 ileOffset..........--.**.FileInf
2a40 6f 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 20 46 69 6c 65 20 6c 61 79 6f 75 74 00 00 20 20 20 o..........--.*.File.layout.....
2a60 20 20 20 20 2c 20 73 68 6f 72 74 48 65 78 00 20 20 20 20 20 20 20 2c 20 6c 6f 6e 67 48 65 78 00 ....,.shortHex........,.longHex.
2a80 20 20 20 20 20 20 20 2c 20 74 65 78 74 54 6f 49 6e 66 6f 48 61 73 68 00 20 20 20 20 20 20 20 20 .......,.textToInfoHash.........
2aa0 20 49 6e 66 6f 48 61 73 68 28 2e 2e 29 00 20 20 20 20 20 20 20 20 20 2d 2d 20 24 69 6e 66 6f 68 .InfoHash(..)..........--.$infoh
2ac0 61 73 68 00 20 20 20 20 20 20 20 28 20 2d 2d 20 2a 20 49 6e 66 6f 48 61 73 68 00 6d 6f 64 75 6c ash........(.--.*.InfoHash.modul
2ae0 65 20 44 61 74 61 2e 54 6f 72 72 65 6e 74 00 7b 2d 23 20 4f 50 54 49 4f 4e 53 20 2d 66 6e 6f 2d e.Data.Torrent.{-#.OPTIONS.-fno-
2b00 77 61 72 6e 2d 6f 72 70 68 61 6e 73 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c warn-orphans...........#-}.{-#.L
2b20 41 4e 47 55 41 47 45 20 4f 76 65 72 6c 6f 61 64 65 64 53 74 72 69 6e 67 73 20 20 20 20 20 20 20 ANGUAGE.OverloadedStrings.......
2b40 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 52 65 63 6f 72 64 57 69 6c 64 43 61 ...#-}.{-#.LANGUAGE.RecordWildCa
2b60 72 64 73 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 rds............#-}.{-#.LANGUAGE.
2b80 54 65 6d 70 6c 61 74 65 48 61 73 6b 65 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b TemplateHaskell............#-}.{
2ba0 2d 23 20 4c 41 4e 47 55 41 47 45 20 44 65 72 69 76 65 54 72 61 76 65 72 73 61 62 6c 65 20 20 20 -#.LANGUAGE.DeriveTraversable...
2bc0 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 44 65 72 69 76 65 46 6f .......#-}.{-#.LANGUAGE.DeriveFo
2be0 6c 64 61 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 ldable.............#-}.{-#.LANGU
2c00 41 47 45 20 44 65 72 69 76 65 46 75 6e 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 AGE.DeriveFunctor..............#
2c20 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 44 65 72 69 76 65 44 61 74 61 54 79 70 65 61 62 -}.{-#.LANGUAGE.DeriveDataTypeab
2c40 6c 65 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 53 74 61 6e le.........#-}.{-#.LANGUAGE.Stan
2c60 64 61 6c 6f 6e 65 44 65 72 69 76 69 6e 67 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c daloneDeriving.........#-}.{-#.L
2c80 41 4e 47 55 41 47 45 20 47 65 6e 65 72 61 6c 69 7a 65 64 4e 65 77 74 79 70 65 44 65 72 69 76 69 ANGUAGE.GeneralizedNewtypeDerivi
2ca0 6e 67 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 42 61 6e 67 50 61 74 74 65 72 6e 73 ng.#-}.{-#.LANGUAGE.BangPatterns
2cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 ...............#-}.{-#.LANGUAGE.
2ce0 4d 75 6c 74 69 50 61 72 61 6d 54 79 70 65 43 6c 61 73 73 65 73 20 20 20 20 20 20 23 2d 7d 00 7b MultiParamTypeClasses......#-}.{
2d00 2d 23 20 4c 41 4e 47 55 41 47 45 20 46 6c 65 78 69 62 6c 65 49 6e 73 74 61 6e 63 65 73 20 20 20 -#.LANGUAGE.FlexibleInstances...
2d20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 41 47 45 20 4e 61 6d 65 64 46 69 65 .......#-}.{-#.LANGUAGE.NamedFie
2d40 6c 64 50 75 6e 73 20 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 7d 00 7b 2d 23 20 4c 41 4e 47 55 ldPuns.............#-}.{-#.LANGU
2d60 41 47 45 20 43 50 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 AGE.CPP........................#
2d80 2d 7d 00 2d 2d 00 2d 2d 20 20 20 3c 68 74 74 70 73 3a 2f 2f 77 69 6b 69 2e 74 68 65 6f 72 79 2e -}.--.--...<https://wiki.theory.
2da0 6f 72 67 2f 42 69 74 54 6f 72 72 65 6e 74 53 70 65 63 69 66 69 63 61 74 69 6f 6e 23 4d 65 74 61 org/BitTorrentSpecification#Meta
2dc0 69 6e 66 6f 5f 46 69 6c 65 5f 53 74 72 75 63 74 75 72 65 3e 00 2d 2d 20 20 20 3c 68 74 74 70 3a info_File_Structure>.--...<http:
2de0 2f 2f 77 77 77 2e 62 69 74 74 6f 72 72 65 6e 74 2e 6f 72 67 2f 62 65 70 73 2f 62 65 70 5f 30 30 //www.bittorrent.org/beps/bep_00
2e00 30 33 2e 68 74 6d 6c 23 6d 65 74 61 69 6e 66 6f 2d 66 69 6c 65 73 3e 2c 00 2d 2d 20 20 20 46 6f 03.html#metainfo-files>,.--...Fo
2e20 72 20 6d 6f 72 65 20 69 6e 66 6f 20 73 65 65 3a 00 2d 2d 00 2d 2d 20 20 20 65 78 74 72 61 63 74 r.more.info.see:.--.--...extract
2e40 69 6f 6e 2e 00 2d 2d 20 20 20 54 68 69 73 20 6d 6f 64 75 6c 65 20 70 72 6f 76 69 64 65 73 20 74 ion..--...This.module.provides.t
2e60 6f 72 72 65 6e 74 20 6d 65 74 61 69 6e 66 6f 20 73 65 72 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e orrent.metainfo.serialization.an
2e80 64 20 69 6e 66 6f 20 68 61 73 68 00 2d 2d 00 2d 2d 20 20 20 61 6c 73 6f 20 6f 74 68 65 72 20 69 d.info.hash.--.--...also.other.i
2ea0 6e 66 6f 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6a 6f 69 6e 20 74 nfo.which.is.used.to.help.join.t
2ec0 68 65 20 73 77 61 72 6d 2e 00 2d 2d 20 20 20 63 6f 6e 74 65 6e 74 20 69 74 73 65 6c 66 2e 20 54 he.swarm..--...content.itself..T
2ee0 68 65 20 66 69 6c 65 73 20 61 72 65 20 62 65 6e 63 6f 64 65 64 20 64 69 63 74 69 6f 6e 61 72 69 he.files.are.bencoded.dictionari
2f00 65 73 2e 20 54 68 65 72 65 20 69 73 00 2d 2d 20 20 20 54 6f 72 72 65 6e 74 20 66 69 6c 65 20 63 es..There.is.--...Torrent.file.c
2f20 6f 6e 74 61 69 6e 73 20 6d 65 74 61 64 61 74 61 20 61 62 6f 75 74 20 66 69 6c 65 73 20 61 6e 64 ontains.metadata.about.files.and
2f40 20 66 6f 6c 64 65 72 73 20 62 75 74 20 6e 6f 74 00 2d 2d 00 2d 2d 20 20 20 50 6f 72 74 61 62 69 .folders.but.not.--.--...Portabi
2f60 6c 69 74 79 20 3a 20 20 70 6f 72 74 61 62 6c 65 00 2d 2d 20 20 20 53 74 61 62 69 6c 69 74 79 20 lity.:..portable.--...Stability.
2f80 20 20 3a 20 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 00 2d 2d 20 20 20 4d 61 69 6e 74 61 69 6e 65 ..:..experimental.--...Maintaine
2fa0 72 20 20 3a 20 20 70 78 71 72 2e 73 74 61 40 67 6d 61 69 6c 2e 63 6f 6d 00 2d 2d 20 20 20 4c 69 r..:..pxqr.sta@gmail.com.--...Li
2fc0 63 65 6e 73 65 20 20 20 20 20 3a 20 20 42 53 44 33 00 2d 2d 20 20 20 43 6f 70 79 72 69 67 68 74 cense.....:..BSD3.--...Copyright
2fe0 20 20 20 3a 20 20 28 63 29 20 53 61 6d 20 54 72 75 7a 6a 61 6e 20 32 30 31 33 00 2d 2d 20 7c 00 ...:..(c).Sam.Truzjan.2013.--.|.
3000 61 64 00 00 4f 07 00 00 73 08 00 00 00 10 00 00 42 00 00 00 00 00 00 00 e9 0f 00 00 cc 0f 00 00 ad..O...s.......B...............
3020 af 0f 00 00 92 0f 00 00 75 0f 00 00 54 0f 00 00 33 0f 00 00 18 0f 00 00 fd 0e 00 00 f7 0e 00 00 ........u...T...3...............
3040 f6 0e 00 00 b2 0e 00 00 90 0e 00 00 5f 0e 00 00 43 0e 00 00 fe 0d 00 00 f8 0d 00 00 f7 0d 00 00 ............_...C...............
3060 ae 0d 00 00 93 0d 00 00 90 0d 00 00 6c 0d 00 00 2a 0d 00 00 15 0d 00 00 d0 0c 00 00 b2 0c 00 00 ............l...*...............
3080 ac 0c 00 00 ab 0c 00 00 63 0c 00 00 62 0c 00 00 39 0c 00 00 fe 0b 00 00 fd 0b 00 00 d9 0b 00 00 ........c...b...9...............
30a0 a5 0b 00 00 a4 0b 00 00 87 0b 00 00 62 0b 00 00 61 0b 00 00 46 0b 00 00 2d 0b 00 00 17 0b 00 00 ............b...a...F...-.......
30c0 16 0b 00 00 fb 0a 00 00 ea 0a 00 00 b6 0a 00 00 9f 0a 00 00 95 0a 00 00 6c 0a 00 00 6b 0a 00 00 ........................l...k...
30e0 4c 0a 00 00 0e 0a 00 00 04 0a 00 00 d6 09 00 00 d5 09 00 00 9b 09 00 00 6e 09 00 00 6b 09 00 00 L.......................n...k...
3100 47 09 00 00 1f 09 00 00 04 09 00 00 03 09 00 00 d6 08 00 00 b7 08 00 00 8f 08 00 00 73 08 00 00 G...........................s...
3120 72 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r...............................
3140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 72 65 ...................{-#.INLINE.re
3880 6e 64 65 72 4d 61 67 6e 65 74 20 23 2d 7d 00 72 65 6e 64 65 72 4d 61 67 6e 65 74 20 3d 20 54 2e nderMagnet.#-}.renderMagnet.=.T.
38a0 70 61 63 6b 20 2e 20 72 65 6e 64 65 72 4d 61 67 6e 65 74 53 74 72 00 72 65 6e 64 65 72 4d 61 67 pack...renderMagnetStr.renderMag
38c0 6e 65 74 20 3a 3a 20 4d 61 67 6e 65 74 20 2d 3e 20 54 65 78 74 00 2d 2d 20 7c 20 52 65 6e 64 65 net.::.Magnet.->.Text.--.|.Rende
38e0 72 20 6d 61 67 6e 65 74 20 6c 69 6e 6b 20 74 6f 20 75 72 6c 65 6e 63 6f 64 65 64 20 73 74 72 69 r.magnet.link.to.urlencoded.stri
3900 6e 67 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 70 61 72 73 65 4d 61 67 6e 65 74 20 23 2d 7d 00 70 ng..{-#.INLINE.parseMagnet.#-}.p
3920 61 72 73 65 4d 61 67 6e 65 74 20 3d 20 70 61 72 73 65 4d 61 67 6e 65 74 53 74 72 20 2e 20 54 2e arseMagnet.=.parseMagnetStr...T.
3940 75 6e 70 61 63 6b 00 70 61 72 73 65 4d 61 67 6e 65 74 20 3a 3a 20 54 65 78 74 20 2d 3e 20 4d 61 unpack.parseMagnet.::.Text.->.Ma
3960 79 62 65 20 4d 61 67 6e 65 74 00 2d 2d 00 2d 2d 20 27 73 61 66 65 43 6f 6e 76 65 72 74 27 20 74 ybe.Magnet.--.--.'safeConvert'.t
3980 6f 20 66 69 6e 64 20 6f 75 74 20 65 72 72 6f 72 20 6c 6f 63 61 74 69 6f 6e 2e 00 2d 2d 20 7c 20 o.find.out.error.location..--.|.
39a0 54 72 79 20 74 6f 20 70 61 72 73 65 20 6d 61 67 6e 65 74 20 6c 69 6e 6b 20 66 72 6f 6d 20 75 72 Try.to.parse.magnet.link.from.ur
39c0 6c 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 20 55 73 65 00 00 20 20 20 20 20 20 6d 73 67 20 lencoded.string..Use........msg.
39e0 3d 20 22 75 6e 61 62 6c 65 20 74 6f 20 70 61 72 73 65 20 6d 61 67 6e 65 74 3a 20 22 20 2b 2b 20 =."unable.to.parse.magnet:.".++.
3a00 73 74 72 00 20 20 20 20 77 68 65 72 65 00 20 20 66 72 6f 6d 53 74 72 69 6e 67 20 73 74 72 20 3d str.....where...fromString.str.=
3a20 20 66 72 6f 6d 4d 61 79 62 65 20 28 65 72 72 6f 72 20 6d 73 67 29 20 24 20 70 61 72 73 65 4d 61 .fromMaybe.(error.msg).$.parseMa
3a40 67 6e 65 74 53 74 72 20 73 74 72 00 69 6e 73 74 61 6e 63 65 20 49 73 53 74 72 69 6e 67 20 4d 61 gnetStr.str.instance.IsString.Ma
3a60 67 6e 65 74 20 77 68 65 72 65 00 00 20 20 20 20 20 20 28 6d 73 74 72 2c 20 72 65 73 74 29 20 3d gnet.where........(mstr,.rest).=
3a80 20 4c 2e 62 72 65 61 6b 20 28 3d 3d 20 27 20 27 29 20 78 73 00 20 20 20 20 77 68 65 72 65 00 20 .L.break.(==.'.').xs.....where..
3aa0 20 20 20 20 20 7c 20 6f 74 68 65 72 77 69 73 65 20 3d 20 5b 5d 00 20 20 20 20 20 20 7c 20 4a 75 .....|.otherwise.=.[].......|.Ju
3ac0 73 74 20 6d 20 3c 2d 20 70 61 72 73 65 4d 61 67 6e 65 74 53 74 72 20 6d 73 74 72 20 3d 20 5b 28 st.m.<-.parseMagnetStr.mstr.=.[(
3ae0 6d 2c 20 72 65 73 74 29 5d 00 20 20 72 65 61 64 73 50 72 65 63 20 5f 20 78 73 00 69 6e 73 74 61 m,.rest)]...readsPrec._.xs.insta
3b00 6e 63 65 20 52 65 61 64 20 4d 61 67 6e 65 74 20 77 68 65 72 65 00 00 20 20 7b 2d 23 20 49 4e 4c nce.Read.Magnet.where....{-#.INL
3b20 49 4e 45 20 73 68 6f 77 20 23 2d 7d 00 20 20 73 68 6f 77 20 3d 20 72 65 6e 64 65 72 4d 61 67 6e INE.show.#-}...show.=.renderMagn
3b40 65 74 53 74 72 00 69 6e 73 74 61 6e 63 65 20 53 68 6f 77 20 4d 61 67 6e 65 74 20 77 68 65 72 65 etStr.instance.Show.Magnet.where
3b60 00 00 20 20 70 50 72 69 6e 74 20 3d 20 50 50 2e 74 65 78 74 20 2e 20 72 65 6e 64 65 72 4d 61 67 ....pPrint.=.PP.text...renderMag
3b80 6e 65 74 53 74 72 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 20 4d 61 67 6e 65 74 20 77 68 netStr.instance.Pretty.Magnet.wh
3ba0 65 72 65 00 00 72 65 6e 64 65 72 4d 61 67 6e 65 74 53 74 72 20 3d 20 73 68 6f 77 20 2e 20 28 63 ere..renderMagnetStr.=.show...(c
3bc0 6f 6e 76 65 72 74 20 3a 3a 20 4d 61 67 6e 65 74 20 2d 3e 20 55 52 49 29 00 72 65 6e 64 65 72 4d onvert.::.Magnet.->.URI).renderM
3be0 61 67 6e 65 74 53 74 72 20 3a 3a 20 4d 61 67 6e 65 74 20 2d 3e 20 53 74 72 69 6e 67 00 00 70 61 agnetStr.::.Magnet.->.String..pa
3c00 72 73 65 4d 61 67 6e 65 74 53 74 72 20 3d 20 65 69 74 68 65 72 20 28 63 6f 6e 73 74 20 4e 6f 74 rseMagnetStr.=.either.(const.Not
3c20 68 69 6e 67 29 20 4a 75 73 74 20 2e 20 73 61 66 65 43 6f 6e 76 65 72 74 00 70 61 72 73 65 4d 61 hing).Just...safeConvert.parseMa
3c40 67 6e 65 74 53 74 72 20 3a 3a 20 53 74 72 69 6e 67 20 2d 3e 20 4d 61 79 62 65 20 4d 61 67 6e 65 gnetStr.::.String.->.Maybe.Magne
3c60 74 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d t..-----------------------------
3c80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3ca0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 20 20 7d 00 20 20 20 20 2c 20 74 72 61 63 6b 65 72 20 ----------......}.....,.tracker.
3cc0 20 20 20 20 3d 20 74 41 6e 6e 6f 75 6e 63 65 00 20 20 20 20 7b 20 65 78 61 63 74 4c 65 6e 67 74 ....=.tAnnounce.....{.exactLengt
3ce0 68 20 3d 20 4a 75 73 74 20 24 20 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 24 20 63 6f 6e 74 65 6e h.=.Just.$.fromIntegral.$.conten
3d00 74 4c 65 6e 67 74 68 20 69 64 4c 61 79 6f 75 74 49 6e 66 6f 00 20 20 3d 20 28 73 69 6d 70 6c 65 tLength.idLayoutInfo...=.(simple
3d20 4d 61 67 6e 65 74 20 74 29 00 64 65 74 61 69 6c 65 64 4d 61 67 6e 65 74 20 74 20 40 20 54 6f 72 Magnet.t).detailedMagnet.t.@.Tor
3d40 72 65 6e 74 20 7b 74 49 6e 66 6f 44 69 63 74 20 3d 20 49 6e 66 6f 44 69 63 74 20 7b 2e 2e 7d 2c rent.{tInfoDict.=.InfoDict.{..},
3d60 20 74 41 6e 6e 6f 75 6e 63 65 7d 00 64 65 74 61 69 6c 65 64 4d 61 67 6e 65 74 20 3a 3a 20 54 6f .tAnnounce}.detailedMagnet.::.To
3d80 72 72 65 6e 74 20 2d 3e 20 4d 61 67 6e 65 74 00 2d 2d 00 2d 2d 20 27 74 72 61 63 6b 65 72 27 20 rrent.->.Magnet.--.--.'tracker'.
3da0 28 27 74 72 27 20 70 61 72 61 6d 29 2e 00 2d 2d 20 7c 20 4c 69 6b 65 20 27 73 69 6d 70 6c 65 4d ('tr'.param)..--.|.Like.'simpleM
3dc0 61 67 6e 65 74 27 20 62 75 74 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 27 65 78 61 63 74 4c 65 agnet'.but.also.include.'exactLe
3de0 6e 67 74 68 27 20 28 27 78 6c 27 20 70 61 72 61 6d 29 20 61 6e 64 00 00 20 20 20 20 7d 00 20 20 ngth'.('xl'.param).and......}...
3e00 20 20 7b 20 64 69 73 70 6c 61 79 4e 61 6d 65 20 3d 20 4a 75 73 74 20 24 20 54 2e 64 65 63 6f 64 ..{.displayName.=.Just.$.T.decod
3e20 65 55 74 66 38 20 24 20 73 75 67 67 65 73 74 65 64 4e 61 6d 65 20 69 64 4c 61 79 6f 75 74 49 6e eUtf8.$.suggestedName.idLayoutIn
3e40 66 6f 00 20 20 3d 20 28 6e 75 6c 6c 4d 61 67 6e 65 74 20 69 64 49 6e 66 6f 48 61 73 68 29 00 73 fo...=.(nullMagnet.idInfoHash).s
3e60 69 6d 70 6c 65 4d 61 67 6e 65 74 20 54 6f 72 72 65 6e 74 20 7b 74 49 6e 66 6f 44 69 63 74 20 3d impleMagnet.Torrent.{tInfoDict.=
3e80 20 49 6e 66 6f 44 69 63 74 20 7b 2e 2e 7d 7d 00 73 69 6d 70 6c 65 4d 61 67 6e 65 74 20 3a 3a 20 .InfoDict.{..}}.simpleMagnet.::.
3ea0 54 6f 72 72 65 6e 74 20 2d 3e 20 4d 61 67 6e 65 74 00 2d 2d 20 7c 20 4c 69 6b 65 20 27 6e 75 6c Torrent.->.Magnet.--.|.Like.'nul
3ec0 6c 4d 61 67 6e 65 74 27 20 62 75 74 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 27 64 69 73 70 6c lMagnet'.but.also.include.'displ
3ee0 61 79 4e 61 6d 65 27 20 28 27 64 6e 27 20 70 61 72 61 6d 29 2e 00 00 20 20 20 20 7d 00 20 20 20 ayName'.('dn'.param).......}....
3f00 20 2c 20 73 75 70 70 6c 65 6d 65 6e 74 20 3d 20 4d 2e 65 6d 70 74 79 00 20 20 20 20 2c 20 74 72 .,.supplement.=.M.empty.....,.tr
3f20 61 63 6b 65 72 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 65 78 61 63 74 53 6f acker....=.Nothing.....,.exactSo
3f40 75 72 63 65 20 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 61 63 63 65 70 74 urce......=.Nothing.....,.accept
3f60 61 62 6c 65 53 6f 75 72 63 65 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 6b 65 79 77 6f ableSource.=.Nothing.....,.keywo
3f80 72 64 54 6f 70 69 63 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 6d 61 6e 69 66 65 73 74 rdTopic.=.Nothing.....,.manifest
3fa0 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 65 78 61 63 74 4c 65 6e 67 74 68 .....=.Nothing.....,.exactLength
3fc0 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 64 69 73 70 6c 61 79 4e 61 6d 65 20 20 3d ..=.Nothing.....,.displayName..=
3fe0 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 7b 20 65 78 61 63 74 54 6f 70 69 63 20 20 20 3d 20 75 00 .Nothing.....{.exactTopic...=.u.
4000 61 64 00 00 18 00 00 00 e0 01 00 00 00 10 00 00 6b 00 00 00 00 00 00 00 c9 0f 00 00 9a 0f 00 00 ad..............k...............
4020 44 0f 00 00 43 0f 00 00 00 0f 00 00 c8 0e 00 00 a2 0e 00 00 51 0e 00 00 50 0e 00 00 1c 0e 00 00 D...C...............Q...P.......
4040 f0 0d 00 00 c5 0d 00 00 c4 0d 00 00 9c 0d 00 00 61 0d 00 00 30 0d 00 00 f7 0c 00 00 d1 0c 00 00 ................a...0...........
4060 7c 0c 00 00 7b 0c 00 00 32 0c 00 00 1e 0c 00 00 d5 0b 00 00 d4 0b 00 00 a1 0b 00 00 60 0b 00 00 |...{...2...................`...
4080 5d 0b 00 00 5c 0b 00 00 12 0b 00 00 f9 0a 00 00 d9 0a 00 00 a4 0a 00 00 a3 0a 00 00 81 0a 00 00 ]...\...........................
40a0 4d 0a 00 00 4c 0a 00 00 2b 0a 00 00 02 0a 00 00 01 0a 00 00 e5 09 00 00 a3 09 00 00 65 09 00 00 M...L...+...................e...
40c0 4f 09 00 00 48 09 00 00 08 09 00 00 e0 08 00 00 df 08 00 00 cf 08 00 00 c1 08 00 00 9e 08 00 00 O...H...........................
40e0 7b 08 00 00 58 08 00 00 35 08 00 00 31 08 00 00 24 08 00 00 1d 08 00 00 1c 08 00 00 fd 07 00 00 {...X...5...1...$...............
4100 d6 07 00 00 d5 07 00 00 b4 07 00 00 85 07 00 00 67 07 00 00 66 07 00 00 36 07 00 00 0e 07 00 00 ................g...f...6.......
4120 98 06 00 00 90 06 00 00 4c 06 00 00 4b 06 00 00 32 06 00 00 fd 05 00 00 dd 05 00 00 b8 05 00 00 ........L...K...2...............
4140 b7 05 00 00 7b 05 00 00 3d 05 00 00 fe 04 00 00 f6 04 00 00 b6 04 00 00 b5 04 00 00 9b 04 00 00 ....{...=.......................
4160 70 04 00 00 6f 04 00 00 4a 04 00 00 34 04 00 00 fc 03 00 00 fb 03 00 00 db 03 00 00 b6 03 00 00 p...o...J...4...................
4180 91 03 00 00 6c 03 00 00 47 03 00 00 39 03 00 00 38 03 00 00 0c 03 00 00 e8 02 00 00 c5 02 00 00 ....l...G...9...8...............
41a0 a4 02 00 00 9a 02 00 00 73 02 00 00 6c 02 00 00 6b 02 00 00 52 02 00 00 07 02 00 00 06 02 00 00 ........s...l...k...R...........
41c0 e0 01 00 00 db 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2d 2d 70 70 ............................--pp
41e0 2d 2d 70 70 41 64 64 69 74 69 6f 6e 61 6c 49 6e 66 6f 20 3a 3a 20 49 6e 66 6f 44 69 63 74 20 2d --ppAdditionalInfo.::.InfoDict.-
4200 3e 20 44 6f 63 00 00 70 70 50 72 69 76 61 63 79 20 70 72 69 76 61 63 79 20 3d 20 22 50 72 69 76 >.Doc..ppPrivacy.privacy.=."Priv
4220 61 63 79 3a 20 22 20 3c 3e 20 69 66 20 70 72 69 76 61 63 79 20 74 68 65 6e 20 22 70 72 69 76 61 acy:.".<>.if.privacy.then."priva
4240 74 65 22 20 65 6c 73 65 20 22 70 75 62 6c 69 63 22 00 70 70 50 72 69 76 61 63 79 20 3a 3a 20 42 te".else."public".ppPrivacy.::.B
4260 6f 6f 6c 20 2d 3e 20 44 6f 63 00 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 69 68 20 3d 20 68 61 ool.->.Doc..#endif.......ih.=.ha
4280 73 68 4c 61 7a 79 49 48 20 28 42 45 2e 65 6e 63 6f 64 65 20 64 69 63 74 29 00 20 20 20 20 77 68 shLazyIH.(BE.encode.dict).....wh
42a0 65 72 65 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 20 67 65 74 50 72 69 ere...................<*>.getPri
42c0 76 61 74 65 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 20 67 65 74 50 69 vate...................<*>.getPi
42e0 65 63 65 49 6e 66 6f 00 20 20 20 20 20 20 49 6e 66 6f 44 69 63 74 20 69 68 20 3c 24 3e 20 67 65 eceInfo.......InfoDict.ih.<$>.ge
4300 74 4c 61 79 6f 75 74 49 6e 66 6f 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 64 69 63 74 20 3d tLayoutInfo...fromBEncode.dict.=
4320 20 28 60 66 72 6f 6d 44 69 63 74 60 20 64 69 63 74 29 20 24 20 64 6f 00 00 20 20 20 20 20 20 65 .(`fromDict`.dict).$.do........e
4340 6e 64 44 69 63 74 00 20 20 20 20 20 20 70 75 74 50 72 69 76 61 74 65 20 20 20 20 69 64 50 72 69 ndDict.......putPrivate....idPri
4360 76 61 74 65 20 20 20 20 20 20 24 00 20 20 20 20 20 20 70 75 74 50 69 65 63 65 49 6e 66 6f 20 20 vate......$.......putPieceInfo..
4380 69 64 50 69 65 63 65 49 6e 66 6f 20 20 20 20 24 00 20 20 20 20 20 20 70 75 74 4c 61 79 6f 75 74 idPieceInfo....$.......putLayout
43a0 49 6e 66 6f 20 69 64 4c 61 79 6f 75 74 49 6e 66 6f 20 20 20 24 00 20 20 74 6f 42 45 6e 63 6f 64 Info.idLayoutInfo...$...toBEncod
43c0 65 20 49 6e 66 6f 44 69 63 74 20 7b 2e 2e 7d 20 3d 20 74 6f 44 69 63 74 20 24 00 69 6e 73 74 61 e.InfoDict.{..}.=.toDict.$.insta
43e0 6e 63 65 20 42 45 6e 63 6f 64 65 20 49 6e 66 6f 44 69 63 74 20 77 68 65 72 65 00 00 70 75 74 50 nce.BEncode.InfoDict.where..putP
4400 72 69 76 61 74 65 20 54 72 75 65 20 20 3d 20 5c 20 63 6f 6e 74 20 2d 3e 20 22 70 72 69 76 61 74 rivate.True..=.\.cont.->."privat
4420 65 22 20 2e 3d 21 20 54 72 75 65 20 2e 3a 20 63 6f 6e 74 00 70 75 74 50 72 69 76 61 74 65 20 46 e"..=!.True..:.cont.putPrivate.F
4440 61 6c 73 65 20 3d 20 69 64 00 70 75 74 50 72 69 76 61 74 65 20 3a 3a 20 42 6f 6f 6c 20 2d 3e 20 alse.=.id.putPrivate.::.Bool.->.
4460 42 44 69 63 74 20 2d 3e 20 42 44 69 63 74 00 00 67 65 74 50 72 69 76 61 74 65 20 3d 20 28 4a 75 BDict.->.BDict..getPrivate.=.(Ju
4480 73 74 20 54 72 75 65 20 3d 3d 29 20 3c 24 3e 3f 20 22 70 72 69 76 61 74 65 22 00 67 65 74 50 72 st.True.==).<$>?."private".getPr
44a0 69 76 61 74 65 20 3a 3a 20 42 45 2e 47 65 74 20 42 6f 6f 6c 00 00 20 20 20 20 69 68 20 3d 20 68 ivate.::.BE.Get.Bool......ih.=.h
44c0 61 73 68 4c 61 7a 79 49 48 20 24 20 42 45 2e 65 6e 63 6f 64 65 20 24 20 49 6e 66 6f 44 69 63 74 ashLazyIH.$.BE.encode.$.InfoDict
44e0 20 64 65 66 20 6c 69 20 70 69 6e 66 6f 20 70 72 69 76 61 74 65 00 20 20 77 68 65 72 65 00 69 6e .def.li.pinfo.private...where.in
4500 66 6f 44 69 63 74 69 6f 6e 61 72 79 20 6c 69 20 70 69 6e 66 6f 20 70 72 69 76 61 74 65 20 3d 20 foDictionary.li.pinfo.private.=.
4520 49 6e 66 6f 44 69 63 74 20 69 68 20 6c 69 20 70 69 6e 66 6f 20 70 72 69 76 61 74 65 00 69 6e 66 InfoDict.ih.li.pinfo.private.inf
4540 6f 44 69 63 74 69 6f 6e 61 72 79 20 3a 3a 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 50 69 65 oDictionary.::.LayoutInfo.->.Pie
4560 63 65 49 6e 66 6f 20 2d 3e 20 42 6f 6f 6c 20 2d 3e 20 49 6e 66 6f 44 69 63 74 00 2d 2d 20 7c 20 ceInfo.->.Bool.->.InfoDict.--.|.
4580 53 6d 61 72 74 20 63 6f 6e 73 74 72 75 63 74 6f 72 3a 20 61 64 64 20 61 20 69 6e 66 6f 20 68 61 Smart.constructor:.add.a.info.ha
45a0 73 68 20 74 6f 20 69 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 2e 00 00 20 20 64 65 66 20 3d 20 sh.to.info.dictionary.....def.=.
45c0 69 6e 66 6f 44 69 63 74 69 6f 6e 61 72 79 20 64 65 66 20 64 65 66 20 46 61 6c 73 65 00 69 6e 73 infoDictionary.def.def.False.ins
45e0 74 61 6e 63 65 20 44 65 66 61 75 6c 74 20 49 6e 66 6f 44 69 63 74 20 77 68 65 72 65 00 2d 2d 20 tance.Default.InfoDict.where.--.
4600 7c 20 45 6d 70 74 79 20 69 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 20 77 69 74 68 20 7a 65 72 |.Empty.info.dictionary.with.zer
4620 6f 2d 6c 65 6e 67 74 68 20 63 6f 6e 74 65 6e 74 2e 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e o-length.content..#ifdef.VERSION
4640 5f 62 65 6e 63 6f 64 69 6e 67 00 00 20 20 20 20 6d 73 67 20 3d 20 22 49 6e 66 6f 68 61 73 68 2e _bencoding......msg.=."Infohash.
4660 68 61 73 68 3a 20 69 6d 70 6f 73 73 69 62 6c 65 3a 20 53 48 41 31 20 69 73 20 61 6c 77 61 79 73 hash:.impossible:.SHA1.is.always
4680 20 32 30 20 62 79 74 65 73 20 6c 6f 6e 67 22 00 20 20 77 68 65 72 65 00 68 61 73 68 4c 61 7a 79 .20.bytes.long"...where.hashLazy
46a0 49 48 20 3d 20 65 69 74 68 65 72 20 28 63 6f 6e 73 74 20 28 65 72 72 6f 72 20 6d 73 67 29 29 20 IH.=.either.(const.(error.msg)).
46c0 69 64 20 2e 20 73 61 66 65 43 6f 6e 76 65 72 74 20 2e 20 28 42 79 74 65 73 2e 63 6f 6e 76 65 72 id...safeConvert...(Bytes.conver
46e0 74 20 3a 3a 20 44 69 67 65 73 74 20 53 48 41 31 20 2d 3e 20 42 53 2e 42 79 74 65 53 74 72 69 6e t.::.Digest.SHA1.->.BS.ByteStrin
4700 67 29 20 2e 20 68 61 73 68 6c 61 7a 79 00 68 61 73 68 4c 61 7a 79 49 48 20 3a 3a 20 42 4c 2e 42 g)...hashlazy.hashLazyIH.::.BL.B
4720 79 74 65 53 74 72 69 6e 67 20 2d 3e 20 49 6e 66 6f 48 61 73 68 00 2d 2d 20 7c 20 48 61 73 68 20 yteString.->.InfoHash.--.|.Hash.
4740 6c 61 7a 79 20 62 79 74 65 73 74 72 69 6e 67 20 75 73 69 6e 67 20 53 48 41 31 20 61 6c 67 6f 72 lazy.bytestring.using.SHA1.algor
4760 69 74 68 6d 2e 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 68 61 73 68 57 69 74 68 53 61 6c 74 ithm.....{-#.INLINE.hashWithSalt
4780 20 23 2d 7d 00 20 20 68 61 73 68 57 69 74 68 53 61 6c 74 20 3d 20 48 61 73 68 61 62 6c 65 2e 68 .#-}...hashWithSalt.=.Hashable.h
47a0 61 73 68 55 73 69 6e 67 20 69 64 49 6e 66 6f 48 61 73 68 00 69 6e 73 74 61 6e 63 65 20 48 61 73 ashUsing.idInfoHash.instance.Has
47c0 68 61 62 6c 65 20 49 6e 66 6f 44 69 63 74 20 77 68 65 72 65 00 00 20 20 72 6e 66 20 49 6e 66 6f hable.InfoDict.where....rnf.Info
47e0 44 69 63 74 20 7b 2e 2e 7d 20 3d 20 72 6e 66 20 69 64 4c 61 79 6f 75 74 49 6e 66 6f 00 69 6e 73 Dict.{..}.=.rnf.idLayoutInfo.ins
4800 74 61 6e 63 65 20 4e 46 44 61 74 61 20 49 6e 66 6f 44 69 63 74 20 77 68 65 72 65 00 00 23 65 6e tance.NFData.InfoDict.where..#en
4820 64 69 66 00 20 20 27 27 49 6e 66 6f 44 69 63 74 00 20 20 5d 00 20 20 2c 20 28 22 69 64 50 72 69 dif...''InfoDict...]...,.("idPri
4840 76 61 74 65 22 20 20 20 2c 20 22 69 73 50 72 69 76 61 74 65 22 20 29 00 20 20 2c 20 28 22 69 64 vate"...,."isPrivate".)...,.("id
4860 50 69 65 63 65 49 6e 66 6f 22 20 2c 20 22 70 69 65 63 65 49 6e 66 6f 22 20 29 00 20 20 2c 20 28 PieceInfo".,."pieceInfo".)...,.(
4880 22 69 64 4c 61 79 6f 75 74 49 6e 66 6f 22 2c 20 22 6c 61 79 6f 75 74 49 6e 66 6f 22 29 00 20 20 "idLayoutInfo",."layoutInfo")...
48a0 5b 20 28 22 69 64 49 6e 66 6f 48 61 73 68 22 20 20 2c 20 22 69 6e 66 6f 68 61 73 68 22 20 20 29 [.("idInfoHash"..,."infohash"..)
48c0 00 6d 61 6b 65 4c 65 6e 73 65 73 46 6f 72 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 00 .makeLensesFor.#ifdef.USE_lens..
48e0 20 20 7d 20 64 65 72 69 76 69 6e 67 20 28 53 68 6f 77 2c 20 52 65 61 64 2c 20 45 71 2c 20 54 79 ..}.deriving.(Show,.Read,.Eq,.Ty
4900 70 65 61 62 6c 65 29 00 20 20 20 20 2d 2d 20 20 20 42 45 50 20 32 37 3a 20 3c 68 74 74 70 3a 2f peable).....--...BEP.27:.<http:/
4920 2f 77 77 77 2e 62 69 74 74 6f 72 72 65 6e 74 2e 6f 72 67 2f 62 65 70 73 2f 62 65 70 5f 30 30 32 /www.bittorrent.org/beps/bep_002
4940 37 2e 68 74 6d 6c 3e 00 20 20 20 20 2d 2d 00 20 20 20 20 2d 2d 20 6d 65 74 61 69 6e 66 6f 20 66 7.html>.....--.....--.metainfo.f
4960 69 6c 65 2e 00 20 20 20 20 2d 2d 20 70 65 65 72 73 20 4f 4e 4c 59 20 76 69 61 20 74 68 65 20 74 ile......--.peers.ONLY.via.the.t
4980 72 61 63 6b 65 72 73 20 65 78 70 6c 69 63 69 74 79 20 64 65 73 63 72 69 62 65 64 20 69 6e 20 74 rackers.explicity.described.in.t
49a0 68 65 00 20 20 20 20 2d 2d 20 5e 20 49 66 20 73 65 74 20 74 68 65 20 63 6c 69 65 6e 74 20 4d 55 he.....--.^.If.set.the.client.MU
49c0 53 54 20 70 75 62 6c 69 73 68 20 69 74 73 20 70 72 65 73 65 6e 63 65 20 74 6f 20 67 65 74 20 6f ST.publish.its.presence.to.get.o
49e0 74 68 65 72 00 20 20 2c 20 69 64 50 72 69 76 61 74 65 20 20 20 20 20 20 3a 3a 20 21 42 6f 6f 6c ther...,.idPrivate......::.!Bool
4a00 00 00 20 20 20 20 2d 2d 20 5e 20 43 6f 6e 74 65 6e 74 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 6e ......--.^.Content.validation.in
4a20 66 6f 72 6d 61 74 69 6f 6e 2e 00 20 20 2c 20 69 64 50 69 65 63 65 49 6e 66 6f 20 20 20 20 3a 3a formation....,.idPieceInfo....::
4a40 20 21 50 69 65 63 65 49 6e 66 6f 00 00 20 20 20 20 2d 2d 20 5e 20 46 69 6c 65 20 6c 61 79 6f 75 .!PieceInfo......--.^.File.layou
4a60 74 20 28 6e 61 6d 65 2c 20 73 69 7a 65 2c 20 65 74 63 29 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e t.(name,.size,.etc).information.
4a80 00 20 20 2c 20 69 64 4c 61 79 6f 75 74 49 6e 66 6f 20 20 20 3a 3a 20 21 4c 61 79 6f 75 74 49 6e ...,.idLayoutInfo...::.!LayoutIn
4aa0 66 6f 00 00 20 20 20 20 2d 2d 20 5e 20 53 48 41 31 20 68 61 73 68 20 6f 66 20 74 68 65 20 28 6f fo......--.^.SHA1.hash.of.the.(o
4ac0 74 68 65 72 29 20 27 44 69 63 74 49 6e 66 6f 27 20 66 69 65 6c 64 73 2e 00 20 20 7b 20 69 64 49 ther).'DictInfo'.fields....{.idI
4ae0 6e 66 6f 48 61 73 68 20 20 20 20 20 3a 3a 20 21 49 6e 66 6f 48 61 73 68 00 64 61 74 61 20 49 6e nfoHash.....::.!InfoHash.data.In
4b00 66 6f 44 69 63 74 20 3d 20 49 6e 66 6f 44 69 63 74 00 2d 2d 20 7c 20 49 6e 66 6f 20 70 61 72 74 foDict.=.InfoDict.--.|.Info.part
4b20 20 6f 66 20 74 68 65 20 2e 74 6f 72 72 65 6e 74 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 20 69 6e .of.the..torrent.file.contain.in
4b40 66 6f 20 61 62 6f 75 74 20 65 61 63 68 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 2e 00 00 2d 7d 00 fo.about.each.content.file...-}.
4b60 20 20 20 62 75 74 20 69 74 27 73 20 62 65 74 74 65 72 20 74 6f 20 6b 65 65 70 20 69 74 20 68 65 ...but.it's.better.to.keep.it.he
4b80 72 65 20 74 6f 20 61 76 6f 69 64 20 68 65 61 76 79 20 72 65 63 6f 6d 70 75 74 61 74 69 6f 6e 73 re.to.avoid.heavy.recomputations
4ba0 00 7b 2d 20 6e 6f 74 65 20 74 68 61 74 20 69 6e 66 6f 20 68 61 73 68 20 69 73 20 61 63 74 75 61 .{-.note.that.info.hash.is.actua
4bc0 6c 6c 79 20 72 65 64 75 6e 74 61 6e 74 20 66 69 65 6c 64 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d lly.reduntant.field..-----------
4be0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d ----------------------------}.--
4c20 20 20 49 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..Info.dictionary.{-------------
4c40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4c60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 26 26 --------------------------....&&
4c80 20 42 79 74 65 73 2e 63 6f 6e 76 65 72 74 20 28 68 61 73 68 6c 61 7a 79 20 70 69 65 63 65 44 61 .Bytes.convert.(hashlazy.pieceDa
4ca0 74 61 20 3a 3a 20 44 69 67 65 73 74 20 53 48 41 31 29 20 3d 3d 20 70 69 65 63 65 48 61 73 68 20 ta.::.Digest.SHA1).==.pieceHash.
4cc0 70 69 6e 66 6f 20 70 69 65 63 65 49 6e 64 65 78 00 20 20 20 20 20 7c 7c 20 69 73 4c 61 73 74 50 pinfo.pieceIndex......||.isLastP
4ce0 69 65 63 65 20 70 69 6e 66 6f 20 70 69 65 63 65 49 6e 64 65 78 29 00 20 20 3d 20 28 66 72 6f 6d iece.pinfo.pieceIndex)...=.(from
4d00 49 6e 74 65 67 72 61 6c 20 28 42 4c 2e 6c 65 6e 67 74 68 20 70 69 65 63 65 44 61 74 61 29 20 3d Integral.(BL.length.pieceData).=
4d20 3d 20 70 69 50 69 65 63 65 4c 65 6e 67 74 68 00 63 68 65 63 6b 50 69 65 63 65 4c 61 7a 79 20 70 =.piPieceLength.checkPieceLazy.p
4d40 69 6e 66 6f 20 40 20 50 69 65 63 65 49 6e 66 6f 20 7b 2e 2e 7d 20 50 69 65 63 65 20 7b 2e 2e 7d info.@.PieceInfo.{..}.Piece.{..}
4d60 00 63 68 65 63 6b 50 69 65 63 65 4c 61 7a 79 20 3a 3a 20 50 69 65 63 65 49 6e 66 6f 20 2d 3e 20 .checkPieceLazy.::.PieceInfo.->.
4d80 50 69 65 63 65 20 42 4c 2e 42 79 74 65 53 74 72 69 6e 67 20 2d 3e 20 42 6f 6f 6c 00 2d 2d 20 7c Piece.BL.ByteString.->.Bool.--.|
4da0 20 56 61 6c 69 64 61 74 65 20 70 69 65 63 65 20 77 69 74 68 20 6d 65 74 61 69 6e 66 6f 20 68 61 .Validate.piece.with.metainfo.ha
4dc0 73 68 2e 00 00 69 73 4c 61 73 74 50 69 65 63 65 20 63 69 20 69 20 3d 20 70 69 65 63 65 43 6f 75 sh...isLastPiece.ci.i.=.pieceCou
4de0 6e 74 20 63 69 20 3d 3d 20 73 75 63 63 20 69 00 69 73 4c 61 73 74 50 69 65 63 65 20 3a 3a 20 50 nt.ci.==.succ.i.isLastPiece.::.P
4e00 69 65 63 65 49 6e 66 6f 20 2d 3e 20 50 69 65 63 65 49 78 20 2d 3e 20 42 6f 6f 6c 00 2d 2d 20 7c ieceInfo.->.PieceIx.->.Bool.--.|
4e20 20 54 65 73 74 20 69 66 20 74 68 69 73 20 69 73 20 6c 61 73 74 20 70 69 65 63 65 20 69 6e 20 74 .Test.if.this.is.last.piece.in.t
4e40 6f 72 72 65 6e 74 20 63 6f 6e 74 65 6e 74 2e 00 00 70 69 65 63 65 43 6f 75 6e 74 20 50 69 65 63 orrent.content...pieceCount.Piec
4e60 65 49 6e 66 6f 20 7b 2e 2e 7d 20 3d 20 42 53 2e 6c 65 6e 67 74 68 20 28 75 6e 48 61 73 68 4c 69 eInfo.{..}.=.BS.length.(unHashLi
4e80 73 74 20 70 69 50 69 65 63 65 48 61 73 68 65 73 29 20 60 71 75 6f 74 60 20 68 61 73 68 73 69 7a st.piPieceHashes).`quot`.hashsiz
4ea0 65 00 70 69 65 63 65 43 6f 75 6e 74 20 3a 3a 20 50 69 65 63 65 49 6e 66 6f 20 2d 3e 20 50 69 65 e.pieceCount.::.PieceInfo.->.Pie
4ec0 63 65 43 6f 75 6e 74 00 2d 2d 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 70 69 65 63 65 20 73 69 7a ceCount.--.multiple.of.piece.siz
4ee0 65 20 74 68 65 6e 20 74 68 65 20 63 6f 75 6e 74 20 69 73 20 72 6f 75 6e 64 65 64 20 75 70 2e 00 e.then.the.count.is.rounded.up..
4f00 2d 2d 20 7c 20 46 69 6e 64 20 63 6f 75 6e 74 20 6f 66 20 70 69 65 63 65 73 20 69 6e 20 74 68 65 --.|.Find.count.of.pieces.in.the
4f20 20 74 6f 72 72 65 6e 74 2e 20 49 66 20 74 6f 72 72 65 6e 74 20 73 69 7a 65 20 69 73 20 6e 6f 74 .torrent..If.torrent.size.is.not
4f40 20 61 00 00 70 69 65 63 65 48 61 73 68 20 50 69 65 63 65 49 6e 66 6f 20 7b 2e 2e 7d 20 69 20 3d .a..pieceHash.PieceInfo.{..}.i.=
4f60 20 73 6c 69 63 65 20 28 68 61 73 68 73 69 7a 65 20 2a 20 69 29 20 68 61 73 68 73 69 7a 65 20 28 .slice.(hashsize.*.i).hashsize.(
4f80 75 6e 48 61 73 68 4c 69 73 74 20 70 69 50 69 65 63 65 48 61 73 68 65 73 29 00 70 69 65 63 65 48 unHashList.piPieceHashes).pieceH
4fa0 61 73 68 20 3a 3a 20 50 69 65 63 65 49 6e 66 6f 20 2d 3e 20 50 69 65 63 65 49 78 20 2d 3e 20 50 ash.::.PieceInfo.->.PieceIx.->.P
4fc0 69 65 63 65 48 61 73 68 00 2d 2d 20 7c 20 45 78 74 72 61 63 74 20 76 61 6c 69 64 61 74 69 6f 6e ieceHash.--.|.Extract.validation
4fe0 20 68 61 73 68 20 62 79 20 73 70 65 63 69 66 69 65 64 20 70 69 65 63 65 20 69 6e 64 65 78 2e 00 .hash.by.specified.piece.index..
5000 61 64 00 00 1b 00 00 00 4f 02 00 00 00 10 00 00 86 00 00 00 00 00 00 00 ed 0f 00 00 db 0f 00 00 ad......O.......................
5020 c6 0f 00 00 b8 0f 00 00 a3 0f 00 00 91 0f 00 00 7e 0f 00 00 6f 0f 00 00 6e 0f 00 00 51 0f 00 00 ................~...o...n...Q...
5040 36 0f 00 00 1f 0f 00 00 06 0f 00 00 ef 0e 00 00 da 0e 00 00 c7 0e 00 00 ae 0e 00 00 94 0e 00 00 6...............................
5060 74 0e 00 00 6d 0e 00 00 5c 0e 00 00 41 0e 00 00 29 0e 00 00 22 0e 00 00 f9 0d 00 00 dc 0d 00 00 t...m...\...A...)..."...........
5080 b4 0d 00 00 8c 0d 00 00 64 0d 00 00 32 0d 00 00 0f 0d 00 00 fe 0c 00 00 e6 0c 00 00 d2 0c 00 00 ........d...2...................
50a0 af 0c 00 00 9f 0c 00 00 89 0c 00 00 74 0c 00 00 62 0c 00 00 47 0c 00 00 34 0c 00 00 1e 0c 00 00 ............t...b...G...4.......
50c0 ff 0b 00 00 e9 0b 00 00 cc 0b 00 00 b7 0b 00 00 9d 0b 00 00 79 0b 00 00 5b 0b 00 00 48 0b 00 00 ....................y...[...H...
50e0 1f 0b 00 00 01 0b 00 00 c8 0a 00 00 b1 0a 00 00 97 0a 00 00 87 0a 00 00 73 0a 00 00 5c 0a 00 00 ........................s...\...
5100 38 0a 00 00 23 0a 00 00 fd 09 00 00 e7 09 00 00 e0 09 00 00 d9 09 00 00 d8 09 00 00 c1 09 00 00 8...#...........................
5120 c0 09 00 00 bf 09 00 00 76 09 00 00 68 09 00 00 1f 09 00 00 17 09 00 00 14 09 00 00 e3 08 00 00 ........v...h...................
5140 b2 08 00 00 81 08 00 00 7e 08 00 00 57 08 00 00 54 08 00 00 01 08 00 00 00 08 00 00 f3 07 00 00 ........~...W...T...............
5160 f0 07 00 00 c1 07 00 00 c0 07 00 00 79 07 00 00 3c 07 00 00 1d 07 00 00 1c 07 00 00 09 07 00 00 ............y...<...............
5180 f8 06 00 00 f7 06 00 00 d3 06 00 00 b3 06 00 00 80 06 00 00 7f 06 00 00 5c 06 00 00 3b 06 00 00 ........................\...;...
51a0 08 06 00 00 ea 05 00 00 e9 05 00 00 d0 05 00 00 97 05 00 00 77 05 00 00 51 05 00 00 22 05 00 00 ....................w...Q..."...
51c0 1b 05 00 00 1a 05 00 00 14 05 00 00 e8 04 00 00 af 04 00 00 8e 04 00 00 6b 04 00 00 64 04 00 00 ........................k...d...
51e0 63 04 00 00 62 04 00 00 2e 04 00 00 0c 04 00 00 e5 03 00 00 d0 03 00 00 cf 03 00 00 a5 03 00 00 c...b...........................
5200 90 03 00 00 8f 03 00 00 60 03 00 00 39 03 00 00 12 03 00 00 f4 02 00 00 f3 02 00 00 cc 02 00 00 ........`...9...................
5220 af 02 00 00 7b 02 00 00 7a 02 00 00 4f 02 00 00 4e 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....{...z...O...N...............
5240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2d 2d 20 7c 20 43 6f 6e 76 65 72 74 20 74 6f 20 62 ...............--.|.Convert.to.b
5260 61 73 65 31 36 20 65 6e 63 6f 64 65 64 20 44 6f 63 20 73 74 72 69 6e 67 2e 00 00 20 20 73 68 6f ase16.encoded.Doc.string.....sho
5280 77 20 28 49 6e 66 6f 48 61 73 68 20 69 68 29 20 3d 20 42 43 2e 75 6e 70 61 63 6b 20 28 42 61 73 w.(InfoHash.ih).=.BC.unpack.(Bas
52a0 65 31 36 2e 65 6e 63 6f 64 65 20 69 68 29 00 69 6e 73 74 61 6e 63 65 20 53 68 6f 77 20 49 6e 66 e16.encode.ih).instance.Show.Inf
52c0 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 43 6f 6e 76 65 72 74 20 74 6f 20 62 61 73 65 oHash.where.--.|.Convert.to.base
52e0 31 36 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 16.encoded.string.....{-#.INLINE
5300 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 23 2d 7d 00 20 20 74 6f 51 75 65 72 79 56 61 6c 75 65 .toQueryValue.#-}...toQueryValue
5320 20 28 49 6e 66 6f 48 61 73 68 20 69 68 29 20 3d 20 4a 75 73 74 20 69 68 00 69 6e 73 74 61 6e 63 .(InfoHash.ih).=.Just.ih.instanc
5340 65 20 51 75 65 72 79 56 61 6c 75 65 4c 69 6b 65 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 e.QueryValueLike.InfoHash.where.
5360 2d 2d 20 7c 20 43 6f 6e 76 65 72 74 20 74 6f 20 72 61 77 20 71 75 65 72 79 20 76 61 6c 75 65 2e --.|.Convert.to.raw.query.value.
5380 20 28 6e 6f 20 65 6e 63 6f 64 69 6e 67 29 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 67 65 74 .(no.encoding)....{-#.INLINE.get
53a0 20 23 2d 7d 00 20 20 67 65 74 20 3d 20 49 6e 66 6f 48 61 73 68 20 3c 24 3e 20 67 65 74 42 79 74 .#-}...get.=.InfoHash.<$>.getByt
53c0 65 73 20 69 6e 66 6f 48 61 73 68 4c 65 6e 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 70 75 74 es.infoHashLen....{-#.INLINE.put
53e0 20 23 2d 7d 00 20 20 70 75 74 20 28 49 6e 66 6f 48 61 73 68 20 69 68 29 20 3d 20 70 75 74 42 79 .#-}...put.(InfoHash.ih).=.putBy
5400 74 65 53 74 72 69 6e 67 20 69 68 00 69 6e 73 74 61 6e 63 65 20 53 65 72 69 61 6c 69 7a 65 20 49 teString.ih.instance.Serialize.I
5420 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 43 6f 6e 76 65 72 74 20 74 6f 5c 2f 66 nfoHash.where.--.|.Convert.to\/f
5440 72 6f 6d 20 72 61 77 20 62 79 74 65 73 74 72 69 6e 67 2e 20 28 6e 6f 20 65 6e 63 6f 64 69 6e 67 rom.raw.bytestring..(no.encoding
5460 29 00 00 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 6d 73 67 20 3d 20 22 74 61 62 6c 65 4b 65 79 )...#endif.......msg.=."tableKey
5480 3a 20 69 6d 70 6f 73 73 69 62 6c 65 22 00 20 20 20 20 77 68 65 72 65 20 2d 2d 20 54 4f 44 4f 20 :.impossible".....where.--.TODO.
54a0 75 6e 73 61 66 65 20 63 6f 65 72 73 65 3f 00 20 20 74 6f 4e 6f 64 65 49 64 20 3d 20 65 69 74 68 unsafe.coerse?...toNodeId.=.eith
54c0 65 72 20 28 65 72 72 6f 72 20 6d 73 67 29 20 69 64 20 2e 20 53 2e 64 65 63 6f 64 65 20 2e 20 53 er.(error.msg).id...S.decode...S
54e0 2e 65 6e 63 6f 64 65 00 69 6e 73 74 61 6e 63 65 20 54 61 62 6c 65 4b 65 79 20 4b 4d 65 73 73 61 .encode.instance.TableKey.KMessa
5500 67 65 4f 66 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 23 69 66 20 30 00 00 23 65 6e 64 69 geOf.InfoHash.where.#if.0..#endi
5520 66 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 62 65 20 3d 20 49 6e 66 6f 48 61 73 68 20 3c 24 f...fromBEncode.be.=.InfoHash.<$
5540 3e 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 62 65 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 3d 20 74 >.fromBEncode.be...toBEncode.=.t
5560 6f 42 45 6e 63 6f 64 65 20 2e 20 67 65 74 49 6e 66 6f 48 61 73 68 00 69 6e 73 74 61 6e 63 65 20 oBEncode...getInfoHash.instance.
5580 42 45 6e 63 6f 64 65 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 43 6f 6e 76 BEncode.InfoHash.where.--.|.Conv
55a0 65 72 74 20 74 6f 5c 2f 66 72 6f 6d 20 72 61 77 20 62 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 ert.to\/from.raw.bencoded.string
55c0 2e 20 28 6e 6f 20 65 6e 63 6f 64 69 6e 67 29 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 ..(no.encoding).#ifdef.VERSION_b
55e0 65 6e 63 6f 64 69 6e 67 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 68 61 73 68 57 69 74 68 53 encoding....{-#.INLINE.hashWithS
5600 61 6c 74 20 23 2d 7d 00 20 20 68 61 73 68 57 69 74 68 53 61 6c 74 20 73 20 28 49 6e 66 6f 48 61 alt.#-}...hashWithSalt.s.(InfoHa
5620 73 68 20 69 68 29 20 3d 20 68 61 73 68 57 69 74 68 53 61 6c 74 20 73 20 69 68 00 69 6e 73 74 61 sh.ih).=.hashWithSalt.s.ih.insta
5640 6e 63 65 20 48 61 73 68 61 62 6c 65 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c nce.Hashable.InfoHash.where.--.|
5660 20 48 61 73 68 20 72 61 77 20 62 79 74 65 73 2e 20 28 6e 6f 20 65 6e 63 6f 64 69 6e 67 29 00 00 .Hash.raw.bytes..(no.encoding)..
5680 20 20 64 65 66 20 3d 20 22 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 ..def.=."01234567890123456789012
56a0 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 22 00 69 6e 73 74 61 6e 63 65 20 44 65 66 61 34567890123456789".instance.Defa
56c0 75 6c 74 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 4d 65 61 6e 69 6e 67 6c ult.InfoHash.where.--.|.Meaningl
56e0 65 73 73 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 76 61 6c 75 65 2e 00 00 69 6e 66 6f 48 61 73 68 ess.placeholder.value...infoHash
5700 4c 65 6e 20 3d 20 32 30 00 69 6e 66 6f 48 61 73 68 4c 65 6e 20 3a 3a 20 49 6e 74 00 00 20 20 64 Len.=.20.infoHashLen.::.Int....d
5720 65 72 69 76 69 6e 67 20 28 45 71 2c 20 4f 72 64 2c 20 54 79 70 65 61 62 6c 65 29 00 6e 65 77 74 eriving.(Eq,.Ord,.Typeable).newt
5740 79 70 65 20 49 6e 66 6f 48 61 73 68 20 3d 20 49 6e 66 6f 48 61 73 68 20 7b 20 67 65 74 49 6e 66 ype.InfoHash.=.InfoHash.{.getInf
5760 6f 48 61 73 68 20 3a 3a 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 20 7d 00 2d 2d 20 7c 20 45 78 oHash.::.BS.ByteString.}.--.|.Ex
5780 61 63 74 6c 79 20 32 30 20 62 79 74 65 73 20 6c 6f 6e 67 20 53 48 41 31 20 68 61 73 68 20 6f 66 actly.20.bytes.long.SHA1.hash.of
57a0 20 74 68 65 20 69 6e 66 6f 20 70 61 72 74 20 6f 66 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 2e 00 .the.info.part.of.torrent.file..
57c0 00 2d 2d 20 49 6e 66 6f 68 61 73 68 20 69 73 20 61 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 .--.Infohash.is.a.unique.identif
57e0 69 65 72 20 6f 66 20 74 6f 72 72 65 6e 74 2e 00 2d 2d 00 2d 2d 20 24 69 6e 66 6f 68 61 73 68 00 ier.of.torrent..--.--.$infohash.
5800 00 2d 2d 20 72 65 61 73 6f 6e 3a 20 62 79 74 65 73 74 72 69 6e 67 20 68 61 76 65 20 6f 76 65 72 .--.reason:.bytestring.have.over
5820 68 65 61 64 20 3d 20 38 20 77 6f 72 64 73 2c 20 77 68 69 6c 65 20 69 6e 66 6f 68 61 73 68 20 68 head.=.8.words,.while.infohash.h
5840 61 76 65 20 6c 65 6e 67 74 68 20 32 30 20 62 79 74 65 73 00 2d 2d 00 2d 2d 20 6e 65 77 74 79 70 ave.length.20.bytes.--.--.newtyp
5860 65 20 49 6e 66 6f 48 61 73 68 20 3d 20 49 6e 66 6f 48 61 73 68 20 57 6f 72 64 31 36 30 00 2d 2d e.InfoHash.=.InfoHash.Word160.--
5880 00 2d 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 2d 23 20 55 .--........................{-#.U
58a0 4e 50 41 43 4b 20 23 2d 7d 20 21 57 6f 72 64 33 32 00 2d 2d 20 20 20 20 20 20 20 20 20 20 20 20 NPACK.#-}.!Word32.--............
58c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 2d 23 20 55 4e 50 41 43 4b 20 23 2d 7d 20 21 57 6f 72 64 ............{-#.UNPACK.#-}.!Word
58e0 36 34 00 2d 2d 20 64 61 74 61 20 57 6f 72 64 31 36 30 20 3d 20 57 6f 72 64 31 36 30 20 7b 2d 23 64.--.data.Word160.=.Word160.{-#
5900 20 55 4e 50 41 43 4b 20 23 2d 7d 20 21 57 6f 72 64 36 34 00 2d 2d 00 2d 2d 20 54 4f 44 4f 00 2d .UNPACK.#-}.!Word64.--.--.TODO.-
5920 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5940 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5960 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 20 49 6e 66 6f 20 68 61 73 68 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d ------}.--..Info.hash.{---------
5980 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
59a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 ------------------------------..
59c0 00 69 6d 70 6f 72 74 20 4e 65 74 77 6f 72 6b 2e 41 64 64 72 65 73 73 00 00 23 65 6e 64 69 66 00 .import.Network.Address..#endif.
59e0 23 65 6e 64 69 66 00 69 6d 70 6f 72 74 20 4c 65 6e 73 2e 46 61 6d 69 6c 79 2e 54 48 00 23 65 6c #endif.import.Lens.Family.TH.#el
5a00 69 66 20 64 65 66 69 6e 65 64 28 56 45 52 53 49 4f 4e 5f 6c 65 6e 73 5f 66 61 6d 69 6c 79 5f 74 if.defined(VERSION_lens_family_t
5a20 68 29 00 69 6d 70 6f 72 74 20 4c 65 6e 73 2e 4d 69 63 72 6f 2e 54 48 00 23 65 6c 69 66 20 64 65 h).import.Lens.Micro.TH.#elif.de
5a40 66 69 6e 65 64 28 56 45 52 53 49 4f 4e 5f 6d 69 63 72 6f 6c 65 6e 73 5f 74 68 29 00 69 6d 70 6f fined(VERSION_microlens_th).impo
5a60 72 74 20 43 6f 6e 74 72 6f 6c 2e 4c 65 6e 73 2e 54 48 00 23 69 66 64 65 66 20 56 45 52 53 49 4f rt.Control.Lens.TH.#ifdef.VERSIO
5a80 4e 5f 6c 65 6e 73 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 69 6d 70 6f 72 74 20 53 79 N_lens.#ifdef.USE_lens.import.Sy
5aa0 73 74 65 6d 2e 50 6f 73 69 78 2e 54 79 70 65 73 00 69 6d 70 6f 72 74 20 53 79 73 74 65 6d 2e 46 stem.Posix.Types.import.System.F
5ac0 69 6c 65 50 61 74 68 00 69 6d 70 6f 72 74 20 54 65 78 74 2e 50 72 65 74 74 79 50 72 69 6e 74 2e ilePath.import.Text.PrettyPrint.
5ae0 48 75 67 68 65 73 50 4a 43 6c 61 73 73 20 68 69 64 69 6e 67 20 28 28 3c 3e 29 2c 28 24 24 29 29 HughesPJClass.hiding.((<>),($$))
5b00 00 69 6d 70 6f 72 74 20 54 65 78 74 2e 50 72 65 74 74 79 50 72 69 6e 74 20 61 73 20 50 50 00 69 .import.Text.PrettyPrint.as.PP.i
5b20 6d 70 6f 72 74 20 54 65 78 74 2e 50 61 72 73 65 72 43 6f 6d 62 69 6e 61 74 6f 72 73 2e 52 65 61 mport.Text.ParserCombinators.Rea
5b40 64 50 20 61 73 20 50 00 69 6d 70 6f 72 74 20 4e 65 74 77 6f 72 6b 2e 55 52 49 00 69 6d 70 6f 72 dP.as.P.import.Network.URI.impor
5b60 74 20 4e 65 74 77 6f 72 6b 2e 48 54 54 50 2e 54 79 70 65 73 2e 55 52 49 00 69 6d 70 6f 72 74 20 t.Network.HTTP.Types.URI.import.
5b80 4e 65 74 77 6f 72 6b 2e 48 54 54 50 2e 54 79 70 65 73 2e 51 75 65 72 79 4c 69 6b 65 00 69 6d 70 Network.HTTP.Types.QueryLike.imp
5ba0 6f 72 74 20 4e 65 74 77 6f 72 6b 20 28 48 6f 73 74 4e 61 6d 65 29 00 69 6d 70 6f 72 74 20 44 61 ort.Network.(HostName).import.Da
5bc0 74 61 2e 54 79 70 65 61 62 6c 65 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 54 69 6d 65 2e 43 6c 6f ta.Typeable.import.Data.Time.Clo
5be0 63 6b 2e 50 4f 53 49 58 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 54 65 78 74 2e 52 65 61 64 00 69 ck.POSIX.import.Data.Text.Read.i
5c00 6d 70 6f 72 74 20 44 61 74 61 2e 54 65 78 74 2e 45 6e 63 6f 64 69 6e 67 20 61 73 20 54 00 69 6d mport.Data.Text.Encoding.as.T.im
5c20 70 6f 72 74 20 44 61 74 61 2e 54 65 78 74 20 61 73 20 54 00 69 6d 70 6f 72 74 20 44 61 74 61 2e port.Data.Text.as.T.import.Data.
5c40 53 74 72 69 6e 67 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 53 65 72 69 61 6c 69 7a 65 20 61 73 20 String.import.Data.Serialize.as.
5c60 53 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 4d 61 79 62 65 00 69 6d 70 6f 72 74 20 44 61 74 61 2e S.import.Data.Maybe.import.Data.
5c80 4d 61 70 20 61 73 20 4d 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 4c 69 73 74 20 61 73 20 4c 00 69 Map.as.M.import.Data.List.as.L.i
5ca0 6d 70 6f 72 74 20 44 61 74 61 2e 49 6e 74 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 48 61 73 68 61 mport.Data.Int.import.Data.Hasha
5cc0 62 6c 65 20 20 20 61 73 20 48 61 73 68 61 62 6c 65 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 44 65 ble...as.Hashable.import.Data.De
5ce0 66 61 75 6c 74 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 43 6f 6e 76 65 72 74 69 62 6c 65 00 69 6d fault.import.Data.Convertible.im
5d00 70 6f 72 74 20 44 61 74 61 2e 43 68 61 72 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 42 79 74 65 53 port.Data.Char.import.Data.ByteS
5d20 74 72 69 6e 67 2e 4c 61 7a 79 20 20 61 73 20 42 4c 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 42 79 tring.Lazy..as.BL.import.Data.By
5d40 74 65 53 74 72 69 6e 67 2e 43 68 61 72 38 20 61 73 20 42 43 20 28 70 61 63 6b 2c 20 75 6e 70 61 teString.Char8.as.BC.(pack,.unpa
5d60 63 6b 29 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 42 79 74 65 53 74 72 69 6e 67 2e 42 61 73 65 36 ck).import.Data.ByteString.Base6
5d80 34 20 61 73 20 42 61 73 65 36 34 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 42 79 74 65 53 74 72 69 4.as.Base64.import.Data.ByteStri
5da0 6e 67 2e 42 61 73 65 33 32 20 61 73 20 42 61 73 65 33 32 00 69 6d 70 6f 72 74 20 44 61 74 61 2e ng.Base32.as.Base32.import.Data.
5dc0 42 79 74 65 53 74 72 69 6e 67 2e 42 61 73 65 31 36 20 61 73 20 42 61 73 65 31 36 00 69 6d 70 6f ByteString.Base16.as.Base16.impo
5de0 72 74 20 44 61 74 61 2e 42 79 74 65 53 74 72 69 6e 67 20 61 73 20 42 53 00 69 6d 70 6f 72 74 20 rt.Data.ByteString.as.BS.import.
5e00 71 75 61 6c 69 66 69 65 64 20 44 61 74 61 2e 42 79 74 65 41 72 72 61 79 20 61 73 20 42 79 74 65 qualified.Data.ByteArray.as.Byte
5e20 73 00 23 65 6e 64 69 66 00 69 6d 70 6f 72 74 20 44 61 74 61 2e 42 69 74 73 2e 45 78 74 72 61 73 s.#endif.import.Data.Bits.Extras
5e40 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 69 74 73 5f 65 78 74 72 61 73 00 69 6d 70 6f .#ifdef.VERSION_bits_extras.impo
5e60 72 74 20 44 61 74 61 2e 42 69 74 73 00 23 65 6e 64 69 66 00 69 6d 70 6f 72 74 20 44 61 74 61 2e rt.Data.Bits.#endif.import.Data.
5e80 42 45 6e 63 6f 64 65 2e 54 79 70 65 73 20 61 73 20 42 45 00 69 6d 70 6f 72 74 20 44 61 74 61 2e BEncode.Types.as.BE.import.Data.
5ea0 42 45 6e 63 6f 64 65 20 61 73 20 42 45 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e BEncode.as.BE.#ifdef.VERSION_ben
5ec0 63 6f 64 69 6e 67 00 69 6d 70 6f 72 74 20 43 72 79 70 74 6f 2e 48 61 73 68 00 69 6d 70 6f 72 74 coding.import.Crypto.Hash.import
5ee0 20 43 6f 6e 74 72 6f 6c 2e 4d 6f 6e 61 64 00 2d 2d 20 69 6d 70 6f 72 74 20 43 6f 6e 74 72 6f 6c .Control.Monad.--.import.Control
5f00 2e 4c 65 6e 73 00 69 6d 70 6f 72 74 20 43 6f 6e 74 72 6f 6c 2e 45 78 63 65 70 74 69 6f 6e 00 69 .Lens.import.Control.Exception.i
5f20 6d 70 6f 72 74 20 43 6f 6e 74 72 6f 6c 2e 44 65 65 70 53 65 71 00 69 6d 70 6f 72 74 20 43 6f 6e mport.Control.DeepSeq.import.Con
5f40 74 72 6f 6c 2e 41 70 70 6c 69 63 61 74 69 76 65 00 69 6d 70 6f 72 74 20 50 72 65 6c 75 64 65 20 trol.Applicative.import.Prelude.
5f60 68 69 64 69 6e 67 20 28 28 3c 3e 29 29 00 00 20 20 20 20 20 20 20 29 20 77 68 65 72 65 00 20 20 hiding.((<>)).........).where...
5f80 20 20 20 20 20 2c 20 72 65 6e 64 65 72 55 52 4e 00 20 20 20 20 20 20 20 2c 20 70 61 72 73 65 55 .....,.renderURN........,.parseU
5fa0 52 4e 00 20 20 20 20 20 20 20 2c 20 69 6e 66 6f 68 61 73 68 55 52 4e 00 20 20 20 20 20 20 20 2c RN........,.infohashURN........,
5fc0 20 62 74 69 68 00 20 20 20 20 20 20 20 2c 20 4e 61 6d 65 73 70 61 63 65 49 64 00 20 20 20 20 20 .btih........,.NamespaceId......
5fe0 20 20 2c 20 55 52 4e 20 28 2e 2e 29 00 20 20 20 20 20 20 20 20 20 2d 2d 20 2a 2a 20 55 52 4e 00 ..,.URN.(..)..........--.**.URN.
6000 61 64 00 00 2f 00 00 00 13 02 00 00 00 10 00 00 72 00 00 00 00 00 00 00 e1 0f 00 00 ca 0f 00 00 ad../...........r...............
6020 c9 0f 00 00 a8 0f 00 00 8b 0f 00 00 6b 0f 00 00 2c 0f 00 00 05 0f 00 00 fb 0e 00 00 c5 0e 00 00 ............k...,...............
6040 90 0e 00 00 8f 0e 00 00 64 0e 00 00 47 0e 00 00 46 0e 00 00 21 0e 00 00 ef 0d 00 00 de 0d 00 00 ........d...G...F...!...........
6060 a7 0d 00 00 65 0d 00 00 64 0d 00 00 24 0d 00 00 fb 0c 00 00 eb 0c 00 00 bb 0c 00 00 92 0c 00 00 ....e...d...$...................
6080 6c 0c 00 00 23 0c 00 00 f8 0b 00 00 f7 0b 00 00 d8 0b 00 00 b2 0b 00 00 89 0b 00 00 5e 0b 00 00 l...#.......................^...
60a0 5d 0b 00 00 3e 0b 00 00 0d 0b 00 00 ec 0a 00 00 b6 0a 00 00 94 0a 00 00 93 0a 00 00 57 0a 00 00 ]...>.......................W...
60c0 4d 0a 00 00 2b 0a 00 00 0c 0a 00 00 0b 0a 00 00 d3 09 00 00 b2 09 00 00 65 09 00 00 64 09 00 00 M...+...................e...d...
60e0 3c 09 00 00 0f 09 00 00 0e 09 00 00 d2 08 00 00 cf 08 00 00 9c 08 00 00 99 08 00 00 70 08 00 00 <...........................p...
6100 42 08 00 00 41 08 00 00 12 08 00 00 f6 07 00 00 c1 07 00 00 c0 07 00 00 87 07 00 00 6a 07 00 00 B...A.......................j...
6120 4c 07 00 00 4b 07 00 00 02 07 00 00 f4 06 00 00 ab 06 00 00 aa 06 00 00 8c 06 00 00 71 06 00 00 L...K.......................q...
6140 70 06 00 00 57 06 00 00 31 06 00 00 2a 06 00 00 29 06 00 00 fc 05 00 00 df 05 00 00 af 05 00 00 p...W...1...*...)...............
6160 87 05 00 00 86 05 00 00 67 05 00 00 39 05 00 00 f2 04 00 00 bf 04 00 00 be 04 00 00 a4 04 00 00 ........g...9...................
6180 61 04 00 00 1d 04 00 00 d7 03 00 00 a8 03 00 00 9f 03 00 00 7d 03 00 00 74 03 00 00 41 03 00 00 a...................}...t...A...
61a0 38 03 00 00 0e 03 00 00 05 03 00 00 dc 02 00 00 b9 02 00 00 a8 02 00 00 a7 02 00 00 97 02 00 00 8...............................
61c0 89 02 00 00 6a 02 00 00 4b 02 00 00 2c 02 00 00 28 02 00 00 1b 02 00 00 14 02 00 00 13 02 00 00 ....j...K...,...(...............
61e0 12 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 65 6e 64 69 66 00 20 20 27 27 46 ....................#endif...''F
6220 69 6c 65 49 6e 66 6f 00 20 20 5d 00 20 20 2c 20 28 22 66 69 4e 61 6d 65 22 20 20 2c 20 22 66 69 ileInfo...]...,.("fiName"..,."fi
6240 6c 65 50 61 74 68 22 20 20 29 00 20 20 2c 20 28 22 66 69 4d 44 35 53 75 6d 22 2c 20 22 66 69 6c lePath"..)...,.("fiMD5Sum",."fil
6260 65 4d 44 35 53 75 6d 22 29 00 20 20 5b 20 28 22 66 69 4c 65 6e 67 74 68 22 2c 20 22 66 69 6c 65 eMD5Sum")...[.("fiLength",."file
6280 4c 65 6e 67 74 68 22 29 00 6d 61 6b 65 4c 65 6e 73 65 73 46 6f 72 00 23 69 66 64 65 66 20 55 53 Length").makeLensesFor.#ifdef.US
62a0 45 5f 6c 65 6e 73 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 00 20 20 20 20 20 20 20 E_lens.................)........
62c0 20 20 20 20 20 20 20 20 2c 20 46 75 6e 63 74 6f 72 2c 20 46 6f 6c 64 61 62 6c 65 00 20 20 20 20 ........,.Functor,.Foldable.....
62e0 7d 20 64 65 72 69 76 69 6e 67 20 28 53 68 6f 77 2c 20 52 65 61 64 2c 20 45 71 2c 20 54 79 70 65 }.deriving.(Show,.Read,.Eq,.Type
6300 61 62 6c 65 00 20 20 20 20 20 20 2d 2d 00 20 20 20 20 20 20 2d 2d 20 20 20 3e 20 5b 22 64 69 72 able.......--.......--...>.["dir
6320 31 22 2c 20 22 64 69 72 32 22 2c 20 22 66 69 6c 65 2e 65 78 74 22 5d 00 20 20 20 20 20 20 2d 2d 1",."dir2",."file.ext"].......--
6340 00 20 20 20 20 20 20 2d 2d 20 20 20 77 6f 75 6c 64 20 63 6f 6e 73 69 73 74 20 6f 66 20 74 68 72 .......--...would.consist.of.thr
6360 65 65 20 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74 73 3a 00 20 20 20 20 20 20 2d 2d 00 20 20 20 ee.string.elements:.......--....
6380 20 20 20 2d 2d 20 20 20 3e 20 22 64 69 72 31 2f 64 69 72 32 2f 66 69 6c 65 2e 65 78 74 22 00 20 ...--...>."dir1/dir2/file.ext"..
63a0 20 20 20 20 20 2d 2d 00 20 20 20 20 20 20 2d 2d 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 2e 20 20 .....--.......--.the.filename...
63c0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 69 6c 65 3a 00 20 20 20 20 20 20 2d 2d 20 For.example,.the.file:.......--.
63e0 65 69 74 68 65 72 20 61 20 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 20 6f 72 20 28 69 6e 20 74 either.a.directory.name.or.(in.t
6400 68 65 20 63 61 73 65 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 29 00 20 20 20 he.case.of.the.last.element)....
6420 20 20 20 2d 2d 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 6e 61 6d 65 2e 20 45 61 63 68 20 65 6c ...--.path.and.filename..Each.el
6440 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 73 74 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f ement.in.the.list.corresponds.to
6460 00 20 20 20 20 20 20 2d 2d 20 5e 20 4f 6e 65 20 6f 72 20 6d 6f 72 65 20 73 74 72 69 6e 67 20 65 .......--.^.One.or.more.string.e
6480 6c 65 6d 65 6e 74 73 20 74 68 61 74 20 74 6f 67 65 74 68 65 72 20 72 65 70 72 65 73 65 6e 74 20 lements.that.together.represent.
64a0 74 68 65 00 20 20 20 20 2c 20 66 69 4e 61 6d 65 20 20 20 20 20 20 20 20 3a 3a 20 21 61 00 00 20 the.....,.fiName........::.!a...
64c0 20 20 20 20 20 2d 2d 20 74 6f 6f 6c 73 2c 20 6e 6f 74 20 62 79 20 62 69 74 74 6f 72 72 65 6e 74 .....--.tools,.not.by.bittorrent
64e0 20 70 72 6f 74 6f 63 6f 6c 20 69 74 73 65 6c 66 2e 00 20 20 20 20 20 20 2d 2d 20 5e 20 33 32 20 .protocol.itself........--.^.32.
6500 63 68 61 72 61 63 74 65 72 20 6c 6f 6e 67 20 4d 44 35 20 73 75 6d 20 6f 66 20 74 68 65 20 66 69 character.long.MD5.sum.of.the.fi
6520 6c 65 2e 20 20 55 73 65 64 20 62 79 20 74 68 69 72 64 2d 70 61 72 74 79 00 20 20 20 20 2c 20 66 le...Used.by.third-party.....,.f
6540 69 4d 44 35 53 75 6d 20 20 20 20 20 20 3a 3a 20 21 28 4d 61 79 62 65 20 42 53 2e 42 79 74 65 53 iMD5Sum......::.!(Maybe.BS.ByteS
6560 74 72 69 6e 67 29 00 20 20 20 20 20 20 2d 2d 20 54 4f 44 4f 20 75 6e 70 61 63 6b 65 64 20 4d 44 tring).......--.TODO.unpacked.MD
6580 35 20 73 75 6d 00 00 20 20 20 20 20 20 2d 2d 20 5e 20 4c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 5.sum........--.^.Length.of.the.
65a0 66 69 6c 65 20 69 6e 20 62 79 74 65 73 2e 00 20 20 20 20 20 20 66 69 4c 65 6e 67 74 68 20 20 20 file.in.bytes........fiLength...
65c0 20 20 20 3a 3a 20 7b 2d 23 20 55 4e 50 41 43 4b 20 23 2d 7d 20 21 46 69 6c 65 53 69 7a 65 00 64 ...::.{-#.UNPACK.#-}.!FileSize.d
65e0 61 74 61 20 46 69 6c 65 49 6e 66 6f 20 61 20 3d 20 46 69 6c 65 49 6e 66 6f 20 7b 00 2d 2d 20 7c ata.FileInfo.a.=.FileInfo.{.--.|
6600 20 43 6f 6e 74 61 69 6e 20 6d 65 74 61 69 6e 66 6f 20 61 62 6f 75 74 20 6f 6e 65 20 73 69 6e 67 .Contain.metainfo.about.one.sing
6620 6c 65 20 66 69 6c 65 2e 00 00 23 65 6e 64 69 66 00 64 65 72 69 76 69 6e 67 20 69 6e 73 74 61 6e le.file...#endif.deriving.instan
6640 63 65 20 42 45 6e 63 6f 64 65 20 20 46 69 6c 65 4f 66 66 73 65 74 00 23 69 66 64 65 66 20 56 45 ce.BEncode..FileOffset.#ifdef.VE
6660 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 74 79 70 65 20 46 69 6c 65 53 69 7a 65 20 3d RSION_bencoding..type.FileSize.=
6680 20 46 69 6c 65 4f 66 66 73 65 74 00 2d 2d 20 7c 20 53 69 7a 65 20 6f 66 20 61 20 66 69 6c 65 20 .FileOffset.--.|.Size.of.a.file.
66a0 69 6e 20 62 79 74 65 73 2e 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d in.bytes...---------------------
66c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
66e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 20 46 69 6c 65 20 69 6e 66 ------------------}.--..File.inf
6700 6f 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d o.{-----------------------------
6720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
6740 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 73 68 6f 72 74 48 65 78 20 3d 20 54 2e 74 61 6b 65 20 37 20 ----------..shortHex.=.T.take.7.
6760 2e 20 6c 6f 6e 67 48 65 78 00 73 68 6f 72 74 48 65 78 20 3a 3a 20 49 6e 66 6f 48 61 73 68 20 2d ..longHex.shortHex.::.InfoHash.-
6780 3e 20 54 65 78 74 00 2d 2d 20 7c 20 54 68 65 20 73 61 6d 65 20 61 73 20 27 6c 6f 6e 67 48 65 78 >.Text.--.|.The.same.as.'longHex
67a0 27 2c 20 62 75 74 20 6f 6e 6c 79 20 66 69 72 73 74 20 37 20 63 68 61 72 61 63 74 65 72 73 2e 00 ',.but.only.first.7.characters..
67c0 00 6c 6f 6e 67 48 65 78 20 3d 20 54 2e 64 65 63 6f 64 65 55 74 66 38 20 2e 20 42 61 73 65 31 36 .longHex.=.T.decodeUtf8...Base16
67e0 2e 65 6e 63 6f 64 65 20 2e 20 67 65 74 49 6e 66 6f 48 61 73 68 00 6c 6f 6e 67 48 65 78 20 3a 3a .encode...getInfoHash.longHex.::
6800 20 49 6e 66 6f 48 61 73 68 20 2d 3e 20 54 65 78 74 00 2d 2d 20 7c 20 48 65 78 20 65 6e 63 6f 64 .InfoHash.->.Text.--.|.Hex.encod
6820 65 20 69 6e 66 6f 68 61 73 68 20 74 6f 20 74 65 78 74 2c 20 66 75 6c 6c 20 6c 65 6e 67 74 68 2e e.infohash.to.text,.full.length.
6840 00 00 74 65 78 74 54 6f 49 6e 66 6f 48 61 73 68 20 3d 20 69 67 6e 6f 72 65 45 72 72 6f 72 4d 73 ..textToInfoHash.=.ignoreErrorMs
6860 67 20 2e 20 73 61 66 65 43 6f 6e 76 65 72 74 00 74 65 78 74 54 6f 49 6e 66 6f 48 61 73 68 20 3a g...safeConvert.textToInfoHash.:
6880 3a 20 54 65 78 74 20 2d 3e 20 4d 61 79 62 65 20 49 6e 66 6f 48 61 73 68 00 2d 2d 00 2d 2d 20 20 :.Text.->.Maybe.InfoHash.--.--..
68a0 55 73 65 20 27 73 61 66 65 43 6f 6e 76 65 72 74 27 20 66 6f 72 20 64 65 74 61 69 6c 65 64 20 65 Use.'safeConvert'.for.detailed.e
68c0 72 72 6f 72 20 6d 65 73 73 61 67 65 73 2e 00 2d 2d 00 2d 2d 20 7c 20 54 72 69 65 73 20 62 6f 74 rror.messages..--.--.|.Tries.bot
68e0 68 20 62 61 73 65 31 36 20 61 6e 64 20 62 61 73 65 33 32 20 77 68 69 6c 65 20 64 65 63 6f 64 69 h.base16.and.base32.while.decodi
6900 6e 67 20 69 6e 66 6f 20 68 61 73 68 2e 00 00 69 67 6e 6f 72 65 45 72 72 6f 72 4d 73 67 20 3d 20 ng.info.hash...ignoreErrorMsg.=.
6920 65 69 74 68 65 72 20 28 63 6f 6e 73 74 20 4e 6f 74 68 69 6e 67 29 20 4a 75 73 74 00 69 67 6e 6f either.(const.Nothing).Just.igno
6940 72 65 45 72 72 6f 72 4d 73 67 20 3a 3a 20 45 69 74 68 65 72 20 61 20 62 20 2d 3e 20 4d 61 79 62 reErrorMsg.::.Either.a.b.->.Mayb
6960 65 20 62 00 00 20 20 66 72 6f 6d 53 74 72 69 6e 67 20 3d 20 65 69 74 68 65 72 20 28 65 72 72 6f e.b....fromString.=.either.(erro
6980 72 20 2e 20 70 72 65 74 74 79 43 6f 6e 76 65 72 74 45 72 72 6f 72 29 20 69 64 20 2e 20 73 61 66 r...prettyConvertError).id...saf
69a0 65 43 6f 6e 76 65 72 74 20 2e 20 54 2e 70 61 63 6b 00 69 6e 73 74 61 6e 63 65 20 49 73 53 74 72 eConvert...T.pack.instance.IsStr
69c0 69 6e 67 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 44 65 63 6f 64 65 20 66 ing.InfoHash.where.--.|.Decode.f
69e0 72 6f 6d 20 62 61 73 65 31 36 5c 2f 62 61 73 65 33 32 5c 2f 62 61 73 65 36 34 20 65 6e 63 6f 64 rom.base16\/base32\/base64.encod
6a00 65 64 20 73 74 72 69 6e 67 2e 00 00 20 20 20 20 20 20 68 61 73 68 53 74 72 20 3d 20 54 2e 65 6e ed.string.........hashStr.=.T.en
6a20 63 6f 64 65 55 74 66 38 20 74 00 20 20 20 20 20 20 68 61 73 68 4c 65 6e 20 3d 20 42 53 2e 6c 65 codeUtf8.t.......hashLen.=.BS.le
6a40 6e 67 74 68 20 68 61 73 68 53 74 72 00 20 20 20 20 77 68 65 72 65 00 20 20 20 20 20 20 7c 20 20 ngth.hashStr.....where.......|..
6a60 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 20 20 20 20 3d 20 63 6f 6e 76 45 72 72 6f 72 20 ......otherwise.....=.convError.
6a80 22 69 6e 76 61 6c 69 64 20 6c 65 6e 67 74 68 22 20 74 00 00 20 20 20 20 20 20 20 20 20 20 20 65 "invalid.length".t.............e
6aa0 6c 73 65 20 73 61 66 65 43 6f 6e 76 65 72 74 20 69 68 53 74 72 00 20 20 20 20 20 20 20 20 20 20 lse.safeConvert.ihStr...........
6ac0 20 74 68 65 6e 20 63 6f 6e 76 45 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 62 61 73 65 31 36 20 .then.convError."invalid.base16.
6ae0 65 6e 63 6f 64 69 6e 67 22 20 74 00 20 20 20 20 20 20 20 20 69 6e 20 69 66 20 42 53 2e 6c 65 6e encoding".t.........in.if.BS.len
6b00 67 74 68 20 69 6e 76 20 2f 3d 20 30 00 20 20 20 20 20 20 20 20 6c 65 74 20 28 69 68 53 74 72 2c gth.inv./=.0.........let.(ihStr,
6b20 20 69 6e 76 29 20 3d 20 42 61 73 65 31 36 2e 64 65 63 6f 64 65 20 68 61 73 68 53 74 72 00 20 20 .inv).=.Base16.decode.hashStr...
6b40 20 20 20 20 7c 20 20 20 20 20 20 68 61 73 68 4c 65 6e 20 3d 3d 20 34 30 20 20 20 3d 00 00 20 20 ....|......hashLen.==.40...=....
6b60 20 20 20 20 20 20 20 20 52 69 67 68 74 20 69 68 53 74 72 20 2d 3e 20 73 61 66 65 43 6f 6e 76 65 ........Right.ihStr.->.safeConve
6b80 72 74 20 69 68 53 74 72 00 20 20 20 20 20 20 20 20 20 20 4c 65 66 74 20 20 6d 73 67 20 20 20 2d rt.ihStr...........Left..msg...-
6ba0 3e 20 63 6f 6e 76 45 72 72 6f 72 20 6d 73 67 20 74 00 20 20 20 20 20 20 20 20 63 61 73 65 20 42 >.convError.msg.t.........case.B
6bc0 61 73 65 33 32 2e 64 65 63 6f 64 65 20 68 61 73 68 53 74 72 20 6f 66 00 20 20 20 20 20 20 7c 20 ase32.decode.hashStr.of.......|.
6be0 20 20 20 20 20 68 61 73 68 4c 65 6e 20 3d 3d 20 33 32 20 20 20 3d 00 00 20 20 20 20 20 20 20 20 .....hashLen.==.32...=..........
6c00 20 20 52 69 67 68 74 20 69 68 53 74 72 20 2d 3e 20 73 61 66 65 43 6f 6e 76 65 72 74 20 69 68 53 ..Right.ihStr.->.safeConvert.ihS
6c20 74 72 00 20 20 20 20 20 20 20 20 20 20 4c 65 66 74 20 20 6d 73 67 20 20 20 2d 3e 20 63 6f 6e 76 tr...........Left..msg...->.conv
6c40 45 72 72 6f 72 20 28 22 69 6e 76 61 6c 69 64 20 62 61 73 65 36 34 20 65 6e 63 6f 64 69 6e 67 20 Error.("invalid.base64.encoding.
6c60 22 20 2b 2b 20 6d 73 67 29 20 74 00 20 20 20 20 20 20 20 20 63 61 73 65 20 42 61 73 65 36 34 2e ".++.msg).t.........case.Base64.
6c80 64 65 63 6f 64 65 20 68 61 73 68 53 74 72 20 6f 66 00 20 20 20 20 20 20 7c 20 32 36 20 3c 3d 20 decode.hashStr.of.......|.26.<=.
6ca0 68 61 73 68 4c 65 6e 20 26 26 20 68 61 73 68 4c 65 6e 20 3c 3d 20 32 38 20 3d 00 20 20 20 20 20 hashLen.&&.hashLen.<=.28.=......
6cc0 20 7c 20 32 30 20 3d 3d 20 68 61 73 68 4c 65 6e 20 3d 20 70 75 72 65 20 28 49 6e 66 6f 48 61 73 .|.20.==.hashLen.=.pure.(InfoHas
6ce0 68 20 68 61 73 68 53 74 72 29 00 20 20 73 61 66 65 43 6f 6e 76 65 72 74 20 74 00 69 6e 73 74 61 h.hashStr)...safeConvert.t.insta
6d00 6e 63 65 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 54 65 78 74 20 49 6e 66 6f 48 61 73 68 20 77 68 nce.Convertible.Text.InfoHash.wh
6d20 65 72 65 00 2d 2d 20 7c 20 50 61 72 73 65 20 69 6e 66 6f 68 61 73 68 20 66 72 6f 6d 20 62 61 73 ere.--.|.Parse.infohash.from.bas
6d40 65 31 36 5c 2f 62 61 73 65 33 32 5c 2f 62 61 73 65 36 34 20 65 6e 63 6f 64 65 64 20 73 74 72 69 e16\/base32\/base64.encoded.stri
6d60 6e 67 2e 00 00 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 20 20 ng.......|..........otherwise...
6d80 20 20 20 20 20 20 20 3d 20 63 6f 6e 76 45 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 6c 65 6e 67 .......=.convError."invalid.leng
6da0 74 68 22 20 62 73 00 20 20 20 20 7c 20 42 53 2e 6c 65 6e 67 74 68 20 62 73 20 3d 3d 20 69 6e 66 th".bs.....|.BS.length.bs.==.inf
6dc0 6f 48 61 73 68 4c 65 6e 20 3d 20 70 75 72 65 20 28 49 6e 66 6f 48 61 73 68 20 62 73 29 00 20 20 oHashLen.=.pure.(InfoHash.bs)...
6de0 73 61 66 65 43 6f 6e 76 65 72 74 20 62 73 00 69 6e 73 74 61 6e 63 65 20 43 6f 6e 76 65 72 74 69 safeConvert.bs.instance.Converti
6e00 62 6c 65 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 ble.BS.ByteString.InfoHash.where
6e20 00 2d 2d 20 7c 20 43 6f 6e 76 65 72 74 20 72 61 77 20 62 79 74 65 73 20 74 6f 20 69 6e 66 6f 20 .--.|.Convert.raw.bytes.to.info.
6e40 68 61 73 68 2e 00 00 20 20 20 20 20 20 70 61 69 72 20 5f 20 20 20 20 20 20 20 20 20 20 20 20 3d hash.........pair._............=
6e60 20 5b 5d 00 20 20 20 20 20 20 70 61 69 72 20 28 61 20 3a 20 62 20 3a 20 78 73 29 20 3d 20 28 61 .[].......pair.(a.:.b.:.xs).=.(a
6e80 2c 20 62 29 20 3a 20 70 61 69 72 20 78 73 00 00 20 20 20 20 20 20 66 72 6f 6d 48 65 78 20 28 61 ,.b).:.pair.xs........fromHex.(a
6ea0 2c 20 62 29 20 3d 20 72 65 61 64 20 24 20 27 30 27 20 3a 20 27 78 27 20 3a 20 61 20 3a 20 62 20 ,.b).=.read.$.'0'.:.'x'.:.a.:.b.
6ec0 3a 20 5b 5d 00 20 20 20 20 20 20 64 65 63 6f 64 65 49 48 20 20 20 20 20 20 20 3d 20 42 53 2e 70 :.[].......decodeIH.......=.BS.p
6ee0 61 63 6b 20 2e 20 4c 2e 6d 61 70 20 66 72 6f 6d 48 65 78 20 2e 20 70 61 69 72 00 20 20 20 20 77 ack...L.map.fromHex...pair.....w
6f00 68 65 72 65 00 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 20 49 6e 66 6f 48 61 73 68 20 24 20 64 here.......return.$.InfoHash.$.d
6f20 65 63 6f 64 65 49 48 20 73 74 72 00 20 20 20 20 20 20 73 74 72 20 3c 2d 20 72 65 70 6c 69 63 61 ecodeIH.str.......str.<-.replica
6f40 74 65 4d 20 28 69 6e 66 6f 48 61 73 68 4c 65 6e 20 2a 20 32 29 20 28 73 61 74 69 73 66 79 20 69 teM.(infoHashLen.*.2).(satisfy.i
6f60 73 48 65 78 44 69 67 69 74 29 00 20 20 72 65 61 64 73 50 72 65 63 20 5f 20 3d 20 72 65 61 64 50 sHexDigit)...readsPrec._.=.readP
6f80 5f 74 6f 5f 53 20 24 20 64 6f 00 69 6e 73 74 61 6e 63 65 20 52 65 61 64 20 49 6e 66 6f 48 61 73 _to_S.$.do.instance.Read.InfoHas
6fa0 68 20 77 68 65 72 65 00 2d 2d 20 7c 20 52 65 61 64 20 62 61 73 65 31 36 20 65 6e 63 6f 64 65 64 h.where.--.|.Read.base16.encoded
6fc0 20 73 74 72 69 6e 67 2e 00 00 20 20 70 50 72 69 6e 74 20 3d 20 74 65 78 74 20 2e 20 73 68 6f 77 .string.....pPrint.=.text...show
6fe0 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 .instance.Pretty.InfoHash.where.
7000 61 64 00 00 20 00 00 00 3c 02 00 00 00 10 00 00 80 00 00 00 00 00 00 00 d1 0f 00 00 b0 0f 00 00 ad......<.......................
7020 9b 0f 00 00 9a 0f 00 00 81 0f 00 00 4f 0f 00 00 2a 0f 00 00 0d 0f 00 00 f0 0e 00 00 d5 0e 00 00 ............O...*...............
7040 c6 0e 00 00 ab 0e 00 00 aa 0e 00 00 8c 0e 00 00 71 0e 00 00 56 0e 00 00 3d 0e 00 00 20 0e 00 00 ................q...V...=.......
7060 1f 0e 00 00 fe 0d 00 00 f7 0d 00 00 f6 0d 00 00 dd 0d 00 00 9e 0d 00 00 77 0d 00 00 5a 0d 00 00 ........................w...Z...
7080 3d 0d 00 00 22 0d 00 00 16 0d 00 00 15 0d 00 00 e0 0c 00 00 c9 0c 00 00 ae 0c 00 00 93 0c 00 00 =..."...........................
70a0 7a 0c 00 00 79 0c 00 00 49 0c 00 00 14 0c 00 00 f9 0b 00 00 f8 0b 00 00 cd 0b 00 00 b0 0b 00 00 z...y...I.......................
70c0 a9 0b 00 00 a8 0b 00 00 79 0b 00 00 60 0b 00 00 27 0b 00 00 ff 0a 00 00 da 0a 00 00 d1 0a 00 00 ........y...`...'...............
70e0 95 0a 00 00 94 0a 00 00 7f 0a 00 00 3c 0a 00 00 13 0a 00 00 12 0a 00 00 c9 09 00 00 b9 09 00 00 ............<...................
7100 70 09 00 00 6f 09 00 00 32 09 00 00 2f 09 00 00 09 09 00 00 06 09 00 00 ce 08 00 00 cb 08 00 00 p...o...2.../...................
7120 bb 08 00 00 ac 08 00 00 8f 08 00 00 61 08 00 00 5b 08 00 00 4d 08 00 00 15 08 00 00 e5 07 00 00 ............a...[...M...........
7140 e4 07 00 00 a2 07 00 00 84 07 00 00 61 07 00 00 37 07 00 00 36 07 00 00 26 07 00 00 18 07 00 00 ............a...7...6...&.......
7160 f7 06 00 00 d6 06 00 00 b5 06 00 00 b1 06 00 00 a2 06 00 00 9b 06 00 00 9a 06 00 00 79 06 00 00 ............................y...
7180 5e 06 00 00 3a 06 00 00 39 06 00 00 1c 06 00 00 fa 05 00 00 e2 05 00 00 e1 05 00 00 c8 05 00 00 ^...:...9.......................
71a0 a5 05 00 00 84 05 00 00 7c 05 00 00 4d 05 00 00 1c 05 00 00 1b 05 00 00 ee 04 00 00 b5 04 00 00 ........|...M...................
71c0 8b 04 00 00 72 04 00 00 57 04 00 00 4d 04 00 00 4c 04 00 00 2a 04 00 00 f7 03 00 00 d0 03 00 00 ....r...W...M...L...*...........
71e0 c9 03 00 00 c8 03 00 00 a7 03 00 00 7e 03 00 00 36 03 00 00 35 03 00 00 0b 03 00 00 e8 02 00 00 ............~...6...5...........
7200 c6 02 00 00 a3 02 00 00 87 02 00 00 86 02 00 00 5e 02 00 00 3c 02 00 00 3b 02 00 00 00 00 00 00 ................^...<...;.......
7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 73 4d 75 ............................isMu
7240 6c 74 69 46 69 6c 65 20 3a 3a 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 42 6f 6f 6c 00 2d 2d ltiFile.::.LayoutInfo.->.Bool.--
7260 20 7c 20 54 65 73 74 20 69 66 20 74 68 69 73 20 69 73 20 6d 75 6c 74 69 66 69 6c 65 20 74 6f 72 .|.Test.if.this.is.multifile.tor
7280 72 65 6e 74 2e 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 69 73 53 69 6e 67 6c 65 46 69 6c 65 20 23 rent...{-#.INLINE.isSingleFile.#
72a0 2d 7d 00 69 73 53 69 6e 67 6c 65 46 69 6c 65 20 5f 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 -}.isSingleFile._.............=.
72c0 46 61 6c 73 65 00 69 73 53 69 6e 67 6c 65 46 69 6c 65 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 7d False.isSingleFile.SingleFile.{}
72e0 20 3d 20 54 72 75 65 00 69 73 53 69 6e 67 6c 65 46 69 6c 65 20 3a 3a 20 4c 61 79 6f 75 74 49 6e .=.True.isSingleFile.::.LayoutIn
7300 66 6f 20 2d 3e 20 42 6f 6f 6c 00 2d 2d 20 7c 20 54 65 73 74 20 69 66 20 74 68 69 73 20 69 73 20 fo.->.Bool.--.|.Test.if.this.is.
7320 73 69 6e 67 6c 65 20 66 69 6c 65 20 74 6f 72 72 65 6e 74 2e 00 00 20 20 70 50 72 69 6e 74 20 4d single.file.torrent.....pPrint.M
7340 75 6c 74 69 46 69 6c 65 20 20 7b 2e 2e 7d 20 3d 20 76 63 61 74 20 24 20 4c 2e 6d 61 70 20 28 70 ultiFile..{..}.=.vcat.$.L.map.(p
7360 50 72 69 6e 74 20 2e 20 6a 6f 69 6e 46 69 6c 65 50 61 74 68 29 20 6c 69 46 69 6c 65 73 00 20 20 Print...joinFilePath).liFiles...
7380 70 50 72 69 6e 74 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 2e 2e 7d 20 3d 20 70 50 72 69 6e 74 20 pPrint.SingleFile.{..}.=.pPrint.
73a0 6c 69 46 69 6c 65 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 20 4c 61 79 6f 75 74 49 6e 66 liFile.instance.Pretty.LayoutInf
73c0 6f 20 77 68 65 72 65 00 00 23 65 6e 64 69 66 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 3d 20 o.where..#endif...fromBEncode.=.
73e0 66 72 6f 6d 44 69 63 74 20 67 65 74 4c 61 79 6f 75 74 49 6e 66 6f 00 20 20 74 6f 42 45 6e 63 6f fromDict.getLayoutInfo...toBEnco
7400 64 65 20 20 20 3d 20 74 6f 44 69 63 74 20 2e 20 28 60 70 75 74 4c 61 79 6f 75 74 49 6e 66 6f 60 de...=.toDict...(`putLayoutInfo`
7420 20 65 6e 64 44 69 63 74 29 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 4c 61 79 6f 75 .endDict).instance.BEncode.Layou
7440 74 49 6e 66 6f 20 77 68 65 72 65 00 00 20 20 2e 3a 20 63 6f 6e 74 00 20 20 2e 3a 20 22 6e 61 6d tInfo.where.....:.cont....:."nam
7460 65 22 20 20 2e 3d 21 20 6c 69 44 69 72 4e 61 6d 65 00 20 20 20 20 20 22 66 69 6c 65 73 22 20 2e e"...=!.liDirName......"files"..
7480 3d 21 20 6c 69 46 69 6c 65 73 00 70 75 74 4c 61 79 6f 75 74 49 6e 66 6f 20 4d 75 6c 74 69 46 69 =!.liFiles.putLayoutInfo.MultiFi
74a0 6c 65 20 20 7b 2e 2e 7d 20 3d 20 5c 20 63 6f 6e 74 20 2d 3e 00 70 75 74 4c 61 79 6f 75 74 49 6e le..{..}.=.\.cont.->.putLayoutIn
74c0 66 6f 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 2e 2e 7d 20 3d 20 70 75 74 46 69 6c 65 49 6e 66 6f fo.SingleFile.{..}.=.putFileInfo
74e0 53 69 6e 67 6c 65 20 6c 69 46 69 6c 65 00 70 75 74 4c 61 79 6f 75 74 49 6e 66 6f 20 3a 3a 20 44 Single.liFile.putLayoutInfo.::.D
7500 61 74 61 2e 54 6f 72 72 65 6e 74 2e 50 75 74 20 4c 61 79 6f 75 74 49 6e 66 6f 00 00 20 20 20 20 ata.Torrent.Put.LayoutInfo......
7520 6d 75 6c 74 69 20 20 3d 20 4d 75 6c 74 69 46 69 6c 65 20 20 3c 24 3e 21 20 22 66 69 6c 65 73 22 multi..=.MultiFile..<$>!."files"
7540 20 3c 2a 3e 21 20 22 6e 61 6d 65 22 00 20 20 20 20 73 69 6e 67 6c 65 20 3d 20 53 69 6e 67 6c 65 .<*>!."name".....single.=.Single
7560 46 69 6c 65 20 3c 24 3e 20 20 67 65 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 00 20 20 77 68 File.<$>..getFileInfoSingle...wh
7580 65 72 65 00 67 65 74 4c 61 79 6f 75 74 49 6e 66 6f 20 3d 20 73 69 6e 67 6c 65 20 3c 7c 3e 20 6d ere.getLayoutInfo.=.single.<|>.m
75a0 75 6c 74 69 00 67 65 74 4c 61 79 6f 75 74 49 6e 66 6f 20 3a 3a 20 42 45 2e 47 65 74 20 4c 61 79 ulti.getLayoutInfo.::.BE.Get.Lay
75c0 6f 75 74 49 6e 66 6f 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 outInfo.#ifdef.VERSION_bencoding
75e0 00 00 20 20 64 65 66 20 3d 20 4d 75 6c 74 69 46 69 6c 65 20 5b 5d 20 22 22 00 69 6e 73 74 61 6e ....def.=.MultiFile.[]."".instan
7600 63 65 20 44 65 66 61 75 6c 74 20 4c 61 79 6f 75 74 49 6e 66 6f 20 77 68 65 72 65 00 2d 2d 20 7c ce.Default.LayoutInfo.where.--.|
7620 20 45 6d 70 74 79 20 6d 75 6c 74 69 66 69 6c 65 20 6c 61 79 6f 75 74 2e 00 00 20 20 72 6e 66 20 .Empty.multifile.layout.....rnf.
7640 4d 75 6c 74 69 46 69 6c 65 20 20 7b 2e 2e 7d 20 3d 20 72 6e 66 20 6c 69 46 69 6c 65 73 00 20 20 MultiFile..{..}.=.rnf.liFiles...
7660 72 6e 66 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 2e 2e 7d 20 3d 20 28 29 00 69 6e 73 74 61 6e 63 rnf.SingleFile.{..}.=.().instanc
7680 65 20 4e 46 44 61 74 61 20 4c 61 79 6f 75 74 49 6e 66 6f 20 77 68 65 72 65 00 00 23 65 6e 64 69 e.NFData.LayoutInfo.where..#endi
76a0 66 00 20 20 27 27 4c 61 79 6f 75 74 49 6e 66 6f 00 20 20 5d 00 20 20 2c 20 28 22 6c 69 44 69 72 f...''LayoutInfo...]...,.("liDir
76c0 4e 61 6d 65 22 2c 20 22 72 6f 6f 74 44 69 72 4e 61 6d 65 22 29 00 20 20 2c 20 28 22 6c 69 46 69 Name",."rootDirName")...,.("liFi
76e0 6c 65 73 22 20 20 2c 20 22 6d 75 6c 74 69 46 69 6c 65 22 20 20 29 00 20 20 5b 20 28 22 6c 69 46 les"..,."multiFile"..)...[.("liF
7700 69 6c 65 22 20 20 20 2c 20 22 73 69 6e 67 6c 65 46 69 6c 65 22 20 29 00 6d 61 6b 65 4c 65 6e 73 ile"...,."singleFile".).makeLens
7720 65 73 46 6f 72 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 00 20 20 20 20 7d 20 64 65 72 esFor.#ifdef.USE_lens......}.der
7740 69 76 69 6e 67 20 28 53 68 6f 77 2c 20 52 65 61 64 2c 20 45 71 2c 20 54 79 70 65 61 62 6c 65 29 iving.(Show,.Read,.Eq,.Typeable)
7760 00 20 20 20 20 2c 20 6c 69 44 69 72 4e 61 6d 65 20 20 3a 3a 20 21 42 53 2e 42 79 74 65 53 74 72 .....,.liDirName..::.!BS.ByteStr
7780 69 6e 67 00 20 20 20 20 20 20 2d 2d 20 73 74 6f 72 65 20 61 6c 6c 20 74 68 65 20 66 69 6c 65 73 ing.......--.store.all.the.files
77a0 2e 00 20 20 20 20 20 20 2d 2d 20 7c 20 54 68 65 20 2f 73 75 67 67 65 73 74 65 64 2f 20 6e 61 6d ........--.|.The./suggested/.nam
77c0 65 20 6f 66 20 74 68 65 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 77 68 69 63 68 e.of.the.root.directory.in.which
77e0 20 74 6f 00 00 20 20 20 20 20 20 6c 69 46 69 6c 65 73 20 20 20 20 3a 3a 20 21 5b 46 69 6c 65 49 .to........liFiles....::.![FileI
7800 6e 66 6f 20 5b 42 53 2e 42 79 74 65 53 74 72 69 6e 67 5d 5d 00 20 20 20 20 7b 20 2d 2d 20 7c 20 nfo.[BS.ByteString]].....{.--.|.
7820 4c 69 73 74 20 6f 66 20 74 68 65 20 61 6c 6c 20 66 69 6c 65 73 20 74 68 61 74 20 74 6f 72 72 65 List.of.the.all.files.that.torre
7840 6e 74 20 63 6f 6e 74 61 69 6e 73 2e 00 20 20 7c 20 4d 75 6c 74 69 46 69 6c 65 00 20 20 20 20 7d nt.contains....|.MultiFile.....}
7860 00 20 20 20 20 20 20 6c 69 46 69 6c 65 20 20 20 20 20 3a 3a 20 21 28 46 69 6c 65 49 6e 66 6f 20 .......liFile.....::.!(FileInfo.
7880 42 53 2e 42 79 74 65 53 74 72 69 6e 67 29 00 20 20 20 20 7b 20 2d 2d 20 7c 20 53 69 6e 67 6c 65 BS.ByteString).....{.--.|.Single
78a0 20 66 69 6c 65 20 69 6e 66 6f 2e 00 20 20 3d 20 53 69 6e 67 6c 65 46 69 6c 65 00 64 61 74 61 20 .file.info....=.SingleFile.data.
78c0 4c 61 79 6f 75 74 49 6e 66 6f 00 2d 2d 00 2d 2d 20 20 20 20 20 2a 20 4d 75 6c 74 69 70 6c 65 20 LayoutInfo.--.--.....*.Multiple.
78e0 66 69 6c 65 73 20 77 69 74 68 20 69 74 73 20 72 65 6c 61 74 69 76 65 20 66 69 6c 65 20 2f 70 61 files.with.its.relative.file./pa
7900 74 68 73 2f 2e 00 2d 2d 00 2d 2d 20 20 20 20 20 2a 20 53 69 6e 67 6c 65 20 66 69 6c 65 20 77 69 ths/..--.--.....*.Single.file.wi
7920 74 68 20 69 74 73 20 2f 6e 61 6d 65 2f 2e 00 2d 2d 00 2d 2d 20 7c 20 4f 72 69 67 69 6e 61 6c 20 th.its./name/..--.--.|.Original.
7940 28 66 6f 75 6e 64 20 69 6e 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 29 20 6c 61 79 6f 75 74 20 69 (found.in.torrent.file).layout.i
7960 6e 66 6f 20 69 73 20 65 69 74 68 65 72 3a 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nfo.is.either:..----------------
7980 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
79a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 20 4c 61 79 -----------------------}.--..Lay
79c0 6f 75 74 20 69 6e 66 6f 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d out.info.{----------------------
79e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 6a 6f 69 6e 46 69 6c 65 50 61 74 68 20 -----------------..joinFilePath.
7a20 3d 20 66 6d 61 70 20 28 42 53 2e 69 6e 74 65 72 63 61 6c 61 74 65 20 22 2f 22 29 00 6a 6f 69 6e =.fmap.(BS.intercalate."/").join
7a40 46 69 6c 65 50 61 74 68 20 3a 3a 20 46 69 6c 65 49 6e 66 6f 20 5b 42 53 2e 42 79 74 65 53 74 72 FilePath.::.FileInfo.[BS.ByteStr
7a60 69 6e 67 5d 20 2d 3e 20 46 69 6c 65 49 6e 66 6f 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 00 2d ing].->.FileInfo.BS.ByteString.-
7a80 2d 20 7c 20 4a 6f 69 6e 20 66 69 6c 65 20 70 61 74 68 2e 00 00 20 20 20 20 70 70 4d 44 35 20 6d -.|.Join.file.path.......ppMD5.m
7aa0 64 35 20 3d 20 22 4d 44 35 20 3a 20 22 20 3c 3e 20 74 65 78 74 20 28 73 68 6f 77 20 28 42 61 73 d5.=."MD5.:.".<>.text.(show.(Bas
7ac0 65 31 36 2e 65 6e 63 6f 64 65 20 6d 64 35 29 29 00 20 20 20 77 68 65 72 65 00 20 20 20 20 24 24 e16.encode.md5))....where.....$$
7ae0 20 6d 61 79 62 65 20 50 50 2e 65 6d 70 74 79 20 70 70 4d 44 35 20 66 69 4d 44 35 53 75 6d 00 20 .maybe.PP.empty.ppMD5.fiMD5Sum..
7b00 20 20 20 24 24 20 22 53 69 7a 65 3a 20 22 20 3c 3e 20 74 65 78 74 20 28 73 68 6f 77 20 66 69 4c ...$$."Size:.".<>.text.(show.fiL
7b20 65 6e 67 74 68 29 00 20 20 20 20 20 20 20 22 50 61 74 68 3a 20 22 20 3c 3e 20 74 65 78 74 20 28 ength)........"Path:.".<>.text.(
7b40 54 2e 75 6e 70 61 63 6b 20 28 54 2e 64 65 63 6f 64 65 55 74 66 38 20 66 69 4e 61 6d 65 29 29 00 T.unpack.(T.decodeUtf8.fiName)).
7b60 20 20 70 50 72 69 6e 74 20 46 69 6c 65 49 6e 66 6f 20 7b 2e 2e 7d 20 3d 00 69 6e 73 74 61 6e 63 ..pPrint.FileInfo.{..}.=.instanc
7b80 65 20 50 72 65 74 74 79 20 28 46 69 6c 65 49 6e 66 6f 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 e.Pretty.(FileInfo.BS.ByteString
7ba0 29 20 77 68 65 72 65 00 00 23 65 6e 64 69 66 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 66 72 6f ).where..#endif...{-#.INLINE.fro
7bc0 6d 42 45 6e 63 6f 64 65 20 23 2d 7d 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 3d 20 66 72 6f mBEncode.#-}...fromBEncode.=.fro
7be0 6d 44 69 63 74 20 67 65 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 00 00 20 20 7b 2d 23 20 49 mDict.getFileInfoSingle....{-#.I
7c00 4e 4c 49 4e 45 20 74 6f 42 45 6e 63 6f 64 65 20 23 2d 7d 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 NLINE.toBEncode.#-}...toBEncode.
7c20 3d 20 74 6f 44 69 63 74 20 2e 20 28 60 70 75 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 60 20 =.toDict...(`putFileInfoSingle`.
7c40 65 6e 64 44 69 63 74 29 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 28 46 69 6c 65 49 endDict).instance.BEncode.(FileI
7c60 6e 66 6f 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 29 20 77 68 65 72 65 00 00 20 20 20 20 20 20 nfo.BS.ByteString).where........
7c80 20 20 20 20 20 20 20 3c 2a 3e 21 20 22 6e 61 6d 65 22 00 20 20 20 20 20 20 20 20 20 20 20 20 20 .......<*>!."name"..............
7ca0 3c 2a 3e 3f 20 22 6d 64 35 73 75 6d 22 00 20 20 20 20 46 69 6c 65 49 6e 66 6f 20 3c 24 3e 21 20 <*>?."md5sum".....FileInfo.<$>!.
7cc0 22 6c 65 6e 67 74 68 22 00 67 65 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 20 3d 20 64 6f 00 "length".getFileInfoSingle.=.do.
7ce0 67 65 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 20 3a 3a 20 42 45 2e 47 65 74 20 28 46 69 6c getFileInfoSingle.::.BE.Get.(Fil
7d00 65 49 6e 66 6f 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 29 00 00 20 20 20 20 2e 3a 20 63 6f 6e eInfo.BS.ByteString).......:.con
7d20 74 00 20 20 20 20 2e 3a 20 22 6e 61 6d 65 22 20 20 20 2e 3d 21 20 66 69 4e 61 6d 65 00 20 20 20 t......:."name"....=!.fiName....
7d40 20 2e 3a 20 22 6d 64 35 73 75 6d 22 20 2e 3d 3f 20 66 69 4d 44 35 53 75 6d 00 20 20 20 20 20 20 ..:."md5sum"..=?.fiMD5Sum.......
7d60 20 22 6c 65 6e 67 74 68 22 20 2e 3d 21 20 66 69 4c 65 6e 67 74 68 00 70 75 74 46 69 6c 65 49 6e ."length"..=!.fiLength.putFileIn
7d80 66 6f 53 69 6e 67 6c 65 20 46 69 6c 65 49 6e 66 6f 20 7b 2e 2e 7d 20 63 6f 6e 74 20 3d 00 70 75 foSingle.FileInfo.{..}.cont.=.pu
7da0 74 46 69 6c 65 49 6e 66 6f 53 69 6e 67 6c 65 20 3a 3a 20 44 61 74 61 2e 54 6f 72 72 65 6e 74 2e tFileInfoSingle.::.Data.Torrent.
7dc0 50 75 74 20 28 46 69 6c 65 49 6e 66 6f 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 29 00 23 69 66 Put.(FileInfo.BS.ByteString).#if
7de0 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 23 65 6e 64 69 66 00 74 79 def.VERSION_bencoding..#endif.ty
7e00 70 65 20 50 75 74 20 61 20 3d 20 61 20 2d 3e 20 42 44 69 63 74 20 2d 3e 20 42 44 69 63 74 00 00 pe.Put.a.=.a.->.BDict.->.BDict..
7e20 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 23 2d 7d 00 20 20 20 ..{-#.INLINE.fromBEncode.#-}....
7e40 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 21 20 22 70 61 74 68 22 00 20 20 20 20 20 20 20 20 20 20 ..........<*>!."path"...........
7e60 20 20 20 3c 2a 3e 3f 20 22 6d 64 35 73 75 6d 22 00 20 20 20 20 46 69 6c 65 49 6e 66 6f 20 3c 24 ...<*>?."md5sum".....FileInfo.<$
7e80 3e 21 20 22 6c 65 6e 67 74 68 22 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 3d 20 66 72 6f 6d >!."length"...fromBEncode.=.from
7ea0 44 69 63 74 20 24 20 64 6f 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 74 6f 42 45 6e 63 6f 64 Dict.$.do....{-#.INLINE.toBEncod
7ec0 65 20 23 2d 7d 00 20 20 20 20 2e 3a 20 65 6e 64 44 69 63 74 00 20 20 20 20 2e 3a 20 22 70 61 74 e.#-}......:.endDict......:."pat
7ee0 68 22 20 20 20 2e 3d 21 20 66 69 4e 61 6d 65 00 20 20 20 20 2e 3a 20 22 6d 64 35 73 75 6d 22 20 h"....=!.fiName......:."md5sum".
7f00 2e 3d 3f 20 66 69 4d 44 35 53 75 6d 00 20 20 20 20 20 20 20 22 6c 65 6e 67 74 68 22 20 2e 3d 21 .=?.fiMD5Sum........"length"..=!
7f20 20 66 69 4c 65 6e 67 74 68 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 46 69 6c 65 49 6e 66 6f 20 7b .fiLength...toBEncode.FileInfo.{
7f40 2e 2e 7d 20 3d 20 74 6f 44 69 63 74 20 24 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 ..}.=.toDict.$.instance.BEncode.
7f60 28 46 69 6c 65 49 6e 66 6f 20 5b 42 53 2e 42 79 74 65 53 74 72 69 6e 67 5d 29 20 77 68 65 72 65 (FileInfo.[BS.ByteString]).where
7f80 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 20 20 7b 2d 23 .#ifdef.VERSION_bencoding....{-#
7fa0 20 49 4e 4c 49 4e 45 20 72 6e 66 20 23 2d 7d 00 20 20 72 6e 66 20 46 69 6c 65 49 6e 66 6f 20 7b .INLINE.rnf.#-}...rnf.FileInfo.{
7fc0 2e 2e 7d 20 3d 20 72 6e 66 20 66 69 4e 61 6d 65 00 69 6e 73 74 61 6e 63 65 20 4e 46 44 61 74 61 ..}.=.rnf.fiName.instance.NFData
7fe0 20 61 20 3d 3e 20 4e 46 44 61 74 61 20 28 46 69 6c 65 49 6e 66 6f 20 61 29 20 77 68 65 72 65 00 .a.=>.NFData.(FileInfo.a).where.
8000 61 64 00 00 1c 00 00 00 c4 01 00 00 00 10 00 00 63 00 00 00 00 00 00 00 e0 0f 00 00 bf 0f 00 00 ad..............c...............
8020 a4 0f 00 00 a3 0f 00 00 68 0f 00 00 3b 0f 00 00 09 0f 00 00 d4 0e 00 00 b7 0e 00 00 b6 0e 00 00 ........h...;...................
8040 85 0e 00 00 5d 0e 00 00 1d 0e 00 00 cb 0d 00 00 ca 0d 00 00 a1 0d 00 00 82 0d 00 00 64 0d 00 00 ....].......................d...
8060 37 0d 00 00 36 0d 00 00 f1 0c 00 00 b3 0c 00 00 8c 0c 00 00 4e 0c 00 00 4d 0c 00 00 04 0c 00 00 7...6...............N...M.......
8080 03 0c 00 00 bd 0b 00 00 79 0b 00 00 32 0b 00 00 1e 0b 00 00 1b 0b 00 00 f7 0a 00 00 f6 0a 00 00 ........y...2...................
80a0 b0 0a 00 00 a5 0a 00 00 62 0a 00 00 27 0a 00 00 d8 09 00 00 9c 09 00 00 68 09 00 00 27 09 00 00 ........b...'...........h...'...
80c0 fb 08 00 00 ce 08 00 00 c2 08 00 00 8f 08 00 00 5e 08 00 00 5d 08 00 00 16 08 00 00 cb 07 00 00 ................^...]...........
80e0 b5 07 00 00 ad 07 00 00 9b 07 00 00 56 07 00 00 55 07 00 00 13 07 00 00 cf 06 00 00 b9 06 00 00 ............V...U...............
8100 9f 06 00 00 9e 06 00 00 55 06 00 00 54 06 00 00 3a 06 00 00 0e 06 00 00 cf 05 00 00 c7 05 00 00 ........U...T...:...............
8120 8e 05 00 00 5b 05 00 00 24 05 00 00 23 05 00 00 da 04 00 00 c6 04 00 00 7d 04 00 00 7c 04 00 00 ....[...$...#...........}...|...
8140 49 04 00 00 34 04 00 00 33 04 00 00 fe 03 00 00 fb 03 00 00 c1 03 00 00 7a 03 00 00 52 03 00 00 I...4...3...............z...R...
8160 4f 03 00 00 3a 03 00 00 39 03 00 00 02 03 00 00 ec 02 00 00 eb 02 00 00 d3 02 00 00 b6 02 00 00 O...:...9.......................
8180 b5 02 00 00 8b 02 00 00 6b 02 00 00 52 02 00 00 31 02 00 00 30 02 00 00 fc 01 00 00 e8 01 00 00 ........k...R...1...0...........
81a0 c4 01 00 00 c3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81c0 00 00 00 00 6d 69 6e 50 69 65 63 65 53 69 7a 65 20 3d 20 64 65 66 61 75 6c 74 42 6c 6f 63 6b 53 ....minPieceSize.=.defaultBlockS
81e0 69 7a 65 20 2a 20 34 00 6d 69 6e 50 69 65 63 65 53 69 7a 65 20 3a 3a 20 49 6e 74 00 2d 2d 20 7c ize.*.4.minPieceSize.::.Int.--.|
8200 20 50 69 65 63 65 20 73 69 7a 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6c 65 73 73 20 74 .Piece.size.should.not.be.less.t
8220 68 61 6e 20 74 68 69 73 20 76 61 6c 75 65 2e 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 6f 70 74 69 han.this.value...{-#.INLINE.opti
8240 6d 61 6c 50 69 65 63 65 43 6f 75 6e 74 20 23 2d 7d 00 6f 70 74 69 6d 61 6c 50 69 65 63 65 43 6f malPieceCount.#-}.optimalPieceCo
8260 75 6e 74 20 3d 20 31 30 30 30 00 6f 70 74 69 6d 61 6c 50 69 65 63 65 43 6f 75 6e 74 20 3a 3a 20 unt.=.1000.optimalPieceCount.::.
8280 50 69 65 63 65 43 6f 75 6e 74 00 2d 2d 20 7c 20 4f 70 74 69 6d 61 6c 20 6e 75 6d 62 65 72 20 6f PieceCount.--.|.Optimal.number.o
82a0 66 20 70 69 65 63 65 73 20 69 6e 20 74 6f 72 72 65 6e 74 2e 00 00 64 65 66 61 75 6c 74 42 6c 6f f.pieces.in.torrent...defaultBlo
82c0 63 6b 53 69 7a 65 20 3d 20 31 36 20 2a 20 31 30 32 34 00 64 65 66 61 75 6c 74 42 6c 6f 63 6b 53 ckSize.=.16.*.1024.defaultBlockS
82e0 69 7a 65 20 3a 3a 20 49 6e 74 00 00 74 79 70 65 20 50 69 65 63 65 43 6f 75 6e 74 20 3d 20 49 6e ize.::.Int..type.PieceCount.=.In
8300 74 00 2d 2d 20 7c 20 4e 75 6d 62 65 72 20 6f 66 20 70 69 65 63 65 73 20 69 6e 20 74 6f 72 72 65 t.--.|.Number.of.pieces.in.torre
8320 6e 74 20 6f 72 20 61 20 70 61 72 74 20 6f 66 20 74 6f 72 72 65 6e 74 2e 00 00 74 79 70 65 20 50 nt.or.a.part.of.torrent...type.P
8340 69 65 63 65 53 69 7a 65 20 3d 20 49 6e 74 00 2d 2d 00 2d 2d 20 20 20 61 62 6f 75 74 20 70 69 65 ieceSize.=.Int.--.--...about.pie
8360 63 65 20 73 69 7a 65 20 66 6f 72 20 6e 65 77 20 74 6f 72 72 65 6e 74 73 2e 00 2d 2d 20 20 20 73 ce.size.for.new.torrents..--...s
8380 65 6d 69 2d 73 74 61 6e 64 61 72 64 20 76 61 6c 75 65 73 2e 20 54 68 69 73 20 62 6f 75 6e 64 73 emi-standard.values..This.bounds
83a0 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 64 65 63 69 73 69 6f 6e .should.be.used.to.make.decision
83c0 00 2d 2d 20 20 20 4e 4f 54 45 3a 20 48 61 76 65 20 6d 61 78 20 61 6e 64 20 6d 69 6e 20 73 69 7a .--...NOTE:.Have.max.and.min.siz
83e0 65 20 63 6f 6e 73 74 72 61 69 6e 65 64 20 74 6f 20 77 69 64 65 20 75 73 65 64 00 2d 2d 00 2d 2d e.constrained.to.wide.used.--.--
8400 20 7c 20 53 69 7a 65 20 6f 66 20 70 69 65 63 65 20 69 6e 20 62 79 74 65 73 2e 20 53 68 6f 75 6c .|.Size.of.piece.in.bytes..Shoul
8420 64 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 00 00 74 79 70 65 20 50 69 65 63 65 49 78 d.be.a.power.of.2...type.PieceIx
8440 20 20 20 3d 20 49 6e 74 00 2d 2d 20 7c 20 5a 65 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 6f ...=.Int.--.|.Zero-based.index.o
8460 66 20 70 69 65 63 65 20 69 6e 20 74 6f 72 72 65 6e 74 20 63 6f 6e 74 65 6e 74 2e 00 00 2d 2d 2d f.piece.in.torrent.content...---
8480 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
84a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
84c0 2d 2d 2d 2d 7d 00 2d 2d 20 50 69 65 63 65 20 61 74 74 72 69 62 75 74 65 73 00 7b 2d 2d 2d 2d 2d ----}.--.Piece.attributes.{-----
84e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8520 2d 2d 00 00 7b 2d 23 20 53 50 45 43 49 41 4c 49 5a 45 20 73 69 7a 65 49 6e 42 61 73 65 20 3a 3a --..{-#.SPECIALIZE.sizeInBase.::
8540 20 49 6e 74 65 67 65 72 20 2d 3e 20 49 6e 74 20 2d 3e 20 49 6e 74 20 23 2d 7d 00 7b 2d 23 20 53 .Integer.->.Int.->.Int.#-}.{-#.S
8560 50 45 43 49 41 4c 49 5a 45 20 73 69 7a 65 49 6e 42 61 73 65 20 3a 3a 20 49 6e 74 20 2d 3e 20 49 PECIALIZE.sizeInBase.::.Int.->.I
8580 6e 74 20 2d 3e 20 49 6e 74 20 23 2d 7d 00 20 20 20 20 61 6c 69 67 6e 20 3d 20 69 66 20 6e 20 60 nt.->.Int.#-}.....align.=.if.n.`
85a0 6d 6f 64 60 20 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 62 20 3d 3d 20 30 20 74 68 65 6e 20 30 20 mod`.fromIntegral.b.==.0.then.0.
85c0 65 6c 73 65 20 31 00 20 20 77 68 65 72 65 00 73 69 7a 65 49 6e 42 61 73 65 20 6e 20 62 20 3d 20 else.1...where.sizeInBase.n.b.=.
85e0 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 28 6e 20 60 64 69 76 60 20 66 72 6f 6d 49 6e 74 65 67 72 fromIntegral.(n.`div`.fromIntegr
8600 61 6c 20 62 29 20 2b 20 61 6c 69 67 6e 00 73 69 7a 65 49 6e 42 61 73 65 20 3a 3a 20 49 6e 74 65 al.b).+.align.sizeInBase.::.Inte
8620 67 72 61 6c 20 61 20 3d 3e 20 61 20 2d 3e 20 49 6e 74 20 2d 3e 20 49 6e 74 00 2d 2d 20 7c 20 44 gral.a.=>.a.->.Int.->.Int.--.|.D
8640 69 76 69 64 65 20 61 6e 64 20 72 6f 75 6e 64 20 75 70 2e 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ivide.and.round.up...-----------
8660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8680 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 7b -----------------------------..{
86a0 2d 23 20 49 4e 4c 49 4e 45 20 66 69 6c 65 4f 66 66 73 65 74 20 23 2d 7d 00 66 69 6c 65 4f 66 66 -#.INLINE.fileOffset.#-}.fileOff
86c0 73 65 74 20 3d 20 4c 2e 6c 6f 6f 6b 75 70 00 66 69 6c 65 4f 66 66 73 65 74 20 3a 3a 20 46 69 6c set.=.L.lookup.fileOffset.::.Fil
86e0 65 50 61 74 68 20 2d 3e 20 46 69 6c 65 4c 61 79 6f 75 74 20 46 69 6c 65 4f 66 66 73 65 74 20 2d ePath.->.FileLayout.FileOffset.-
8700 3e 20 4d 61 79 62 65 20 46 69 6c 65 4f 66 66 73 65 74 00 2d 2d 20 7c 20 47 69 76 65 73 20 67 6c >.Maybe.FileOffset.--.|.Gives.gl
8720 6f 62 61 6c 20 6f 66 66 73 65 74 20 6f 66 20 61 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 20 66 6f obal.offset.of.a.content.file.fo
8740 72 20 61 20 67 69 76 65 6e 20 66 75 6c 6c 20 70 61 74 68 2e 00 00 20 20 20 20 67 6f 20 21 6f 66 r.a.given.full.path.......go.!of
8760 66 73 65 74 20 28 28 6e 2c 20 73 29 20 3a 20 78 73 29 20 3d 20 28 6e 2c 20 28 6f 66 66 73 65 74 fset.((n,.s).:.xs).=.(n,.(offset
8780 2c 20 73 29 29 20 3a 20 67 6f 20 28 6f 66 66 73 65 74 20 2b 20 73 29 20 78 73 00 20 20 20 20 67 ,.s)).:.go.(offset.+.s).xs.....g
87a0 6f 20 21 5f 20 5b 5d 20 3d 20 5b 5d 00 20 20 77 68 65 72 65 00 61 63 63 75 6d 50 6f 73 69 74 69 o.!_.[].=.[]...where.accumPositi
87c0 6f 6e 73 20 3d 20 67 6f 20 30 00 61 63 63 75 6d 50 6f 73 69 74 69 6f 6e 73 20 3a 3a 20 46 69 6c ons.=.go.0.accumPositions.::.Fil
87e0 65 4c 61 79 6f 75 74 20 46 69 6c 65 53 69 7a 65 20 2d 3e 20 46 69 6c 65 4c 61 79 6f 75 74 20 28 eLayout.FileSize.->.FileLayout.(
8800 46 69 6c 65 4f 66 66 73 65 74 2c 20 46 69 6c 65 53 69 7a 65 29 00 2d 2d 20 7c 20 43 61 6c 63 75 FileOffset,.FileSize).--.|.Calcu
8820 6c 61 74 65 20 6f 66 66 73 65 74 20 6f 66 20 65 61 63 68 20 66 69 6c 65 20 62 61 73 65 64 20 6f late.offset.of.each.file.based.o
8840 6e 20 69 74 73 20 6c 65 6e 67 74 68 2c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 2e 00 00 20 20 n.its.length,.incrementally.....
8860 20 20 20 20 20 20 20 20 20 3c 2f 3e 20 6a 6f 69 6e 50 61 74 68 20 28 4c 2e 6d 61 70 20 42 43 2e .........</>.joinPath.(L.map.BC.
8880 75 6e 70 61 63 6b 20 66 69 4e 61 6d 65 29 00 20 20 20 20 20 20 20 20 5f 70 61 74 68 20 3d 20 70 unpack.fiName)........._path.=.p
88a0 72 65 66 69 78 50 61 74 68 20 3c 2f 3e 20 42 43 2e 75 6e 70 61 63 6b 20 6c 69 44 69 72 4e 61 6d refixPath.</>.BC.unpack.liDirNam
88c0 65 00 20 20 20 20 20 20 77 68 65 72 65 00 20 20 20 20 6d 6b 50 61 74 68 20 46 69 6c 65 49 6e 66 e.......where.....mkPath.FileInf
88e0 6f 20 7b 2e 2e 7d 20 3d 20 28 5f 70 61 74 68 2c 20 66 69 4c 65 6e 67 74 68 29 00 20 20 77 68 65 o.{..}.=.(_path,.fiLength)...whe
8900 72 65 20 20 20 2d 2d 20 54 4f 44 4f 20 75 73 65 20 75 74 66 38 20 65 6e 63 6f 64 69 6e 67 20 69 re...--.TODO.use.utf8.encoding.i
8920 6e 20 6e 61 6d 65 00 66 6c 61 74 4c 61 79 6f 75 74 20 70 72 65 66 69 78 50 61 74 68 20 4d 75 6c n.name.flatLayout.prefixPath.Mul
8940 74 69 46 69 6c 65 20 20 7b 2e 2e 7d 20 20 20 20 20 3d 20 4c 2e 6d 61 70 20 6d 6b 50 61 74 68 20 tiFile..{..}.....=.L.map.mkPath.
8960 6c 69 46 69 6c 65 73 00 20 20 20 20 3d 20 5b 28 70 72 65 66 69 78 50 61 74 68 20 3c 2f 3e 20 42 liFiles.....=.[(prefixPath.</>.B
8980 43 2e 75 6e 70 61 63 6b 20 66 69 4e 61 6d 65 2c 20 66 69 4c 65 6e 67 74 68 29 5d 00 66 6c 61 74 C.unpack.fiName,.fiLength)].flat
89a0 4c 61 79 6f 75 74 20 70 72 65 66 69 78 50 61 74 68 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 20 6c Layout.prefixPath.SingleFile.{.l
89c0 69 46 69 6c 65 20 3d 20 46 69 6c 65 49 6e 66 6f 20 7b 2e 2e 7d 20 7d 00 20 20 2d 3e 20 46 69 6c iFile.=.FileInfo.{..}.}...->.Fil
89e0 65 4c 61 79 6f 75 74 20 46 69 6c 65 53 69 7a 65 20 2d 2d 20 5e 20 54 68 65 20 61 6c 6c 20 66 69 eLayout.FileSize.--.^.The.all.fi
8a00 6c 65 20 70 61 74 68 73 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 74 68 65 20 67 69 76 65 6e le.paths.prefixed.with.the.given
8a20 20 72 6f 6f 74 2e 00 20 20 2d 3e 20 4c 61 79 6f 75 74 49 6e 66 6f 20 20 20 20 20 20 20 20 20 20 .root....->.LayoutInfo..........
8a40 2d 2d 20 5e 20 54 6f 72 72 65 6e 74 20 63 6f 6e 74 65 6e 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e --.^.Torrent.content.information
8a60 2e 00 20 20 3a 3a 20 46 69 6c 65 50 61 74 68 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 5e 20 ....::.FilePath............--.^.
8a80 52 6f 6f 74 20 70 61 74 68 20 66 6f 72 20 74 68 65 20 61 6c 6c 20 74 6f 72 72 65 6e 74 20 66 69 Root.path.for.the.all.torrent.fi
8aa0 6c 65 73 2e 00 66 6c 61 74 4c 61 79 6f 75 74 00 2d 2d 20 7c 20 45 78 74 72 61 63 74 20 66 69 6c les..flatLayout.--.|.Extract.fil
8ac0 65 73 20 6c 61 79 6f 75 74 20 66 72 6f 6d 20 74 6f 72 72 65 6e 74 20 69 6e 66 6f 20 77 69 74 68 es.layout.from.torrent.info.with
8ae0 20 74 68 65 20 67 69 76 65 6e 20 72 6f 6f 74 20 70 61 74 68 2e 00 00 74 79 70 65 20 46 69 6c 65 .the.given.root.path...type.File
8b00 4c 61 79 6f 75 74 20 61 20 3d 20 5b 28 46 69 6c 65 50 61 74 68 2c 20 61 29 5d 00 2d 2d 00 2d 2d Layout.a.=.[(FilePath,.a)].--.--
8b20 20 20 20 61 64 64 72 65 73 73 20 73 70 61 63 65 2e 00 2d 2d 20 20 20 63 6f 61 6c 65 73 63 65 20 ...address.space..--...coalesce.
8b40 61 6c 6c 20 74 68 65 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 6f 72 64 65 72 all.the.files.in.the.given.order
8b60 20 74 6f 20 67 65 74 20 74 68 65 20 6c 69 6e 65 61 72 20 62 6c 6f 63 6b 00 2d 2d 20 20 20 73 74 .to.get.the.linear.block.--...st
8b80 6f 72 61 67 65 2e 20 4e 6f 74 65 20 74 68 61 74 20 6f 72 64 65 72 20 6f 66 20 66 69 6c 65 73 20 orage..Note.that.order.of.files.
8ba0 69 73 20 68 69 67 68 6c 79 20 69 6d 70 6f 72 74 61 6e 74 20 73 69 6e 63 65 20 77 65 00 2d 2d 20 is.highly.important.since.we.--.
8bc0 7c 20 46 69 6c 65 20 6c 61 79 6f 75 74 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 6f 72 64 65 |.File.layout.specifies.the.orde
8be0 72 20 61 6e 64 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 66 69 6c 65 20 69 6e 20 74 r.and.the.size.of.each.file.in.t
8c00 68 65 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d he..----------------------------
8c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8c40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 62 6c 6f 63 6b 43 6f 75 6e 74 20 62 6c 6b 53 69 7a 65 ------------..blockCount.blkSize
8c60 20 63 69 20 3d 20 63 6f 6e 74 65 6e 74 4c 65 6e 67 74 68 20 63 69 20 60 73 69 7a 65 49 6e 42 61 .ci.=.contentLength.ci.`sizeInBa
8c80 73 65 60 20 62 6c 6b 53 69 7a 65 00 62 6c 6f 63 6b 43 6f 75 6e 74 20 3a 3a 20 49 6e 74 20 2d 3e se`.blkSize.blockCount.::.Int.->
8ca0 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 49 6e 74 00 2d 2d 20 6e 6f 74 20 61 20 6d 75 6c 74 .LayoutInfo.->.Int.--.not.a.mult
8cc0 69 70 6c 65 20 6f 66 20 62 6c 6f 63 6b 20 73 69 7a 65 20 74 68 65 6e 20 74 68 65 20 63 6f 75 6e iple.of.block.size.then.the.coun
8ce0 74 20 69 73 20 72 6f 75 6e 64 65 64 20 75 70 2e 00 2d 2d 20 7c 20 46 69 6e 64 20 6e 75 6d 62 65 t.is.rounded.up..--.|.Find.numbe
8d00 72 20 6f 66 20 62 6c 6f 63 6b 73 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 69 7a r.of.blocks.of.the.specified.siz
8d20 65 2e 20 49 66 20 74 6f 72 72 65 6e 74 20 73 69 7a 65 20 69 73 00 00 66 69 6c 65 43 6f 75 6e 74 e..If.torrent.size.is..fileCount
8d40 20 4d 75 6c 74 69 46 69 6c 65 20 20 7b 2e 2e 7d 20 3d 20 4c 2e 6c 65 6e 67 74 68 20 6c 69 46 69 .MultiFile..{..}.=.L.length.liFi
8d60 6c 65 73 00 66 69 6c 65 43 6f 75 6e 74 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 2e 2e 7d 20 3d 20 les.fileCount.SingleFile.{..}.=.
8d80 31 00 66 69 6c 65 43 6f 75 6e 74 20 3a 3a 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 49 6e 74 1.fileCount.::.LayoutInfo.->.Int
8da0 00 2d 2d 20 7c 20 47 65 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 20 66 69 6c 65 73 20 69 6e .--.|.Get.number.of.all.files.in
8dc0 20 74 6f 72 72 65 6e 74 2e 00 00 63 6f 6e 74 65 6e 74 4c 65 6e 67 74 68 20 4d 75 6c 74 69 46 69 .torrent...contentLength.MultiFi
8de0 6c 65 20 20 7b 20 6c 69 46 69 6c 65 73 20 3d 20 74 66 73 20 20 20 20 20 20 20 20 20 20 20 7d 20 le..{.liFiles.=.tfs...........}.
8e00 3d 20 4c 2e 73 75 6d 20 28 4c 2e 6d 61 70 20 66 69 4c 65 6e 67 74 68 20 74 66 73 29 00 63 6f 6e =.L.sum.(L.map.fiLength.tfs).con
8e20 74 65 6e 74 4c 65 6e 67 74 68 20 53 69 6e 67 6c 65 46 69 6c 65 20 7b 20 6c 69 46 69 6c 65 20 20 tentLength.SingleFile.{.liFile..
8e40 3d 20 46 69 6c 65 49 6e 66 6f 20 7b 2e 2e 7d 20 7d 20 3d 20 66 69 4c 65 6e 67 74 68 00 63 6f 6e =.FileInfo.{..}.}.=.fiLength.con
8e60 74 65 6e 74 4c 65 6e 67 74 68 20 3a 3a 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 46 69 6c 65 tentLength.::.LayoutInfo.->.File
8e80 53 69 7a 65 00 2d 2d 20 7c 20 46 69 6e 64 20 73 75 6d 20 6f 66 20 73 69 7a 65 73 20 6f 66 20 74 Size.--.|.Find.sum.of.sizes.of.t
8ea0 68 65 20 61 6c 6c 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 73 2e 00 00 7b 2d 23 20 49 4e 4c 49 4e he.all.torrent.files...{-#.INLIN
8ec0 45 20 73 75 67 67 65 73 74 65 64 4e 61 6d 65 20 23 2d 7d 00 73 75 67 67 65 73 74 65 64 4e 61 6d E.suggestedName.#-}.suggestedNam
8ee0 65 20 20 4d 75 6c 74 69 46 69 6c 65 20 20 20 20 20 20 20 20 20 20 20 7b 2e 2e 7d 20 20 3d 20 6c e..MultiFile...........{..}..=.l
8f00 69 44 69 72 4e 61 6d 65 00 73 75 67 67 65 73 74 65 64 4e 61 6d 65 20 28 53 69 6e 67 6c 65 46 69 iDirName.suggestedName.(SingleFi
8f20 6c 65 20 46 69 6c 65 49 6e 66 6f 20 7b 2e 2e 7d 29 20 3d 20 66 69 4e 61 6d 65 00 73 75 67 67 65 le.FileInfo.{..}).=.fiName.sugge
8f40 73 74 65 64 4e 61 6d 65 20 3a 3a 20 4c 61 79 6f 75 74 49 6e 66 6f 20 2d 3e 20 42 53 2e 42 79 74 stedName.::.LayoutInfo.->.BS.Byt
8f60 65 53 74 72 69 6e 67 00 2d 2d 20 7c 20 47 65 74 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 6f 72 eString.--.|.Get.name.of.the.tor
8f80 72 65 6e 74 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 72 6f 6f 74 20 70 61 74 68 20 70 69 65 63 rent.based.on.the.root.path.piec
8fa0 65 2e 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 69 73 4d 75 6c 74 69 46 69 6c 65 20 23 2d 7d 00 69 e...{-#.INLINE.isMultiFile.#-}.i
8fc0 73 4d 75 6c 74 69 46 69 6c 65 20 5f 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 46 61 6c 73 65 00 sMultiFile._............=.False.
8fe0 69 73 4d 75 6c 74 69 46 69 6c 65 20 4d 75 6c 74 69 46 69 6c 65 20 7b 7d 20 3d 20 54 72 75 65 00 isMultiFile.MultiFile.{}.=.True.
9000 61 64 00 00 32 00 00 00 36 02 00 00 00 10 00 00 7a 00 00 00 00 00 00 00 e4 0f 00 00 e3 0f 00 00 ad..2...6.......z...............
9020 9c 0f 00 00 92 0f 00 00 7e 0f 00 00 5f 0f 00 00 43 0f 00 00 42 0f 00 00 2d 0f 00 00 12 0f 00 00 ........~..._...C...B...-.......
9040 c9 0e 00 00 c3 0e 00 00 b0 0e 00 00 5d 0e 00 00 56 0e 00 00 55 0e 00 00 1a 0e 00 00 f9 0d 00 00 ............]...V...U...........
9060 b4 0d 00 00 ac 0d 00 00 6d 0d 00 00 6c 0d 00 00 23 0d 00 00 15 0d 00 00 cc 0c 00 00 cb 0c 00 00 ........m...l...#...............
9080 ac 0c 00 00 ab 0c 00 00 9b 0c 00 00 8d 0c 00 00 75 0c 00 00 74 0c 00 00 49 0c 00 00 11 0c 00 00 ................u...t...I.......
90a0 fc 0b 00 00 d0 0b 00 00 a6 0b 00 00 a5 0b 00 00 93 0b 00 00 7e 0b 00 00 4d 0b 00 00 4c 0b 00 00 ....................~...M...L...
90c0 20 0b 00 00 fa 0a 00 00 f9 0a 00 00 d9 0a 00 00 b9 0a 00 00 6b 0a 00 00 6a 0a 00 00 49 0a 00 00 ....................k...j...I...
90e0 1b 0a 00 00 e1 09 00 00 e0 09 00 00 cb 09 00 00 9d 09 00 00 54 09 00 00 53 09 00 00 0a 09 00 00 ....................T...S.......
9100 f9 08 00 00 b0 08 00 00 af 08 00 00 80 08 00 00 44 08 00 00 1e 08 00 00 05 08 00 00 f0 07 00 00 ................D...............
9120 e9 07 00 00 dc 07 00 00 db 07 00 00 c5 07 00 00 a5 07 00 00 91 07 00 00 90 07 00 00 51 07 00 00 ............................Q...
9140 36 07 00 00 06 07 00 00 de 06 00 00 dd 06 00 00 bd 06 00 00 85 06 00 00 5d 06 00 00 5c 06 00 00 6.......................]...\...
9160 4c 06 00 00 28 06 00 00 eb 05 00 00 ea 05 00 00 b6 05 00 00 79 05 00 00 72 05 00 00 71 05 00 00 L...(...............y...r...q...
9180 51 05 00 00 1c 05 00 00 1b 05 00 00 fa 04 00 00 e2 04 00 00 e1 04 00 00 e0 04 00 00 c7 04 00 00 Q...............................
91a0 9c 04 00 00 79 04 00 00 51 04 00 00 29 04 00 00 1d 04 00 00 1c 04 00 00 fb 03 00 00 e9 03 00 00 ....y...Q...)...................
91c0 c7 03 00 00 ab 03 00 00 aa 03 00 00 89 03 00 00 57 03 00 00 31 03 00 00 2a 03 00 00 29 03 00 00 ................W...1...*...)...
91e0 10 03 00 00 f0 02 00 00 b1 02 00 00 b0 02 00 00 7a 02 00 00 4c 02 00 00 37 02 00 00 36 02 00 00 ................z...L...7...6...
9200 35 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5...............................
9220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7b 2d 23 20 49 4e 4c 49 4e .......................{-#.INLIN
9240 45 20 73 6c 69 63 65 20 23 2d 7d 00 73 6c 69 63 65 20 73 74 61 72 74 20 6c 65 6e 20 3d 20 42 53 E.slice.#-}.slice.start.len.=.BS
9260 2e 74 61 6b 65 20 6c 65 6e 20 2e 20 42 53 2e 64 72 6f 70 20 73 74 61 72 74 00 73 6c 69 63 65 20 .take.len...BS.drop.start.slice.
9280 3a 3a 20 49 6e 74 20 2d 3e 20 49 6e 74 20 2d 3e 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 20 2d ::.Int.->.Int.->.BS.ByteString.-
92a0 3e 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 00 00 20 20 70 50 72 69 6e 74 20 20 50 69 65 63 65 >.BS.ByteString....pPrint..Piece
92c0 49 6e 66 6f 20 7b 2e 2e 7d 20 3d 20 22 50 69 65 63 65 20 73 69 7a 65 3a 20 22 20 3c 3e 20 69 6e Info.{..}.=."Piece.size:.".<>.in
92e0 74 20 70 69 50 69 65 63 65 4c 65 6e 67 74 68 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 20 t.piPieceLength.instance.Pretty.
9300 50 69 65 63 65 49 6e 66 6f 20 77 68 65 72 65 00 2d 2d 20 7c 20 48 61 73 68 65 73 20 61 72 65 20 PieceInfo.where.--.|.Hashes.are.
9320 6f 6d 69 74 74 65 64 2e 00 00 23 65 6e 64 69 66 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 3d omitted...#endif...fromBEncode.=
9340 20 66 72 6f 6d 44 69 63 74 20 67 65 74 50 69 65 63 65 49 6e 66 6f 00 20 20 74 6f 42 45 6e 63 6f .fromDict.getPieceInfo...toBEnco
9360 64 65 20 20 20 3d 20 74 6f 44 69 63 74 20 2e 20 28 60 70 75 74 50 69 65 63 65 49 6e 66 6f 60 20 de...=.toDict...(`putPieceInfo`.
9380 65 6e 64 44 69 63 74 29 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 50 69 65 63 65 49 endDict).instance.BEncode.PieceI
93a0 6e 66 6f 20 77 68 65 72 65 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 21 20 22 70 nfo.where................<*>!."p
93c0 69 65 63 65 73 22 00 20 20 20 20 50 69 65 63 65 49 6e 66 6f 20 3c 24 3e 21 20 22 70 69 65 63 65 ieces".....PieceInfo.<$>!."piece
93e0 20 6c 65 6e 67 74 68 22 00 67 65 74 50 69 65 63 65 49 6e 66 6f 20 3d 20 64 6f 00 67 65 74 50 69 .length".getPieceInfo.=.do.getPi
9400 65 63 65 49 6e 66 6f 20 3a 3a 20 42 45 2e 47 65 74 20 50 69 65 63 65 49 6e 66 6f 00 00 20 20 20 eceInfo.::.BE.Get.PieceInfo.....
9420 20 2e 3a 20 63 6f 6e 74 00 20 20 20 20 2e 3a 20 22 70 69 65 63 65 73 22 20 20 20 20 20 20 20 2e ..:.cont......:."pieces"........
9440 3d 21 20 70 69 50 69 65 63 65 48 61 73 68 65 73 00 20 20 20 20 20 20 20 22 70 69 65 63 65 20 6c =!.piPieceHashes........"piece.l
9460 65 6e 67 74 68 22 20 2e 3d 21 20 70 69 50 69 65 63 65 4c 65 6e 67 74 68 00 70 75 74 50 69 65 63 ength"..=!.piPieceLength.putPiec
9480 65 49 6e 66 6f 20 50 69 65 63 65 49 6e 66 6f 20 7b 2e 2e 7d 20 63 6f 6e 74 20 3d 00 70 75 74 50 eInfo.PieceInfo.{..}.cont.=.putP
94a0 69 65 63 65 49 6e 66 6f 20 3a 3a 20 44 61 74 61 2e 54 6f 72 72 65 6e 74 2e 50 75 74 20 50 69 65 ieceInfo.::.Data.Torrent.Put.Pie
94c0 63 65 49 6e 66 6f 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 ceInfo.#ifdef.VERSION_bencoding.
94e0 00 00 20 20 64 65 66 20 3d 20 50 69 65 63 65 49 6e 66 6f 20 31 20 64 65 66 00 69 6e 73 74 61 6e ....def.=.PieceInfo.1.def.instan
9500 63 65 20 44 65 66 61 75 6c 74 20 50 69 65 63 65 49 6e 66 6f 20 77 68 65 72 65 00 00 20 20 72 6e ce.Default.PieceInfo.where....rn
9520 66 20 28 50 69 65 63 65 49 6e 66 6f 20 61 20 28 48 61 73 68 4c 69 73 74 20 62 29 29 20 3d 20 72 f.(PieceInfo.a.(HashList.b)).=.r
9540 6e 66 20 61 20 60 73 65 71 60 20 72 6e 66 20 62 00 69 6e 73 74 61 6e 63 65 20 4e 46 44 61 74 61 nf.a.`seq`.rnf.b.instance.NFData
9560 20 50 69 65 63 65 49 6e 66 6f 20 77 68 65 72 65 00 00 23 65 6e 64 69 66 00 6d 61 6b 65 4c 65 6e .PieceInfo.where..#endif.makeLen
9580 73 65 73 46 6f 72 20 5b 28 22 70 69 50 69 65 63 65 48 61 73 68 65 73 22 2c 20 22 70 69 65 63 65 sesFor.[("piPieceHashes",."piece
95a0 48 61 73 68 65 73 22 29 5d 20 27 27 50 69 65 63 65 49 6e 66 6f 00 2d 2d 20 7c 20 43 6f 6e 63 61 Hashes")].''PieceInfo.--.|.Conca
95c0 74 65 6e 61 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 32 30 2d 62 79 74 65 20 53 48 41 31 20 68 61 73 tenation.of.all.20-byte.SHA1.has
95e0 68 20 76 61 6c 75 65 73 2e 00 00 6d 61 6b 65 4c 65 6e 73 65 73 46 6f 72 20 5b 28 22 70 69 50 69 h.values...makeLensesFor.[("piPi
9600 65 63 65 4c 65 6e 67 74 68 22 2c 20 22 70 69 65 63 65 4c 65 6e 67 74 68 22 29 5d 20 27 27 50 69 eceLength",."pieceLength")].''Pi
9620 65 63 65 49 6e 66 6f 00 2d 2d 20 7c 20 4e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 eceInfo.--.|.Number.of.bytes.in.
9640 65 61 63 68 20 70 69 65 63 65 2e 00 23 69 66 64 65 66 20 55 53 45 5f 6c 65 6e 73 00 00 20 20 7d each.piece..#ifdef.USE_lens....}
9660 20 64 65 72 69 76 69 6e 67 20 28 53 68 6f 77 2c 20 52 65 61 64 2c 20 45 71 2c 20 54 79 70 65 61 .deriving.(Show,.Read,.Eq,.Typea
9680 62 6c 65 29 00 20 20 20 20 2d 2d 20 5e 20 43 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 66 20 61 ble).....--.^.Concatenation.of.a
96a0 6c 6c 20 32 30 2d 62 79 74 65 20 53 48 41 31 20 68 61 73 68 20 76 61 6c 75 65 73 2e 00 20 20 2c ll.20-byte.SHA1.hash.values....,
96c0 20 70 69 50 69 65 63 65 48 61 73 68 65 73 20 20 3a 3a 20 21 48 61 73 68 4c 69 73 74 00 00 20 20 .piPieceHashes..::.!HashList....
96e0 20 20 2d 2d 20 5e 20 4e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 65 61 63 68 20 70 ..--.^.Number.of.bytes.in.each.p
9700 69 65 63 65 2e 00 20 20 7b 20 70 69 50 69 65 63 65 4c 65 6e 67 74 68 20 20 3a 3a 20 7b 2d 23 20 iece....{.piPieceLength..::.{-#.
9720 55 4e 50 41 43 4b 20 23 2d 7d 20 21 50 69 65 63 65 53 69 7a 65 00 64 61 74 61 20 50 69 65 63 65 UNPACK.#-}.!PieceSize.data.Piece
9740 49 6e 66 6f 20 3d 20 50 69 65 63 65 49 6e 66 6f 00 2d 2d 20 7c 20 50 61 72 74 20 6f 66 20 74 6f Info.=.PieceInfo.--.|.Part.of.to
9760 72 72 65 6e 74 20 66 69 6c 65 20 75 73 65 64 20 66 6f 72 20 74 6f 72 72 65 6e 74 20 63 6f 6e 74 rrent.file.used.for.torrent.cont
9780 65 6e 74 20 76 61 6c 69 64 61 74 69 6f 6e 2e 00 00 20 20 64 65 66 20 3d 20 48 61 73 68 4c 69 73 ent.validation.....def.=.HashLis
97a0 74 20 22 22 00 69 6e 73 74 61 6e 63 65 20 44 65 66 61 75 6c 74 20 48 61 73 68 4c 69 73 74 20 77 t."".instance.Default.HashList.w
97c0 68 65 72 65 00 2d 2d 20 7c 20 45 6d 70 74 79 20 68 61 73 68 20 6c 69 73 74 2e 00 00 20 20 20 20 here.--.|.Empty.hash.list.......
97e0 20 20 20 20 20 20 20 29 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 20 20 20 20 20 2c 20 42 45 6e .......).#endif............,.BEn
9800 63 6f 64 65 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 20 20 code.#ifdef.VERSION_bencoding...
9820 64 65 72 69 76 69 6e 67 20 28 20 53 68 6f 77 2c 20 52 65 61 64 2c 20 45 71 2c 20 54 79 70 65 61 deriving.(.Show,.Read,.Eq,.Typea
9840 62 6c 65 00 6e 65 77 74 79 70 65 20 48 61 73 68 4c 69 73 74 20 3d 20 48 61 73 68 4c 69 73 74 20 ble.newtype.HashList.=.HashList.
9860 7b 20 75 6e 48 61 73 68 4c 69 73 74 20 3a 3a 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 20 7d 00 {.unHashList.::.BS.ByteString.}.
9880 2d 2d 20 7c 20 41 20 66 6c 61 74 20 61 72 72 61 79 20 6f 66 20 53 48 41 31 20 68 61 73 68 20 66 --.|.A.flat.array.of.SHA1.hash.f
98a0 6f 72 20 65 61 63 68 20 70 69 65 63 65 2e 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d or.each.piece...----------------
98c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
98e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 50 69 65 63 -----------------------}.--.Piec
9900 65 20 63 6f 6e 74 72 6f 6c 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d e.control.{---------------------
9920 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9940 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 68 61 73 68 50 69 65 63 65 20 50 69 ------------------..hashPiece.Pi
9960 65 63 65 20 7b 2e 2e 7d 20 3d 20 42 79 74 65 73 2e 63 6f 6e 76 65 72 74 20 28 68 61 73 68 6c 61 ece.{..}.=.Bytes.convert.(hashla
9980 7a 79 20 70 69 65 63 65 44 61 74 61 20 3a 3a 20 44 69 67 65 73 74 20 53 48 41 31 29 00 68 61 73 zy.pieceData.::.Digest.SHA1).has
99a0 68 50 69 65 63 65 20 3a 3a 20 50 69 65 63 65 20 42 4c 2e 42 79 74 65 53 74 72 69 6e 67 20 2d 3e hPiece.::.Piece.BL.ByteString.->
99c0 20 50 69 65 63 65 48 61 73 68 00 2d 2d 20 7c 20 47 65 74 20 70 69 65 63 65 20 68 61 73 68 2e 00 .PieceHash.--.|.Get.piece.hash..
99e0 00 70 69 65 63 65 53 69 7a 65 20 50 69 65 63 65 20 7b 2e 2e 7d 20 3d 20 66 72 6f 6d 49 6e 74 65 .pieceSize.Piece.{..}.=.fromInte
9a00 67 72 61 6c 20 28 42 4c 2e 6c 65 6e 67 74 68 20 70 69 65 63 65 44 61 74 61 29 00 70 69 65 63 65 gral.(BL.length.pieceData).piece
9a20 53 69 7a 65 20 3a 3a 20 50 69 65 63 65 20 42 4c 2e 42 79 74 65 53 74 72 69 6e 67 20 2d 3e 20 50 Size.::.Piece.BL.ByteString.->.P
9a40 69 65 63 65 53 69 7a 65 00 2d 2d 20 7c 20 47 65 74 20 73 69 7a 65 20 6f 66 20 70 69 65 63 65 20 ieceSize.--.|.Get.size.of.piece.
9a60 69 6e 20 62 79 74 65 73 2e 00 00 20 20 70 50 72 69 6e 74 20 50 69 65 63 65 20 7b 2e 2e 7d 20 3d in.bytes.....pPrint.Piece.{..}.=
9a80 20 22 50 69 65 63 65 22 20 3c 2b 3e 20 62 72 61 63 65 73 20 28 22 69 6e 64 65 78 22 20 3c 2b 3e ."Piece".<+>.braces.("index".<+>
9aa0 20 22 3d 22 20 3c 2b 3e 20 69 6e 74 20 70 69 65 63 65 49 6e 64 65 78 29 00 69 6e 73 74 61 6e 63 ."=".<+>.int.pieceIndex).instanc
9ac0 65 20 50 72 65 74 74 79 20 28 50 69 65 63 65 20 61 29 20 77 68 65 72 65 00 2d 2d 20 7c 20 50 61 e.Pretty.(Piece.a).where.--.|.Pa
9ae0 79 6c 6f 61 64 20 62 79 74 65 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 00 00 20 20 72 6e 66 20 yload.bytes.are.omitted.....rnf.
9b00 28 50 69 65 63 65 20 61 20 62 29 20 3d 20 72 6e 66 20 61 20 60 73 65 71 60 20 72 6e 66 20 62 00 (Piece.a.b).=.rnf.a.`seq`.rnf.b.
9b20 69 6e 73 74 61 6e 63 65 20 4e 46 44 61 74 61 20 61 20 3d 3e 20 4e 46 44 61 74 61 20 28 50 69 65 instance.NFData.a.=>.NFData.(Pie
9b40 63 65 20 61 29 20 77 68 65 72 65 00 00 20 20 7d 20 64 65 72 69 76 69 6e 67 20 28 53 68 6f 77 2c ce.a).where....}.deriving.(Show,
9b60 20 52 65 61 64 2c 20 45 71 2c 20 46 75 6e 63 74 6f 72 2c 20 54 79 70 65 61 62 6c 65 29 00 20 20 .Read,.Eq,.Functor,.Typeable)...
9b80 2c 20 70 69 65 63 65 44 61 74 61 20 20 3a 3a 20 21 61 00 20 20 20 20 2d 2d 20 7c 20 50 61 79 6c ,.pieceData..::.!a.....--.|.Payl
9ba0 6f 61 64 2e 00 00 20 20 20 20 70 69 65 63 65 49 6e 64 65 78 20 3a 3a 20 7b 2d 23 20 55 4e 50 41 oad.......pieceIndex.::.{-#.UNPA
9bc0 43 4b 20 23 2d 7d 20 21 50 69 65 63 65 49 78 00 20 20 7b 20 2d 2d 20 7c 20 5a 65 72 6f 2d 62 61 CK.#-}.!PieceIx...{.--.|.Zero-ba
9be0 73 65 64 20 70 69 65 63 65 20 69 6e 64 65 78 20 69 6e 20 74 6f 72 72 65 6e 74 2e 00 64 61 74 61 sed.piece.index.in.torrent..data
9c00 20 50 69 65 63 65 20 61 20 3d 20 50 69 65 63 65 00 2d 2d 20 7c 20 50 69 65 63 65 20 70 61 79 6c .Piece.a.=.Piece.--.|.Piece.payl
9c20 6f 61 64 20 73 68 6f 75 6c 64 20 62 65 20 73 74 72 69 63 74 20 6f 72 20 6c 61 7a 79 20 62 79 74 oad.should.be.strict.or.lazy.byt
9c40 65 73 74 72 69 6e 67 2e 00 2d 2d 20 54 4f 44 4f 20 63 68 65 63 6b 20 69 66 20 70 69 65 63 65 4c estring..--.TODO.check.if.pieceL
9c60 65 6e 67 74 68 20 69 73 20 70 6f 77 65 72 20 6f 66 20 32 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 ength.is.power.of.2..{-#.INLINE.
9c80 68 61 73 68 73 69 7a 65 20 23 2d 7d 00 68 61 73 68 73 69 7a 65 20 3d 20 32 30 00 68 61 73 68 73 hashsize.#-}.hashsize.=.20.hashs
9ca0 69 7a 65 20 3a 3a 20 49 6e 74 00 00 74 79 70 65 20 50 69 65 63 65 48 61 73 68 20 3d 20 42 53 2e ize.::.Int..type.PieceHash.=.BS.
9cc0 42 79 74 65 53 74 72 69 6e 67 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ByteString..--------------------
9ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9d00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 50 69 65 63 65 20 64 61 -------------------}.--.Piece.da
9d20 74 61 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ta.{----------------------------
9d40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 20 20 70 63 20 3d 20 66 72 6f 6d 49 6e 74 65 67 72 -----------......pc.=.fromIntegr
9d80 61 6c 20 28 78 20 60 64 69 76 60 20 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 6f 70 74 69 6d 61 6c al.(x.`div`.fromIntegral.optimal
9da0 50 69 65 63 65 43 6f 75 6e 74 29 00 20 20 77 68 65 72 65 00 64 65 66 61 75 6c 74 50 69 65 63 65 PieceCount)...where.defaultPiece
9dc0 53 69 7a 65 20 78 20 3d 20 6d 61 78 20 6d 69 6e 50 69 65 63 65 53 69 7a 65 20 24 20 6d 69 6e 20 Size.x.=.max.minPieceSize.$.min.
9de0 6d 61 78 50 69 65 63 65 53 69 7a 65 20 24 20 74 6f 50 6f 77 32 20 70 63 00 64 65 66 61 75 6c 74 maxPieceSize.$.toPow2.pc.default
9e00 50 69 65 63 65 53 69 7a 65 20 3a 3a 20 49 6e 74 36 34 20 2d 3e 20 49 6e 74 00 2d 2d 20 7c 20 46 PieceSize.::.Int64.->.Int.--.|.F
9e20 69 6e 64 20 74 68 65 20 6f 70 74 69 6d 61 6c 20 70 69 65 63 65 20 73 69 7a 65 20 66 6f 72 20 61 ind.the.optimal.piece.size.for.a
9e40 20 67 69 76 65 6e 20 74 6f 72 72 65 6e 74 20 73 69 7a 65 2e 00 00 23 65 6e 64 69 66 00 74 6f 50 .given.torrent.size...#endif.toP
9e60 6f 77 32 20 78 20 3d 20 62 69 74 20 24 20 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 28 63 6f 75 6e ow2.x.=.bit.$.fromIntegral.(coun
9e80 74 4c 65 61 64 69 6e 67 5a 65 72 6f 73 20 28 30 20 3a 3a 20 49 6e 74 29 20 2d 20 63 6f 75 6e 74 tLeadingZeros.(0.::.Int).-.count
9ea0 4c 65 61 64 69 6e 67 5a 65 72 6f 73 20 78 29 00 2d 2d 20 62 61 73 65 20 3e 3d 20 34 2e 38 2e 30 LeadingZeros.x).--.base.>=.4.8.0
9ec0 2e 30 00 23 65 6c 73 65 00 74 6f 50 6f 77 32 20 78 20 3d 20 62 69 74 20 24 20 66 72 6f 6d 49 6e .0.#else.toPow2.x.=.bit.$.fromIn
9ee0 74 65 67 72 61 6c 20 28 6c 65 61 64 69 6e 67 5a 65 72 6f 73 20 28 30 20 3a 3a 20 49 6e 74 29 20 tegral.(leadingZeros.(0.::.Int).
9f00 2d 20 6c 65 61 64 69 6e 67 5a 65 72 6f 73 20 78 29 00 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e -.leadingZeros.x).#ifdef.VERSION
9f20 5f 62 69 74 73 5f 65 78 74 72 61 73 00 74 6f 50 6f 77 32 20 3a 3a 20 49 6e 74 20 2d 3e 20 49 6e _bits_extras.toPow2.::.Int.->.In
9f40 74 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 6d 61 78 50 69 65 63 65 53 69 7a 65 20 23 2d 7d 00 6d t..{-#.INLINE.maxPieceSize.#-}.m
9f60 61 78 50 69 65 63 65 53 69 7a 65 20 3d 20 34 20 2a 20 31 30 32 34 20 2a 20 31 30 32 34 00 6d 61 axPieceSize.=.4.*.1024.*.1024.ma
9f80 78 50 69 65 63 65 53 69 7a 65 20 3a 3a 20 49 6e 74 00 2d 2d 20 76 61 6c 75 65 2e 00 2d 2d 20 7c xPieceSize.::.Int.--.value..--.|
9fa0 20 54 6f 20 70 72 65 76 65 6e 74 20 74 72 61 6e 73 66 65 72 20 64 65 67 72 61 64 61 74 69 6f 6e .To.prevent.transfer.degradation
9fc0 20 70 69 65 63 65 20 73 69 7a 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 65 78 63 65 65 64 20 74 68 .piece.size.should.not.exceed.th
9fe0 69 73 00 00 7b 2d 23 20 49 4e 4c 49 4e 45 20 6d 69 6e 50 69 65 63 65 53 69 7a 65 20 23 2d 7d 00 is..{-#.INLINE.minPieceSize.#-}.
a000 61 64 00 00 14 00 00 00 e8 01 00 00 00 10 00 00 6e 00 00 00 00 00 00 00 db 0f 00 00 da 0f 00 00 ad..............n...............
a020 bb 0f 00 00 a2 0f 00 00 87 0f 00 00 6b 0f 00 00 50 0f 00 00 4f 0f 00 00 06 0f 00 00 f5 0e 00 00 ............k...P...O...........
a040 ac 0e 00 00 88 0e 00 00 87 0e 00 00 5f 0e 00 00 48 0e 00 00 26 0e 00 00 05 0e 00 00 04 0e 00 00 ............_...H...&...........
a060 de 0d 00 00 a9 0d 00 00 a2 0d 00 00 62 0d 00 00 61 0d 00 00 3e 0d 00 00 13 0d 00 00 12 0d 00 00 ............b...a...>...........
a080 ef 0c 00 00 a9 0c 00 00 a8 0c 00 00 80 0c 00 00 41 0c 00 00 40 0c 00 00 1d 0c 00 00 d9 0b 00 00 ................A...@...........
a0a0 a2 0b 00 00 a1 0b 00 00 82 0b 00 00 5b 0b 00 00 5a 0b 00 00 28 0b 00 00 e8 0a 00 00 a3 0a 00 00 ............[...Z...(...........
a0c0 64 0a 00 00 22 0a 00 00 1b 0a 00 00 d7 09 00 00 92 09 00 00 6d 09 00 00 6c 09 00 00 4a 09 00 00 d..."...............m...l...J...
a0e0 0b 09 00 00 cd 08 00 00 99 08 00 00 98 08 00 00 76 08 00 00 4a 08 00 00 05 08 00 00 ce 07 00 00 ................v...J...........
a100 aa 07 00 00 a9 07 00 00 99 07 00 00 8b 07 00 00 65 07 00 00 3f 07 00 00 19 07 00 00 f3 06 00 00 ................e...?...........
a120 cd 06 00 00 a7 06 00 00 81 06 00 00 5b 06 00 00 35 06 00 00 0f 06 00 00 0b 06 00 00 ff 05 00 00 ............[...5...............
a140 f8 05 00 00 f7 05 00 00 d9 05 00 00 b6 05 00 00 b5 05 00 00 9c 05 00 00 82 05 00 00 67 05 00 00 ............................g...
a160 29 05 00 00 0e 05 00 00 0d 05 00 00 c1 04 00 00 7c 04 00 00 5f 04 00 00 5e 04 00 00 44 04 00 00 )...............|..._...^...D...
a180 2d 04 00 00 2c 04 00 00 12 04 00 00 f1 03 00 00 c0 03 00 00 8b 03 00 00 52 03 00 00 51 03 00 00 -...,...................R...Q...
a1a0 34 03 00 00 02 03 00 00 e1 02 00 00 b4 02 00 00 b1 02 00 00 7d 02 00 00 5c 02 00 00 2f 02 00 00 4...................}...\.../...
a1c0 2c 02 00 00 2b 02 00 00 0c 02 00 00 e8 01 00 00 e7 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,...+...........................
a1e0 00 00 00 00 00 00 00 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 54 6f 72 72 65 6e 74 20 7b 2e 2e 7d ..........toBEncode.Torrent.{..}
a200 20 3d 20 74 6f 44 69 63 74 20 24 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 54 6f 72 .=.toDict.$.instance.BEncode.Tor
a220 72 65 6e 74 20 77 68 65 72 65 00 00 2d 7d 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 76 20 3d rent.where..-}...fromBEncode.v.=
a240 20 54 2e 75 6e 70 61 63 6b 20 3c 24 3e 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 76 00 20 20 74 6f .T.unpack.<$>.fromBEncode.v...to
a260 42 45 6e 63 6f 64 65 20 3d 20 74 6f 42 45 6e 63 6f 64 65 20 2e 20 54 2e 70 61 63 6b 00 69 6e 73 BEncode.=.toBEncode...T.pack.ins
a280 74 61 6e 63 65 20 7b 2d 23 20 4f 56 45 52 4c 41 50 50 49 4e 47 20 23 2d 7d 20 42 45 6e 63 6f 64 tance.{-#.OVERLAPPING.#-}.BEncod
a2a0 65 20 48 6f 73 74 4e 61 6d 65 20 77 68 65 72 65 00 7b 2d 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 e.HostName.where.{-...fromBEncod
a2c0 65 20 76 20 3d 20 54 2e 75 6e 70 61 63 6b 20 3c 24 3e 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 76 e.v.=.T.unpack.<$>.fromBEncode.v
a2e0 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 3d 20 74 6f 42 45 6e 63 6f 64 65 20 2e 20 54 2e 70 61 63 ...toBEncode.=.toBEncode...T.pac
a300 6b 00 69 6e 73 74 61 6e 63 65 20 7b 2d 23 20 4f 56 45 52 4c 41 50 50 49 4e 47 20 23 2d 7d 20 42 k.instance.{-#.OVERLAPPING.#-}.B
a320 45 6e 63 6f 64 65 20 53 74 72 69 6e 67 20 77 68 65 72 65 00 2d 2d 20 54 4f 44 4f 20 74 6f 20 62 Encode.String.where.--.TODO.to.b
a340 65 6e 63 6f 64 69 6e 67 20 70 61 63 6b 61 67 65 00 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 encoding.package....fromBEncode.
a360 5f 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 64 65 63 6f 64 69 6e 67 45 72 72 6f 72 20 24 20 22 _............=.decodingError.$."
a380 50 4f 53 49 58 54 69 6d 65 22 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 28 42 49 6e 74 65 67 POSIXTime"...fromBEncode.(BInteg
a3a0 65 72 20 69 29 20 3d 20 72 65 74 75 72 6e 20 24 20 66 72 6f 6d 49 6e 74 65 67 72 61 6c 20 69 00 er.i).=.return.$.fromIntegral.i.
a3c0 20 20 74 6f 42 45 6e 63 6f 64 65 20 70 74 20 3d 20 74 6f 42 45 6e 63 6f 64 65 20 28 66 6c 6f 6f ..toBEncode.pt.=.toBEncode.(floo
a3e0 72 20 70 74 20 3a 3a 20 49 6e 74 65 67 65 72 29 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 r.pt.::.Integer).instance.BEncod
a400 65 20 50 4f 53 49 58 54 69 6d 65 20 77 68 65 72 65 00 2d 2d 20 54 4f 44 4f 20 6d 6f 76 65 20 74 e.POSIXTime.where.--.TODO.move.t
a420 6f 20 62 65 6e 63 6f 64 69 6e 67 00 00 2d 2d 70 69 63 6f 32 75 6e 69 20 3d 20 75 6e 64 65 66 69 o.bencoding..--pico2uni.=.undefi
a440 6e 65 64 00 2d 2d 70 69 63 6f 32 75 6e 69 20 3a 3a 20 50 69 63 6f 20 2d 3e 20 55 6e 69 00 00 20 ned.--pico2uni.::.Pico.->.Uni...
a460 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 23 2d 7d 00 20 20 66 72 .{-#.INLINE.fromBEncode.#-}...fr
a480 6f 6d 42 45 6e 63 6f 64 65 20 62 20 20 20 20 20 20 20 20 20 20 20 3d 20 64 65 63 6f 64 69 6e 67 omBEncode.b...........=.decoding
a4a0 45 72 72 6f 72 20 24 20 22 75 72 6c 20 3c 22 20 2b 2b 20 73 68 6f 77 20 62 20 2b 2b 20 22 3e 22 Error.$."url.<".++.show.b.++.">"
a4c0 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 28 42 53 74 72 69 6e 67 20 73 29 20 7c 20 4a 75 73 ...fromBEncode.(BString.s).|.Jus
a4e0 74 20 75 72 6c 20 3c 2d 20 70 61 72 73 65 55 52 49 20 28 42 43 2e 75 6e 70 61 63 6b 20 73 29 20 t.url.<-.parseURI.(BC.unpack.s).
a500 3d 20 72 65 74 75 72 6e 20 75 72 6c 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 74 6f 42 45 6e =.return.url....{-#.INLINE.toBEn
a520 63 6f 64 65 20 23 2d 7d 00 20 20 74 6f 42 45 6e 63 6f 64 65 20 75 72 69 20 3d 20 74 6f 42 45 6e code.#-}...toBEncode.uri.=.toBEn
a540 63 6f 64 65 20 28 42 43 2e 70 61 63 6b 20 28 75 72 69 54 6f 53 74 72 69 6e 67 20 69 64 20 75 72 code.(BC.pack.(uriToString.id.ur
a560 69 20 22 22 29 29 00 69 6e 73 74 61 6e 63 65 20 42 45 6e 63 6f 64 65 20 55 52 49 20 77 68 65 72 i."")).instance.BEncode.URI.wher
a580 65 00 2d 2d 20 54 4f 44 4f 20 6d 6f 76 65 20 74 6f 20 62 65 6e 63 6f 64 69 6e 67 00 23 69 66 64 e.--.TODO.move.to.bencoding.#ifd
a5a0 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 20 20 72 6e 66 20 54 6f 72 72 ef.VERSION_bencoding....rnf.Torr
a5c0 65 6e 74 20 7b 2e 2e 7d 20 3d 20 72 6e 66 20 74 49 6e 66 6f 44 69 63 74 00 69 6e 73 74 61 6e 63 ent.{..}.=.rnf.tInfoDict.instanc
a5e0 65 20 4e 46 44 61 74 61 20 54 6f 72 72 65 6e 74 20 77 68 65 72 65 00 00 23 65 6e 64 69 66 00 20 e.NFData.Torrent.where..#endif..
a600 20 27 27 54 6f 72 72 65 6e 74 00 20 20 5d 00 20 20 2c 20 28 22 74 53 69 67 6e 61 74 75 72 65 22 .''Torrent...]...,.("tSignature"
a620 20 20 20 2c 20 22 73 69 67 6e 61 74 75 72 65 22 20 20 20 29 00 20 20 2c 20 28 22 74 50 75 62 6c ...,."signature"...)...,.("tPubl
a640 69 73 68 65 72 55 52 4c 22 2c 20 22 70 75 62 6c 69 73 68 65 72 55 52 4c 22 29 00 20 20 2c 20 28 isherURL",."publisherURL")...,.(
a660 22 74 50 75 62 6c 69 73 68 65 72 22 20 20 20 2c 20 22 70 75 62 6c 69 73 68 65 72 22 20 20 20 29 "tPublisher"...,."publisher"...)
a680 00 20 20 2c 20 28 22 74 49 6e 66 6f 44 69 63 74 22 20 20 20 20 2c 20 22 69 6e 66 6f 44 69 63 74 ...,.("tInfoDict"....,."infoDict
a6a0 22 20 20 20 20 29 00 20 20 2c 20 28 22 74 45 6e 63 6f 64 69 6e 67 22 20 20 20 20 2c 20 22 65 6e "....)...,.("tEncoding"....,."en
a6c0 63 6f 64 69 6e 67 22 20 20 20 20 29 00 20 20 2c 20 28 22 74 43 72 65 61 74 69 6f 6e 44 61 74 65 coding"....)...,.("tCreationDate
a6e0 22 2c 20 22 63 72 65 61 74 69 6f 6e 44 61 74 65 22 29 00 20 20 2c 20 28 22 74 43 72 65 61 74 65 ",."creationDate")...,.("tCreate
a700 64 42 79 22 20 20 20 2c 20 22 63 72 65 61 74 65 64 42 79 22 20 20 20 29 00 20 20 2c 20 28 22 74 dBy"...,."createdBy"...)...,.("t
a720 43 6f 6d 6d 65 6e 74 22 20 20 20 20 20 2c 20 22 63 6f 6d 6d 65 6e 74 22 20 20 20 20 20 29 00 20 Comment".....,."comment".....)..
a740 20 2c 20 28 22 74 41 6e 6e 6f 75 6e 63 65 4c 69 73 74 22 2c 20 22 61 6e 6e 6f 75 6e 63 65 4c 69 .,.("tAnnounceList",."announceLi
a760 73 74 22 29 00 20 20 5b 20 28 22 74 41 6e 6e 6f 75 6e 63 65 22 20 20 20 20 2c 20 22 61 6e 6e 6f st")...[.("tAnnounce"....,."anno
a780 75 6e 63 65 22 20 20 20 20 29 00 6d 61 6b 65 4c 65 6e 73 65 73 46 6f 72 00 23 69 66 64 65 66 20 unce"....).makeLensesFor.#ifdef.
a7a0 55 53 45 5f 6c 65 6e 73 00 00 20 20 20 20 7d 20 64 65 72 69 76 69 6e 67 20 28 53 68 6f 77 2c 20 USE_lens......}.deriving.(Show,.
a7c0 45 71 2c 20 54 79 70 65 61 62 6c 65 29 00 20 20 20 20 2d 2d 20 20 20 65 6e 63 72 79 70 74 65 64 Eq,.Typeable).....--...encrypted
a7e0 20 53 48 41 2d 31 20 68 61 73 68 20 6f 66 20 74 68 65 20 69 6e 66 6f 20 64 69 63 74 69 6f 6e 61 .SHA-1.hash.of.the.info.dictiona
a800 72 79 29 2e 00 20 20 20 20 2d 2d 20 5e 20 54 68 65 20 52 53 41 20 73 69 67 6e 61 74 75 72 65 20 ry)......--.^.The.RSA.signature.
a820 6f 66 20 74 68 65 20 69 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 20 28 73 70 65 63 69 66 69 63 of.the.info.dictionary.(specific
a840 61 6c 6c 79 2c 20 74 68 65 00 20 20 2c 20 74 53 69 67 6e 61 74 75 72 65 20 20 20 20 3a 3a 20 21 ally,.the...,.tSignature....::.!
a860 28 4d 61 79 62 65 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 29 00 20 20 2c 20 74 50 75 62 6c 69 (Maybe.BS.ByteString)...,.tPubli
a880 73 68 65 72 55 52 4c 20 3a 3a 20 21 28 4d 61 79 62 65 20 55 52 49 29 00 00 20 20 20 20 2d 2d 20 sherURL.::.!(Maybe.URI)......--.
a8a0 61 75 74 68 6f 72 69 74 79 20 74 6f 20 61 6c 6c 6f 77 20 6e 65 77 20 70 65 65 72 73 20 6f 6e 74 authority.to.allow.new.peers.ont
a8c0 6f 20 74 68 65 20 73 77 61 72 6d 2e 00 20 20 20 20 2d 2d 20 74 6f 72 72 65 6e 74 2e 20 20 50 72 o.the.swarm......--.torrent...Pr
a8e0 69 76 61 74 65 20 63 6f 75 6e 74 65 72 70 61 72 74 20 6f 66 20 74 68 69 73 20 6b 65 79 20 74 68 ivate.counterpart.of.this.key.th
a900 61 74 20 68 61 73 20 74 68 65 00 20 20 20 20 2d 2d 20 5e 20 43 6f 6e 74 61 69 6e 69 6e 67 20 74 at.has.the.....--.^.Containing.t
a920 68 65 20 52 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 6f 66 20 74 68 65 20 70 75 62 6c 69 73 68 he.RSA.public.key.of.the.publish
a940 65 72 20 6f 66 20 74 68 65 00 20 20 2c 20 74 50 75 62 6c 69 73 68 65 72 20 20 20 20 3a 3a 20 21 er.of.the...,.tPublisher....::.!
a960 28 4d 61 79 62 65 20 55 52 49 29 00 00 20 20 20 20 2d 2d 20 75 73 65 20 64 69 66 66 65 72 65 6e (Maybe.URI)......--.use.differen
a980 74 20 62 6f 6f 74 73 74 72 61 70 20 6e 6f 64 65 2e 00 20 20 20 20 2d 2d 20 74 68 69 73 20 6c 69 t.bootstrap.node......--.this.li
a9a0 73 74 20 62 65 63 61 75 73 65 20 64 69 66 66 65 72 65 6e 74 20 62 69 74 74 6f 72 72 65 6e 74 20 st.because.different.bittorrent.
a9c0 73 6f 66 74 77 61 72 65 20 6d 61 79 20 70 72 65 66 65 72 20 74 6f 00 20 20 20 20 2d 2d 20 50 6c software.may.prefer.to.....--.Pl
a9e0 65 61 73 65 20 64 6f 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 64 64 20 5c 22 ease.do.not.automatically.add.\"
aa00 72 6f 75 74 65 72 2e 62 69 74 74 6f 72 72 65 6e 74 2e 63 6f 6d 5c 22 20 74 6f 00 20 20 20 20 2d router.bittorrent.com\".to.....-
aa20 2d 00 20 20 20 20 2d 2d 20 73 75 63 68 20 61 73 20 6f 6e 65 20 6f 70 65 72 61 74 65 64 20 62 79 -.....--.such.as.one.operated.by
aa40 20 74 68 65 20 70 65 72 73 6f 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 74 68 65 20 74 6f 72 72 65 .the.person.generating.the.torre
aa60 6e 74 2e 00 20 20 20 20 2d 2d 20 6b 65 79 20 63 6f 75 6c 64 20 62 65 20 73 65 74 20 74 6f 20 61 nt......--.key.could.be.set.to.a
aa80 20 6b 6e 6f 77 6e 20 67 6f 6f 64 20 27 4e 65 74 77 6f 72 6b 2e 41 64 64 72 65 73 73 2e 4e 6f 64 .known.good.'Network.Address.Nod
aaa0 65 27 00 20 20 20 20 2d 2d 20 74 6f 72 72 65 6e 74 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6c 69 e'.....--.torrent.generating.cli
aac0 65 6e 74 27 73 20 72 6f 75 74 69 6e 67 20 74 61 62 6c 65 2e 20 41 6c 74 65 72 6e 61 74 69 76 65 ent's.routing.table..Alternative
aae0 6c 79 2c 20 74 68 65 00 20 20 20 20 2d 2d 20 5e 20 54 68 69 73 20 6b 65 79 20 73 68 6f 75 6c 64 ly,.the.....--.^.This.key.should
ab00 20 62 65 20 73 65 74 20 74 6f 20 74 68 65 20 2f 4b 20 63 6c 6f 73 65 73 74 2f 20 6e 6f 64 65 73 .be.set.to.the./K.closest/.nodes
ab20 20 69 6e 20 74 68 65 00 20 20 2c 20 74 4e 6f 64 65 73 20 20 20 20 20 20 20 20 3a 3a 20 21 28 4d .in.the...,.tNodes........::.!(M
ab40 61 79 62 65 20 5b 4e 6f 64 65 41 64 64 72 20 48 6f 73 74 4e 61 6d 65 5d 29 00 00 20 20 20 20 2d aybe.[NodeAddr.HostName])......-
ab60 2d 20 5e 20 49 6e 66 6f 20 61 62 6f 75 74 20 65 61 63 68 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 -.^.Info.about.each.content.file
ab80 2e 00 20 20 2c 20 74 49 6e 66 6f 44 69 63 74 20 20 20 20 20 3a 3a 20 21 49 6e 66 6f 44 69 63 74 ....,.tInfoDict.....::.!InfoDict
aba0 00 00 20 20 20 20 2d 2d 20 20 20 74 68 65 20 69 6e 66 6f 20 64 69 63 74 69 6f 6e 61 72 79 20 69 ......--...the.info.dictionary.i
abc0 6e 20 74 68 65 20 2e 74 6f 72 72 65 6e 74 20 6d 65 74 61 66 69 6c 65 2e 00 20 20 20 20 2d 2d 20 n.the..torrent.metafile......--.
abe0 5e 20 53 74 72 69 6e 67 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 6d 61 74 20 75 73 65 64 20 74 6f ^.String.encoding.format.used.to
ac00 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 70 69 65 63 65 73 20 70 61 72 74 20 6f 66 00 20 20 2c .generate.the.pieces.part.of...,
ac20 20 74 45 6e 63 6f 64 69 6e 67 20 20 20 20 20 3a 3a 20 21 28 4d 61 79 62 65 20 54 65 78 74 29 00 .tEncoding.....::.!(Maybe.Text).
ac40 00 20 20 20 20 2d 2d 20 5e 20 43 72 65 61 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65 20 74 .....--.^.Creation.time.of.the.t
ac60 6f 72 72 65 6e 74 2c 20 69 6e 20 73 74 61 6e 64 61 72 64 20 55 4e 49 58 20 65 70 6f 63 68 2e 00 orrent,.in.standard.UNIX.epoch..
ac80 20 20 2c 20 74 43 72 65 61 74 69 6f 6e 44 61 74 65 20 3a 3a 20 21 28 4d 61 79 62 65 20 50 4f 53 ..,.tCreationDate.::.!(Maybe.POS
aca0 49 58 54 69 6d 65 29 00 00 20 20 20 20 2d 2d 20 5e 20 4e 61 6d 65 20 61 6e 64 20 76 65 72 73 69 IXTime)......--.^.Name.and.versi
acc0 6f 6e 20 6f 66 20 74 68 65 20 70 72 6f 67 72 61 6d 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 on.of.the.program.used.to.create
ace0 20 74 68 65 20 2e 74 6f 72 72 65 6e 74 2e 00 20 20 2c 20 74 43 72 65 61 74 65 64 42 79 20 20 20 .the..torrent....,.tCreatedBy...
ad00 20 3a 3a 20 21 28 4d 61 79 62 65 20 54 65 78 74 29 00 00 20 20 20 20 2d 2d 20 5e 20 46 72 65 65 .::.!(Maybe.Text)......--.^.Free
ad20 2d 66 6f 72 6d 20 63 6f 6d 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 2e 00 20 20 -form.comments.of.the.author....
ad40 2c 20 74 43 6f 6d 6d 65 6e 74 20 20 20 20 20 20 3a 3a 20 21 28 4d 61 79 62 65 20 54 65 78 74 29 ,.tComment......::.!(Maybe.Text)
ad60 00 00 20 20 20 20 2d 2d 20 20 20 42 45 50 20 31 32 3a 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 62 ......--...BEP.12:.<http://www.b
ad80 69 74 74 6f 72 72 65 6e 74 2e 6f 72 67 2f 62 65 70 73 2f 62 65 70 5f 30 30 31 32 2e 68 74 6d 6c ittorrent.org/beps/bep_0012.html
ada0 3e 00 20 20 20 20 2d 2d 00 20 20 20 20 2d 2d 20 5e 20 41 6e 6e 6f 75 6e 63 65 20 6c 69 73 74 20 >.....--.....--.^.Announce.list.
adc0 61 64 64 20 6d 75 6c 74 69 70 6c 65 20 74 72 61 63 6b 65 72 20 73 75 70 70 6f 72 74 2e 00 20 20 add.multiple.tracker.support....
ade0 2c 20 74 41 6e 6e 6f 75 6e 63 65 4c 69 73 74 20 3a 3a 20 21 28 4d 61 79 62 65 20 5b 5b 55 52 49 ,.tAnnounceList.::.!(Maybe.[[URI
ae00 5d 5d 29 00 00 20 20 20 20 2d 2d 20 5e 20 54 68 65 20 55 52 4c 20 6f 66 20 74 68 65 20 74 72 61 ]])......--.^.The.URL.of.the.tra
ae20 63 6b 65 72 2e 00 20 20 7b 20 74 41 6e 6e 6f 75 6e 63 65 20 20 20 20 20 3a 3a 20 21 28 4d 61 79 cker....{.tAnnounce.....::.!(May
ae40 62 65 20 55 52 49 29 00 64 61 74 61 20 54 6f 72 72 65 6e 74 20 3d 20 54 6f 72 72 65 6e 74 00 2d be.URI).data.Torrent.=.Torrent.-
ae60 2d 20 7c 20 4d 65 74 61 69 6e 66 6f 20 61 62 6f 75 74 20 70 61 72 74 69 63 75 6c 61 72 20 74 6f -.|.Metainfo.about.particular.to
ae80 72 72 65 6e 74 2e 00 00 2d 2d 20 54 4f 44 4f 20 61 64 64 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 rrent...--.TODO.add.torrent.file
aea0 20 76 61 6c 69 64 61 74 69 6f 6e 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .validation.--------------------
aec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
aee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d 2d 20 20 54 6f 72 72 65 6e 74 -------------------}.--..Torrent
af00 20 69 6e 66 6f 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .info.{-------------------------
af20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
af40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 20 20 70 70 50 72 69 76 61 63 79 20 20 20 --------------......ppPrivacy...
af60 20 69 64 50 72 69 76 61 74 65 00 20 20 20 20 70 50 72 69 6e 74 20 20 69 64 50 69 65 63 65 49 6e .idPrivate.....pPrint..idPieceIn
af80 66 6f 20 20 24 24 00 20 20 20 20 70 50 72 69 6e 74 20 69 64 4c 61 79 6f 75 74 49 6e 66 6f 20 24 fo..$$.....pPrint.idLayoutInfo.$
afa0 24 00 20 20 70 50 72 69 6e 74 20 49 6e 66 6f 44 69 63 74 20 7b 2e 2e 7d 20 3d 00 69 6e 73 74 61 $...pPrint.InfoDict.{..}.=.insta
afc0 6e 63 65 20 50 72 65 74 74 79 20 49 6e 66 6f 44 69 63 74 20 77 68 65 72 65 00 00 2d 2d 70 70 41 nce.Pretty.InfoDict.where..--ppA
afe0 64 64 69 74 69 6f 6e 61 6c 49 6e 66 6f 20 6c 61 79 6f 75 74 20 3d 20 50 50 2e 65 6d 70 74 79 00 dditionalInfo.layout.=.PP.empty.
b000 61 64 00 00 3b 00 00 00 0f 02 00 00 00 10 00 00 6e 00 00 00 00 00 00 00 db 0f 00 00 b2 0f 00 00 ad..;...........n...............
b020 8e 0f 00 00 68 0f 00 00 3f 0f 00 00 1a 0f 00 00 f5 0e 00 00 d3 0e 00 00 ad 0e 00 00 84 0e 00 00 ....h...?.......................
b040 5e 0e 00 00 4f 0e 00 00 4e 0e 00 00 30 0e 00 00 14 0e 00 00 f3 0d 00 00 d8 0d 00 00 ba 0d 00 00 ^...O...N...0...................
b060 99 0d 00 00 7d 0d 00 00 65 0d 00 00 4c 0d 00 00 2f 0d 00 00 0e 0d 00 00 f1 0c 00 00 ea 0c 00 00 ....}...e...L.../...............
b080 e9 0c 00 00 ce 0c 00 00 a7 0c 00 00 a6 0c 00 00 84 0c 00 00 66 0c 00 00 46 0c 00 00 45 0c 00 00 ....................f...F...E...
b0a0 27 0c 00 00 0f 0c 00 00 da 0b 00 00 b6 0b 00 00 95 0b 00 00 7d 0b 00 00 74 0b 00 00 4f 0b 00 00 '...................}...t...O...
b0c0 25 0b 00 00 eb 0a 00 00 df 0a 00 00 92 0a 00 00 91 0a 00 00 7f 0a 00 00 39 0a 00 00 f3 09 00 00 %.......................9.......
b0e0 af 09 00 00 7a 09 00 00 34 09 00 00 f2 08 00 00 b0 08 00 00 74 08 00 00 73 08 00 00 5a 08 00 00 ....z...4...........t...s...Z...
b100 2d 08 00 00 0e 08 00 00 f6 07 00 00 ef 07 00 00 ee 07 00 00 b9 07 00 00 96 07 00 00 7b 07 00 00 -...........................{...
b120 47 07 00 00 1b 07 00 00 1a 07 00 00 f9 06 00 00 dc 06 00 00 b3 06 00 00 b2 06 00 00 83 06 00 00 G...............................
b140 6e 06 00 00 57 06 00 00 56 06 00 00 29 06 00 00 07 06 00 00 ba 05 00 00 b9 05 00 00 a0 05 00 00 n...W...V...)...................
b160 7a 05 00 00 57 05 00 00 40 05 00 00 1d 05 00 00 00 05 00 00 e7 04 00 00 9c 04 00 00 9b 04 00 00 z...W...@.......................
b180 74 04 00 00 4d 04 00 00 19 04 00 00 12 04 00 00 11 04 00 00 c8 03 00 00 c0 03 00 00 77 03 00 00 t...M.......................w...
b1a0 76 03 00 00 31 03 00 00 13 03 00 00 f9 02 00 00 f8 02 00 00 c3 02 00 00 7d 02 00 00 38 02 00 00 v...1...................}...8...
b1c0 35 02 00 00 21 02 00 00 10 02 00 00 0f 02 00 00 0e 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5...!...........................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 74 69 68 20 20 3d 20 5b 22 62 74 69 68 22 5d ................btih..=.["btih"]
b220 00 62 74 69 68 20 3a 3a 20 4e 61 6d 65 73 70 61 63 65 49 64 00 2d 2d 00 2d 2d 20 65 6e 63 6f 64 .btih.::.NamespaceId.--.--.encod
b240 65 64 20 53 48 41 31 20 68 61 73 68 20 6f 66 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e ed.SHA1.hash.of.the.correspondin
b260 67 20 74 6f 72 72 65 6e 74 20 2f 69 6e 66 6f 2f 20 64 69 63 74 69 6f 6e 61 72 79 2e 00 2d 2d 20 g.torrent./info/.dictionary..--.
b280 69 64 65 6e 74 69 66 69 65 72 2e 20 4e 61 6d 65 73 70 61 63 65 2d 73 70 65 63 69 66 69 63 20 73 identifier..Namespace-specific.s
b2a0 74 72 69 6e 67 20 2f 73 68 6f 75 6c 64 2f 20 62 65 20 61 20 62 61 73 65 31 36 5c 2f 62 61 73 65 tring./should/.be.a.base16\/base
b2c0 33 32 00 2d 2d 20 7c 20 42 69 74 54 6f 72 72 65 6e 74 20 49 6e 66 6f 20 48 61 73 68 20 28 68 65 32.--.|.BitTorrent.Info.Hash.(he
b2e0 6e 63 65 20 74 68 65 20 6e 61 6d 65 29 20 6e 61 6d 65 73 70 61 63 65 00 00 74 79 70 65 20 4e 61 nce.the.name).namespace..type.Na
b300 6d 65 73 70 61 63 65 49 64 20 3d 20 5b 54 65 78 74 5d 00 2d 2d 20 6e 61 6d 65 73 70 61 63 65 2d mespaceId.=.[Text].--.namespace-
b320 73 70 65 63 69 66 69 63 20 73 74 72 69 6e 67 2e 00 2d 2d 20 7c 20 4e 61 6d 65 73 70 61 63 65 20 specific.string..--.|.Namespace.
b340 69 64 65 6e 74 69 66 69 65 72 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 73 79 6e 74 61 63 identifier.determines.the.syntac
b360 74 69 63 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d tic.interpretation.of..---------
b380 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
b3a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 ------------------------------}.
b3c0 2d 2d 20 20 55 52 4e 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --..URN.{-----------------------
b3e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
b400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 23 65 6e 64 69 66 00 74 6f 46 69 6c 65 20 ----------------..#endif.toFile.
b420 66 69 6c 65 70 61 74 68 20 3d 20 42 4c 2e 77 72 69 74 65 46 69 6c 65 20 66 69 6c 65 70 61 74 68 filepath.=.BL.writeFile.filepath
b440 20 2e 20 42 45 2e 65 6e 63 6f 64 65 00 74 6f 46 69 6c 65 20 3a 3a 20 46 69 6c 65 50 61 74 68 20 ...BE.encode.toFile.::.FilePath.
b460 2d 3e 20 54 6f 72 72 65 6e 74 20 2d 3e 20 49 4f 20 28 29 00 2d 2d 20 7c 20 45 6e 63 6f 64 65 20 ->.Torrent.->.IO.().--.|.Encode.
b480 61 6e 64 20 77 72 69 74 65 20 61 20 2e 74 6f 72 72 65 6e 74 20 66 69 6c 65 2e 00 00 20 20 20 20 and.write.a..torrent.file.......
b4a0 4c 65 66 74 20 6d 73 67 20 2d 3e 20 74 68 72 6f 77 49 4f 20 24 20 75 73 65 72 45 72 72 6f 72 20 Left.msg.->.throwIO.$.userError.
b4c0 24 20 6d 73 67 20 2b 2b 20 22 20 77 68 69 6c 65 20 72 65 61 64 69 6e 67 20 74 6f 72 72 65 6e 74 $.msg.++.".while.reading.torrent
b4e0 20 66 69 6c 65 22 00 20 20 20 20 52 69 67 68 74 20 21 74 20 2d 3e 20 72 65 74 75 72 6e 20 74 00 .file".....Right.!t.->.return.t.
b500 20 20 63 61 73 65 20 42 45 2e 64 65 63 6f 64 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 00 20 20 63 ..case.BE.decode.contents.of...c
b520 6f 6e 74 65 6e 74 73 20 3c 2d 20 42 53 2e 72 65 61 64 46 69 6c 65 20 66 69 6c 65 70 61 74 68 00 ontents.<-.BS.readFile.filepath.
b540 66 72 6f 6d 46 69 6c 65 20 66 69 6c 65 70 61 74 68 20 3d 20 64 6f 00 66 72 6f 6d 46 69 6c 65 20 fromFile.filepath.=.do.fromFile.
b560 3a 3a 20 46 69 6c 65 50 61 74 68 20 2d 3e 20 49 4f 20 54 6f 72 72 65 6e 74 00 2d 2d 20 7c 20 52 ::.FilePath.->.IO.Torrent.--.|.R
b580 65 61 64 20 61 6e 64 20 64 65 63 6f 64 65 20 61 20 2e 74 6f 72 72 65 6e 74 20 66 69 6c 65 2e 00 ead.and.decode.a..torrent.file..
b5a0 23 69 66 64 65 66 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 69 73 54 6f 72 72 #ifdef.VERSION_bencoding..isTorr
b5c0 65 6e 74 50 61 74 68 20 66 69 6c 65 70 61 74 68 20 3d 20 74 61 6b 65 45 78 74 65 6e 73 69 6f 6e entPath.filepath.=.takeExtension
b5e0 20 66 69 6c 65 70 61 74 68 20 3d 3d 20 65 78 74 53 65 70 61 72 61 74 6f 72 20 3a 20 74 6f 72 72 .filepath.==.extSeparator.:.torr
b600 65 6e 74 45 78 74 00 69 73 54 6f 72 72 65 6e 74 50 61 74 68 20 3a 3a 20 46 69 6c 65 50 61 74 68 entExt.isTorrentPath.::.FilePath
b620 20 2d 3e 20 42 6f 6f 6c 00 2d 2d 20 7c 20 54 65 73 74 20 69 66 20 74 68 69 73 20 70 61 74 68 20 .->.Bool.--.|.Test.if.this.path.
b640 68 61 73 20 70 72 6f 70 65 72 20 65 78 74 65 6e 73 69 6f 6e 2e 00 00 74 6f 72 72 65 6e 74 45 78 has.proper.extension...torrentEx
b660 74 20 3d 20 22 74 6f 72 72 65 6e 74 22 00 74 6f 72 72 65 6e 74 45 78 74 20 3a 3a 20 53 74 72 69 t.=."torrent".torrentExt.::.Stri
b680 6e 67 00 2d 2d 20 7c 20 45 78 74 65 6e 73 69 6f 6e 20 75 73 75 61 6c 6c 79 20 75 73 65 64 20 66 ng.--.|.Extension.usually.used.f
b6a0 6f 72 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 73 2e 00 00 74 79 70 65 54 6f 72 72 65 6e 74 20 3d or.torrent.files...typeTorrent.=
b6c0 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 62 69 74 74 6f 72 72 65 6e 74 22 00 74 79 70 65 ."application/x-bittorrent".type
b6e0 54 6f 72 72 65 6e 74 20 3a 3a 20 42 53 2e 42 79 74 65 53 74 72 69 6e 67 00 2d 2d 20 7c 20 4d 69 Torrent.::.BS.ByteString.--.|.Mi
b700 6d 65 20 74 79 70 65 20 6f 66 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 73 2e 00 00 20 20 20 20 69 me.type.of.torrent.files.......i
b720 6e 66 6f 20 20 20 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 6e 67 20 4e nfo....Nothing.Nothing.Nothing.N
b740 6f 74 68 69 6e 67 00 20 20 20 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 othing.....Nothing.Nothing.Nothi
b760 6e 67 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 6e 67 20 4e 6f 74 68 69 6e 67 00 6e 75 6c 6c 54 ng.Nothing.Nothing.Nothing.nullT
b780 6f 72 72 65 6e 74 20 69 6e 66 6f 20 3d 20 54 6f 72 72 65 6e 74 00 6e 75 6c 6c 54 6f 72 72 65 6e orrent.info.=.Torrent.nullTorren
b7a0 74 20 3a 3a 20 49 6e 66 6f 44 69 63 74 20 2d 3e 20 54 6f 72 72 65 6e 74 00 2d 2d 20 7c 20 41 20 t.::.InfoDict.->.Torrent.--.|.A.
b7c0 73 69 6d 70 6c 65 20 74 6f 72 72 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 72 65 71 simple.torrent.contains.only.req
b7e0 75 69 72 65 64 20 66 69 65 6c 64 73 2e 00 00 23 65 6e 64 69 66 00 20 20 64 65 66 20 3d 20 6e 75 uired.fields...#endif...def.=.nu
b800 6c 6c 54 6f 72 72 65 6e 74 20 64 65 66 00 69 6e 73 74 61 6e 63 65 20 44 65 66 61 75 6c 74 20 54 llTorrent.def.instance.Default.T
b820 6f 72 72 65 6e 74 20 77 68 65 72 65 00 2d 2d 20 7c 20 4e 6f 20 66 69 6c 65 73 2c 20 6e 6f 20 74 orrent.where.--.|.No.files,.no.t
b840 72 61 63 6b 65 72 73 2c 20 6e 6f 20 6e 6f 64 65 73 2c 20 65 74 63 2e 2e 2e 00 23 69 66 64 65 66 rackers,.no.nodes,.etc....#ifdef
b860 20 56 45 52 53 49 4f 4e 5f 62 65 6e 63 6f 64 69 6e 67 00 00 20 20 20 20 20 20 20 20 22 53 69 67 .VERSION_bencoding.........."Sig
b880 6e 61 74 75 72 65 22 20 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 73 68 6f 77 29 20 nature".....<:>?.((text...show).
b8a0 3c 24 3e 20 74 53 69 67 6e 61 74 75 72 65 29 00 20 20 20 20 20 20 20 20 22 50 75 62 6c 69 73 68 <$>.tSignature)........."Publish
b8c0 65 72 20 55 52 4c 22 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 73 68 6f 77 29 20 3c 24 3e 20 er.URL".<:>?.((text...show).<$>.
b8e0 74 50 75 62 6c 69 73 68 65 72 55 52 4c 29 20 24 24 00 20 20 20 20 20 20 20 20 22 50 75 62 6c 69 tPublisherURL).$$........."Publi
b900 73 68 65 72 22 20 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 73 68 6f 77 29 20 3c 24 sher".....<:>?.((text...show).<$
b920 3e 20 74 50 75 62 6c 69 73 68 65 72 29 20 20 20 20 24 24 00 20 20 20 20 20 20 20 20 22 45 6e 63 >.tPublisher)....$$........."Enc
b940 6f 64 69 6e 67 22 20 20 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 54 2e 75 6e 70 61 oding"......<:>?.((text...T.unpa
b960 63 6b 29 20 3c 24 3e 20 74 45 6e 63 6f 64 69 6e 67 29 20 20 20 20 20 24 24 00 20 20 20 20 20 20 ck).<$>.tEncoding).....$$.......
b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 24 3e 20 74 43 72 .........................<$>.tCr
b9a0 65 61 74 69 6f 6e 44 61 74 65 29 20 24 24 00 20 20 20 20 20 20 20 20 22 43 72 65 61 74 65 64 20 eationDate).$$........."Created.
b9c0 6f 6e 22 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 73 68 6f 77 20 2e 20 70 6f 73 69 on"....<:>?.((text...show...posi
b9e0 78 53 65 63 6f 6e 64 73 54 6f 55 54 43 54 69 6d 65 29 00 20 20 20 20 20 20 20 20 22 43 72 65 61 xSecondsToUTCTime)........."Crea
ba00 74 65 64 20 62 79 22 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 54 2e 75 6e 70 61 63 ted.by"....<:>?.((text...T.unpac
ba20 6b 29 20 3c 24 3e 20 74 43 72 65 61 74 65 64 42 79 29 20 20 20 20 24 24 00 20 20 20 20 20 20 20 k).<$>.tCreatedBy)....$$........
ba40 20 22 43 6f 6d 6d 65 6e 74 22 20 20 20 20 20 20 20 3c 3a 3e 3f 20 28 28 74 65 78 74 20 2e 20 54 ."Comment".......<:>?.((text...T
ba60 2e 75 6e 70 61 63 6b 29 20 3c 24 3e 20 74 43 6f 6d 6d 65 6e 74 29 20 20 20 20 20 20 24 24 00 20 .unpack).<$>.tComment)......$$..
ba80 20 20 20 67 65 6e 65 72 61 6c 49 6e 66 6f 20 3d 00 00 20 20 20 20 20 20 20 20 70 70 54 69 65 72 ...generalInfo.=..........ppTier
baa0 20 28 6e 2c 20 78 73 29 20 3d 20 22 54 69 65 72 20 23 22 20 3c 3e 20 69 6e 74 20 6e 20 3c 3a 3e .(n,.xs).=."Tier.#".<>.int.n.<:>
bac0 20 76 63 61 74 20 28 4c 2e 6d 61 70 20 28 74 65 78 74 20 2e 20 73 68 6f 77 29 20 78 73 29 00 20 .vcat.(L.map.(text...show).xs)..
bae0 20 20 20 20 20 77 68 65 72 65 00 20 20 20 20 20 20 20 20 4a 75 73 74 20 78 78 73 20 2d 3e 20 76 .....where.........Just.xxs.->.v
bb00 63 61 74 20 24 20 4c 2e 6d 61 70 20 70 70 54 69 65 72 20 24 20 4c 2e 7a 69 70 20 5b 31 2e 2e 5d cat.$.L.map.ppTier.$.L.zip.[1..]
bb20 20 78 78 73 00 20 20 20 20 20 20 20 20 4e 6f 74 68 69 6e 67 20 20 2d 3e 20 74 65 78 74 20 28 73 .xxs.........Nothing..->.text.(s
bb40 68 6f 77 20 74 41 6e 6e 6f 75 6e 63 65 29 00 20 20 20 20 74 72 61 63 6b 65 72 73 20 3d 20 63 61 how.tAnnounce).....trackers.=.ca
bb60 73 65 20 74 41 6e 6e 6f 75 6e 63 65 4c 69 73 74 20 6f 66 00 20 20 20 77 68 65 72 65 00 20 20 20 se.tAnnounceList.of....where....
bb80 20 24 24 20 70 50 72 69 6e 74 20 74 49 6e 66 6f 44 69 63 74 00 20 20 20 20 24 24 20 68 61 6e 67 .$$.pPrint.tInfoDict.....$$.hang
bba0 20 22 54 72 61 63 6b 65 72 22 20 34 20 74 72 61 63 6b 65 72 73 00 20 20 20 20 24 24 20 68 61 6e ."Tracker".4.trackers.....$$.han
bbc0 67 20 22 47 65 6e 65 72 61 6c 22 20 34 20 67 65 6e 65 72 61 6c 49 6e 66 6f 00 20 20 20 20 20 20 g."General".4.generalInfo.......
bbe0 20 22 49 6e 66 6f 48 61 73 68 3a 20 22 20 3c 3e 20 70 50 72 69 6e 74 20 28 69 64 49 6e 66 6f 48 ."InfoHash:.".<>.pPrint.(idInfoH
bc00 61 73 68 20 74 49 6e 66 6f 44 69 63 74 29 00 20 20 70 50 72 69 6e 74 20 54 6f 72 72 65 6e 74 20 ash.tInfoDict)...pPrint.Torrent.
bc20 7b 2e 2e 7d 20 3d 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 20 54 6f 72 72 65 6e 74 20 77 {..}.=.instance.Pretty.Torrent.w
bc40 68 65 72 65 00 00 6e 61 6d 65 20 3c 3a 3e 3f 20 28 4a 75 73 74 20 64 29 20 3d 20 6e 61 6d 65 20 here..name.<:>?.(Just.d).=.name.
bc60 3c 3a 3e 20 64 00 5f 20 20 20 20 3c 3a 3e 3f 20 20 4e 6f 74 68 69 6e 67 20 3d 20 50 50 2e 65 6d <:>.d._....<:>?..Nothing.=.PP.em
bc80 70 74 79 00 28 3c 3a 3e 3f 29 20 3a 3a 20 44 6f 63 20 2d 3e 20 4d 61 79 62 65 20 44 6f 63 20 2d pty.(<:>?).::.Doc.->.Maybe.Doc.-
bca0 3e 20 44 6f 63 00 00 6e 61 6d 65 20 3c 3a 3e 20 20 20 76 20 20 20 20 20 20 20 3d 20 6e 61 6d 65 >.Doc..name.<:>...v.......=.name
bcc0 20 3c 3e 20 22 3a 22 20 3c 2b 3e 20 76 00 28 3c 3a 3e 29 20 3a 3a 20 44 6f 63 20 2d 3e 20 44 6f .<>.":".<+>.v.(<:>).::.Doc.->.Do
bce0 63 20 2d 3e 20 44 6f 63 00 00 23 65 6e 64 69 66 00 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e c.->.Doc..#endif.............<*>
bd00 3f 20 22 73 69 67 6e 61 74 75 72 65 22 00 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 3f 20 22 ?."signature".............<*>?."
bd20 70 75 62 6c 69 73 68 65 72 2d 75 72 6c 22 00 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 3f 20 publisher-url".............<*>?.
bd40 22 70 75 62 6c 69 73 68 65 72 22 00 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 3f 20 22 6e 6f "publisher".............<*>?."no
bd60 64 65 73 22 00 20 20 20 20 20 20 20 20 20 20 20 20 3c 2a 3e 21 20 22 69 6e 66 6f 22 00 20 20 20 des".............<*>!."info"....
bd80 20 20 20 20 20 20 20 20 20 3c 2a 3e 3f 20 22 65 6e 63 6f 64 69 6e 67 22 00 20 20 20 20 20 20 20 .........<*>?."encoding"........
bda0 20 20 20 20 20 3c 2a 3e 3f 20 22 63 72 65 61 74 69 6f 6e 20 64 61 74 65 22 00 20 20 20 20 20 20 .....<*>?."creation.date".......
bdc0 20 20 20 20 20 20 3c 2a 3e 3f 20 22 63 72 65 61 74 65 64 20 62 79 22 00 20 20 20 20 20 20 20 20 ......<*>?."created.by".........
bde0 20 20 20 20 3c 2a 3e 3f 20 22 63 6f 6d 6d 65 6e 74 22 00 20 20 20 20 20 20 20 20 20 20 20 20 3c ....<*>?."comment".............<
be00 2a 3e 3f 20 22 61 6e 6e 6f 75 6e 63 65 2d 6c 69 73 74 22 00 20 20 20 20 54 6f 72 72 65 6e 74 20 *>?."announce-list".....Torrent.
be20 3c 24 3e 3f 20 22 61 6e 6e 6f 75 6e 63 65 22 00 20 20 66 72 6f 6d 42 45 6e 63 6f 64 65 20 3d 20 <$>?."announce"...fromBEncode.=.
be40 66 72 6f 6d 44 69 63 74 20 24 20 64 6f 00 00 20 20 20 20 2e 3a 20 65 6e 64 44 69 63 74 00 20 20 fromDict.$.do.......:.endDict...
be60 20 20 2e 3a 20 22 73 69 67 6e 61 74 75 72 65 22 20 20 20 20 20 2e 3d 3f 20 74 53 69 67 6e 61 74 ...:."signature"......=?.tSignat
be80 75 72 65 00 20 20 20 20 2e 3a 20 22 70 75 62 6c 69 73 68 65 72 2d 75 72 6c 22 20 2e 3d 3f 20 74 ure......:."publisher-url"..=?.t
bea0 50 75 62 6c 69 73 68 65 72 55 52 4c 00 20 20 20 20 2e 3a 20 22 70 75 62 6c 69 73 68 65 72 22 20 PublisherURL......:."publisher".
bec0 20 20 20 20 2e 3d 3f 20 74 50 75 62 6c 69 73 68 65 72 00 20 20 20 20 2e 3a 20 22 6e 6f 64 65 73 .....=?.tPublisher......:."nodes
bee0 22 20 20 20 20 20 20 20 20 20 2e 3d 3f 20 74 4e 6f 64 65 73 00 20 20 20 20 2e 3a 20 22 69 6e 66 "..........=?.tNodes......:."inf
bf00 6f 22 20 20 20 20 20 20 20 20 20 20 2e 3d 21 20 74 49 6e 66 6f 44 69 63 74 00 20 20 20 20 2e 3a o"...........=!.tInfoDict......:
bf20 20 22 65 6e 63 6f 64 69 6e 67 22 20 20 20 20 20 20 2e 3d 3f 20 74 45 6e 63 6f 64 69 6e 67 00 20 ."encoding".......=?.tEncoding..
bf40 20 20 20 2e 3a 20 22 63 72 65 61 74 69 6f 6e 20 64 61 74 65 22 20 2e 3d 3f 20 74 43 72 65 61 74 ....:."creation.date"..=?.tCreat
bf60 69 6f 6e 44 61 74 65 00 20 20 20 20 2e 3a 20 22 63 72 65 61 74 65 64 20 62 79 22 20 20 20 20 2e ionDate......:."created.by".....
bf80 3d 3f 20 74 43 72 65 61 74 65 64 42 79 00 20 20 20 20 2e 3a 20 22 63 6f 6d 6d 65 6e 74 22 20 20 =?.tCreatedBy......:."comment"..
bfa0 20 20 20 20 20 2e 3d 3f 20 74 43 6f 6d 6d 65 6e 74 00 20 20 20 20 2e 3a 20 22 61 6e 6e 6f 75 6e ......=?.tComment......:."announ
bfc0 63 65 2d 6c 69 73 74 22 20 2e 3d 3f 20 74 41 6e 6e 6f 75 6e 63 65 4c 69 73 74 00 20 20 20 20 20 ce-list"..=?.tAnnounceList......
bfe0 20 20 22 61 6e 6e 6f 75 6e 63 65 22 20 20 20 20 20 20 2e 3d 3f 20 74 41 6e 6e 6f 75 6e 63 65 00 .."announce".......=?.tAnnounce.
c000 61 64 00 00 24 00 00 00 f4 01 00 00 00 10 00 00 6d 00 00 00 00 00 00 00 c6 0f 00 00 81 0f 00 00 ad..$...........m...............
c020 3d 0f 00 00 2d 0f 00 00 2a 0f 00 00 1b 0f 00 00 de 0e 00 00 a9 0e 00 00 6b 0e 00 00 4a 0e 00 00 =...-...*...............k...J...
c040 49 0e 00 00 01 0e 00 00 00 0e 00 00 d8 0d 00 00 bd 0d 00 00 80 0d 00 00 4d 0d 00 00 4c 0d 00 00 I.......................M...L...
c060 15 0d 00 00 e6 0c 00 00 e3 0c 00 00 c4 0c 00 00 a3 0c 00 00 a2 0c 00 00 7e 0c 00 00 63 0c 00 00 ........................~...c...
c080 4b 0c 00 00 4a 0c 00 00 01 0c 00 00 00 0c 00 00 d4 0b 00 00 bb 0b 00 00 a8 0b 00 00 6c 0b 00 00 K...J.......................l...
c0a0 6b 0b 00 00 51 0b 00 00 2a 0b 00 00 29 0b 00 00 11 0b 00 00 de 0a 00 00 dd 0a 00 00 bb 0a 00 00 k...Q...*...)...................
c0c0 91 0a 00 00 73 0a 00 00 72 0a 00 00 2a 0a 00 00 29 0a 00 00 08 0a 00 00 f3 09 00 00 ca 09 00 00 ....s...r...*...)...............
c0e0 c9 09 00 00 a5 09 00 00 78 09 00 00 63 09 00 00 3b 09 00 00 1e 09 00 00 f2 08 00 00 cb 08 00 00 ........x...c...;...............
c100 aa 08 00 00 9c 08 00 00 63 08 00 00 25 08 00 00 ef 07 00 00 ee 07 00 00 d2 07 00 00 9c 07 00 00 ........c...%...................
c120 78 07 00 00 77 07 00 00 40 07 00 00 3d 07 00 00 0a 07 00 00 07 07 00 00 e9 06 00 00 b4 06 00 00 x...w...@...=...................
c140 b3 06 00 00 6a 06 00 00 5f 06 00 00 16 06 00 00 06 06 00 00 03 06 00 00 bf 05 00 00 79 05 00 00 ....j..._...................y...
c160 34 05 00 00 fc 04 00 00 f9 04 00 00 b2 04 00 00 a6 04 00 00 a3 04 00 00 7b 04 00 00 37 04 00 00 4.......................{...7...
c180 f8 03 00 00 f5 03 00 00 d3 03 00 00 9f 03 00 00 9c 03 00 00 9b 03 00 00 7d 03 00 00 4f 03 00 00 ........................}...O...
c1a0 4e 03 00 00 28 03 00 00 13 03 00 00 d2 02 00 00 b7 02 00 00 81 02 00 00 80 02 00 00 43 02 00 00 N...(.......................C...
c1c0 13 02 00 00 f5 01 00 00 f4 01 00 00 f3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 2c 20 64 69 73 70 6c 61 79 .......................,.display
c200 4e 61 6d 65 20 3a 3a 20 4d 61 79 62 65 20 54 65 78 74 00 20 20 20 20 2d 2d 20 64 69 73 70 6c 61 Name.::.Maybe.Text.....--.displa
c220 79 20 6e 61 6d 65 20 77 68 69 6c 65 20 77 61 69 74 69 6e 67 20 66 6f 72 20 6d 65 74 61 64 61 74 y.name.while.waiting.for.metadat
c240 61 2e 00 20 20 20 20 2d 2d 20 7c 20 41 20 66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 66 a......--.|.A.filename.for.the.f
c260 69 6c 65 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 2e 20 43 61 6e 20 62 65 20 75 73 65 64 20 74 6f 00 ile.to.download..Can.be.used.to.
c280 00 20 20 20 20 65 78 61 63 74 54 6f 70 69 63 20 20 3a 3a 20 21 49 6e 66 6f 48 61 73 68 20 2d 2d .....exactTopic..::.!InfoHash.--
c2a0 20 54 4f 44 4f 20 49 6e 66 6f 48 61 73 68 20 2d 3e 20 55 52 4e 3f 00 20 20 20 20 2d 2d 20 27 74 .TODO.InfoHash.->.URN?.....--.'t
c2c0 72 61 63 6b 65 72 27 20 70 72 6f 76 69 64 65 64 2e 00 20 20 7b 20 2d 2d 20 7c 20 54 6f 72 72 65 racker'.provided....{.--.|.Torre
c2e0 6e 74 20 69 6e 66 6f 68 61 73 68 20 68 61 73 68 2e 20 43 61 6e 20 62 65 20 75 73 65 64 20 69 6e nt.infohash.hash..Can.be.used.in
c300 20 44 48 54 20 71 75 65 72 69 65 73 20 69 66 20 6e 6f 00 64 61 74 61 20 4d 61 67 6e 65 74 20 3d .DHT.queries.if.no.data.Magnet.=
c320 20 4d 61 67 6e 65 74 00 2d 2d 20 7c 20 41 6e 20 55 52 49 20 75 73 65 64 20 74 6f 20 69 64 65 6e .Magnet.--.|.An.URI.used.to.iden
c340 74 69 66 79 20 74 6f 72 72 65 6e 74 2e 00 00 2d 2d 20 54 4f 44 4f 20 72 65 6e 64 65 72 2f 70 61 tify.torrent...--.TODO.render/pa
c360 72 73 65 20 73 75 70 70 6c 65 6d 65 6e 74 20 66 6f 72 20 55 52 49 2f 71 75 65 72 79 00 2d 2d 20 rse.supplement.for.URI/query.--.
c380 54 4f 44 4f 20 6d 75 6c 74 69 70 6c 65 20 65 78 61 63 74 20 74 6f 70 69 63 73 00 00 2d 2d 00 2d TODO.multiple.exact.topics..--.-
c3a0 2d 20 20 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 62 69 74 74 6f 72 72 65 6e 74 2e 6f 72 67 2f 62 -...<http://www.bittorrent.org/b
c3c0 65 70 73 2f 62 65 70 5f 30 30 30 39 2e 68 74 6d 6c 3e 00 2d 2d 20 20 20 42 69 74 74 6f 72 72 65 eps/bep_0009.html>.--...Bittorre
c3e0 6e 74 20 73 70 65 63 69 66 69 63 20 64 65 74 61 69 6c 73 3a 00 2d 2d 00 2d 2d 20 20 20 3c 68 74 nt.specific.details:.--.--...<ht
c400 74 70 3a 2f 2f 77 77 77 2e 69 61 6e 61 2e 6f 72 67 2f 61 73 73 69 67 6e 6d 65 6e 74 73 2f 75 72 tp://www.iana.org/assignments/ur
c420 69 2d 73 63 68 65 6d 65 73 2f 70 72 6f 76 2f 6d 61 67 6e 65 74 3e 00 2d 2d 20 20 20 3c 68 74 74 i-schemes/prov/magnet>.--...<htt
c440 70 3a 2f 2f 6d 61 67 6e 65 74 2d 75 72 69 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65 74 2f 6d p://magnet-uri.sourceforge.net/m
c460 61 67 6e 65 74 2d 64 72 61 66 74 2d 6f 76 65 72 76 69 65 77 2e 74 78 74 3e 2c 00 2d 2d 20 20 20 agnet-draft-overview.txt>,.--...
c480 46 6f 72 20 67 65 6e 65 72 69 63 20 6d 61 67 6e 65 74 20 75 72 69 20 73 63 68 65 6d 65 20 73 65 For.generic.magnet.uri.scheme.se
c4a0 65 3a 00 2d 2d 00 2d 2d 20 20 20 6c 69 6e 6b 73 2e 00 2d 2d 20 20 20 54 68 69 73 20 6d 6f 64 75 e:.--.--...links..--...This.modu
c4c0 6c 65 20 70 72 6f 76 69 64 65 73 20 62 69 74 74 6f 72 72 65 6e 74 20 73 70 65 63 69 66 69 63 20 le.provides.bittorrent.specific.
c4e0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 6d 61 67 6e 65 74 00 2d 2d 00 2d 2d 20 20 implementation.of.magnet.--.--..
c500 20 6d 61 67 6e 65 74 20 6c 69 6e 6b 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 .magnet.links.can.be.used.instea
c520 64 20 6f 66 20 74 6f 72 72 65 6e 74 20 66 69 6c 65 73 2e 00 2d 2d 20 20 20 63 61 6e 20 72 65 66 d.of.torrent.files..--...can.ref
c540 65 72 20 74 6f 20 74 6f 72 72 65 6e 74 20 75 73 69 6e 67 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e er.to.torrent.using.correspondin
c560 67 20 69 6e 66 6f 68 61 73 68 2e 20 49 6e 20 74 68 69 73 20 77 61 79 2c 00 2d 2d 20 20 20 6c 69 g.infohash..In.this.way,.--...li
c580 6e 6b 73 20 61 72 65 20 72 65 66 65 72 20 74 6f 20 72 65 73 6f 75 72 63 65 73 20 62 79 20 68 61 nks.are.refer.to.resources.by.ha
c5a0 73 68 2c 20 69 6e 20 70 61 72 74 69 63 75 6c 61 72 20 6d 61 67 6e 65 74 20 6c 69 6e 6b 73 00 2d sh,.in.particular.magnet.links.-
c5c0 2d 20 20 20 4d 61 67 6e 65 74 20 55 52 49 20 73 63 68 65 6d 65 20 69 73 20 61 6e 20 73 74 61 6e -...Magnet.URI.scheme.is.an.stan
c5e0 64 61 72 64 20 64 65 66 69 6e 69 6e 67 20 4d 61 67 6e 65 74 20 6c 69 6e 6b 73 2e 20 4d 61 67 6e dard.defining.Magnet.links..Magn
c600 65 74 00 2d 2d 00 2d 2d 20 24 6d 61 67 6e 65 74 2d 6c 69 6e 6b 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d et.--.--.$magnet-link.----------
c620 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c640 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7d 00 2d -----------------------------}.-
c660 2d 20 20 4d 61 67 6e 65 74 00 7b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -..Magnet.{---------------------
c680 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c6a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 70 61 72 73 65 55 52 4e 20 3d 20 65 ------------------..parseURN.=.e
c6c0 69 74 68 65 72 20 28 63 6f 6e 73 74 20 4e 6f 74 68 69 6e 67 29 20 70 75 72 65 20 2e 20 73 61 66 ither.(const.Nothing).pure...saf
c6e0 65 43 6f 6e 76 65 72 74 00 70 61 72 73 65 55 52 4e 20 3a 3a 20 54 65 78 74 20 2d 3e 20 4d 61 79 eConvert.parseURN.::.Text.->.May
c700 62 65 20 55 52 4e 00 2d 2d 00 2d 2d 20 20 55 73 65 20 27 73 61 66 65 43 6f 6e 76 65 72 74 27 20 be.URN.--.--..Use.'safeConvert'.
c720 66 6f 72 20 64 65 74 61 69 6c 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 2e 00 2d 2d 00 for.detailed.error.messages..--.
c740 2d 2d 20 7c 20 54 72 79 20 74 6f 20 70 61 72 73 65 20 61 6e 20 55 52 4e 20 66 72 6f 6d 20 69 74 --.|.Try.to.parse.an.URN.from.it
c760 73 20 74 65 78 74 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 2e 00 00 20 20 20 20 20 20 20 20 s.text.representation...........
c780 20 20 20 20 20 2e 20 73 61 66 65 43 6f 6e 76 65 72 74 20 2e 20 54 2e 70 61 63 6b 00 20 20 66 72 .......safeConvert...T.pack...fr
c7a0 6f 6d 53 74 72 69 6e 67 20 3d 20 65 69 74 68 65 72 20 28 65 72 72 6f 72 20 2e 20 70 72 65 74 74 omString.=.either.(error...prett
c7c0 79 43 6f 6e 76 65 72 74 45 72 72 6f 72 29 20 69 64 00 69 6e 73 74 61 6e 63 65 20 49 73 53 74 72 yConvertError).id.instance.IsStr
c7e0 69 6e 67 20 55 52 4e 20 77 68 65 72 65 00 00 20 20 20 20 5b 5d 20 20 20 20 20 20 20 20 20 20 20 ing.URN.where......[]...........
c800 20 2d 3e 20 63 6f 6e 76 45 72 72 6f 72 20 22 6d 69 73 73 69 6e 67 20 55 52 4e 20 73 63 68 65 6d .->.convError."missing.URN.schem
c820 65 22 20 74 00 20 20 20 20 20 20 7c 20 6f 74 68 65 72 77 69 73 65 20 2d 3e 20 63 6f 6e 76 45 72 e".t.......|.otherwise.->.convEr
c840 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 55 52 4e 20 73 63 68 65 6d 65 22 20 75 72 69 53 63 68 65 ror."invalid.URN.scheme".uriSche
c860 6d 65 00 20 20 20 20 20 20 20 20 20 20 4e 6f 74 68 69 6e 67 20 2d 3e 20 63 6f 6e 76 45 72 72 6f me...........Nothing.->.convErro
c880 72 20 22 6d 69 73 73 69 6e 67 20 55 52 4e 20 73 74 72 69 6e 67 22 20 62 6f 64 79 00 20 20 20 20 r."missing.URN.string".body.....
c8a0 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 2c 20 75 72 6e 53 74 72 69 6e ........}.............,.urnStrin
c8c0 67 20 20 20 20 3d 20 76 61 6c 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 75 72 6e 4e 61 6d 65 g....=.val.............{.urnName
c8e0 73 70 61 63 65 20 3d 20 6e 61 6d 65 73 70 61 63 65 00 20 20 20 20 20 20 20 20 20 20 4a 75 73 74 space.=.namespace...........Just
c900 20 28 6e 61 6d 65 73 70 61 63 65 2c 20 76 61 6c 29 20 2d 3e 20 70 75 72 65 20 55 52 4e 00 20 20 .(namespace,.val).->.pure.URN...
c920 20 20 20 20 20 20 63 61 73 65 20 5f 75 6e 73 6e 6f 63 20 62 6f 64 79 20 6f 66 00 20 20 20 20 20 ......case._unsnoc.body.of......
c940 20 7c 20 54 2e 74 6f 4c 6f 77 65 72 20 75 72 69 53 63 68 65 6d 65 20 3d 3d 20 22 75 72 6e 22 20 .|.T.toLower.uriScheme.==."urn".
c960 2d 3e 00 20 20 20 20 75 72 69 53 63 68 65 6d 65 20 3a 20 62 6f 64 79 00 20 20 73 61 66 65 43 6f ->.....uriScheme.:.body...safeCo
c980 6e 76 65 72 74 20 74 20 3d 20 63 61 73 65 20 54 2e 73 70 6c 69 74 20 28 3d 3d 20 27 3a 27 29 20 nvert.t.=.case.T.split.(==.':').
c9a0 74 20 6f 66 00 69 6e 73 74 61 6e 63 65 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 54 65 78 74 20 55 t.of.instance.Convertible.Text.U
c9c0 52 4e 20 77 68 65 72 65 00 00 5f 75 6e 73 6e 6f 63 20 78 73 20 3d 20 4a 75 73 74 20 28 4c 2e 69 RN.where.._unsnoc.xs.=.Just.(L.i
c9e0 6e 69 74 20 78 73 2c 20 4c 2e 6c 61 73 74 20 78 73 29 00 5f 75 6e 73 6e 6f 63 20 5b 5d 20 3d 20 nit.xs,.L.last.xs)._unsnoc.[].=.
ca00 4e 6f 74 68 69 6e 67 00 5f 75 6e 73 6e 6f 63 20 3a 3a 20 5b 61 5d 20 2d 3e 20 4d 61 79 62 65 20 Nothing._unsnoc.::.[a].->.Maybe.
ca20 28 5b 61 5d 2c 20 61 29 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ([a],.a)..----------------------
ca40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ca60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 7b 2d 23 20 49 4e 4c 49 4e 45 20 -----------------....{-#.INLINE.
ca80 74 6f 51 75 65 72 79 56 61 6c 75 65 20 23 2d 7d 00 20 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 toQueryValue.#-}...toQueryValue.
caa0 3d 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 2e 20 72 65 6e 64 65 72 55 52 4e 00 69 6e 73 74 61 =.toQueryValue...renderURN.insta
cac0 6e 63 65 20 51 75 65 72 79 56 61 6c 75 65 4c 69 6b 65 20 55 52 4e 20 77 68 65 72 65 00 00 20 20 nce.QueryValueLike.URN.where....
cae0 73 68 6f 77 73 50 72 65 63 20 6e 20 3d 20 73 68 6f 77 73 50 72 65 63 20 6e 20 2e 20 54 2e 75 6e showsPrec.n.=.showsPrec.n...T.un
cb00 70 61 63 6b 20 2e 20 72 65 6e 64 65 72 55 52 4e 00 69 6e 73 74 61 6e 63 65 20 53 68 6f 77 20 55 pack...renderURN.instance.Show.U
cb20 52 4e 20 77 68 65 72 65 00 00 20 20 70 50 72 69 6e 74 20 3d 20 74 65 78 74 20 2e 20 54 2e 75 6e RN.where....pPrint.=.text...T.un
cb40 70 61 63 6b 20 2e 20 72 65 6e 64 65 72 55 52 4e 00 69 6e 73 74 61 6e 63 65 20 50 72 65 74 74 79 pack...renderURN.instance.Pretty
cb60 20 55 52 4e 20 77 68 65 72 65 00 00 20 20 3d 20 54 2e 69 6e 74 65 72 63 61 6c 61 74 65 20 22 3a .URN.where....=.T.intercalate.":
cb80 22 20 24 20 22 75 72 6e 22 20 3a 20 75 72 6e 4e 61 6d 65 73 70 61 63 65 20 2b 2b 20 5b 75 72 6e ".$."urn".:.urnNamespace.++.[urn
cba0 53 74 72 69 6e 67 5d 00 72 65 6e 64 65 72 55 52 4e 20 55 52 4e 20 7b 2e 2e 7d 00 72 65 6e 64 65 String].renderURN.URN.{..}.rende
cbc0 72 55 52 4e 20 3a 3a 20 55 52 4e 20 2d 3e 20 54 65 78 74 00 2d 2d 20 7c 20 52 65 6e 64 65 72 20 rURN.::.URN.->.Text.--.|.Render.
cbe0 55 52 4e 20 74 6f 20 69 74 73 20 74 65 78 74 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 2e 00 URN.to.its.text.representation..
cc00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .-------------------------------
cc20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
cc40 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 64 65 66 20 3d 20 69 6e 66 6f 68 61 73 68 55 52 4e 20 64 ---------....def.=.infohashURN.d
cc60 65 66 00 69 6e 73 74 61 6e 63 65 20 44 65 66 61 75 6c 74 20 55 52 4e 20 77 68 65 72 65 00 2d 2d ef.instance.Default.URN.where.--
cc80 20 7c 20 4d 65 61 6e 69 6e 67 6c 65 73 73 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 76 61 6c 75 65 .|.Meaningless.placeholder.value
cca0 2e 00 00 69 6e 66 6f 68 61 73 68 55 52 4e 20 3d 20 55 52 4e 20 62 74 69 68 20 2e 20 6c 6f 6e 67 ...infohashURN.=.URN.btih...long
ccc0 48 65 78 00 69 6e 66 6f 68 61 73 68 55 52 4e 20 3a 3a 20 49 6e 66 6f 48 61 73 68 20 2d 3e 20 55 Hex.infohashURN.::.InfoHash.->.U
cce0 52 4e 00 2d 2d 00 2d 2d 20 69 6e 66 6f 68 61 73 68 2e 20 49 6e 66 6f 68 61 73 68 20 69 73 20 62 RN.--.--.infohash..Infohash.is.b
cd00 61 73 65 31 36 20 28 68 65 78 29 20 65 6e 63 6f 64 65 64 2e 00 2d 2d 20 7c 20 4d 61 6b 65 20 72 ase16.(hex).encoded..--.|.Make.r
cd20 65 73 6f 75 72 63 65 20 6e 61 6d 65 20 66 6f 72 20 74 6f 72 72 65 6e 74 20 77 69 74 68 20 63 6f esource.name.for.torrent.with.co
cd40 72 72 65 73 70 6f 6e 64 69 6e 67 00 00 20 20 20 20 7c 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 rresponding......|.......otherwi
cd60 73 65 20 20 20 20 20 20 3d 20 73 61 66 65 43 6f 6e 76 65 72 74 20 75 72 6e 53 74 72 69 6e 67 00 se......=.safeConvert.urnString.
cd80 20 20 20 20 7c 20 75 72 6e 4e 61 6d 65 73 70 61 63 65 20 2f 3d 20 62 74 69 68 20 3d 20 63 6f 6e ....|.urnNamespace./=.btih.=.con
cda0 76 45 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 6e 61 6d 65 73 70 61 63 65 22 20 75 00 20 20 73 vError."invalid.namespace".u...s
cdc0 61 66 65 43 6f 6e 76 65 72 74 20 75 20 40 20 55 52 4e 20 7b 2e 2e 7d 00 69 6e 73 74 61 6e 63 65 afeConvert.u.@.URN.{..}.instance
cde0 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 55 52 4e 20 49 6e 66 6f 48 61 73 68 20 77 68 65 72 65 00 .Convertible.URN.InfoHash.where.
ce00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .-------------------------------
ce20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ce40 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 7d 20 64 65 72 69 76 69 6e 67 20 28 45 71 2c 20 4f 72 64 2c --------....}.deriving.(Eq,.Ord,
ce60 20 54 79 70 65 61 62 6c 65 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .Typeable)......................
ce80 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 6e 61 6d 65 73 70 61 63 65 2d 73 70 65 63 69 66 69 63 ...........--.namespace-specific
cea0 20 73 74 72 69 6e 67 2e 00 20 20 2c 20 75 72 6e 53 74 72 69 6e 67 20 20 20 20 3a 3a 20 54 65 78 .string....,.urnString....::.Tex
cec0 74 20 20 20 20 20 20 20 20 2d 2d 20 5e 20 61 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 00 20 20 t........--.^.a.corresponding...
cee0 7b 20 75 72 6e 4e 61 6d 65 73 70 61 63 65 20 3a 3a 20 4e 61 6d 65 73 70 61 63 65 49 64 20 2d 2d {.urnNamespace.::.NamespaceId.--
cf00 20 5e 20 61 20 6e 61 6d 65 73 70 61 63 65 20 69 64 65 6e 74 69 66 69 65 72 3b 00 64 61 74 61 20 .^.a.namespace.identifier;.data.
cf20 55 52 4e 20 3d 20 55 52 4e 00 2d 2d 00 2d 2d 20 20 20 6d 6f 72 65 20 69 6e 66 6f 2e 00 2d 2d 20 URN.=.URN.--.--...more.info..--.
cf40 20 20 61 73 20 61 20 70 61 72 74 20 6f 66 20 6d 61 67 6e 65 74 20 6c 69 6e 6b 2c 20 73 65 65 20 ..as.a.part.of.magnet.link,.see.
cf60 27 44 61 74 61 2e 54 6f 72 72 65 6e 74 2e 4d 61 67 6e 65 74 2e 4d 61 67 6e 65 74 27 20 66 6f 72 'Data.Torrent.Magnet.Magnet'.for
cf80 00 2d 2d 20 20 20 72 65 73 6f 75 72 63 65 73 2e 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20 .--...resources..In.particular,.
cfa0 55 52 4e 73 20 61 72 65 20 75 73 65 64 20 72 65 70 72 65 73 65 6e 74 20 74 6f 72 72 65 6e 74 20 URNs.are.used.represent.torrent.
cfc0 6e 61 6d 65 73 00 2d 2d 20 7c 20 55 52 4e 20 69 73 20 70 65 73 69 73 74 65 6e 74 20 6c 6f 63 61 names.--.|.URN.is.pesistent.loca
cfe0 74 69 6f 6e 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 00 tion-independent.identifier.for.
d000 61 64 00 00 0d 00 00 00 ed 01 00 00 00 10 00 00 71 00 00 00 00 00 00 00 d8 0f 00 00 b7 0f 00 00 ad..............q...............
d020 b6 0f 00 00 75 0f 00 00 5a 0f 00 00 59 0f 00 00 41 0f 00 00 22 0f 00 00 21 0f 00 00 e0 0e 00 00 ....u...Z...Y...A..."...!.......
d040 a0 0e 00 00 89 0e 00 00 67 0e 00 00 66 0e 00 00 40 0e 00 00 1e 0e 00 00 1d 0e 00 00 00 0e 00 00 ........g...f...@...............
d060 e7 0d 00 00 e6 0d 00 00 b6 0d 00 00 96 0d 00 00 75 0d 00 00 74 0d 00 00 4e 0d 00 00 29 0d 00 00 ................u...t...N...)...
d080 28 0d 00 00 06 0d 00 00 e1 0c 00 00 e0 0c 00 00 c0 0c 00 00 a8 0c 00 00 74 0c 00 00 4d 0c 00 00 (.......................t...M...
d0a0 26 0c 00 00 02 0c 00 00 da 0b 00 00 ae 0b 00 00 87 0b 00 00 64 0b 00 00 5e 0b 00 00 5d 0b 00 00 &...................d...^...]...
d0c0 38 0b 00 00 0b 0b 00 00 0a 0b 00 00 de 0a 00 00 c8 0a 00 00 89 0a 00 00 47 0a 00 00 33 0a 00 00 8.......................G...3...
d0e0 0d 0a 00 00 e0 09 00 00 a8 09 00 00 7b 09 00 00 4e 09 00 00 16 09 00 00 de 08 00 00 a6 08 00 00 ............{...N...............
d100 81 08 00 00 77 08 00 00 6d 08 00 00 26 08 00 00 00 08 00 00 dc 07 00 00 93 07 00 00 92 07 00 00 ....w...m...&...................
d120 7e 07 00 00 6b 07 00 00 4c 07 00 00 2f 07 00 00 17 07 00 00 ff 06 00 00 e7 06 00 00 e1 06 00 00 ~...k...L.../...................
d140 e0 06 00 00 c5 06 00 00 91 06 00 00 90 06 00 00 65 06 00 00 3f 06 00 00 24 06 00 00 e0 05 00 00 ................e...?...$.......
d160 94 05 00 00 93 05 00 00 67 05 00 00 41 05 00 00 1b 05 00 00 df 04 00 00 de 04 00 00 b5 04 00 00 ........g...A...................
d180 a3 04 00 00 72 04 00 00 2d 04 00 00 2c 04 00 00 e3 03 00 00 e2 03 00 00 be 03 00 00 a0 03 00 00 ....r...-...,...................
d1a0 91 03 00 00 74 03 00 00 53 03 00 00 32 03 00 00 11 03 00 00 f0 02 00 00 cf 02 00 00 ae 02 00 00 ....t...S...2...................
d1c0 8d 02 00 00 6c 02 00 00 66 02 00 00 65 02 00 00 24 02 00 00 03 02 00 00 ed 01 00 00 ec 01 00 00 ....l...f...e...$...............
d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 75 6c 6c 4d 61 67 6e 65 74 20 75 20 3d 20 4d 61 67 6e .............nullMagnet.u.=.Magn
d200 65 74 00 6e 75 6c 6c 4d 61 67 6e 65 74 20 3a 3a 20 49 6e 66 6f 48 61 73 68 20 2d 3e 20 4d 61 67 et.nullMagnet.::.InfoHash.->.Mag
d220 6e 65 74 00 2d 2d 20 7c 20 53 65 74 20 27 65 78 61 63 74 54 6f 70 69 63 27 20 28 27 78 74 27 20 net.--.|.Set.'exactTopic'.('xt'.
d240 70 61 72 61 6d 29 20 6f 6e 6c 79 2c 20 6f 74 68 65 72 20 70 61 72 61 6d 73 20 61 72 65 20 65 6d param).only,.other.params.are.em
d260 70 74 79 2e 00 00 20 20 20 20 7d 00 20 20 20 20 2c 20 73 75 70 70 6c 65 6d 65 6e 74 20 20 20 20 pty.......}.....,.supplement....
d280 20 20 20 3d 20 4d 2e 65 6d 70 74 79 00 20 20 20 20 2c 20 74 72 61 63 6b 65 72 20 20 20 20 20 20 ...=.M.empty.....,.tracker......
d2a0 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 65 78 61 63 74 53 6f 75 72 63 65 20 ....=.Nothing.....,.exactSource.
d2c0 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 61 63 63 65 70 74 61 62 6c 65 53 .....=.Nothing.....,.acceptableS
d2e0 6f 75 72 63 65 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 6b 65 79 77 6f 72 64 54 6f 70 ource.=.Nothing.....,.keywordTop
d300 69 63 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 6d 61 6e 69 66 65 73 74 20 ic.....=.Nothing.....,.manifest.
d320 20 20 20 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 65 78 61 63 74 4c 65 6e ........=.Nothing.....,.exactLen
d340 67 74 68 20 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 2c 20 64 69 73 70 6c 61 79 gth......=.Nothing.....,.display
d360 4e 61 6d 65 20 20 20 20 20 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 7b 20 65 78 61 63 74 54 Name......=.Nothing.....{.exactT
d380 6f 70 69 63 20 20 20 20 20 20 20 3d 20 64 65 66 00 20 20 64 65 66 20 3d 20 4d 61 67 6e 65 74 00 opic.......=.def...def.=.Magnet.
d3a0 69 6e 73 74 61 6e 63 65 20 44 65 66 61 75 6c 74 20 4d 61 67 6e 65 74 20 77 68 65 72 65 00 2d 2d instance.Default.Magnet.where.--
d3c0 20 7c 20 4d 65 61 6e 69 6e 67 6c 65 73 73 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 76 61 6c 75 65 .|.Meaningless.placeholder.value
d3e0 2e 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...-----------------------------
d400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
d420 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 20 20 20 20 7c 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 -----------......|........otherw
d440 69 73 65 20 20 20 20 20 20 20 20 20 3d 20 63 6f 6e 76 45 72 72 6f 72 20 22 75 6e 61 62 6c 65 20 ise.........=.convError."unable.
d460 74 6f 20 70 61 72 73 65 20 75 72 69 22 20 73 74 72 00 20 20 20 20 7c 20 4a 75 73 74 20 75 72 69 to.parse.uri".str.....|.Just.uri
d480 20 3c 2d 20 70 61 72 73 65 55 52 49 20 73 74 72 20 3d 20 73 61 66 65 43 6f 6e 76 65 72 74 20 75 .<-.parseURI.str.=.safeConvert.u
d4a0 72 69 00 20 20 73 61 66 65 43 6f 6e 76 65 72 74 20 73 74 72 00 69 6e 73 74 61 6e 63 65 20 43 6f ri...safeConvert.str.instance.Co
d4c0 6e 76 65 72 74 69 62 6c 65 20 53 74 72 69 6e 67 20 4d 61 67 6e 65 74 20 77 68 65 72 65 00 00 20 nvertible.String.Magnet.where...
d4e0 20 20 20 7b 20 75 72 69 51 75 65 72 79 20 3d 20 42 43 2e 75 6e 70 61 63 6b 20 24 20 72 65 6e 64 ...{.uriQuery.=.BC.unpack.$.rend
d500 65 72 51 75 65 72 79 20 54 72 75 65 20 24 20 74 6f 51 75 65 72 79 20 6d 20 7d 00 20 20 73 61 66 erQuery.True.$.toQuery.m.}...saf
d520 65 43 6f 6e 76 65 72 74 20 6d 20 3d 20 70 75 72 65 20 24 20 6d 61 67 6e 65 74 53 63 68 65 6d 65 eConvert.m.=.pure.$.magnetScheme
d540 00 69 6e 73 74 61 6e 63 65 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 4d 61 67 6e 65 74 20 55 52 49 .instance.Convertible.Magnet.URI
d560 20 77 68 65 72 65 00 2d 2d 20 7c 20 43 61 6e 20 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 .where.--.|.Can.be.used.instead.
d580 6f 66 20 27 72 65 6e 64 65 72 4d 61 67 6e 65 74 27 2e 00 00 20 20 20 20 7c 20 20 20 20 20 20 6f of.'renderMagnet'.......|......o
d5a0 74 68 65 72 77 69 73 65 20 20 20 20 20 20 3d 20 73 61 66 65 43 6f 6e 76 65 72 74 20 24 20 70 61 therwise......=.safeConvert.$.pa
d5c0 72 73 65 51 75 65 72 79 54 65 78 74 20 24 20 42 43 2e 70 61 63 6b 20 75 72 69 51 75 65 72 79 00 rseQueryText.$.BC.pack.uriQuery.
d5e0 20 20 20 20 7c 20 6e 6f 74 20 28 69 73 4d 61 67 6e 65 74 55 52 49 20 75 29 20 3d 20 63 6f 6e 76 ....|.not.(isMagnetURI.u).=.conv
d600 45 72 72 6f 72 20 22 74 68 69 73 20 69 73 20 6e 6f 74 20 61 20 6d 61 67 6e 65 74 20 6c 69 6e 6b Error."this.is.not.a.magnet.link
d620 22 20 75 00 20 20 73 61 66 65 43 6f 6e 76 65 72 74 20 75 20 40 20 55 52 49 20 7b 2e 2e 7d 00 69 ".u...safeConvert.u.@.URI.{..}.i
d640 6e 73 74 61 6e 63 65 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 55 52 49 20 4d 61 67 6e 65 74 20 77 nstance.Convertible.URI.Magnet.w
d660 68 65 72 65 00 2d 2d 20 7c 20 43 61 6e 20 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 here.--.|.Can.be.used.instead.of
d680 20 27 70 61 72 73 65 4d 61 67 6e 65 74 27 2e 00 00 69 73 4d 61 67 6e 65 74 55 52 49 20 75 20 3d .'parseMagnet'...isMagnetURI.u.=
d6a0 20 75 20 7b 20 75 72 69 51 75 65 72 79 20 3d 20 22 22 20 7d 20 3d 3d 20 6d 61 67 6e 65 74 53 63 .u.{.uriQuery.=."".}.==.magnetSc
d6c0 68 65 6d 65 00 69 73 4d 61 67 6e 65 74 55 52 49 20 3a 3a 20 55 52 49 20 2d 3e 20 42 6f 6f 6c 00 heme.isMagnetURI.::.URI.->.Bool.
d6e0 00 20 20 20 20 7d 00 20 20 20 20 2c 20 75 72 69 46 72 61 67 6d 65 6e 74 20 20 3d 20 22 22 00 20 .....}.....,.uriFragment..=.""..
d700 20 20 20 2c 20 75 72 69 51 75 65 72 79 20 20 20 20 20 3d 20 22 22 00 20 20 20 20 2c 20 75 72 69 ...,.uriQuery.....=."".....,.uri
d720 50 61 74 68 20 20 20 20 20 20 3d 20 22 22 00 20 20 20 20 2c 20 75 72 69 41 75 74 68 6f 72 69 74 Path......=."".....,.uriAuthorit
d740 79 20 3d 20 4e 6f 74 68 69 6e 67 00 20 20 20 20 7b 20 75 72 69 53 63 68 65 6d 65 20 20 20 20 3d y.=.Nothing.....{.uriScheme....=
d760 20 22 6d 61 67 6e 65 74 3a 22 00 6d 61 67 6e 65 74 53 63 68 65 6d 65 20 3d 20 55 52 49 00 6d 61 ."magnet:".magnetScheme.=.URI.ma
d780 67 6e 65 74 53 63 68 65 6d 65 20 3a 3a 20 55 52 49 00 00 20 20 20 20 20 20 67 65 74 54 65 78 74 gnetScheme.::.URI........getText
d7a0 4d 73 67 20 70 20 6d 73 67 20 70 73 20 3d 20 6d 61 79 62 65 20 28 63 6f 6e 76 45 72 72 6f 72 20 Msg.p.msg.ps.=.maybe.(convError.
d7c0 6d 73 67 20 78 73 29 20 70 75 72 65 20 24 20 67 65 74 54 65 78 74 20 70 20 70 73 00 20 20 20 20 msg.xs).pure.$.getText.p.ps.....
d7e0 20 20 67 65 74 54 65 78 74 20 70 20 3d 20 6a 6f 69 6e 20 2e 20 4c 2e 6c 6f 6f 6b 75 70 20 70 00 ..getText.p.=.join...L.lookup.p.
d800 20 20 20 20 20 20 67 65 74 55 52 49 20 20 20 20 3d 20 70 61 72 73 65 55 52 49 20 2e 20 54 2e 75 ......getURI....=.parseURI...T.u
d820 6e 70 61 63 6b 00 20 20 20 20 20 20 67 65 74 49 6e 74 20 20 20 20 3d 20 65 69 74 68 65 72 20 28 npack.......getInt....=.either.(
d840 63 6f 6e 73 74 20 4e 6f 74 68 69 6e 67 29 20 28 4a 75 73 74 20 2e 20 66 73 74 29 20 2e 20 73 69 const.Nothing).(Just...fst)...si
d860 67 6e 65 64 20 64 65 63 69 6d 61 6c 00 20 20 20 20 77 68 65 72 65 00 20 20 20 20 20 20 20 20 7d gned.decimal.....where.........}
d880 00 20 20 20 20 20 20 20 20 2c 20 73 75 70 70 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 3d 20 4d 2e .........,.supplement.......=.M.
d8a0 65 6d 70 74 79 00 20 20 20 20 20 20 20 20 2c 20 74 72 61 63 6b 65 72 20 20 20 20 20 20 20 20 20 empty.........,.tracker.........
d8c0 20 3d 20 67 65 74 54 65 78 74 20 22 74 72 22 20 78 73 20 3e 3e 3d 20 67 65 74 55 52 49 00 20 20 .=.getText."tr".xs.>>=.getURI...
d8e0 20 20 20 20 20 20 2c 20 65 78 61 63 74 53 6f 75 72 63 65 20 20 20 20 20 20 3d 20 67 65 74 54 65 ......,.exactSource......=.getTe
d900 78 74 20 22 78 73 22 20 78 73 20 3e 3e 3d 20 67 65 74 55 52 49 00 20 20 20 20 20 20 20 20 2c 20 xt."xs".xs.>>=.getURI.........,.
d920 61 63 63 65 70 74 61 62 6c 65 53 6f 75 72 63 65 20 3d 20 67 65 74 54 65 78 74 20 22 61 73 22 20 acceptableSource.=.getText."as".
d940 78 73 20 3e 3e 3d 20 67 65 74 55 52 49 00 20 20 20 20 20 20 20 20 2c 20 6b 65 79 77 6f 72 64 54 xs.>>=.getURI.........,.keywordT
d960 6f 70 69 63 20 20 20 20 20 3d 20 67 65 74 54 65 78 74 20 22 6b 74 22 20 78 73 00 20 20 20 20 20 opic.....=.getText."kt".xs......
d980 20 20 20 2c 20 6d 61 6e 69 66 65 73 74 20 20 20 20 20 20 20 20 20 3d 20 67 65 74 54 65 78 74 20 ...,.manifest.........=.getText.
d9a0 22 6d 74 22 20 78 73 00 20 20 20 20 20 20 20 20 2c 20 65 78 61 63 74 4c 65 6e 67 74 68 20 20 20 "mt".xs.........,.exactLength...
d9c0 20 20 20 3d 20 67 65 74 54 65 78 74 20 22 78 6c 22 20 78 73 20 3e 3e 3d 20 67 65 74 49 6e 74 00 ...=.getText."xl".xs.>>=.getInt.
d9e0 20 20 20 20 20 20 20 20 2c 20 64 69 73 70 6c 61 79 4e 61 6d 65 20 20 20 20 20 20 3d 20 67 65 74 ........,.displayName......=.get
da00 54 65 78 74 20 22 64 6e 22 20 78 73 00 20 20 20 20 20 20 20 20 7b 20 65 78 61 63 74 54 6f 70 69 Text."dn".xs.........{.exactTopi
da20 63 20 20 20 20 20 20 20 3d 20 69 6e 66 6f 48 61 73 68 00 20 20 20 20 20 20 72 65 74 75 72 6e 20 c.......=.infoHash.......return.
da40 4d 61 67 6e 65 74 00 20 20 20 20 20 20 69 6e 66 6f 48 61 73 68 20 3c 2d 20 63 6f 6e 76 65 72 74 Magnet.......infoHash.<-.convert
da60 56 69 61 20 28 65 72 72 6f 72 20 22 73 61 66 65 43 6f 6e 76 65 72 74 22 20 3a 3a 20 55 52 4e 29 Via.(error."safeConvert".::.URN)
da80 20 20 75 72 6e 53 74 72 00 20 20 20 20 20 20 75 72 6e 53 74 72 20 20 20 3c 2d 20 67 65 74 54 65 ..urnStr.......urnStr...<-.getTe
daa0 78 74 4d 73 67 20 22 78 74 22 20 22 65 78 61 63 74 20 74 6f 70 69 63 20 6e 6f 74 20 64 65 66 69 xtMsg."xt"."exact.topic.not.defi
dac0 6e 65 64 22 20 78 73 00 20 20 73 61 66 65 43 6f 6e 76 65 72 74 20 78 73 20 3d 20 64 6f 00 69 6e ned".xs...safeConvert.xs.=.do.in
dae0 73 74 61 6e 63 65 20 43 6f 6e 76 65 72 74 69 62 6c 65 20 51 75 65 72 79 54 65 78 74 20 4d 61 67 stance.Convertible.QueryText.Mag
db00 6e 65 74 20 77 68 65 72 65 00 00 20 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 3d 20 74 6f 51 75 net.where....toQueryValue.=.toQu
db20 65 72 79 56 61 6c 75 65 20 2e 20 72 65 6e 64 65 72 4d 61 67 6e 65 74 00 69 6e 73 74 61 6e 63 65 eryValue...renderMagnet.instance
db40 20 51 75 65 72 79 56 61 6c 75 65 4c 69 6b 65 20 4d 61 67 6e 65 74 20 77 68 65 72 65 00 00 20 20 .QueryValueLike.Magnet.where....
db60 20 20 5d 00 20 20 20 20 2c 20 28 22 74 72 22 2c 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 74 72 ..].....,.("tr",.toQueryValue.tr
db80 61 63 6b 65 72 29 00 20 20 20 20 2c 20 28 22 78 73 22 2c 20 74 6f 51 75 65 72 79 56 61 6c 75 65 acker).....,.("xs",.toQueryValue
dba0 20 65 78 61 63 74 53 6f 75 72 63 65 29 00 20 20 20 20 2c 20 28 22 61 73 22 2c 20 74 6f 51 75 65 .exactSource).....,.("as",.toQue
dbc0 72 79 56 61 6c 75 65 20 61 63 63 65 70 74 61 62 6c 65 53 6f 75 72 63 65 29 00 20 20 20 20 2c 20 ryValue.acceptableSource).....,.
dbe0 28 22 6b 74 22 2c 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 6b 65 79 77 6f 72 64 54 6f 70 69 63 ("kt",.toQueryValue.keywordTopic
dc00 29 00 20 20 20 20 2c 20 28 22 6d 74 22 2c 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 6d 61 6e 69 ).....,.("mt",.toQueryValue.mani
dc20 66 65 73 74 29 00 20 20 20 20 2c 20 28 22 78 6c 22 2c 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 fest).....,.("xl",.toQueryValue.
dc40 65 78 61 63 74 4c 65 6e 67 74 68 29 00 20 20 20 20 2c 20 28 22 64 6e 22 2c 20 74 6f 51 75 65 72 exactLength).....,.("dn",.toQuer
dc60 79 56 61 6c 75 65 20 64 69 73 70 6c 61 79 4e 61 6d 65 29 00 20 20 20 20 5b 20 28 22 78 74 22 2c yValue.displayName).....[.("xt",
dc80 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 24 20 69 6e 66 6f 68 61 73 68 55 52 4e 20 65 78 61 63 .toQueryValue.$.infohashURN.exac
dca0 74 54 6f 70 69 63 29 00 20 20 74 6f 51 75 65 72 79 20 4d 61 67 6e 65 74 20 7b 2e 2e 7d 20 3d 00 tTopic)...toQuery.Magnet.{..}.=.
dcc0 69 6e 73 74 61 6e 63 65 20 51 75 65 72 79 4c 69 6b 65 20 4d 61 67 6e 65 74 20 77 68 65 72 65 00 instance.QueryLike.Magnet.where.
dce0 00 20 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 3d 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 2e ...toQueryValue.=.toQueryValue..
dd00 20 73 68 6f 77 00 69 6e 73 74 61 6e 63 65 20 51 75 65 72 79 56 61 6c 75 65 4c 69 6b 65 20 55 52 .show.instance.QueryValueLike.UR
dd20 49 20 77 68 65 72 65 00 00 20 20 74 6f 51 75 65 72 79 56 61 6c 75 65 20 3d 20 74 6f 51 75 65 72 I.where....toQueryValue.=.toQuer
dd40 79 56 61 6c 75 65 20 2e 20 73 68 6f 77 00 69 6e 73 74 61 6e 63 65 20 51 75 65 72 79 56 61 6c 75 yValue...show.instance.QueryValu
dd60 65 4c 69 6b 65 20 49 6e 74 65 67 65 72 20 77 68 65 72 65 00 00 20 20 7d 20 64 65 72 69 76 69 6e eLike.Integer.where....}.derivin
dd80 67 20 28 45 71 2c 20 4f 72 64 2c 20 54 79 70 65 61 62 6c 65 29 00 20 20 2c 20 73 75 70 70 6c 65 g.(Eq,.Ord,.Typeable)...,.supple
dda0 6d 65 6e 74 20 3a 3a 20 4d 61 70 20 54 65 78 74 20 54 65 78 74 00 20 20 20 20 2d 2d 20 7c 20 41 ment.::.Map.Text.Text.....--.|.A
ddc0 64 64 69 74 69 6f 6e 61 6c 20 6f 72 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 70 61 72 61 6d 65 dditional.or.experimental.parame
dde0 74 65 72 73 2e 00 00 20 20 2c 20 74 72 61 63 6b 65 72 20 3a 3a 20 4d 61 79 62 65 20 55 52 49 00 ters.....,.tracker.::.Maybe.URI.
de00 20 20 20 20 2d 2d 20 7c 20 55 52 49 20 74 6f 20 74 68 65 20 74 72 61 63 6b 65 72 2e 00 00 20 20 ....--.|.URI.to.the.tracker.....
de20 2c 20 65 78 61 63 74 53 6f 75 72 63 65 20 20 20 20 20 20 3a 3a 20 4d 61 79 62 65 20 55 52 49 00 ,.exactSource......::.Maybe.URI.
de40 20 20 20 20 2d 2d 20 7c 20 44 69 72 65 63 74 20 6c 69 6e 6b 20 74 6f 20 74 68 65 20 72 65 73 6f ....--.|.Direct.link.to.the.reso
de60 75 72 63 65 2e 00 00 20 20 2c 20 61 63 63 65 70 74 61 62 6c 65 53 6f 75 72 63 65 20 3a 3a 20 4d urce.....,.acceptableSource.::.M
de80 61 79 62 65 20 55 52 49 00 20 20 20 20 2d 2d 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 2e 00 aybe.URI.....--.amount.of.time..
dea0 20 20 20 20 2d 2d 20 64 6f 77 6e 6c 6f 61 64 20 74 68 65 20 66 69 6c 65 20 69 6e 20 74 68 65 20 ....--.download.the.file.in.the.
dec0 62 69 74 74 6f 72 72 65 6e 74 20 6e 65 74 77 6f 72 6b 20 69 6e 20 61 20 64 65 66 69 6e 65 64 00 bittorrent.network.in.a.defined.
dee0 20 20 20 20 2d 2d 20 7c 20 41 20 73 6f 75 72 63 65 20 74 6f 20 62 65 20 71 75 65 72 69 65 64 20 ....--.|.A.source.to.be.queried.
df00 61 66 74 65 72 20 6e 6f 74 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 66 69 6e 64 20 61 6e 64 after.not.being.able.to.find.and
df20 00 00 20 20 2c 20 6b 65 79 77 6f 72 64 54 6f 70 69 63 20 3a 3a 20 4d 61 79 62 65 20 54 65 78 74 ....,.keywordTopic.::.Maybe.Text
df40 00 20 20 20 20 2d 2d 20 7c 20 53 65 61 72 63 68 20 73 74 72 69 6e 67 2e 00 00 20 20 2c 20 6d 61 .....--.|.Search.string.....,.ma
df60 6e 69 66 65 73 74 20 3a 3a 20 4d 61 79 62 65 20 54 65 78 74 00 20 20 20 20 2d 2d 20 7c 20 55 52 nifest.::.Maybe.Text.....--.|.UR
df80 49 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 6d 61 6e 69 66 65 73 74 2c 20 65 2e 67 2e 20 61 20 6c I.pointing.to.manifest,.e.g..a.l
dfa0 69 73 74 20 6f 66 20 66 75 72 74 68 65 72 20 69 74 65 6d 73 2e 00 00 20 20 2c 20 65 78 61 63 74 ist.of.further.items.....,.exact
dfc0 4c 65 6e 67 74 68 20 3a 3a 20 4d 61 79 62 65 20 49 6e 74 65 67 65 72 00 20 20 20 20 2d 2d 20 7c Length.::.Maybe.Integer.....--.|
dfe0 20 53 69 7a 65 20 6f 66 20 74 68 65 20 72 65 73 6f 75 72 63 65 20 69 6e 20 62 79 74 65 73 2e 00 .Size.of.the.resource.in.bytes..