python 中国裁决文书网 爬虫,完整版!!!

代码:

import execjs
import requests
headers={
                "Accept":"*/*",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.8",
"Cache-Control":"max-age=0",
"Connection":"keep-alive",
"Content-Length":"40",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Cookie":"_gscu_2116842793=389615802hdkze57; _gscbrs_2116842793=1; Hm_lvt_d2caefee2de09b8a6ea438d74fd98db2=1538961580; ASP.NET_SessionId=rvjjcq0lq41gqsrphevulxqd; Hm_lpvt_d2caefee2de09b8a6ea438d74fd98db2=1538988174; vjkl5=a8289f8999ff4e57810148185fad76048086c78b",
"Host":"wenshu.court.gov.cn",
"Origin":"http://wenshu.court.gov.cn",
"Referer":"http://wenshu.court.gov.cn/list/list/?sorttype=1&number=&guid=690f1e5d-fc1b-c74024a3-b1c2ed7f4032&conditions=searchWord+QWJS+++%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2:%E5%A4%A7%E8%BF%9E%20%E4%B8%9C%E8%BD%AF",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
"X-Requested-With":"XMLHttpRequest"
    }
def get_guid():
    ctx = execjs.compile("""
            var createGuid = function () {
            return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
            }
            function aa(){
                return createGuid() + createGuid() + "-" + createGuid() + "-" + createGuid() + createGuid() + "-" + createGuid() + createGuid() + createGuid();;

            }
    """)
    func = ctx.call("aa")
    return  func

def get_number():

    guid=get_guid()
    url='http://wenshu.court.gov.cn/ValiCode/GetCode'
    data ={'guid':guid}
    res=requests.post(url,headers=headers,data=data)
    return res.text.strip()

def getvlx5():
    with open('getkey.js') as fp:
        js = fp.read()
        ctx = execjs.compile(js)
        vl5x = ctx.call("getKey", "a8289f8999ff4e57810148185fad76048086c78b")
        return vl5x

上面是分别获取 vlx5,number 和guid的三个参数

vl5x = ctx.call("getKey", "a8289f8999ff4e57810148185fad76048086c78b")

第二个参数是上面header中的cookies里面的 vlx5的值 所以每次请求都得获取最新的cookies ,第一个参数就是 getkey.js中的方法名,getKey代码在下面

def postUrl():
    guid = get_guid()
    print(guid)
    number = get_number()
    print(number)
    vl5x=getvlx5()
    print(vl5x)
    payload = {'Param': '案件类型:刑事案件', 'Index': '1','Page': '10', 'Order': '法院层级','Direction': 'asc', 'vl5x': vl5x,'number':number, 'guid': guid}
    res=requests.post("http://wenshu.court.gov.cn/List/ListContent",data=payload,headers=headers)
    print(res.text)

然后post请求,获取的就是json对象 其中值有

runEval的值(这个值 是总的一个列表就一个) 和每条信息对应的文书ID

下面的就是详情页 的url例如:

http://wenshu.court.gov.cn/content/content?DocID=c4f382e9-394c-408e-8ad5-a878010c71af&KeyWord= 

所以我们要获取的docID

headers={
                "Accept":"*/*",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.8",
"Cache-Control":"max-age=0",
"Connection":"keep-alive",
"Content-Length":"40",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Cookie":"_gscu_2116842793=389615802hdkze57; _gscbrs_2116842793=1; Hm_lvt_d2caefee2de09b8a6ea438d74fd98db2=1538961580; ASP.NET_SessionId=rvjjcq0lq41gqsrphevulxqd; Hm_lpvt_d2caefee2de09b8a6ea438d74fd98db2=1538988174; vjkl5=a8289f8999ff4e57810148185fad76048086c78b",
"Host":"wenshu.court.gov.cn",
"Origin":"http://wenshu.court.gov.cn",
"Referer":"http://wenshu.court.gov.cn/list/list/?sorttype=1&number=&guid=690f1e5d-fc1b-c74024a3-b1c2ed7f4032&conditions=searchWord+QWJS+++%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2:%E5%A4%A7%E8%BF%9E%20%E4%B8%9C%E8%BD%AF",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
"X-Requested-With":"XMLHttpRequest"
    }
rid="w61aw43CjsKCMBB+FsKMwoc2wph9AcOiw4lHw5jDo8KkIRvDlMKVw4PCisKpeDLCvsO7AsK6w4hPEVjCqEzDtEvDiBjDmsOpw4w3w5/DjMK0NHHCvgvDl8KbY8Kgw4NDwrzDvMKMdcK4w7/DvsOYw6rDqGfCtcO7w5LCq2jCvRHCrsOjwpLCgmAtFiABw6I9KsOkFQJ5wpN2w4XCrsKEw5xCwoB3MAvCgcOswoExJBdRwoMdw5ABYsOABEgAJ8KIH8KhwoMnBMKHwoAREjIAwoFCYCjCpMOnw7nDi1kQw63Cj8KxPgVxwqRnwp5Pwr5KHiHDnMOzJVXDi8Kfw7NFw5J1JSVCKVc4w5nChMKkwrLDjXTCon0me8Kdw5/Dv8KdQCIdTjTDiElnSFHDslNxWFZ3bgvCmsKdVXAbdR9iKlozwo/Dp8KuMsOUdcKKahDCjDE8wrDCncKDw6zDhmjDocK1FXZHwo0+asK9dcO/wrdgw4DCqsKhS8OLwrXDtVfCpsKjWWZmwoQjHBvDpsKqXWbDicKDHSZEw4/ClsKfwpxowrZFw5rCrz7CqsK8W8OdE3hQYCdzw41Hw7jCiD4oP8KJw60TNsOSwo7DmcO0VcOBfmPDosOQCzYSw77DlA5rw7fDuHw4w5bDnE4UCnxPw6TCmwfCgBvCisOaQcOew6VGw4jCki/DgwXCsMOlK8OFPFo0SAPCrsKwwozDiAPCnsKrRynCpMO3Cw=="
weshuid="DcKOwrcNw4BADMOEVlJ6woVSccO/wpHDrCsJEjjDgjcjwplvZ8Kzw4fDq8KiKzXDqMOgw6duPCskL8O3YcKrNyXCp2DDnMKhX8KwwppowoXCnS7DqMOUw7rCr8K+w4ATw4LDjkbCmsOqw6ZMwowKecOGHG3CvsO/HsOFwp8vw5BQAMOzwoJPEk7DssO2aBFew6F7w5dgEUrDrUnDtcObw6QxViVIwqpCBsK2w7fCp8KOwqPCuAHCosKGXcO8w7LCiCXDv8Onw5jDlFYAHw=="
payload = {'runEval': rid, 'docIds': weshuid}
res=requests.post("http://wenku.jwzlai.com/common/decode/docId",data=payload,headers=headers)
print(res.text)

rid就是runEval的值 都复制过来,a就是每条数据对应的文书ID 请求结果为下面

{"msg":"","code":0,"data":{"DcKOwrcNw4BADMOEVlJ6woVSccO/wpHDrCsJEjjDgjcjwplvZ8Kzw4fDq8KiKzXDqMOgw6duPCskL8O3YcKrNyXCp2DDnMKhX8KwwppowoXCnS7DqMOUw7rCr8K+w4ATw4LDjkbCmsOqw6ZMwowKecOGHG3CvsO/HsOFwp8vw5BQAMOzwoJPEk7DssO2aBFew6F7w5dgEUrDrUnDtcObw6QxViVIwqpCBsK2w7fCp8KOwqPCuAHCosKGXcO8w7LCiCXDv8Onw5jDlFYAHw==":"c4f382e9-394c-408e-8ad5-a878010c71af"}}

code是0就表示对了

最后文本请求 是这个url:http://wenshu.court.gov.cn/CreateContentJS/CreateContentJS.aspx?DocID=8252121f-8260-4241-b707-018d52d151ca

可能出现的错误 

remind key :出现这个就是表示上面的header 中的cookies过期了

请求docid的时候出现html文本 是nignx错误什么的 那表示 runEval和文书ID过期了 需要重新替换了 还有cookies过期

如果请求的文书ID对应的docid对应为空 那么就是cookies过期或runEval和文书ID过期了

怎么实施自动获取cookies 用的是selenium  可以自动获取 或者你自己模拟登陆 然后获取

哪个地方有问题 或者不明白 请留言 一起讨论

至于getKey.js  复制到一个js文件中 然后读取就行了

var return_key;
var _fxxx = function (p, a, c, k, e, d) { e = function (c) { return (c < a ? "" : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) d[e(c)] = k[c] || e(c); k = [function (e) { return d[e] }]; e = function () { return '\\w+' }; c = 1; }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p; };
function de(str, count, strReplace) {
    var arrReplace = strReplace.split('|');
    for (var i = 0; i < count; i++) {
        str = str.replace(new RegExp('\\{' + i + '\\}', 'g'), arrReplace[i]);
    }
    return str;
}
function getKey(key) {
    return_key = key;
    eval(de("eval(_fxxx('e n(7){9 d=0;j(9 i=0;i<7.k;i++){d+=(7.g(i)<<(i%m))}f d}e p(7){9 d=0;j(9 i=0;i<7.k;i++){d+=(7.g(i)<<(i%m))+i}f d}e E(7,o){9 d=0;j(9 i=0;i<7.k;i++){d+=(7.g(i)<<(i%m))+(i*o)}f d}e x(7,o){9 d=0;j(9 i=0;i<7.k;i++){d+=(7.g(i)<<(i%m))+(i+o-7.g(i))}f d}e z(7){9 7=7.8(5,5*5)+7.8((5+1)*(5+1),3);9 a=7.8(5)+7.8(-4);9 b=7.8(4)+a.8(-6);f h(7).8(4,l)}e w(7){9 7=7.8(5,5*5)+\"5\"+7.8(1,2)+\"1\"+7.8((5+1)*(5+1),3);9 a=7.8(5)+7.8(4);9 b=7.8(t)+a.8(-6);9 c=7.8(4)+a.8(6);f h(c).8(4,l)}e A(7){9 7=7.8(5,5*5)+\"r\"+7.8(1,2)+7.8((5+1)*(5+1),3);9 a=n(7.8(5))+7.8(4);9 b=n(7.8(5))+7.8(4);9 c=7.8(4)+b.8(5);f h(c).8(1,l)}e y(7){9 7=7.8(5,5*5)+\"r\"+7.8(1,2)+7.8((5+1)*(5+1),3);9 a=p(7.8(5))+7.8(4);9 b=7.8(4)+a.8(5);9 c=n(7.8(5))+7.8(4);f h(b).8(3,l)}e B(7){9 7=7.8(5,5*5)+\"2\"+7.8(1,2)+7.8((5+1)*(5+1),3);9 d=0;j(9 i=0;i<7.8(1).k;i++){d+=(7.g(i)<<(i%m))}9 s=d+7.8(4);9 d=0;9 a=7.8(5);j(9 i=0;i<a.k;i++){d+=(a.g(i)<<(i%m))+i}a=d+\"\"+7.8(4);9 b=h(7.8(1))+n(a.8(5));f h(b).8(3,l)}e v(7){9 q=u C();9 7=q.F(7.8(5,5*5)+7.8(1,2)+\"1\")+7.8((5+1)*(5+1),3);9 a=p(7.8(4,D))+7.8(-4);9 b=h(7.8(4))+a.8(2);9 a=7.8(3);9 c=n(7.8(5))+7.8(4);9 s=d+7.8(4);9 d=0;j(9 i=0;i<a.k;i++){d+=(a.g(i)<<(i%t))+i}a=d+\"\"+7.8(4);f h(7).8(4,l)}', 42, 42, '|||||||str|substr|var||||long|{0}|return|charCodeAt|hex_md5||for|length|24|16|strToLong|step|strToLongEn|base|15|aa|12|new|{1}5|{1}1|strToLongEn3|{1}3|{1}0|{1}2|{1}4|Base64|10|strToLongEn2|encode'.split('|'), 0, {}))", 4, "function|makeKey_|(k(0)+|(c(0)+"))
    eval(_fxxx('o B(8){d j=p q();d 8=8.9(5,5*5)+8.9((5+1)*(5+1),3);d a=j.s(8.9(4,G))+8.9(2);d b=8.9(6)+a.9(2);d c=x(8.9(5))+8.9(4);d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))+i}a=e+""+8.9(4);n l(b).9(2,m)}o F(8){d j=p q();d 8=j.s(8.9(5,5*4)+"E"+8.9(1,2))+8.9((5+1)*(5+1),3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k+5))+3+5}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(4);d b=l(8.9(1))+x(a.9(5));n l(b).9(3,m)}o H(8){d j=p q();d 8=j.s(8.9(5,5*5-1)+"5"+"-"+"5")+8.9(1,2)+8.9((5+1)*(5+1),3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(4);d b=l(8.9(1))+K(a.9(5));n l(b).9(4,m)}o J(8){d 8=8.9(5,5*5)+"5"+8.9(1,2)+"1"+8.9((5+1)*(5+1),3);d a=8.9(5)+8.9(4);d b=8.9(I)+a.9(-6);d c=t(8.9(4))+a.9(6);n l(c).9(4,m)}o w(8){d j=p q();d 8=j.s(8.9(5,5*5-1)+"5")+8.9(1,2)+8.9((5+1)*(5+1),3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(4);d b=l(8.9(1))+t(a.9(5));n l(b).9(4,m)}o D(8){d j=p q();d 8=8.9(5,5*5-1)+"2"+8.9(1,2)+8.9((5+1)*(5+1),3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(2);d b=8.9(1)+t(a.9(5));n l(b).9(2,m)}o y(8){d j=p q();d 8=8.9(5,5*5-1)+8.9((5+1)*(5+1),3)+"2"+8.9(1,2);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(2);d b=8.9(1)+t(8.9(5));n l(b).9(1,m)}o z(8){d j=p q();d 8=8.9(5,5*5-1)+"2"+8.9(1,2);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(2);d b=j.s(8.9(1)+t(8.9(5)));n l(b).9(1,m)}o C(8){d j=p q();d 8=8.9(5,5*5-1)+"2"+8.9(1,2);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(2);d b=j.s(8.9(1)+8.9(5)+8.9(1,3));n t(b).9(1,m)}o A(8){d j=p q();d 8=8.9(5,5*5-1)+"2"+8.9(1,2);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%k))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))}a=e+""+8.9(2);d b=j.s(a.9(1)+8.9(5)+8.9(2,3));n t(b).9(1,m)}o N(8){d j=p q();d 8=8.9(5,5*5-1)+"2"+8.9(1,2)+"-"+"5";d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%u))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))+i}a=e+""+8.9(2);d b=j.s(a.9(1))+v(8.9(5),5)+8.9(2,3);n l(b).9(2,m)}o L(8){d j=p q();d 8=8.9(5,5*5-1)+"7"+8.9(1,2)+"-"+"5";d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%u))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))+i}a=e+""+8.9(2);d b=j.s(a.9(1))+v(8.9(5),5+1)+8.9(2+5,3);n l(b).9(0,m)}o R(8){d j=p q();d 8=8.9(5,5*5-1)+"7"+8.9(1,2)+"5"+8.9(2+5,3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%u))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))+i}a=e+""+8.9(2);d b=a.9(1)+v(8.9(5),5+1)+8.9(2+5,3);n l(b).9(0,m)}o P(8){d j=p q();d 8=8.9(5,5*5-1)+"7"+8.9(5,2)+"5"+8.9(2+5,3);d e=0;h(d i=0;i<8.9(1).g;i++){e+=(8.f(i)<<(i%u))}d r=e+8.9(4);d e=0;d a=8.9(5);h(d i=0;i<a.g;i++){e+=(a.f(i)<<(i%k))+i}a=e+""+8.9(2);d b=a.9(1)+O(8.9(5),5-1)+8.9(2+5,3);n l(b).9(0,m)}o M(8){n l(w(8)+Q(8)).9(1,m)}', 54, 54, '||||||||str|substr||||var|long|charCodeAt|length|for||base|16|hex_md5|24|return|function|new|Base64|aa|encode|hex_sha1|11|strToLongEn2|makeKey_10|strToLong|makeKey_12|makeKey_13|makeKey_15|makeKey_6|makeKey_14|makeKey_11|55|makeKey_7|10|makeKey_8|12|makeKey_9|strToLongEn|makeKey_17|makeKey_20|makeKey_16|strToLongEn3|makeKey_19|makeKey_5|makeKey_18'.split('|'), 0, {}))
    eval(_fxxx('6 3f(0){7 5(1v(0)+g(0)).8(2,24)}6 1w(0){7 5(k(0)+b(0)).8(3,24)}6 1x(0){7 5(i(0)+9(0)).8(4,24)}6 1s(0){7 5(j(0)+a(0)).8(1,24)}6 1t(0){7 5(h(0)+c(0)).8(2,24)}6 1u(0){7 5(f(0)+m(0)).8(3,24)}6 1y(0){7 5(e(0)+g(0)).8(4,24)}6 1C(0){7 5(d(0)+l(0)).8(1,24)}6 1D(0){7 5(b(0)+g(0)).8(2,24)}6 1E(0){7 5(9(0)+l(0)).8(3,24)}6 1z(0){7 5(a(0)+n(0)).8(4,24)}6 1A(0){7 5(c(0)+k(0)).8(3,24)}6 1B(0){7 5(m(0)+i(0)).8(4,24)}6 1i(0){7 5(g(0)+j(0)).8(1,24)}6 1j(0){7 5(l(0)+h(0)).8(2,24)}6 1k(0){7 5(n(0)+f(0)).8(3,24)}6 1f(0){7 5(1g(0)+e(0)).8(1,24)}6 1h(0){7 5(o(0)+d(0)).8(2,24)}6 1l(0){7 5(k(0)+b(0)).8(3,24)}6 1p(0){7 5(i(0)+9(0)).8(4,24)}6 1q(0){7 5(j(0)+a(0)).8(3,24)}6 1r(0){7 5(h(0)+c(0)).8(4,24)}6 1m(0){7 5(f(0)+m(0)).8(1,24)}6 1n(0){7 5(e(0)+g(0)).8(2,24)}6 1o(0){7 5(d(0)+l(0)).8(3,24)}6 1V(0){7 5(b(0)+e(0)).8(4,24)}6 1W(0){7 5(9(0)+d(0)).8(1,24)}6 1X(0){7 5(a(0)+b(0)).8(2,24)}6 1S(0){7 5(c(0)+9(0)).8(3,24)}6 1T(0){7 5(m(0)+a(0)).8(4,24)}6 1U(0){7 5(g(0)+c(0)).8(1,24)}6 1Y(0){7 5(l(0)+k(0)).8(2,24)}6 22(0){7 5(o(0)+i(0)).8(3,24)}6 23(0){7 5(k(0)+j(0)).8(4,24)}6 25(0){7 5(i(0)+h(0)).8(3,24)}6 1Z(0){7 5(j(0)+f(0)).8(4,24)}6 20(0){7 5(h(0)+e(0)).8(1,24)}6 21(0){7 5(f(0)+d(0)).8(2,24)}6 1I(0){7 5(e(0)+b(0)).8(3,24)}6 1J(0){7 5(d(0)+9(0)).8(1,24)}6 1K(0){7 5(b(0)+a(0)).8(2,24)}6 1F(0){7 5(9(0)+c(0)).8(3,24)}6 1G(0){7 5(a(0)+b(0)).8(4,24)}6 1H(0){7 5(c(0)+9(0)).8(3,24)}6 1L(0){7 5(k(0)+a(0)).8(1,24)}6 1P(0){7 5(i(0)+c(0)).8(2,24)}6 1Q(0){7 5(j(0)+m(0)).8(3,24)}6 1R(0){7 5(h(0)+g(0)).8(4,24)}6 1M(0){7 5(f(0)+l(0)).8(1,24)}6 1N(0){7 5(e(0)+9(0)).8(2,24)}6 1O(0){7 5(d(0)+a(0)).8(3,24)}6 1e(0){7 5(b(0)+c(0)).8(4,24)}6 M(0){7 5(9(0)+e(0)).8(1,24)}6 D(0){7 5(a(0)+d(0)).8(2,24)}6 E(0){7 5(k(0)+b(0)).8(3,24)}6 F(0){7 5(i(0)+9(0)).8(4,24)}6 C(0){7 5(j(0)+a(0)).8(3,24)}6 z(0){7 5(h(0)+c(0)).8(4,24)}6 A(0){7 5(f(0)+h(0)).8(1,24)}6 B(0){7 5(e(0)+f(0)).8(2,24)}6 K(0){7 5(d(0)+e(0)).8(3,24)}6 L(0){7 5(k(0)+d(0)).8(1,24)}6 J(0){7 5(i(0)+b(0)).8(4,24)}6 G(0){7 5(j(0)+9(0)).8(1,24)}6 H(0){7 5(h(0)+a(0)).8(2,24)}6 I(0){7 5(f(0)+c(0)).8(3,24)}6 s(0){7 5(k(0)+k(0)).8(4,24)}6 x(0){7 5(i(0)+i(0)).8(1,24)}6 u(0){7 5(j(0)+j(0)).8(2,24)}6 p(0){7 5(h(0)+h(0)).8(3,24)}6 t(0){7 5(f(0)+f(0)).8(4,24)}6 w(0){7 5(e(0)+e(0)).8(3,24)}6 v(0){7 5(d(0)+d(0)).8(4,24)}6 y(0){7 5(b(0)+b(0)).8(1,24)}6 q(0){7 5(9(0)+9(0)).8(2,24)}6 r(0){7 5(a(0)+a(0)).8(3,24)}6 N(0){7 5(c(0)+c(0)).8(4,24)}6 14(0){7 5(m(0)+m(0)).8(3,24)}6 15(0){7 5(g(0)+g(0)).8(4,24)}6 16(0){7 5(l(0)+g(0)).8(1,24)}6 11(0){7 5(f(0)+l(0)).8(2,24)}6 12(0){7 5(e(0)+d(0)).8(1,24)}6 13(0){7 5(d(0)+b(0)).8(2,24)}6 17(0){7 5(b(0)+9(0)).8(3,24)}6 1b(0){7 5(9(0)+9(0)).8(4,24)}6 1c(0){7 5(a(0)+a(0)).8(1,24)}6 1d(0){7 5(k(0)+k(0)).8(2,24)}6 18(0){7 5(i(0)+i(0)).8(3,24)}6 19(0){7 5(j(0)+j(0)).8(4,24)}6 1a(0){7 5(h(0)+h(0)).8(1,24)}6 R(0){7 5(f(0)+f(0)).8(2,24)}6 S(0){7 5(e(0)+e(0)).8(3,24)}6 T(0){7 5(d(0)+d(0)).8(4,24)}6 O(0){7 5(b(0)+b(0)).8(3,24)}6 P(0){7 5(9(0)+9(0)).8(4,24)}6 Q(0){7 5(a(0)+a(0)).8(1,24)}6 U(0){7 5(c(0)+c(0)).8(2,24)}6 Y(0){7 5(m(0)+i(0)).8(3,24)}6 Z(0){7 5(g(0)+j(0)).8(1,24)}6 10(0){7 5(b(0)+h(0)).8(1,24)}6 V(0){7 5(9(0)+f(0)).8(2,24)}6 W(0){7 5(a(0)+e(0)).8(3,24)}6 X(0){7 5(c(0)+d(0)).8(4,24)}6 26(0){7 5(m(0)+b(0)).8(1,24)}6 3c(0){7 5(g(0)+9(0)).8(2,24)}6 3d(0){7 5(l(0)+a(0)).8(3,24)}6 3e(0){7 5(g(0)+c(0)).8(4,24)}6 39(0){7 5(l(0)+m(0)).8(1,24)}6 3a(0){7 5(n(0)+g(0)).8(2,24)}6 3b(0){7 5(k(0)+l(0)).8(3,24)}6 3i(0){7 5(i(0)+f(0)).8(4,24)}6 3j(0){7 5(j(0)+e(0)).8(3,24)}6 3k(0){7 5(h(0)+d(0)).8(4,24)}6 2E(0){7 5(f(0)+b(0)).8(1,24)}6 3g(0){7 5(e(0)+9(0)).8(2,24)}6 3h(0){7 5(d(0)+a(0)).8(1,24)}6 38(0){7 5(b(0)+k(0)).8(2,24)}6 2Z(0){7 5(9(0)+i(0)).8(3,24)}6 30(0){7 5(a(0)+j(0)).8(4,24)}6 31(0){7 5(c(0)+h(0)).8(1,24)}6 2W(0){7 5(m(0)+f(0)).8(2,24)}6 2X(0){7 5(g(0)+e(0)).8(3,24)}6 2Y(0){7 5(l(0)+d(0)).8(4,24)}6 35(0){7 5(e(0)+b(0)).8(1,24)}6 36(0){7 5(d(0)+9(0)).8(2,24)}6 37(0){7 5(b(0)+a(0)).8(3,24)}6 32(0){7 5(9(0)+c(0)).8(4,24)}6 33(0){7 5(a(0)+m(0)).8(3,24)}6 34(0){7 5(c(0)+g(0)).8(4,24)}6 3D(0){7 5(k(0)+b(0)).8(1,24)}6 3B(0){7 5(i(0)+9(0)).8(2,24)}6 3C(0){7 5(j(0)+a(0)).8(3,24)}6 3y(0){7 5(h(0)+c(0)).8(1,24)}6 3z(0){7 5(f(0)+m(0)).8(1,24)}6 3A(0){7 5(e(0)+g(0)).8(2,24)}6 3I(0){7 5(d(0)+l(0)).8(3,24)}6 3J(0){7 5(b(0)+g(0)).8(4,24)}6 3H(0){7 5(9(0)+l(0)).8(1,24)}6 3E(0){7 5(a(0)+n(0)).8(2,24)}6 3F(0){7 5(c(0)+k(0)).8(3,24)}6 3G(0){7 5(b(0)+i(0)).8(4,24)}6 3x(0){7 5(9(0)+j(0)).8(1,24)}6 3o(0){7 5(a(0)+h(0)).8(2,24)}6 3p(0){7 5(c(0)+f(0)).8(3,24)}6 3q(0){7 5(m(0)+e(0)).8(4,24)}6 3l(0){7 5(g(0)+d(0)).8(3,24)}6 3m(0){7 5(l(0)+b(0)).8(4,24)}6 3n(0){7 5(9(0)+9(0)).8(1,24)}6 3u(0){7 5(a(0)+a(0)).8(2,24)}6 3v(0){7 5(c(0)+c(0)).8(3,24)}6 3w(0){7 5(e(0)+m(0)).8(1,24)}6 3r(0){7 5(d(0)+g(0)).8(2,24)}6 3s(0){7 5(b(0)+l(0)).8(3,24)}6 3t(0){7 5(9(0)+e(0)).8(4,24)}6 2V(0){7 5(a(0)+d(0)).8(1,24)}6 2n(0){7 5(c(0)+b(0)).8(2,24)}6 2o(0){7 5(h(0)+9(0)).8(3,24)}6 2p(0){7 5(f(0)+a(0)).8(4,24)}6 2k(0){7 5(e(0)+c(0)).8(1,24)}6 2l(0){7 5(d(0)+k(0)).8(3,24)}6 2m(0){7 5(b(0)+i(0)).8(1,24)}6 2t(0){7 5(9(0)+j(0)).8(2,24)}6 2u(0){7 5(a(0)+h(0)).8(3,24)}6 2v(0){7 5(c(0)+f(0)).8(4,24)}6 2q(0){7 5(k(0)+e(0)).8(3,24)}6 2r(0){7 5(i(0)+d(0)).8(4,24)}6 2s(0){7 5(j(0)+b(0)).8(4,24)}6 2j(0){7 5(h(0)+9(0)).8(1,24)}6 2a(0){7 5(f(0)+a(0)).8(2,24)}6 2b(0){7 5(e(0)+c(0)).8(3,24)}6 2c(0){7 5(d(0)+b(0)).8(4,24)}6 27(0){7 5(b(0)+9(0)).8(1,24)}6 28(0){7 5(9(0)+a(0)).8(2,24)}6 29(0){7 5(a(0)+c(0)).8(3,24)}6 2g(0){7 5(c(0)+k(0)).8(4,24)}6 2h(0){7 5(m(0)+i(0)).8(3,24)}6 2i(0){7 5(g(0)+j(0)).8(4,24)}6 2d(0){7 5(g(0)+h(0)).8(1,24)}6 2e(0){7 5(l(0)+a(0)).8(2,24)}6 2f(0){7 5(d(0)+b(0)).8(2,24)}6 2M(0){7 5(b(0)+9(0)).8(3,24)}6 2N(0){7 5(9(0)+a(0)).8(1,24)}6 2O(0){7 5(a(0)+c(0)).8(2,24)}6 2J(0){7 5(c(0)+m(0)).8(3,24)}6 2K(0){7 5(k(0)+g(0)).8(4,24)}6 2L(0){7 5(i(0)+l(0)).8(1,24)}6 2S(0){7 5(j(0)+e(0)).8(2,24)}6 2T(0){7 5(h(0)+d(0)).8(3,24)}6 2U(0){7 5(f(0)+b(0)).8(4,24)}6 2P(0){7 5(e(0)+9(0)).8(1,24)}6 2Q(0){7 5(d(0)+a(0)).8(3,24)}6 2R(0){7 5(b(0)+c(0)).8(1,24)}6 2I(0){7 5(9(0)+k(0)).8(2,24)}6 2z(0){7 5(a(0)+i(0)).8(3,24)}6 2A(0){7 5(c(0)+j(0)).8(4,24)}6 2B(0){7 5(b(0)+h(0)).8(3,24)}6 2w(0){7 5(9(0)+f(0)).8(4,24)}6 2x(0){7 5(a(0)+e(0)).8(4,24)}6 2y(0){7 5(c(0)+d(0)).8(1,24)}6 2F(0){7 5(m(0)+b(0)).8(2,24)}6 2G(0){7 5(g(0)+9(0)).8(3,24)}6 2H(0){7 5(l(0)+a(0)).8(4,24)}6 2C(0){7 5(9(0)+c(0)).8(1,24)}6 2D(0){7 5(a(0)+m(0)).8(2,24)}', 62, 232, 'str|||||hex_md5|function|return|substr|makeKey_0|makeKey_1|makeKey_19|makeKey_4|makeKey_18|makeKey_17|makeKey_10|makeKey_3|makeKey_9|makeKey_15|makeKey_16|makeKey_14|makeKey_7|makeKey_5|makeKey_8|makeKey_12|makeKey_90|makeKey_95|makeKey_96|makeKey_87|makeKey_91|makeKey_89|makeKey_93|makeKey_92|makeKey_88|makeKey_94|makeKey_78|makeKey_79|makeKey_80|makeKey_77|makeKey_74|makeKey_75|makeKey_76|makeKey_84|makeKey_85|makeKey_86|makeKey_83|makeKey_81|makeKey_82|makeKey_73|makeKey_97|makeKey_114|makeKey_115|makeKey_116|makeKey_111|makeKey_112|makeKey_113|makeKey_117|makeKey_121|makeKey_122|makeKey_123|makeKey_118|makeKey_119|makeKey_120|makeKey_101|makeKey_102|makeKey_103|makeKey_98|makeKey_99|makeKey_100|makeKey_104|makeKey_108|makeKey_109|makeKey_110|makeKey_105|makeKey_106|makeKey_107|makeKey_72|makeKey_37|makeKey_6|makeKey_38|makeKey_34|makeKey_35|makeKey_36|makeKey_39|makeKey_43|makeKey_44|makeKey_45|makeKey_40|makeKey_41|makeKey_42|makeKey_24|makeKey_25|makeKey_26|makeKey_11|makeKey_22|makeKey_23|makeKey_27|makeKey_31|makeKey_32|makeKey_33|makeKey_28|makeKey_29|makeKey_30|makeKey_62|makeKey_63|makeKey_64|makeKey_59|makeKey_60|makeKey_61|makeKey_65|makeKey_69|makeKey_70|makeKey_71|makeKey_66|makeKey_67|makeKey_68|makeKey_49|makeKey_50|makeKey_51|makeKey_46|makeKey_47|makeKey_48|makeKey_52|makeKey_56|makeKey_57|makeKey_58|makeKey_53|makeKey_54||makeKey_55|makeKey_124|makeKey_192|makeKey_193|makeKey_194|makeKey_189|makeKey_190|makeKey_191|makeKey_198|makeKey_199|makeKey_200|makeKey_195|makeKey_196|makeKey_197|makeKey_188|makeKey_179|makeKey_180|makeKey_181|makeKey_176|makeKey_177|makeKey_178|makeKey_185|makeKey_186|makeKey_187|makeKey_182|makeKey_183|makeKey_184|makeKey_217|makeKey_218|makeKey_219|makeKey_214|makeKey_215|makeKey_216|makeKey_223|makeKey_224|makeKey_134|makeKey_220|makeKey_221|makeKey_222|makeKey_213|makeKey_204|makeKey_205|makeKey_206|makeKey_201|makeKey_202|makeKey_203|makeKey_210|makeKey_211|makeKey_212|makeKey_207|makeKey_208|makeKey_209|makeKey_175|makeKey_141|makeKey_142|makeKey_143|makeKey_138|makeKey_139|makeKey_140|makeKey_147|makeKey_148|makeKey_149|makeKey_144|makeKey_145|makeKey_146|makeKey_137|makeKey_128|makeKey_129|makeKey_130|makeKey_125|makeKey_126|makeKey_127|makeKey_21|makeKey_135|makeKey_136|makeKey_131|makeKey_132|makeKey_133|makeKey_166|makeKey_167|makeKey_168|makeKey_163|makeKey_164|makeKey_165|makeKey_172|makeKey_173|makeKey_174|makeKey_169|makeKey_170|makeKey_171|makeKey_162|makeKey_153|makeKey_154|makeKey_155|makeKey_151|makeKey_152|makeKey_150|makeKey_159|makeKey_160|makeKey_161|makeKey_158|makeKey_156|makeKey_157'.split('|'), 0, {}))
    eval(_fxxx('5 y(0){7 6(d(0)+m(0)).9(3,8)}5 z(0){7 6(e(0)+l(0)).9(4,8)}5 w(0){7 6(f(0)+e(0)).9(2,8)}5 x(0){7 6(a(0)+f(0)).9(3,8)}5 C(0){7 6(b(0)+a(0)).9(1,8)}5 D(0){7 6(c(0)+b(0)).9(2,8)}5 A(0){7 6(d(0)+c(0)).9(3,8)}5 B(0){7 6(h(0)+d(0)).9(4,8)}5 v(0){7 6(i(0)+j(0)).9(1,8)}5 p(0){7 6(e(0)+g(0)).9(2,8)}5 q(0){7 6(f(0)+k(0)).9(3,8)}5 n(0){7 6(a(0)+h(0)).9(4,8)}5 o(0){7 6(b(0)+i(0)).9(1,8)}5 t(0){7 6(c(0)+e(0)).9(3,8)}5 u(0){7 6(d(0)+a(0)).9(1,8)}5 r(0){7 6(j(0)+b(0)).9(2,8)}5 s(0){7 6(g(0)+c(0)).9(3,8)}5 N(0){7 6(k(0)+d(0)).9(4,8)}5 O(0){7 6(h(0)+M(0)).9(3,8)}5 Q(0){7 6(i(0)+m(0)).9(4,8)}5 G(0){7 6(e(0)+l(0)).9(4,8)}5 F(0){7 6(f(0)+e(0)).9(2,8)}5 H(0){7 6(a(0)+f(0)).9(3,8)}5 K(0){7 6(b(0)+a(0)).9(1,8)}5 J(0){7 6(c(0)+b(0)).9(2,8)}5 I(0){7 6(d(0)+c(0)).9(3,8)}5 E(0){7 6(a(0)+d(0)).9(4,8)}5 L(0){7 6(b(0)+j(0)).9(1,8)}5 P(0){7 6(c(0)+g(0)).9(2,8)}', 53, 53, 'str|||||function|hex_md5|return|24|substr|makeKey_19|makeKey_0|makeKey_1|makeKey_4|makeKey_17|makeKey_18|makeKey_15|makeKey_9|makeKey_10|makeKey_14|makeKey_16|makeKey_7|makeKey_3|makeKey_236|makeKey_237|makeKey_234|makeKey_235|makeKey_240|makeKey_241|makeKey_238|makeKey_239|makeKey_233|makeKey_227|makeKey_228|makeKey_225|makeKey_226|makeKey_231|makeKey_232|makeKey_229|makeKey_230|makeKey_251|makeKey_246|makeKey_245|makeKey_247|makeKey_250|makeKey_249|makeKey_248|makeKey_252|makeKey_5|makeKey_242|makeKey_243|makeKey_253|makeKey_244'.split('|'), 0, {}))
    eval(_fxxx('7 p(0){6 5(a(0)+a(0)).8(3,9)}7 G(0){6 5(n(0)+i(0)).8(4,9)}7 E(0){6 5(l(0)+j(0)).8(1,9)}7 I(0){6 5(m(0)+h(0)).8(3,9)}7 z(0){6 5(c(0)+g(0)).8(1,9)}7 C(0){6 5(b(0)+k(0)).8(2,9)}7 B(0){6 5(a(0)+f(0)).8(3,9)}7 D(0){6 5(f(0)+e(0)).8(4,9)}7 y(0){6 5(e(0)+d(0)).8(3,9)}7 A(0){6 5(d(0)+c(0)).8(4,9)}7 H(0){6 5(c(0)+b(0)).8(4,9)}7 J(0){6 5(b(0)+a(0)).8(1,9)}7 F(0){6 5(a(0)+d(0)).8(2,9)}7 x(0){6 5(g(0)+c(0)).8(3,9)}7 r(0){6 5(k(0)+b(0)).8(4,9)}7 q(0){6 5(f(0)+a(0)).8(1,9)}7 o(0){6 5(e(0)+i(0)).8(2,9)}7 v(0){6 5(d(0)+j(0)).8(3,9)}7 u(0){6 5(c(0)+h(0)).8(4,9)}7 s(0){6 5(b(0)+g(0)).8(3,9)}7 t(0){6 5(d(0)+b(0)).8(4,9)}7 w(0){6 5(c(0)+d(0)).8(1,9)}7 K(0){6 5(b(0)+c(0)).8(2,9)}7 U(0){6 5(a(0)+b(0)).8(2,9)}7 Y(0){6 5(n(0)+a(0)).8(3,9)}7 W(0){6 5(l(0)+n(0)).8(1,9)}7 X(0){6 5(m(0)+l(0)).8(2,9)}7 V(0){6 5(f(0)+m(0)).8(3,9)}7 11(0){6 5(e(0)+f(0)).8(4,9)}7 12(0){6 5(d(0)+e(0)).8(1,9)}7 Z(0){6 5(c(0)+d(0)).8(2,9)}7 10(0){6 5(b(0)+c(0)).8(3,9)}7 N(0){6 5(a(0)+b(0)).8(4,9)}7 O(0){6 5(i(0)+a(0)).8(1,9)}7 L(0){6 5(j(0)+i(0)).8(3,9)}7 M(0){6 5(h(0)+j(0)).8(1,9)}7 P(0){6 5(g(0)+h(0)).8(2,9)}7 S(0){6 5(k(0)+g(0)).8(3,9)}7 T(0){6 5(f(0)+k(0)).8(4,9)}7 Q(0){6 5(e(0)+f(0)).8(3,9)}7 R(0){6 5(e(0)+e(0)).8(4,9)}', 62, 65, 'str|||||hex_md5|return|function|substr|24|makeKey_4|makeKey_1|makeKey_0|makeKey_19|makeKey_18|makeKey_17|makeKey_9|makeKey_16|makeKey_14|makeKey_15|makeKey_10|makeKey_3|makeKey_7|makeKey_5|makeKey_270|makeKey_254|makeKey_269|makeKey_268|makeKey_273|makeKey_274|makeKey_272|makeKey_271|makeKey_275|makeKey_267|makeKey_262|makeKey_258|makeKey_263|makeKey_260|makeKey_259|makeKey_261|makeKey_256|makeKey_266|makeKey_255|makeKey_264|makeKey_257|makeKey_265|makeKey_276|makeKey_288|makeKey_289|makeKey_286|makeKey_287|makeKey_290|makeKey_293|makeKey_294|makeKey_291|makeKey_292|makeKey_277|makeKey_281|makeKey_279|makeKey_280|makeKey_278|makeKey_284|makeKey_285|makeKey_282|makeKey_283'.split('|'), 0, {}))


    eval(de("eval(_fxxx('6 1F(0){5 7(b(0)+b(0)).8(4,24)}6 W(0){5 7(9(0)+9(0)).8(1,24)}6 V(0){5 7(a(0)+a(0)).8(2,24)}6 U(0){5 7{3}c(0)).8(3,24)}6 X(0){5 7(h(0)+h(0)).8(4,24)}6 10(0){5 7(g(0)+g(0)).8(1,24)}6 Z(0){5 7(f(0)+f(0)).8(2,24)}6 Y(0){5 7(d(0)+d(0)).8(3,24)}6 P(0){5 7(e(0)+e(0)).8(4,24)}6 O(0){5 7(b(0)+b(0)).8(3,24)}6 N(0){5 7(9(0)+9(0)).8(4,24)}6 Q(0){5 7(a(0)+a(0)).8(1,24)}6 T(0){5 7{3}c(0)).8(2,24)}6 S(0){5 7{2}k(0)).8(2,24)}6 R(0){5 7(m(0)+m(0)).8(3,24)}6 1a(0){5 7(l(0)+l(0)).8(1,24)}6 19(0){5 7(i(0)+i(0)).8(2,24)}6 18(0){5 7(j(0)+j(0)).8(3,24)}6 1b(0){5 7(d(0)+d(0)).8(4,24)}6 1e(0){5 7(b(0)+b(0)).8(1,24)}6 1d(0){5 7(9(0)+9(0)).8(2,24)}6 1c(0){5 7(a(0)+a(0)).8(3,24)}6 13(0){5 7{3}c(0)).8(4,24)}6 12(0){5 7(h(0)+h(0)).8(1,24)}6 11(0){5 7(g(0)+g(0)).8(3,24)}6 14(0){5 7(f(0)+f(0)).8(1,24)}6 17(0){5 7(d(0)+d(0)).8(2,24)}6 16(0){5 7(e(0)+e(0)).8(3,24)}6 15(0){5 7(b(0)+b(0)).8(4,24)}6 M(0){5 7(9(0)+9(0)).8(3,24)}6 w(0){5 7(a(0)+a(0)).8(4,24)}6 s(0){5 7{3}c(0)).8(4,24)}6 o(0){5 7(b(0)+k(0)).8(1,24)}6 t(0){5 7(9(0)+m(0)).8(2,24)}6 r(0){5 7(a(0)+l(0)).8(3,24)}6 v(0){5 7{3}i(0)).8(4,24)}6 u(0){5 7(b(0)+j(0)).8(1,24)}6 q(0){5 7(9(0)+d(0)).8(2,24)}6 n(0){5 7(a(0)+e(0)).8(3,24)}6 p(0){5 7{3}e(0)).8(4,24)}6 H(0){5 7(h(0)+b(0)).8(3,24)}6 G(0){5 7(g(0)+9(0)).8(4,24)}6 F(0){5 7(f(0)+a(0)).8(2,24)}6 I(0){5 7(9(0)+c(0)).8(3,24)}6 L(0){5 7(a(0)+h(0)).8(1,24)}6 J(0){5 7{3}g(0)).8(2,24)}6 E(0){5 7(d(0)+f(0)).8(3,24)}6 z(0){5 7(e(0)+d(0)).8(4,24)}6 y(0){5 7(b(0)+e(0)).8(1,24)}6 x(0){5 7(9(0)+b(0)).8(2,24)}6 A(0){5 7(a(0)+9(0)).8(3,24)}6 D(0){5 7{3}a(0)).8(4,24)}6 C(0){5 7(i(0)+c(0)).8(1,24)}6 B(0){5 7(j(0)+k(0)).8(3,24)}6 K(0){5 7(d(0)+m(0)).8(1,24)}6 1f(0){5 7(e(0)+l(0)).8(2,24)}6 1N(0){5 7(b(0)+i(0)).8(3,24)}6 1M(0){5 7(9(0)+j(0)).8(4,24)}6 1L(0){5 7(a(0)+d(0)).8(3,24)}6 1Q(0){5 7(e(0)+b(0)).8(4,24)}6 1P(0){5 7(b(0)+9(0)).8(4,24)}6 1O(0){5 7(9(0)+a(0)).8(1,24)}6 1H(0){5 7(a(0)+c(0)).8(2,24)}6 1G(0){5 7{3}h(0)).8(3,24)}6 1w(0){5 7(h(0)+g(0)).8(4,24)}6 1K(0){5 7(g(0)+f(0)).8(2,24)}6 1J(0){5 7(f(0)+d(0)).8(3,24)}6 1I(0){5 7(d(0)+e(0)).8(1,24)}6 1R(0){5 7(e(0)+b(0)).8(2,24)}6 20(0){5 7(b(0)+9(0)).8(3,24)}6 1Y(0){5 7(9(0)+a(0)).8(4,24)}6 21(0){5 7(a(0)+c(0)).8(1,24)}6 1Z(0){5 7{3}f(0)).8(2,24)}6 23(0){5 7{2}d(0)).8(3,24)}6 22(0){5 7(m(0)+e(0)).8(4,24)}6 1U(0){5 7(l(0)+b(0)).8(1,24)}6 1T(0){5 7(i(0)+9(0)).8(3,24)}6 1S(0){5 7(j(0)+a(0)).8(1,24)}6 1X(0){5 7(d(0)+c(0)).8(2,24)}6 1W(0){5 7(b(0)+d(0)).8(3,24)}6 1V(0){5 7(9(0)+e(0)).8(4,24)}6 1o(0){5 7(a(0)+b(0)).8(3,24)}6 1n(0){5 7{3}9(0)).8(4,24)}6 1m(0){5 7(h(0)+a(0)).8(4,24)}6 1r(0){5 7(g(0)+c(0)).8(1,24)}6 1q(0){5 7(f(0)+i(0)).8(2,24)}6 1p(0){5 7(d(0)+j(0)).8(3,24)}6 1i(0){5 7(e(0)+d(0)).8(4,24)}6 1h(0){5 7(b(0)+e(0)).8(1,24)}6 1g(0){5 7(9(0)+b(0)).8(2,24)}6 1l(0){5 7(a(0)+9(0)).8(3,24)}6 1k(0){5 7{3}a(0)).8(4,24)}6 1j(0){5 7(d(0)+a(0)).8(2,24)}6 1s(0){5 7(e(0)+c(0)).8(3,24)}6 1B(0){5 7(b(0)+f(0)).8(1,24)}6 1A(0){5 7(9(0)+d(0)).8(2,24)}6 1z(0){5 7(a(0)+e(0)).8(3,24)}6 1E(0){5 7{3}b(0)).8(4,24)}6 1D(0){5 7(i(0)+9(0)).8(1,24)}6 1C(0){5 7(j(0)+a(0)).8(2,24)}6 1v(0){5 7(d(0)+c(0)).8(3,24)}6 1u(0){5 7(e(0)+d(0)).8(4,24)}6 1t(0){5 7(b(0)+e(0)).8(1,24)}6 1y(0){5 7(9(0)+b(0)).8(3,24)}6 1x(0){5 7(a(0)+9(0)).8(1,24)}', 62, 129, 'str|||||return|{0}|hex_md5|substr|{1}0|{1}1|{1}19|{1}4|{1}17|{1}18|{1}7|{1}3|{1}5|{1}9|{1}10|{1}14|{1}16|{1}15|{1}333|{1}327|{1}334|{1}332|{1}329|{1}326|{1}328|{1}331|{1}330|{1}325|{1}344|{1}343|{1}342|{1}345|{1}348|{1}347|{1}346|{1}341|{1}337|{1}336|{1}335|{1}338|{1}340|{1}349|{1}339|{1}324|{1}305|{1}304|{1}303|{1}306|{1}309|{1}308|{1}307|{1}298|{1}297|{1}296|{1}299|{1}302|{1}301|{1}300|{1}319|{1}318|{1}317|{1}320|{1}323|{1}322|{1}321|{1}312|{1}311|{1}310|{1}313|{1}316|{1}315|{1}314|{1}350|{1}384|{1}383|{1}382|{1}387|{1}386|{1}385|{1}378|{1}377|{1}376|{1}381|{1}380|{1}379|{1}388|{1}397|{1}396|{1}395|{1}359|{1}399|{1}398|{1}391|{1}390|{1}389|{1}394|{1}393|{1}392|{1}295|{1}358|{1}357|{1}362|{1}361|{1}360|{1}353|{1}352|{1}351|{1}356|{1}355|{1}354|{1}363|{1}372|{1}371|{1}370|{1}375|{1}374|{1}373|{1}365|{1}367|{1}364|{1}366|{1}369|{1}368|'.split('|'), 0, {}))", 4, "function|makeKey_|(k(0)+|(c(0)+"))

    eval(_fxxx('0 2=2f(\'2e\');0 1=[2d,2i,2h,2g,29,28,27,2c,2b,2a,2j,2s,2r,2q,2v,2u,2t,2m,2l,2k,2p,2o,2n,1Q,1P,1O,1T,1S,1R,1K,1J,1I,1N,1M,1L,1U,23,22,21,26,25,24,1X,1W,1V,20,1Z,1Y,2w,34,33,32,37,36,35,2Y,2X,2W,31,30,2Z,38,3h,3g,3f,3k,3j,3i,3b,3a,39,3e,3d,3c,2F,2E,2D,2I,2H,2G,2z,2y,2x,2C,2B,2A,2J,2S,2R,2Q,2V,2U,2T,2M,2L,2K,2P,2O,2N,C,B,A,F,E,D,w,v,u,z,y,x,G,P,O,N,S,R,Q,J,I,H,M,L,K,d,c,b,g,f,e,7,6,5,a,9,8,h,q,p,o,t,s,r,k,j,i,n,m,l,T,1r,1q,1p,1u,1t,1s,1l,1k,1j,1o,1n,1m,1v,1E,1D,1C,1H,1G,1F,1y,1x,1w,1B,1A,1z,12,11,10,15,14,13,W,V,U,Z,Y,X,16,1f,1e,1d,1i,1h,1g,19,18,17,1c,1b,1a,3l,5w,5v,5u,5z,5y,5x,5q,5p,5o,5t,5s,5r,5A,5J,5I,5H,5M,5L,5K,5D,5C,5B,5G,5F,5E,57,56,55,5a,59,58,51,50,4Z,54,53,52,5b,5k,5j,5i,5n,5m,5l,5e,5d,5c,5h,5g,5f,5N,6l,6k,6j,6o,6n,6m,6f,6e,6d,6i,6h,6g,6p,6y,6x,6w,6B,6A,6z,6s,6r,6q,6v,6u,6t,5W,5V,5U,5Z,5Y,5X,5Q,5P,5O,5T,5S,5R,60,69,68,67,6c,6b,6a,63,62,61,66,65,64,3T,3S,3R,3W,3V,3U,3N,3M,3L,3Q,3P,3O,3X,46,45,44,49,48,47,40,3Z,3Y,43,42,41,3u,3t,3s,3x,3w,3v,3o,3n,3m,3r,3q,3p,3y,3H,3G,3F,3K,3J,3I,3B,3A,3z,3E,3D,3C,4a,4I,4H,4G,4L,4K,4J,4C,4B,4A,4F,4E,4D,4M,4V,4U,4T,4Y,4X,4W,4P,4O,4N,4S,4R,4Q,4j,4i,4h,4m,4l,4k,4d,4c,4b,4g,4f,4e,4n,4w,4v,4u,4z,4y,4x,4q,4p,4o];0 3=4t(2)%1.4s;0 4=1[3];0 4r=4(2);', 62, 410, eval(de("'var|arrFun|cookie|funIndex|fun|{0}132|{0}131|{0}130|{0}135|{0}134|{0}133|{0}126|{0}125|{0}124|{0}129|{0}128|{0}127|{0}136|{0}145|{0}144|{0}143|{0}148|{0}147|{0}146|{0}139|{0}138|{0}137|{0}142|{0}141|{0}140|{0}107|{0}106|{0}105|{0}110|{0}109|{0}108|{0}101|{0}100|{0}99|{0}104|{0}103|{0}102|{0}111|{0}120|{0}119|{0}118|{0}123|{0}122|{0}121|{0}114|{0}113|{0}112|{0}117|{0}116|{0}115|{0}149|{0}183|{0}182|{0}181|{0}186|{0}185|{0}184|{0}177|{0}176|{0}175|{0}180|{0}179|{0}178|{0}187|{0}196|{0}195|{0}194|{0}199|{0}198|{0}197|{0}190|{0}189|{0}188|{0}193|{0}192|{0}191|{0}158|{0}157|{0}156|{0}161|{0}160|{0}159|{0}152|{0}151|{0}150|{0}155|{0}154|{0}153|{0}162|{0}171|{0}170|{0}169|{0}174|{0}173|{0}172|{0}165|{0}164|{0}163|{0}168|{0}167|{0}166|{0}31|{0}30|{0}29|{0}34|{0}33|{0}32|{0}25|{0}24|{0}23|{0}28|{0}27|{0}26|{0}35|{0}44|{0}43|{0}42|{0}47|{0}46|{0}45|{0}38|{0}37|{0}36|{0}41|{0}40|{0}39|{0}6|{0}5|{0}4|{0}9|{0}8|{0}7|{0}0|vjkl5|getCookie|{0}3|{0}2|{0}1|{0}10|{0}19|{0}18|{0}17|{0}22|{0}21|{0}20|{0}13|{0}12|{0}11|{0}16|{0}15|{0}14|{0}48|{0}82|{0}81|{0}80|{0}85|{0}84|{0}83|{0}76|{0}75|{0}74|{0}79|{0}78|{0}77|{0}86|{0}95|{0}94|{0}93|{0}98|{0}97|{0}96|{0}89|{0}88|{0}87|{0}92|{0}91|{0}90|{0}57|{0}56|{0}55|{0}60|{0}59|{0}58|{0}51|{0}50|{0}49|{0}54|{0}53|{0}52|{0}61|{0}70|{0}69|{0}68|{0}73|{0}72|{0}71|{0}64|{0}63|{0}62|{0}67|{0}66|{0}65|{0}200|{0}335|{0}334|{0}333|{0}338|{0}337|{0}336|{0}329|{0}328|{0}327|{0}332|{0}331|{0}330|{0}339|{0}348|{0}347|{0}346|{0}351|{0}350|{0}349|{0}342|{0}341|{0}340|{0}345|{0}344|{0}343|{0}310|{0}309|{0}308|{0}313|{0}312|{0}311|{0}304|{0}303|{0}302|{0}307|{0}306|{0}305|{0}314|{0}323|{0}322|{0}321|{0}326|{0}325|{0}324|{0}317|{0}316|{0}315|{0}320|{0}319|{0}318|{0}352|{0}386|{0}385|{0}384|{0}389|{0}388|{0}387|{0}380|{0}379|{0}378|{0}383|{0}382|{0}381|{0}390|{0}399|{0}398|{0}397|result|length|strToLong|{0}393|{0}392|{0}391|{0}396|{0}395|{0}394|{0}361|{0}360|{0}359|{0}364|{0}363|{0}362|{0}355|{0}354|{0}353|{0}358|{0}357|{0}356|{0}365|{0}374|{0}373|{0}372|{0}377|{0}376|{0}375|{0}368|{0}367|{0}366|{0}371|{0}370|{0}369|{0}234|{0}233|{0}232|{0}237|{0}236|{0}235|{0}228|{0}227|{0}226|{0}231|{0}230|{0}229|{0}238|{0}247|{0}246|{0}245|{0}250|{0}249|{0}248|{0}241|{0}240|{0}239|{0}244|{0}243|{0}242|{0}209|{0}208|{0}207|{0}212|{0}211|{0}210|{0}203|{0}202|{0}201|{0}206|{0}205|{0}204|{0}213|{0}222|{0}221|{0}220|{0}225|{0}224|{0}223|{0}216|{0}215|{0}214|{0}219|{0}218|{0}217|{0}251|{0}285|{0}284|{0}283|{0}288|{0}287|{0}286|{0}279|{0}278|{0}277|{0}282|{0}281|{0}280|{0}289|{0}298|{0}297|{0}296|{0}301|{0}300|{0}299|{0}292|{0}291|{0}290|{0}295|{0}294|{0}293|{0}260|{0}259|{0}258|{0}263|{0}262|{0}261|{0}254|{0}253|{0}252|{0}257|{0}256|{0}255|{0}264|{0}273|{0}272|{0}271|{0}276|{0}275|{0}274|{0}267|{0}266|{0}265|{0}270|{0}269|{0}268'", 1, "makeKey_")).split('|'), 0, {}))

    return result;
}
function  getCookie(arg) {
    console.log(return_key);
    return return_key;
}

//md5.js
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
    return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 */
function core_md5(x, len)
{
    /* append padding */
    x[len >> 5] |= 0x80 << ((len) % 32);
    x[(((len + 64) >>> 9) << 4) + 14] = len;

    var a =  1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d =  271733878;

    for(var i = 0; i < x.length; i += 16)
    {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;

        a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
        d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
        c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
        b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
        a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
        d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
        c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
        b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
        a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
        d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
        c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
        b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
        a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
        d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
        c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
        b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

        a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
        d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
        c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
        b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
        a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
        d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
        c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
        b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
        a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
        d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
        c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
        b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
        a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
        d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
        c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
        b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

        a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
        d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
        c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
        b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
        a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
        d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
        c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
        b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
        a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
        d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
        c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
        b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
        a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
        d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
        c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
        b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

        a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
        d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
        c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
        b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
        a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
        d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
        c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
        b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
        a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
        d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
        c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
        b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
        a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
        d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
        c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
        b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
    }
    return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
    return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
    return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
    return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
    return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
    return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
    var bkey = str2binl(key);
    if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

    var ipad = Array(16), opad = Array(16);
    for(var i = 0; i < 16; i++)
    {
        ipad[i] = bkey[i] ^ 0x36363636;
        opad[i] = bkey[i] ^ 0x5C5C5C5C;
    }

    var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
    return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
    return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 */
function str2binl(str)
{
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for(var i = 0; i < str.length * chrsz; i += chrsz)
        bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
    return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
    var str = "";
    var mask = (1 << chrsz) - 1;
    for(var i = 0; i < bin.length * 32; i += chrsz)
        str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
    return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i++)
    {
        str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
            hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
    }
    return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i += 3)
    {
        var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
            | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
            |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
        for(var j = 0; j < 4; j++)
        {
            if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
            else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
        }
    }
    return str;
}

