目录

爬虫逆向-Day18Day19-扣JS逆向练习案例3爱给网

爬虫&逆向–Day18&Day19–扣JS逆向练习【案例3:爱给网】

一、案例【爱给】

案例地址链接:https://www.aigei.com/sound/class/

案例爬取链接:https://www.aigei.com/f/d/audio_mp3

1.1、入口定位–请求堆栈

https://i-blog.csdnimg.cn/img_convert/9b3af6bc58a56b57beb2f641a03a64f8.png

经过分析我们确定,该案例有请求加密和响应解密,其中在请求加密中,加密是和请求头中的x-requested-etag:  还有请求参数v有关系,所以我们需要破解这两个参数

该案例我们按照正常的加密搜索:encrypt(   会搜索出来很多的匹配结果

通过key关键字搜索v或headers也会搜索出来很多的匹配结果

经过分析该网站适合使用请求堆栈

https://i-blog.csdnimg.cn/img_convert/2c92718291f8ca9c1649c31566b9af67.png

1.2、代码分析

https://i-blog.csdnimg.cn/img_convert/99112adabadf0a30f4e20ea02363e0ad.png

https://i-blog.csdnimg.cn/img_convert/844cb0889a82ed7b203ea13fa685e928.png

https://i-blog.csdnimg.cn/img_convert/272eb5dd679183681f547937ed3ef473.png

1.3、扣JS

https://i-blog.csdnimg.cn/img_convert/2aafafd47a297c7935e3ae210015a3f8.png

1.4、补充依赖【$、全局搜索、Class文件】

https://i-blog.csdnimg.cn/direct/193220a5f4774cf084e32b41cf0ac276.png

以上的错误是一个经典错误,和前端的一个组件JQuery有关系,

https://i-blog.csdnimg.cn/direct/670c38ff45374075aaa8efcc3c7df991.png

经过搜索确定是JQuery,这个时候我们就需要搜索答案如何处理,可以借助AI工具

https://i-blog.csdnimg.cn/direct/e3841969931648e9b3c37cef39239fc9.png

https://i-blog.csdnimg.cn/direct/1188b16a6fa747178cc18a1fc2639479.png


方案一:使用jsdom和jQuery
 首先,安装必要的包:
 npm install jquery jsdom
 然后,在你的代码中,需要先设置jsdom环境,并将jQuery的`$`和`window`等变量注入到全局命名空间(或者传入你的代码中)。
 示例设置代码:

const { JSDOM } = require('jsdom');
const { window } = new JSDOM();
const $ = require('jquery')(window);

当我们在搜索一些找不到的内容时,如果当前的文件找不到,我们可以去全局进行搜索

https://i-blog.csdnimg.cn/direct/934f972a415f445f8524bfb94d5dbf0a.png

https://i-blog.csdnimg.cn/direct/eb635468c0f347ce82b6bdb87f2c6057.png

https://i-blog.csdnimg.cn/direct/fe8badaf07b8484e96fddea846220bea.png

https://i-blog.csdnimg.cn/direct/86524ef86aa64bcb8a71163f419f8098.png

以上的M值就是Y值,通过输入【M值/Y值】经过cbbj方法得到V值

D = cqbj(Y)  所以D来自于Y  Y来自于J

秉着缺什么搜什么补什么,当搜索到的内容在class文件中

https://i-blog.csdnimg.cn/direct/cedbd4f3db184275ae8818e37de06de0.png


var F = $('#pIii111lllE')['val']();  // 这句话的意思:页面中有个标签id值等于pIii111lllE的值
如何处理:
var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4"  // 找到id标签的值,假当固定值直接赋值给F

https://i-blog.csdnimg.cn/direct/c2f76df2985b47208bf9b0c42e807d87.png

1.5、代码文件

1.5.1、Python文件:aigei_1.py


import requests
from lxml import etree
import execjs
import re

# 先打开我们扣的JS代码,然后逐行读取JS代码
with open("aigei.js", "r", encoding="utf-8") as f:
    js_str = f.read()
# execjs.compile  编译这个js代码  创建编译器
# js_code_compile 可以调用JS代码中的任意一个函数
js_compile = execjs.compile(js_str)

"""
发送class文档请求,获取我们需要爬取的目标接口加密请求需要的数据
var vvvvvvviisssss = "4d6507b8066a";
<input id="pIii111lllE" type="hidden" value="9fc66f750be7efcc678a0c419dd18302099ed6da4d1179c55463179daaf02e79">

"""
# 发送class请求,并解析,获取我们目标请求需要数据
cookies = {
    'audio_play_last_position': '2975.133',
    'gei_d_u': '40db6161a6f64ad8825fd595c026d1d8',
    'gei_d_1': 'd9e38d327d1093e88523ac4cab4e89a01bb083a23e5050260b8b26794a95fdb8aff62f4dcb704c8d425db8b17017a26bd47e6094640e2d199e7e51e07c7fa402',
    'hhhssi1ill1i': '87c8c1ee2b05a30e834eb742063bb154',
    'oOO0OO0oOO00oo0o': 'true',
    'geiweb-v': 'zZ+S93HA1QcgSamNOxD3ezCRRC5FE98Mffr+mHjOxFxqeqTxyq2cIl6w57cWApcr',
    'OooOO000oOOO00o': '5b78eab279584eb6b21e185faf0d8161',
    'Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756195226',
    'HMACCOUNT': 'C3562EDA6D20764A',
    'SESSION': '76e06155-aa2e-4ec4-8e54-1591ea48317e',
    'SERVERID': '8e6d20fd2c760c1a50e8e9f62a2811e6|1756199077|1756195222',
    'Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756199078',
}
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cache-control': 'max-age=0',
    # 'cookie': 'audio_play_last_position=2975.133; gei_d_u=40db6161a6f64ad8825fd595c026d1d8; gei_d_1=d9e38d327d1093e88523ac4cab4e89a01bb083a23e5050260b8b26794a95fdb8aff62f4dcb704c8d425db8b17017a26bd47e6094640e2d199e7e51e07c7fa402; hhhssi1ill1i=87c8c1ee2b05a30e834eb742063bb154; oOO0OO0oOO00oo0o=true; geiweb-v=zZ+S93HA1QcgSamNOxD3ezCRRC5FE98Mffr+mHjOxFxqeqTxyq2cIl6w57cWApcr; OooOO000oOOO00o=5b78eab279584eb6b21e185faf0d8161; Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756195226; HMACCOUNT=C3562EDA6D20764A; SESSION=76e06155-aa2e-4ec4-8e54-1591ea48317e; SERVERID=8e6d20fd2c760c1a50e8e9f62a2811e6|1756199077|1756195222; Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756199078',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
}
url = "https://www.aigei.com/sound/class/"
response = requests.get(url=url, cookies=cookies, headers=headers)
page_text = response.text
# print("page_text:::", page_text)

# HTML()专门用来解析网络请求到的页面源码数据  接收的是字符串     parse存放的是html文档的文件
tree = etree.HTML(response.text)

cccllpptttgt = re.search(
    r'cccllpptttgt: \'([^\']+)\'',  # 匹配单引号内的值
    tree.xpath('//script[contains(text(), "cccllpptttgt:")]')[0].text
).group(1)
# print("cccllpptttgt:::", cccllpptttgt)

# 解析出第一页每个音频文件的input元素
# <input type="hidden" id="itemInfoToken_audio_mp3_117884418" itemid="117884418" fuid="" class="" ftype="audio_mp3" fmodel="play" rurl="117884418" extime="1756350000389" token="fe4aa7f967ce021f68040c52391e3954" cbk="callBackAudioFilePlay" rcbk="downloadAudioCallback">
items = tree.xpath("//input[@type='hidden' and starts-with(@id, 'itemInfoToken_audio_mp3_')]")
# print("items:::", items)

# 取出计算ETag值的实参U
F = tree.xpath('//*[@id="pIii111lllE"]/@value')[0]
# print('U::::', F)

# 根据input标签,取出需要的值,组装W
for item in items:
    rurl = item.get('rurl')
    extime = item.get('extime')
    token = item.get('token')

    # 组合js文件需要的实参W
    # params_J = {
    #     "type": "audio_mp3",
    #     "fileUuid": "",
    #     "model": "play",
    #     # "model": "playLog",
    #     "itemId": rurl,
    #     "rescUrl": rurl,
    #     "expireTime": extime,
    #     "token": token,
    #     "callBack": "callBackAudioFilePlay",
    #     "resJsCallback": "downloadAudioCallback"
    # }
    params_J = {
        "type": "audio_mp3",
        "fileUuid": "",
        "model": "play",
        "itemId": rurl,
        "item": None,
        "rescUrl": rurl,
        "expireTime": extime,
        "token": token,
        "callBack": "callBackAudioFilePlay",
        "resJsCallback": "downloadAudioCallback",
        "custPlayCallBack": None,
        "downUuid": None,
        "customData": {
            "0": {
                "jQuery11020794731646544379": 4191
            },
            "context": {
                "jQuery11020794731646544379": 4191
            },
            "length": 1
        }
    }

    v_ETag = js_compile.call('fget', params_J, F)
    print(v_ETag['etag'])


    # 发送目标爬虫数据
    # headers中需要替换 cccllpptttgt、x-requested-etag
    # 请求参数中需要替换V
    cookies = {
        'gei_d_u': '0255a4022dc14ea4a925fa1a5a9e6b8f',
        'gei_d_1': 'd9e38d327d1093e839f5b2f9d1937fe75c61bb0d80e3a9dcdd30dee85031f1e424834bdb5b12c1e4036900e520d75a0fbe5e8f8d6a64808c8571a4cabac00a7c',
        'SESSION': '22169d86-94d2-42de-86b3-4afeeb79549d',
        'geiweb-v': 'zZ+S93HA1QdNfcOP/TnRkiaFdmXc6qirZyRTSFeYwBjcTbF5PCQRX0B55ahuU/v9',
        'hhhssi1ill1i': '87c8c1ee2b05a30e834eb742063bb154',
        'oOO0OO0oOO00oo0o': 'true',
        'OooOO000oOOO00o': 'cbf475b74ebe48f6b6968b46c84ab978',
        'Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756540160',
        'HMACCOUNT': 'C6D31267DE171E44',
        'Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756540163',
        'SERVERID': '31234a7bd8ff50a386f3e53c5f85a5fd|1756540182|1756540159',
    }

    headers = {
        'accept': '*/*',
        'accept-language': 'zh-CN,zh;q=0.9',
        'cccllpptttgt': cccllpptttgt,
        'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
        # 'cookie': 'gei_d_u=0255a4022dc14ea4a925fa1a5a9e6b8f; gei_d_1=d9e38d327d1093e839f5b2f9d1937fe75c61bb0d80e3a9dcdd30dee85031f1e424834bdb5b12c1e4036900e520d75a0fbe5e8f8d6a64808c8571a4cabac00a7c; SESSION=22169d86-94d2-42de-86b3-4afeeb79549d; geiweb-v=zZ+S93HA1QdNfcOP/TnRkiaFdmXc6qirZyRTSFeYwBjcTbF5PCQRX0B55ahuU/v9; hhhssi1ill1i=87c8c1ee2b05a30e834eb742063bb154; oOO0OO0oOO00oo0o=true; OooOO000oOOO00o=cbf475b74ebe48f6b6968b46c84ab978; Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756540160; HMACCOUNT=C6D31267DE171E44; Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756540163; SERVERID=31234a7bd8ff50a386f3e53c5f85a5fd|1756540182|1756540159',
        'origin': 'https://www.aigei.com',
        'priority': 'u=1, i',
        'referer': 'https://www.aigei.com/sound/class/',
        'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-origin',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
        'x-requested-etag': v_ETag['etag'],
        'x-requested-with': 'XMLHttpRequest',
    }

    data = {
        'v': v_ETag['v'],
    }

    response = requests.post('https://www.aigei.com/f/d/audio_mp3', cookies=cookies, headers=headers, data=data)
    print(response.text)
    print(response)

    break

1.5.2、JS文件:aigei.js


// 就是创建一个JQuery对象
const {JSDOM} = require('jsdom');
const {window} = new JSDOM();
const $ = require('jquery')(window);


//**************************************** 一、V值的依赖     ******************
var dZ = {};
dZ['il0oo0Oli1il1'] = 0x9 - 0x3;
var lll1i111lOOO0o00ii1 = dZ;

var llliiii1i0o0o0Oii1 = {
    ili1lo0o0O: 98515 - 98500 - 9
};
var lili1lli0o000oO = {
    iliOOO00ool1: 18 - 9
};
var lllio0o0OO1i111li1lii1 = {
    ilio0oOOi1il1: 34 - 33
};

