0


【猿人学WEB题目专解】猿人学第6题

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

猿人学第6题

题目网址

猿人学第6题

题目详情

在这里插入图片描述
让我们计算 全部 中奖的 总金额(包含一、二、三等奖),返回的数据只有 三等奖 的数据,得自己计算出一、二等奖的数据,一二等奖似乎是根据三等奖数据生成的。

题目思路

我们先实验一下,一、二等奖的生成是否与三等奖有关,改个返回数据,然后执行试试
在这里插入图片描述
执行前的数据:
在这里插入图片描述
执行后的数据:
在这里插入图片描述
果然,一、二等奖就是从三等奖生成出来的,那先不管他们,先来搞定三等奖数据的生成。
这题最主要的就是我们参数

m

的生成,所以直接打断点,刷新页面或点击其他页,跳转到

r

函数所在位置:
在这里插入图片描述

使用 RPC 远程过程调用解决(失败)

为什么会有想用这个的想法呢?原因有几个:

  1. 使用 RPC 远程过程调用很简单。
  2. 函数入口明确,可以直接调用出结果。
  3. 懒得逆向 / 逆向恐惧 / 不会逆向 等原因。
  4. 没有用过 RPC 远程过程调用,想尝试。

我们首先打开 RPC 服务端:
在这里插入图片描述然后将断点放在

m

函数的设置处:
在这里插入图片描述
然后注入js并启动ws连接:
在这里插入图片描述
关掉断点,放开断点。
然后发现网页上仍然可以点击,但一用爬虫就…
在这里插入图片描述
在这里插入图片描述
好家伙,使用 RPC 就被风控了!
最终这题使用 RPC 以失败告终了,之后的猿人学题目也不想尝试使用 RPC 了。

正常逆向 JavaScript 解决

有明显的函数入口,先放一遍,浏览一遍这个js文件,有个小“惊喜”,滚动格式化的js到最上面,会发现是一段颜文字:
在这里插入图片描述
将这段颜文字的最后的

('_')

改成

toString()

,回车执行后发现这么长只执行出来了一句话

function anonymous(\n) {\nwindow.o = 1\n}


在这里插入图片描述
这就是函数的本体,我们去 AAEncode加密/解密 网站去加密一下,得出实际加密代码是

window.o = 1


就…挺无语的。
这段颜文字js代码是加载文件时只执行一次:
在这里插入图片描述
所以每次刷新后,

window.o

都会重新变成1。
好,接下来可以忽略这段颜文字了,不是什么大问题。
由于我们的入口很明显,我们可以把整个代码复制粘贴到文件调试,去掉多余的地方:
在这里插入图片描述
这个函数就没必要了。
在这里插入图片描述
颜文字变回

window.o = 1

,改成:

window = global;window.o = 1;


一上来可能会有一个编码异常:
在这里插入图片描述
这个处理也很简单,找到执行前修改

popen

编码就可以,我们点击这个:
在这里插入图片描述
跳转到了这里:
在这里插入图片描述
我们需要添加编码:

p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=self._cwd, universal_newlines=True, encoding='utf8')

这样我们这个问题就处理好了。
接下来会有许多小问题,我们为了方便,先把文件中所有try catch注释掉,然后看看具体哪里报错(正常运行是不会运行catch部分的!)
然后告诉我们

location

未找到,但是我们搜不到!那只可能跟文件中加密部分——

jsfuck

加密部分了,我们用 jsfuck解密 对他解密,发现是

false


改完后,又缺少了

ASN1

,发现这个定义在

window.ASN1

中,却无法直接使用

ASN1

,那就给每个都用

window.ASN1

引用:
在这里插入图片描述
又少了

Base64

,一搜一看,发现还有

CryptoJS


在这里插入图片描述
我们把

Base64

改成

window.Base64

,很好,完美执行了!
在这里插入图片描述
但是仍然风控不通过,我们再观察网页:
在这里插入图片描述
发现网址似乎一定要编码,那我们采用

params

传递请求参数,因为在

prepare_url

阶段:
在这里插入图片描述
他会自动进行

encode


在这里插入图片描述
在这里插入图片描述
所以我们可以直接写在

params

里进行编码:
在这里插入图片描述
终于盼到了我们的结果,然后我们需要处理,如何通过三等奖,获得一、二等奖计算出总金额。
在这里插入图片描述
初步观察好像有一定的倍数关系,尝试了3个,发现都是

24

倍:
在这里插入图片描述
发现其他页也是24倍关系,再粗略看下他的处理代码:

data=data.data;let html ='';let arg =1;let puq =`<tr data-week="3"><td>date_twice</td><td>2020-10-date_value</td>caipiaohao<td>total_value</td><td>result_value1</td><td>result_value2</td><td>result_value3</td><td>0</td><td></td></tr>`;let arr_arg =[1,8,7,3,5,7,10,2,9,4];
$.each(data,function(index, val){let caipiao =`<td><span class="rq1">arg1</span><span class="rq1">arg2</span><span class="rq1">arg3</span><span class="rq1">arg4</span><span class="rq1">arg5</span><span class="rq1">arg6</span><span class="rq1">arg7</span></td><td><span class="bq1">arg8</span></td>`;let arr =[5,1,7,6,3,2,4,7];for(let c =1; c <=8; c++){
        caipiao = caipiao.replace('arg'+ c,(Math.floor(((arr_arg[arg]<<2)/5+ c)* c /3)+1)+ arr[window.page])}
    html += puq.replace('caipiaohao', caipiao).replace('date_twice', arg * window.page +2020097).replace('date_value','0'+ window.page).replace('result_value3', val.value).replace('total_value', val.value *24).replace('result_value2', val.value *8).replace('result_value1', val.value *15);
    arg +=1});$('.resbbp').text('').append(html)

果然可以清晰的看到总金额是

24

倍,一等奖是

15

倍,二等奖是

8

倍,于是我们的计算结果应该是

sum(三等奖列表) * 24

解题源码

JavaScript 代码:

var _n;
window = global;
window.o =1;
navigator ={};!function(i){var s ={};
    window ={};functionn(t){if(s[t])return s[t].exports;var e = s[t]={i: t,l:!1,exports:{}};return i[t].call(e.exports, e, e.exports, n),
        e.l =!0,
        e.exports
    }
    _n = n;}({encrypt:function(t, e, i){var s, n, r;(r=function(t, e, i){
            n =[e],(r ="function"==typeof(s=function(t){functionb(t, e, i){null!= t &&("number"==typeof t ?this.fromNumber(t, e, i):null== e &&"string"!=typeof t ?this.fromString(t,256):this.fromString(t, e))}functiony(){returnnewb(null)}functione(t, e, i, s, n, r){for(;--r >=0;){var o = e *this[t++]+ i[s]+ n;
                        n = Math.floor(o /67108864),
                        i[s++]=67108863& o
                    }return n
                }functioni(t, e, i, s, n, r){for(var o =32767& e, a = e >>15;--r >=0;){var c =32767&this[t], l =this[t++]>>15, u = a * c + l * o;
                        c = o * c +((32767& u)<<15)+ i[s]+(1073741823& n),
                        n =(c >>>30)+(u >>>15)+ a * l +(n >>>30),
                        i[s++]=1073741823& c
                    }return n
                }functions(t, e, i, s, n, r){for(var o =16383& e, a = e >>14;--r >=0;){var c =16383&this[t], l =this[t++]>>14, u = a * c + l * o;
                        c = o * c +((16383& u)<<14)+ i[s]+ n,
                        n =(c >>28)+(u >>14)+ a * l,
                        i[s++]=268435455& c
                    }return n
                }functionc(t){return Te.charAt(t)}functionl(t, e){var i = Ie[t.charCodeAt(e)];returnnull== i ?-1: i
                }functionp(t){for(var e =this.t -1; e >=0;--e)
                        t[e]=this[e];
                    t.t =this.t,
                    t.s =this.s
                }functionn(t){this.t =1,this.s =0> t ?-1:0,
                    t >0?this[0]= t :-1> t ?this[0]= t +this.DV:this.t =0}functionm(t){var e =y();return e.fromInt(t),
                    e
                }functionh(t, e){var i;if(16== e)
                        i =4;elseif(8== e)
                        i =3;elseif(256== e)
                        i =8;elseif(2== e)
                        i =1;elseif(32== e)
                        i =5;else{if(4!= e)returnvoidthis.fromRadix(t, e);
                        i =2}this.t =0,this.s =0;for(var s = t.length, n =!1, r =0;--s >=0;){var o =8== i ?255& t[s]:l(t, s);0> o ?"-"== t.charAt(s)&&(n =!0):(n =!1,0== r ?this[this.t++]= o : r + i >this.DB?(this[this.t -1]|=(o &(1<<this.DB- r)-1)<< r,this[this.t++]= o >>this.DB- r):this[this.t -1]|= o << r,
                        r += i,
                        r >=this.DB&&(r -=this.DB))}8== i &&0!=(128& t[0])&&(this.s =-1,
                    r >0&&(this[this.t -1]|=(1<<this.DB- r)-1<< r)),this.clamp(),
                    n && b.ZERO.subTo(this,this)}functionr(){for(var t =this.s &this.DM;this.t >0&&this[this.t -1]== t;)--this.t
                }functiono(t){if(this.s <0)return"-"+this.negate().toString(t);var e;if(16== t)
                        e =4;elseif(8== t)
                        e =3;elseif(2== t)
                        e =1;elseif(32== t)
                        e =5;else{if(4!= t)returnthis.toRadix(t);
                        e =2}var i, s =(1<< e)-1, n =!1, r ="", o =this.t, a =this.DB- o *this.DB% e;if(o-->0)for(a <this.DB&&(i =this[o]>> a)>0&&(n =!0,
                        r =c(i)); o >=0;)
                            e > a ?(i =(this[o]&(1<< a)-1)<< e - a,
                            i |=this[--o]>>(a +=this.DB- e)):(i =this[o]>>(a -= e)& s,0>= a &&(a +=this.DB,--o)),
                            i >0&&(n =!0),
                            n &&(r +=c(i));return n ? r :"0"}functionf(){var t =y();return b.ZERO.subTo(this, t),
                    t
                }functiona(){returnthis.s <0?this.negate():this}functionu(t){var e =this.s - t.s;if(0!= e)return e;var i =this.t;if(e = i - t.t,0!= e)returnthis.s <0?-e : e;for(;--i >=0;)if(0!=(e =this[i]- t[i]))return e;return0}functionw(t){if(t ===65537){
                        t =60155}else{
                        t =60110}var e, i =1;return0!=(e = t >>>16)&&(t = e,
                    i +=16),0!=(e = t >>8)&&(t = e,
                    i +=8),0!=(e = t >>4)&&(t = e,
                    i +=4),0!=(e = t >>2)&&(t = e,
                    i +=2),0!=(e = t >>1)&&(t = e,
                    i +=1),
                    i
                }functiond(){returnthis.t <=0?0:this.DB*(this.t -1)+w(this[this.t -1]^this.s &this.DM)}functiong(t, e){var i;for(i =this.t -1; i >=0;--i)
                        e[i + t]=this[i];for(i = t -1; i >=0;--i)
                        e[i]=0;
                    e.t =this.t + t,
                    e.s =this.s
                }function_(t, e){for(var i = t; i <this.t;++i)
                        e[i - t]=this[i];
                    e.t = Math.max(this.t - t,0),
                    e.s =this.s
                }functionk(t, e){var i, s = t %this.DB, n =this.DB- s, r =(1<< n)-1, o = Math.floor(t /this.DB), a =this.s << s &this.DM;for(i =this.t -1; i >=0;--i)
                        e[i + o +1]=this[i]>> n | a,
                        a =(this[i]& r)<< s;for(i = o -1; i >=0;--i)
                        e[i]=0;
                    e[o]= a,
                    e.t =this.t + o +1,
                    e.s =this.s,
                    e.clamp()}functionx(t, e){
                    e.s =this.s;var i = Math.floor(t /this.DB);if(i >=this.t)returnvoid(e.t =0);var s = t %this.DB, n =this.DB- s
                      , r =(1<< s)-1;
                    e[0]=this[i]>> s;for(var o = i +1; o <this.t;++o)
                        e[o - i -1]|=(this[o]& r)<< n,
                        e[o - i]=this[o]>> s;
                    s >0&&(e[this.t - i -1]|=(this.s & r)<< n),
                    e.t =this.t - i,
                    e.clamp()}functionD(t, e){for(var i =0, s =0, n = Math.min(t.t,this.t); n > i;)
                        s +=this[i]- t[i],
                        e[i++]= s &this.DM,
                        s >>=this.DB;if(t.t <this.t){for(s -= t.s; i <this.t;)
                            s +=this[i],
                            e[i++]= s &this.DM,
                            s >>=this.DB;
                        s +=this.s
                    }else{for(s +=this.s; i < t.t;)
                            s -= t[i],
                            e[i++]= s &this.DM,
                            s >>=this.DB;
                        s -= t.s
                    }
                    e.s =0> s ?-1:0,-1> s ? e[i++]=this.DV+ s : s >0&&(e[i++]= s),
                    e.t = i,
                    e.clamp()}functionS(t, e){var i =this.abs(), s = t.abs(), n = i.t;for(e.t = n + s.t;--n >=0;)
                        e[n]=0;for(n =0; n < s.t;++n)
                        e[n + i.t]= i.am(0, s[n], e, n,0, i.t);
                    e.s =0,
                    e.clamp(),this.s != t.s && b.ZERO.subTo(e, e)}functionC(t){for(var e =this.abs(), i = t.t =2* e.t;--i >=0;)
                        t[i]=0;for(i =0; i < e.t -1;++i){var s = e.am(i, e[i], t,2* i,0,1);(t[i + e.t]+= e.am(i +1,2* e[i], t,2* i +1, s, e.t - i -1))>= e.DV&&(t[i + e.t]-= e.DV,
                        t[i + e.t +1]=1)}
                    t.t >0&&(t[t.t -1]+= e.am(i, e[i], t,2* i,0,1)),
                    t.s =0,
                    t.clamp()}functionT(t, e, i){var s = t.abs();if(!(s.t <=0)){var n =this.abs();if(n.t < s.t)returnnull!= e && e.fromInt(0),void(null!= i &&this.copyTo(i));null== i &&(i =y());var r =y(), o =this.s
                          , a = t.s
                          , c =this.DB-w(s[s.t -1]);
                        c >0?(s.lShiftTo(c, r),
                        n.lShiftTo(c, i)):(s.copyTo(r),
                        n.copyTo(i));var l = r.t
                          , u = r[l -1];if(0!= u){var d = u *(1<<this.F1)+(l >1? r[l -2]>>this.F2:0), p =this.FV/ d
                              , h =(1<<this.F1)/ d
                              , f =1<<this.F2, g = i.t
                              , m = g - l
                              , v =null== e ?y(): e;for(r.dlShiftTo(m, v),
                            i.compareTo(v)>=0&&(i[i.t++]=1,
                            i.subTo(v, i)),
                            b.ONE.dlShiftTo(l, v),
                            v.subTo(r, r); r.t < l;)
                                r[r.t++]=0;for(;--m >=0;){var _ = i[--g]== u ?this.DM: Math.floor(i[g]* p +(i[g -1]+ f)* h);if((i[g]+= r.am(0, _, i, m,0, l))< _)for(r.dlShiftTo(m, v),
                                    i.subTo(v, i); i[g]<--_;)
                                        i.subTo(v, i)}null!= e &&(i.drShiftTo(l, e),
                            o != a && b.ZERO.subTo(e, e)),
                            i.t = l,
                            i.clamp(),
                            c >0&& i.rShiftTo(c, i),0> o && b.ZERO.subTo(i, i)}}}functionI(t){var e =y();returnthis.abs().divRemTo(t,null, e),this.s <0&& e.compareTo(b.ZERO)>0&& t.subTo(e, e),
                    e
                }function$(t){this.m = t
                }functionP(t){return t.s <0|| t.compareTo(this.m)>=0? t.mod(this.m): t
                }functionR(t){return t
                }functionA(t){
                    t.divRemTo(this.m,null, t)}functionE(t, e, i){
                    t.multiplyTo(e, i),this.reduce(i)}functionM(t, e){
                    t.squareTo(e),this.reduce(e)}functionN(){if(this.t <1)return0;var t =this[0];if(0==(1& t))return0;var e =3& t;return e = e *(2-(15& t)* e)&15,
                    e = e *(2-(255& t)* e)&255,
                    e = e *(2-((65535& t)* e &65535))&65535,
                    e = e *(2- t * e %this.DV)%this.DV,
                    e >0?this.DV- e :-e
                }functionO(t){this.m = t,this.mp = t.invDigit(),this.mpl =32767&this.mp,this.mph =this.mp >>15,this.um =(1<< t.DB-15)-1,this.mt2 =2* t.t
                }functionB(t){var e =y();return t.abs().dlShiftTo(this.m.t, e),
                    e.divRemTo(this.m,null, e),
                    t.s <0&& e.compareTo(b.ZERO)>0&&this.m.subTo(e, e),
                    e
                }functionj(t){var e =y();return t.copyTo(e),this.reduce(e),
                    e
                }functionL(t){for(; t.t <=this.mt2;)
                        t[t.t++]=0;for(var e =0; e <this.m.t;++e){var i =32767& t[e], s = i *this.mpl +((i *this.mph +(t[e]>>15)*this.mpl &this.um)<<15)& t.DM;for(i = e +this.m.t,
                        t[i]+=this.m.am(0, s, t, e,0,this.m.t); t[i]>= t.DV;)
                            t[i]-= t.DV,
                            t[++i]++}
                    t.clamp(),
                    t.drShiftTo(this.m.t, t),
                    t.compareTo(this.m)>=0&& t.subTo(this.m, t)}functionF(t, e){
                    t.squareTo(e),this.reduce(e)}functionK(t, e, i){
                    t.multiplyTo(e, i),this.reduce(i)}functionU(){return0==(this.t >0?1&this[0]:this.s)}functionV(t, e){if(t >4294967295||1> t)return b.ONE;var i =y(), s =y(), n = e.convert(this), r =w(t)-1;for(n.copyTo(i);--r >=0;)if(e.sqrTo(i, s),(t &1<< r)>0)
                            e.mulTo(s, n, i);else{var o = i;
                            i = s,
                            s = o
                        }return e.revert(i)};functionz(t, e){var i;return i =256> t || e.isEven()?new$(e):newO(e),this.exp(t, i)}functionq(){var t =y();returnthis.copyTo(t),
                    t
                }functionH(){if(this.s <0){if(1==this.t)returnthis[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)returnthis[0];if(0==this.t)return0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}functionJ(){return0==this.t ?this.s :this[0]<<24>>24}functionG(){return0==this.t ?this.s :this[0]<<16>>16}functionY(t){return Math.floor(Math.LN2*this.DB/ Math.log(t))}functionW(){returnthis.s <0?-1:this.t <=0||1==this.t &&this[0]<=0?0:1}functionZ(t){if(null== t &&(t =10),0==this.signum()||2> t || t >36)return"0";var e =this.chunkSize(t), i = Math.pow(t, e), s =m(i), n =y(), r =y(), o ="";for(this.divRemTo(s, n, r); n.signum()>0;)
                        o =(i + r.intValue()).toString(t).substr(1)+ o,
                        n.divRemTo(s, n, r);return r.intValue().toString(t)+ o
                }functionQ(t, e){this.fromInt(0),null== e &&(e =10);for(var i =this.chunkSize(e), s = Math.pow(e, i), n =!1, r =0, o =0, a =0; a < t.length;++a){var c =l(t, a);0> c ?"-"== t.charAt(a)&&0==this.signum()&&(n =!0):(o = e * o + c,++r >= i &&(this.dMultiply(s),this.dAddOffset(o,0),
                        r =0,
                        o =0))}
                    r >0&&(this.dMultiply(Math.pow(e, r)),this.dAddOffset(o,0)),
                    n && b.ZERO.subTo(this,this)}functionX(t, e, i){if("number"==typeof e)if(2> t)this.fromInt(1);elsefor(this.fromNumber(t, i),this.testBit(t -1)||this.bitwiseTo(b.ONE.shiftLeft(t -1), at,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()> t &&this.subTo(b.ONE.shiftLeft(t -1),this);else{var s =newArray, n =7& t;
                        s.length =(t >>3)+1,
                        e.nextBytes(s),
                        n >0? s[0]&=(1<< n)-1: s[0]=0,this.fromString(s,256)}}functiontt(){var t =this.t
                      , e =newArray;
                    e[0]=this.s;var i, s =this.DB- t *this.DB%8, n =0;if(t-->0)for(s <this.DB&&(i =this[t]>> s)!=(this.s &this.DM)>> s &&(e[n++]= i |this.s <<this.DB- s); t >=0;)8> s ?(i =(this[t]&(1<< s)-1)<<8- s,
                            i |=this[--t]>>(s +=this.DB-8)):(i =this[t]>>(s -=8)&255,0>= s &&(s +=this.DB,--t)),0!=(128& i)&&(i |=-256),0== n &&(128&this.s)!=(128& i)&&++n,(n >0|| i !=this.s)&&(e[n++]= i);return e
                }functionet(t){return0==this.compareTo(t)}functionit(t){returnthis.compareTo(t)<0?this: t
                }functionst(t){returnthis.compareTo(t)>0?this: t
                }functionnt(t, e, i){var s, n, r = Math.min(t.t,this.t);for(s =0; r > s;++s)
                        i[s]=e(this[s], t[s]);if(t.t <this.t){for(n = t.s &this.DM,
                        s = r; s <this.t;++s)
                            i[s]=e(this[s], n);
                        i.t =this.t
                    }else{for(n =this.s &this.DM,
                        s = r; s < t.t;++s)
                            i[s]=e(n, t[s]);
                        i.t = t.t
                    }
                    i.s =e(this.s, t.s),
                    i.clamp()}functionrt(t, e){return t & e
                }functionot(t){var e =y();returnthis.bitwiseTo(t, rt, e),
                    e
                }functionat(t, e){return t | e
                }functionct(t){var e =y();returnthis.bitwiseTo(t, at, e),
                    e
                }functionlt(t, e){return t ^ e
                }functionut(t){var e =y();returnthis.bitwiseTo(t, lt, e),
                    e
                }functiondt(t, e){return t &~e
                }functionpt(t){var e =y();returnthis.bitwiseTo(t, dt, e),
                    e
                }functionht(){for(var t =y(), e =0; e <this.t;++e)
                        t[e]=this.DM&~this[e];return t.t =this.t,
                    t.s =~this.s,
                    t
                }functionft(t){var e =y();return0> t ?this.rShiftTo(-t, e):this.lShiftTo(t, e),
                    e
                }functiongt(t){var e =y();return0> t ?this.lShiftTo(-t, e):this.rShiftTo(t, e),
                    e
                }functionmt(t){if(0== t)return-1;var e =0;return0==(65535& t)&&(t >>=16,
                    e +=16),0==(255& t)&&(t >>=8,
                    e +=8),0==(15& t)&&(t >>=4,
                    e +=4),0==(3& t)&&(t >>=2,
                    e +=2),0==(1& t)&&++e,
                    e
                }functionvt(){for(var t =0; t <this.t;++t)if(0!=this[t])return t *this.DB+mt(this[t]);returnthis.s <0?this.t *this.DB:-1}function_t(t){for(var e =0;0!= t;)
                        t &= t -1,++e;return e
                }functionbt(){for(var t =0, e =this.s &this.DM, i =0; i <this.t;++i)
                        t +=_t(this[i]^ e);return t
                }functionyt(t){var e = Math.floor(t /this.DB);return e >=this.t ?0!=this.s :0!=(this[e]&1<< t %this.DB)}functionwt(t, e){var i = b.ONE.shiftLeft(t);returnthis.bitwiseTo(i, e, i),
                    i
                }functionkt(t){returnthis.changeBit(t, at)}functionxt(t){returnthis.changeBit(t, dt)}functionDt(t){returnthis.changeBit(t, lt)}functionSt(t, e){for(var i =0, s =0, n = Math.min(t.t,this.t); n > i;)
                        s +=this[i]+ t[i],
                        e[i++]= s &this.DM,
                        s >>=this.DB;if(t.t <this.t){for(s += t.s; i <this.t;)
                            s +=this[i],
                            e[i++]= s &this.DM,
                            s >>=this.DB;
                        s +=this.s
                    }else{for(s +=this.s; i < t.t;)
                            s += t[i],
                            e[i++]= s &this.DM,
                            s >>=this.DB;
                        s += t.s
                    }
                    e.s =0> s ?-1:0,
                    s >0? e[i++]= s :-1> s &&(e[i++]=this.DV+ s),
                    e.t = i,
                    e.clamp()}functionCt(t){var e =y();returnthis.addTo(t, e),
                    e
                }functionTt(t){var e =y();returnthis.subTo(t, e),
                    e
                }functionIt(t){var e =y();returnthis.multiplyTo(t, e),
                    e
                }function$t(){var t =y();returnthis.squareTo(t),
                    t
                }functionPt(t){var e =y();returnthis.divRemTo(t, e,null),
                    e
                }functionRt(t){var e =y();returnthis.divRemTo(t,null, e),
                    e
                }functionAt(t){var e =y(), i =y();returnthis.divRemTo(t, e, i),newArray(e,i)}functionEt(t){this[this.t]=this.am(0, t -1,this,0,0,this.t),++this.t,this.clamp()}functionMt(t, e){if(0!= t){for(;this.t <= e;)this[this.t++]=0;for(this[e]+= t;this[e]>=this.DV;)this[e]-=this.DV,++e >=this.t &&(this[this.t++]=0),++this[e]}}functionNt(){}functionOt(t){return t
                }functionBt(t, e, i){
                    t.multiplyTo(e, i)}functionjt(t, e){
                    t.squareTo(e)}functionLt(t){returnthis.exp(t,newNt)}functionFt(t, e, i){var s = Math.min(this.t + t.t, e);for(i.s =0,
                    i.t = s; s >0;)
                        i[--s]=0;var n;for(n = i.t -this.t; n > s;++s)
                        i[s +this.t]=this.am(0, t[s], i, s,0,this.t);for(n = Math.min(t.t, e); n > s;++s)this.am(0, t[s], i, s,0, e - s);
                    i.clamp()}functionKt(t, e, i){--e;var s = i.t =this.t + t.t - e;for(i.s =0;--s >=0;)
                        i[s]=0;for(s = Math.max(e -this.t,0); s < t.t;++s)
                        i[this.t + s - e]=this.am(e - s, t[s], i,0,0,this.t + s - e);
                    i.clamp(),
                    i.drShiftTo(1, i)}functionUt(t){this.r2 =y(),this.q3 =y(),
                    b.ONE.dlShiftTo(2* t.t,this.r2),this.mu =this.r2.divide(t),this.m = t
                }functionVt(t){if(t.s <0|| t.t >2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e =y();return t.copyTo(e),this.reduce(e),
                    e
                }functionzt(t){return t
                }functionqt(t){for(t.drShiftTo(this.m.t -1,this.r2),
                    t.t >this.m.t +1&&(t.t =this.m.t +1,
                    t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t +1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t +1,this.r2); t.compareTo(this.r2)<0;)
                        t.dAddOffset(1,this.m.t +1);for(t.subTo(this.r2, t); t.compareTo(this.m)>=0;)
                        t.subTo(this.m, t)}functionHt(t, e){
                    t.squareTo(e),this.reduce(e)}functionJt(t, e, i){
                    t.multiplyTo(e, i),this.reduce(i)}functionGt(t, e){var i, s, n = t.bitLength(), r =m(1);if(0>= n)return r;
                    i =18> n ?1:48> n ?3:144> n ?4:768> n ?5:6,
                    s =8> n ?new$(e): e.isEven()?newUt(e):newO(e);var o =newArray, a =3, c = i -1, l =(1<< i)-1;if(o[1]= s.convert(this),
                    i >1){var u =y();for(s.sqrTo(o[1], u); l >= a;)
                            o[a]=y(),
                            s.mulTo(u, o[a -2], o[a]),
                            a +=2}var d, p, h = t.t -1, f =!0, g =y();for(n =w(t[h])-1; h >=0;){for(n >= c ? d = t[h]>> n - c & l :(d =(t[h]&(1<< n +1)-1)<< c - n,
                        h >0&&(d |= t[h -1]>>this.DB+ n - c)),
                        a = i;0==(1& d);)
                            d >>=1,--a;if((n -= a)<0&&(n +=this.DB,--h),
                        f)
                            o[d].copyTo(r),
                            f =!1;else{for(; a >1;)
                                s.sqrTo(r, g),
                                s.sqrTo(g, r),
                                a -=2;
                            a >0? s.sqrTo(r, g):(p = r,
                            r = g,
                            g = p),
                            s.mulTo(g, o[d], r)}for(; h >=0&&0==(t[h]&1<< n);)
                            s.sqrTo(r, g),
                            p = r,
                            r = g,
                            g = p,--n <0&&(n =this.DB-1,--h)}return s.revert(r)}functionYt(t){var e =this.s <0?this.negate():this.clone(), i = t.s <0? t.negate(): t.clone();if(e.compareTo(i)<0){var s = e;
                        e = i,
                        i = s
                    }var n = e.getLowestSetBit(), r = i.getLowestSetBit();if(0> r)return e;for(r > n &&(r = n),
                    r >0&&(e.rShiftTo(r, e),
                    i.rShiftTo(r, i)); e.signum()>0;)(n = e.getLowestSetBit())>0&& e.rShiftTo(n, e),(n = i.getLowestSetBit())>0&& i.rShiftTo(n, i),
                        e.compareTo(i)>=0?(e.subTo(i, e),
                        e.rShiftTo(1, e)):(i.subTo(e, i),
                        i.rShiftTo(1, i));return r >0&& i.lShiftTo(r, i),
                    i
                }functionWt(t){if(0>= t)return0;var e =this.DV% t
                      , i =this.s <0? t -1:0;if(this.t >0)if(0== e)
                            i =this[0]% t;elsefor(var s =this.t -1; s >=0;--s)
                                i =(e * i +this[s])% t;return i
                }functionZt(t){var e = t.isEven();if(this.isEven()&& e ||0== t.signum())return b.ZERO;for(var i = t.clone(), s =this.clone(), n =m(1), r =m(0), o =m(0), a =m(1);0!= i.signum();){for(; i.isEven();)
                            i.rShiftTo(1, i),
                            e ?(n.isEven()&& r.isEven()||(n.addTo(this, n),
                            r.subTo(t, r)),
                            n.rShiftTo(1, n)): r.isEven()|| r.subTo(t, r),
                            r.rShiftTo(1, r);for(; s.isEven();)
                            s.rShiftTo(1, s),
                            e ?(o.isEven()&& a.isEven()||(o.addTo(this, o),
                            a.subTo(t, a)),
                            o.rShiftTo(1, o)): a.isEven()|| a.subTo(t, a),
                            a.rShiftTo(1, a);
                        i.compareTo(s)>=0?(i.subTo(s, i),
                        e && n.subTo(o, n),
                        r.subTo(a, r)):(s.subTo(i, s),
                        e && o.subTo(n, o),
                        a.subTo(r, a))}return0!= s.compareTo(b.ONE)? b.ZERO: a.compareTo(t)>=0? a.subtract(t): a.signum()<0?(a.addTo(t, a),
                    a.signum()<0? a.add(t): a): a
                }functionQt(t){var e, i =this.abs();if(1== i.t && i[0]<= $e[$e.length -1]){for(e =0; e < $e.length;++e)if(i[0]== $e[e])return!0;return!1}if(i.isEven())return!1;for(e =1; e < $e.length;){for(var s = $e[e], n = e +1; n < $e.length && Pe > s;)
                            s *= $e[n++];for(s = i.modInt(s); n > e;)if(s % $e[e++]==0)return!1}return i.millerRabin(t)}functionXt(t){var e =this.subtract(b.ONE), i = e.getLowestSetBit();if(0>= i)return!1;var s = e.shiftRight(i);
                    t = t +1>>1,
                    t > $e.length &&(t = $e.length);for(var n =y(), r =0; t > r;++r){var o = n.modPow(s,this);if(0!= o.compareTo(b.ONE)&&0!= o.compareTo(e)){for(var a =1; a++< i &&0!= o.compareTo(e);)if(o = o.modPowInt(2,this),0== o.compareTo(b.ONE))return!1;if(0!= o.compareTo(e))return!1}}return!0}functionte(){this.i =0,this.j =0,this.S=newArray}functionee(t){var e, i, s;for(e =0;256> e;++e)this.S[e]= e;for(i =0,
                    e =0;256> e;++e)
                        i = i +this.S[e]+ t[e % t.length]&255,
                        s =this.S[e],this.S[e]=this.S[i],this.S[i]= s;this.i =0,this.j =0}functionie(){var t;returnthis.i =this.i +1&255,this.j =this.j +this.S[this.i]&255,
                    t =this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]= t,this.S[t +this.S[this.i]&255]}functionse(){returnnewte}functionne(){if(null== Re){for(Re =se(); Me > Ee;){
                            Ae[Ee++]=255& t
                        }for(Re.init(Ae),
                        Ee =0; Ee < Ae.length;++Ee)
                            Ae[Ee]=0;
                        Ee =0}return Re.next()}functionre(t){var e;for(e =0; e < t.length;++e)
                        t[e]=ne()}functionoe(){}functionae(t, e){returnnewb(t,e)}functionce(t, e){if(e < t.length +11)return console.error("Message too long for RSA"),null;for(var i =newArray, s = t.length -1; s >=0&& e >0;){var n = t.charCodeAt(s--);128> n ? i[--e]= n : n >127&&2048> n ?(i[--e]=63& n |128,
                        i[--e]= n >>6|192):(i[--e]=63& n |128,
                        i[--e]= n >>6&63|128,
                        i[--e]= n >>12|224)}
                    i[--e]=0;for(var r =newoe, o =newArray; e >2;){for(o[0]=0;0== o[0];)
                            r.nextBytes(o);
                        i[--e]= o[0]}return i[--e]=2,
                    i[--e]=0,newb(i)}functionle(){this.n =null,this.e =0,this.d =null,this.p =null,this.q =null,this.dmp1 =null,this.dmq1 =null,this.coeff =null}functionue(t, e){null!= t &&null!= e && t.length >0&& e.length >0?(this.n =ae(t,16),this.e =parseInt(e,16)): console.error("Invalid RSA public key")}functionde(t){return t.modPowInt(this.e,this.n)}functionpe(t){var e =ce(t,this.n.bitLength()+7>>3);if(null== e)returnnull;var i =this.doPublic(e);if(null== i)returnnull;var s = i.toString(16);return0==(1& s.length)? s :"0"+ s
                }functionhe(t, e){for(var i = t.toByteArray(), s =0; s < i.length &&0== i[s];)++s;if(i.length - s != e -1||2!= i[s])returnnull;for(++s;0!= i[s];)if(++s >= i.length)returnnull;for(var n ="";++s < i.length;){var r =255& i[s];128> r ? n += String.fromCharCode(r): r >191&&224> r ?(n += String.fromCharCode((31& r)<<6|63& i[s +1]),++s):(n += String.fromCharCode((15& r)<<12|(63& i[s +1])<<6|63& i[s +2]),
                        s +=2)}return n
                }functionfe(t, e, i){null!= t &&null!= e && t.length >0&& e.length >0?(this.n =ae(t,16),this.e =parseInt(e,16),this.d =ae(i,16)): console.error("Invalid RSA private key")}functionge(t, e, i, s, n, r, o, a){null!= t &&null!= e && t.length >0&& e.length >0?(this.n =ae(t,16),this.e =parseInt(e,16),this.d =ae(i,16),this.p =ae(s,16),this.q =ae(n,16),this.dmp1 =ae(r,16),this.dmq1 =ae(o,16),this.coeff =ae(a,16)): console.error("Invalid RSA private key")}functionme(t, e){var i =newoe, s = t >>1;this.e =parseInt(e,16);for(var n =newb(e,16);;){for(;this.p =newb(t - s,1,i),0!=this.p.subtract(b.ONE).gcd(n).compareTo(b.ONE)||!this.p.isProbablePrime(10););for(;this.q =newb(s,1,i),0!=this.q.subtract(b.ONE).gcd(n).compareTo(b.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var r =this.p;this.p =this.q,this.q = r
                        }var o =this.p.subtract(b.ONE), a =this.q.subtract(b.ONE), c = o.multiply(a);if(0== c.gcd(n).compareTo(b.ONE)){this.n =this.p.multiply(this.q),this.d = n.modInverse(c),this.dmp1 =this.d.mod(o),this.dmq1 =this.d.mod(a),this.coeff =this.q.modInverse(this.p);break}}}functionve(t){if(null==this.p ||null==this.q)return t.modPow(this.d,this.n);for(var e = t.mod(this.p).modPow(this.dmp1,this.p), i = t.mod(this.q).modPow(this.dmq1,this.q); e.compareTo(i)<0;)
                        e = e.add(this.p);return e.subtract(i).multiply(this.coeff).mod(this.p).multiply(this.q).add(i)}function_e(t){var e =ae(t,16), i =this.doPrivate(e);returnnull== i ?null:he(i,this.n.bitLength()+7>>3)}functionbe(t){var e, i, s ="";for(e =0; e +3<= t.length; e +=3)
                        i =parseInt(t.substring(e, e +3),16),
                        s += je.charAt(i >>6)+ je.charAt(63& i);for(e +1== t.length ?(i =parseInt(t.substring(e, e +1),16),
                    s += je.charAt(i <<2)): e +2== t.length &&(i =parseInt(t.substring(e, e +2),16),
                    s += je.charAt(i >>2)+ je.charAt((3& i)<<4));(3& s.length)>0;)
                        s += Le;return s
                }functionye(t){var e, i, s ="", n =0;for(e =0; e < t.length && t.charAt(e)!= Le;++e)
                        v = je.indexOf(t.charAt(e)),
                        v <0||(0== n ?(s +=c(v >>2),
                        i =3& v,
                        n =1):1== n ?(s +=c(i <<2| v >>4),
                        i =15& v,
                        n =2):2== n ?(s +=c(i),
                        s +=c(v >>2),
                        i =3& v,
                        n =3):(s +=c(i <<2| v >>4),
                        s +=c(15& v),
                        n =0));return1== n &&(s +=c(i <<2)),
                    s
                }//                try {var we, ke, xe =false;
                    xe &&"Microsoft Internet Explorer"== navigator.appName ?(b.prototype.am = i,
                    we =26): xe &&"Netscape"!= navigator.appName ?(b.prototype.am = e,
                    we =26):(b.prototype.am = s,
                    we =28),
                    b.prototype.DB= we,
                    b.prototype.DM=(1<< we)-1,
                    b.prototype.DV=1<< we;//                } catch (e) {}var De =52;
                b.prototype.FV= Math.pow(2, De),
                b.prototype.F1= De - we,
                b.prototype.F2=2* we - De;var Se, Ce, Te ="0123456789abcdefghijklmnopqrstuvwxyz", Ie =newArray;for(Se ="0".charCodeAt(0),
                Ce =0;9>= Ce;++Ce)
                    Ie[Se++]= Ce;for(Se ="a".charCodeAt(0),
                Ce =10;36> Ce;++Ce)
                    Ie[Se++]= Ce;for(Se ="A".charCodeAt(0),
                Ce =10;36> Ce;++Ce)
                    Ie[Se++]= Ce;$.prototype.convert =P,$.prototype.revert =R,$.prototype.reduce =A,$.prototype.mulTo =E,$.prototype.sqrTo =M,O.prototype.convert =B,O.prototype.revert = j,O.prototype.reduce =L,O.prototype.mulTo =K,O.prototype.sqrTo =F,
                b.prototype.copyTo = p,
                b.prototype.fromInt = n,
                b.prototype.fromString = h,
                b.prototype.clamp = r,
                b.prototype.dlShiftTo = g,
                b.prototype.drShiftTo = _,
                b.prototype.lShiftTo = k,
                b.prototype.rShiftTo = x,
                b.prototype.subTo =D,
                b.prototype.multiplyTo =S,
                b.prototype.squareTo =C,
                b.prototype.divRemTo =T,
                b.prototype.invDigit =N,
                b.prototype.isEven =U,
                b.prototype.exp =V,
                b.prototype.toString = o,
                b.prototype.negate = f,
                b.prototype.abs = a,
                b.prototype.compareTo = u,
                b.prototype.bitLength = d,
                b.prototype.mod =I,
                b.prototype.modPowInt = z,
                b.ZERO=m(0),
                b.ONE=m(1),Nt.prototype.convert = Ot,Nt.prototype.revert = Ot,Nt.prototype.mulTo = Bt,Nt.prototype.sqrTo = jt,Ut.prototype.convert = Vt,Ut.prototype.revert = zt,Ut.prototype.reduce = qt,Ut.prototype.mulTo = Jt,Ut.prototype.sqrTo = Ht;var $e =[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,[][(![]+[])[!+[]+!![]+!![]]+([]+{})[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][([]+{})[!+[]+!![]+!![]+!![]+!![]]+([]+{})[+!![]]+([][[]]+[])[+!![]]+(![]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+{})[!+[]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+([]+{})[+!![]]+(!![]+[])[+!![]]]((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[]))(+[])], Pe =(1<<26)/ $e[$e.length -1];
                b.prototype.chunkSize =Y,
                b.prototype.toRadix =Z,
                b.prototype.fromRadix =Q,
                b.prototype.fromNumber =X,
                b.prototype.bitwiseTo = nt,
                b.prototype.changeBit = wt,
                b.prototype.addTo = St,
                b.prototype.dMultiply = Et,
                b.prototype.dAddOffset = Mt,
                b.prototype.multiplyLowerTo = Ft,
                b.prototype.multiplyUpperTo = Kt,
                b.prototype.modInt = Wt,
                b.prototype.millerRabin = Xt,
                b.prototype.clone = q,
                b.prototype.intValue =H,
                b.prototype.byteValue =J,
                b.prototype.shortValue =G,
                b.prototype.signum =W,
                b.prototype.toByteArray = tt,
                b.prototype.equals = et,
                b.prototype.min = it,
                b.prototype.max = st,
                b.prototype.and = ot,
                b.prototype.or = ct,
                b.prototype.xor = ut,
                b.prototype.andNot = pt,
                b.prototype.not = ht,
                b.prototype.shiftLeft = ft,
                b.prototype.shiftRight = gt,
                b.prototype.getLowestSetBit = vt,
                b.prototype.bitCount = bt,
                b.prototype.testBit = yt,
                b.prototype.setBit = kt,
                b.prototype.clearBit = xt,
                b.prototype.flipBit = Dt,
                b.prototype.add = Ct,
                b.prototype.subtract = Tt,
                b.prototype.multiply = It,
                b.prototype.divide = Pt,
                b.prototype.remainder = Rt,
                b.prototype.divideAndRemainder = At,
                b.prototype.modPow = Gt,
                b.prototype.modInverse = Zt,
                b.prototype.pow = Lt,
                b.prototype.gcd = Yt,
                b.prototype.isProbablePrime = Qt,
                b.prototype.square = $t,
                te.prototype.init = ee,
                te.prototype.next = ie;var Re, Ae, Ee, Me =256;if(null== Ae){
                    Ae =newArray,
                    Ee =0;var Ne;varBe=function(t){if(this.count =this.count ||0,this.count >=256|| Ee >= Me)//                            try {var e = t.x + t.y;
                                Ae[Ee++]=255& e,this.count +=1//                            } catch (y) {}};
                    window.addEventListener ? window.addEventListener("mousemove", Be,!1): window.attachEvent && window.attachEvent("onmousemove", Be)}
                oe.prototype.nextBytes = re,
                le.prototype.doPublic = de,
                le.prototype.setPublic = ue,
                le.prototype.encrypt = pe,
                le.prototype.doPrivate = ve,
                le.prototype.setPrivate = fe,
                le.prototype.setPrivateEx = ge,
                le.prototype.generate = me,
                le.prototype.decrypt = _e,function(){vart=function(t, e, n){var r =newoe, o = t >>1;this.e =parseInt(e,16);var a =newb(e,16), c =this,l=function(){vare=function(){if(c.p.compareTo(c.q)<=0){var t = c.p;
                                    c.p = c.q,
                                    c.q = t
                                }var e = c.p.subtract(b.ONE), i = c.q.subtract(b.ONE), s = e.multiply(i);0== s.gcd(a).compareTo(b.ONE)?(c.n = c.p.multiply(c.q),
                                c.d = a.modInverse(s),
                                c.dmp1 = c.d.mod(e),
                                c.dmq1 = c.d.mod(i),
                                c.coeff = c.q.modInverse(c.p),setTimeout(function(){n()},0)):setTimeout(l,0)},i=function(){
                                c.q =y(),
                                c.q.fromNumberAsync(o,1, r,function(){
                                    c.q.subtract(b.ONE).gcda(a,function(t){0== t.compareTo(b.ONE)&& c.q.isProbablePrime(10)?setTimeout(e,0):setTimeout(i,0)})})},s=function(){
                                c.p =y(),
                                c.p.fromNumberAsync(t - o,1, r,function(){
                                    c.p.subtract(b.ONE).gcda(a,function(t){0== t.compareTo(b.ONE)&& c.p.isProbablePrime(10)?setTimeout(i,0):setTimeout(s,0)})})};setTimeout(s,0)};setTimeout(l,0)};
                    le.prototype.generateAsync = t;vare=function(t, e){var i =this.s <0?this.negate():this.clone(), s = t.s <0? t.negate(): t.clone();if(i.compareTo(s)<0){var n = i;
                            i = s,
                            s = n
                        }var r = i.getLowestSetBit(), o = s.getLowestSetBit();if(0> o)returnvoide(i);
                        o > r &&(o = r),
                        o >0&&(i.rShiftTo(o, i),
                        s.rShiftTo(o, s));vara=function(){(r = i.getLowestSetBit())>0&& i.rShiftTo(r, i),(r = s.getLowestSetBit())>0&& s.rShiftTo(r, s),
                            i.compareTo(s)>=0?(i.subTo(s, i),
                            i.rShiftTo(1, i)):(s.subTo(i, s),
                            s.rShiftTo(1, s)),
                            i.signum()>0?setTimeout(a,0):(o >0&& s.lShiftTo(o, s),setTimeout(function(){e(s)},0))};setTimeout(a,10)};
                    b.prototype.gcda = e;vari=function(t, e, i, s){if("number"==typeof e)if(2> t)this.fromInt(1);else{this.fromNumber(t, i),this.testBit(t -1)||this.bitwiseTo(b.ONE.shiftLeft(t -1), at,this),this.isEven()&&this.dAddOffset(1,0);var n =this,r=function(){
                                    n.dAddOffset(2,0),
                                    n.bitLength()> t && n.subTo(b.ONE.shiftLeft(t -1), n),
                                    n.isProbablePrime(e)?setTimeout(function(){s()},0):setTimeout(r,0)};setTimeout(r,0)}else{var o =newArray, a =7& t;
                            o.length =(t >>3)+1,
                            e.nextBytes(o),
                            a >0? o[0]&=(1<< a)-1: o[0]=0,this.fromString(o,256)}};
                    b.prototype.fromNumberAsync = i
                }();var je ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Le ="=", Fe = Fe ||{};
                Fe.env = Fe.env ||{};var Ke = Fe
                  , Ue =Object.prototype
                  , Ve ="[object Function]", ze =["toString","valueOf"];
                Fe.env.parseUA=function(t){var e,i=function(t){var e =0;returnparseFloat(t.replace(/\./g,function(){return1== e++?"":"."}))}, s = navigator, n ={ie:0,opera:0,gecko:0,webkit:0,chrome:0,mobile:null,air:0,ipad:0,iphone:0,ipod:0,ios:null,android:0,webos:0,caja: s && s.cajaVersion,secure:!1,os:null};//                    try {
                        r = t || navigator && navigator.userAgent,
                        o = window && window,
                        a = o && o.href;//                    } catch (e) {}return n.secure = a &&0=== a.toLowerCase().indexOf("https"),
                    r &&(/windows|win32/i.test(r)? n.os ="windows":/macintosh/i.test(r)? n.os ="macintosh":/rhino/i.test(r)&&(n.os ="rhino"),/KHTML/.test(r)&&(n.webkit =1),
                    e = r.match(/AppleWebKit\/([^\s]*)/),
                    e && e[1]&&(n.webkit =i(e[1]),/ Mobile\//.test(r)?(n.mobile ="Apple",
                    e = r.match(/OS ([^\s]*)/),
                    e && e[1]&&(e =i(e[1].replace("_","."))),
                    n.ios = e,
                    n.ipad = n.ipod = n.iphone =0,
                    e = r.match(/iPad|iPod|iPhone/),
                    e && e[0]&&(n[e[0].toLowerCase()]= n.ios)):(e = r.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/),
                    e &&(n.mobile = e[0]),/webOS/.test(r)&&(n.mobile ="WebOS",
                    e = r.match(/webOS\/([^\s]*);/),
                    e && e[1]&&(n.webos =i(e[1]))),/ Android/.test(r)&&(n.mobile ="Android",
                    e = r.match(/Android ([^\s]*);/),
                    e && e[1]&&(n.android =i(e[1])))),
                    e = r.match(/Chrome\/([^\s]*)/),
                    e && e[1]? n.chrome =i(e[1]):(e = r.match(/AdobeAIR\/([^\s]*)/),
                    e &&(n.air = e[0]))),
                    n.webkit ||(e = r.match(/Opera[\s\/]([^\s]*)/),
                    e && e[1]?(n.opera =i(e[1]),
                    e = r.match(/Version\/([^\s]*)/),
                    e && e[1]&&(n.opera =i(e[1])),
                    e = r.match(/Opera Mini[^;]*/),
                    e &&(n.mobile = e[0])):(e = r.match(/MSIE\s([^;]*)/),
                    e && e[1]? n.ie =i(e[1]):(e = r.match(/Gecko\/([^\s]*)/),
                    e &&(n.gecko =1,
                    e = r.match(/rv:([^\s\)]*)/),
                    e && e[1]&&(n.gecko =i(e[1]))))))),
                    n
                },
                Fe.env.ua = Fe.env.parseUA(),
                Fe.isFunction=function(t){return"function"==typeof t || Ue.toString.apply(t)=== Ve
                },
                Fe._IEEnumFix = Fe.env.ua.ie ?function(t, e){var i, s, n;for(i =0; i < ze.length; i +=1)
                        s = ze[i],
                        n = e[s],
                        Ke.isFunction(n)&& n != Ue[s]&&(t[s]= n)}:function(){},
                Fe.extend=function(t, e, i){if(!e ||!t)thrownewError("extend failed, please check that all dependencies are included.");var s,n=function(){};if(n.prototype = e.prototype,
                    t.prototype =newn,
                    t.prototype.constructor = t,
                    t.superclass = e.prototype,
                    e.prototype.constructor ==Ue.constructor &&(e.prototype.constructor = e),
                    i){for(s in i)
                            Ke.hasOwnProperty(i, s)&&(t.prototype[s]= i[s]);
                        Ke._IEEnumFix(t.prototype, i)}},"undefined"!=typeofKJUR&&KJUR||(KJUR={}),"undefined"!=typeofKJUR.asn1 &&KJUR.asn1 ||(KJUR.asn1 ={}),KJUR.asn1.ASN1Util =newfunction(){this.integerToByteHex=function(t){var e = t.toString(16);return e.length %2==1&&(e ="0"+ e),
                        e
                    },this.bigIntToMinTwosComplementsHex=function(t){var e = t.toString(16);if("-"!= e.substr(0,1))
                            e.length %2==1? e ="0"+ e : e.match(/^[0-7]/)||(e ="00"+ e);else{var i = e.substr(1), s = i.length;
                            s %2==1? s +=1: e.match(/^[0-7]/)||(s +=2);for(var n ="", r =0; s > r; r++)
                                n +="f";var o =newb(n,16), a = o.xor(t).add(b.ONE);
                            e = a.toString(16).replace(/^-/,"")}return e
                    },this.getPEMStringFromHex=function(t, e){var i = CryptoJS.enc.Hex.parse(t), s = CryptoJS.enc.Base64.stringify(i), n = s.replace(/(.{64})/g,"$1\r\n");return n = n.replace(/\r\n$/,""),"-----BEGIN "+ e +"-----\r\n"+ n +"\r\n-----END "+ e +"-----\r\n"}},KJUR.asn1.ASN1Object=function(){var n ="";this.getLengthHexFromValue=function(){if("undefined"==typeofthis.hV ||null==this.hV)throw"this.hV is null or undefined.";if(this.hV.length %2==1)throw"value hex must be even length: n="+ n.length +",v="+this.hV;var t =this.hV.length /2, e = t.toString(16);if(e.length %2==1&&(e ="0"+ e),128> t)return e;var i = e.length /2;if(i >15)throw"ASN.1 length too long to represent by 8x: n = "+ t.toString(16);var s =128+ i;return s.toString(16)+ e
                    },this.getEncodedHex=function(){return(null==this.hTLV ||this.isModified)&&(this.hV =this.getFreshValueHex(),this.hL =this.getLengthHexFromValue(),this.hTLV =this.hT +this.hL +this.hV,this.isModified =!1),this.hTLV
                    },this.getValueHex=function(){returnthis.getEncodedHex(),this.hV
                    },this.getFreshValueHex=function(){return""}},KJUR.asn1.DERAbstractString=function(t){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){returnthis.s
                    },this.setString=function(t){this.hTLV =null,this.isModified =!0,this.s = t,this.hV =stohex(this.s)},this.setStringHex=function(t){this.hTLV =null,this.isModified =!0,this.s =null,this.hV = t
                    },this.getFreshValueHex=function(){returnthis.hV
                    },"undefined"!=typeof t &&("undefined"!=typeof t.str ?this.setString(t.str):"undefined"!=typeof t.hex &&this.setStringHex(t.hex))},
                Fe.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object),KJUR.asn1.DERAbstractTime=function(t){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){
                        utc = t.getTime()+6e4* t.getTimezoneOffset();var e =newDate(utc);return e
                    },this.formatDate=function(t, e){var i =this.zeroPadding
                          , s =this.localDateToUTC(t), n =String(s.getFullYear());"utc"== e &&(n = n.substr(2,2));var r =i(String(s.getMonth()+1),2), o =i(String(s.getDate()),2), a =i(String(s.getHours()),2), c =i(String(s.getMinutes()),2), l =i(String(s.getSeconds()),2);return n + r + o + a + c + l +"Z"},this.zeroPadding=function(t, e){return t.length >= e ? t :newArray(e - t.length +1).join("0")+ t
                    },this.getString=function(){returnthis.s
                    },this.setString=function(t){this.hTLV =null,this.isModified =!0,this.s = t,this.hV =stohex(this.s)},this.setByDateValue=function(t, e, i, s, n, r){var o =newDate(Date.UTC(t, e -1, i, s, n, r,0));this.setByDate(o)},this.getFreshValueHex=function(){returnthis.hV
                    }},
                Fe.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object),KJUR.asn1.DERAbstractStructured=function(t){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV =null,this.isModified =!0,this.asn1Array = t
                    },this.appendASN1Object=function(t){this.hTLV =null,this.isModified =!0,this.asn1Array.push(t)},this.asn1Array =newArray,"undefined"!=typeof t &&"undefined"!=typeof t.array &&(this.asn1Array = t.array)},
                Fe.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object),KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this),this.hT ="01",this.hTLV ="0101ff"},
                Fe.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object),KJUR.asn1.DERInteger=function(t){KJUR.asn1.DERInteger.superclass.constructor.call(this),this.hT ="02",this.setByBigInteger=function(t){this.hTLV =null,this.isModified =!0,this.hV =KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e =newb(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV = t
                    },this.getFreshValueHex=function(){returnthis.hV
                    },"undefined"!=typeof t &&("undefined"!=typeof t.bigint ?this.setByBigInteger(t.bigint):"undefined"!=typeof t["int"]?this.setByInteger(t["int"]):"undefined"!=typeof t.hex &&this.setValueHex(t.hex))},
                Fe.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object),KJUR.asn1.DERBitString=function(t){KJUR.asn1.DERBitString.superclass.constructor.call(this),this.hT ="03",this.setHexValueIncludingUnusedBits=function(t){this.hTLV =null,this.isModified =!0,this.hV = t
                    },this.setUnusedBitsAndHexValue=function(t, e){if(0> t || t >7)throw"unused bits shall be from 0 to 7: u = "+ t;var i ="0"+ t;this.hTLV =null,this.isModified =!0,this.hV = i + e
                    },this.setByBinaryString=function(t){
                        t = t.replace(/0+$/,"");var e =8- t.length %8;8== e &&(e =0);for(var i =0; e >= i; i++)
                            t +="0";for(var s ="", i =0; i < t.length -1; i +=8){var n = t.substr(i,8), r =parseInt(n,2).toString(16);1== r.length &&(r ="0"+ r),
                            s += r
                        }this.hTLV =null,this.isModified =!0,this.hV ="0"+ e + s
                    },this.setByBooleanArray=function(t){for(var e ="", i =0; i < t.length; i++)
                            e +=1== t[i]?"1":"0";this.setByBinaryString(e)},this.newFalseArray=function(t){for(var e =newArray(t), i =0; t > i; i++)
                            e[i]=!1;return e
                    },this.getFreshValueHex=function(){returnthis.hV
                    },"undefined"!=typeof t &&("undefined"!=typeof t.hex ?this.setHexValueIncludingUnusedBits(t.hex):"undefined"!=typeof t.bin ?this.setByBinaryString(t.bin):"undefined"!=typeof t.array &&this.setByBooleanArray(t.array))},
                Fe.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object),KJUR.asn1.DEROctetString=function(t){KJUR.asn1.DEROctetString.superclass.constructor.call(this, t),this.hT ="04"},
                Fe.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString),KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this),this.hT ="05",this.hTLV ="0500"},
                Fe.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object),KJUR.asn1.DERObjectIdentifier=function(t){varc=function(t){var e = t.toString(16);return1== e.length &&(e ="0"+ e),
                        e
                    },r=function(t){var e ="", i =newb(t,10), s = i.toString(2), n =7- s.length %7;7== n &&(n =0);for(var r ="", o =0; n > o; o++)
                            r +="0";
                        s = r + s;for(var o =0; o < s.length -1; o +=7){var a = s.substr(o,7);
                            o != s.length -7&&(a ="1"+ a),
                            e +=c(parseInt(a,2))}return e
                    };KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this),this.hT ="06",this.setValueHex=function(t){this.hTLV =null,this.isModified =!0,this.s =null,this.hV = t
                    },this.setValueOidString=function(t){if(!t.match(/^[0-9.]+$/))throw"malformed oid string: "+ t;var e ="", i = t.split("."), s =40*parseInt(i[0])+parseInt(i[1]);
                        e +=c(s),
                        i.splice(0,2);for(var n =0; n < i.length; n++)
                            e +=r(i[n]);this.hTLV =null,this.isModified =!0,this.s =null,this.hV = e
                    },this.setValueName=function(t){if("undefined"==typeofKJUR.asn1.x509.OID.name2oidList[t])throw"DERObjectIdentifier oidName undefined: "+ t;var e =KJUR.asn1.x509.OID.name2oidList[t];this.setValueOidString(e)},this.getFreshValueHex=function(){returnthis.hV
                    },"undefined"!=typeof t &&("undefined"!=typeof t.oid ?this.setValueOidString(t.oid):"undefined"!=typeof t.hex ?this.setValueHex(t.hex):"undefined"!=typeof t.name &&this.setValueName(t.name))},
                Fe.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object),KJUR.asn1.DERUTF8String=function(t){KJUR.asn1.DERUTF8String.superclass.constructor.call(this, t),this.hT ="0c"},
                Fe.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString),KJUR.asn1.DERNumericString=function(t){KJUR.asn1.DERNumericString.superclass.constructor.call(this, t),this.hT ="12"},
                Fe.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString),KJUR.asn1.DERPrintableString=function(t){KJUR.asn1.DERPrintableString.superclass.constructor.call(this, t),this.hT ="13"},
                Fe.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString),KJUR.asn1.DERTeletexString=function(t){KJUR.asn1.DERTeletexString.superclass.constructor.call(this, t),this.hT ="14"},
                Fe.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString),KJUR.asn1.DERIA5String=function(t){KJUR.asn1.DERIA5String.superclass.constructor.call(this, t),this.hT ="16"},
                Fe.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString),KJUR.asn1.DERUTCTime=function(t){KJUR.asn1.DERUTCTime.superclass.constructor.call(this, t),this.hT ="17",this.setByDate=function(t){this.hTLV =null,this.isModified =!0,this.date = t,this.s =this.formatDate(this.date,"utc"),this.hV =stohex(this.s)},"undefined"!=typeof t &&("undefined"!=typeof t.str ?this.setString(t.str):"undefined"!=typeof t.hex ?this.setStringHex(t.hex):"undefined"!=typeof t.date &&this.setByDate(t.date))},
                Fe.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime),KJUR.asn1.DERGeneralizedTime=function(t){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, t),this.hT ="18",this.setByDate=function(t){this.hTLV =null,this.isModified =!0,this.date = t,this.s =this.formatDate(this.date,"gen"),this.hV =stohex(this.s)},"undefined"!=typeof t &&("undefined"!=typeof t.str ?this.setString(t.str):"undefined"!=typeof t.hex ?this.setStringHex(t.hex):"undefined"!=typeof t.date &&this.setByDate(t.date))},
                Fe.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime),KJUR.asn1.DERSequence=function(t){KJUR.asn1.DERSequence.superclass.constructor.call(this, t),this.hT ="30",this.getFreshValueHex=function(){for(var t ="", e =0; e <this.asn1Array.length; e++){var i =this.asn1Array[e];
                            t += i.getEncodedHex()}returnthis.hV = t,this.hV
                    }},
                Fe.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured),KJUR.asn1.DERSet=function(t){KJUR.asn1.DERSet.superclass.constructor.call(this, t),this.hT ="31",this.getFreshValueHex=function(){for(var t =newArray, e =0; e <this.asn1Array.length; e++){var i =this.asn1Array[e];
                            t.push(i.getEncodedHex())}return t.sort(),this.hV = t.join(""),this.hV
                    }},
                Fe.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured),KJUR.asn1.DERTaggedObject=function(t){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this),this.hT ="a0",this.hV ="",this.isExplicit =!0,this.asn1Object =null,this.setASN1Object=function(t, e, i){this.hT = e,this.isExplicit = t,this.asn1Object = i,this.isExplicit ?(this.hV =this.asn1Object.getEncodedHex(),this.hTLV =null,this.isModified =!0):(this.hV =null,this.hTLV = i.getEncodedHex(),this.hTLV =this.hTLV.replace(/^../, e),this.isModified =!1)},this.getFreshValueHex=function(){returnthis.hV
                    },"undefined"!=typeof t &&("undefined"!=typeof t.tag &&(this.hT = t.tag),"undefined"!=typeof t.explicit &&(this.isExplicit = t.explicit),"undefined"!=typeof t.obj &&(this.asn1Object = t.obj,this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)))},
                Fe.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object),function(c){"use strict";var l, t ={};
                    t.decode=function(t){var e;if(l === c){var i ="0123456789ABCDEF", s =" \f\n\r  \u2028\u2029";for(l =[],
                            e =0;16> e;++e)
                                l[i.charAt(e)]= e;for(i = i.toLowerCase(),
                            e =10;16> e;++e)
                                l[i.charAt(e)]= e;for(e =0; e < s.length;++e)
                                l[s.charAt(e)]=-1}var n =[], r =0, o =0;for(e =0; e < t.length;++e){var a = t.charAt(e);if("="== a)break;if(a = l[a],-1!= a){if(a === c)throw"Illegal character at offset "+ e;
                                r |= a,++o >=2?(n[n.length]= r,
                                r =0,
                                o =0): r <<=4}}if(o)throw"Hex encoding incomplete: 4 bits missing";return n
                    },
                    window.Hex = t
                }(),function(c){"use strict";var l, i ={};
                    i.decode=function(t){var e;if(l === c){var i ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s ="= \f\n\r  \u2028\u2029";for(l =[],
                            e =0;64> e;++e)
                                l[i.charAt(e)]= e;for(e =0; e < s.length;++e)
                                l[s.charAt(e)]=-1}var n =[], r =0, o =0;for(e =0; e < t.length;++e){var a = t.charAt(e);if("="== a)break;if(a = l[a],-1!= a){if(a === c)throw"Illegal character at offset "+ e;
                                r |= a,++o >=4?(n[n.length]= r >>16,
                                n[n.length]= r >>8&255,
                                n[n.length]=255& r,
                                r =0,
                                o =0): r <<=6}}switch(o){case1:throw"Base64 encoding incomplete: at least 2 bits missing";case2:
                            n[n.length]= r >>10;break;case3:
                            n[n.length]= r >>16,
                            n[n.length]= r >>8&255}return n
                    },
                    i.re =/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
                    i.unarmor=function(t){var e = i.re.exec(t);if(e)if(e[1])
                                t = e[1];else{if(!e[2])throw"RegExp out of sync";
                                t = e[2]}return i.decode(t)},
                    window.Base64 = i
                }(),function(o){"use strict";functionl(t, e){
                        t instanceofl?(this.enc = t.enc,this.pos = t.pos):(this.enc = t,this.pos = e)}functionu(t, e, i, s, n){this.stream = t,this.header = e,this.length = i,this.tag = s,this.sub = n
                    }var r =100, a ="…", d ={tag:function(t, e){},text:function(t){}};
                    l.prototype.get=function(t){if(t === o &&(t =this.pos++),
                        t >=this.enc.length)throw"Requesting byte offset "+ t +" on a stream of length "+this.enc.length;returnthis.enc[t]},
                    l.prototype.hexDigits ="0123456789ABCDEF",
                    l.prototype.hexByte=function(t){returnthis.hexDigits.charAt(t >>4&15)+this.hexDigits.charAt(15& t)},
                    l.prototype.hexDump=function(t, e, i){for(var s ="", n = t; e > n;++n)if(s +=this.hexByte(this.get(n)),
                            i !==!0)switch(15& n){case7:
                                    s +=" ";break;case15:
                                    s +="\n";break;default:
                                    s +=" "}return s
                    },
                    l.prototype.parseStringISO=function(t, e){for(var i ="", s = t; e > s;++s)
                            i += String.fromCharCode(this.get(s));return i
                    },
                    l.prototype.parseStringUTF=function(t, e){for(var i ="", s = t; e > s;){var n =this.get(s++);
                            i +=128> n ? String.fromCharCode(n): n >191&&224> n ? String.fromCharCode((31& n)<<6|63&this.get(s++)): String.fromCharCode((15& n)<<12|(63&this.get(s++))<<6|63&this.get(s++))}return i
                    },
                    l.prototype.parseStringBMP=function(t, e){for(var i ="", s = t; e > s; s +=2){var n =this.get(s), r =this.get(s +1);
                            i += String.fromCharCode((n <<8)+ r)}return i
                    },
                    l.prototype.reTime =/^((?:1[89]|2\d)?\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,
                    l.prototype.parseTime=function(t, e){var i =this.parseStringISO(t, e), s =this.reTime.exec(i);return s ?(i = s[1]+"-"+ s[2]+"-"+ s[3]+" "+ s[4],
                        s[5]&&(i +=":"+ s[5],
                        s[6]&&(i +=":"+ s[6],
                        s[7]&&(i +="."+ s[7]))),
                        s[8]&&(i +=" UTC","Z"!= s[8]&&(i += s[8],
                        s[9]&&(i +=":"+ s[9]))),
                        i):"Unrecognized time: "+ i
                    },
                    l.prototype.parseInteger=function(t, e){var i = e - t;if(i >4){
                            i <<=3;var s =this.get(t);if(0=== s)
                                i -=8;elsefor(;128> s;)
                                    s <<=1,--i;return"("+ i +" bit)"}for(var n =0, r = t; e > r;++r)
                            n = n <<8|this.get(r);return n
                    },
                    l.prototype.parseBitString=function(t, e){var i =this.get(t), s =(e - t -1<<3)- i
                          , n ="("+ s +" bit)";if(20>= s){var r = i;
                            n +=" ";for(var o = e -1; o > t;--o){for(var a =this.get(o), c = r;8> c;++c)
                                    n += a >> c &1?"1":"0";
                                r =0}}return n
                    },
                    l.prototype.parseOctetString=function(t, e){var i = e - t
                          , s ="("+ i +" byte) ";
                        i > r &&(e = t + r);for(var n = t; e > n;++n)
                            s +=this.hexByte(this.get(n));return i > r &&(s += a),
                        s
                    },
                    l.prototype.parseOID=function(t, e){for(var i ="", s =0, n =0, r = t; e > r;++r){var o =this.get(r);if(s = s <<7|127& o,
                            n +=7,!(128& o)){if(""=== i){var a =80> s ?40> s ?0:1:2;
                                    i = a +"."+(s -40* a)}else
                                    i +="."+(n >=31?"bigint": s);
                                s = n =0}}return i
                    },
                    u.prototype.typeName=function(){if(this.tag === o)return"unknown";var t =this.tag >>6, e =(this.tag >>5&1,31&this.tag);switch(t){case0:switch(e){case0:return"EOC";case1:return"BOOLEAN";case2:return"INTEGER";case3:return"BIT_STRING";case4:return"OCTET_STRING";case5:return"NULL";case6:return"OBJECT_IDENTIFIER";case7:return"ObjectDescriptor";case8:return"EXTERNAL";case9:return"REAL";case10:return"ENUMERATED";case11:return"EMBEDDED_PDV";case12:return"UTF8String";case16:return"SEQUENCE";case17:return"SET";case18:return"NumericString";case19:return"PrintableString";case20:return"TeletexString";case21:return"VideotexString";case22:return"IA5String";case23:return"UTCTime";case24:return"GeneralizedTime";case25:return"GraphicString";case26:return"VisibleString";case27:return"GeneralString";case28:return"UniversalString";case30:return"BMPString";default:return"Universal_"+ e.toString(16)}case1:return"Application_"+ e.toString(16);case2:return"["+ e +"]";case3:return"Private_"+ e.toString(16)}},
                    u.prototype.reSeemsASCII =/^[ -~]+$/,
                    u.prototype.content=function(){if(this.tag === o)returnnull;var t =this.tag >>6, e =31&this.tag
                          , i =this.posContent(), s = Math.abs(this.length);if(0!== t){if(null!==this.sub)return"("+this.sub.length +" elem)";var n =this.stream.parseStringISO(i, i + Math.min(s, r));returnthis.reSeemsASCII.test(n)? n.substring(0,2* r)+(n.length >2* r ? a :""):this.stream.parseOctetString(i, i + s)}switch(e){case1:return0===this.stream.get(i)?"false":"true";case2:returnthis.stream.parseInteger(i, i + s);case3:returnthis.sub ?"("+this.sub.length +" elem)":this.stream.parseBitString(i, i + s);case4:returnthis.sub ?"("+this.sub.length +" elem)":this.stream.parseOctetString(i, i + s);case6:returnthis.stream.parseOID(i, i + s);case16:case17:return"("+this.sub.length +" elem)";case12:returnthis.stream.parseStringUTF(i, i + s);case18:case19:case20:case21:case22:case26:returnthis.stream.parseStringISO(i, i + s);case30:returnthis.stream.parseStringBMP(i, i + s);case23:case24:returnthis.stream.parseTime(i, i + s)}returnnull},
                    u.prototype.toString=function(){returnthis.typeName()+"@"+this.stream.pos +"[header:"+this.header +",length:"+this.length +",sub:"+(null===this.sub ?"null":this.sub.length)+"]"},
                    u.prototype.print=function(t){if(t === o &&(t =""),null!==this.sub){
                            t +=" ";for(var e =0, i =this.sub.length; i > e;++e)this.sub[e].print(t)}},
                    u.prototype.toPrettyString=function(t){
                        t === o &&(t ="");var e = t +this.typeName()+" @"+this.stream.pos;if(this.length >=0&&(e +="+"),
                        e +=this.length,32&this.tag ? e +=" (constructed)":3!=this.tag &&4!=this.tag ||null===this.sub ||(e +=" (encapsulates)"),
                        e +="\n",null!==this.sub){
                            t +=" ";for(var i =0, s =this.sub.length; s > i;++i)
                                e +=this.sub[i].toPrettyString(t)}return e
                    },
                    u.prototype.toDOM=function(){var t = d.tag("div","node");
                        t.asn1 =this;var e = d.tag("div","head"), i =this.typeName().replace(/_/g," ");
                        e.innerHTML = i;var s =this.content();if(null!== s){
                            s =String(s).replace(/</g,"&lt;");var n = d.tag("span","preview");
                            n.appendChild(d.text(s)),
                            e.appendChild(n)}
                        t.appendChild(e),this.node = t,this.head = e;var r = d.tag("div","value");if(i ="Offset: "+this.stream.pos +"<br/>",
                        i +="Length: "+this.header +"+",
                        i +=this.length >=0?this.length :-this.length +" (undefined)",32&this.tag ? i +="<br/>(constructed)":3!=this.tag &&4!=this.tag ||null===this.sub ||(i +="<br/>(encapsulates)"),null!== s &&(i +="<br/>Value:<br/><b>"+ s +"</b>","object"==typeof oids &&6==this.tag)){var o = oids[s];
                            o &&(o.d &&(i +="<br/>"+ o.d),
                            o.c &&(i +="<br/>"+ o.c),
                            o.w &&(i +="<br/>(warning!)"))}
                        r.innerHTML = i,
                        t.appendChild(r);var a = d.tag("div","sub");if(null!==this.sub)for(var c =0, l =this.sub.length; l > c;++c)
                                a.appendChild(this.sub[c].toDOM());return t.appendChild(a),
                        e.onclick=function(){
                            t.className ="node collapsed"== t.className ?"node":"node collapsed"},
                        t
                    },
                    u.prototype.posStart=function(){returnthis.stream.pos
                    },
                    u.prototype.posContent=function(){returnthis.stream.pos +this.header
                    },
                    u.prototype.posEnd=function(){returnthis.stream.pos +this.header + Math.abs(this.length)},
                    u.prototype.fakeHover=function(t){this.node.className +=" hover",
                        t &&(this.head.className +=" hover")},
                    u.prototype.fakeOut=function(t){var e =/ ?hover/;this.node.className =this.node.className.replace(e,""),
                        t &&(this.head.className =this.head.className.replace(e,""))},
                    u.prototype.toHexDOM_sub=function(t, e, i, s, n){if(!(s >= n)){var r = d.tag("span", e);
                            r.appendChild(d.text(i.hexDump(s, n))),
                            t.appendChild(r)}},
                    u.prototype.toHexDOM=function(e){var t = d.tag("span","hex");if(e === o &&(e = t),this.head.hexNode = t,this.head.onmouseover=function(){this.hexNode.className ="hexCurrent"},this.head.onmouseout=function(){this.hexNode.className ="hex"},
                        t.asn1 =this,
                        t.onmouseover=function(){var t =!e.selected;
                            t &&(e.selected =this.asn1,this.className ="hexCurrent"),this.asn1.fakeHover(t)},
                        t.onmouseout=function(){var t = e.selected ==this.asn1;this.asn1.fakeOut(t),
                            t &&(e.selected =null,this.className ="hex")},this.toHexDOM_sub(t,"tag",this.stream,this.posStart(),this.posStart()+1),this.toHexDOM_sub(t,this.length >=0?"dlen":"ulen",this.stream,this.posStart()+1,this.posContent()),null===this.sub)
                            t.appendChild(d.text(this.stream.hexDump(this.posContent(),this.posEnd())));elseif(this.sub.length >0){var i =this.sub[0], s =this.sub[this.sub.length -1];this.toHexDOM_sub(t,"intro",this.stream,this.posContent(), i.posStart());for(var n =0, r =this.sub.length; r > n;++n)
                                t.appendChild(this.sub[n].toHexDOM(e));this.toHexDOM_sub(t,"outro",this.stream, s.posEnd(),this.posEnd())}return t
                    },
                    u.prototype.toHexString=function(t){returnthis.stream.hexDump(this.posStart(),this.posEnd(),!0)},
                    u.decodeLength=function(t){var e = t.get(), i =127& e;if(i == e)return i;if(i >3)throw"Length over 24 bits not supported at position "+(t.pos -1);if(0=== i)return-1;
                        e =0;for(var s =0; i > s;++s)
                            e = e <<8| t.get();return e
                    },
                    u.hasContent=function(t, e, i){if(32& t)return!0;if(3> t || t >4)return!1;var s =newl(i);3== t && s.get();var n = s.get();if(n >>6&1)return!1;//                        try {var r = u.decodeLength(s);return s.pos - i.pos + r == e
//                        } catch (p) {//                            return !1//                        }},
                    u.decode=function(t){
                        t instanceofl||(t =newl(t,0));var e =newl(t), i = t.get(), s = u.decodeLength(t), n = t.pos - e.pos
                          , r =null;if(u.hasContent(i, s, t)){var o = t.pos;if(3== i && t.get(),
                            r =[],
                            s >=0){for(var a = o + s; t.pos < a;)
                                    r[r.length]= u.decode(t);if(t.pos != a)throw"Content size is not correct for container starting at offset "+ o
                            }else//                                try {for(;;){var c = u.decode(t);if(0=== c.tag)break;
                                        r[r.length]= c
                                    }
                                    s = o - t.pos
//                                } catch (h) {//                                    throw "Exception while decoding undefined length content: " + h//                                }}else
                            t.pos += s;returnnewu(e,n,s,i,r)},
                    u.test=function(){for(var t =[{value:[39],expected:39},{value:[129,201],expected:201},{value:[131,254,220,186],expected:16702650}], e =0, i = t.length; i > e;++e){var s =newl(t[e].value,0), n = u.decodeLength(s);}},
                    window.ASN1= u
                }(),
                window.ASN1.prototype.getHexStringValue=function(){var t =this.toHexString(), e =2*this.header
                      , i =2*this.length;return t.substr(e, i)},
                le.prototype.parseKey=function(t){//                    try {var e =0, i =0, s =/^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/, n = s.test(t)? Hex.decode(t): window.Base64.unarmor(t), r = window.ASN1.decode(n);if(3=== r.sub.length &&(r = r.sub[2].sub[0]),9=== r.sub.length){
                            e = r.sub[1].getHexStringValue(),this.n =ae(e,16),
                            i = r.sub[2].getHexStringValue(),this.e =parseInt(i,16);var o = r.sub[3].getHexStringValue();this.d =ae(o,16);var a = r.sub[4].getHexStringValue();this.p =ae(a,16);var c = r.sub[5].getHexStringValue();this.q =ae(c,16);var l = r.sub[6].getHexStringValue();this.dmp1 =ae(l,16);var u = r.sub[7].getHexStringValue();this.dmq1 =ae(u,16);var d = r.sub[8].getHexStringValue();this.coeff =ae(d,16)}else{if(2!== r.sub.length)return!1;var p = r.sub[1], h = p.sub[0];
                            e = h.sub[0].getHexStringValue(),this.n =ae(e,16),
                            i = h.sub[1].getHexStringValue(),this.e =parseInt(i,16)}return!0//                    } catch (f) {//                        return !1//                    }},
                le.prototype.getPrivateBaseKey=function(){var t ={array:[newKJUR.asn1.DERInteger({"int":0}),newKJUR.asn1.DERInteger({bigint:this.n
                        }),newKJUR.asn1.DERInteger({"int":this.e
                        }),newKJUR.asn1.DERInteger({bigint:this.d
                        }),newKJUR.asn1.DERInteger({bigint:this.p
                        }),newKJUR.asn1.DERInteger({bigint:this.q
                        }),newKJUR.asn1.DERInteger({bigint:this.dmp1
                        }),newKJUR.asn1.DERInteger({bigint:this.dmq1
                        }),newKJUR.asn1.DERInteger({bigint:this.coeff
                        })]}, e =newKJUR.asn1.DERSequence(t);return e.getEncodedHex()},
                le.prototype.getPrivateBaseKeyB64=function(){returnbe(this.getPrivateBaseKey())},
                le.prototype.getPublicBaseKey=function(){var t ={array:[newKJUR.asn1.DERObjectIdentifier({oid:"1.2.840.113549.1.1.1"}),newKJUR.asn1.DERNull]}, e =newKJUR.asn1.DERSequence(t);
                    t ={array:[newKJUR.asn1.DERInteger({bigint:this.n
                        }),newKJUR.asn1.DERInteger({"int":this.e
                        })]};var i =newKJUR.asn1.DERSequence(t);
                    t ={hex:"00"+ i.getEncodedHex()};var s =newKJUR.asn1.DERBitString(t);
                    t ={array:[e, s]};var n =newKJUR.asn1.DERSequence(t);return n.getEncodedHex()},
                le.prototype.getPublicBaseKeyB64=function(){returnbe(this.getPublicBaseKey())},
                le.prototype.wordwrap=function(t, e){if(e = e ||64,!t)return t;var i ="(.{1,"+ e +"})( +|$\n?)|(.{1,"+ e +"})";return t.match(RegExp(i,"g")).join("\n")},
                le.prototype.getPrivateKey=function(){var t ="-----BEGIN RSA PRIVATE KEY-----\n";return t +=this.wordwrap(this.getPrivateBaseKeyB64())+"\n",
                    t +="-----END RSA PRIVATE KEY-----"},
                le.prototype.getPublicKey=function(){var t ="-----BEGIN PUBLIC KEY-----\n";return t +=this.wordwrap(this.getPublicBaseKeyB64())+"\n",
                    t +="-----END PUBLIC KEY-----"},
                le.prototype.hasPublicKeyProperty=function(t){return t = t ||{},
                    t.hasOwnProperty("n")&& t.hasOwnProperty("e")},
                le.prototype.hasPrivateKeyProperty=function(t){return t = t ||{},
                    t.hasOwnProperty("n")&& t.hasOwnProperty("e")&& t.hasOwnProperty("d")&& t.hasOwnProperty("p")&& t.hasOwnProperty("q")&& t.hasOwnProperty("dmp1")&& t.hasOwnProperty("dmq1")&& t.hasOwnProperty("coeff")},
                le.prototype.parsePropertiesFrom=function(t){this.n = t.n,this.e = t.e,
                    t.hasOwnProperty("d")&&(this.d = t.d,this.p = t.p,this.q = t.q,this.dmp1 = t.dmp1,this.dmq1 = t.dmq1,this.coeff = t.coeff)};varqe=function(t){le.call(this),
                    t &&("string"==typeof t ?this.parseKey(t):(this.hasPrivateKeyProperty(t)||this.hasPublicKeyProperty(t))&&this.parsePropertiesFrom(t))};(qe.prototype =newle).constructor = qe;varHe=function(t){
                    t = t ||{},this.default_key_size =parseInt(t.default_key_size)||1024,this.default_public_exponent = t.default_public_exponent ||"010001",this.log = t.log ||!1,this.key =null};He.prototype.setKey=function(t){this.log &&this.key && console.warn("A key was already set, overriding existing."),this.key =newqe(t)},He.prototype.setPrivateKey=function(t){this.setKey(t)},He.prototype.setPublicKey=function(t){this.setKey(t)},He.prototype.decrypt=function(t){//                    try {returnthis.getKey().decrypt(ye(t))//                    } catch (b) {//                        return !1//                    }},He.prototype.encrypt=function(t){//                    try {returnbe(this.getKey().encrypt(t))//                    } catch (b) {//                        return !1//                    }},He.prototype.getKey=function(t){if(!this.key){if(this.key =newqe,
                        t &&"[object Function]"==={}.toString.call(t))returnvoidthis.key.generateAsync(this.default_key_size,this.default_public_exponent, t);this.key.generate(this.default_key_size,this.default_public_exponent)}returnthis.key
                },He.prototype.getPrivateKey=function(){returnthis.getKey().getPrivateKey()},He.prototype.getPrivateKeyB64=function(){returnthis.getKey().getPrivateBaseKeyB64()},He.prototype.getPublicKey=function(){returnthis.getKey().getPublicKey()},He.prototype.getPublicKeyB64=function(){returnthis.getKey().getPublicBaseKeyB64()},
                He.version ="2.3.1",
                t.JSEncrypt = He
            })?s.apply(e, n): s)===undefined||(i.exports = r)}.call(e, i, e, t))===undefined||(t.exports = r)},jsencrypt:function(t, e, r){var i;(i=function(t, e, i){var s =r("encrypt");functionn(){void0!== s &&(this.jsencrypt =news.JSEncrypt,this.jsencrypt.setPublicKey("-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDq04c6My441Gj0UFKgrqUhAUg+kQZeUeWSPlAU9fr4HBPDldAeqzx1UR99KJHuQh/zs1HOamE2dgX9z/2oXcJaqoRIA/FXysx+z2YlJkSk8XQLcQ8EBOkp//MZrixam7lCYpNOjadQBb2Ot0U/Ky+jF2p+Ie8gSZ7/u+Wnr5grywIDAQAB-----END PUBLIC KEY-----"))}
            n.prototype.encode=function(t, e){var i = e ? e +"|"+ t : t;returnencodeURIComponent(this.jsencrypt.encrypt(i))},
            i.exports = n
        }.call(e, r, e, t))===undefined||(t.exports = i)}});functionz(pwd, time){var n =_n("jsencrypt");var g =(newn);var r = g.encode(pwd, time);return r;}

