美团 _token参数加密

1、此_token为 接口调用参数 风控滑块验证、九宫八卦阵等验证 里面需要的_token参数是另外加密算法

加密算账在这个js文件里面

rohr.js

源码为

require.define("rohr", function(require, module, exports, window, document, frames, self, location, navigator, localStorage, history, Caches, screen, alert, confirm, prompt, XMLHttpRequest, WebSocket, Reporter, webkit, WeixinJSCore) {

    "use strict";

    var t = requirejs("runtime_helpers_typeof")

      , e = requirejs("weapp_privacy_api_index").getPrivacyWx({

        name: "main"

    });

    !function() {

        function a(t) {

            for (var e = t.length; --e >= 0; )

                t[e] = 0

        }

        function n(t, e, a, n, r) {

            this.static_tree = t,

            this.extra_bits = e,

            this.extra_base = a,

            this.elems = n,

            this.max_length = r,

            this.has_stree = t && t.length

        }

        function r(t, e) {

            this.dyn_tree = t,

            this.max_code = 0,

            this.stat_desc = e

        }

        function i(t) {

            return t < 256 ? lt[t] : lt[256 + (t >>> 7)]

        }

        function s(t, e) {

            t.pending_buf[t.pending++] = 255 & e,

            t.pending_buf[t.pending++] = e >>> 8 & 255

        }

        function h(t, e, a) {

            t.bi_valid > G - a ? (t.bi_buf |= e << t.bi_valid & 65535,

            s(t, t.bi_buf),

            t.bi_buf = e >> G - t.bi_valid,

            t.bi_valid += a - G) : (t.bi_buf |= e << t.bi_valid & 65535,

            t.bi_valid += a)

        }

        function l(t, e, a) {

            h(t, a[2 * e], a[2 * e + 1])

        }

        function o(t, e) {

            var a = 0;

            do {

                a |= 1 & t,

                t >>>= 1,

                a <<= 1

            } while (--e > 0);

            return a >>> 1

        }

        function _(t, e, a) {

            var n, r, i = new Array(F + 1), s = 0;

            for (n = 1; n <= F; n++)

                i[n] = s = s + a[n - 1] << 1;

            for (r = 0; r <= e; r++) {

                var h = t[2 * r + 1];

                0 !== h && (t[2 * r] = o(i[h]++, h))

            }

        }

        function d(t) {

            var e;

            for (e = 0; e < W; e++)

                t.dyn_ltree[2 * e] = 0;

            for (e = 0; e < K; e++)

                t.dyn_dtree[2 * e] = 0;

            for (e = 0; e < X; e++)

                t.bl_tree[2 * e] = 0;

            t.dyn_ltree[2 * Z] = 1,

            t.opt_len = t.static_len = 0,

            t.last_lit = t.matches = 0

        }

        function u(t) {

            t.bi_valid > 8 ? s(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf),

            t.bi_buf = 0,

            t.bi_valid = 0

        }

        function f(t, e, a, n) {

            var r = 2 * e

              , i = 2 * a;

            return t[r] < t[i] || t[r] === t[i] && n[e] <= n[a]

        }

        function c(t, e, a) {

            for (var n = t.heap[a], r = a << 1; r <= t.heap_len && (r < t.heap_len && f(e, t.heap[r + 1], t.heap[r], t.depth) && r++,

            !f(e, n, t.heap[r], t.depth)); )

                t.heap[a] = t.heap[r],

                a = r,

                r <<= 1;

            t.heap[a] = n

        }

        function g(t, e, a) {

            var n, r, s, o, _ = 0;

            if (0 !== t.last_lit)

                do {

                    n = t.pending_buf[t.d_buf + 2 * _] << 8 | t.pending_buf[t.d_buf + 2 * _ + 1],

                    r = t.pending_buf[t.l_buf + _],

                    _++,

                    0 === n ? l(t, r, e) : (l(t, (s = ot[r]) + M + 1, e),

                    0 !== (o = at[s]) && h(t, r -= _t[s], o),

                    l(t, s = i(--n), a),

                    0 !== (o = nt[s]) && h(t, n -= dt[s], o))

                } while (_ < t.last_lit);

            l(t, Z, e)

        }

        function p(t, e) {

            var a, n, r, i = e.dyn_tree, s = e.stat_desc.static_tree, h = e.stat_desc.has_stree, l = e.stat_desc.elems, o = -1;

            for (t.heap_len = 0,

            t.heap_max = Y,

            a = 0; a < l; a++)

                0 !== i[2 * a] ? (t.heap[++t.heap_len] = o = a,

                t.depth[a] = 0) : i[2 * a + 1] = 0;

            for (; t.heap_len < 2; )

                i[2 * (r = t.heap[++t.heap_len] = o < 2 ? ++o : 0)] = 1,

                t.depth[r] = 0,

                t.opt_len--,

                h && (t.static_len -= s[2 * r + 1]);

            for (e.max_code = o,

            a = t.heap_len >> 1; a >= 1; a--)

                c(t, i, a);

            r = l;

            do {

                a = t.heap[1],

                t.heap[1] = t.heap[t.heap_len--],

                c(t, i, 1),

                n = t.heap[1],

                t.heap[--t.heap_max] = a,

                t.heap[--t.heap_max] = n,

                i[2 * r] = i[2 * a] + i[2 * n],

                t.depth[r] = (t.depth[a] >= t.depth[n] ? t.depth[a] : t.depth[n]) + 1,

                i[2 * a + 1] = i[2 * n + 1] = r,

                t.heap[1] = r++,

                c(t, i, 1)

            } while (t.heap_len >= 2);

            t.heap[--t.heap_max] = t.heap[1],

            function(t, e) {

                var a, n, r, i, s, h, l = e.dyn_tree, o = e.max_code, _ = e.stat_desc.static_tree, d = e.stat_desc.has_stree, u = e.stat_desc.extra_bits, f = e.stat_desc.extra_base, c = e.stat_desc.max_length, g = 0;

                for (i = 0; i <= F; i++)

                    t.bl_count[i] = 0;

                for (l[2 * t.heap[t.heap_max] + 1] = 0,

                a = t.heap_max + 1; a < Y; a++)

                    (i = l[2 * l[2 * (n = t.heap[a]) + 1] + 1] + 1) > c && (i = c,

                    g++),

                    l[2 * n + 1] = i,

                    n > o || (t.bl_count[i]++,

                    s = 0,

                    n >= f && (s = u[n - f]),

                    h = l[2 * n],

                    t.opt_len += h * (i + s),

                    d && (t.static_len += h * (_[2 * n + 1] + s)));

                if (0 !== g) {

                    do {

                        for (i = c - 1; 0 === t.bl_count[i]; )

                            i--;

                        t.bl_count[i]--,

                        t.bl_count[i + 1] += 2,

                        t.bl_count[c]--,

                        g -= 2

                    } while (g > 0);

                    for (i = c; 0 !== i; i--)

                        for (n = t.bl_count[i]; 0 !== n; )

                            (r = t.heap[--a]) > o || (l[2 * r + 1] !== i && (t.opt_len += (i - l[2 * r + 1]) * l[2 * r],

                            l[2 * r + 1] = i),

                            n--)

                }

            }(t, e),

            _(i, o, t.bl_count)

        }

        function b(t, e, a) {

            var n, r, i = -1, s = e[1], h = 0, l = 7, o = 4;

            for (0 === s && (l = 138,

            o = 3),

            e[2 * (a + 1) + 1] = 65535,

            n = 0; n <= a; n++)

                r = s,

                s = e[2 * (n + 1) + 1],

                ++h < l && r === s || (h < o ? t.bl_tree[2 * r] += h : 0 !== r ? (r !== i && t.bl_tree[2 * r]++,

                t.bl_tree[2 * $]++) : h <= 10 ? t.bl_tree[2 * tt]++ : t.bl_tree[2 * et]++,

                h = 0,

                i = r,

                0 === s ? (l = 138,

                o = 3) : r === s ? (l = 6,

                o = 3) : (l = 7,

                o = 4))

        }

        function v(t, e, a) {

            var n, r, i = -1, s = e[1], o = 0, _ = 7, d = 4;

            for (0 === s && (_ = 138,

            d = 3),

            n = 0; n <= a; n++)

                if (r = s,

                s = e[2 * (n + 1) + 1],

                !(++o < _ && r === s)) {

                    if (o < d)

                        do {

                            l(t, r, t.bl_tree)

                        } while (0 != --o);

                    else

                        0 !== r ? (r !== i && (l(t, r, t.bl_tree),

                        o--),

                        l(t, $, t.bl_tree),

                        h(t, o - 3, 2)) : o <= 10 ? (l(t, tt, t.bl_tree),

                        h(t, o - 3, 3)) : (l(t, et, t.bl_tree),

                        h(t, o - 11, 7));

                    o = 0,

                    i = r,

                    0 === s ? (_ = 138,

                    d = 3) : r === s ? (_ = 6,

                    d = 3) : (_ = 7,

                    d = 4)

                }

        }

        function w(t, e, a, n) {

            h(t, (J << 1) + (n ? 1 : 0), 3),

            function(t, e, a, n) {

                u(t),

                n && (s(t, a),

                s(t, ~a)),

                N.arraySet(t.pending_buf, t.window, e, a, t.pending),

                t.pending += a

            }(t, e, a, !0)

        }

        function m(t, e) {

            return t.msg = yt[e],

            e

        }

        function y(t) {

            return (t << 1) - (t > 4 ? 9 : 0)

        }

        function k(t) {

            for (var e = t.length; --e >= 0; )

                t[e] = 0

        }

        function z(t) {

            var e = t.state

              , a = e.pending;

            a > t.avail_out && (a = t.avail_out),

            0 !== a && (N.arraySet(t.output, e.pending_buf, e.pending_out, a, t.next_out),

            t.next_out += a,

            e.pending_out += a,

            t.total_out += a,

            t.avail_out -= a,

            e.pending -= a,

            0 === e.pending && (e.pending_out = 0))

        }

        function x(t, e) {

            bt._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e),

            t.block_start = t.strstart,

            z(t.strm)

        }

        function A(t, e) {

            t.pending_buf[t.pending++] = e

        }

        function B(t, e) {

            t.pending_buf[t.pending++] = e >>> 8 & 255,

            t.pending_buf[t.pending++] = 255 & e

        }

        function S(t, e, a, n) {

            var r = t.avail_in;

            return r > n && (r = n),

            0 === r ? 0 : (t.avail_in -= r,

            N.arraySet(e, t.input, t.next_in, r, a),

            1 === t.state.wrap ? t.adler = vt(t.adler, e, r, a) : 2 === t.state.wrap && (t.adler = mt(t.adler, e, r, a)),

            t.next_in += r,

            t.total_in += r,

            r)

        }

        function C(t, e) {

            var a, n, r = t.max_chain_length, i = t.strstart, s = t.prev_length, h = t.nice_match, l = t.strstart > t.w_size - Kt ? t.strstart - (t.w_size - Kt) : 0, o = t.window, _ = t.w_mask, d = t.prev, u = t.strstart + Wt, f = o[i + s - 1], c = o[i + s];

            t.prev_length >= t.good_match && (r >>= 2),

            h > t.lookahead && (h = t.lookahead);

            do {

                if (o[(a = e) + s] === c && o[a + s - 1] === f && o[a] === o[i] && o[++a] === o[i + 1]) {

                    i += 2,

                    a++;

                    do {} while (o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && i < u);

                    if (n = Wt - (u - i),

                    i = u - Wt,

                    n > s) {

                        if (t.match_start = e,

                        s = n,

                        n >= h)

                            break;

                        f = o[i + s - 1],

                        c = o[i + s]

                    }

                }

            } while ((e = d[e & _]) > l && 0 != --r);

            return s <= t.lookahead ? s : t.lookahead

        }

        function T(t) {

            var e, a, n, r, i, s = t.w_size;

            do {

                if (r = t.window_size - t.lookahead - t.strstart,

                t.strstart >= s + (s - Kt)) {

                    N.arraySet(t.window, t.window, s, s, 0),

                    t.match_start -= s,

                    t.strstart -= s,

                    t.block_start -= s,

                    e = a = t.hash_size;

                    do {

                        n = t.head[--e],

                        t.head[e] = n >= s ? n - s : 0

                    } while (--a);

                    e = a = s;

                    do {

                        n = t.prev[--e],

                        t.prev[e] = n >= s ? n - s : 0

                    } while (--a);

                    r += s

                }

                if (0 === t.strm.avail_in)

                    break;

                if (a = S(t.strm, t.window, t.strstart + t.lookahead, r),

                t.lookahead += a,

                t.lookahead + t.insert >= Mt)

                    for (i = t.strstart - t.insert,

                    t.ins_h = t.window[i],

                    t.ins_h = (t.ins_h << t.hash_shift ^ t.window[i + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[i + Mt - 1]) & t.hash_mask,

                    t.prev[i & t.w_mask] = t.head[t.ins_h],

                    t.head[t.ins_h] = i,

                    i++,

                    t.insert--,

                    !(t.lookahead + t.insert < Mt)); )

                        ;

            } while (t.lookahead < Kt && 0 !== t.strm.avail_in)

        }

        function j(t, e) {

            for (var a, n; ; ) {

                if (t.lookahead < Kt) {

                    if (T(t),

                    t.lookahead < Kt && e === kt)

                        return ee;

                    if (0 === t.lookahead)

                        break

                }

                if (a = 0,

                t.lookahead >= Mt && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + Mt - 1]) & t.hash_mask,

                a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],

                t.head[t.ins_h] = t.strstart),

                0 !== a && t.strstart - a <= t.w_size - Kt && (t.match_length = C(t, a)),

                t.match_length >= Mt)

                    if (n = bt._tr_tally(t, t.strstart - t.match_start, t.match_length - Mt),

                    t.lookahead -= t.match_length,

                    t.match_length <= t.max_lazy_match && t.lookahead >= Mt) {

                        t.match_length--;

                        do {

                            t.strstart++,

                            t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + Mt - 1]) & t.hash_mask,

                            a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],

                            t.head[t.ins_h] = t.strstart

                        } while (0 != --t.match_length);

                        t.strstart++

                    } else

                        t.strstart += t.match_length,

                        t.match_length = 0,

                        t.ins_h = t.window[t.strstart],

                        t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask;

                else

                    n = bt._tr_tally(t, 0, t.window[t.strstart]),

                    t.lookahead--,

                    t.strstart++;

                if (n && (x(t, !1),

                0 === t.strm.avail_out))

                    return ee

            }

            return t.insert = t.strstart < Mt - 1 ? t.strstart : Mt - 1,

            e === At ? (x(t, !0),

            0 === t.strm.avail_out ? ne : re) : t.last_lit && (x(t, !1),

            0 === t.strm.avail_out) ? ee : ae

        }

        function D(t, e) {

            for (var a, n, r; ; ) {

                if (t.lookahead < Kt) {

                    if (T(t),

                    t.lookahead < Kt && e === kt)

                        return ee;

                    if (0 === t.lookahead)

                        break

                }

                if (a = 0,

                t.lookahead >= Mt && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + Mt - 1]) & t.hash_mask,

                a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],

                t.head[t.ins_h] = t.strstart),

                t.prev_length = t.match_length,

                t.prev_match = t.match_start,

                t.match_length = Mt - 1,

                0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - Kt && (t.match_length = C(t, a),

                t.match_length <= 5 && (t.strategy === It || t.match_length === Mt && t.strstart - t.match_start > 4096) && (t.match_length = Mt - 1)),

                t.prev_length >= Mt && t.match_length <= t.prev_length) {

                    r = t.strstart + t.lookahead - Mt,

                    n = bt._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - Mt),

                    t.lookahead -= t.prev_length - 1,

                    t.prev_length -= 2;

                    do {

                        ++t.strstart <= r && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + Mt - 1]) & t.hash_mask,

                        a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h],

                        t.head[t.ins_h] = t.strstart)

                    } while (0 != --t.prev_length);

                    if (t.match_available = 0,

                    t.match_length = Mt - 1,

                    t.strstart++,

                    n && (x(t, !1),

                    0 === t.strm.avail_out))

                        return ee

                } else if (t.match_available) {

                    if ((n = bt._tr_tally(t, 0, t.window[t.strstart - 1])) && x(t, !1),

                    t.strstart++,

                    t.lookahead--,

                    0 === t.strm.avail_out)

                        return ee

                } else

                    t.match_available = 1,

                    t.strstart++,

                    t.lookahead--

            }

            return t.match_available && (n = bt._tr_tally(t, 0, t.window[t.strstart - 1]),

            t.match_available = 0),

            t.insert = t.strstart < Mt - 1 ? t.strstart : Mt - 1,

            e === At ? (x(t, !0),

            0 === t.strm.avail_out ? ne : re) : t.last_lit && (x(t, !1),

            0 === t.strm.avail_out) ? ee : ae

        }

        function I(t, e, a, n, r) {

            this.good_length = t,

            this.max_lazy = e,

            this.nice_length = a,

            this.max_chain = n,

            this.func = r

        }

        function E() {

            this.strm = null,

            this.status = 0,

            this.pending_buf = null,

            this.pending_buf_size = 0,

            this.pending_out = 0,

            this.pending = 0,

            this.wrap = 0,

            this.gzhead = null,

            this.gzindex = 0,

            this.method = Vt,

            this.last_flush = -1,

            this.w_size = 0,

            this.w_bits = 0,

            this.w_mask = 0,

            this.window = null,

            this.window_size = 0,

            this.prev = null,

            this.head = null,

            this.ins_h = 0,

            this.hash_size = 0,

            this.hash_bits = 0,

            this.hash_mask = 0,

            this.hash_shift = 0,

            this.block_start = 0,

            this.match_length = 0,

            this.prev_match = 0,

            this.match_available = 0,

            this.strstart = 0,

            this.match_start = 0,

            this.lookahead = 0,

            this.prev_length = 0,

            this.max_chain_length = 0,

            this.max_lazy_match = 0,

            this.level = 0,

            this.strategy = 0,

            this.good_match = 0,

            this.nice_match = 0,

            this.dyn_ltree = new N.Buf16(2 * Jt),

            this.dyn_dtree = new N.Buf16(2 * (2 * Pt + 1)),

            this.bl_tree = new N.Buf16(2 * (2 * qt + 1)),

            k(this.dyn_ltree),

            k(this.dyn_dtree),

            k(this.bl_tree),

            this.l_desc = null,

            this.d_desc = null,

            this.bl_desc = null,

            this.bl_count = new N.Buf16(Lt + 1),

            this.heap = new N.Buf16(2 * Nt + 1),

            k(this.heap),

            this.heap_len = 0,

            this.heap_max = 0,

            this.depth = new N.Buf16(2 * Nt + 1),

            k(this.depth),

            this.l_buf = 0,

            this.lit_bufsize = 0,

            this.last_lit = 0,

            this.d_buf = 0,

            this.opt_len = 0,

            this.static_len = 0,

            this.matches = 0,

            this.insert = 0,

            this.bi_buf = 0,

            this.bi_valid = 0

        }

        function U(t) {

            var e;

            return t && t.state ? (t.total_in = t.total_out = 0,

            t.data_type = Rt,

            (e = t.state).pending = 0,

            e.pending_out = 0,

            e.wrap < 0 && (e.wrap = -e.wrap),

            e.status = e.wrap ? Yt : $t,

            t.adler = 2 === e.wrap ? 0 : 1,

            e.last_flush = kt,

            bt._tr_init(e),

            St) : m(t, Tt)

        }

        function O(t) {

            var e = U(t);

            return e === St && function(t) {

                t.window_size = 2 * t.w_size,

                k(t.head),

                t.max_lazy_match = gt[t.level].max_lazy,

                t.good_match = gt[t.level].good_length,

                t.nice_match = gt[t.level].nice_length,

                t.max_chain_length = gt[t.level].max_chain,

                t.strstart = 0,

                t.block_start = 0,

                t.lookahead = 0,

                t.insert = 0,

                t.match_length = t.prev_length = Mt - 1,

                t.match_available = 0,

                t.ins_h = 0

            }(t.state),

            e

        }

        function R(t, e, a, n, r, i) {

            if (!t)

                return Tt;

            var s = 1;

            if (e === Dt && (e = 6),

            n < 0 ? (s = 0,

            n = -n) : n > 15 && (s = 2,

            n -= 16),

            r < 1 || r > Ht || a !== Vt || n < 8 || n > 15 || e < 0 || e > 9 || i < 0 || i > Ot)

                return m(t, Tt);

            8 === n && (n = 9);

            var h = new E;

            return t.state = h,

            h.strm = t,

            h.wrap = s,

            h.gzhead = null,

            h.w_bits = n,

            h.w_size = 1 << h.w_bits,

            h.w_mask = h.w_size - 1,

            h.hash_bits = r + 7,

            h.hash_size = 1 << h.hash_bits,

            h.hash_mask = h.hash_size - 1,

            h.hash_shift = ~~((h.hash_bits + Mt - 1) / Mt),

            h.window = new N.Buf8(2 * h.w_size),

            h.head = new N.Buf16(h.hash_size),

            h.prev = new N.Buf16(h.w_size),

            h.lit_bufsize = 1 << r + 6,

            h.pending_buf_size = 4 * h.lit_bufsize,

            h.pending_buf = new N.Buf8(h.pending_buf_size),

            h.d_buf = 1 * h.lit_bufsize,

            h.l_buf = 3 * h.lit_bufsize,

            h.level = e,

            h.strategy = i,

            h.method = a,

            O(t)

        }

        function V(t, e) {

            if (e < 65537 && (t.subarray && le || !t.subarray && he))

                return String.fromCharCode.apply(null, N.shrinkBuf(t, e));

            for (var a = "", n = 0; n < e; n++)

                a += String.fromCharCode(t[n]);

            return a

        }

        function H(t) {

            if (!(this instanceof H))

                return new H(t);

            this.options = N.assign({

                level: ge,

                method: be,

                chunkSize: 16384,

                windowBits: 15,

                memLevel: 8,

                strategy: pe,

                to: ""

            }, t || {});

            var e = this.options;

            e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16),

            this.err = 0,

            this.msg = "",

            this.ended = !1,

            this.chunks = [],

            this.strm = new ue,

            this.strm.avail_out = 0;

            var a = se.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy);

            if (a !== ce)

                throw new Error(yt[a]);

            if (e.header && se.deflateSetHeader(this.strm, e.header),

            e.dictionary) {

                var n;

                if (n = "string" == typeof e.dictionary ? de.string2buf(e.dictionary) : "[object ArrayBuffer]" === fe.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary,

                (a = se.deflateSetDictionary(this.strm, n)) !== ce)

                    throw new Error(yt[a]);

                this._dict_set = !0

            }

        }

        var N = function(e, a) {

            return function(e, a) {

                var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;

                a.assign = function(e) {

                    for (var a = Array.prototype.slice.call(arguments, 1); a.length; ) {

                        var n = a.shift();

                        if (n) {

                            if ("object" != t(n))

                                throw new TypeError(n + "must be non-object");

                            for (var r in n)

                                n.hasOwnProperty(r) && (e[r] = n[r])

                        }

                    }

                    return e

                }

                ,

                a.shrinkBuf = function(t, e) {

                    return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e,

                    t)

                }

                ;

                var r = {

                    arraySet: function(t, e, a, n, r) {

                        if (e.subarray && t.subarray)

                            t.set(e.subarray(a, a + n), r);

                        else

                            for (var i = 0; i < n; i++)

                                t[r + i] = e[a + i]

                    },

                    flattenChunks: function(t) {

                        var e, a, n, r, i, s;

                        for (n = 0,

                        e = 0,

                        a = t.length; e < a; e++)

                            n += t[e].length;

                        for (s = new Uint8Array(n),

                        r = 0,

                        e = 0,

                        a = t.length; e < a; e++)

                            i = t[e],

                            s.set(i, r),

                            r += i.length;

                        return s

                    }

                }

                  , i = {

                    arraySet: function(t, e, a, n, r) {

                        for (var i = 0; i < n; i++)

                            t[r + i] = e[a + i]

                    },

                    flattenChunks: function(t) {

                        return [].concat.apply([], t)

                    }

                };

                a.setTyped = function(t) {

                    t ? (a.Buf8 = Uint8Array,

                    a.Buf16 = Uint16Array,

                    a.Buf32 = Int32Array,

                    a.assign(a, r)) : (a.Buf8 = Array,

                    a.Buf16 = Array,

                    a.Buf32 = Array,

                    a.assign(a, i))

                }

                ,

                a.setTyped(n)

            }(0, (a = {

                exports: {}

            }).exports),

            a.exports

        }()

          , P = 0

          , q = 1

          , J = 0

          , L = 29

          , M = 256

          , W = M + 1 + L

          , K = 30

          , X = 19

          , Y = 2 * W + 1

          , F = 15

          , G = 16

          , Q = 7

          , Z = 256

          , $ = 16

          , tt = 17

          , et = 18

          , at = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]

          , nt = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]

          , rt = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]

          , it = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]

          , st = new Array(2 * (W + 2));

        a(st);

        var ht = new Array(2 * K);

        a(ht);

        var lt = new Array(512);

        a(lt);

        var ot = new Array(256);

        a(ot);

        var _t = new Array(L);

        a(_t);

        var dt = new Array(K);

        a(dt);

        var ut, ft, ct, gt, pt = !1, bt = {

            _tr_init: function(t) {

                pt || (function() {

                    var t, e, a, r, i, s = new Array(F + 1);

                    for (a = 0,

                    r = 0; r < L - 1; r++)

                        for (_t[r] = a,

                        t = 0; t < 1 << at[r]; t++)

                            ot[a++] = r;

                    for (ot[a - 1] = r,

                    i = 0,

                    r = 0; r < 16; r++)

                        for (dt[r] = i,

                        t = 0; t < 1 << nt[r]; t++)

                            lt[i++] = r;

                    for (i >>= 7; r < K; r++)

                        for (dt[r] = i << 7,

                        t = 0; t < 1 << nt[r] - 7; t++)

                            lt[256 + i++] = r;

                    for (e = 0; e <= F; e++)

                        s[e] = 0;

                    for (t = 0; t <= 143; )

                        st[2 * t + 1] = 8,

                        t++,

                        s[8]++;

                    for (; t <= 255; )

                        st[2 * t + 1] = 9,

                        t++,

                        s[9]++;

                    for (; t <= 279; )

                        st[2 * t + 1] = 7,

                        t++,

                        s[7]++;

                    for (; t <= 287; )

                        st[2 * t + 1] = 8,

                        t++,

                        s[8]++;

                    for (_(st, W + 1, s),

                    t = 0; t < K; t++)

                        ht[2 * t + 1] = 5,

                        ht[2 * t] = o(t, 5);

                    ut = new n(st,at,M + 1,W,F),

                    ft = new n(ht,nt,0,K,F),

                    ct = new n(new Array(0),rt,0,X,Q)

                }(),

                pt = !0),

                t.l_desc = new r(t.dyn_ltree,ut),

                t.d_desc = new r(t.dyn_dtree,ft),

                t.bl_desc = new r(t.bl_tree,ct),

                t.bi_buf = 0,

                t.bi_valid = 0,

                d(t)

            },

            _tr_stored_block: w,

            _tr_flush_block: function(t, e, a, n) {

                var r, i, s = 0;

                t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = function(t) {

                    var e, a = 4093624447;

                    for (e = 0; e <= 31; e++,

                    a >>>= 1)

                        if (1 & a && 0 !== t.dyn_ltree[2 * e])

                            return P;

                    if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26])

                        return q;

                    for (e = 32; e < M; e++)

                        if (0 !== t.dyn_ltree[2 * e])

                            return q;

                    return P

                }(t)),

                p(t, t.l_desc),

                p(t, t.d_desc),

                s = function(t) {

                    var e;

                    for (b(t, t.dyn_ltree, t.l_desc.max_code),

                    b(t, t.dyn_dtree, t.d_desc.max_code),

                    p(t, t.bl_desc),

                    e = X - 1; e >= 3 && 0 === t.bl_tree[2 * it[e] + 1]; e--)

                        ;

                    return t.opt_len += 3 * (e + 1) + 5 + 5 + 4,

                    e

                }(t),

                r = t.opt_len + 3 + 7 >>> 3,

                (i = t.static_len + 3 + 7 >>> 3) <= r && (r = i)) : r = i = a + 5,

                a + 4 <= r && -1 !== e ? w(t, e, a, n) : 4 === t.strategy || i === r ? (h(t, 2 + (n ? 1 : 0), 3),

                g(t, st, ht)) : (h(t, 4 + (n ? 1 : 0), 3),

                function(t, e, a, n) {

                    var r;

                    for (h(t, e - 257, 5),

                    h(t, a - 1, 5),

                    h(t, n - 4, 4),

                    r = 0; r < n; r++)

                        h(t, t.bl_tree[2 * it[r] + 1], 3);

                    v(t, t.dyn_ltree, e - 1),

                    v(t, t.dyn_dtree, a - 1)

                }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1),

                g(t, t.dyn_ltree, t.dyn_dtree)),

                d(t),

                n && u(t)

            },

            _tr_tally: function(t, e, a) {

                return t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255,

                t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e,

                t.pending_buf[t.l_buf + t.last_lit] = 255 & a,

                t.last_lit++,

                0 === e ? t.dyn_ltree[2 * a]++ : (t.matches++,

                e--,

                t.dyn_ltree[2 * (ot[a] + M + 1)]++,

                t.dyn_dtree[2 * i(e)]++),

                t.last_lit === t.lit_bufsize - 1

            },

            _tr_align: function(t) {

                h(t, 2, 3),

                l(t, Z, st),

                function(t) {

                    16 === t.bi_valid ? (s(t, t.bi_buf),

                    t.bi_buf = 0,

                    t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf,

                    t.bi_buf >>= 8,

                    t.bi_valid -= 8)

                }(t)

            }

        }, vt = function(t, e, a, n) {

            for (var r = 65535 & t | 0, i = t >>> 16 & 65535 | 0, s = 0; 0 !== a; ) {

                a -= s = a > 2e3 ? 2e3 : a;

                do {

                    i = i + (r = r + e[n++] | 0) | 0

                } while (--s);

                r %= 65521,

                i %= 65521

            }

            return r | i << 16 | 0

        }, wt = function() {

            for (var t, e = [], a = 0; a < 256; a++) {

                t = a;

                for (var n = 0; n < 8; n++)

                    t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1;

                e[a] = t

            }

            return e

        }(), mt = function(t, e, a, n) {

            t ^= -1;

            for (var r = n; r < n + a; r++)

                t = t >>> 8 ^ wt[255 & (t ^ e[r])];

            return -1 ^ t

        }, yt = {

            2: "need dictionary",

            1: "stream end",

            0: "",

            "-1": "file error",

            "-2": "stream error",

            "-3": "data error",

            "-4": "insufficient memory",

            "-5": "buffer error",

            "-6": "incompatible version"

        }, kt = 0, zt = 1, xt = 3, At = 4, Bt = 5, St = 0, Ct = 1, Tt = -2, jt = -5, Dt = -1, It = 1, Et = 2, Ut = 3, Ot = 4, Rt = 2, Vt = 8, Ht = 9, Nt = 286, Pt = 30, qt = 19, Jt = 2 * Nt + 1, Lt = 15, Mt = 3, Wt = 258, Kt = Wt + Mt + 1, Xt = 32, Yt = 42, Ft = 69, Gt = 73, Qt = 91, Zt = 103, $t = 113, te = 666, ee = 1, ae = 2, ne = 3, re = 4, ie = 3;

        gt = [new I(0,0,0,0,(function(t, e) {

            var a = 65535;

            for (a > t.pending_buf_size - 5 && (a = t.pending_buf_size - 5); ; ) {

                if (t.lookahead <= 1) {

                    if (T(t),

                    0 === t.lookahead && e === kt)

                        return ee;

                    if (0 === t.lookahead)

                        break

                }

                t.strstart += t.lookahead,

                t.lookahead = 0;

                var n = t.block_start + a;

                if ((0 === t.strstart || t.strstart >= n) && (t.lookahead = t.strstart - n,

                t.strstart = n,

                x(t, !1),

                0 === t.strm.avail_out))

                    return ee;

                if (t.strstart - t.block_start >= t.w_size - Kt && (x(t, !1),

                0 === t.strm.avail_out))

                    return ee

            }

            return t.insert = 0,

            e === At ? (x(t, !0),

            0 === t.strm.avail_out ? ne : re) : (t.strstart > t.block_start && (x(t, !1),

            t.strm.avail_out),

            ee)

        }

        )), new I(4,4,8,4,j), new I(4,5,16,8,j), new I(4,6,32,32,j), new I(4,4,16,16,D), new I(8,16,32,32,D), new I(8,16,128,128,D), new I(8,32,128,256,D), new I(32,128,258,1024,D), new I(32,258,258,4096,D)];

        var se = {

            deflateInit: function(t, e) {

                return R(t, e, Vt, 15, 8, 0)

            },

            deflateInit2: R,

            deflateReset: O,

            deflateResetKeep: U,

            deflateSetHeader: function(t, e) {

                return t && t.state ? 2 !== t.state.wrap ? Tt : (t.state.gzhead = e,

                St) : Tt

            },

            deflate: function(t, e) {

                var a, n, r, i;

                if (!t || !t.state || e > Bt || e < 0)

                    return t ? m(t, Tt) : Tt;

                if (n = t.state,

                !t.output || !t.input && 0 !== t.avail_in || n.status === te && e !== At)

                    return m(t, 0 === t.avail_out ? jt : Tt);

                if (n.strm = t,

                a = n.last_flush,

                n.last_flush = e,

                n.status === Yt)

                    if (2 === n.wrap)

                        t.adler = 0,

                        A(n, 31),

                        A(n, 139),

                        A(n, 8),

                        n.gzhead ? (A(n, (n.gzhead.text ? 1 : 0) + (n.gzhead.hcrc ? 2 : 0) + (n.gzhead.extra ? 4 : 0) + (n.gzhead.name ? 8 : 0) + (n.gzhead.comment ? 16 : 0)),

                        A(n, 255 & n.gzhead.time),

                        A(n, n.gzhead.time >> 8 & 255),

                        A(n, n.gzhead.time >> 16 & 255),

                        A(n, n.gzhead.time >> 24 & 255),

                        A(n, 9 === n.level ? 2 : n.strategy >= Et || n.level < 2 ? 4 : 0),

                        A(n, 255 & n.gzhead.os),

                        n.gzhead.extra && n.gzhead.extra.length && (A(n, 255 & n.gzhead.extra.length),

                        A(n, n.gzhead.extra.length >> 8 & 255)),

                        n.gzhead.hcrc && (t.adler = mt(t.adler, n.pending_buf, n.pending, 0)),

                        n.gzindex = 0,

                        n.status = Ft) : (A(n, 0),

                        A(n, 0),

                        A(n, 0),

                        A(n, 0),

                        A(n, 0),

                        A(n, 9 === n.level ? 2 : n.strategy >= Et || n.level < 2 ? 4 : 0),

                        A(n, ie),

                        n.status = $t);

                    else {

                        var s = Vt + (n.w_bits - 8 << 4) << 8;

                        s |= (n.strategy >= Et || n.level < 2 ? 0 : n.level < 6 ? 1 : 6 === n.level ? 2 : 3) << 6,

                        0 !== n.strstart && (s |= Xt),

                        s += 31 - s % 31,

                        n.status = $t,

                        B(n, s),

                        0 !== n.strstart && (B(n, t.adler >>> 16),

                        B(n, 65535 & t.adler)),

                        t.adler = 1

                    }

                if (n.status === Ft)

                    if (n.gzhead.extra) {

                        for (r = n.pending; n.gzindex < (65535 & n.gzhead.extra.length) && (n.pending !== n.pending_buf_size || (n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                        z(t),

                        r = n.pending,

                        n.pending !== n.pending_buf_size)); )

                            A(n, 255 & n.gzhead.extra[n.gzindex]),

                            n.gzindex++;

                        n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                        n.gzindex === n.gzhead.extra.length && (n.gzindex = 0,

                        n.status = Gt)

                    } else

                        n.status = Gt;

                if (n.status === Gt)

                    if (n.gzhead.name) {

                        r = n.pending;

                        do {

                            if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                            z(t),

                            r = n.pending,

                            n.pending === n.pending_buf_size)) {

                                i = 1;

                                break

                            }

                            i = n.gzindex < n.gzhead.name.length ? 255 & n.gzhead.name.charCodeAt(n.gzindex++) : 0,

                            A(n, i)

                        } while (0 !== i);

                        n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                        0 === i && (n.gzindex = 0,

                        n.status = Qt)

                    } else

                        n.status = Qt;

                if (n.status === Qt)

                    if (n.gzhead.comment) {

                        r = n.pending;

                        do {

                            if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                            z(t),

                            r = n.pending,

                            n.pending === n.pending_buf_size)) {

                                i = 1;

                                break

                            }

                            i = n.gzindex < n.gzhead.comment.length ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++) : 0,

                            A(n, i)

                        } while (0 !== i);

                        n.gzhead.hcrc && n.pending > r && (t.adler = mt(t.adler, n.pending_buf, n.pending - r, r)),

                        0 === i && (n.status = Zt)

                    } else

                        n.status = Zt;

                if (n.status === Zt && (n.gzhead.hcrc ? (n.pending + 2 > n.pending_buf_size && z(t),

                n.pending + 2 <= n.pending_buf_size && (A(n, 255 & t.adler),

                A(n, t.adler >> 8 & 255),

                t.adler = 0,

                n.status = $t)) : n.status = $t),

                0 !== n.pending) {

                    if (z(t),

                    0 === t.avail_out)

                        return n.last_flush = -1,

                        St

                } else if (0 === t.avail_in && y(e) <= y(a) && e !== At)

                    return m(t, jt);

                if (n.status === te && 0 !== t.avail_in)

                    return m(t, jt);

                if (0 !== t.avail_in || 0 !== n.lookahead || e !== kt && n.status !== te) {

                    var h = n.strategy === Et ? function(t, e) {

                        for (var a; ; ) {

                            if (0 === t.lookahead && (T(t),

                            0 === t.lookahead)) {

                                if (e === kt)

                                    return ee;

                                break

                            }

                            if (t.match_length = 0,

                            a = bt._tr_tally(t, 0, t.window[t.strstart]),

                            t.lookahead--,

                            t.strstart++,

                            a && (x(t, !1),

                            0 === t.strm.avail_out))

                                return ee

                        }

                        return t.insert = 0,

                        e === At ? (x(t, !0),

                        0 === t.strm.avail_out ? ne : re) : t.last_lit && (x(t, !1),

                        0 === t.strm.avail_out) ? ee : ae

                    }(n, e) : n.strategy === Ut ? function(t, e) {

                        for (var a, n, r, i, s = t.window; ; ) {

                            if (t.lookahead <= Wt) {

                                if (T(t),

                                t.lookahead <= Wt && e === kt)

                                    return ee;

                                if (0 === t.lookahead)

                                    break

                            }

                            if (t.match_length = 0,

                            t.lookahead >= Mt && t.strstart > 0 && ((n = s[r = t.strstart - 1]) === s[++r] && n === s[++r] && n === s[++r])) {

                                i = t.strstart + Wt;

                                do {} while (n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && r < i);

                                t.match_length = Wt - (i - r),

                                t.match_length > t.lookahead && (t.match_length = t.lookahead)

                            }

                            if (t.match_length >= Mt ? (a = bt._tr_tally(t, 1, t.match_length - Mt),

                            t.lookahead -= t.match_length,

                            t.strstart += t.match_length,

                            t.match_length = 0) : (a = bt._tr_tally(t, 0, t.window[t.strstart]),

                            t.lookahead--,

                            t.strstart++),

                            a && (x(t, !1),

                            0 === t.strm.avail_out))

                                return ee

                        }

                        return t.insert = 0,

                        e === At ? (x(t, !0),

                        0 === t.strm.avail_out ? ne : re) : t.last_lit && (x(t, !1),

                        0 === t.strm.avail_out) ? ee : ae

                    }(n, e) : gt[n.level].func(n, e);

                    if (h !== ne && h !== re || (n.status = te),

                    h === ee || h === ne)

                        return 0 === t.avail_out && (n.last_flush = -1),

                        St;

                    if (h === ae && (e === zt ? bt._tr_align(n) : e !== Bt && (bt._tr_stored_block(n, 0, 0, !1),

                    e === xt && (k(n.head),

                    0 === n.lookahead && (n.strstart = 0,

                    n.block_start = 0,

                    n.insert = 0))),

                    z(t),

                    0 === t.avail_out))

                        return n.last_flush = -1,

                        St

                }

                return e !== At ? St : n.wrap <= 0 ? Ct : (2 === n.wrap ? (A(n, 255 & t.adler),

                A(n, t.adler >> 8 & 255),

                A(n, t.adler >> 16 & 255),

                A(n, t.adler >> 24 & 255),

                A(n, 255 & t.total_in),

                A(n, t.total_in >> 8 & 255),

                A(n, t.total_in >> 16 & 255),

                A(n, t.total_in >> 24 & 255)) : (B(n, t.adler >>> 16),

                B(n, 65535 & t.adler)),

                z(t),

                n.wrap > 0 && (n.wrap = -n.wrap),

                0 !== n.pending ? St : Ct)

            },

            deflateEnd: function(t) {

                var e;

                return t && t.state ? (e = t.state.status) !== Yt && e !== Ft && e !== Gt && e !== Qt && e !== Zt && e !== $t && e !== te ? m(t, Tt) : (t.state = null,

                e === $t ? m(t, -3) : St) : Tt

            },

            deflateSetDictionary: function(t, e) {

                var a, n, r, i, s, h, l, o, _ = e.length;

                if (!t || !t.state)

                    return Tt;

                if (2 === (i = (a = t.state).wrap) || 1 === i && a.status !== Yt || a.lookahead)

                    return Tt;

                for (1 === i && (t.adler = vt(t.adler, e, _, 0)),

                a.wrap = 0,

                _ >= a.w_size && (0 === i && (k(a.head),

                a.strstart = 0,

                a.block_start = 0,

                a.insert = 0),

                o = new N.Buf8(a.w_size),

                N.arraySet(o, e, _ - a.w_size, a.w_size, 0),

                e = o,

                _ = a.w_size),

                s = t.avail_in,

                h = t.next_in,

                l = t.input,

                t.avail_in = _,

                t.next_in = 0,

                t.input = e,

                T(a); a.lookahead >= Mt; ) {

                    n = a.strstart,

                    r = a.lookahead - (Mt - 1);

                    do {

                        a.ins_h = (a.ins_h << a.hash_shift ^ a.window[n + Mt - 1]) & a.hash_mask,

                        a.prev[n & a.w_mask] = a.head[a.ins_h],

                        a.head[a.ins_h] = n,

                        n++

                    } while (--r);

                    a.strstart = n,

                    a.lookahead = Mt - 1,

                    T(a)

                }

                return a.strstart += a.lookahead,

                a.block_start = a.strstart,

                a.insert = a.lookahead,

                a.lookahead = 0,

                a.match_length = a.prev_length = Mt - 1,

                a.match_available = 0,

                t.next_in = h,

                t.input = l,

                t.avail_in = s,

                a.wrap = i,

                St

            },

            deflateInfo: "pako deflate (from Nodeca project)"

        }

          , he = !0

          , le = !0;

        try {

            String.fromCharCode.apply(null, [0])

        } catch (a) {

            he = !1

        }

        try {

            String.fromCharCode.apply(null, new Uint8Array(1))

        } catch (a) {

            le = !1

        }

        for (var oe = new N.Buf8(256), _e = 0; _e < 256; _e++)

            oe[_e] = _e >= 252 ? 6 : _e >= 248 ? 5 : _e >= 240 ? 4 : _e >= 224 ? 3 : _e >= 192 ? 2 : 1;

        oe[254] = oe[254] = 1;

        var de = {

            string2buf: function(t) {

                var e, a, n, r, i, s = t.length, h = 0;

                for (r = 0; r < s; r++)

                    55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < s && 56320 == (64512 & (n = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (n - 56320),

                    r++),

                    h += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4;

                for (e = new N.Buf8(h),

                i = 0,

                r = 0; i < h; r++)

                    55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < s && 56320 == (64512 & (n = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (n - 56320),

                    r++),

                    a < 128 ? e[i++] = a : a < 2048 ? (e[i++] = 192 | a >>> 6,

                    e[i++] = 128 | 63 & a) : a < 65536 ? (e[i++] = 224 | a >>> 12,

                    e[i++] = 128 | a >>> 6 & 63,

                    e[i++] = 128 | 63 & a) : (e[i++] = 240 | a >>> 18,

                    e[i++] = 128 | a >>> 12 & 63,

                    e[i++] = 128 | a >>> 6 & 63,

                    e[i++] = 128 | 63 & a);

                return e

            },

            buf2binstring: function(t) {

                return V(t, t.length)

            },

            binstring2buf: function(t) {

                for (var e = new N.Buf8(t.length), a = 0, n = e.length; a < n; a++)

                    e[a] = t.charCodeAt(a);

                return e

            },

            buf2string: function(t, e) {

                var a, n, r, i, s = e || t.length, h = new Array(2 * s);

                for (n = 0,

                a = 0; a < s; )

                    if ((r = t[a++]) < 128)

                        h[n++] = r;

                    else if ((i = oe[r]) > 4)

                        h[n++] = 65533,

                        a += i - 1;

                    else {

                        for (r &= 2 === i ? 31 : 3 === i ? 15 : 7; i > 1 && a < s; )

                            r = r << 6 | 63 & t[a++],

                            i--;

                        i > 1 ? h[n++] = 65533 : r < 65536 ? h[n++] = r : (r -= 65536,

                        h[n++] = 55296 | r >> 10 & 1023,

                        h[n++] = 56320 | 1023 & r)

                    }

                return V(h, n)

            },

            utf8border: function(t, e) {

                var a;

                for ((e = e || t.length) > t.length && (e = t.length),

                a = e - 1; a >= 0 && 128 == (192 & t[a]); )

                    a--;

                return a < 0 || 0 === a ? e : a + oe[t[a]] > e ? a : e

            }

        }

          , ue = function() {

            this.input = null,

            this.next_in = 0,

            this.avail_in = 0,

            this.total_in = 0,

            this.output = null,

            this.next_out = 0,

            this.avail_out = 0,

            this.total_out = 0,

            this.msg = "",

            this.state = null,

            this.data_type = 2,

            this.adler = 0

        }

          , fe = Object.prototype.toString

          , ce = 0

          , ge = -1

          , pe = 0

          , be = 8;

        H.prototype.push = function(t, e) {

            var a, n, r = this.strm, i = this.options.chunkSize;

            if (this.ended)

                return !1;

            n = e === ~~e ? e : !0 === e ? 4 : 0,

            "string" == typeof t ? r.input = de.string2buf(t) : "[object ArrayBuffer]" === fe.call(t) ? r.input = new Uint8Array(t) : r.input = t,

            r.next_in = 0,

            r.avail_in = r.input.length;

            do {

                if (0 === r.avail_out && (r.output = new N.Buf8(i),

                r.next_out = 0,

                r.avail_out = i),

                1 !== (a = se.deflate(r, n)) && a !== ce)

                    return this.onEnd(a),

                    this.ended = !0,

                    !1;

                0 !== r.avail_out && (0 !== r.avail_in || 4 !== n && 2 !== n) || ("string" === this.options.to ? this.onData(de.buf2binstring(N.shrinkBuf(r.output, r.next_out))) : this.onData(N.shrinkBuf(r.output, r.next_out)))

            } while ((r.avail_in > 0 || 0 === r.avail_out) && 1 !== a);

            return 4 === n ? (a = se.deflateEnd(this.strm),

            this.onEnd(a),

            this.ended = !0,

            a === ce) : 2 !== n || (this.onEnd(ce),

            r.avail_out = 0,

            !0)

        }

        ,

        H.prototype.onData = function(t) {

            this.chunks.push(t)

        }

        ,

        H.prototype.onEnd = function(t) {

            t === ce && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = N.flattenChunks(this.chunks)),

            this.chunks = [],

            this.err = t,

            this.msg = this.strm.msg

        }

        ;

        var ve = function(t) {

            return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)

        }

          , we = "undefined" != typeof top && top.btoa || function(t) {

            for (var e = [], a = 0, n = t.length, r = 0, i = 0; i < n; ++i)

                3 === (a += 1) && (a = 0),

                r = t.charCodeAt(i),

                0 === a ? e.push(ve(63 & (t.charCodeAt(i - 1) << 2 | r >> 6)), ve(63 & r)) : 1 === a ? e.push(ve(r >> 2 & 63)) : e.push(ve(63 & (t.charCodeAt(i - 1) << 4 | r >> 4))),

                i === n - 1 && a > 0 && e.push(ve(r << (3 - a << 1) & 63));

            if (a)

                for (; a < 3; )

                    a += 1,

                    e.push("=");

            return e.join("")

        }

          , me = function(t) {

            var e = function(t, e) {

                var a = new H(e);

                if (a.push(t, !0),

                a.err)

                    throw a.msg || yt[a.err];

                return a.result

            }(JSON.stringify(t), {

                to: "string"

            });

            return we(e)

        }

          , ye = "function" == typeof Symbol && "symbol" == t(Symbol.iterator) ? function(e) {

            return t(e)

        }

        : function(e) {

            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : t(e)

        }

          , ke = {

            f: 0,

            r: 0,

            w: 0,

            h: 0

        }

          , ze = {

            rId: 0,

            ts: 0,

            cts: 0,

            brVD: [],

            brR: [],

            bI: [],

            mT: [],

            kT: [],

            aT: [],

            tT: [],

            sign: ""

        };

        try {

            e.getSystemInfo({

                success: function(t) {

                    var e = t.pixelRatio

                      , a = t.windowWidth

                      , n = t.windowHeight;

                    ke.r = e,

                    ke.w = a,

                    ke.h = n

                }

            })

        } catch (a) {}

        module.exports = {

            get_token: function(t,p1,p2,at,tt) {

                //初始化定死的参数

                var systeminfo = wx.getSystemInfo();

                ke.f = 100022;

                ke.r = systeminfo.pixelRatio;

                ke.w = systeminfo.windowWidth;

                ke.h = systeminfo.windowHeight;

                ze.rId = 100022;

                var wx_systeminfo = wx.getSystemInfo();

                return this.r(t,p1,p2,at,tt);

            },

            i: function(t) {

                ke.f = t

            },

            m: function() {

                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}

                  , e = t.touches

                  , a = t.changedTouches

                  , n = a && a[0] || e && e[0];

                if (n) {

                    var r = n.clientX

                      , i = void 0 === r ? 0 : r

                      , s = n.clientY

                      , h = void 0 === s ? 0 : s

                      , l = e && e.length || a && a.length || 0;

                    ze.mT = [i + "," + h].concat(ze.mT.slice(0, 29)),

                    ze.tT = [i + "," + h + "," + l].concat(ze.tT.slice(0, 29))

                }

            },

            t: function() {

                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}

                  , e = t.detail

                  , a = e && e.x || 0

                  , n = e && e.y || 0;

                ze.aT = [a + "," + n + ",view"].concat(ze.aT.slice(0, 29))

            },

            r: function(t) {

                !function() {

                    if (ze.rId = ke.f,

                    0 === ze.ts && (ze.ts = Date.now()),

                    0 === ze.brVD.length || 0 === ze.brVD[0] || 0 === ze.brVD[1]) {

                        var t = ke.r

                          , e = ke.w

                          , a = ke.h

                          , n = [Math.round(t * e), Math.round(t * a)];

                        ze.brVD = [e, a],

                        ze.brR = [n, n, 24, 24]

                    }

                }();

                /* 修改为下面代码

                var e = ""

                  , a = "";

                try {

                    var n = getCurrentPages()

                      , r = n.length;

                    e = n[r - 1].__route__,

                    r > 1 && (a = n[r - 2].__route__)

                } catch (t) {}*/

                var e = ""

                  , a = "";

                var i = "";

                try {

                    i = function(t) {

                        var e = [];

                        return Object.keys(t).sort().forEach((function(a) {

                            var n = t[a];

                            "_token" !== a && (n && "object" === (void 0 === n ? "undefined" : ye(n)) && (n = JSON.stringify(n)),

                            e.push(a + "=" + n))

                        }

                        )),

                        me(e.join("&"))

                    }(t)

                } catch (t) {}

                ze.sign = i,

                ze.cts = Date.now(),

                ze.bI = [e, a];

                try {

                    return me(ze)

                } catch (t) {

                    return ""

                }

            }

        }

    }();

    return module.exports;

});

加密入口 

r() 该函数 getCurrentPages 为 当前页面路径 每个接口 所在的路径 自行填充

aT 和 tT 分别为 鼠标移动 点击坐标(可为空 或者固定值 )

加密结果为

eJxdjltPg0AQhf/LvLqme2O5JH1oRBPEopWlMTZ9qJY0pLYgiy3Q+N8dAjZNH3bOfLNzTuYEZbAGj1FKOSdQGextrmwlKLUZlwQ+r2cOgY9y7oO3kEwSW6hlN3hFXijOCGNULslFiyFcdjsBrkCx2qRmlJfrtOwrENgVh5/0tv8Zap51D9C202hD3Q666hSEpMTighyy9IgJAi+xqDyjFIjqH7nDiaL8jC56XadHTKyGZJNt9uBB+ljrOLNCneyj0Pmatnfb5++4Dio9nzVH3cZN6Se5aWhTVLEswsR9C6e5aeNR+PTyEBn/fTa5qe91NBmP4fcPE9dj5Q==

看着像是jwt 其实不是  算法解密分析 后续再记录吧

如有侵权请联系作者 删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值