var dfu = function (T, V, x, u, Q, O, o) {
    var G = fInction(T, V);
    G += '-' + x + '-' + u;
    var j = {};
    return j['ud'] = getUUID(),
        j['v'] = G,
        j['type'] = T,
        j['rescUrl'] = V,
        j['pkg'] = O || ![],
        j['saveAs'] = o,
        j['vis'] = vvvvvvviisssss,
    Q && (j['vc'] = Q),
        j;
}
    , cqbj = function (i) {
    var T = {
        'v': ssssdddttssssStr(i)
    };
    return T;
}
    , prest = function (i) {
    var T = new llii1i1iill();
    return T['ilil111lii'](i);
};

function ssssdddttssssStr(i) {
    var T = jkks(i)
        , V = Math['floor'](Math['random']() * 0x5) + 0x1;
    for (var x = 0x0; x < V; x++) {
        T = jkkc(T);
    }
    return T = T['substring'](0x0, 0x20) + V + T['substring'](0x20, T['length']),
        T;
}

function nmnmue23(i) {
    var T = '';
    return $['each'](i, function (V, x) {
        T += ',\x22' + V + '\x22:\x22' + x + '\x22';
    }),
    T != '' && (T = T['substring'](0x1)),
    '{' + T + '}';
}

function ueh3875(i) {
    var T = '';
    return $['each'](i, function (V, x) {
        T += ';' + V + ':' + x;
    }),
    T != '' && (T = T['substring'](0x1)),
    '{' + T + '}';
}

function jkks(i) {
    return 0x7d6c0 - 0x14e75 * 0x6 == 0x2 ? nmnmue23(i) : ueh3875(i);
}

function li1li1li(i) {
    var T = 0x0;
    if (!isNull(i))
        for (var V = 0x0; V < i['length']; V++) {
            T = T * 0x1f + i['charCodeAt'](V),
                T = intValue(T);
        }
    return T;
}

var eh = {};
eh['ili10ooOO1'] = 0xf - 0x9;
var llli111li1lil1 = eh;

function intValue(i) {
    var T = 0x7fffffff
        , V = -0x80000000;
    if (i > T || i < V)
        return i &= 0xffffffff;
    return i;
}

function li1iiil1(i) {
    var T = '';
    i = i + '';
    for (var V = 0x1; V <= i['length']; V++) {
        T += getStrPos(i, i['length'] - V + 0x1);
    }
    return T;
}

function getStrPos(i, T) {
    i = i + '';
    var V = i['substring'](T - 0x1, T);
    return V;
}

function isNull(i) {
    return i == null || i['value'] == '';
}