/*
sha1.js*/
/*
 *   A   JavaScript   implementation   of   the   Secure   Hash   Algorithm,   SHA-1,   as   defined
 *   in   FIPS   PUB   180-1
 *   Version   2.1-BETA   Copyright   Paul   Johnston   2000   -   2002.
 *   Other   contributors:   Greg   Holt,   Andrew   Kepert,   Ydnar,   Lostinet
 *   Distributed   under   the   BSD   License
 *   See   http://pajhome.org.uk/crypt/md5   for   details.
 */
/*
 *   Configurable   variables.   You   may   need   to   tweak   these   to   be   compatible   with
 *   the   server-side,   but   the   defaults   work   in   most   cases.
 */
var hexcase = 0; /*   hex   output   format.   0   -   lowercase;   1   -   uppercase                 */
var b64pad = ""; /*   base-64   pad   character.   "="   for   strict   RFC   compliance       */
var chrsz = 8; /*   bits   per   input   character.   8   -   ASCII;   16   -   Unicode             */

/*
 *   These   are   the   functions   you'll   usually   want   to   call
 *   They   take   string   arguments   and   return   either   hex   or   base-64   encoded   strings
 */
function hex_sha1(s) {
    return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
}

function b64_sha1(s) {
    return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
}

function str_sha1(s) {
    return binb2str(core_sha1(str2binb(s), s.length * chrsz));
}

