43167416eee8d8a51ab7bae3919ad7ba683bef1375dd9a7d583fe2057a262989.json 60 KB

1
  1. {"ast":null,"code":";\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory();\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], factory);\n } else {\n // Global (browser)\n root.CryptoJS = factory();\n }\n})(this, function () {\n /*globals window, global, require*/\n\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || function (Math, undefined) {\n var crypto;\n\n // Native crypto from window (Browser)\n if (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n }\n\n // Native crypto in web worker (Browser)\n if (typeof self !== 'undefined' && self.crypto) {\n crypto = self.crypto;\n }\n\n // Native crypto from worker\n if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n crypto = globalThis.crypto;\n }\n\n // Native (experimental IE 11) crypto from window (Browser)\n if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n }\n\n // Native crypto from global (NodeJS)\n if (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n }\n\n // Native crypto import via require (NodeJS)\n if (!crypto && typeof require === 'function') {\n try {\n crypto = require('crypto');\n } catch (err) {}\n }\n\n /*\n * Cryptographically secure pseudorandom number generator\n *\n * As Math.random() is cryptographically not safe to use\n */\n var cryptoSecureRandomInt = function () {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n }\n\n // Use randomBytes method (NodeJS)\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n throw new Error('Native crypto module could not be used to get secure random number.');\n };\n\n /*\n * Local polyfill of Object.create\n */\n var create = Object.create || function () {\n function F() {}\n return function (obj) {\n var subtype;\n F.prototype = obj;\n subtype = new F();\n F.prototype = null;\n return subtype;\n };\n }();\n\n /**\n * CryptoJS namespace.\n */\n var C = {};\n\n /**\n * Library namespace.\n */\n var C_lib = C.lib = {};\n\n /**\n * Base object for prototypal inheritance.\n */\n var Base = C_lib.Base = function () {\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function (overrides) {\n // Spawn\n var subtype = create(this);\n\n // Augment\n if (overrides) {\n subtype.mixIn(overrides);\n }\n\n // Create default initializer\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n }\n\n // Initializer's prototype is the subtype object\n subtype.init.prototype = subtype;\n\n // Reference supertype\n subtype.$super = this;\n return subtype;\n },\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function () {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n return instance;\n },\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function () {},\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function (properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n }\n\n // IE won't copy toString using the loop above\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function () {\n return this.init.prototype.extend(this);\n }\n };\n }();\n\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function (words, sigBytes) {\n words = this.words = words || [];\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function (encoder) {\n return (encoder || Hex).stringify(this);\n },\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function (wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes;\n\n // Clamp excess bits\n this.clamp();\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;\n }\n } else {\n // Copy one word at a time\n for (var j = 0; j < thatSigBytes; j += 4) {\n thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];\n }\n }\n this.sigBytes += thatSigBytes;\n\n // Chainable\n return this;\n },\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function () {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes;\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;\n words.length = Math.ceil(sigBytes / 4);\n },\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function () {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n return clone;\n },\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function (nBytes) {\n var words = [];\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n return new WordArray.init(words, nBytes);\n }\n });\n\n /**\n * Encoder namespace.\n */\n var C_enc = C.enc = {};\n\n /**\n * Hex encoding strategy.\n */\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var hexChars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n return hexChars.join('');\n },\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function (hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;\n }\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n\n /**\n * Latin1 encoding strategy.\n */\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var latin1Chars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n return latin1Chars.join('');\n },\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function (latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n return new WordArray.init(words, latin1StrLength);\n }\n };\n\n /**\n * UTF-8 encoding strategy.\n */\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function (wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function (utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function () {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function (data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n }\n\n // Append\n this._data.concat(data);\n this._nDataBytes += data.sigBytes;\n },\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function (doFlush) {\n var processedWords;\n\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4;\n\n // Count blocks ready\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n\n // Count words ready\n var nWordsReady = nBlocksReady * blockSize;\n\n // Count bytes ready\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n // Process blocks\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n }\n\n // Return processed words\n return new WordArray.init(processedWords, nBytesReady);\n },\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function () {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n return clone;\n },\n _minBufferSize: 0\n });\n\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function (cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg);\n\n // Set initial values\n this.reset();\n },\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function () {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this);\n\n // Perform concrete-hasher logic\n this._doReset();\n },\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function (messageUpdate) {\n // Append\n this._append(messageUpdate);\n\n // Update the hash\n this._process();\n\n // Chainable\n return this;\n },\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function (messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n\n // Perform concrete-hasher logic\n var hash = this._doFinalize();\n return hash;\n },\n blockSize: 512 / 32,\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function (hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function (hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n\n /**\n * Algorithm namespace.\n */\n var C_algo = C.algo = {};\n return C;\n }(Math);\n return CryptoJS;\n});","map":{"version":3,"names":["root","factory","exports","module","define","amd","CryptoJS","Math","undefined","crypto","window","self","globalThis","msCrypto","global","require","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","Error","create","Object","F","obj","subtype","prototype","C","C_lib","lib","Base","extend","overrides","mixIn","hasOwnProperty","init","$super","apply","arguments","instance","properties","propertyName","toString","clone","WordArray","words","sigBytes","length","encoder","Hex","stringify","concat","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","i","thatByte","j","ceil","call","slice","random","nBytes","push","C_enc","enc","hexChars","bite","join","parse","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","String","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","e","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","data","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","offset","_doProcessBlock","splice","Hasher","cfg","_doReset","update","messageUpdate","finalize","hash","_doFinalize","_createHelper","hasher","message","_createHmacHelper","key","C_algo","HMAC","algo"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/crypto-js/core.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}