var key;function createKey(a){if(a==128){setMaxDigits(19);key=new RSAKeyPair("10001","202700adbd85e2d7182720c3a0ee19c1","30db31542ace0f7d37a629ee5eba28cb")}else{if(a==256){setMaxDigits(38);key=new RSAKeyPair("10001","8064edb1f26944f6bec2b68789db7ffd08b074d0953b76feca71dc8265c60e9","2687f5ac6c70f9cab32fcbded7059502f4c7cc95fc3e09a560c68975ac4bf5e3")}else{if(a==512){setMaxDigits(76);key=new RSAKeyPair("10001","59fed719f8959a468de367f77a33a7536d53b8e4d25ed49ccc89a94cd6899da90415623fb73386e9635034fb65ad5f248445a1c66703f760d64a8271ad342b1","8de7066f67be16fcacd05d319b6729cd85fe698c07cec504776146eb7a041d9e3cacbf0fcd86441981c0083eed1f8f1b18393f0b186e47ce1b7b4981417b491")}else{if(a==1024){setMaxDigits(130);key=new RSAKeyPair("10001","12e8da920d4599458e84ec5ef1656161807f427d05eb79182b7418259d6f6c14364d1f5caf9130c8d9d9d6ea71d1bdbc87781a46a16bcb9e672814fed3b9c96ddffe0a1b0955ae68055c8f92fef518a04fc32a2ea8390e617cc5556a251f9ae9eee70a32e579cb3e9f298848a9b3aaf634f5930ffbf74473f7cb6c0cefee1751","130ebebd67b16a9ab2c53a437badbf8f01a80c750095a7fcfe95742c3d5ed1abb318babc5cb5d9350fee4da65ee074f65e1758117e6945f0fcfc8137528053ce9d1da8618890dee24e5e0bf8c87795bb1d09eddd544640824ee0dd0ea9fd908d27b0f8a1ae5c37f3647fbf2f5795500ad76c195b3387d0458a8f51b701472301")}else{if(a==2048){setMaxDigits(260);key=new RSAKeyPair("10001","409c6fe2b6474762b5c07f4e55ef80d174814dc1fb0fb58e979691116fb3dc433f759ff8a88d1a0f0666862b0b3758c54b7355fa87ee827369381e1f97c5d74944e032c7186b51a956fb49d6deb3aee0b2c7e65fc53bfd46d217764850667ed0363de143f3f3d06d5a0018693ad3dacdf78a18d037ceeccb7508776f27b30852b8b505666a8dca5bfbb455d2f85918f8b5295061c97673c78802c5f5cf4581c7215dc32af8dfb6fc10e9ba51fb5a88abab94157ccecf615e104a91a45e9bee072fe7b388344c1bbad4a8f7d5daeccbadf778d59eff2a491a067bba5343c5a094c61b575fe367ecfcc01c3d208c2f8c05b9496a929b2b72e70160d07d07f248f1","9800012b1e533c2c28187424e1289fd4f7fe67487058f5ac7f27f18476c6c93db20b6d2c63d04ff310c1e7211cf8014adc006176529abc53fd1780274fc2629cf51d627c7465c3cbf4f110c3560e2128b97c4ea8a431f0b2a326fc31899790515ad45874ca75c68ee6695558736490ea895d598b8525bccab3156104d360b115ae25e99e9d899a2219136bad0336eeee0c6d725aa9c3b6b923c1ad95a9057b9deb7b563e05614acc800d9d8ec5de405d74feea722c5146feb80829508180ab5c80bf792b83f07c04c73ce0b3cf0d9f74aa92a4704819d103e58f5d4b8ca750148ba1cbab8eb55f92775b18da427c3a0b592809f3853274841a44b7129ec6a623")}}}}}}function cmdShowKeyClick(){var a=biToString(key.m,key.radix);var b=biToString(key.e,key.radix);var c=biToString(key.d,key.radix);document.frm.txtMessages.value="Key:\nm = "+a+"\ne = "+b+"\nd = "+c}function cmdEncryptClick(){with(document.frm){txtMessages.value="Encrypting. Please wait...";txtCiphertext.value="";txtVerification.value="";var t1=new Date().getTime();txtCiphertext.value=encryptedString(key,txtPlaintext.value);var t2=new Date().getTime();txtMessages.value="Done. Encryption took "+(t2-t1)+" milliseconds."}}function cmdVerifyClick(){with(document.frm){txtMessages.value="Decrypting. Please wait...";txtVerification.value="";var t1=new Date().getTime();txtVerification.value=decryptedString(key,txtCiphertext.value);var t2=new Date().getTime();txtMessages.value="Done. Decryption took "+(t2-t1)+" milliseconds."}}function changeCiphertextRadix(l,b){var g=document.frm;var a=g.txtCiphertext.value.split(" ");var c="";for(var e=0;e<a.length;++e){var h=a[e];var d;if(l==16){d=biFromHex(h)}else{d=biFromString(h,l)}var k;if(b==16){k=biToHex(d)}else{k=biToString(d,b)}c+=k+" "}c=c.substring(0,c.length-1);g.txtCiphertext.value=c}function selKeySizeChange(){var a=document.frm;a.txtCiphertext.value="";createKey()}function selRadixChange(){var c=document.frm;var a=c.selRadix.selectedIndex;var b=Number(c.selRadix.options[a].value);if(c.txtCiphertext.value!=""){changeCiphertextRadix(key.radix,b)}key.radix=b}function RSAKeyPair(b,c,a){this.e=biFromHex(b);this.d=biFromHex(c);this.m=biFromHex(a);this.chunkSize=2*biHighIndex(this.m);this.radix=16;this.barrett=new BarrettMu(this.m)}function twoDigit(a){return(a<10?"0":"")+String(a)}function encryptedString(n){var h=new Array();var b=n.length;var f=0;while(f<b){h[f]=n.charCodeAt(f);f++}while(h.length%key.chunkSize!=0){h[f++]=0}var g=h.length;var o="";var e,d,c;for(f=0;f<g;f+=key.chunkSize){c=new BigInt();e=0;for(d=f;d<f+key.chunkSize;++e){c.digits[e]=h[d++];c.digits[e]+=h[d++]<<8}var m=key.barrett.powMod(c,key.e);var l=key.radix==16?biToHex(m):biToString(m,key.radix);o+=l+" "}return o.substring(0,o.length-1)}function decryptedString(e){var g=e.split(" ");var a="";var d,c,f;for(d=0;d<g.length;++d){var b;if(key.radix==16){b=biFromHex(g[d])}else{b=biFromString(g[d],key.radix)}f=key.barrett.powMod(b,key.d);for(c=0;c<=biHighIndex(f);++c){a+=String.fromCharCode(f.digits[c]&255,f.digits[c]>>8)}}if(a.charCodeAt(a.length-1)==0){a=a.substring(0,a.length-1)}return a}function BarrettMu(a){this.modulus=biCopy(a);this.k=biHighIndex(this.modulus)+1;var b=new BigInt();b.digits[2*this.k]=1;this.mu=biDivide(b,this.modulus);this.bkplus1=new BigInt();this.bkplus1.digits[this.k+1]=1;this.modulo=BarrettMu_modulo;this.multiplyMod=BarrettMu_multiplyMod;this.powMod=BarrettMu_powMod}function BarrettMu_modulo(h){var g=biDivideByRadixPower(h,this.k-1);var e=biMultiply(g,this.mu);var d=biDivideByRadixPower(e,this.k+1);var c=biModuloByRadixPower(h,this.k+1);var k=biMultiply(d,this.modulus);var b=biModuloByRadixPower(k,this.k+1);var a=biSubtract(c,b);if(a.isNeg){a=biAdd(a,this.bkplus1)}var f=biCompare(a,this.modulus)>=0;while(f){a=biSubtract(a,this.modulus);f=biCompare(a,this.modulus)>=0}return a}function BarrettMu_multiplyMod(a,c){var b=biMultiply(a,c);return this.modulo(b)}function BarrettMu_powMod(c,f){var b=new BigInt();b.digits[0]=1;var d=c;var e=f;while(true){if((e.digits[0]&1)!=0){b=this.multiplyMod(b,d)}e=biShiftRight(e,1);if(e.digits[0]==0&&biHighIndex(e)==0){break}d=this.multiplyMod(d,d)}return b}var biRadixBase=2;var biRadixBits=16;var bitsPerDigit=biRadixBits;var biRadix=1<<16;var biHalfRadix=biRadix>>>1;var biRadixSquared=biRadix*biRadix;var maxDigitVal=biRadix-1;var maxInteger=9999999999999998;var maxDigits;var ZERO_ARRAY;var bigZero,bigOne;function setMaxDigits(b){maxDigits=b;ZERO_ARRAY=new Array(maxDigits);for(var a=0;a<ZERO_ARRAY.length;a++){ZERO_ARRAY[a]=0}bigZero=new BigInt();bigOne=new BigInt();bigOne.digits[0]=1}setMaxDigits(20);var dpl10=15;var lr10=biFromNumber(1000000000000000);function BigInt(a){if(typeof a=="boolean"&&a==true){this.digits=null}else{this.digits=ZERO_ARRAY.slice(0)}this.isNeg=false}function biFromDecimal(e){var d=e.charAt(0)=="-";var c=d?1:0;var a;while(c<e.length&&e.charAt(c)=="0"){++c}if(c==e.length){a=new BigInt()}else{var b=e.length-c;var f=b%dpl10;if(f==0){f=dpl10}a=biFromNumber(Number(e.substr(c,f)));c+=f;while(c<e.length){a=biAdd(biMultiply(a,lr10),biFromNumber(Number(e.substr(c,dpl10))));c+=dpl10}a.isNeg=d}return a}function biCopy(b){var a=new BigInt(true);a.digits=b.digits.slice(0);a.isNeg=b.isNeg;return a}function biFromNumber(c){var a=new BigInt();a.isNeg=c<0;c=Math.abs(c);var b=0;while(c>0){a.digits[b++]=c&maxDigitVal;c=Math.floor(c/biRadix)}return a}function reverseStr(c){var a="";for(var b=c.length-1;b>-1;--b){a+=c.charAt(b)}return a}var hexatrigesimalToChar=new Array("0","1","2","3","4","5","6","7","8","9","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");function biToString(d,f){var c=new BigInt();c.digits[0]=f;var e=biDivideModulo(d,c);var a=hexatrigesimalToChar[e[1].digits[0]];while(biCompare(e[0],bigZero)==1){e=biDivideModulo(e[0],c);digit=e[1].digits[0];a+=hexatrigesimalToChar[e[1].digits[0]]}return(d.isNeg?"-":"")+reverseStr(a)}function biToDecimal(d){var c=new BigInt();c.digits[0]=10;var e=biDivideModulo(d,c);var a=String(e[1].digits[0]);while(biCompare(e[0],bigZero)==1){e=biDivideModulo(e[0],c);a+=String(e[1].digits[0])}return(d.isNeg?"-":"")+reverseStr(a)}var hexToChar=new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");function digitToHex(c){var b=15;var a="";for(i=0;i<4;++i){a+=hexToChar[c&b];c>>>=4}return reverseStr(a)}function biToHex(b){var a="";var d=biHighIndex(b);for(var c=biHighIndex(b);c>-1;--c){a+=digitToHex(b.digits[c])}return a}function charToHex(k){var d=48;var b=d+9;var e=97;var h=e+25;var g=65;var f=65+25;var a;if(k>=d&&k<=b){a=k-d}else{if(k>=g&&k<=f){a=10+k-g}else{if(k>=e&&k<=h){a=10+k-e}else{a=0}}}return a}function hexToDigit(d){var b=0;var a=Math.min(d.length,4);for(var c=0;c<a;++c){b<<=4;b|=charToHex(d.charCodeAt(c))}return b}function biFromHex(e){var b=new BigInt();var a=e.length;for(var d=a,c=0;d>0;d-=4,++c){b.digits[c]=hexToDigit(e.substr(Math.max(d-4,0),Math.min(d,4)))}return b}function biFromString(l,k){var a=l.charAt(0)=="-";var e=a?1:0;var m=new BigInt();var b=new BigInt();b.digits[0]=1;for(var d=l.length-1;d>=e;d--){var f=l.charCodeAt(d);var g=charToHex(f);var h=biMultiplyDigit(b,g);m=biAdd(m,h);b=biMultiplyDigit(b,k)}m.isNeg=a;return m}function biDump(a){return(a.isNeg?"-":"")+a.digits.join(" ")}function biAdd(b,g){var a;if(b.isNeg!=g.isNeg){g.isNeg=!g.isNeg;a=biSubtract(b,g);g.isNeg=!g.isNeg}else{a=new BigInt();var f=0;var e;for(var d=0;d<b.digits.length;++d){e=b.digits[d]+g.digits[d]+f;a.digits[d]=e%biRadix;f=Number(e>=biRadix)}a.isNeg=b.isNeg}return a}function biSubtract(b,g){var a;if(b.isNeg!=g.isNeg){g.isNeg=!g.isNeg;a=biAdd(b,g);g.isNeg=!g.isNeg}else{a=new BigInt();var f,e;e=0;for(var d=0;d<b.digits.length;++d){f=b.digits[d]-g.digits[d]+e;a.digits[d]=f%biRadix;if(a.digits[d]<0){a.digits[d]+=biRadix}e=0-Number(f<0)}if(e==-1){e=0;for(var d=0;d<b.digits.length;++d){f=0-a.digits[d]+e;a.digits[d]=f%biRadix;if(a.digits[d]<0){a.digits[d]+=biRadix}e=0-Number(f<0)}a.isNeg=!b.isNeg}else{a.isNeg=b.isNeg}}return a}function biHighIndex(b){var a=b.digits.length-1;while(a>0&&b.digits[a]==0){--a}return a}function biNumBits(c){var f=biHighIndex(c);var e=c.digits[f];var b=(f+1)*bitsPerDigit;var a;for(a=b;a>b-bitsPerDigit;--a){if((e&32768)!=0){break}e<<=1}return a}function biMultiply(h,g){var o=new BigInt();var f;var b=biHighIndex(h);var m=biHighIndex(g);var l,a,d;for(var e=0;e<=m;++e){f=0;d=e;for(j=0;j<=b;++j,++d){a=o.digits[d]+h.digits[j]*g.digits[e]+f;o.digits[d]=a&maxDigitVal;f=a>>>biRadixBits}o.digits[e+b+1]=f}o.isNeg=h.isNeg!=g.isNeg;return o}function biMultiplyDigit(a,g){var f,e,d;result=new BigInt();f=biHighIndex(a);e=0;for(var b=0;b<=f;++b){d=result.digits[b]+a.digits[b]*g+e;result.digits[b]=d&maxDigitVal;e=d>>>biRadixBits}result.digits[1+f]=e;return result}function arrayCopy(e,h,c,g,f){var a=Math.min(h+f,e.length);for(var d=h,b=g;d<a;++d,++b){c[b]=e[d]}}var highBitMasks=new Array(0,32768,49152,57344,61440,63488,64512,65024,65280,65408,65472,65504,65520,65528,65532,65534,65535);function biShiftLeft(b,h){var d=Math.floor(h/bitsPerDigit);var a=new BigInt();arrayCopy(b.digits,0,a.digits,d,a.digits.length-d);var g=h%bitsPerDigit;var c=bitsPerDigit-g;for(var e=a.digits.length-1,f=e-1;e>0;--e,--f){a.digits[e]=((a.digits[e]<<g)&maxDigitVal)|((a.digits[f]&highBitMasks[g])>>>(c))}a.digits[0]=((a.digits[e]<<g)&maxDigitVal);a.isNeg=b.isNeg;return a}var lowBitMasks=new Array(0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535);function biShiftRight(b,h){var c=Math.floor(h/bitsPerDigit);var a=new BigInt();arrayCopy(b.digits,c,a.digits,0,b.digits.length-c);var f=h%bitsPerDigit;var g=bitsPerDigit-f;for(var d=0,e=d+1;d<a.digits.length-1;++d,++e){a.digits[d]=(a.digits[d]>>>f)|((a.digits[e]&lowBitMasks[f])<<g)}a.digits[a.digits.length-1]>>>=f;a.isNeg=b.isNeg;return a}function biMultiplyByRadixPower(b,c){var a=new BigInt();arrayCopy(b.digits,0,a.digits,c,a.digits.length-c);return a}function biDivideByRadixPower(b,c){var a=new BigInt();arrayCopy(b.digits,c,a.digits,0,a.digits.length-c);return a}function biModuloByRadixPower(b,c){var a=new BigInt();arrayCopy(b.digits,0,a.digits,0,c);return a}function biCompare(a,c){if(a.isNeg!=c.isNeg){return 1-2*Number(a.isNeg)}for(var b=a.digits.length-1;b>=0;--b){if(a.digits[b]!=c.digits[b]){if(a.isNeg){return 1-2*Number(a.digits[b]>c.digits[b])}else{return 1-2*Number(a.digits[b]<c.digits[b])}}}return 0}function biDivideModulo(g,f){var a=biNumBits(g);var e=biNumBits(f);var d=f.isNeg;var o,m;if(a<e){if(g.isNeg){o=biCopy(bigOne);o.isNeg=!f.isNeg;g.isNeg=false;f.isNeg=false;m=biSubtract(f,g);g.isNeg=true;f.isNeg=d}else{o=new BigInt();m=biCopy(g)}return new Array(o,m)}o=new BigInt();m=g;var k=Math.ceil(e/bitsPerDigit)-1;var h=0;while(f.digits[k]<biHalfRadix){f=biShiftLeft(f,1);++h;++e;k=Math.ceil(e/bitsPerDigit)-1}m=biShiftLeft(m,h);a+=h;var u=Math.ceil(a/bitsPerDigit)-1;var B=biMultiplyByRadixPower(f,u-k);while(biCompare(m,B)!=-1){++o.digits[u-k];m=biSubtract(m,B)}for(var z=u;z>k;--z){var l=(z>=m.digits.length)?0:m.digits[z];var A=(z-1>=m.digits.length)?0:m.digits[z-1];var w=(z-2>=m.digits.length)?0:m.digits[z-2];var v=(k>=f.digits.length)?0:f.digits[k];var c=(k-1>=f.digits.length)?0:f.digits[k-1];if(l==v){o.digits[z-k-1]=maxDigitVal}else{o.digits[z-k-1]=Math.floor((l*biRadix+A)/v)}var s=o.digits[z-k-1]*((v*biRadix)+c);var p=(l*biRadixSquared)+((A*biRadix)+w);while(s>p){--o.digits[z-k-1];s=o.digits[z-k-1]*((v*biRadix)|c);p=(l*biRadix*biRadix)+((A*biRadix)+w)}B=biMultiplyByRadixPower(f,z-k-1);m=biSubtract(m,biMultiplyDigit(B,o.digits[z-k-1]));if(m.isNeg){m=biAdd(m,B);--o.digits[z-k-1]}}m=biShiftRight(m,h);o.isNeg=g.isNeg!=d;if(g.isNeg){if(d){o=biAdd(o,bigOne)}else{o=biSubtract(o,bigOne)}f=biShiftRight(f,h);m=biSubtract(f,m)}if(m.digits[0]==0&&biHighIndex(m)==0){m.isNeg=false}return new Array(o,m)}function biDivide(a,b){return biDivideModulo(a,b)[0]}function biModulo(a,b){return biDivideModulo(a,b)[1]}function biMultiplyMod(b,c,a){return biModulo(biMultiply(b,c),a)}function biPow(c,e){var b=bigOne;var d=c;while(true){if((e&1)!=0){b=biMultiply(b,d)}e>>=1;if(e==0){break}d=biMultiply(d,d)}return b}function biPowMod(d,g,c){var b=bigOne;var e=d;var f=g;while(true){if((f.digits[0]&1)!=0){b=biMultiplyMod(b,e,c)}f=biShiftRight(f,1);if(f.digits[0]==0&&biHighIndex(f)==0){break}e=biMultiplyMod(e,e,c)}return b}var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(a){return binl2hex(core_md5(str2binl(a),a.length*chrsz))}function b64_md5(a){return binl2b64(core_md5(str2binl(a),a.length*chrsz))}function str_md5(a){return binl2str(core_md5(str2binl(a),a.length*chrsz))}function hex_hmac_md5(a,b){return binl2hex(core_hmac_md5(a,b))}function b64_hmac_md5(a,b){return binl2b64(core_hmac_md5(a,b))}function str_hmac_md5(a,b){return binl2str(core_hmac_md5(a,b))}function md5_vm_test(){return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72"}function core_md5(q,l){q[l>>5]|=128<<((l)%32);q[(((l+64)>>>9)<<4)+14]=l;var p=1732584193;var o=-271733879;var n=-1732584194;var m=271733878;for(var g=0;g<q.length;g+=16){var k=p;var h=o;var f=n;var e=m;p=md5_ff(p,o,n,m,q[g+0],7,-680876936);m=md5_ff(m,p,o,n,q[g+1],12,-389564586);n=md5_ff(n,m,p,o,q[g+2],17,606105819);o=md5_ff(o,n,m,p,q[g+3],22,-1044525330);p=md5_ff(p,o,n,m,q[g+4],7,-176418897);m=md5_ff(m,p,o,n,q[g+5],12,1200080426);n=md5_ff(n,m,p,o,q[g+6],17,-1473231341);o=md5_ff(o,n,m,p,q[g+7],22,-45705983);p=md5_ff(p,o,n,m,q[g+8],7,1770035416);m=md5_ff(m,p,o,n,q[g+9],12,-1958414417);n=md5_ff(n,m,p,o,q[g+10],17,-42063);o=md5_ff(o,n,m,p,q[g+11],22,-1990404162);p=md5_ff(p,o,n,m,q[g+12],7,1804603682);m=md5_ff(m,p,o,n,q[g+13],12,-40341101);n=md5_ff(n,m,p,o,q[g+14],17,-1502002290);o=md5_ff(o,n,m,p,q[g+15],22,1236535329);p=md5_gg(p,o,n,m,q[g+1],5,-165796510);m=md5_gg(m,p,o,n,q[g+6],9,-1069501632);n=md5_gg(n,m,p,o,q[g+11],14,643717713);o=md5_gg(o,n,m,p,q[g+0],20,-373897302);p=md5_gg(p,o,n,m,q[g+5],5,-701558691);m=md5_gg(m,p,o,n,q[g+10],9,38016083);n=md5_gg(n,m,p,o,q[g+15],14,-660478335);o=md5_gg(o,n,m,p,q[g+4],20,-405537848);p=md5_gg(p,o,n,m,q[g+9],5,568446438);m=md5_gg(m,p,o,n,q[g+14],9,-1019803690);n=md5_gg(n,m,p,o,q[g+3],14,-187363961);o=md5_gg(o,n,m,p,q[g+8],20,1163531501);p=md5_gg(p,o,n,m,q[g+13],5,-1444681467);m=md5_gg(m,p,o,n,q[g+2],9,-51403784);n=md5_gg(n,m,p,o,q[g+7],14,1735328473);o=md5_gg(o,n,m,p,q[g+12],20,-1926607734);p=md5_hh(p,o,n,m,q[g+5],4,-378558);m=md5_hh(m,p,o,n,q[g+8],11,-2022574463);n=md5_hh(n,m,p,o,q[g+11],16,1839030562);o=md5_hh(o,n,m,p,q[g+14],23,-35309556);p=md5_hh(p,o,n,m,q[g+1],4,-1530992060);m=md5_hh(m,p,o,n,q[g+4],11,1272893353);n=md5_hh(n,m,p,o,q[g+7],16,-155497632);o=md5_hh(o,n,m,p,q[g+10],23,-1094730640);p=md5_hh(p,o,n,m,q[g+13],4,681279174);m=md5_hh(m,p,o,n,q[g+0],11,-358537222);n=md5_hh(n,m,p,o,q[g+3],16,-722521979);o=md5_hh(o,n,m,p,q[g+6],23,76029189);p=md5_hh(p,o,n,m,q[g+9],4,-640364487);m=md5_hh(m,p,o,n,q[g+12],11,-421815835);n=md5_hh(n,m,p,o,q[g+15],16,530742520);o=md5_hh(o,n,m,p,q[g+2],23,-995338651);p=md5_ii(p,o,n,m,q[g+0],6,-198630844);m=md5_ii(m,p,o,n,q[g+7],10,1126891415);n=md5_ii(n,m,p,o,q[g+14],15,-1416354905);o=md5_ii(o,n,m,p,q[g+5],21,-57434055);p=md5_ii(p,o,n,m,q[g+12],6,1700485571);m=md5_ii(m,p,o,n,q[g+3],10,-1894986606);n=md5_ii(n,m,p,o,q[g+10],15,-1051523);o=md5_ii(o,n,m,p,q[g+1],21,-2054922799);p=md5_ii(p,o,n,m,q[g+8],6,1873313359);m=md5_ii(m,p,o,n,q[g+15],10,-30611744);n=md5_ii(n,m,p,o,q[g+6],15,-1560198380);o=md5_ii(o,n,m,p,q[g+13],21,1309151649);p=md5_ii(p,o,n,m,q[g+4],6,-145523070);m=md5_ii(m,p,o,n,q[g+11],10,-1120210379);n=md5_ii(n,m,p,o,q[g+2],15,718787259);o=md5_ii(o,n,m,p,q[g+9],21,-343485551);p=safe_add(p,k);o=safe_add(o,h);n=safe_add(n,f);m=safe_add(m,e)}return Array(p,o,n,m)}function md5_cmn(h,e,d,c,g,f){return safe_add(bit_rol(safe_add(safe_add(e,h),safe_add(c,f)),g),d)}function md5_ff(g,f,m,l,e,k,h){return md5_cmn((f&m)|((~f)&l),g,f,e,k,h)}function md5_gg(g,f,m,l,e,k,h){return md5_cmn((f&l)|(m&(~l)),g,f,e,k,h)}function md5_hh(g,f,m,l,e,k,h){return md5_cmn(f^m^l,g,f,e,k,h)}function md5_ii(g,f,m,l,e,k,h){return md5_cmn(m^(f|(~l)),g,f,e,k,h)}function core_hmac_md5(c,f){var e=str2binl(c);if(e.length>16){e=core_md5(e,c.length*chrsz)}var a=Array(16),d=Array(16);for(var b=0;b<16;b++){a[b]=e[b]^909522486;d[b]=e[b]^1549556828}var g=core_md5(a.concat(str2binl(f)),512+f.length*chrsz);return core_md5(d.concat(g),512+128)}function safe_add(a,d){var c=(a&65535)+(d&65535);var b=(a>>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}function bit_rol(a,b){return(a<<b)|(a>>>(32-b))}function str2binl(d){var c=Array();var a=(1<<chrsz)-1;for(var b=0;b<d.length*chrsz;b+=chrsz){c[b>>5]|=(d.charCodeAt(b/chrsz)&a)<<(b%32)}return c}function binl2str(c){var d="";var a=(1<<chrsz)-1;for(var b=0;b<c.length*32;b+=chrsz){d+=String.fromCharCode((c[b>>5]>>>(b%32))&a)}return d}function binl2hex(c){var b=hexcase?"0123456789ABCDEF":"0123456789abcdef";var d="";for(var a=0;a<c.length*4;a++){d+=b.charAt((c[a>>2]>>((a%4)*8+4))&15)+b.charAt((c[a>>2]>>((a%4)*8))&15)}return d}function binl2b64(d){var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var f="";for(var b=0;b<d.length*4;b+=3){var e=(((d[b>>2]>>8*(b%4))&255)<<16)|(((d[b+1>>2]>>8*((b+1)%4))&255)<<8)|((d[b+2>>2]>>8*((b+2)%4))&255);for(var a=0;a<4;a++){if(b*8+a*6>d.length*32){f+=b64pad}else{f+=c.charAt((e>>6*(3-a))&63)}}}return f};