function hex_hmac_sha1(key, data) {
    return binb2hex(core_hmac_sha1(key, data));
}

function b64_hmac_sha1(key, data) {
    return binb2b64(core_hmac_sha1(key, data));
}

function str_hmac_sha1(key, data) {
    return binb2str(core_hmac_sha1(key, data));
}

/*
 *   Perform   a   simple   self-test   to   see   if   the   VM   is   working
 */
function sha1_vm_test() {
    return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
}

/*
 *   Calculate   the   SHA-1   of   an   array   of   big-endian   words,   and   a   bit   length
 */
function core_sha1(x, len) {
    /*   append   padding   */
    x[len >> 5] |= 0x80 << (24 - len % 32);
    x[((len + 64 >> 9) << 4) + 15] = len;

    var w = Array(80);
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    var e = -1009589776;

    for (var i = 0; i < x.length; i += 16) {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;
        var olde = e;

        for (var j = 0; j < 80; j++) {
            if (j < 16) w[j] = x[i + j];
            else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
            var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
            e = d;
            d = c;
            c = rol(b, 30);
            b = a;
            a = t;
        }

        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
        e = safe_add(e, olde);
    }
    return Array(a, b, c, d, e);

}

/*
 *   Perform   the   appropriate   triplet   combination   function   for   the   current
 *   iteration
 */
