Skip to content

Instantly share code, notes, and snippets.

@louismullie
Created March 21, 2014 19:17
Show Gist options
  • Save louismullie/9693899 to your computer and use it in GitHub Desktop.
Save louismullie/9693899 to your computer and use it in GitHub Desktop.
<html>
<script type="text/javascript">
var Salsa20 = (function () {
function Salsa20(key, nonce) {
// Constants.
this.rounds = 20; // number of Salsa rounds
this.sigmaWords = [0x61707865, 0x3320646e, 0x79622d32, 0x6b206574];
// State.
this.keyWords = []; // key words
this.nonceWords = [0, 0]; // nonce words
this.counterWords = [0, 0]; // block counter words
// Output buffer.
this.block = []; // output block of 64 bytes
this.blockUsed = 64; // number of block bytes used
this.setKey(key);
this.setNonce(nonce);
}
// setKey sets the key to the given 32-byte array.
Salsa20.prototype.setKey = function(key) {
for (var i = 0, j = 0; i < 8; i++, j += 4) {
this.keyWords[i] = (key[j] & 0xff) |
((key[j+1] & 0xff)<<8) |
((key[j+2] & 0xff)<<16) |
((key[j+3] & 0xff)<<24);
}
this._reset();
};
// setNonce sets the nonce to the given 8-byte array.
Salsa20.prototype.setNonce = function(nonce) {
this.nonceWords[0] = (nonce[0] & 0xff) |
((nonce[1] & 0xff)<<8) |
((nonce[2] & 0xff)<<16) |
((nonce[3] & 0xff)<<24);
this.nonceWords[1] = (nonce[4] & 0xff) |
((nonce[5] & 0xff)<<8) |
((nonce[6] & 0xff)<<16) |
((nonce[7] & 0xff)<<24);
this._reset();
};
// getBytes returns the next numberOfBytes bytes of stream.
Salsa20.prototype.getBytes = function(numberOfBytes) {
var out = new Array(numberOfBytes);
for (var i = 0; i < numberOfBytes; i++) {
if (this.blockUsed == 64) {
this._generateBlock();
this._incrementCounter();
this.blockUsed = 0;
}
out[i] = this.block[this.blockUsed];
this.blockUsed++;
}
return out;
};
Salsa20.prototype.getHexString = function(numberOfBytes) {
var hex=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
var out = [];
var bytes = this.getBytes(numberOfBytes);
for(var i = 0; i < bytes.length; i++) {
out.push(hex[(bytes[i] >> 4) & 15]);
out.push(hex[bytes[i] & 15]);
}
return out.join('');
};
// Private methods.
Salsa20.prototype._reset = function() {
this.counterWords[0] = 0;
this.counterWords[1] = 0;
this.blockUsed = 64;
};
// _incrementCounter increments block counter.
Salsa20.prototype._incrementCounter = function() {
// Note: maximum 2^64 blocks.
this.counterWords[0] = (this.counterWords[0] + 1) & 0xffffffff;
if (this.counterWords[0] == 0) {
this.counterWords[1] = (this.counterWords[1] + 1) & 0xffffffff;
}
};
// _generateBlock generates 64 bytes from key, nonce, and counter,
// and puts the result into this.block.
Salsa20.prototype._generateBlock = function() {
var j0 = this.sigmaWords[0],
j1 = this.keyWords[0],
j2 = this.keyWords[1],
j3 = this.keyWords[2],
j4 = this.keyWords[3],
j5 = this.sigmaWords[1],
j6 = this.nonceWords[0],
j7 = this.nonceWords[1],
j8 = this.counterWords[0],
j9 = this.counterWords[1],
j10 = this.sigmaWords[2],
j11 = this.keyWords[4],
j12 = this.keyWords[5],
j13 = this.keyWords[6],
j14 = this.keyWords[7],
j15 = this.sigmaWords[3];
var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,
x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15;
var u;
for (var i = 0; i < this.rounds; i += 2) {
u = x0 + x12;
x4 ^= (u<<7) | (u>>>(32-7));
u = x4 + x0;
x8 ^= (u<<9) | (u>>>(32-9));
u = x8 + x4;
x12 ^= (u<<13) | (u>>>(32-13));
u = x12 + x8;
x0 ^= (u<<18) | (u>>>(32-18));
u = x5 + x1;
x9 ^= (u<<7) | (u>>>(32-7));
u = x9 + x5;
x13 ^= (u<<9) | (u>>>(32-9));
u = x13 + x9;
x1 ^= (u<<13) | (u>>>(32-13));
u = x1 + x13;
x5 ^= (u<<18) | (u>>>(32-18));
u = x10 + x6;
x14 ^= (u<<7) | (u>>>(32-7));
u = x14 + x10;
x2 ^= (u<<9) | (u>>>(32-9));
u = x2 + x14;
x6 ^= (u<<13) | (u>>>(32-13));
u = x6 + x2;
x10 ^= (u<<18) | (u>>>(32-18));
u = x15 + x11;
x3 ^= (u<<7) | (u>>>(32-7));
u = x3 + x15;
x7 ^= (u<<9) | (u>>>(32-9));
u = x7 + x3;
x11 ^= (u<<13) | (u>>>(32-13));
u = x11 + x7;
x15 ^= (u<<18) | (u>>>(32-18));
u = x0 + x3;
x1 ^= (u<<7) | (u>>>(32-7));
u = x1 + x0;
x2 ^= (u<<9) | (u>>>(32-9));
u = x2 + x1;
x3 ^= (u<<13) | (u>>>(32-13));
u = x3 + x2;
x0 ^= (u<<18) | (u>>>(32-18));
u = x5 + x4;
x6 ^= (u<<7) | (u>>>(32-7));
u = x6 + x5;
x7 ^= (u<<9) | (u>>>(32-9));
u = x7 + x6;
x4 ^= (u<<13) | (u>>>(32-13));
u = x4 + x7;
x5 ^= (u<<18) | (u>>>(32-18));
u = x10 + x9;
x11 ^= (u<<7) | (u>>>(32-7));
u = x11 + x10;
x8 ^= (u<<9) | (u>>>(32-9));
u = x8 + x11;
x9 ^= (u<<13) | (u>>>(32-13));
u = x9 + x8;
x10 ^= (u<<18) | (u>>>(32-18));
u = x15 + x14;
x12 ^= (u<<7) | (u>>>(32-7));
u = x12 + x15;
x13 ^= (u<<9) | (u>>>(32-9));
u = x13 + x12;
x14 ^= (u<<13) | (u>>>(32-13));
u = x14 + x13;
x15 ^= (u<<18) | (u>>>(32-18));
}
x0 += j0;
x1 += j1;
x2 += j2;
x3 += j3;
x4 += j4;
x5 += j5;
x6 += j6;
x7 += j7;
x8 += j8;
x9 += j9;
x10 += j10;
x11 += j11;
x12 += j12;
x13 += j13;
x14 += j14;
x15 += j15;
this.block[ 0] = ( x0 >>> 0) & 0xff; this.block[ 1] = ( x0 >>> 8) & 0xff;
this.block[ 2] = ( x0 >>> 16) & 0xff; this.block[ 3] = ( x0 >>> 24) & 0xff;
this.block[ 4] = ( x1 >>> 0) & 0xff; this.block[ 5] = ( x1 >>> 8) & 0xff;
this.block[ 6] = ( x1 >>> 16) & 0xff; this.block[ 7] = ( x1 >>> 24) & 0xff;
this.block[ 8] = ( x2 >>> 0) & 0xff; this.block[ 9] = ( x2 >>> 8) & 0xff;
this.block[10] = ( x2 >>> 16) & 0xff; this.block[11] = ( x2 >>> 24) & 0xff;
this.block[12] = ( x3 >>> 0) & 0xff; this.block[13] = ( x3 >>> 8) & 0xff;
this.block[14] = ( x3 >>> 16) & 0xff; this.block[15] = ( x3 >>> 24) & 0xff;
this.block[16] = ( x4 >>> 0) & 0xff; this.block[17] = ( x4 >>> 8) & 0xff;
this.block[18] = ( x4 >>> 16) & 0xff; this.block[19] = ( x4 >>> 24) & 0xff;
this.block[20] = ( x5 >>> 0) & 0xff; this.block[21] = ( x5 >>> 8) & 0xff;
this.block[22] = ( x5 >>> 16) & 0xff; this.block[23] = ( x5 >>> 24) & 0xff;
this.block[24] = ( x6 >>> 0) & 0xff; this.block[25] = ( x6 >>> 8) & 0xff;
this.block[26] = ( x6 >>> 16) & 0xff; this.block[27] = ( x6 >>> 24) & 0xff;
this.block[28] = ( x7 >>> 0) & 0xff; this.block[29] = ( x7 >>> 8) & 0xff;
this.block[30] = ( x7 >>> 16) & 0xff; this.block[31] = ( x7 >>> 24) & 0xff;
this.block[32] = ( x8 >>> 0) & 0xff; this.block[33] = ( x8 >>> 8) & 0xff;
this.block[34] = ( x8 >>> 16) & 0xff; this.block[35] = ( x8 >>> 24) & 0xff;
this.block[36] = ( x9 >>> 0) & 0xff; this.block[37] = ( x9 >>> 8) & 0xff;
this.block[38] = ( x9 >>> 16) & 0xff; this.block[39] = ( x9 >>> 24) & 0xff;
this.block[40] = (x10 >>> 0) & 0xff; this.block[41] = (x10 >>> 8) & 0xff;
this.block[42] = (x10 >>> 16) & 0xff; this.block[43] = (x10 >>> 24) & 0xff;
this.block[44] = (x11 >>> 0) & 0xff; this.block[45] = (x11 >>> 8) & 0xff;
this.block[46] = (x11 >>> 16) & 0xff; this.block[47] = (x11 >>> 24) & 0xff;
this.block[48] = (x12 >>> 0) & 0xff; this.block[49] = (x12 >>> 8) & 0xff;
this.block[50] = (x12 >>> 16) & 0xff; this.block[51] = (x12 >>> 24) & 0xff;
this.block[52] = (x13 >>> 0) & 0xff; this.block[53] = (x13 >>> 8) & 0xff;
this.block[54] = (x13 >>> 16) & 0xff; this.block[55] = (x13 >>> 24) & 0xff;
this.block[56] = (x14 >>> 0) & 0xff; this.block[57] = (x14 >>> 8) & 0xff;
this.block[58] = (x14 >>> 16) & 0xff; this.block[59] = (x14 >>> 24) & 0xff;
this.block[60] = (x15 >>> 0) & 0xff; this.block[61] = (x15 >>> 8) & 0xff;
this.block[62] = (x15 >>> 16) & 0xff; this.block[63] = (x15 >>> 24) & 0xff;
};
return Salsa20;
})();
"use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message};this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message};this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message};this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message};this.message=a}}};
if(typeof module!="undefined"&&module.exports)module.exports=sjcl;
sjcl.cipher.aes=function(a){this.i[0][0][0]||this.B();var b,c,d,e,f=this.i[0][4],g=this.i[1];b=a.length;var h=1;if(b!==4&&b!==6&&b!==8)throw new sjcl.exception.invalid("invalid aes key size");this.a=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(a%b===0||b===8&&a%b===4){c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255];if(a%b===0){c=c<<8^c>>>24^h<<24;h=h<<1^(h>>7)*283}}d[a]=d[a-b]^c}for(b=0;a;b++,a--){c=d[b&3?a:a-4];e[b]=a<=4||b<4?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^
g[3][f[c&255]]}};
sjcl.cipher.aes.prototype={encrypt:function(a){return this.K(a,0)},decrypt:function(a){return this.K(a,1)},i:[[[],[],[],[],[]],[[],[],[],[],[]]],B:function(){var a=this.i[0],b=this.i[1],c=a[4],d=b[4],e,f,g,h=[],i=[],j,k,l,m;for(e=0;e<0x100;e++)i[(h[e]=e<<1^(e>>7)*283)^e]=e;for(f=g=0;!c[f];f^=j||1,g=i[g]||1){l=g^g<<1^g<<2^g<<3^g<<4;l=l>>8^l&255^99;c[f]=l;d[l]=f;k=h[e=h[j=h[f]]];m=k*0x1010101^e*0x10001^j*0x101^f*0x1010100;k=h[l]*0x101^l*0x1010100;for(e=0;e<4;e++){a[e][f]=k=k<<24^k>>>8;b[e][l]=m=m<<24^m>>>8}}for(e=
0;e<5;e++){a[e]=a[e].slice(0);b[e]=b[e].slice(0)}},K:function(a,b){if(a.length!==4)throw new sjcl.exception.invalid("invalid aes block size");var c=this.a[b],d=a[0]^c[0],e=a[b?3:1]^c[1],f=a[2]^c[2];a=a[b?1:3]^c[3];var g,h,i,j=c.length/4-2,k,l=4,m=[0,0,0,0];g=this.i[b];var n=g[0],o=g[1],p=g[2],q=g[3],r=g[4];for(k=0;k<j;k++){g=n[d>>>24]^o[e>>16&255]^p[f>>8&255]^q[a&255]^c[l];h=n[e>>>24]^o[f>>16&255]^p[a>>8&255]^q[d&255]^c[l+1];i=n[f>>>24]^o[a>>16&255]^p[d>>8&255]^q[e&255]^c[l+2];a=n[a>>>24]^o[d>>16&
255]^p[e>>8&255]^q[f&255]^c[l+3];l+=4;d=g;e=h;f=i}for(k=0;k<4;k++){m[b?3&-k:k]=r[d>>>24]<<24^r[e>>16&255]<<16^r[f>>8&255]<<8^r[a&255]^c[l++];g=d;d=e;e=f;f=a;a=g}return m}};
sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.Q(a.slice(b/32),32-(b&31)).slice(1);return c===undefined?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(a.length===0||b.length===0)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return d===32?a.concat(b):sjcl.bitArray.Q(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;
if(b===0)return 0;return(b-1)*32+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(a.length*32<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b&=31;if(c>0&&b)a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1);return a},partial:function(a,b,c){if(a===32)return b;return(c?b|0:b<<32-a)+a*0x10000000000},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return false;var c=0,d;for(d=0;d<a.length;d++)c|=
a[d]^b[d];return c===0},Q:function(a,b,c,d){var e;e=0;if(d===undefined)d=[];for(;b>=32;b-=32){d.push(c);c=0}if(b===0)return d.concat(a);for(e=0;e<a.length;e++){d.push(c|a[e]>>>b);c=a[e]<<32-b}e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,b+a>32?c:d.pop(),1));return d},j:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}};
sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++){if((d&3)===0)e=a[d/4];b+=String.fromCharCode(e>>>24);e<<=8}return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++){d=d<<8|a.charCodeAt(c);if((c&3)===3){b.push(d);d=0}}c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};
sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a+="00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,d*4)}};
sjcl.codec.base64={H:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,f=sjcl.codec.base64.H,g=0,h=sjcl.bitArray.bitLength(a);if(c)f=f.substr(0,62)+"-_";for(c=0;d.length*6<h;){d+=f.charAt((g^a[c]>>>e)>>>26);if(e<6){g=a[c]<<6-e;e+=26;c++}else{g<<=6;e-=6}}for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d=0,e=sjcl.codec.base64.H,f=0,g;if(b)e=e.substr(0,62)+"-_";for(b=0;b<a.length;b++){g=e.indexOf(a.charAt(b));
if(g<0)throw new sjcl.exception.invalid("this isn't base64!");if(d>26){d-=26;c.push(f^g>>>d);f=g<<32-d}else{d+=6;f^=g<<32-d}}d&56&&c.push(sjcl.bitArray.partial(d&56,f,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.a[0]||this.B();if(a){this.p=a.p.slice(0);this.k=a.k.slice(0);this.f=a.f}else this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()};
sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.p=this.O.slice(0);this.k=[];this.f=0;return this},update:function(a){if(typeof a==="string")a=sjcl.codec.utf8String.toBits(a);var b,c=this.k=sjcl.bitArray.concat(this.k,a);b=this.f;a=this.f=b+sjcl.bitArray.bitLength(a);for(b=512+b&-512;b<=a;b+=512)this.G(c.splice(0,16));return this},finalize:function(){var a,b=this.k,c=this.p;b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.f/
4294967296));for(b.push(this.f|0);b.length;)this.G(b.splice(0,16));this.reset();return c},O:[],a:[],B:function(){function a(e){return(e-Math.floor(e))*0x100000000|0}var b=0,c=2,d;a:for(;b<64;c++){for(d=2;d*d<=c;d++)if(c%d===0)continue a;if(b<8)this.O[b]=a(Math.pow(c,0.5));this.a[b]=a(Math.pow(c,1/3));b++}},G:function(a){var b,c,d=a.slice(0),e=this.p,f=this.a,g=e[0],h=e[1],i=e[2],j=e[3],k=e[4],l=e[5],m=e[6],n=e[7];for(a=0;a<64;a++){if(a<16)b=d[a];else{b=d[a+1&15];c=d[a+14&15];b=d[a&15]=(b>>>7^b>>>18^
b>>>3^b<<25^b<<14)+(c>>>17^c>>>19^c>>>10^c<<15^c<<13)+d[a&15]+d[a+9&15]|0}b=b+n+(k>>>6^k>>>11^k>>>25^k<<26^k<<21^k<<7)+(m^k&(l^m))+f[a];n=m;m=l;l=k;k=j+b|0;j=i;i=h;h=g;g=b+(h&i^j&(h^i))+(h>>>2^h>>>13^h>>>22^h<<30^h<<19^h<<10)|0}e[0]=e[0]+g|0;e[1]=e[1]+h|0;e[2]=e[2]+i|0;e[3]=e[3]+j|0;e[4]=e[4]+k|0;e[5]=e[5]+l|0;e[6]=e[6]+m|0;e[7]=e[7]+n|0}};
sjcl.mode.ccm={name:"ccm",encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,i=h.bitLength(c)/8,j=h.bitLength(g)/8;e=e||64;d=d||[];if(i<7)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;f<4&&j>>>8*f;f++);if(f<15-i)f=15-i;c=h.clamp(c,8*(15-f));b=sjcl.mode.ccm.J(a,b,c,d,e,f);g=sjcl.mode.ccm.l(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),i=f.clamp(b,h-e),j=f.bitSlice(b,
h-e);h=(h-e)/8;if(g<7)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;b<4&&h>>>8*b;b++);if(b<15-g)b=15-g;c=f.clamp(c,8*(15-b));i=sjcl.mode.ccm.l(a,i,c,j,e,b);a=sjcl.mode.ccm.J(a,i.data,c,d,e,b);if(!f.equal(i.tag,a))throw new sjcl.exception.corrupt("ccm: tag doesn't match");return i.data},J:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,i=h.j;e/=8;if(e%2||e<4||e>16)throw new sjcl.exception.invalid("ccm: invalid tag length");if(d.length>0xffffffff||b.length>0xffffffff)throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");
f=[h.partial(8,(d.length?64:0)|e-2<<2|f-1)];f=h.concat(f,c);f[3]|=h.bitLength(b)/8;f=a.encrypt(f);if(d.length){c=h.bitLength(d)/8;if(c<=65279)g=[h.partial(16,c)];else if(c<=0xffffffff)g=h.concat([h.partial(16,65534)],[c]);g=h.concat(g,d);for(d=0;d<g.length;d+=4)f=a.encrypt(i(f,g.slice(d,d+4).concat([0,0,0])))}for(d=0;d<b.length;d+=4)f=a.encrypt(i(f,b.slice(d,d+4).concat([0,0,0])));return h.clamp(f,e*8)},l:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.j;var i=b.length,j=h.bitLength(b);c=h.concat([h.partial(8,
f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!i)return{tag:d,data:[]};for(g=0;g<i;g+=4){c[3]++;e=a.encrypt(c);b[g]^=e[0];b[g+1]^=e[1];b[g+2]^=e[2];b[g+3]^=e[3]}return{tag:d,data:h.clamp(b,j)}}};
sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(sjcl.bitArray.bitLength(c)!==128)throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.D,i=sjcl.bitArray,j=i.j,k=[0,0,0,0];c=h(a.encrypt(c));var l,m=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4){l=b.slice(g,g+4);k=j(k,l);m=m.concat(j(c,a.encrypt(j(c,l))));c=h(c)}l=b.slice(g);b=i.bitLength(l);g=a.encrypt(j(c,[0,0,0,b]));l=i.clamp(j(l.concat([0,0,0]),g),b);k=j(k,j(l.concat([0,0,0]),g));k=a.encrypt(j(k,j(c,h(c))));
if(d.length)k=j(k,f?d:sjcl.mode.ocb2.pmac(a,d));return m.concat(i.concat(l,i.clamp(k,e)))},decrypt:function(a,b,c,d,e,f){if(sjcl.bitArray.bitLength(c)!==128)throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.D,h=sjcl.bitArray,i=h.j,j=[0,0,0,0],k=g(a.encrypt(c)),l,m,n=sjcl.bitArray.bitLength(b)-e,o=[];d=d||[];for(c=0;c+4<n/32;c+=4){l=i(k,a.decrypt(i(k,b.slice(c,c+4))));j=i(j,l);o=o.concat(l);k=g(k)}m=n-c*32;l=a.encrypt(i(k,[0,0,0,m]));l=i(l,h.clamp(b.slice(c),
m).concat([0,0,0]));j=i(j,l);j=a.encrypt(i(j,i(k,g(k))));if(d.length)j=i(j,f?d:sjcl.mode.ocb2.pmac(a,d));if(!h.equal(h.clamp(j,e),h.bitSlice(b,n)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return o.concat(h.clamp(l,m))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.D,e=sjcl.bitArray,f=e.j,g=[0,0,0,0],h=a.encrypt([0,0,0,0]);h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4){h=d(h);g=f(g,a.encrypt(f(h,b.slice(c,c+4))))}b=b.slice(c);if(e.bitLength(b)<128){h=f(h,d(h));b=e.concat(b,[2147483648|0,0,
0,0])}g=f(g,b);return a.encrypt(f(d(f(h,d(h))),g))},D:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^(a[0]>>>31)*135]}};
sjcl.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;e=e||128;d=d||[];a=sjcl.mode.gcm.l(true,a,f,d,c,e);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];if(e<=h){b=g.bitSlice(f,h-e);f=g.bitSlice(f,0,h-e)}else{b=f;f=[]}a=sjcl.mode.gcm.l(false,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return a.data},T:function(a,b){var c,d,e,f,g=sjcl.bitArray.j;
d=[0,0,0,0];e=b.slice(0);for(b=0;b<128;b++){if(c=(a[Math.floor(b/32)]&1<<31-b%32)!==0)d=g(d,e);f=(e[3]&1)!==0;for(c=3;c>0;c--)e[c]=e[c]>>>1|(e[c-1]&1)<<31;e[0]>>>=1;if(f)e[0]^=-0x1f000000}return d},e:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4){b[0]^=0xffffffff&c[d];b[1]^=0xffffffff&c[d+1];b[2]^=0xffffffff&c[d+2];b[3]^=0xffffffff&c[d+3];b=sjcl.mode.gcm.T(b,a)}return b},l:function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o=sjcl.bitArray;l=c.length;m=o.bitLength(c);n=o.bitLength(d);h=o.bitLength(e);
g=b.encrypt([0,0,0,0]);if(h===96){e=e.slice(0);e=o.concat(e,[1])}else{e=sjcl.mode.gcm.e(g,[0,0,0,0],e);e=sjcl.mode.gcm.e(g,e,[0,0,Math.floor(h/0x100000000),h&0xffffffff])}h=sjcl.mode.gcm.e(g,[0,0,0,0],d);k=e.slice(0);d=h.slice(0);a||(d=sjcl.mode.gcm.e(g,h,c));for(j=0;j<l;j+=4){k[3]++;i=b.encrypt(k);c[j]^=i[0];c[j+1]^=i[1];c[j+2]^=i[2];c[j+3]^=i[3]}c=o.clamp(c,m);if(a)d=sjcl.mode.gcm.e(g,h,c);a=[Math.floor(n/0x100000000),n&0xffffffff,Math.floor(m/0x100000000),m&0xffffffff];d=sjcl.mode.gcm.e(g,d,a);i=
b.encrypt(e);d[0]^=i[0];d[1]^=i[1];d[2]^=i[2];d[3]^=i[3];return{tag:o.bitSlice(d,0,f),data:c}}};sjcl.misc.hmac=function(a,b){this.N=b=b||sjcl.hash.sha256;var c=[[],[]],d=b.prototype.blockSize/32;this.n=[new b,new b];if(a.length>d)a=b.hash(a);for(b=0;b<d;b++){c[0][b]=a[b]^909522486;c[1][b]=a[b]^1549556828}this.n[0].update(c[0]);this.n[1].update(c[1])};sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){a=(new this.N(this.n[0])).update(a).finalize();return(new this.N(this.n[1])).update(a).finalize()};
sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E3;if(d<0||c<0)throw sjcl.exception.invalid("invalid params to pbkdf2");if(typeof a==="string")a=sjcl.codec.utf8String.toBits(a);e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,i,j=[],k=sjcl.bitArray;for(i=1;32*j.length<(d||1);i++){e=f=a.encrypt(k.concat(b,[i]));for(g=1;g<c;g++){f=a.encrypt(f);for(h=0;h<f.length;h++)e[h]^=f[h]}j=j.concat(e)}if(d)j=k.clamp(j,d);return j};
sjcl.random={randomWords:function(a,b){var c=[];b=this.isReady(b);var d;if(b===0)throw new sjcl.exception.notReady("generator isn't seeded");else b&2&&this.W(!(b&1));for(b=0;b<a;b+=4){(b+1)%0x10000===0&&this.M();d=this.A();c.push(d[0],d[1],d[2],d[3])}this.M();return c.slice(0,a)},setDefaultParanoia:function(a){this.w=a},addEntropy:function(a,b,c){c=c||"user";var d,e,f=(new Date).valueOf(),g=this.s[c],h=this.isReady(),i=0;d=this.I[c];if(d===undefined)d=this.I[c]=this.S++;if(g===undefined)g=this.s[c]=
0;this.s[c]=(this.s[c]+1)%this.b.length;switch(typeof a){case "number":if(b===undefined)b=1;this.b[g].update([d,this.z++,1,b,f,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if(c==="[object Uint32Array]"){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else{if(c!=="[object Array]")i=1;for(c=0;c<a.length&&!i;c++)if(typeof a[c]!="number")i=1}if(!i){if(b===undefined)for(c=b=0;c<a.length;c++)for(e=a[c];e>0;){b++;e>>>=1}this.b[g].update([d,this.z++,2,b,f,a.length].concat(a))}break;case "string":if(b===
undefined)b=a.length;this.b[g].update([d,this.z++,3,b,f,a.length]);this.b[g].update(a);break;default:i=1}if(i)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.g+=b;if(h===0){this.isReady()!==0&&this.L("seeded",Math.max(this.h,this.g));this.L("progress",this.getProgress())}},isReady:function(a){a=this.F[a!==undefined?a:this.w];return this.h&&this.h>=a?this.m[0]>80&&(new Date).valueOf()>this.P?3:1:this.g>=a?2:0},getProgress:function(a){a=
this.F[a?a:this.w];return this.h>=a?1:this.g>a?1:this.g/a},startCollectors:function(){if(!this.o){if(window.addEventListener){window.addEventListener("load",this.q,false);window.addEventListener("mousemove",this.r,false)}else if(document.attachEvent){document.attachEvent("onload",this.q);document.attachEvent("onmousemove",this.r)}else throw new sjcl.exception.bug("can't attach event");this.o=true}},stopCollectors:function(){if(this.o){if(window.removeEventListener){window.removeEventListener("load",
this.q,false);window.removeEventListener("mousemove",this.r,false)}else if(window.detachEvent){window.detachEvent("onload",this.q);window.detachEvent("onmousemove",this.r)}this.o=false}},addEventListener:function(a,b){this.t[a][this.R++]=b},removeEventListener:function(a,b){var c;a=this.t[a];var d=[];for(c in a)a.hasOwnProperty(c)&&a[c]===b&&d.push(c);for(b=0;b<d.length;b++){c=d[b];delete a[c]}},b:[new sjcl.hash.sha256],m:[0],C:0,s:{},z:0,I:{},S:0,h:0,g:0,P:0,a:[0,0,0,0,0,0,0,0],d:[0,0,0,0],u:undefined,
w:6,o:false,t:{progress:{},seeded:{}},R:0,F:[0,48,64,96,128,192,0x100,384,512,768,1024],A:function(){for(var a=0;a<4;a++){this.d[a]=this.d[a]+1|0;if(this.d[a])break}return this.u.encrypt(this.d)},M:function(){this.a=this.A().concat(this.A());this.u=new sjcl.cipher.aes(this.a)},V:function(a){this.a=sjcl.hash.sha256.hash(this.a.concat(a));this.u=new sjcl.cipher.aes(this.a);for(a=0;a<4;a++){this.d[a]=this.d[a]+1|0;if(this.d[a])break}},W:function(a){var b=[],c=0,d;this.P=b[0]=(new Date).valueOf()+3E4;for(d=
0;d<16;d++)b.push(Math.random()*0x100000000|0);for(d=0;d<this.b.length;d++){b=b.concat(this.b[d].finalize());c+=this.m[d];this.m[d]=0;if(!a&&this.C&1<<d)break}if(this.C>=1<<this.b.length){this.b.push(new sjcl.hash.sha256);this.m.push(0)}this.g-=c;if(c>this.h)this.h=c;this.C++;this.V(b)},r:function(a){sjcl.random.addEntropy([a.x||a.clientX||a.offsetX||0,a.y||a.clientY||a.offsetY||0],2,"mouse")},q:function(){sjcl.random.addEntropy((new Date).valueOf(),2,"loadtime")},L:function(a,b){var c;a=sjcl.random.t[a];
var d=[];for(c in a)a.hasOwnProperty(c)&&d.push(a[c]);for(c=0;c<d.length;c++)d[c](b)}};try{var s=new Uint32Array(32);crypto.getRandomValues(s);sjcl.random.addEntropy(s,1024,"crypto['getRandomValues']")}catch(t){}
sjcl.json={defaults:{v:1,iter:1E3,ks:256,ts:64,mode:"ccm",adata:"",cipher:"aes"},encrypt:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.c({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.c(f,c);c=f.adata;if(typeof f.salt==="string")f.salt=sjcl.codec.base64.toBits(f.salt);if(typeof f.iv==="string")f.iv=sjcl.codec.base64.toBits(f.iv);if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||typeof a==="string"&&f.iter<=100||f.ts!==64&&f.ts!==96&&f.ts!==128||f.ks!==128&&f.ks!==192&&f.ks!==0x100||f.iv.length<
2||f.iv.length>4)throw new sjcl.exception.invalid("json encrypt: invalid parameters");if(typeof a==="string"){g=sjcl.misc.cachedPbkdf2(a,f);a=g.key.slice(0,f.ks/32);f.salt=g.salt}if(typeof b==="string")b=sjcl.codec.utf8String.toBits(b);if(typeof c==="string")c=sjcl.codec.utf8String.toBits(c);g=new sjcl.cipher[f.cipher](a);e.c(d,f);d.key=a;f.ct=sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return e.encode(f)},decrypt:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.c(e.c(e.c({},e.defaults),e.decode(b)),
c,true);var f;c=b.adata;if(typeof b.salt==="string")b.salt=sjcl.codec.base64.toBits(b.salt);if(typeof b.iv==="string")b.iv=sjcl.codec.base64.toBits(b.iv);if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||typeof a==="string"&&b.iter<=100||b.ts!==64&&b.ts!==96&&b.ts!==128||b.ks!==128&&b.ks!==192&&b.ks!==0x100||!b.iv||b.iv.length<2||b.iv.length>4)throw new sjcl.exception.invalid("json decrypt: invalid parameters");if(typeof a==="string"){f=sjcl.misc.cachedPbkdf2(a,b);a=f.key.slice(0,b.ks/32);b.salt=f.salt}if(typeof c===
"string")c=sjcl.codec.utf8String.toBits(c);f=new sjcl.cipher[b.cipher](a);c=sjcl.mode[b.mode].decrypt(f,b.ct,b.iv,c,b.ts);e.c(d,b);d.key=a;return sjcl.codec.utf8String.fromBits(c)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+
sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^(?:(["']?)([a-z][a-z0-9]*)\1):(?:(\d+)|"([a-z0-9+\/%*_.@=\-]*)")$/i)))throw new sjcl.exception.invalid("json decode: this isn't json!");b[d[2]]=
d[3]?parseInt(d[3],10):d[2].match(/^(ct|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4])}return b},c:function(a,b,c){if(a===undefined)a={};if(b===undefined)return a;var d;for(d in b)if(b.hasOwnProperty(d)){if(c&&a[d]!==undefined&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},Y:function(a,b){var c={},d;for(d in a)if(a.hasOwnProperty(d)&&a[d]!==b[d])c[d]=a[d];return c},X:function(a,b){var c={},d;for(d=0;d<b.length;d++)if(a[b[d]]!==undefined)c[b[d]]=
a[b[d]];return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.U={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.U,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=b.salt===undefined?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}};
/**
* @constructor
* Constructs a new bignum from another bignum, a number or a hex string.
*/
sjcl.bn = function(it) {
this.initWith(it);
};
sjcl.bn.prototype = {
radix: 24,
maxMul: 8,
_class: sjcl.bn,
copy: function() {
return new this._class(this);
},
/**
* Initializes this with it, either as a bn, a number, or a hex string.
*/
initWith: function(it) {
var i=0, k, n, l;
switch(typeof it) {
case "object":
this.limbs = it.limbs.slice(0);
break;
case "number":
this.limbs = [it];
this.normalize();
break;
case "string":
it = it.replace(/^0x/, '');
this.limbs = [];
// hack
k = this.radix / 4;
for (i=0; i < it.length; i+=k) {
this.limbs.push(parseInt(it.substring(Math.max(it.length - i - k, 0), it.length - i),16));
}
break;
default:
this.limbs = [0];
}
return this;
},
/**
* Returns true if "this" and "that" are equal. Calls fullReduce().
* Equality test is in constant time.
*/
equals: function(that) {
if (typeof that === "number") { that = new this._class(that); }
var difference = 0, i;
this.fullReduce();
that.fullReduce();
for (i = 0; i < this.limbs.length || i < that.limbs.length; i++) {
difference |= this.getLimb(i) ^ that.getLimb(i);
}
return (difference === 0);
},
/**
* Get the i'th limb of this, zero if i is too large.
*/
getLimb: function(i) {
return (i >= this.limbs.length) ? 0 : this.limbs[i];
},
/**
* Constant time comparison function.
* Returns 1 if this >= that, or zero otherwise.
*/
greaterEquals: function(that) {
if (typeof that === "number") { that = new this._class(that); }
var less = 0, greater = 0, i, a, b;
i = Math.max(this.limbs.length, that.limbs.length) - 1;
for (; i>= 0; i--) {
a = this.getLimb(i);
b = that.getLimb(i);
greater |= (b - a) & ~less;
less |= (a - b) & ~greater;
}
return (greater | ~less) >>> 31;
},
/**
* Convert to a hex string.
*/
toString: function() {
this.fullReduce();
var out="", i, s, l = this.limbs;
for (i=0; i < this.limbs.length; i++) {
s = l[i].toString(16);
while (i < this.limbs.length - 1 && s.length < 6) {
s = "0" + s;
}
out = s + out;
}
return "0x"+out;
},
/** this += that. Does not normalize. */
addM: function(that) {
if (typeof(that) !== "object") { that = new this._class(that); }
var i, l=this.limbs, ll=that.limbs;
for (i=l.length; i<ll.length; i++) {
l[i] = 0;
}
for (i=0; i<ll.length; i++) {
l[i] += ll[i];
}
return this;
},
/** this *= 2. Requires normalized; ends up normalized. */
doubleM: function() {
var i, carry=0, tmp, r=this.radix, m=this.radixMask, l=this.limbs;
for (i=0; i<l.length; i++) {
tmp = l[i];
tmp = tmp+tmp+carry;
l[i] = tmp & m;
carry = tmp >> r;
}
if (carry) {
l.push(carry);
}
return this;
},
/** this /= 2, rounded down. Requires normalized; ends up normalized. */
halveM: function() {
var i, carry=0, tmp, r=this.radix, l=this.limbs;
for (i=l.length-1; i>=0; i--) {
tmp = l[i];
l[i] = (tmp+carry)>>1;
carry = (tmp&1) << r;
}
if (!l[l.length-1]) {
l.pop();
}
return this;
},
/** this -= that. Does not normalize. */
subM: function(that) {
if (typeof(that) !== "object") { that = new this._class(that); }
var i, l=this.limbs, ll=that.limbs;
for (i=l.length; i<ll.length; i++) {
l[i] = 0;
}
for (i=0; i<ll.length; i++) {
l[i] -= ll[i];
}
return this;
},
mod: function(that) {
var neg = !this.greaterEquals(new sjcl.bn(0));
that = new sjcl.bn(that).normalize(); // copy before we begin
var out = new sjcl.bn(this).normalize(), ci=0;
if (neg) out = (new sjcl.bn(0)).subM(out).normalize();
for (; out.greaterEquals(that); ci++) {
that.doubleM();
}
if (neg) out = that.sub(out).normalize();
for (; ci > 0; ci--) {
that.halveM();
if (out.greaterEquals(that)) {
out.subM(that).normalize();
}
}
return out.trim();
},
/** return inverse mod prime p. p must be odd. Binary extended Euclidean algorithm mod p. */
inverseMod: function(p) {
var a = new sjcl.bn(1), b = new sjcl.bn(0), x = new sjcl.bn(this), y = new sjcl.bn(p), tmp, i, nz=1;
if (!(p.limbs[0] & 1)) {
throw (new sjcl.exception.invalid("inverseMod: p must be odd"));
}
// invariant: y is odd
do {
if (x.limbs[0] & 1) {
if (!x.greaterEquals(y)) {
// x < y; swap everything
tmp = x; x = y; y = tmp;
tmp = a; a = b; b = tmp;
}
x.subM(y);
x.normalize();
if (!a.greaterEquals(b)) {
a.addM(p);
}
a.subM(b);
}
// cut everything in half
x.halveM();
if (a.limbs[0] & 1) {
a.addM(p);
}
a.normalize();
a.halveM();
// check for termination: x ?= 0
for (i=nz=0; i<x.limbs.length; i++) {
nz |= x.limbs[i];
}
} while(nz);
if (!y.equals(1)) {
throw (new sjcl.exception.invalid("inverseMod: p and x must be relatively prime"));
}
return b;
},
/** this + that. Does not normalize. */
add: function(that) {
return this.copy().addM(that);
},
/** this - that. Does not normalize. */
sub: function(that) {
return this.copy().subM(that);
},
/** this * that. Normalizes and reduces. */
mul: function(that) {
if (typeof(that) === "number") { that = new this._class(that); }
var i, j, a = this.limbs, b = that.limbs, al = a.length, bl = b.length, out = new this._class(), c = out.limbs, ai, ii=this.maxMul;
for (i=0; i < this.limbs.length + that.limbs.length + 1; i++) {
c[i] = 0;
}
for (i=0; i<al; i++) {
ai = a[i];
for (j=0; j<bl; j++) {
c[i+j] += ai * b[j];
}
if (!--ii) {
ii = this.maxMul;
out.cnormalize();
}
}
return out.cnormalize().reduce();
},
/** this ^ 2. Normalizes and reduces. */
square: function() {
return this.mul(this);
},
/** this ^ n. Uses square-and-multiply. Normalizes and reduces. */
power: function(l) {
if (typeof(l) === "number") {
l = [l];
} else if (l.limbs !== undefined) {
l = l.normalize().limbs;
}
var i, j, out = new this._class(1), pow = this;
for (i=0; i<l.length; i++) {
for (j=0; j<this.radix; j++) {
if (l[i] & (1<<j)) {
out = out.mul(pow);
}
pow = pow.square();
}
}
return out;
},
/** this * that mod N */
mulmod: function(that, N) {
return this.mod(N).mul(that.mod(N)).mod(N);
},
/** this ^ x mod N */
powermod: function(x, N) {
var result = new sjcl.bn(1), a = new sjcl.bn(this), k = new sjcl.bn(x);
while (true) {
if (k.limbs[0] & 1) { result = result.mulmod(a, N); }
k.halveM();
if (k.equals(0)) { break; }
a = a.mulmod(a, N);
}
return result.normalize().reduce();
},
trim: function() {
var l = this.limbs, p;
do {
p = l.pop();
} while (l.length && p === 0);
l.push(p);
return this;
},
/** Reduce mod a modulus. Stubbed for subclassing. */
reduce: function() {
return this;
},
/** Reduce and normalize. */
fullReduce: function() {
return this.normalize();
},
/** Propagate carries. */
normalize: function() {
var carry=0, i, pv = this.placeVal, ipv = this.ipv, l, m, limbs = this.limbs, ll = limbs.length, mask = this.radixMask;
for (i=0; i < ll || (carry !== 0 && carry !== -1); i++) {
l = (limbs[i]||0) + carry;
m = limbs[i] = l & mask;
carry = (l-m)*ipv;
}
if (carry === -1) {
limbs[i-1] -= this.placeVal;
}
return this;
},
/** Constant-time normalize. Does not allocate additional space. */
cnormalize: function() {
var carry=0, i, ipv = this.ipv, l, m, limbs = this.limbs, ll = limbs.length, mask = this.radixMask;
for (i=0; i < ll-1; i++) {
l = limbs[i] + carry;
m = limbs[i] = l & mask;
carry = (l-m)*ipv;
}
limbs[i] += carry;
return this;
},
/** Serialize to a bit array */
toBits: function(len) {
this.fullReduce();
len = len || this.exponent || this.bitLength();
var i = Math.floor((len-1)/24), w=sjcl.bitArray, e = (len + 7 & -8) % this.radix || this.radix,
out = [w.partial(e, this.getLimb(i))];
for (i--; i >= 0; i--) {
out = w.concat(out, [w.partial(Math.min(this.radix,len), this.getLimb(i))]);
len -= this.radix;
}
return out;
},
/** Return the length in bits, rounded up to the nearest byte. */
bitLength: function() {
this.fullReduce();
var out = this.radix * (this.limbs.length - 1),
b = this.limbs[this.limbs.length - 1];
for (; b; b >>>= 1) {
out ++;
}
return out+7 & -8;
}
};
/** @this { sjcl.bn } */
sjcl.bn.fromBits = function(bits) {
var Class = this, out = new Class(), words=[], w=sjcl.bitArray, t = this.prototype,
l = Math.min(this.bitLength || 0x100000000, w.bitLength(bits)), e = l % t.radix || t.radix;
words[0] = w.extract(bits, 0, e);
for (; e < l; e += t.radix) {
words.unshift(w.extract(bits, e, t.radix));
}
out.limbs = words;
return out;
};
sjcl.bn.prototype.ipv = 1 / (sjcl.bn.prototype.placeVal = Math.pow(2,sjcl.bn.prototype.radix));
sjcl.bn.prototype.radixMask = (1 << sjcl.bn.prototype.radix) - 1;
/**
* Creates a new subclass of bn, based on reduction modulo a pseudo-Mersenne prime,
* i.e. a prime of the form 2^e + sum(a * 2^b),where the sum is negative and sparse.
*/
sjcl.bn.pseudoMersennePrime = function(exponent, coeff) {
/** @constructor */
function p(it) {
this.initWith(it);
/*if (this.limbs[this.modOffset]) {
this.reduce();
}*/
}
var ppr = p.prototype = new sjcl.bn(), i, tmp, mo;
mo = ppr.modOffset = Math.ceil(tmp = exponent / ppr.radix);
ppr.exponent = exponent;
ppr.offset = [];
ppr.factor = [];
ppr.minOffset = mo;
ppr.fullMask = 0;
ppr.fullOffset = [];
ppr.fullFactor = [];
ppr.modulus = p.modulus = new sjcl.bn(Math.pow(2,exponent));
ppr.fullMask = 0|-Math.pow(2, exponent % ppr.radix);
for (i=0; i<coeff.length; i++) {
ppr.offset[i] = Math.floor(coeff[i][0] / ppr.radix - tmp);
ppr.fullOffset[i] = Math.ceil(coeff[i][0] / ppr.radix - tmp);
ppr.factor[i] = coeff[i][1] * Math.pow(1/2, exponent - coeff[i][0] + ppr.offset[i] * ppr.radix);
ppr.fullFactor[i] = coeff[i][1] * Math.pow(1/2, exponent - coeff[i][0] + ppr.fullOffset[i] * ppr.radix);
ppr.modulus.addM(new sjcl.bn(Math.pow(2,coeff[i][0])*coeff[i][1]));
ppr.minOffset = Math.min(ppr.minOffset, -ppr.offset[i]); // conservative
}
ppr._class = p;
ppr.modulus.cnormalize();
/** Approximate reduction mod p. May leave a number which is negative or slightly larger than p.
* @this {sjcl.bn}
*/
ppr.reduce = function() {
var i, k, l, mo = this.modOffset, limbs = this.limbs, aff, off = this.offset, ol = this.offset.length, fac = this.factor, ll;
i = this.minOffset;
while (limbs.length > mo) {
l = limbs.pop();
ll = limbs.length;
for (k=0; k<ol; k++) {
limbs[ll+off[k]] -= fac[k] * l;
}
i--;
if (!i) {
limbs.push(0);
this.cnormalize();
i = this.minOffset;
}
}
this.cnormalize();
return this;
};
/** @this {sjcl.bn} */
ppr._strongReduce = (ppr.fullMask === -1) ? ppr.reduce : function() {
var limbs = this.limbs, i = limbs.length - 1, k, l;
this.reduce();
if (i === this.modOffset - 1) {
l = limbs[i] & this.fullMask;
limbs[i] -= l;
for (k=0; k<this.fullOffset.length; k++) {
limbs[i+this.fullOffset[k]] -= this.fullFactor[k] * l;
}
this.normalize();
}
};
/** mostly constant-time, very expensive full reduction.
* @this {sjcl.bn}
*/
ppr.fullReduce = function() {
var greater, i;
// massively above the modulus, may be negative
this._strongReduce();
// less than twice the modulus, may be negative
this.addM(this.modulus);
this.addM(this.modulus);
this.normalize();
// probably 2-3x the modulus
this._strongReduce();
// less than the power of 2. still may be more than
// the modulus
// HACK: pad out to this length
for (i=this.limbs.length; i<this.modOffset; i++) {
this.limbs[i] = 0;
}
// constant-time subtract modulus
greater = this.greaterEquals(this.modulus);
for (i=0; i<this.limbs.length; i++) {
this.limbs[i] -= this.modulus.limbs[i] * greater;
}
this.cnormalize();
return this;
};
/** @this {sjcl.bn} */
ppr.inverse = function() {
return (this.power(this.modulus.sub(2)));
};
p.fromBits = sjcl.bn.fromBits;
return p;
};
// a small Mersenne prime
sjcl.bn.prime = {
p127: sjcl.bn.pseudoMersennePrime(127, [[0,-1]]),
// Bernstein's prime for Curve25519
p25519: sjcl.bn.pseudoMersennePrime(255, [[0,-19]]),
// NIST primes
p192: sjcl.bn.pseudoMersennePrime(192, [[0,-1],[64,-1]]),
p224: sjcl.bn.pseudoMersennePrime(224, [[0,1],[96,-1]]),
p256: sjcl.bn.pseudoMersennePrime(256, [[0,-1],[96,1],[192,1],[224,-1]]),
p384: sjcl.bn.pseudoMersennePrime(384, [[0,-1],[32,1],[96,-1],[128,-1]]),
p521: sjcl.bn.pseudoMersennePrime(521, [[0,-1]])
};
sjcl.bn.random = function(modulus, paranoia) {
if (typeof modulus !== "object") { modulus = new sjcl.bn(modulus); }
var words, i, l = modulus.limbs.length, m = modulus.limbs[l-1]+1, out = new sjcl.bn();
while (true) {
// get a sequence whose first digits make sense
do {
words = sjcl.random.randomWords(l, paranoia);
if (words[l-1] < 0) { words[l-1] += 0x100000000; }
} while (Math.floor(words[l-1] / m) === Math.floor(0x100000000 / m));
words[l-1] %= m;
// mask off all the limbs
for (i=0; i<l-1; i++) {
words[i] &= modulus.radixMask;
}
// check the rest of the digitssj
out.limbs = words;
if (!out.greaterEquals(modulus)) {
return out;
}
}
};
sjcl.ecc = {};
/**
* Represents a point on a curve in affine coordinates.
* @constructor
* @param {sjcl.ecc.curve} curve The curve that this point lies on.
* @param {bigInt} x The x coordinate.
* @param {bigInt} y The y coordinate.
*/
sjcl.ecc.point = function(curve,x,y) {
if (x === undefined) {
this.isIdentity = true;
} else {
this.x = x;
this.y = y;
this.isIdentity = false;
}
this.curve = curve;
};
sjcl.ecc.point.prototype = {
toJac: function() {
return new sjcl.ecc.pointJac(this.curve, this.x, this.y, new this.curve.field(1));
},
mult: function(k) {
return this.toJac().mult(k, this).toAffine();
},
/**
* Multiply this point by k, added to affine2*k2, and return the answer in Jacobian coordinates.
* @param {bigInt} k The coefficient to multiply this by.
* @param {bigInt} k2 The coefficient to multiply affine2 this by.
* @param {sjcl.ecc.point} affine The other point in affine coordinates.
* @return {sjcl.ecc.pointJac} The result of the multiplication and addition, in Jacobian coordinates.
*/
mult2: function(k, k2, affine2) {
return this.toJac().mult2(k, this, k2, affine2).toAffine();
},
multiples: function() {
var m, i, j;
if (this._multiples === undefined) {
j = this.toJac().doubl();
m = this._multiples = [new sjcl.ecc.point(this.curve), this, j.toAffine()];
for (i=3; i<16; i++) {
j = j.add(this);
m.push(j.toAffine());
}
}
return this._multiples;
},
isValid: function() {
return this.y.square().equals(this.curve.b.add(this.x.mul(this.curve.a.add(this.x.square()))));
},
toBits: function() {
return sjcl.bitArray.concat(this.x.toBits(), this.y.toBits());
}
};
/**
* Represents a point on a curve in Jacobian coordinates. Coordinates can be specified as bigInts or strings (which
* will be converted to bigInts).
*
* @constructor
* @param {bigInt/string} x The x coordinate.
* @param {bigInt/string} y The y coordinate.
* @param {bigInt/string} z The z coordinate.
* @param {sjcl.ecc.curve} curve The curve that this point lies on.
*/
sjcl.ecc.pointJac = function(curve, x, y, z) {
if (x === undefined) {
this.isIdentity = true;
} else {
this.x = x;
this.y = y;
this.z = z;
this.isIdentity = false;
}
this.curve = curve;
};
sjcl.ecc.pointJac.prototype = {
/**
* Adds S and T and returns the result in Jacobian coordinates. Note that S must be in Jacobian coordinates and T must be in affine coordinates.
* @param {sjcl.ecc.pointJac} S One of the points to add, in Jacobian coordinates.
* @param {sjcl.ecc.point} T The other point to add, in affine coordinates.
* @return {sjcl.ecc.pointJac} The sum of the two points, in Jacobian coordinates.
*/
add: function(T) {
var S = this, sz2, c, d, c2, x1, x2, x, y1, y2, y, z;
if (S.curve !== T.curve) {
throw("sjcl.ecc.add(): Points must be on the same curve to add them!");
}
if (S.isIdentity) {
return T.toJac();
} else if (T.isIdentity) {
return S;
}
sz2 = S.z.square();
c = T.x.mul(sz2).subM(S.x);
if (c.equals(0)) {
if (S.y.equals(T.y.mul(sz2.mul(S.z)))) {
// same point
return S.doubl();
} else {
// inverses
return new sjcl.ecc.pointJac(S.curve);
}
}
d = T.y.mul(sz2.mul(S.z)).subM(S.y);
c2 = c.square();
x1 = d.square();
x2 = c.square().mul(c).addM( S.x.add(S.x).mul(c2) );
x = x1.subM(x2);
y1 = S.x.mul(c2).subM(x).mul(d);
y2 = S.y.mul(c.square().mul(c));
y = y1.subM(y2);
z = S.z.mul(c);
return new sjcl.ecc.pointJac(this.curve,x,y,z);
},
/**
* doubles this point.
* @return {sjcl.ecc.pointJac} The doubled point.
*/
doubl: function() {
if (this.isIdentity) { return this; }
var
y2 = this.y.square(),
a = y2.mul(this.x.mul(4)),
b = y2.square().mul(8),
z2 = this.z.square(),
c = this.x.sub(z2).mul(3).mul(this.x.add(z2)),
x = c.square().subM(a).subM(a),
y = a.sub(x).mul(c).subM(b),
z = this.y.add(this.y).mul(this.z);
return new sjcl.ecc.pointJac(this.curve, x, y, z);
},
/**
* Returns a copy of this point converted to affine coordinates.
* @return {sjcl.ecc.point} The converted point.
*/
toAffine: function() {
if (this.isIdentity || this.z.equals(0)) {
return new sjcl.ecc.point(this.curve);
}
var zi = this.z.inverse(), zi2 = zi.square();
return new sjcl.ecc.point(this.curve, this.x.mul(zi2).fullReduce(), this.y.mul(zi2.mul(zi)).fullReduce());
},
/**
* Multiply this point by k and return the answer in Jacobian coordinates.
* @param {bigInt} k The coefficient to multiply by.
* @param {sjcl.ecc.point} affine This point in affine coordinates.
* @return {sjcl.ecc.pointJac} The result of the multiplication, in Jacobian coordinates.
*/
mult: function(k, affine) {
if (typeof(k) === "number") {
k = [k];
} else if (k.limbs !== undefined) {
k = k.normalize().limbs;
}
var i, j, out = new sjcl.ecc.point(this.curve).toJac(), multiples = affine.multiples();
for (i=k.length-1; i>=0; i--) {
for (j=sjcl.bn.prototype.radix-4; j>=0; j-=4) {
out = out.doubl().doubl().doubl().doubl().add(multiples[k[i]>>j & 0xF]);
}
}
return out;
},
/**
* Multiply this point by k, added to affine2*k2, and return the answer in Jacobian coordinates.
* @param {bigInt} k The coefficient to multiply this by.
* @param {sjcl.ecc.point} affine This point in affine coordinates.
* @param {bigInt} k2 The coefficient to multiply affine2 this by.
* @param {sjcl.ecc.point} affine The other point in affine coordinates.
* @return {sjcl.ecc.pointJac} The result of the multiplication and addition, in Jacobian coordinates.
*/
mult2: function(k1, affine, k2, affine2) {
if (typeof(k1) === "number") {
k1 = [k1];
} else if (k1.limbs !== undefined) {
k1 = k1.normalize().limbs;
}
if (typeof(k2) === "number") {
k2 = [k2];
} else if (k2.limbs !== undefined) {
k2 = k2.normalize().limbs;
}
var i, j, out = new sjcl.ecc.point(this.curve).toJac(), m1 = affine.multiples(),
m2 = affine2.multiples(), l1, l2;
for (i=Math.max(k1.length,k2.length)-1; i>=0; i--) {
l1 = k1[i] | 0;
l2 = k2[i] | 0;
for (j=sjcl.bn.prototype.radix-4; j>=0; j-=4) {
out = out.doubl().doubl().doubl().doubl().add(m1[l1>>j & 0xF]).add(m2[l2>>j & 0xF]);
}
}
return out;
},
isValid: function() {
var z2 = this.z.square(), z4 = z2.square(), z6 = z4.mul(z2);
return this.y.square().equals(
this.curve.b.mul(z6).add(this.x.mul(
this.curve.a.mul(z4).add(this.x.square()))));
}
};
/**
* Construct an elliptic curve. Most users will not use this and instead start with one of the NIST curves defined below.
*
* @constructor
* @param {bigInt} p The prime modulus.
* @param {bigInt} pMinusR The modulus minus prime order of the curve.
* @param {bigInt} a The constant a in the equation of the curve y^2 = x^3 + ax + b (for NIST curves, a is always -3).
* @param {bigInt} x The x coordinate of a base point of the curve.
* @param {bigInt} y The y coordinate of a base point of the curve.
*/
sjcl.ecc.curve = function(Field, pMinusR, a, b, x, y) {
this.field = Field;
this.r = Field.prototype.modulus.sub(pMinusR);
this.a = new Field(a);
this.b = new Field(b);
this.G = new sjcl.ecc.point(this, new Field(x), new Field(y));
};
sjcl.ecc.curve.prototype.fromBits = function (bits) {
var w = sjcl.bitArray, l = this.field.prototype.exponent + 7 & -8,
p = new sjcl.ecc.point(this, this.field.fromBits(w.bitSlice(bits, 0, l)),
this.field.fromBits(w.bitSlice(bits, l, 2*l)));
if (!p.isValid()) {
throw new sjcl.exception.corrupt("not on the curve!");
}
return p;
};
sjcl.ecc.curves = {
c192: new sjcl.ecc.curve(
sjcl.bn.prime.p192,
"0x662107c8eb94364e4b2dd7ce",
-3,
"0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
"0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
"0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"),
c224: new sjcl.ecc.curve(
sjcl.bn.prime.p224,
"0xe95c1f470fc1ec22d6baa3a3d5c4",
-3,
"0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4",
"0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
"0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34"),
c256: new sjcl.ecc.curve(
sjcl.bn.prime.p256,
"0x4319055358e8617b0c46353d039cdaae",
-3,
"0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
"0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
"0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"),
c384: new sjcl.ecc.curve(
sjcl.bn.prime.p384,
"0x389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68c",
-3,
"0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef",
"0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7",
"0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")
};
/* Diffie-Hellman-like public-key system */
sjcl.ecc._dh = function(cn) {
sjcl.ecc[cn] = {
publicKey: function(curve_id, curve, point) {
this._curve = curve;
if (point instanceof Array) {
this._point = curve.fromBits(point);
} else {
this._point = point;
}
if (curve_id) {
this._curve_id = curve_id;
this.serialize = function() {
return {
'point': point.toBits(),
'curve': curve_id
};
}
}
},
secretKey: function(curve_id, curve, exponent) {
this._curve = curve;
this._exponent = exponent;
if (curve_id) {
this._curve_id = curve_id;
this.serialize = function() {
return {
'exponent': exponent.toBits(),
'curve': curve_id
};
}
}
},
generateKeys: function(curve, paranoia) {
var curve_id;
if (curve === undefined) {
curve = 256;
}
if (typeof curve === "number") {
curve_id = curve;
curve = sjcl.ecc.curves['c' + curve];
if (curve === undefined) {
throw new sjcl.exception.invalid("no such curve");
}
}
var sec = sjcl.bn.random(curve.r, paranoia),
pub = curve.G.mult(sec);
return {
pub: new sjcl.ecc[cn].publicKey(curve_id, curve, pub),
sec: new sjcl.ecc[cn].secretKey(curve_id, curve, sec)
};
}
};
};
sjcl.ecc._dh("elGamal");
sjcl.ecc.elGamal.publicKey.prototype = {
kem: function(paranoia) {
var sec = sjcl.bn.random(this._curve.r, paranoia),
tag = this._curve.G.mult(sec).toBits(),
key = sjcl.hash.sha256.hash(this._point.mult(sec).toBits());
return { key: key, tag: tag };
}
};
sjcl.ecc.elGamal.secretKey.prototype = {
unkem: function(tag) {
return sjcl.hash.sha256.hash(this._curve.fromBits(tag).mult(this._exponent).toBits());
},
dh: function(pk) {
return sjcl.hash.sha256.hash(pk._point.mult(this._exponent).toBits());
}
};
sjcl.ecc._dh("ecdsa");
sjcl.ecc.ecdsa.secretKey.prototype = {
sign: function(hash, paranoia) {
var R = this._curve.r,
l = R.bitLength(),
k = sjcl.bn.random(R.sub(1), paranoia).add(1),
r = this._curve.G.mult(k).x.mod(R),
s = sjcl.bn.fromBits(hash).add(r.mul(this._exponent)).inverseMod(R).mul(k).mod(R);
return sjcl.bitArray.concat(r.toBits(l), s.toBits(l));
}
};
sjcl.ecc.ecdsa.publicKey.prototype = {
verify: function(hash, rs) {
var w = sjcl.bitArray,
R = this._curve.r,
l = R.bitLength(),
r = sjcl.bn.fromBits(w.bitSlice(rs,0,l)),
s = sjcl.bn.fromBits(w.bitSlice(rs,l,2*l)),
hG = sjcl.bn.fromBits(hash).mul(s).mod(R),
hA = r.mul(s).mod(R),
r2 = this._curve.G.mult2(hG, hA, this._point).x;
if (r.equals(0) || s.equals(0) || r.greaterEquals(R) || s.greaterEquals(R) || !r2.equals(r)) {
throw (new sjcl.exception.corrupt("signature didn't check out"));
}
return true;
}
};
/*
* jsrsasign 4.2.1 (c) 2010-2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
/*
yahoo-min.js
Copyright (c) 2011, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.9.0
*/
if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var b=arguments,g=null,e,c,f;for(e=0;e<b.length;e=e+1){f=(""+b[e]).split(".");g=YAHOO;for(c=(f[0]=="YAHOO")?1:0;c<f.length;c=c+1){g[f[c]]=g[f[c]]||{};g=g[f[c]];}}return g;};YAHOO.log=function(d,a,c){var b=YAHOO.widget.Logger;if(b&&b.log){return b.log(d,a,c);}else{return false;}};YAHOO.register=function(a,f,e){var k=YAHOO.env.modules,c,j,h,g,d;if(!k[a]){k[a]={versions:[],builds:[]};}c=k[a];j=e.version;h=e.build;g=YAHOO.env.listeners;c.name=a;c.version=j;c.build=h;c.versions.push(j);c.builds.push(h);c.mainClass=f;for(d=0;d<g.length;d=d+1){g[d](c);}if(f){f.VERSION=j;f.BUILD=h;}else{YAHOO.log("mainClass is undefined for module "+a,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(a){return YAHOO.env.modules[a]||null;};YAHOO.env.parseUA=function(d){var e=function(i){var j=0;return parseFloat(i.replace(/\./g,function(){return(j++==1)?"":".";}));},h=navigator,g={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:h&&h.cajaVersion,secure:false,os:null},c=d||(navigator&&navigator.userAgent),f=window&&window.location,b=f&&f.href,a;g.secure=b&&(b.toLowerCase().indexOf("https")===0);if(c){if((/windows|win32/i).test(c)){g.os="windows";}else{if((/macintosh/i).test(c)){g.os="macintosh";}else{if((/rhino/i).test(c)){g.os="rhino";}}}if((/KHTML/).test(c)){g.webkit=1;}a=c.match(/AppleWebKit\/([^\s]*)/);if(a&&a[1]){g.webkit=e(a[1]);if(/ Mobile\//.test(c)){g.mobile="Apple";a=c.match(/OS ([^\s]*)/);if(a&&a[1]){a=e(a[1].replace("_","."));}g.ios=a;g.ipad=g.ipod=g.iphone=0;a=c.match(/iPad|iPod|iPhone/);if(a&&a[0]){g[a[0].toLowerCase()]=g.ios;}}else{a=c.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/);if(a){g.mobile=a[0];}if(/webOS/.test(c)){g.mobile="WebOS";a=c.match(/webOS\/([^\s]*);/);if(a&&a[1]){g.webos=e(a[1]);}}if(/ Android/.test(c)){g.mobile="Android";a=c.match(/Android ([^\s]*);/);if(a&&a[1]){g.android=e(a[1]);}}}a=c.match(/Chrome\/([^\s]*)/);if(a&&a[1]){g.chrome=e(a[1]);}else{a=c.match(/AdobeAIR\/([^\s]*)/);if(a){g.air=a[0];}}}if(!g.webkit){a=c.match(/Opera[\s\/]([^\s]*)/);if(a&&a[1]){g.opera=e(a[1]);a=c.match(/Version\/([^\s]*)/);if(a&&a[1]){g.opera=e(a[1]);}a=c.match(/Opera Mini[^;]*/);if(a){g.mobile=a[0];}}else{a=c.match(/MSIE\s([^;]*)/);if(a&&a[1]){g.ie=e(a[1]);}else{a=c.match(/Gecko\/([^\s]*)/);if(a){g.gecko=1;a=c.match(/rv:([^\s\)]*)/);if(a&&a[1]){g.gecko=e(a[1]);}}}}}}return g;};YAHOO.env.ua=YAHOO.env.parseUA();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var b=YAHOO_config.listener,a=YAHOO.env.listeners,d=true,c;if(b){for(c=0;c<a.length;c++){if(a[c]==b){d=false;break;}}if(d){a.push(b);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var f=YAHOO.lang,a=Object.prototype,c="[object Array]",h="[object Function]",i="[object Object]",b=[],g={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;","`":"&#x60;"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j<d.length;j=j+1){n=d[j];m=k[n];if(f.isFunction(m)&&m!=a[n]){l[n]=m;}}}:function(){},escapeHTML:function(j){return j.replace(/[&<>"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.prototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l<j.length;l=l+1){n[j[l]]=m[j[l]];}}else{for(o in m){if(k||!(o in n)){n[o]=m[o];}}f._IEEnumFix(n,m);}return n;},augmentProto:function(m,l){if(!l||!m){throw new Error("Augment failed, verify dependencies.");}var j=[m.prototype,l.prototype],k;for(k=2;k<arguments.length;k=k+1){j.push(arguments[k]);}f.augmentObject.apply(this,j);return m;},dump:function(j,p){var l,n,r=[],t="{...}",k="f(){...}",q=", ",m=" => ";if(!f.isObject(j)){return j+"";}else{if(j instanceof Date||("nodeType" in j&&"tagName" in j)){return j;}else{if(f.isFunction(j)){return k;}}}p=(f.isNumber(p))?p:3;if(f.isArray(j)){r.push("[");for(l=0,n=j.length;l<n;l=l+1){if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j;
}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m<j;m=m+1){f.augmentObject(n,k[m],true);}return n;},later:function(t,k,u,n,p){t=t||0;k=k||{};var l=u,s=n,q,j;if(f.isString(u)){l=k[u];}if(!l){throw new TypeError("method undefined");}if(!f.isUndefined(n)&&!f.isArray(s)){s=[n];}q=function(){l.apply(k,s||b);};j=(p)?setInterval(q,t):setTimeout(q,t);return{interval:p,cancel:function(){if(this.interval){clearInterval(j);}else{clearTimeout(j);}}};},isValue:function(j){return(f.isObject(j)||f.isString(j)||f.isNumber(j)||f.isBoolean(j));}};f.hasOwnProperty=(a.hasOwnProperty)?function(j,k){return j&&j.hasOwnProperty&&j.hasOwnProperty(k);}:function(j,k){return !f.isUndefined(j[k])&&j.constructor.prototype[k]!==j[k];};e.augmentObject(f,e,true);YAHOO.util.Lang=f;f.augment=f.augmentProto;YAHOO.augment=f.augmentProto;YAHOO.extend=f.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.9.0",build:"2800"});
/*! CryptoJS v3.1.2 core-fix.js
* code.google.com/p/crypto-js
* (c) 2009-2013 by Jeff Mott. All rights reserved.
* code.google.com/p/crypto-js/wiki/License
* THIS IS FIX of 'core.js' to fix Hmac issue.
* https://code.google.com/p/crypto-js/issues/detail?id=84
* https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js
*/
var CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty("init")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty("toString")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r<s;r++){var o=(p[r>>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r<s;r+=4){q[(n+r)>>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n<p;n+=4){o.push((e.random()*4294967296)|0)}return new l.init(o,p)}});var m=a.enc={};var h=m.Hex={stringify:function(p){var r=p.words;var o=p.sigBytes;var q=[];for(var n=0;n<o;n++){var s=(r[n>>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o+=2){q[o>>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o<p;o++){var s=(r[o>>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o++){q[o>>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error("Malformed UTF-8 data")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n=="string"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p<s;p+=t){this._doProcessBlock(x,p)}var o=x.splice(0,s);q.sigBytes-=r}return new l.init(o,r)},clone:function(){var n=j.clone.call(this);n._data=this._data.clone();return n},_minBufferSize:0});var f=b.Hasher=i.extend({cfg:j.extend(),init:function(n){this.cfg=this.cfg.extend(n);this.reset()},reset:function(){i.reset.call(this);this._doReset()},update:function(n){this._append(n);this._process();return this},finalize:function(n){if(n){this._append(n)}var o=this._doFinalize();return o},blockSize:512/32,_createHelper:function(n){return function(p,o){return new n.init(o).finalize(p)}},_createHmacHelper:function(n){return function(p,o){return new k.HMAC.init(n,o).finalize(p)}}});var k=a.algo={};return a}(Math));/*
CryptoJS v3.1.2 x64-core-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(g){var a=CryptoJS,f=a.lib,e=f.Base,h=f.WordArray,a=a.x64={};a.Word=e.extend({init:function(b,c){this.high=b;this.low=c}});a.WordArray=e.extend({init:function(b,c){b=this.words=b||[];this.sigBytes=c!=g?c:8*b.length},toX32:function(){for(var b=this.words,c=b.length,a=[],d=0;d<c;d++){var e=b[d];a.push(e.high);a.push(e.low)}return h.create(a,this.sigBytes)},clone:function(){for(var b=e.clone.call(this),c=b.words=this.words.slice(0),a=c.length,d=0;d<a;d++)c[d]=c[d].clone();return b}})})();
/*
CryptoJS v3.1.2 hmac-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;"string"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d<c;d++)h[d]^=1549556828,j[d]^=909522486;f.sigBytes=g.sigBytes=e;this.reset()},reset:function(){var a=this._hasher;a.reset();a.update(this._iKey)},update:function(a){this._hasher.update(a);return this},finalize:function(a){var b=
this._hasher;a=b.finalize(a);b.reset();return b.finalize(this._oKey.clone().concat(a))}})})();
/*
CryptoJS v3.1.2 sha256-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=
q[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;
b[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);
/*
CryptoJS v3.1.2 sha224-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var b=CryptoJS,d=b.lib.WordArray,a=b.algo,c=a.SHA256,a=a.SHA224=c.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=c._doFinalize.call(this);a.sigBytes-=4;return a}});b.SHA224=c._createHelper(a);b.HmacSHA224=c._createHmacHelper(a)})();
/*
CryptoJS v3.1.2 sha512-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),
a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,
2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),
a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,
3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,
F=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<
3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0<p>>>0?1:0),b=b+c,j=j+u+(b>>>0<c>>>0?1:0),b=b+t,j=j+q+(b>>>0<t>>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0<E>>>0?1:
0),c=c+t,q=q+W+(c>>>0<t>>>0?1:0),c=c+da,q=q+fa+(c>>>0<da>>>0?1:0),c=c+b,q=q+j+(c>>>0<b>>>0?1:0),b=u+T,s=p+s+(b>>>0<u>>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0<B>>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0<c>>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0<g>>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0<x>>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0<y>>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0<B>>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0<h>>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0<C>>>0?1:0);P=I.low=P+D;
I.high=ba+S+(P>>>0<D>>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0<E>>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();
/*
CryptoJS v3.1.2 sha384-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=
d._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();
/*
CryptoJS v3.1.2 md5-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(E){function h(a,f,g,j,p,h,k){a=a+(f&g|~f&j)+p+k;return(a<<h|a>>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<<h|a>>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<<k|a>>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<<k|a>>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])},
_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]),
b=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b,
c,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c,
C,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/
4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math);
/*
CryptoJS v3.1.2 enc-base64-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<
e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
/*
CryptoJS v3.1.2 cipher-core-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
CryptoJS.lib.Cipher||function(u){var g=CryptoJS,f=g.lib,k=f.Base,l=f.WordArray,q=f.BufferedBlockAlgorithm,r=g.enc.Base64,v=g.algo.EvpKDF,n=f.Cipher=q.extend({cfg:k.extend(),createEncryptor:function(a,b){return this.create(this._ENC_XFORM_MODE,a,b)},createDecryptor:function(a,b){return this.create(this._DEC_XFORM_MODE,a,b)},init:function(a,b,c){this.cfg=this.cfg.extend(c);this._xformMode=a;this._key=b;this.reset()},reset:function(){q.reset.call(this);this._doReset()},process:function(a){this._append(a);
return this._process()},finalize:function(a){a&&this._append(a);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(a){return{encrypt:function(b,c,d){return("string"==typeof c?s:j).encrypt(a,b,c,d)},decrypt:function(b,c,d){return("string"==typeof c?s:j).decrypt(a,b,c,d)}}}});f.StreamCipher=n.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var m=g.mode={},t=function(a,b,c){var d=this._iv;d?this._iv=u:d=this._prevBlock;for(var e=
0;e<c;e++)a[b+e]^=d[e]},h=(f.BlockCipherMode=k.extend({createEncryptor:function(a,b){return this.Encryptor.create(a,b)},createDecryptor:function(a,b){return this.Decryptor.create(a,b)},init:function(a,b){this._cipher=a;this._iv=b}})).extend();h.Encryptor=h.extend({processBlock:function(a,b){var c=this._cipher,d=c.blockSize;t.call(this,a,b,d);c.encryptBlock(a,b);this._prevBlock=a.slice(b,b+d)}});h.Decryptor=h.extend({processBlock:function(a,b){var c=this._cipher,d=c.blockSize,e=a.slice(b,b+d);c.decryptBlock(a,
b);t.call(this,a,b,d);this._prevBlock=e}});m=m.CBC=h;h=(g.pad={}).Pkcs7={pad:function(a,b){for(var c=4*b,c=c-a.sigBytes%c,d=c<<24|c<<16|c<<8|c,e=[],f=0;f<c;f+=4)e.push(d);c=l.create(e,c);a.concat(c)},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;
this._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;
return(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,
blockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a,
b,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}();
/*
CryptoJS v3.1.2 aes-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8,
16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h<c;h++)if(h<a)b[h]=e[h];else{var d=b[h-1];h%a?6<a&&4==h%a&&(d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255]):(d=d<<8|d>>>24,d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255],d^=F[h/a|0]<<24);b[h]=b[h-a]^d}e=this._invKeySchedule=[];for(a=0;a<c;a++)h=c-a,d=a%4?b[h]:b[h-4],e[a]=4>a||4>=h?d:s[j[d>>>24]]^u[j[d>>>16&255]]^v[j[d>>>
8&255]]^w[j[d&255]]},encryptBlock:function(c,e){this._doCryptBlock(c,e,this._keySchedule,z,A,B,C,j)},decryptBlock:function(c,e){var a=c[e+1];c[e+1]=c[e+3];c[e+3]=a;this._doCryptBlock(c,e,this._invKeySchedule,s,u,v,w,y);a=c[e+1];c[e+1]=c[e+3];c[e+3]=a},_doCryptBlock:function(c,e,a,b,h,d,j,m){for(var n=this._nRounds,f=c[e]^a[0],g=c[e+1]^a[1],k=c[e+2]^a[2],p=c[e+3]^a[3],l=4,t=1;t<n;t++)var q=b[f>>>24]^h[g>>>16&255]^d[k>>>8&255]^j[p&255]^a[l++],r=b[g>>>24]^h[k>>>16&255]^d[p>>>8&255]^j[f&255]^a[l++],s=
b[k>>>24]^h[p>>>16&255]^d[f>>>8&255]^j[g&255]^a[l++],p=b[p>>>24]^h[f>>>16&255]^d[g>>>8&255]^j[k&255]^a[l++],f=q,g=r,k=s;q=(m[f>>>24]<<24|m[g>>>16&255]<<16|m[k>>>8&255]<<8|m[p&255])^a[l++];r=(m[g>>>24]<<24|m[k>>>16&255]<<16|m[p>>>8&255]<<8|m[f&255])^a[l++];s=(m[k>>>24]<<24|m[p>>>16&255]<<16|m[f>>>8&255]<<8|m[g&255])^a[l++];p=(m[p>>>24]<<24|m[f>>>16&255]<<16|m[g>>>8&255]<<8|m[k&255])^a[l++];c[e]=q;c[e+1]=r;c[e+2]=s;c[e+3]=p},keySize:8});q.AES=x._createHelper(r)})();
/*
CryptoJS v3.1.2 tripledes-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){function j(b,c){var a=(this._lBlock>>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<<b}function l(b,c){var a=(this._rBlock>>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<<b}var h=CryptoJS,e=h.lib,n=e.WordArray,e=e.BlockCipher,g=h.algo,q=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],p=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,
55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],r=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],s=[{"0":8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,
2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,
1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{"0":1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,
75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,
276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{"0":260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,
14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,
17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{"0":2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,
98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,
1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{"0":128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,
10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,
83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{"0":268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,
2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{"0":1048576,
16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,
496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{"0":134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,
2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,
2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],t=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],m=g.DES=e.extend({_doReset:function(){for(var b=this._key.words,c=[],a=0;56>a;a++){var f=q[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=r[f],a=0;24>a;a++)d[a/6|0]|=c[(p[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(p[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>=
4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];j.call(this,4,252645135);j.call(this,16,65535);l.call(this,2,858993459);l.call(this,8,16711935);j.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,k=0;8>k;k++)g|=s[k][((h^
d[k])&t[k])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;j.call(this,1,1431655765);l.call(this,8,16711935);l.call(this,2,858993459);j.call(this,16,65535);j.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(m);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=m.createEncryptor(n.create(b.slice(0,2)));this._des2=m.createEncryptor(n.create(b.slice(2,4)));this._des3=
m.createEncryptor(n.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})();
/*
CryptoJS v3.1.2 sha1-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^
j)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})();
/*
CryptoJS v3.1.2 ripemd160-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
/*
(c) 2012 by Cedric Mesnil. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(){var q=CryptoJS,d=q.lib,n=d.WordArray,p=d.Hasher,d=q.algo,x=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),z=n.create([11,14,15,12,
5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),B=n.create([0,1518500249,1859775393,2400959708,2840853838]),C=n.create([1352829926,1548603684,1836072691,
2053994217,0]),d=d.RIPEMD160=p.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,v){for(var b=0;16>b;b++){var c=v+b,f=e[c];e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,f=B.words,d=C.words,n=x.words,q=y.words,p=z.words,w=A.words,t,g,h,j,r,u,k,l,m,s;u=t=c[0];k=g=c[1];l=h=c[2];m=j=c[3];s=r=c[4];for(var a,b=0;80>b;b+=1)a=t+e[v+n[b]]|0,a=16>b?a+((g^h^j)+f[0]):32>b?a+((g&h|~g&j)+f[1]):48>b?
a+(((g|~h)^j)+f[2]):64>b?a+((g&j|h&~j)+f[3]):a+((g^(h|~j))+f[4]),a|=0,a=a<<p[b]|a>>>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a<<w[b]|a>>>32-w[b],a=a+s|0,u=s,s=m,m=l<<10|l>>>22,l=k,k=a;a=c[1]+h+m|0;c[1]=c[2]+j+s|0;c[2]=c[3]+r+u|0;c[3]=c[4]+t+k|0;c[4]=c[0]+g+l|0;c[0]=a},_doFinalize:function(){var e=this._data,d=e.words,b=8*this._nDataBytes,c=8*e.sigBytes;
d[c>>>5]|=128<<24-c%32;d[(c+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;e.sigBytes=4*(d.length+1);this._process();e=this._hash;d=e.words;for(b=0;5>b;b++)c=d[b],d[b]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return e},clone:function(){var d=p.clone.call(this);d._hash=this._hash.clone();return d}});q.RIPEMD160=p._createHelper(d);q.HmacRIPEMD160=p._createHmacHelper(d)})(Math);
/*
CryptoJS v3.1.2 pbkdf2-min.js
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
(function(){var b=CryptoJS,a=b.lib,d=a.Base,m=a.WordArray,a=b.algo,q=a.HMAC,l=a.PBKDF2=d.extend({cfg:d.extend({keySize:4,hasher:a.SHA1,iterations:1}),init:function(a){this.cfg=this.cfg.extend(a)},compute:function(a,b){for(var c=this.cfg,f=q.create(c.hasher,a),g=m.create(),d=m.create([1]),l=g.words,r=d.words,n=c.keySize,c=c.iterations;l.length<n;){var h=f.update(b).finalize(d);f.reset();for(var j=h.words,s=j.length,k=h,p=1;p<c;p++){k=f.finalize(k);f.reset();for(var t=k.words,e=0;e<s;e++)j[e]^=t[e]}g.concat(h);
r[0]++}g.sigBytes=4*n;return g}});b.PBKDF2=function(a,b,c){return l.create(c).compute(a,b)}})();
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64pad="=";function hex2b64(d){var b;var e;var a="";for(b=0;b+3<=d.length;b+=3){e=parseInt(d.substring(b,b+3),16);a+=b64map.charAt(e>>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d="";var e;var b=0;var c;var a;for(e=0;e<f.length;++e){if(f.charAt(e)==b64pad){break}a=b64map.indexOf(f.charAt(e));if(a<0){continue}if(b==0){d+=int2char(a>>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c<d.length;++c){b[c]=parseInt(d.substring(2*c,2*c+2),16)}return b};
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
var dbits;var canary=244837814094590;var j_lm=((canary&16777215)==15715070);function BigInteger(e,d,f){if(e!=null){if("number"==typeof e){this.fromNumber(e,d,f)}else{if(d==null&&"string"!=typeof e){this.fromString(e,256)}else{this.fromString(e,d)}}}}function nbi(){return new BigInteger(null)}function am1(f,a,b,e,h,g){while(--g>=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName=="Microsoft Internet Explorer")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!="Netscape")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz";var BI_RC=new Array();var rr,vv;rr="0".charCodeAt(0);for(vv=0;vv<=9;++vv){BI_RC[rr++]=vv}rr="a".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}rr="A".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}function int2char(a){return BI_RM.charAt(a)}function intAt(b,a){var d=BI_RC[b.charCodeAt(a)];return(d==null)?-1:d}function bnpCopyTo(b){for(var a=this.t-1;a>=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)=="-"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<<f;this[this.t++]=(a>>(this.DB-f))}else{this[this.t-1]|=a<<f}}f+=e;if(f>=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<<f}}this.clamp();if(d){BigInteger.ZERO.subTo(this,this)}}function bnpClamp(){var a=this.s&this.DM;while(this.t>0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return"-"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<<e)-1,l,a=false,h="",f=this.t;var j=this.DB-(f*this.DB)%e;if(f-->0){if(j<this.DB&&(l=this[f]>>j)>0){a=true;h=int2char(l)}while(f>=0){if(j<e){l=(this[f]&((1<<j)-1))<<(e-j);l|=this[--f]>>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:"0"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a<this.t;++a){b[a-c]=this[a]}b.t=Math.max(this.t-c,0);b.s=this.s}function bnpLShiftTo(j,e){var b=j%this.DB;var a=this.DB-b;var g=(1<<a)-1;var f=Math.floor(j/this.DB),h=(this.s<<b)&this.DM,d;for(d=this.t-1;d>=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<<b}for(d=f-1;d>=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<<b)-1;d[0]=this[e]>>b;for(var c=e+1;c<this.t;++c){d[c-e-1]|=(this[c]&f)<<a;d[c-e]=this[c]>>b}if(b>0){d[this.t-e-1]|=(this.s&f)<<a}d.t=this.t-e;d.clamp()}function bnpSubTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]-d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g-=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g-=d[e];f[e++]=g&this.DM;g>>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d<f.t;++d){e[d+b.t]=b.am(0,f[d],e,d,0,b.t)}e.s=0;e.clamp();if(this.s!=c.s){BigInteger.ZERO.subTo(e,e)}}function bnpSquareTo(d){var a=this.abs();var b=d.t=2*a.t;while(--b>=0){d[b]=0}for(b=0;b<a.t-1;++b){var e=a.am(b,a[b],d,2*b,0,1);if((d[b+a.t]+=a.am(b+1,2*a[b],d,2*b+1,e,a.t-b-1))>=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t<w.t){if(h!=null){h.fromInt(0)}if(g!=null){this.copyTo(g)}return}if(g==null){g=nbi()}var d=nbi(),a=this.s,l=n.s;var v=this.DB-nbits(w[w.t-1]);if(v>0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<<this.F1)+((p>1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<<this.F1)/o,x=1<<this.F2;var u=g.t,s=u-p,f=(h==null)?nbi():h;d.dlShiftTo(s,f);if(g.compareTo(f)>=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t<p){d[d.t++]=0}while(--s>=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))<c){d.dlShiftTo(s,f);g.subTo(f,g);while(g[u]<--c){g.subTo(f,g)}}}if(h!=null){g.drShiftTo(p,h);if(a!=l){BigInteger.ZERO.subTo(h,h)}}g.t=p;g.clamp();if(v>0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c<this.m.t;++c){var b=a[c]&32767;var d=(b*this.mpl+(((b*this.mph+(a[c]>>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<<c))>0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
function bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0]}function bnByteValue(){return(this.t==0)?this.s:(this[0]<<24)>>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return"0"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g="";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c<m.length;++c){var k=intAt(m,c);if(k<0){if(m.charAt(c)=="-"&&this.signum()==0){e=true}continue}l=h*l+k;if(++a>=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if("number"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<<g)-1)}else{d[0]=0}this.fromString(d,256)}}function bnToByteArray(){var b=this.t,c=new Array();c[0]=this.s;var e=this.DB-(b*this.DB)%8,f,a=0;if(b-->0){if(e<this.DB&&(f=this[b]>>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<<e)-1))<<(8-e);f|=this[--b]>>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d<b;++d){e[d]=h(this[d],c[d])}if(c.t<this.t){g=c.s&this.DM;for(d=b;d<this.t;++d){e[d]=h(this[d],g)}e.t=this.t}else{g=this.s&this.DM;for(d=b;d<c.t;++d){e[d]=h(g,c[d])}e.t=c.t}e.s=h(this.s,c.s);e.clamp()}function op_and(a,b){return a&b}function bnAnd(b){var c=nbi();this.bitwiseTo(b,op_and,c);return c}function op_or(a,b){return a|b}function bnOr(b){var c=nbi();this.bitwiseTo(b,op_or,c);return c}function op_xor(a,b){return a^b}function bnXor(b){var c=nbi();this.bitwiseTo(b,op_xor,c);return c}function op_andnot(a,b){return a&~b}function bnAndNot(b){var c=nbi();this.bitwiseTo(b,op_andnot,c);return c}function bnNot(){var b=nbi();for(var a=0;a<this.t;++a){b[a]=this.DM&~this[a]}b.t=this.t;b.s=~this.s;return b}function bnShiftLeft(b){var a=nbi();if(b<0){this.rShiftTo(-b,a)}else{this.lShiftTo(b,a)}return a}function bnShiftRight(b){var a=nbi();if(b<0){this.lShiftTo(-b,a)}else{this.rShiftTo(b,a)}return a}function lbit(a){if(a==0){return -1}var b=0;if((a&65535)==0){a>>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a<this.t;++a){if(this[a]!=0){return a*this.DB+lbit(this[a])}}if(this.s<0){return this.t*this.DB}return -1}function cbit(a){var b=0;while(a!=0){a&=a-1;++b}return b}function bnBitCount(){var c=0,a=this.s&this.DM;for(var b=0;b<this.t;++b){c+=cbit(this[b]^a)}return c}function bnTestBit(b){var a=Math.floor(b/this.DB);if(a>=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]+d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g+=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g+=d[e];f[e++]=g&this.DM;g>>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d<c;++d){e[d+this.t]=this.am(0,b[d],e,d,0,this.t)}for(c=Math.min(b.t,f);d<c;++d){this.am(0,b[d],e,d,0,f-d)}e.clamp()}function bnpMultiplyUpperTo(b,e,d){--e;var c=d.t=this.t+b.t-e;d.s=0;while(--c>=0){d[c]=0}for(c=Math.max(e-this.t,0);c<b.t;++c){d[this.t+c-e]=this.am(e-c,b[c],d,0,0,this.t+c-e)}d.clamp();d.drShiftTo(1,d)}function Barrett(a){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}function barrettConvert(a){if(a.s<0||a.t>2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<<h)-1;p[1]=v.convert(this);if(h>1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<<o))==0){v.sqrTo(b,c);y=b;b=c;c=y;if(--o<0){o=this.DB-1;--l}}}return v.revert(b)}function bnGCD(c){var b=(this.s<0)?this.negate():this.clone();var h=(c.s<0)?c.negate():c.clone();if(b.compareTo(h)<0){var e=b;b=h;h=e}var d=b.getLowestSetBit(),f=h.getLowestSetBit();if(f<0){return b}if(d<f){f=d}if(f>0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[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,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d<lowprimes.length;++d){if(b[0]==lowprimes[d]){return true}}return false}if(b.isEven()){return false}d=1;while(d<lowprimes.length){var a=lowprimes[d],c=d+1;while(c<lowprimes.length&&a<lplim){a*=lowprimes[c++]}a=b.modInt(a);while(d<c){if(a%lowprimes[d++]==0){return false}}}return b.millerRabin(e)}function bnpMillerRabin(f){var g=this.subtract(BigInteger.ONE);var c=g.getLowestSetBit();if(c<=0){return false}var h=g.shiftRight(c);f=(f+1)>>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e<f;++e){b.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var l=b.modPow(h,this);if(l.compareTo(BigInteger.ONE)!=0&&l.compareTo(g)!=0){var d=1;while(d++<c&&l.compareTo(g)!=0){l=l.modPowInt(2,this);if(l.compareTo(BigInteger.ONE)==0){return false}}if(l.compareTo(g)!=0){return false}}}return true}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare;
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
function Arcfour(){this.i=0;this.j=0;this.S=new Array()}function ARC4init(d){var c,a,b;for(c=0;c<256;++c){this.S[c]=c}a=0;for(c=0;c<256;++c){a=(a+this.S[c]+d[c%d.length])&255;b=this.S[c];this.S[c]=this.S[a];this.S[a]=b}this.i=0;this.j=0}function ARC4next(){var a;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[(a+this.S[this.i])&255]}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;function prng_newstate(){return new Arcfour()}var rng_psize=256;
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
var rng_state;var rng_pool;var rng_pptr;function rng_seed_int(a){rng_pool[rng_pptr++]^=a&255;rng_pool[rng_pptr++]^=(a>>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(navigator.appName=="Netscape"&&navigator.appVersion<"5"&&window.crypto){var z=window.crypto.random(32);for(t=0;t<z.length;++t){rng_pool[rng_pptr++]=z.charCodeAt(t)&255}}while(rng_pptr<rng_psize){t=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=t>>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr){rng_pool[rng_pptr]=0}rng_pptr=0}return rng_state.next()}function rng_get_bytes(b){var a;for(a=0;a<b.length;++a){b[a]=rng_get_byte()}}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
function parseBigInt(b,a){return new BigInteger(b,a)}function linebrk(c,d){var a="";var b=0;while(b+d<c.length){a+=c.substring(b,b+d)+"\n";b+=d}return a+c.substring(b,c.length)}function byte2Hex(a){if(a<16){return"0"+a.toString(16)}else{return a.toString(16)}}function pkcs1pad2(e,h){if(h<e.length+11){alert("Message too long for RSA");return null}var g=new Array();var d=e.length-1;while(d>=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b="",d=0;while(b.length<a){b+=e(String.fromCharCode.apply(String,c.concat([(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}var SHA1_SIZE=20;function oaep_pad(l,a,c){if(l.length+2*SHA1_SIZE+2>a){throw"Message too long for RSA"}var h="",d;for(d=0;d<a-l.length-2*SHA1_SIZE-2;d+=1){h+="\x00"}var e=rstr_sha1("")+h+"\x01"+l;var f=new Array(SHA1_SIZE);new SecureRandom().nextBytes(f);var g=oaep_mgf1_arr(f,e.length,c||rstr_sha1);var k=[];for(d=0;d<e.length;d+=1){k[d]=e.charCodeAt(d)^g.charCodeAt(d)}var j=oaep_mgf1_arr(k,f.length,rstr_sha1);var b=[0];for(d=0;d<f.length;d+=1){b[d+1]=f[d]^j.charCodeAt(d)}return new BigInteger(b.concat(k))}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function RSASetPublic(b,a){this.isPublic=true;if(typeof b!=="string"){this.n=b;this.e=a}else{if(b!=null&&a!=null&&b.length>0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{alert("Invalid RSA public key")}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return"0"+b}}function RSAEncryptOAEP(e,d){var a=oaep_pad(e,(this.n.bitLength()+7)>>3,d);if(a==null){return null}var f=this.doPublic(a);if(f==null){return null}var b=f.toString(16);if((b.length&1)==0){return b}else{return"0"+b}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type="RSA";
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
function pkcs1unpad2(g,j){var a=g.toByteArray();var f=0;while(f<a.length&&a[f]==0){++f}if(a.length-f!=j-1||a[f]!=2){return null}++f;while(a[f]!=0){if(++f>=a.length){return null}}var e="";while(++f<a.length){var h=a[f]&255;if(h<128){e+=String.fromCharCode(h)}else{if((h>191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b="",d=0;while(b.length<a){b+=e(c+String.fromCharCode.apply(String,[(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}var SHA1_SIZE=20;function oaep_unpad(l,b,e){l=l.toByteArray();var f;for(f=0;f<l.length;f+=1){l[f]&=255}while(l.length<b){l.unshift(0)}l=String.fromCharCode.apply(String,l);if(l.length<2*SHA1_SIZE+2){throw"Cipher too short"}var c=l.substr(1,SHA1_SIZE);var o=l.substr(SHA1_SIZE+1);var m=oaep_mgf1_str(o,SHA1_SIZE,e||rstr_sha1);var h=[],f;for(f=0;f<c.length;f+=1){h[f]=c.charCodeAt(f)^m.charCodeAt(f)}var j=oaep_mgf1_str(String.fromCharCode.apply(String,h),l.length-SHA1_SIZE,rstr_sha1);var g=[];for(f=0;f<o.length;f+=1){g[f]=o.charCodeAt(f)^j.charCodeAt(f)}g=String.fromCharCode.apply(String,g);if(g.substr(0,SHA1_SIZE)!==rstr_sha1("")){throw"Hash mismatch"}g=g.substr(SHA1_SIZE);var a=g.indexOf("\x01");var k=(a!=-1)?g.substr(0,a).lastIndexOf("\x00"):-1;if(k+1!=a){throw"Malformed data"}return g.substr(a+1)}function RSASetPrivate(c,a,b){this.isPrivate=true;if(typeof c!=="string"){this.n=c;this.e=a;this.d=b}else{if(c!=null&&a!=null&&c.length>0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{alert("Invalid RSA private key")}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){this.isPrivate=true;if(g==null){throw"RSASetPrivateEx N == null"}if(d==null){throw"RSASetPrivateEx E == null"}if(g.length==0){throw"RSASetPrivateEx N.length == 0"}if(d.length==0){throw"RSASetPrivateEx E.length == 0"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{alert("Invalid RSA private key in RSASetPrivateEx")}}function RSAGenerate(b,i){var a=new SecureRandom();var f=b>>1;this.e=parseInt(i,16);var c=new BigInteger(i,16);for(;;){for(;;){this.p=new BigInteger(b-f,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(f,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var h=this.p;this.p=this.q;this.q=h}var g=this.p.subtract(BigInteger.ONE);var d=this.q.subtract(BigInteger.ONE);var e=g.multiply(d);if(e.gcd(c).compareTo(BigInteger.ONE)==0){this.n=this.p.multiply(this.q);this.d=c.modInverse(e);this.dmp1=this.d.mod(g);this.dmq1=this.d.mod(d);this.coeff=this.q.modInverse(this.p);break}}}function RSADoPrivate(a){if(this.p==null||this.q==null){return a.modPow(this.d,this.n)}var c=a.mod(this.p).modPow(this.dmp1,this.p);var b=a.mod(this.q).modPow(this.dmq1,this.q);while(c.compareTo(b)<0){c=c.add(this.p)}return c.subtract(b).multiply(this.coeff).mod(this.p).multiply(this.q).add(b)}function RSADecrypt(b){var d=parseBigInt(b,16);var a=this.doPrivate(d);if(a==null){return null}return pkcs1unpad2(a,(this.n.bitLength()+7)>>3)}function RSADecryptOAEP(d,b){var e=parseBigInt(d,16);var a=this.doPrivate(e);if(a==null){return null}return oaep_unpad(a,(this.n.bitLength()+7)>>3,b)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.generate=RSAGenerate;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP;
/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/
*/
function ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger("3");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger("3");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger("3"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add(a?this:l)}}return d}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;
/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib
*/
ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(f<g.length){g=g.slice(g.length-f)}else{while(f>g.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger("3"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error("Point is at infinity.")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error("x coordinate out of bounds")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error("y coordinate out of bounds")}if(!this.isOnCurve()){throw new Error("Point is not on the curve.")}if(this.multiply(c).isInfinity()){throw new Error("Point is not a scalar multiple of G.")}return true};
/*! asn1-1.0.4.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d<e;d++){g+="f"}var c=new BigInteger(g,16);var b=c.xor(j).add(BigInteger.ONE);f=b.toString(16).replace(/^-/,"")}return f};this.getPEMStringFromHex=function(a,b){var c=KJUR.asn1;var f=CryptoJS.enc.Hex.parse(a);var d=CryptoJS.enc.Base64.stringify(f);var e=d.replace(/(.{64})/g,"$1\r\n");e=e.replace(/\r\n$/,"");return"-----BEGIN "+b+"-----\r\n"+e+"\r\n-----END "+b+"-----\r\n"};this.newObject=function(b){var g=KJUR.asn1;var k=Object.keys(b);if(k.length!=1){throw"key of param shall be only one."}var j=k[0];if(":bool:int:bitstr:octstr:null:oid:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:".indexOf(":"+j+":")==-1){throw"undefined key: "+j}if(j=="bool"){return new g.DERBoolean(b[j])}if(j=="int"){return new g.DERInteger(b[j])}if(j=="bitstr"){return new g.DERBitString(b[j])}if(j=="octstr"){return new g.DEROctetString(b[j])}if(j=="null"){return new g.DERNull(b[j])}if(j=="oid"){return new g.DERObjectIdentifier(b[j])}if(j=="utf8str"){return new g.DERUTF8String(b[j])}if(j=="numstr"){return new g.DERNumericString(b[j])}if(j=="prnstr"){return new g.DERPrintableString(b[j])}if(j=="telstr"){return new g.DERTeletexString(b[j])}if(j=="ia5str"){return new g.DERIA5String(b[j])}if(j=="utctime"){return new g.DERUTCTime(b[j])}if(j=="gentime"){return new g.DERGeneralizedTime(b[j])}if(j=="seq"){var m=b[j];var h=[];for(var e=0;e<m.length;e++){var l=g.ASN1Util.newObject(m[e]);h.push(l)}return new g.DERSequence({array:h})}if(j=="set"){var m=b[j];var h=[];for(var e=0;e<m.length;e++){var l=g.ASN1Util.newObject(m[e]);h.push(l)}return new g.DERSet({array:h})}if(j=="tag"){var c=b[j];if(Object.prototype.toString.call(c)==="[object Array]"&&c.length==3){var d=g.ASN1Util.newObject(c[2]);return new g.DERTaggedObject({tag:c[0],explicit:c[1],obj:d})}else{var f={};if(c.explicit!==undefined){f.explicit=c.explicit}if(c.tag!==undefined){f.tag=c.tag}if(c.obj===undefined){throw"obj shall be specified for 'tag'."}f.obj=g.ASN1Util.newObject(c.obj);return new g.DERTaggedObject(f)}}};this.jsonToASN1HEX=function(b){var a=this.newObject(b);return a.getEncodedHex()}};KJUR.asn1.ASN1Object=function(){var c=true;var b=null;var d="00";var e="00";var a="";this.getLengthHexFromValue=function(){if(typeof this.hV=="undefined"||this.hV==null){throw"this.hV is null or undefined."}if(this.hV.length%2==1){throw"value hex must be even length: n="+a.length+",v="+this.hV}var i=this.hV.length/2;var h=i.toString(16);if(h.length%2==1){h="0"+h}if(i<128){return h}else{var g=h.length/2;if(g>15){throw"ASN.1 length too long to represent by 8x: n = "+i.toString(16)}var f=128+g;return f.toString(16)+h}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return""}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(this.s)};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(f){utc=f.getTime()+(f.getTimezoneOffset()*60000);var e=new Date(utc);return e};this.formatDate=function(j,l){var e=this.zeroPadding;var k=this.localDateToUTC(j);var m=String(k.getFullYear());if(l=="utc"){m=m.substr(2,2)}var i=e(String(k.getMonth()+1),2);var n=e(String(k.getDate()),2);var f=e(String(k.getHours()),2);var g=e(String(k.getMinutes()),2);var h=e(String(k.getSeconds()),2);return m+i+n+f+g+h+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";this.hTLV="0101ff"};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(a){KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(b){this.hTLV=null;this.isModified=true;this.hV=b};this.setUnusedBitsAndHexValue=function(b,d){if(b<0||7<b){throw"unused bits shall be from 0 to 7: u = "+b}var c="0"+b;this.hTLV=null;this.isModified=true;this.hV=c+d};this.setByBinaryString=function(e){e=e.replace(/0+$/,"");var f=8-e.length%8;if(f==8){f=0}for(var g=0;g<=f;g++){e+="0"}var j="";for(var g=0;g<e.length-1;g+=8){var d=e.substr(g,8);var c=parseInt(d,2).toString(16);if(c.length==1){c="0"+c}j+=c}this.hTLV=null;this.isModified=true;this.hV="0"+f+j};this.setByBooleanArray=function(d){var c="";for(var b=0;b<d.length;b++){if(d[b]==true){c+="1"}else{c+="0"}}this.setByBinaryString(c)};this.newFalseArray=function(d){var b=new Array(d);for(var c=0;c<d;c++){b[c]=false}return b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a=="string"&&a.toLowerCase().match(/^[0-9a-f]+$/)){this.setHexValueIncludingUnusedBits(a)}else{if(typeof a.hex!="undefined"){this.setHexValueIncludingUnusedBits(a.hex)}else{if(typeof a.bin!="undefined"){this.setByBinaryString(a.bin)}else{if(typeof a.array!="undefined"){this.setByBooleanArray(a.array)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object);KJUR.asn1.DEROctetString=function(a){KJUR.asn1.DEROctetString.superclass.constructor.call(this,a);this.hT="04"};YAHOO.lang.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT="05";this.hTLV="0500"};YAHOO.lang.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object);KJUR.asn1.DERObjectIdentifier=function(c){var b=function(d){var e=d.toString(16);if(e.length==1){e="0"+e}return e};var a=function(k){var j="";var e=new BigInteger(k,10);var d=e.toString(2);var f=7-d.length%7;if(f==7){f=0}var m="";for(var g=0;g<f;g++){m+="0"}d=m+d;for(var g=0;g<d.length-1;g+=7){var l=d.substr(g,7);if(g!=d.length-7){l="1"+l}j+=b(parseInt(l,2))}return j};KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT="06";this.setValueHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.setValueOidString=function(f){if(!f.match(/^[0-9.]+$/)){throw"malformed oid string: "+f}var g="";var d=f.split(".");var j=parseInt(d[0])*40+parseInt(d[1]);g+=b(j);d.splice(0,2);for(var e=0;e<d.length;e++){g+=a(d[e])}this.hTLV=null;this.isModified=true;this.s=null;this.hV=g};this.setValueName=function(e){if(typeof KJUR.asn1.x509.OID.name2oidList[e]!="undefined"){var d=KJUR.asn1.x509.OID.name2oidList[e];this.setValueOidString(d)}else{throw"DERObjectIdentifier oidName undefined: "+e}};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"&&c.match(/^[0-2].[0-9.]+$/)){this.setValueOidString(c)}else{if(KJUR.asn1.x509.OID.name2oidList[c]!==undefined){this.setValueOidString(KJUR.asn1.x509.OID.name2oidList[c])}else{if(typeof c.oid!="undefined"){this.setValueOidString(c.oid)}else{if(typeof c.hex!="undefined"){this.setValueHex(c.hex)}else{if(typeof c.name!="undefined"){this.setValueName(c.name)}}}}}}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.DERUTF8String=function(a){KJUR.asn1.DERUTF8String.superclass.constructor.call(this,a);this.hT="0c"};YAHOO.lang.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNumericString=function(a){KJUR.asn1.DERNumericString.superclass.constructor.call(this,a);this.hT="12"};YAHOO.lang.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERPrintableString=function(a){KJUR.asn1.DERPrintableString.superclass.constructor.call(this,a);this.hT="13"};YAHOO.lang.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERTeletexString=function(a){KJUR.asn1.DERTeletexString.superclass.constructor.call(this,a);this.hT="14"};YAHOO.lang.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERIA5String=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT="16"};YAHOO.lang.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERUTCTime=function(a){KJUR.asn1.DERUTCTime.superclass.constructor.call(this,a);this.hT="17";this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,"utc");this.hV=stohex(this.s)};if(typeof a!="undefined"){if(typeof a.str!="undefined"){this.setString(a.str)}else{if(typeof a=="string"&&a.match(/^[0-9]{12}Z$/)){this.setString(a)}else{if(typeof a.hex!="undefined"){this.setStringHex(a.hex)}else{if(typeof a.date!="undefined"){this.setByDate(a.date)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERGeneralizedTime=function(a){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this,a);this.hT="18";this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,"gen");this.hV=stohex(this.s)};if(typeof a!="undefined"){if(typeof a.str!="undefined"){this.setString(a.str)}else{if(typeof a=="string"&&a.match(/^[0-9]{14}Z$/)){this.setString(a)}else{if(typeof a.hex!="undefined"){this.setStringHex(a.hex)}else{if(typeof a.date!="undefined"){this.setByDate(a.date)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERSequence=function(a){KJUR.asn1.DERSequence.superclass.constructor.call(this,a);this.hT="30";this.getFreshValueHex=function(){var c="";for(var b=0;b<this.asn1Array.length;b++){var d=this.asn1Array[b];c+=d.getEncodedHex()}this.hV=c;return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERSet=function(a){KJUR.asn1.DERSet.superclass.constructor.call(this,a);this.hT="31";this.getFreshValueHex=function(){var b=new Array();for(var c=0;c<this.asn1Array.length;c++){var d=this.asn1Array[c];b.push(d.getEncodedHex())}b.sort();this.hV=b.join("");return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERTaggedObject=function(a){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);this.hT="a0";this.hV="";this.isExplicit=true;this.asn1Object=null;this.setASN1Object=function(b,c,d){this.hT=c;this.isExplicit=b;this.asn1Object=d;if(this.isExplicit){this.hV=this.asn1Object.getEncodedHex();this.hTLV=null;this.isModified=true}else{this.hV=null;this.hTLV=d.getEncodedHex();this.hTLV=this.hTLV.replace(/^../,c);this.isModified=false}};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.tag!="undefined"){this.hT=a.tag}if(typeof a.explicit!="undefined"){this.isExplicit=a.explicit}if(typeof a.obj!="undefined"){this.asn1Object=a.obj;this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object);
/*! asn1hex-1.1.4.js (c) 2012-2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
var ASN1HEX=new function(){this.getByteLengthOfL_AtObj=function(b,c){if(b.substring(c+2,c+3)!="8"){return 1}var a=parseInt(b.substring(c+3,c+4));if(a==0){return -1}if(0<a&&a<10){return a+1}return -2};this.getHexOfL_AtObj=function(b,c){var a=this.getByteLengthOfL_AtObj(b,c);if(a<1){return""}return b.substring(c+2,c+2+a*2)};this.getIntOfL_AtObj=function(c,d){var b=this.getHexOfL_AtObj(c,d);if(b==""){return -1}var a;if(parseInt(b.substring(0,1))<8){a=new BigInteger(b,16)}else{a=new BigInteger(b.substring(2),16)}return a.intValue()};this.getStartPosOfV_AtObj=function(b,c){var a=this.getByteLengthOfL_AtObj(b,c);if(a<0){return a}return c+(a+1)*2};this.getHexOfV_AtObj=function(c,d){var b=this.getStartPosOfV_AtObj(c,d);var a=this.getIntOfL_AtObj(c,d);return c.substring(b,b+a*2)};this.getHexOfTLV_AtObj=function(c,e){var b=c.substr(e,2);var d=this.getHexOfL_AtObj(c,e);var a=this.getHexOfV_AtObj(c,e);return b+d+a};this.getPosOfNextSibling_AtObj=function(c,d){var b=this.getStartPosOfV_AtObj(c,d);var a=this.getIntOfL_AtObj(c,d);return b+a*2};this.getPosArrayOfChildren_AtObj=function(f,j){var c=new Array();var i=this.getStartPosOfV_AtObj(f,j);c.push(i);var b=this.getIntOfL_AtObj(f,j);var g=i;var d=0;while(1){var e=this.getPosOfNextSibling_AtObj(f,g);if(e==null||(e-i>=(b*2))){break}if(d>=200){break}c.push(e);g=e;d++}return c};this.getNthChildIndex_AtObj=function(d,b,e){var c=this.getPosArrayOfChildren_AtObj(d,b);return c[e]};this.getDecendantIndexByNthList=function(e,d,c){if(c.length==0){return d}var f=c.shift();var b=this.getPosArrayOfChildren_AtObj(e,d);return this.getDecendantIndexByNthList(e,b[f],c)};this.getDecendantHexTLVByNthList=function(d,c,b){var a=this.getDecendantIndexByNthList(d,c,b);return this.getHexOfTLV_AtObj(d,a)};this.getDecendantHexVByNthList=function(d,c,b){var a=this.getDecendantIndexByNthList(d,c,b);return this.getHexOfV_AtObj(d,a)}};ASN1HEX.getVbyList=function(d,c,b,e){var a=this.getDecendantIndexByNthList(d,c,b);if(a===undefined){throw"can't find nthList object"}if(e!==undefined){if(d.substr(a,2)!=e){throw"checking tag doesn't match: "+d.substr(a,2)+"!="+e}}return this.getHexOfV_AtObj(d,a)};
/*! asn1x509-1.0.7.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}if(typeof KJUR.asn1.x509=="undefined"||!KJUR.asn1.x509){KJUR.asn1.x509={}}KJUR.asn1.x509.Certificate=function(g){KJUR.asn1.x509.Certificate.superclass.constructor.call(this);var b=null;var d=null;var f=null;var c=null;var a=null;var e=null;this.setRsaPrvKeyByPEMandPass=function(i,k){var h=PKCS5PKEY.getDecryptedKeyHex(i,k);var j=new RSAKey();j.readPrivateKeyFromASN1HexString(h);this.prvKey=j};this.sign=function(){this.asn1SignatureAlg=this.asn1TBSCert.asn1SignatureAlg;sig=new KJUR.crypto.Signature({alg:"SHA1withRSA"});sig.init(this.prvKey);sig.updateHex(this.asn1TBSCert.getEncodedHex());this.hexSig=sig.sign();this.asn1Sig=new KJUR.asn1.DERBitString({hex:"00"+this.hexSig});var h=new KJUR.asn1.DERSequence({array:[this.asn1TBSCert,this.asn1SignatureAlg,this.asn1Sig]});this.hTLV=h.getEncodedHex();this.isModified=false};this.getEncodedHex=function(){if(this.isModified==false&&this.hTLV!=null){return this.hTLV}throw"not signed yet"};this.getPEMString=function(){var j=this.getEncodedHex();var h=CryptoJS.enc.Hex.parse(j);var i=CryptoJS.enc.Base64.stringify(h);var k=i.replace(/(.{64})/g,"$1\r\n");return"-----BEGIN CERTIFICATE-----\r\n"+k+"\r\n-----END CERTIFICATE-----\r\n"};if(typeof g!="undefined"){if(typeof g.tbscertobj!="undefined"){this.asn1TBSCert=g.tbscertobj}if(typeof g.prvkeyobj!="undefined"){this.prvKey=g.prvkeyobj}else{if(typeof g.rsaprvkey!="undefined"){this.prvKey=g.rsaprvkey}else{if((typeof g.rsaprvpem!="undefined")&&(typeof g.rsaprvpas!="undefined")){this.setRsaPrvKeyByPEMandPass(g.rsaprvpem,g.rsaprvpas)}}}}};YAHOO.lang.extend(KJUR.asn1.x509.Certificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.TBSCertificate=function(a){KJUR.asn1.x509.TBSCertificate.superclass.constructor.call(this);this._initialize=function(){this.asn1Array=new Array();this.asn1Version=new KJUR.asn1.DERTaggedObject({obj:new KJUR.asn1.DERInteger({"int":2})});this.asn1SerialNumber=null;this.asn1SignatureAlg=null;this.asn1Issuer=null;this.asn1NotBefore=null;this.asn1NotAfter=null;this.asn1Subject=null;this.asn1SubjPKey=null;this.extensionsArray=new Array()};this.setSerialNumberByParam=function(b){this.asn1SerialNumber=new KJUR.asn1.DERInteger(b)};this.setSignatureAlgByParam=function(b){this.asn1SignatureAlg=new KJUR.asn1.x509.AlgorithmIdentifier(b)};this.setIssuerByParam=function(b){this.asn1Issuer=new KJUR.asn1.x509.X500Name(b)};this.setNotBeforeByParam=function(b){this.asn1NotBefore=new KJUR.asn1.x509.Time(b)};this.setNotAfterByParam=function(b){this.asn1NotAfter=new KJUR.asn1.x509.Time(b)};this.setSubjectByParam=function(b){this.asn1Subject=new KJUR.asn1.x509.X500Name(b)};this.setSubjectPublicKeyByParam=function(b){this.asn1SubjPKey=new KJUR.asn1.x509.SubjectPublicKeyInfo(b)};this.setSubjectPublicKeyByGetKey=function(c){var b=KEYUTIL.getKey(c);this.asn1SubjPKey=new KJUR.asn1.x509.SubjectPublicKeyInfo(b)};this.appendExtension=function(b){this.extensionsArray.push(b)};this.appendExtensionByName=function(d,b){if(d.toLowerCase()=="basicconstraints"){var c=new KJUR.asn1.x509.BasicConstraints(b);this.appendExtension(c)}else{if(d.toLowerCase()=="keyusage"){var c=new KJUR.asn1.x509.KeyUsage(b);this.appendExtension(c)}else{if(d.toLowerCase()=="crldistributionpoints"){var c=new KJUR.asn1.x509.CRLDistributionPoints(b);this.appendExtension(c)}else{if(d.toLowerCase()=="extkeyusage"){var c=new KJUR.asn1.x509.ExtKeyUsage(b);this.appendExtension(c)}else{throw"unsupported extension name: "+d}}}}};this.getEncodedHex=function(){if(this.asn1NotBefore==null||this.asn1NotAfter==null){throw"notBefore and/or notAfter not set"}var c=new KJUR.asn1.DERSequence({array:[this.asn1NotBefore,this.asn1NotAfter]});this.asn1Array=new Array();this.asn1Array.push(this.asn1Version);this.asn1Array.push(this.asn1SerialNumber);this.asn1Array.push(this.asn1SignatureAlg);this.asn1Array.push(this.asn1Issuer);this.asn1Array.push(c);this.asn1Array.push(this.asn1Subject);this.asn1Array.push(this.asn1SubjPKey);if(this.extensionsArray.length>0){var d=new KJUR.asn1.DERSequence({array:this.extensionsArray});var b=new KJUR.asn1.DERTaggedObject({explicit:true,tag:"a3",obj:d});this.asn1Array.push(b)}var e=new KJUR.asn1.DERSequence({array:this.asn1Array});this.hTLV=e.getEncodedHex();this.isModified=false;return this.hTLV};this._initialize()};YAHOO.lang.extend(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extension=function(b){KJUR.asn1.x509.Extension.superclass.constructor.call(this);var a=null;this.getEncodedHex=function(){var f=new KJUR.asn1.DERObjectIdentifier({oid:this.oid});var e=new KJUR.asn1.DEROctetString({hex:this.getExtnValueHex()});var d=new Array();d.push(f);if(this.critical){d.push(new KJUR.asn1.DERBoolean())}d.push(e);var c=new KJUR.asn1.DERSequence({array:d});return c.getEncodedHex()};this.critical=false;if(typeof b!="undefined"){if(typeof b.critical!="undefined"){this.critical=b.critical}}};YAHOO.lang.extend(KJUR.asn1.x509.Extension,KJUR.asn1.ASN1Object);KJUR.asn1.x509.KeyUsage=function(a){KJUR.asn1.x509.KeyUsage.superclass.constructor.call(this,a);this.getExtnValueHex=function(){return this.asn1ExtnValue.getEncodedHex()};this.oid="2.5.29.15";if(typeof a!="undefined"){if(typeof a.bin!="undefined"){this.asn1ExtnValue=new KJUR.asn1.DERBitString(a)}}};YAHOO.lang.extend(KJUR.asn1.x509.KeyUsage,KJUR.asn1.x509.Extension);KJUR.asn1.x509.BasicConstraints=function(c){KJUR.asn1.x509.BasicConstraints.superclass.constructor.call(this,c);var a=false;var b=-1;this.getExtnValueHex=function(){var e=new Array();if(this.cA){e.push(new KJUR.asn1.DERBoolean())}if(this.pathLen>-1){e.push(new KJUR.asn1.DERInteger({"int":this.pathLen}))}var d=new KJUR.asn1.DERSequence({array:e});this.asn1ExtnValue=d;return this.asn1ExtnValue.getEncodedHex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(typeof c!="undefined"){if(typeof c.cA!="undefined"){this.cA=c.cA}if(typeof c.pathLen!="undefined"){this.pathLen=c.pathLen}}};YAHOO.lang.extend(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(a){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,a);this.getExtnValueHex=function(){return this.asn1ExtnValue.getEncodedHex()};this.setByDPArray=function(b){this.asn1ExtnValue=new KJUR.asn1.DERSequence({array:b})};this.setByOneURI=function(e){var b=new KJUR.asn1.x509.GeneralNames([{uri:e}]);var d=new KJUR.asn1.x509.DistributionPointName(b);var c=new KJUR.asn1.x509.DistributionPoint({dpobj:d});this.setByDPArray([c])};this.oid="2.5.29.31";if(typeof a!="undefined"){if(typeof a.array!="undefined"){this.setByDPArray(a.array)}else{if(typeof a.uri!="undefined"){this.setByOneURI(a.uri)}}}};YAHOO.lang.extend(KJUR.asn1.x509.CRLDistributionPoints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.ExtKeyUsage=function(a){KJUR.asn1.x509.ExtKeyUsage.superclass.constructor.call(this,a);this.setPurposeArray=function(b){this.asn1ExtnValue=new KJUR.asn1.DERSequence();for(var c=0;c<b.length;c++){var d=new KJUR.asn1.DERObjectIdentifier(b[c]);this.asn1ExtnValue.appendASN1Object(d)}};this.getExtnValueHex=function(){return this.asn1ExtnValue.getEncodedHex()};this.oid="2.5.29.37";if(typeof a!="undefined"){if(typeof a.array!="undefined"){this.setPurposeArray(a.array)}}};YAHOO.lang.extend(KJUR.asn1.x509.ExtKeyUsage,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRL=function(f){KJUR.asn1.x509.CRL.superclass.constructor.call(this);var a=null;var c=null;var e=null;var b=null;var d=null;this.setRsaPrvKeyByPEMandPass=function(h,j){var g=PKCS5PKEY.getDecryptedKeyHex(h,j);var i=new RSAKey();i.readPrivateKeyFromASN1HexString(g);this.rsaPrvKey=i};this.sign=function(){this.asn1SignatureAlg=this.asn1TBSCertList.asn1SignatureAlg;sig=new KJUR.crypto.Signature({alg:"SHA1withRSA",prov:"cryptojs/jsrsa"});sig.initSign(this.rsaPrvKey);sig.updateHex(this.asn1TBSCertList.getEncodedHex());this.hexSig=sig.sign();this.asn1Sig=new KJUR.asn1.DERBitString({hex:"00"+this.hexSig});var g=new KJUR.asn1.DERSequence({array:[this.asn1TBSCertList,this.asn1SignatureAlg,this.asn1Sig]});this.hTLV=g.getEncodedHex();this.isModified=false};this.getEncodedHex=function(){if(this.isModified==false&&this.hTLV!=null){return this.hTLV}throw"not signed yet"};this.getPEMString=function(){var i=this.getEncodedHex();var g=CryptoJS.enc.Hex.parse(i);var h=CryptoJS.enc.Base64.stringify(g);var j=h.replace(/(.{64})/g,"$1\r\n");return"-----BEGIN X509 CRL-----\r\n"+j+"\r\n-----END X509 CRL-----\r\n"};if(typeof f!="undefined"){if(typeof f.tbsobj!="undefined"){this.asn1TBSCertList=f.tbsobj}if(typeof f.rsaprvkey!="undefined"){this.rsaPrvKey=f.rsaprvkey}if((typeof f.rsaprvpem!="undefined")&&(typeof f.rsaprvpas!="undefined")){this.setRsaPrvKeyByPEMandPass(f.rsaprvpem,f.rsaprvpas)}}};YAHOO.lang.extend(KJUR.asn1.x509.CRL,KJUR.asn1.ASN1Object);KJUR.asn1.x509.TBSCertList=function(b){KJUR.asn1.x509.TBSCertList.superclass.constructor.call(this);var a=null;this.setSignatureAlgByParam=function(c){this.asn1SignatureAlg=new KJUR.asn1.x509.AlgorithmIdentifier(c)};this.setIssuerByParam=function(c){this.asn1Issuer=new KJUR.asn1.x509.X500Name(c)};this.setThisUpdateByParam=function(c){this.asn1ThisUpdate=new KJUR.asn1.x509.Time(c)};this.setNextUpdateByParam=function(c){this.asn1NextUpdate=new KJUR.asn1.x509.Time(c)};this.addRevokedCert=function(c,d){var f={};if(c!=undefined&&c!=null){f.sn=c}if(d!=undefined&&d!=null){f.time=d}var e=new KJUR.asn1.x509.CRLEntry(f);this.aRevokedCert.push(e)};this.getEncodedHex=function(){this.asn1Array=new Array();if(this.asn1Version!=null){this.asn1Array.push(this.asn1Version)}this.asn1Array.push(this.asn1SignatureAlg);this.asn1Array.push(this.asn1Issuer);this.asn1Array.push(this.asn1ThisUpdate);if(this.asn1NextUpdate!=null){this.asn1Array.push(this.asn1NextUpdate)}if(this.aRevokedCert.length>0){var c=new KJUR.asn1.DERSequence({array:this.aRevokedCert});this.asn1Array.push(c)}var d=new KJUR.asn1.DERSequence({array:this.asn1Array});this.hTLV=d.getEncodedHex();this.isModified=false;return this.hTLV};this._initialize=function(){this.asn1Version=null;this.asn1SignatureAlg=null;this.asn1Issuer=null;this.asn1ThisUpdate=null;this.asn1NextUpdate=null;this.aRevokedCert=new Array()};this._initialize()};YAHOO.lang.extend(KJUR.asn1.x509.TBSCertList,KJUR.asn1.ASN1Object);KJUR.asn1.x509.CRLEntry=function(c){KJUR.asn1.x509.CRLEntry.superclass.constructor.call(this);var b=null;var a=null;this.setCertSerial=function(d){this.sn=new KJUR.asn1.DERInteger(d)};this.setRevocationDate=function(d){this.time=new KJUR.asn1.x509.Time(d)};this.getEncodedHex=function(){var d=new KJUR.asn1.DERSequence({array:[this.sn,this.time]});this.TLV=d.getEncodedHex();return this.TLV};if(typeof c!="undefined"){if(typeof c.time!="undefined"){this.setRevocationDate(c.time)}if(typeof c.sn!="undefined"){this.setCertSerial(c.sn)}}};YAHOO.lang.extend(KJUR.asn1.x509.CRLEntry,KJUR.asn1.ASN1Object);KJUR.asn1.x509.X500Name=function(a){KJUR.asn1.x509.X500Name.superclass.constructor.call(this);this.asn1Array=new Array();this.setByString=function(b){var c=b.split("/");c.shift();for(var d=0;d<c.length;d++){this.asn1Array.push(new KJUR.asn1.x509.RDN({str:c[d]}))}};this.getEncodedHex=function(){var b=new KJUR.asn1.DERSequence({array:this.asn1Array});this.TLV=b.getEncodedHex();return this.TLV};if(typeof a!="undefined"){if(typeof a.str!="undefined"){this.setByString(a.str)}}};YAHOO.lang.extend(KJUR.asn1.x509.X500Name,KJUR.asn1.ASN1Object);KJUR.asn1.x509.RDN=function(a){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=new Array();this.addByString=function(b){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:b}))};this.getEncodedHex=function(){var b=new KJUR.asn1.DERSet({array:this.asn1Array});this.TLV=b.getEncodedHex();return this.TLV};if(typeof a!="undefined"){if(typeof a.str!="undefined"){this.addByString(a.str)}}};YAHOO.lang.extend(KJUR.asn1.x509.RDN,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AttributeTypeAndValue=function(b){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);var d=null;var c=null;var a="utf8";this.setByString=function(e){if(e.match(/^([^=]+)=(.+)$/)){this.setByAttrTypeAndValueStr(RegExp.$1,RegExp.$2)}else{throw"malformed attrTypeAndValueStr: "+e}};this.setByAttrTypeAndValueStr=function(g,f){this.typeObj=KJUR.asn1.x509.OID.atype2obj(g);var e=a;if(g=="C"){e="prn"}this.valueObj=this.getValueObj(e,f)};this.getValueObj=function(f,e){if(f=="utf8"){return new KJUR.asn1.DERUTF8String({str:e})}if(f=="prn"){return new KJUR.asn1.DERPrintableString({str:e})}if(f=="tel"){return new KJUR.asn1.DERTeletexString({str:e})}if(f=="ia5"){return new KJUR.asn1.DERIA5String({str:e})}throw"unsupported directory string type: type="+f+" value="+e};this.getEncodedHex=function(){var e=new KJUR.asn1.DERSequence({array:[this.typeObj,this.valueObj]});this.TLV=e.getEncodedHex();return this.TLV};if(typeof b!="undefined"){if(typeof b.str!="undefined"){this.setByString(b.str)}}};YAHOO.lang.extend(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(d){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var b=null;var c=null;var a=null;this.setRSAKey=function(e){if(!RSAKey.prototype.isPrototypeOf(e)){throw"argument is not RSAKey instance"}this.rsaKey=e;var g=new KJUR.asn1.DERInteger({bigint:e.n});var f=new KJUR.asn1.DERInteger({"int":e.e});var i=new KJUR.asn1.DERSequence({array:[g,f]});var h=i.getEncodedHex();this.asn1AlgId=new KJUR.asn1.x509.AlgorithmIdentifier({name:"rsaEncryption"});this.asn1SubjPKey=new KJUR.asn1.DERBitString({hex:"00"+h})};this.setRSAPEM=function(g){if(g.match(/-----BEGIN PUBLIC KEY-----/)){var n=g;n=n.replace(/^-----[^-]+-----/,"");n=n.replace(/-----[^-]+-----\s*$/,"");var m=n.replace(/\s+/g,"");var f=CryptoJS.enc.Base64.parse(m);var i=CryptoJS.enc.Hex.stringify(f);var k=_rsapem_getHexValueArrayOfChildrenFromHex(i);var h=k[1];var l=h.substr(2);var e=_rsapem_getHexValueArrayOfChildrenFromHex(l);var j=new RSAKey();j.setPublic(e[0],e[1]);this.setRSAKey(j)}else{throw"key not supported"}};this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var e=new KJUR.asn1.DERSequence({array:[this.asn1AlgId,this.asn1SubjPKey]});return e};this.getEncodedHex=function(){var e=this.getASN1Object();this.hTLV=e.getEncodedHex();return this.hTLV};this._setRSAKey=function(e){var g=KJUR.asn1.ASN1Util.newObject({seq:[{"int":{bigint:e.n}},{"int":{"int":e.e}}]});var f=g.getEncodedHex();this.asn1AlgId=new KJUR.asn1.x509.AlgorithmIdentifier({name:"rsaEncryption"});this.asn1SubjPKey=new KJUR.asn1.DERBitString({hex:"00"+f})};this._setEC=function(e){var f=new KJUR.asn1.DERObjectIdentifier({name:e.curveName});this.asn1AlgId=new KJUR.asn1.x509.AlgorithmIdentifier({name:"ecPublicKey",asn1params:f});this.asn1SubjPKey=new KJUR.asn1.DERBitString({hex:"00"+e.pubKeyHex})};this._setDSA=function(e){var f=new KJUR.asn1.ASN1Util.newObject({seq:[{"int":{bigint:e.p}},{"int":{bigint:e.q}},{"int":{bigint:e.g}}]});this.asn1AlgId=new KJUR.asn1.x509.AlgorithmIdentifier({name:"dsa",asn1params:f});var g=new KJUR.asn1.DERInteger({bigint:e.y});this.asn1SubjPKey=new KJUR.asn1.DERBitString({hex:"00"+g.getEncodedHex()})};if(typeof d!="undefined"){if(typeof RSAKey!="undefined"&&d instanceof RSAKey){this._setRSAKey(d)}else{if(typeof KJUR.crypto.ECDSA!="undefined"&&d instanceof KJUR.crypto.ECDSA){this._setEC(d)}else{if(typeof KJUR.crypto.DSA!="undefined"&&d instanceof KJUR.crypto.DSA){this._setDSA(d)}else{if(typeof d.rsakey!="undefined"){this.setRSAKey(d.rsakey)}else{if(typeof d.rsapem!="undefined"){this.setRSAPEM(d.rsapem)}}}}}}};YAHOO.lang.extend(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(c){KJUR.asn1.x509.Time.superclass.constructor.call(this);var b=null;var a=null;this.setTimeParams=function(d){this.timeParams=d};this.getEncodedHex=function(){if(this.timeParams==null){throw"timeParams shall be specified. ({'str':'130403235959Z'}}"}var d=null;if(this.type=="utc"){d=new KJUR.asn1.DERUTCTime(this.timeParams)}else{d=new KJUR.asn1.DERGeneralizedTime(this.timeParams)}this.TLV=d.getEncodedHex();return this.TLV};this.type="utc";if(typeof c!="undefined"){if(typeof c.type!="undefined"){this.type=c.type}this.timeParams=c}};YAHOO.lang.extend(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);var a=null;var d=null;var b=null;var c=false;this.getEncodedHex=function(){if(this.nameAlg==null&&this.asn1Alg==null){throw"algorithm not specified"}if(this.nameAlg!=null&&this.asn1Alg==null){this.asn1Alg=KJUR.asn1.x509.OID.name2obj(this.nameAlg)}var f=[this.asn1Alg];if(!this.paramEmpty){f.push(this.asn1Params)}var g=new KJUR.asn1.DERSequence({array:f});this.hTLV=g.getEncodedHex();return this.hTLV};if(typeof e!="undefined"){if(typeof e.name!="undefined"){this.nameAlg=e.name}if(typeof e.asn1params!="undefined"){this.asn1Params=e.asn1params}if(typeof e.paramempty!="undefined"){this.paramEmpty=e.paramempty}}if(this.asn1Params==null){this.asn1Params=new KJUR.asn1.DERNull()}};YAHOO.lang.extend(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralName=function(d){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var c=null;var b=null;var a={rfc822:"81",dns:"82",uri:"86"};this.setByParam=function(g){var f=null;var e=null;if(typeof g.rfc822!="undefined"){this.type="rfc822";e=new KJUR.asn1.DERIA5String({str:g[this.type]})}if(typeof g.dns!="undefined"){this.type="dns";e=new KJUR.asn1.DERIA5String({str:g[this.type]})}if(typeof g.uri!="undefined"){this.type="uri";e=new KJUR.asn1.DERIA5String({str:g[this.type]})}if(this.type==null){throw"unsupported type in params="+g}this.asn1Obj=new KJUR.asn1.DERTaggedObject({explicit:false,tag:a[this.type],obj:e})};this.getEncodedHex=function(){return this.asn1Obj.getEncodedHex()};if(typeof d!="undefined"){this.setByParam(d)}};YAHOO.lang.extend(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(b){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null;this.setByParamArray=function(e){for(var c=0;c<e.length;c++){var d=new KJUR.asn1.x509.GeneralName(e[c]);this.asn1Array.push(d)}};this.getEncodedHex=function(){var c=new KJUR.asn1.DERSequence({array:this.asn1Array});return c.getEncodedHex()};this.asn1Array=new Array();if(typeof b!="undefined"){this.setByParamArray(b)}};YAHOO.lang.extend(KJUR.asn1.x509.GeneralNames,KJUR.asn1.ASN1Object);KJUR.asn1.x509.DistributionPointName=function(b){KJUR.asn1.x509.DistributionPointName.superclass.constructor.call(this);var e=null;var c=null;var a=null;var d=null;this.getEncodedHex=function(){if(this.type!="full"){throw"currently type shall be 'full': "+this.type}this.asn1Obj=new KJUR.asn1.DERTaggedObject({explicit:false,tag:this.tag,obj:this.asn1V});this.hTLV=this.asn1Obj.getEncodedHex();return this.hTLV};if(typeof b!="undefined"){if(KJUR.asn1.x509.GeneralNames.prototype.isPrototypeOf(b)){this.type="full";this.tag="a0";this.asn1V=b}else{throw"This class supports GeneralNames only as argument"}}};YAHOO.lang.extend(KJUR.asn1.x509.DistributionPointName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.DistributionPoint=function(b){KJUR.asn1.x509.DistributionPoint.superclass.constructor.call(this);var a=null;this.getEncodedHex=function(){var c=new KJUR.asn1.DERSequence();if(this.asn1DP!=null){var d=new KJUR.asn1.DERTaggedObject({explicit:true,tag:"a0",obj:this.asn1DP});c.appendASN1Object(d)}this.hTLV=c.getEncodedHex();return this.hTLV};if(typeof b!="undefined"){if(typeof b.dpobj!="undefined"){this.asn1DP=b.dpobj}}};YAHOO.lang.extend(KJUR.asn1.x509.DistributionPoint,KJUR.asn1.ASN1Object);KJUR.asn1.x509.OID=new function(a){this.atype2oidList={C:"2.5.4.6",O:"2.5.4.10",OU:"2.5.4.11",ST:"2.5.4.8",L:"2.5.4.7",CN:"2.5.4.3",};this.name2oidList={sha384:"2.16.840.1.101.3.4.2.2",sha224:"2.16.840.1.101.3.4.2.4",MD2withRSA:"1.2.840.113549.1.1.2",MD4withRSA:"1.2.840.113549.1.1.3",MD5withRSA:"1.2.840.113549.1.1.4",SHA1withRSA:"1.2.840.113549.1.1.5",SHA224withRSA:"1.2.840.113549.1.1.14",SHA256withRSA:"1.2.840.113549.1.1.11",SHA384withRSA:"1.2.840.113549.1.1.12",SHA512withRSA:"1.2.840.113549.1.1.13",SHA1withECDSA:"1.2.840.10045.4.1",SHA224withECDSA:"1.2.840.10045.4.3.1",SHA256withECDSA:"1.2.840.10045.4.3.2",SHA384withECDSA:"1.2.840.10045.4.3.3",SHA512withECDSA:"1.2.840.10045.4.3.4",dsa:"1.2.840.10040.4.1",SHA1withDSA:"1.2.840.10040.4.3",SHA224withDSA:"2.16.840.1.101.3.4.3.1",SHA256withDSA:"2.16.840.1.101.3.4.3.2",rsaEncryption:"1.2.840.113549.1.1.1",subjectKeyIdentifier:"2.5.29.14",countryName:"2.5.4.6",organization:"2.5.4.10",organizationalUnit:"2.5.4.11",stateOrProvinceName:"2.5.4.8",locality:"2.5.4.7",commonName:"2.5.4.3",keyUsage:"2.5.29.15",basicConstraints:"2.5.29.19",cRLDistributionPoints:"2.5.29.31",certificatePolicies:"2.5.29.32",authorityKeyIdentifier:"2.5.29.35",extKeyUsage:"2.5.29.37",anyExtendedKeyUsage:"2.5.29.37.0",serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",emailProtection:"1.3.6.1.5.5.7.3.4",timeStamping:"1.3.6.1.5.5.7.3.8",ocspSigning:"1.3.6.1.5.5.7.3.9",ecPublicKey:"1.2.840.10045.2.1",secp256r1:"1.2.840.10045.3.1.7",secp256k1:"1.3.132.0.10",secp384r1:"1.3.132.0.34",pkcs5PBES2:"1.2.840.113549.1.5.13",pkcs5PBKDF2:"1.2.840.113549.1.5.12","des-EDE3-CBC":"1.2.840.113549.3.7",};this.objCache={};this.name2obj=function(b){if(typeof this.objCache[b]!="undefined"){return this.objCache[b]}if(typeof this.name2oidList[b]=="undefined"){throw"Name of ObjectIdentifier not defined: "+b}var c=this.name2oidList[b];var d=new KJUR.asn1.DERObjectIdentifier({oid:c});this.objCache[b]=d;return d};this.atype2obj=function(b){if(typeof this.objCache[b]!="undefined"){return this.objCache[b]}if(typeof this.atype2oidList[b]=="undefined"){throw"AttributeType name undefined: "+b}var c=this.atype2oidList[b];var d=new KJUR.asn1.DERObjectIdentifier({oid:c});this.objCache[b]=d;return d}};KJUR.asn1.x509.X509Util=new function(){this.getPKCS8PubKeyPEMfromRSAKey=function(i){var h=null;var f=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(i.n);var j=KJUR.asn1.ASN1Util.integerToByteHex(i.e);var a=new KJUR.asn1.DERInteger({hex:f});var g=new KJUR.asn1.DERInteger({hex:j});var l=new KJUR.asn1.DERSequence({array:[a,g]});var c=l.getEncodedHex();var d=new KJUR.asn1.x509.AlgorithmIdentifier({name:"rsaEncryption"});var b=new KJUR.asn1.DERBitString({hex:"00"+c});var k=new KJUR.asn1.DERSequence({array:[d,b]});var e=k.getEncodedHex();var h=KJUR.asn1.ASN1Util.getPEMStringFromHex(e,"PUBLIC KEY");return h}};KJUR.asn1.x509.X509Util.newCertPEM=function(f){var c=KJUR.asn1.x509;var e=new c.TBSCertificate();if(f.serial!==undefined){e.setSerialNumberByParam(f.serial)}else{throw"serial number undefined."}if(typeof f.sigalg.name=="string"){e.setSignatureAlgByParam(f.sigalg)}else{throw"unproper signature algorithm name"}if(f.issuer!==undefined){e.setIssuerByParam(f.issuer)}else{throw"issuer name undefined."}if(f.notbefore!==undefined){e.setNotBeforeByParam(f.notbefore)}else{throw"notbefore undefined."}if(f.notafter!==undefined){e.setNotAfterByParam(f.notafter)}else{throw"notafter undefined."}if(f.subject!==undefined){e.setSubjectByParam(f.subject)}else{throw"subject name undefined."}if(f.sbjpubkey!==undefined){e.setSubjectPublicKeyByGetKey(f.sbjpubkey)}else{throw"subject public key undefined."}if(f.ext.length!==undefined){for(var b=0;b<f.ext.length;b++){for(key in f.ext[b]){e.appendExtensionByName(key,f.ext[b][key])}}}var d=null;if(f.cakey){d=KEYUTIL.getKey.apply(null,f.cakey)}else{throw"ca key undefined"}var a=new c.Certificate({tbscertobj:e,prvkeyobj:d});a.sign();return a.getPEMString()};
/*! base64x-1.1.2 (c) 2013 Kenji Urushima | kjur.github.com/jsjws/license
*/
function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c<d.length;c++){b[c]=d.charCodeAt(c)}return b}function BAtos(b){var d="";for(var c=0;c<b.length;c++){d=d+String.fromCharCode(b[c])}return d}function BAtohex(b){var e="";for(var d=0;d<b.length;d++){var c=b[d].toString(16);if(c.length==1){c="0"+c}e=e+c}return e}function stohex(a){return BAtohex(stoBA(a))}function stob64(a){return hex2b64(stohex(a))}function stob64u(a){return b64tob64u(hex2b64(stohex(a)))}function b64utos(a){return BAtos(b64toBA(b64utob64(a)))}function b64tob64u(a){a=a.replace(/\=/g,"");a=a.replace(/\+/g,"-");a=a.replace(/\//g,"_");return a}function b64utob64(a){if(a.length%4==2){a=a+"=="}else{if(a.length%4==3){a=a+"="}}a=a.replace(/-/g,"+");a=a.replace(/_/g,"/");return a}function hextob64u(a){return b64tob64u(hex2b64(a))}function b64utohex(a){return b64tohex(b64utob64(a))}var utf8tob64u,b64utoutf8;if(typeof Buffer==="function"){utf8tob64u=function(a){return b64tob64u(new Buffer(a,"utf8").toString("base64"))};b64utoutf8=function(a){return new Buffer(b64utob64(a),"base64").toString("utf8")}}else{utf8tob64u=function(a){return hextob64u(uricmptohex(encodeURIComponentAll(a)))};b64utoutf8=function(a){return decodeURIComponent(hextouricmp(b64utohex(a)))}}function utf8tob64(a){return hex2b64(uricmptohex(encodeURIComponentAll(a)))}function b64toutf8(a){return decodeURIComponent(hextouricmp(b64tohex(a)))}function utf8tohex(a){return uricmptohex(encodeURIComponentAll(a))}function hextoutf8(a){return decodeURIComponent(hextouricmp(a))}function hextorstr(c){var b="";for(var a=0;a<c.length-1;a+=2){b+=String.fromCharCode(parseInt(c.substr(a,2),16))}return b}function rstrtohex(c){var a="";for(var b=0;b<c.length;b++){a+=("0"+c.charCodeAt(b).toString(16)).slice(-2)}return a}function uricmptohex(a){return a.replace(/%/g,"")}function hextouricmp(a){return a.replace(/(..)/g,"%$1")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c<d.length;c++){if(d[c]=="%"){b=b+d.substr(c,3);c=c+2}else{b=b+"%"+stohex(d[c])}}return b}function newline_toUnix(a){a=a.replace(/\r\n/mg,"\n");return a}function newline_toDos(a){a=a.replace(/\r\n/mg,"\n");a=a.replace(/\n/mg,"\r\n");return a};
/*! crypto-1.1.5.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:"CryptoJS.algo.MD5",sha1:"CryptoJS.algo.SHA1",sha224:"CryptoJS.algo.SHA224",sha256:"CryptoJS.algo.SHA256",sha384:"CryptoJS.algo.SHA384",sha512:"CryptoJS.algo.SHA512",ripemd160:"CryptoJS.algo.RIPEMD160"};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f<l;f+=2){g+="ff"}var e=b+g+k;return e};this.hashString=function(a,c){var b=new KJUR.crypto.MessageDigest({alg:c});return b.digestString(a)};this.hashHex=function(b,c){var a=new KJUR.crypto.MessageDigest({alg:c});return a.digestHex(b)};this.sha1=function(a){var b=new KJUR.crypto.MessageDigest({alg:"sha1",prov:"cryptojs"});return b.digestString(a)};this.sha256=function(a){var b=new KJUR.crypto.MessageDigest({alg:"sha256",prov:"cryptojs"});return b.digestString(a)};this.sha256Hex=function(a){var b=new KJUR.crypto.MessageDigest({alg:"sha256",prov:"cryptojs"});return b.digestHex(a)};this.sha512=function(a){var b=new KJUR.crypto.MessageDigest({alg:"sha512",prov:"cryptojs"});return b.digestString(a)};this.sha512Hex=function(a){var b=new KJUR.crypto.MessageDigest({alg:"sha512",prov:"cryptojs"});return b.digestHex(a)};this.md5=function(a){var b=new KJUR.crypto.MessageDigest({alg:"md5",prov:"cryptojs"});return b.digestString(a)};this.ripemd160=function(a){var b=new KJUR.crypto.MessageDigest({alg:"ripemd160",prov:"cryptojs"});return b.digestString(a)};this.getCryptoJSMDByName=function(a){}};KJUR.crypto.MessageDigest=function(params){var md=null;var algName=null;var provName=null;this.setAlgAndProvider=function(alg,prov){if(alg!=null&&prov===undefined){prov=KJUR.crypto.Util.DEFAULTPROVIDER[alg]}if(":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:".indexOf(alg)!=-1&&prov=="cryptojs"){try{this.md=eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[alg]).create()}catch(ex){throw"setAlgAndProvider hash alg set fail alg="+alg+"/"+ex}this.updateString=function(str){this.md.update(str)};this.updateHex=function(hex){var wHex=CryptoJS.enc.Hex.parse(hex);this.md.update(wHex)};this.digest=function(){var hash=this.md.finalize();return hash.toString(CryptoJS.enc.Hex)};this.digestString=function(str){this.updateString(str);return this.digest()};this.digestHex=function(hex){this.updateHex(hex);return this.digest()}}if(":sha256:".indexOf(alg)!=-1&&prov=="sjcl"){try{this.md=new sjcl.hash.sha256()}catch(ex){throw"setAlgAndProvider hash alg set fail alg="+alg+"/"+ex}this.updateString=function(str){this.md.update(str)};this.updateHex=function(hex){var baHex=sjcl.codec.hex.toBits(hex);this.md.update(baHex)};this.digest=function(){var hash=this.md.finalize();return sjcl.codec.hex.fromBits(hash)};this.digestString=function(str){this.updateString(str);return this.digest()};this.digestHex=function(hex){this.updateHex(hex);return this.digest()}}};this.updateString=function(str){throw"updateString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.updateHex=function(hex){throw"updateHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digest=function(){throw"digest() not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digestString=function(str){throw"digestString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digestHex=function(hex){throw"digestHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName};if(params!==undefined){if(params.alg!==undefined){this.algName=params.alg;if(params.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.Mac=function(params){var mac=null;var pass=null;var algName=null;var provName=null;var algProv=null;this.setAlgAndProvider=function(alg,prov){if(alg==null){alg="hmacsha1"}alg=alg.toLowerCase();if(alg.substr(0,4)!="hmac"){throw"setAlgAndProvider unsupported HMAC alg: "+alg}if(prov===undefined){prov=KJUR.crypto.Util.DEFAULTPROVIDER[alg]}this.algProv=alg+"/"+prov;var hashAlg=alg.substr(4);if(":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:".indexOf(hashAlg)!=-1&&prov=="cryptojs"){try{var mdObj=eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[hashAlg]);this.mac=CryptoJS.algo.HMAC.create(mdObj,this.pass)}catch(ex){throw"setAlgAndProvider hash alg set fail hashAlg="+hashAlg+"/"+ex}this.updateString=function(str){this.mac.update(str)};this.updateHex=function(hex){var wHex=CryptoJS.enc.Hex.parse(hex);this.mac.update(wHex)};this.doFinal=function(){var hash=this.mac.finalize();return hash.toString(CryptoJS.enc.Hex)};this.doFinalString=function(str){this.updateString(str);return this.doFinal()};this.doFinalHex=function(hex){this.updateHex(hex);return this.doFinal()}}};this.updateString=function(str){throw"updateString(str) not supported for this alg/prov: "+this.algProv};this.updateHex=function(hex){throw"updateHex(hex) not supported for this alg/prov: "+this.algProv};this.doFinal=function(){throw"digest() not supported for this alg/prov: "+this.algProv};this.doFinalString=function(str){throw"digestString(str) not supported for this alg/prov: "+this.algProv};this.doFinalHex=function(hex){throw"digestHex(hex) not supported for this alg/prov: "+this.algProv};if(params!==undefined){if(params.pass!==undefined){this.pass=params.pass}if(params.alg!==undefined){this.algName=params.alg;if(params.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.Signature=function(o){var q=null;var n=null;var r=null;var c=null;var l=null;var d=null;var k=null;var h=null;var p=null;var e=null;var b=-1;var g=null;var j=null;var a=null;var i=null;var f=null;this._setAlgNames=function(){if(this.algName.match(/^(.+)with(.+)$/)){this.mdAlgName=RegExp.$1.toLowerCase();this.pubkeyAlgName=RegExp.$2.toLowerCase()}};this._zeroPaddingOfSignature=function(x,w){var v="";var t=w/4-x.length;for(var u=0;u<t;u++){v=v+"0"}return v+x};this.setAlgAndProvider=function(u,t){this._setAlgNames();if(t!="cryptojs/jsrsa"){throw"provider not supported: "+t}if(":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:".indexOf(this.mdAlgName)!=-1){try{this.md=new KJUR.crypto.MessageDigest({alg:this.mdAlgName})}catch(s){throw"setAlgAndProvider hash alg set fail alg="+this.mdAlgName+"/"+s}this.init=function(w,x){var y=null;try{if(x===undefined){y=KEYUTIL.getKey(w)}else{y=KEYUTIL.getKey(w,x)}}catch(v){throw"init failed:"+v}if(y.isPrivate===true){this.prvKey=y;this.state="SIGN"}else{if(y.isPublic===true){this.pubKey=y;this.state="VERIFY"}else{throw"init failed.:"+y}}};this.initSign=function(v){if(typeof v.ecprvhex=="string"&&typeof v.eccurvename=="string"){this.ecprvhex=v.ecprvhex;this.eccurvename=v.eccurvename}else{this.prvKey=v}this.state="SIGN"};this.initVerifyByPublicKey=function(v){if(typeof v.ecpubhex=="string"&&typeof v.eccurvename=="string"){this.ecpubhex=v.ecpubhex;this.eccurvename=v.eccurvename}else{if(v instanceof KJUR.crypto.ECDSA){this.pubKey=v}else{if(v instanceof RSAKey){this.pubKey=v}}}this.state="VERIFY"};this.initVerifyByCertificatePEM=function(v){var w=new X509();w.readCertPEM(v);this.pubKey=w.subjectPublicKeyRSA;this.state="VERIFY"};this.updateString=function(v){this.md.updateString(v)};this.updateHex=function(v){this.md.updateHex(v)};this.sign=function(){this.sHashHex=this.md.digest();if(typeof this.ecprvhex!="undefined"&&typeof this.eccurvename!="undefined"){var v=new KJUR.crypto.ECDSA({curve:this.eccurvename});this.hSign=v.signHex(this.sHashHex,this.ecprvhex)}else{if(this.pubkeyAlgName=="rsaandmgf1"){this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen)}else{if(this.pubkeyAlgName=="rsa"){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName)}else{if(this.prvKey instanceof KJUR.crypto.ECDSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{if(this.prvKey instanceof KJUR.crypto.DSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{throw"Signature: unsupported public key alg: "+this.pubkeyAlgName}}}}}return this.hSign};this.signString=function(v){this.updateString(v);this.sign()};this.signHex=function(v){this.updateHex(v);this.sign()};this.verify=function(v){this.sHashHex=this.md.digest();if(typeof this.ecpubhex!="undefined"&&typeof this.eccurvename!="undefined"){var w=new KJUR.crypto.ECDSA({curve:this.eccurvename});return w.verifyHex(this.sHashHex,v,this.ecpubhex)}else{if(this.pubkeyAlgName=="rsaandmgf1"){return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,v,this.mdAlgName,this.pssSaltLen)}else{if(this.pubkeyAlgName=="rsa"){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(this.pubKey instanceof KJUR.crypto.ECDSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(this.pubKey instanceof KJUR.crypto.DSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{throw"Signature: unsupported public key alg: "+this.pubkeyAlgName}}}}}}}};this.init=function(s,t){throw"init(key, pass) not supported for this alg:prov="+this.algProvName};this.initVerifyByPublicKey=function(s){throw"initVerifyByPublicKey(rsaPubKeyy) not supported for this alg:prov="+this.algProvName};this.initVerifyByCertificatePEM=function(s){throw"initVerifyByCertificatePEM(certPEM) not supported for this alg:prov="+this.algProvName};this.initSign=function(s){throw"initSign(prvKey) not supported for this alg:prov="+this.algProvName};this.updateString=function(s){throw"updateString(str) not supported for this alg:prov="+this.algProvName};this.updateHex=function(s){throw"updateHex(hex) not supported for this alg:prov="+this.algProvName};this.sign=function(){throw"sign() not supported for this alg:prov="+this.algProvName};this.signString=function(s){throw"digestString(str) not supported for this alg:prov="+this.algProvName};this.signHex=function(s){throw"digestHex(hex) not supported for this alg:prov="+this.algProvName};this.verify=function(s){throw"verify(hSigVal) not supported for this alg:prov="+this.algProvName};this.initParams=o;if(o!==undefined){if(o.alg!==undefined){this.algName=o.alg;if(o.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}else{this.provName=o.prov}this.algProvName=this.algName+":"+this.provName;this.setAlgAndProvider(this.algName,this.provName);this._setAlgNames()}if(o.psssaltlen!==undefined){this.pssSaltLen=o.psssaltlen}if(o.prvkeypem!==undefined){if(o.prvkeypas!==undefined){throw"both prvkeypem and prvkeypas parameters not supported"}else{try{var q=new RSAKey();q.readPrivateKeyFromPEMString(o.prvkeypem);this.initSign(q)}catch(m){throw"fatal error to load pem private key: "+m}}}}};KJUR.crypto.OID=new function(){this.oidhex2name={"2a864886f70d010101":"rsaEncryption","2a8648ce3d0201":"ecPublicKey","2a8648ce380401":"dsa","2a8648ce3d030107":"secp256r1","2b8104001f":"secp192k1","2b81040021":"secp224r1","2b8104000a":"secp256k1","2b81040023":"secp521r1","2b81040022":"secp384r1","2a8648ce380403":"SHA1withDSA","608648016503040301":"SHA224withDSA","608648016503040302":"SHA256withDSA",}};
/*! ecdsa-modified-1.0.4.js (c) Stephan Thomas, Kenji Urushima | github.com/bitcoinjs/bitcoinjs-lib/blob/master/LICENSE
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECDSA=function(h){var e="secp256r1";var g=null;var b=null;var f=null;var a=new SecureRandom();var d=null;this.type="EC";function c(s,o,r,n){var j=Math.max(o.bitLength(),n.bitLength());var t=s.add2D(r);var q=s.curve.getInfinity();for(var p=j-1;p>=0;--p){q=q.twice2D();q.z=BigInteger.ONE;if(o.testBit(p)){if(n.testBit(p)){q=q.add2D(t)}else{q=q.add2D(s)}}else{if(n.testBit(p)){q=q.add2D(r)}}}return q}this.getBigRandom=function(i){return new BigInteger(i.bitLength(),a).mod(i.subtract(BigInteger.ONE)).add(BigInteger.ONE)};this.setNamedCurve=function(i){this.ecparams=KJUR.crypto.ECParameterDB.getByName(i);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=i};this.setPrivateKeyHex=function(i){this.isPrivate=true;this.prvKeyHex=i};this.setPublicKeyHex=function(i){this.isPublic=true;this.pubKeyHex=i};this.generateKeyPairHex=function(){var k=this.ecparams.n;var n=this.getBigRandom(k);var l=this.ecparams.G.multiply(n);var q=l.getX().toBigInteger();var o=l.getY().toBigInteger();var i=this.ecparams.keylen/4;var m=("0000000000"+n.toString(16)).slice(-i);var r=("0000000000"+q.toString(16)).slice(-i);var p=("0000000000"+o.toString(16)).slice(-i);var j="04"+r+p;this.setPrivateKeyHex(m);this.setPublicKeyHex(j);return{ecprvhex:m,ecpubhex:j}};this.signWithMessageHash=function(i){return this.signHex(i,this.prvKeyHex)};this.signHex=function(o,j){var t=new BigInteger(j,16);var l=this.ecparams.n;var q=new BigInteger(o,16);do{var m=this.getBigRandom(l);var u=this.ecparams.G;var p=u.multiply(m);var i=p.getX().toBigInteger().mod(l)}while(i.compareTo(BigInteger.ZERO)<=0);var v=m.modInverse(l).multiply(q.add(t.multiply(i))).mod(l);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(i,v)};this.sign=function(m,u){var q=u;var j=this.ecparams.n;var p=BigInteger.fromByteArrayUnsigned(m);do{var l=this.getBigRandom(j);var t=this.ecparams.G;var o=t.multiply(l);var i=o.getX().toBigInteger().mod(j)}while(i.compareTo(BigInteger.ZERO)<=0);var v=l.modInverse(j).multiply(p.add(q.multiply(i))).mod(j);return this.serializeSig(i,v)};this.verifyWithMessageHash=function(j,i){return this.verifyHex(j,i,this.pubKeyHex)};this.verifyHex=function(m,i,p){var l,j;var o=KJUR.crypto.ECDSA.parseSigHex(i);l=o.r;j=o.s;var k;k=ECPointFp.decodeFromHex(this.ecparams.curve,p);var n=new BigInteger(m,16);return this.verifyRaw(n,l,j,k)};this.verify=function(o,p,j){var l,i;if(Bitcoin.Util.isArray(p)){var n=this.parseSig(p);l=n.r;i=n.s}else{if("object"===typeof p&&p.r&&p.s){l=p.r;i=p.s}else{throw"Invalid value for signature"}}var k;if(j instanceof ECPointFp){k=j}else{if(Bitcoin.Util.isArray(j)){k=ECPointFp.decodeFrom(this.ecparams.curve,j)}else{throw"Invalid format for pubkey value, must be byte array or ECPointFp"}}var m=BigInteger.fromByteArrayUnsigned(o);return this.verifyRaw(m,l,i,k)};this.verifyRaw=function(o,i,w,m){var l=this.ecparams.n;var u=this.ecparams.G;if(i.compareTo(BigInteger.ONE)<0||i.compareTo(l)>=0){return false}if(w.compareTo(BigInteger.ONE)<0||w.compareTo(l)>=0){return false}var p=w.modInverse(l);var k=o.multiply(p).mod(l);var j=i.multiply(p).mod(l);var q=u.multiply(k).add(m.multiply(j));var t=q.getX().toBigInteger().mod(l);return t.equals(i)};this.serializeSig=function(k,j){var l=k.toByteArraySigned();var i=j.toByteArraySigned();var m=[];m.push(2);m.push(l.length);m=m.concat(l);m.push(2);m.push(i.length);m=m.concat(i);m.unshift(m.length);m.unshift(48);return m};this.parseSig=function(n){var m;if(n[0]!=48){throw new Error("Signature not a valid DERSequence")}m=2;if(n[m]!=2){throw new Error("First element in signature must be a DERInteger")}var l=n.slice(m+2,m+2+n[m+1]);m+=2+n[m+1];if(n[m]!=2){throw new Error("Second element in signature must be a DERInteger")}var i=n.slice(m+2,m+2+n[m+1]);m+=2+n[m+1];var k=BigInteger.fromByteArrayUnsigned(l);var j=BigInteger.fromByteArrayUnsigned(i);return{r:k,s:j}};this.parseSigCompact=function(m){if(m.length!==65){throw"Signature has the wrong length"}var j=m[0]-27;if(j<0||j>7){throw"Invalid signature type"}var o=this.ecparams.n;var l=BigInteger.fromByteArrayUnsigned(m.slice(1,33)).mod(o);var k=BigInteger.fromByteArrayUnsigned(m.slice(33,65)).mod(o);return{r:l,s:k,i:j}};if(h!==undefined){if(h.curve!==undefined){this.curveName=h.curve}}if(this.curveName===undefined){this.curveName=e}this.setNamedCurve(this.curveName);if(h!==undefined){if(h.prv!==undefined){this.setPrivateKeyHex(h.prv)}if(h.pub!==undefined){this.setPublicKeyHex(h.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(c){if(c.substr(0,2)!="30"){throw"signature is not a ASN.1 sequence"}var b=ASN1HEX.getPosArrayOfChildren_AtObj(c,0);if(b.length!=2){throw"number of signature ASN.1 sequence elements seem wrong"}var g=b[0];var f=b[1];if(c.substr(g,2)!="02"){throw"1st item of sequene of signature is not ASN.1 integer"}if(c.substr(f,2)!="02"){throw"2nd item of sequene of signature is not ASN.1 integer"}var e=ASN1HEX.getHexOfV_AtObj(c,g);var d=ASN1HEX.getHexOfV_AtObj(c,f);return{r:e,s:d}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)=="00"&&(((b.length/2)*8)%(16*8))==8){b=b.substr(2)}if(a.substr(0,2)=="00"&&(((a.length/2)*8)%(16*8))==8){a=a.substr(2)}if((((b.length/2)*8)%(16*8))!=0){throw"unknown ECDSA sig r length error"}if((((a.length/2)*8)%(16*8))!=0){throw"unknown ECDSA sig s length error"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw"unknown ECDSA concatinated r-s sig length error"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(e,c){var b=new KJUR.asn1.DERInteger({bigint:e});var a=new KJUR.asn1.DERInteger({bigint:c});var d=new KJUR.asn1.DERSequence({array:[b,a]});return d.getEncodedHex()};
/*! ecparam-1.0.0.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!="undefined"){d=c[e]}if(typeof b[d]!="undefined"){return b[d]}throw"unregistered EC curve name: "+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex("04"+f+k);b[A]["name"]=A;b[A]["keylen"]=l;b[A]["curve"]=r;b[A]["G"]=q;b[A]["n"]=t;b[A]["h"]=w;b[A]["oid"]=d;b[A]["info"]=x;for(var v=0;v<u.length;v++){c[u[v]]=A}}};KJUR.crypto.ECParameterDB.regist("secp128r1",128,"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF","FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC","E87579C11079F43DD824993C2CEE5ED3","FFFFFFFE0000000075A30D1B9038A115","1","161FF7528B899B2D0C28607CA52C5B86","CF5AC8395BAFEB13C02DA292DDED7A83",[],"","secp128r1 : SECG curve over a 128 bit prime field");KJUR.crypto.ECParameterDB.regist("secp160k1",160,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73","0","7","0100000000000000000001B8FA16DFAB9ACA16B6B3","1","3B4C382CE37AA192A4019E763036F4F5DD4D7EBB","938CF935318FDCED6BC28286531733C3F03C4FEE",[],"","secp160k1 : SECG curve over a 160 bit prime field");KJUR.crypto.ECParameterDB.regist("secp160r1",160,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC","1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45","0100000000000000000001F4C8F927AED3CA752257","1","4A96B5688EF573284664698968C38BB913CBFC82","23A628553168947D59DCC912042351377AC5FB32",[],"","secp160r1 : SECG curve over a 160 bit prime field");KJUR.crypto.ECParameterDB.regist("secp192k1",192,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37","0","3","FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D","1","DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D","9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D",[]);KJUR.crypto.ECParameterDB.regist("secp192r1",192,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC","64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1","FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831","1","188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012","07192B95FFC8DA78631011ED6B24CDD573F977A11E794811",[]);KJUR.crypto.ECParameterDB.regist("secp224r1",224,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE","B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4","FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D","1","B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21","BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",[]);KJUR.crypto.ECParameterDB.regist("secp256k1",256,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F","0","7","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141","1","79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798","483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8",[]);KJUR.crypto.ECParameterDB.regist("secp256r1",256,"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF","FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC","5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B","FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551","1","6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296","4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",["NIST P-256","P-256","prime256v1"]);KJUR.crypto.ECParameterDB.regist("secp384r1",384,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC","B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973","1","AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7","3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f",["NIST P-384","P-384"]);KJUR.crypto.ECParameterDB.regist("secp521r1",521,"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF","1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC","051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00","1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409","1","C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66","011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650",["NIST P-521","P-521"]);
/*! dsa-modified-1.0.1.js (c) Recurity Labs GmbH, Kenji Urushimma | github.com/openpgpjs/openpgpjs/blob/master/LICENSE
*/
if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.DSA=function(){this.p=null;this.q=null;this.g=null;this.y=null;this.x=null;this.type="DSA";this.setPrivate=function(z,w,v,A,u){this.isPrivate=true;this.p=z;this.q=w;this.g=v;this.y=A;this.x=u};this.setPublic=function(w,v,u,z){this.isPublic=true;this.p=w;this.q=v;this.g=u;this.y=z;this.x=null};this.signWithMessageHash=function(z){var v=this.p;var u=this.q;var C=this.g;var D=this.y;var E=this.x;var A=z.substr(0,u.bitLength()/4);var B=new BigInteger(z,16);var w=n(BigInteger.ONE.add(BigInteger.ONE),u.subtract(BigInteger.ONE));var G=(C.modPow(w,v)).mod(u);var F=(w.modInverse(u).multiply(B.add(E.multiply(G)))).mod(u);var H=KJUR.asn1.ASN1Util.jsonToASN1HEX({seq:[{"int":{bigint:G}},{"int":{bigint:F}}]});return H};this.verifyWithMessageHash=function(C,B){var z=this.p;var u=this.q;var G=this.g;var H=this.y;var E=this.parseASN1Signature(B);var K=E[0];var J=E[1];var C=C.substr(0,u.bitLength()/4);var D=new BigInteger(C,16);if(BigInteger.ZERO.compareTo(K)>0||K.compareTo(u)>0||BigInteger.ZERO.compareTo(J)>0||J.compareTo(u)>0){throw"invalid DSA signature"}var I=J.modInverse(u);var A=D.multiply(I).mod(u);var v=K.multiply(I).mod(u);var F=G.modPow(A,z).multiply(H.modPow(v,z)).mod(z).mod(u);return F.compareTo(K)==0};this.parseASN1Signature=function(u){try{var y=new BigInteger(ASN1HEX.getVbyList(u,0,[0],"02"),16);var v=new BigInteger(ASN1HEX.getVbyList(u,0,[1],"02"),16);return[y,v]}catch(w){throw"malformed DSA signature"}};function d(E,w,B,v,u,C){var z=KJUR.crypto.Util.hashString(w,E.toLowerCase());var z=z.substr(0,u.bitLength()/4);var A=new BigInteger(z,16);var y=n(BigInteger.ONE.add(BigInteger.ONE),u.subtract(BigInteger.ONE));var F=(B.modPow(y,v)).mod(u);var D=(y.modInverse(u).multiply(A.add(C.multiply(F)))).mod(u);var G=new Array();G[0]=F;G[1]=D;return G}function r(v){var u=openpgp.config.config.prefer_hash_algorithm;switch(Math.round(v.bitLength()/8)){case 20:if(u!=2&&u>11&&u!=10&&u<8){return 2}return u;case 28:if(u>11&&u<8){return 11}return u;case 32:if(u>10&&u<8){return 8}return u;default:util.print_debug("DSA select hash algorithm: returning null for an unknown length of q");return null}}this.select_hash_algorithm=r;function m(I,K,J,B,z,u,F,G){var C=KJUR.crypto.Util.hashString(B,I.toLowerCase());var C=C.substr(0,u.bitLength()/4);var D=new BigInteger(C,16);if(BigInteger.ZERO.compareTo(K)>0||K.compareTo(u)>0||BigInteger.ZERO.compareTo(J)>0||J.compareTo(u)>0){util.print_error("invalid DSA Signature");return null}var H=J.modInverse(u);var A=D.multiply(H).mod(u);var v=K.multiply(H).mod(u);var E=F.modPow(A,z).multiply(G.modPow(v,z)).mod(z).mod(u);return E.compareTo(K)==0}function a(z){var A=new BigInteger(z,primeCenterie);var y=j(q,512);var u=t(p,q,z);var v;do{v=new BigInteger(q.bitCount(),rand)}while(x.compareTo(BigInteger.ZERO)!=1&&x.compareTo(q)!=-1);var w=g.modPow(x,p);return{x:v,q:A,p:y,g:u,y:w}}function j(y,z,w){if(z%64!=0){return false}var u;var v;do{u=w(bitcount,true);v=u.subtract(BigInteger.ONE);u=u.subtract(v.remainder(y))}while(!u.isProbablePrime(primeCenterie)||u.bitLength()!=l);return u}function t(B,z,A,w){var u=B.subtract(BigInteger.ONE);var y=u.divide(z);var v;do{v=w(A)}while(v.compareTo(u)!=-1&&v.compareTo(BigInteger.ONE)!=1);return v.modPow(y,B)}function o(w,y,u){var v;do{v=u(y,false)}while(v.compareTo(w)!=-1&&v.compareTo(BigInteger.ZERO)!=1);return v}function i(v,w){k=o(v);var u=g.modPow(k,w).mod(v);return u}function h(B,w,y,v,z,u){var A=B(v);s=(w.modInverse(z).multiply(A.add(u.multiply(y)))).mod(z);return s}this.sign=d;this.verify=m;function n(w,u){if(u.compareTo(w)<=0){return}var v=u.subtract(w);var y=e(v.bitLength());while(y>v){y=e(v.bitLength())}return w.add(y)}function e(w){if(w<0){return null}var u=Math.floor((w+7)/8);var v=c(u);if(w%8>0){v=String.fromCharCode((Math.pow(2,w%8)-1)&v.charCodeAt(0))+v.substring(1)}return new BigInteger(f(v),16)}function c(w){var u="";for(var v=0;v<w;v++){u+=String.fromCharCode(b())}return u}function b(){var u=new Uint32Array(1);window.crypto.getRandomValues(u);return u[0]&255}function f(y){if(y==null){return""}var v=[];var w=y.length;var z=0;var u;while(z<w){u=y[z++].charCodeAt().toString(16);while(u.length<2){u="0"+u}v.push(""+u)}return v.join("")}this.getRandomBigIntegerInRange=n;this.getRandomBigInteger=e;this.getRandomBytes=c};
/*! pkcs5pkey-1.0.5.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
var PKCS5PKEY=function(){var c=function(n,p,o){return i(CryptoJS.AES,n,p,o)};var d=function(n,p,o){return i(CryptoJS.TripleDES,n,p,o)};var i=function(q,v,s,o){var p=CryptoJS.enc.Hex.parse(v);var u=CryptoJS.enc.Hex.parse(s);var n=CryptoJS.enc.Hex.parse(o);var r={};r.key=u;r.iv=n;r.ciphertext=p;var t=q.decrypt(r,u,{iv:n});return CryptoJS.enc.Hex.stringify(t)};var j=function(n,p,o){return e(CryptoJS.AES,n,p,o)};var m=function(n,p,o){return e(CryptoJS.TripleDES,n,p,o)};var e=function(s,x,v,p){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(v);var o=CryptoJS.enc.Hex.parse(p);var n={};var u=s.encrypt(r,w,{iv:o});var q=CryptoJS.enc.Hex.parse(u.toString());var t=CryptoJS.enc.Base64.stringify(q);return t};var g={"AES-256-CBC":{proc:c,eproc:j,keylen:32,ivlen:16},"AES-192-CBC":{proc:c,eproc:j,keylen:24,ivlen:16},"AES-128-CBC":{proc:c,eproc:j,keylen:16,ivlen:16},"DES-EDE3-CBC":{proc:d,eproc:m,keylen:24,ivlen:8}};var b=function(n){return g[n]["proc"]};var k=function(n){var p=CryptoJS.lib.WordArray.random(n);var o=CryptoJS.enc.Hex.stringify(p);return o};var l=function(q){var r={};if(q.match(new RegExp("DEK-Info: ([^,]+),([0-9A-Fa-f]+)","m"))){r.cipher=RegExp.$1;r.ivsalt=RegExp.$2}if(q.match(new RegExp("-----BEGIN ([A-Z]+) PRIVATE KEY-----"))){r.type=RegExp.$1}var p=-1;var t=0;if(q.indexOf("\r\n\r\n")!=-1){p=q.indexOf("\r\n\r\n");t=2}if(q.indexOf("\n\n")!=-1){p=q.indexOf("\n\n");t=1}var o=q.indexOf("-----END");if(p!=-1&&o!=-1){var n=q.substring(p+t*2,o-t);n=n.replace(/\s+/g,"");r.data=n}return r};var h=function(o,w,n){var t=n.substring(0,16);var r=CryptoJS.enc.Hex.parse(t);var p=CryptoJS.enc.Utf8.parse(w);var s=g[o]["keylen"]+g[o]["ivlen"];var v="";var u=null;for(;;){var q=CryptoJS.algo.MD5.create();if(u!=null){q.update(u)}q.update(p);q.update(r);u=q.finalize();v=v+CryptoJS.enc.Hex.stringify(u);if(v.length>=s*2){break}}var x={};x.keyhex=v.substr(0,g[o]["keylen"]*2);x.ivhex=v.substr(g[o]["keylen"]*2,g[o]["ivlen"]*2);return x};var a=function(n,t,p,u){var q=CryptoJS.enc.Base64.parse(n);var o=CryptoJS.enc.Hex.stringify(q);var s=g[t]["proc"];var r=s(o,p,u);return r};var f=function(n,q,o,s){var p=g[q]["eproc"];var r=p(n,o,s);return r};return{version:"1.0.5",getHexFromPEM:function(o,r){var p=o;if(p.indexOf("BEGIN "+r)==-1){throw"can't find PEM header: "+r}p=p.replace("-----BEGIN "+r+"-----","");p=p.replace("-----END "+r+"-----","");var q=p.replace(/\s+/g,"");var n=b64tohex(q);return n},getDecryptedKeyHexByKeyIV:function(o,r,q,p){var n=b(r);return n(o,q,p)},parsePKCS5PEM:function(n){return l(n)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(o,n,p){return h(o,n,p)},decryptKeyB64:function(n,p,o,q){return a(n,p,o,q)},getDecryptedKeyHex:function(w,v){var o=l(w);var r=o.type;var p=o.cipher;var n=o.ivsalt;var q=o.data;var u=h(p,v,n);var t=u.keyhex;var s=a(q,p,t,n);return s},getRSAKeyFromEncryptedPKCS5PEM:function(p,o){var q=this.getDecryptedKeyHex(p,o);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(q);return n},getEryptedPKCS5PEMFromPrvKeyHex:function(q,x,r,p){var n="";if(typeof r=="undefined"||r==null){r="AES-256-CBC"}if(typeof g[r]=="undefined"){throw"PKCS5PKEY unsupported algorithm: "+r}if(typeof p=="undefined"||p==null){var t=g[r]["ivlen"];var s=k(t);p=s.toUpperCase()}var w=h(r,x,p);var v=w.keyhex;var u=f(q,r,v,p);var o=u.replace(/(.{64})/g,"$1\r\n");var n="-----BEGIN RSA PRIVATE KEY-----\r\n";n+="Proc-Type: 4,ENCRYPTED\r\n";n+="DEK-Info: "+r+","+p+"\r\n";n+="\r\n";n+=o;n+="\r\n-----END RSA PRIVATE KEY-----\r\n";return n},getEryptedPKCS5PEMFromRSAKey:function(C,D,o,s){var A=new KJUR.asn1.DERInteger({"int":0});var v=new KJUR.asn1.DERInteger({bigint:C.n});var z=new KJUR.asn1.DERInteger({"int":C.e});var B=new KJUR.asn1.DERInteger({bigint:C.d});var t=new KJUR.asn1.DERInteger({bigint:C.p});var r=new KJUR.asn1.DERInteger({bigint:C.q});var y=new KJUR.asn1.DERInteger({bigint:C.dmp1});var u=new KJUR.asn1.DERInteger({bigint:C.dmq1});var x=new KJUR.asn1.DERInteger({bigint:C.coeff});var E=new KJUR.asn1.DERSequence({array:[A,v,z,B,t,r,y,u,x]});var w=E.getEncodedHex();return this.getEryptedPKCS5PEMFromPrvKeyHex(w,D,o,s)},newEncryptedPKCS5PEM:function(n,o,r,s){if(typeof o=="undefined"||o==null){o=1024}if(typeof r=="undefined"||r==null){r="10001"}var p=new RSAKey();p.generate(o,r);var q=null;if(typeof s=="undefined"||s==null){q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n)}else{q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n,s)}return q},getRSAKeyFromPlainPKCS8PEM:function(p){if(p.match(/ENCRYPTED/)){throw"pem shall be not ENCRYPTED"}var o=this.getHexFromPEM(p,"PRIVATE KEY");var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getRSAKeyFromPlainPKCS8Hex:function(q){var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"outer DERSequence shall have 3 elements: "+p.length}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);if(o!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmIdentifier is not rsaEnc: "+o}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);var r=ASN1HEX.getHexOfTLV_AtObj(q,p[2]);var s=ASN1HEX.getHexOfV_AtObj(r,0);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(s);return n},parseHexOfEncryptedPKCS8:function(u){var q={};var p=ASN1HEX.getPosArrayOfChildren_AtObj(u,0);if(p.length!=2){throw"malformed format: SEQUENCE(0).items != 2: "+p.length}q.ciphertext=ASN1HEX.getHexOfV_AtObj(u,p[1]);var w=ASN1HEX.getPosArrayOfChildren_AtObj(u,p[0]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0).items != 2: "+w.length}if(ASN1HEX.getHexOfV_AtObj(u,w[0])!="2a864886f70d01050d"){throw"this only supports pkcs5PBES2"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(u,w[1]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0.1).items != 2: "+n.length}var o=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[1]);if(o.length!=2){throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+o.length}if(ASN1HEX.getHexOfV_AtObj(u,o[0])!="2a864886f70d0307"){throw"this only supports TripleDES"}q.encryptionSchemeAlg="TripleDES";q.encryptionSchemeIV=ASN1HEX.getHexOfV_AtObj(u,o[1]);var r=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[0]);if(r.length!=2){throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+r.length}if(ASN1HEX.getHexOfV_AtObj(u,r[0])!="2a864886f70d01050c"){throw"this only supports pkcs5PBKDF2"}var v=ASN1HEX.getPosArrayOfChildren_AtObj(u,r[1]);if(v.length<2){throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+v.length}q.pbkdf2Salt=ASN1HEX.getHexOfV_AtObj(u,v[0]);var s=ASN1HEX.getHexOfV_AtObj(u,v[1]);try{q.pbkdf2Iter=parseInt(s,16)}catch(t){throw"malformed format pbkdf2Iter: "+s}return q},getPBKDF2KeyHexFromParam:function(s,n){var r=CryptoJS.enc.Hex.parse(s.pbkdf2Salt);var o=s.pbkdf2Iter;var q=CryptoJS.PBKDF2(n,r,{keySize:192/32,iterations:o});var p=CryptoJS.enc.Hex.stringify(q);return p},getPlainPKCS8HexFromEncryptedPKCS8PEM:function(v,w){var p=this.getHexFromPEM(v,"ENCRYPTED PRIVATE KEY");var n=this.parseHexOfEncryptedPKCS8(p);var s=PKCS5PKEY.getPBKDF2KeyHexFromParam(n,w);var t={};t.ciphertext=CryptoJS.enc.Hex.parse(n.ciphertext);var r=CryptoJS.enc.Hex.parse(s);var q=CryptoJS.enc.Hex.parse(n.encryptionSchemeIV);var u=CryptoJS.TripleDES.decrypt(t,r,{iv:q});var o=CryptoJS.enc.Hex.stringify(u);return o},getRSAKeyFromEncryptedPKCS8PEM:function(q,p){var o=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,p);var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getKeyFromEncryptedPKCS8PEM:function(q,o){var n=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,o);var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},parsePlainPrivatePKCS8Hex:function(q){var o={};o.algparam=null;if(q.substr(0,2)!="30"){throw"malformed plain PKCS8 private key(code:001)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"malformed plain PKCS8 private key(code:002)"}if(q.substr(p[1],2)!="30"){throw"malformed PKCS8 private key(code:003)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,p[1]);if(n.length!=2){throw"malformed PKCS8 private key(code:004)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 private key(code:005)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[2],2)!="04"){throw"malformed PKCS8 private key(code:006)"}o.keyidx=ASN1HEX.getStartPosOfV_AtObj(q,p[2]);return o},getKeyFromPlainPrivatePKCS8PEM:function(o){var n=this.getHexFromPEM(o,"PRIVATE KEY");var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},getKeyFromPlainPrivatePKCS8Hex:function(n){var p=this.parsePlainPrivatePKCS8Hex(n);if(p.algoid=="2a864886f70d010101"){this.parsePrivateRawRSAKeyHexAtObj(n,p);var o=p.key;var q=new RSAKey();q.setPrivateEx(o.n,o.e,o.d,o.p,o.q,o.dp,o.dq,o.co);return q}else{if(p.algoid=="2a8648ce3d0201"){this.parsePrivateRawECKeyHexAtObj(n,p);if(KJUR.crypto.OID.oidhex2name[p.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+p.algparam}var r=KJUR.crypto.OID.oidhex2name[p.algparam];var q=new KJUR.crypto.ECDSA({curve:r,prv:p.key});return q}else{throw"unsupported private key algorithm"}}},getRSAKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getRSAKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8Hex:function(o){var n=this.parsePublicPKCS8Hex(o);if(n.algoid=="2a864886f70d010101"){var r=this.parsePublicRawRSAKeyHex(n.key);var p=new RSAKey();p.setPublic(r.n,r.e);return p}else{if(n.algoid=="2a8648ce3d0201"){if(KJUR.crypto.OID.oidhex2name[n.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+n.algparam}var q=KJUR.crypto.OID.oidhex2name[n.algparam];var p=new KJUR.crypto.ECDSA({curve:q,pub:n.key});return p}else{throw"unsupported public key algorithm"}}},parsePublicRawRSAKeyHex:function(p){var n={};if(p.substr(0,2)!="30"){throw"malformed RSA key(code:001)"}var o=ASN1HEX.getPosArrayOfChildren_AtObj(p,0);if(o.length!=2){throw"malformed RSA key(code:002)"}if(p.substr(o[0],2)!="02"){throw"malformed RSA key(code:003)"}n.n=ASN1HEX.getHexOfV_AtObj(p,o[0]);if(p.substr(o[1],2)!="02"){throw"malformed RSA key(code:004)"}n.e=ASN1HEX.getHexOfV_AtObj(p,o[1]);return n},parsePrivateRawRSAKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed RSA private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=9){throw"malformed RSA private key(code:002)"}q.key={};q.key.n=ASN1HEX.getHexOfV_AtObj(o,n[1]);q.key.e=ASN1HEX.getHexOfV_AtObj(o,n[2]);q.key.d=ASN1HEX.getHexOfV_AtObj(o,n[3]);q.key.p=ASN1HEX.getHexOfV_AtObj(o,n[4]);q.key.q=ASN1HEX.getHexOfV_AtObj(o,n[5]);q.key.dp=ASN1HEX.getHexOfV_AtObj(o,n[6]);q.key.dq=ASN1HEX.getHexOfV_AtObj(o,n[7]);q.key.co=ASN1HEX.getHexOfV_AtObj(o,n[8])},parsePrivateRawECKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed ECC private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=3){throw"malformed ECC private key(code:002)"}if(o.substr(n[1],2)!="04"){throw"malformed ECC private key(code:003)"}q.key=ASN1HEX.getHexOfV_AtObj(o,n[1])},parsePublicPKCS8Hex:function(q){var o={};o.algparam=null;var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=2){throw"outer DERSequence shall have 2 elements: "+p.length}var r=p[0];if(q.substr(r,2)!="30"){throw"malformed PKCS8 public key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,r);if(n.length!=2){throw"malformed PKCS8 public key(code:002)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 public key(code:003)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[1],2)!="03"){throw"malformed PKCS8 public key(code:004)"}o.key=ASN1HEX.getHexOfV_AtObj(q,p[1]).substr(2);return o},getRSAKeyFromPublicPKCS8Hex:function(r){var q=ASN1HEX.getPosArrayOfChildren_AtObj(r,0);if(q.length!=2){throw"outer DERSequence shall have 2 elements: "+q.length}var p=ASN1HEX.getHexOfTLV_AtObj(r,q[0]);if(p!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmId is not rsaEncryption"}if(r.substr(q[1],2)!="03"){throw"PKCS8 Public Key is not BITSTRING encapslated."}var t=ASN1HEX.getStartPosOfV_AtObj(r,q[1])+2;if(r.substr(t,2)!="30"){throw"PKCS8 Public Key is not SEQUENCE."}var n=ASN1HEX.getPosArrayOfChildren_AtObj(r,t);if(n.length!=2){throw"inner DERSequence shall have 2 elements: "+n.length}if(r.substr(n[0],2)!="02"){throw"N is not ASN.1 INTEGER"}if(r.substr(n[1],2)!="02"){throw"E is not ASN.1 INTEGER"}var u=ASN1HEX.getHexOfV_AtObj(r,n[0]);var s=ASN1HEX.getHexOfV_AtObj(r,n[1]);var o=new RSAKey();o.setPublic(u,s);return o},}}();
/*! keyutil-1.0.4.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
var KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={"AES-256-CBC":{proc:d,eproc:l,keylen:32,ivlen:16},"AES-192-CBC":{proc:d,eproc:l,keylen:24,ivlen:16},"AES-128-CBC":{proc:d,eproc:l,keylen:16,ivlen:16},"DES-EDE3-CBC":{proc:e,eproc:o,keylen:24,ivlen:8},"DES-CBC":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p]["proc"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(t){var u={};if(t.match(new RegExp("DEK-Info: ([^,]+),([0-9A-Fa-f]+)","m"))){u.cipher=RegExp.$1;u.ivsalt=RegExp.$2}if(t.match(new RegExp("-----BEGIN ([A-Z]+) PRIVATE KEY-----"))){u.type=RegExp.$1}var r=-1;var v=0;if(t.indexOf("\r\n\r\n")!=-1){r=t.indexOf("\r\n\r\n");v=2}if(t.indexOf("\n\n")!=-1){r=t.indexOf("\n\n");v=1}var q=t.indexOf("-----END");if(r!=-1&&q!=-1){var p=t.substring(r+v*2,q-v);p=p.replace(/\s+/g,"");u.data=p}return u};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q]["keylen"]+i[q]["ivlen"];var x="";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q]["keylen"]*2);z.ivhex=x.substr(i[q]["keylen"]*2,i[q]["ivlen"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v]["proc"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s]["eproc"];var t=r(p,q,u);return t};return{version:"1.0.0",getHexFromPEM:function(q,u){var r=q;if(r.indexOf("BEGIN "+u)==-1){throw"can't find PEM header: "+u}r=r.replace("-----BEGIN "+u+"-----","");r=r.replace("-----END "+u+"-----","");var t=r.replace(/\s+/g,"");var p=b64tohex(t);return p},getDecryptedKeyHexByKeyIV:function(q,t,s,r){var p=c(t);return p(q,s,r)},parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getRSAKeyFromEncryptedPKCS5PEM:function(r,q){var s=this.getDecryptedKeyHex(r,q);var p=new RSAKey();p.readPrivateKeyFromASN1HexString(s);return p},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p="";if(typeof t=="undefined"||t==null){t="AES-256-CBC"}if(typeof i[t]=="undefined"){throw"KEYUTIL unsupported algorithm: "+t}if(typeof r=="undefined"||r==null){var v=i[t]["ivlen"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,"$1\r\n");var p="-----BEGIN "+x+" PRIVATE KEY-----\r\n";p+="Proc-Type: 4,ENCRYPTED\r\n";p+="DEK-Info: "+t+","+r+"\r\n";p+="\r\n";p+=q;p+="\r\n-----END "+x+" PRIVATE KEY-----\r\n";return p},getEncryptedPKCS5PEMFromRSAKey:function(D,E,r,t){var B=new KJUR.asn1.DERInteger({"int":0});var w=new KJUR.asn1.DERInteger({bigint:D.n});var A=new KJUR.asn1.DERInteger({"int":D.e});var C=new KJUR.asn1.DERInteger({bigint:D.d});var u=new KJUR.asn1.DERInteger({bigint:D.p});var s=new KJUR.asn1.DERInteger({bigint:D.q});var z=new KJUR.asn1.DERInteger({bigint:D.dmp1});var v=new KJUR.asn1.DERInteger({bigint:D.dmq1});var y=new KJUR.asn1.DERInteger({bigint:D.coeff});var F=new KJUR.asn1.DERSequence({array:[B,w,A,C,u,s,z,v,y]});var x=F.getEncodedHex();return this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",x,E,r,t)},newEncryptedPKCS5PEM:function(p,q,t,u){if(typeof q=="undefined"||q==null){q=1024}if(typeof t=="undefined"||t==null){t="10001"}var r=new RSAKey();r.generate(q,t);var s=null;if(typeof u=="undefined"||u==null){s=this.getEncryptedPKCS5PEMFromRSAKey(r,p)}else{s=this.getEncryptedPKCS5PEMFromRSAKey(r,p,u)}return s},getRSAKeyFromPlainPKCS8PEM:function(r){if(r.match(/ENCRYPTED/)){throw"pem shall be not ENCRYPTED"}var q=this.getHexFromPEM(r,"PRIVATE KEY");var p=this.getRSAKeyFromPlainPKCS8Hex(q);return p},getRSAKeyFromPlainPKCS8Hex:function(s){var r=ASN1HEX.getPosArrayOfChildren_AtObj(s,0);if(r.length!=3){throw"outer DERSequence shall have 3 elements: "+r.length}var q=ASN1HEX.getHexOfTLV_AtObj(s,r[1]);if(q!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmIdentifier is not rsaEnc: "+q}var q=ASN1HEX.getHexOfTLV_AtObj(s,r[1]);var t=ASN1HEX.getHexOfTLV_AtObj(s,r[2]);var u=ASN1HEX.getHexOfV_AtObj(t,0);var p=new RSAKey();p.readPrivateKeyFromASN1HexString(u);return p},parseHexOfEncryptedPKCS8:function(w){var s={};var r=ASN1HEX.getPosArrayOfChildren_AtObj(w,0);if(r.length!=2){throw"malformed format: SEQUENCE(0).items != 2: "+r.length}s.ciphertext=ASN1HEX.getHexOfV_AtObj(w,r[1]);var y=ASN1HEX.getPosArrayOfChildren_AtObj(w,r[0]);if(y.length!=2){throw"malformed format: SEQUENCE(0.0).items != 2: "+y.length}if(ASN1HEX.getHexOfV_AtObj(w,y[0])!="2a864886f70d01050d"){throw"this only supports pkcs5PBES2"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(w,y[1]);if(y.length!=2){throw"malformed format: SEQUENCE(0.0.1).items != 2: "+p.length}var q=ASN1HEX.getPosArrayOfChildren_AtObj(w,p[1]);if(q.length!=2){throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+q.length}if(ASN1HEX.getHexOfV_AtObj(w,q[0])!="2a864886f70d0307"){throw"this only supports TripleDES"}s.encryptionSchemeAlg="TripleDES";s.encryptionSchemeIV=ASN1HEX.getHexOfV_AtObj(w,q[1]);var t=ASN1HEX.getPosArrayOfChildren_AtObj(w,p[0]);if(t.length!=2){throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+t.length}if(ASN1HEX.getHexOfV_AtObj(w,t[0])!="2a864886f70d01050c"){throw"this only supports pkcs5PBKDF2"}var x=ASN1HEX.getPosArrayOfChildren_AtObj(w,t[1]);if(x.length<2){throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+x.length}s.pbkdf2Salt=ASN1HEX.getHexOfV_AtObj(w,x[0]);var u=ASN1HEX.getHexOfV_AtObj(w,x[1]);try{s.pbkdf2Iter=parseInt(u,16)}catch(v){throw"malformed format pbkdf2Iter: "+u}return s},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=this.getHexFromPEM(x,"ENCRYPTED PRIVATE KEY");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getRSAKeyFromEncryptedPKCS8PEM:function(s,r){var q=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(s,r);var p=this.getRSAKeyFromPlainPKCS8Hex(q);return p},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var q={};q.algparam=null;if(s.substr(0,2)!="30"){throw"malformed plain PKCS8 private key(code:001)"}var r=ASN1HEX.getPosArrayOfChildren_AtObj(s,0);if(r.length!=3){throw"malformed plain PKCS8 private key(code:002)"}if(s.substr(r[1],2)!="30"){throw"malformed PKCS8 private key(code:003)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(s,r[1]);if(p.length!=2){throw"malformed PKCS8 private key(code:004)"}if(s.substr(p[0],2)!="06"){throw"malformed PKCS8 private key(code:005)"}q.algoid=ASN1HEX.getHexOfV_AtObj(s,p[0]);if(s.substr(p[1],2)=="06"){q.algparam=ASN1HEX.getHexOfV_AtObj(s,p[1])}if(s.substr(r[2],2)!="04"){throw"malformed PKCS8 private key(code:006)"}q.keyidx=ASN1HEX.getStartPosOfV_AtObj(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=this.getHexFromPEM(q,"PRIVATE KEY");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var w=this.parsePlainPrivatePKCS8Hex(p);if(w.algoid=="2a864886f70d010101"){this.parsePrivateRawRSAKeyHexAtObj(p,w);var u=w.key;var z=new RSAKey();z.setPrivateEx(u.n,u.e,u.d,u.p,u.q,u.dp,u.dq,u.co);return z}else{if(w.algoid=="2a8648ce3d0201"){this.parsePrivateRawECKeyHexAtObj(p,w);if(KJUR.crypto.OID.oidhex2name[w.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+w.algparam}var v=KJUR.crypto.OID.oidhex2name[w.algparam];var z=new KJUR.crypto.ECDSA({curve:v});z.setPublicKeyHex(w.pubkey);z.setPrivateKeyHex(w.key);z.isPublic=false;return z}else{if(w.algoid=="2a8648ce380401"){var t=ASN1HEX.getVbyList(p,0,[1,1,0],"02");var s=ASN1HEX.getVbyList(p,0,[1,1,1],"02");var y=ASN1HEX.getVbyList(p,0,[1,1,2],"02");var B=ASN1HEX.getVbyList(p,0,[2,0],"02");var r=new BigInteger(t,16);var q=new BigInteger(s,16);var x=new BigInteger(y,16);var A=new BigInteger(B,16);var z=new KJUR.crypto.DSA();z.setPrivate(r,q,x,null,A);return z}else{throw"unsupported private key algorithm"}}}},getRSAKeyFromPublicPKCS8PEM:function(q){var r=this.getHexFromPEM(q,"PUBLIC KEY");var p=this.getRSAKeyFromPublicPKCS8Hex(r);return p},getKeyFromPublicPKCS8PEM:function(q){var r=this.getHexFromPEM(q,"PUBLIC KEY");var p=this.getKeyFromPublicPKCS8Hex(r);return p},getKeyFromPublicPKCS8Hex:function(q){var p=this.parsePublicPKCS8Hex(q);if(p.algoid=="2a864886f70d010101"){var u=this.parsePublicRawRSAKeyHex(p.key);var r=new RSAKey();r.setPublic(u.n,u.e);return r}else{if(p.algoid=="2a8648ce3d0201"){if(KJUR.crypto.OID.oidhex2name[p.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+p.algparam}var s=KJUR.crypto.OID.oidhex2name[p.algparam];var r=new KJUR.crypto.ECDSA({curve:s,pub:p.key});return r}else{if(p.algoid=="2a8648ce380401"){var t=p.algparam;var v=ASN1HEX.getHexOfV_AtObj(p.key,0);var r=new KJUR.crypto.DSA();r.setPublic(new BigInteger(t.p,16),new BigInteger(t.q,16),new BigInteger(t.g,16),new BigInteger(v,16));return r}else{throw"unsupported public key algorithm"}}}},parsePublicRawRSAKeyHex:function(r){var p={};if(r.substr(0,2)!="30"){throw"malformed RSA key(code:001)"}var q=ASN1HEX.getPosArrayOfChildren_AtObj(r,0);if(q.length!=2){throw"malformed RSA key(code:002)"}if(r.substr(q[0],2)!="02"){throw"malformed RSA key(code:003)"}p.n=ASN1HEX.getHexOfV_AtObj(r,q[0]);if(r.substr(q[1],2)!="02"){throw"malformed RSA key(code:004)"}p.e=ASN1HEX.getHexOfV_AtObj(r,q[1]);return p},parsePrivateRawRSAKeyHexAtObj:function(q,s){var r=s.keyidx;if(q.substr(r,2)!="30"){throw"malformed RSA private key(code:001)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,r);if(p.length!=9){throw"malformed RSA private key(code:002)"}s.key={};s.key.n=ASN1HEX.getHexOfV_AtObj(q,p[1]);s.key.e=ASN1HEX.getHexOfV_AtObj(q,p[2]);s.key.d=ASN1HEX.getHexOfV_AtObj(q,p[3]);s.key.p=ASN1HEX.getHexOfV_AtObj(q,p[4]);s.key.q=ASN1HEX.getHexOfV_AtObj(q,p[5]);s.key.dp=ASN1HEX.getHexOfV_AtObj(q,p[6]);s.key.dq=ASN1HEX.getHexOfV_AtObj(q,p[7]);s.key.co=ASN1HEX.getHexOfV_AtObj(q,p[8])},parsePrivateRawECKeyHexAtObj:function(p,t){var q=t.keyidx;var r=ASN1HEX.getVbyList(p,q,[1],"04");var s=ASN1HEX.getVbyList(p,q,[2,0],"03").substr(2);t.key=r;t.pubkey=s},parsePublicPKCS8Hex:function(s){var q={};q.algparam=null;var r=ASN1HEX.getPosArrayOfChildren_AtObj(s,0);if(r.length!=2){throw"outer DERSequence shall have 2 elements: "+r.length}var t=r[0];if(s.substr(t,2)!="30"){throw"malformed PKCS8 public key(code:001)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(s,t);if(p.length!=2){throw"malformed PKCS8 public key(code:002)"}if(s.substr(p[0],2)!="06"){throw"malformed PKCS8 public key(code:003)"}q.algoid=ASN1HEX.getHexOfV_AtObj(s,p[0]);if(s.substr(p[1],2)=="06"){q.algparam=ASN1HEX.getHexOfV_AtObj(s,p[1])}else{if(s.substr(p[1],2)=="30"){q.algparam={};q.algparam.p=ASN1HEX.getVbyList(s,p[1],[0],"02");q.algparam.q=ASN1HEX.getVbyList(s,p[1],[1],"02");q.algparam.g=ASN1HEX.getVbyList(s,p[1],[2],"02")}}if(s.substr(r[1],2)!="03"){throw"malformed PKCS8 public key(code:004)"}q.key=ASN1HEX.getHexOfV_AtObj(s,r[1]).substr(2);return q},getRSAKeyFromPublicPKCS8Hex:function(t){var s=ASN1HEX.getPosArrayOfChildren_AtObj(t,0);if(s.length!=2){throw"outer DERSequence shall have 2 elements: "+s.length}var r=ASN1HEX.getHexOfTLV_AtObj(t,s[0]);if(r!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmId is not rsaEncryption"}if(t.substr(s[1],2)!="03"){throw"PKCS8 Public Key is not BITSTRING encapslated."}var v=ASN1HEX.getStartPosOfV_AtObj(t,s[1])+2;if(t.substr(v,2)!="30"){throw"PKCS8 Public Key is not SEQUENCE."}var p=ASN1HEX.getPosArrayOfChildren_AtObj(t,v);if(p.length!=2){throw"inner DERSequence shall have 2 elements: "+p.length}if(t.substr(p[0],2)!="02"){throw"N is not ASN.1 INTEGER"}if(t.substr(p[1],2)!="02"){throw"E is not ASN.1 INTEGER"}var w=ASN1HEX.getHexOfV_AtObj(t,p[0]);var u=ASN1HEX.getHexOfV_AtObj(t,p[1]);var q=new RSAKey();q.setPublic(w,u);return q},}}();KEYUTIL.getKey=function(c,o,i){if(typeof RSAKey!="undefined"&&c instanceof RSAKey){return c}if(typeof KJUR.crypto.ECDSA!="undefined"&&c instanceof KJUR.crypto.ECDSA){return c}if(typeof KJUR.crypto.DSA!="undefined"&&c instanceof KJUR.crypto.DSA){return c}if(c.xy!==undefined&&c.curve!==undefined){return new KJUR.crypto.ECDSA({prv:c.xy,curve:c.curve})}if(c.n!==undefined&&c.e!==undefined&&c.d!==undefined&&c.p!==undefined&&c.q!==undefined&&c.dp!==undefined&&c.dq!==undefined&&c.co!==undefined){var n=new RSAKey();n.setPrivateEx(c.n,c.e,c.d,c.p,c.q,c.dp,c.dq,c.co);return n}if(c.p!==undefined&&c.q!==undefined&&c.g!==undefined&&c.y!==undefined&&c.x!==undefined){var n=new KJUR.crypto.DSA();n.setPrivate(c.p,c.q,c.g,c.y,c.x);return n}if(c.d!==undefined&&c.curve!==undefined){return new KJUR.crypto.ECDSA({pub:c.d,curve:c.curve})}if(c.n!==undefined&&c.e){var n=new RSAKey();n.setPublic(c.n,c.e);return n}if(c.p!==undefined&&c.q!==undefined&&c.g!==undefined&&c.y!==undefined&&c.x===undefined){var n=new KJUR.crypto.DSA();n.setPublic(c.p,c.q,c.g,c.y);return n}if(c.indexOf("-END CERTIFICATE-",0)!=-1||c.indexOf("-END X509 CERTIFICATE-",0)!=-1||c.indexOf("-END TRUSTED CERTIFICATE-",0)!=-1){return X509.getPublicKeyFromCertPEM(c)}if(i==="pkcs8pub"){return KEYUTIL.getKeyFromPublicPKCS8Hex(c)}if(c.indexOf("-END PUBLIC KEY-")!=-1){return KEYUTIL.getKeyFromPublicPKCS8PEM(c)}if(i==="pkcs5prv"){var n=new RSAKey();n.readPrivateKeyFromASN1HexString(c);return n}if(i==="pkcs5prv"){var n=new RSAKey();n.readPrivateKeyFromASN1HexString(c);return n}if(c.indexOf("-END RSA PRIVATE KEY-")!=-1&&c.indexOf("4,ENCRYPTED")==-1){var n=new RSAKey();n.readPrivateKeyFromPEMString(c);return n}if(c.indexOf("-END DSA PRIVATE KEY-")!=-1&&c.indexOf("4,ENCRYPTED")==-1){var m=this.getHexFromPEM(c,"DSA PRIVATE KEY");var b=ASN1HEX.getVbyList(m,0,[1],"02");var a=ASN1HEX.getVbyList(m,0,[2],"02");var e=ASN1HEX.getVbyList(m,0,[3],"02");var k=ASN1HEX.getVbyList(m,0,[4],"02");var l=ASN1HEX.getVbyList(m,0,[5],"02");var n=new KJUR.crypto.DSA();n.setPrivate(new BigInteger(b,16),new BigInteger(a,16),new BigInteger(e,16),new BigInteger(k,16),new BigInteger(l,16));return n}if(c.indexOf("-END PRIVATE KEY-")!=-1){return KEYUTIL.getKeyFromPlainPrivatePKCS8PEM(c)}if(c.indexOf("-END RSA PRIVATE KEY-")!=-1&&c.indexOf("4,ENCRYPTED")!=-1){return KEYUTIL.getRSAKeyFromEncryptedPKCS5PEM(c,o)}if(c.indexOf("-END EC PRIVATE KEY-")!=-1&&c.indexOf("4,ENCRYPTED")!=-1){var m=KEYUTIL.getDecryptedKeyHex(c,o);var n=ASN1HEX.getVbyList(m,0,[1],"04");var j=ASN1HEX.getVbyList(m,0,[2,0],"06");var d=ASN1HEX.getVbyList(m,0,[3,0],"03").substr(2);var h="";if(KJUR.crypto.OID.oidhex2name[j]!==undefined){h=KJUR.crypto.OID.oidhex2name[j]}else{throw"undefined OID(hex) in KJUR.crypto.OID: "+j}var f=new KJUR.crypto.ECDSA({name:h});f.setPublicKeyHex(d);f.setPrivateKeyHex(n);f.isPublic=false;return f}if(c.indexOf("-END DSA PRIVATE KEY-")!=-1&&c.indexOf("4,ENCRYPTED")!=-1){var m=KEYUTIL.getDecryptedKeyHex(c,o);var b=ASN1HEX.getVbyList(m,0,[1],"02");var a=ASN1HEX.getVbyList(m,0,[2],"02");var e=ASN1HEX.getVbyList(m,0,[3],"02");var k=ASN1HEX.getVbyList(m,0,[4],"02");var l=ASN1HEX.getVbyList(m,0,[5],"02");var n=new KJUR.crypto.DSA();n.setPrivate(new BigInteger(b,16),new BigInteger(a,16),new BigInteger(e,16),new BigInteger(k,16),new BigInteger(l,16));return n}if(c.indexOf("-END ENCRYPTED PRIVATE KEY-")!=-1){return KEYUTIL.getKeyFromEncryptedPKCS8PEM(c,o)}throw"not supported argument"};KEYUTIL.generateKeypair=function(a,c){if(a=="RSA"){var b=c;var h=new RSAKey();h.generate(b,"10001");var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a=="EC"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPrivateKeyHex(j.ecprvhex);var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw"unknown algorithm: "+a}}};KEYUTIL.getPEM=function(a,r,o,g,j){var v=KJUR.asn1;var u=KJUR.crypto;function p(s){var w=KJUR.asn1.ASN1Util.newObject({seq:[{"int":0},{"int":{bigint:s.n}},{"int":s.e},{"int":{bigint:s.d}},{"int":{bigint:s.p}},{"int":{bigint:s.q}},{"int":{bigint:s.dmp1}},{"int":{bigint:s.dmq1}},{"int":{bigint:s.coeff}}]});return w}function q(w){var s=KJUR.asn1.ASN1Util.newObject({seq:[{"int":1},{octstr:{hex:w.prvKeyHex}},{tag:["a0",true,{oid:{name:w.curveName}}]},{tag:["a1",true,{bitstr:{hex:"00"+w.pubKeyHex}}]}]});return s}function n(s){var w=KJUR.asn1.ASN1Util.newObject({seq:[{"int":0},{"int":{bigint:s.p}},{"int":{bigint:s.q}},{"int":{bigint:s.g}},{"int":{bigint:s.y}},{"int":{bigint:s.x}}]});return w}if(((typeof RSAKey!="undefined"&&a instanceof RSAKey)||(typeof u.DSA!="undefined"&&a instanceof u.DSA)||(typeof u.ECDSA!="undefined"&&a instanceof u.ECDSA))&&a.isPublic==true&&(r===undefined||r=="PKCS8PUB")){var t=new KJUR.asn1.x509.SubjectPublicKeyInfo(a);var m=t.getEncodedHex();return v.ASN1Util.getPEMStringFromHex(m,"PUBLIC KEY")}if(r=="PKCS1PRV"&&typeof RSAKey!="undefined"&&a instanceof RSAKey&&(o===undefined||o==null)&&a.isPrivate==true){var t=p(a);var m=t.getEncodedHex();return v.ASN1Util.getPEMStringFromHex(m,"RSA PRIVATE KEY")}if(r=="PKCS1PRV"&&typeof RSAKey!="undefined"&&a instanceof KJUR.crypto.ECDSA&&(o===undefined||o==null)&&a.isPrivate==true){var f=new KJUR.asn1.DERObjectIdentifier({name:a.curveName});var l=f.getEncodedHex();var e=q(a);var k=e.getEncodedHex();var i="";i+=v.ASN1Util.getPEMStringFromHex(l,"EC PARAMETERS");i+=v.ASN1Util.getPEMStringFromHex(k,"EC PRIVATE KEY");return i}if(r=="PKCS1PRV"&&typeof KJUR.crypto.DSA!="undefined"&&a instanceof KJUR.crypto.DSA&&(o===undefined||o==null)&&a.isPrivate==true){var t=n(a);var m=t.getEncodedHex();return v.ASN1Util.getPEMStringFromHex(m,"DSA PRIVATE KEY")}if(r=="PKCS5PRV"&&typeof RSAKey!="undefined"&&a instanceof RSAKey&&(o!==undefined&&o!=null)&&a.isPrivate==true){var t=p(a);var m=t.getEncodedHex();if(g===undefined){g="DES-EDE3-CBC"}return this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",m,o,g)}if(r=="PKCS5PRV"&&typeof KJUR.crypto.ECDSA!="undefined"&&a instanceof KJUR.crypto.ECDSA&&(o!==undefined&&o!=null)&&a.isPrivate==true){var t=q(a);var m=t.getEncodedHex();if(g===undefined){g="DES-EDE3-CBC"}return this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",m,o,g)}if(r=="PKCS5PRV"&&typeof KJUR.crypto.DSA!="undefined"&&a instanceof KJUR.crypto.DSA&&(o!==undefined&&o!=null)&&a.isPrivate==true){var t=n(a);var m=t.getEncodedHex();if(g===undefined){g="DES-EDE3-CBC"}return this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",m,o,g)}var h=function(w,s){var y=b(w,s);var x=new KJUR.asn1.ASN1Util.newObject({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:y.pbkdf2Salt}},{"int":y.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:y.encryptionSchemeIV}}]}]}]},{octstr:{hex:y.ciphertext}}]});return x.getEncodedHex()};var b=function(D,E){var x=100;var C=CryptoJS.lib.WordArray.random(8);var B="DES-EDE3-CBC";var s=CryptoJS.lib.WordArray.random(8);var y=CryptoJS.PBKDF2(E,C,{keySize:192/32,iterations:x});var z=CryptoJS.enc.Hex.parse(D);var A=CryptoJS.TripleDES.encrypt(z,y,{iv:s})+"";var w={};w.ciphertext=A;w.pbkdf2Salt=CryptoJS.enc.Hex.stringify(C);w.pbkdf2Iter=x;w.encryptionSchemeAlg=B;w.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return w};if(r=="PKCS8PRV"&&typeof RSAKey!="undefined"&&a instanceof RSAKey&&a.isPrivate==true){var d=p(a);var c=d.getEncodedHex();var t=KJUR.asn1.ASN1Util.newObject({seq:[{"int":0},{seq:[{oid:{name:"rsaEncryption"}},{"null":true}]},{octstr:{hex:c}}]});var m=t.getEncodedHex();if(o===undefined||o==null){return v.ASN1Util.getPEMStringFromHex(m,"PRIVATE KEY")}else{var k=h(m,o);return v.ASN1Util.getPEMStringFromHex(k,"ENCRYPTED PRIVATE KEY")}}if(r=="PKCS8PRV"&&typeof KJUR.crypto.ECDSA!="undefined"&&a instanceof KJUR.crypto.ECDSA&&a.isPrivate==true){var d=new KJUR.asn1.ASN1Util.newObject({seq:[{"int":1},{octstr:{hex:a.prvKeyHex}},{tag:["a1",true,{bitstr:{hex:"00"+a.pubKeyHex}}]}]});var c=d.getEncodedHex();var t=KJUR.asn1.ASN1Util.newObject({seq:[{"int":0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:a.curveName}}]},{octstr:{hex:c}}]});var m=t.getEncodedHex();if(o===undefined||o==null){return v.ASN1Util.getPEMStringFromHex(m,"PRIVATE KEY")}else{var k=h(m,o);return v.ASN1Util.getPEMStringFromHex(k,"ENCRYPTED PRIVATE KEY")}}if(r=="PKCS8PRV"&&typeof KJUR.crypto.DSA!="undefined"&&a instanceof KJUR.crypto.DSA&&a.isPrivate==true){var d=new KJUR.asn1.DERInteger({bigint:a.x});var c=d.getEncodedHex();var t=KJUR.asn1.ASN1Util.newObject({seq:[{"int":0},{seq:[{oid:{name:"dsa"}},{seq:[{"int":{bigint:a.p}},{"int":{bigint:a.q}},{"int":{bigint:a.g}}]}]},{octstr:{hex:c}}]});var m=t.getEncodedHex();if(o===undefined||o==null){return v.ASN1Util.getPEMStringFromHex(m,"PRIVATE KEY")}else{var k=h(m,o);return v.ASN1Util.getPEMStringFromHex(k,"ENCRYPTED PRIVATE KEY")}}throw"unsupported object nor format"};
/*! rsapem-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
function _rsapem_pemToBase64(b){var a=b;a=a.replace("-----BEGIN RSA PRIVATE KEY-----","");a=a.replace("-----END RSA PRIVATE KEY-----","");a=a.replace(/[ \n]+/g,"");return a}function _rsapem_getPosArrayOfChildrenFromHex(d){var j=new Array();var k=ASN1HEX.getStartPosOfV_AtObj(d,0);var f=ASN1HEX.getPosOfNextSibling_AtObj(d,k);var h=ASN1HEX.getPosOfNextSibling_AtObj(d,f);var b=ASN1HEX.getPosOfNextSibling_AtObj(d,h);var l=ASN1HEX.getPosOfNextSibling_AtObj(d,b);var e=ASN1HEX.getPosOfNextSibling_AtObj(d,l);var g=ASN1HEX.getPosOfNextSibling_AtObj(d,e);var c=ASN1HEX.getPosOfNextSibling_AtObj(d,g);var i=ASN1HEX.getPosOfNextSibling_AtObj(d,c);j.push(k,f,h,b,l,e,g,c,i);return j}function _rsapem_getHexValueArrayOfChildrenFromHex(i){var o=_rsapem_getPosArrayOfChildrenFromHex(i);var r=ASN1HEX.getHexOfV_AtObj(i,o[0]);var f=ASN1HEX.getHexOfV_AtObj(i,o[1]);var j=ASN1HEX.getHexOfV_AtObj(i,o[2]);var k=ASN1HEX.getHexOfV_AtObj(i,o[3]);var c=ASN1HEX.getHexOfV_AtObj(i,o[4]);var b=ASN1HEX.getHexOfV_AtObj(i,o[5]);var h=ASN1HEX.getHexOfV_AtObj(i,o[6]);var g=ASN1HEX.getHexOfV_AtObj(i,o[7]);var l=ASN1HEX.getHexOfV_AtObj(i,o[8]);var m=new Array();m.push(r,f,j,k,c,b,h,g,l);return m}function _rsapem_readPrivateKeyFromASN1HexString(c){var b=_rsapem_getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])}function _rsapem_readPrivateKeyFromPEMString(e){var c=_rsapem_pemToBase64(e);var d=b64tohex(c);var b=_rsapem_getHexValueArrayOfChildrenFromHex(d);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])}RSAKey.prototype.readPrivateKeyFromPEMString=_rsapem_readPrivateKeyFromPEMString;RSAKey.prototype.readPrivateKeyFromASN1HexString=_rsapem_readPrivateKeyFromASN1HexString;
/*! rsasign-1.2.7.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
var _RE_HEXDECONLY=new RegExp("");_RE_HEXDECONLY.compile("[^0-9a-f]","gi");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c="";var a=d/4-e.length;for(var b=0;b<a;b++){c=c+"0"}return c+e}function _rsasign_signString(d,a){var b=function(e){return KJUR.crypto.Util.hashString(e,a)};var c=b(d);return this.signWithMessageHash(c,a)}function _rsasign_signWithMessageHash(e,c){var f=KJUR.crypto.Util.getPaddedDigestInfoHex(e,c,this.n.bitLength());var b=parseBigInt(f,16);var d=this.doPrivate(b);var a=d.toString(16);return _zeroPaddingOfSignature(a,this.n.bitLength())}function _rsasign_signStringWithSHA1(a){return _rsasign_signString.call(this,a,"sha1")}function _rsasign_signStringWithSHA256(a){return _rsasign_signString.call(this,a,"sha256")}function pss_mgf1_str(c,a,e){var b="",d=0;while(b.length<a){b+=hextorstr(e(rstrtohex(c+String.fromCharCode.apply(String,[(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}function _rsasign_signStringPSS(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)}function _rsasign_signWithMessageHashPSS(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw"invalid salt length"}}}if(c<(g+k+2)){throw"data too long"}var f="";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex("\x00\x00\x00\x00\x00\x00\x00\x00"+b+f)));var j=[];for(d=0;d<c-k-g-2;d+=1){j[d]=0}var e=String.fromCharCode.apply(String,j)+"\x01"+f;var h=pss_mgf1_str(n,e.length,o);var q=[];for(d=0;d<e.length;d+=1){q[d]=e.charCodeAt(d)^h.charCodeAt(d)}var p=(65280>>(8*c-m))&255;q[0]&=~p;for(d=0;d<g;d++){q.push(n.charCodeAt(d))}q.push(188);return _zeroPaddingOfSignature(this.doPrivate(new BigInteger(q)).toString(16),this.n.bitLength())}function _rsasign_getDecryptSignatureBI(a,d,c){var b=new RSAKey();b.setPublic(d,c);var e=b.doPublic(a);return e}function _rsasign_getHexDigestInfoFromSig(a,c,b){var e=_rsasign_getDecryptSignatureBI(a,c,b);var d=e.toString(16).replace(/^1f+00/,"");return d}function _rsasign_getAlgNameAndHashFromHexDisgestInfo(f){for(var e in KJUR.crypto.Util.DIGESTINFOHEAD){var d=KJUR.crypto.Util.DIGESTINFOHEAD[e];var b=d.length;if(f.substring(0,b)==d){var c=[e,f.substring(b)];return c}}return[]}function _rsasign_verifySignatureWithArgs(f,b,g,j){var e=_rsasign_getHexDigestInfoFromSig(b,g,j);var h=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(h.length==0){return false}var d=h[0];var i=h[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(i==c)}function _rsasign_verifyHexSignatureForMessage(c,b){var d=parseBigInt(c,16);var a=_rsasign_verifySignatureWithArgs(b,d,this.n.toString(16),this.e.toString(16));return a}function _rsasign_verifyString(f,j){j=j.replace(_RE_HEXDECONLY,"");j=j.replace(/[ \n]+/g,"");var b=parseBigInt(j,16);if(b.bitLength()>this.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,"");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)}function _rsasign_verifyWithMessageHash(e,a){a=a.replace(_RE_HEXDECONLY,"");a=a.replace(/[ \n]+/g,"");var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,"");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)}function _rsasign_verifyStringPSS(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)}function _rsasign_verifyWithMessageHashPSS(f,s,l,c){var k=new BigInteger(s,16);if(k.bitLength()>this.n.bitLength()){return false}var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw"invalid salt length"}}}if(m<(h+c+2)){throw"data too long"}var a=this.doPublic(k).toByteArray();for(q=0;q<a.length;q+=1){a[q]&=255}while(a.length<m){a.unshift(0)}if(a[m-1]!==188){throw"encoded message does not end in 0xbc"}a=String.fromCharCode.apply(String,a);var d=a.substr(0,m-h-1);var e=a.substr(d.length,h);var p=(65280>>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw"bits beyond keysize not zero"}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q<d.length;q+=1){o[q]=d.charCodeAt(q)^n.charCodeAt(q)}o[0]&=~p;var b=m-h-c-2;for(q=0;q<b;q+=1){if(o[q]!==0){throw"leftmost octets not zero"}}if(o[b]!==1){throw"0x01 marker not found"}return e===hextorstr(r(rstrtohex("\x00\x00\x00\x00\x00\x00\x00\x00"+j+String.fromCharCode.apply(String,o.slice(-c)))))}RSAKey.prototype.signWithMessageHash=_rsasign_signWithMessageHash;RSAKey.prototype.signString=_rsasign_signString;RSAKey.prototype.signStringWithSHA1=_rsasign_signStringWithSHA1;RSAKey.prototype.signStringWithSHA256=_rsasign_signStringWithSHA256;RSAKey.prototype.sign=_rsasign_signString;RSAKey.prototype.signWithSHA1=_rsasign_signStringWithSHA1;RSAKey.prototype.signWithSHA256=_rsasign_signStringWithSHA256;RSAKey.prototype.signWithMessageHashPSS=_rsasign_signWithMessageHashPSS;RSAKey.prototype.signStringPSS=_rsasign_signStringPSS;RSAKey.prototype.signPSS=_rsasign_signStringPSS;RSAKey.SALT_LEN_HLEN=-1;RSAKey.SALT_LEN_MAX=-2;RSAKey.prototype.verifyWithMessageHash=_rsasign_verifyWithMessageHash;RSAKey.prototype.verifyString=_rsasign_verifyString;RSAKey.prototype.verifyHexSignatureForMessage=_rsasign_verifyHexSignatureForMessage;RSAKey.prototype.verify=_rsasign_verifyString;RSAKey.prototype.verifyHexSignatureForByteArrayMessage=_rsasign_verifyHexSignatureForMessage;RSAKey.prototype.verifyWithMessageHashPSS=_rsasign_verifyWithMessageHashPSS;RSAKey.prototype.verifyStringPSS=_rsasign_verifyStringPSS;RSAKey.prototype.verifyPSS=_rsasign_verifyStringPSS;RSAKey.SALT_LEN_RECOVER=-2;
/*! x509-1.1.2.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
*/
function X509(){this.subjectPublicKeyRSA=null;this.subjectPublicKeyRSA_hN=null;this.subjectPublicKeyRSA_hE=null;this.hex=null;this.getSerialNumberHex=function(){return ASN1HEX.getDecendantHexVByNthList(this.hex,0,[0,1])};this.getIssuerHex=function(){return ASN1HEX.getDecendantHexTLVByNthList(this.hex,0,[0,3])};this.getIssuerString=function(){return X509.hex2dn(ASN1HEX.getDecendantHexTLVByNthList(this.hex,0,[0,3]))};this.getSubjectHex=function(){return ASN1HEX.getDecendantHexTLVByNthList(this.hex,0,[0,5])};this.getSubjectString=function(){return X509.hex2dn(ASN1HEX.getDecendantHexTLVByNthList(this.hex,0,[0,5]))};this.getNotBefore=function(){var a=ASN1HEX.getDecendantHexVByNthList(this.hex,0,[0,4,0]);a=a.replace(/(..)/g,"%$1");a=decodeURIComponent(a);return a};this.getNotAfter=function(){var a=ASN1HEX.getDecendantHexVByNthList(this.hex,0,[0,4,1]);a=a.replace(/(..)/g,"%$1");a=decodeURIComponent(a);return a};this.readCertPEM=function(c){var e=X509.pemToHex(c);var b=X509.getPublicKeyHexArrayFromCertHex(e);var d=new RSAKey();d.setPublic(b[0],b[1]);this.subjectPublicKeyRSA=d;this.subjectPublicKeyRSA_hN=b[0];this.subjectPublicKeyRSA_hE=b[1];this.hex=e};this.readCertPEMWithoutRSAInit=function(c){var d=X509.pemToHex(c);var b=X509.getPublicKeyHexArrayFromCertHex(d);this.subjectPublicKeyRSA.setPublic(b[0],b[1]);this.subjectPublicKeyRSA_hN=b[0];this.subjectPublicKeyRSA_hE=b[1];this.hex=d}}X509.pemToBase64=function(a){var b=a;b=b.replace("-----BEGIN CERTIFICATE-----","");b=b.replace("-----END CERTIFICATE-----","");b=b.replace(/[ \n]+/g,"");return b};X509.pemToHex=function(a){var c=X509.pemToBase64(a);var b=b64tohex(c);return b};X509.getSubjectPublicKeyPosFromCertHex=function(f){var e=X509.getSubjectPublicKeyInfoPosFromCertHex(f);if(e==-1){return -1}var b=ASN1HEX.getPosArrayOfChildren_AtObj(f,e);if(b.length!=2){return -1}var d=b[1];if(f.substring(d,d+2)!="03"){return -1}var c=ASN1HEX.getStartPosOfV_AtObj(f,d);if(f.substring(c,c+2)!="00"){return -1}return c+2};X509.getSubjectPublicKeyInfoPosFromCertHex=function(d){var c=ASN1HEX.getStartPosOfV_AtObj(d,0);var b=ASN1HEX.getPosArrayOfChildren_AtObj(d,c);if(b.length<1){return -1}if(d.substring(b[0],b[0]+10)=="a003020102"){if(b.length<6){return -1}return b[6]}else{if(b.length<5){return -1}return b[5]}};X509.getPublicKeyHexArrayFromCertHex=function(f){var e=X509.getSubjectPublicKeyPosFromCertHex(f);var b=ASN1HEX.getPosArrayOfChildren_AtObj(f,e);if(b.length!=2){return[]}var d=ASN1HEX.getHexOfV_AtObj(f,b[0]);var c=ASN1HEX.getHexOfV_AtObj(f,b[1]);if(d!=null&&c!=null){return[d,c]}else{return[]}};X509.getHexTbsCertificateFromCert=function(b){var a=ASN1HEX.getStartPosOfV_AtObj(b,0);return a};X509.getPublicKeyHexArrayFromCertPEM=function(c){var d=X509.pemToHex(c);var b=X509.getPublicKeyHexArrayFromCertHex(d);return b};X509.hex2dn=function(e){var f="";var c=ASN1HEX.getPosArrayOfChildren_AtObj(e,0);for(var d=0;d<c.length;d++){var b=ASN1HEX.getHexOfTLV_AtObj(e,c[d]);f=f+"/"+X509.hex2rdn(b)}return f};X509.hex2rdn=function(a){var f=ASN1HEX.getDecendantHexTLVByNthList(a,0,[0,0]);var e=ASN1HEX.getDecendantHexVByNthList(a,0,[0,1]);var c="";try{c=X509.DN_ATTRHEX[f]}catch(b){c=f}e=e.replace(/(..)/g,"%$1");var d=decodeURIComponent(e);return c+"="+d};X509.DN_ATTRHEX={"0603550406":"C","060355040a":"O","060355040b":"OU","0603550403":"CN","0603550405":"SN","0603550408":"ST","0603550407":"L",};X509.getPublicKeyFromCertPEM=function(f){var c=X509.getPublicKeyInfoPropOfCertPEM(f);if(c.algoid=="2a864886f70d010101"){var i=KEYUTIL.parsePublicRawRSAKeyHex(c.keyhex);var j=new RSAKey();j.setPublic(i.n,i.e);return j}else{if(c.algoid=="2a8648ce3d0201"){var e=KJUR.crypto.OID.oidhex2name[c.algparam];var j=new KJUR.crypto.ECDSA({curve:e,info:c.keyhex});j.setPublicKeyHex(c.keyhex);return j}else{if(c.algoid=="2a8648ce380401"){var b=ASN1HEX.getVbyList(c.algparam,0,[0],"02");var a=ASN1HEX.getVbyList(c.algparam,0,[1],"02");var d=ASN1HEX.getVbyList(c.algparam,0,[2],"02");var h=ASN1HEX.getHexOfV_AtObj(c.keyhex,0);h=h.substr(2);var j=new KJUR.crypto.DSA();j.setPublic(new BigInteger(b,16),new BigInteger(a,16),new BigInteger(d,16),new BigInteger(h,16));return j}else{throw"unsupported key"}}}};X509.getPublicKeyInfoPropOfCertPEM=function(e){var c={};c.algparam=null;var g=X509.pemToHex(e);var d=ASN1HEX.getPosArrayOfChildren_AtObj(g,0);if(d.length!=3){throw"malformed X.509 certificate PEM (code:001)"}if(g.substr(d[0],2)!="30"){throw"malformed X.509 certificate PEM (code:002)"}var b=ASN1HEX.getPosArrayOfChildren_AtObj(g,d[0]);if(b.length<7){throw"malformed X.509 certificate PEM (code:003)"}var h=ASN1HEX.getPosArrayOfChildren_AtObj(g,b[6]);if(h.length!=2){throw"malformed X.509 certificate PEM (code:004)"}var f=ASN1HEX.getPosArrayOfChildren_AtObj(g,h[0]);if(f.length!=2){throw"malformed X.509 certificate PEM (code:005)"}c.algoid=ASN1HEX.getHexOfV_AtObj(g,f[0]);if(g.substr(f[1],2)=="06"){c.algparam=ASN1HEX.getHexOfV_AtObj(g,f[1])}else{if(g.substr(f[1],2)=="30"){c.algparam=ASN1HEX.getHexOfTLV_AtObj(g,f[1])}}if(g.substr(h[1],2)!="03"){throw"malformed X.509 certificate PEM (code:006)"}var a=ASN1HEX.getHexOfV_AtObj(g,h[1]);c.keyhex=a.substr(2);return c};
var scrypt_module_factory = (function (requested_total_memory) {
var Module = {TOTAL_MEMORY: (requested_total_memory || 33554432)};
var scrypt_raw = Module;
function g(a) {
throw a;
}
var k = void 0, l = !0, m = null, p = !1;
function aa() {
return function() {
}
}
var q, s;
s || (s = eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));
var ba = {}, t;
for(t in s) {
s.hasOwnProperty(t) && (ba[t] = s[t])
}
var ca = "object" === typeof process && "function" === typeof require, da = "object" === typeof window, ea = "function" === typeof importScripts, fa = !da && !ca && !ea;
if(ca) {
s.print = function(a) {
process.stdout.write(a + "\n")
};
s.printErr = function(a) {
process.stderr.write(a + "\n")
};
var ga = require("fs"), ha = require("path");
s.read = function(a, b) {
var a = ha.normalize(a), c = ga.readFileSync(a);
!c && a != ha.resolve(a) && (a = path.join(__dirname, "..", "src", a), c = ga.readFileSync(a));
c && !b && (c = c.toString());
return c
};
s.readBinary = function(a) {
return s.read(a, l)
};
s.load = function(a) {
ia(read(a))
};
s.arguments = process.argv.slice(2);
module.ee = s
}else {
fa ? (s.print = print, "undefined" != typeof printErr && (s.printErr = printErr), s.read = read, s.readBinary = function(a) {
return read(a, "binary")
}, "undefined" != typeof scriptArgs ? s.arguments = scriptArgs : "undefined" != typeof arguments && (s.arguments = arguments), this.Module = s) : da || ea ? (s.read = function(a) {
var b = new XMLHttpRequest;
b.open("GET", a, p);
b.send(m);
return b.responseText
}, "undefined" != typeof arguments && (s.arguments = arguments), da ? (s.print = function(a) {
console.log(a)
}, s.printErr = function(a) {
console.log(a)
}, this.Module = s) : ea && (s.print = aa(), s.load = importScripts)) : g("Unknown runtime environment. Where are we?")
}
function ia(a) {
eval.call(m, a)
}
"undefined" == !s.load && s.read && (s.load = function(a) {
ia(s.read(a))
});
s.print || (s.print = aa());
s.printErr || (s.printErr = s.print);
s.arguments || (s.arguments = []);
s.print = s.print;
s.P = s.printErr;
s.preRun = [];
s.postRun = [];
for(t in ba) {
ba.hasOwnProperty(t) && (s[t] = ba[t])
}
function ja() {
return u
}
function ka(a) {
u = a
}
function la(a) {
if(1 == ma) {
return 1
}
var b = {"%i1":1, "%i8":1, "%i16":2, "%i32":4, "%i64":8, "%float":4, "%double":8}["%" + a];
b || ("*" == a.charAt(a.length - 1) ? b = ma : "i" == a[0] && (a = parseInt(a.substr(1)), w(0 == a % 8), b = a / 8));
return b
}
function na(a, b, c) {
c && c.length ? (c.splice || (c = Array.prototype.slice.call(c)), c.splice(0, 0, b), s["dynCall_" + a].apply(m, c)) : s["dynCall_" + a].call(m, b)
}
var oa;
function pa() {
var a = [], b = 0;
this.oa = function(c) {
c &= 255;
b && (a.push(c), b--);
if(0 == a.length) {
if(128 > c) {
return String.fromCharCode(c)
}
a.push(c);
b = 191 < c && 224 > c ? 1 : 2;
return""
}
if(0 < b) {
return""
}
var c = a[0], d = a[1], e = a[2], c = 191 < c && 224 > c ? String.fromCharCode((c & 31) << 6 | d & 63) : String.fromCharCode((c & 15) << 12 | (d & 63) << 6 | e & 63);
a.length = 0;
return c
};
this.yb = function(a) {
for(var a = unescape(encodeURIComponent(a)), b = [], e = 0;e < a.length;e++) {
b.push(a.charCodeAt(e))
}
return b
}
}
function qa(a) {
var b = u;
u = u + a | 0;
u = u + 7 >> 3 << 3;
return b
}
function ra(a) {
var b = sa;
sa = sa + a | 0;
sa = sa + 7 >> 3 << 3;
return b
}
function ua(a) {
var b = z;
z = z + a | 0;
z = z + 7 >> 3 << 3;
z >= va && wa("Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY before the program runs.");
return b
}
function xa(a, b) {
return Math.ceil(a / (b ? b : 8)) * (b ? b : 8)
}
var ma = 4, ya = {}, za = p, Aa;
function w(a, b) {
a || wa("Assertion failed: " + b)
}
s.ccall = function(a, b, c, d) {
return Ba(Ca(a), b, c, d)
};
function Ca(a) {
try {
var b = s["_" + a];
b || (b = eval("_" + a))
}catch(c) {
}
w(b, "Cannot call unknown function " + a + " (perhaps LLVM optimizations or closure removed it?)");
return b
}
function Ba(a, b, c, d) {
function e(a, b) {
if("string" == b) {
if(a === m || a === k || 0 === a) {
return 0
}
f || (f = ja());
var c = qa(a.length + 1);
Da(a, c);
return c
}
return"array" == b ? (f || (f = ja()), c = qa(a.length), Ea(a, c), c) : a
}
var f = 0, h = 0, d = d ? d.map(function(a) {
return e(a, c[h++])
}) : [];
a = a.apply(m, d);
"string" == b ? b = Fa(a) : (w("array" != b), b = a);
f && ka(f);
return b
}
s.cwrap = function(a, b, c) {
var d = Ca(a);
return function() {
return Ba(d, b, c, Array.prototype.slice.call(arguments))
}
};
function Ga(a, b, c) {
c = c || "i8";
"*" === c.charAt(c.length - 1) && (c = "i32");
switch(c) {
case "i1":
A[a] = b;
break;
case "i8":
A[a] = b;
break;
case "i16":
Ha[a >> 1] = b;
break;
case "i32":
B[a >> 2] = b;
break;
case "i64":
Aa = [b >>> 0, (Math.min(+Math.floor(b / 4294967296), 4294967295) | 0) >>> 0];
B[a >> 2] = Aa[0];
B[a + 4 >> 2] = Aa[1];
break;
case "float":
Ia[a >> 2] = b;
break;
case "double":
Ja[a >> 3] = b;
break;
default:
wa("invalid type for setValue: " + c)
}
}
s.setValue = Ga;
s.getValue = function(a, b) {
b = b || "i8";
"*" === b.charAt(b.length - 1) && (b = "i32");
switch(b) {
case "i1":
return A[a];
case "i8":
return A[a];
case "i16":
return Ha[a >> 1];
case "i32":
return B[a >> 2];
case "i64":
return B[a >> 2];
case "float":
return Ia[a >> 2];
case "double":
return Ja[a >> 3];
default:
wa("invalid type for setValue: " + b)
}
return m
};
var Ka = 0, La = 1, E = 2, Na = 4;
s.ALLOC_NORMAL = Ka;
s.ALLOC_STACK = La;
s.ALLOC_STATIC = E;
s.ALLOC_DYNAMIC = 3;
s.ALLOC_NONE = Na;
function F(a, b, c, d) {
var e, f;
"number" === typeof a ? (e = l, f = a) : (e = p, f = a.length);
var h = "string" === typeof b ? b : m, c = c == Na ? d : [Oa, qa, ra, ua][c === k ? E : c](Math.max(f, h ? 1 : b.length));
if(e) {
d = c;
w(0 == (c & 3));
for(a = c + (f & -4);d < a;d += 4) {
B[d >> 2] = 0
}
for(a = c + f;d < a;) {
A[d++ | 0] = 0
}
return c
}
if("i8" === h) {
return a.subarray || a.slice ? G.set(a, c) : G.set(new Uint8Array(a), c), c
}
for(var d = 0, i, j;d < f;) {
var n = a[d];
"function" === typeof n && (n = ya.fe(n));
e = h || b[d];
0 === e ? d++ : ("i64" == e && (e = "i32"), Ga(c + d, n, e), j !== e && (i = la(e), j = e), d += i)
}
return c
}
s.allocate = F;
function Fa(a, b) {
for(var c = p, d, e = 0;;) {
d = G[a + e | 0];
if(128 <= d) {
c = l
}else {
if(0 == d && !b) {
break
}
}
e++;
if(b && e == b) {
break
}
}
b || (b = e);
var f = "";
if(!c) {
for(;0 < b;) {
d = String.fromCharCode.apply(String, G.subarray(a, a + Math.min(b, 1024))), f = f ? f + d : d, a += 1024, b -= 1024
}
return f
}
c = new pa;
for(e = 0;e < b;e++) {
d = G[a + e | 0], f += c.oa(d)
}
return f
}
s.Pointer_stringify = Fa;
var A, G, Ha, Pa, B, Qa, Ia, Ja, Ra = 0, sa = 0, Sa = 0, u = 0, Ta = 0, Ua = 0, z = 0, va = s.TOTAL_MEMORY || 33554432;
w(!!Int32Array && !!Float64Array && !!(new Int32Array(1)).subarray && !!(new Int32Array(1)).set, "Cannot fallback to non-typed array case: Code is too specialized");
var I = new ArrayBuffer(va);
A = new Int8Array(I);
Ha = new Int16Array(I);
B = new Int32Array(I);
G = new Uint8Array(I);
Pa = new Uint16Array(I);
Qa = new Uint32Array(I);
Ia = new Float32Array(I);
Ja = new Float64Array(I);
B[0] = 255;
w(255 === G[0] && 0 === G[3], "Typed arrays 2 must be run on a little-endian system");
s.HEAP = k;
s.HEAP8 = A;
s.HEAP16 = Ha;
s.HEAP32 = B;
s.HEAPU8 = G;
s.HEAPU16 = Pa;
s.HEAPU32 = Qa;
s.HEAPF32 = Ia;
s.HEAPF64 = Ja;
function Va(a) {
for(;0 < a.length;) {
var b = a.shift();
if("function" == typeof b) {
b()
}else {
var c = b.V;
"number" === typeof c ? b.ha === k ? na("v", c) : na("vi", c, [b.ha]) : c(b.ha === k ? m : b.ha)
}
}
}
var Wa = [], Xa = [], Ya = [], Za = [], $a = [], ab = p;
function bb(a) {
Wa.unshift(a)
}
s.addOnPreRun = s.Vd = bb;
s.addOnInit = s.Sd = function(a) {
Xa.unshift(a)
};
s.addOnPreMain = s.Ud = function(a) {
Ya.unshift(a)
};
s.addOnExit = s.Rd = function(a) {
Za.unshift(a)
};
function cb(a) {
$a.unshift(a)
}
s.addOnPostRun = s.Td = cb;
function J(a, b, c) {
a = (new pa).yb(a);
c && (a.length = c);
b || a.push(0);
return a
}
s.intArrayFromString = J;
s.intArrayToString = function(a) {
for(var b = [], c = 0;c < a.length;c++) {
var d = a[c];
255 < d && (d &= 255);
b.push(String.fromCharCode(d))
}
return b.join("")
};
function Da(a, b, c) {
a = J(a, c);
for(c = 0;c < a.length;) {
A[b + c | 0] = a[c], c += 1
}
}
s.writeStringToMemory = Da;
function Ea(a, b) {
for(var c = 0;c < a.length;c++) {
A[b + c | 0] = a[c]
}
}
s.writeArrayToMemory = Ea;
function db(a, b) {
return 0 <= a ? a : 32 >= b ? 2 * Math.abs(1 << b - 1) + a : Math.pow(2, b) + a
}
function eb(a, b) {
if(0 >= a) {
return a
}
var c = 32 >= b ? Math.abs(1 << b - 1) : Math.pow(2, b - 1);
if(a >= c && (32 >= b || a > c)) {
a = -2 * c + a
}
return a
}
Math.imul || (Math.imul = function(a, b) {
var c = a & 65535, d = b & 65535;
return c * d + ((a >>> 16) * d + c * (b >>> 16) << 16) | 0
});
Math.ie = Math.imul;
var L = 0, fb = {}, gb = p, hb = m;
function ib(a) {
L++;
s.monitorRunDependencies && s.monitorRunDependencies(L);
a ? (w(!fb[a]), fb[a] = 1) : s.P("warning: run dependency added without ID")
}
s.addRunDependency = ib;
function jb(a) {
L--;
s.monitorRunDependencies && s.monitorRunDependencies(L);
a ? (w(fb[a]), delete fb[a]) : s.P("warning: run dependency removed without ID");
0 == L && (hb !== m && (clearInterval(hb), hb = m), !gb && kb && lb())
}
s.removeRunDependency = jb;
s.preloadedImages = {};
s.preloadedAudios = {};
Ra = 8;
sa = Ra + 1312;
Xa.push({V:function() {
mb()
}});
var nb, ob, pb;
nb = nb = F([0, 0, 0, 0, 0, 0, 0, 0], "i8", E);
ob = ob = F([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", E);
pb = pb = F([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", E);
F([111, 112, 116, 105, 111, 110, 32, 114, 101, 113, 117, 105, 114, 101, 115, 32, 97, 110, 32, 97, 114, 103, 117, 109, 101, 110, 116, 32, 45, 45, 32, 37, 115, 0, 0, 0, 0, 0, 0, 0, 111, 112, 116, 105, 111, 110, 32, 114, 101, 113, 117, 105, 114, 101, 115, 32, 97, 110, 32, 97, 114, 103, 117, 109, 101, 110, 116, 32, 45, 45, 32, 37, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 64, 0, 0, 0, 0, 0, 0, 89, 64, 0, 0, 0, 0, 0, 136, 195, 64, 0, 0, 0, 0, 132, 215, 151, 65, 0, 128, 224, 55, 121, 195, 65, 67,
23, 110, 5, 181, 181, 184, 147, 70, 245, 249, 63, 233, 3, 79, 56, 77, 50, 29, 48, 249, 72, 119, 130, 90, 60, 191, 115, 127, 221, 79, 21, 117, 56, 3, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 111, 112, 116, 105, 111, 110, 32, 100, 111, 101, 115, 110, 39, 116, 32, 116, 97, 107, 101, 32, 97, 110, 32, 97, 114, 103, 117, 109, 101, 110, 116, 32, 45, 45, 32, 37, 46, 42, 115, 0, 117, 110, 107,
110, 111, 119, 110, 32, 111, 112, 116, 105, 111, 110, 32, 45, 45, 32, 37, 115, 0, 0, 0, 0, 117, 110, 107, 110, 111, 119, 110, 32, 111, 112, 116, 105, 111, 110, 32, 45, 45, 32, 37, 99, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 97, 109, 98, 105, 103, 117, 111, 117, 115, 32, 111, 112, 116, 105, 111, 110, 32, 45, 45, 32, 37, 46, 42, 115, 0, 0, 0, 0, 0, 0, 0, 0, 37, 115, 58, 32, 0, 0, 0, 0, 80, 79, 83, 73, 88, 76, 89, 95, 67, 79, 82, 82, 69, 67, 84, 0, 115, 116, 100, 58, 58, 98, 97, 100, 95, 97, 108,
108, 111, 99, 0, 0, 37, 115, 58, 32, 0, 0, 0, 0, 37, 115, 10, 0, 0, 0, 0, 0, 37, 115, 10, 0, 0, 0, 0, 0, 105, 110, 32, 117, 115, 101, 32, 98, 121, 116, 101, 115, 32, 32, 32, 32, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 37, 115, 58, 32, 0, 0, 0, 0, 37, 115, 58, 32, 0, 0, 0, 0, 98, 97, 100, 95, 97, 114, 114, 97, 121, 95, 110, 101, 119, 95, 108, 101, 110, 103, 116, 104, 0, 0, 0, 0, 58, 32, 0, 0, 0, 0, 0, 0, 58, 32, 0, 0, 0, 0, 0, 0, 115, 121, 115, 116, 101, 109, 32, 98, 121, 116, 101,
115, 32, 32, 32, 32, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 109, 97, 120, 32, 115, 121, 115, 116, 101, 109, 32, 98, 121, 116, 101, 115, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 2, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 2, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 116, 57, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 83, 116, 57, 98, 97,
100, 95, 97, 108, 108, 111, 99, 0, 0, 0, 0, 83, 116, 50, 48, 98, 97, 100, 95, 97, 114, 114, 97, 121, 95, 110, 101, 119, 95, 108, 101, 110, 103, 116, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 2, 0, 0, 0, 0, 0, 0, 120, 2, 0, 0, 168, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 2, 0, 0, 176, 2, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"i8", Na, 8);
var qb = xa(F(12, "i8", E), 8);
w(0 == qb % 8);
var rb = 0;
function M(a) {
return B[rb >> 2] = a
}
s._memcpy = sb;
s._memset = tb;
var N = {L:1, ca:2, Bd:3, sc:4, I:5, za:6, Jb:7, Sc:8, $:9, Zb:10, ua:11, Ld:11, $a:12, Ya:13, kc:14, ed:15, Wb:16, va:17, Md:18, wa:19, gd:20, aa:21, A:22, Mc:23, Za:24, ld:25, Id:26, lc:27, ad:28, da:29, yd:30, Fc:31, rd:32, hc:33, ab:34, Wc:35, pc:36, $b:37, vc:38, wc:39, xc:40, Ec:41, Jd:42, Qc:43, uc:44, ec:45, Tc:46, Pb:50, Sb:51, Nd:52, Oc:53, Tb:54, Ub:55, fc:56, Vb:57, cd:60, Rc:61, Fd:62, bd:63, Xc:64, Yc:65, xd:66, Uc:67, Mb:68, Cd:69, ac:70, td:71, Hc:74, yc:75, ic:76, Rb:77, mc:79, md:80,
Qb:81, wd:82, zc:83, Ac:84, Dc:85, Cc:86, Bc:87, dd:88, Nc:89, ya:90, Ic:91, ba:92, nd:95, qd:96, dc:104, Pc:105, Nb:106, vd:107, jd:108, Zc:109, zd:110, cc:111, Kb:112, bc:113, Lc:114, Jc:115, Gd:116, nc:117, oc:118, rc:119, Ob:120, gc:121, Gc:122, ud:123, Ad:124, Lb:125, Kc:126, tc:127, fd:128, Hd:129, sd:130, Kd:131, jc:132, Dd:133, kd:134, Vc:135, $c:136, Yb:137, qc:138, od:139, Xb:140, hd:141, pd:142, Ed:143}, ub = {"0":"Success", 1:"Not super-user", 2:"No such file or directory", 3:"No such process",
4:"Interrupted system call", 5:"I/O error", 6:"No such device or address", 7:"Arg list too long", 8:"Exec format error", 9:"Bad file number", 10:"No children", 11:"No more processes", 12:"Not enough core", 13:"Permission denied", 14:"Bad address", 15:"Block device required", 16:"Mount device busy", 17:"File exists", 18:"Cross-device link", 19:"No such device", 20:"Not a directory", 21:"Is a directory", 22:"Invalid argument", 23:"Too many open files in system", 24:"Too many open files", 25:"Not a typewriter",
26:"Text file busy", 27:"File too large", 28:"No space left on device", 29:"Illegal seek", 30:"Read only file system", 31:"Too many links", 32:"Broken pipe", 33:"Math arg out of domain of func", 34:"Math result not representable", 35:"No message of desired type", 36:"Identifier removed", 37:"Channel number out of range", 38:"Level 2 not synchronized", 39:"Level 3 halted", 40:"Level 3 reset", 41:"Link number out of range", 42:"Protocol driver not attached", 43:"No CSI structure available", 44:"Level 2 halted",
45:"Deadlock condition", 46:"No record locks available", 50:"Invalid exchange", 51:"Invalid request descriptor", 52:"Exchange full", 53:"No anode", 54:"Invalid request code", 55:"Invalid slot", 56:"File locking deadlock error", 57:"Bad font file fmt", 60:"Device not a stream", 61:"No data (for no delay io)", 62:"Timer expired", 63:"Out of streams resources", 64:"Machine is not on the network", 65:"Package not installed", 66:"The object is remote", 67:"The link has been severed", 68:"Advertise error",
69:"Srmount error", 70:"Communication error on send", 71:"Protocol error", 74:"Multihop attempted", 75:"Inode is remote (not really error)", 76:"Cross mount point (not really error)", 77:"Trying to read unreadable message", 79:"Inappropriate file type or format", 80:"Given log. name not unique", 81:"f.d. invalid for this operation", 82:"Remote address changed", 83:"Can\t access a needed shared lib", 84:"Accessing a corrupted shared lib", 85:".lib section in a.out corrupted", 86:"Attempting to link in too many libs",
87:"Attempting to exec a shared library", 88:"Function not implemented", 89:"No more files", 90:"Directory not empty", 91:"File or path name too long", 92:"Too many symbolic links", 95:"Operation not supported on transport endpoint", 96:"Protocol family not supported", 104:"Connection reset by peer", 105:"No buffer space available", 106:"Address family not supported by protocol family", 107:"Protocol wrong type for socket", 108:"Socket operation on non-socket", 109:"Protocol not available", 110:"Can't send after socket shutdown",
111:"Connection refused", 112:"Address already in use", 113:"Connection aborted", 114:"Network is unreachable", 115:"Network interface is not configured", 116:"Connection timed out", 117:"Host is down", 118:"Host is unreachable", 119:"Connection already in progress", 120:"Socket already connected", 121:"Destination address required", 122:"Message too long", 123:"Unknown protocol", 124:"Socket type not supported", 125:"Address not available", 126:"ENETRESET", 127:"Socket is already connected", 128:"Socket is not connected",
129:"TOOMANYREFS", 130:"EPROCLIM", 131:"EUSERS", 132:"EDQUOT", 133:"ESTALE", 134:"Not supported", 135:"No medium (in tape drive)", 136:"No such host or network path", 137:"Filename exists with different case", 138:"EILSEQ", 139:"Value too large for defined data type", 140:"Operation canceled", 141:"State not recoverable", 142:"Previous owner died", 143:"Streams pipe error"};
function vb(a, b, c) {
var d = O(a, {parent:l}).d, a = "/" === a ? "/" : wb(a)[2], e = xb(d, a);
e && g(new Q(e));
d.l.Ta || g(new Q(N.L));
return d.l.Ta(d, a, b, c)
}
function yb(a, b) {
b = b & 4095 | 32768;
return vb(a, b, 0)
}
function zb(a, b) {
b = b & 1023 | 16384;
return vb(a, b, 0)
}
function Ab(a, b, c) {
return vb(a, b | 8192, c)
}
function Bb(a, b) {
var c = O(b, {parent:l}).d, d = "/" === b ? "/" : wb(b)[2], e = xb(c, d);
e && g(new Q(e));
c.l.Wa || g(new Q(N.L));
return c.l.Wa(c, d, a)
}
function Cb(a, b) {
var c;
c = "string" === typeof a ? O(a, {N:l}).d : a;
c.l.Y || g(new Q(N.L));
c.l.Y(c, {mode:b & 4095 | c.mode & -4096, timestamp:Date.now()})
}
function Db(a, b) {
var c, a = Eb(a), d;
"string" === typeof b ? (d = Fb[b], "undefined" === typeof d && g(Error("Unknown file open mode: " + b))) : d = b;
b = d;
c = b & 512 ? c & 4095 | 32768 : 0;
var e;
try {
var f = O(a, {N:!(b & 65536)});
e = f.d;
a = f.path
}catch(h) {
}
b & 512 && (e ? b & 2048 && g(new Q(N.va)) : e = vb(a, c, 0));
e || g(new Q(N.ca));
8192 === (e.mode & 61440) && (b &= -1025);
e ? 40960 === (e.mode & 61440) ? c = N.ba : 16384 === (e.mode & 61440) && (0 !== (b & 3) || b & 1024) ? c = N.aa : (c = ["r", "w", "rw"][b & 3], b & 1024 && (c += "w"), c = Gb(e, c)) : c = N.ca;
c && g(new Q(c));
b & 1024 && (c = e, c = "string" === typeof c ? O(c, {N:l}).d : c, c.l.Y || g(new Q(N.L)), 16384 === (c.mode & 61440) && g(new Q(N.aa)), 32768 !== (c.mode & 61440) && g(new Q(N.A)), (f = Gb(c, "w")) && g(new Q(f)), c.l.Y(c, {size:0, timestamp:Date.now()}));
var i = {path:a, d:e, M:b, seekable:l, position:0, e:e.e, Gb:[], error:p}, j;
a: {
e = k || 4096;
for(c = k || 1;c <= e;c++) {
if(!R[c]) {
j = c;
break a
}
}
g(new Q(N.Za))
}
i.s = j;
Object.defineProperty(i, "object", {get:function() {
return i.d
}, set:function(a) {
i.d = a
}});
Object.defineProperty(i, "isRead", {get:function() {
return 1 !== (i.M & 3)
}});
Object.defineProperty(i, "isWrite", {get:function() {
return 0 !== (i.M & 3)
}});
Object.defineProperty(i, "isAppend", {get:function() {
return i.M & 8
}});
R[j] = i;
i.e.open && i.e.open(i);
return i
}
function Hb(a) {
try {
a.e.close && a.e.close(a)
}catch(b) {
g(b)
}finally {
R[a.s] = m
}
}
function Ib(a, b, c, d, e) {
(0 > d || 0 > e) && g(new Q(N.A));
0 === (a.M & 3) && g(new Q(N.$));
16384 === (a.d.mode & 61440) && g(new Q(N.aa));
a.e.write || g(new Q(N.A));
var f = l;
"undefined" === typeof e ? (e = a.position, f = p) : a.seekable || g(new Q(N.da));
a.M & 8 && ((!a.seekable || !a.e.na) && g(new Q(N.da)), a.e.na(a, 0, 2));
b = a.e.write(a, b, c, d, e);
f || (a.position += b);
return b
}
function wb(a) {
return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1)
}
function Jb(a, b) {
for(var c = 0, d = a.length - 1;0 <= d;d--) {
var e = a[d];
"." === e ? a.splice(d, 1) : ".." === e ? (a.splice(d, 1), c++) : c && (a.splice(d, 1), c--)
}
if(b) {
for(;c--;c) {
a.unshift("..")
}
}
return a
}
function Eb(a) {
var b = "/" === a.charAt(0), c = "/" === a.substr(-1), a = Jb(a.split("/").filter(function(a) {
return!!a
}), !b).join("/");
!a && !b && (a = ".");
a && c && (a += "/");
return(b ? "/" : "") + a
}
function S() {
var a = Array.prototype.slice.call(arguments, 0);
return Eb(a.filter(function(a) {
"string" !== typeof a && g(new TypeError("Arguments to path.join must be strings"));
return a
}).join("/"))
}
function Kb() {
for(var a = "", b = p, c = arguments.length - 1;-1 <= c && !b;c--) {
var d = 0 <= c ? arguments[c] : "/";
"string" !== typeof d && g(new TypeError("Arguments to path.resolve must be strings"));
d && (a = d + "/" + a, b = "/" === d.charAt(0))
}
a = Jb(a.split("/").filter(function(a) {
return!!a
}), !b).join("/");
return(b ? "/" : "") + a || "."
}
var Lb = [];
function Mb(a, b) {
Lb[a] = {input:[], H:[], O:b};
Nb[a] = {e:Ob}
}
var Ob = {open:function(a) {
Pb || (Pb = new pa);
var b = Lb[a.d.X];
b || g(new Q(N.wa));
a.q = b;
a.seekable = p
}, close:function(a) {
a.q.H.length && a.q.O.W(a.q, 10)
}, Q:function(a, b, c, d) {
(!a.q || !a.q.O.Na) && g(new Q(N.za));
for(var e = 0, f = 0;f < d;f++) {
var h;
try {
h = a.q.O.Na(a.q)
}catch(i) {
g(new Q(N.I))
}
h === k && 0 === e && g(new Q(N.ua));
if(h === m || h === k) {
break
}
e++;
b[c + f] = h
}
e && (a.d.timestamp = Date.now());
return e
}, write:function(a, b, c, d) {
(!a.q || !a.q.O.W) && g(new Q(N.za));
for(var e = 0;e < d;e++) {
try {
a.q.O.W(a.q, b[c + e])
}catch(f) {
g(new Q(N.I))
}
}
d && (a.d.timestamp = Date.now());
return e
}}, Pb, T = {z:function() {
return T.ka(m, "/", 16895, 0)
}, ka:function(a, b, c, d) {
(24576 === (c & 61440) || 4096 === (c & 61440)) && g(new Q(N.L));
c = Qb(a, b, c, d);
c.l = T.l;
16384 === (c.mode & 61440) ? (c.e = T.e, c.g = {}) : 32768 === (c.mode & 61440) ? (c.e = T.e, c.g = []) : 40960 === (c.mode & 61440) ? c.e = T.e : 8192 === (c.mode & 61440) && (c.e = Rb);
c.timestamp = Date.now();
a && (a.g[b] = c);
return c
}, l:{ge:function(a) {
var b = {};
b.ce = 8192 === (a.mode & 61440) ? a.id : 1;
b.je = a.id;
b.mode = a.mode;
b.pe = 1;
b.uid = 0;
b.he = 0;
b.X = a.X;
b.size = 16384 === (a.mode & 61440) ? 4096 : 32768 === (a.mode & 61440) ? a.g.length : 40960 === (a.mode & 61440) ? a.link.length : 0;
b.Yd = new Date(a.timestamp);
b.oe = new Date(a.timestamp);
b.ae = new Date(a.timestamp);
b.ib = 4096;
b.Zd = Math.ceil(b.size / b.ib);
return b
}, Y:function(a, b) {
b.mode !== k && (a.mode = b.mode);
b.timestamp !== k && (a.timestamp = b.timestamp);
if(b.size !== k) {
var c = a.g;
if(b.size < c.length) {
c.length = b.size
}else {
for(;b.size > c.length;) {
c.push(0)
}
}
}
}, tb:function() {
g(new Q(N.ca))
}, Ta:function(a, b, c, d) {
return T.ka(a, b, c, d)
}, rename:function(a, b, c) {
if(16384 === (a.mode & 61440)) {
var d;
try {
d = Sb(b, c)
}catch(e) {
}
if(d) {
for(var f in d.g) {
g(new Q(N.ya))
}
}
}
delete a.parent.g[a.name];
a.name = c;
b.g[c] = a
}, ze:function(a, b) {
delete a.g[b]
}, ve:function(a, b) {
var c = Sb(a, b), d;
for(d in c.g) {
g(new Q(N.ya))
}
delete a.g[b]
}, Wa:function(a, b, c) {
a = T.ka(a, b, 41471, 0);
a.link = c;
return a
}, Va:function(a) {
40960 !== (a.mode & 61440) && g(new Q(N.A));
return a.link
}}, e:{open:function(a) {
if(16384 === (a.d.mode & 61440)) {
var b = [".", ".."], c;
for(c in a.d.g) {
a.d.g.hasOwnProperty(c) && b.push(c)
}
a.lb = b
}
}, Q:function(a, b, c, d, e) {
a = a.d.g;
d = Math.min(a.length - e, d);
if(a.subarray) {
b.set(a.subarray(e, e + d), c)
}else {
for(var f = 0;f < d;f++) {
b[c + f] = a[e + f]
}
}
return d
}, write:function(a, b, c, d, e) {
for(var f = a.d.g;f.length < e;) {
f.push(0)
}
for(var h = 0;h < d;h++) {
f[e + h] = b[c + h]
}
a.d.timestamp = Date.now();
return d
}, na:function(a, b, c) {
1 === c ? b += a.position : 2 === c && 32768 === (a.d.mode & 61440) && (b += a.d.g.length);
0 > b && g(new Q(N.A));
a.Gb = [];
return a.position = b
}, ue:function(a) {
return a.lb
}, Wd:function(a, b, c) {
a = a.d.g;
for(b += c;b > a.length;) {
a.push(0)
}
}, ne:function(a, b, c, d, e, f, h) {
32768 !== (a.d.mode & 61440) && g(new Q(N.wa));
a = a.d.g;
if(h & 2) {
if(0 < e || e + d < a.length) {
a = a.subarray ? a.subarray(e, e + d) : Array.prototype.slice.call(a, e, e + d)
}
e = l;
(d = Oa(d)) || g(new Q(N.$a));
b.set(a, d)
}else {
w(a.buffer === b || a.buffer === b.buffer), e = p, d = a.byteOffset
}
return{te:d, Xd:e}
}}}, Tb = F(1, "i32*", E), Ub = F(1, "i32*", E);
nb = F(1, "i32*", E);
var Vb = m, Nb = [m], R = [m], Wb = 1, Xb = [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ], Yb = l;
function Q(a) {
this.mb = a;
for(var b in N) {
if(N[b] === a) {
this.code = b;
break
}
}
this.message = ub[a]
}
function Zb(a) {
a instanceof Q || g(a + " : " + Error().stack);
M(a.mb)
}
function $b(a, b) {
for(var c = 0, d = 0;d < b.length;d++) {
c = (c << 5) - c + b.charCodeAt(d) | 0
}
return(a + c) % Xb.length
}
function Sb(a, b) {
var c = Gb(a, "x");
c && g(new Q(c));
for(c = Xb[$b(a.id, b)];c;c = c.wb) {
if(c.parent.id === a.id && c.name === b) {
return c
}
}
return a.l.tb(a, b)
}
function Qb(a, b, c, d) {
var e = {id:Wb++, name:b, mode:c, l:{}, e:{}, X:d, parent:m, z:m};
a || (a = e);
e.parent = a;
e.z = a.z;
Object.defineProperty(e, "read", {get:function() {
return 365 === (e.mode & 365)
}, set:function(a) {
a ? e.mode |= 365 : e.mode &= -366
}});
Object.defineProperty(e, "write", {get:function() {
return 146 === (e.mode & 146)
}, set:function(a) {
a ? e.mode |= 146 : e.mode &= -147
}});
a = $b(e.parent.id, e.name);
e.wb = Xb[a];
return Xb[a] = e
}
function O(a, b) {
a = Kb("/", a);
b = b || {pa:0};
8 < b.pa && g(new Q(N.ba));
for(var c = Jb(a.split("/").filter(function(a) {
return!!a
}), p), d = Vb, e = "/", f = 0;f < c.length;f++) {
var h = f === c.length - 1;
if(h && b.parent) {
break
}
d = Sb(d, c[f]);
e = S(e, c[f]);
d.ub && (d = d.z.root);
if(!h || b.N) {
for(h = 0;40960 === (d.mode & 61440);) {
d = O(e, {N:p}).d;
d.l.Va || g(new Q(N.A));
var d = d.l.Va(d), i = Kb;
var j = wb(e), e = j[0], j = j[1];
!e && !j ? e = "." : (j && (j = j.substr(0, j.length - 1)), e += j);
e = i(e, d);
d = O(e, {pa:b.pa}).d;
40 < h++ && g(new Q(N.ba))
}
}
}
return{path:e, d:d}
}
function ac(a) {
for(var b;;) {
if(a === a.parent) {
return b ? S(a.z.Ua, b) : a.z.Ua
}
b = b ? S(a.name, b) : a.name;
a = a.parent
}
}
var Fb = {r:0, rs:8192, "r+":2, w:1537, wx:3585, xw:3585, "w+":1538, "wx+":3586, "xw+":3586, a:521, ax:2569, xa:2569, "a+":522, "ax+":2570, "xa+":2570};
function Gb(a, b) {
return Yb ? 0 : -1 !== b.indexOf("r") && !(a.mode & 292) || -1 !== b.indexOf("w") && !(a.mode & 146) || -1 !== b.indexOf("x") && !(a.mode & 73) ? N.Ya : 0
}
function xb(a, b) {
try {
return Sb(a, b), N.va
}catch(c) {
}
return Gb(a, "wx")
}
var Rb = {open:function(a) {
a.e = Nb[a.d.X].e;
a.e.open && a.e.open(a)
}, na:function() {
g(new Q(N.da))
}}, bc;
function cc(a, b) {
var c = 0;
a && (c |= 365);
b && (c |= 146);
return c
}
function dc(a, b, c, d, e) {
a = S("string" === typeof a ? a : ac(a), b);
d = cc(d, e);
e = yb(a, d);
if(c) {
if("string" === typeof c) {
for(var b = Array(c.length), f = 0, h = c.length;f < h;++f) {
b[f] = c.charCodeAt(f)
}
c = b
}
Cb(a, d | 146);
b = Db(a, "w");
Ib(b, c, 0, c.length, 0);
Hb(b);
Cb(a, d)
}
return e
}
function ec(a, b, c, d) {
a = S("string" === typeof a ? a : ac(a), b);
ec.Sa || (ec.Sa = 64);
b = ec.Sa++ << 8 | 0;
Nb[b] = {e:{open:function(a) {
a.seekable = p
}, close:function() {
d && (d.buffer && d.buffer.length) && d(10)
}, Q:function(a, b, d, i) {
for(var j = 0, n = 0;n < i;n++) {
var y;
try {
y = c()
}catch(v) {
g(new Q(N.I))
}
y === k && 0 === j && g(new Q(N.ua));
if(y === m || y === k) {
break
}
j++;
b[d + n] = y
}
j && (a.d.timestamp = Date.now());
return j
}, write:function(a, b, c, i) {
for(var j = 0;j < i;j++) {
try {
d(b[c + j])
}catch(n) {
g(new Q(N.I))
}
}
i && (a.d.timestamp = Date.now());
return j
}}};
return Ab(a, c && d ? 511 : c ? 219 : 365, b)
}
function fc(a, b, c) {
a = R[a];
if(!a) {
return-1
}
a.sender(G.subarray(b, b + c));
return c
}
function gc(a, b, c) {
var d = R[a];
if(!d) {
return M(N.$), -1
}
if(d && "socket" in d) {
return fc(a, b, c)
}
try {
return Ib(d, A, b, c)
}catch(e) {
return Zb(e), -1
}
}
function hc(a, b, c, d) {
c *= b;
if(0 == c) {
return 0
}
a = gc(d, a, c);
if(-1 == a) {
if(b = R[d]) {
b.error = l
}
return 0
}
return Math.floor(a / b)
}
s._strlen = ic;
function jc(a) {
return 0 > a || 0 === a && -Infinity === 1 / a
}
function kc(a, b) {
function c(a) {
var c;
"double" === a ? c = Ja[b + e >> 3] : "i64" == a ? (c = [B[b + e >> 2], B[b + (e + 8) >> 2]], e += 8) : (a = "i32", c = B[b + e >> 2]);
e += Math.max(Math.max(la(a), ma), 8);
return c
}
for(var d = a, e = 0, f = [], h, i;;) {
var j = d;
h = A[d];
if(0 === h) {
break
}
i = A[d + 1 | 0];
if(37 == h) {
var n = p, y = p, v = p, C = p;
a:for(;;) {
switch(i) {
case 43:
n = l;
break;
case 45:
y = l;
break;
case 35:
v = l;
break;
case 48:
if(C) {
break a
}else {
C = l;
break
}
;
default:
break a
}
d++;
i = A[d + 1 | 0]
}
var D = 0;
if(42 == i) {
D = c("i32"), d++, i = A[d + 1 | 0]
}else {
for(;48 <= i && 57 >= i;) {
D = 10 * D + (i - 48), d++, i = A[d + 1 | 0]
}
}
var K = p;
if(46 == i) {
var H = 0, K = l;
d++;
i = A[d + 1 | 0];
if(42 == i) {
H = c("i32"), d++
}else {
for(;;) {
i = A[d + 1 | 0];
if(48 > i || 57 < i) {
break
}
H = 10 * H + (i - 48);
d++
}
}
i = A[d + 1 | 0]
}else {
H = 6
}
var x;
switch(String.fromCharCode(i)) {
case "h":
i = A[d + 2 | 0];
104 == i ? (d++, x = 1) : x = 2;
break;
case "l":
i = A[d + 2 | 0];
108 == i ? (d++, x = 8) : x = 4;
break;
case "L":
;
case "q":
;
case "j":
x = 8;
break;
case "z":
;
case "t":
;
case "I":
x = 4;
break;
default:
x = m
}
x && d++;
i = A[d + 1 | 0];
switch(String.fromCharCode(i)) {
case "d":
;
case "i":
;
case "u":
;
case "o":
;
case "x":
;
case "X":
;
case "p":
j = 100 == i || 105 == i;
x = x || 4;
var P = h = c("i" + 8 * x), r;
8 == x && (h = 117 == i ? +(h[0] >>> 0) + 4294967296 * +(h[1] >>> 0) : +(h[0] >>> 0) + 4294967296 * +(h[1] | 0));
4 >= x && (h = (j ? eb : db)(h & Math.pow(256, x) - 1, 8 * x));
var ta = Math.abs(h), j = "";
if(100 == i || 105 == i) {
r = 8 == x && lc ? lc.stringify(P[0], P[1], m) : eb(h, 8 * x).toString(10)
}else {
if(117 == i) {
r = 8 == x && lc ? lc.stringify(P[0], P[1], l) : db(h, 8 * x).toString(10), h = Math.abs(h)
}else {
if(111 == i) {
r = (v ? "0" : "") + ta.toString(8)
}else {
if(120 == i || 88 == i) {
j = v && 0 != h ? "0x" : "";
if(8 == x && lc) {
if(P[1]) {
r = (P[1] >>> 0).toString(16);
for(v = (P[0] >>> 0).toString(16);8 > v.length;) {
v = "0" + v
}
r += v
}else {
r = (P[0] >>> 0).toString(16)
}
}else {
if(0 > h) {
h = -h;
r = (ta - 1).toString(16);
P = [];
for(v = 0;v < r.length;v++) {
P.push((15 - parseInt(r[v], 16)).toString(16))
}
for(r = P.join("");r.length < 2 * x;) {
r = "f" + r
}
}else {
r = ta.toString(16)
}
}
88 == i && (j = j.toUpperCase(), r = r.toUpperCase())
}else {
112 == i && (0 === ta ? r = "(nil)" : (j = "0x", r = ta.toString(16)))
}
}
}
}
if(K) {
for(;r.length < H;) {
r = "0" + r
}
}
for(n && (j = 0 > h ? "-" + j : "+" + j);j.length + r.length < D;) {
y ? r += " " : C ? r = "0" + r : j = " " + j
}
r = j + r;
r.split("").forEach(function(a) {
f.push(a.charCodeAt(0))
});
break;
case "f":
;
case "F":
;
case "e":
;
case "E":
;
case "g":
;
case "G":
h = c("double");
if(isNaN(h)) {
r = "nan", C = p
}else {
if(isFinite(h)) {
K = p;
x = Math.min(H, 20);
if(103 == i || 71 == i) {
K = l, H = H || 1, x = parseInt(h.toExponential(x).split("e")[1], 10), H > x && -4 <= x ? (i = (103 == i ? "f" : "F").charCodeAt(0), H -= x + 1) : (i = (103 == i ? "e" : "E").charCodeAt(0), H--), x = Math.min(H, 20)
}
if(101 == i || 69 == i) {
r = h.toExponential(x), /[eE][-+]\d$/.test(r) && (r = r.slice(0, -1) + "0" + r.slice(-1))
}else {
if(102 == i || 70 == i) {
r = h.toFixed(x), 0 === h && jc(h) && (r = "-" + r)
}
}
j = r.split("e");
if(K && !v) {
for(;1 < j[0].length && -1 != j[0].indexOf(".") && ("0" == j[0].slice(-1) || "." == j[0].slice(-1));) {
j[0] = j[0].slice(0, -1)
}
}else {
for(v && -1 == r.indexOf(".") && (j[0] += ".");H > x++;) {
j[0] += "0"
}
}
r = j[0] + (1 < j.length ? "e" + j[1] : "");
69 == i && (r = r.toUpperCase());
n && 0 <= h && (r = "+" + r)
}else {
r = (0 > h ? "-" : "") + "inf", C = p
}
}
for(;r.length < D;) {
r = y ? r + " " : C && ("-" == r[0] || "+" == r[0]) ? r[0] + "0" + r.slice(1) : (C ? "0" : " ") + r
}
97 > i && (r = r.toUpperCase());
r.split("").forEach(function(a) {
f.push(a.charCodeAt(0))
});
break;
case "s":
C = (n = c("i8*")) ? ic(n) : 6;
K && (C = Math.min(C, H));
if(!y) {
for(;C < D--;) {
f.push(32)
}
}
if(n) {
for(v = 0;v < C;v++) {
f.push(G[n++ | 0])
}
}else {
f = f.concat(J("(null)".substr(0, C), l))
}
if(y) {
for(;C < D--;) {
f.push(32)
}
}
break;
case "c":
for(y && f.push(c("i8"));0 < --D;) {
f.push(32)
}
y || f.push(c("i8"));
break;
case "n":
y = c("i32*");
B[y >> 2] = f.length;
break;
case "%":
f.push(h);
break;
default:
for(v = j;v < d + 2;v++) {
f.push(A[v])
}
}
d += 2
}else {
f.push(h), d += 1
}
}
return f
}
function mc(a, b, c) {
c = kc(b, c);
b = ja();
a = hc(F(c, "i8", La), 1, c.length, a);
ka(b);
return a
}
function nc(a) {
nc.ia || (z = z + 4095 >> 12 << 12, nc.ia = l, w(ua), nc.hb = ua, ua = function() {
wa("cannot dynamically allocate, sbrk now has control")
});
var b = z;
0 != a && nc.hb(a);
return b
}
function U() {
return B[U.m >> 2]
}
function oc() {
return!!oc.ta
}
function pc(a) {
var b = p;
try {
a == __ZTIi && (b = l)
}catch(c) {
}
try {
a == __ZTIj && (b = l)
}catch(d) {
}
try {
a == __ZTIl && (b = l)
}catch(e) {
}
try {
a == __ZTIm && (b = l)
}catch(f) {
}
try {
a == __ZTIx && (b = l)
}catch(h) {
}
try {
a == __ZTIy && (b = l)
}catch(i) {
}
try {
a == __ZTIf && (b = l)
}catch(j) {
}
try {
a == __ZTId && (b = l)
}catch(n) {
}
try {
a == __ZTIe && (b = l)
}catch(y) {
}
try {
a == __ZTIc && (b = l)
}catch(v) {
}
try {
a == __ZTIa && (b = l)
}catch(C) {
}
try {
a == __ZTIh && (b = l)
}catch(D) {
}
try {
a == __ZTIs && (b = l)
}catch(K) {
}
try {
a == __ZTIt && (b = l)
}catch(H) {
}
return b
}
function qc(a, b, c) {
if(0 == c) {
return p
}
if(0 == b || b == a) {
return l
}
switch(pc(b) ? b : B[B[b >> 2] - 8 >> 2]) {
case 0:
return 0 == B[B[a >> 2] - 8 >> 2] ? qc(B[a + 8 >> 2], B[b + 8 >> 2], c) : p;
case 1:
return p;
case 2:
return qc(a, B[b + 8 >> 2], c);
default:
return p
}
}
function rc(a, b, c) {
if(!rc.sb) {
try {
B[__ZTVN10__cxxabiv119__pointer_type_infoE >> 2] = 0
}catch(d) {
}
try {
B[pb >> 2] = 1
}catch(e) {
}
try {
B[ob >> 2] = 2
}catch(f) {
}
rc.sb = l
}
B[U.m >> 2] = a;
B[U.m + 4 >> 2] = b;
B[U.m + 8 >> 2] = c;
"uncaught_exception" in oc ? oc.ta++ : oc.ta = 1;
g(a + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.")
}
function sc(a) {
try {
return tc(a)
}catch(b) {
}
}
function uc() {
if(uc.Bb) {
uc.Bb = p
}else {
V.setThrew(0);
B[U.m + 4 >> 2] = 0;
var a = B[U.m >> 2], b = B[U.m + 8 >> 2];
b && (na("vi", b, [a]), B[U.m + 8 >> 2] = 0);
a && (sc(a), B[U.m >> 2] = 0)
}
}
var vc = F(1, "i32*", E);
function wc(a) {
var b, c;
wc.ia ? (c = B[vc >> 2], b = B[c >> 2]) : (wc.ia = l, W.USER = "root", W.PATH = "/", W.PWD = "/", W.HOME = "/home/emscripten", W.LANG = "en_US.UTF-8", W._ = "./this.program", b = F(1024, "i8", E), c = F(256, "i8*", E), B[c >> 2] = b, B[vc >> 2] = c);
var d = [], e = 0, f;
for(f in a) {
if("string" === typeof a[f]) {
var h = f + "=" + a[f];
d.push(h);
e += h.length
}
}
1024 < e && g(Error("Environment size exceeded TOTAL_ENV_SIZE!"));
for(a = 0;a < d.length;a++) {
h = d[a];
for(e = 0;e < h.length;e++) {
A[b + e | 0] = h.charCodeAt(e)
}
A[b + e | 0] = 0;
B[c + 4 * a >> 2] = b;
b += h.length + 1
}
B[c + 4 * d.length >> 2] = 0
}
var W = {};
function xc(a) {
if(0 === a) {
return 0
}
a = Fa(a);
if(!W.hasOwnProperty(a)) {
return 0
}
xc.J && tc(xc.J);
xc.J = F(J(W[a]), "i8", Ka);
return xc.J
}
function yc(a, b, c) {
if(a in ub) {
if(ub[a].length > c - 1) {
return M(N.ab)
}
a = ub[a];
for(c = 0;c < a.length;c++) {
A[b + c | 0] = a.charCodeAt(c)
}
return A[b + c | 0] = 0
}
return M(N.A)
}
function zc(a) {
zc.buffer || (zc.buffer = Oa(256));
yc(a, zc.buffer, 256);
return zc.buffer
}
function Ac(a) {
s.exit(a)
}
function Bc(a, b) {
var c = db(a & 255);
A[Bc.J | 0] = c;
if(-1 == gc(b, Bc.J, 1)) {
if(c = R[b]) {
c.error = l
}
return-1
}
return c
}
var Cc = p, Dc = p, Ec = p, Fc = p, Gc = k, Hc = k;
function Ic(a) {
return{jpg:"image/jpeg", jpeg:"image/jpeg", png:"image/png", bmp:"image/bmp", ogg:"audio/ogg", wav:"audio/wav", mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".") + 1)]
}
var Jc = [];
function Kc() {
var a = s.canvas;
Jc.forEach(function(b) {
b(a.width, a.height)
})
}
function Lc() {
var a = s.canvas;
this.Ib = a.width;
this.Hb = a.height;
a.width = screen.width;
a.height = screen.height;
"undefined" != typeof SDL && (a = Qa[SDL.screen + 0 * ma >> 2], B[SDL.screen + 0 * ma >> 2] = a | 8388608);
Kc()
}
function Mc() {
var a = s.canvas;
a.width = this.Ib;
a.height = this.Hb;
"undefined" != typeof SDL && (a = Qa[SDL.screen + 0 * ma >> 2], B[SDL.screen + 0 * ma >> 2] = a & -8388609);
Kc()
}
var Nc, Oc, Pc, Qc, rb = ra(4);
B[rb >> 2] = 0;
var Vb = Qb(m, "/", 16895, 0), Rc = T, Sc = {type:Rc, se:{}, Ua:"/", root:m}, Tc;
Tc = O("/", {N:p});
var Uc = Rc.z(Sc);
Uc.z = Sc;
Sc.root = Uc;
Tc && (Tc.d.z = Sc, Tc.d.ub = l, Vb = Sc.root);
zb("/tmp", 511);
zb("/dev", 511);
Nb[259] = {e:{Q:function() {
return 0
}, write:function() {
return 0
}}};
Ab("/dev/null", 438, 259);
Mb(1280, {Na:function(a) {
if(!a.input.length) {
var b = m;
if(ca) {
if(process.Eb.be) {
return
}
b = process.Eb.Q()
}else {
"undefined" != typeof window && "function" == typeof window.prompt ? (b = window.prompt("Input: "), b !== m && (b += "\n")) : "function" == typeof readline && (b = readline(), b !== m && (b += "\n"))
}
if(!b) {
return m
}
a.input = J(b, l)
}
return a.input.shift()
}, W:function(a, b) {
b === m || 10 === b ? (s.print(a.H.join("")), a.H = []) : a.H.push(Pb.oa(b))
}});
Mb(1536, {W:function(a, b) {
b === m || 10 === b ? (s.printErr(a.H.join("")), a.H = []) : a.H.push(Pb.oa(b))
}});
Ab("/dev/tty", 438, 1280);
Ab("/dev/tty1", 438, 1536);
zb("/dev/shm", 511);
zb("/dev/shm/tmp", 511);
Xa.unshift({V:function() {
if(!s.noFSInit && !bc) {
w(!bc, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
bc = l;
s.stdin = s.stdin;
s.stdout = s.stdout;
s.stderr = s.stderr;
s.stdin ? ec("/dev", "stdin", s.stdin) : Bb("/dev/tty", "/dev/stdin");
s.stdout ? ec("/dev", "stdout", m, s.stdout) : Bb("/dev/tty", "/dev/stdout");
s.stderr ? ec("/dev", "stderr", m, s.stderr) : Bb("/dev/tty1", "/dev/stderr");
var a = Db("/dev/stdin", "r");
B[Tb >> 2] = a.s;
w(1 === a.s, "invalid handle for stdin (" + a.s + ")");
a = Db("/dev/stdout", "w");
B[Ub >> 2] = a.s;
w(2 === a.s, "invalid handle for stdout (" + a.s + ")");
a = Db("/dev/stderr", "w");
B[nb >> 2] = a.s;
w(3 === a.s, "invalid handle for stderr (" + a.s + ")")
}
}});
Ya.push({V:function() {
Yb = p
}});
Za.push({V:function() {
bc = p;
for(var a = 0;a < R.length;a++) {
var b = R[a];
b && Hb(b)
}
}});
s.FS_createFolder = function(a, b, c, d) {
a = S("string" === typeof a ? a : ac(a), b);
return zb(a, cc(c, d))
};
s.FS_createPath = function(a, b) {
for(var a = "string" === typeof a ? a : ac(a), c = b.split("/").reverse();c.length;) {
var d = c.pop();
if(d) {
var e = S(a, d);
try {
zb(e, 511)
}catch(f) {
}
a = e
}
}
return e
};
s.FS_createDataFile = dc;
s.FS_createPreloadedFile = function(a, b, c, d, e, f, h, i) {
function j() {
Ec = document.pointerLockElement === v || document.mozPointerLockElement === v || document.webkitPointerLockElement === v
}
function n(c) {
function j(c) {
i || dc(a, b, c, d, e);
f && f();
jb("cp " + C)
}
var n = p;
s.preloadPlugins.forEach(function(a) {
!n && a.canHandle(C) && (a.handle(c, C, j, function() {
h && h();
jb("cp " + C)
}), n = l)
});
n || j(c)
}
s.preloadPlugins || (s.preloadPlugins = []);
if(!Nc && !ea) {
Nc = l;
try {
new Blob, Oc = l
}catch(y) {
Oc = p, console.log("warning: no blob constructor, cannot create blobs with mimetypes")
}
Pc = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : !Oc ? console.log("warning: no BlobBuilder") : m;
Qc = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : console.log("warning: cannot create object URLs");
s.preloadPlugins.push({canHandle:function(a) {
return!s.re && /\.(jpg|jpeg|png|bmp)$/i.test(a)
}, handle:function(a, b, c, d) {
var e = m;
if(Oc) {
try {
e = new Blob([a], {type:Ic(b)}), e.size !== a.length && (e = new Blob([(new Uint8Array(a)).buffer], {type:Ic(b)}))
}catch(f) {
var h = "Blob constructor present but fails: " + f + "; falling back to blob builder";
oa || (oa = {});
oa[h] || (oa[h] = 1, s.P(h))
}
}
e || (e = new Pc, e.append((new Uint8Array(a)).buffer), e = e.getBlob());
var i = Qc.createObjectURL(e), j = new Image;
j.onload = function() {
w(j.complete, "Image " + b + " could not be decoded");
var d = document.createElement("canvas");
d.width = j.width;
d.height = j.height;
d.getContext("2d").drawImage(j, 0, 0);
s.preloadedImages[b] = d;
Qc.revokeObjectURL(i);
c && c(a)
};
j.onerror = function() {
console.log("Image " + i + " could not be decoded");
d && d()
};
j.src = i
}});
s.preloadPlugins.push({canHandle:function(a) {
return!s.qe && a.substr(-4) in {".ogg":1, ".wav":1, ".mp3":1}
}, handle:function(a, b, c, d) {
function e(d) {
h || (h = l, s.preloadedAudios[b] = d, c && c(a))
}
function f() {
h || (h = l, s.preloadedAudios[b] = new Audio, d && d())
}
var h = p;
if(Oc) {
try {
var i = new Blob([a], {type:Ic(b)})
}catch(j) {
return f()
}
var i = Qc.createObjectURL(i), n = new Audio;
n.addEventListener("canplaythrough", function() {
e(n)
}, p);
n.onerror = function() {
if(!h) {
console.log("warning: browser could not fully decode audio " + b + ", trying slower base64 approach");
for(var c = "", d = 0, f = 0, i = 0;i < a.length;i++) {
d = d << 8 | a[i];
for(f += 8;6 <= f;) {
var j = d >> f - 6 & 63, f = f - 6, c = c + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[j]
}
}
2 == f ? (c += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d & 3) << 4], c += "==") : 4 == f && (c += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d & 15) << 2], c += "=");
n.src = "data:audio/x-" + b.substr(-3) + ";base64," + c;
e(n)
}
};
n.src = i;
setTimeout(function() {
za || e(n)
}, 1E4)
}else {
return f()
}
}});
var v = s.canvas;
v.qa = v.requestPointerLock || v.mozRequestPointerLock || v.webkitRequestPointerLock;
v.La = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || aa();
v.La = v.La.bind(document);
document.addEventListener("pointerlockchange", j, p);
document.addEventListener("mozpointerlockchange", j, p);
document.addEventListener("webkitpointerlockchange", j, p);
s.elementPointerLock && v.addEventListener("click", function(a) {
!Ec && v.qa && (v.qa(), a.preventDefault())
}, p)
}
var C, D = S.apply(m, [a, b]);
"/" == D[0] && (D = D.substr(1));
C = D;
ib("cp " + C);
if("string" == typeof c) {
var K = h, H = function() {
K ? K() : g('Loading data file "' + c + '" failed.')
}, x = new XMLHttpRequest;
x.open("GET", c, l);
x.responseType = "arraybuffer";
x.onload = function() {
if(200 == x.status || 0 == x.status && x.response) {
var a = x.response;
w(a, 'Loading data file "' + c + '" failed (no arrayBuffer).');
a = new Uint8Array(a);
n(a);
jb("al " + c)
}else {
H()
}
};
x.onerror = H;
x.send(m);
ib("al " + c)
}else {
n(c)
}
};
s.FS_createLazyFile = function(a, b, c, d, e) {
var f, h;
"undefined" !== typeof XMLHttpRequest ? (ea || g("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"), f = function() {
this.ma = p;
this.T = []
}, f.prototype.get = function(a) {
if(!(a > this.length - 1 || 0 > a)) {
var b = a % this.S;
return this.pb(Math.floor(a / this.S))[b]
}
}, f.prototype.Cb = function(a) {
this.pb = a
}, f.prototype.Fa = function() {
var a = new XMLHttpRequest;
a.open("HEAD", c, p);
a.send(m);
200 <= a.status && 300 > a.status || 304 === a.status || g(Error("Couldn't load " + c + ". Status: " + a.status));
var b = Number(a.getResponseHeader("Content-length")), d, e = 1048576;
if(!((d = a.getResponseHeader("Accept-Ranges")) && "bytes" === d)) {
e = b
}
var f = this;
f.Cb(function(a) {
var d = a * e, h = (a + 1) * e - 1, h = Math.min(h, b - 1);
if("undefined" === typeof f.T[a]) {
var i = f.T;
d > h && g(Error("invalid range (" + d + ", " + h + ") or no bytes requested!"));
h > b - 1 && g(Error("only " + b + " bytes available! programmer error!"));
var j = new XMLHttpRequest;
j.open("GET", c, p);
b !== e && j.setRequestHeader("Range", "bytes=" + d + "-" + h);
"undefined" != typeof Uint8Array && (j.responseType = "arraybuffer");
j.overrideMimeType && j.overrideMimeType("text/plain; charset=x-user-defined");
j.send(m);
200 <= j.status && 300 > j.status || 304 === j.status || g(Error("Couldn't load " + c + ". Status: " + j.status));
d = j.response !== k ? new Uint8Array(j.response || []) : J(j.responseText || "", l);
i[a] = d
}
"undefined" === typeof f.T[a] && g(Error("doXHR failed!"));
return f.T[a]
});
this.gb = b;
this.fb = e;
this.ma = l
}, f = new f, Object.defineProperty(f, "length", {get:function() {
this.ma || this.Fa();
return this.gb
}}), Object.defineProperty(f, "chunkSize", {get:function() {
this.ma || this.Fa();
return this.fb
}}), h = k) : (h = c, f = k);
var i, a = S("string" === typeof a ? a : ac(a), b);
i = yb(a, cc(d, e));
f ? i.g = f : h && (i.g = m, i.url = h);
var j = {};
Object.keys(i.e).forEach(function(a) {
var b = i.e[a];
j[a] = function() {
var a;
if(i.ke || i.le || i.link || i.g) {
a = l
}else {
a = l;
"undefined" !== typeof XMLHttpRequest && g(Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."));
if(s.read) {
try {
i.g = J(s.read(i.url), l)
}catch(c) {
a = p
}
}else {
g(Error("Cannot load without read() or XMLHttpRequest."))
}
a || M(N.I)
}
a || g(new Q(N.I));
return b.apply(m, arguments)
}
});
j.Q = function(a, b, c, d, e) {
a = a.d.g;
d = Math.min(a.length - e, d);
if(a.slice) {
for(var f = 0;f < d;f++) {
b[c + f] = a[e + f]
}
}else {
for(f = 0;f < d;f++) {
b[c + f] = a.get(e + f)
}
}
return d
};
i.e = j;
return i
};
s.FS_createLink = function(a, b, c) {
a = S("string" === typeof a ? a : ac(a), b);
return Bb(c, a)
};
s.FS_createDevice = ec;
U.m = F(12, "void*", E);
wc(W);
Bc.J = F([0], "i8", E);
s.requestFullScreen = function(a, b) {
function c() {
Dc = p;
(document.webkitFullScreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.mozFullscreenElement || document.fullScreenElement || document.fullscreenElement) === d ? (d.Ga = document.cancelFullScreen || document.mozCancelFullScreen || document.webkitCancelFullScreen, d.Ga = d.Ga.bind(document), Gc && d.qa(), Dc = l, Hc && Lc()) : Hc && Mc();
if(s.onFullScreen) {
s.onFullScreen(Dc)
}
}
Gc = a;
Hc = b;
"undefined" === typeof Gc && (Gc = l);
"undefined" === typeof Hc && (Hc = p);
var d = s.canvas;
Fc || (Fc = l, document.addEventListener("fullscreenchange", c, p), document.addEventListener("mozfullscreenchange", c, p), document.addEventListener("webkitfullscreenchange", c, p));
d.Ab = d.requestFullScreen || d.mozRequestFullScreen || (d.webkitRequestFullScreen ? function() {
d.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
} : m);
d.Ab()
};
s.requestAnimationFrame = function(a) {
window.requestAnimationFrame || (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || window.setTimeout);
window.requestAnimationFrame(a)
};
s.pauseMainLoop = aa();
s.resumeMainLoop = function() {
Cc && (Cc = p, m())
};
s.getUserMedia = function() {
window.Ma || (window.Ma = navigator.getUserMedia || navigator.mozGetUserMedia);
window.Ma(k)
};
Sa = u = xa(sa);
Ta = Sa + 5242880;
Ua = z = xa(Ta);
w(Ua < va);
var Vc = F([8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", 3), Wc = F([8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0,
2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1,
0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0], "i8", 3), Xc = Math.min;
var V = (function(global,env,buffer) {
// EMSCRIPTEN_START_ASM
"use asm";
var a = new global.Int8Array(buffer);
var b = new global.Int16Array(buffer);
var c = new global.Int32Array(buffer);
var d = new global.Uint8Array(buffer);
var e = new global.Uint16Array(buffer);
var f = new global.Uint32Array(buffer);
var g = new global.Float32Array(buffer);
var h = new global.Float64Array(buffer);
var i = env.STACKTOP | 0;
var j = env.STACK_MAX | 0;
var k = env.tempDoublePtr | 0;
var l = env.ABORT | 0;
var m = env.cttz_i8 | 0;
var n = env.ctlz_i8 | 0;
var o = env._stderr | 0;
var p = env.__ZTVN10__cxxabiv120__si_class_type_infoE | 0;
var q = env.__ZTVN10__cxxabiv117__class_type_infoE | 0;
var r = env.___progname | 0;
var s = +env.NaN;
var t = +env.Infinity;
var u = 0;
var v = 0;
var w = 0;
var x = 0;
var y = 0, z = 0, A = 0, B = 0, C = 0.0, D = 0, E = 0, F = 0, G = 0.0;
var H = 0;
var I = 0;
var J = 0;
var K = 0;
var L = 0;
var M = 0;
var N = 0;
var O = 0;
var P = 0;
var Q = 0;
var R = global.Math.floor;
var S = global.Math.abs;
var T = global.Math.sqrt;
var U = global.Math.pow;
var V = global.Math.cos;
var W = global.Math.sin;
var X = global.Math.tan;
var Y = global.Math.acos;
var Z = global.Math.asin;
var _ = global.Math.atan;
var $ = global.Math.atan2;
var aa = global.Math.exp;
var ab = global.Math.log;
var ac = global.Math.ceil;
var ad = global.Math.imul;
var ae = env.abort;
var af = env.assert;
var ag = env.asmPrintInt;
var ah = env.asmPrintFloat;
var ai = env.min;
var aj = env.invoke_vi;
var ak = env.invoke_vii;
var al = env.invoke_ii;
var am = env.invoke_viii;
var an = env.invoke_v;
var ao = env.invoke_iii;
var ap = env._strncmp;
var aq = env._llvm_va_end;
var ar = env._sysconf;
var as = env.___cxa_throw;
var at = env._strerror;
var au = env._abort;
var av = env._fprintf;
var aw = env._llvm_eh_exception;
var ax = env.___cxa_free_exception;
var ay = env._fflush;
var az = env.___buildEnvironment;
var aA = env.__reallyNegative;
var aB = env._strchr;
var aC = env._fputc;
var aD = env.___setErrNo;
var aE = env._fwrite;
var aF = env._send;
var aG = env._write;
var aH = env._exit;
var aI = env.___cxa_find_matching_catch;
var aJ = env.___cxa_allocate_exception;
var aK = env._isspace;
var aL = env.__formatString;
var aM = env.___resumeException;
var aN = env._llvm_uadd_with_overflow_i32;
var aO = env.___cxa_does_inherit;
var aP = env._getenv;
var aQ = env._vfprintf;
var aR = env.___cxa_begin_catch;
var aS = env.__ZSt18uncaught_exceptionv;
var aT = env._pwrite;
var aU = env.___cxa_call_unexpected;
var aV = env._sbrk;
var aW = env._strerror_r;
var aX = env.___errno_location;
var aY = env.___gxx_personality_v0;
var aZ = env.___cxa_is_number_type;
var a_ = env._time;
var a$ = env.__exit;
var a0 = env.___cxa_end_catch;
// EMSCRIPTEN_START_FUNCS
function a7(a) {
a = a | 0;
var b = 0;
b = i;
i = i + a | 0;
i = i + 7 >> 3 << 3;
return b | 0;
}
function a8() {
return i | 0;
}
function a9(a) {
a = a | 0;
i = a;
}
function ba(a, b) {
a = a | 0;
b = b | 0;
if ((u | 0) == 0) {
u = a;
v = b;
}
}
function bb(b) {
b = b | 0;
a[k] = a[b];
a[k + 1 | 0] = a[b + 1 | 0];
a[k + 2 | 0] = a[b + 2 | 0];
a[k + 3 | 0] = a[b + 3 | 0];
}
function bc(b) {
b = b | 0;
a[k] = a[b];
a[k + 1 | 0] = a[b + 1 | 0];
a[k + 2 | 0] = a[b + 2 | 0];
a[k + 3 | 0] = a[b + 3 | 0];
a[k + 4 | 0] = a[b + 4 | 0];
a[k + 5 | 0] = a[b + 5 | 0];
a[k + 6 | 0] = a[b + 6 | 0];
a[k + 7 | 0] = a[b + 7 | 0];
}
function bd(a) {
a = a | 0;
H = a;
}
function be(a) {
a = a | 0;
I = a;
}
function bf(a) {
a = a | 0;
J = a;
}
function bg(a) {
a = a | 0;
K = a;
}
function bh(a) {
a = a | 0;
L = a;
}
function bi(a) {
a = a | 0;
M = a;
}
function bj(a) {
a = a | 0;
N = a;
}
function bk(a) {
a = a | 0;
O = a;
}
function bl(a) {
a = a | 0;
P = a;
}
function bm(a) {
a = a | 0;
Q = a;
}
function bn() {
c[170] = q + 8;
c[172] = p + 8;
c[176] = p + 8;
}
function bo(b, c, d) {
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0;
if ((d | 0) == 0) {
return;
} else {
e = 0;
}
do {
a[b + e | 0] = a[c + e | 0] | 0;
e = e + 1 | 0;
} while (e >>> 0 < d >>> 0);
return;
}
function bp(b, c, d) {
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0, f = 0;
if ((d | 0) == 0) {
return;
} else {
e = 0;
}
do {
f = b + e | 0;
a[f] = a[f] ^ a[c + e | 0];
e = e + 1 | 0;
} while (e >>> 0 < d >>> 0);
return;
}
function bq(a) {
a = a | 0;
var b = 0, c = 0, e = 0, f = 0;
b = d[a + 1 | 0] | 0;
c = d[a + 2 | 0] | 0;
e = d[a + 3 | 0] | 0;
f = cN(b << 8 | 0 >>> 24 | (d[a] | 0) | (c << 16 | 0 >>> 16) | (e << 24 | 0 >>> 8) | (0 << 8 | 0 >>> 24), 0 << 8 | b >>> 24 | (0 << 16 | c >>> 16) | (0 << 24 | e >>> 8) | (d[a + 4 | 0] | 0) | ((d[a + 5 | 0] | 0) << 8 | 0 >>> 24), 0 << 16 | 0 >>> 16, (d[a + 6 | 0] | 0) << 16 | 0 >>> 16) | 0;
e = cN(f, H, 0 << 24 | 0 >>> 8, (d[a + 7 | 0] | 0) << 24 | 0 >>> 8) | 0;
return (H = H, e) | 0;
}
function br(a) {
a = a | 0;
return (d[a + 1 | 0] | 0) << 8 | (d[a] | 0) | (d[a + 2 | 0] | 0) << 16 | (d[a + 3 | 0] | 0) << 24 | 0;
}
function bs(b, c) {
b = b | 0;
c = c | 0;
a[b] = c & 255;
a[b + 1 | 0] = c >>> 8 & 255;
a[b + 2 | 0] = c >>> 16 & 255;
a[b + 3 | 0] = c >>> 24 & 255;
return;
}
function bt(a) {
a = a | 0;
c[a + 36 >> 2] = 0;
c[a + 32 >> 2] = 0;
c[a >> 2] = 1779033703;
c[a + 4 >> 2] = -1150833019;
c[a + 8 >> 2] = 1013904242;
c[a + 12 >> 2] = -1521486534;
c[a + 16 >> 2] = 1359893119;
c[a + 20 >> 2] = -1694144372;
c[a + 24 >> 2] = 528734635;
c[a + 28 >> 2] = 1541459225;
return;
}
function bu(a, b, d, e, f, g, h, i, j, k) {
a = a | 0;
b = b | 0;
d = d | 0;
e = e | 0;
f = f | 0;
g = g | 0;
h = h | 0;
i = i | 0;
j = j | 0;
k = k | 0;
var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0;
l = cX(i, 0, h, 0) | 0;
m = H;
n = 0;
if (m >>> 0 > n >>> 0 | m >>> 0 == n >>> 0 & l >>> 0 > 1073741823 >>> 0) {
c[(aX() | 0) >> 2] = 27;
o = -1;
return o | 0;
}
l = cN(f, g, -1, -1) | 0;
if ((l & f | 0) != 0 | (H & g | 0) != 0 | (f | 0) == 0 & (g | 0) == 0) {
c[(aX() | 0) >> 2] = 22;
o = -1;
return o | 0;
}
do {
if (!((33554431 / (i >>> 0) | 0) >>> 0 < h >>> 0 | h >>> 0 > 16777215)) {
l = 0;
if (l >>> 0 < g >>> 0 | l >>> 0 == g >>> 0 & (33554431 / (h >>> 0) | 0) >>> 0 < f >>> 0) {
break;
}
l = h << 7;
n = bL(ad(l, i) | 0) | 0;
if ((n | 0) == 0) {
o = -1;
return o | 0;
}
m = bL(h << 8) | 0;
do {
if ((m | 0) != 0) {
p = cX(l, 0, f, g) | 0;
q = bL(p) | 0;
if ((q | 0) == 0) {
bM(m);
break;
}
p = ad(i << 7, h) | 0;
bJ(a, b, d, e, 1, 0, n, p);
if ((i | 0) != 0) {
r = h << 7;
s = 0;
do {
bv(n + (ad(r, s) | 0) | 0, h, f, g, q, m);
s = s + 1 | 0;
} while (s >>> 0 < i >>> 0);
}
bJ(a, b, n, p, 1, 0, j, k);
bM(q);
bM(m);
bM(n);
o = 0;
return o | 0;
}
} while (0);
bM(n);
o = -1;
return o | 0;
}
} while (0);
c[(aX() | 0) >> 2] = 12;
o = -1;
return o | 0;
}
function bv(a, b, c, d, e, f) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
e = e | 0;
f = f | 0;
var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
g = b << 7;
h = f + g | 0;
bo(f, a, g);
if ((c | 0) == 0 & (d | 0) == 0) {
bo(a, f, g);
return;
}
i = g;
j = 0;
k = 0;
l = 0;
do {
m = cX(l, k, i, j) | 0;
bo(e + m | 0, f, g);
bw(f, h, b);
l = cN(l, k, 1, 0) | 0;
k = H;
} while (k >>> 0 < d >>> 0 | k >>> 0 == d >>> 0 & l >>> 0 < c >>> 0);
if ((c | 0) == 0 & (d | 0) == 0) {
bo(a, f, g);
return;
}
l = cN(c, d, -1, -1) | 0;
k = H;
j = g;
i = 0;
m = 0;
n = 0;
do {
o = bx(f, b) | 0;
p = cX(o & l, H & k, j, i) | 0;
bp(f, e + p | 0, g);
bw(f, h, b);
n = cN(n, m, 1, 0) | 0;
m = H;
} while (m >>> 0 < d >>> 0 | m >>> 0 == d >>> 0 & n >>> 0 < c >>> 0);
bo(a, f, g);
return;
}
function bw(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0;
d = i;
i = i + 64 | 0;
e = d | 0;
f = c << 1;
bo(e, a + ((c << 7) - 64) | 0, 64);
if ((f | 0) != 0) {
g = 0;
do {
h = g << 6;
bp(e, a + h | 0, 64);
by(e);
bo(b + h | 0, e, 64);
g = g + 1 | 0;
} while (g >>> 0 < f >>> 0);
}
if ((c | 0) == 0) {
i = d;
return;
} else {
j = 0;
}
do {
bo(a + (j << 6) | 0, b + (j << 7) | 0, 64);
j = j + 1 | 0;
} while (j >>> 0 < c >>> 0);
if ((c | 0) == 0) {
i = d;
return;
} else {
k = 0;
}
do {
bo(a + (k + c << 6) | 0, b + (k << 7 | 64) | 0, 64);
k = k + 1 | 0;
} while (k >>> 0 < c >>> 0);
i = d;
return;
}
function bx(a, b) {
a = a | 0;
b = b | 0;
var c = 0;
c = bq(a + ((b << 7) - 64) | 0) | 0;
return (H = H, c) | 0;
}
function by(a) {
a = a | 0;
var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0, aa = 0, ab = 0;
b = i;
i = i + 128 | 0;
d = b | 0;
e = b + 64 | 0;
f = 0;
do {
c[d + (f << 2) >> 2] = br(a + (f << 2) | 0) | 0;
f = f + 1 | 0;
} while (f >>> 0 < 16);
f = d;
g = e;
cK(g | 0, f | 0, 64) | 0;
f = e | 0;
g = e + 48 | 0;
h = e + 16 | 0;
j = e + 32 | 0;
k = e + 20 | 0;
l = e + 4 | 0;
m = e + 36 | 0;
n = e + 52 | 0;
o = e + 40 | 0;
p = e + 24 | 0;
q = e + 56 | 0;
r = e + 8 | 0;
s = e + 60 | 0;
t = e + 44 | 0;
u = e + 12 | 0;
v = e + 28 | 0;
w = 0;
x = c[f >> 2] | 0;
y = c[g >> 2] | 0;
z = c[h >> 2] | 0;
A = c[j >> 2] | 0;
B = c[k >> 2] | 0;
C = c[l >> 2] | 0;
D = c[m >> 2] | 0;
E = c[n >> 2] | 0;
F = c[o >> 2] | 0;
G = c[p >> 2] | 0;
H = c[q >> 2] | 0;
I = c[r >> 2] | 0;
J = c[s >> 2] | 0;
K = c[t >> 2] | 0;
L = c[u >> 2] | 0;
M = c[v >> 2] | 0;
do {
N = y + x | 0;
O = (N << 7 | N >>> 25) ^ z;
N = O + x | 0;
P = (N << 9 | N >>> 23) ^ A;
N = P + O | 0;
Q = (N << 13 | N >>> 19) ^ y;
N = Q + P | 0;
R = (N << 18 | N >>> 14) ^ x;
N = C + B | 0;
S = (N << 7 | N >>> 25) ^ D;
N = S + B | 0;
T = (N << 9 | N >>> 23) ^ E;
N = T + S | 0;
U = (N << 13 | N >>> 19) ^ C;
N = U + T | 0;
V = (N << 18 | N >>> 14) ^ B;
N = G + F | 0;
W = (N << 7 | N >>> 25) ^ H;
N = W + F | 0;
X = (N << 9 | N >>> 23) ^ I;
N = X + W | 0;
Y = (N << 13 | N >>> 19) ^ G;
N = Y + X | 0;
Z = (N << 18 | N >>> 14) ^ F;
N = K + J | 0;
_ = (N << 7 | N >>> 25) ^ L;
N = _ + J | 0;
$ = (N << 9 | N >>> 23) ^ M;
N = $ + _ | 0;
aa = (N << 13 | N >>> 19) ^ K;
N = aa + $ | 0;
ab = (N << 18 | N >>> 14) ^ J;
N = _ + R | 0;
C = (N << 7 | N >>> 25) ^ U;
U = C + R | 0;
I = (U << 9 | U >>> 23) ^ X;
X = I + C | 0;
L = (X << 13 | X >>> 19) ^ _;
_ = L + I | 0;
x = (_ << 18 | _ >>> 14) ^ R;
R = O + V | 0;
G = (R << 7 | R >>> 25) ^ Y;
Y = G + V | 0;
M = (Y << 9 | Y >>> 23) ^ $;
$ = M + G | 0;
z = ($ << 13 | $ >>> 19) ^ O;
O = z + M | 0;
B = (O << 18 | O >>> 14) ^ V;
V = S + Z | 0;
K = (V << 7 | V >>> 25) ^ aa;
aa = K + Z | 0;
A = (aa << 9 | aa >>> 23) ^ P;
P = A + K | 0;
D = (P << 13 | P >>> 19) ^ S;
S = D + A | 0;
F = (S << 18 | S >>> 14) ^ Z;
Z = W + ab | 0;
y = (Z << 7 | Z >>> 25) ^ Q;
Q = y + ab | 0;
E = (Q << 9 | Q >>> 23) ^ T;
T = E + y | 0;
H = (T << 13 | T >>> 19) ^ W;
W = H + E | 0;
J = (W << 18 | W >>> 14) ^ ab;
w = w + 2 | 0;
} while (w >>> 0 < 8);
c[f >> 2] = x;
c[g >> 2] = y;
c[h >> 2] = z;
c[j >> 2] = A;
c[k >> 2] = B;
c[l >> 2] = C;
c[m >> 2] = D;
c[n >> 2] = E;
c[o >> 2] = F;
c[p >> 2] = G;
c[q >> 2] = H;
c[r >> 2] = I;
c[s >> 2] = J;
c[t >> 2] = K;
c[u >> 2] = L;
c[v >> 2] = M;
M = d | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e >> 2] | 0);
M = d + 4 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 4 >> 2] | 0);
M = d + 8 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 8 >> 2] | 0);
M = d + 12 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 12 >> 2] | 0);
M = d + 16 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 16 >> 2] | 0);
M = d + 20 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 20 >> 2] | 0);
M = d + 24 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 24 >> 2] | 0);
M = d + 28 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 28 >> 2] | 0);
M = d + 32 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 32 >> 2] | 0);
M = d + 36 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 36 >> 2] | 0);
M = d + 40 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 40 >> 2] | 0);
M = d + 44 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 44 >> 2] | 0);
M = d + 48 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 48 >> 2] | 0);
M = d + 52 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 52 >> 2] | 0);
M = d + 56 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 56 >> 2] | 0);
M = d + 60 | 0;
c[M >> 2] = (c[M >> 2] | 0) + (c[e + 60 >> 2] | 0);
e = 0;
do {
bs(a + (e << 2) | 0, c[d + (e << 2) >> 2] | 0);
e = e + 1 | 0;
} while (e >>> 0 < 16);
i = b;
return;
}
function bz(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;
e = a + 32 | 0;
f = a + 36 | 0;
g = c[f >> 2] | 0;
h = g >>> 3 & 63;
i = aN(g | 0, d << 3 | 0) | 0;
c[f >> 2] = i;
if (H) {
i = e | 0;
c[i >> 2] = (c[i >> 2] | 0) + 1;
}
i = e | 0;
c[i >> 2] = (c[i >> 2] | 0) + (d >>> 29);
i = 64 - h | 0;
e = a + 40 + h | 0;
if (i >>> 0 > d >>> 0) {
cK(e | 0, b | 0, d) | 0;
return;
}
cK(e | 0, b | 0, i) | 0;
e = a | 0;
h = a + 40 | 0;
bA(e, h);
a = b + i | 0;
b = d - i | 0;
if (b >>> 0 > 63) {
i = b;
d = a;
while (1) {
bA(e, d);
f = d + 64 | 0;
g = i - 64 | 0;
if (g >>> 0 > 63) {
i = g;
d = f;
} else {
j = g;
k = f;
break;
}
}
} else {
j = b;
k = a;
}
cK(h | 0, k | 0, j) | 0;
return;
}
function bA(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0;
d = i;
i = i + 288 | 0;
e = d | 0;
f = d + 256 | 0;
g = e | 0;
bK(g, b);
b = 16;
do {
h = c[e + (b - 2 << 2) >> 2] | 0;
j = c[e + (b - 15 << 2) >> 2] | 0;
c[e + (b << 2) >> 2] = (c[e + (b - 16 << 2) >> 2] | 0) + (c[e + (b - 7 << 2) >> 2] | 0) + ((h >>> 19 | h << 13) ^ h >>> 10 ^ (h >>> 17 | h << 15)) + ((j >>> 18 | j << 14) ^ j >>> 3 ^ (j >>> 7 | j << 25));
b = b + 1 | 0;
} while ((b | 0) < 64);
b = f;
j = a;
cK(b | 0, j | 0, 32) | 0;
j = f + 28 | 0;
b = f + 16 | 0;
h = c[b >> 2] | 0;
k = f + 20 | 0;
l = f + 24 | 0;
m = c[l >> 2] | 0;
n = (c[j >> 2] | 0) + 1116352408 + (c[g >> 2] | 0) + ((h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7)) + ((m ^ c[k >> 2]) & h ^ m) | 0;
m = f | 0;
h = c[m >> 2] | 0;
g = f + 4 | 0;
o = c[g >> 2] | 0;
p = f + 8 | 0;
q = c[p >> 2] | 0;
r = f + 12 | 0;
c[r >> 2] = (c[r >> 2] | 0) + n;
s = ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + n + ((q | o) & h | q & o) | 0;
c[j >> 2] = s;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
h = (c[l >> 2] | 0) + 1899447441 + (c[e + 4 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[l >> 2] = n;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
s = (c[k >> 2] | 0) - 1245643825 + (c[e + 8 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[k >> 2] = h;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
n = (c[b >> 2] | 0) - 373957723 + (c[e + 12 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[b >> 2] = s;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
h = (c[r >> 2] | 0) + 961987163 + (c[e + 16 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[r >> 2] = n;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
s = (c[p >> 2] | 0) + 1508970993 + (c[e + 20 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[p >> 2] = h;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
n = (c[g >> 2] | 0) - 1841331548 + (c[e + 24 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[g >> 2] = s;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
h = (c[m >> 2] | 0) - 1424204075 + (c[e + 28 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[m >> 2] = n;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
s = (c[j >> 2] | 0) - 670586216 + (c[e + 32 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[j >> 2] = h;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
n = (c[l >> 2] | 0) + 310598401 + (c[e + 36 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[l >> 2] = s;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
h = (c[k >> 2] | 0) + 607225278 + (c[e + 40 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[k >> 2] = n;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
s = (c[b >> 2] | 0) + 1426881987 + (c[e + 44 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[b >> 2] = h;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
n = (c[r >> 2] | 0) + 1925078388 + (c[e + 48 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[r >> 2] = s;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
h = (c[p >> 2] | 0) - 2132889090 + (c[e + 52 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[p >> 2] = n;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
s = (c[g >> 2] | 0) - 1680079193 + (c[e + 56 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[g >> 2] = h;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
n = (c[m >> 2] | 0) - 1046744716 + (c[e + 60 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[m >> 2] = s;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
h = (c[j >> 2] | 0) - 459576895 + (c[e + 64 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[j >> 2] = n;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
s = (c[l >> 2] | 0) - 272742522 + (c[e + 68 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[l >> 2] = h;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
n = (c[k >> 2] | 0) + 264347078 + (c[e + 72 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[k >> 2] = s;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
h = (c[b >> 2] | 0) + 604807628 + (c[e + 76 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[b >> 2] = n;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
s = (c[r >> 2] | 0) + 770255983 + (c[e + 80 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[r >> 2] = h;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
n = (c[p >> 2] | 0) + 1249150122 + (c[e + 84 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[p >> 2] = s;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
h = (c[g >> 2] | 0) + 1555081692 + (c[e + 88 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[g >> 2] = n;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
s = (c[m >> 2] | 0) + 1996064986 + (c[e + 92 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[m >> 2] = h;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
n = (c[j >> 2] | 0) - 1740746414 + (c[e + 96 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[j >> 2] = s;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
h = (c[l >> 2] | 0) - 1473132947 + (c[e + 100 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[l >> 2] = n;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
s = (c[k >> 2] | 0) - 1341970488 + (c[e + 104 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[k >> 2] = h;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
n = (c[b >> 2] | 0) - 1084653625 + (c[e + 108 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[b >> 2] = s;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
h = (c[r >> 2] | 0) - 958395405 + (c[e + 112 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[r >> 2] = n;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
s = (c[p >> 2] | 0) - 710438585 + (c[e + 116 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[p >> 2] = h;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
n = (c[g >> 2] | 0) + 113926993 + (c[e + 120 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[g >> 2] = s;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
h = (c[m >> 2] | 0) + 338241895 + (c[e + 124 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[m >> 2] = n;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
s = (c[j >> 2] | 0) + 666307205 + (c[e + 128 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[j >> 2] = h;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
n = (c[l >> 2] | 0) + 773529912 + (c[e + 132 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[l >> 2] = s;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
h = (c[k >> 2] | 0) + 1294757372 + (c[e + 136 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[k >> 2] = n;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
s = (c[b >> 2] | 0) + 1396182291 + (c[e + 140 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[b >> 2] = h;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
n = (c[r >> 2] | 0) + 1695183700 + (c[e + 144 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[r >> 2] = s;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
h = (c[p >> 2] | 0) + 1986661051 + (c[e + 148 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[p >> 2] = n;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
s = (c[g >> 2] | 0) - 2117940946 + (c[e + 152 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[g >> 2] = h;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
n = (c[m >> 2] | 0) - 1838011259 + (c[e + 156 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[m >> 2] = s;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
h = (c[j >> 2] | 0) - 1564481375 + (c[e + 160 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[j >> 2] = n;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
s = (c[l >> 2] | 0) - 1474664885 + (c[e + 164 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[l >> 2] = h;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
n = (c[k >> 2] | 0) - 1035236496 + (c[e + 168 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[k >> 2] = s;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
h = (c[b >> 2] | 0) - 949202525 + (c[e + 172 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[b >> 2] = n;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
s = (c[r >> 2] | 0) - 778901479 + (c[e + 176 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[r >> 2] = h;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
n = (c[p >> 2] | 0) - 694614492 + (c[e + 180 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[p >> 2] = s;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
h = (c[g >> 2] | 0) - 200395387 + (c[e + 184 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[g >> 2] = n;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
s = (c[m >> 2] | 0) + 275423344 + (c[e + 188 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[m >> 2] = h;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
n = (c[j >> 2] | 0) + 430227734 + (c[e + 192 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[j >> 2] = s;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
h = (c[l >> 2] | 0) + 506948616 + (c[e + 196 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[l >> 2] = n;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
s = (c[k >> 2] | 0) + 659060556 + (c[e + 200 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[k >> 2] = h;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
n = (c[b >> 2] | 0) + 883997877 + (c[e + 204 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[b >> 2] = s;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
h = (c[r >> 2] | 0) + 958139571 + (c[e + 208 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[r >> 2] = n;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
s = (c[p >> 2] | 0) + 1322822218 + (c[e + 212 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[p >> 2] = h;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
n = (c[g >> 2] | 0) + 1537002063 + (c[e + 216 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[g >> 2] = s;
o = c[k >> 2] | 0;
q = c[j >> 2] | 0;
h = (c[m >> 2] | 0) + 1747873779 + (c[e + 220 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[l >> 2]) & o ^ q) | 0;
q = c[p >> 2] | 0;
o = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[m >> 2] = n;
q = c[b >> 2] | 0;
o = c[l >> 2] | 0;
s = (c[j >> 2] | 0) + 1955562222 + (c[e + 224 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[k >> 2]) & q ^ o) | 0;
o = c[g >> 2] | 0;
q = c[p >> 2] | 0;
c[r >> 2] = (c[r >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[j >> 2] = h;
o = c[r >> 2] | 0;
q = c[k >> 2] | 0;
n = (c[l >> 2] | 0) + 2024104815 + (c[e + 228 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[b >> 2]) & o ^ q) | 0;
q = c[m >> 2] | 0;
o = c[g >> 2] | 0;
c[p >> 2] = (c[p >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((o | q) & h | o & q) | 0;
c[l >> 2] = s;
q = c[p >> 2] | 0;
o = c[b >> 2] | 0;
h = (c[k >> 2] | 0) - 2067236844 + (c[e + 232 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[r >> 2]) & q ^ o) | 0;
o = c[j >> 2] | 0;
q = c[m >> 2] | 0;
c[g >> 2] = (c[g >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((q | o) & s | q & o) | 0;
c[k >> 2] = n;
o = c[g >> 2] | 0;
q = c[r >> 2] | 0;
s = (c[b >> 2] | 0) - 1933114872 + (c[e + 236 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[p >> 2]) & o ^ q) | 0;
q = c[l >> 2] | 0;
o = c[j >> 2] | 0;
c[m >> 2] = (c[m >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((o | q) & n | o & q) | 0;
c[b >> 2] = h;
q = c[m >> 2] | 0;
o = c[p >> 2] | 0;
n = (c[r >> 2] | 0) - 1866530822 + (c[e + 240 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[g >> 2]) & q ^ o) | 0;
o = c[k >> 2] | 0;
q = c[l >> 2] | 0;
c[j >> 2] = (c[j >> 2] | 0) + n;
s = n + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((q | o) & h | q & o) | 0;
c[r >> 2] = s;
o = c[j >> 2] | 0;
q = c[g >> 2] | 0;
h = (c[p >> 2] | 0) - 1538233109 + (c[e + 244 >> 2] | 0) + ((o >>> 6 | o << 26) ^ (o >>> 11 | o << 21) ^ (o >>> 25 | o << 7)) + ((q ^ c[m >> 2]) & o ^ q) | 0;
q = c[b >> 2] | 0;
o = c[k >> 2] | 0;
c[l >> 2] = (c[l >> 2] | 0) + h;
n = h + ((s >>> 2 | s << 30) ^ (s >>> 13 | s << 19) ^ (s >>> 22 | s << 10)) + ((o | q) & s | o & q) | 0;
c[p >> 2] = n;
q = c[l >> 2] | 0;
o = c[m >> 2] | 0;
s = (c[g >> 2] | 0) - 1090935817 + (c[e + 248 >> 2] | 0) + ((q >>> 6 | q << 26) ^ (q >>> 11 | q << 21) ^ (q >>> 25 | q << 7)) + ((o ^ c[j >> 2]) & q ^ o) | 0;
o = c[r >> 2] | 0;
q = c[b >> 2] | 0;
c[k >> 2] = (c[k >> 2] | 0) + s;
h = s + ((n >>> 2 | n << 30) ^ (n >>> 13 | n << 19) ^ (n >>> 22 | n << 10)) + ((q | o) & n | q & o) | 0;
c[g >> 2] = h;
g = c[k >> 2] | 0;
k = c[j >> 2] | 0;
j = (c[m >> 2] | 0) - 965641998 + (c[e + 252 >> 2] | 0) + ((g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7)) + ((k ^ c[l >> 2]) & g ^ k) | 0;
k = c[p >> 2] | 0;
p = c[r >> 2] | 0;
c[b >> 2] = (c[b >> 2] | 0) + j;
b = j + ((h >>> 2 | h << 30) ^ (h >>> 13 | h << 19) ^ (h >>> 22 | h << 10)) + ((p | k) & h | p & k) | 0;
c[m >> 2] = b;
c[a >> 2] = (c[a >> 2] | 0) + b;
b = a + 4 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 4 >> 2] | 0);
b = a + 8 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 8 >> 2] | 0);
b = a + 12 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 12 >> 2] | 0);
b = a + 16 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 16 >> 2] | 0);
b = a + 20 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 20 >> 2] | 0);
b = a + 24 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 24 >> 2] | 0);
b = a + 28 | 0;
c[b >> 2] = (c[b >> 2] | 0) + (c[f + 28 >> 2] | 0);
i = d;
return;
}
function bB(b, c) {
b = b | 0;
c = c | 0;
a[b + 3 | 0] = c & 255;
a[b + 2 | 0] = c >>> 8 & 255;
a[b + 1 | 0] = c >>> 16 & 255;
a[b] = c >>> 24 & 255;
return;
}
function bC(a) {
a = a | 0;
return (d[a + 2 | 0] | 0) << 8 | (d[a + 3 | 0] | 0) | (d[a + 1 | 0] | 0) << 16 | (d[a] | 0) << 24 | 0;
}
function bD(a, b) {
a = a | 0;
b = b | 0;
bE(b);
bF(a, b | 0, 32);
cL(b | 0, 0, 104);
return;
}
function bE(a) {
a = a | 0;
var b = 0, d = 0, e = 0;
b = i;
i = i + 8 | 0;
d = b | 0;
bF(d, a + 32 | 0, 8);
e = (c[a + 36 >> 2] | 0) >>> 3 & 63;
bz(a, 720, (e >>> 0 < 56 ? 56 : 120) - e | 0);
bz(a, d, 8);
i = b;
return;
}
function bF(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0;
e = d >>> 2;
if ((e | 0) == 0) {
return;
} else {
f = 0;
}
do {
bB(a + (f << 2) | 0, c[b + (f << 2) >> 2] | 0);
f = f + 1 | 0;
} while (f >>> 0 < e >>> 0);
return;
}
function bG(b, c, d) {
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0;
e = i;
i = i + 96 | 0;
f = e | 0;
if (d >>> 0 > 64) {
g = b | 0;
bt(g);
bz(g, c, d);
h = e + 64 | 0;
bD(h, g);
j = h;
k = 32;
} else {
j = c;
k = d;
}
d = b | 0;
bt(d);
c = f | 0;
cL(c | 0, 54, 64);
if ((k | 0) != 0) {
h = 0;
do {
g = f + h | 0;
a[g] = a[g] ^ a[j + h | 0];
h = h + 1 | 0;
} while (h >>> 0 < k >>> 0);
}
bz(d, c, 64);
d = b + 104 | 0;
bt(d);
cL(c | 0, 92, 64);
if ((k | 0) == 0) {
bz(d, c, 64);
i = e;
return;
} else {
l = 0;
}
do {
b = f + l | 0;
a[b] = a[b] ^ a[j + l | 0];
l = l + 1 | 0;
} while (l >>> 0 < k >>> 0);
bz(d, c, 64);
i = e;
return;
}
function bH(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
bz(a | 0, b, c);
return;
}
function bI(a, b) {
a = a | 0;
b = b | 0;
var c = 0, d = 0, e = 0;
c = i;
i = i + 32 | 0;
d = c | 0;
bD(d, b | 0);
e = b + 104 | 0;
bz(e, d, 32);
bD(a, e);
i = c;
return;
}
function bJ(b, c, d, e, f, g, h, j) {
b = b | 0;
c = c | 0;
d = d | 0;
e = e | 0;
f = f | 0;
g = g | 0;
h = h | 0;
j = j | 0;
var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0;
k = i;
i = i + 488 | 0;
l = k | 0;
m = k + 208 | 0;
n = k + 424 | 0;
o = k + 456 | 0;
bG(l, b, c);
bH(l, d, e);
if ((j | 0) == 0) {
i = k;
return;
}
e = k + 416 | 0;
d = m;
p = l;
l = n | 0;
q = o | 0;
r = 0;
s = g >>> 0 < r >>> 0 | g >>> 0 == r >>> 0 & f >>> 0 < 2 >>> 0;
r = 0;
t = 0;
do {
r = r + 1 | 0;
bB(e, r);
cK(d | 0, p | 0, 208) | 0;
bH(m, e, 4);
bI(l, m);
cK(q | 0, l | 0, 32) | 0;
if (!s) {
u = 0;
v = 2;
do {
bG(m, b, c);
bH(m, l, 32);
bI(l, m);
w = 0;
do {
x = o + w | 0;
a[x] = a[x] ^ a[n + w | 0];
w = w + 1 | 0;
} while ((w | 0) < 32);
v = cN(v, u, 1, 0) | 0;
u = H;
} while (!(u >>> 0 > g >>> 0 | u >>> 0 == g >>> 0 & v >>> 0 > f >>> 0));
}
v = j - t | 0;
u = v >>> 0 > 32 ? 32 : v;
v = h + t | 0;
cK(v | 0, q | 0, u) | 0;
t = r << 5;
} while (t >>> 0 < j >>> 0);
i = k;
return;
}
function bK(a, b) {
a = a | 0;
b = b | 0;
var d = 0;
d = 0;
do {
c[a + (d << 2) >> 2] = bC(b + (d << 2) | 0) | 0;
d = d + 1 | 0;
} while (d >>> 0 < 16);
return;
}
function bL(a) {
a = a | 0;
var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0, aa = 0, ab = 0, ac = 0, ad = 0, ae = 0, af = 0, ag = 0, ah = 0, ai = 0, aj = 0, ak = 0, al = 0, am = 0, an = 0, ao = 0, ap = 0, aq = 0, as = 0, at = 0, av = 0, aw = 0, ax = 0, ay = 0, az = 0, aA = 0, aB = 0, aC = 0, aD = 0, aE = 0, aF = 0, aG = 0, aH = 0, aI = 0;
do {
if (a >>> 0 < 245) {
if (a >>> 0 < 11) {
b = 16;
} else {
b = a + 11 & -8;
}
d = b >>> 3;
e = c[208] | 0;
f = e >>> (d >>> 0);
if ((f & 3 | 0) != 0) {
g = (f & 1 ^ 1) + d | 0;
h = g << 1;
i = 872 + (h << 2) | 0;
j = 872 + (h + 2 << 2) | 0;
h = c[j >> 2] | 0;
k = h + 8 | 0;
l = c[k >> 2] | 0;
do {
if ((i | 0) == (l | 0)) {
c[208] = e & ~(1 << g);
} else {
if (l >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
m = l + 12 | 0;
if ((c[m >> 2] | 0) == (h | 0)) {
c[m >> 2] = i;
c[j >> 2] = l;
break;
} else {
au();
return 0;
}
}
} while (0);
l = g << 3;
c[h + 4 >> 2] = l | 3;
j = h + (l | 4) | 0;
c[j >> 2] = c[j >> 2] | 1;
n = k;
return n | 0;
}
if (b >>> 0 <= (c[210] | 0) >>> 0) {
o = b;
break;
}
if ((f | 0) != 0) {
j = 2 << d;
l = f << d & (j | -j);
j = (l & -l) - 1 | 0;
l = j >>> 12 & 16;
i = j >>> (l >>> 0);
j = i >>> 5 & 8;
m = i >>> (j >>> 0);
i = m >>> 2 & 4;
p = m >>> (i >>> 0);
m = p >>> 1 & 2;
q = p >>> (m >>> 0);
p = q >>> 1 & 1;
r = (j | l | i | m | p) + (q >>> (p >>> 0)) | 0;
p = r << 1;
q = 872 + (p << 2) | 0;
m = 872 + (p + 2 << 2) | 0;
p = c[m >> 2] | 0;
i = p + 8 | 0;
l = c[i >> 2] | 0;
do {
if ((q | 0) == (l | 0)) {
c[208] = e & ~(1 << r);
} else {
if (l >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
j = l + 12 | 0;
if ((c[j >> 2] | 0) == (p | 0)) {
c[j >> 2] = q;
c[m >> 2] = l;
break;
} else {
au();
return 0;
}
}
} while (0);
l = r << 3;
m = l - b | 0;
c[p + 4 >> 2] = b | 3;
q = p;
e = q + b | 0;
c[q + (b | 4) >> 2] = m | 1;
c[q + l >> 2] = m;
l = c[210] | 0;
if ((l | 0) != 0) {
q = c[213] | 0;
d = l >>> 3;
l = d << 1;
f = 872 + (l << 2) | 0;
k = c[208] | 0;
h = 1 << d;
do {
if ((k & h | 0) == 0) {
c[208] = k | h;
s = f;
t = 872 + (l + 2 << 2) | 0;
} else {
d = 872 + (l + 2 << 2) | 0;
g = c[d >> 2] | 0;
if (g >>> 0 >= (c[212] | 0) >>> 0) {
s = g;
t = d;
break;
}
au();
return 0;
}
} while (0);
c[t >> 2] = q;
c[s + 12 >> 2] = q;
c[q + 8 >> 2] = s;
c[q + 12 >> 2] = f;
}
c[210] = m;
c[213] = e;
n = i;
return n | 0;
}
l = c[209] | 0;
if ((l | 0) == 0) {
o = b;
break;
}
h = (l & -l) - 1 | 0;
l = h >>> 12 & 16;
k = h >>> (l >>> 0);
h = k >>> 5 & 8;
p = k >>> (h >>> 0);
k = p >>> 2 & 4;
r = p >>> (k >>> 0);
p = r >>> 1 & 2;
d = r >>> (p >>> 0);
r = d >>> 1 & 1;
g = c[1136 + ((h | l | k | p | r) + (d >>> (r >>> 0)) << 2) >> 2] | 0;
r = g;
d = g;
p = (c[g + 4 >> 2] & -8) - b | 0;
while (1) {
g = c[r + 16 >> 2] | 0;
if ((g | 0) == 0) {
k = c[r + 20 >> 2] | 0;
if ((k | 0) == 0) {
break;
} else {
u = k;
}
} else {
u = g;
}
g = (c[u + 4 >> 2] & -8) - b | 0;
k = g >>> 0 < p >>> 0;
r = u;
d = k ? u : d;
p = k ? g : p;
}
r = d;
i = c[212] | 0;
if (r >>> 0 < i >>> 0) {
au();
return 0;
}
e = r + b | 0;
m = e;
if (r >>> 0 >= e >>> 0) {
au();
return 0;
}
e = c[d + 24 >> 2] | 0;
f = c[d + 12 >> 2] | 0;
do {
if ((f | 0) == (d | 0)) {
q = d + 20 | 0;
g = c[q >> 2] | 0;
if ((g | 0) == 0) {
k = d + 16 | 0;
l = c[k >> 2] | 0;
if ((l | 0) == 0) {
v = 0;
break;
} else {
w = l;
x = k;
}
} else {
w = g;
x = q;
}
while (1) {
q = w + 20 | 0;
g = c[q >> 2] | 0;
if ((g | 0) != 0) {
w = g;
x = q;
continue;
}
q = w + 16 | 0;
g = c[q >> 2] | 0;
if ((g | 0) == 0) {
break;
} else {
w = g;
x = q;
}
}
if (x >>> 0 < i >>> 0) {
au();
return 0;
} else {
c[x >> 2] = 0;
v = w;
break;
}
} else {
q = c[d + 8 >> 2] | 0;
if (q >>> 0 < i >>> 0) {
au();
return 0;
}
g = q + 12 | 0;
if ((c[g >> 2] | 0) != (d | 0)) {
au();
return 0;
}
k = f + 8 | 0;
if ((c[k >> 2] | 0) == (d | 0)) {
c[g >> 2] = f;
c[k >> 2] = q;
v = f;
break;
} else {
au();
return 0;
}
}
} while (0);
L223 : do {
if ((e | 0) != 0) {
f = d + 28 | 0;
i = 1136 + (c[f >> 2] << 2) | 0;
do {
if ((d | 0) == (c[i >> 2] | 0)) {
c[i >> 2] = v;
if ((v | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[f >> 2]);
break L223;
} else {
if (e >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
q = e + 16 | 0;
if ((c[q >> 2] | 0) == (d | 0)) {
c[q >> 2] = v;
} else {
c[e + 20 >> 2] = v;
}
if ((v | 0) == 0) {
break L223;
}
}
} while (0);
if (v >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
c[v + 24 >> 2] = e;
f = c[d + 16 >> 2] | 0;
do {
if ((f | 0) != 0) {
if (f >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[v + 16 >> 2] = f;
c[f + 24 >> 2] = v;
break;
}
}
} while (0);
f = c[d + 20 >> 2] | 0;
if ((f | 0) == 0) {
break;
}
if (f >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[v + 20 >> 2] = f;
c[f + 24 >> 2] = v;
break;
}
}
} while (0);
if (p >>> 0 < 16) {
e = p + b | 0;
c[d + 4 >> 2] = e | 3;
f = r + (e + 4) | 0;
c[f >> 2] = c[f >> 2] | 1;
} else {
c[d + 4 >> 2] = b | 3;
c[r + (b | 4) >> 2] = p | 1;
c[r + (p + b) >> 2] = p;
f = c[210] | 0;
if ((f | 0) != 0) {
e = c[213] | 0;
i = f >>> 3;
f = i << 1;
q = 872 + (f << 2) | 0;
k = c[208] | 0;
g = 1 << i;
do {
if ((k & g | 0) == 0) {
c[208] = k | g;
y = q;
z = 872 + (f + 2 << 2) | 0;
} else {
i = 872 + (f + 2 << 2) | 0;
l = c[i >> 2] | 0;
if (l >>> 0 >= (c[212] | 0) >>> 0) {
y = l;
z = i;
break;
}
au();
return 0;
}
} while (0);
c[z >> 2] = e;
c[y + 12 >> 2] = e;
c[e + 8 >> 2] = y;
c[e + 12 >> 2] = q;
}
c[210] = p;
c[213] = m;
}
f = d + 8 | 0;
if ((f | 0) == 0) {
o = b;
break;
} else {
n = f;
}
return n | 0;
} else {
if (a >>> 0 > 4294967231) {
o = -1;
break;
}
f = a + 11 | 0;
g = f & -8;
k = c[209] | 0;
if ((k | 0) == 0) {
o = g;
break;
}
r = -g | 0;
i = f >>> 8;
do {
if ((i | 0) == 0) {
A = 0;
} else {
if (g >>> 0 > 16777215) {
A = 31;
break;
}
f = (i + 1048320 | 0) >>> 16 & 8;
l = i << f;
h = (l + 520192 | 0) >>> 16 & 4;
j = l << h;
l = (j + 245760 | 0) >>> 16 & 2;
B = 14 - (h | f | l) + (j << l >>> 15) | 0;
A = g >>> ((B + 7 | 0) >>> 0) & 1 | B << 1;
}
} while (0);
i = c[1136 + (A << 2) >> 2] | 0;
L271 : do {
if ((i | 0) == 0) {
C = 0;
D = r;
E = 0;
} else {
if ((A | 0) == 31) {
F = 0;
} else {
F = 25 - (A >>> 1) | 0;
}
d = 0;
m = r;
p = i;
q = g << F;
e = 0;
while (1) {
B = c[p + 4 >> 2] & -8;
l = B - g | 0;
if (l >>> 0 < m >>> 0) {
if ((B | 0) == (g | 0)) {
C = p;
D = l;
E = p;
break L271;
} else {
G = p;
H = l;
}
} else {
G = d;
H = m;
}
l = c[p + 20 >> 2] | 0;
B = c[p + 16 + (q >>> 31 << 2) >> 2] | 0;
j = (l | 0) == 0 | (l | 0) == (B | 0) ? e : l;
if ((B | 0) == 0) {
C = G;
D = H;
E = j;
break;
} else {
d = G;
m = H;
p = B;
q = q << 1;
e = j;
}
}
}
} while (0);
if ((E | 0) == 0 & (C | 0) == 0) {
i = 2 << A;
r = k & (i | -i);
if ((r | 0) == 0) {
o = g;
break;
}
i = (r & -r) - 1 | 0;
r = i >>> 12 & 16;
e = i >>> (r >>> 0);
i = e >>> 5 & 8;
q = e >>> (i >>> 0);
e = q >>> 2 & 4;
p = q >>> (e >>> 0);
q = p >>> 1 & 2;
m = p >>> (q >>> 0);
p = m >>> 1 & 1;
I = c[1136 + ((i | r | e | q | p) + (m >>> (p >>> 0)) << 2) >> 2] | 0;
} else {
I = E;
}
if ((I | 0) == 0) {
J = D;
K = C;
} else {
p = I;
m = D;
q = C;
while (1) {
e = (c[p + 4 >> 2] & -8) - g | 0;
r = e >>> 0 < m >>> 0;
i = r ? e : m;
e = r ? p : q;
r = c[p + 16 >> 2] | 0;
if ((r | 0) != 0) {
p = r;
m = i;
q = e;
continue;
}
r = c[p + 20 >> 2] | 0;
if ((r | 0) == 0) {
J = i;
K = e;
break;
} else {
p = r;
m = i;
q = e;
}
}
}
if ((K | 0) == 0) {
o = g;
break;
}
if (J >>> 0 >= ((c[210] | 0) - g | 0) >>> 0) {
o = g;
break;
}
q = K;
m = c[212] | 0;
if (q >>> 0 < m >>> 0) {
au();
return 0;
}
p = q + g | 0;
k = p;
if (q >>> 0 >= p >>> 0) {
au();
return 0;
}
e = c[K + 24 >> 2] | 0;
i = c[K + 12 >> 2] | 0;
do {
if ((i | 0) == (K | 0)) {
r = K + 20 | 0;
d = c[r >> 2] | 0;
if ((d | 0) == 0) {
j = K + 16 | 0;
B = c[j >> 2] | 0;
if ((B | 0) == 0) {
L = 0;
break;
} else {
M = B;
N = j;
}
} else {
M = d;
N = r;
}
while (1) {
r = M + 20 | 0;
d = c[r >> 2] | 0;
if ((d | 0) != 0) {
M = d;
N = r;
continue;
}
r = M + 16 | 0;
d = c[r >> 2] | 0;
if ((d | 0) == 0) {
break;
} else {
M = d;
N = r;
}
}
if (N >>> 0 < m >>> 0) {
au();
return 0;
} else {
c[N >> 2] = 0;
L = M;
break;
}
} else {
r = c[K + 8 >> 2] | 0;
if (r >>> 0 < m >>> 0) {
au();
return 0;
}
d = r + 12 | 0;
if ((c[d >> 2] | 0) != (K | 0)) {
au();
return 0;
}
j = i + 8 | 0;
if ((c[j >> 2] | 0) == (K | 0)) {
c[d >> 2] = i;
c[j >> 2] = r;
L = i;
break;
} else {
au();
return 0;
}
}
} while (0);
L321 : do {
if ((e | 0) != 0) {
i = K + 28 | 0;
m = 1136 + (c[i >> 2] << 2) | 0;
do {
if ((K | 0) == (c[m >> 2] | 0)) {
c[m >> 2] = L;
if ((L | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[i >> 2]);
break L321;
} else {
if (e >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
r = e + 16 | 0;
if ((c[r >> 2] | 0) == (K | 0)) {
c[r >> 2] = L;
} else {
c[e + 20 >> 2] = L;
}
if ((L | 0) == 0) {
break L321;
}
}
} while (0);
if (L >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
c[L + 24 >> 2] = e;
i = c[K + 16 >> 2] | 0;
do {
if ((i | 0) != 0) {
if (i >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[L + 16 >> 2] = i;
c[i + 24 >> 2] = L;
break;
}
}
} while (0);
i = c[K + 20 >> 2] | 0;
if ((i | 0) == 0) {
break;
}
if (i >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[L + 20 >> 2] = i;
c[i + 24 >> 2] = L;
break;
}
}
} while (0);
do {
if (J >>> 0 < 16) {
e = J + g | 0;
c[K + 4 >> 2] = e | 3;
i = q + (e + 4) | 0;
c[i >> 2] = c[i >> 2] | 1;
} else {
c[K + 4 >> 2] = g | 3;
c[q + (g | 4) >> 2] = J | 1;
c[q + (J + g) >> 2] = J;
i = J >>> 3;
if (J >>> 0 < 256) {
e = i << 1;
m = 872 + (e << 2) | 0;
r = c[208] | 0;
j = 1 << i;
do {
if ((r & j | 0) == 0) {
c[208] = r | j;
O = m;
P = 872 + (e + 2 << 2) | 0;
} else {
i = 872 + (e + 2 << 2) | 0;
d = c[i >> 2] | 0;
if (d >>> 0 >= (c[212] | 0) >>> 0) {
O = d;
P = i;
break;
}
au();
return 0;
}
} while (0);
c[P >> 2] = k;
c[O + 12 >> 2] = k;
c[q + (g + 8) >> 2] = O;
c[q + (g + 12) >> 2] = m;
break;
}
e = p;
j = J >>> 8;
do {
if ((j | 0) == 0) {
Q = 0;
} else {
if (J >>> 0 > 16777215) {
Q = 31;
break;
}
r = (j + 1048320 | 0) >>> 16 & 8;
i = j << r;
d = (i + 520192 | 0) >>> 16 & 4;
B = i << d;
i = (B + 245760 | 0) >>> 16 & 2;
l = 14 - (d | r | i) + (B << i >>> 15) | 0;
Q = J >>> ((l + 7 | 0) >>> 0) & 1 | l << 1;
}
} while (0);
j = 1136 + (Q << 2) | 0;
c[q + (g + 28) >> 2] = Q;
c[q + (g + 20) >> 2] = 0;
c[q + (g + 16) >> 2] = 0;
m = c[209] | 0;
l = 1 << Q;
if ((m & l | 0) == 0) {
c[209] = m | l;
c[j >> 2] = e;
c[q + (g + 24) >> 2] = j;
c[q + (g + 12) >> 2] = e;
c[q + (g + 8) >> 2] = e;
break;
}
if ((Q | 0) == 31) {
R = 0;
} else {
R = 25 - (Q >>> 1) | 0;
}
l = J << R;
m = c[j >> 2] | 0;
while (1) {
if ((c[m + 4 >> 2] & -8 | 0) == (J | 0)) {
break;
}
S = m + 16 + (l >>> 31 << 2) | 0;
j = c[S >> 2] | 0;
if ((j | 0) == 0) {
T = 262;
break;
} else {
l = l << 1;
m = j;
}
}
if ((T | 0) == 262) {
if (S >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[S >> 2] = e;
c[q + (g + 24) >> 2] = m;
c[q + (g + 12) >> 2] = e;
c[q + (g + 8) >> 2] = e;
break;
}
}
l = m + 8 | 0;
j = c[l >> 2] | 0;
i = c[212] | 0;
if (m >>> 0 < i >>> 0) {
au();
return 0;
}
if (j >>> 0 < i >>> 0) {
au();
return 0;
} else {
c[j + 12 >> 2] = e;
c[l >> 2] = e;
c[q + (g + 8) >> 2] = j;
c[q + (g + 12) >> 2] = m;
c[q + (g + 24) >> 2] = 0;
break;
}
}
} while (0);
q = K + 8 | 0;
if ((q | 0) == 0) {
o = g;
break;
} else {
n = q;
}
return n | 0;
}
} while (0);
K = c[210] | 0;
if (o >>> 0 <= K >>> 0) {
S = K - o | 0;
J = c[213] | 0;
if (S >>> 0 > 15) {
R = J;
c[213] = R + o;
c[210] = S;
c[R + (o + 4) >> 2] = S | 1;
c[R + K >> 2] = S;
c[J + 4 >> 2] = o | 3;
} else {
c[210] = 0;
c[213] = 0;
c[J + 4 >> 2] = K | 3;
S = J + (K + 4) | 0;
c[S >> 2] = c[S >> 2] | 1;
}
n = J + 8 | 0;
return n | 0;
}
J = c[211] | 0;
if (o >>> 0 < J >>> 0) {
S = J - o | 0;
c[211] = S;
J = c[214] | 0;
K = J;
c[214] = K + o;
c[K + (o + 4) >> 2] = S | 1;
c[J + 4 >> 2] = o | 3;
n = J + 8 | 0;
return n | 0;
}
do {
if ((c[200] | 0) == 0) {
J = ar(8) | 0;
if ((J - 1 & J | 0) == 0) {
c[202] = J;
c[201] = J;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
return 0;
}
}
} while (0);
J = o + 48 | 0;
S = c[202] | 0;
K = o + 47 | 0;
R = S + K | 0;
Q = -S | 0;
S = R & Q;
if (S >>> 0 <= o >>> 0) {
n = 0;
return n | 0;
}
O = c[318] | 0;
do {
if ((O | 0) != 0) {
P = c[316] | 0;
L = P + S | 0;
if (L >>> 0 <= P >>> 0 | L >>> 0 > O >>> 0) {
n = 0;
} else {
break;
}
return n | 0;
}
} while (0);
L413 : do {
if ((c[319] & 4 | 0) == 0) {
O = c[214] | 0;
L415 : do {
if ((O | 0) == 0) {
T = 292;
} else {
L = O;
P = 1280;
while (1) {
U = P | 0;
M = c[U >> 2] | 0;
if (M >>> 0 <= L >>> 0) {
V = P + 4 | 0;
if ((M + (c[V >> 2] | 0) | 0) >>> 0 > L >>> 0) {
break;
}
}
M = c[P + 8 >> 2] | 0;
if ((M | 0) == 0) {
T = 292;
break L415;
} else {
P = M;
}
}
if ((P | 0) == 0) {
T = 292;
break;
}
L = R - (c[211] | 0) & Q;
if (L >>> 0 >= 2147483647) {
W = 0;
break;
}
m = aV(L | 0) | 0;
e = (m | 0) == ((c[U >> 2] | 0) + (c[V >> 2] | 0) | 0);
X = e ? m : -1;
Y = e ? L : 0;
Z = m;
_ = L;
T = 301;
}
} while (0);
do {
if ((T | 0) == 292) {
O = aV(0) | 0;
if ((O | 0) == -1) {
W = 0;
break;
}
g = O;
L = c[201] | 0;
m = L - 1 | 0;
if ((m & g | 0) == 0) {
$ = S;
} else {
$ = S - g + (m + g & -L) | 0;
}
L = c[316] | 0;
g = L + $ | 0;
if (!($ >>> 0 > o >>> 0 & $ >>> 0 < 2147483647)) {
W = 0;
break;
}
m = c[318] | 0;
if ((m | 0) != 0) {
if (g >>> 0 <= L >>> 0 | g >>> 0 > m >>> 0) {
W = 0;
break;
}
}
m = aV($ | 0) | 0;
g = (m | 0) == (O | 0);
X = g ? O : -1;
Y = g ? $ : 0;
Z = m;
_ = $;
T = 301;
}
} while (0);
L435 : do {
if ((T | 0) == 301) {
m = -_ | 0;
if ((X | 0) != -1) {
aa = Y;
ab = X;
T = 312;
break L413;
}
do {
if ((Z | 0) != -1 & _ >>> 0 < 2147483647 & _ >>> 0 < J >>> 0) {
g = c[202] | 0;
O = K - _ + g & -g;
if (O >>> 0 >= 2147483647) {
ac = _;
break;
}
if ((aV(O | 0) | 0) == -1) {
aV(m | 0) | 0;
W = Y;
break L435;
} else {
ac = O + _ | 0;
break;
}
} else {
ac = _;
}
} while (0);
if ((Z | 0) == -1) {
W = Y;
} else {
aa = ac;
ab = Z;
T = 312;
break L413;
}
}
} while (0);
c[319] = c[319] | 4;
ad = W;
T = 309;
} else {
ad = 0;
T = 309;
}
} while (0);
do {
if ((T | 0) == 309) {
if (S >>> 0 >= 2147483647) {
break;
}
W = aV(S | 0) | 0;
Z = aV(0) | 0;
if (!((Z | 0) != -1 & (W | 0) != -1 & W >>> 0 < Z >>> 0)) {
break;
}
ac = Z - W | 0;
Z = ac >>> 0 > (o + 40 | 0) >>> 0;
Y = Z ? W : -1;
if ((Y | 0) != -1) {
aa = Z ? ac : ad;
ab = Y;
T = 312;
}
}
} while (0);
do {
if ((T | 0) == 312) {
ad = (c[316] | 0) + aa | 0;
c[316] = ad;
if (ad >>> 0 > (c[317] | 0) >>> 0) {
c[317] = ad;
}
ad = c[214] | 0;
L455 : do {
if ((ad | 0) == 0) {
S = c[212] | 0;
if ((S | 0) == 0 | ab >>> 0 < S >>> 0) {
c[212] = ab;
}
c[320] = ab;
c[321] = aa;
c[323] = 0;
c[217] = c[200];
c[216] = -1;
S = 0;
do {
Y = S << 1;
ac = 872 + (Y << 2) | 0;
c[872 + (Y + 3 << 2) >> 2] = ac;
c[872 + (Y + 2 << 2) >> 2] = ac;
S = S + 1 | 0;
} while (S >>> 0 < 32);
S = ab + 8 | 0;
if ((S & 7 | 0) == 0) {
ae = 0;
} else {
ae = -S & 7;
}
S = aa - 40 - ae | 0;
c[214] = ab + ae;
c[211] = S;
c[ab + (ae + 4) >> 2] = S | 1;
c[ab + (aa - 36) >> 2] = 40;
c[215] = c[204];
} else {
S = 1280;
while (1) {
af = c[S >> 2] | 0;
ag = S + 4 | 0;
ah = c[ag >> 2] | 0;
if ((ab | 0) == (af + ah | 0)) {
T = 324;
break;
}
ac = c[S + 8 >> 2] | 0;
if ((ac | 0) == 0) {
break;
} else {
S = ac;
}
}
do {
if ((T | 0) == 324) {
if ((c[S + 12 >> 2] & 8 | 0) != 0) {
break;
}
ac = ad;
if (!(ac >>> 0 >= af >>> 0 & ac >>> 0 < ab >>> 0)) {
break;
}
c[ag >> 2] = ah + aa;
ac = c[214] | 0;
Y = (c[211] | 0) + aa | 0;
Z = ac;
W = ac + 8 | 0;
if ((W & 7 | 0) == 0) {
ai = 0;
} else {
ai = -W & 7;
}
W = Y - ai | 0;
c[214] = Z + ai;
c[211] = W;
c[Z + (ai + 4) >> 2] = W | 1;
c[Z + (Y + 4) >> 2] = 40;
c[215] = c[204];
break L455;
}
} while (0);
if (ab >>> 0 < (c[212] | 0) >>> 0) {
c[212] = ab;
}
S = ab + aa | 0;
Y = 1280;
while (1) {
aj = Y | 0;
if ((c[aj >> 2] | 0) == (S | 0)) {
T = 334;
break;
}
Z = c[Y + 8 >> 2] | 0;
if ((Z | 0) == 0) {
break;
} else {
Y = Z;
}
}
do {
if ((T | 0) == 334) {
if ((c[Y + 12 >> 2] & 8 | 0) != 0) {
break;
}
c[aj >> 2] = ab;
S = Y + 4 | 0;
c[S >> 2] = (c[S >> 2] | 0) + aa;
S = ab + 8 | 0;
if ((S & 7 | 0) == 0) {
ak = 0;
} else {
ak = -S & 7;
}
S = ab + (aa + 8) | 0;
if ((S & 7 | 0) == 0) {
al = 0;
} else {
al = -S & 7;
}
S = ab + (al + aa) | 0;
Z = S;
W = ak + o | 0;
ac = ab + W | 0;
_ = ac;
K = S - (ab + ak) - o | 0;
c[ab + (ak + 4) >> 2] = o | 3;
do {
if ((Z | 0) == (c[214] | 0)) {
J = (c[211] | 0) + K | 0;
c[211] = J;
c[214] = _;
c[ab + (W + 4) >> 2] = J | 1;
} else {
if ((Z | 0) == (c[213] | 0)) {
J = (c[210] | 0) + K | 0;
c[210] = J;
c[213] = _;
c[ab + (W + 4) >> 2] = J | 1;
c[ab + (J + W) >> 2] = J;
break;
}
J = aa + 4 | 0;
X = c[ab + (J + al) >> 2] | 0;
if ((X & 3 | 0) == 1) {
$ = X & -8;
V = X >>> 3;
L500 : do {
if (X >>> 0 < 256) {
U = c[ab + ((al | 8) + aa) >> 2] | 0;
Q = c[ab + (aa + 12 + al) >> 2] | 0;
R = 872 + (V << 1 << 2) | 0;
do {
if ((U | 0) != (R | 0)) {
if (U >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
if ((c[U + 12 >> 2] | 0) == (Z | 0)) {
break;
}
au();
return 0;
}
} while (0);
if ((Q | 0) == (U | 0)) {
c[208] = c[208] & ~(1 << V);
break;
}
do {
if ((Q | 0) == (R | 0)) {
am = Q + 8 | 0;
} else {
if (Q >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
m = Q + 8 | 0;
if ((c[m >> 2] | 0) == (Z | 0)) {
am = m;
break;
}
au();
return 0;
}
} while (0);
c[U + 12 >> 2] = Q;
c[am >> 2] = U;
} else {
R = S;
m = c[ab + ((al | 24) + aa) >> 2] | 0;
P = c[ab + (aa + 12 + al) >> 2] | 0;
do {
if ((P | 0) == (R | 0)) {
O = al | 16;
g = ab + (J + O) | 0;
L = c[g >> 2] | 0;
if ((L | 0) == 0) {
e = ab + (O + aa) | 0;
O = c[e >> 2] | 0;
if ((O | 0) == 0) {
an = 0;
break;
} else {
ao = O;
ap = e;
}
} else {
ao = L;
ap = g;
}
while (1) {
g = ao + 20 | 0;
L = c[g >> 2] | 0;
if ((L | 0) != 0) {
ao = L;
ap = g;
continue;
}
g = ao + 16 | 0;
L = c[g >> 2] | 0;
if ((L | 0) == 0) {
break;
} else {
ao = L;
ap = g;
}
}
if (ap >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[ap >> 2] = 0;
an = ao;
break;
}
} else {
g = c[ab + ((al | 8) + aa) >> 2] | 0;
if (g >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
L = g + 12 | 0;
if ((c[L >> 2] | 0) != (R | 0)) {
au();
return 0;
}
e = P + 8 | 0;
if ((c[e >> 2] | 0) == (R | 0)) {
c[L >> 2] = P;
c[e >> 2] = g;
an = P;
break;
} else {
au();
return 0;
}
}
} while (0);
if ((m | 0) == 0) {
break;
}
P = ab + (aa + 28 + al) | 0;
U = 1136 + (c[P >> 2] << 2) | 0;
do {
if ((R | 0) == (c[U >> 2] | 0)) {
c[U >> 2] = an;
if ((an | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[P >> 2]);
break L500;
} else {
if (m >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
Q = m + 16 | 0;
if ((c[Q >> 2] | 0) == (R | 0)) {
c[Q >> 2] = an;
} else {
c[m + 20 >> 2] = an;
}
if ((an | 0) == 0) {
break L500;
}
}
} while (0);
if (an >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
c[an + 24 >> 2] = m;
R = al | 16;
P = c[ab + (R + aa) >> 2] | 0;
do {
if ((P | 0) != 0) {
if (P >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[an + 16 >> 2] = P;
c[P + 24 >> 2] = an;
break;
}
}
} while (0);
P = c[ab + (J + R) >> 2] | 0;
if ((P | 0) == 0) {
break;
}
if (P >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[an + 20 >> 2] = P;
c[P + 24 >> 2] = an;
break;
}
}
} while (0);
aq = ab + (($ | al) + aa) | 0;
as = $ + K | 0;
} else {
aq = Z;
as = K;
}
J = aq + 4 | 0;
c[J >> 2] = c[J >> 2] & -2;
c[ab + (W + 4) >> 2] = as | 1;
c[ab + (as + W) >> 2] = as;
J = as >>> 3;
if (as >>> 0 < 256) {
V = J << 1;
X = 872 + (V << 2) | 0;
P = c[208] | 0;
m = 1 << J;
do {
if ((P & m | 0) == 0) {
c[208] = P | m;
at = X;
av = 872 + (V + 2 << 2) | 0;
} else {
J = 872 + (V + 2 << 2) | 0;
U = c[J >> 2] | 0;
if (U >>> 0 >= (c[212] | 0) >>> 0) {
at = U;
av = J;
break;
}
au();
return 0;
}
} while (0);
c[av >> 2] = _;
c[at + 12 >> 2] = _;
c[ab + (W + 8) >> 2] = at;
c[ab + (W + 12) >> 2] = X;
break;
}
V = ac;
m = as >>> 8;
do {
if ((m | 0) == 0) {
aw = 0;
} else {
if (as >>> 0 > 16777215) {
aw = 31;
break;
}
P = (m + 1048320 | 0) >>> 16 & 8;
$ = m << P;
J = ($ + 520192 | 0) >>> 16 & 4;
U = $ << J;
$ = (U + 245760 | 0) >>> 16 & 2;
Q = 14 - (J | P | $) + (U << $ >>> 15) | 0;
aw = as >>> ((Q + 7 | 0) >>> 0) & 1 | Q << 1;
}
} while (0);
m = 1136 + (aw << 2) | 0;
c[ab + (W + 28) >> 2] = aw;
c[ab + (W + 20) >> 2] = 0;
c[ab + (W + 16) >> 2] = 0;
X = c[209] | 0;
Q = 1 << aw;
if ((X & Q | 0) == 0) {
c[209] = X | Q;
c[m >> 2] = V;
c[ab + (W + 24) >> 2] = m;
c[ab + (W + 12) >> 2] = V;
c[ab + (W + 8) >> 2] = V;
break;
}
if ((aw | 0) == 31) {
ax = 0;
} else {
ax = 25 - (aw >>> 1) | 0;
}
Q = as << ax;
X = c[m >> 2] | 0;
while (1) {
if ((c[X + 4 >> 2] & -8 | 0) == (as | 0)) {
break;
}
ay = X + 16 + (Q >>> 31 << 2) | 0;
m = c[ay >> 2] | 0;
if ((m | 0) == 0) {
T = 407;
break;
} else {
Q = Q << 1;
X = m;
}
}
if ((T | 0) == 407) {
if (ay >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[ay >> 2] = V;
c[ab + (W + 24) >> 2] = X;
c[ab + (W + 12) >> 2] = V;
c[ab + (W + 8) >> 2] = V;
break;
}
}
Q = X + 8 | 0;
m = c[Q >> 2] | 0;
$ = c[212] | 0;
if (X >>> 0 < $ >>> 0) {
au();
return 0;
}
if (m >>> 0 < $ >>> 0) {
au();
return 0;
} else {
c[m + 12 >> 2] = V;
c[Q >> 2] = V;
c[ab + (W + 8) >> 2] = m;
c[ab + (W + 12) >> 2] = X;
c[ab + (W + 24) >> 2] = 0;
break;
}
}
} while (0);
n = ab + (ak | 8) | 0;
return n | 0;
}
} while (0);
Y = ad;
W = 1280;
while (1) {
az = c[W >> 2] | 0;
if (az >>> 0 <= Y >>> 0) {
aA = c[W + 4 >> 2] | 0;
aB = az + aA | 0;
if (aB >>> 0 > Y >>> 0) {
break;
}
}
W = c[W + 8 >> 2] | 0;
}
W = az + (aA - 39) | 0;
if ((W & 7 | 0) == 0) {
aC = 0;
} else {
aC = -W & 7;
}
W = az + (aA - 47 + aC) | 0;
ac = W >>> 0 < (ad + 16 | 0) >>> 0 ? Y : W;
W = ac + 8 | 0;
_ = ab + 8 | 0;
if ((_ & 7 | 0) == 0) {
aD = 0;
} else {
aD = -_ & 7;
}
_ = aa - 40 - aD | 0;
c[214] = ab + aD;
c[211] = _;
c[ab + (aD + 4) >> 2] = _ | 1;
c[ab + (aa - 36) >> 2] = 40;
c[215] = c[204];
c[ac + 4 >> 2] = 27;
c[W >> 2] = c[320];
c[W + 4 >> 2] = c[1284 >> 2];
c[W + 8 >> 2] = c[1288 >> 2];
c[W + 12 >> 2] = c[1292 >> 2];
c[320] = ab;
c[321] = aa;
c[323] = 0;
c[322] = W;
W = ac + 28 | 0;
c[W >> 2] = 7;
if ((ac + 32 | 0) >>> 0 < aB >>> 0) {
_ = W;
while (1) {
W = _ + 4 | 0;
c[W >> 2] = 7;
if ((_ + 8 | 0) >>> 0 < aB >>> 0) {
_ = W;
} else {
break;
}
}
}
if ((ac | 0) == (Y | 0)) {
break;
}
_ = ac - ad | 0;
W = Y + (_ + 4) | 0;
c[W >> 2] = c[W >> 2] & -2;
c[ad + 4 >> 2] = _ | 1;
c[Y + _ >> 2] = _;
W = _ >>> 3;
if (_ >>> 0 < 256) {
K = W << 1;
Z = 872 + (K << 2) | 0;
S = c[208] | 0;
m = 1 << W;
do {
if ((S & m | 0) == 0) {
c[208] = S | m;
aE = Z;
aF = 872 + (K + 2 << 2) | 0;
} else {
W = 872 + (K + 2 << 2) | 0;
Q = c[W >> 2] | 0;
if (Q >>> 0 >= (c[212] | 0) >>> 0) {
aE = Q;
aF = W;
break;
}
au();
return 0;
}
} while (0);
c[aF >> 2] = ad;
c[aE + 12 >> 2] = ad;
c[ad + 8 >> 2] = aE;
c[ad + 12 >> 2] = Z;
break;
}
K = ad;
m = _ >>> 8;
do {
if ((m | 0) == 0) {
aG = 0;
} else {
if (_ >>> 0 > 16777215) {
aG = 31;
break;
}
S = (m + 1048320 | 0) >>> 16 & 8;
Y = m << S;
ac = (Y + 520192 | 0) >>> 16 & 4;
W = Y << ac;
Y = (W + 245760 | 0) >>> 16 & 2;
Q = 14 - (ac | S | Y) + (W << Y >>> 15) | 0;
aG = _ >>> ((Q + 7 | 0) >>> 0) & 1 | Q << 1;
}
} while (0);
m = 1136 + (aG << 2) | 0;
c[ad + 28 >> 2] = aG;
c[ad + 20 >> 2] = 0;
c[ad + 16 >> 2] = 0;
Z = c[209] | 0;
Q = 1 << aG;
if ((Z & Q | 0) == 0) {
c[209] = Z | Q;
c[m >> 2] = K;
c[ad + 24 >> 2] = m;
c[ad + 12 >> 2] = ad;
c[ad + 8 >> 2] = ad;
break;
}
if ((aG | 0) == 31) {
aH = 0;
} else {
aH = 25 - (aG >>> 1) | 0;
}
Q = _ << aH;
Z = c[m >> 2] | 0;
while (1) {
if ((c[Z + 4 >> 2] & -8 | 0) == (_ | 0)) {
break;
}
aI = Z + 16 + (Q >>> 31 << 2) | 0;
m = c[aI >> 2] | 0;
if ((m | 0) == 0) {
T = 442;
break;
} else {
Q = Q << 1;
Z = m;
}
}
if ((T | 0) == 442) {
if (aI >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[aI >> 2] = K;
c[ad + 24 >> 2] = Z;
c[ad + 12 >> 2] = ad;
c[ad + 8 >> 2] = ad;
break;
}
}
Q = Z + 8 | 0;
_ = c[Q >> 2] | 0;
m = c[212] | 0;
if (Z >>> 0 < m >>> 0) {
au();
return 0;
}
if (_ >>> 0 < m >>> 0) {
au();
return 0;
} else {
c[_ + 12 >> 2] = K;
c[Q >> 2] = K;
c[ad + 8 >> 2] = _;
c[ad + 12 >> 2] = Z;
c[ad + 24 >> 2] = 0;
break;
}
}
} while (0);
ad = c[211] | 0;
if (ad >>> 0 <= o >>> 0) {
break;
}
_ = ad - o | 0;
c[211] = _;
ad = c[214] | 0;
Q = ad;
c[214] = Q + o;
c[Q + (o + 4) >> 2] = _ | 1;
c[ad + 4 >> 2] = o | 3;
n = ad + 8 | 0;
return n | 0;
}
} while (0);
c[(aX() | 0) >> 2] = 12;
n = 0;
return n | 0;
}
function bM(a) {
a = a | 0;
var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0;
if ((a | 0) == 0) {
return;
}
b = a - 8 | 0;
d = b;
e = c[212] | 0;
if (b >>> 0 < e >>> 0) {
au();
}
f = c[a - 4 >> 2] | 0;
g = f & 3;
if ((g | 0) == 1) {
au();
}
h = f & -8;
i = a + (h - 8) | 0;
j = i;
L672 : do {
if ((f & 1 | 0) == 0) {
k = c[b >> 2] | 0;
if ((g | 0) == 0) {
return;
}
l = -8 - k | 0;
m = a + l | 0;
n = m;
o = k + h | 0;
if (m >>> 0 < e >>> 0) {
au();
}
if ((n | 0) == (c[213] | 0)) {
p = a + (h - 4) | 0;
if ((c[p >> 2] & 3 | 0) != 3) {
q = n;
r = o;
break;
}
c[210] = o;
c[p >> 2] = c[p >> 2] & -2;
c[a + (l + 4) >> 2] = o | 1;
c[i >> 2] = o;
return;
}
p = k >>> 3;
if (k >>> 0 < 256) {
k = c[a + (l + 8) >> 2] | 0;
s = c[a + (l + 12) >> 2] | 0;
t = 872 + (p << 1 << 2) | 0;
do {
if ((k | 0) != (t | 0)) {
if (k >>> 0 < e >>> 0) {
au();
}
if ((c[k + 12 >> 2] | 0) == (n | 0)) {
break;
}
au();
}
} while (0);
if ((s | 0) == (k | 0)) {
c[208] = c[208] & ~(1 << p);
q = n;
r = o;
break;
}
do {
if ((s | 0) == (t | 0)) {
u = s + 8 | 0;
} else {
if (s >>> 0 < e >>> 0) {
au();
}
v = s + 8 | 0;
if ((c[v >> 2] | 0) == (n | 0)) {
u = v;
break;
}
au();
}
} while (0);
c[k + 12 >> 2] = s;
c[u >> 2] = k;
q = n;
r = o;
break;
}
t = m;
p = c[a + (l + 24) >> 2] | 0;
v = c[a + (l + 12) >> 2] | 0;
do {
if ((v | 0) == (t | 0)) {
w = a + (l + 20) | 0;
x = c[w >> 2] | 0;
if ((x | 0) == 0) {
y = a + (l + 16) | 0;
z = c[y >> 2] | 0;
if ((z | 0) == 0) {
A = 0;
break;
} else {
B = z;
C = y;
}
} else {
B = x;
C = w;
}
while (1) {
w = B + 20 | 0;
x = c[w >> 2] | 0;
if ((x | 0) != 0) {
B = x;
C = w;
continue;
}
w = B + 16 | 0;
x = c[w >> 2] | 0;
if ((x | 0) == 0) {
break;
} else {
B = x;
C = w;
}
}
if (C >>> 0 < e >>> 0) {
au();
} else {
c[C >> 2] = 0;
A = B;
break;
}
} else {
w = c[a + (l + 8) >> 2] | 0;
if (w >>> 0 < e >>> 0) {
au();
}
x = w + 12 | 0;
if ((c[x >> 2] | 0) != (t | 0)) {
au();
}
y = v + 8 | 0;
if ((c[y >> 2] | 0) == (t | 0)) {
c[x >> 2] = v;
c[y >> 2] = w;
A = v;
break;
} else {
au();
}
}
} while (0);
if ((p | 0) == 0) {
q = n;
r = o;
break;
}
v = a + (l + 28) | 0;
m = 1136 + (c[v >> 2] << 2) | 0;
do {
if ((t | 0) == (c[m >> 2] | 0)) {
c[m >> 2] = A;
if ((A | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[v >> 2]);
q = n;
r = o;
break L672;
} else {
if (p >>> 0 < (c[212] | 0) >>> 0) {
au();
}
k = p + 16 | 0;
if ((c[k >> 2] | 0) == (t | 0)) {
c[k >> 2] = A;
} else {
c[p + 20 >> 2] = A;
}
if ((A | 0) == 0) {
q = n;
r = o;
break L672;
}
}
} while (0);
if (A >>> 0 < (c[212] | 0) >>> 0) {
au();
}
c[A + 24 >> 2] = p;
t = c[a + (l + 16) >> 2] | 0;
do {
if ((t | 0) != 0) {
if (t >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[A + 16 >> 2] = t;
c[t + 24 >> 2] = A;
break;
}
}
} while (0);
t = c[a + (l + 20) >> 2] | 0;
if ((t | 0) == 0) {
q = n;
r = o;
break;
}
if (t >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[A + 20 >> 2] = t;
c[t + 24 >> 2] = A;
q = n;
r = o;
break;
}
} else {
q = d;
r = h;
}
} while (0);
d = q;
if (d >>> 0 >= i >>> 0) {
au();
}
A = a + (h - 4) | 0;
e = c[A >> 2] | 0;
if ((e & 1 | 0) == 0) {
au();
}
do {
if ((e & 2 | 0) == 0) {
if ((j | 0) == (c[214] | 0)) {
B = (c[211] | 0) + r | 0;
c[211] = B;
c[214] = q;
c[q + 4 >> 2] = B | 1;
if ((q | 0) == (c[213] | 0)) {
c[213] = 0;
c[210] = 0;
}
if (B >>> 0 <= (c[215] | 0) >>> 0) {
return;
}
bS(0) | 0;
return;
}
if ((j | 0) == (c[213] | 0)) {
B = (c[210] | 0) + r | 0;
c[210] = B;
c[213] = q;
c[q + 4 >> 2] = B | 1;
c[d + B >> 2] = B;
return;
}
B = (e & -8) + r | 0;
C = e >>> 3;
L777 : do {
if (e >>> 0 < 256) {
u = c[a + h >> 2] | 0;
g = c[a + (h | 4) >> 2] | 0;
b = 872 + (C << 1 << 2) | 0;
do {
if ((u | 0) != (b | 0)) {
if (u >>> 0 < (c[212] | 0) >>> 0) {
au();
}
if ((c[u + 12 >> 2] | 0) == (j | 0)) {
break;
}
au();
}
} while (0);
if ((g | 0) == (u | 0)) {
c[208] = c[208] & ~(1 << C);
break;
}
do {
if ((g | 0) == (b | 0)) {
D = g + 8 | 0;
} else {
if (g >>> 0 < (c[212] | 0) >>> 0) {
au();
}
f = g + 8 | 0;
if ((c[f >> 2] | 0) == (j | 0)) {
D = f;
break;
}
au();
}
} while (0);
c[u + 12 >> 2] = g;
c[D >> 2] = u;
} else {
b = i;
f = c[a + (h + 16) >> 2] | 0;
t = c[a + (h | 4) >> 2] | 0;
do {
if ((t | 0) == (b | 0)) {
p = a + (h + 12) | 0;
v = c[p >> 2] | 0;
if ((v | 0) == 0) {
m = a + (h + 8) | 0;
k = c[m >> 2] | 0;
if ((k | 0) == 0) {
E = 0;
break;
} else {
F = k;
G = m;
}
} else {
F = v;
G = p;
}
while (1) {
p = F + 20 | 0;
v = c[p >> 2] | 0;
if ((v | 0) != 0) {
F = v;
G = p;
continue;
}
p = F + 16 | 0;
v = c[p >> 2] | 0;
if ((v | 0) == 0) {
break;
} else {
F = v;
G = p;
}
}
if (G >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[G >> 2] = 0;
E = F;
break;
}
} else {
p = c[a + h >> 2] | 0;
if (p >>> 0 < (c[212] | 0) >>> 0) {
au();
}
v = p + 12 | 0;
if ((c[v >> 2] | 0) != (b | 0)) {
au();
}
m = t + 8 | 0;
if ((c[m >> 2] | 0) == (b | 0)) {
c[v >> 2] = t;
c[m >> 2] = p;
E = t;
break;
} else {
au();
}
}
} while (0);
if ((f | 0) == 0) {
break;
}
t = a + (h + 20) | 0;
u = 1136 + (c[t >> 2] << 2) | 0;
do {
if ((b | 0) == (c[u >> 2] | 0)) {
c[u >> 2] = E;
if ((E | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[t >> 2]);
break L777;
} else {
if (f >>> 0 < (c[212] | 0) >>> 0) {
au();
}
g = f + 16 | 0;
if ((c[g >> 2] | 0) == (b | 0)) {
c[g >> 2] = E;
} else {
c[f + 20 >> 2] = E;
}
if ((E | 0) == 0) {
break L777;
}
}
} while (0);
if (E >>> 0 < (c[212] | 0) >>> 0) {
au();
}
c[E + 24 >> 2] = f;
b = c[a + (h + 8) >> 2] | 0;
do {
if ((b | 0) != 0) {
if (b >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[E + 16 >> 2] = b;
c[b + 24 >> 2] = E;
break;
}
}
} while (0);
b = c[a + (h + 12) >> 2] | 0;
if ((b | 0) == 0) {
break;
}
if (b >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[E + 20 >> 2] = b;
c[b + 24 >> 2] = E;
break;
}
}
} while (0);
c[q + 4 >> 2] = B | 1;
c[d + B >> 2] = B;
if ((q | 0) != (c[213] | 0)) {
H = B;
break;
}
c[210] = B;
return;
} else {
c[A >> 2] = e & -2;
c[q + 4 >> 2] = r | 1;
c[d + r >> 2] = r;
H = r;
}
} while (0);
r = H >>> 3;
if (H >>> 0 < 256) {
d = r << 1;
e = 872 + (d << 2) | 0;
A = c[208] | 0;
E = 1 << r;
do {
if ((A & E | 0) == 0) {
c[208] = A | E;
I = e;
J = 872 + (d + 2 << 2) | 0;
} else {
r = 872 + (d + 2 << 2) | 0;
h = c[r >> 2] | 0;
if (h >>> 0 >= (c[212] | 0) >>> 0) {
I = h;
J = r;
break;
}
au();
}
} while (0);
c[J >> 2] = q;
c[I + 12 >> 2] = q;
c[q + 8 >> 2] = I;
c[q + 12 >> 2] = e;
return;
}
e = q;
I = H >>> 8;
do {
if ((I | 0) == 0) {
K = 0;
} else {
if (H >>> 0 > 16777215) {
K = 31;
break;
}
J = (I + 1048320 | 0) >>> 16 & 8;
d = I << J;
E = (d + 520192 | 0) >>> 16 & 4;
A = d << E;
d = (A + 245760 | 0) >>> 16 & 2;
r = 14 - (E | J | d) + (A << d >>> 15) | 0;
K = H >>> ((r + 7 | 0) >>> 0) & 1 | r << 1;
}
} while (0);
I = 1136 + (K << 2) | 0;
c[q + 28 >> 2] = K;
c[q + 20 >> 2] = 0;
c[q + 16 >> 2] = 0;
r = c[209] | 0;
d = 1 << K;
do {
if ((r & d | 0) == 0) {
c[209] = r | d;
c[I >> 2] = e;
c[q + 24 >> 2] = I;
c[q + 12 >> 2] = q;
c[q + 8 >> 2] = q;
} else {
if ((K | 0) == 31) {
L = 0;
} else {
L = 25 - (K >>> 1) | 0;
}
A = H << L;
J = c[I >> 2] | 0;
while (1) {
if ((c[J + 4 >> 2] & -8 | 0) == (H | 0)) {
break;
}
M = J + 16 + (A >>> 31 << 2) | 0;
E = c[M >> 2] | 0;
if ((E | 0) == 0) {
N = 621;
break;
} else {
A = A << 1;
J = E;
}
}
if ((N | 0) == 621) {
if (M >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[M >> 2] = e;
c[q + 24 >> 2] = J;
c[q + 12 >> 2] = q;
c[q + 8 >> 2] = q;
break;
}
}
A = J + 8 | 0;
B = c[A >> 2] | 0;
E = c[212] | 0;
if (J >>> 0 < E >>> 0) {
au();
}
if (B >>> 0 < E >>> 0) {
au();
} else {
c[B + 12 >> 2] = e;
c[A >> 2] = e;
c[q + 8 >> 2] = B;
c[q + 12 >> 2] = J;
c[q + 24 >> 2] = 0;
break;
}
}
} while (0);
q = (c[216] | 0) - 1 | 0;
c[216] = q;
if ((q | 0) == 0) {
O = 1288;
} else {
return;
}
while (1) {
q = c[O >> 2] | 0;
if ((q | 0) == 0) {
break;
} else {
O = q + 8 | 0;
}
}
c[216] = -1;
return;
}
function bN(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0;
do {
if ((a | 0) == 0) {
d = 0;
} else {
e = ad(b, a) | 0;
if ((b | a) >>> 0 <= 65535) {
d = e;
break;
}
d = ((e >>> 0) / (a >>> 0) | 0 | 0) == (b | 0) ? e : -1;
}
} while (0);
b = bL(d) | 0;
if ((b | 0) == 0) {
return b | 0;
}
if ((c[b - 4 >> 2] & 3 | 0) == 0) {
return b | 0;
}
cL(b | 0, 0, d | 0);
return b | 0;
}
function bO(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0;
if ((a | 0) == 0) {
d = bL(b) | 0;
return d | 0;
}
if (b >>> 0 > 4294967231) {
c[(aX() | 0) >> 2] = 12;
d = 0;
return d | 0;
}
if (b >>> 0 < 11) {
e = 16;
} else {
e = b + 11 & -8;
}
f = bT(a - 8 | 0, e) | 0;
if ((f | 0) != 0) {
d = f + 8 | 0;
return d | 0;
}
f = bL(b) | 0;
if ((f | 0) == 0) {
d = 0;
return d | 0;
}
e = c[a - 4 >> 2] | 0;
g = (e & -8) - ((e & 3 | 0) == 0 ? 8 : 4) | 0;
e = g >>> 0 < b >>> 0 ? g : b;
cK(f | 0, a | 0, e) | 0;
bM(a);
d = f;
return d | 0;
}
function bP(a, b) {
a = a | 0;
b = b | 0;
var d = 0;
if ((a | 0) == 0) {
return 0;
}
if (b >>> 0 > 4294967231) {
c[(aX() | 0) >> 2] = 12;
return 0;
}
if (b >>> 0 < 11) {
d = 16;
} else {
d = b + 11 & -8;
}
b = a - 8 | 0;
return ((bT(b, d) | 0) == (b | 0) ? a : 0) | 0;
}
function bQ(a, b) {
a = a | 0;
b = b | 0;
var c = 0;
if (a >>> 0 < 9) {
c = bL(b) | 0;
return c | 0;
} else {
c = bR(a, b) | 0;
return c | 0;
}
return 0;
}
function bR(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
d = a >>> 0 < 16 ? 16 : a;
if ((d - 1 & d | 0) == 0) {
e = d;
} else {
a = 16;
while (1) {
if (a >>> 0 < d >>> 0) {
a = a << 1;
} else {
e = a;
break;
}
}
}
if ((-64 - e | 0) >>> 0 <= b >>> 0) {
c[(aX() | 0) >> 2] = 12;
f = 0;
return f | 0;
}
if (b >>> 0 < 11) {
g = 16;
} else {
g = b + 11 & -8;
}
b = bL(e + 12 + g | 0) | 0;
if ((b | 0) == 0) {
f = 0;
return f | 0;
}
a = b - 8 | 0;
d = a;
h = e - 1 | 0;
do {
if ((b & h | 0) == 0) {
i = d;
} else {
j = b + h & -e;
k = j - 8 | 0;
l = a;
if ((k - l | 0) >>> 0 > 15) {
m = k;
} else {
m = j + (e - 8) | 0;
}
j = m;
k = m - l | 0;
l = b - 4 | 0;
n = c[l >> 2] | 0;
o = (n & -8) - k | 0;
if ((n & 3 | 0) == 0) {
c[m >> 2] = (c[a >> 2] | 0) + k;
c[m + 4 >> 2] = o;
i = j;
break;
} else {
n = m + 4 | 0;
c[n >> 2] = o | c[n >> 2] & 1 | 2;
n = m + (o + 4) | 0;
c[n >> 2] = c[n >> 2] | 1;
c[l >> 2] = k | c[l >> 2] & 1 | 2;
l = b + (k - 4) | 0;
c[l >> 2] = c[l >> 2] | 1;
b9(d, k);
i = j;
break;
}
}
} while (0);
d = i + 4 | 0;
b = c[d >> 2] | 0;
do {
if ((b & 3 | 0) != 0) {
m = b & -8;
if (m >>> 0 <= (g + 16 | 0) >>> 0) {
break;
}
a = m - g | 0;
e = i;
c[d >> 2] = g | b & 1 | 2;
c[e + (g | 4) >> 2] = a | 3;
h = e + (m | 4) | 0;
c[h >> 2] = c[h >> 2] | 1;
b9(e + g | 0, a);
}
} while (0);
f = i + 8 | 0;
return f | 0;
}
function bS(a) {
a = a | 0;
var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
do {
if ((c[200] | 0) == 0) {
b = ar(8) | 0;
if ((b - 1 & b | 0) == 0) {
c[202] = b;
c[201] = b;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
return 0;
}
}
} while (0);
if (a >>> 0 >= 4294967232) {
d = 0;
return d | 0;
}
b = c[214] | 0;
if ((b | 0) == 0) {
d = 0;
return d | 0;
}
e = c[211] | 0;
do {
if (e >>> 0 > (a + 40 | 0) >>> 0) {
f = c[202] | 0;
g = ad((((-40 - a - 1 + e + f | 0) >>> 0) / (f >>> 0) | 0) - 1 | 0, f) | 0;
h = b;
i = 1280;
while (1) {
j = c[i >> 2] | 0;
if (j >>> 0 <= h >>> 0) {
if ((j + (c[i + 4 >> 2] | 0) | 0) >>> 0 > h >>> 0) {
k = i;
break;
}
}
j = c[i + 8 >> 2] | 0;
if ((j | 0) == 0) {
k = 0;
break;
} else {
i = j;
}
}
if ((c[k + 12 >> 2] & 8 | 0) != 0) {
break;
}
i = aV(0) | 0;
h = k + 4 | 0;
if ((i | 0) != ((c[k >> 2] | 0) + (c[h >> 2] | 0) | 0)) {
break;
}
j = aV(-(g >>> 0 > 2147483646 ? -2147483648 - f | 0 : g) | 0) | 0;
l = aV(0) | 0;
if (!((j | 0) != -1 & l >>> 0 < i >>> 0)) {
break;
}
j = i - l | 0;
if ((i | 0) == (l | 0)) {
break;
}
c[h >> 2] = (c[h >> 2] | 0) - j;
c[316] = (c[316] | 0) - j;
h = c[214] | 0;
m = (c[211] | 0) - j | 0;
j = h;
n = h + 8 | 0;
if ((n & 7 | 0) == 0) {
o = 0;
} else {
o = -n & 7;
}
n = m - o | 0;
c[214] = j + o;
c[211] = n;
c[j + (o + 4) >> 2] = n | 1;
c[j + (m + 4) >> 2] = 40;
c[215] = c[204];
d = (i | 0) != (l | 0) | 0;
return d | 0;
}
} while (0);
if ((c[211] | 0) >>> 0 <= (c[215] | 0) >>> 0) {
d = 0;
return d | 0;
}
c[215] = -1;
d = 0;
return d | 0;
}
function bT(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0;
d = a + 4 | 0;
e = c[d >> 2] | 0;
f = e & -8;
g = a;
h = g + f | 0;
i = h;
j = c[212] | 0;
if (g >>> 0 < j >>> 0) {
au();
return 0;
}
k = e & 3;
if (!((k | 0) != 1 & g >>> 0 < h >>> 0)) {
au();
return 0;
}
l = g + (f | 4) | 0;
m = c[l >> 2] | 0;
if ((m & 1 | 0) == 0) {
au();
return 0;
}
if ((k | 0) == 0) {
if (b >>> 0 < 256) {
n = 0;
return n | 0;
}
do {
if (f >>> 0 >= (b + 4 | 0) >>> 0) {
if ((f - b | 0) >>> 0 > c[202] << 1 >>> 0) {
break;
} else {
n = a;
}
return n | 0;
}
} while (0);
n = 0;
return n | 0;
}
if (f >>> 0 >= b >>> 0) {
k = f - b | 0;
if (k >>> 0 <= 15) {
n = a;
return n | 0;
}
c[d >> 2] = e & 1 | b | 2;
c[g + (b + 4) >> 2] = k | 3;
c[l >> 2] = c[l >> 2] | 1;
b9(g + b | 0, k);
n = a;
return n | 0;
}
if ((i | 0) == (c[214] | 0)) {
k = (c[211] | 0) + f | 0;
if (k >>> 0 <= b >>> 0) {
n = 0;
return n | 0;
}
l = k - b | 0;
c[d >> 2] = e & 1 | b | 2;
c[g + (b + 4) >> 2] = l | 1;
c[214] = g + b;
c[211] = l;
n = a;
return n | 0;
}
if ((i | 0) == (c[213] | 0)) {
l = (c[210] | 0) + f | 0;
if (l >>> 0 < b >>> 0) {
n = 0;
return n | 0;
}
k = l - b | 0;
if (k >>> 0 > 15) {
c[d >> 2] = e & 1 | b | 2;
c[g + (b + 4) >> 2] = k | 1;
c[g + l >> 2] = k;
o = g + (l + 4) | 0;
c[o >> 2] = c[o >> 2] & -2;
p = g + b | 0;
q = k;
} else {
c[d >> 2] = e & 1 | l | 2;
e = g + (l + 4) | 0;
c[e >> 2] = c[e >> 2] | 1;
p = 0;
q = 0;
}
c[210] = q;
c[213] = p;
n = a;
return n | 0;
}
if ((m & 2 | 0) != 0) {
n = 0;
return n | 0;
}
p = (m & -8) + f | 0;
if (p >>> 0 < b >>> 0) {
n = 0;
return n | 0;
}
q = p - b | 0;
e = m >>> 3;
L1056 : do {
if (m >>> 0 < 256) {
l = c[g + (f + 8) >> 2] | 0;
k = c[g + (f + 12) >> 2] | 0;
o = 872 + (e << 1 << 2) | 0;
do {
if ((l | 0) != (o | 0)) {
if (l >>> 0 < j >>> 0) {
au();
return 0;
}
if ((c[l + 12 >> 2] | 0) == (i | 0)) {
break;
}
au();
return 0;
}
} while (0);
if ((k | 0) == (l | 0)) {
c[208] = c[208] & ~(1 << e);
break;
}
do {
if ((k | 0) == (o | 0)) {
r = k + 8 | 0;
} else {
if (k >>> 0 < j >>> 0) {
au();
return 0;
}
s = k + 8 | 0;
if ((c[s >> 2] | 0) == (i | 0)) {
r = s;
break;
}
au();
return 0;
}
} while (0);
c[l + 12 >> 2] = k;
c[r >> 2] = l;
} else {
o = h;
s = c[g + (f + 24) >> 2] | 0;
t = c[g + (f + 12) >> 2] | 0;
do {
if ((t | 0) == (o | 0)) {
u = g + (f + 20) | 0;
v = c[u >> 2] | 0;
if ((v | 0) == 0) {
w = g + (f + 16) | 0;
x = c[w >> 2] | 0;
if ((x | 0) == 0) {
y = 0;
break;
} else {
z = x;
A = w;
}
} else {
z = v;
A = u;
}
while (1) {
u = z + 20 | 0;
v = c[u >> 2] | 0;
if ((v | 0) != 0) {
z = v;
A = u;
continue;
}
u = z + 16 | 0;
v = c[u >> 2] | 0;
if ((v | 0) == 0) {
break;
} else {
z = v;
A = u;
}
}
if (A >>> 0 < j >>> 0) {
au();
return 0;
} else {
c[A >> 2] = 0;
y = z;
break;
}
} else {
u = c[g + (f + 8) >> 2] | 0;
if (u >>> 0 < j >>> 0) {
au();
return 0;
}
v = u + 12 | 0;
if ((c[v >> 2] | 0) != (o | 0)) {
au();
return 0;
}
w = t + 8 | 0;
if ((c[w >> 2] | 0) == (o | 0)) {
c[v >> 2] = t;
c[w >> 2] = u;
y = t;
break;
} else {
au();
return 0;
}
}
} while (0);
if ((s | 0) == 0) {
break;
}
t = g + (f + 28) | 0;
l = 1136 + (c[t >> 2] << 2) | 0;
do {
if ((o | 0) == (c[l >> 2] | 0)) {
c[l >> 2] = y;
if ((y | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[t >> 2]);
break L1056;
} else {
if (s >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
k = s + 16 | 0;
if ((c[k >> 2] | 0) == (o | 0)) {
c[k >> 2] = y;
} else {
c[s + 20 >> 2] = y;
}
if ((y | 0) == 0) {
break L1056;
}
}
} while (0);
if (y >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
}
c[y + 24 >> 2] = s;
o = c[g + (f + 16) >> 2] | 0;
do {
if ((o | 0) != 0) {
if (o >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[y + 16 >> 2] = o;
c[o + 24 >> 2] = y;
break;
}
}
} while (0);
o = c[g + (f + 20) >> 2] | 0;
if ((o | 0) == 0) {
break;
}
if (o >>> 0 < (c[212] | 0) >>> 0) {
au();
return 0;
} else {
c[y + 20 >> 2] = o;
c[o + 24 >> 2] = y;
break;
}
}
} while (0);
if (q >>> 0 < 16) {
c[d >> 2] = p | c[d >> 2] & 1 | 2;
y = g + (p | 4) | 0;
c[y >> 2] = c[y >> 2] | 1;
n = a;
return n | 0;
} else {
c[d >> 2] = c[d >> 2] & 1 | b | 2;
c[g + (b + 4) >> 2] = q | 3;
d = g + (p | 4) | 0;
c[d >> 2] = c[d >> 2] | 1;
b9(g + b | 0, q);
n = a;
return n | 0;
}
return 0;
}
function bU() {
return c[316] | 0;
}
function bV() {
return c[317] | 0;
}
function bW() {
var a = 0;
a = c[318] | 0;
return ((a | 0) == 0 ? -1 : a) | 0;
}
function bX(a) {
a = a | 0;
var b = 0, d = 0;
if ((a | 0) == -1) {
b = 0;
} else {
d = c[202] | 0;
b = a - 1 + d & -d;
}
c[318] = b;
return b | 0;
}
function bY(a) {
a = a | 0;
var b = 0, d = 0, e = 0;
do {
if ((a | 0) == 0) {
b = 0;
} else {
d = c[a - 4 >> 2] | 0;
e = d & 3;
if ((e | 0) == 1) {
b = 0;
break;
}
b = (d & -8) - ((e | 0) == 0 ? 8 : 4) | 0;
}
} while (0);
return b | 0;
}
function bZ(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0, g = 0;
do {
if ((b | 0) == 8) {
e = bL(d) | 0;
} else {
f = b >>> 2;
if ((b & 3 | 0) != 0 | (f | 0) == 0) {
g = 22;
return g | 0;
}
if ((f + 1073741823 & f | 0) != 0) {
g = 22;
return g | 0;
}
if ((-64 - b | 0) >>> 0 < d >>> 0) {
g = 12;
return g | 0;
} else {
e = bR(b >>> 0 < 16 ? 16 : b, d) | 0;
break;
}
}
} while (0);
if ((e | 0) == 0) {
g = 12;
return g | 0;
}
c[a >> 2] = e;
g = 0;
return g | 0;
}
function b_(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0;
e = i;
i = i + 8 | 0;
f = e | 0;
c[f >> 2] = b;
b = b2(a, f, 3, d) | 0;
i = e;
return b | 0;
}
function b$(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
return b2(a, b, 0, c) | 0;
}
function b0(a) {
a = a | 0;
var b = 0, d = 0, e = 0;
if ((c[200] | 0) != 0) {
b = c[201] | 0;
d = bQ(b, a) | 0;
return d | 0;
}
e = ar(8) | 0;
if ((e - 1 & e | 0) != 0) {
au();
return 0;
}
c[202] = e;
c[201] = e;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
b = c[201] | 0;
d = bQ(b, a) | 0;
return d | 0;
}
function b1(a) {
a = a | 0;
var b = 0;
do {
if ((c[200] | 0) == 0) {
b = ar(8) | 0;
if ((b - 1 & b | 0) == 0) {
c[202] = b;
c[201] = b;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
return 0;
}
}
} while (0);
b = c[201] | 0;
return bQ(b, a - 1 + b & -b) | 0;
}
function b2(a, b, d, e) {
a = a | 0;
b = b | 0;
d = d | 0;
e = e | 0;
var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0;
do {
if ((c[200] | 0) == 0) {
f = ar(8) | 0;
if ((f - 1 & f | 0) == 0) {
c[202] = f;
c[201] = f;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
return 0;
}
}
} while (0);
f = (a | 0) == 0;
do {
if ((e | 0) == 0) {
if (f) {
g = bL(0) | 0;
return g | 0;
} else {
h = a << 2;
if (h >>> 0 < 11) {
i = 0;
j = 16;
break;
}
i = 0;
j = h + 11 & -8;
break;
}
} else {
if (f) {
g = e;
} else {
i = e;
j = 0;
break;
}
return g | 0;
}
} while (0);
do {
if ((d & 1 | 0) == 0) {
if (f) {
k = 0;
l = 0;
break;
} else {
m = 0;
n = 0;
}
while (1) {
e = c[b + (n << 2) >> 2] | 0;
if (e >>> 0 < 11) {
o = 16;
} else {
o = e + 11 & -8;
}
e = o + m | 0;
h = n + 1 | 0;
if ((h | 0) == (a | 0)) {
k = 0;
l = e;
break;
} else {
m = e;
n = h;
}
}
} else {
h = c[b >> 2] | 0;
if (h >>> 0 < 11) {
p = 16;
} else {
p = h + 11 & -8;
}
k = p;
l = ad(p, a) | 0;
}
} while (0);
p = bL(j - 4 + l | 0) | 0;
if ((p | 0) == 0) {
g = 0;
return g | 0;
}
n = p - 8 | 0;
m = c[p - 4 >> 2] & -8;
if ((d & 2 | 0) != 0) {
cL(p | 0, 0, -4 - j + m | 0);
}
if ((i | 0) == 0) {
c[p + (l - 4) >> 2] = m - l | 3;
q = p + l | 0;
r = l;
} else {
q = i;
r = m;
}
c[q >> 2] = p;
p = a - 1 | 0;
L1216 : do {
if ((p | 0) == 0) {
s = n;
t = r;
} else {
if ((k | 0) == 0) {
u = n;
v = r;
w = 0;
} else {
a = n;
m = r;
i = 0;
while (1) {
l = m - k | 0;
c[a + 4 >> 2] = k | 3;
j = a + k | 0;
d = i + 1 | 0;
c[q + (d << 2) >> 2] = a + (k + 8);
if ((d | 0) == (p | 0)) {
s = j;
t = l;
break L1216;
} else {
a = j;
m = l;
i = d;
}
}
}
while (1) {
i = c[b + (w << 2) >> 2] | 0;
if (i >>> 0 < 11) {
x = 16;
} else {
x = i + 11 & -8;
}
i = v - x | 0;
c[u + 4 >> 2] = x | 3;
m = u + x | 0;
a = w + 1 | 0;
c[q + (a << 2) >> 2] = u + (x + 8);
if ((a | 0) == (p | 0)) {
s = m;
t = i;
break;
} else {
u = m;
v = i;
w = a;
}
}
}
} while (0);
c[s + 4 >> 2] = t | 3;
g = q;
return g | 0;
}
function b3(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
d = a + (b << 2) | 0;
L1229 : do {
if ((b | 0) != 0) {
e = a;
L1230 : while (1) {
f = c[e >> 2] | 0;
L1232 : do {
if ((f | 0) == 0) {
g = e + 4 | 0;
} else {
h = f - 8 | 0;
i = h;
j = f - 4 | 0;
k = c[j >> 2] & -8;
c[e >> 2] = 0;
if (h >>> 0 < (c[212] | 0) >>> 0) {
l = 935;
break L1230;
}
h = c[j >> 2] | 0;
if ((h & 3 | 0) == 1) {
l = 936;
break L1230;
}
m = e + 4 | 0;
n = h - 8 & -8;
do {
if ((m | 0) != (d | 0)) {
if ((c[m >> 2] | 0) != (f + (n + 8) | 0)) {
break;
}
o = (c[f + (n | 4) >> 2] & -8) + k | 0;
c[j >> 2] = h & 1 | o | 2;
p = f + (o - 4) | 0;
c[p >> 2] = c[p >> 2] | 1;
c[m >> 2] = f;
g = m;
break L1232;
}
} while (0);
b9(i, k);
g = m;
}
} while (0);
if ((g | 0) == (d | 0)) {
break L1229;
} else {
e = g;
}
}
if ((l | 0) == 935) {
au();
return 0;
} else if ((l | 0) == 936) {
au();
return 0;
}
}
} while (0);
if ((c[211] | 0) >>> 0 <= (c[215] | 0) >>> 0) {
return 0;
}
bS(0) | 0;
return 0;
}
function b4(a) {
a = a | 0;
var b = 0, d = 0;
if ((c[200] | 0) != 0) {
b = bS(a) | 0;
return b | 0;
}
d = ar(8) | 0;
if ((d - 1 & d | 0) != 0) {
au();
return 0;
}
c[202] = d;
c[201] = d;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
b = bS(a) | 0;
return b | 0;
}
function b5(a) {
a = a | 0;
var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0;
do {
if ((c[200] | 0) == 0) {
b = ar(8) | 0;
if ((b - 1 & b | 0) == 0) {
c[202] = b;
c[201] = b;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
}
}
} while (0);
b = c[214] | 0;
if ((b | 0) == 0) {
d = 0;
e = 0;
f = 0;
g = 0;
h = 0;
i = 0;
j = 0;
} else {
k = c[211] | 0;
l = k + 40 | 0;
m = 1;
n = l;
o = l;
l = 1280;
while (1) {
p = c[l >> 2] | 0;
q = p + 8 | 0;
if ((q & 7 | 0) == 0) {
r = 0;
} else {
r = -q & 7;
}
q = p + (c[l + 4 >> 2] | 0) | 0;
s = m;
t = n;
u = o;
v = p + r | 0;
while (1) {
if (v >>> 0 >= q >>> 0 | (v | 0) == (b | 0)) {
w = s;
x = t;
y = u;
break;
}
z = c[v + 4 >> 2] | 0;
if ((z | 0) == 7) {
w = s;
x = t;
y = u;
break;
}
A = z & -8;
B = A + u | 0;
if ((z & 3 | 0) == 1) {
C = A + t | 0;
D = s + 1 | 0;
} else {
C = t;
D = s;
}
z = v + A | 0;
if (z >>> 0 < p >>> 0) {
w = D;
x = C;
y = B;
break;
} else {
s = D;
t = C;
u = B;
v = z;
}
}
v = c[l + 8 >> 2] | 0;
if ((v | 0) == 0) {
break;
} else {
m = w;
n = x;
o = y;
l = v;
}
}
l = c[316] | 0;
d = k;
e = y;
f = w;
g = l - y | 0;
h = c[317] | 0;
i = l - x | 0;
j = x;
}
c[a >> 2] = e;
c[a + 4 >> 2] = f;
f = a + 8 | 0;
c[f >> 2] = 0;
c[f + 4 >> 2] = 0;
c[a + 16 >> 2] = g;
c[a + 20 >> 2] = h;
c[a + 24 >> 2] = 0;
c[a + 28 >> 2] = i;
c[a + 32 >> 2] = j;
c[a + 36 >> 2] = d;
return;
}
function b6() {
var a = 0, b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0;
a = i;
do {
if ((c[200] | 0) == 0) {
b = ar(8) | 0;
if ((b - 1 & b | 0) == 0) {
c[202] = b;
c[201] = b;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
}
}
} while (0);
b = c[214] | 0;
if ((b | 0) == 0) {
d = 0;
e = 0;
f = 0;
} else {
g = c[317] | 0;
h = c[316] | 0;
j = h - 40 - (c[211] | 0) | 0;
k = 1280;
while (1) {
l = c[k >> 2] | 0;
m = l + 8 | 0;
if ((m & 7 | 0) == 0) {
n = 0;
} else {
n = -m & 7;
}
m = l + (c[k + 4 >> 2] | 0) | 0;
p = j;
q = l + n | 0;
while (1) {
if (q >>> 0 >= m >>> 0 | (q | 0) == (b | 0)) {
r = p;
break;
}
s = c[q + 4 >> 2] | 0;
if ((s | 0) == 7) {
r = p;
break;
}
t = s & -8;
u = p - ((s & 3 | 0) == 1 ? t : 0) | 0;
s = q + t | 0;
if (s >>> 0 < l >>> 0) {
r = u;
break;
} else {
p = u;
q = s;
}
}
q = c[k + 8 >> 2] | 0;
if ((q | 0) == 0) {
d = r;
e = h;
f = g;
break;
} else {
j = r;
k = q;
}
}
}
av(c[o >> 2] | 0, 520, (y = i, i = i + 8 | 0, c[y >> 2] = f, y) | 0) | 0;
av(c[o >> 2] | 0, 488, (y = i, i = i + 8 | 0, c[y >> 2] = e, y) | 0) | 0;
av(c[o >> 2] | 0, 400, (y = i, i = i + 8 | 0, c[y >> 2] = d, y) | 0) | 0;
i = a;
return;
}
function b7(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0;
do {
if ((c[200] | 0) == 0) {
d = ar(8) | 0;
if ((d - 1 & d | 0) == 0) {
c[202] = d;
c[201] = d;
c[203] = -1;
c[204] = 2097152;
c[205] = 0;
c[319] = 0;
c[200] = (a_(0) | 0) & -16 ^ 1431655768;
break;
} else {
au();
return 0;
}
}
} while (0);
if ((a | 0) == (-1 | 0)) {
c[204] = b;
e = 1;
return e | 0;
} else if ((a | 0) == (-2 | 0)) {
if ((c[201] | 0) >>> 0 > b >>> 0) {
e = 0;
return e | 0;
}
if ((b - 1 & b | 0) != 0) {
e = 0;
return e | 0;
}
c[202] = b;
e = 1;
return e | 0;
} else if ((a | 0) == (-3 | 0)) {
c[203] = b;
e = 1;
return e | 0;
} else {
e = 0;
return e | 0;
}
return 0;
}
function b8() {
return (F = c[328] | 0, c[328] = F + 0, F) | 0;
}
function b9(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0;
d = a;
e = d + b | 0;
f = e;
g = c[a + 4 >> 2] | 0;
L1325 : do {
if ((g & 1 | 0) == 0) {
h = c[a >> 2] | 0;
if ((g & 3 | 0) == 0) {
return;
}
i = d + (-h | 0) | 0;
j = i;
k = h + b | 0;
l = c[212] | 0;
if (i >>> 0 < l >>> 0) {
au();
}
if ((j | 0) == (c[213] | 0)) {
m = d + (b + 4) | 0;
if ((c[m >> 2] & 3 | 0) != 3) {
n = j;
o = k;
break;
}
c[210] = k;
c[m >> 2] = c[m >> 2] & -2;
c[d + (4 - h) >> 2] = k | 1;
c[e >> 2] = k;
return;
}
m = h >>> 3;
if (h >>> 0 < 256) {
p = c[d + (8 - h) >> 2] | 0;
q = c[d + (12 - h) >> 2] | 0;
r = 872 + (m << 1 << 2) | 0;
do {
if ((p | 0) != (r | 0)) {
if (p >>> 0 < l >>> 0) {
au();
}
if ((c[p + 12 >> 2] | 0) == (j | 0)) {
break;
}
au();
}
} while (0);
if ((q | 0) == (p | 0)) {
c[208] = c[208] & ~(1 << m);
n = j;
o = k;
break;
}
do {
if ((q | 0) == (r | 0)) {
s = q + 8 | 0;
} else {
if (q >>> 0 < l >>> 0) {
au();
}
t = q + 8 | 0;
if ((c[t >> 2] | 0) == (j | 0)) {
s = t;
break;
}
au();
}
} while (0);
c[p + 12 >> 2] = q;
c[s >> 2] = p;
n = j;
o = k;
break;
}
r = i;
m = c[d + (24 - h) >> 2] | 0;
t = c[d + (12 - h) >> 2] | 0;
do {
if ((t | 0) == (r | 0)) {
u = 16 - h | 0;
v = d + (u + 4) | 0;
w = c[v >> 2] | 0;
if ((w | 0) == 0) {
x = d + u | 0;
u = c[x >> 2] | 0;
if ((u | 0) == 0) {
y = 0;
break;
} else {
z = u;
A = x;
}
} else {
z = w;
A = v;
}
while (1) {
v = z + 20 | 0;
w = c[v >> 2] | 0;
if ((w | 0) != 0) {
z = w;
A = v;
continue;
}
v = z + 16 | 0;
w = c[v >> 2] | 0;
if ((w | 0) == 0) {
break;
} else {
z = w;
A = v;
}
}
if (A >>> 0 < l >>> 0) {
au();
} else {
c[A >> 2] = 0;
y = z;
break;
}
} else {
v = c[d + (8 - h) >> 2] | 0;
if (v >>> 0 < l >>> 0) {
au();
}
w = v + 12 | 0;
if ((c[w >> 2] | 0) != (r | 0)) {
au();
}
x = t + 8 | 0;
if ((c[x >> 2] | 0) == (r | 0)) {
c[w >> 2] = t;
c[x >> 2] = v;
y = t;
break;
} else {
au();
}
}
} while (0);
if ((m | 0) == 0) {
n = j;
o = k;
break;
}
t = d + (28 - h) | 0;
l = 1136 + (c[t >> 2] << 2) | 0;
do {
if ((r | 0) == (c[l >> 2] | 0)) {
c[l >> 2] = y;
if ((y | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[t >> 2]);
n = j;
o = k;
break L1325;
} else {
if (m >>> 0 < (c[212] | 0) >>> 0) {
au();
}
i = m + 16 | 0;
if ((c[i >> 2] | 0) == (r | 0)) {
c[i >> 2] = y;
} else {
c[m + 20 >> 2] = y;
}
if ((y | 0) == 0) {
n = j;
o = k;
break L1325;
}
}
} while (0);
if (y >>> 0 < (c[212] | 0) >>> 0) {
au();
}
c[y + 24 >> 2] = m;
r = 16 - h | 0;
t = c[d + r >> 2] | 0;
do {
if ((t | 0) != 0) {
if (t >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[y + 16 >> 2] = t;
c[t + 24 >> 2] = y;
break;
}
}
} while (0);
t = c[d + (r + 4) >> 2] | 0;
if ((t | 0) == 0) {
n = j;
o = k;
break;
}
if (t >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[y + 20 >> 2] = t;
c[t + 24 >> 2] = y;
n = j;
o = k;
break;
}
} else {
n = a;
o = b;
}
} while (0);
a = c[212] | 0;
if (e >>> 0 < a >>> 0) {
au();
}
y = d + (b + 4) | 0;
z = c[y >> 2] | 0;
do {
if ((z & 2 | 0) == 0) {
if ((f | 0) == (c[214] | 0)) {
A = (c[211] | 0) + o | 0;
c[211] = A;
c[214] = n;
c[n + 4 >> 2] = A | 1;
if ((n | 0) != (c[213] | 0)) {
return;
}
c[213] = 0;
c[210] = 0;
return;
}
if ((f | 0) == (c[213] | 0)) {
A = (c[210] | 0) + o | 0;
c[210] = A;
c[213] = n;
c[n + 4 >> 2] = A | 1;
c[n + A >> 2] = A;
return;
}
A = (z & -8) + o | 0;
s = z >>> 3;
L1424 : do {
if (z >>> 0 < 256) {
g = c[d + (b + 8) >> 2] | 0;
t = c[d + (b + 12) >> 2] | 0;
h = 872 + (s << 1 << 2) | 0;
do {
if ((g | 0) != (h | 0)) {
if (g >>> 0 < a >>> 0) {
au();
}
if ((c[g + 12 >> 2] | 0) == (f | 0)) {
break;
}
au();
}
} while (0);
if ((t | 0) == (g | 0)) {
c[208] = c[208] & ~(1 << s);
break;
}
do {
if ((t | 0) == (h | 0)) {
B = t + 8 | 0;
} else {
if (t >>> 0 < a >>> 0) {
au();
}
m = t + 8 | 0;
if ((c[m >> 2] | 0) == (f | 0)) {
B = m;
break;
}
au();
}
} while (0);
c[g + 12 >> 2] = t;
c[B >> 2] = g;
} else {
h = e;
m = c[d + (b + 24) >> 2] | 0;
l = c[d + (b + 12) >> 2] | 0;
do {
if ((l | 0) == (h | 0)) {
i = d + (b + 20) | 0;
p = c[i >> 2] | 0;
if ((p | 0) == 0) {
q = d + (b + 16) | 0;
v = c[q >> 2] | 0;
if ((v | 0) == 0) {
C = 0;
break;
} else {
D = v;
E = q;
}
} else {
D = p;
E = i;
}
while (1) {
i = D + 20 | 0;
p = c[i >> 2] | 0;
if ((p | 0) != 0) {
D = p;
E = i;
continue;
}
i = D + 16 | 0;
p = c[i >> 2] | 0;
if ((p | 0) == 0) {
break;
} else {
D = p;
E = i;
}
}
if (E >>> 0 < a >>> 0) {
au();
} else {
c[E >> 2] = 0;
C = D;
break;
}
} else {
i = c[d + (b + 8) >> 2] | 0;
if (i >>> 0 < a >>> 0) {
au();
}
p = i + 12 | 0;
if ((c[p >> 2] | 0) != (h | 0)) {
au();
}
q = l + 8 | 0;
if ((c[q >> 2] | 0) == (h | 0)) {
c[p >> 2] = l;
c[q >> 2] = i;
C = l;
break;
} else {
au();
}
}
} while (0);
if ((m | 0) == 0) {
break;
}
l = d + (b + 28) | 0;
g = 1136 + (c[l >> 2] << 2) | 0;
do {
if ((h | 0) == (c[g >> 2] | 0)) {
c[g >> 2] = C;
if ((C | 0) != 0) {
break;
}
c[209] = c[209] & ~(1 << c[l >> 2]);
break L1424;
} else {
if (m >>> 0 < (c[212] | 0) >>> 0) {
au();
}
t = m + 16 | 0;
if ((c[t >> 2] | 0) == (h | 0)) {
c[t >> 2] = C;
} else {
c[m + 20 >> 2] = C;
}
if ((C | 0) == 0) {
break L1424;
}
}
} while (0);
if (C >>> 0 < (c[212] | 0) >>> 0) {
au();
}
c[C + 24 >> 2] = m;
h = c[d + (b + 16) >> 2] | 0;
do {
if ((h | 0) != 0) {
if (h >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[C + 16 >> 2] = h;
c[h + 24 >> 2] = C;
break;
}
}
} while (0);
h = c[d + (b + 20) >> 2] | 0;
if ((h | 0) == 0) {
break;
}
if (h >>> 0 < (c[212] | 0) >>> 0) {
au();
} else {
c[C + 20 >> 2] = h;
c[h + 24 >> 2] = C;
break;
}
}
} while (0);
c[n + 4 >> 2] = A | 1;
c[n + A >> 2] = A;
if ((n | 0) != (c[213] | 0)) {
F = A;
break;
}
c[210] = A;
return;
} else {
c[y >> 2] = z & -2;
c[n + 4 >> 2] = o | 1;
c[n + o >> 2] = o;
F = o;
}
} while (0);
o = F >>> 3;
if (F >>> 0 < 256) {
z = o << 1;
y = 872 + (z << 2) | 0;
C = c[208] | 0;
b = 1 << o;
do {
if ((C & b | 0) == 0) {
c[208] = C | b;
G = y;
H = 872 + (z + 2 << 2) | 0;
} else {
o = 872 + (z + 2 << 2) | 0;
d = c[o >> 2] | 0;
if (d >>> 0 >= (c[212] | 0) >>> 0) {
G = d;
H = o;
break;
}
au();
}
} while (0);
c[H >> 2] = n;
c[G + 12 >> 2] = n;
c[n + 8 >> 2] = G;
c[n + 12 >> 2] = y;
return;
}
y = n;
G = F >>> 8;
do {
if ((G | 0) == 0) {
I = 0;
} else {
if (F >>> 0 > 16777215) {
I = 31;
break;
}
H = (G + 1048320 | 0) >>> 16 & 8;
z = G << H;
b = (z + 520192 | 0) >>> 16 & 4;
C = z << b;
z = (C + 245760 | 0) >>> 16 & 2;
o = 14 - (b | H | z) + (C << z >>> 15) | 0;
I = F >>> ((o + 7 | 0) >>> 0) & 1 | o << 1;
}
} while (0);
G = 1136 + (I << 2) | 0;
c[n + 28 >> 2] = I;
c[n + 20 >> 2] = 0;
c[n + 16 >> 2] = 0;
o = c[209] | 0;
z = 1 << I;
if ((o & z | 0) == 0) {
c[209] = o | z;
c[G >> 2] = y;
c[n + 24 >> 2] = G;
c[n + 12 >> 2] = n;
c[n + 8 >> 2] = n;
return;
}
if ((I | 0) == 31) {
J = 0;
} else {
J = 25 - (I >>> 1) | 0;
}
I = F << J;
J = c[G >> 2] | 0;
while (1) {
if ((c[J + 4 >> 2] & -8 | 0) == (F | 0)) {
break;
}
K = J + 16 + (I >>> 31 << 2) | 0;
G = c[K >> 2] | 0;
if ((G | 0) == 0) {
L = 1120;
break;
} else {
I = I << 1;
J = G;
}
}
if ((L | 0) == 1120) {
if (K >>> 0 < (c[212] | 0) >>> 0) {
au();
}
c[K >> 2] = y;
c[n + 24 >> 2] = J;
c[n + 12 >> 2] = n;
c[n + 8 >> 2] = n;
return;
}
K = J + 8 | 0;
L = c[K >> 2] | 0;
I = c[212] | 0;
if (J >>> 0 < I >>> 0) {
au();
}
if (L >>> 0 < I >>> 0) {
au();
}
c[L + 12 >> 2] = y;
c[K >> 2] = y;
c[n + 8 >> 2] = L;
c[n + 12 >> 2] = J;
c[n + 24 >> 2] = 0;
return;
}
function ca(a) {
a = a | 0;
var b = 0, d = 0, e = 0;
b = (a | 0) == 0 ? 1 : a;
while (1) {
d = bL(b) | 0;
if ((d | 0) != 0) {
e = 1164;
break;
}
a = (F = c[328] | 0, c[328] = F + 0, F);
if ((a | 0) == 0) {
break;
}
a5[a & 1]();
}
if ((e | 0) == 1164) {
return d | 0;
}
d = aJ(4) | 0;
c[d >> 2] = 560;
as(d | 0, 688, 6);
return 0;
}
function cb(a, b) {
a = a | 0;
b = b | 0;
return ca(a) | 0;
}
function cc(a) {
a = a | 0;
return;
}
function cd(a) {
a = a | 0;
return 360 | 0;
}
function ce(a) {
a = a | 0;
return 448 | 0;
}
function cf(a) {
a = a | 0;
return (F = c[328] | 0, c[328] = a, F) | 0;
}
function cg(a) {
a = a | 0;
c[a >> 2] = 560;
return;
}
function ch(a) {
a = a | 0;
c[a >> 2] = 592;
return;
}
function ci(a) {
a = a | 0;
if ((a | 0) != 0) {
bM(a);
}
return;
}
function cj(a, b) {
a = a | 0;
b = b | 0;
ci(a);
return;
}
function ck(a) {
a = a | 0;
ci(a);
return;
}
function cl(a, b) {
a = a | 0;
b = b | 0;
ck(a);
return;
}
function cm(a) {
a = a | 0;
ci(a);
return;
}
function cn(a) {
a = a | 0;
ci(a);
return;
}
function co(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
return cp(a, b, c, 0, 0, 0) | 0;
}
function cp(b, d, e, f, g, h) {
b = b | 0;
d = d | 0;
e = e | 0;
f = f | 0;
g = g | 0;
h = h | 0;
var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0, aa = 0, ab = 0, ac = 0, ad = 0;
j = i;
if ((e | 0) == 0) {
k = -1;
i = j;
return k | 0;
}
l = c[44] | 0;
if ((l | 0) == 0) {
c[196] = 1;
c[44] = 1;
m = 1;
n = 1;
o = 1190;
} else {
p = c[196] | 0;
q = c[74] | 0;
if ((q | 0) == -1 | (p | 0) != 0) {
m = p;
n = l;
o = 1190;
} else {
r = q;
s = p;
t = l;
}
}
if ((o | 0) == 1190) {
l = (aP(344) | 0) != 0 | 0;
c[74] = l;
r = l;
s = m;
t = n;
}
n = a[e] | 0;
if (n << 24 >> 24 == 45) {
u = h | 2;
o = 1194;
} else {
m = (r | 0) != 0 | n << 24 >> 24 == 43 ? h & -2 : h;
if (n << 24 >> 24 == 43) {
u = m;
o = 1194;
} else {
v = e;
w = m;
}
}
if ((o | 0) == 1194) {
v = e + 1 | 0;
w = u;
}
c[198] = 0;
if ((s | 0) == 0) {
x = t;
o = 1198;
} else {
c[50] = -1;
c[48] = -1;
z = t;
A = s;
o = 1197;
}
while (1) {
if ((o | 0) == 1197) {
o = 0;
if ((A | 0) == 0) {
x = z;
o = 1198;
continue;
} else {
B = z;
}
} else if ((o | 0) == 1198) {
o = 0;
s = c[40] | 0;
if ((a[s] | 0) == 0) {
B = x;
} else {
C = s;
D = x;
break;
}
}
c[196] = 0;
if ((B | 0) >= (b | 0)) {
o = 1200;
break;
}
E = d + (B << 2) | 0;
F = c[E >> 2] | 0;
c[40] = F;
if ((a[F] | 0) == 45) {
G = F + 1 | 0;
H = a[G] | 0;
if (H << 24 >> 24 != 0) {
o = 1232;
break;
}
if ((aB(v | 0, 45) | 0) != 0) {
o = 1232;
break;
}
}
c[40] = 824;
if ((w & 2 | 0) != 0) {
o = 1217;
break;
}
if ((w & 1 | 0) == 0) {
k = -1;
o = 1298;
break;
}
s = c[48] | 0;
do {
if ((s | 0) == -1) {
c[48] = B;
I = B;
J = 0;
} else {
t = c[50] | 0;
if ((t | 0) == -1) {
I = B;
J = 0;
break;
}
u = t - s | 0;
e = B - t | 0;
m = (u | 0) % (e | 0) | 0;
if ((m | 0) == 0) {
K = e;
} else {
n = e;
h = m;
while (1) {
m = (n | 0) % (h | 0) | 0;
if ((m | 0) == 0) {
K = h;
break;
} else {
n = h;
h = m;
}
}
}
h = (B - s | 0) / (K | 0) | 0;
do {
if ((K | 0) > 0) {
n = -u | 0;
if ((h | 0) > 0) {
L = 0;
} else {
M = B;
N = t;
O = s;
P = 0;
break;
}
do {
m = L + t | 0;
r = d + (m << 2) | 0;
l = 0;
p = m;
m = c[r >> 2] | 0;
while (1) {
q = ((p | 0) < (t | 0) ? e : n) + p | 0;
Q = d + (q << 2) | 0;
R = c[Q >> 2] | 0;
c[Q >> 2] = m;
c[r >> 2] = R;
Q = l + 1 | 0;
if ((Q | 0) < (h | 0)) {
l = Q;
p = q;
m = R;
} else {
break;
}
}
L = L + 1 | 0;
} while ((L | 0) < (K | 0));
M = c[44] | 0;
N = c[50] | 0;
O = c[48] | 0;
P = c[196] | 0;
} else {
M = B;
N = t;
O = s;
P = 0;
}
} while (0);
c[48] = M - N + O;
c[50] = -1;
I = M;
J = P;
}
} while (0);
s = I + 1 | 0;
c[44] = s;
z = s;
A = J;
o = 1197;
}
do {
if ((o | 0) == 1298) {
i = j;
return k | 0;
} else if ((o | 0) == 1232) {
J = c[48] | 0;
A = c[50] | 0;
if ((J | 0) != -1 & (A | 0) == -1) {
c[50] = B;
S = a[G] | 0;
T = B;
} else {
S = H;
T = A;
}
if (S << 24 >> 24 == 0) {
C = F;
D = B;
break;
}
c[40] = G;
if ((a[G] | 0) != 45) {
C = G;
D = B;
break;
}
if ((a[F + 2 | 0] | 0) != 0) {
C = G;
D = B;
break;
}
A = B + 1 | 0;
c[44] = A;
c[40] = 824;
if ((T | 0) != -1) {
z = T - J | 0;
I = A - T | 0;
P = (z | 0) % (I | 0) | 0;
if ((P | 0) == 0) {
U = I;
} else {
M = I;
O = P;
while (1) {
P = (M | 0) % (O | 0) | 0;
if ((P | 0) == 0) {
U = O;
break;
} else {
M = O;
O = P;
}
}
}
O = (A - J | 0) / (U | 0) | 0;
do {
if ((U | 0) > 0) {
M = -z | 0;
if ((O | 0) > 0) {
V = 0;
} else {
W = T;
X = J;
Y = A;
break;
}
do {
P = V + T | 0;
N = d + (P << 2) | 0;
K = 0;
L = P;
P = c[N >> 2] | 0;
while (1) {
x = ((L | 0) < (T | 0) ? I : M) + L | 0;
s = d + (x << 2) | 0;
t = c[s >> 2] | 0;
c[s >> 2] = P;
c[N >> 2] = t;
s = K + 1 | 0;
if ((s | 0) < (O | 0)) {
K = s;
L = x;
P = t;
} else {
break;
}
}
V = V + 1 | 0;
} while ((V | 0) < (U | 0));
W = c[50] | 0;
X = c[48] | 0;
Y = c[44] | 0;
} else {
W = T;
X = J;
Y = A;
}
} while (0);
c[44] = X - W + Y;
}
c[50] = -1;
c[48] = -1;
k = -1;
i = j;
return k | 0;
} else if ((o | 0) == 1200) {
c[40] = 824;
A = c[50] | 0;
J = c[48] | 0;
do {
if ((A | 0) == -1) {
if ((J | 0) == -1) {
break;
}
c[44] = J;
} else {
O = A - J | 0;
I = B - A | 0;
z = (O | 0) % (I | 0) | 0;
if ((z | 0) == 0) {
Z = I;
} else {
M = I;
P = z;
while (1) {
z = (M | 0) % (P | 0) | 0;
if ((z | 0) == 0) {
Z = P;
break;
} else {
M = P;
P = z;
}
}
}
P = (B - J | 0) / (Z | 0) | 0;
do {
if ((Z | 0) > 0) {
M = -O | 0;
if ((P | 0) > 0) {
_ = 0;
} else {
$ = A;
aa = J;
ab = B;
break;
}
do {
z = _ + A | 0;
L = d + (z << 2) | 0;
K = 0;
N = z;
z = c[L >> 2] | 0;
while (1) {
t = ((N | 0) < (A | 0) ? I : M) + N | 0;
x = d + (t << 2) | 0;
s = c[x >> 2] | 0;
c[x >> 2] = z;
c[L >> 2] = s;
x = K + 1 | 0;
if ((x | 0) < (P | 0)) {
K = x;
N = t;
z = s;
} else {
break;
}
}
_ = _ + 1 | 0;
} while ((_ | 0) < (Z | 0));
$ = c[50] | 0;
aa = c[48] | 0;
ab = c[44] | 0;
} else {
$ = A;
aa = J;
ab = B;
}
} while (0);
c[44] = aa - $ + ab;
}
} while (0);
c[50] = -1;
c[48] = -1;
k = -1;
i = j;
return k | 0;
} else if ((o | 0) == 1217) {
c[44] = B + 1;
c[198] = c[E >> 2];
k = 1;
i = j;
return k | 0;
}
} while (0);
E = (f | 0) != 0;
L1659 : do {
if (E) {
if ((C | 0) == (c[d + (D << 2) >> 2] | 0)) {
ac = C;
break;
}
B = a[C] | 0;
do {
if (B << 24 >> 24 == 45) {
c[40] = C + 1;
ad = 0;
} else {
if ((w & 4 | 0) == 0) {
ac = C;
break L1659;
}
if (B << 24 >> 24 == 58) {
ad = 0;
break;
}
ad = (aB(v | 0, B << 24 >> 24 | 0) | 0) != 0 | 0;
}
} while (0);
B = cv(d, v, f, g, ad) | 0;
if ((B | 0) == -1) {
ac = c[40] | 0;
break;
}
c[40] = 824;
k = B;
i = j;
return k | 0;
} else {
ac = C;
}
} while (0);
C = ac + 1 | 0;
c[40] = C;
ad = a[ac] | 0;
ac = ad << 24 >> 24;
if ((ad << 24 >> 24 | 0) == 45) {
if ((a[C] | 0) == 0) {
o = 1260;
}
} else if ((ad << 24 >> 24 | 0) == 58) {
o = 1263;
} else {
o = 1260;
}
do {
if ((o | 0) == 1260) {
w = aB(v | 0, ac | 0) | 0;
if ((w | 0) == 0) {
if (ad << 24 >> 24 != 45) {
o = 1263;
break;
}
if ((a[C] | 0) == 0) {
k = -1;
} else {
break;
}
i = j;
return k | 0;
}
D = a[w + 1 | 0] | 0;
if (E & ad << 24 >> 24 == 87 & D << 24 >> 24 == 59) {
do {
if ((a[C] | 0) == 0) {
B = (c[44] | 0) + 1 | 0;
c[44] = B;
if ((B | 0) < (b | 0)) {
c[40] = c[d + (B << 2) >> 2];
break;
}
c[40] = 824;
do {
if ((c[46] | 0) != 0) {
if ((a[v] | 0) == 58) {
break;
}
cx(48, (y = i, i = i + 8 | 0, c[y >> 2] = ac, y) | 0);
}
} while (0);
c[42] = ac;
k = (a[v] | 0) == 58 ? 58 : 63;
i = j;
return k | 0;
}
} while (0);
B = cv(d, v, f, g, 0) | 0;
c[40] = 824;
k = B;
i = j;
return k | 0;
}
if (D << 24 >> 24 != 58) {
if ((a[C] | 0) != 0) {
k = ac;
i = j;
return k | 0;
}
c[44] = (c[44] | 0) + 1;
k = ac;
i = j;
return k | 0;
}
c[198] = 0;
do {
if ((a[C] | 0) == 0) {
if ((a[w + 2 | 0] | 0) == 58) {
break;
}
B = (c[44] | 0) + 1 | 0;
c[44] = B;
if ((B | 0) < (b | 0)) {
c[198] = c[d + (B << 2) >> 2];
break;
}
c[40] = 824;
do {
if ((c[46] | 0) != 0) {
if ((a[v] | 0) == 58) {
break;
}
cx(48, (y = i, i = i + 8 | 0, c[y >> 2] = ac, y) | 0);
}
} while (0);
c[42] = ac;
k = (a[v] | 0) == 58 ? 58 : 63;
i = j;
return k | 0;
} else {
c[198] = C;
}
} while (0);
c[40] = 824;
c[44] = (c[44] | 0) + 1;
k = ac;
i = j;
return k | 0;
}
} while (0);
do {
if ((o | 0) == 1263) {
if ((a[C] | 0) != 0) {
break;
}
c[44] = (c[44] | 0) + 1;
}
} while (0);
do {
if ((c[46] | 0) != 0) {
if ((a[v] | 0) == 58) {
break;
}
cx(272, (y = i, i = i + 8 | 0, c[y >> 2] = ac, y) | 0);
}
} while (0);
c[42] = ac;
k = 63;
i = j;
return k | 0;
}
function cq(a, b, c, d, e) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
e = e | 0;
return cp(a, b, c, d, e, 1) | 0;
}
function cr(a, b, c, d, e) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
e = e | 0;
return cp(a, b, c, d, e, 5) | 0;
}
function cs(a) {
a = a | 0;
return ca(a) | 0;
}
function ct(a, b) {
a = a | 0;
b = b | 0;
return cs(a) | 0;
}
function cu() {
var a = 0;
a = aJ(4) | 0;
c[a >> 2] = 560;
as(a | 0, 688, 6);
}
function cv(b, d, e, f, g) {
b = b | 0;
d = d | 0;
e = e | 0;
f = f | 0;
g = g | 0;
var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, z = 0;
h = i;
j = c[40] | 0;
k = c[44] | 0;
l = k + 1 | 0;
c[44] = l;
m = aB(j | 0, 61) | 0;
if ((m | 0) == 0) {
n = cM(j | 0) | 0;
o = 0;
} else {
n = m - j | 0;
o = m + 1 | 0;
}
m = c[e >> 2] | 0;
L1739 : do {
if ((m | 0) != 0) {
L1741 : do {
if ((g | 0) != 0 & (n | 0) == 1) {
p = 0;
q = m;
while (1) {
if ((a[j] | 0) == (a[q] | 0)) {
if ((cM(q | 0) | 0) == 1) {
r = p;
break L1741;
}
}
p = p + 1 | 0;
q = c[e + (p << 4) >> 2] | 0;
if ((q | 0) == 0) {
break L1739;
}
}
} else {
q = 0;
p = -1;
s = m;
while (1) {
if ((ap(j | 0, s | 0, n | 0) | 0) == 0) {
if ((cM(s | 0) | 0) == (n | 0)) {
r = q;
break L1741;
}
if ((p | 0) == -1) {
t = q;
} else {
break;
}
} else {
t = p;
}
u = q + 1 | 0;
v = c[e + (u << 4) >> 2] | 0;
if ((v | 0) == 0) {
r = t;
break L1741;
} else {
q = u;
p = t;
s = v;
}
}
do {
if ((c[46] | 0) != 0) {
if ((a[d] | 0) == 58) {
break;
}
cx(304, (y = i, i = i + 16 | 0, c[y >> 2] = n, c[y + 8 >> 2] = j, y) | 0);
}
} while (0);
c[42] = 0;
w = 63;
i = h;
return w | 0;
}
} while (0);
if ((r | 0) == -1) {
break;
}
s = e + (r << 4) + 4 | 0;
p = c[s >> 2] | 0;
q = (o | 0) == 0;
if (!((p | 0) != 0 | q)) {
do {
if ((c[46] | 0) != 0) {
if ((a[d] | 0) == 58) {
break;
}
cx(208, (y = i, i = i + 16 | 0, c[y >> 2] = n, c[y + 8 >> 2] = j, y) | 0);
}
} while (0);
if ((c[e + (r << 4) + 8 >> 2] | 0) == 0) {
x = c[e + (r << 4) + 12 >> 2] | 0;
} else {
x = 0;
}
c[42] = x;
w = (a[d] | 0) == 58 ? 58 : 63;
i = h;
return w | 0;
}
do {
if ((p - 1 | 0) >>> 0 < 2) {
if (!q) {
c[198] = o;
break;
}
if ((p | 0) != 1) {
break;
}
c[44] = k + 2;
c[198] = c[b + (l << 2) >> 2];
}
} while (0);
if (!((c[s >> 2] | 0) == 1 & (c[198] | 0) == 0)) {
if ((f | 0) != 0) {
c[f >> 2] = r;
}
p = c[e + (r << 4) + 8 >> 2] | 0;
q = c[e + (r << 4) + 12 >> 2] | 0;
if ((p | 0) == 0) {
w = q;
i = h;
return w | 0;
}
c[p >> 2] = q;
w = 0;
i = h;
return w | 0;
}
do {
if ((c[46] | 0) != 0) {
if ((a[d] | 0) == 58) {
break;
}
cx(8, (y = i, i = i + 8 | 0, c[y >> 2] = j, y) | 0);
}
} while (0);
if ((c[e + (r << 4) + 8 >> 2] | 0) == 0) {
z = c[e + (r << 4) + 12 >> 2] | 0;
} else {
z = 0;
}
c[42] = z;
c[44] = (c[44] | 0) - 1;
w = (a[d] | 0) == 58 ? 58 : 63;
i = h;
return w | 0;
}
} while (0);
if ((g | 0) != 0) {
c[44] = k;
w = -1;
i = h;
return w | 0;
}
do {
if ((c[46] | 0) != 0) {
if ((a[d] | 0) == 58) {
break;
}
cx(248, (y = i, i = i + 8 | 0, c[y >> 2] = j, y) | 0);
}
} while (0);
c[42] = 0;
w = 63;
i = h;
return w | 0;
}
function cw(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0;
d = i;
i = i + 16 | 0;
e = d | 0;
f = e;
c[f >> 2] = b;
c[f + 4 >> 2] = 0;
cy(a, e | 0);
i = d;
return;
}
function cx(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0;
d = i;
i = i + 16 | 0;
e = d | 0;
f = e;
c[f >> 2] = b;
c[f + 4 >> 2] = 0;
cz(a, e | 0);
i = d;
return;
}
function cy(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0, f = 0;
d = i;
e = c[(aX() | 0) >> 2] | 0;
f = c[r >> 2] | 0;
av(c[o >> 2] | 0, 432, (y = i, i = i + 8 | 0, c[y >> 2] = f, y) | 0) | 0;
if ((a | 0) != 0) {
f = c[o >> 2] | 0;
aQ(f | 0, a | 0, b | 0) | 0;
b = c[o >> 2] | 0;
aE(472, 2, 1, b | 0) | 0;
}
b = c[o >> 2] | 0;
a = at(e | 0) | 0;
av(b | 0, 384, (y = i, i = i + 8 | 0, c[y >> 2] = a, y) | 0) | 0;
i = d;
return;
}
function cz(a, b) {
a = a | 0;
b = b | 0;
var d = 0, e = 0;
d = i;
e = c[r >> 2] | 0;
av(c[o >> 2] | 0, 376, (y = i, i = i + 8 | 0, c[y >> 2] = e, y) | 0) | 0;
if ((a | 0) != 0) {
e = c[o >> 2] | 0;
aQ(e | 0, a | 0, b | 0) | 0;
}
aC(10, c[o >> 2] | 0) | 0;
i = d;
return;
}
function cA(b, d) {
b = b | 0;
d = d | 0;
var e = 0, f = 0, g = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0.0, r = 0, s = 0, t = 0, u = 0, v = 0.0, w = 0, x = 0, y = 0, z = 0.0, A = 0.0, B = 0, C = 0, D = 0, E = 0.0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0.0, O = 0, P = 0, Q = 0.0, R = 0.0, S = 0.0;
e = b;
while (1) {
f = e + 1 | 0;
if ((aK(a[e] | 0) | 0) == 0) {
break;
} else {
e = f;
}
}
g = a[e] | 0;
if ((g << 24 >> 24 | 0) == 45) {
i = f;
j = 1;
} else if ((g << 24 >> 24 | 0) == 43) {
i = f;
j = 0;
} else {
i = e;
j = 0;
}
e = -1;
f = 0;
g = i;
while (1) {
k = a[g] | 0;
if (((k << 24 >> 24) - 48 | 0) >>> 0 < 10) {
l = e;
} else {
if (k << 24 >> 24 != 46 | (e | 0) > -1) {
break;
} else {
l = f;
}
}
e = l;
f = f + 1 | 0;
g = g + 1 | 0;
}
l = g + (-f | 0) | 0;
i = (e | 0) < 0;
m = ((i ^ 1) << 31 >> 31) + f | 0;
n = (m | 0) > 18;
o = (n ? -18 : -m | 0) + (i ? f : e) | 0;
e = n ? 18 : m;
do {
if ((e | 0) == 0) {
p = b;
q = 0.0;
} else {
if ((e | 0) > 9) {
m = l;
n = e;
f = 0;
while (1) {
i = a[m] | 0;
r = m + 1 | 0;
if (i << 24 >> 24 == 46) {
s = a[r] | 0;
t = m + 2 | 0;
} else {
s = i;
t = r;
}
u = (f * 10 | 0) - 48 + (s << 24 >> 24) | 0;
r = n - 1 | 0;
if ((r | 0) > 9) {
m = t;
n = r;
f = u;
} else {
break;
}
}
v = +(u | 0) * 1.0e9;
w = 9;
x = t;
y = 1393;
} else {
if ((e | 0) > 0) {
v = 0.0;
w = e;
x = l;
y = 1393;
} else {
z = 0.0;
A = 0.0;
}
}
if ((y | 0) == 1393) {
f = x;
n = w;
m = 0;
while (1) {
r = a[f] | 0;
i = f + 1 | 0;
if (r << 24 >> 24 == 46) {
B = a[i] | 0;
C = f + 2 | 0;
} else {
B = r;
C = i;
}
D = (m * 10 | 0) - 48 + (B << 24 >> 24) | 0;
i = n - 1 | 0;
if ((i | 0) > 0) {
f = C;
n = i;
m = D;
} else {
break;
}
}
z = +(D | 0);
A = v;
}
E = A + z;
do {
if ((k << 24 >> 24 | 0) == 69 | (k << 24 >> 24 | 0) == 101) {
m = g + 1 | 0;
n = a[m] | 0;
if ((n << 24 >> 24 | 0) == 43) {
F = g + 2 | 0;
G = 0;
} else if ((n << 24 >> 24 | 0) == 45) {
F = g + 2 | 0;
G = 1;
} else {
F = m;
G = 0;
}
m = a[F] | 0;
if (((m << 24 >> 24) - 48 | 0) >>> 0 < 10) {
H = F;
I = 0;
J = m;
} else {
K = 0;
L = F;
M = G;
break;
}
while (1) {
m = (I * 10 | 0) - 48 + (J << 24 >> 24) | 0;
n = H + 1 | 0;
f = a[n] | 0;
if (((f << 24 >> 24) - 48 | 0) >>> 0 < 10) {
H = n;
I = m;
J = f;
} else {
K = m;
L = n;
M = G;
break;
}
}
} else {
K = 0;
L = g;
M = 0;
}
} while (0);
n = o + ((M | 0) == 0 ? K : -K | 0) | 0;
m = (n | 0) < 0 ? -n | 0 : n;
if ((m | 0) > 511) {
c[(aX() | 0) >> 2] = 34;
N = 1.0;
O = 88;
P = 511;
y = 1410;
} else {
if ((m | 0) == 0) {
Q = 1.0;
} else {
N = 1.0;
O = 88;
P = m;
y = 1410;
}
}
if ((y | 0) == 1410) {
while (1) {
y = 0;
if ((P & 1 | 0) == 0) {
R = N;
} else {
R = N * +h[O >> 3];
}
m = P >> 1;
if ((m | 0) == 0) {
Q = R;
break;
} else {
N = R;
O = O + 8 | 0;
P = m;
y = 1410;
}
}
}
if ((n | 0) > -1) {
p = L;
q = E * Q;
break;
} else {
p = L;
q = E / Q;
break;
}
}
} while (0);
if ((d | 0) != 0) {
c[d >> 2] = p;
}
if ((j | 0) == 0) {
S = q;
return +S;
}
S = -0.0 - q;
return +S;
}
function cB(a, b) {
a = a | 0;
b = b | 0;
return +(+cA(a, b));
}
function cC(a, b) {
a = a | 0;
b = b | 0;
return +(+cA(a, b));
}
function cD(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
return +(+cA(a, b));
}
function cE(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
return +(+cA(a, b));
}
function cF(a) {
a = a | 0;
return +(+cA(a, 0));
}
function cG(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0;
e = i;
i = i + 16 | 0;
f = e | 0;
e = f;
c[e >> 2] = d;
c[e + 4 >> 2] = 0;
cI(a, b, f | 0);
}
function cH(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0;
e = i;
i = i + 16 | 0;
f = e | 0;
e = f;
c[e >> 2] = d;
c[e + 4 >> 2] = 0;
cJ(a, b, f | 0);
}
function cI(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0, f = 0;
e = c[(aX() | 0) >> 2] | 0;
f = c[r >> 2] | 0;
av(c[o >> 2] | 0, 336, (y = i, i = i + 8 | 0, c[y >> 2] = f, y) | 0) | 0;
if ((b | 0) != 0) {
f = c[o >> 2] | 0;
aQ(f | 0, b | 0, d | 0) | 0;
d = c[o >> 2] | 0;
aE(480, 2, 1, d | 0) | 0;
}
d = c[o >> 2] | 0;
b = at(e | 0) | 0;
av(d | 0, 392, (y = i, i = i + 8 | 0, c[y >> 2] = b, y) | 0) | 0;
aH(a | 0);
}
function cJ(a, b, d) {
a = a | 0;
b = b | 0;
d = d | 0;
var e = 0;
e = c[r >> 2] | 0;
av(c[o >> 2] | 0, 440, (y = i, i = i + 8 | 0, c[y >> 2] = e, y) | 0) | 0;
if ((b | 0) != 0) {
e = c[o >> 2] | 0;
aQ(e | 0, b | 0, d | 0) | 0;
}
aC(10, c[o >> 2] | 0) | 0;
aH(a | 0);
}
function cK(b, d, e) {
b = b | 0;
d = d | 0;
e = e | 0;
var f = 0;
f = b | 0;
if ((b & 3) == (d & 3)) {
while (b & 3) {
if ((e | 0) == 0) return f | 0;
a[b] = a[d] | 0;
b = b + 1 | 0;
d = d + 1 | 0;
e = e - 1 | 0;
}
while ((e | 0) >= 4) {
c[b >> 2] = c[d >> 2];
b = b + 4 | 0;
d = d + 4 | 0;
e = e - 4 | 0;
}
}
while ((e | 0) > 0) {
a[b] = a[d] | 0;
b = b + 1 | 0;
d = d + 1 | 0;
e = e - 1 | 0;
}
return f | 0;
}
function cL(b, d, e) {
b = b | 0;
d = d | 0;
e = e | 0;
var f = 0, g = 0, h = 0;
f = b + e | 0;
if ((e | 0) >= 20) {
d = d & 255;
e = b & 3;
g = d | d << 8 | d << 16 | d << 24;
h = f & ~3;
if (e) {
e = b + 4 - e | 0;
while ((b | 0) < (e | 0)) {
a[b] = d;
b = b + 1 | 0;
}
}
while ((b | 0) < (h | 0)) {
c[b >> 2] = g;
b = b + 4 | 0;
}
}
while ((b | 0) < (f | 0)) {
a[b] = d;
b = b + 1 | 0;
}
}
function cM(b) {
b = b | 0;
var c = 0;
c = b;
while (a[c] | 0) {
c = c + 1 | 0;
}
return c - b | 0;
}
function cN(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0;
e = a + c >>> 0;
return (H = b + d + (e >>> 0 < a >>> 0 | 0) >>> 0, e | 0) | 0;
}
function cO(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0;
e = b - d >>> 0;
e = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;
return (H = e, a - c >>> 0 | 0) | 0;
}
function cP(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
if ((c | 0) < 32) {
H = b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c;
return a << c;
}
H = a << c - 32;
return 0;
}
function cQ(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
if ((c | 0) < 32) {
H = b >>> c;
return a >>> c | (b & (1 << c) - 1) << 32 - c;
}
H = 0;
return b >>> c - 32 | 0;
}
function cR(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
if ((c | 0) < 32) {
H = b >> c;
return a >>> c | (b & (1 << c) - 1) << 32 - c;
}
H = (b | 0) < 0 ? -1 : 0;
return b >> c - 32 | 0;
}
function cS(b) {
b = b | 0;
var c = 0;
c = a[n + (b >>> 24) | 0] | 0;
if ((c | 0) < 8) return c | 0;
c = a[n + (b >> 16 & 255) | 0] | 0;
if ((c | 0) < 8) return c + 8 | 0;
c = a[n + (b >> 8 & 255) | 0] | 0;
if ((c | 0) < 8) return c + 16 | 0;
return (a[n + (b & 255) | 0] | 0) + 24 | 0;
}
function cT(b) {
b = b | 0;
var c = 0;
c = a[m + (b & 255) | 0] | 0;
if ((c | 0) < 8) return c | 0;
c = a[m + (b >> 8 & 255) | 0] | 0;
if ((c | 0) < 8) return c + 8 | 0;
c = a[m + (b >> 16 & 255) | 0] | 0;
if ((c | 0) < 8) return c + 16 | 0;
return (a[m + (b >>> 24) | 0] | 0) + 24 | 0;
}
function cU(a, b) {
a = a | 0;
b = b | 0;
var c = 0, d = 0, e = 0, f = 0;
c = a & 65535;
d = b & 65535;
e = ad(d, c) | 0;
f = a >>> 16;
a = (e >>> 16) + (ad(d, f) | 0) | 0;
d = b >>> 16;
b = ad(d, c) | 0;
return (H = (a >>> 16) + (ad(d, f) | 0) + (((a & 65535) + b | 0) >>> 16) | 0, a + b << 16 | e & 65535 | 0) | 0;
}
function cV(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0, f = 0, g = 0, h = 0, i = 0;
e = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
f = ((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
g = d >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;
h = ((d | 0) < 0 ? -1 : 0) >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;
i = cO(e ^ a, f ^ b, e, f) | 0;
b = H;
a = g ^ e;
e = h ^ f;
f = cO((c_(i, b, cO(g ^ c, h ^ d, g, h) | 0, H, 0) | 0) ^ a, H ^ e, a, e) | 0;
return (H = H, f) | 0;
}
function cW(a, b, d, e) {
a = a | 0;
b = b | 0;
d = d | 0;
e = e | 0;
var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0;
f = i;
i = i + 8 | 0;
g = f | 0;
h = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
j = ((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
k = e >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;
l = ((e | 0) < 0 ? -1 : 0) >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;
m = cO(h ^ a, j ^ b, h, j) | 0;
b = H;
a = cO(k ^ d, l ^ e, k, l) | 0;
c_(m, b, a, H, g) | 0;
a = cO(c[g >> 2] ^ h, c[g + 4 >> 2] ^ j, h, j) | 0;
j = H;
i = f;
return (H = j, a) | 0;
}
function cX(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0, f = 0;
e = a;
a = c;
c = cU(e, a) | 0;
f = H;
return (H = (ad(b, a) | 0) + (ad(d, e) | 0) + f | f & 0, c | 0 | 0) | 0;
}
function cY(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
var e = 0;
e = c_(a, b, c, d, 0) | 0;
return (H = H, e) | 0;
}
function cZ(a, b, d, e) {
a = a | 0;
b = b | 0;
d = d | 0;
e = e | 0;
var f = 0, g = 0;
f = i;
i = i + 8 | 0;
g = f | 0;
c_(a, b, d, e, g) | 0;
i = f;
return (H = c[g + 4 >> 2] | 0, c[g >> 2] | 0) | 0;
}
function c_(a, b, d, e, f) {
a = a | 0;
b = b | 0;
d = d | 0;
e = e | 0;
f = f | 0;
var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, I = 0, J = 0, K = 0, L = 0, M = 0;
g = a;
h = b;
i = h;
j = d;
k = e;
l = k;
if ((i | 0) == 0) {
m = (f | 0) != 0;
if ((l | 0) == 0) {
if (m) {
c[f >> 2] = (g >>> 0) % (j >>> 0);
c[f + 4 >> 2] = 0;
}
n = 0;
o = (g >>> 0) / (j >>> 0) >>> 0;
return (H = n, o) | 0;
} else {
if (!m) {
n = 0;
o = 0;
return (H = n, o) | 0;
}
c[f >> 2] = a | 0;
c[f + 4 >> 2] = b & 0;
n = 0;
o = 0;
return (H = n, o) | 0;
}
}
m = (l | 0) == 0;
do {
if ((j | 0) == 0) {
if (m) {
if ((f | 0) != 0) {
c[f >> 2] = (i >>> 0) % (j >>> 0);
c[f + 4 >> 2] = 0;
}
n = 0;
o = (i >>> 0) / (j >>> 0) >>> 0;
return (H = n, o) | 0;
}
if ((g | 0) == 0) {
if ((f | 0) != 0) {
c[f >> 2] = 0;
c[f + 4 >> 2] = (i >>> 0) % (l >>> 0);
}
n = 0;
o = (i >>> 0) / (l >>> 0) >>> 0;
return (H = n, o) | 0;
}
p = l - 1 | 0;
if ((p & l | 0) == 0) {
if ((f | 0) != 0) {
c[f >> 2] = a | 0;
c[f + 4 >> 2] = p & i | b & 0;
}
n = 0;
o = i >>> ((cT(l | 0) | 0) >>> 0);
return (H = n, o) | 0;
}
p = (cS(l | 0) | 0) - (cS(i | 0) | 0) | 0;
if (p >>> 0 <= 30) {
q = p + 1 | 0;
r = 31 - p | 0;
s = q;
t = i << r | g >>> (q >>> 0);
u = i >>> (q >>> 0);
v = 0;
w = g << r;
break;
}
if ((f | 0) == 0) {
n = 0;
o = 0;
return (H = n, o) | 0;
}
c[f >> 2] = a | 0;
c[f + 4 >> 2] = h | b & 0;
n = 0;
o = 0;
return (H = n, o) | 0;
} else {
if (!m) {
r = (cS(l | 0) | 0) - (cS(i | 0) | 0) | 0;
if (r >>> 0 <= 31) {
q = r + 1 | 0;
p = 31 - r | 0;
x = r - 31 >> 31;
s = q;
t = g >>> (q >>> 0) & x | i << p;
u = i >>> (q >>> 0) & x;
v = 0;
w = g << p;
break;
}
if ((f | 0) == 0) {
n = 0;
o = 0;
return (H = n, o) | 0;
}
c[f >> 2] = a | 0;
c[f + 4 >> 2] = h | b & 0;
n = 0;
o = 0;
return (H = n, o) | 0;
}
p = j - 1 | 0;
if ((p & j | 0) != 0) {
x = (cS(j | 0) | 0) + 33 - (cS(i | 0) | 0) | 0;
q = 64 - x | 0;
r = 32 - x | 0;
y = r >> 31;
z = x - 32 | 0;
A = z >> 31;
s = x;
t = r - 1 >> 31 & i >>> (z >>> 0) | (i << r | g >>> (x >>> 0)) & A;
u = A & i >>> (x >>> 0);
v = g << q & y;
w = (i << q | g >>> (z >>> 0)) & y | g << r & x - 33 >> 31;
break;
}
if ((f | 0) != 0) {
c[f >> 2] = p & g;
c[f + 4 >> 2] = 0;
}
if ((j | 0) == 1) {
n = h | b & 0;
o = a | 0 | 0;
return (H = n, o) | 0;
} else {
p = cT(j | 0) | 0;
n = i >>> (p >>> 0) | 0;
o = i << 32 - p | g >>> (p >>> 0) | 0;
return (H = n, o) | 0;
}
}
} while (0);
if ((s | 0) == 0) {
B = w;
C = v;
D = u;
E = t;
F = 0;
G = 0;
} else {
g = d | 0 | 0;
d = k | e & 0;
e = cN(g, d, -1, -1) | 0;
k = H;
i = w;
w = v;
v = u;
u = t;
t = s;
s = 0;
while (1) {
I = w >>> 31 | i << 1;
J = s | w << 1;
j = u << 1 | i >>> 31 | 0;
a = u >>> 31 | v << 1 | 0;
cO(e, k, j, a) | 0;
b = H;
h = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
K = h & 1;
L = cO(j, a, h & g, (((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1) & d) | 0;
M = H;
b = t - 1 | 0;
if ((b | 0) == 0) {
break;
} else {
i = I;
w = J;
v = M;
u = L;
t = b;
s = K;
}
}
B = I;
C = J;
D = M;
E = L;
F = 0;
G = K;
}
K = C;
C = 0;
if ((f | 0) != 0) {
c[f >> 2] = E;
c[f + 4 >> 2] = D;
}
n = (K | 0) >>> 31 | (B | C) << 1 | (C << 1 | K >>> 31) & 0 | F;
o = (K << 1 | 0 >>> 31) & -2 | G;
return (H = n, o) | 0;
}
function c$(a, b) {
a = a | 0;
b = b | 0;
a1[a & 15](b | 0);
}
function c0(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
a2[a & 15](b | 0, c | 0);
}
function c1(a, b) {
a = a | 0;
b = b | 0;
return a3[a & 7](b | 0) | 0;
}
function c2(a, b, c, d) {
a = a | 0;
b = b | 0;
c = c | 0;
d = d | 0;
a4[a & 15](b | 0, c | 0, d | 0);
}
function c3(a) {
a = a | 0;
a5[a & 1]();
}
function c4(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
return a6[a & 1](b | 0, c | 0) | 0;
}
function c5(a) {
a = a | 0;
ae(0);
}
function c6(a, b) {
a = a | 0;
b = b | 0;
ae(1);
}
function c7(a) {
a = a | 0;
ae(2);
return 0;
}
function c8(a, b, c) {
a = a | 0;
b = b | 0;
c = c | 0;
ae(3);
}
function c9() {
ae(4);
}
function da(a, b) {
a = a | 0;
b = b | 0;
ae(5);
return 0;
}
// EMSCRIPTEN_END_FUNCS
var a1 = [ c5, c5, ch, c5, cn, c5, cc, c5, cg, c5, cm, c5, c5, c5, c5, c5 ];
var a2 = [ c6, c6, cw, c6, cy, c6, cx, c6, cz, c6, c6, c6, c6, c6, c6, c6 ];
var a3 = [ c7, c7, cd, c7, ce, c7, c7, c7 ];
var a4 = [ c8, c8, cJ, c8, cI, c8, cG, c8, cH, c8, c8, c8, c8, c8, c8, c8 ];
var a5 = [ c9, c9 ];
var a6 = [ da, da ];
return {
_crypto_scrypt: bu,
_strlen: cM,
_free: bM,
_realloc: bO,
_memset: cL,
_malloc: bL,
_memcpy: cK,
_calloc: bN,
runPostSets: bn,
stackAlloc: a7,
stackSave: a8,
stackRestore: a9,
setThrew: ba,
setTempRet0: bd,
setTempRet1: be,
setTempRet2: bf,
setTempRet3: bg,
setTempRet4: bh,
setTempRet5: bi,
setTempRet6: bj,
setTempRet7: bk,
setTempRet8: bl,
setTempRet9: bm,
dynCall_vi: c$,
dynCall_vii: c0,
dynCall_ii: c1,
dynCall_viii: c2,
dynCall_v: c3,
dynCall_iii: c4
};
// EMSCRIPTEN_END_ASM
})({Math:Math, Int8Array:Int8Array, Int16Array:Int16Array, Int32Array:Int32Array, Uint8Array:Uint8Array, Uint16Array:Uint16Array, Uint32Array:Uint32Array, Float32Array:Float32Array, Float64Array:Float64Array}, {abort:wa, assert:w, asmPrintInt:function(a, b) {
s.print("int " + a + "," + b)
}, asmPrintFloat:function(a, b) {
s.print("float " + a + "," + b)
}, min:Xc, invoke_vi:function(a, b) {
try {
s.dynCall_vi(a, b)
}catch(c) {
"number" !== typeof c && "longjmp" !== c && g(c), V.setThrew(1, 0)
}
}, invoke_vii:function(a, b, c) {
try {
s.dynCall_vii(a, b, c)
}catch(d) {
"number" !== typeof d && "longjmp" !== d && g(d), V.setThrew(1, 0)
}
}, invoke_ii:function(a, b) {
try {
return s.dynCall_ii(a, b)
}catch(c) {
"number" !== typeof c && "longjmp" !== c && g(c), V.setThrew(1, 0)
}
}, invoke_viii:function(a, b, c, d) {
try {
s.dynCall_viii(a, b, c, d)
}catch(e) {
"number" !== typeof e && "longjmp" !== e && g(e), V.setThrew(1, 0)
}
}, invoke_v:function(a) {
try {
s.dynCall_v(a)
}catch(b) {
"number" !== typeof b && "longjmp" !== b && g(b), V.setThrew(1, 0)
}
}, invoke_iii:function(a, b, c) {
try {
return s.dynCall_iii(a, b, c)
}catch(d) {
"number" !== typeof d && "longjmp" !== d && g(d), V.setThrew(1, 0)
}
}, _strncmp:function(a, b, c) {
for(var d = 0;d < c;) {
var e = G[a + d | 0], f = G[b + d | 0];
if(e == f && 0 == e) {
break
}
if(0 == e) {
return-1
}
if(0 == f) {
return 1
}
if(e == f) {
d++
}else {
return e > f ? 1 : -1
}
}
return 0
}, _llvm_va_end:aa(), _sysconf:function(a) {
switch(a) {
case 8:
return 4096;
case 54:
;
case 56:
;
case 21:
;
case 61:
;
case 63:
;
case 22:
;
case 67:
;
case 23:
;
case 24:
;
case 25:
;
case 26:
;
case 27:
;
case 69:
;
case 28:
;
case 101:
;
case 70:
;
case 71:
;
case 29:
;
case 30:
;
case 199:
;
case 75:
;
case 76:
;
case 32:
;
case 43:
;
case 44:
;
case 80:
;
case 46:
;
case 47:
;
case 45:
;
case 48:
;
case 49:
;
case 42:
;
case 82:
;
case 33:
;
case 7:
;
case 108:
;
case 109:
;
case 107:
;
case 112:
;
case 119:
;
case 121:
return 200809;
case 13:
;
case 104:
;
case 94:
;
case 95:
;
case 34:
;
case 35:
;
case 77:
;
case 81:
;
case 83:
;
case 84:
;
case 85:
;
case 86:
;
case 87:
;
case 88:
;
case 89:
;
case 90:
;
case 91:
;
case 94:
;
case 95:
;
case 110:
;
case 111:
;
case 113:
;
case 114:
;
case 115:
;
case 116:
;
case 117:
;
case 118:
;
case 120:
;
case 40:
;
case 16:
;
case 79:
;
case 19:
return-1;
case 92:
;
case 93:
;
case 5:
;
case 72:
;
case 6:
;
case 74:
;
case 92:
;
case 93:
;
case 96:
;
case 97:
;
case 98:
;
case 99:
;
case 102:
;
case 103:
;
case 105:
return 1;
case 38:
;
case 66:
;
case 50:
;
case 51:
;
case 4:
return 1024;
case 15:
;
case 64:
;
case 41:
return 32;
case 55:
;
case 37:
;
case 17:
return 2147483647;
case 18:
;
case 1:
return 47839;
case 59:
;
case 57:
return 99;
case 68:
;
case 58:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 14:
return 32768;
case 73:
return 32767;
case 39:
return 16384;
case 60:
return 1E3;
case 106:
return 700;
case 52:
return 256;
case 62:
return 255;
case 2:
return 100;
case 65:
return 64;
case 36:
return 20;
case 100:
return 16;
case 20:
return 6;
case 53:
return 4;
case 10:
return 1
}
M(N.A);
return-1
}, ___cxa_throw:rc, _strerror:zc, _abort:function() {
s.abort()
}, _fprintf:mc, _llvm_eh_exception:U, ___cxa_free_exception:sc, _fflush:aa(), ___buildEnvironment:wc, __reallyNegative:jc, _strchr:function(a, b) {
a--;
do {
a++;
var c = A[a];
if(c == b) {
return a
}
}while(c);
return 0
}, _fputc:Bc, ___setErrNo:M, _fwrite:hc, _send:fc, _write:gc, _exit:function(a) {
Ac(a)
}, ___cxa_find_matching_catch:function(a, b) {
-1 == a && (a = B[U.m >> 2]);
-1 == b && (b = B[U.m + 4 >> 2]);
var c = Array.prototype.slice.call(arguments, 2);
0 != b && !pc(b) && 0 == B[B[b >> 2] - 8 >> 2] && (a = B[a >> 2]);
for(var d = 0;d < c.length;d++) {
if(qc(c[d], b, a)) {
return(V.setTempRet0(c[d]), a) | 0
}
}
return(V.setTempRet0(b), a) | 0
}, ___cxa_allocate_exception:function(a) {
return Oa(a)
}, _isspace:function(a) {
return 32 == a || 9 <= a && 13 >= a
}, __formatString:kc, ___resumeException:function(a) {
0 == B[U.m >> 2] && (B[U.m >> 2] = a);
g(a + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.")
}, _llvm_uadd_with_overflow_i32:function(a, b) {
a >>>= 0;
b >>>= 0;
return(V.setTempRet0(4294967295 < a + b), a + b >>> 0) | 0
}, ___cxa_does_inherit:qc, _getenv:xc, _vfprintf:function(a, b, c) {
return mc(a, b, B[c >> 2])
}, ___cxa_begin_catch:function(a) {
oc.ta--;
return a
}, __ZSt18uncaught_exceptionv:oc, _pwrite:function(a, b, c, d) {
a = R[a];
if(!a) {
return M(N.$), -1
}
try {
return Ib(a, A, b, c, d)
}catch(e) {
return Zb(e), -1
}
}, ___cxa_call_unexpected:function(a) {
s.P("Unexpected exception thrown, this is not properly supported - aborting");
za = l;
g(a)
}, _sbrk:nc, _strerror_r:yc, ___errno_location:function() {
return rb
}, ___gxx_personality_v0:aa(), ___cxa_is_number_type:pc, _time:function(a) {
var b = Math.floor(Date.now() / 1E3);
a && (B[a >> 2] = b);
return b
}, __exit:Ac, ___cxa_end_catch:uc, STACKTOP:u, STACK_MAX:Ta, tempDoublePtr:qb, ABORT:za, cttz_i8:Wc, ctlz_i8:Vc, NaN:NaN, Infinity:Infinity, _stderr:nb, __ZTVN10__cxxabiv120__si_class_type_infoE:ob, __ZTVN10__cxxabiv117__class_type_infoE:pb, ___progname:k}, I);
s._crypto_scrypt = V._crypto_scrypt;
var ic = s._strlen = V._strlen, tc = s._free = V._free;
s._realloc = V._realloc;
var tb = s._memset = V._memset, Oa = s._malloc = V._malloc, sb = s._memcpy = V._memcpy;
s._calloc = V._calloc;
var mb = s.runPostSets = V.runPostSets;
s.dynCall_vi = V.dynCall_vi;
s.dynCall_vii = V.dynCall_vii;
s.dynCall_ii = V.dynCall_ii;
s.dynCall_viii = V.dynCall_viii;
s.dynCall_v = V.dynCall_v;
s.dynCall_iii = V.dynCall_iii;
var qa = function(a) {
return V.stackAlloc(a)
}, ja = function() {
return V.stackSave()
}, ka = function(a) {
V.stackRestore(a)
}, lc;
function X(a, b) {
a != m && ("number" == typeof a ? this.p(a) : b == m && "string" != typeof a ? this.k(a, 256) : this.k(a, b))
}
function Yc() {
return new X(m)
}
function Zc(a, b) {
var c = $c[a.charCodeAt(b)];
return c == m ? -1 : c
}
function ad(a) {
var b = Yc();
b.D(a);
return b
}
function Y(a, b) {
this.h = a | 0;
this.j = b | 0
}
Y.Ca = {};
Y.D = function(a) {
if(-128 <= a && 128 > a) {
var b = Y.Ca[a];
if(b) {
return b
}
}
b = new Y(a | 0, 0 > a ? -1 : 0);
-128 <= a && 128 > a && (Y.Ca[a] = b);
return b
};
Y.p = function(a) {
return isNaN(a) || !isFinite(a) ? Y.ZERO : a <= -Y.Ea ? Y.MIN_VALUE : a + 1 >= Y.Ea ? Y.MAX_VALUE : 0 > a ? Y.p(-a).i() : new Y(a % Y.B | 0, a / Y.B | 0)
};
Y.v = function(a, b) {
return new Y(a, b)
};
Y.k = function(a, b) {
0 == a.length && g(Error("number format error: empty string"));
var c = b || 10;
(2 > c || 36 < c) && g(Error("radix out of range: " + c));
if("-" == a.charAt(0)) {
return Y.k(a.substring(1), c).i()
}
0 <= a.indexOf("-") && g(Error('number format error: interior "-" character: ' + a));
for(var d = Y.p(Math.pow(c, 8)), e = Y.ZERO, f = 0;f < a.length;f += 8) {
var h = Math.min(8, a.length - f), i = parseInt(a.substring(f, f + h), c);
8 > h ? (h = Y.p(Math.pow(c, h)), e = e.multiply(h).add(Y.p(i))) : (e = e.multiply(d), e = e.add(Y.p(i)))
}
return e
};
Y.ea = 65536;
Y.Od = 16777216;
Y.B = Y.ea * Y.ea;
Y.Pd = Y.B / 2;
Y.Qd = Y.B * Y.ea;
Y.eb = Y.B * Y.B;
Y.Ea = Y.eb / 2;
Y.ZERO = Y.D(0);
Y.ONE = Y.D(1);
Y.Da = Y.D(-1);
Y.MAX_VALUE = Y.v(-1, 2147483647);
Y.MIN_VALUE = Y.v(0, -2147483648);
Y.cb = Y.D(16777216);
q = Y.prototype;
q.Z = function() {
return this.j * Y.B + this.ob()
};
q.toString = function(a) {
a = a || 10;
(2 > a || 36 < a) && g(Error("radix out of range: " + a));
if(this.G()) {
return"0"
}
if(this.n()) {
if(this.o(Y.MIN_VALUE)) {
var b = Y.p(a), c = this.F(b), b = c.multiply(b).R(this);
return c.toString(a) + b.h.toString(a)
}
return"-" + this.i().toString(a)
}
for(var c = Y.p(Math.pow(a, 6)), b = this, d = "";;) {
var e = b.F(c), f = b.R(e.multiply(c)).h.toString(a), b = e;
if(b.G()) {
return f + d
}
for(;6 > f.length;) {
f = "0" + f
}
d = "" + f + d
}
};
q.ob = function() {
return 0 <= this.h ? this.h : Y.B + this.h
};
q.G = function() {
return 0 == this.j && 0 == this.h
};
q.n = function() {
return 0 > this.j
};
q.Pa = function() {
return 1 == (this.h & 1)
};
q.o = function(a) {
return this.j == a.j && this.h == a.h
};
q.Ra = function() {
return 0 > this.ja(Y.cb)
};
q.qb = function(a) {
return 0 < this.ja(a)
};
q.rb = function(a) {
return 0 <= this.ja(a)
};
q.ja = function(a) {
if(this.o(a)) {
return 0
}
var b = this.n(), c = a.n();
return b && !c ? -1 : !b && c ? 1 : this.R(a).n() ? -1 : 1
};
q.i = function() {
return this.o(Y.MIN_VALUE) ? Y.MIN_VALUE : this.xb().add(Y.ONE)
};
q.add = function(a) {
var b = this.j >>> 16, c = this.j & 65535, d = this.h >>> 16, e = a.j >>> 16, f = a.j & 65535, h = a.h >>> 16, i;
i = 0 + ((this.h & 65535) + (a.h & 65535));
a = 0 + (i >>> 16);
a += d + h;
d = 0 + (a >>> 16);
d += c + f;
c = 0 + (d >>> 16);
c = c + (b + e) & 65535;
return Y.v((a & 65535) << 16 | i & 65535, c << 16 | d & 65535)
};
q.R = function(a) {
return this.add(a.i())
};
q.multiply = function(a) {
if(this.G() || a.G()) {
return Y.ZERO
}
if(this.o(Y.MIN_VALUE)) {
return a.Pa() ? Y.MIN_VALUE : Y.ZERO
}
if(a.o(Y.MIN_VALUE)) {
return this.Pa() ? Y.MIN_VALUE : Y.ZERO
}
if(this.n()) {
return a.n() ? this.i().multiply(a.i()) : this.i().multiply(a).i()
}
if(a.n()) {
return this.multiply(a.i()).i()
}
if(this.Ra() && a.Ra()) {
return Y.p(this.Z() * a.Z())
}
var b = this.j >>> 16, c = this.j & 65535, d = this.h >>> 16, e = this.h & 65535, f = a.j >>> 16, h = a.j & 65535, i = a.h >>> 16, a = a.h & 65535, j, n, y, v;
v = 0 + e * a;
y = 0 + (v >>> 16);
y += d * a;
n = 0 + (y >>> 16);
y = (y & 65535) + e * i;
n += y >>> 16;
y &= 65535;
n += c * a;
j = 0 + (n >>> 16);
n = (n & 65535) + d * i;
j += n >>> 16;
n &= 65535;
n += e * h;
j += n >>> 16;
n &= 65535;
j = j + (b * a + c * i + d * h + e * f) & 65535;
return Y.v(y << 16 | v & 65535, j << 16 | n)
};
q.F = function(a) {
a.G() && g(Error("division by zero"));
if(this.G()) {
return Y.ZERO
}
if(this.o(Y.MIN_VALUE)) {
if(a.o(Y.ONE) || a.o(Y.Da)) {
return Y.MIN_VALUE
}
if(a.o(Y.MIN_VALUE)) {
return Y.ONE
}
var b = this.Db().F(a).shiftLeft(1);
if(b.o(Y.ZERO)) {
return a.n() ? Y.ONE : Y.Da
}
var c = this.R(a.multiply(b));
return b.add(c.F(a))
}
if(a.o(Y.MIN_VALUE)) {
return Y.ZERO
}
if(this.n()) {
return a.n() ? this.i().F(a.i()) : this.i().F(a).i()
}
if(a.n()) {
return this.F(a.i()).i()
}
for(var d = Y.ZERO, c = this;c.rb(a);) {
for(var b = Math.max(1, Math.floor(c.Z() / a.Z())), e = Math.ceil(Math.log(b) / Math.LN2), e = 48 >= e ? 1 : Math.pow(2, e - 48), f = Y.p(b), h = f.multiply(a);h.n() || h.qb(c);) {
b -= e, f = Y.p(b), h = f.multiply(a)
}
f.G() && (f = Y.ONE);
d = d.add(f);
c = c.R(h)
}
return d
};
q.xb = function() {
return Y.v(~this.h, ~this.j)
};
q.shiftLeft = function(a) {
a &= 63;
if(0 == a) {
return this
}
var b = this.h;
return 32 > a ? Y.v(b << a, this.j << a | b >>> 32 - a) : Y.v(0, b << a - 32)
};
q.Db = function() {
var a;
a = 1;
if(0 == a) {
return this
}
var b = this.j;
return 32 > a ? Y.v(this.h >>> a | b << 32 - a, b >> a) : Y.v(b >> a - 32, 0 <= b ? 0 : -1)
};
q = X.prototype;
q.ga = function(a, b, c, d) {
for(var e = 0, f = 0;0 <= --d;) {
var h = a * this[e++] + b[c] + f, f = Math.floor(h / 67108864);
b[c++] = h & 67108863
}
return f
};
q.f = 26;
q.u = 67108863;
q.K = 67108864;
q.bb = Math.pow(2, 52);
q.Aa = 26;
q.Ba = 0;
var $c = [], bd, Z;
bd = 48;
for(Z = 0;9 >= Z;++Z) {
$c[bd++] = Z
}
bd = 97;
for(Z = 10;36 > Z;++Z) {
$c[bd++] = Z
}
bd = 65;
for(Z = 10;36 > Z;++Z) {
$c[bd++] = Z
}
q = X.prototype;
q.copyTo = function(a) {
for(var b = this.b - 1;0 <= b;--b) {
a[b] = this[b]
}
a.b = this.b;
a.c = this.c
};
q.D = function(a) {
this.b = 1;
this.c = 0 > a ? -1 : 0;
0 < a ? this[0] = a : -1 > a ? this[0] = a + DV : this.b = 0
};
q.k = function(a, b) {
var c;
if(16 == b) {
c = 4
}else {
if(8 == b) {
c = 3
}else {
if(256 == b) {
c = 8
}else {
if(2 == b) {
c = 1
}else {
if(32 == b) {
c = 5
}else {
if(4 == b) {
c = 2
}else {
this.nb(a, b);
return
}
}
}
}
}
}
this.c = this.b = 0;
for(var d = a.length, e = p, f = 0;0 <= --d;) {
var h = 8 == c ? a[d] & 255 : Zc(a, d);
0 > h ? "-" == a.charAt(d) && (e = l) : (e = p, 0 == f ? this[this.b++] = h : f + c > this.f ? (this[this.b - 1] |= (h & (1 << this.f - f) - 1) << f, this[this.b++] = h >> this.f - f) : this[this.b - 1] |= h << f, f += c, f >= this.f && (f -= this.f))
}
8 == c && 0 != (a[0] & 128) && (this.c = -1, 0 < f && (this[this.b - 1] |= (1 << this.f - f) - 1 << f));
this.C();
e && X.ZERO.t(this, this)
};
q.C = function() {
for(var a = this.c & this.u;0 < this.b && this[this.b - 1] == a;) {
--this.b
}
};
q.la = function(a, b) {
var c;
for(c = this.b - 1;0 <= c;--c) {
b[c + a] = this[c]
}
for(c = a - 1;0 <= c;--c) {
b[c] = 0
}
b.b = this.b + a;
b.c = this.c
};
q.jb = function(a, b) {
for(var c = a;c < this.b;++c) {
b[c - a] = this[c]
}
b.b = Math.max(this.b - a, 0);
b.c = this.c
};
q.Qa = function(a, b) {
var c = a % this.f, d = this.f - c, e = (1 << d) - 1, f = Math.floor(a / this.f), h = this.c << c & this.u, i;
for(i = this.b - 1;0 <= i;--i) {
b[i + f + 1] = this[i] >> d | h, h = (this[i] & e) << c
}
for(i = f - 1;0 <= i;--i) {
b[i] = 0
}
b[f] = h;
b.b = this.b + f + 1;
b.c = this.c;
b.C()
};
q.zb = function(a, b) {
b.c = this.c;
var c = Math.floor(a / this.f);
if(c >= this.b) {
b.b = 0
}else {
var d = a % this.f, e = this.f - d, f = (1 << d) - 1;
b[0] = this[c] >> d;
for(var h = c + 1;h < this.b;++h) {
b[h - c - 1] |= (this[h] & f) << e, b[h - c] = this[h] >> d
}
0 < d && (b[this.b - c - 1] |= (this.c & f) << e);
b.b = this.b - c;
b.C()
}
};
q.t = function(a, b) {
for(var c = 0, d = 0, e = Math.min(a.b, this.b);c < e;) {
d += this[c] - a[c], b[c++] = d & this.u, d >>= this.f
}
if(a.b < this.b) {
for(d -= a.c;c < this.b;) {
d += this[c], b[c++] = d & this.u, d >>= this.f
}
d += this.c
}else {
for(d += this.c;c < a.b;) {
d -= a[c], b[c++] = d & this.u, d >>= this.f
}
d -= a.c
}
b.c = 0 > d ? -1 : 0;
-1 > d ? b[c++] = this.K + d : 0 < d && (b[c++] = d);
b.b = c;
b.C()
};
q.vb = function(a) {
var b = $.Xa, c = this.abs(), d = b.abs(), e = c.b;
for(a.b = e + d.b;0 <= --e;) {
a[e] = 0
}
for(e = 0;e < d.b;++e) {
a[e + c.b] = c.ga(d[e], a, e, c.b)
}
a.c = 0;
a.C();
this.c != b.c && X.ZERO.t(a, a)
};
q.Ja = function(a, b, c) {
var d = a.abs();
if(!(0 >= d.b)) {
var e = this.abs();
if(e.b < d.b) {
b != m && b.D(0), c != m && this.copyTo(c)
}else {
c == m && (c = Yc());
var f = Yc(), h = this.c, a = a.c, i = d[d.b - 1], j = 1, n;
if(0 != (n = i >>> 16)) {
i = n, j += 16
}
if(0 != (n = i >> 8)) {
i = n, j += 8
}
if(0 != (n = i >> 4)) {
i = n, j += 4
}
if(0 != (n = i >> 2)) {
i = n, j += 2
}
0 != i >> 1 && (j += 1);
i = this.f - j;
0 < i ? (d.Qa(i, f), e.Qa(i, c)) : (d.copyTo(f), e.copyTo(c));
d = f.b;
e = f[d - 1];
if(0 != e) {
n = e * (1 << this.Aa) + (1 < d ? f[d - 2] >> this.Ba : 0);
j = this.bb / n;
n = (1 << this.Aa) / n;
var y = 1 << this.Ba, v = c.b, C = v - d, D = b == m ? Yc() : b;
f.la(C, D);
0 <= c.U(D) && (c[c.b++] = 1, c.t(D, c));
X.ONE.la(d, D);
for(D.t(f, f);f.b < d;) {
f[f.b++] = 0
}
for(;0 <= --C;) {
var K = c[--v] == e ? this.u : Math.floor(c[v] * j + (c[v - 1] + y) * n);
if((c[v] += f.ga(K, c, C, d)) < K) {
f.la(C, D);
for(c.t(D, c);c[v] < --K;) {
c.t(D, c)
}
}
}
b != m && (c.jb(d, b), h != a && X.ZERO.t(b, b));
c.b = d;
c.C();
0 < i && c.zb(i, c);
0 > h && X.ZERO.t(c, c)
}
}
}
};
q.toString = function(a) {
if(0 > this.c) {
return"-" + this.i().toString(a)
}
if(16 == a) {
a = 4
}else {
if(8 == a) {
a = 3
}else {
if(2 == a) {
a = 1
}else {
if(32 == a) {
a = 5
}else {
if(4 == a) {
a = 2
}else {
return this.Fb(a)
}
}
}
}
}
var b = (1 << a) - 1, c, d = p, e = "", f = this.b, h = this.f - f * this.f % a;
if(0 < f--) {
if(h < this.f && 0 < (c = this[f] >> h)) {
d = l, e = "0123456789abcdefghijklmnopqrstuvwxyz".charAt(c)
}
for(;0 <= f;) {
h < a ? (c = (this[f] & (1 << h) - 1) << a - h, c |= this[--f] >> (h += this.f - a)) : (c = this[f] >> (h -= a) & b, 0 >= h && (h += this.f, --f)), 0 < c && (d = l), d && (e += "0123456789abcdefghijklmnopqrstuvwxyz".charAt(c))
}
}
return d ? e : "0"
};
q.i = function() {
var a = Yc();
X.ZERO.t(this, a);
return a
};
q.abs = function() {
return 0 > this.c ? this.i() : this
};
q.U = function(a) {
var b = this.c - a.c;
if(0 != b) {
return b
}
var c = this.b, b = c - a.b;
if(0 != b) {
return 0 > this.c ? -b : b
}
for(;0 <= --c;) {
if(0 != (b = this[c] - a[c])) {
return b
}
}
return 0
};
X.ZERO = ad(0);
X.ONE = ad(1);
q = X.prototype;
q.nb = function(a, b) {
this.D(0);
b == m && (b = 10);
for(var c = this.S(b), d = Math.pow(b, c), e = p, f = 0, h = 0, i = 0;i < a.length;++i) {
var j = Zc(a, i);
0 > j ? "-" == a.charAt(i) && 0 == this.ra() && (e = l) : (h = b * h + j, ++f >= c && (this.Ia(d), this.Ha(h), h = f = 0))
}
0 < f && (this.Ia(Math.pow(b, f)), this.Ha(h));
e && X.ZERO.t(this, this)
};
q.S = function(a) {
return Math.floor(Math.LN2 * this.f / Math.log(a))
};
q.ra = function() {
return 0 > this.c ? -1 : 0 >= this.b || 1 == this.b && 0 >= this[0] ? 0 : 1
};
q.Ia = function(a) {
this[this.b] = this.ga(a - 1, this, 0, this.b);
++this.b;
this.C()
};
q.Ha = function(a) {
var b = 0;
if(0 != a) {
for(;this.b <= b;) {
this[this.b++] = 0
}
for(this[b] += a;this[b] >= this.K;) {
this[b] -= this.K, ++b >= this.b && (this[this.b++] = 0), ++this[b]
}
}
};
q.Fb = function(a) {
a == m && (a = 10);
if(0 == this.ra() || 2 > a || 36 < a) {
return"0"
}
var b = this.S(a), b = Math.pow(a, b), c = ad(b), d = Yc(), e = Yc(), f = "";
for(this.Ja(c, d, e);0 < d.ra();) {
f = (b + e.Oa()).toString(a).substr(1) + f, d.Ja(c, d, e)
}
return e.Oa().toString(a) + f
};
q.Oa = function() {
if(0 > this.c) {
if(1 == this.b) {
return this[0] - this.K
}
if(0 == this.b) {
return-1
}
}else {
if(1 == this.b) {
return this[0]
}
if(0 == this.b) {
return 0
}
}
return(this[1] & (1 << 32 - this.f) - 1) << this.f | this[0]
};
q.fa = function(a, b) {
for(var c = 0, d = 0, e = Math.min(a.b, this.b);c < e;) {
d += this[c] + a[c], b[c++] = d & this.u, d >>= this.f
}
if(a.b < this.b) {
for(d += a.c;c < this.b;) {
d += this[c], b[c++] = d & this.u, d >>= this.f
}
d += this.c
}else {
for(d += this.c;c < a.b;) {
d += a[c], b[c++] = d & this.u, d >>= this.f
}
d += a.c
}
b.c = 0 > d ? -1 : 0;
0 < d ? b[c++] = d : -1 > d && (b[c++] = this.K + d);
b.b = c;
b.C()
};
var $ = {abs:function(a, b) {
var c = new Y(a, b), c = c.n() ? c.i() : c;
B[qb >> 2] = c.h;
B[qb + 4 >> 2] = c.j
}, Ka:function() {
$.kb || ($.kb = l, $.Xa = new X, $.Xa.k("4294967296", 10), $.sa = new X, $.sa.k("18446744073709551616", 10), $.xe = new X, $.ye = new X)
}, me:function(a, b) {
var c = new X;
c.k(b.toString(), 10);
var d = new X;
c.vb(d);
c = new X;
c.k(a.toString(), 10);
var e = new X;
c.fa(d, e);
return e
}, stringify:function(a, b, c) {
a = (new Y(a, b)).toString();
c && "-" == a[0] && ($.Ka(), c = new X, c.k(a, 10), a = new X, $.sa.fa(c, a), a = a.toString(10));
return a
}, k:function(a, b, c, d, e) {
$.Ka();
var f = new X;
f.k(a, b);
a = new X;
a.k(c, 10);
c = new X;
c.k(d, 10);
e && 0 > f.U(X.ZERO) && (d = new X, f.fa($.sa, d), f = d);
d = p;
0 > f.U(a) ? (f = a, d = l) : 0 < f.U(c) && (f = c, d = l);
f = Y.k(f.toString());
B[qb >> 2] = f.h;
B[qb + 4 >> 2] = f.j;
d && g("range error")
}};
lc = $;
var cd, dd;
s.callMain = s.$d = function(a) {
function b() {
for(var a = 0;3 > a;a++) {
d.push(0)
}
}
w(0 == L, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
w(0 == Wa.length, "cannot call main when preRun functions remain to be called");
a = a || [];
ab || (ab = l, Va(Xa));
var c = a.length + 1, d = [F(J("/bin/this.program"), "i8", Ka)];
b();
for(var e = 0;e < c - 1;e += 1) {
d.push(F(J(a[e]), "i8", Ka)), b()
}
d.push(0);
d = F(d, "i32", Ka);
cd = u;
dd = l;
var f;
try {
f = s._main(c, d, 0)
}catch(h) {
if(h && "object" == typeof h && "ExitStatus" == h.type) {
return s.print("Exit Status: " + h.value), h.value
}
"SimulateInfiniteLoop" == h ? s.noExitRuntime = l : g(h)
}finally {
dd = p
}
s.noExitRuntime || ed(f)
};
function lb(a) {
function b() {
ab || (ab = l, Va(Xa));
Va(Ya);
gb = l;
s._main && kb && s.callMain(a);
if(s.postRun) {
for("function" == typeof s.postRun && (s.postRun = [s.postRun]);s.postRun.length;) {
cb(s.postRun.shift())
}
}
Va($a)
}
a = a || s.arguments;
if(0 < L) {
s.P("run() called, but dependencies remain, so not running")
}else {
if(s.preRun) {
for("function" == typeof s.preRun && (s.preRun = [s.preRun]);s.preRun.length;) {
bb(s.preRun.shift())
}
}
Va(Wa);
0 < L || (s.setStatus ? (s.setStatus("Running..."), setTimeout(function() {
setTimeout(function() {
s.setStatus("")
}, 1);
za || b()
}, 1)) : b())
}
}
s.run = s.we = lb;
function ed(a) {
za = l;
u = cd;
Va(Za);
dd && g({type:"ExitStatus", value:a})
}
s.exit = s.de = ed;
function wa(a) {
a && s.print(a);
za = l;
g("abort() at " + Error().stack)
}
s.abort = s.abort = wa;
if(s.preInit) {
for("function" == typeof s.preInit && (s.preInit = [s.preInit]);0 < s.preInit.length;) {
s.preInit.pop()()
}
}
var kb = l;
s.noInitialRun && (kb = p);
lb();
var scrypt = (function () {
var exports = {};
//---------------------------------------------------------------------------
// Horrifying UTF-8 and hex codecs
function encode_utf8(s) {
return encode_latin1(unescape(encodeURIComponent(s)));
}
function encode_latin1(s) {
var result = new Uint8Array(s.length);
for (var i = 0; i < s.length; i++) {
var c = s.charCodeAt(i);
if ((c & 0xff) !== c) throw {message: "Cannot encode string in Latin1", str: s};
result[i] = (c & 0xff);
}
return result;
}
function decode_utf8(bs) {
return decodeURIComponent(escape(decode_latin1(bs)));
}
function decode_latin1(bs) {
var encoded = [];
for (var i = 0; i < bs.length; i++) {
encoded.push(String.fromCharCode(bs[i]));
}
return encoded.join('');
}
function to_hex(bs) {
var encoded = [];
for (var i = 0; i < bs.length; i++) {
encoded.push("0123456789abcdef"[(bs[i] >> 4) & 15]);
encoded.push("0123456789abcdef"[bs[i] & 15]);
}
return encoded.join('');
}
//---------------------------------------------------------------------------
function injectBytes(bs, leftPadding) {
var p = leftPadding || 0;
var address = scrypt_raw._malloc(bs.length + p);
scrypt_raw.HEAPU8.set(bs, address + p);
for (var i = address; i < address + p; i++) {
scrypt_raw.HEAPU8[i] = 0;
}
return address;
}
function check_injectBytes(function_name, what, thing, expected_length, leftPadding) {
check_length(function_name, what, thing, expected_length);
return injectBytes(thing, leftPadding);
}
function extractBytes(address, length) {
var result = new Uint8Array(length);
result.set(scrypt_raw.HEAPU8.subarray(address, address + length));
return result;
}
//---------------------------------------------------------------------------
function check(function_name, result) {
if (result !== 0) {
throw {message: "scrypt_raw." + function_name + " signalled an error"};
}
}
function check_length(function_name, what, thing, expected_length) {
if (thing.length !== expected_length) {
throw {message: "scrypt." + function_name + " expected " +
expected_length + "-byte " + what + " but got length " + thing.length};
}
}
function Target(length) {
this.length = length;
this.address = scrypt_raw._malloc(length);
}
Target.prototype.extractBytes = function (offset) {
var result = extractBytes(this.address + (offset || 0), this.length - (offset || 0));
scrypt_raw._free(this.address);
this.address = null;
return result;
};
function free_all(addresses) {
for (var i = 0; i < addresses.length; i++) {
scrypt_raw._free(addresses[i]);
}
}
//---------------------------------------------------------------------------
function crypto_scrypt(passwd, salt, n, r, p, buflen) {
var buf = new Target(buflen);
var pa = injectBytes(passwd);
var sa = injectBytes(salt);
check("_crypto_scrypt",
scrypt_raw._crypto_scrypt(pa, passwd.length,
sa, salt.length,
n, 0, // 64 bits; zero upper half
r,
p,
buf.address, buf.length));
free_all([pa, sa]);
return buf.extractBytes();
}
//---------------------------------------------------------------------------
exports.encode_utf8 = encode_utf8;
exports.encode_latin1 = encode_latin1;
exports.decode_utf8 = decode_utf8;
exports.decode_latin1 = decode_latin1;
exports.to_hex = to_hex;
exports.crypto_scrypt = crypto_scrypt;
return exports;
})();
return scrypt;
});
function bCrypt() {
this.GENSALT_DEFAULT_LOG2_ROUNDS = 10;
this.BCRYPT_SALT_LEN = 16;
this.BLOWFISH_NUM_ROUNDS = 16;
this.MAX_EXECUTION_TIME = 100;
this.P_orig = [0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,
0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,
0xb5470917, 0x9216d5d9, 0x8979fb1b];
this.S_orig = [0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,
0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,
0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,
0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,
0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,
0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,
0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,
0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,
0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,
0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,
0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,
0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,
0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,
0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,
0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,
0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,
0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,
0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,
0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,
0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,
0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,
0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,
0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,
0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,
0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,
0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,
0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,
0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,
0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,
0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,
0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,
0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,
0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,
0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,
0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,
0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,
0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,
0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,
0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,
0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,
0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,
0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,
0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,
0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,
0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,
0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,
0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,
0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,
0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,
0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,
0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,
0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,
0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,
0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,
0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,
0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,
0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,
0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,
0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,
0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,
0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,
0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,
0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,
0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,
0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,
0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,
0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,
0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,
0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,
0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,
0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,
0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,
0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,
0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,
0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,
0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,
0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,
0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,
0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,
0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,
0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,
0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,
0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,
0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,
0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,
0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,
0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,
0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,
0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,
0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,
0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,
0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,
0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,
0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,
0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,
0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,
0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,
0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,
0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,
0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,
0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,
0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,
0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,
0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,
0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,
0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,
0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,
0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,
0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,
0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,
0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,
0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,
0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,
0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,
0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,
0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,
0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,
0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,
0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,
0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,
0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,
0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,
0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,
0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,
0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,
0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,
0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,
0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6];
this.bf_crypt_ciphertext = [0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253,
0x63727944, 0x6f756274];
this.base64_code = ['.', '/', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9'];
this.index_64 = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, -1, -1, -1, -1, -1];
this.P;
this.S;
this.lr;
this.offp;
};
bCrypt.prototype.getByte = function(c) {
var ret = 0;
try {
var b = c.charCodeAt(0);
} catch (err) {
b = c;
}
if (b > 127) {
return -128 + (b % 128);
} else {
return b;
}
};
bCrypt.prototype.encode_base64 = function(d, len) {
var off = 0;
var rs = [];
var c1;
var c2;
if (len <= 0 || len > d.length)
throw "Invalid len";
while (off < len) {
c1 = d[off++] & 0xff;
rs.push(this.base64_code[(c1 >> 2) & 0x3f]);
c1 = (c1 & 0x03) << 4;
if (off >= len) {
rs.push(this.base64_code[c1 & 0x3f]);
break;
}
c2 = d[off++] & 0xff;
c1 |= (c2 >> 4) & 0x0f;
rs.push(this.base64_code[c1 & 0x3f]);
c1 = (c2 & 0x0f) << 2;
if (off >= len) {
rs.push(this.base64_code[c1 & 0x3f]);
break;
}
c2 = d[off++] & 0xff;
c1 |= (c2 >> 6) & 0x03;
rs.push(this.base64_code[c1 & 0x3f]);
rs.push(this.base64_code[c2 & 0x3f]);
}
return rs.join('');
};
bCrypt.prototype.char64 = function(x) {
var code = x.charCodeAt(0);
if (code < 0 || code > this.index_64.length) {
return -1;
}
return this.index_64[code];
};
bCrypt.prototype.decode_base64 = function(s, maxolen) {
var off = 0;
var slen = s.length;
var olen = 0;
var rs = [];
var c1, c2, c3, c4, o;
if (maxolen <= 0)
throw "Invalid maxolen";
while (off < slen - 1 && olen < maxolen) {
c1 = this.char64(s.charAt(off++));
c2 = this.char64(s.charAt(off++));
if (c1 == -1 || c2 == -1) {
break;
}
o = this.getByte(c1 << 2);
o |= (c2 & 0x30) >> 4;
rs.push(String.fromCharCode(o));
if (++olen >= maxolen || off >= slen) {
break;
}
c3 = this.char64(s.charAt(off++));
if (c3 == -1) {
break;
}
o = this.getByte((c2 & 0x0f) << 4);
o |= (c3 & 0x3c) >> 2;
rs.push(String.fromCharCode(o));
if (++olen >= maxolen || off >= slen) {
break;
}
c4 = this.char64(s.charAt(off++));
o = this.getByte((c3 & 0x03) << 6);
o |= c4;
rs.push(String.fromCharCode(o));
++olen;
}
var ret = [];
for (off = 0; off < olen; off++) {
ret.push(this.getByte(rs[off]));
}
return ret;
};
bCrypt.prototype.encipher = function(lr, off) {
var i;
var n;
var l = lr[off];
var r = lr[off + 1];
l ^= this.P[0];
for (i = 0; i <= this.BLOWFISH_NUM_ROUNDS - 2;) {
// Feistel substitution on left word
n = this.S[(l >> 24) & 0xff];
n += this.S[0x100 | ((l >> 16) & 0xff)];
n ^= this.S[0x200 | ((l >> 8) & 0xff)];
n += this.S[0x300 | (l & 0xff)];
r ^= n ^ this.P[++i];
// Feistel substitution on right word
n = this.S[(r >> 24) & 0xff];
n += this.S[0x100 | ((r >> 16) & 0xff)];
n ^= this.S[0x200 | ((r >> 8) & 0xff)];
n += this.S[0x300 | (r & 0xff)];
l ^= n ^ this.P[++i];
}
lr[off] = r ^ this.P[this.BLOWFISH_NUM_ROUNDS + 1];
lr[off + 1] = l;
};
bCrypt.prototype.streamtoword = function(data, offp) {
var i;
var word = 0;
var off = offp;
for (i = 0; i < 4; i++) {
word = (word << 8) | (data[off] & 0xff);
off = (off + 1) % data.length;
}
this.offp = off;
return word;
};
bCrypt.prototype.init_key = function() {
this.P = this.P_orig.slice();
this.S = this.S_orig.slice();
};
bCrypt.prototype.key = function(key) {
var i;
this.offp = 0;
var lr = new Array(0x00000000, 0x00000000);
var plen = this.P.length;
var slen = this.S.length;
for (i = 0; i < plen; i++) {
this.P[i] = this.P[i] ^ this.streamtoword(key, this.offp);
}
for (i = 0; i < plen; i += 2) {
this.encipher(lr, 0);
this.P[i] = lr[0];
this.P[i + 1] = lr[1];
}
for (i = 0; i < slen; i += 2) {
this.encipher(lr, 0);
this.S[i] = lr[0];
this.S[i + 1] = lr[1];
}
};
bCrypt.prototype.ekskey = function(data, key) {
var i;
this.offp = 0;
var lr = new Array(0x00000000, 0x00000000);
var plen = this.P.length;
var slen = this.S.length;
for (i = 0; i < plen; i++)
this.P[i] = this.P[i] ^ this.streamtoword(key, this.offp);
this.offp = 0;
for (i = 0; i < plen; i += 2) {
lr[0] ^= this.streamtoword(data, this.offp);
lr[1] ^= this.streamtoword(data, this.offp);
this.encipher(lr, 0);
this.P[i] = lr[0];
this.P[i + 1] = lr[1];
}
for (i = 0; i < slen; i += 2) {
lr[0] ^= this.streamtoword(data, this.offp);
lr[1] ^= this.streamtoword(data, this.offp);
this.encipher(lr, 0);
this.S[i] = lr[0];
this.S[i + 1] = lr[1];
}
};
bCrypt.prototype.crypt_raw = function(password, salt, log_rounds, callback, progress) {
var rounds;
var j;
var cdata = this.bf_crypt_ciphertext.slice();
var clen = cdata.length;
var one_percent;
if (log_rounds < 4 || log_rounds > 31)
throw "Bad number of rounds";
if (salt.length != this.BCRYPT_SALT_LEN)
throw "Bad salt length";
rounds = 1 << log_rounds;
one_percent = Math.floor(rounds / 100) + 1;
this.init_key();
this.ekskey(salt, password);
var obj = this;
var i = 0;
setTimeout(function(){
if(i < rounds){
var start = new Date();
for (; i < rounds;) {
i = i + 1;
obj.key(password);
obj.key(salt);
if(i % one_percent == 0){
progress();
}
if((new Date() - start) > obj.MAX_EXECUTION_TIME){
break;
}
}
setTimeout(arguments.callee, 0);
}else{
for (i = 0; i < 64; i++) {
for (j = 0; j < (clen >> 1); j++) {
obj.encipher(cdata, j << 1);
}
}
var ret = [];
for (i = 0; i < clen; i++) {
ret.push(obj.getByte((cdata[i] >> 24) & 0xff));
ret.push(obj.getByte((cdata[i] >> 16) & 0xff));
ret.push(obj.getByte((cdata[i] >> 8) & 0xff));
ret.push(obj.getByte(cdata[i] & 0xff));
}
callback(ret);
}
}, 0);
};
/*
* callback: a function that will be passed the hash when it is complete
* progress: optional - this function will be called every time 1% of hashing
* is complete.
*/
bCrypt.prototype.hashpw = function(password, salt, callback, progress) {
var real_salt;
var passwordb = [];
var saltb = [];
var hashed = [];
var minor = String.fromCharCode(0);
var rounds = 0;
var off = 0;
if (!progress){
var progress = function() {};
}
if (salt.charAt(0) != '$' || salt.charAt(1) != '2')
throw "Invalid salt version";
if (salt.charAt(2) == '$')
off = 3;
else {
minor = salt.charAt(2);
if (minor != 'a' || salt.charAt(3) != '$')
throw "Invalid salt revision";
off = 4;
}
// Extract number of rounds
if (salt.charAt(off + 2) > '$')
throw "Missing salt rounds";
var r1 = parseInt(salt.substring(off, off + 1)) * 10;
var r2 = parseInt(salt.substring(off + 1, off + 2));
rounds = r1 + r2;
real_salt = salt.substring(off + 3, off + 25);
password = password + (minor >= 'a' ? "\000" : "");
for (var r = 0; r < password.length; r++) {
passwordb.push(this.getByte(password.charAt(r)));
}
saltb = this.decode_base64(real_salt, this.BCRYPT_SALT_LEN);
var obj = this;
this.crypt_raw(passwordb, saltb, rounds, function(hashed) {
var rs = [];
rs.push("$2");
if (minor >= 'a')
rs.push(minor);
rs.push("$");
if (rounds < 10)
rs.push("0");
rs.push(rounds.toString());
rs.push("$");
rs.push(obj.encode_base64(saltb, saltb.length));
rs.push(obj.encode_base64(hashed, obj.bf_crypt_ciphertext.length * 4 - 1));
callback(rs.join(''));
}, progress);
};
bCrypt.prototype.gensalt = function(rounds) {
var iteration_count = rounds;
if (iteration_count < 4 || iteration_count > 31) {
iteration_count = this.GENSALT_DEFAULT_LOG2_ROUNDS;
}
var output = [];
output.push("$2a$");
if (iteration_count < 10)
output.push("0");
output.push(iteration_count.toString());
output.push('$');
var s1 = [];
for (var r = 0; r < this.BCRYPT_SALT_LEN; r++){
s1.push(Math.abs(isaac.rand()));
}
output.push(this.encode_base64(s1,this.BCRYPT_SALT_LEN))
return output.join('');
};
bCrypt.prototype.ready = function(){
return true;
};
/* ----------------------------------------------------------------------
* Copyright (c) 2012 Yves-Marie K. Rinquin
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------
*
* ISAAC is a cryptographically secure pseudo-random number generator
* (or CSPRNG for short) designed by Robert J. Jenkins Jr. in 1996 and
* based on RC4. It is designed for speed and security.
*
* ISAAC's informations & analysis:
* http://burtleburtle.net/bob/rand/isaac.html
* ISAAC's implementation details:
* http://burtleburtle.net/bob/rand/isaacafa.html
*
* ISAAC succesfully passed TestU01
*
* ----------------------------------------------------------------------
*
* Usage:
* var random_number = isaac.random();
*
* Output: [ 0x00000000; 0xffffffff]
* [-2147483648; 2147483647]
*
*/
/* js string (ucs-2/utf16) to a 32-bit integer (utf-8 chars, little-endian) array */
String.prototype.toIntArray = function() {
var w1, w2, u, r4 = [], r = [], i = 0;
var s = this + '\0\0\0'; // pad string to avoid discarding last chars
var l = s.length - 1;
while(i < l) {
w1 = s.charCodeAt(i++);
w2 = s.charCodeAt(i+1);
if (w1 < 0x0080) {
// 0x0000 - 0x007f code point: basic ascii
r4.push(w1);
} else if(w1 < 0x0800) {
// 0x0080 - 0x07ff code point
r4.push(((w1 >>> 6) & 0x1f) | 0xc0);
r4.push(((w1 >>> 0) & 0x3f) | 0x80);
} else if((w1 & 0xf800) != 0xd800) {
// 0x0800 - 0xd7ff / 0xe000 - 0xffff code point
r4.push(((w1 >>> 12) & 0x0f) | 0xe0);
r4.push(((w1 >>> 6) & 0x3f) | 0x80);
r4.push(((w1 >>> 0) & 0x3f) | 0x80);
} else if(((w1 & 0xfc00) == 0xd800)
&& ((w2 & 0xfc00) == 0xdc00)) {
// 0xd800 - 0xdfff surrogate / 0x10ffff - 0x10000 code point
u = ((w2 & 0x3f) | ((w1 & 0x3f) << 10)) + 0x10000;
r4.push(((u >>> 18) & 0x07) | 0xf0);
r4.push(((u >>> 12) & 0x3f) | 0x80);
r4.push(((u >>> 6) & 0x3f) | 0x80);
r4.push(((u >>> 0) & 0x3f) | 0x80);
i++;
} else {
// invalid char
}
/* add integer (four utf-8 value) to array */
if(r4.length > 3) {
// little endian
r.push((r4.shift() << 0) | (r4.shift() << 8) |
(r4.shift() << 16) | (r4.shift() << 24));
}
}
return r;
}
/* isaac module pattern */
var isaac = (function(){
/* private: internal states */
var m = Array(256), // internal memory
acc = 0, // accumulator
brs = 0, // last result
cnt = 0, // counter
r = Array(256), // result array
gnt = 0; // generation counter
seed(Math.random() * 0xffffffff);
/* private: 32-bit integer safe adder */
function add(x, y) {
var lsb = (x & 0xffff) + (y & 0xffff);
var msb = (x >>> 16) + (y >>> 16) + (lsb >>> 16);
return (msb << 16) | (lsb & 0xffff);
}
/* public: initialisation */
function reset() {
acc = brs = cnt = 0;
for(var i = 0; i < 256; ++i)
m[i] = r[i] = 0;
gnt = 0;
}
/* public: seeding function */
function seed(s) {
var a, b, c, d, e, f, g, h, i;
/* seeding the seeds of love */
a = b = c = d =
e = f = g = h = 0x9e3779b9; /* the golden ratio */
if(s && typeof(s) === 'string')
s = s.toIntArray();
if(s && typeof(s) === 'number') {
s = [s];
}
if(s instanceof Array) {
reset();
for(i = 0; i < s.length; i++)
r[i & 0xff] += (typeof(s[i]) === 'number') ? s[i] : 0;
}
/* private: seed mixer */
function seed_mix() {
a ^= b << 11; d = add(d, a); b = add(b, c);
b ^= c >>> 2; e = add(e, b); c = add(c, d);
c ^= d << 8; f = add(f, c); d = add(d, e);
d ^= e >>> 16; g = add(g, d); e = add(e, f);
e ^= f << 10; h = add(h, e); f = add(f, g);
f ^= g >>> 4; a = add(a, f); g = add(g, h);
g ^= h << 8; b = add(b, g); h = add(h, a);
h ^= a >>> 9; c = add(c, h); a = add(a, b);
}
for(i = 0; i < 4; i++) /* scramble it */
seed_mix();
for(i = 0; i < 256; i += 8) {
if(s) { /* use all the information in the seed */
a = add(a, r[i + 0]); b = add(b, r[i + 1]);
c = add(c, r[i + 2]); d = add(d, r[i + 3]);
e = add(e, r[i + 4]); f = add(f, r[i + 5]);
g = add(g, r[i + 6]); h = add(h, r[i + 7]);
}
seed_mix();
/* fill in m[] with messy stuff */
m[i + 0] = a; m[i + 1] = b; m[i + 2] = c; m[i + 3] = d;
m[i + 4] = e; m[i + 5] = f; m[i + 6] = g; m[i + 7] = h;
}
if(s) {
/* do a second pass to make all of the seed affect all of m[] */
for(i = 0; i < 256; i += 8) {
a = add(a, m[i + 0]); b = add(b, m[i + 1]);
c = add(c, m[i + 2]); d = add(d, m[i + 3]);
e = add(e, m[i + 4]); f = add(f, m[i + 5]);
g = add(g, m[i + 6]); h = add(h, m[i + 7]);
seed_mix();
/* fill in m[] with messy stuff (again) */
m[i + 0] = a; m[i + 1] = b; m[i + 2] = c; m[i + 3] = d;
m[i + 4] = e; m[i + 5] = f; m[i + 6] = g; m[i + 7] = h;
}
}
prng(); /* fill in the first set of results */
gnt = 256; /* prepare to use the first set of results */;
}
/* public: isaac generator, n = number of run */
function prng(n){
var i, x, y;
n = (n && typeof(n) === 'number')
? Math.abs(Math.floor(n)) : 1;
while(n--) {
cnt = add(cnt, 1);
brs = add(brs, cnt);
for(i = 0; i < 256; i++) {
switch(i & 3) {
case 0: acc ^= acc << 13; break;
case 1: acc ^= acc >>> 6; break;
case 2: acc ^= acc << 2; break;
case 3: acc ^= acc >>> 16; break;
}
acc = add(m[(i + 128) & 0xff], acc); x = m[i];
m[i] = y = add(m[(x >>> 2) & 0xff], add(acc, brs));
r[i] = brs = add(m[(y >>> 10) & 0xff], x);
}
}
}
/* public: return a random number between */
function rand() {
if(!gnt--) {
prng(); gnt = 255;
}
return r[gnt];
}
/* public: return internals in an object*/
function internals(){
return {a: acc, b: brs, c: cnt, m: m, r: r};
}
/* return class object */
return {
'reset': reset,
'seed': seed,
'prng': prng,
'rand': rand,
'internals': internals
};
})(); /* declare and execute */
/* public: output*/
isaac.random = function() {
return this.rand();
}
var scrypt = (function () {
var exports = {};
//---------------------------------------------------------------------------
// Horrifying UTF-8 and hex codecs
function encode_utf8(s) {
return encode_latin1(unescape(encodeURIComponent(s)));
}
function encode_latin1(s) {
var result = new Uint8Array(s.length);
for (var i = 0; i < s.length; i++) {
var c = s.charCodeAt(i);
if ((c & 0xff) !== c) throw {message: "Cannot encode string in Latin1", str: s};
result[i] = (c & 0xff);
}
return result;
}
function decode_utf8(bs) {
return decodeURIComponent(escape(decode_latin1(bs)));
}
function decode_latin1(bs) {
var encoded = [];
for (var i = 0; i < bs.length; i++) {
encoded.push(String.fromCharCode(bs[i]));
}
return encoded.join('');
}
function to_hex(bs) {
var encoded = [];
for (var i = 0; i < bs.length; i++) {
encoded.push("0123456789abcdef"[(bs[i] >> 4) & 15]);
encoded.push("0123456789abcdef"[bs[i] & 15]);
}
return encoded.join('');
}
//---------------------------------------------------------------------------
function injectBytes(bs, leftPadding) {
var p = leftPadding || 0;
var address = scrypt_raw._malloc(bs.length + p);
scrypt_raw.HEAPU8.set(bs, address + p);
for (var i = address; i < address + p; i++) {
scrypt_raw.HEAPU8[i] = 0;
}
return address;
}
function check_injectBytes(function_name, what, thing, expected_length, leftPadding) {
check_length(function_name, what, thing, expected_length);
return injectBytes(thing, leftPadding);
}
function extractBytes(address, length) {
var result = new Uint8Array(length);
result.set(scrypt_raw.HEAPU8.subarray(address, address + length));
return result;
}
//---------------------------------------------------------------------------
function check(function_name, result) {
if (result !== 0) {
throw {message: "scrypt_raw." + function_name + " signalled an error"};
}
}
function check_length(function_name, what, thing, expected_length) {
if (thing.length !== expected_length) {
throw {message: "scrypt." + function_name + " expected " +
expected_length + "-byte " + what + " but got length " + thing.length};
}
}
function Target(length) {
this.length = length;
this.address = scrypt_raw._malloc(length);
}
Target.prototype.extractBytes = function (offset) {
var result = extractBytes(this.address + (offset || 0), this.length - (offset || 0));
scrypt_raw._free(this.address);
this.address = null;
return result;
};
function free_all(addresses) {
for (var i = 0; i < addresses.length; i++) {
scrypt_raw._free(addresses[i]);
}
}
//---------------------------------------------------------------------------
function crypto_scrypt(passwd, salt, n, r, p, buflen) {
var buf = new Target(buflen);
var pa = injectBytes(passwd);
var sa = injectBytes(salt);
check("_crypto_scrypt",
scrypt_raw._crypto_scrypt(pa, passwd.length,
sa, salt.length,
n, 0, // 64 bits; zero upper half
r,
p,
buf.address, buf.length));
free_all([pa, sa]);
return buf.extractBytes();
}
//---------------------------------------------------------------------------
exports.encode_utf8 = encode_utf8;
exports.encode_latin1 = encode_latin1;
exports.decode_utf8 = decode_utf8;
exports.decode_latin1 = decode_latin1;
exports.to_hex = to_hex;
exports.crypto_scrypt = crypto_scrypt;
return exports;
})();
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
var benchmark = function (name, iter, cb, dontStopTime) {
var time = +new Date(); cb();
var endTime = (+new Date()) - time;
console.log(name + ' ' + Math.round(
endTime / iter / 1000 * 1000
) / 1000 + ' s');
};
// Generate 256 random bytes
// Pre-fixed seed
console.info('Benchmarking random number generators');
console.info('Task: generate 1 Mb random data');
benchmark('ISAAC', 1, function () {
for (var k = 0; k < 4 * 1024; k++) {
for (var i = 0; i < 1024 / 4; i++) {
isaac.random();
}
}
});
benchmark('Salsa20', 1, function () {
var key = [0x80]; for (var i = 1; i < 32; i++) key[i] = 0;
var nonce = []; for (var i = 0; i < 8; i++) nonce[i] = 0;
var state = new Salsa20(key, nonce);
for (var k = 0; k < 4 * 1024; k++) {
state.getBytes(1024);
}
});
benchmark('SJCL', 1, function () {
for (var k = 0; k < 4 * 1024; k++) {
sjcl.random.randomWords(1024 / 4, 10);
}
});
console.info('Benchmarking key-derivation functions');
var pbkdf2 = function (iter) {
sjcl.misc.pbkdf2(
isaac.random().toString(),
isaac.random().toString(),
iter);
};
benchmark('PBKDF2 1000 iter', 1, function () { pbkdf2(1000); });
benchmark('PBKDF2 10000 iter', 1, function () { pbkdf2(10000); });
benchmark('PBKDF2 100000 iter', 1, function () { pbkdf2(100000); });
function benchmarkbCrypt(rounds) {
var bcrypt = new bCrypt();
var salt = bcrypt.gensalt(rounds);
var startTime = +new Date();
var i = 0;
var stopTimer = function () {
var endTime = (+new Date()) - startTime;
console.log('BCrypt ' + rounds.toString() + ' rounds ',
(+new Date() - startTime) / 1000);
};
bcrypt.hashpw(
isaac.random().toString() +
isaac.random().toString(),
salt, function () { stopTimer(); }
);
};
//benchmarkbCrypt(10);
//benchmarkbCrypt(11);
//benchmarkbCrypt(12);
var scrypt = scrypt_module_factory();
var password = scrypt.encode_utf8("pleaseletmein");
var salt = scrypt.encode_utf8("nacl");
benchmark('SCRYPT N, r, p, L = 16384, 8, 1, 64', 1, function () {
scrypt.crypto_scrypt(password, salt, 16384, 8, 1, 64);
});
console.info('Benchmarking ECC key generation functions');
benchmark('SJCL generate ECC ElGamal secp384r1', 10, function () {
for (var k = 0; k < 10; k++) {
var ecc = sjcl.ecc.elGamal.generateKeys(384, 1);
}
});
benchmark('SJCL generate ECDSA secp384r1', 10, function () {
for (var k = 0; k < 10; k++) {
var ecc = sjcl.ecc.ecdsa.generateKeys(384, 1);
}
});
benchmark('SJCL generate ECC ElGamal secp384r1', 10, function () {
for (var k = 0; k < 10; k++) {
var ecc = sjcl.ecc.elGamal.generateKeys(384, 1);
}
});
benchmark('JSRSASIGN generate ECDSA secp384r1', 10, function () {
for (var k = 0; k < 10; k++) {
KEYUTIL.generateKeypair("EC", "secp384r1");
}
});
benchmark('SJCL generate ECDSA secp256r1', 10, function () {
for (var k = 0; k < 10; k++) {
var ecc = sjcl.ecc.elGamal.generateKeys(256, 1);
}
});
sjcl.ecc.curves.c256 = new sjcl.ecc.curve(
sjcl.bn.pseudoMersennePrime(256, [[0,-1],[4,-1],[6,-1],[7,-1],[8,-1],[9,-1],[32,-1]]),
"0x14551231950b75fc4402da1722fc9baee",
0,
7,
"0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
"0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
);
benchmark('SJCL generate ECDSA secp256k1', 10, function () {
for (var k = 0; k < 10; k++) {
var ecc = sjcl.ecc.elGamal.generateKeys(256, 1);
}
});
benchmark('JSRSASIGN generate ECDSA secp256r1', 10, function () {
for (var k = 0; k < 10; k++) {
KEYUTIL.generateKeypair("EC", "secp256r1");
}
});
var data = "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798";
benchmark('SJCL SHA256 1000 times', 1, function () {
for (var k = 0; k < 1000; k++) {
var md = new KJUR.crypto.MessageDigest({ alg: "sha256", prov: "sjcl" });
}
});
benchmark('JSRSASIGN SHA256 1000 times', 1, function () {
for (var k = 0; k < 1000; k++) {
var md = new KJUR.crypto.MessageDigest({ alg: "sha256", prov: "cryptojs" });
}
});
</script>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment