zoukankan      html  css  js  c++  java
  • C# 终本案件、综合执行人、裁判文书爬虫

    终本案件:http://zxgk.court.gov.cn/zhongben/new_index.html

    综合执行人:http://zxgk.court.gov.cn/zhixing/new_index.html

    裁判文书:http://wenshu.court.gov.cn

      终本案件和执行人爬取还是挺简单的,没有涉及到加密,验证码也可以直接识别过掉,主要是网站不是很稳定,经常出现502,504,500错误,涉及到一些失败重连机制。IP限制我们用的是拨号来解决的,客户对于速度的要求不是很

    高,考虑到客户预算有限没有上优质HTTP代理。

      本来开始是用的.net4.5的httpclient,但是在实际的抓取过程当中发现这个类库有BUG,释放SOCKET的时间需要很长。后改用从4.0开始就一直在使用的RestSharp来做访问,问题得到解决,网页解析类库采用的是anglesharp,解

    析速度还是不错的。由于网站经常出现访问错误,已经有些数据查询会直接让网站报500,所以采用了Polly来做超时和重试。

      外包项目,直接做的类库给他们调用没有写界面,前两个没什么好说的,主要来说说文书爬虫。

     

      文书获取列表页的时候需要提交三个参数:GUIDCodeVL5X ,GUID是随机数生成的,我们可以直接使用

    Guid.NewGuid().ToString("D");

      生成GUID就可以了,Code是访问网页返回的,带上GUID访问返回明文的Code,访问网址:/ValiCode/GetCode

            private string GetCode(RestClient client)
            {
                cc:
                PageId = Guid.NewGuid().ToString("D");
                var rsp = "/ValiCode/GetCode".PostAsResponse(client, "guid=" + PageId);
                if (!ProcessResponse(rsp, client))
                {
                    goto cc;
                }
                return rsp.Content;
            }

      ProcessResponse是做的访问结果判断是否需要过验证码或者拨号

      

    private bool ProcessResponse(IRestResponse rsp, RestClient client)
            {
                if (rsp.StatusCode == HttpStatusCode.BadGateway || rsp.StatusCode == HttpStatusCode.GatewayTimeout)
                {
                    Reconnection(DialerInfo);
                    return false;
                }
                if (rsp.Content.Contains("网站当前访问量较大,请输入验证码后继续访问"))
                {
                    Reconnection(DialerInfo);
                    var buffer = client.Execute(new RestRequest(string.Format("waf_captcha/?{0}", DateTime.Now.Ticks))).RawBytes;
                    var captcha = Helpers.ProcessImage(buffer, buffer.Length);
                    rsp.Content = client.Execute(new RestRequest("waf_verify.htm?captcha=" + captcha)).Content;
                    return false;
                }
                foreach (var s in ProhibitKey)
                {
                    if (rsp.Content.Contains(s))
                    {
                        Reconnection(DialerInfo);
                        return false;
                    }
                }
                return true;
            }

      目前发现的几个关键字:

            //被封IP时候出现的关键词
    
            public static string[] ProhibitKey = new[]
            {
                "网站当前访问量较大,请输入验证码后继续访问",
                "请开启JavaScript并刷新该页",
                "源站出现问题,暂时无法访问",
            };

      VL5X是根据Cookie来计算的值,Cookie是带上guidcode访问得到的:

    private string GetCookie(string name, string code, RestClient client)
            {
                cc:
                var rsp =
                    string.Format("/list/list/?sorttype=1&number={0}&guid={1}&conditions=searchWord+QWJS+++{2}", code, PageId, "全文检索:" + name)
                        .GetAsResponse(client);
                if (!ProcessResponse(rsp, client))
                {
                    goto cc;
                }
    
                var cookie = rsp.Cookies.FirstOrDefault(x => x.Name == "vjkl5");
                if (cookie == null)
                {
                    Reconnection(DialerInfo);
                    goto cc;
                }
    
                return cookie.Value;
            }

      拿到cookie后,根据js加密出vl5x的值,加密的JS:(JS我改写了,调用getValue这个方法,传入cookie就可以返回vl5x的值)

       1 function strToLong(str) {
       2 var long = 0;
       3 for (var i = 0; i < str.length; i++) {
       4     long += (str.charCodeAt(i) << (i % 16))
       5 }
       6 return long
       7 }
       8 function strToLongEn(str) {
       9 var long = 0;
      10 for (var i = 0; i < str.length; i++) {
      11     long += (str.charCodeAt(i) << (i % 16)) + i
      12 }
      13 return long
      14 }
      15 function strToLongEn2(str, step) {
      16 var long = 0;
      17 for (var i = 0; i < str.length; i++) {
      18     long += (str.charCodeAt(i) << (i % 16)) + (i * step)
      19 }
      20 return long
      21 }
      22 function strToLongEn3(str, step) {
      23 var long = 0;
      24 for (var i = 0; i < str.length; i++) {
      25     long += (str.charCodeAt(i) << (i % 16)) + (i + step - str.charCodeAt(i))
      26 }
      27 return long
      28 }
      29 function makeKey_0(str) {
      30 var str = str.substr(5, 5 * 5) + str.substr((5 + 1) * (5 + 1), 3);
      31 var a = str.substr(5) + str.substr( - 4);
      32 var b = str.substr(4) + a.substr( - 6);
      33 return hex_md5(str).substr(4, 24)
      34 }
      35 function makeKey_1(str) {
      36 var str = str.substr(5, 5 * 5) + "5" + str.substr(1, 2) + "1" + str.substr((5 + 1) * (5 + 1), 3);
      37 var a = str.substr(5) + str.substr(4);
      38 var b = str.substr(12) + a.substr( - 6);
      39 var c = str.substr(4) + a.substr(6);
      40 return hex_md5(c).substr(4, 24)
      41 }
      42 function makeKey_2(str) {
      43 var str = str.substr(5, 5 * 5) + "15" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
      44 var a = strToLong(str.substr(5)) + str.substr(4);
      45 var b = strToLong(str.substr(5)) + str.substr(4);
      46 var c = str.substr(4) + b.substr(5);
      47 return hex_md5(c).substr(1, 24)
      48 }
      49 function makeKey_3(str) {
      50 var str = str.substr(5, 5 * 5) + "15" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
      51 var a = strToLongEn(str.substr(5)) + str.substr(4);
      52 var b = str.substr(4) + a.substr(5);
      53 var c = strToLong(str.substr(5)) + str.substr(4);
      54 return hex_md5(b).substr(3, 24)
      55 }
      56 function makeKey_4(str) {
      57 var str = str.substr(5, 5 * 5) + "2" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
      58 var long = 0;
      59 for (var i = 0; i < str.substr(1).length; i++) {
      60     long += (str.charCodeAt(i) << (i % 16))
      61 }
      62 var aa = long + str.substr(4);
      63 var long = 0;
      64 var a = str.substr(5);
      65 for (var i = 0; i < a.length; i++) {
      66     long += (a.charCodeAt(i) << (i % 16)) + i
      67 }
      68 a = long + "" + str.substr(4);
      69 var b = hex_md5(str.substr(1)) + strToLong(a.substr(5));
      70 return hex_md5(b).substr(3, 24)
      71 }
      72 function makeKey_5(str) {
      73 var base = new Base64();
      74 var str = base.encode(str.substr(5, 5 * 5) + str.substr(1, 2) + "1") + str.substr((5 + 1) * (5 + 1), 3);
      75 var a = strToLongEn(str.substr(4, 10)) + str.substr( - 4);
      76 var b = hex_md5(str.substr(4)) + a.substr(2);
      77 var a = str.substr(3);
      78 var c = strToLong(str.substr(5)) + str.substr(4);
      79 var aa = long + str.substr(4);
      80 var long = 0;
      81 for (var i = 0; i < a.length; i++) {
      82     long += (a.charCodeAt(i) << (i % 12)) + i
      83 }
      84 a = long + "" + str.substr(4);
      85 return hex_md5(str).substr(4, 24)
      86 }
      87 function makeKey_6(str) {
      88 var base = new Base64();
      89 var str = str.substr(5, 5 * 5) + str.substr((5 + 1) * (5 + 1), 3);
      90 var a = base.encode(str.substr(4, 10)) + str.substr(2);
      91 var b = str.substr(6) + a.substr(2);
      92 var c = strToLong(str.substr(5)) + str.substr(4);
      93 var aa = long + str.substr(4);
      94 var long = 0;
      95 var a = str.substr(5);
      96 for (var i = 0; i < a.length; i++) {
      97     long += (a.charCodeAt(i) << (i % 16)) + i
      98 }
      99 a = long + "" + str.substr(4);
     100 return hex_md5(b).substr(2, 24)
     101 }
     102 function makeKey_7(str) {
     103 var base = new Base64();
     104 var str = base.encode(str.substr(5, 5 * 4) + "55" + str.substr(1, 2)) + str.substr((5 + 1) * (5 + 1), 3);
     105 var long = 0;
     106 for (var i = 0; i < str.substr(1).length; i++) {
     107     long += (str.charCodeAt(i) << (i % 16 + 5)) + 3 + 5
     108 }
     109 var aa = long + str.substr(4);
     110 var long = 0;
     111 var a = str.substr(5);
     112 for (var i = 0; i < a.length; i++) {
     113     long += (a.charCodeAt(i) << (i % 16))
     114 }
     115 a = long + "" + str.substr(4);
     116 var b = hex_md5(str.substr(1)) + strToLong(a.substr(5));
     117 return hex_md5(b).substr(3, 24)
     118 }
     119 function makeKey_8(str) {
     120 var base = new Base64();
     121 var str = base.encode(str.substr(5, 5 * 5 - 1) + "5" + "-" + "5") + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
     122 var long = 0;
     123 for (var i = 0; i < str.substr(1).length; i++) {
     124     long += (str.charCodeAt(i) << (i % 16))
     125 }
     126 var aa = long + str.substr(4);
     127 var long = 0;
     128 var a = str.substr(5);
     129 for (var i = 0; i < a.length; i++) {
     130     long += (a.charCodeAt(i) << (i % 16))
     131 }
     132 a = long + "" + str.substr(4);
     133 var b = hex_md5(str.substr(1)) + strToLongEn(a.substr(5));
     134 return hex_md5(b).substr(4, 24)
     135 }
     136 function makeKey_9(str) {
     137 var str = str.substr(5, 5 * 5) + "5" + str.substr(1, 2) + "1" + str.substr((5 + 1) * (5 + 1), 3);
     138 var a = str.substr(5) + str.substr(4);
     139 var b = str.substr(12) + a.substr( - 6);
     140 var c = hex_sha1(str.substr(4)) + a.substr(6);
     141 return hex_md5(c).substr(4, 24)
     142 }
     143 function makeKey_10(str) {
     144 var base = new Base64();
     145 var str = base.encode(str.substr(5, 5 * 5 - 1) + "5") + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
     146 var long = 0;
     147 for (var i = 0; i < str.substr(1).length; i++) {
     148     long += (str.charCodeAt(i) << (i % 16))
     149 }
     150 var aa = long + str.substr(4);
     151 var long = 0;
     152 var a = str.substr(5);
     153 for (var i = 0; i < a.length; i++) {
     154     long += (a.charCodeAt(i) << (i % 16))
     155 }
     156 a = long + "" + str.substr(4);
     157 var b = hex_md5(str.substr(1)) + hex_sha1(a.substr(5));
     158 return hex_md5(b).substr(4, 24)
     159 }
     160 function makeKey_11(str) {
     161 var base = new Base64();
     162 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
     163 var long = 0;
     164 for (var i = 0; i < str.substr(1).length; i++) {
     165     long += (str.charCodeAt(i) << (i % 16))
     166 }
     167 var aa = long + str.substr(4);
     168 var long = 0;
     169 var a = str.substr(5);
     170 for (var i = 0; i < a.length; i++) {
     171     long += (a.charCodeAt(i) << (i % 16))
     172 }
     173 a = long + "" + str.substr(2);
     174 var b = str.substr(1) + hex_sha1(a.substr(5));
     175 return hex_md5(b).substr(2, 24)
     176 }
     177 function makeKey_12(str) {
     178 var base = new Base64();
     179 var str = str.substr(5, 5 * 5 - 1) + str.substr((5 + 1) * (5 + 1), 3) + "2" + str.substr(1, 2);
     180 var long = 0;
     181 for (var i = 0; i < str.substr(1).length; i++) {
     182     long += (str.charCodeAt(i) << (i % 16))
     183 }
     184 var aa = long + str.substr(4);
     185 var long = 0;
     186 var a = str.substr(5);
     187 for (var i = 0; i < a.length; i++) {
     188     long += (a.charCodeAt(i) << (i % 16))
     189 }
     190 a = long + "" + str.substr(2);
     191 var b = str.substr(1) + hex_sha1(str.substr(5));
     192 return hex_md5(b).substr(1, 24)
     193 }
     194 function makeKey_13(str) {
     195 var base = new Base64();
     196 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
     197 var long = 0;
     198 for (var i = 0; i < str.substr(1).length; i++) {
     199     long += (str.charCodeAt(i) << (i % 16))
     200 }
     201 var aa = long + str.substr(4);
     202 var long = 0;
     203 var a = str.substr(5);
     204 for (var i = 0; i < a.length; i++) {
     205     long += (a.charCodeAt(i) << (i % 16))
     206 }
     207 a = long + "" + str.substr(2);
     208 var b = base.encode(str.substr(1) + hex_sha1(str.substr(5)));
     209 return hex_md5(b).substr(1, 24)
     210 }
     211 function makeKey_14(str) {
     212 var base = new Base64();
     213 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
     214 var long = 0;
     215 for (var i = 0; i < str.substr(1).length; i++) {
     216     long += (str.charCodeAt(i) << (i % 16))
     217 }
     218 var aa = long + str.substr(4);
     219 var long = 0;
     220 var a = str.substr(5);
     221 for (var i = 0; i < a.length; i++) {
     222     long += (a.charCodeAt(i) << (i % 16))
     223 }
     224 a = long + "" + str.substr(2);
     225 var b = base.encode(str.substr(1) + str.substr(5) + str.substr(1, 3));
     226 return hex_sha1(b).substr(1, 24)
     227 }
     228 function makeKey_15(str) {
     229 var base = new Base64();
     230 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
     231 var long = 0;
     232 for (var i = 0; i < str.substr(1).length; i++) {
     233     long += (str.charCodeAt(i) << (i % 16))
     234 }
     235 var aa = long + str.substr(4);
     236 var long = 0;
     237 var a = str.substr(5);
     238 for (var i = 0; i < a.length; i++) {
     239     long += (a.charCodeAt(i) << (i % 16))
     240 }
     241 a = long + "" + str.substr(2);
     242 var b = base.encode(a.substr(1) + str.substr(5) + str.substr(2, 3));
     243 return hex_sha1(b).substr(1, 24)
     244 }
     245 function makeKey_16(str) {
     246 var base = new Base64();
     247 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2) + "-" + "5";
     248 var long = 0;
     249 for (var i = 0; i < str.substr(1).length; i++) {
     250     long += (str.charCodeAt(i) << (i % 11))
     251 }
     252 var aa = long + str.substr(4);
     253 var long = 0;
     254 var a = str.substr(5);
     255 for (var i = 0; i < a.length; i++) {
     256     long += (a.charCodeAt(i) << (i % 16)) + i
     257 }
     258 a = long + "" + str.substr(2);
     259 var b = base.encode(a.substr(1)) + strToLongEn2(str.substr(5), 5) + str.substr(2, 3);
     260 return hex_md5(b).substr(2, 24)
     261 }
     262 function makeKey_17(str) {
     263 var base = new Base64();
     264 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(1, 2) + "-" + "5";
     265 var long = 0;
     266 for (var i = 0; i < str.substr(1).length; i++) {
     267     long += (str.charCodeAt(i) << (i % 11))
     268 }
     269 var aa = long + str.substr(4);
     270 var long = 0;
     271 var a = str.substr(5);
     272 for (var i = 0; i < a.length; i++) {
     273     long += (a.charCodeAt(i) << (i % 16)) + i
     274 }
     275 a = long + "" + str.substr(2);
     276 var b = base.encode(a.substr(1)) + strToLongEn2(str.substr(5), 5 + 1) + str.substr(2 + 5, 3);
     277 return hex_md5(b).substr(0, 24)
     278 }
     279 function makeKey_18(str) {
     280 var base = new Base64();
     281 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(1, 2) + "5" + str.substr(2 + 5, 3);
     282 var long = 0;
     283 for (var i = 0; i < str.substr(1).length; i++) {
     284     long += (str.charCodeAt(i) << (i % 11))
     285 }
     286 var aa = long + str.substr(4);
     287 var long = 0;
     288 var a = str.substr(5);
     289 for (var i = 0; i < a.length; i++) {
     290     long += (a.charCodeAt(i) << (i % 16)) + i
     291 }
     292 a = long + "" + str.substr(2);
     293 var b = a.substr(1) + strToLongEn2(str.substr(5), 5 + 1) + str.substr(2 + 5, 3);
     294 return hex_md5(b).substr(0, 24)
     295 }
     296 function makeKey_19(str) {
     297 var base = new Base64();
     298 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(5, 2) + "5" + str.substr(2 + 5, 3);
     299 var long = 0;
     300 for (var i = 0; i < str.substr(1).length; i++) {
     301     long += (str.charCodeAt(i) << (i % 11))
     302 }
     303 var aa = long + str.substr(4);
     304 var long = 0;
     305 var a = str.substr(5);
     306 for (var i = 0; i < a.length; i++) {
     307     long += (a.charCodeAt(i) << (i % 16)) + i
     308 }
     309 a = long + "" + str.substr(2);
     310 var b = a.substr(1) + strToLongEn3(str.substr(5), 5 - 1) + str.substr(2 + 5, 3);
     311 return hex_md5(b).substr(0, 24)
     312 }
     313 function makeKey_20(str) {
     314 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
     315 }
     316 function makeKey_21(str) {
     317 return hex_md5(makeKey_11(str) + makeKey_3(str)).substr(2, 24)
     318 }
     319 function makeKey_22(str) {
     320 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
     321 }
     322 function makeKey_23(str) {
     323 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
     324 }
     325 function makeKey_24(str) {
     326 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(1, 24)
     327 }
     328 function makeKey_25(str) {
     329 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(2, 24)
     330 }
     331 function makeKey_26(str) {
     332 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(3, 24)
     333 }
     334 function makeKey_27(str) {
     335 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(4, 24)
     336 }
     337 function makeKey_28(str) {
     338 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(1, 24)
     339 }
     340 function makeKey_29(str) {
     341 return hex_md5(makeKey_19(str) + makeKey_3(str)).substr(2, 24)
     342 }
     343 function makeKey_30(str) {
     344 return hex_md5(makeKey_0(str) + makeKey_7(str)).substr(3, 24)
     345 }
     346 function makeKey_31(str) {
     347 return hex_md5(makeKey_1(str) + makeKey_8(str)).substr(4, 24)
     348 }
     349 function makeKey_32(str) {
     350 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(3, 24)
     351 }
     352 function makeKey_33(str) {
     353 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(4, 24)
     354 }
     355 function makeKey_34(str) {
     356 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(1, 24)
     357 }
     358 function makeKey_35(str) {
     359 return hex_md5(makeKey_7(str) + makeKey_9(str)).substr(2, 24)
     360 }
     361 function makeKey_36(str) {
     362 return hex_md5(makeKey_8(str) + makeKey_10(str)).substr(3, 24)
     363 }
     364 function makeKey_37(str) {
     365 return hex_md5(makeKey_6(str) + makeKey_17(str)).substr(1, 24)
     366 }
     367 function makeKey_38(str) {
     368 return hex_md5(makeKey_12(str) + makeKey_18(str)).substr(2, 24)
     369 }
     370 function makeKey_39(str) {
     371 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
     372 }
     373 function makeKey_40(str) {
     374 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
     375 }
     376 function makeKey_41(str) {
     377 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
     378 }
     379 function makeKey_42(str) {
     380 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
     381 }
     382 function makeKey_43(str) {
     383 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
     384 }
     385 function makeKey_44(str) {
     386 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(2, 24)
     387 }
     388 function makeKey_45(str) {
     389 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(3, 24)
     390 }
     391 function makeKey_46(str) {
     392 return hex_md5(makeKey_19(str) + makeKey_17(str)).substr(4, 24)
     393 }
     394 function makeKey_47(str) {
     395 return hex_md5(makeKey_0(str) + makeKey_18(str)).substr(1, 24)
     396 }
     397 function makeKey_48(str) {
     398 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(2, 24)
     399 }
     400 function makeKey_49(str) {
     401 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(3, 24)
     402 }
     403 function makeKey_50(str) {
     404 return hex_md5(makeKey_5(str) + makeKey_1(str)).substr(4, 24)
     405 }
     406 function makeKey_51(str) {
     407 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(1, 24)
     408 }
     409 function makeKey_52(str) {
     410 return hex_md5(makeKey_7(str) + makeKey_14(str)).substr(2, 24)
     411 }
     412 function makeKey_53(str) {
     413 return hex_md5(makeKey_12(str) + makeKey_15(str)).substr(3, 24)
     414 }
     415 function makeKey_54(str) {
     416 return hex_md5(makeKey_14(str) + makeKey_16(str)).substr(4, 24)
     417 }
     418 function makeKey_55(str) {
     419 return hex_md5(makeKey_15(str) + makeKey_9(str)).substr(3, 24)
     420 }
     421 function makeKey_56(str) {
     422 return hex_md5(makeKey_16(str) + makeKey_10(str)).substr(4, 24)
     423 }
     424 function makeKey_57(str) {
     425 return hex_md5(makeKey_9(str) + makeKey_17(str)).substr(1, 24)
     426 }
     427 function makeKey_58(str) {
     428 return hex_md5(makeKey_10(str) + makeKey_18(str)).substr(2, 24)
     429 }
     430 function makeKey_59(str) {
     431 return hex_md5(makeKey_17(str) + makeKey_19(str)).substr(3, 24)
     432 }
     433 function makeKey_60(str) {
     434 return hex_md5(makeKey_18(str) + makeKey_0(str)).substr(1, 24)
     435 }
     436 function makeKey_61(str) {
     437 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(2, 24)
     438 }
     439 function makeKey_62(str) {
     440 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(3, 24)
     441 }
     442 function makeKey_63(str) {
     443 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(4, 24)
     444 }
     445 function makeKey_64(str) {
     446 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(3, 24)
     447 }
     448 function makeKey_65(str) {
     449 return hex_md5(makeKey_14(str) + makeKey_1(str)).substr(1, 24)
     450 }
     451 function makeKey_66(str) {
     452 return hex_md5(makeKey_15(str) + makeKey_4(str)).substr(2, 24)
     453 }
     454 function makeKey_67(str) {
     455 return hex_md5(makeKey_16(str) + makeKey_5(str)).substr(3, 24)
     456 }
     457 function makeKey_68(str) {
     458 return hex_md5(makeKey_9(str) + makeKey_3(str)).substr(4, 24)
     459 }
     460 function makeKey_69(str) {
     461 return hex_md5(makeKey_10(str) + makeKey_7(str)).substr(1, 24)
     462 }
     463 function makeKey_70(str) {
     464 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(2, 24)
     465 }
     466 function makeKey_71(str) {
     467 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(3, 24)
     468 }
     469 function makeKey_72(str) {
     470 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(4, 24)
     471 }
     472 function makeKey_73(str) {
     473 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(1, 24)
     474 }
     475 function makeKey_74(str) {
     476 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(2, 24)
     477 }
     478 function makeKey_75(str) {
     479 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
     480 }
     481 function makeKey_76(str) {
     482 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
     483 }
     484 function makeKey_77(str) {
     485 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
     486 }
     487 function makeKey_78(str) {
     488 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
     489 }
     490 function makeKey_79(str) {
     491 return hex_md5(makeKey_10(str) + makeKey_9(str)).substr(1, 24)
     492 }
     493 function makeKey_80(str) {
     494 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(2, 24)
     495 }
     496 function makeKey_81(str) {
     497 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(3, 24)
     498 }
     499 function makeKey_82(str) {
     500 return hex_md5(makeKey_14(str) + makeKey_18(str)).substr(1, 24)
     501 }
     502 function makeKey_83(str) {
     503 return hex_md5(makeKey_15(str) + makeKey_19(str)).substr(4, 24)
     504 }
     505 function makeKey_84(str) {
     506 return hex_md5(makeKey_16(str) + makeKey_0(str)).substr(1, 24)
     507 }
     508 function makeKey_85(str) {
     509 return hex_md5(makeKey_9(str) + makeKey_1(str)).substr(2, 24)
     510 }
     511 function makeKey_86(str) {
     512 return hex_md5(makeKey_10(str) + makeKey_4(str)).substr(3, 24)
     513 }
     514 function makeKey_87(str) {
     515 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(4, 24)
     516 }
     517 function makeKey_88(str) {
     518 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(1, 24)
     519 }
     520 function makeKey_89(str) {
     521 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(2, 24)
     522 }
     523 function makeKey_90(str) {
     524 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(3, 24)
     525 }
     526 function makeKey_91(str) {
     527 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(4, 24)
     528 }
     529 function makeKey_92(str) {
     530 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
     531 }
     532 function makeKey_93(str) {
     533 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
     534 }
     535 function makeKey_94(str) {
     536 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(1, 24)
     537 }
     538 function makeKey_95(str) {
     539 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(2, 24)
     540 }
     541 function makeKey_96(str) {
     542 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(3, 24)
     543 }
     544 function makeKey_97(str) {
     545 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
     546 }
     547 function makeKey_98(str) {
     548 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(3, 24)
     549 }
     550 function makeKey_99(str) {
     551 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(4, 24)
     552 }
     553 function makeKey_100(str) {
     554 return hex_md5(makeKey_7(str) + makeKey_3(str)).substr(1, 24)
     555 }
     556 function makeKey_101(str) {
     557 return hex_md5(makeKey_10(str) + makeKey_7(str)).substr(2, 24)
     558 }
     559 function makeKey_102(str) {
     560 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(1, 24)
     561 }
     562 function makeKey_103(str) {
     563 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
     564 }
     565 function makeKey_104(str) {
     566 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
     567 }
     568 function makeKey_105(str) {
     569 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
     570 }
     571 function makeKey_106(str) {
     572 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
     573 }
     574 function makeKey_107(str) {
     575 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(2, 24)
     576 }
     577 function makeKey_108(str) {
     578 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(3, 24)
     579 }
     580 function makeKey_109(str) {
     581 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(4, 24)
     582 }
     583 function makeKey_110(str) {
     584 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(1, 24)
     585 }
     586 function makeKey_111(str) {
     587 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(2, 24)
     588 }
     589 function makeKey_112(str) {
     590 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
     591 }
     592 function makeKey_113(str) {
     593 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
     594 }
     595 function makeKey_114(str) {
     596 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(3, 24)
     597 }
     598 function makeKey_115(str) {
     599 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
     600 }
     601 function makeKey_116(str) {
     602 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
     603 }
     604 function makeKey_117(str) {
     605 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(2, 24)
     606 }
     607 function makeKey_118(str) {
     608 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(3, 24)
     609 }
     610 function makeKey_119(str) {
     611 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(1, 24)
     612 }
     613 function makeKey_120(str) {
     614 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(1, 24)
     615 }
     616 function makeKey_121(str) {
     617 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(2, 24)
     618 }
     619 function makeKey_122(str) {
     620 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
     621 }
     622 function makeKey_123(str) {
     623 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(4, 24)
     624 }
     625 function makeKey_124(str) {
     626 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(1, 24)
     627 }
     628 function makeKey_125(str) {
     629 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(2, 24)
     630 }
     631 function makeKey_126(str) {
     632 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(3, 24)
     633 }
     634 function makeKey_127(str) {
     635 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(4, 24)
     636 }
     637 function makeKey_128(str) {
     638 return hex_md5(makeKey_7(str) + makeKey_5(str)).substr(1, 24)
     639 }
     640 function makeKey_129(str) {
     641 return hex_md5(makeKey_8(str) + makeKey_3(str)).substr(2, 24)
     642 }
     643 function makeKey_130(str) {
     644 return hex_md5(makeKey_14(str) + makeKey_7(str)).substr(3, 24)
     645 }
     646 function makeKey_131(str) {
     647 return hex_md5(makeKey_15(str) + makeKey_10(str)).substr(4, 24)
     648 }
     649 function makeKey_132(str) {
     650 return hex_md5(makeKey_16(str) + makeKey_17(str)).substr(3, 24)
     651 }
     652 function makeKey_133(str) {
     653 return hex_md5(makeKey_9(str) + makeKey_18(str)).substr(4, 24)
     654 }
     655 function makeKey_134(str) {
     656 return hex_md5(makeKey_10(str) + makeKey_19(str)).substr(1, 24)
     657 }
     658 function makeKey_135(str) {
     659 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(2, 24)
     660 }
     661 function makeKey_136(str) {
     662 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(1, 24)
     663 }
     664 function makeKey_137(str) {
     665 return hex_md5(makeKey_19(str) + makeKey_14(str)).substr(2, 24)
     666 }
     667 function makeKey_138(str) {
     668 return hex_md5(makeKey_0(str) + makeKey_15(str)).substr(3, 24)
     669 }
     670 function makeKey_139(str) {
     671 return hex_md5(makeKey_1(str) + makeKey_16(str)).substr(4, 24)
     672 }
     673 function makeKey_140(str) {
     674 return hex_md5(makeKey_4(str) + makeKey_9(str)).substr(1, 24)
     675 }
     676 function makeKey_141(str) {
     677 return hex_md5(makeKey_5(str) + makeKey_10(str)).substr(2, 24)
     678 }
     679 function makeKey_142(str) {
     680 return hex_md5(makeKey_3(str) + makeKey_17(str)).substr(3, 24)
     681 }
     682 function makeKey_143(str) {
     683 return hex_md5(makeKey_7(str) + makeKey_18(str)).substr(4, 24)
     684 }
     685 function makeKey_144(str) {
     686 return hex_md5(makeKey_17(str) + makeKey_19(str)).substr(1, 24)
     687 }
     688 function makeKey_145(str) {
     689 return hex_md5(makeKey_18(str) + makeKey_0(str)).substr(2, 24)
     690 }
     691 function makeKey_146(str) {
     692 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(3, 24)
     693 }
     694 function makeKey_147(str) {
     695 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(4, 24)
     696 }
     697 function makeKey_148(str) {
     698 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(3, 24)
     699 }
     700 function makeKey_149(str) {
     701 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(4, 24)
     702 }
     703 function makeKey_150(str) {
     704 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(1, 24)
     705 }
     706 function makeKey_151(str) {
     707 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(2, 24)
     708 }
     709 function makeKey_152(str) {
     710 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
     711 }
     712 function makeKey_153(str) {
     713 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(1, 24)
     714 }
     715 function makeKey_154(str) {
     716 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
     717 }
     718 function makeKey_155(str) {
     719 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(2, 24)
     720 }
     721 function makeKey_156(str) {
     722 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(3, 24)
     723 }
     724 function makeKey_157(str) {
     725 return hex_md5(makeKey_19(str) + makeKey_3(str)).substr(4, 24)
     726 }
     727 function makeKey_158(str) {
     728 return hex_md5(makeKey_0(str) + makeKey_7(str)).substr(1, 24)
     729 }
     730 function makeKey_159(str) {
     731 return hex_md5(makeKey_1(str) + makeKey_8(str)).substr(2, 24)
     732 }
     733 function makeKey_160(str) {
     734 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(3, 24)
     735 }
     736 function makeKey_161(str) {
     737 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(4, 24)
     738 }
     739 function makeKey_162(str) {
     740 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(1, 24)
     741 }
     742 function makeKey_163(str) {
     743 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(2, 24)
     744 }
     745 function makeKey_164(str) {
     746 return hex_md5(makeKey_4(str) + makeKey_10(str)).substr(3, 24)
     747 }
     748 function makeKey_165(str) {
     749 return hex_md5(makeKey_5(str) + makeKey_17(str)).substr(4, 24)
     750 }
     751 function makeKey_166(str) {
     752 return hex_md5(makeKey_3(str) + makeKey_18(str)).substr(3, 24)
     753 }
     754 function makeKey_167(str) {
     755 return hex_md5(makeKey_7(str) + makeKey_19(str)).substr(4, 24)
     756 }
     757 function makeKey_168(str) {
     758 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(1, 24)
     759 }
     760 function makeKey_169(str) {
     761 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(2, 24)
     762 }
     763 function makeKey_170(str) {
     764 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
     765 }
     766 function makeKey_171(str) {
     767 return hex_md5(makeKey_17(str) + makeKey_5(str)).substr(1, 24)
     768 }
     769 function makeKey_172(str) {
     770 return hex_md5(makeKey_18(str) + makeKey_3(str)).substr(2, 24)
     771 }
     772 function makeKey_173(str) {
     773 return hex_md5(makeKey_19(str) + makeKey_7(str)).substr(3, 24)
     774 }
     775 function makeKey_174(str) {
     776 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(4, 24)
     777 }
     778 function makeKey_175(str) {
     779 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(1, 24)
     780 }
     781 function makeKey_176(str) {
     782 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(2, 24)
     783 }
     784 function makeKey_177(str) {
     785 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
     786 }
     787 function makeKey_178(str) {
     788 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(4, 24)
     789 }
     790 function makeKey_179(str) {
     791 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(1, 24)
     792 }
     793 function makeKey_180(str) {
     794 return hex_md5(makeKey_18(str) + makeKey_14(str)).substr(3, 24)
     795 }
     796 function makeKey_181(str) {
     797 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(1, 24)
     798 }
     799 function makeKey_182(str) {
     800 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(2, 24)
     801 }
     802 function makeKey_183(str) {
     803 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(3, 24)
     804 }
     805 function makeKey_184(str) {
     806 return hex_md5(makeKey_4(str) + makeKey_10(str)).substr(4, 24)
     807 }
     808 function makeKey_185(str) {
     809 return hex_md5(makeKey_14(str) + makeKey_17(str)).substr(3, 24)
     810 }
     811 function makeKey_186(str) {
     812 return hex_md5(makeKey_15(str) + makeKey_18(str)).substr(4, 24)
     813 }
     814 function makeKey_187(str) {
     815 return hex_md5(makeKey_16(str) + makeKey_19(str)).substr(4, 24)
     816 }
     817 function makeKey_188(str) {
     818 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(1, 24)
     819 }
     820 function makeKey_189(str) {
     821 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(2, 24)
     822 }
     823 function makeKey_190(str) {
     824 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(3, 24)
     825 }
     826 function makeKey_191(str) {
     827 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(4, 24)
     828 }
     829 function makeKey_192(str) {
     830 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(1, 24)
     831 }
     832 function makeKey_193(str) {
     833 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(2, 24)
     834 }
     835 function makeKey_194(str) {
     836 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(3, 24)
     837 }
     838 function makeKey_195(str) {
     839 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(4, 24)
     840 }
     841 function makeKey_196(str) {
     842 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(3, 24)
     843 }
     844 function makeKey_197(str) {
     845 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(4, 24)
     846 }
     847 function makeKey_198(str) {
     848 return hex_md5(makeKey_3(str) + makeKey_9(str)).substr(1, 24)
     849 }
     850 function makeKey_199(str) {
     851 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(2, 24)
     852 }
     853 function makeKey_200(str) {
     854 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
     855 }
     856 function makeKey_201(str) {
     857 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
     858 }
     859 function makeKey_202(str) {
     860 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(1, 24)
     861 }
     862 function makeKey_203(str) {
     863 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(2, 24)
     864 }
     865 function makeKey_204(str) {
     866 return hex_md5(makeKey_4(str) + makeKey_5(str)).substr(3, 24)
     867 }
     868 function makeKey_205(str) {
     869 return hex_md5(makeKey_14(str) + makeKey_3(str)).substr(4, 24)
     870 }
     871 function makeKey_206(str) {
     872 return hex_md5(makeKey_15(str) + makeKey_7(str)).substr(1, 24)
     873 }
     874 function makeKey_207(str) {
     875 return hex_md5(makeKey_16(str) + makeKey_17(str)).substr(2, 24)
     876 }
     877 function makeKey_208(str) {
     878 return hex_md5(makeKey_9(str) + makeKey_18(str)).substr(3, 24)
     879 }
     880 function makeKey_209(str) {
     881 return hex_md5(makeKey_10(str) + makeKey_19(str)).substr(4, 24)
     882 }
     883 function makeKey_210(str) {
     884 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(1, 24)
     885 }
     886 function makeKey_211(str) {
     887 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(3, 24)
     888 }
     889 function makeKey_212(str) {
     890 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(1, 24)
     891 }
     892 function makeKey_213(str) {
     893 return hex_md5(makeKey_0(str) + makeKey_14(str)).substr(2, 24)
     894 }
     895 function makeKey_214(str) {
     896 return hex_md5(makeKey_1(str) + makeKey_15(str)).substr(3, 24)
     897 }
     898 function makeKey_215(str) {
     899 return hex_md5(makeKey_4(str) + makeKey_16(str)).substr(4, 24)
     900 }
     901 function makeKey_216(str) {
     902 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(3, 24)
     903 }
     904 function makeKey_217(str) {
     905 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(4, 24)
     906 }
     907 function makeKey_218(str) {
     908 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(4, 24)
     909 }
     910 function makeKey_219(str) {
     911 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(1, 24)
     912 }
     913 function makeKey_220(str) {
     914 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(2, 24)
     915 }
     916 function makeKey_221(str) {
     917 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(3, 24)
     918 }
     919 function makeKey_222(str) {
     920 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(4, 24)
     921 }
     922 function makeKey_223(str) {
     923 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(1, 24)
     924 }
     925 function makeKey_224(str) {
     926 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(2, 24)
     927 }
     928 function makeKey_225(str) {
     929 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(3, 24)
     930 }
     931 function makeKey_226(str) {
     932 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(4, 24)
     933 }
     934 function makeKey_227(str) {
     935 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(2, 24)
     936 }
     937 function makeKey_228(str) {
     938 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(3, 24)
     939 }
     940 function makeKey_229(str) {
     941 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
     942 }
     943 function makeKey_230(str) {
     944 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
     945 }
     946 function makeKey_231(str) {
     947 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(3, 24)
     948 }
     949 function makeKey_232(str) {
     950 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
     951 }
     952 function makeKey_233(str) {
     953 return hex_md5(makeKey_10(str) + makeKey_14(str)).substr(1, 24)
     954 }
     955 function makeKey_234(str) {
     956 return hex_md5(makeKey_17(str) + makeKey_15(str)).substr(2, 24)
     957 }
     958 function makeKey_235(str) {
     959 return hex_md5(makeKey_18(str) + makeKey_16(str)).substr(3, 24)
     960 }
     961 function makeKey_236(str) {
     962 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(4, 24)
     963 }
     964 function makeKey_237(str) {
     965 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(1, 24)
     966 }
     967 function makeKey_238(str) {
     968 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
     969 }
     970 function makeKey_239(str) {
     971 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(1, 24)
     972 }
     973 function makeKey_240(str) {
     974 return hex_md5(makeKey_14(str) + makeKey_0(str)).substr(2, 24)
     975 }
     976 function makeKey_241(str) {
     977 return hex_md5(makeKey_15(str) + makeKey_1(str)).substr(3, 24)
     978 }
     979 function makeKey_242(str) {
     980 return hex_md5(makeKey_16(str) + makeKey_4(str)).substr(4, 24)
     981 }
     982 function makeKey_243(str) {
     983 return hex_md5(makeKey_9(str) + makeKey_5(str)).substr(3, 24)
     984 }
     985 function makeKey_244(str) {
     986 return hex_md5(makeKey_10(str) + makeKey_3(str)).substr(4, 24)
     987 }
     988 function makeKey_245(str) {
     989 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(4, 24)
     990 }
     991 function makeKey_246(str) {
     992 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(2, 24)
     993 }
     994 function makeKey_247(str) {
     995 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(3, 24)
     996 }
     997 function makeKey_248(str) {
     998 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
     999 }
    1000 function makeKey_249(str) {
    1001 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
    1002 }
    1003 function makeKey_250(str) {
    1004 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(3, 24)
    1005 }
    1006 function makeKey_251(str) {
    1007 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(4, 24)
    1008 }
    1009 function makeKey_252(str) {
    1010 return hex_md5(makeKey_0(str) + makeKey_14(str)).substr(1, 24)
    1011 }
    1012 function makeKey_253(str) {
    1013 return hex_md5(makeKey_1(str) + makeKey_15(str)).substr(2, 24)
    1014 }
    1015 function makeKey_254(str) {
    1016 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
    1017 }
    1018 function makeKey_255(str) {
    1019 return hex_md5(makeKey_5(str) + makeKey_14(str)).substr(4, 24)
    1020 }
    1021 function makeKey_256(str) {
    1022 return hex_md5(makeKey_3(str) + makeKey_15(str)).substr(1, 24)
    1023 }
    1024 function makeKey_257(str) {
    1025 return hex_md5(makeKey_7(str) + makeKey_16(str)).substr(3, 24)
    1026 }
    1027 function makeKey_258(str) {
    1028 return hex_md5(makeKey_0(str) + makeKey_9(str)).substr(1, 24)
    1029 }
    1030 function makeKey_259(str) {
    1031 return hex_md5(makeKey_1(str) + makeKey_10(str)).substr(2, 24)
    1032 }
    1033 function makeKey_260(str) {
    1034 return hex_md5(makeKey_4(str) + makeKey_17(str)).substr(3, 24)
    1035 }
    1036 function makeKey_261(str) {
    1037 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(4, 24)
    1038 }
    1039 function makeKey_262(str) {
    1040 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(3, 24)
    1041 }
    1042 function makeKey_263(str) {
    1043 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(4, 24)
    1044 }
    1045 function makeKey_264(str) {
    1046 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(4, 24)
    1047 }
    1048 function makeKey_265(str) {
    1049 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(1, 24)
    1050 }
    1051 function makeKey_266(str) {
    1052 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(2, 24)
    1053 }
    1054 function makeKey_267(str) {
    1055 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
    1056 }
    1057 function makeKey_268(str) {
    1058 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(4, 24)
    1059 }
    1060 function makeKey_269(str) {
    1061 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(1, 24)
    1062 }
    1063 function makeKey_270(str) {
    1064 return hex_md5(makeKey_18(str) + makeKey_14(str)).substr(2, 24)
    1065 }
    1066 function makeKey_271(str) {
    1067 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(3, 24)
    1068 }
    1069 function makeKey_272(str) {
    1070 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(4, 24)
    1071 }
    1072 function makeKey_273(str) {
    1073 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(3, 24)
    1074 }
    1075 function makeKey_274(str) {
    1076 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(4, 24)
    1077 }
    1078 function makeKey_275(str) {
    1079 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
    1080 }
    1081 function makeKey_276(str) {
    1082 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
    1083 }
    1084 function makeKey_277(str) {
    1085 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(2, 24)
    1086 }
    1087 function makeKey_278(str) {
    1088 return hex_md5(makeKey_5(str) + makeKey_4(str)).substr(3, 24)
    1089 }
    1090 function makeKey_279(str) {
    1091 return hex_md5(makeKey_3(str) + makeKey_5(str)).substr(1, 24)
    1092 }
    1093 function makeKey_280(str) {
    1094 return hex_md5(makeKey_7(str) + makeKey_3(str)).substr(2, 24)
    1095 }
    1096 function makeKey_281(str) {
    1097 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(3, 24)
    1098 }
    1099 function makeKey_282(str) {
    1100 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
    1101 }
    1102 function makeKey_283(str) {
    1103 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
    1104 }
    1105 function makeKey_284(str) {
    1106 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
    1107 }
    1108 function makeKey_285(str) {
    1109 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
    1110 }
    1111 function makeKey_286(str) {
    1112 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
    1113 }
    1114 function makeKey_287(str) {
    1115 return hex_md5(makeKey_14(str) + makeKey_4(str)).substr(1, 24)
    1116 }
    1117 function makeKey_288(str) {
    1118 return hex_md5(makeKey_15(str) + makeKey_14(str)).substr(3, 24)
    1119 }
    1120 function makeKey_289(str) {
    1121 return hex_md5(makeKey_16(str) + makeKey_15(str)).substr(1, 24)
    1122 }
    1123 function makeKey_290(str) {
    1124 return hex_md5(makeKey_9(str) + makeKey_16(str)).substr(2, 24)
    1125 }
    1126 function makeKey_291(str) {
    1127 return hex_md5(makeKey_10(str) + makeKey_9(str)).substr(3, 24)
    1128 }
    1129 function makeKey_292(str) {
    1130 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(4, 24)
    1131 }
    1132 function makeKey_293(str) {
    1133 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(3, 24)
    1134 }
    1135 function makeKey_294(str) {
    1136 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
    1137 }
    1138 function makeKey_295(str) {
    1139 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(4, 24)
    1140 }
    1141 function makeKey_296(str) {
    1142 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(1, 24)
    1143 }
    1144 function makeKey_297(str) {
    1145 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(2, 24)
    1146 }
    1147 function makeKey_298(str) {
    1148 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
    1149 }
    1150 function makeKey_299(str) {
    1151 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(4, 24)
    1152 }
    1153 function makeKey_300(str) {
    1154 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(1, 24)
    1155 }
    1156 function makeKey_301(str) {
    1157 return hex_md5(makeKey_7(str) + makeKey_7(str)).substr(2, 24)
    1158 }
    1159 function makeKey_302(str) {
    1160 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
    1161 }
    1162 function makeKey_303(str) {
    1163 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
    1164 }
    1165 function makeKey_304(str) {
    1166 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(3, 24)
    1167 }
    1168 function makeKey_305(str) {
    1169 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
    1170 }
    1171 function makeKey_306(str) {
    1172 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
    1173 }
    1174 function makeKey_307(str) {
    1175 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(2, 24)
    1176 }
    1177 function makeKey_308(str) {
    1178 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(2, 24)
    1179 }
    1180 function makeKey_309(str) {
    1181 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(3, 24)
    1182 }
    1183 function makeKey_310(str) {
    1184 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(1, 24)
    1185 }
    1186 function makeKey_311(str) {
    1187 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(2, 24)
    1188 }
    1189 function makeKey_312(str) {
    1190 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(3, 24)
    1191 }
    1192 function makeKey_313(str) {
    1193 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(4, 24)
    1194 }
    1195 function makeKey_314(str) {
    1196 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(1, 24)
    1197 }
    1198 function makeKey_315(str) {
    1199 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(2, 24)
    1200 }
    1201 function makeKey_316(str) {
    1202 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(3, 24)
    1203 }
    1204 function makeKey_317(str) {
    1205 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
    1206 }
    1207 function makeKey_318(str) {
    1208 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(1, 24)
    1209 }
    1210 function makeKey_319(str) {
    1211 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(3, 24)
    1212 }
    1213 function makeKey_320(str) {
    1214 return hex_md5(makeKey_7(str) + makeKey_7(str)).substr(1, 24)
    1215 }
    1216 function makeKey_321(str) {
    1217 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(2, 24)
    1218 }
    1219 function makeKey_322(str) {
    1220 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(3, 24)
    1221 }
    1222 function makeKey_323(str) {
    1223 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(4, 24)
    1224 }
    1225 function makeKey_324(str) {
    1226 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(3, 24)
    1227 }
    1228 function makeKey_325(str) {
    1229 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(4, 24)
    1230 }
    1231 function makeKey_326(str) {
    1232 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
    1233 }
    1234 function makeKey_327(str) {
    1235 return hex_md5(makeKey_19(str) + makeKey_14(str)).substr(1, 24)
    1236 }
    1237 function makeKey_328(str) {
    1238 return hex_md5(makeKey_0(str) + makeKey_15(str)).substr(2, 24)
    1239 }
    1240 function makeKey_329(str) {
    1241 return hex_md5(makeKey_1(str) + makeKey_16(str)).substr(3, 24)
    1242 }
    1243 function makeKey_330(str) {
    1244 return hex_md5(makeKey_4(str) + makeKey_9(str)).substr(4, 24)
    1245 }
    1246 function makeKey_331(str) {
    1247 return hex_md5(makeKey_19(str) + makeKey_10(str)).substr(1, 24)
    1248 }
    1249 function makeKey_332(str) {
    1250 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(2, 24)
    1251 }
    1252 function makeKey_333(str) {
    1253 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(3, 24)
    1254 }
    1255 function makeKey_334(str) {
    1256 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(4, 24)
    1257 }
    1258 function makeKey_335(str) {
    1259 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(3, 24)
    1260 }
    1261 function makeKey_336(str) {
    1262 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(4, 24)
    1263 }
    1264 function makeKey_337(str) {
    1265 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(2, 24)
    1266 }
    1267 function makeKey_338(str) {
    1268 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(3, 24)
    1269 }
    1270 function makeKey_339(str) {
    1271 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(1, 24)
    1272 }
    1273 function makeKey_340(str) {
    1274 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(2, 24)
    1275 }
    1276 function makeKey_341(str) {
    1277 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(3, 24)
    1278 }
    1279 function makeKey_342(str) {
    1280 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
    1281 }
    1282 function makeKey_343(str) {
    1283 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
    1284 }
    1285 function makeKey_344(str) {
    1286 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
    1287 }
    1288 function makeKey_345(str) {
    1289 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
    1290 }
    1291 function makeKey_346(str) {
    1292 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
    1293 }
    1294 function makeKey_347(str) {
    1295 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(1, 24)
    1296 }
    1297 function makeKey_348(str) {
    1298 return hex_md5(makeKey_10(str) + makeKey_14(str)).substr(3, 24)
    1299 }
    1300 function makeKey_349(str) {
    1301 return hex_md5(makeKey_17(str) + makeKey_15(str)).substr(1, 24)
    1302 }
    1303 function makeKey_350(str) {
    1304 return hex_md5(makeKey_18(str) + makeKey_16(str)).substr(2, 24)
    1305 }
    1306 function makeKey_351(str) {
    1307 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(3, 24)
    1308 }
    1309 function makeKey_352(str) {
    1310 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(4, 24)
    1311 }
    1312 function makeKey_353(str) {
    1313 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
    1314 }
    1315 function makeKey_354(str) {
    1316 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(4, 24)
    1317 }
    1318 function makeKey_355(str) {
    1319 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(4, 24)
    1320 }
    1321 function makeKey_356(str) {
    1322 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(1, 24)
    1323 }
    1324 function makeKey_357(str) {
    1325 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(2, 24)
    1326 }
    1327 function makeKey_358(str) {
    1328 return hex_md5(makeKey_4(str) + makeKey_5(str)).substr(3, 24)
    1329 }
    1330 function makeKey_359(str) {
    1331 return hex_md5(makeKey_5(str) + makeKey_3(str)).substr(4, 24)
    1332 }
    1333 function makeKey_360(str) {
    1334 return hex_md5(makeKey_3(str) + makeKey_7(str)).substr(2, 24)
    1335 }
    1336 function makeKey_361(str) {
    1337 return hex_md5(makeKey_7(str) + makeKey_17(str)).substr(3, 24)
    1338 }
    1339 function makeKey_362(str) {
    1340 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(1, 24)
    1341 }
    1342 function makeKey_363(str) {
    1343 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
    1344 }
    1345 function makeKey_364(str) {
    1346 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
    1347 }
    1348 function makeKey_365(str) {
    1349 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(4, 24)
    1350 }
    1351 function makeKey_366(str) {
    1352 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(1, 24)
    1353 }
    1354 function makeKey_367(str) {
    1355 return hex_md5(makeKey_4(str) + makeKey_7(str)).substr(2, 24)
    1356 }
    1357 function makeKey_368(str) {
    1358 return hex_md5(makeKey_14(str) + makeKey_17(str)).substr(3, 24)
    1359 }
    1360 function makeKey_369(str) {
    1361 return hex_md5(makeKey_15(str) + makeKey_18(str)).substr(4, 24)
    1362 }
    1363 function makeKey_370(str) {
    1364 return hex_md5(makeKey_16(str) + makeKey_19(str)).substr(1, 24)
    1365 }
    1366 function makeKey_371(str) {
    1367 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
    1368 }
    1369 function makeKey_372(str) {
    1370 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(1, 24)
    1371 }
    1372 function makeKey_373(str) {
    1373 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(2, 24)
    1374 }
    1375 function makeKey_374(str) {
    1376 return hex_md5(makeKey_19(str) + makeKey_17(str)).substr(3, 24)
    1377 }
    1378 function makeKey_375(str) {
    1379 return hex_md5(makeKey_0(str) + makeKey_18(str)).substr(4, 24)
    1380 }
    1381 function makeKey_376(str) {
    1382 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(3, 24)
    1383 }
    1384 function makeKey_377(str) {
    1385 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(4, 24)
    1386 }
    1387 function makeKey_378(str) {
    1388 return hex_md5(makeKey_5(str) + makeKey_1(str)).substr(4, 24)
    1389 }
    1390 function makeKey_379(str) {
    1391 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(1, 24)
    1392 }
    1393 function makeKey_380(str) {
    1394 return hex_md5(makeKey_7(str) + makeKey_9(str)).substr(2, 24)
    1395 }
    1396 function makeKey_381(str) {
    1397 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(3, 24)
    1398 }
    1399 function makeKey_382(str) {
    1400 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
    1401 }
    1402 function makeKey_383(str) {
    1403 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
    1404 }
    1405 function makeKey_384(str) {
    1406 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
    1407 }
    1408 function makeKey_385(str) {
    1409 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
    1410 }
    1411 function makeKey_386(str) {
    1412 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
    1413 }
    1414 function makeKey_387(str) {
    1415 return hex_md5(makeKey_17(str) + makeKey_1(str)).substr(2, 24)
    1416 }
    1417 function makeKey_388(str) {
    1418 return hex_md5(makeKey_18(str) + makeKey_4(str)).substr(3, 24)
    1419 }
    1420 function makeKey_389(str) {
    1421 return hex_md5(makeKey_19(str) + makeKey_7(str)).substr(1, 24)
    1422 }
    1423 function makeKey_390(str) {
    1424 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(2, 24)
    1425 }
    1426 function makeKey_391(str) {
    1427 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(3, 24)
    1428 }
    1429 function makeKey_392(str) {
    1430 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(4, 24)
    1431 }
    1432 function makeKey_393(str) {
    1433 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(1, 24)
    1434 }
    1435 function makeKey_394(str) {
    1436 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(2, 24)
    1437 }
    1438 function makeKey_395(str) {
    1439 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(3, 24)
    1440 }
    1441 function makeKey_396(str) {
    1442 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
    1443 }
    1444 function makeKey_397(str) {
    1445 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
    1446 }
    1447 function makeKey_398(str) {
    1448 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(3, 24)
    1449 }
    1450 function makeKey_399(str) {
    1451 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(1, 24)
    1452 }
    1453 var arrFun = [makeKey_0, makeKey_1, makeKey_2, makeKey_3, makeKey_4, makeKey_5, makeKey_6, makeKey_7, makeKey_8, makeKey_9, makeKey_10, makeKey_11, makeKey_12, makeKey_13, makeKey_14, makeKey_15, makeKey_16, makeKey_17, makeKey_18, makeKey_19, makeKey_20, makeKey_21, makeKey_22, makeKey_23, makeKey_24, makeKey_25, makeKey_26, makeKey_27, makeKey_28, makeKey_29, makeKey_30, makeKey_31, makeKey_32, makeKey_33, makeKey_34, makeKey_35, makeKey_36, makeKey_37, makeKey_38, makeKey_39, makeKey_40, makeKey_41, makeKey_42, makeKey_43, makeKey_44, makeKey_45, makeKey_46, makeKey_47, makeKey_48, makeKey_49, makeKey_50, makeKey_51, makeKey_52, makeKey_53, makeKey_54, makeKey_55, makeKey_56, makeKey_57, makeKey_58, makeKey_59, makeKey_60, makeKey_61, makeKey_62, makeKey_63, makeKey_64, makeKey_65, makeKey_66, makeKey_67, makeKey_68, makeKey_69, makeKey_70, makeKey_71, makeKey_72, makeKey_73, makeKey_74, makeKey_75, makeKey_76, makeKey_77, makeKey_78, makeKey_79, makeKey_80, makeKey_81, makeKey_82, makeKey_83, makeKey_84, makeKey_85, makeKey_86, makeKey_87, makeKey_88, makeKey_89, makeKey_90, makeKey_91, makeKey_92, makeKey_93, makeKey_94, makeKey_95, makeKey_96, makeKey_97, makeKey_98, makeKey_99, makeKey_100, makeKey_101, makeKey_102, makeKey_103, makeKey_104, makeKey_105, makeKey_106, makeKey_107, makeKey_108, makeKey_109, makeKey_110, makeKey_111, makeKey_112, makeKey_113, makeKey_114, makeKey_115, makeKey_116, makeKey_117, makeKey_118, makeKey_119, makeKey_120, makeKey_121, makeKey_122, makeKey_123, makeKey_124, makeKey_125, makeKey_126, makeKey_127, makeKey_128, makeKey_129, makeKey_130, makeKey_131, makeKey_132, makeKey_133, makeKey_134, makeKey_135, makeKey_136, makeKey_137, makeKey_138, makeKey_139, makeKey_140, makeKey_141, makeKey_142, makeKey_143, makeKey_144, makeKey_145, makeKey_146, makeKey_147, makeKey_148, makeKey_149, makeKey_150, makeKey_151, makeKey_152, makeKey_153, makeKey_154, makeKey_155, makeKey_156, makeKey_157, makeKey_158, makeKey_159, makeKey_160, makeKey_161, makeKey_162, makeKey_163, makeKey_164, makeKey_165, makeKey_166, makeKey_167, makeKey_168, makeKey_169, makeKey_170, makeKey_171, makeKey_172, makeKey_173, makeKey_174, makeKey_175, makeKey_176, makeKey_177, makeKey_178, makeKey_179, makeKey_180, makeKey_181, makeKey_182, makeKey_183, makeKey_184, makeKey_185, makeKey_186, makeKey_187, makeKey_188, makeKey_189, makeKey_190, makeKey_191, makeKey_192, makeKey_193, makeKey_194, makeKey_195, makeKey_196, makeKey_197, makeKey_198, makeKey_199, makeKey_200, makeKey_201, makeKey_202, makeKey_203, makeKey_204, makeKey_205, makeKey_206, makeKey_207, makeKey_208, makeKey_209, makeKey_210, makeKey_211, makeKey_212, makeKey_213, makeKey_214, makeKey_215, makeKey_216, makeKey_217, makeKey_218, makeKey_219, makeKey_220, makeKey_221, makeKey_222, makeKey_223, makeKey_224, makeKey_225, makeKey_226, makeKey_227, makeKey_228, makeKey_229, makeKey_230, makeKey_231, makeKey_232, makeKey_233, makeKey_234, makeKey_235, makeKey_236, makeKey_237, makeKey_238, makeKey_239, makeKey_240, makeKey_241, makeKey_242, makeKey_243, makeKey_244, makeKey_245, makeKey_246, makeKey_247, makeKey_248, makeKey_249, makeKey_250, makeKey_251, makeKey_252, makeKey_253, makeKey_254, makeKey_255, makeKey_256, makeKey_257, makeKey_258, makeKey_259, makeKey_260, makeKey_261, makeKey_262, makeKey_263, makeKey_264, makeKey_265, makeKey_266, makeKey_267, makeKey_268, makeKey_269, makeKey_270, makeKey_271, makeKey_272, makeKey_273, makeKey_274, makeKey_275, makeKey_276, makeKey_277, makeKey_278, makeKey_279, makeKey_280, makeKey_281, makeKey_282, makeKey_283, makeKey_284, makeKey_285, makeKey_286, makeKey_287, makeKey_288, makeKey_289, makeKey_290, makeKey_291, makeKey_292, makeKey_293, makeKey_294, makeKey_295, makeKey_296, makeKey_297, makeKey_298, makeKey_299, makeKey_300, makeKey_301, makeKey_302, makeKey_303, makeKey_304, makeKey_305, makeKey_306, makeKey_307, makeKey_308, makeKey_309, makeKey_310, makeKey_311, makeKey_312, makeKey_313, makeKey_314, makeKey_315, makeKey_316, makeKey_317, makeKey_318, makeKey_319, makeKey_320, makeKey_321, makeKey_322, makeKey_323, makeKey_324, makeKey_325, makeKey_326, makeKey_327, makeKey_328, makeKey_329, makeKey_330, makeKey_331, makeKey_332, makeKey_333, makeKey_334, makeKey_335, makeKey_336, makeKey_337, makeKey_338, makeKey_339, makeKey_340, makeKey_341, makeKey_342, makeKey_343, makeKey_344, makeKey_345, makeKey_346, makeKey_347, makeKey_348, makeKey_349, makeKey_350, makeKey_351, makeKey_352, makeKey_353, makeKey_354, makeKey_355, makeKey_356, makeKey_357, makeKey_358, makeKey_359, makeKey_360, makeKey_361, makeKey_362, makeKey_363, makeKey_364, makeKey_365, makeKey_366, makeKey_367, makeKey_368, makeKey_369, makeKey_370, makeKey_371, makeKey_372, makeKey_373, makeKey_374, makeKey_375, makeKey_376, makeKey_377, makeKey_378, makeKey_379, makeKey_380, makeKey_381, makeKey_382, makeKey_383, makeKey_384, makeKey_385, makeKey_386, makeKey_387, makeKey_388, makeKey_389, makeKey_390, makeKey_391, makeKey_392, makeKey_393, makeKey_394, makeKey_395, makeKey_396, makeKey_397, makeKey_398, makeKey_399];
    1454 function getValue(cookie) {
    1455 var funIndex = strToLong(cookie) % arrFun.length;
    1456 var fun = arrFun[funIndex];
    1457 return fun(cookie);
    1458 }
    1459 var hexcase = 0;
    1460 var b64pad = "";
    1461 var chrsz = 8;
    1462 function hex_md5(s) {
    1463 return binl2hex(core_md5(str2binl(s), s.length * chrsz));
    1464 }
    1465 function b64_md5(s) {
    1466 return binl2b64(core_md5(str2binl(s), s.length * chrsz));
    1467 }
    1468 function str_md5(s) {
    1469 return binl2str(core_md5(str2binl(s), s.length * chrsz));
    1470 }
    1471 function hex_hmac_md5(key, data) {
    1472 return binl2hex(core_hmac_md5(key, data));
    1473 }
    1474 function b64_hmac_md5(key, data) {
    1475 return binl2b64(core_hmac_md5(key, data));
    1476 }
    1477 function str_hmac_md5(key, data) {
    1478 return binl2str(core_hmac_md5(key, data));
    1479 }
    1480 function md5_vm_test() {
    1481 return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
    1482 }
    1483 function core_md5(x, len) {
    1484 x[len >> 5] |= 0x80 << ((len) % 32);
    1485 x[(((len + 64) >>> 9) << 4) + 14] = len;
    1486 var a = 1732584193;
    1487 var b = -271733879;
    1488 var c = -1732584194;
    1489 var d = 271733878;
    1490 for (var i = 0; i < x.length; i += 16) {
    1491     var olda = a;
    1492     var oldb = b;
    1493     var oldc = c;
    1494     var oldd = d;
    1495     a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
    1496     d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
    1497     c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
    1498     b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
    1499     a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
    1500     d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
    1501     c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
    1502     b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
    1503     a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
    1504     d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
    1505     c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
    1506     b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
    1507     a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
    1508     d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
    1509     c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
    1510     b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
    1511     a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
    1512     d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
    1513     c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
    1514     b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
    1515     a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
    1516     d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
    1517     c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
    1518     b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
    1519     a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
    1520     d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
    1521     c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
    1522     b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
    1523     a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
    1524     d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
    1525     c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
    1526     b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
    1527     a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
    1528     d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
    1529     c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
    1530     b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
    1531     a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
    1532     d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
    1533     c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
    1534     b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
    1535     a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
    1536     d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
    1537     c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
    1538     b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
    1539     a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
    1540     d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
    1541     c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
    1542     b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
    1543     a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
    1544     d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
    1545     c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
    1546     b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
    1547     a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
    1548     d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
    1549     c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
    1550     b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
    1551     a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
    1552     d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
    1553     c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
    1554     b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
    1555     a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
    1556     d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
    1557     c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
    1558     b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
    1559     a = safe_add(a, olda);
    1560     b = safe_add(b, oldb);
    1561     c = safe_add(c, oldc);
    1562     d = safe_add(d, oldd);
    1563 }
    1564 return Array(a, b, c, d);
    1565 }
    1566 function md5_cmn(q, a, b, x, s, t) {
    1567 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
    1568 }
    1569 function md5_ff(a, b, c, d, x, s, t) {
    1570 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
    1571 }
    1572 function md5_gg(a, b, c, d, x, s, t) {
    1573 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
    1574 }
    1575 function md5_hh(a, b, c, d, x, s, t) {
    1576 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
    1577 }
    1578 function md5_ii(a, b, c, d, x, s, t) {
    1579 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
    1580 }
    1581 function core_hmac_md5(key, data) {
    1582 var bkey = str2binl(key);
    1583 if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
    1584 var ipad = Array(16),
    1585 opad = Array(16);
    1586 for (var i = 0; i < 16; i++) {
    1587     ipad[i] = bkey[i] ^ 0x36363636;
    1588     opad[i] = bkey[i] ^ 0x5C5C5C5C;
    1589 }
    1590 var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
    1591 return core_md5(opad.concat(hash), 512 + 128);
    1592 }
    1593 function safe_add(x, y) {
    1594 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    1595 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    1596 return (msw << 16) | (lsw & 0xFFFF);
    1597 }
    1598 function bit_rol(num, cnt) {
    1599 return (num << cnt) | (num >>> (32 - cnt));
    1600 }
    1601 function str2binl(str) {
    1602 var bin = Array();
    1603 var mask = (1 << chrsz) - 1;
    1604 for (var i = 0; i < str.length * chrsz; i += chrsz) bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
    1605 return bin;
    1606 }
    1607 function binl2str(bin) {
    1608 var str = "";
    1609 var mask = (1 << chrsz) - 1;
    1610 for (var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
    1611 return str;
    1612 }
    1613 function binl2hex(binarray) {
    1614 var hex_tab = hexcase ? "0123456789ABCDEF": "0123456789abcdef";
    1615 var str = "";
    1616 for (var i = 0; i < binarray.length * 4; i++) {
    1617     str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);
    1618 }
    1619 return str;
    1620 }
    1621 function binl2b64(binarray) {
    1622 var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    1623 var str = "";
    1624 for (var i = 0; i < binarray.length * 4; i += 3) {
    1625     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);
    1626     for (var j = 0; j < 4; j++) {
    1627         if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
    1628         else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
    1629     }
    1630 }
    1631 return str;
    1632 }
    1633 
    1634 function Base64() {  
    1635    
    1636     // private property  
    1637     _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  
    1638    
    1639     // public method for encoding  
    1640     this.encode = function (input) {  
    1641         var output = "";  
    1642         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
    1643         var i = 0;  
    1644         input = _utf8_encode(input);  
    1645         while (i < input.length) {  
    1646             chr1 = input.charCodeAt(i++);  
    1647             chr2 = input.charCodeAt(i++);  
    1648             chr3 = input.charCodeAt(i++);  
    1649             enc1 = chr1 >> 2;  
    1650             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
    1651             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
    1652             enc4 = chr3 & 63;  
    1653             if (isNaN(chr2)) {  
    1654                 enc3 = enc4 = 64;  
    1655             } else if (isNaN(chr3)) {  
    1656                 enc4 = 64;  
    1657             }  
    1658             output = output +  
    1659             _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +  
    1660             _keyStr.charAt(enc3) + _keyStr.charAt(enc4);  
    1661         }  
    1662         return output;  
    1663     }  
    1664    
    1665     // public method for decoding  
    1666     this.decode = function (input) {  
    1667         var output = "";  
    1668         var chr1, chr2, chr3;  
    1669         var enc1, enc2, enc3, enc4;  
    1670         var i = 0;  
    1671         input = input.replace(/[^A-Za-z0-9+/=]/g, "");  
    1672         while (i < input.length) {  
    1673             enc1 = _keyStr.indexOf(input.charAt(i++));  
    1674             enc2 = _keyStr.indexOf(input.charAt(i++));  
    1675             enc3 = _keyStr.indexOf(input.charAt(i++));  
    1676             enc4 = _keyStr.indexOf(input.charAt(i++));  
    1677             chr1 = (enc1 << 2) | (enc2 >> 4);  
    1678             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
    1679             chr3 = ((enc3 & 3) << 6) | enc4;  
    1680             output = output + String.fromCharCode(chr1);  
    1681             if (enc3 != 64) {  
    1682                 output = output + String.fromCharCode(chr2);  
    1683             }  
    1684             if (enc4 != 64) {  
    1685                 output = output + String.fromCharCode(chr3);  
    1686             }  
    1687         }  
    1688         output = _utf8_decode(output);  
    1689         return output;  
    1690     }  
    1691    
    1692     // private method for UTF-8 encoding  
    1693     _utf8_encode = function (string) {  
    1694         string = string.replace(/
    /g,"
    ");  
    1695         var utftext = "";  
    1696         for (var n = 0; n < string.length; n++) {  
    1697             var c = string.charCodeAt(n);  
    1698             if (c < 128) {  
    1699                 utftext += String.fromCharCode(c);  
    1700             } else if((c > 127) && (c < 2048)) {  
    1701                 utftext += String.fromCharCode((c >> 6) | 192);  
    1702                 utftext += String.fromCharCode((c & 63) | 128);  
    1703             } else {  
    1704                 utftext += String.fromCharCode((c >> 12) | 224);  
    1705                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
    1706                 utftext += String.fromCharCode((c & 63) | 128);  
    1707             }  
    1708    
    1709         }  
    1710         return utftext;  
    1711     }  
    1712    
    1713     // private method for UTF-8 decoding  
    1714     _utf8_decode = function (utftext) {  
    1715         var string = "";  
    1716         var i = 0;  
    1717         var c = c1 = c2 = 0;  
    1718         while ( i < utftext.length ) {  
    1719             c = utftext.charCodeAt(i);  
    1720             if (c < 128) {  
    1721                 string += String.fromCharCode(c);  
    1722                 i++;  
    1723             } else if((c > 191) && (c < 224)) {  
    1724                 c2 = utftext.charCodeAt(i+1);  
    1725                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
    1726                 i += 2;  
    1727             } else {  
    1728                 c2 = utftext.charCodeAt(i+1);  
    1729                 c3 = utftext.charCodeAt(i+2);  
    1730                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
    1731                 i += 3;  
    1732             }  
    1733         }  
    1734         return string;  
    1735     }  
    1736 }
    1737 
    1738 /*   
    1739  *   A   JavaScript   implementation   of   the   Secure   Hash   Algorithm,   SHA-1,   as   defined   
    1740  *   in   FIPS   PUB   180-1   
    1741  *   Version   2.1-BETA   Copyright   Paul   Johnston   2000   -   2002.   
    1742  *   Other   contributors:   Greg   Holt,   Andrew   Kepert,   Ydnar,   Lostinet   
    1743  *   Distributed   under   the   BSD   License   
    1744  *   See   http://pajhome.org.uk/crypt/md5   for   details.   
    1745  */
    1746 /*   
    1747  *   Configurable   variables.   You   may   need   to   tweak   these   to   be   compatible   with   
    1748  *   the   server-side,   but   the   defaults   work   in   most   cases.   
    1749  */
    1750 var hexcase = 0; /*   hex   output   format.   0   -   lowercase;   1   -   uppercase                 */
    1751 var b64pad = ""; /*   base-64   pad   character.   "="   for   strict   RFC   compliance       */
    1752 var chrsz = 8; /*   bits   per   input   character.   8   -   ASCII;   16   -   Unicode             */
    1753 
    1754 /*   
    1755  *   These   are   the   functions   you'll   usually   want   to   call   
    1756  *   They   take   string   arguments   and   return   either   hex   or   base-64   encoded   strings   
    1757  */
    1758 function hex_sha1(s) {
    1759     return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
    1760 }
    1761 
    1762 function b64_sha1(s) {
    1763     return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
    1764 }
    1765 
    1766 function str_sha1(s) {
    1767     return binb2str(core_sha1(str2binb(s), s.length * chrsz));
    1768 }
    1769 
    1770 function hex_hmac_sha1(key, data) {
    1771     return binb2hex(core_hmac_sha1(key, data));
    1772 }
    1773 
    1774 function b64_hmac_sha1(key, data) {
    1775     return binb2b64(core_hmac_sha1(key, data));
    1776 }
    1777 
    1778 function str_hmac_sha1(key, data) {
    1779     return binb2str(core_hmac_sha1(key, data));
    1780 }
    1781 
    1782 /*   
    1783  *   Perform   a   simple   self-test   to   see   if   the   VM   is   working   
    1784  */
    1785 function sha1_vm_test() {
    1786     return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
    1787 }
    1788 
    1789 /*   
    1790  *   Calculate   the   SHA-1   of   an   array   of   big-endian   words,   and   a   bit   length   
    1791  */
    1792 function core_sha1(x, len) {
    1793     /*   append   padding   */
    1794     x[len >> 5] |= 0x80 << (24 - len % 32);
    1795     x[((len + 64 >> 9) << 4) + 15] = len;
    1796 
    1797     var w = Array(80);
    1798     var a = 1732584193;
    1799     var b = -271733879;
    1800     var c = -1732584194;
    1801     var d = 271733878;
    1802     var e = -1009589776;
    1803 
    1804     for (var i = 0; i < x.length; i += 16) {
    1805         var olda = a;
    1806         var oldb = b;
    1807         var oldc = c;
    1808         var oldd = d;
    1809         var olde = e;
    1810 
    1811         for (var j = 0; j < 80; j++) {
    1812             if (j < 16) w[j] = x[i + j];
    1813             else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
    1814             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)));
    1815             e = d;
    1816             d = c;
    1817             c = rol(b, 30);
    1818             b = a;
    1819             a = t;
    1820         }
    1821 
    1822         a = safe_add(a, olda);
    1823         b = safe_add(b, oldb);
    1824         c = safe_add(c, oldc);
    1825         d = safe_add(d, oldd);
    1826         e = safe_add(e, olde);
    1827     }
    1828     return Array(a, b, c, d, e);
    1829 
    1830 }
    1831 
    1832 /*   
    1833  *   Perform   the   appropriate   triplet   combination   function   for   the   current   
    1834  *   iteration   
    1835  */
    1836 function sha1_ft(t, b, c, d) {
    1837     if (t < 20) return (b & c) | ((~b) & d);
    1838     if (t < 40) return b ^ c ^ d;
    1839     if (t < 60) return (b & c) | (b & d) | (c & d);
    1840     return b ^ c ^ d;
    1841 }
    1842 
    1843 /*   
    1844  *   Determine   the   appropriate   additive   constant   for   the   current   iteration   
    1845  */
    1846 function sha1_kt(t) {
    1847     return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
    1848 }
    1849 
    1850 /*   
    1851  *   Calculate   the   HMAC-SHA1   of   a   key   and   some   data   
    1852  */
    1853 function core_hmac_sha1(key, data) {
    1854     var bkey = str2binb(key);
    1855     if (bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
    1856 
    1857     var ipad = Array(16),
    1858         opad = Array(16);
    1859     for (var i = 0; i < 16; i++) {
    1860         ipad[i] = bkey[i] ^ 0x36363636;
    1861         opad[i] = bkey[i] ^ 0x5C5C5C5C;
    1862     }
    1863 
    1864     var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
    1865     return core_sha1(opad.concat(hash), 512 + 160);
    1866 }
    1867 
    1868 /*   
    1869  *   Add   integers,   wrapping   at   2^32.   This   uses   16-bit   operations   internally   
    1870  *   to   work   around   bugs   in   some   JS   interpreters.   
    1871  */
    1872 function safe_add(x, y) {
    1873     var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    1874     var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    1875     return (msw << 16) | (lsw & 0xFFFF);
    1876 }
    1877 
    1878 /*   
    1879  *   Bitwise   rotate   a   32-bit   number   to   the   left.   
    1880  */
    1881 function rol(num, cnt) {
    1882     return (num << cnt) | (num >>> (32 - cnt));
    1883 }
    1884 
    1885 /*   
    1886  *   Convert   an   8-bit   or   16-bit   string   to   an   array   of   big-endian   words   
    1887  *   In   8-bit   function,   characters   >255   have   their   hi-byte   silently   ignored.   
    1888  */
    1889 function str2binb(str) {
    1890     var bin = Array();
    1891     var mask = (1 << chrsz) - 1;
    1892     for (var i = 0; i < str.length * chrsz; i += chrsz)
    1893     bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i % 32);
    1894     return bin;
    1895 }
    1896 
    1897 /*   
    1898  *   Convert   an   array   of   big-endian   words   to   a   string   
    1899  */
    1900 function binb2str(bin) {
    1901     var str = "";
    1902     var mask = (1 << chrsz) - 1;
    1903     for (var i = 0; i < bin.length * 32; i += chrsz)
    1904     str += String.fromCharCode((bin[i >> 5] >>> (24 - i % 32)) & mask);
    1905     return str;
    1906 }
    1907 
    1908 /*   
    1909  *   Convert   an   array   of   big-endian   words   to   a   hex   string.   
    1910  */
    1911 function binb2hex(binarray) {
    1912     var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    1913     var str = "";
    1914     for (var i = 0; i < binarray.length * 4; i++) {
    1915         str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
    1916     }
    1917     return str;
    1918 }
    1919 
    1920 /*   
    1921  *   Convert   an   array   of   big-endian   words   to   a   base-64   string   
    1922  */
    1923 function binb2b64(binarray) {
    1924     var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    1925     var str = "";
    1926     for (var i = 0; i < binarray.length * 4; i += 3) {
    1927         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);
    1928         for (var j = 0; j < 4; j++) {
    1929             if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
    1930             else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
    1931         }
    1932     }
    1933     return str;
    1934 }
    View Code

      到这一步,获取列表已经完全没有问题了,接下来获取详情页,详情页其实只需要一个参数【文书ID】,获取列表页的时候返回的文书ID是Base64编码的,解码后发现是密文,查找JS发现是通过AES加密

    //增加7道爬虫防御 段智峰 20180807
    function Navi(id, keyword) {
        var unzipid = unzip(id);
        try {
            var realid = com.str.Decrypt(unzipid);
            if (realid == "") {
                setTimeout("Navi('" + id + "','" + keyword + "')", 1000);
            } else {
                var url = "/content/content?DocID=" + realid + "&KeyWord=" + keyword;
                openWin(url);
            }
        } catch (ex) {
            setTimeout("Navi('" + id + "','" + keyword + "')", 1000);
        }
    }
    View Code

      这个是网站的解密方法,查看AES发现 KEY和IV居然都是明文写的,直接解密,发现解密不了,打断点调试才发现原来明文写死的KEY是假的,只是烟雾弹,真正的KEY是动态生成的,搞定这个KEY搞了好久,这里就不贴代码了,如果有需要的朋友可以联系我,可以有偿提供解密KEY的代码以及找到KEY的思路。

  • 相关阅读:
    poj 3321 Apple Tree
    hdu 1520 Anniversary party
    Light OJ 1089 Points in Segments (II)
    Timus 1018 Binary Apple Tree
    zoj 3299 Fall the Brick
    HFUT 1287 法默尔的农场
    Codeforces 159C String Manipulation 1.0
    GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
    使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)
    GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频)
  • 原文地址:https://www.cnblogs.com/mldcy/p/9675361.html
Copyright © 2011-2022 走看看