function sha1_ft(t, b, c, d) {
    if (t < 20) return (b & c) | ((~b) & d);
    if (t < 40) return b ^ c ^ d;
    if (t < 60) return (b & c) | (b & d) | (c & d);
    return b ^ c ^ d;
}

/*
 *   Determine   the   appropriate   additive   constant   for   the   current   iteration
 */
function sha1_kt(t) {
    return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
}

/*
 *   Calculate   the   HMAC-SHA1   of   a   key   and   some   data
 */
function core_hmac_sha1(key, data) {
    var bkey = str2binb(key);
    if (bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);

    var ipad = Array(16),
        opad = Array(16);
    for (var i = 0; i < 16; i++) {
        ipad[i] = bkey[i] ^ 0x36363636;
        opad[i] = bkey[i] ^ 0x5C5C5C5C;
    }

    var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
    return core_sha1(opad.concat(hash), 512 + 160);
}

/*
 *   Add   integers,   wrapping   at   2^32.   This   uses   16-bit   operations   internally
 *   to   work   around   bugs   in   some   JS   interpreters.
 */
function safe_add(x, y) {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}

/*
 *   Bitwise   rotate   a   32-bit   number   to   the   left.
 */
function rol(num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt));
}

/*
 *   Convert   an   8-bit   or   16-bit   string   to   an   array   of   big-endian   words
 *   In   8-bit   function,   characters   >255   have   their   hi-byte   silently   ignored.
 */
