UNPKG

secure-ls2

Version:

Secure localStorage/sessionStorage data with high level of encryption and data compression

1,173 lines (1,170 loc) 105 kB
/*! * secure-ls - v2.0.0 * URL - https://github.com/softvar/secure-ls * * The MIT License (MIT) * * Copyright (c) 2016-2024 Varun Malhotra * * 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. * * * Dependencies used - * 1. crypto-js - ^4.2.0 * 2. lz-string - ^1.5.0 */ !(function (t, e) { 'object' == typeof exports && 'object' == typeof module ? (module.exports = e()) : 'function' == typeof define && define.amd ? define([], e) : 'object' == typeof exports ? (exports.SecureLS = e()) : (t.SecureLS = e()); })(this, () => (() => { var t = { 955: function (t, e, r) { var i; t.exports = ((i = r(21)), r(754), r(636), r(506), r(165), (function () { var t = i, e = t.lib.BlockCipher, r = t.algo, n = [], o = [], s = [], c = [], a = [], h = [], l = [], f = [], u = [], p = []; !(function () { for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : (e << 1) ^ 283; var r = 0, i = 0; for (e = 0; e < 256; e++) { var d = i ^ (i << 1) ^ (i << 2) ^ (i << 3) ^ (i << 4); (d = (d >>> 8) ^ (255 & d) ^ 99), (n[r] = d), (o[d] = r); var y = t[r], _ = t[y], g = t[_], v = (257 * t[d]) ^ (16843008 * d); (s[r] = (v << 24) | (v >>> 8)), (c[r] = (v << 16) | (v >>> 16)), (a[r] = (v << 8) | (v >>> 24)), (h[r] = v), (v = (16843009 * g) ^ (65537 * _) ^ (257 * y) ^ (16843008 * r)), (l[d] = (v << 24) | (v >>> 8)), (f[d] = (v << 16) | (v >>> 16)), (u[d] = (v << 8) | (v >>> 24)), (p[d] = v), r ? ((r = y ^ t[t[t[g ^ y]]]), (i ^= t[t[i]])) : (r = i = 1); } })(); var d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], y = (r.AES = e.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for ( var t = (this._keyPriorReset = this._key), e = t.words, r = t.sigBytes / 4, i = 4 * ((this._nRounds = r + 6) + 1), o = (this._keySchedule = []), s = 0; s < i; s++ ) s < r ? (o[s] = e[s]) : ((h = o[s - 1]), s % r ? r > 6 && s % r == 4 && (h = (n[h >>> 24] << 24) | (n[(h >>> 16) & 255] << 16) | (n[(h >>> 8) & 255] << 8) | n[255 & h]) : ((h = (n[(h = (h << 8) | (h >>> 24)) >>> 24] << 24) | (n[(h >>> 16) & 255] << 16) | (n[(h >>> 8) & 255] << 8) | n[255 & h]), (h ^= d[(s / r) | 0] << 24)), (o[s] = o[s - r] ^ h)); for (var c = (this._invKeySchedule = []), a = 0; a < i; a++) { if (((s = i - a), a % 4)) var h = o[s]; else h = o[s - 4]; c[a] = a < 4 || s <= 4 ? h : l[n[h >>> 24]] ^ f[n[(h >>> 16) & 255]] ^ u[n[(h >>> 8) & 255]] ^ p[n[255 & h]]; } } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, s, c, a, h, n); }, decryptBlock: function (t, e) { var r = t[e + 1]; (t[e + 1] = t[e + 3]), (t[e + 3] = r), this._doCryptBlock(t, e, this._invKeySchedule, l, f, u, p, o), (r = t[e + 1]), (t[e + 1] = t[e + 3]), (t[e + 3] = r); }, _doCryptBlock: function (t, e, r, i, n, o, s, c) { for ( var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], u = t[e + 3] ^ r[3], p = 4, d = 1; d < a; d++ ) { var y = i[h >>> 24] ^ n[(l >>> 16) & 255] ^ o[(f >>> 8) & 255] ^ s[255 & u] ^ r[p++], _ = i[l >>> 24] ^ n[(f >>> 16) & 255] ^ o[(u >>> 8) & 255] ^ s[255 & h] ^ r[p++], g = i[f >>> 24] ^ n[(u >>> 16) & 255] ^ o[(h >>> 8) & 255] ^ s[255 & l] ^ r[p++], v = i[u >>> 24] ^ n[(h >>> 16) & 255] ^ o[(l >>> 8) & 255] ^ s[255 & f] ^ r[p++]; (h = y), (l = _), (f = g), (u = v); } (y = ((c[h >>> 24] << 24) | (c[(l >>> 16) & 255] << 16) | (c[(f >>> 8) & 255] << 8) | c[255 & u]) ^ r[p++]), (_ = ((c[l >>> 24] << 24) | (c[(f >>> 16) & 255] << 16) | (c[(u >>> 8) & 255] << 8) | c[255 & h]) ^ r[p++]), (g = ((c[f >>> 24] << 24) | (c[(u >>> 16) & 255] << 16) | (c[(h >>> 8) & 255] << 8) | c[255 & l]) ^ r[p++]), (v = ((c[u >>> 24] << 24) | (c[(h >>> 16) & 255] << 16) | (c[(l >>> 8) & 255] << 8) | c[255 & f]) ^ r[p++]), (t[e] = y), (t[e + 1] = _), (t[e + 2] = g), (t[e + 3] = v); }, keySize: 8, })); t.AES = e._createHelper(y); })(), i.AES); }, 165: function (t, e, r) { var i, n, o, s, c, a, h, l, f, u, p, d, y, _, g, v, m, S, B; t.exports = ((i = r(21)), r(506), void ( i.lib.Cipher || ((n = i), (o = n.lib), (s = o.Base), (c = o.WordArray), (a = o.BufferedBlockAlgorithm), (h = n.enc), h.Utf8, (l = h.Base64), (f = n.algo.EvpKDF), (u = o.Cipher = a.extend({ cfg: s.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e); }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e); }, init: function (t, e, r) { (this.cfg = this.cfg.extend(r)), (this._xformMode = t), (this._key = e), this.reset(); }, reset: function () { a.reset.call(this), this._doReset(); }, process: function (t) { return this._append(t), this._process(); }, finalize: function (t) { return t && this._append(t), this._doFinalize(); }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: (function () { function t(t) { return 'string' == typeof t ? B : m; } return function (e) { return { encrypt: function (r, i, n) { return t(i).encrypt(e, r, i, n); }, decrypt: function (r, i, n) { return t(i).decrypt(e, r, i, n); }, }; }; })(), })), (o.StreamCipher = u.extend({ _doFinalize: function () { return this._process(!0); }, blockSize: 1, })), (p = n.mode = {}), (d = o.BlockCipherMode = s.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e); }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e); }, init: function (t, e) { (this._cipher = t), (this._iv = e); }, })), (y = p.CBC = (function () { var t = d.extend(); function e(t, e, r) { var i, n = this._iv; n ? ((i = n), (this._iv = void 0)) : (i = this._prevBlock); for (var o = 0; o < r; o++) t[e + o] ^= i[o]; } return ( (t.Encryptor = t.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize; e.call(this, t, r, n), i.encryptBlock(t, r), (this._prevBlock = t.slice(r, r + n)); }, })), (t.Decryptor = t.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = t.slice(r, r + n); i.decryptBlock(t, r), e.call(this, t, r, n), (this._prevBlock = o); }, })), t ); })()), (_ = (n.pad = {}).Pkcs7 = { pad: function (t, e) { for ( var r = 4 * e, i = r - (t.sigBytes % r), n = (i << 24) | (i << 16) | (i << 8) | i, o = [], s = 0; s < i; s += 4 ) o.push(n); var a = c.create(o, i); t.concat(a); }, unpad: function (t) { var e = 255 & t.words[(t.sigBytes - 1) >>> 2]; t.sigBytes -= e; }, }), (o.BlockCipher = u.extend({ cfg: u.cfg.extend({ mode: y, padding: _ }), reset: function () { var t; u.reset.call(this); var e = this.cfg, r = e.iv, i = e.mode; this._xformMode == this._ENC_XFORM_MODE ? (t = i.createEncryptor) : ((t = i.createDecryptor), (this._minBufferSize = 1)), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : ((this._mode = t.call(i, this, r && r.words)), (this._mode.__creator = t)); }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e); }, _doFinalize: function () { var t, e = this.cfg.padding; return ( this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), (t = this._process(!0))) : ((t = this._process(!0)), e.unpad(t)), t ); }, blockSize: 4, })), (g = o.CipherParams = s.extend({ init: function (t) { this.mixIn(t); }, toString: function (t) { return (t || this.formatter).stringify(this); }, })), (v = (n.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; return (r ? c.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(l); }, parse: function (t) { var e, r = l.parse(t), i = r.words; return ( 1398893684 == i[0] && 1701076831 == i[1] && ((e = c.create(i.slice(2, 4))), i.splice(0, 4), (r.sigBytes -= 16)), g.create({ ciphertext: r, salt: e }) ); }, }), (m = o.SerializableCipher = s.extend({ cfg: s.extend({ format: v }), encrypt: function (t, e, r, i) { i = this.cfg.extend(i); var n = t.createEncryptor(r, i), o = n.finalize(e), s = n.cfg; return g.create({ ciphertext: o, key: r, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format, }); }, decrypt: function (t, e, r, i) { return ( (i = this.cfg.extend(i)), (e = this._parse(e, i.format)), t.createDecryptor(r, i).finalize(e.ciphertext) ); }, _parse: function (t, e) { return 'string' == typeof t ? e.parse(t, this) : t; }, })), (S = (n.kdf = {}).OpenSSL = { execute: function (t, e, r, i, n) { if ((i || (i = c.random(8)), n)) o = f.create({ keySize: e + r, hasher: n }).compute(t, i); else var o = f.create({ keySize: e + r }).compute(t, i); var s = c.create(o.words.slice(e), 4 * r); return (o.sigBytes = 4 * e), g.create({ key: o, iv: s, salt: i }); }, }), (B = o.PasswordBasedCipher = m.extend({ cfg: m.cfg.extend({ kdf: S }), encrypt: function (t, e, r, i) { var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize, i.salt, i.hasher); i.iv = n.iv; var o = m.encrypt.call(this, t, e, n.key, i); return o.mixIn(n), o; }, decrypt: function (t, e, r, i) { (i = this.cfg.extend(i)), (e = this._parse(e, i.format)); var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt, i.hasher); return (i.iv = n.iv), m.decrypt.call(this, t, e, n.key, i); }, }))) )); }, 21: function (t, e, r) { var i; t.exports = ((i = i || (function (t, e) { var i; if ( ('undefined' != typeof window && window.crypto && (i = window.crypto), 'undefined' != typeof self && self.crypto && (i = self.crypto), 'undefined' != typeof globalThis && globalThis.crypto && (i = globalThis.crypto), !i && 'undefined' != typeof window && window.msCrypto && (i = window.msCrypto), !i && void 0 !== r.g && r.g.crypto && (i = r.g.crypto), !i) ) try { i = r(477); } catch (t) {} var n = function () { if (i) { if ('function' == typeof i.getRandomValues) try { return i.getRandomValues(new Uint32Array(1))[0]; } catch (t) {} if ('function' == typeof i.randomBytes) try { return i.randomBytes(4).readInt32LE(); } catch (t) {} } throw new Error('Native crypto module could not be used to get secure random number.'); }, o = Object.create || (function () { function t() {} return function (e) { var r; return (t.prototype = e), (r = new t()), (t.prototype = null), r; }; })(), s = {}, c = (s.lib = {}), a = (c.Base = { extend: function (t) { var e = o(this); return ( t && e.mixIn(t), (e.hasOwnProperty('init') && this.init !== e.init) || (e.init = function () { e.$super.init.apply(this, arguments); }), (e.init.prototype = e), (e.$super = this), e ); }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t; }, init: function () {}, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty('toString') && (this.toString = t.toString); }, clone: function () { return this.init.prototype.extend(this); }, }), h = (c.WordArray = a.extend({ init: function (t, e) { (t = this.words = t || []), (this.sigBytes = null != e ? e : 4 * t.length); }, toString: function (t) { return (t || f).stringify(this); }, concat: function (t) { var e = this.words, r = t.words, i = this.sigBytes, n = t.sigBytes; if ((this.clamp(), i % 4)) for (var o = 0; o < n; o++) { var s = (r[o >>> 2] >>> (24 - (o % 4) * 8)) & 255; e[(i + o) >>> 2] |= s << (24 - ((i + o) % 4) * 8); } else for (var c = 0; c < n; c += 4) e[(i + c) >>> 2] = r[c >>> 2]; return (this.sigBytes += n), this; }, clamp: function () { var e = this.words, r = this.sigBytes; (e[r >>> 2] &= 4294967295 << (32 - (r % 4) * 8)), (e.length = t.ceil(r / 4)); }, clone: function () { var t = a.clone.call(this); return (t.words = this.words.slice(0)), t; }, random: function (t) { for (var e = [], r = 0; r < t; r += 4) e.push(n()); return new h.init(e, t); }, })), l = (s.enc = {}), f = (l.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = (e[n >>> 2] >>> (24 - (n % 4) * 8)) & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); } return i.join(''); }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i += 2) r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << (24 - (i % 8) * 4); return new h.init(r, e / 2); }, }), u = (l.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = (e[n >>> 2] >>> (24 - (n % 4) * 8)) & 255; i.push(String.fromCharCode(o)); } return i.join(''); }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++) r[i >>> 2] |= (255 & t.charCodeAt(i)) << (24 - (i % 4) * 8); return new h.init(r, e); }, }), p = (l.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(u.stringify(t))); } catch (t) { throw new Error('Malformed UTF-8 data'); } }, parse: function (t) { return u.parse(unescape(encodeURIComponent(t))); }, }), d = (c.BufferedBlockAlgorithm = a.extend({ reset: function () { (this._data = new h.init()), (this._nDataBytes = 0); }, _append: function (t) { 'string' == typeof t && (t = p.parse(t)), this._data.concat(t), (this._nDataBytes += t.sigBytes); }, _process: function (e) { var r, i = this._data, n = i.words, o = i.sigBytes, s = this.blockSize, c = o / (4 * s), a = (c = e ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0)) * s, l = t.min(4 * a, o); if (a) { for (var f = 0; f < a; f += s) this._doProcessBlock(n, f); (r = n.splice(0, a)), (i.sigBytes -= l); } return new h.init(r, l); }, clone: function () { var t = a.clone.call(this); return (t._data = this._data.clone()), t; }, _minBufferSize: 0, })), y = ((c.Hasher = d.extend({ cfg: a.extend(), init: function (t) { (this.cfg = this.cfg.extend(t)), this.reset(); }, reset: function () { d.reset.call(this), this._doReset(); }, update: function (t) { return this._append(t), this._process(), this; }, finalize: function (t) { return t && this._append(t), this._doFinalize(); }, blockSize: 16, _createHelper: function (t) { return function (e, r) { return new t.init(r).finalize(e); }; }, _createHmacHelper: function (t) { return function (e, r) { return new y.HMAC.init(t, r).finalize(e); }; }, })), (s.algo = {})); return s; })(Math)), i); }, 754: function (t, e, r) { var i, n, o; t.exports = ((i = r(21)), (o = (n = i).lib.WordArray), (n.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < r; o += 3) for ( var s = (((e[o >>> 2] >>> (24 - (o % 4) * 8)) & 255) << 16) | (((e[(o + 1) >>> 2] >>> (24 - ((o + 1) % 4) * 8)) & 255) << 8) | ((e[(o + 2) >>> 2] >>> (24 - ((o + 2) % 4) * 8)) & 255), c = 0; c < 4 && o + 0.75 * c < r; c++ ) n.push(i.charAt((s >>> (6 * (3 - c))) & 63)); var a = i.charAt(64); if (a) for (; n.length % 4; ) n.push(a); return n.join(''); }, parse: function (t) { var e = t.length, r = this._map, i = this._reverseMap; if (!i) { i = this._reverseMap = []; for (var n = 0; n < r.length; n++) i[r.charCodeAt(n)] = n; } var s = r.charAt(64); if (s) { var c = t.indexOf(s); -1 !== c && (e = c); } return (function (t, e, r) { for (var i = [], n = 0, s = 0; s < e; s++) if (s % 4) { var c = (r[t.charCodeAt(s - 1)] << ((s % 4) * 2)) | (r[t.charCodeAt(s)] >>> (6 - (s % 4) * 2)); (i[n >>> 2] |= c << (24 - (n % 4) * 8)), n++; } return o.create(i, n); })(t, e, i); }, _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', }), i.enc.Base64); }, 506: function (t, e, r) { var i, n, o, s, c, a, h, l; t.exports = ((l = r(21)), r(471), r(25), (o = (n = (i = l).lib).Base), (s = n.WordArray), (a = (c = i.algo).MD5), (h = c.EvpKDF = o.extend({ cfg: o.extend({ keySize: 4, hasher: a, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t); }, compute: function (t, e) { for ( var r, i = this.cfg, n = i.hasher.create(), o = s.create(), c = o.words, a = i.keySize, h = i.iterations; c.length < a; ) { r && n.update(r), (r = n.update(t).finalize(e)), n.reset(); for (var l = 1; l < h; l++) (r = n.finalize(r)), n.reset(); o.concat(r); } return (o.sigBytes = 4 * a), o; }, })), (i.EvpKDF = function (t, e, r) { return h.create(r).compute(t, e); }), l.EvpKDF); }, 25: function (t, e, r) { var i, n, o; t.exports = ((n = (i = r(21)).lib.Base), (o = i.enc.Utf8), void (i.algo.HMAC = n.extend({ init: function (t, e) { (t = this._hasher = new t.init()), 'string' == typeof e && (e = o.parse(e)); var r = t.blockSize, i = 4 * r; e.sigBytes > i && (e = t.finalize(e)), e.clamp(); for ( var n = (this._oKey = e.clone()), s = (this._iKey = e.clone()), c = n.words, a = s.words, h = 0; h < r; h++ ) (c[h] ^= 1549556828), (a[h] ^= 909522486); (n.sigBytes = s.sigBytes = i), this.reset(); }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey); }, update: function (t) { return this._hasher.update(t), this; }, finalize: function (t) { var e = this._hasher, r = e.finalize(t); return e.reset(), e.finalize(this._oKey.clone().concat(r)); }, }))); }, 636: function (t, e, r) { var i; t.exports = ((i = r(21)), (function (t) { var e = i, r = e.lib, n = r.WordArray, o = r.Hasher, s = e.algo, c = []; !(function () { for (var e = 0; e < 64; e++) c[e] = (4294967296 * t.abs(t.sin(e + 1))) | 0; })(); var a = (s.MD5 = o.extend({ _doReset: function () { this._hash = new n.init([1732584193, 4023233417, 2562383102, 271733878]); }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = (16711935 & ((n << 8) | (n >>> 24))) | (4278255360 & ((n << 24) | (n >>> 8))); } var o = this._hash.words, s = t[e + 0], a = t[e + 1], p = t[e + 2], d = t[e + 3], y = t[e + 4], _ = t[e + 5], g = t[e + 6], v = t[e + 7], m = t[e + 8], S = t[e + 9], B = t[e + 10], k = t[e + 11], E = t[e + 12], C = t[e + 13], w = t[e + 14], A = t[e + 15], x = o[0], b = o[1], T = o[2], D = o[3]; (x = h(x, b, T, D, s, 7, c[0])), (D = h(D, x, b, T, a, 12, c[1])), (T = h(T, D, x, b, p, 17, c[2])), (b = h(b, T, D, x, d, 22, c[3])), (x = h(x, b, T, D, y, 7, c[4])), (D = h(D, x, b, T, _, 12, c[5])), (T = h(T, D, x, b, g, 17, c[6])), (b = h(b, T, D, x, v, 22, c[7])), (x = h(x, b, T, D, m, 7, c[8])), (D = h(D, x, b, T, S, 12, c[9])), (T = h(T, D, x, b, B, 17, c[10])), (b = h(b, T, D, x, k, 22, c[11])), (x = h(x, b, T, D, E, 7, c[12])), (D = h(D, x, b, T, C, 12, c[13])), (T = h(T, D, x, b, w, 17, c[14])), (x = l(x, (b = h(b, T, D, x, A, 22, c[15])), T, D, a, 5, c[16])), (D = l(D, x, b, T, g, 9, c[17])), (T = l(T, D, x, b, k, 14, c[18])), (b = l(b, T, D, x, s, 20, c[19])), (x = l(x, b, T, D, _, 5, c[20])), (D = l(D, x, b, T, B, 9, c[21])), (T = l(T, D, x, b, A, 14, c[22])), (b = l(b, T, D, x, y, 20, c[23])), (x = l(x, b, T, D, S, 5, c[24])), (D = l(D, x, b, T, w, 9, c[25])), (T = l(T, D, x, b, d, 14, c[26])), (b = l(b, T, D, x, m, 20, c[27])), (x = l(x, b, T, D, C, 5, c[28])), (D = l(D, x, b, T, p, 9, c[29])), (T = l(T, D, x, b, v, 14, c[30])), (x = f(x, (b = l(b, T, D, x, E, 20, c[31])), T, D, _, 4, c[32])), (D = f(D, x, b, T, m, 11, c[33])), (T = f(T, D, x, b, k, 16, c[34])), (b = f(b, T, D, x, w, 23, c[35])), (x = f(x, b, T, D, a, 4, c[36])), (D = f(D, x, b, T, y, 11, c[37])), (T = f(T, D, x, b, v, 16, c[38])), (b = f(b, T, D, x, B, 23, c[39])), (x = f(x, b, T, D, C, 4, c[40])), (D = f(D, x, b, T, s, 11, c[41])), (T = f(T, D, x, b, d, 16, c[42])), (b = f(b, T, D, x, g, 23, c[43])), (x = f(x, b, T, D, S, 4, c[44])), (D = f(D, x, b, T, E, 11, c[45])), (T = f(T, D, x, b, A, 16, c[46])), (x = u(x, (b = f(b, T, D, x, p, 23, c[47])), T, D, s, 6, c[48])), (D = u(D, x, b, T, v, 10, c[49])), (T = u(T, D, x, b, w, 15, c[50])), (b = u(b, T, D, x, _, 21, c[51])), (x = u(x, b, T, D, E, 6, c[52])), (D = u(D, x, b, T, d, 10, c[53])), (T = u(T, D, x, b, B, 15, c[54])), (b = u(b, T, D, x, a, 21, c[55])), (x = u(x, b, T, D, m, 6, c[56])), (D = u(D, x, b, T, A, 10, c[57])), (T = u(T, D, x, b, g, 15, c[58])), (b = u(b, T, D, x, C, 21, c[59])), (x = u(x, b, T, D, y, 6, c[60])), (D = u(D, x, b, T, k, 10, c[61])), (T = u(T, D, x, b, p, 15, c[62])), (b = u(b, T, D, x, S, 21, c[63])), (o[0] = (o[0] + x) | 0), (o[1] = (o[1] + b) | 0), (o[2] = (o[2] + T) | 0), (o[3] = (o[3] + D) | 0); }, _doFinalize: function () { var e = this._data, r = e.words, i = 8 * this._nDataBytes, n = 8 * e.sigBytes; r[n >>> 5] |= 128 << (24 - (n % 32)); var o = t.floor(i / 4294967296), s = i; (r[15 + (((n + 64) >>> 9) << 4)] = (16711935 & ((o << 8) | (o >>> 24))) | (4278255360 & ((o << 24) | (o >>> 8)))), (r[14 + (((n + 64) >>> 9) << 4)] = (16711935 & ((s << 8) | (s >>> 24))) | (4278255360 & ((s << 24) | (s >>> 8)))), (e.sigBytes = 4 * (r.length + 1)), this._process(); for (var c = this._hash, a = c.words, h = 0; h < 4; h++) { var l = a[h]; a[h] = (16711935 & ((l << 8) | (l >>> 24))) | (4278255360 & ((l << 24) | (l >>> 8))); } return c; }, clone: function () { var t = o.clone.call(this); return (t._hash = this._hash.clone()), t; }, })); function h(t, e, r, i, n, o, s) { var c = t + ((e & r) | (~e & i)) + n + s; return ((c << o) | (c >>> (32 - o))) + e; } function l(t, e, r, i, n, o, s) { var c = t + ((e & i) | (r & ~i)) + n + s; return ((c << o) | (c >>> (32 - o))) + e; } function f(t, e, r, i, n, o, s) { var c = t + (e ^ r ^ i) + n + s; return ((c << o) | (c >>> (32 - o))) + e; } function u(t, e, r, i, n, o, s) { var c = t + (r ^ (e | ~i)) + n + s; return ((c << o) | (c >>> (32 - o))) + e; } (e.MD5 = o._createHelper(a)), (e.HmacMD5 = o._createHmacHelper(a)); })(Math), i.MD5); }, 19: function (t, e, r) { var i, n, o, s, c, a, h, l, f; t.exports = ((f = r(21)), r(9), r(25), (o = (n = (i = f).lib).Base), (s = n.WordArray), (a = (c = i.algo).SHA256), (h = c.HMAC), (l = c.PBKDF2 = o.extend({ cfg: o.extend({ keySize: 4, hasher: a, iterations: 25e4 }), init: function (t) { this.cfg = this.cfg.extend(t); }, compute: function (t, e) { for ( var r = this.cfg, i = h.create(r.hasher, t), n = s.create(), o = s.create([1]), c = n.words, a = o.words, l = r.keySize, f = r.iterations; c.length < l; ) { var u = i.update(e).finalize(o); i.reset(); for (var p = u.words, d = p.length, y = u, _ = 1; _ < f; _++) { (y = i.finalize(y)), i.reset(); for (var g = y.words, v = 0; v < d; v++) p[v] ^= g[v]; } n.concat(u), a[0]++; } return (n.sigBytes = 4 * l), n; }, })), (i.PBKDF2 = function (t, e, r) { return l.create(r).compute(t, e); }), f.PBKDF2); }, 298: function (t, e, r) { var i; t.exports = ((i = r(21)), r(754), r(636), r(506), r(165), (function () { var t = i, e = t.lib.StreamCipher, r = t.algo, n = [], o = [], s = [], c = (r.Rabbit = e.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++) t[r] = (16711935 & ((t[r] << 8) | (t[r] >>> 24))) | (4278255360 & ((t[r] << 24) | (t[r] >>> 8))); var i = (this._X = [ t[0], (t[3] << 16) | (t[2] >>> 16), t[1], (t[0] << 16) | (t[3] >>> 16), t[2], (t[1] << 16) | (t[0] >>> 16), t[3], (t[2] << 16) | (t[1] >>> 16), ]), n = (this._C = [ (t[2] << 16) | (t[2] >>> 16), (4294901760 & t[0]) | (65535 & t[1]), (t[3] << 16) | (t[3] >>> 16), (4294901760 & t[1]) | (65535 & t[2]), (t[0] << 16) | (t[0] >>> 16), (4294901760 & t[2]) | (65535 & t[3]), (t[1] << 16) | (t[1] >>> 16), (4294901760 & t[3]) | (65535 & t[0]), ]); for (this._b = 0, r = 0; r < 4; r++) a.call(this); for (r = 0; r < 8; r++) n[r] ^= i[(r + 4) & 7]; if (e) { var o = e.words, s = o[0], c = o[1], h = (16711935 & ((s << 8) | (s >>> 24))) | (4278255360 & ((s << 24) | (s >>> 8))), l = (16711935 & ((c << 8) | (c >>> 24))) | (4278255360 & ((c << 24) | (c >>> 8))), f = (h >>> 16) | (4294901760 & l), u = (l << 16) | (65535 & h); for ( n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u, r = 0; r < 4; r++ ) a.call(this); } }, _doProcessBlock: function (t, e) { var r = this._X; a.call(this), (n[0] = r[0] ^ (r[5] >>> 16) ^ (r[3] << 16)), (n[1] = r[2] ^ (r[7] >>> 16) ^ (r[5] << 16)), (n[2] = r[4] ^ (r[1] >>> 16) ^ (r[7] << 16)), (n[3] = r[6] ^ (r[3] >>> 16) ^ (r[1] << 16)); for (var i = 0; i < 4; i++) (n[i] = (16711935 & ((n[i] << 8) | (n[i] >>> 24))) | (4278255360 & ((n[i] << 24) | (n[i] >>> 8)))), (t[e + i] ^= n[i]); }, blockSize: 4, ivSize: 2, })); function a() { for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r]; for ( e[0] = (e[0] + 1295307597 + this._b) | 0, e[1] = (e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0)) | 0, e[2] = (e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0)) | 0, e[3] = (e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0)) | 0, e[4] = (e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0)) | 0, e[5] = (e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0)) | 0, e[6] = (e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0)) | 0, e[7] = (e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0)) | 0, this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0, r = 0; r < 8; r++ ) { var i = t[r] + e[r], n = 65535 & i, c = i >>> 16, a = ((((n * n) >>> 17) + n * c) >>> 15) + c * c, h = (((4294901760 & i) * i) | 0) + (((65535 & i) * i) | 0); s[r] = a ^ h; } (t[0] = (s[0] + ((s[7] << 16) | (s[7] >>> 16)) + ((s[6] << 16) | (s[6] >>> 16))) | 0), (t[1] = (s[1] + ((s[0] << 8) | (s[0] >>> 24)) + s[7]) | 0), (t[2] = (s[2] + ((s[1] << 16) | (s[1] >>> 16)) + ((s[0] << 16) | (s[0] >>> 16))) | 0), (t[3] = (s[3] + ((s[2] << 8) | (s[2] >>> 24)) + s[1]) | 0), (t[4] = (s[4] + ((s[3] << 16) | (s[3] >>> 16)) + ((s[2] << 16) | (s[2] >>> 16))) | 0), (t[5] = (s[5] + ((s[4] << 8) | (s[4] >>> 24)) + s[3]) | 0), (t[6] = (s[6] + ((s[5] << 16) | (s[5] >>> 16)) + ((s[4] << 16) | (s[4] >>> 16))) | 0), (t[7] = (s[7] + ((s[6] << 8) | (s[6] >>> 24)) + s[5]) | 0); } t.Rabbit = e._createHelper(c); })(), i.Rabbit); }, 193: function (t, e, r) { var i; t.exports = ((i = r(21)), r(754), r(636), r(506), r(165), (function () { var t = i, e = t.lib.StreamCipher, r = t.algo, n = (r.RC4 = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes, i = (this._S = []), n = 0; n < 256; n++) i[n] = n; n = 0; for (var o = 0; n < 256; n++) { var s = n % r, c = (e[s >>> 2] >>> (24 - (s % 4) * 8)) & 255; o = (o + i[n] + c) % 256; var a = i[n]; (i[n] = i[o]), (i[o] = a); } this._i = this._j = 0; }, _doProcessBlock: function (t, e) { t[e] ^= o.call(this); }, keySize: 8, ivSize: 0, })); function o() { for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) { r = (r + t[(e = (e + 1) % 256)]) % 256; var o = t[e]; (t[e] = t[r]), (t[r] = o), (i |= t[(t[e] + t[r]) % 256] << (24 - 8 * n)); } return (this._i = e), (this._j = r), i; } t.RC4 = e._createHelper(n); var s = (r.RC4Drop = n.extend({ cfg: n.cfg.extend({ drop: 192 }), _doReset: function () { n._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--) o.call(this); }, })); t.RC4Drop = e._createHelper(s); })(), i.RC4); }, 471: function (t, e, r) { var i, n, o, s, c, a, h, l; t.exports = ((n = (i = l = r(21)).lib), (o = n.WordArray), (s = n.Hasher), (c = i.algo), (a = []), (h = c.SHA1 = s.extend({ _doReset: function () { this._hash = new o.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], h = 0; h < 80; h++) { if (h < 16) a[h] = 0 | t[e + h]; else { var l = a[h - 3] ^ a[h - 8] ^ a[h - 14] ^ a[h - 16]; a[h] = (l << 1) | (l >>> 31); } var f = ((i << 5) | (i >>> 27)) + c + a[h]; (f += h < 20 ? 1518500249 + ((n & o) | (~n & s)) : h < 40 ? 1859775393 + (n ^ o ^ s) : h < 60 ? ((n & o) | (n & s) | (o & s)) - 1894007588 : (n ^ o ^ s) - 899497514), (c = s), (s = o), (o = (n << 30) | (n >>> 2)), (n = i), (i = f); } (r[0] = (r[0] + i) | 0), (r[1] = (r[1] + n) | 0), (r[2] = (r[2] + o) | 0), (r[3] = (r[3] + s) | 0), (r[4] = (r[4] + c) | 0); }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return ( (e[i >>> 5] |= 128 << (24 - (i % 32))), (e[14 + (((i + 64) >>> 9) << 4)] = Math.floor(r / 4294967296)), (e[15 + (((i + 64) >>> 9) << 4)] = r), (t.sigBytes = 4 * e.length), this._process(), this._hash ); }, clone: function () { var t = s.clone.call(this); return (t._hash = this._hash.clone()), t; }, })), (i.SHA1 = s._createHelper(h)), (i.HmacSHA1 = s._createHmacHelper(h)), l.SHA1); }, 9: function (t, e, r) { var i;