var GeiJS = GeiJS || function (T, V) {
    var b = {}
        , x = b['lib'] = {}
        , u = function () {
    }
        , Q = x['Base'] = {
        'extend': function (Y) {
            u['prototype'] = this;
            var I = new u();
            return Y && I['mixIn'](Y),
            I['hasOwnProperty']('init') || (I['init'] = function () {
                    I['$super']['init']['apply'](this, arguments);
                }
            ),
                I['init']['prototype'] = I,
                I['$super'] = this,
                I;
        },
        'create': function () {
            var Y = this['extend']();
            return Y['init']['apply'](Y, arguments),
                Y;
        },
        'init': function () {
        },
        'mixIn': function (Y) {
            for (var I in Y) {
                Y['hasOwnProperty'](I) && (this[I] = Y[I]);
            }
            Y['hasOwnProperty']('toString') && (this['toString'] = Y['toString']);
        },
        'clone': function () {
            return this['init']['prototype']['extend'](this);
        }
    }
        , O = x['WordArray'] = Q['extend']({
        'init': function (Y, I) {
            Y = this['words'] = Y || [],
                this['sigBytes'] = I != V ? I : 0x4 * Y['length'];
        },
        'toString': function (Y) {
            return (Y || A)['stringify'](this);
        },
        'concat': function (Y) {
            var I = this['words']
                , H = Y['words']
                , E = this['sigBytes'];
            Y = Y['sigBytes'],
                this['clamp']();
            if (E % 0x4)
                for (var R = 0x0; R < Y; R++) {
                    I[E + R >>> 0x2] |= (H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff) << 0x18 - 0x8 * ((E + R) % 0x4);
                }
            else {
                if (0xffff < H['length'])
                    for (R = 0x0; R < Y; R += 0x4) {
                        I[E + R >>> 0x2] = H[R >>> 0x2];
                    }
                else
                    I['push']['apply'](I, H);
            }
            return this['sigBytes'] += Y,
                this;
        },
        'clamp': function () {
            var Y = this['words']
                , I = this['sigBytes'];
            Y[I >>> 0x2] &= 0xffffffff << 0x20 - 0x8 * (I % 0x4),
                Y['length'] = T['ceil'](I / 0x4);
        },
        'clone': function () {
            var Y = Q['clone']['call'](this);
            return Y['words'] = this['words']['slice'](0x0),
                Y;
        },
        'random': function (Y) {
            for (var I = [], H = 0x0; H < Y; H += 0x4) {
                I['push'](0x100000000 * T['random']() | 0x0);
            }
            return new O['init'](I, Y);
        }
    })
        , G = b['enc'] = {}
        , A = G['Hex'] = {
        'stringify': function (Y) {
            var I = Y['words'];
            Y = Y['sigBytes'];
            for (var H = [], E = 0x0; E < Y; E++) {
                var R = I[E >>> 0x2] >>> 0x18 - 0x8 * (E % 0x4) & 0xff;
                H['push']((R >>> 0x4)['toString'](0x10)),
                    H['push']((R & 0xf)['toString'](0x10));
            }
            return H['join']('');
        },
        'parse': function (Y) {
            for (var I = Y['length'], H = [], E = 0x0; E < I; E += 0x2) {
                H[E >>> 0x3] |= parseInt(Y['substr'](E, 0x2), 0x10) << 0x18 - 0x4 * (E % 0x8);
            }
            return new O['init'](H, I / 0x2);
        }
    }
        , w = G['Latin1'] = {
        'stringify': function (Y) {
            var I = Y['words'];
            Y = Y['sigBytes'];
            for (var H = [], E = 0x0; E < Y; E++) {
                H['push'](String['fromCharCode'](I[E >>> 0x2] >>> 0x18 - 0x8 * (E % 0x4) & 0xff));
            }
            return H['join']('');
        },
        'parse': function (Y) {
            for (var I = Y['length'], H = [], E = 0x0; E < I; E++) {
                H[E >>> 0x2] |= (Y['charCodeAt'](E) & 0xff) << 0x18 - 0x8 * (E % 0x4);
            }
            return new O['init'](H, I);
        }
    }
        , B = G['Utf8'] = {
        'stringify': function (Y) {
            try {
                return decodeURIComponent(escape(w['stringify'](Y)));
            } catch (I) {
                throw Error('Malformed\x20UTF-8\x20data');
            }
        },
        'parse': function (Y) {
            return w['parse'](unescape(encodeURIComponent(Y)));
        }
    }
        , q = x['BufferedBlockAlgorithm'] = Q['extend']({
        'reset': function () {
            this['_data'] = new O['init'](),
                this['_nDataBytes'] = 0x0;
        },
        '_append': function (Y) {
            'string' == typeof Y && (Y = B['parse'](Y)),
                this['_data']['concat'](Y),
                this['_nDataBytes'] += Y['sigBytes'];
        },
        '_process': function (Y) {
            var I = this['_data']
                , H = I['words']
                , E = I['sigBytes']
                , R = this['blockSize']
                , W = E / (0x4 * R)
                , W = Y ? T['ceil'](W) : T['max']((W | 0x0) - this['_minBufferSize'], 0x0);
            Y = W * R,
                E = T['min'](0x4 * Y, E);
            if (Y) {
                for (var N = 0x0; N < Y; N += R) {
                    this['_doProcessBlock'](H, N);
                }
                N = H['splice'](0x0, Y),
                    I['sigBytes'] -= E;
            }
            return new O['init'](N, E);
        },
        'clone': function () {
            var Y = Q['clone']['call'](this);
            return Y['_data'] = this['_data']['clone'](),
                Y;
        },
        '_minBufferSize': 0x0
    });
    x['Hasher'] = q['extend']({
        'cfg': Q['extend'](),
        'init': function (Y) {
            this['cfg'] = this['cfg']['extend'](Y),
                this['reset']();
        },
        'reset': function () {
            q['reset']['call'](this),
                this['_doReset']();
        },
        'update': function (Y) {
            return this['_append'](Y),
                this['_process'](),
                this;
        },
        'finalize': function (Y) {
            return Y && this['_append'](Y),
                this['_doFinalize']();
        },
        'blockSize': 0x10,
        '_createHelper': function (Y) {
            return function (I, H) {
                return new Y['init'](H)['finalize'](I);
            }
                ;
        },
        '_createHmacHelper': function (Y) {
            return function (I, H) {
                return new P['HMAC']['init'](Y, H)['finalize'](I);
            }
                ;
        }
    });
    var P = b['algo'] = {};
    return b;
}(Math);
(function () {
    var i = GeiJS
        , T = i['lib']['WordArray'];
    i['enc']['Base64'] = {
        'stringify': function (V) {
            var x = V['words']
                , u = V['sigBytes']
                , Q = this['_map'];
            V['clamp'](),
                V = [];
            for (var O = 0x0; O < u; O += 0x3) {
                for (var o = (x[O >>> 0x2] >>> 0x18 - 0x8 * (O % 0x4) & 0xff) << 0x10 | (x[O + 0x1 >>> 0x2] >>> 0x18 - 0x8 * ((O + 0x1) % 0x4) & 0xff) << 0x8 | x[O + 0x2 >>> 0x2] >>> 0x18 - 0x8 * ((O + 0x2) % 0x4) & 0xff, G = 0x0; 0x4 > G && O + 0.75 * G < u; G++) {
                    V['push'](Q['charAt'](o >>> 0x6 * (0x3 - G) & 0x3f));
                }
            }
            if (x = Q['charAt'](0x40))
                for (; V['length'] % 0x4;) {
                    V['push'](x);
                }
            return V['join']('');
        },
        'parse': function (V) {
            var x = V['length']
                , u = this['_map']
                , Q = u['charAt'](0x40);
            Q && (Q = V['indexOf'](Q),
            -0x1 != Q && (x = Q));
            for (var Q = [], O = 0x0, o = 0x0; o < x; o++) {
                if (o % 0x4) {
                    var G = u['indexOf'](V['charAt'](o - 0x1)) << 0x2 * (o % 0x4)
                        , A = u['indexOf'](V['charAt'](o)) >>> 0x6 - 0x2 * (o % 0x4);
                    Q[O >>> 0x2] |= (G | A) << 0x18 - 0x8 * (O % 0x4),
                        O++;
                }
            }
            return T['create'](Q, O);
        },
        '_map': 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
    };
}()),
    function (T) {
        function V(B, P, Y, I, H, E, R) {
            return B = B + (P & Y | ~P & I) + H + R,
            (B << E | B >>> 0x20 - E) + P;
        }

        function b(B, P, Y, I, H, E, R) {
            return B = B + (P & I | Y & ~I) + H + R,
            (B << E | B >>> 0x20 - E) + P;
        }

        function x(B, P, Y, I, H, E, R) {
            return B = B + (P ^ Y ^ I) + H + R,
            (B << E | B >>> 0x20 - E) + P;
        }

        function u(B, P, Y, I, H, E, R) {
            return B = B + (Y ^ (P | ~I)) + H + R,
            (B << E | B >>> 0x20 - E) + P;
        }

        for (var Q = GeiJS, O = Q['lib'], G = O['WordArray'], A = O['Hasher'], O = Q['algo'], w = [], t = 0x0; 0x40 > t; t++) {
            w[t] = 0x100000000 * T['abs'](T['sin'](t + 0x1)) | 0x0;
        }
        O = O['MMF'] = A['extend']({
            '_doReset': function () {
                this['_hash'] = new G['init']([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);
            },
            '_doProcessBlock': function (B, q) {
                for (var Y = 0x0; 0x10 > Y; Y++) {
                    var W = q + Y
                        , Z = B[W];
                    B[W] = (Z << 0x8 | Z >>> 0x18) & 0xff00ff | (Z << 0x18 | Z >>> 0x8) & 0xff00ff00;
                }
                var Y = this['_hash']['words']
                    , W = B[q + 0x0]
                    , Z = B[q + 0x1]
                    , D = B[q + 0x2]
                    , s = B[q + 0x3]
                    , C = B[q + 0x4]
                    , v = B[q + 0x5]
                    , z = B[q + 0x6]
                    , r = B[q + 0x7]
                    , X = B[q + 0x8]
                    , y = B[q + 0x9]
                    , K0 = B[q + 0xa]
                    , K1 = B[q + 0xb]
                    , K2 = B[q + 0xc]
                    , K3 = B[q + 0xd]
                    , K4 = B[q + 0xe]
                    , K5 = B[q + 0xf]
                    , K6 = Y[0x0]
                    , K7 = Y[0x1]
                    , K8 = Y[0x2]
                    , K9 = Y[0x3]
                    , K6 = V(K6, K7, K8, K9, W, 0x7, w[0x0])
                    , K9 = V(K9, K6, K7, K8, Z, 0xc, w[0x1])
                    , K8 = V(K8, K9, K6, K7, D, 0x11, w[0x2])
                    , K7 = V(K7, K8, K9, K6, s, 0x16, w[0x3])
                    , K6 = V(K6, K7, K8, K9, C, 0x7, w[0x4])
                    , K9 = V(K9, K6, K7, K8, v, 0xc, w[0x5])
                    , K8 = V(K8, K9, K6, K7, z, 0x11, w[0x6])
                    , K7 = V(K7, K8, K9, K6, r, 0x16, w[0x7])
                    , K6 = V(K6, K7, K8, K9, X, 0x7, w[0x8])
                    , K9 = V(K9, K6, K7, K8, y, 0xc, w[0x9])
                    , K8 = V(K8, K9, K6, K7, K0, 0x11, w[0xa])
                    , K7 = V(K7, K8, K9, K6, K1, 0x16, w[0xb])
                    , K6 = V(K6, K7, K8, K9, K2, 0x7, w[0xc])
                    , K9 = V(K9, K6, K7, K8, K3, 0xc, w[0xd])
                    , K8 = V(K8, K9, K6, K7, K4, 0x11, w[0xe])
                    , K7 = V(K7, K8, K9, K6, K5, 0x16, w[0xf])
                    , K6 = b(K6, K7, K8, K9, Z, 0x5, w[0x10])
                    , K9 = b(K9, K6, K7, K8, z, 0x9, w[0x11])
                    , K8 = b(K8, K9, K6, K7, K1, 0xe, w[0x12])
                    , K7 = b(K7, K8, K9, K6, W, 0x14, w[0x13])
                    , K6 = b(K6, K7, K8, K9, v, 0x5, w[0x14])
                    , K9 = b(K9, K6, K7, K8, K0, 0x9, w[0x15])
                    , K8 = b(K8, K9, K6, K7, K5, 0xe, w[0x16])
                    , K7 = b(K7, K8, K9, K6, C, 0x14, w[0x17])
                    , K6 = b(K6, K7, K8, K9, y, 0x5, w[0x18])
                    , K9 = b(K9, K6, K7, K8, K4, 0x9, w[0x19])
                    , K8 = b(K8, K9, K6, K7, s, 0xe, w[0x1a])
                    , K7 = b(K7, K8, K9, K6, X, 0x14, w[0x1b])
                    , K6 = b(K6, K7, K8, K9, K3, 0x5, w[0x1c])
                    , K9 = b(K9, K6, K7, K8, D, 0x9, w[0x1d])
                    , K8 = b(K8, K9, K6, K7, r, 0xe, w[0x1e])
                    , K7 = b(K7, K8, K9, K6, K2, 0x14, w[0x1f])
                    , K6 = x(K6, K7, K8, K9, v, 0x4, w[0x20])
                    , K9 = x(K9, K6, K7, K8, X, 0xb, w[0x21])
                    , K8 = x(K8, K9, K6, K7, K1, 0x10, w[0x22])
                    , K7 = x(K7, K8, K9, K6, K4, 0x17, w[0x23])
                    , K6 = x(K6, K7, K8, K9, Z, 0x4, w[0x24])
                    , K9 = x(K9, K6, K7, K8, C, 0xb, w[0x25])
                    , K8 = x(K8, K9, K6, K7, r, 0x10, w[0x26])
                    , K7 = x(K7, K8, K9, K6, K0, 0x17, w[0x27])
                    , K6 = x(K6, K7, K8, K9, K3, 0x4, w[0x28])
                    , K9 = x(K9, K6, K7, K8, W, 0xb, w[0x29])
                    , K8 = x(K8, K9, K6, K7, s, 0x10, w[0x2a])
                    , K7 = x(K7, K8, K9, K6, z, 0x17, w[0x2b])
                    , K6 = x(K6, K7, K8, K9, y, 0x4, w[0x2c])
                    , K9 = x(K9, K6, K7, K8, K2, 0xb, w[0x2d])
                    , K8 = x(K8, K9, K6, K7, K5, 0x10, w[0x2e])
                    , K7 = x(K7, K8, K9, K6, D, 0x17, w[0x2f])
                    , K6 = u(K6, K7, K8, K9, W, 0x6, w[0x30])
                    , K9 = u(K9, K6, K7, K8, r, 0xa, w[0x31])
                    , K8 = u(K8, K9, K6, K7, K4, 0xf, w[0x32])
                    , K7 = u(K7, K8, K9, K6, v, 0x15, w[0x33])
                    , K6 = u(K6, K7, K8, K9, K2, 0x6, w[0x34])
                    , K9 = u(K9, K6, K7, K8, s, 0xa, w[0x35])
                    , K8 = u(K8, K9, K6, K7, K0, 0xf, w[0x36])
                    , K7 = u(K7, K8, K9, K6, Z, 0x15, w[0x37])
                    , K6 = u(K6, K7, K8, K9, X, 0x6, w[0x38])
                    , K9 = u(K9, K6, K7, K8, K5, 0xa, w[0x39])
                    , K8 = u(K8, K9, K6, K7, z, 0xf, w[0x3a])
                    , K7 = u(K7, K8, K9, K6, K3, 0x15, w[0x3b])
                    , K6 = u(K6, K7, K8, K9, C, 0x6, w[0x3c])
                    , K9 = u(K9, K6, K7, K8, K1, 0xa, w[0x3d])
                    , K8 = u(K8, K9, K6, K7, D, 0xf, w[0x3e])
                    , K7 = u(K7, K8, K9, K6, y, 0x15, w[0x3f]);
                Y[0x0] = Y[0x0] + K6 | 0x0,
                    Y[0x1] = Y[0x1] + K7 | 0x0,
                    Y[0x2] = Y[0x2] + K8 | 0x0,
                    Y[0x3] = Y[0x3] + K9 | 0x0;
            },
            '_doFinalize': function () {
                var B = this['_data']
                    , P = B['words']
                    , Y = 0x8 * this['_nDataBytes']
                    , I = 0x8 * B['sigBytes'];
                P[I >>> 0x5] |= 0x80 << 0x18 - I % 0x20;
                var H = T['floor'](Y / 0x100000000);
                P[(I + 0x40 >>> 0x9 << 0x4) + 0xf] = (H << 0x8 | H >>> 0x18) & 0xff00ff | (H << 0x18 | H >>> 0x8) & 0xff00ff00,
                    P[(I + 0x40 >>> 0x9 << 0x4) + 0xe] = (Y << 0x8 | Y >>> 0x18) & 0xff00ff | (Y << 0x18 | Y >>> 0x8) & 0xff00ff00,
                    B['sigBytes'] = 0x4 * (P['length'] + 0x1),
                    this['_process'](),
                    B = this['_hash'],
                    P = B['words'];
                for (Y = 0x0; 0x4 > Y; Y++) {
                    I = P[Y],
                        P[Y] = (I << 0x8 | I >>> 0x18) & 0xff00ff | (I << 0x18 | I >>> 0x8) & 0xff00ff00;
                }
                return B;
            },
            'clone': function () {
                var B = A['clone']['call'](this);
                return B['_hash'] = this['_hash']['clone'](),
                    B;
            }
        }),
            Q['MMF'] = A['_createHelper'](O),
            Q['GeiMMF'] = A['_createHmacHelper'](O);
    }(Math),
    (function () {
        var i = GeiJS
            , T = i['lib']
            , V = T['Base']
            , x = T['WordArray']
            , T = i['algo']
            , u = T['EvpKDF'] = V['extend']({
            'cfg': V['extend']({
                'keySize': 0x4,
                'hasher': T['MMF'],
                'iterations': 0x1
            }),
            'init': function (Q) {
                this['cfg'] = this['cfg']['extend'](Q);
            },
            'compute': function (Q, O) {
                for (var G = this['cfg'], A = G['hasher']['create'](), w = x['create'](), t = w['words'], B = G['keySize'], G = G['iterations']; t['length'] < B;) {
                    P && A['update'](P);
                    var P = A['update'](Q)['finalize'](O);
                    A['reset']();
                    for (var Y = 0x1; Y < G; Y++) {
                        P = A['finalize'](P),
                            A['reset']();
                    }
                    w['concat'](P);
                }
                return w['sigBytes'] = 0x4 * B,
                    w;
            }
        });
        i['EvpKDF'] = function (Q, O, o) {
            return u['create'](o)['compute'](Q, O);
        }
        ;
    }()),
GeiJS['lib']['Cipher'] || function (V) {
    var b = GeiJS
        , x = b['lib']
        , u = x['Base']
        , Q = x['WordArray']
        , O = x['BufferedBlockAlgorithm']
        , G = b['enc']['Base64']
        , w = b['algo']['EvpKDF']
        , q = x['Cipher'] = O['extend']({
        'cfg': u['extend'](),
        'createEncryptor': function (l, W) {
            return this['create'](this['_ENC_XFORM_MODE'], l, W);
        },
        'createDecryptor': function (l, W) {
            return this['create'](this['_DEC_XFORM_MODE'], l, W);
        },
        'init': function (l, W, N) {
            this['cfg'] = this['cfg']['extend'](N),
                this['_xformMode'] = l,
                this['_key'] = W,
                this['reset']();
        },
        'reset': function () {
            O['reset']['call'](this),
                this['_doReset']();
        },
        'process': function (l) {
            return this['_append'](l),
                this['_process']();
        },
        'finalize': function (l) {
            return l && this['_append'](l),
                this['_doFinalize']();
        },
        'keySize': 0x4,
        'ivSize': 0x4,
        '_ENC_XFORM_MODE': 0x1,
        '_DEC_XFORM_MODE': 0x2,
        '_createHelper': function (l) {
            return {
                'encrypt': function (W, N, J) {
                    return ('string' == typeof N ? R : E)['encrypt'](l, W, N, J);
                },
                'decrypt': function (W, N, J) {
                    return ('string' == typeof N ? R : E)['decrypt'](l, W, N, J);
                }
            };
        }
    });
    x['StreamCipher'] = q['extend']({
        '_doFinalize': function () {
            return this['_process'](!0x0);
        },
        'blockSize': 0x1
    });
    var P = b['mode'] = {}
        , c = function (W, N, J) {
        var S = this['_iv'];
        S ? this['_iv'] = V : S = this['_prevBlock'];
        for (var Z = 0x0; Z < J; Z++) {
            W[N + Z] ^= S[Z];
        }
    }
        , Y = (x['BlockCipherMode'] = u['extend']({
        'createEncryptor': function (l, W) {
            return this['Encryptor']['create'](l, W);
        },
        'createDecryptor': function (l, W) {
            return this['Decryptor']['create'](l, W);
        },
        'init': function (l, W) {
            this['_cipher'] = l,
                this['_iv'] = W;
        }
    }))['extend']();
    Y['Encryptor'] = Y['extend']({
        'processBlock': function (W, N) {
            var J = this['_cipher']
                , S = J['blockSize'];
            c['call'](this, W, N, S),
                J['encryptBlock'](W, N),
                this['_prevBlock'] = W['slice'](N, N + S);
        }
    }),
        Y['Decryptor'] = Y['extend']({
            'processBlock': function (W, N) {
                var J = this['_cipher']
                    , S = J['blockSize']
                    , Z = W['slice'](N, N + S);
                J['decryptBlock'](W, N),
                    c['call'](this, W, N, S),
                    this['_prevBlock'] = Z;
            }
        }),
        P = P['CBC'] = Y,
        Y = (b['pad'] = {})['GFACDE'] = {
            'pad': function (l, W) {
                for (var N = 0x4 * W, N = N - l['sigBytes'] % N, J = N << 0x18 | N << 0x10 | N << 0x8 | N, S = [], Z = 0x0; Z < N; Z += 0x4) {
                    S['push'](J);
                }
                N = Q['create'](S, N),
                    l['concat'](N);
            },
            'unpad': function (l) {
                l['sigBytes'] -= l['words'][l['sigBytes'] - 0x1 >>> 0x2] & 0xff;
            }
        };
    var I = {};
    I['mode'] = P,
        I['padding'] = Y,
        x['BlockCipher'] = q['extend']({
            'cfg': q['cfg']['extend'](I),
            'reset': function () {
                q['reset']['call'](this);
                var W = this['cfg']
                    , N = W['iv']
                    , W = W['mode'];
                if (this['_xformMode'] == this['_ENC_XFORM_MODE'])
                    var J = W['createEncryptor'];
                else
                    J = W['createDecryptor'],
                        this['_minBufferSize'] = 0x1;
                this['_mode'] = J['call'](W, this, N && N['words']);
            },
            '_doProcessBlock': function (l, W) {
                this['_mode']['processBlock'](l, W);
            },
            '_doFinalize': function () {
                var l = this['cfg']['padding'];
                if (this['_xformMode'] == this['_ENC_XFORM_MODE']) {
                    l['pad'](this['_data'], this['blockSize']);
                    var W = this['_process'](!0x0);
                } else
                    W = this['_process'](!0x0),
                        l['unpad'](W);
                return W;
            },
            'blockSize': 0x4
        });
    var H = x['CipherParams'] = u['extend']({
        'init': function (l) {
            this['mixIn'](l);
        },
        'toString': function (l) {
            return (l || this['formatter'])['stringify'](this);
        }
    })
        , P = (b['format'] = {})['OpenSSL'] = {
        'stringify': function (l) {
            var W = l['ciphertext'];
            return l = l['salt'],
                (l ? Q['create']([0x53616c74, 0x65645f5f])['concat'](l)['concat'](W) : W)['toString'](G);
        },
        'parse': function (W) {
            W = G['parse'](W);
            var N = W['words'];
            if (0x53616c74 == N[0x0] && 0x65645f5f == N[0x1]) {
                var J = Q['create'](N['slice'](0x2, 0x4));
                N['splice'](0x0, 0x4),
                    W['sigBytes'] -= 0x10;
            }
            var S = {};
            return S['ciphertext'] = W,
                S['salt'] = J,
                H['create'](S);
        }
    }
        , E = x['SerializableCipher'] = u['extend']({
        'cfg': u['extend']({
            'format': P
        }),
        'encrypt': function (l, W, N, J) {
            J = this['cfg']['extend'](J);
            var S = l['createEncryptor'](N, J);
            W = S['finalize'](W),
                S = S['cfg'];
            var Z = {};
            return Z['ciphertext'] = W,
                Z['key'] = N,
                Z['iv'] = S['iv'],
                Z['algorithm'] = l,
                Z['mode'] = S['mode'],
                Z['padding'] = S['padding'],
                Z['blockSize'] = l['blockSize'],
                Z['formatter'] = J['format'],
                H['create'](Z);
        },
        'decrypt': function (W, N, J, S) {
            return S = this['cfg']['extend'](S),
                N = this['_parse'](N, S['format']),
                W['createDecryptor'](J, S)['finalize'](N['ciphertext']);
        },
        '_parse': function (l, W) {
            return 'string' == typeof l ? W['parse'](l, this) : l;
        }
    })
        , b = (b['kdf'] = {})['OpenSSL'] = {
        'execute': function (W, N, J, S) {
            S || (S = Q['random'](0x8));
            var Z = {};
            Z['keySize'] = N + J,
                W = w['create'](Z)['compute'](W, S),
                J = Q['create'](W['words']['slice'](N), 0x4 * J),
                W['sigBytes'] = 0x4 * N;
            var M = {};
            return M['key'] = W,
                M['iv'] = J,
                M['salt'] = S,
                H['create'](M);
        }
    }
        , R = x['PasswordBasedCipher'] = E['extend']({
        'cfg': E['cfg']['extend']({
            'kdf': b
        }),
        'encrypt': function (W, N, J, S) {
            return S = this['cfg']['extend'](S),
                J = S['kdf']['execute'](J, W['keySize'], W['ivSize']),
                S['iv'] = J['iv'],
                W = E['encrypt']['call'](this, W, N, J['key'], S),
                W['mixIn'](J),
                W;
        },
        'decrypt': function (W, N, J, S) {
            return S = this['cfg']['extend'](S),
                N = this['_parse'](N, S['format']),
                J = S['kdf']['execute'](J, W['keySize'], W['ivSize'], N['salt']),
                S['iv'] = J['iv'],
                E['decrypt']['call'](this, W, N, J['key'], S);
        }
    });
}(),
    (function () {
        function A(C, v) {
            var z = (this['_lBlock'] >>> C ^ this['_rBlock']) & v;
            this['_rBlock'] ^= z,
                this['_lBlock'] ^= z << C;
        }

        function w(C, v) {
            var z = (this['_rBlock'] >>> C ^ this['_lBlock']) & v;
            this['_lBlock'] ^= z,
                this['_rBlock'] ^= z << C;
        }

        var B = {};
        B['0'] = 0x808200,
            B['268435456'] = 0x8000,
            B['536870912'] = 0x808002,
            B['805306368'] = 0x2,
            B['1073741824'] = 0x200,
            B['1342177280'] = 0x808202,
            B['1610612736'] = 0x800202,
            B['1879048192'] = 0x800000,
            B['2147483648'] = 0x202,
            B['2415919104'] = 0x800200,
            B['2684354560'] = 0x8200,
            B['2952790016'] = 0x808000,
            B['3221225472'] = 0x8002,
            B['3489660928'] = 0x800002,
            B['3758096384'] = 0x0,
            B['4026531840'] = 0x8202,
            B['134217728'] = 0x0,
            B['402653184'] = 0x808202,
            B['671088640'] = 0x8202,
            B['939524096'] = 0x8000,
            B['1207959552'] = 0x808200,
            B['1476395008'] = 0x200,
            B['1744830464'] = 0x808002,
            B['2013265920'] = 0x2,
            B['2281701376'] = 0x800200,
            B['2550136832'] = 0x8200,
            B['2818572288'] = 0x808000,
            B['3087007744'] = 0x800202,
            B['3355443200'] = 0x800002,
            B['3623878656'] = 0x8002,
            B['3892314112'] = 0x202,
            B['4160749568'] = 0x800000,
            B['1'] = 0x8000,
            B['268435457'] = 0x2,
            B['536870913'] = 0x808200,
            B['805306369'] = 0x800000,
            B['1073741825'] = 0x808002,
            B['1342177281'] = 0x8200,
            B['1610612737'] = 0x200,
            B['1879048193'] = 0x800202,
            B['2147483649'] = 0x808202,
            B['2415919105'] = 0x808000,
            B['2684354561'] = 0x800002,
            B['2952790017'] = 0x8202,
            B['3221225473'] = 0x202,
            B['3489660929'] = 0x800200,
            B['3758096385'] = 0x8002,
            B['4026531841'] = 0x0,
            B['134217729'] = 0x808202,
            B['402653185'] = 0x808000,
            B['671088641'] = 0x800000,
            B['939524097'] = 0x200,
            B['1207959553'] = 0x8000,
            B['1476395009'] = 0x800002,
            B['1744830465'] = 0x2,
            B['2013265921'] = 0x8202,
            B['2281701377'] = 0x8002,
            B['2550136833'] = 0x800202,
            B['2818572289'] = 0x202,
            B['3087007745'] = 0x808200,
            B['3355443201'] = 0x800200,
            B['3623878657'] = 0x0,
            B['3892314113'] = 0x8200,
            B['4160749569'] = 0x808002;
        var q = {};
        q['0'] = 0x40084010,
            q['16777216'] = 0x4000,
            q['33554432'] = 0x80000,
            q['50331648'] = 0x40080010,
            q['67108864'] = 0x40000010,
            q['83886080'] = 0x40084000,
            q['100663296'] = 0x40004000,
            q['117440512'] = 0x10,
            q['134217728'] = 0x84000,
            q['150994944'] = 0x40004010,
            q['167772160'] = 0x40000000,
            q['184549376'] = 0x84010,
            q['201326592'] = 0x80010,
            q['218103808'] = 0x0,
            q['234881024'] = 0x4010,
            q['251658240'] = 0x40080000,
            q['8388608'] = 0x40004000,
            q['25165824'] = 0x84010,
            q['41943040'] = 0x10,
            q['58720256'] = 0x40004010,
            q['75497472'] = 0x40084010,
            q['92274688'] = 0x40000000,
            q['109051904'] = 0x80000,
            q['125829120'] = 0x40080010,
            q['142606336'] = 0x80010,
            q['159383552'] = 0x0,
            q['176160768'] = 0x4000,
            q['192937984'] = 0x40080000,
            q['209715200'] = 0x40000010,
            q['226492416'] = 0x84000,
            q['243269632'] = 0x40084000,
            q['260046848'] = 0x4010,
            q['268435456'] = 0x0,
            q['285212672'] = 0x40080010,
            q['301989888'] = 0x40004010,
            q['318767104'] = 0x40084000,
            q['335544320'] = 0x40080000,
            q['352321536'] = 0x10,
            q['369098752'] = 0x84010,
            q['385875968'] = 0x4000,
            q['402653184'] = 0x4010,
            q['419430400'] = 0x80000,
            q['436207616'] = 0x80010,
            q['452984832'] = 0x40000010,
            q['469762048'] = 0x84000,
            q['486539264'] = 0x40004000,
            q['503316480'] = 0x40000000,
            q['520093696'] = 0x40084010,
            q['276824064'] = 0x84010,
            q['293601280'] = 0x80000,
            q['310378496'] = 0x40080000,
            q['327155712'] = 0x4000,
            q['343932928'] = 0x40004000,
            q['360710144'] = 0x40084010,
            q['377487360'] = 0x10,
            q['394264576'] = 0x40000000,
            q['411041792'] = 0x40084000,
            q['427819008'] = 0x40000010,
            q['444596224'] = 0x40004010,
            q['461373440'] = 0x80010,
            q['478150656'] = 0x0,
            q['494927872'] = 0x4010,
            q['511705088'] = 0x40080010,
            q['528482304'] = 0x84000;
        var P = {};
        P['0'] = 0x104,
            P['1048576'] = 0x0,
            P['2097152'] = 0x4000100,
            P['3145728'] = 0x10104,
            P['4194304'] = 0x10004,
            P['5242880'] = 0x4000004,
            P['6291456'] = 0x4010104,
            P['7340032'] = 0x4010000,
            P['8388608'] = 0x4000000,
            P['9437184'] = 0x4010100,
            P['10485760'] = 0x10100,
            P['11534336'] = 0x4010004,
            P['12582912'] = 0x4000104,
            P['13631488'] = 0x10000,
            P['14680064'] = 0x4,
            P['15728640'] = 0x100,
            P['524288'] = 0x4010100,
            P['1572864'] = 0x4010004,
            P['2621440'] = 0x0,
            P['3670016'] = 0x4000100,
            P['4718592'] = 0x4000004,
            P['5767168'] = 0x10000,
            P['6815744'] = 0x10004,
            P['7864320'] = 0x104,
            P['8912896'] = 0x4,
            P['9961472'] = 0x100,
            P['11010048'] = 0x4010000,
            P['12058624'] = 0x10104,
            P['13107200'] = 0x10100,
            P['14155776'] = 0x4000104,
            P['15204352'] = 0x4010104,
            P['16252928'] = 0x4000000,
            P['16777216'] = 0x4010100,
            P['17825792'] = 0x10004,
            P['18874368'] = 0x10000,
            P['19922944'] = 0x4000100,
            P['20971520'] = 0x100,
            P['22020096'] = 0x4010104,
            P['23068672'] = 0x4000004,
            P['24117248'] = 0x0,
            P['25165824'] = 0x4000104,
            P['26214400'] = 0x4000000,
            P['27262976'] = 0x4,
            P['28311552'] = 0x10100,
            P['29360128'] = 0x4010000,
            P['30408704'] = 0x104,
            P['31457280'] = 0x10104,
            P['32505856'] = 0x4010004,
            P['17301504'] = 0x4000000,
            P['18350080'] = 0x104,
            P['19398656'] = 0x4010100,
            P['20447232'] = 0x0,
            P['21495808'] = 0x10004,
            P['22544384'] = 0x4000100,
            P['23592960'] = 0x100,
            P['24641536'] = 0x4010004,
            P['25690112'] = 0x10000,
            P['26738688'] = 0x4010104,
            P['27787264'] = 0x10104,
            P['28835840'] = 0x4000004,
            P['29884416'] = 0x4000104,
            P['30932992'] = 0x4010000,
            P['31981568'] = 0x4,
            P['33030144'] = 0x10100;
        var Y = {};
        Y['0'] = 0x80401000,
            Y['65536'] = 0x80001040,
            Y['131072'] = 0x401040,
            Y['196608'] = 0x80400000,
            Y['262144'] = 0x0,
            Y['327680'] = 0x401000,
            Y['393216'] = 0x80000040,
            Y['458752'] = 0x400040,
            Y['524288'] = 0x80000000,
            Y['589824'] = 0x400000,
            Y['655360'] = 0x40,
            Y['720896'] = 0x80001000,
            Y['786432'] = 0x80400040,
            Y['851968'] = 0x1040,
            Y['917504'] = 0x1000,
            Y['983040'] = 0x80401040,
            Y['32768'] = 0x80001040,
            Y['98304'] = 0x40,
            Y['163840'] = 0x80400040,
            Y['229376'] = 0x80001000,
            Y['294912'] = 0x401000,
            Y['360448'] = 0x80401040,
            Y['425984'] = 0x0,
            Y['491520'] = 0x80400000,
            Y['557056'] = 0x1000,
            Y['622592'] = 0x80401000,
            Y['688128'] = 0x400000,
            Y['753664'] = 0x1040,
            Y['819200'] = 0x80000000,
            Y['884736'] = 0x400040,
            Y['950272'] = 0x401040,
            Y['1015808'] = 0x80000040,
            Y['1048576'] = 0x400040,
            Y['1114112'] = 0x401000,
            Y['1179648'] = 0x80000040,
            Y['1245184'] = 0x0,
            Y['1310720'] = 0x1040,
            Y['1376256'] = 0x80400040,
            Y['1441792'] = 0x80401000,
            Y['1507328'] = 0x80001040,
            Y['1572864'] = 0x80401040,
            Y['1638400'] = 0x80000000,
            Y['1703936'] = 0x80400000,
            Y['1769472'] = 0x401040,
            Y['1835008'] = 0x80001000,
            Y['1900544'] = 0x400000,
            Y['1966080'] = 0x40,
            Y['2031616'] = 0x1000,
            Y['1081344'] = 0x80400000,
            Y['1146880'] = 0x80401040,
            Y['1212416'] = 0x0,
            Y['1277952'] = 0x401000,
            Y['1343488'] = 0x400040,
            Y['1409024'] = 0x80000000,
            Y['1474560'] = 0x80001040,
            Y['1540096'] = 0x40,
            Y['1605632'] = 0x80000040,
            Y['1671168'] = 0x1000,
            Y['1736704'] = 0x80001000,
            Y['1802240'] = 0x80400040,
            Y['1867776'] = 0x1040,
            Y['1933312'] = 0x80401000,
            Y['1998848'] = 0x400000,
            Y['2064384'] = 0x401040;
        var I = {};
        I['0'] = 0x80,
            I['4096'] = 0x1040000,
            I['8192'] = 0x40000,
            I['12288'] = 0x20000000,
            I['16384'] = 0x20040080,
            I['20480'] = 0x1000080,
            I['24576'] = 0x21000080,
            I['28672'] = 0x40080,
            I['32768'] = 0x1000000,
            I['36864'] = 0x20040000,
            I['40960'] = 0x20000080,
            I['45056'] = 0x21040080,
            I['49152'] = 0x21040000,
            I['53248'] = 0x0,
            I['57344'] = 0x1040080,
            I['61440'] = 0x21000000,
            I['2048'] = 0x1040080,
            I['6144'] = 0x21000080,
            I['10240'] = 0x80,
            I['14336'] = 0x1040000,
            I['18432'] = 0x40000,
            I['22528'] = 0x20040080,
            I['26624'] = 0x21040000,
            I['30720'] = 0x20000000,
            I['34816'] = 0x20040000,
            I['38912'] = 0x0,
            I['43008'] = 0x21040080,
            I['47104'] = 0x1000080,
            I['51200'] = 0x20000080,
            I['55296'] = 0x21000000,
            I['59392'] = 0x1000000,
            I['63488'] = 0x40080,
            I['65536'] = 0x40000,
            I['69632'] = 0x80,
            I['73728'] = 0x20000000,
            I['77824'] = 0x21000080,
            I['81920'] = 0x1000080,
            I['86016'] = 0x21040000,
            I['90112'] = 0x20040080,
            I['94208'] = 0x1000000,
            I['98304'] = 0x21040080,
            I['102400'] = 0x21000000,
            I['106496'] = 0x1040000,
            I['110592'] = 0x20040000,
            I['114688'] = 0x40080,
            I['118784'] = 0x20000080,
            I['122880'] = 0x0,
            I['126976'] = 0x1040080,
            I['67584'] = 0x21000080,
            I['71680'] = 0x1000000,
            I['75776'] = 0x1040000,
            I['79872'] = 0x20040080,
            I['83968'] = 0x20000000,
            I['88064'] = 0x1040080,
            I['92160'] = 0x80,
            I['96256'] = 0x21040000,
            I['100352'] = 0x40080,
            I['104448'] = 0x21040080,
            I['108544'] = 0x0,
            I['112640'] = 0x21000000,
            I['116736'] = 0x1000080,
            I['120832'] = 0x40000,
            I['124928'] = 0x20040000,
            I['129024'] = 0x20000080;
        var H = {};
        H['0'] = 0x10000008,
            H['256'] = 0x2000,
            H['512'] = 0x10200000,
            H['768'] = 0x10202008,
            H['1024'] = 0x10002000,
            H['1280'] = 0x200000,
            H['1536'] = 0x200008,
            H['1792'] = 0x10000000,
            H['2048'] = 0x0,
            H['2304'] = 0x10002008,
            H['2560'] = 0x202000,
            H['2816'] = 0x8,
            H['3072'] = 0x10200008,
            H['3328'] = 0x202008,
            H['3584'] = 0x2008,
            H['3840'] = 0x10202000,
            H['128'] = 0x10200000,
            H['384'] = 0x10202008,
            H['640'] = 0x8,
            H['896'] = 0x200000,
            H['1152'] = 0x202008,
            H['1408'] = 0x10000008,
            H['1664'] = 0x10002000,
            H['1920'] = 0x2008,
            H['2176'] = 0x200008,
            H['2432'] = 0x2000,
            H['2688'] = 0x10002008,
            H['2944'] = 0x10200008,
            H['3200'] = 0x0,
            H['3456'] = 0x10202000,
            H['3712'] = 0x202000,
            H['3968'] = 0x10000000,
            H['4096'] = 0x10002000,
            H['4352'] = 0x10200008,
            H['4608'] = 0x10202008,
            H['4864'] = 0x2008,
            H['5120'] = 0x200000,
            H['5376'] = 0x10000000,
            H['5632'] = 0x10000008,
            H['5888'] = 0x202000,
            H['6144'] = 0x202008,
            H['6400'] = 0x0,
            H['6656'] = 0x8,
            H['6912'] = 0x10200000,
            H['7168'] = 0x2000,
            H['7424'] = 0x10002008,
            H['7680'] = 0x10202000,
            H['7936'] = 0x200008,
            H['4224'] = 0x8,
            H['4480'] = 0x202000,
            H['4736'] = 0x200000,
            H['4992'] = 0x10000008,
            H['5248'] = 0x10002000,
            H['5504'] = 0x2008,
            H['5760'] = 0x10202008,
            H['6016'] = 0x10200000,
            H['6272'] = 0x10202000,
            H['6528'] = 0x10200008,
            H['6784'] = 0x2000,
            H['7040'] = 0x202008,
            H['7296'] = 0x200008,
            H['7552'] = 0x0,
            H['7808'] = 0x10000000,
            H['8064'] = 0x10002008;
        var E = {};
        E['0'] = 0x100000,
            E['16'] = 0x2000401,
            E['32'] = 0x400,
            E['48'] = 0x100401,
            E['64'] = 0x2100401,
            E['80'] = 0x0,
            E['96'] = 0x1,
            E['112'] = 0x2100001,
            E['128'] = 0x2000400,
            E['144'] = 0x100001,
            E['160'] = 0x2000001,
            E['176'] = 0x2100400,
            E['192'] = 0x2100000,
            E['208'] = 0x401,
            E['224'] = 0x100400,
            E['240'] = 0x2000000,
            E['8'] = 0x2100001,
            E['24'] = 0x0,
            E['40'] = 0x2000401,
            E['56'] = 0x2100400,
            E['72'] = 0x100000,
            E['88'] = 0x2000001,
            E['104'] = 0x2000000,
            E['120'] = 0x401,
            E['136'] = 0x100401,
            E['152'] = 0x2000400,
            E['168'] = 0x2100000,
            E['184'] = 0x100001,
            E['200'] = 0x400,
            E['216'] = 0x2100401,
            E['232'] = 0x1,
            E['248'] = 0x100400,
            E['256'] = 0x2000000,
            E['272'] = 0x100000,
            E['288'] = 0x2000401,
            E['304'] = 0x2100001,
            E['320'] = 0x100001,
            E['336'] = 0x2000400,
            E['352'] = 0x2100400,
            E['368'] = 0x100401,
            E['384'] = 0x401,
            E['400'] = 0x2100401,
            E['416'] = 0x100400,
            E['432'] = 0x1,
            E['448'] = 0x0,
            E['464'] = 0x2100000,
            E['480'] = 0x2000001,
            E['496'] = 0x400,
            E['264'] = 0x100400,
            E['280'] = 0x2000401,
            E['296'] = 0x2100001,
            E['312'] = 0x1,
            E['328'] = 0x2000000,
            E['344'] = 0x100000,
            E['360'] = 0x401,
            E['376'] = 0x2100400,
            E['392'] = 0x2000001,
            E['408'] = 0x2100000,
            E['424'] = 0x0,
            E['440'] = 0x2100401,
            E['456'] = 0x100401,
            E['472'] = 0x400,
            E['488'] = 0x2000400,
            E['504'] = 0x100001;
        var R = {};
        R['0'] = 0x8000820,
            R['1'] = 0x20000,
            R['2'] = 0x8000000,
            R['3'] = 0x20,
            R['4'] = 0x20020,
            R['5'] = 0x8020820,
            R['6'] = 0x8020800,
            R['7'] = 0x800,
            R['8'] = 0x8020000,
            R['9'] = 0x8000800,
            R['10'] = 0x20800,
            R['11'] = 0x8020020,
            R['12'] = 0x820,
            R['13'] = 0x0,
            R['14'] = 0x8000020,
            R['15'] = 0x20820,
            R['2147483648'] = 0x800,
            R['2147483649'] = 0x8020820,
            R['2147483650'] = 0x8000820,
            R['2147483651'] = 0x8000000,
            R['2147483652'] = 0x8020000,
            R['2147483653'] = 0x20800,
            R['2147483654'] = 0x20820,
            R['2147483655'] = 0x20,
            R['2147483656'] = 0x8000020,
            R['2147483657'] = 0x820,
            R['2147483658'] = 0x20020,
            R['2147483659'] = 0x8020800,
            R['2147483660'] = 0x0,
            R['2147483661'] = 0x8020020,
            R['2147483662'] = 0x8000800,
            R['2147483663'] = 0x20000,
            R['16'] = 0x20820,
            R['17'] = 0x8020800,
            R['18'] = 0x20,
            R['19'] = 0x800,
            R['20'] = 0x8000800,
            R['21'] = 0x8000020,
            R['22'] = 0x8020020,
            R['23'] = 0x20000,
            R['24'] = 0x0,
            R['25'] = 0x20020,
            R['26'] = 0x8020000,
            R['27'] = 0x8000820,
            R['28'] = 0x8020820,
            R['29'] = 0x20800,
            R['30'] = 0x820,
            R['31'] = 0x8000000,
            R['2147483664'] = 0x20000,
            R['2147483665'] = 0x800,
            R['2147483666'] = 0x8020020,
            R['2147483667'] = 0x20820,
            R['2147483668'] = 0x20,
            R['2147483669'] = 0x8020000,
            R['2147483670'] = 0x8000000,
            R['2147483671'] = 0x8000820,
            R['2147483672'] = 0x8020820,
            R['2147483673'] = 0x8000020,
            R['2147483674'] = 0x8000800,
            R['2147483675'] = 0x0,
            R['2147483676'] = 0x20800,
            R['2147483677'] = 0x820,
            R['2147483678'] = 0x20020,
            R['2147483679'] = 0x8020800;
        var l = GeiJS
            , W = l['lib']
            , N = W['WordArray']
            , W = W['BlockCipher']
            , J = l['algo']
            ,
            S = [0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x9, 0x1, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x3b, 0x33, 0x2b, 0x23, 0x1b, 0x13, 0xb, 0x3, 0x3c, 0x34, 0x2c, 0x24, 0x3f, 0x37, 0x2f, 0x27, 0x1f, 0x17, 0xf, 0x7, 0x3e, 0x36, 0x2e, 0x26, 0x1e, 0x16, 0xe, 0x6, 0x3d, 0x35, 0x2d, 0x25, 0x1d, 0x15, 0xd, 0x5, 0x1c, 0x14, 0xc, 0x4]
            ,
            Z = [0xe, 0x11, 0xb, 0x18, 0x1, 0x5, 0x3, 0x1c, 0xf, 0x6, 0x15, 0xa, 0x17, 0x13, 0xc, 0x4, 0x1a, 0x8, 0x10, 0x7, 0x1b, 0x14, 0xd, 0x2, 0x29, 0x34, 0x1f, 0x25, 0x2f, 0x37, 0x1e, 0x28, 0x33, 0x2d, 0x21, 0x30, 0x2c, 0x31, 0x27, 0x38, 0x22, 0x35, 0x2e, 0x2a, 0x32, 0x24, 0x1d, 0x20]
            , D = [0x1, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0xf, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1b, 0x1c]
            , M = [B, q, P, Y, I, H, E, R]
            , s = [0xf8000001, 0x1f800000, 0x1f80000, 0x1f8000, 0x1f800, 0x1f80, 0x1f8, 0x8000001f]
            , F = J['OBJFJKET'] = W['extend']({
                '_doReset': function () {
                    for (var C = this['_key']['words'], v = [], z = 0x0; 0x38 > z; z++) {
                        var U = S[z] - 0x1;
                        v[z] = C[U >>> 0x5] >>> 0x1f - U % 0x20 & 0x1;
                    }
                    C = this['_subKeys'] = [];
                    for (U = 0x0; 0x10 > U; U++) {
                        for (var L = C[U] = [], X = D[U], z = 0x0; 0x18 > z; z++) {
                            L[z / 0x6 | 0x0] |= v[(Z[z] - 0x1 + X) % 0x1c] << 0x1f - z % 0x6,
                                L[0x4 + (z / 0x6 | 0x0)] |= v[0x1c + (Z[z + 0x18] - 0x1 + X) % 0x1c] << 0x1f - z % 0x6;
                        }
                        L[0x0] = L[0x0] << 0x1 | L[0x0] >>> 0x1f;
                        for (z = 0x1; 0x7 > z; z++) {
                            L[z] >>>= 0x4 * (z - 0x1) + 0x3;
                        }
                        L[0x7] = L[0x7] << 0x5 | L[0x7] >>> 0x1b;
                    }
                    v = this['_invSubKeys'] = [];
                    for (z = 0x0; 0x10 > z; z++) {
                        v[z] = C[0xf - z];
                    }
                },
                'encryptBlock': function (C, v) {
                    this['_doCryptBlock'](C, v, this['_subKeys']);
                },
                'decryptBlock': function (C, v) {
                    this['_doCryptBlock'](C, v, this['_invSubKeys']);
                },
                '_doCryptBlock': function (C, U, r) {
                    this['_lBlock'] = C[U],
                        this['_rBlock'] = C[U + 0x1],
                        A['call'](this, 0x4, 0xf0f0f0f),
                        A['call'](this, 0x10, 0xffff),
                        w['call'](this, 0x2, 0x33333333),
                        w['call'](this, 0x8, 0xff00ff),
                        A['call'](this, 0x1, 0x55555555);
                    for (var L = 0x0; 0x10 > L; L++) {
                        for (var X = r[L], d = this['_lBlock'], n = this['_rBlock'], K0 = 0x0, K1 = 0x0; 0x8 > K1; K1++) {
                            K0 |= M[K1][((n ^ X[K1]) & s[K1]) >>> 0x0];
                        }
                        this['_lBlock'] = n,
                            this['_rBlock'] = d ^ K0;
                    }
                    r = this['_lBlock'],
                        this['_lBlock'] = this['_rBlock'],
                        this['_rBlock'] = r,
                        A['call'](this, 0x1, 0x55555555),
                        w['call'](this, 0x8, 0xff00ff),
                        w['call'](this, 0x2, 0x33333333),
                        A['call'](this, 0x10, 0xffff),
                        A['call'](this, 0x4, 0xf0f0f0f),
                        C[U] = this['_lBlock'],
                        C[U + 0x1] = this['_rBlock'];
                },
                'keySize': 0x2,
                'ivSize': 0x2,
                'blockSize': 0x2
            });
        l['OBJFJKET'] = W['_createHelper'](F),
            J = J['TripleOBJFJKET'] = W['extend']({
                '_doReset': function () {
                    var C = this['_key']['words'];
                    this['_des1'] = F['createEncryptor'](N['create'](C['slice'](0x0, 0x2))),
                        this['_des2'] = F['createEncryptor'](N['create'](C['slice'](0x2, 0x4))),
                        this['_des3'] = F['createEncryptor'](N['create'](C['slice'](0x4, 0x6)));
                },
                'encryptBlock': function (C, v) {
                    this['_des1']['encryptBlock'](C, v),
                        this['_des2']['decryptBlock'](C, v),
                        this['_des3']['encryptBlock'](C, v);
                },
                'decryptBlock': function (C, v) {
                    this['_des3']['decryptBlock'](C, v),
                        this['_des2']['encryptBlock'](C, v),
                        this['_des1']['decryptBlock'](C, v);
                },
                'keySize': 0x6,
                'ivSize': 0x2,
                'blockSize': 0x2
            }),
            l['TripleOBJFJKET'] = W['_createHelper'](J);
    }()),
    GeiJS['mode']['FENCTIOP'] = (function () {
        var i = GeiJS['lib']['BlockCipherMode']['extend']();
        return i['Encryptor'] = i['extend']({
            'processBlock': function (T, V) {
                this['_cipher']['encryptBlock'](T, V);
            }
        }),
            i['Decryptor'] = i['extend']({
                'processBlock': function (T, V) {
                    this['_cipher']['decryptBlock'](T, V);
                }
            }),
            i;
    }());
var eL = {};
eL['iOOOooi1il1'] = 0x3 - 0x2;
var lll1i111lio0o01 = eL
    , GeiJS = GeiJS || function (T, V) {
    var u = {}
        , Q = u['lib'] = {}
        , O = function () {
    }
        , G = Q['Base'] = {
        'extend': function (I) {
            O['prototype'] = this;
            var H = new O();
            return I && H['mixIn'](I),
            H['hasOwnProperty']('init') || (H['init'] = function () {
                    H['$super']['init']['apply'](this, arguments);
                }
            ),
                H['init']['prototype'] = H,
                H['$super'] = this,
                H;
        },
        'create': function () {
            var I = this['extend']();
            return I['init']['apply'](I, arguments),
                I;
        },
        'init': function () {
        },
        'mixIn': function (I) {
            for (var H in I) {
                I['hasOwnProperty'](H) && (this[H] = I[H]);
            }
            I['hasOwnProperty']('toString') && (this['toString'] = I['toString']);
        },
        'clone': function () {
            return this['init']['prototype']['extend'](this);
        }
    }
        , A = Q['WordArray'] = G['extend']({
        'init': function (I, H) {
            I = this['words'] = I || [],
                this['sigBytes'] = H != V ? H : 0x4 * I['length'];
        },
        'toString': function (I) {
            return (I || k)['stringify'](this);
        },
        'concat': function (I) {
            var H = this['words']
                , E = I['words']
                , R = this['sigBytes'];
            I = I['sigBytes'],
                this['clamp']();
            if (R % 0x4)
                for (var W = 0x0; W < I; W++) {
                    H[R + W >>> 0x2] |= (E[W >>> 0x2] >>> 0x18 - 0x8 * (W % 0x4) & 0xff) << 0x18 - 0x8 * ((R + W) % 0x4);
                }
            else {
                if (0xffff < E['length'])
                    for (W = 0x0; W < I; W += 0x4) {
                        H[R + W >>> 0x2] = E[W >>> 0x2];
                    }
                else
                    H['push']['apply'](H, E);
            }
            return this['sigBytes'] += I,
                this;
        },
        'clamp': function () {
            var I = this['words']
                , H = this['sigBytes'];
            I[H >>> 0x2] &= 0xffffffff << 0x20 - 0x8 * (H % 0x4),
                I['length'] = T['ceil'](H / 0x4);
        },
        'clone': function () {
            var I = G['clone']['call'](this);
            return I['words'] = this['words']['slice'](0x0),
                I;
        },
        'random': function (I) {
            for (var H = [], E = 0x0; E < I; E += 0x4) {
                H['push'](0x100000000 * T['random']() | 0x0);
            }
            return new A['init'](H, I);
        }
    })
        , t = u['enc'] = {}
        , k = t['Hex'] = {
        'stringify': function (I) {
            var H = I['words'];
            I = I['sigBytes'];
            for (var E = [], R = 0x0; R < I; R++) {
                var W = H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff;
                E['push']((W >>> 0x4)['toString'](0x10)),
                    E['push']((W & 0xf)['toString'](0x10));
            }
            return E['join']('');
        },
        'parse': function (I) {
            for (var H = I['length'], E = [], R = 0x0; R < H; R += 0x2) {
                E[R >>> 0x3] |= parseInt(I['substr'](R, 0x2), 0x10) << 0x18 - 0x4 * (R % 0x8);
            }
            return new A['init'](E, H / 0x2);
        }
    }
        , B = t['Latin1'] = {
        'stringify': function (I) {
            var H = I['words'];
            I = I['sigBytes'];
            for (var E = [], R = 0x0; R < I; R++) {
                E['push'](String['fromCharCode'](H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff));
            }
            return E['join']('');
        },
        'parse': function (I) {
            for (var H = I['length'], E = [], R = 0x0; R < H; R++) {
                E[R >>> 0x2] |= (I['charCodeAt'](R) & 0xff) << 0x18 - 0x8 * (R % 0x4);
            }
            return new A['init'](E, H);
        }
    }
        , q = t['Utf8'] = {
        'stringify': function (I) {
            try {
                return decodeURIComponent(escape(B['stringify'](I)));
            } catch (H) {
                throw Error('Malformed\x20UTF-8\x20data');
            }
        },
        'parse': function (I) {
            return B['parse'](unescape(encodeURIComponent(I)));
        }
    }
        , P = Q['BufferedBlockAlgorithm'] = G['extend']({
        'reset': function () {
            this['_data'] = new A['init'](),
                this['_nDataBytes'] = 0x0;
        },
        '_append': function (I) {
            'string' == typeof I && (I = q['parse'](I)),
                this['_data']['concat'](I),
                this['_nDataBytes'] += I['sigBytes'];
        },
        '_process': function (I) {
            var H = this['_data']
                , E = H['words']
                , R = H['sigBytes']
                , l = this['blockSize']
                , W = R / (0x4 * l)
                , W = I ? T['ceil'](W) : T['max']((W | 0x0) - this['_minBufferSize'], 0x0);
            I = W * l,
                R = T['min'](0x4 * I, R);
            if (I) {
                for (var N = 0x0; N < I; N += l) {
                    this['_doProcessBlock'](E, N);
                }
                N = E['splice'](0x0, I),
                    H['sigBytes'] -= R;
            }
            return new A['init'](N, R);
        },
        'clone': function () {
            var I = G['clone']['call'](this);
            return I['_data'] = this['_data']['clone'](),
                I;
        },
        '_minBufferSize': 0x0
    });
    Q['Hasher'] = P['extend']({
        'cfg': G['extend'](),
        'init': function (I) {
            this['cfg'] = this['cfg']['extend'](I),
                this['reset']();
        },
        'reset': function () {
            P['reset']['call'](this),
                this['_doReset']();
        },
        'update': function (I) {
            return this['_append'](I),
                this['_process'](),
                this;
        },
        'finalize': function (I) {
            return I && this['_append'](I),
                this['_doFinalize']();
        },
        'blockSize': 0x10,
        '_createHelper': function (I) {
            return function (H, E) {
                return new I['init'](E)['finalize'](H);
            }
                ;
        },
        '_createHmacHelper': function (I) {
            return function (H, E) {
                return new Y['HMAC']['init'](I, E)['finalize'](H);
            }
                ;
        }
    });
    var Y = u['algo'] = {};
    return u;
}(Math);
(function (T) {
    function V(P, Y, I, H, E, R, l) {
        return P = P + (Y & I | ~Y & H) + E + l,
        (P << R | P >>> 0x20 - R) + Y;
    }

    function x(P, Y, I, H, E, R, l) {
        return P = P + (Y & H | I & ~H) + E + l,
        (P << R | P >>> 0x20 - R) + Y;
    }

    function u(P, Y, I, H, E, R, l) {
        return P = P + (Y ^ I ^ H) + E + l,
        (P << R | P >>> 0x20 - R) + Y;
    }

    function Q(P, Y, I, H, E, R, l) {
        return P = P + (I ^ (Y | ~H)) + E + l,
        (P << R | P >>> 0x20 - R) + Y;
    }

    for (var O = GeiJS, G = O['lib'], A = G['WordArray'], w = G['Hasher'], G = O['algo'], t = [], B = 0x0; 0x40 > B; B++) {
        t[B] = 0x100000000 * T['abs'](T['sin'](B + 0x1)) | 0x0;
    }
    G = G['MMF'] = w['extend']({
        '_doReset': function () {
            this['_hash'] = new A['init']([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);
        },
        '_doProcessBlock': function (q, Y) {
            for (var W = 0x0; 0x10 > W; W++) {
                var Z = Y + W
                    , D = q[Z];
                q[Z] = (D << 0x8 | D >>> 0x18) & 0xff00ff | (D << 0x18 | D >>> 0x8) & 0xff00ff00;
            }
            var W = this['_hash']['words']
                , Z = q[Y + 0x0]
                , D = q[Y + 0x1]
                , s = q[Y + 0x2]
                , C = q[Y + 0x3]
                , v = q[Y + 0x4]
                , z = q[Y + 0x5]
                , r = q[Y + 0x6]
                , X = q[Y + 0x7]
                , y = q[Y + 0x8]
                , K0 = q[Y + 0x9]
                , K1 = q[Y + 0xa]
                , K2 = q[Y + 0xb]
                , K3 = q[Y + 0xc]
                , K4 = q[Y + 0xd]
                , K5 = q[Y + 0xe]
                , K6 = q[Y + 0xf]
                , K7 = W[0x0]
                , K8 = W[0x1]
                , K9 = W[0x2]
                , KK = W[0x3]
                , K7 = V(K7, K8, K9, KK, Z, 0x7, t[0x0])
                , KK = V(KK, K7, K8, K9, D, 0xc, t[0x1])
                , K9 = V(K9, KK, K7, K8, s, 0x11, t[0x2])
                , K8 = V(K8, K9, KK, K7, C, 0x16, t[0x3])
                , K7 = V(K7, K8, K9, KK, v, 0x7, t[0x4])
                , KK = V(KK, K7, K8, K9, z, 0xc, t[0x5])
                , K9 = V(K9, KK, K7, K8, r, 0x11, t[0x6])
                , K8 = V(K8, K9, KK, K7, X, 0x16, t[0x7])
                , K7 = V(K7, K8, K9, KK, y, 0x7, t[0x8])
                , KK = V(KK, K7, K8, K9, K0, 0xc, t[0x9])
                , K9 = V(K9, KK, K7, K8, K1, 0x11, t[0xa])
                , K8 = V(K8, K9, KK, K7, K2, 0x16, t[0xb])
                , K7 = V(K7, K8, K9, KK, K3, 0x7, t[0xc])
                , KK = V(KK, K7, K8, K9, K4, 0xc, t[0xd])
                , K9 = V(K9, KK, K7, K8, K5, 0x11, t[0xe])
                , K8 = V(K8, K9, KK, K7, K6, 0x16, t[0xf])
                , K7 = x(K7, K8, K9, KK, D, 0x5, t[0x10])
                , KK = x(KK, K7, K8, K9, r, 0x9, t[0x11])
                , K9 = x(K9, KK, K7, K8, K2, 0xe, t[0x12])
                , K8 = x(K8, K9, KK, K7, Z, 0x14, t[0x13])
                , K7 = x(K7, K8, K9, KK, z, 0x5, t[0x14])
                , KK = x(KK, K7, K8, K9, K1, 0x9, t[0x15])
                , K9 = x(K9, KK, K7, K8, K6, 0xe, t[0x16])
                , K8 = x(K8, K9, KK, K7, v, 0x14, t[0x17])
                , K7 = x(K7, K8, K9, KK, K0, 0x5, t[0x18])
                , KK = x(KK, K7, K8, K9, K5, 0x9, t[0x19])
                , K9 = x(K9, KK, K7, K8, C, 0xe, t[0x1a])
                , K8 = x(K8, K9, KK, K7, y, 0x14, t[0x1b])
                , K7 = x(K7, K8, K9, KK, K4, 0x5, t[0x1c])
                , KK = x(KK, K7, K8, K9, s, 0x9, t[0x1d])
                , K9 = x(K9, KK, K7, K8, X, 0xe, t[0x1e])
                , K8 = x(K8, K9, KK, K7, K3, 0x14, t[0x1f])
                , K7 = u(K7, K8, K9, KK, z, 0x4, t[0x20])
                , KK = u(KK, K7, K8, K9, y, 0xb, t[0x21])
                , K9 = u(K9, KK, K7, K8, K2, 0x10, t[0x22])
                , K8 = u(K8, K9, KK, K7, K5, 0x17, t[0x23])
                , K7 = u(K7, K8, K9, KK, D, 0x4, t[0x24])
                , KK = u(KK, K7, K8, K9, v, 0xb, t[0x25])
                , K9 = u(K9, KK, K7, K8, X, 0x10, t[0x26])
                , K8 = u(K8, K9, KK, K7, K1, 0x17, t[0x27])
                , K7 = u(K7, K8, K9, KK, K4, 0x4, t[0x28])
                , KK = u(KK, K7, K8, K9, Z, 0xb, t[0x29])
                , K9 = u(K9, KK, K7, K8, C, 0x10, t[0x2a])
                , K8 = u(K8, K9, KK, K7, r, 0x17, t[0x2b])
                , K7 = u(K7, K8, K9, KK, K0, 0x4, t[0x2c])
                , KK = u(KK, K7, K8, K9, K3, 0xb, t[0x2d])
                , K9 = u(K9, KK, K7, K8, K6, 0x10, t[0x2e])
                , K8 = u(K8, K9, KK, K7, s, 0x17, t[0x2f])
                , K7 = Q(K7, K8, K9, KK, Z, 0x6, t[0x30])
                , KK = Q(KK, K7, K8, K9, X, 0xa, t[0x31])
                , K9 = Q(K9, KK, K7, K8, K5, 0xf, t[0x32])
                , K8 = Q(K8, K9, KK, K7, z, 0x15, t[0x33])
                , K7 = Q(K7, K8, K9, KK, K3, 0x6, t[0x34])
                , KK = Q(KK, K7, K8, K9, C, 0xa, t[0x35])
                , K9 = Q(K9, KK, K7, K8, K1, 0xf, t[0x36])
                , K8 = Q(K8, K9, KK, K7, D, 0x15, t[0x37])
                , K7 = Q(K7, K8, K9, KK, y, 0x6, t[0x38])
                , KK = Q(KK, K7, K8, K9, K6, 0xa, t[0x39])
                , K9 = Q(K9, KK, K7, K8, r, 0xf, t[0x3a])
                , K8 = Q(K8, K9, KK, K7, K4, 0x15, t[0x3b])
                , K7 = Q(K7, K8, K9, KK, v, 0x6, t[0x3c])
                , KK = Q(KK, K7, K8, K9, K2, 0xa, t[0x3d])
                , K9 = Q(K9, KK, K7, K8, s, 0xf, t[0x3e])
                , K8 = Q(K8, K9, KK, K7, K0, 0x15, t[0x3f]);
            W[0x0] = W[0x0] + K7 | 0x0,
                W[0x1] = W[0x1] + K8 | 0x0,
                W[0x2] = W[0x2] + K9 | 0x0,
                W[0x3] = W[0x3] + KK | 0x0;
        },
        '_doFinalize': function () {
            var P = this['_data']
                , Y = P['words']
                , I = 0x8 * this['_nDataBytes']
                , H = 0x8 * P['sigBytes'];
            Y[H >>> 0x5] |= 0x80 << 0x18 - H % 0x20;
            var E = T['floor'](I / 0x100000000);
            Y[(H + 0x40 >>> 0x9 << 0x4) + 0xf] = (E << 0x8 | E >>> 0x18) & 0xff00ff | (E << 0x18 | E >>> 0x8) & 0xff00ff00,
                Y[(H + 0x40 >>> 0x9 << 0x4) + 0xe] = (I << 0x8 | I >>> 0x18) & 0xff00ff | (I << 0x18 | I >>> 0x8) & 0xff00ff00,
                P['sigBytes'] = 0x4 * (Y['length'] + 0x1),
                this['_process'](),
                P = this['_hash'],
                Y = P['words'];
            for (I = 0x0; 0x4 > I; I++) {
                H = Y[I],
                    Y[I] = (H << 0x8 | H >>> 0x18) & 0xff00ff | (H << 0x18 | H >>> 0x8) & 0xff00ff00;
            }
            return P;
        },
        'clone': function () {
            var q = w['clone']['call'](this);
            return q['_hash'] = this['_hash']['clone'](),
                q;
        }
    }),
        O['MMF'] = w['_createHelper'](G),
        O['GeiMMF'] = w['_createHmacHelper'](G);
}(Math));

function lli1li1l(i, T) {
    var V = GeiJS['enc']['Utf8']['parse'](T)
        , x = GeiJS['OBJFJKET']['encrypt'](i, V, {
        'mode': GeiJS['mode']['FENCTIOP'],
        'padding': GeiJS['pad']['GFACDE']
    });
    return x['toString']();
}

function ili11liii(i, T) {
    var V = GeiJS['enc']['Utf8']['parse'](T)
        , x = GeiJS['OBJFJKET']['decrypt']({
        'ciphertext': GeiJS['enc']['Base64']['parse'](i)
    }, V, {
        'mode': GeiJS['mode']['FENCTIOP'],
        'padding': GeiJS['pad']['GFACDE']
    });
    return x['toString'](GeiJS['enc']['Utf8']);
}

function il1il1il(i) {
    return Math['abs'](i);
}

function l1lilili(i) {
    return GeiJS['MMF'](i);
}

var em = {};
em['kk'] = 0x1;
var kkjf = em;

function jkkc(i) {
    kkjf['kk'] += 0x4;
    if (0x7d594 * kkjf['kk'] - 0x14dad * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x13f * kkjf['kk'] - 0x7 * kkjf['kk'])
        return l1lilili(i, 'fdfkjwer');
    kkjf['kk'] += 0x3;
    if (0x7d5f8 * kkjf['kk'] - 0x14d49 * lili1lli0o000oO['iliOOO00ool1'] * kkjf['kk'] == 0x1c1 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return li1li1li(i, '3423dsdf');
    kkjf['kk'] -= 0xc / 0x2;
    if (0x7d530 * kkjf['kk'] - 0x14c81 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * kkjf['kk'] == 0x27f * kkjf['kk'] - 0x7 * kkjf['kk'])
        return il1il1il(i, 'dfdfsd2');
    kkjf['kk'] -= 0x1;
    if (0x7d724 * kkjf['kk'] - 0x14e75 * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * kkjf['kk'] == 0x6d * kkjf['kk'] - 0x7 * kkjf['kk'])
        return lli1li1l(i, 'cnkierjj');
    kkjf['kk'] += 0x3;
    if (0x7d4cc * kkjf['kk'] - 0x14ce5 * llli111li1lil1['ili10ooOO1'] * kkjf['kk'] == 0x2d9 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return l1lilili(i, '23dfsdf2');
    if (0xc7b8 * kkjf['kk'] - 0x14d49 * lll1i111lio0o01['iOOOooi1il1'] * kkjf['kk'] == 0x1b7 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return li1iiil1(i, 'sfcdfer8');
}

function fInction(i, T) {
    var V = i + ':' + T;
    return V = lli1li1l(V, 'function'),
        V = li1li1li(V),
        V = V + '',
        V = il1il1il(V),
        V = V + '',
        V = l1lilili(V + ''),
        V = li1li1li(V + ''),
        V = il1il1il(V),
        V = li1iiil1(V),
        V;
}

function jkko(i) {
    kkjf['kk'] += 0x4;
    if (0x7d594 * kkjf['kk'] - 0x14dad * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x13f * kkjf['kk'] - 0x7 * kkjf['kk'])
        return li1iiil1(i, 'fdfkjwer');
    kkjf['kk'] += 0x3;
    if (0x7d5f8 * kkjf['kk'] - 0x14d49 * lili1lli0o000oO['iliOOO00ool1'] * kkjf['kk'] == 0x1c1 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return l1lilili(i, '3423dsdf');
    kkjf['kk'] -= 0xc / 0x2;
    if (0x7d530 * kkjf['kk'] - 0x14c81 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * kkjf['kk'] == 0x27f * kkjf['kk'] - 0x7 * kkjf['kk'])
        return lli1li1l(i, 'dfdfsd2');
    kkjf['kk'] -= 0x1;
    if (0x7d724 * kkjf['kk'] - 0x14e75 * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * kkjf['kk'] == 0x6d * kkjf['kk'] - 0x7 * kkjf['kk'])
        return ili11liii(i, 'pouxmdjw');
    kkjf['kk'] += 0x3;
    if (0x7d4cc * kkjf['kk'] - 0x14ce5 * llli111li1lil1['ili10ooOO1'] * kkjf['kk'] == 0x2d9 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return l1lilili(i, '23dfsdf2');
    if (0xc7b8 * kkjf['kk'] - 0x14d49 * lll1i111lio0o01['iOOOooi1il1'] * kkjf['kk'] == 0x1b7 * kkjf['kk'] - 0x7 * kkjf['kk'])
        return li1iiil1(i, 'sfcdfer8');
}

function llii1i1iill() {
    _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
        this['ili111llii'] = function (i) {
            var T = '', V, x, u, Q, O, o, G, A = 0x0;
            i = _utf8_encode(i);
            while (A < i['length']) {
                V = i['charCodeAt'](A++),
                    x = i['charCodeAt'](A++),
                    u = i['charCodeAt'](A++),
                    Q = V >> 0x2,
                    O = (V & 0x3) << 0x4 | x >> 0x4,
                    o = (x & 0xf) << 0x2 | u >> 0x6,
                    G = u & 0x3f,
                    isNaN(x) ? o = G = 0x40 : isNaN(u) && (G = 0x40),
                    T = T + _keyStr['charAt'](Q) + _keyStr['charAt'](O) + _keyStr['charAt'](o) + _keyStr['charAt'](G);
            }
            return T;
        }
        ,
        this['ilil111lii'] = function (i) {
            var T = '', V, x, u, Q, O, o, G, A = 0x0;
            i = i['replace'](/[^A-Za-z0-9\+\/\=]/g, '');
            while (A < i['length']) {
                Q = _keyStr['indexOf'](i['charAt'](A++)),
                    O = _keyStr['indexOf'](i['charAt'](A++)),
                    o = _keyStr['indexOf'](i['charAt'](A++)),
                    G = _keyStr['indexOf'](i['charAt'](A++)),
                    V = Q << 0x2 | O >> 0x4,
                    x = (O & 0xf) << 0x4 | o >> 0x2,
                    u = (o & 0x3) << 0x6 | G,
                    T = T + String['fromCharCode'](V),
                o != 0x40 && (T = T + String['fromCharCode'](x)),
                G != 0x40 && (T = T + String['fromCharCode'](u));
            }
            return T = _utf8_decode(T),
                T;
        }
        ,
        _utf8_encode = function (i) {
            i = i['replace'](/\r\n/g, '\x0a');
            var T = '';
            for (var V = 0x0; V < i['length']; V++) {
                var x = i['charCodeAt'](V);
                x < 0x80 ? T += String['fromCharCode'](x) : x > 0x7f && x < 0x800 ? (T += String['fromCharCode'](x >> 0x6 | 0xc0),
                    T += String['fromCharCode'](x & 0x3f | 0x80)) : (T += String['fromCharCode'](x >> 0xc | 0xe0),
                    T += String['fromCharCode'](x >> 0x6 & 0x3f | 0x80),
                    T += String['fromCharCode'](x & 0x3f | 0x80));
            }
            return T;
        }
        ,
        _utf8_decode = function (i) {
            var T = ''
                , V = 0x0
                , x = c1 = c2 = 0x0;
            while (V < i['length']) {
                x = i['charCodeAt'](V),
                    x < 0x80 ? (T += String['fromCharCode'](x),
                        V++) : x > 0xbf && x < 0xe0 ? (c2 = i['charCodeAt'](V + 0x1),
                        T += String['fromCharCode']((x & 0x1f) << 0x6 | c2 & 0x3f),
                        V += 0x2) : (c2 = i['charCodeAt'](V + 0x1),
                        c3 = i['charCodeAt'](V + 0x2),
                        T += String['fromCharCode']((x & 0xf) << 0xc | (c2 & 0x3f) << 0x6 | c3 & 0x3f),
                        V += 0x3);
            }
            return T;
        }
    ;
}

function li1li1li1(i) {
    var T = new llii1i1iill()
        , V = T['ilil111lii'](i);
    return ili11liii(V, 'il1looOo');
}

var eX = {};
eX['pn'] = 0x61;
var pnqr = eX;

function cupie(i) {
    pnqr['pn'] -= 0x64;
    if (0x2068e * pnqr['pn'] - 0x536e * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x98 * pnqr['pn'] - 0x1 * pnqr['pn'])
        return l1lilili(i, '34g53asd');
    pnqr['pn'] += 0x4;
    if (0x206f2 * pnqr['pn'] - 0x53d2 * lili1lli0o000oO['iliOOO00ool1'] * pnqr['pn'] == 0x28b * pnqr['pn'] - 0x2 * pnqr['pn'])
        return li1li1li(i, 'hj123sd1');
    pnqr['pn'] -= 0x62 / 0xe;
    if (0x20756 * pnqr['pn'] - 0x5436 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * pnqr['pn'] == 0x2f9 * pnqr['pn'] - 0x8 * pnqr['pn'])
        return il1il1il(i, 'dsahv123');
    pnqr['pn'] += 0x55;
    if (0x1fc02 * pnqr['pn'] - 0x549a * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * pnqr['pn'] == 0x6d * pnqr['pn'] - 0x7 * pnqr['pn'])
        return lli1li1l(i, 'qo7n2jebl');
    pnqr['pn'] += 0x391;
    if (0x1fc66 * pnqr['pn'] - 0x54fe * llli111li1lil1['ili10ooOO1'] * pnqr['pn'] == 0x47 * pnqr['pn'] - 0x3 * pnqr['pn'])
        return l1lilili(i, 'mgmghasd');
    if (0x1fcca * pnqr['pn'] - 0x5562 * lll1i111lio0o01['iOOOooi1il1'] * pnqr['pn'] == 0xfd * pnqr['pn'] - 0x3 * pnqr['pn'])
        return li1iiil1(i, '5675jty1');
}

// ****************************************** 二、补充fget依赖 ***************
function getUUID() {
    var h = new UUID();
    return h['id'];
}
function UUID() {
    this['id'] = this['createUUID']();
}
UUID['prototype']['valueOf'] = function() {
    return this['id'];
}
,
UUID['prototype']['toString'] = function() {
    return this['id'];
}
,
UUID['prototype']['createUUID'] = function() {
    var m = new Date(0x62e,0xa,0xf,0x0,0x0,0x0,0x0)
      , J = new Date()
      , S = J['getTime']() - m['getTime']()
      , u = UUID['getIntegerBits'](S, 0x0, 0x1f)
      , O = UUID['getIntegerBits'](S, 0x20, 0x2f)
      , j = UUID['getIntegerBits'](S, 0x30, 0x3b) + '1'
      , x = UUID['getIntegerBits'](UUID['rand'](0xfff), 0x0, 0x7)
      , G = UUID['getIntegerBits'](UUID['rand'](0xfff), 0x0, 0x7)
      , v = UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0x7) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x8, 0xf) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0x7) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x8, 0xf) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0xf);
    return u + O + j + x + G + v;
}
,
UUID['getIntegerBits'] = function(h, m, J) {
    var S = UUID['returnBase'](h, 0x10)
      , u = []
      , O = '';
    for (var j = 0x0; j < S['length']; j++) {
        u['push'](S['substring'](j, j + 0x1));
    }
    for (j = Math['floor'](m / 0x4); j <= Math['floor'](J / 0x4); j++) {
        !u[j] || u[j] == '' ? O += '0' : O += u[j];
    }
    return O;
}
,
UUID['returnBase'] = function(h, m) {
    return h['toString'](m)['toUpperCase']();
}
,
UUID['rand'] = function(h) {
    return Math['floor'](Math['random']() * (h + 0x1));
}
var _curFileDownOpts, fIsCached = null;
function fget(J,F) {
    var S = new Date()['getTime']() - 1756192048796     // 这里先把pageCreateTime写死
      , O = Math['ceil'](S / (0x3e8 * 0x3c * 0x3c));
    O >= 0x18 && (window['location']['href'] = window['location']['href']);
    var G = J['model']
      , T = J['itemId']
      , P = J['fileUuid']
      , E = J['item']
      , z = J['callBack']
      , y = J['type']
      , N = J['rescUrl']
      , H = J['expireTime']
      , W = J['confirm']
      , I = J['token']
      , A = J['pkg']
      , M = J['pkgItems']
      , C = J['saveAs']
      , R = J['resJsCallback']
      , Q = J['vcode'];
    _curFileDownOpts = J;
    var Z = '/f/d/' + y
      , Y = dfu(y, N, H, I, Q, A, C)
      , L = G == 'playLog' ? !![] : ![]
      , B = G == 'cache' ? !![] : ![];
    if (fIsCached) {
        if (G == 'cache' && fIsCached(T, null, J))
            return;
        if (G == 'play' && fIsCached(T, y, J)) {
            window[z](T, J);
            return;
        }
    }
    Y['isc'] = B,
    Y['ilg'] = L,
    Y['pkgItems'] = M,
    Y['confirm'] = W || ![];
    // 由于报下面的   _underscore is not defined  并且下面的也不是我们想要的,所以就可以直接忽略注释掉
    // !_underscore['isUndefined'](J['focusTipScene']) && (Y['focusTipScene'] = J['focusTipScene']);
    // !_underscore['isUndefined'](J['downUuid']) && (Y['downUuid'] = J['downUuid']);
    var D = cqbj(Y)
      , V = $['extend'](D, J['gt_captchaResult'] || {});

    // var F = $('#pIii111lllE')['val']();   // 这句话的意思:页面中有个标签id值等于pIii111lllE的值
    // var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4"  // 找到id标签的值,假当固定值直接赋值给F
    etag = cupie(Y['ud'] + '-' + F)
    // console.log("etag:::",etag)

    return {
        v:V,    // 我们第一次测试获取的v值
        etag:etag  // 请求头里面需要的值
    }


    /*
    * 以下的ajax请求发送就不要了,因为我们不需要,我们只需要等到 D值,所以我们只需要梳理:传入J值--fget()--Y值
    // $['ajax']({
    //     'type': 'post',
    //     'url': Z,
    //     'data': V,
    //     'beforeSend': function(U) {
    //         var F = $('#pIii111lllE')['val']();
    //         U['setRequestHeader']('X-Requested-ETag', cupie(Y['ud'] + '-' + F));
    //     },
    //     'success': function(U) {
    //         try {
    //             U = $['parseJSON'](U),
    //             jsInterface_download_proessResultJson(U, J, Z);
    //         } catch (F) {
    //             jsInterface_download_proessResultHtml(z, R, E, J, U, Z, F);
    //         }
    //     }
    // });
    */

}

// 测试  获取V值的测试
// M = {
//     "ud": "CB54CFF589900001E9D06DF5DC10AD70",
//     "v": "8282595601-1756252800661-f774a3f01e08042c3564509a923fad57",
//     "type": "audio_mp3",
//     "rescUrl": "110065907",
//     "pkg": false,
//     "vis": "4d6507b8066a",
//     "isc": false,
//     "ilg": false,
//     "confirm": false,
//     "downUuid": null
// }
//
// console.log(cqbj(M))

// 测试
var vvvvvvviisssss = "4d6507b8066a";
params_J = {
    "type": "audio_mp3",
    "fileUuid": "",
    "model": "play",
    "itemId": "114550593",
    "item": null,
    "rescUrl": "114550593",
    "expireTime": "1756278000750",
    "token": "d7ab6f2eca99d01e76fe1bdff954ff8c",
    "callBack": "callBackAudioFilePlay",
    "resJsCallback": "downloadAudioCallback",
    "custPlayCallBack": null,
    "downUuid": null,
    "customData": {
        "0": {
            "jQuery11020794731646544379": 4191
        },
        "context": {
            "jQuery11020794731646544379": 4191
        },
        "length": 1
    }
}
var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4"
console.log(fget(params_J,F))


/*
我们传递params使用fget 可以得到v和etag貌似是没问题,但是实际上有两个关键点
关键点1:参数params中的token、itemId、rescUrl这些都是哪里来的,经过对比都不是固定的
这些值哪里来的呢?两种可能,
一种是从服务器发送来的(当发送爬取的目标API之前,浏览器上面有个API从服务器接收来的)---在代码中全局搜索是可以搜索到的(在响应中可以显示出来)
一种是本地产生的    ---在代码中全局是搜索不到的,本地函数生成完,就可以直接赋值给某个变量,不可能显示出来搜索到
总结:如果可以全局搜索到--就是从服务器接收来的;如果全局搜索不到--就是本地生成的

但是实际上有两个值是需要从页面获取的是变化的,我们只是都先写死了而已
var vvvvvvviisssss = "4d6507b8066a";
var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4"
以上的这两个值,经过全局搜索都是在class文档中,都是变化的值

* */