function str2binb(str) {
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < str.length * chrsz; i += chrsz)
        bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i % 32);
    return bin;
}

/*
 *   Convert   an   array   of   big-endian   words   to   a   string
 */
function binb2str(bin) {
    var str = "";
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < bin.length * 32; i += chrsz)
        str += String.fromCharCode((bin[i >> 5] >>> (24 - i % 32)) & mask);
    return str;
}

/*
 *   Convert   an   array   of   big-endian   words   to   a   hex   string.
 */
function binb2hex(binarray) {
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i++) {
        str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
    }
    return str;
}

/*
 *   Convert   an   array   of   big-endian   words   to   a   base-64   string
 */
function binb2b64(binarray) {
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i += 3) {
        var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
        for (var j = 0; j < 4; j++) {
            if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
            else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
        }
    }
    return str;
}

/*
base64.js*/
function Base64() {

    // private property
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    // public method for encoding
    this.encode = function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = _utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output +
                _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
                _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
        }
        return output;
    }

    // public method for decoding
    this.decode = function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = _keyStr.indexOf(input.charAt(i++));
            enc2 = _keyStr.indexOf(input.charAt(i++));
            enc3 = _keyStr.indexOf(input.charAt(i++));
            enc4 = _keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = _utf8_decode(output);
        return output;
    }

    // private method for UTF-8 encoding
    _utf8_encode = function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            } else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            } else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }
        return utftext;
    }

    // private method for UTF-8 decoding
    _utf8_decode = function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            } else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            } else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}

 

