/* Copyright (c) 2008 Lars-Dominik Braun Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* decryption key for audio urls; maybe a bit (is) wrong? */ const unsigned int in_key_n = 16; static const unsigned long in_key_p [16 + 2] = { 2296512344, 484947285, 143549968, 244631162, 2837862836, 4220619567, 3243088304, 3951650136, 2299087613, 1520074566, 158025345, 411178977, 2673524149, 2453762392, 3332626847, 495515519, 3311155458, 682696847}; static const unsigned long in_key_s [4][256] = {{ 2128658832, 3697692759, 569211301, 3742887157, 3467885802, 2147119513, 4192337968, 3437898897, 4016418030, 2157619138, 583117442, 401727980, 3072617582, 4077876221, 3671778389, 2649329515, 2640655243, 2071373660, 4085571303, 3553863527, 1133039616, 3437126533, 2490500932, 3370401494, 1573762703, 2175142928, 2392296103, 3236551751, 5067846, 165858937, 3228665328, 743820206, 3002649133, 59643220, 2417792365, 3142818654, 3427635772, 933884315, 3613996694, 3618979812, 2360591210, 1682801625, 1453625472, 3456164020, 879269100, 328554126, 2275316178, 1272030676, 2500712587, 749073271, 3896454727, 4088023553, 687999959, 2469782053, 3766986318, 3451556060, 1754326800, 2344570827, 1225379552, 2644890178, 4208616430, 27004362, 2596728114, 3890571680, 2829628313, 2146575973, 2604179370, 875685754, 3789988084, 3710311422, 429817720, 2489171178, 2417320237, 2057030818, 513667518, 2609637543, 3883646020, 812728312, 2465864861, 3479050491, 3739187534, 702439720, 1035737271, 4260354581, 3936608854, 4227404962, 3051622786, 2736574401, 3016354133, 2400405798, 2156979612, 3314004968, 2051685990, 19000029, 2263979164, 3289285288, 2054307889, 3734311294, 491634325, 2190156983, 2148046895, 3704963939, 3127900644, 2980448167, 1614044505, 3660721912, 980501804, 3968515521, 3295860462, 148000610, 243717540, 1863084385, 1451686518, 1937128161, 1288731877, 2328067692, 2439034247, 4197306741, 1938401619, 2555038861, 15219513, 3628919040, 3510915315, 1489139789, 1991410177, 4187354845, 225137599, 2062447135, 2501882488, 2480492692, 567737617, 1036415794, 3981376799, 913768078, 3065006006, 1820394782, 254348814, 1325117948, 2909116826, 2511990395, 1715211232, 3189554177, 3567373216, 3556507372, 2262599526, 693598649, 1099914476, 3672117902, 2638339847, 3299432663, 1538274707, 1268479177, 201923410, 3061278922, 592173100, 3679063927, 1977344805, 213188203, 1473160814, 655738293, 2307755395, 1102800598, 1224966405, 2974183441, 2587452770, 3896724147, 2477674660, 3932777844, 2839523899, 2303064094, 2319028970, 3994938371, 2531716662, 1149932666, 2122231008, 3430946183, 1123953689, 3918797176, 3113636643, 569397975, 873251573, 1006744943, 2358488303, 1706139356, 3748979395, 2868106633, 3327350140, 965732034, 4203817156, 1154349457, 4176400058, 2506261162, 3522349991, 2825760889, 2975958252, 3380371122, 4191046999, 3067498012, 2000197545, 1596105051, 43102264, 3960878063, 2991269966, 2651508977, 503441229, 3370966567, 4126958357, 3479998414, 1663772473, 4055833092, 3058057733, 1519395627, 4081731088, 3498430713, 4087687311, 1900626065, 1479961327, 754122244, 2327746245, 22675233, 927443873, 2073499140, 1474870579, 2638639189, 1805139553, 953981772, 3390679038, 1167912887, 95410946, 648812050, 3545853366, 4257643329, 3476212461, 4247642195, 1702876451, 2551474845, 4015716228, 2857099433, 731476059, 1034709055, 189485318, 706939940, 2448745741, 3738990808, 2158196067, 272411170, 2036216135, 3989855351, 849465627, 2117968867, 4237903689, 1146595723, 4164488914, 3196930194, 3197964737, 931629632}, {3548148628, 2211365680, 2089986676, 1655452034, 2053784589, 1508902489, 1547502091, 444611061, 1464377684, 1323694999, 2081672378, 2096063287, 1954615531, 2547897755, 51446746, 3545549320, 3792454069, 2011748624, 603352473, 4082037335, 3248566449, 1996054105, 367955388, 45294088, 4191310435, 3560573315, 2208097136, 317000604, 973063857, 1901052476, 3594901368, 2372855512, 3754787831, 1249648311, 1236196835, 1003906284, 1584089589, 1911913406, 4148522202, 4117131048, 464855281, 57312436, 4033903816, 3327693898, 328640972, 2473759010, 656272857, 3330556738, 1461007611, 4149032611, 389760877, 167691223, 465324772, 3366565279, 1394746618, 3064354168, 587646460, 1027350944, 1109309161, 1888507858, 2555943894, 1275409665, 3956869818, 2047644060, 3068621980, 2124508377, 1890051703, 78829997, 531871861, 864999736, 3976110411, 550237492, 3644799421, 963672361, 2733945391, 2843027788, 3240585992, 329717593, 2367858037, 520750960, 4141805924, 918099938, 3102520697, 2717021903, 600629173, 2513538841, 2432383934, 1222912227, 2250136015, 1948713135, 3303451350, 4045419046, 3737856603, 1818504227, 1009479111, 3646248578, 3257619203, 1147482990, 4107385262, 2863997375, 339020927, 1396395445, 122111967, 1785723989, 1749970671, 35631032, 229501423, 1725806672, 3827732449, 2328758187, 1666770172, 2201735539, 2116234489, 2696008844, 2750826860, 2456856093, 2196939312, 3967735672, 3306243803, 1276372623, 2299710358, 2465827193, 267327425, 4294932395, 578153752, 2087579097, 848263718, 1627539853, 366252371, 4134377219, 2567776591, 1116309489, 1592683734, 1135214447, 4078309104, 883503540, 1924140744, 688979784, 825732389, 3771827534, 181267738, 3001917334, 3164692624, 3534114336, 774568626, 1184890620, 1267945932, 437602121, 3742699662, 2050213757, 1614127546, 163079514, 1753969382, 119415495, 1663983235, 1291217790, 1366095958, 1281385911, 534413482, 2423430219, 766473010, 1036107689, 3882538353, 4072983665, 2120880908, 2578509329, 3528269059, 3019425823, 2507098354, 2754316745, 1302297579, 3471472873, 3481343609, 1110986617, 3582075135, 3938075187, 1835529863, 114194332, 780559136, 1585511111, 2709377510, 4663784, 1983420553, 1741851203, 3571748766, 4159418382, 2298273138, 3444544863, 1646590981, 4150277106, 2922217812, 1591569840, 2501244910, 2307277202, 2486747582, 4137585745, 3264322649, 617810905, 592289569, 2957603935, 1720250393, 1282606586, 3978699383, 3209807216, 3518166905, 1471743803, 3699500250, 3010910150, 1141653188, 3125105165, 1708028061, 91863804, 3079950642, 1336661688, 585800731, 1074729853, 3353177727, 2984823139, 3539233959, 2168918504, 3793136000, 2920883668, 963999784, 859512981, 1285863374, 1626228743, 1196896976, 3246829424, 2086049373, 1817626830, 1917959116, 1920789886, 256350158, 780762582, 213624274, 3580963146, 1783941209, 3588539293, 4013209723, 1482977330, 74981631, 559033976, 2469748467, 2880298757, 1099765558, 981518101, 3991034119, 758521765, 2537136421, 2024757999, 1200463233, 1909122492, 1302732640, 1250260811, 1659083864, 1287777740}, {3554236288, 810416052, 158802161, 131289115, 2593446892, 990921853, 88040369, 3223991913, 3314506608, 978106573, 164800071, 1122917831, 3948723682, 884979134, 954240927, 1937491233, 3177479616, 3510454307, 2556095171, 2095156345, 2078654475, 2247021842, 3261581243, 3126392505, 2156995676, 3163839338, 2870938297, 793620229, 1688422899, 512503459, 2068937319, 1069519665, 2140042310, 3631453050, 4119336486, 3936344495, 1966578659, 3270436351, 1287213770, 2499138104, 1312726036, 821755190, 2864942520, 2022246070, 1346794584, 3958680043, 2898351670, 2292291399, 440681239, 1464442920, 2295074635, 2252760328, 490755791, 301606609, 1139180458, 2816955463, 1563942872, 36955748, 3471174646, 4103015072, 2739976564, 1133336123, 824381589, 315115904, 3583285615, 1598273833, 2548883769, 618878114, 4030191589, 925875053, 4125012162, 1453444251, 3684935211, 4170815349, 4112292800, 3897892094, 3514815579, 3146810609, 693096477, 1806637049, 1659631547, 2330028127, 4286685584, 4168728225, 3735359230, 1236064845, 1245391878, 2346463708, 609365761, 253579419, 3740453275, 3206055112, 1763220332, 1154782396, 1635249739, 106454628, 1237878011, 3960679739, 1259117609, 1325699946, 390092277, 2014447649, 1310659372, 2776516651, 2445505501, 1354818074, 1167516370, 2429917704, 3779915141, 1893127422, 2330145579, 1193157505, 1509056626, 3153125681, 1404909737, 4176954964, 2943369187, 3147767230, 3349110054, 943888967, 2421425468, 865909068, 3907763794, 1570630418, 1473683708, 1023355763, 725783349, 3425397802, 2607056779, 2248801744, 739959172, 1925660432, 3214198318, 1841031619, 4141680013, 4210070222, 3152438583, 3667048743, 4281076589, 3634719715, 945809397, 2561946849, 1225545006, 3306764442, 3409589233, 1598008340, 3831187310, 1733352819, 932119442, 3082624907, 1422551176, 2766356888, 819609813, 3288351621, 1230545957, 680725051, 977757332, 2721303922, 440647377, 3207512234, 1130262272, 2587644460, 2563067841, 681411150, 4115404362, 1110175982, 3158946095, 643581087, 110203798, 2836680784, 1488118585, 4070154931, 2991733788, 4119545618, 948002949, 3109157700, 897958133, 169664173, 733813972, 1982075210, 1205004562, 375168004, 2810680328, 2246661195, 2809488804, 1054033161, 3346180847, 3943569363, 2728441744, 844689912, 2821295363, 907982464, 2715150073, 3800824232, 1719926814, 2155188792, 2709493441, 1938625885, 2114268368, 466087366, 2409883443, 2025557853, 1344441334, 3617674189, 817973227, 1955080900, 2845524782, 3745246674, 2632253171, 1257730466, 2040723666, 2708337140, 543947183, 1488485060, 292373701, 491952464, 2057755552, 3400090358, 1900715831, 3612192944, 1987004224, 3567497054, 878496315, 1604053755, 1176518849, 2279327360, 1748284085, 303657754, 2782089490, 506128051, 1614889427, 2801053043, 1202125863, 1360990060, 3802296025, 879327051, 2871259251, 2348346866, 3233806136, 3311161207, 1838180420, 544662648, 1972132486, 3765637101, 3464671957, 2834850978, 4022703989, 3719086717, 3051662122, 1658462487, 3404201395, 2558383819, 401622436, 4158099338, 3191926275, 3900648207}, {2906980109, 3244040462, 3842009756, 4177586565, 3128780359, 389257510, 1433826605, 3239482476, 2804682224, 1095312530, 4264552109, 500527977, 320084931, 3448532078, 87643447, 1233852435, 3799263706, 849541286, 3654913140, 1720613777, 1204288368, 3558012178, 1852713204, 2991301237, 712827210, 512347544, 2209552811, 2380728472, 2061298391, 1187415824, 4154911301, 4057990159, 2349469378, 2545159130, 1775747174, 2591410713, 2229519704, 4057763051, 34983877, 2018348659, 3051995695, 2099457161, 122176200, 3614959731, 1011099307, 2707461689, 2710657949, 1519288114, 297037952, 350201262, 511044781, 1108019973, 3101610154, 3969643310, 997019662, 1683546324, 1465743109, 358651173, 4222805613, 268914497, 652780242, 3508590503, 414591203, 3313257121, 2605462681, 1291711251, 2142143497, 2733700582, 3268848903, 1669040160, 3061666233, 2897555767, 3277977602, 218193538, 551879950, 2651413813, 1304346475, 1672107670, 1251053219, 57431126, 1608803694, 1191480742, 904537817, 645123498, 3097150410, 2924217906, 611983353, 2293480932, 2034270664, 986691666, 741722320, 3726624549, 1403284782, 616727866, 3292944289, 1733282574, 3943960954, 892568249, 1602920243, 2055039837, 1121174416, 1554530122, 1969210884, 1627002077, 255323245, 659290392, 413679961, 3355601324, 853401555, 1923886853, 1911568009, 275978186, 4110789833, 3785826431, 1880789664, 1834557896, 3185455839, 4112428490, 1909962454, 901840141, 1702581561, 930703993, 544235727, 1917462098, 3576405067, 2313599093, 3209909484, 1078722592, 2300716722, 488195978, 843151466, 1885259855, 2660301574, 2493041758, 3885484332, 3596373427, 4091285124, 18165664, 2851846839, 2066994388, 3779380391, 1638886162, 1203036700, 3207436785, 3839055612, 992380467, 1617890949, 3271283843, 1985171789, 1589586926, 59295131, 2201447571, 1802886001, 1524685393, 1619130887, 4277411271, 1632946657, 916420718, 1988186984, 1087584352, 328546419, 699568195, 752262087, 2593455512, 2054325461, 224511444, 1937218889, 4177808215, 3674484078, 2202083318, 1662921402, 431990019, 3263118914, 1513147185, 3599292635, 1667827679, 4194190277, 2902980642, 1527280030, 2323092096, 3686881320, 1844238265, 234981319, 3601863066, 3591054018, 1245988708, 1982786555, 3217502413, 2338410264, 1184032842, 686321676, 2833157096, 3648900116, 3352580660, 2473019798, 2877120488, 4117315385, 105188436, 3682865154, 923331766, 858955270, 2848822230, 1157150450, 2597825900, 3704699325, 1687529016, 2601511833, 3714180651, 788566728, 3803114264, 2289638900, 931304621, 2478429664, 942053111, 2072299200, 1527540710, 1639028869, 4075126463, 2520412384, 2832409251, 2538838994, 523574607, 99984740, 1238458557, 566420211, 1326154395, 3447105210, 4266037523, 2847987284, 3693440980, 1764601394, 4086197753, 3561101407, 1750462971, 3195538424, 962192249, 232305254, 4054331716, 2477415058, 3576429591, 2979101766, 2766793053, 3112000711, 3423119961, 357902640, 1320412483, 2720212787, 1427733989, 99871163, 1794019431, 1332239274, 653929270, 3402307422, 1010543326, 3438754380, 3221207255}};