Python代码::

import os
import time
import execjs
import requests
import jsonpath

os.environ["EXECJS_RUNTIME"]="Node"

headers ={'cookie':'sessionid=posx0v0g9da1ql6h66w643mtw04kamyo','User-Agent':'yuanrenxue.project'}

o =1
q =''
values =[]for index inrange(1,6):
    t =int(time.time())*1000# 使用 RPC 远程过程调用解决(该题失败):var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=yrx&name=q6");# url = 'http://localhost:12080/execjs'# data = {#     'group': 'yrx',#     'name': "q6",#     'jscode': f'z({t}, {o})'# }# m = requests.post(url, data=data).json()['data']# 正常逆向 JavaScript 解决
    js =open('q6.js','r', encoding='utf-8').read()# from execjs._external_runtime import ExternalRuntime# ExternalRuntime.Context._exec_with_pipe 中 p = Popen(..., encoding='utf8')
    m = execjs.compile(js).eval(f'z({t}, {o})')
    q =f'{o}-{t}|'
    url ="https://match.yuanrenxue.cn/api/match/6"# values.extend(v['value'] for v in requests.get(url, headers=headers, params={'page': index, 'm': m, 'q': q}).json()['data'])
    values.extend(jsonpath.jsonpath(requests.get(url, headers=headers, params={'page': index,'m': m,'q': q}).json(),'$..value'))
    o +=1print(sum(values)*24)
标签: python 算法 爬虫

本文转载自: https://blog.csdn.net/user_from_future/article/details/130247457
版权归原作者 user_from_future 所有, 如有侵权,请联系我们删除。

“【猿人学WEB题目专解】猿人学第6题”的评论:

还没有评论