Product Name : NT Locale Emulator Advance (NT全域通) short for NTLEA Component Description: ntlea.exe - NTLEA GUI shell and shortcut launcher ntleac.exe - NTLEA core launcher ntleah.dll - NTLEA remote injection DLL ntleap.dll - NTLEA helper library neko.dll - NTLEA GUI runtime library Version & Update History : NTLEA Core 0.86 Beta 07.6.13 by LOVEHINA-AVC 增加对GetSystemDefaultUILanguage及GetUserDefaultUILanguage函数的挂钩 改善了Computer-based Training钩子的挂钩方式 修正了其他一些细小的BUG NTLEA Core 0.85 Beta 07.6.9 by LOVEHINA-AVC 增加让NTLEA加载的应用程序不受系统SDB补丁机制影响的功能 修正了其他一些细小的BUG NTLEA Core 0.83 Beta 07.6.8 by LOVEHINA-AVC 修正了之前的版本不能让含有特殊字符路径的应用程序正常工作的问题 修正了其他一些细小的BUG NTLEA GUI Launcher 1.0 Final 07.6.7 by 七夜真神 增加多语系界面支持与对应的区码(目前支持简体中文、繁体中文及英文) NTLEA Core 0.82 Beta 07.6.7 by LOVEHINA-AVC 修正了在一部分程序下执行会发生初始化失败的问题 完善了跨进程跟踪注入的功能 增加直接打开任意扩展名文件的功能(注:若系统中启用了Microsoft Applocale,msi安装程序将无法被NTLEA正确加载) 0.80 beta 07.6.4 中文名称更改为“NT全域通” 修正了对话框处理函数不能被正确挂钩的问题 修正了因错误地址传递导致应用程序启动失败的问题 修正了一部分程序不能使用IME标准输入法的问题 修正了0.72~0.75版不能在Windows 2000及Windows XP SP0 SP1下运行的问题 增加WM_CHAR及WM_IME_CHAR消息的处理模块,修正了输入框文字不能被正确显示及文字不能被正确输入的问题 消除了数个读零地址非法操作的诱发因素 改进了消息钩子的处理方式 增加应用程序参数指定的支持(详见命令行选项说明) 增加重新指定字体大小的功能(详见命令行选项说明) 修正了Core Launcher(NTLEAC)不能引导一部分程序的问题 修正了多个细小的BUG 0.75 beta 07.1.10 修正了0.73版不能支持某些Unicode/ANSI混合型应用程序的问题 ntleac命令行模式“F”选项实装(注:若要强制指定应用程序所使用的字体,则至少需追加“P4”选项) 增加LB_GETTEXTLEN消息的处理模块(感谢Yoxola提供兼容性问题报告) 0.73 beta 06.12.16 修正了一部分程序在通过系统模版创建窗口时无法被正确挂钩的问题 0.72 beta 06.12.4 修正了在Visual C++ MFC框架程序中会产生乱码的兼容性问题 修正了在调用对话框模版函数后程序运行不正常的问题 增加对kernel32!CreateProcessW函数的挂勾 0.70 beta 06.11.30 增加以下针对窗口及消息处理函数的挂钩: user32!SetWindowTextA user32!GetWindowTextA user32!SendMessageA user32!SendMessageTimeoutA user32!SendMessageCallbackA user32!SendNotifyMessageA user32!PostMessageA user32!GetWindowLongA user32!SetWindowLongA user32!DefDlgProcA user32!DefFrameProcA user32!DefMDIChildProcA user32!DialogBoxParamA user32!DialogBoxIndirectParamA user32!CreateDialogParamA user32!CreateDialogIndirectParamA 增加其它的一些函数的挂钩: user32!GetMenuStringA user32!GetMenuItemInfoA user32!SetMenuItemInfoA kernel32!CharPrevA kernel32!CharNextA kernel32!IsDBCSLeadByte gdi32!EnumFontFamiliesExA gdi32!CreateFontIndirectA 增加自定义右键启动菜单的功能 增加指定预设字体的功能 0.52 beta 06.10.14 增加对user32!CreateWindowExA函数的挂钩 增加对user32!DefWindowProcA函数的挂钩 修正了VerQueryValueA挂钩函数在Windows XP SP0及SP1下会导致无效内存访问异常的问题 0.50 beta 06.10.12 增加对kernel32!GetCommandLineA函数的挂钩 修正了ntdll!RtlUnicodeToMultibyteN挂钩函数中一个重大的BUG,解决了大部分程序的兼容性问题 0.20 beta 06.10.9 增加针对特定应用程序的支持选项 重写部分函数,提高了挂勾程序的兼容性 修正数个小BUG 0.17 beta 06.9.30 再次(?)完善了kernel32!CreateProcessA挂钩函数的功能 0.16 beta 06.9.28 修正在目标程序调用version!VerQueryValueA时可能构成死循环的BUG 0.15 beta 06.9.27 增加对kernel32!GetTimeZoneInformation函数的挂钩,新增时区修正参数 增加对version!VerQueryValueA函数的挂勾 增加对Windows XP SP0操作系统的支持 新增一个兼容性选项 去除了不必要的语言ID参数 完善了kernel32!CreateProcessA挂钩函数的功能 0.11 beta 06.9.25 启动程序ntleac.exe与挂钩程序ntleah.dll由ANSI版本转变为Unicode版 注:如果在使用NTLEA外壳时发现程序无法启动,可尝试直接运行ntleac.exe 附:ntleac参数说明(第一个参数必须包含双引号): 1. "x:\xxxxx\xxx.exe" 说明:目标程序路径。该参数必须位于第一项。 2. "Px" 说明:指定兼容性选项。x为描述兼容性开关的数值,每一个位域指定一个选项(注)。例如,当x为1时,第1个兼容性选项将被开启;当x为8时,第4个兼容性选将被开启;当x为7时,前3个兼容性选项均被开启(1 | 2 | 4 = 7)。 注:这里所说的位域是指二进制数的数位,一个整数最多拥有32个位域,第x位域的值等于2的x次方。 3. "Cx" 说明:指定页码。x为页码ID。 4. "Lx" 说明:指定语言。x为语言区域ID。 5. "Tx" 说明:指定时区修正。x为UTC时区修正数值,单位是分钟。 6. "Fxxx" 说明:指定预设字体,xxx为字体名称。 7. "Axxx" 说明:指定将要传给目标应用程序的参数,xxx为参数内容。 8. "Sx" 说明:指定字体的收放比率,x为比值,单位是百分率。 示例: ntleac.exe "d:\test\game.exe" "A-G 123 -B 456" "P0" "C932" "L1041" "T-540" "FMS Gothic" "S200" 执行结果为启动“d:\test\game.exe -G 123 -B 456”,并设置页码为932(日文Shift-JIS),语言区域为日本,字体为“MS Gothic”,以两倍的大小显示,时区为东9区(GMT + 9:00或UTC - 9:00)。 (注:如果参数中包含双引号,则可用单引号来代替。如上例的"A-G 123 -B 456",追加双引号后可书写为"A'-G 123' '-B 456'") 0.10 beta 06.9.25 正式更名为NT Locale Emulator Advance 增加具有图形界面的外壳程序 增加跨进程跟踪功能 0.05 beta 06.9.24 修正了0.04 beta无法在Windows 2000及XP SP1下运行的问题 0.04 beta 06.9.24 增加对kernel32!CompareStringA函数的挂钩 增加对ntdll!RtlUnicodeToMultibyteN函数的挂钩 0.03 beta 06.9.24 增加对kernel32!CreateFileA函数的本地化支持 修正了前一个版本在多处理器系统中可能出现的兼容性问题 0.02 beta 06.9.23 修正了无法在Windows XP SP1下运行的问题 0.01 beta 06.9.22 最初的版本 FAQs Q:这个工具能够做什么? A:区域模拟,以及内码转换。一些应用程序可能无法在其它的区域模拟软件下正常运行,因此我编写了这个工具,以避免手工转换系统语言区域所带来的麻烦。 Q:它的兼容性如何? A:该程序能够在Windows 2000 SP4/XP及2003 SP1下正常工作,但它很可能不支持Windows 2000 SP3及更低的版本。(注意,当前的版本不支持Windows 20003 Gold、即SP0) 目前已测试可以支持的操作系统详细列表: Windows 2000 SP4 Windows XP Windows XP SP1 Windows XP SP2 Windows Server 2003 SP1 Windows XP x64 Edition Windows Vista Q:使用这个工具时需要安装额外的软件吗? A:不需要。同时这个程序也是绿色软件。 Q:我看到了两个可执行文件,应该怎样使用它们? A:直接运行ntleac.exe,或者为它建立一个快捷方式,并在命令行的末尾填上目标程序的全路径名。关于参数的详细说明请参考附录,在新的版本中您还可以使用名为NTLEAGUI的外壳程序。 Q:我可以与他人分享这个软件吗? A:是的,您可以自由转载这个程序,但请务必保持其完整,且不要修改任何内容。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值