{"version":3,"sources":["webpack:///./node_modules/extend/index.js","webpack:///./node_modules/faker/index.js","webpack:///./node_modules/faker/lib/index.js","webpack:///./node_modules/faker/lib/fake.js","webpack:///./node_modules/faker/lib/helpers.js","webpack:///./node_modules/faker/lib/address.js","webpack:///./node_modules/faker/lib/animal.js","webpack:///./node_modules/faker/lib/company.js","webpack:///./node_modules/faker/lib/finance.js","webpack:///./node_modules/faker/lib/iban.js","webpack:///./node_modules/faker/lib/image.js","webpack:///./node_modules/faker/lib/image_providers/lorempixel.js","webpack:///./node_modules/faker/lib/image_providers/unsplash.js","webpack:///./node_modules/faker/lib/image_providers/lorempicsum.js","webpack:///./node_modules/faker/lib/hacker.js","webpack:///./node_modules/faker/lib/internet.js","webpack:///./node_modules/faker/lib/database.js","webpack:///./node_modules/faker/lib/date.js","webpack:///./node_modules/faker/lib/commerce.js","webpack:///./node_modules/faker/lib/git.js","webpack:///./node_modules/faker/lib/datatype.js"],"names":["_typeof2","_interopRequireDefault","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","default","faker","locales","Faker","opts","self","this","locale","localeFallback","definitions","_definitions","keys","forEach","d","p","get","Fake","fake","Unique","unique","Mersenne","mersenne","Random","random","Helpers","helpers","Name","Address","address","Animal","animal","Company","company","Finance","finance","Image","image","Lorem","lorem","Hacker","hacker","Internet","internet","Database","database","Phone","phone","_Date","date","_Time","time","Commerce","commerce","System","system","Git","git","Vehicle","vehicle","Music","music","Datatype","datatype","setLocale","seed","seedValue","str","Error","start","search","end","token","substr","method","replace","regExp","matches","exec","parameters","parts","split","params","result","fn","JSON","parse","err","randomize","array","arrayElement","slugify","string","replaceSymbolWithNumber","symbol","undefined","charAt","number","min","max","replaceSymbols","alpha","boolean","replaceCreditCardSymbols","regexpStyleStringParse","numberList","map","num","parseInt","checkNum","reverse","index","reduce","prev","curr","repeatString","text","tmp","repetitions","RANGE_REP_REG","REP_REG","RANGE_REG","match","slice","shuffle","o","x","j","mustache","data","re","RegExp","createCard","findName","userName","email","streetName","streetAddress","secondaryAddress","city","state","country","zipCode","latitude","longitude","phoneNumber","domainName","companyName","catchPhrase","bs","words","sentence","sentences","paragraph","createTransaction","contextualCard","firstName","avatar","past","Date","userCard","amount","accountName","mask","join","transaction_type","account","f","format","localeFormat","postcode","zipCodeByState","zipRange","postcode_by_state","formats","city_name","push","cityPrefix","city_prefix","citySuffix","city_suffix","cityName","suffix","streetSuffix","lastName","useFullAddress","street_suffix","streetPrefix","street_prefix","county","countryCode","alphaCode","country_code","country_code_alpha_3","useAbbr","stateAbbr","state_abbr","precision","parseFloat","toPrecision","toFixed","direction","direction_abbr","schema","cardinalDirection","ordinalDirection","nearbyGPSCoordinate","coordinate","radius","isMetric","degreesToRadians","degrees","Math","PI","radiansToDegrees","radians","randomCoord","bearing","distance","R","lat1","lon1","lat2","asin","sin","cos","lon2","atan2","coordinateWithOffset","timeZone","time_zone","dog","cat","snake","bear","lion","cetacean","horse","bird","cow","fish","crocodilia","insect","rabbit","type","suffixes","companySuffix","catchPhraseAdjective","adjective","catchPhraseDescriptor","descriptor","catchPhraseNoun","noun","bsAdjective","bs_adjective","bsBuzz","bs_verb","bsNoun","bs_noun","ibanLib","template","account_type","routingNumber","sum","Number","ceil","parens","ellipsis","dec","autoFormat","randValue","pow","toLocaleString","minimumFractionDigits","transactionType","currencyCode","objectElement","currency","currencyName","currencySymbol","bitcoinAddress","addressLength","litecoinAddress","creditCardNumber","provider","credit_card","creditCardCVV","cvv","ethereumAddress","hexaDecimal","toLowerCase","iban","formatted","ibanFormat","find","currentFormat","s","count","b","bban","c","pattern100","pattern10","substring","checksum","mod97","toDigitString","bic","vowels","prob","iso3166","transactionDescription","transaction","business","toUpperCase","charCodeAt","digitStr","m","total","Lorempixel","Unsplash","LoremPicsum","width","height","imageUrl","category","https","protocol","url","abstract","animals","cats","food","nightlife","fashion","people","nature","sports","technics","transport","dataUri","color","encodeURIComponent","lorempixel","unsplash","lorempicsum","keyword","test","technology","objects","buildings","grayscale","blur","imageGrayscale","imageBlurred","imageRandomSeeded","abbreviation","verb","ingverb","phrase","random_ua","avatar_uri","free_email","exampleEmail","example_email","httpMethod","domainWord","domainSuffix","domain_suffix","ip","ipv6","randHash","port","userAgent","generate","baseRed255","baseGreen255","baseBlue255","red","floor","green","blue","redStr","greenStr","blueStr","mac","sep","validSep","indexOf","password","len","memorable","pattern","prefix","consonant","vowel","_password","char","n","String","fromCharCode","column","collation","engine","years","refDate","range","getTime","setTime","future","between","from","to","fromMilli","dateOffset","betweens","newDates","lastDate","recent","days","soon","month","abbr","context","source","weekday","department","productName","productAdjective","productMaterial","product","price","round","product_name","material","productDescription","product_description","hexChars","branch","commitEntry","entry","merge","commitMessage","commitSha","commit","shortSha","seed_array","isNaN","randomNumber","rand","float","datetime","minMax","setFullYear","maxLength","charCodeOption","returnString","uuid","placeholder","wholeString","json","returnObject","prop","stringify","returnArray"],"mappings":"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AM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,Q,kCCljBxkDhU,EAAgB,QAhQJ,SAAeY,GACzB,IAAI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","file":"js/vendors~application~db300d2f-41efd96b2078ff753268.chunk.js","sourcesContent":["'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n}; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\nvar setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n}; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\nvar getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n};\n\nmodule.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || (0, _typeof2.default)(target) !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n};","\"use strict\";\n\n// since we are requiring the top level of faker, load all locales by default\nvar Faker = require('./lib');\n\nvar faker = new Faker({\n locales: require('./lib/locales')\n});\nmodule['exports'] = faker;","\"use strict\";\n\n/*\n\n this index.js file is used for including the faker library as a CommonJS module, instead of a bundle\n\n you can include the faker library into your existing node.js application by requiring the entire /faker directory\n\n var faker = require(./faker);\n var randomName = faker.name.findName();\n\n you can also simply include the \"faker.js\" file which is the auto-generated bundled version of the faker library\n\n var faker = require(./customAppPath/faker);\n var randomName = faker.name.findName();\n\n\n if you plan on modifying the faker library you should be performing your changes in the /lib/ directory\n\n*/\n\n/**\n *\n * @namespace faker\n */\nfunction Faker(opts) {\n var self = this;\n opts = opts || {}; // assign options\n\n var locales = self.locales || opts.locales || {};\n var locale = self.locale || opts.locale || \"en\";\n var localeFallback = self.localeFallback || opts.localeFallback || \"en\";\n self.locales = locales;\n self.locale = locale;\n self.localeFallback = localeFallback;\n self.definitions = {};\n var _definitions = {\n \"name\": [\"first_name\", \"last_name\", \"prefix\", \"suffix\", \"binary_gender\", \"gender\", \"title\", \"male_prefix\", \"female_prefix\", \"male_first_name\", \"female_first_name\", \"male_middle_name\", \"female_middle_name\", \"male_last_name\", \"female_last_name\"],\n \"address\": [\"city_name\", \"city_prefix\", \"city_suffix\", \"street_suffix\", \"county\", \"country\", \"country_code\", \"country_code_alpha_3\", \"state\", \"state_abbr\", \"street_prefix\", \"postcode\", \"postcode_by_state\", \"direction\", \"direction_abbr\", \"time_zone\"],\n \"animal\": [\"dog\", \"cat\", \"snake\", \"bear\", \"lion\", \"cetacean\", \"insect\", \"crocodilia\", \"cow\", \"bird\", \"fish\", \"rabbit\", \"horse\", \"type\"],\n \"company\": [\"adjective\", \"noun\", \"descriptor\", \"bs_adjective\", \"bs_noun\", \"bs_verb\", \"suffix\"],\n \"lorem\": [\"words\"],\n \"hacker\": [\"abbreviation\", \"adjective\", \"noun\", \"verb\", \"ingverb\", \"phrase\"],\n \"phone_number\": [\"formats\"],\n \"finance\": [\"account_type\", \"transaction_type\", \"currency\", \"iban\", \"credit_card\"],\n \"internet\": [\"avatar_uri\", \"domain_suffix\", \"free_email\", \"example_email\", \"password\"],\n \"commerce\": [\"color\", \"department\", \"product_name\", \"price\", \"categories\", \"product_description\"],\n \"database\": [\"collation\", \"column\", \"engine\", \"type\"],\n \"system\": [\"mimeTypes\", \"directoryPaths\"],\n \"date\": [\"month\", \"weekday\"],\n \"vehicle\": [\"vehicle\", \"manufacturer\", \"model\", \"type\", \"fuel\", \"vin\", \"color\"],\n \"music\": [\"genre\"],\n \"title\": \"\",\n \"separator\": \"\"\n }; // Create a Getter for all definitions.foo.bar properties\n\n Object.keys(_definitions).forEach(function (d) {\n if (typeof self.definitions[d] === \"undefined\") {\n self.definitions[d] = {};\n }\n\n if (typeof _definitions[d] === \"string\") {\n self.definitions[d] = _definitions[d];\n return;\n }\n\n _definitions[d].forEach(function (p) {\n Object.defineProperty(self.definitions[d], p, {\n get: function get() {\n if (typeof self.locales[self.locale][d] === \"undefined\" || typeof self.locales[self.locale][d][p] === \"undefined\") {\n // certain localization sets contain less data then others.\n // in the case of a missing definition, use the default localeFallback to substitute the missing set data\n // throw new Error('unknown property ' + d + p)\n return self.locales[localeFallback][d][p];\n } else {\n // return localized data\n return self.locales[self.locale][d][p];\n }\n }\n });\n });\n });\n\n var Fake = require('./fake');\n\n self.fake = new Fake(self).fake;\n\n var Unique = require('./unique');\n\n self.unique = new Unique(self).unique;\n\n var Mersenne = require('./mersenne');\n\n self.mersenne = new Mersenne();\n\n var Random = require('./random');\n\n self.random = new Random(self);\n\n var Helpers = require('./helpers');\n\n self.helpers = new Helpers(self);\n\n var Name = require('./name');\n\n self.name = new Name(self);\n\n var Address = require('./address');\n\n self.address = new Address(self);\n\n var Animal = require('./animal');\n\n self.animal = new Animal(self);\n\n var Company = require('./company');\n\n self.company = new Company(self);\n\n var Finance = require('./finance');\n\n self.finance = new Finance(self);\n\n var Image = require('./image');\n\n self.image = new Image(self);\n\n var Lorem = require('./lorem');\n\n self.lorem = new Lorem(self);\n\n var Hacker = require('./hacker');\n\n self.hacker = new Hacker(self);\n\n var Internet = require('./internet');\n\n self.internet = new Internet(self);\n\n var Database = require('./database');\n\n self.database = new Database(self);\n\n var Phone = require('./phone_number');\n\n self.phone = new Phone(self);\n\n var _Date = require('./date');\n\n self.date = new _Date(self);\n\n var _Time = require('./time');\n\n self.time = new _Time(self);\n\n var Commerce = require('./commerce');\n\n self.commerce = new Commerce(self);\n\n var System = require('./system');\n\n self.system = new System(self);\n\n var Git = require('./git');\n\n self.git = new Git(self);\n\n var Vehicle = require('./vehicle');\n\n self.vehicle = new Vehicle(self);\n\n var Music = require('./music');\n\n self.music = new Music(self);\n\n var Datatype = require('./datatype');\n\n self.datatype = new Datatype(self);\n}\n\n;\n\nFaker.prototype.setLocale = function (locale) {\n this.locale = locale;\n};\n\nFaker.prototype.seed = function (value) {\n var Random = require('./random');\n\n var Datatype = require('./datatype');\n\n this.seedValue = value;\n this.random = new Random(this, this.seedValue);\n this.datatype = new Datatype(this, this.seedValue);\n};\n\nmodule['exports'] = Faker;","\"use strict\";\n\n/*\n fake.js - generator method for combining faker methods based on string input\n\n*/\nfunction Fake(faker) {\n /**\n * Generator method for combining faker methods based on string input\n *\n * __Example:__\n *\n * ```\n * console.log(faker.fake('{{name.lastName}}, {{name.firstName}} {{name.suffix}}'));\n * //outputs: \"Marks, Dean Sr.\"\n * ```\n *\n * This will interpolate the format string with the value of methods\n * [name.lastName]{@link faker.name.lastName}, [name.firstName]{@link faker.name.firstName},\n * and [name.suffix]{@link faker.name.suffix}\n *\n * @method faker.fake\n * @param {string} str\n */\n this.fake = function fake(str) {\n // setup default response as empty string\n var res = ''; // if incoming str parameter is not provided, return error message\n\n if (typeof str !== 'string' || str.length === 0) {\n throw new Error('string parameter is required!');\n } // find first matching {{ and }}\n\n\n var start = str.search('{{');\n var end = str.search('}}'); // if no {{ and }} is found, we are done\n\n if (start === -1 && end === -1) {\n return str;\n } // console.log('attempting to parse', str);\n // extract method name from between the {{ }} that we found\n // for example: {{name.firstName}}\n\n\n var token = str.substr(start + 2, end - start - 2);\n var method = token.replace('}}', '').replace('{{', ''); // console.log('method', method)\n // extract method parameters\n\n var regExp = /\\(([^)]+)\\)/;\n var matches = regExp.exec(method);\n var parameters = '';\n\n if (matches) {\n method = method.replace(regExp, '');\n parameters = matches[1];\n } // split the method into module and function\n\n\n var parts = method.split('.');\n\n if (typeof faker[parts[0]] === \"undefined\") {\n throw new Error('Invalid module: ' + parts[0]);\n }\n\n if (typeof faker[parts[0]][parts[1]] === \"undefined\") {\n throw new Error('Invalid method: ' + parts[0] + \".\" + parts[1]);\n } // assign the function from the module.function namespace\n\n\n var fn = faker[parts[0]][parts[1]]; // If parameters are populated here, they are always going to be of string type\n // since we might actually be dealing with an object or array,\n // we always attempt to the parse the incoming parameters into JSON\n\n var params; // Note: we experience a small performance hit here due to JSON.parse try / catch\n // If anyone actually needs to optimize this specific code path, please open a support issue on github\n\n try {\n params = JSON.parse(parameters);\n } catch (err) {\n // since JSON.parse threw an error, assume parameters was actually a string\n params = parameters;\n }\n\n var result;\n\n if (typeof params === \"string\" && params.length === 0) {\n result = fn.call(this);\n } else {\n result = fn.call(this, params);\n } // replace the found tag with the returned fake value\n\n\n res = str.replace('{{' + token + '}}', result); // return the response recursively until we are done finding all tags\n\n return fake(res);\n };\n\n return this;\n}\n\nmodule['exports'] = Fake;","\"use strict\";\n\n/**\n *\n * @namespace faker.helpers\n */\nvar Helpers = function Helpers(faker) {\n var self = this;\n /**\n * backward-compatibility\n *\n * @method faker.helpers.randomize\n * @param {array} array\n */\n\n self.randomize = function (array) {\n array = array || [\"a\", \"b\", \"c\"];\n return faker.random.arrayElement(array);\n };\n /**\n * slugifies string\n *\n * @method faker.helpers.slugify\n * @param {string} string\n */\n\n\n self.slugify = function (string) {\n string = string || \"\";\n return string.replace(/ /g, '-').replace(/[^\\一-龠\\ぁ-ゔ\\ァ-ヴー\\w\\.\\-]+/g, '');\n };\n /**\n * parses string for a symbol and replace it with a random number from 1-10\n *\n * @method faker.helpers.replaceSymbolWithNumber\n * @param {string} string\n * @param {string} symbol defaults to `\"#\"`\n */\n\n\n self.replaceSymbolWithNumber = function (string, symbol) {\n string = string || \"\"; // default symbol is '#'\n\n if (symbol === undefined) {\n symbol = '#';\n }\n\n var str = '';\n\n for (var i = 0; i < string.length; i++) {\n if (string.charAt(i) == symbol) {\n str += faker.datatype.number(9);\n } else if (string.charAt(i) == \"!\") {\n str += faker.datatype.number({\n min: 2,\n max: 9\n });\n } else {\n str += string.charAt(i);\n }\n }\n\n return str;\n };\n /**\n * parses string for symbols (numbers or letters) and replaces them appropriately (# will be replaced with number,\n * ? with letter and * will be replaced with number or letter)\n *\n * @method faker.helpers.replaceSymbols\n * @param {string} string\n */\n\n\n self.replaceSymbols = function (string) {\n string = string || \"\";\n var alpha = ['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'];\n var str = '';\n\n for (var i = 0; i < string.length; i++) {\n if (string.charAt(i) == \"#\") {\n str += faker.datatype.number(9);\n } else if (string.charAt(i) == \"?\") {\n str += faker.random.arrayElement(alpha);\n } else if (string.charAt(i) == \"*\") {\n str += faker.datatype.boolean() ? faker.random.arrayElement(alpha) : faker.datatype.number(9);\n } else {\n str += string.charAt(i);\n }\n }\n\n return str;\n };\n /**\n * replace symbols in a credit card schems including Luhn checksum\n *\n * @method faker.helpers.replaceCreditCardSymbols\n * @param {string} string\n * @param {string} symbol\n */\n\n\n self.replaceCreditCardSymbols = function (string, symbol) {\n // default values required for calling method without arguments\n string = string || \"6453-####-####-####-###L\";\n symbol = symbol || \"#\"; // Function calculating the Luhn checksum of a number string\n\n var getCheckBit = function getCheckBit(number) {\n number.reverse();\n number = number.map(function (num, index) {\n if (index % 2 === 0) {\n num *= 2;\n\n if (num > 9) {\n num -= 9;\n }\n }\n\n return num;\n });\n var sum = number.reduce(function (prev, curr) {\n return prev + curr;\n });\n return sum % 10;\n };\n\n string = faker.helpers.regexpStyleStringParse(string); // replace [4-9] with a random number in range etc...\n\n string = faker.helpers.replaceSymbolWithNumber(string, symbol); // replace ### with random numbers\n\n var numberList = string.replace(/\\D/g, \"\").split(\"\").map(function (num) {\n return parseInt(num);\n });\n var checkNum = getCheckBit(numberList);\n return string.replace(\"L\", checkNum);\n };\n /** string repeat helper, alternative to String.prototype.repeat.... See PR #382\n *\n * @method faker.helpers.repeatString\n * @param {string} string\n * @param {number} num\n */\n\n\n self.repeatString = function (string, num) {\n if (typeof num === \"undefined\") {\n num = 0;\n }\n\n var text = \"\";\n\n for (var i = 0; i < num; i++) {\n text += string.toString();\n }\n\n return text;\n };\n /**\n * parse string patterns in a similar way to RegExp\n *\n * e.g. \"#{3}test[1-5]\" -> \"###test4\"\n *\n * @method faker.helpers.regexpStyleStringParse\n * @param {string} string\n */\n\n\n self.regexpStyleStringParse = function (string) {\n string = string || \"\"; // Deal with range repeat `{min,max}`\n\n var RANGE_REP_REG = /(.)\\{(\\d+)\\,(\\d+)\\}/;\n var REP_REG = /(.)\\{(\\d+)\\}/;\n var RANGE_REG = /\\[(\\d+)\\-(\\d+)\\]/;\n var min, max, tmp, repetitions;\n var token = string.match(RANGE_REP_REG);\n\n while (token !== null) {\n min = parseInt(token[2]);\n max = parseInt(token[3]); // switch min and max\n\n if (min > max) {\n tmp = max;\n max = min;\n min = tmp;\n }\n\n repetitions = faker.datatype.number({\n min: min,\n max: max\n });\n string = string.slice(0, token.index) + faker.helpers.repeatString(token[1], repetitions) + string.slice(token.index + token[0].length);\n token = string.match(RANGE_REP_REG);\n } // Deal with repeat `{num}`\n\n\n token = string.match(REP_REG);\n\n while (token !== null) {\n repetitions = parseInt(token[2]);\n string = string.slice(0, token.index) + faker.helpers.repeatString(token[1], repetitions) + string.slice(token.index + token[0].length);\n token = string.match(REP_REG);\n } // Deal with range `[min-max]` (only works with numbers for now)\n //TODO: implement for letters e.g. [0-9a-zA-Z] etc.\n\n\n token = string.match(RANGE_REG);\n\n while (token !== null) {\n min = parseInt(token[1]); // This time we are not capturing the char before `[]`\n\n max = parseInt(token[2]); // switch min and max\n\n if (min > max) {\n tmp = max;\n max = min;\n min = tmp;\n }\n\n string = string.slice(0, token.index) + faker.datatype.number({\n min: min,\n max: max\n }).toString() + string.slice(token.index + token[0].length);\n token = string.match(RANGE_REG);\n }\n\n return string;\n };\n /**\n * takes an array and randomizes it in place then returns it\n * \n * uses the modern version of the Fisher–Yates algorithm\n *\n * @method faker.helpers.shuffle\n * @param {array} o\n */\n\n\n self.shuffle = function (o) {\n if (typeof o === 'undefined' || o.length === 0) {\n return o || [];\n }\n\n o = o || [\"a\", \"b\", \"c\"];\n\n for (var x, j, i = o.length - 1; i > 0; --i) {\n j = faker.datatype.number(i);\n x = o[i];\n o[i] = o[j];\n o[j] = x;\n }\n\n return o;\n };\n /**\n * mustache\n *\n * @method faker.helpers.mustache\n * @param {string} str\n * @param {object} data\n */\n\n\n self.mustache = function (str, data) {\n if (typeof str === 'undefined') {\n return '';\n }\n\n for (var p in data) {\n var re = new RegExp('{{' + p + '}}', 'g');\n str = str.replace(re, data[p]);\n }\n\n return str;\n };\n /**\n * createCard\n *\n * @method faker.helpers.createCard\n */\n\n\n self.createCard = function () {\n return {\n \"name\": faker.name.findName(),\n \"username\": faker.internet.userName(),\n \"email\": faker.internet.email(),\n \"address\": {\n \"streetA\": faker.address.streetName(),\n \"streetB\": faker.address.streetAddress(),\n \"streetC\": faker.address.streetAddress(true),\n \"streetD\": faker.address.secondaryAddress(),\n \"city\": faker.address.city(),\n \"state\": faker.address.state(),\n \"country\": faker.address.country(),\n \"zipcode\": faker.address.zipCode(),\n \"geo\": {\n \"lat\": faker.address.latitude(),\n \"lng\": faker.address.longitude()\n }\n },\n \"phone\": faker.phone.phoneNumber(),\n \"website\": faker.internet.domainName(),\n \"company\": {\n \"name\": faker.company.companyName(),\n \"catchPhrase\": faker.company.catchPhrase(),\n \"bs\": faker.company.bs()\n },\n \"posts\": [{\n \"words\": faker.lorem.words(),\n \"sentence\": faker.lorem.sentence(),\n \"sentences\": faker.lorem.sentences(),\n \"paragraph\": faker.lorem.paragraph()\n }, {\n \"words\": faker.lorem.words(),\n \"sentence\": faker.lorem.sentence(),\n \"sentences\": faker.lorem.sentences(),\n \"paragraph\": faker.lorem.paragraph()\n }, {\n \"words\": faker.lorem.words(),\n \"sentence\": faker.lorem.sentence(),\n \"sentences\": faker.lorem.sentences(),\n \"paragraph\": faker.lorem.paragraph()\n }],\n \"accountHistory\": [faker.helpers.createTransaction(), faker.helpers.createTransaction(), faker.helpers.createTransaction()]\n };\n };\n /**\n * contextualCard\n *\n * @method faker.helpers.contextualCard\n */\n\n\n self.contextualCard = function () {\n var name = faker.name.firstName(),\n userName = faker.internet.userName(name);\n return {\n \"name\": name,\n \"username\": userName,\n \"avatar\": faker.internet.avatar(),\n \"email\": faker.internet.email(userName),\n \"dob\": faker.date.past(50, new Date(\"Sat Sep 20 1992 21:35:02 GMT+0200 (CEST)\")),\n \"phone\": faker.phone.phoneNumber(),\n \"address\": {\n \"street\": faker.address.streetName(true),\n \"suite\": faker.address.secondaryAddress(),\n \"city\": faker.address.city(),\n \"zipcode\": faker.address.zipCode(),\n \"geo\": {\n \"lat\": faker.address.latitude(),\n \"lng\": faker.address.longitude()\n }\n },\n \"website\": faker.internet.domainName(),\n \"company\": {\n \"name\": faker.company.companyName(),\n \"catchPhrase\": faker.company.catchPhrase(),\n \"bs\": faker.company.bs()\n }\n };\n };\n /**\n * userCard\n *\n * @method faker.helpers.userCard\n */\n\n\n self.userCard = function () {\n return {\n \"name\": faker.name.findName(),\n \"username\": faker.internet.userName(),\n \"email\": faker.internet.email(),\n \"address\": {\n \"street\": faker.address.streetName(true),\n \"suite\": faker.address.secondaryAddress(),\n \"city\": faker.address.city(),\n \"zipcode\": faker.address.zipCode(),\n \"geo\": {\n \"lat\": faker.address.latitude(),\n \"lng\": faker.address.longitude()\n }\n },\n \"phone\": faker.phone.phoneNumber(),\n \"website\": faker.internet.domainName(),\n \"company\": {\n \"name\": faker.company.companyName(),\n \"catchPhrase\": faker.company.catchPhrase(),\n \"bs\": faker.company.bs()\n }\n };\n };\n /**\n * createTransaction\n *\n * @method faker.helpers.createTransaction\n */\n\n\n self.createTransaction = function () {\n return {\n \"amount\": faker.finance.amount(),\n \"date\": new Date(2012, 1, 2),\n //TODO: add a ranged date method\n \"business\": faker.company.companyName(),\n \"name\": [faker.finance.accountName(), faker.finance.mask()].join(' '),\n \"type\": self.randomize(faker.definitions.finance.transaction_type),\n \"account\": faker.finance.account()\n };\n };\n\n return self;\n};\n/*\nString.prototype.capitalize = function () { //v1.0\n return this.replace(/\\w+/g, function (a) {\n return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();\n });\n};\n*/\n\n\nmodule['exports'] = Helpers;","\"use strict\";\n\n/**\n *\n * @namespace faker.address\n */\nfunction Address(faker) {\n var f = faker.fake,\n Helpers = faker.helpers;\n /**\n * Generates random zipcode from format. If format is not specified, the\n * locale's zip format is used.\n *\n * @method faker.address.zipCode\n * @param {String} format\n */\n\n this.zipCode = function (format) {\n // if zip format is not specified, use the zip format defined for the locale\n if (typeof format === 'undefined') {\n var localeFormat = faker.definitions.address.postcode;\n\n if (typeof localeFormat === 'string') {\n format = localeFormat;\n } else {\n format = faker.random.arrayElement(localeFormat);\n }\n }\n\n return Helpers.replaceSymbols(format);\n };\n /**\n * Generates random zipcode from state abbreviation. If state abbreviation is\n * not specified, a random zip code is generated according to the locale's zip format.\n * Only works for locales with postcode_by_state definition. If a locale does not\n * have a postcode_by_state definition, a random zip code is generated according\n * to the locale's zip format.\n *\n * @method faker.address.zipCodeByState\n * @param {String} state\n */\n\n\n this.zipCodeByState = function (state) {\n var zipRange = faker.definitions.address.postcode_by_state[state];\n\n if (zipRange) {\n return faker.datatype.number(zipRange);\n }\n\n return faker.address.zipCode();\n };\n /**\n * Generates a random localized city name. The format string can contain any\n * method provided by faker wrapped in `{{}}`, e.g. `{{name.firstName}}` in\n * order to build the city name.\n *\n * If no format string is provided one of the following is randomly used:\n *\n * * `{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}`\n * * `{{address.cityPrefix}} {{name.firstName}}`\n * * `{{name.firstName}}{{address.citySuffix}}`\n * * `{{name.lastName}}{{address.citySuffix}}`\n * * `{{address.cityName}}` when city name is available\n *\n * @method faker.address.city\n * @param {String} format\n */\n\n\n this.city = function (format) {\n var formats = ['{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}', '{{address.cityPrefix}} {{name.firstName}}', '{{name.firstName}}{{address.citySuffix}}', '{{name.lastName}}{{address.citySuffix}}'];\n\n if (!format && faker.definitions.address.city_name) {\n formats.push('{{address.cityName}}');\n }\n\n if (typeof format !== \"number\") {\n format = faker.datatype.number(formats.length - 1);\n }\n\n return f(formats[format]);\n };\n /**\n * Return a random localized city prefix\n * @method faker.address.cityPrefix\n */\n\n\n this.cityPrefix = function () {\n return faker.random.arrayElement(faker.definitions.address.city_prefix);\n };\n /**\n * Return a random localized city suffix\n *\n * @method faker.address.citySuffix\n */\n\n\n this.citySuffix = function () {\n return faker.random.arrayElement(faker.definitions.address.city_suffix);\n };\n /**\n * Returns a random city name\n * \n * @method faker.address.cityName\n */\n\n\n this.cityName = function () {\n return faker.random.arrayElement(faker.definitions.address.city_name);\n };\n /**\n * Returns a random localized street name\n *\n * @method faker.address.streetName\n */\n\n\n this.streetName = function () {\n var result;\n var suffix = faker.address.streetSuffix();\n\n if (suffix !== \"\") {\n suffix = \" \" + suffix;\n }\n\n switch (faker.datatype.number(1)) {\n case 0:\n result = faker.name.lastName() + suffix;\n break;\n\n case 1:\n result = faker.name.firstName() + suffix;\n break;\n }\n\n return result;\n }; //\n // TODO: change all these methods that accept a boolean to instead accept an options hash.\n //\n\n /**\n * Returns a random localized street address\n *\n * @method faker.address.streetAddress\n * @param {Boolean} useFullAddress\n */\n\n\n this.streetAddress = function (useFullAddress) {\n if (useFullAddress === undefined) {\n useFullAddress = false;\n }\n\n var address = \"\";\n\n switch (faker.datatype.number(2)) {\n case 0:\n address = Helpers.replaceSymbolWithNumber(\"#####\") + \" \" + faker.address.streetName();\n break;\n\n case 1:\n address = Helpers.replaceSymbolWithNumber(\"####\") + \" \" + faker.address.streetName();\n break;\n\n case 2:\n address = Helpers.replaceSymbolWithNumber(\"###\") + \" \" + faker.address.streetName();\n break;\n }\n\n return useFullAddress ? address + \" \" + faker.address.secondaryAddress() : address;\n };\n /**\n * streetSuffix\n *\n * @method faker.address.streetSuffix\n */\n\n\n this.streetSuffix = function () {\n return faker.random.arrayElement(faker.definitions.address.street_suffix);\n };\n /**\n * streetPrefix\n *\n * @method faker.address.streetPrefix\n */\n\n\n this.streetPrefix = function () {\n return faker.random.arrayElement(faker.definitions.address.street_prefix);\n };\n /**\n * secondaryAddress\n *\n * @method faker.address.secondaryAddress\n */\n\n\n this.secondaryAddress = function () {\n return Helpers.replaceSymbolWithNumber(faker.random.arrayElement(['Apt. ###', 'Suite ###']));\n };\n /**\n * county\n *\n * @method faker.address.county\n */\n\n\n this.county = function () {\n return faker.random.arrayElement(faker.definitions.address.county);\n };\n /**\n * country\n *\n * @method faker.address.country\n */\n\n\n this.country = function () {\n return faker.random.arrayElement(faker.definitions.address.country);\n };\n /**\n * countryCode\n *\n * @method faker.address.countryCode\n * @param {string} alphaCode default alpha-2\n */\n\n\n this.countryCode = function (alphaCode) {\n if (typeof alphaCode === 'undefined' || alphaCode === 'alpha-2') {\n return faker.random.arrayElement(faker.definitions.address.country_code);\n }\n\n if (alphaCode === 'alpha-3') {\n return faker.random.arrayElement(faker.definitions.address.country_code_alpha_3);\n }\n\n return faker.random.arrayElement(faker.definitions.address.country_code);\n };\n /**\n * state\n *\n * @method faker.address.state\n * @param {Boolean} useAbbr\n */\n\n\n this.state = function (useAbbr) {\n return faker.random.arrayElement(faker.definitions.address.state);\n };\n /**\n * stateAbbr\n *\n * @method faker.address.stateAbbr\n */\n\n\n this.stateAbbr = function () {\n return faker.random.arrayElement(faker.definitions.address.state_abbr);\n };\n /**\n * latitude\n *\n * @method faker.address.latitude\n * @param {Double} max default is 90\n * @param {Double} min default is -90\n * @param {number} precision default is 4\n */\n\n\n this.latitude = function (max, min, precision) {\n max = max || 90;\n min = min || -90;\n precision = precision || 4;\n return faker.datatype.number({\n max: max,\n min: min,\n precision: parseFloat(0.0.toPrecision(precision) + '1')\n }).toFixed(precision);\n };\n /**\n * longitude\n *\n * @method faker.address.longitude\n * @param {Double} max default is 180\n * @param {Double} min default is -180\n * @param {number} precision default is 4\n */\n\n\n this.longitude = function (max, min, precision) {\n max = max || 180;\n min = min || -180;\n precision = precision || 4;\n return faker.datatype.number({\n max: max,\n min: min,\n precision: parseFloat(0.0.toPrecision(precision) + '1')\n }).toFixed(precision);\n };\n /**\n * direction\n *\n * @method faker.address.direction\n * @param {Boolean} useAbbr return direction abbreviation. defaults to false\n */\n\n\n this.direction = function (useAbbr) {\n if (typeof useAbbr === 'undefined' || useAbbr === false) {\n return faker.random.arrayElement(faker.definitions.address.direction);\n }\n\n return faker.random.arrayElement(faker.definitions.address.direction_abbr);\n };\n\n this.direction.schema = {\n \"description\": \"Generates a direction. Use optional useAbbr bool to return abbreviation\",\n \"sampleResults\": [\"Northwest\", \"South\", \"SW\", \"E\"]\n };\n /**\n * cardinal direction\n *\n * @method faker.address.cardinalDirection\n * @param {Boolean} useAbbr return direction abbreviation. defaults to false\n */\n\n this.cardinalDirection = function (useAbbr) {\n if (typeof useAbbr === 'undefined' || useAbbr === false) {\n return faker.random.arrayElement(faker.definitions.address.direction.slice(0, 4));\n }\n\n return faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(0, 4));\n };\n\n this.cardinalDirection.schema = {\n \"description\": \"Generates a cardinal direction. Use optional useAbbr boolean to return abbreviation\",\n \"sampleResults\": [\"North\", \"South\", \"E\", \"W\"]\n };\n /**\n * ordinal direction\n *\n * @method faker.address.ordinalDirection\n * @param {Boolean} useAbbr return direction abbreviation. defaults to false\n */\n\n this.ordinalDirection = function (useAbbr) {\n if (typeof useAbbr === 'undefined' || useAbbr === false) {\n return faker.random.arrayElement(faker.definitions.address.direction.slice(4, 8));\n }\n\n return faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(4, 8));\n };\n\n this.ordinalDirection.schema = {\n \"description\": \"Generates an ordinal direction. Use optional useAbbr boolean to return abbreviation\",\n \"sampleResults\": [\"Northwest\", \"Southeast\", \"SW\", \"NE\"]\n };\n\n this.nearbyGPSCoordinate = function (coordinate, radius, isMetric) {\n function randomFloat(min, max) {\n return Math.random() * (max - min) + min;\n }\n\n function degreesToRadians(degrees) {\n return degrees * (Math.PI / 180.0);\n }\n\n function radiansToDegrees(radians) {\n return radians * (180.0 / Math.PI);\n }\n\n function kilometersToMiles(miles) {\n return miles * 0.621371;\n }\n\n function coordinateWithOffset(coordinate, bearing, distance, isMetric) {\n var R = 6378.137; // Radius of the Earth (http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html)\n\n var d = isMetric ? distance : kilometersToMiles(distance); // Distance in km\n\n var lat1 = degreesToRadians(coordinate[0]); //Current lat point converted to radians\n\n var lon1 = degreesToRadians(coordinate[1]); //Current long point converted to radians\n\n var lat2 = Math.asin(Math.sin(lat1) * Math.cos(d / R) + Math.cos(lat1) * Math.sin(d / R) * Math.cos(bearing));\n var lon2 = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(d / R) * Math.cos(lat1), Math.cos(d / R) - Math.sin(lat1) * Math.sin(lat2)); // Keep longitude in range [-180, 180]\n\n if (lon2 > degreesToRadians(180)) {\n lon2 = lon2 - degreesToRadians(360);\n } else if (lon2 < degreesToRadians(-180)) {\n lon2 = lon2 + degreesToRadians(360);\n }\n\n return [radiansToDegrees(lat2), radiansToDegrees(lon2)];\n } // If there is no coordinate, the best we can do is return a random GPS coordinate.\n\n\n if (coordinate === undefined) {\n return [faker.address.latitude(), faker.address.longitude()];\n }\n\n radius = radius || 10.0;\n isMetric = isMetric || false; // TODO: implement either a gaussian/uniform distribution of points in cicular region.\n // Possibly include param to function that allows user to choose between distributions.\n // This approach will likely result in a higher density of points near the center.\n\n var randomCoord = coordinateWithOffset(coordinate, degreesToRadians(Math.random() * 360.0), radius, isMetric);\n return [randomCoord[0].toFixed(4), randomCoord[1].toFixed(4)];\n };\n /**\n * Return a random time zone\n * @method faker.address.timeZone\n */\n\n\n this.timeZone = function () {\n return faker.random.arrayElement(faker.definitions.address.time_zone);\n };\n\n return this;\n}\n\nmodule.exports = Address;","\"use strict\";\n\n/**\n *\n * @namespace faker.animal\n */\nvar Animal = function Animal(faker) {\n var self = this;\n /**\n * dog\n *\n * @method faker.animal.dog\n */\n\n self.dog = function () {\n return faker.random.arrayElement(faker.definitions.animal.dog);\n };\n /**\n * cat\n *\n * @method faker.animal.cat\n */\n\n\n self.cat = function () {\n return faker.random.arrayElement(faker.definitions.animal.cat);\n };\n /**\n * snake \n *\n * @method faker.animal.snake\n */\n\n\n self.snake = function () {\n return faker.random.arrayElement(faker.definitions.animal.snake);\n };\n /**\n * bear \n *\n * @method faker.animal.bear\n */\n\n\n self.bear = function () {\n return faker.random.arrayElement(faker.definitions.animal.bear);\n };\n /**\n * lion \n *\n * @method faker.animal.lion\n */\n\n\n self.lion = function () {\n return faker.random.arrayElement(faker.definitions.animal.lion);\n };\n /**\n * cetacean \n *\n * @method faker.animal.cetacean\n */\n\n\n self.cetacean = function () {\n return faker.random.arrayElement(faker.definitions.animal.cetacean);\n };\n /**\n * horse \n *\n * @method faker.animal.horse\n */\n\n\n self.horse = function () {\n return faker.random.arrayElement(faker.definitions.animal.horse);\n };\n /**\n * bird\n *\n * @method faker.animal.bird\n */\n\n\n self.bird = function () {\n return faker.random.arrayElement(faker.definitions.animal.bird);\n };\n /**\n * cow \n *\n * @method faker.animal.cow\n */\n\n\n self.cow = function () {\n return faker.random.arrayElement(faker.definitions.animal.cow);\n };\n /**\n * fish\n *\n * @method faker.animal.fish\n */\n\n\n self.fish = function () {\n return faker.random.arrayElement(faker.definitions.animal.fish);\n };\n /**\n * crocodilia\n *\n * @method faker.animal.crocodilia\n */\n\n\n self.crocodilia = function () {\n return faker.random.arrayElement(faker.definitions.animal.crocodilia);\n };\n /**\n * insect \n *\n * @method faker.animal.insect\n */\n\n\n self.insect = function () {\n return faker.random.arrayElement(faker.definitions.animal.insect);\n };\n /**\n * rabbit \n *\n * @method faker.animal.rabbit\n */\n\n\n self.rabbit = function () {\n return faker.random.arrayElement(faker.definitions.animal.rabbit);\n };\n /**\n * type \n *\n * @method faker.animal.type\n */\n\n\n self.type = function () {\n return faker.random.arrayElement(faker.definitions.animal.type);\n };\n\n return self;\n};\n\nmodule['exports'] = Animal;","\"use strict\";\n\n/**\n *\n * @namespace faker.company\n */\nvar Company = function Company(faker) {\n var self = this;\n var f = faker.fake;\n /**\n * suffixes\n *\n * @method faker.company.suffixes\n */\n\n this.suffixes = function () {\n // Don't want the source array exposed to modification, so return a copy\n return faker.definitions.company.suffix.slice(0);\n };\n /**\n * companyName\n *\n * @method faker.company.companyName\n * @param {string} format\n */\n\n\n this.companyName = function (format) {\n var formats = ['{{name.lastName}} {{company.companySuffix}}', '{{name.lastName}} - {{name.lastName}}', '{{name.lastName}}, {{name.lastName}} and {{name.lastName}}'];\n\n if (typeof format !== \"number\") {\n format = faker.datatype.number(formats.length - 1);\n }\n\n return f(formats[format]);\n };\n /**\n * companySuffix\n *\n * @method faker.company.companySuffix\n */\n\n\n this.companySuffix = function () {\n return faker.random.arrayElement(faker.company.suffixes());\n };\n /**\n * catchPhrase\n *\n * @method faker.company.catchPhrase\n */\n\n\n this.catchPhrase = function () {\n return f('{{company.catchPhraseAdjective}} {{company.catchPhraseDescriptor}} {{company.catchPhraseNoun}}');\n };\n /**\n * bs\n *\n * @method faker.company.bs\n */\n\n\n this.bs = function () {\n return f('{{company.bsBuzz}} {{company.bsAdjective}} {{company.bsNoun}}');\n };\n /**\n * catchPhraseAdjective\n *\n * @method faker.company.catchPhraseAdjective\n */\n\n\n this.catchPhraseAdjective = function () {\n return faker.random.arrayElement(faker.definitions.company.adjective);\n };\n /**\n * catchPhraseDescriptor\n *\n * @method faker.company.catchPhraseDescriptor\n */\n\n\n this.catchPhraseDescriptor = function () {\n return faker.random.arrayElement(faker.definitions.company.descriptor);\n };\n /**\n * catchPhraseNoun\n *\n * @method faker.company.catchPhraseNoun\n */\n\n\n this.catchPhraseNoun = function () {\n return faker.random.arrayElement(faker.definitions.company.noun);\n };\n /**\n * bsAdjective\n *\n * @method faker.company.bsAdjective\n */\n\n\n this.bsAdjective = function () {\n return faker.random.arrayElement(faker.definitions.company.bs_adjective);\n };\n /**\n * bsBuzz\n *\n * @method faker.company.bsBuzz\n */\n\n\n this.bsBuzz = function () {\n return faker.random.arrayElement(faker.definitions.company.bs_verb);\n };\n /**\n * bsNoun\n *\n * @method faker.company.bsNoun\n */\n\n\n this.bsNoun = function () {\n return faker.random.arrayElement(faker.definitions.company.bs_noun);\n };\n};\n\nmodule['exports'] = Company;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\n/**\n * @namespace faker.finance\n */\nvar Finance = function Finance(faker) {\n var ibanLib = require(\"./iban\");\n\n var Helpers = faker.helpers,\n self = this;\n /**\n * account\n *\n * @method faker.finance.account\n * @param {number} length\n */\n\n self.account = function (length) {\n length = length || 8;\n var template = '';\n\n for (var i = 0; i < length; i++) {\n template = template + '#';\n }\n\n length = null;\n return Helpers.replaceSymbolWithNumber(template);\n };\n /**\n * accountName\n *\n * @method faker.finance.accountName\n */\n\n\n self.accountName = function () {\n return [Helpers.randomize(faker.definitions.finance.account_type), 'Account'].join(' ');\n };\n /**\n * routingNumber\n *\n * @method faker.finance.routingNumber\n */\n\n\n self.routingNumber = function () {\n var routingNumber = Helpers.replaceSymbolWithNumber('########'); // Modules 10 straight summation.\n\n var sum = 0;\n\n for (var i = 0; i < routingNumber.length; i += 3) {\n sum += Number(routingNumber[i]) * 3;\n sum += Number(routingNumber[i + 1]) * 7;\n sum += Number(routingNumber[i + 2]) || 0;\n }\n\n return routingNumber + (Math.ceil(sum / 10) * 10 - sum);\n };\n /**\n * mask\n *\n * @method faker.finance.mask\n * @param {number} length\n * @param {boolean} parens\n * @param {boolean} ellipsis\n */\n\n\n self.mask = function (length, parens, ellipsis) {\n //set defaults\n length = length == 0 || !length || typeof length == 'undefined' ? 4 : length;\n parens = parens === null ? true : parens;\n ellipsis = ellipsis === null ? true : ellipsis; //create a template for length\n\n var template = '';\n\n for (var i = 0; i < length; i++) {\n template = template + '#';\n } //prefix with ellipsis\n\n\n template = ellipsis ? ['...', template].join('') : template;\n template = parens ? ['(', template, ')'].join('') : template; //generate random numbers\n\n template = Helpers.replaceSymbolWithNumber(template);\n return template;\n }; //min and max take in minimum and maximum amounts, dec is the decimal place you want rounded to, symbol is $, €, £, etc\n //NOTE: this returns a string representation of the value, if you want a number use parseFloat and no symbol\n\n /**\n * amount\n *\n * @method faker.finance.amount\n * @param {number} min\n * @param {number} max\n * @param {number} dec\n * @param {string} symbol\n *\n * @return {string}\n */\n\n\n self.amount = function (min, max, dec, symbol, autoFormat) {\n min = min || 0;\n max = max || 1000;\n dec = dec === undefined ? 2 : dec;\n symbol = symbol || '';\n var randValue = faker.datatype.number({\n max: max,\n min: min,\n precision: Math.pow(10, -dec)\n });\n var formattedString;\n\n if (autoFormat) {\n formattedString = randValue.toLocaleString(undefined, {\n minimumFractionDigits: dec\n });\n } else {\n formattedString = randValue.toFixed(dec);\n }\n\n return symbol + formattedString;\n };\n /**\n * transactionType\n *\n * @method faker.finance.transactionType\n */\n\n\n self.transactionType = function () {\n return Helpers.randomize(faker.definitions.finance.transaction_type);\n };\n /**\n * currencyCode\n *\n * @method faker.finance.currencyCode\n */\n\n\n self.currencyCode = function () {\n return faker.random.objectElement(faker.definitions.finance.currency)['code'];\n };\n /**\n * currencyName\n *\n * @method faker.finance.currencyName\n */\n\n\n self.currencyName = function () {\n return faker.random.objectElement(faker.definitions.finance.currency, 'key');\n };\n /**\n * currencySymbol\n *\n * @method faker.finance.currencySymbol\n */\n\n\n self.currencySymbol = function () {\n var symbol;\n\n while (!symbol) {\n symbol = faker.random.objectElement(faker.definitions.finance.currency)['symbol'];\n }\n\n return symbol;\n };\n /**\n * bitcoinAddress\n *\n * @method faker.finance.bitcoinAddress\n */\n\n\n self.bitcoinAddress = function () {\n var addressLength = faker.datatype.number({\n min: 25,\n max: 34\n });\n var address = faker.random.arrayElement(['1', '3']);\n\n for (var i = 0; i < addressLength - 1; i++) {\n address += faker.random.arrayElement('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'.split(''));\n }\n\n return address;\n };\n /**\n * litecoinAddress\n *\n * @method faker.finance.litecoinAddress\n */\n\n\n self.litecoinAddress = function () {\n var addressLength = faker.datatype.number({\n min: 26,\n max: 33\n });\n var address = faker.random.arrayElement(['L', 'M', '3']);\n\n for (var i = 0; i < addressLength - 1; i++) {\n address += faker.random.arrayElement('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'.split(''));\n }\n\n return address;\n };\n /**\n * Credit card number\n * @method faker.finance.creditCardNumber\n * @param {string} provider | scheme\n */\n\n\n self.creditCardNumber = function (provider) {\n provider = provider || \"\";\n var format, formats;\n var localeFormat = faker.definitions.finance.credit_card;\n\n if (provider in localeFormat) {\n formats = localeFormat[provider]; // there chould be multiple formats\n\n if (typeof formats === \"string\") {\n format = formats;\n } else {\n format = faker.random.arrayElement(formats);\n }\n } else if (provider.match(/#/)) {\n // The user chose an optional scheme\n format = provider;\n } else {\n // Choose a random provider\n if (typeof localeFormat === 'string') {\n format = localeFormat;\n } else if ((0, _typeof2.default)(localeFormat) === \"object\") {\n // Credit cards are in a object structure\n formats = faker.random.objectElement(localeFormat, \"value\"); // There chould be multiple formats\n\n if (typeof formats === \"string\") {\n format = formats;\n } else {\n format = faker.random.arrayElement(formats);\n }\n }\n }\n\n format = format.replace(/\\//g, \"\");\n return Helpers.replaceCreditCardSymbols(format);\n };\n /**\n * Credit card CVV\n * @method faker.finance.creditCardCVV\n */\n\n\n self.creditCardCVV = function () {\n var cvv = \"\";\n\n for (var i = 0; i < 3; i++) {\n cvv += faker.datatype.number({\n max: 9\n }).toString();\n }\n\n return cvv;\n };\n /**\n * ethereumAddress\n *\n * @method faker.finance.ethereumAddress\n */\n\n\n self.ethereumAddress = function () {\n var address = faker.datatype.hexaDecimal(40).toLowerCase();\n return address;\n };\n /**\n * iban\n *\n * @param {boolean} [formatted=false] - Return a formatted version of the generated IBAN.\n * @param {string} [countryCode] - The country code from which you want to generate an IBAN, if none is provided a random country will be used.\n * @throws Will throw an error if the passed country code is not supported.\n *\n * @method faker.finance.iban\n */\n\n\n self.iban = function (formatted, countryCode) {\n var ibanFormat;\n\n if (countryCode) {\n var findFormat = function findFormat(currentFormat) {\n return currentFormat.country === countryCode;\n };\n\n ibanFormat = ibanLib.formats.find(findFormat);\n } else {\n ibanFormat = faker.random.arrayElement(ibanLib.formats);\n }\n\n if (!ibanFormat) {\n throw new Error('Country code ' + countryCode + ' not supported.');\n }\n\n var s = \"\";\n var count = 0;\n\n for (var b = 0; b < ibanFormat.bban.length; b++) {\n var bban = ibanFormat.bban[b];\n var c = bban.count;\n count += bban.count;\n\n while (c > 0) {\n if (bban.type == \"a\") {\n s += faker.random.arrayElement(ibanLib.alpha);\n } else if (bban.type == \"c\") {\n if (faker.datatype.number(100) < 80) {\n s += faker.datatype.number(9);\n } else {\n s += faker.random.arrayElement(ibanLib.alpha);\n }\n } else {\n if (c >= 3 && faker.datatype.number(100) < 30) {\n if (faker.datatype.boolean()) {\n s += faker.random.arrayElement(ibanLib.pattern100);\n c -= 2;\n } else {\n s += faker.random.arrayElement(ibanLib.pattern10);\n c--;\n }\n } else {\n s += faker.datatype.number(9);\n }\n }\n\n c--;\n }\n\n s = s.substring(0, count);\n }\n\n var checksum = 98 - ibanLib.mod97(ibanLib.toDigitString(s + ibanFormat.country + \"00\"));\n\n if (checksum < 10) {\n checksum = \"0\" + checksum;\n }\n\n var iban = ibanFormat.country + checksum + s;\n return formatted ? iban.match(/.{1,4}/g).join(\" \") : iban;\n };\n /**\n * bic\n *\n * @method faker.finance.bic\n */\n\n\n self.bic = function () {\n var vowels = [\"A\", \"E\", \"I\", \"O\", \"U\"];\n var prob = faker.datatype.number(100);\n return Helpers.replaceSymbols(\"???\") + faker.random.arrayElement(vowels) + faker.random.arrayElement(ibanLib.iso3166) + Helpers.replaceSymbols(\"?\") + \"1\" + (prob < 10 ? Helpers.replaceSymbols(\"?\" + faker.random.arrayElement(vowels) + \"?\") : prob < 40 ? Helpers.replaceSymbols(\"###\") : \"\");\n };\n /**\n * description\n *\n * @method faker.finance.transactionDescription\n */\n\n\n self.transactionDescription = function () {\n var transaction = Helpers.createTransaction();\n var account = transaction.account;\n var amount = transaction.amount;\n var transactionType = transaction.type;\n var company = transaction.business;\n var card = faker.finance.mask();\n var currency = faker.finance.currencyCode();\n return transactionType + \" transaction at \" + company + \" using card ending with ***\" + card + \" for \" + currency + \" \" + amount + \" in account ***\" + account;\n };\n};\n\nmodule['exports'] = Finance;","\"use strict\";\n\nmodule[\"exports\"] = {\n alpha: ['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'],\n pattern10: [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\"],\n pattern100: [\"001\", \"002\", \"003\", \"004\", \"005\", \"006\", \"007\", \"008\", \"009\"],\n toDigitString: function toDigitString(str) {\n return str.replace(/[A-Z]/gi, function (match) {\n return match.toUpperCase().charCodeAt(0) - 55;\n });\n },\n mod97: function mod97(digitStr) {\n var m = 0;\n\n for (var i = 0; i < digitStr.length; i++) {\n m = (m * 10 + (digitStr[i] | 0)) % 97;\n }\n\n return m;\n },\n formats: [{\n country: \"AL\",\n total: 28,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"c\",\n count: 16\n }],\n format: \"ALkk bbbs sssx cccc cccc cccc cccc\"\n }, {\n country: \"AD\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"c\",\n count: 12\n }],\n format: \"ADkk bbbb ssss cccc cccc cccc\"\n }, {\n country: \"AT\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"n\",\n count: 11\n }],\n format: \"ATkk bbbb bccc cccc cccc\"\n }, {\n // Azerbaijan\n // https://transferwise.com/fr/iban/azerbaijan\n // Length 28\n // BBAN 2c,16n\n // GEkk bbbb cccc cccc cccc cccc cccc\n // b = National bank code (alpha)\n // c = Account number\n // example IBAN AZ21 NABZ 0000 0000 1370 1000 1944\n country: \"AZ\",\n total: 28,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 20\n }],\n format: \"AZkk bbbb cccc cccc cccc cccc cccc\"\n }, {\n country: \"BH\",\n total: 22,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 14\n }],\n format: \"BHkk bbbb cccc cccc cccc cc\"\n }, {\n country: \"BE\",\n total: 16,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 9\n }],\n format: \"BEkk bbbc cccc ccxx\"\n }, {\n country: \"BA\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"BAkk bbbs sscc cccc ccxx\"\n }, {\n country: \"BR\",\n total: 29,\n bban: [{\n type: \"n\",\n count: 13\n }, {\n type: \"n\",\n count: 10\n }, {\n type: \"a\",\n count: 1\n }, {\n type: \"c\",\n count: 1\n }],\n format: \"BRkk bbbb bbbb ssss sccc cccc ccct n\"\n }, {\n country: \"BG\",\n total: 22,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 6\n }, {\n type: \"c\",\n count: 8\n }],\n format: \"BGkk bbbb ssss ddcc cccc cc\"\n }, {\n country: \"CR\",\n total: 21,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 14\n }],\n format: \"CRkk bbbc cccc cccc cccc c\"\n }, {\n country: \"HR\",\n total: 21,\n bban: [{\n type: \"n\",\n count: 7\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"HRkk bbbb bbbc cccc cccc c\"\n }, {\n country: \"CY\",\n total: 28,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"c\",\n count: 16\n }],\n format: \"CYkk bbbs ssss cccc cccc cccc cccc\"\n }, {\n country: \"CZ\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"CZkk bbbb ssss sscc cccc cccc\"\n }, {\n country: \"DK\",\n total: 18,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"DKkk bbbb cccc cccc cc\"\n }, {\n country: \"DO\",\n total: 28,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 20\n }],\n format: \"DOkk bbbb cccc cccc cccc cccc cccc\"\n }, {\n country: \"TL\",\n total: 23,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"TLkk bbbc cccc cccc cccc cxx\"\n }, {\n country: \"EE\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 12\n }],\n format: \"EEkk bbss cccc cccc cccx\"\n }, {\n country: \"FO\",\n total: 18,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"FOkk bbbb cccc cccc cx\"\n }, {\n country: \"FI\",\n total: 18,\n bban: [{\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 8\n }],\n format: \"FIkk bbbb bbcc cccc cx\"\n }, {\n country: \"FR\",\n total: 27,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"c\",\n count: 11\n }, {\n type: \"n\",\n count: 2\n }],\n format: \"FRkk bbbb bggg ggcc cccc cccc cxx\"\n }, {\n country: \"GE\",\n total: 22,\n bban: [{\n type: \"a\",\n count: 2\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"GEkk bbcc cccc cccc cccc cc\"\n }, {\n country: \"DE\",\n total: 22,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"DEkk bbbb bbbb cccc cccc cc\"\n }, {\n country: \"GI\",\n total: 23,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 15\n }],\n format: \"GIkk bbbb cccc cccc cccc ccc\"\n }, {\n country: \"GR\",\n total: 27,\n bban: [{\n type: \"n\",\n count: 7\n }, {\n type: \"c\",\n count: 16\n }],\n format: \"GRkk bbbs sssc cccc cccc cccc ccc\"\n }, {\n country: \"GL\",\n total: 18,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"GLkk bbbb cccc cccc cc\"\n }, {\n country: \"GT\",\n total: 28,\n bban: [{\n type: \"c\",\n count: 4\n }, {\n type: \"c\",\n count: 4\n }, {\n type: \"c\",\n count: 16\n }],\n format: \"GTkk bbbb mmtt cccc cccc cccc cccc\"\n }, {\n country: \"HU\",\n total: 28,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"HUkk bbbs sssk cccc cccc cccc cccx\"\n }, {\n country: \"IS\",\n total: 26,\n bban: [{\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"ISkk bbbb sscc cccc iiii iiii ii\"\n }, {\n country: \"IE\",\n total: 22,\n bban: [{\n type: \"c\",\n count: 4\n }, {\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 8\n }],\n format: \"IEkk aaaa bbbb bbcc cccc cc\"\n }, {\n country: \"IL\",\n total: 23,\n bban: [{\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 13\n }],\n format: \"ILkk bbbn nncc cccc cccc ccc\"\n }, {\n country: \"IT\",\n total: 27,\n bban: [{\n type: \"a\",\n count: 1\n }, {\n type: \"n\",\n count: 10\n }, {\n type: \"c\",\n count: 12\n }],\n format: \"ITkk xaaa aabb bbbc cccc cccc ccc\"\n }, {\n country: \"JO\",\n total: 30,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 18\n }],\n format: \"JOkk bbbb nnnn cccc cccc cccc cccc cc\"\n }, {\n country: \"KZ\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"c\",\n count: 13\n }],\n format: \"KZkk bbbc cccc cccc cccc\"\n }, {\n country: \"XK\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 12\n }],\n format: \"XKkk bbbb cccc cccc cccc\"\n }, {\n country: \"KW\",\n total: 30,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 22\n }],\n format: \"KWkk bbbb cccc cccc cccc cccc cccc cc\"\n }, {\n country: \"LV\",\n total: 21,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 13\n }],\n format: \"LVkk bbbb cccc cccc cccc c\"\n }, {\n country: \"LB\",\n total: 28,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"c\",\n count: 20\n }],\n format: \"LBkk bbbb cccc cccc cccc cccc cccc\"\n }, {\n country: \"LI\",\n total: 21,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"c\",\n count: 12\n }],\n format: \"LIkk bbbb bccc cccc cccc c\"\n }, {\n country: \"LT\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"n\",\n count: 11\n }],\n format: \"LTkk bbbb bccc cccc cccc\"\n }, {\n country: \"LU\",\n total: 20,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"c\",\n count: 13\n }],\n format: \"LUkk bbbc cccc cccc cccc\"\n }, {\n country: \"MK\",\n total: 19,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"c\",\n count: 10\n }, {\n type: \"n\",\n count: 2\n }],\n format: \"MKkk bbbc cccc cccc cxx\"\n }, {\n country: \"MT\",\n total: 31,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 5\n }, {\n type: \"c\",\n count: 18\n }],\n format: \"MTkk bbbb ssss sccc cccc cccc cccc ccc\"\n }, {\n country: \"MR\",\n total: 27,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"n\",\n count: 13\n }],\n format: \"MRkk bbbb bsss sscc cccc cccc cxx\"\n }, {\n country: \"MU\",\n total: 30,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 15\n }, {\n type: \"a\",\n count: 3\n }],\n format: \"MUkk bbbb bbss cccc cccc cccc 000d dd\"\n }, {\n country: \"MC\",\n total: 27,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"c\",\n count: 11\n }, {\n type: \"n\",\n count: 2\n }],\n format: \"MCkk bbbb bsss sscc cccc cccc cxx\"\n }, {\n country: \"MD\",\n total: 24,\n bban: [{\n type: \"c\",\n count: 2\n }, {\n type: \"c\",\n count: 18\n }],\n format: \"MDkk bbcc cccc cccc cccc cccc\"\n }, {\n country: \"ME\",\n total: 22,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 15\n }],\n format: \"MEkk bbbc cccc cccc cccc xx\"\n }, {\n country: \"NL\",\n total: 18,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"NLkk bbbb cccc cccc cc\"\n }, {\n country: \"NO\",\n total: 15,\n bban: [{\n type: \"n\",\n count: 4\n }, {\n type: \"n\",\n count: 7\n }],\n format: \"NOkk bbbb cccc ccx\"\n }, {\n country: \"PK\",\n total: 24,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"PKkk bbbb cccc cccc cccc cccc\"\n }, {\n country: \"PS\",\n total: 29,\n bban: [{\n type: \"c\",\n count: 4\n }, {\n type: \"n\",\n count: 9\n }, {\n type: \"n\",\n count: 12\n }],\n format: \"PSkk bbbb xxxx xxxx xccc cccc cccc c\"\n }, {\n country: \"PL\",\n total: 28,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"PLkk bbbs sssx cccc cccc cccc cccc\"\n }, {\n country: \"PT\",\n total: 25,\n bban: [{\n type: \"n\",\n count: 8\n }, {\n type: \"n\",\n count: 13\n }],\n format: \"PTkk bbbb ssss cccc cccc cccx x\"\n }, {\n country: \"QA\",\n total: 29,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 21\n }],\n format: \"QAkk bbbb cccc cccc cccc cccc cccc c\"\n }, {\n country: \"RO\",\n total: 24,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"c\",\n count: 16\n }],\n format: \"ROkk bbbb cccc cccc cccc cccc\"\n }, {\n country: \"SM\",\n total: 27,\n bban: [{\n type: \"a\",\n count: 1\n }, {\n type: \"n\",\n count: 10\n }, {\n type: \"c\",\n count: 12\n }],\n format: \"SMkk xaaa aabb bbbc cccc cccc ccc\"\n }, {\n country: \"SA\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 2\n }, {\n type: \"c\",\n count: 18\n }],\n format: \"SAkk bbcc cccc cccc cccc cccc\"\n }, {\n country: \"RS\",\n total: 22,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 15\n }],\n format: \"RSkk bbbc cccc cccc cccc xx\"\n }, {\n country: \"SK\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"SKkk bbbb ssss sscc cccc cccc\"\n }, {\n country: \"SI\",\n total: 19,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"SIkk bbss sccc cccc cxx\"\n }, {\n country: \"ES\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 10\n }, {\n type: \"n\",\n count: 10\n }],\n format: \"ESkk bbbb gggg xxcc cccc cccc\"\n }, {\n country: \"SE\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 17\n }],\n format: \"SEkk bbbc cccc cccc cccc cccc\"\n }, {\n country: \"CH\",\n total: 21,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"c\",\n count: 12\n }],\n format: \"CHkk bbbb bccc cccc cccc c\"\n }, {\n country: \"TN\",\n total: 24,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"n\",\n count: 15\n }],\n format: \"TNkk bbss sccc cccc cccc cccc\"\n }, {\n country: \"TR\",\n total: 26,\n bban: [{\n type: \"n\",\n count: 5\n }, {\n type: \"n\",\n count: 1\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"TRkk bbbb bxcc cccc cccc cccc cc\"\n }, {\n country: \"AE\",\n total: 23,\n bban: [{\n type: \"n\",\n count: 3\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"AEkk bbbc cccc cccc cccc ccc\"\n }, {\n country: \"GB\",\n total: 22,\n bban: [{\n type: \"a\",\n count: 4\n }, {\n type: \"n\",\n count: 6\n }, {\n type: \"n\",\n count: 8\n }],\n format: \"GBkk bbbb ssss sscc cccc cc\"\n }, {\n country: \"VG\",\n total: 24,\n bban: [{\n type: \"c\",\n count: 4\n }, {\n type: \"n\",\n count: 16\n }],\n format: \"VGkk bbbb cccc cccc cccc cccc\"\n }],\n iso3166: [\"AC\", \"AD\", \"AE\", \"AF\", \"AG\", \"AI\", \"AL\", \"AM\", \"AN\", \"AO\", \"AQ\", \"AR\", \"AS\", \"AT\", \"AU\", \"AW\", \"AX\", \"AZ\", \"BA\", \"BB\", \"BD\", \"BE\", \"BF\", \"BG\", \"BH\", \"BI\", \"BJ\", \"BL\", \"BM\", \"BN\", \"BO\", \"BQ\", \"BR\", \"BS\", \"BT\", \"BU\", \"BV\", \"BW\", \"BY\", \"BZ\", \"CA\", \"CC\", \"CD\", \"CE\", \"CF\", \"CG\", \"CH\", \"CI\", \"CK\", \"CL\", \"CM\", \"CN\", \"CO\", \"CP\", \"CR\", \"CS\", \"CS\", \"CU\", \"CV\", \"CW\", \"CX\", \"CY\", \"CZ\", \"DD\", \"DE\", \"DG\", \"DJ\", \"DK\", \"DM\", \"DO\", \"DZ\", \"EA\", \"EC\", \"EE\", \"EG\", \"EH\", \"ER\", \"ES\", \"ET\", \"EU\", \"FI\", \"FJ\", \"FK\", \"FM\", \"FO\", \"FR\", \"FX\", \"GA\", \"GB\", \"GD\", \"GE\", \"GF\", \"GG\", \"GH\", \"GI\", \"GL\", \"GM\", \"GN\", \"GP\", \"GQ\", \"GR\", \"GS\", \"GT\", \"GU\", \"GW\", \"GY\", \"HK\", \"HM\", \"HN\", \"HR\", \"HT\", \"HU\", \"IC\", \"ID\", \"IE\", \"IL\", \"IM\", \"IN\", \"IO\", \"IQ\", \"IR\", \"IS\", \"IT\", \"JE\", \"JM\", \"JO\", \"JP\", \"KE\", \"KG\", \"KH\", \"KI\", \"KM\", \"KN\", \"KP\", \"KR\", \"KW\", \"KY\", \"KZ\", \"LA\", \"LB\", \"LC\", \"LI\", \"LK\", \"LR\", \"LS\", \"LT\", \"LU\", \"LV\", \"LY\", \"MA\", \"MC\", \"MD\", \"ME\", \"MF\", \"MG\", \"MH\", \"MK\", \"ML\", \"MM\", \"MN\", \"MO\", \"MP\", \"MQ\", \"MR\", \"MS\", \"MT\", \"MU\", \"MV\", \"MW\", \"MX\", \"MY\", \"MZ\", \"NA\", \"NC\", \"NE\", \"NF\", \"NG\", \"NI\", \"NL\", \"NO\", \"NP\", \"NR\", \"NT\", \"NU\", \"NZ\", \"OM\", \"PA\", \"PE\", \"PF\", \"PG\", \"PH\", \"PK\", \"PL\", \"PM\", \"PN\", \"PR\", \"PS\", \"PT\", \"PW\", \"PY\", \"QA\", \"RE\", \"RO\", \"RS\", \"RU\", \"RW\", \"SA\", \"SB\", \"SC\", \"SD\", \"SE\", \"SG\", \"SH\", \"SI\", \"SJ\", \"SK\", \"SL\", \"SM\", \"SN\", \"SO\", \"SR\", \"SS\", \"ST\", \"SU\", \"SV\", \"SX\", \"SY\", \"SZ\", \"TA\", \"TC\", \"TD\", \"TF\", \"TG\", \"TH\", \"TJ\", \"TK\", \"TL\", \"TM\", \"TN\", \"TO\", \"TR\", \"TT\", \"TV\", \"TW\", \"TZ\", \"UA\", \"UG\", \"UM\", \"US\", \"UY\", \"UZ\", \"VA\", \"VC\", \"VE\", \"VG\", \"VI\", \"VN\", \"VU\", \"WF\", \"WS\", \"YE\", \"YT\", \"YU\", \"ZA\", \"ZM\", \"ZR\", \"ZW\"]\n};","\"use strict\";\n\n/**\n *\n * @namespace faker.image\n * @property {object} lorempixel - faker.image.lorempixel\n * @property {object} unsplash - faker.image.unsplash\n * @property {object} unsplash - faker.image.lorempicsum\n * @default Default provider is unsplash image provider\n */\nvar Image = function Image(faker) {\n var self = this;\n\n var Lorempixel = require('./image_providers/lorempixel');\n\n var Unsplash = require('./image_providers/unsplash');\n\n var LoremPicsum = require('./image_providers/lorempicsum');\n /**\n * image\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.image\n */\n\n\n self.image = function (width, height, randomize) {\n var categories = [\"abstract\", \"animals\", \"business\", \"cats\", \"city\", \"food\", \"nightlife\", \"fashion\", \"people\", \"nature\", \"sports\", \"technics\", \"transport\"];\n return self[faker.random.arrayElement(categories)](width, height, randomize);\n };\n /**\n * avatar\n *\n * @method faker.image.avatar\n */\n\n\n self.avatar = function () {\n return faker.internet.avatar();\n };\n /**\n * imageUrl\n *\n * @param {number} width\n * @param {number} height\n * @param {string} category\n * @param {boolean} randomize\n * @method faker.image.imageUrl\n */\n\n\n self.imageUrl = function (width, height, category, randomize, https) {\n var width = width || 640;\n var height = height || 480;\n var protocol = 'http://';\n\n if (typeof https !== 'undefined' && https === true) {\n protocol = 'https://';\n }\n\n var url = protocol + 'placeimg.com/' + width + '/' + height;\n\n if (typeof category !== 'undefined') {\n url += '/' + category;\n }\n\n if (randomize) {\n url += '?' + faker.datatype.number();\n }\n\n return url;\n };\n /**\n * abstract\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.abstract\n */\n\n\n self.abstract = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'abstract', randomize);\n };\n /**\n * animals\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.animals\n */\n\n\n self.animals = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'animals', randomize);\n };\n /**\n * business\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.business\n */\n\n\n self.business = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'business', randomize);\n };\n /**\n * cats\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.cats\n */\n\n\n self.cats = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'cats', randomize);\n };\n /**\n * city\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.city\n */\n\n\n self.city = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'city', randomize);\n };\n /**\n * food\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.food\n */\n\n\n self.food = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'food', randomize);\n };\n /**\n * nightlife\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.nightlife\n */\n\n\n self.nightlife = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'nightlife', randomize);\n };\n /**\n * fashion\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.fashion\n */\n\n\n self.fashion = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'fashion', randomize);\n };\n /**\n * people\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.people\n */\n\n\n self.people = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'people', randomize);\n };\n /**\n * nature\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.nature\n */\n\n\n self.nature = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'nature', randomize);\n };\n /**\n * sports\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.sports\n */\n\n\n self.sports = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'sports', randomize);\n };\n /**\n * technics\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.technics\n */\n\n\n self.technics = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'technics', randomize);\n };\n /**\n * transport\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.transport\n */\n\n\n self.transport = function (width, height, randomize) {\n return faker.image.imageUrl(width, height, 'transport', randomize);\n };\n /**\n * dataUri\n *\n * @param {number} width\n * @param {number} height\n * @param {string} color\n * @method faker.image.dataUri\n */\n\n\n self.dataUri = function (width, height, color) {\n color = color || 'grey';\n var svgString = '' + width + 'x' + height + '';\n var rawPrefix = 'data:image/svg+xml;charset=UTF-8,';\n return rawPrefix + encodeURIComponent(svgString);\n };\n\n self.lorempixel = new Lorempixel(faker);\n self.unsplash = new Unsplash(faker);\n self.lorempicsum = new LoremPicsum(faker); // Object.assign(self, self.unsplash);\n // How to set default as unsplash? should be image.default?\n};\n\nmodule[\"exports\"] = Image;","\"use strict\";\n\n/**\n *\n * @namespace lorempixel\n * @memberof faker.image\n */\nvar Lorempixel = function Lorempixel(faker) {\n var self = this;\n /**\n * image\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.image\n */\n\n self.image = function (width, height, randomize) {\n var categories = [\"abstract\", \"animals\", \"business\", \"cats\", \"city\", \"food\", \"nightlife\", \"fashion\", \"people\", \"nature\", \"sports\", \"technics\", \"transport\"];\n return self[faker.random.arrayElement(categories)](width, height, randomize);\n };\n /**\n * avatar\n *\n * @method faker.image.lorempixel.avatar\n */\n\n\n self.avatar = function () {\n return faker.internet.avatar();\n };\n /**\n * imageUrl\n *\n * @param {number} width\n * @param {number} height\n * @param {string} category\n * @param {boolean} randomize\n * @method faker.image.lorempixel.imageUrl\n */\n\n\n self.imageUrl = function (width, height, category, randomize) {\n var width = width || 640;\n var height = height || 480;\n var url = 'https://lorempixel.com/' + width + '/' + height;\n\n if (typeof category !== 'undefined') {\n url += '/' + category;\n }\n\n if (randomize) {\n url += '?' + faker.datatype.number();\n }\n\n return url;\n };\n /**\n * abstract\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.abstract\n */\n\n\n self.abstract = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'abstract', randomize);\n };\n /**\n * animals\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.animals\n */\n\n\n self.animals = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'animals', randomize);\n };\n /**\n * business\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.business\n */\n\n\n self.business = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'business', randomize);\n };\n /**\n * cats\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.cats\n */\n\n\n self.cats = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'cats', randomize);\n };\n /**\n * city\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.city\n */\n\n\n self.city = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'city', randomize);\n };\n /**\n * food\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.food\n */\n\n\n self.food = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'food', randomize);\n };\n /**\n * nightlife\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.nightlife\n */\n\n\n self.nightlife = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'nightlife', randomize);\n };\n /**\n * fashion\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.fashion\n */\n\n\n self.fashion = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'fashion', randomize);\n };\n /**\n * people\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.people\n */\n\n\n self.people = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'people', randomize);\n };\n /**\n * nature\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.nature\n */\n\n\n self.nature = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'nature', randomize);\n };\n /**\n * sports\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.sports\n */\n\n\n self.sports = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'sports', randomize);\n };\n /**\n * technics\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.technics\n */\n\n\n self.technics = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'technics', randomize);\n };\n /**\n * transport\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} randomize\n * @method faker.image.lorempixel.transport\n */\n\n\n self.transport = function (width, height, randomize) {\n return faker.image.lorempixel.imageUrl(width, height, 'transport', randomize);\n };\n};\n\nmodule[\"exports\"] = Lorempixel;","\"use strict\";\n\n/**\n *\n * @namespace unsplash\n * @memberof faker.image\n */\nvar Unsplash = function Unsplash(faker) {\n var self = this;\n var categories = [\"food\", \"nature\", \"people\", \"technology\", \"objects\", \"buildings\"];\n /**\n * image\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.image\n * @description search image from unsplash\n */\n\n self.image = function (width, height, keyword) {\n return self.imageUrl(width, height, undefined, keyword);\n };\n /**\n * avatar\n *\n * @method faker.image.unsplash.avatar\n */\n\n\n self.avatar = function () {\n return faker.internet.avatar();\n };\n /**\n * imageUrl\n *\n * @param {number} width\n * @param {number} height\n * @param {string} category\n * @param {string} keyword\n * @method faker.image.unsplash.imageUrl\n */\n\n\n self.imageUrl = function (width, height, category, keyword) {\n var width = width || 640;\n var height = height || 480;\n var url = 'https://source.unsplash.com';\n\n if (typeof category !== 'undefined') {\n url += '/category/' + category;\n }\n\n url += '/' + width + 'x' + height;\n\n if (typeof keyword !== 'undefined') {\n var keywordFormat = new RegExp('^([A-Za-z0-9].+,[A-Za-z0-9]+)$|^([A-Za-z0-9]+)$');\n\n if (keywordFormat.test(keyword)) {\n url += '?' + keyword;\n }\n }\n\n return url;\n };\n /**\n * food\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.food\n */\n\n\n self.food = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'food', keyword);\n };\n /**\n * people\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.people\n */\n\n\n self.people = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'people', keyword);\n };\n /**\n * nature\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.nature\n */\n\n\n self.nature = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'nature', keyword);\n };\n /**\n * technology\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.technology\n */\n\n\n self.technology = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'technology', keyword);\n };\n /**\n * objects\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.objects\n */\n\n\n self.objects = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'objects', keyword);\n };\n /**\n * buildings\n *\n * @param {number} width\n * @param {number} height\n * @param {string} keyword\n * @method faker.image.unsplash.buildings\n */\n\n\n self.buildings = function (width, height, keyword) {\n return faker.image.unsplash.imageUrl(width, height, 'buildings', keyword);\n };\n};\n\nmodule[\"exports\"] = Unsplash;","\"use strict\";\n\n/**\n *\n * @namespace lorempicsum\n * @memberof faker.image\n */\nvar LoremPicsum = function LoremPicsum(faker) {\n var self = this;\n /**\n * image\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} grayscale\n * @param {number} blur 1-10\n * @method faker.image.lorempicsum.image\n * @description search image from unsplash\n */\n\n self.image = function (width, height, grayscale, blur) {\n return self.imageUrl(width, height, grayscale, blur);\n };\n /**\n * imageGrayscaled\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} grayscale\n * @method faker.image.lorempicsum.imageGrayscaled\n * @description search grayscale image from unsplash\n */\n\n\n self.imageGrayscale = function (width, height, grayscale) {\n return self.imageUrl(width, height, grayscale);\n };\n /**\n * imageBlurred\n *\n * @param {number} width\n * @param {number} height\n * @param {number} blur 1-10\n * @method faker.image.lorempicsum.imageBlurred\n * @description search blurred image from unsplash\n */\n\n\n self.imageBlurred = function (width, height, blur) {\n return self.imageUrl(width, height, undefined, blur);\n };\n /**\n * imageRandomSeeded\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} grayscale\n * @param {number} blur 1-10\n * @param {string} seed\n * @method faker.image.lorempicsum.imageRandomSeeded\n * @description search same random image from unsplash, based on a seed\n */\n\n\n self.imageRandomSeeded = function (width, height, grayscale, blur, seed) {\n return self.imageUrl(width, height, grayscale, blur, seed);\n };\n /**\n * avatar\n *\n * @method faker.image.lorempicsum.avatar\n */\n\n\n self.avatar = function () {\n return faker.internet.avatar();\n };\n /**\n * imageUrl\n *\n * @param {number} width\n * @param {number} height\n * @param {boolean} grayscale\n * @param {number} blur 1-10\n * @param {string} seed\n * @method faker.image.lorempicsum.imageUrl\n */\n\n\n self.imageUrl = function (width, height, grayscale, blur, seed) {\n var width = width || 640;\n var height = height || 480;\n var url = 'https://picsum.photos';\n\n if (seed) {\n url += '/seed/' + seed;\n }\n\n url += '/' + width + '/' + height;\n\n if (grayscale && blur) {\n return url + '?grayscale' + '&blur=' + blur;\n }\n\n if (grayscale) {\n return url + '?grayscale';\n }\n\n if (blur) {\n return url + '?blur=' + blur;\n }\n\n return url;\n };\n};\n\nmodule[\"exports\"] = LoremPicsum;","\"use strict\";\n\n/**\n *\n * @namespace faker.hacker\n */\nvar Hacker = function Hacker(faker) {\n var self = this;\n /**\n * abbreviation\n *\n * @method faker.hacker.abbreviation\n */\n\n self.abbreviation = function () {\n return faker.random.arrayElement(faker.definitions.hacker.abbreviation);\n };\n /**\n * adjective\n *\n * @method faker.hacker.adjective\n */\n\n\n self.adjective = function () {\n return faker.random.arrayElement(faker.definitions.hacker.adjective);\n };\n /**\n * noun\n *\n * @method faker.hacker.noun\n */\n\n\n self.noun = function () {\n return faker.random.arrayElement(faker.definitions.hacker.noun);\n };\n /**\n * verb\n *\n * @method faker.hacker.verb\n */\n\n\n self.verb = function () {\n return faker.random.arrayElement(faker.definitions.hacker.verb);\n };\n /**\n * ingverb\n *\n * @method faker.hacker.ingverb\n */\n\n\n self.ingverb = function () {\n return faker.random.arrayElement(faker.definitions.hacker.ingverb);\n };\n /**\n * phrase\n *\n * @method faker.hacker.phrase\n */\n\n\n self.phrase = function () {\n var data = {\n abbreviation: self.abbreviation,\n adjective: self.adjective,\n ingverb: self.ingverb,\n noun: self.noun,\n verb: self.verb\n };\n var phrase = faker.random.arrayElement(faker.definitions.hacker.phrase);\n return faker.helpers.mustache(phrase, data);\n };\n\n return self;\n};\n\nmodule['exports'] = Hacker;","\"use strict\";\n\nvar random_ua = require('../vendor/user-agent');\n/**\n *\n * @namespace faker.internet\n */\n\n\nvar Internet = function Internet(faker) {\n var self = this;\n /**\n * avatar\n *\n * @method faker.internet.avatar\n */\n\n self.avatar = function () {\n return 'https://cdn.fakercloud.com/avatars/' + faker.random.arrayElement(faker.definitions.internet.avatar_uri);\n };\n\n self.avatar.schema = {\n \"description\": \"Generates a URL for an avatar.\",\n \"sampleResults\": [\"https://cdn.fakercloud.com/avatars/sydlawrence_128.jpg\"]\n };\n /**\n * email\n *\n * @method faker.internet.email\n * @param {string} firstName\n * @param {string} lastName\n * @param {string} provider\n */\n\n self.email = function (firstName, lastName, provider) {\n provider = provider || faker.random.arrayElement(faker.definitions.internet.free_email);\n return faker.helpers.slugify(faker.internet.userName(firstName, lastName)) + \"@\" + provider;\n };\n\n self.email.schema = {\n \"description\": \"Generates a valid email address based on optional input criteria\",\n \"sampleResults\": [\"foo.bar@gmail.com\"],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"The first name of the user\"\n },\n \"lastName\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"The last name of the user\"\n },\n \"provider\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"The domain of the user\"\n }\n }\n };\n /**\n * exampleEmail\n *\n * @method faker.internet.exampleEmail\n * @param {string} firstName\n * @param {string} lastName\n */\n\n self.exampleEmail = function (firstName, lastName) {\n var provider = faker.random.arrayElement(faker.definitions.internet.example_email);\n return self.email(firstName, lastName, provider);\n };\n /**\n * userName\n *\n * @method faker.internet.userName\n * @param {string} firstName\n * @param {string} lastName\n */\n\n\n self.userName = function (firstName, lastName) {\n var result;\n firstName = firstName || faker.name.firstName();\n lastName = lastName || faker.name.lastName();\n\n switch (faker.datatype.number(2)) {\n case 0:\n result = firstName + faker.datatype.number(99);\n break;\n\n case 1:\n result = firstName + faker.random.arrayElement([\".\", \"_\"]) + lastName;\n break;\n\n case 2:\n result = firstName + faker.random.arrayElement([\".\", \"_\"]) + lastName + faker.datatype.number(99);\n break;\n }\n\n result = result.toString().replace(/'/g, \"\");\n result = result.replace(/ /g, \"\");\n return result;\n };\n\n self.userName.schema = {\n \"description\": \"Generates a username based on one of several patterns. The pattern is chosen randomly.\",\n \"sampleResults\": [\"Kirstin39\", \"Kirstin.Smith\", \"Kirstin.Smith39\", \"KirstinSmith\", \"KirstinSmith39\"],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"The first name of the user\"\n },\n \"lastName\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"The last name of the user\"\n }\n }\n };\n /**\n * protocol\n *\n * @method faker.internet.protocol\n */\n\n self.protocol = function () {\n var protocols = ['http', 'https'];\n return faker.random.arrayElement(protocols);\n };\n\n self.protocol.schema = {\n \"description\": \"Randomly generates http or https\",\n \"sampleResults\": [\"https\", \"http\"]\n };\n /**\n * method\n *\n * @method faker.internet.httpMethod\n */\n\n self.httpMethod = function () {\n var httpMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'];\n return faker.random.arrayElement(httpMethods);\n };\n\n self.httpMethod.schema = {\n \"description\": \"Randomly generates HTTP Methods (GET, POST, PUT, DELETE, PATCH)\",\n \"sampleResults\": [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\"]\n };\n /**\n * url\n *\n * @method faker.internet.url\n */\n\n self.url = function () {\n return faker.internet.protocol() + '://' + faker.internet.domainName();\n };\n\n self.url.schema = {\n \"description\": \"Generates a random URL. The URL could be secure or insecure.\",\n \"sampleResults\": [\"http://rashawn.name\", \"https://rashawn.name\"]\n };\n /**\n * domainName\n *\n * @method faker.internet.domainName\n */\n\n self.domainName = function () {\n return faker.internet.domainWord() + \".\" + faker.internet.domainSuffix();\n };\n\n self.domainName.schema = {\n \"description\": \"Generates a random domain name.\",\n \"sampleResults\": [\"marvin.org\"]\n };\n /**\n * domainSuffix\n *\n * @method faker.internet.domainSuffix\n */\n\n self.domainSuffix = function () {\n return faker.random.arrayElement(faker.definitions.internet.domain_suffix);\n };\n\n self.domainSuffix.schema = {\n \"description\": \"Generates a random domain suffix.\",\n \"sampleResults\": [\"net\"]\n };\n /**\n * domainWord\n *\n * @method faker.internet.domainWord\n */\n\n self.domainWord = function () {\n return faker.name.firstName().replace(/([\\\\~#&*{}/:<>?|\\\"'])/ig, '').toLowerCase();\n };\n\n self.domainWord.schema = {\n \"description\": \"Generates a random domain word.\",\n \"sampleResults\": [\"alyce\"]\n };\n /**\n * ip\n *\n * @method faker.internet.ip\n */\n\n self.ip = function () {\n var randNum = function randNum() {\n return faker.datatype.number(255).toFixed(0);\n };\n\n var result = [];\n\n for (var i = 0; i < 4; i++) {\n result[i] = randNum();\n }\n\n return result.join(\".\");\n };\n\n self.ip.schema = {\n \"description\": \"Generates a random IP.\",\n \"sampleResults\": [\"97.238.241.11\"]\n };\n /**\n * ipv6\n *\n * @method faker.internet.ipv6\n */\n\n self.ipv6 = function () {\n var randHash = function randHash() {\n var result = \"\";\n\n for (var i = 0; i < 4; i++) {\n result += faker.random.arrayElement([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n }\n\n return result;\n };\n\n var result = [];\n\n for (var i = 0; i < 8; i++) {\n result[i] = randHash();\n }\n\n return result.join(\":\");\n };\n\n self.ipv6.schema = {\n \"description\": \"Generates a random IPv6 address.\",\n \"sampleResults\": [\"2001:0db8:6276:b1a7:5213:22f1:25df:c8a0\"]\n };\n /**\n * port\n * \n * @method faker.internet.port\n */\n\n self.port = function () {\n return faker.datatype.number({\n min: 0,\n max: 65535\n });\n };\n\n self.port.schema = {\n \"description\": \"Generates a random port number.\",\n \"sampleResults\": [\"4422\"]\n };\n /**\n * userAgent\n *\n * @method faker.internet.userAgent\n */\n\n self.userAgent = function () {\n return random_ua.generate(faker);\n };\n\n self.userAgent.schema = {\n \"description\": \"Generates a random user agent.\",\n \"sampleResults\": [\"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1\"]\n };\n /**\n * color\n *\n * @method faker.internet.color\n * @param {number} baseRed255\n * @param {number} baseGreen255\n * @param {number} baseBlue255\n */\n\n self.color = function (baseRed255, baseGreen255, baseBlue255) {\n baseRed255 = baseRed255 || 0;\n baseGreen255 = baseGreen255 || 0;\n baseBlue255 = baseBlue255 || 0; // based on awesome response : http://stackoverflow.com/questions/43044/algorithm-to-randomly-generate-an-aesthetically-pleasing-color-palette\n\n var red = Math.floor((faker.datatype.number(256) + baseRed255) / 2);\n var green = Math.floor((faker.datatype.number(256) + baseGreen255) / 2);\n var blue = Math.floor((faker.datatype.number(256) + baseBlue255) / 2);\n var redStr = red.toString(16);\n var greenStr = green.toString(16);\n var blueStr = blue.toString(16);\n return '#' + (redStr.length === 1 ? '0' : '') + redStr + (greenStr.length === 1 ? '0' : '') + greenStr + (blueStr.length === 1 ? '0' : '') + blueStr;\n };\n\n self.color.schema = {\n \"description\": \"Generates a random hexadecimal color.\",\n \"sampleResults\": [\"#06267f\"],\n \"properties\": {\n \"baseRed255\": {\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"The red value. Valid values are 0 - 255.\"\n },\n \"baseGreen255\": {\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"The green value. Valid values are 0 - 255.\"\n },\n \"baseBlue255\": {\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"The blue value. Valid values are 0 - 255.\"\n }\n }\n };\n /**\n * mac\n *\n * @method faker.internet.mac\n * @param {string} sep\n */\n\n self.mac = function (sep) {\n var i,\n mac = \"\",\n validSep = ':'; // if the client passed in a different separator than `:`, \n // we will use it if it is in the list of acceptable separators (dash or no separator)\n\n if (['-', ''].indexOf(sep) !== -1) {\n validSep = sep;\n }\n\n for (i = 0; i < 12; i++) {\n mac += faker.datatype.number(15).toString(16);\n\n if (i % 2 == 1 && i != 11) {\n mac += validSep;\n }\n }\n\n return mac;\n };\n\n self.mac.schema = {\n \"description\": \"Generates a random mac address.\",\n \"sampleResults\": [\"78:06:cc:ae:b3:81\"]\n };\n /**\n * password\n *\n * @method faker.internet.password\n * @param {number} len\n * @param {boolean} memorable\n * @param {string} pattern\n * @param {string} prefix\n */\n\n self.password = function (len, memorable, pattern, prefix) {\n len = len || 15;\n\n if (typeof memorable === \"undefined\") {\n memorable = false;\n }\n /*\n * password-generator ( function )\n * Copyright(c) 2011-2013 Bermi Ferrer \n * MIT Licensed\n */\n\n\n var consonant, letter, vowel;\n letter = /[a-zA-Z]$/;\n vowel = /[aeiouAEIOU]$/;\n consonant = /[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/;\n\n var _password = function _password(length, memorable, pattern, prefix) {\n var char, n;\n\n if (length == null) {\n length = 10;\n }\n\n if (memorable == null) {\n memorable = true;\n }\n\n if (pattern == null) {\n pattern = /\\w/;\n }\n\n if (prefix == null) {\n prefix = '';\n }\n\n if (prefix.length >= length) {\n return prefix;\n }\n\n if (memorable) {\n if (prefix.match(consonant)) {\n pattern = vowel;\n } else {\n pattern = consonant;\n }\n }\n\n n = faker.datatype.number(94) + 33;\n char = String.fromCharCode(n);\n\n if (memorable) {\n char = char.toLowerCase();\n }\n\n if (!char.match(pattern)) {\n return _password(length, memorable, pattern, prefix);\n }\n\n return _password(length, memorable, pattern, \"\" + prefix + char);\n };\n\n return _password(len, memorable, pattern, prefix);\n };\n\n self.password.schema = {\n \"description\": \"Generates a random password.\",\n \"sampleResults\": [\"AM7zl6Mg\", \"susejofe\"],\n \"properties\": {\n \"length\": {\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"The number of characters in the password.\"\n },\n \"memorable\": {\n \"type\": \"boolean\",\n \"required\": false,\n \"description\": \"Whether a password should be easy to remember.\"\n },\n \"pattern\": {\n \"type\": \"regex\",\n \"required\": false,\n \"description\": \"A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on.\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"A value to prepend to the generated password. The prefix counts towards the length of the password.\"\n }\n }\n };\n};\n\nmodule[\"exports\"] = Internet;","\"use strict\";\n\n/**\n *\n * @namespace faker.database\n */\nvar Database = function Database(faker) {\n var self = this;\n /**\n * column\n *\n * @method faker.database.column\n */\n\n self.column = function () {\n return faker.random.arrayElement(faker.definitions.database.column);\n };\n\n self.column.schema = {\n \"description\": \"Generates a column name.\",\n \"sampleResults\": [\"id\", \"title\", \"createdAt\"]\n };\n /**\n * type\n *\n * @method faker.database.type\n */\n\n self.type = function () {\n return faker.random.arrayElement(faker.definitions.database.type);\n };\n\n self.type.schema = {\n \"description\": \"Generates a column type.\",\n \"sampleResults\": [\"byte\", \"int\", \"varchar\", \"timestamp\"]\n };\n /**\n * collation\n *\n * @method faker.database.collation\n */\n\n self.collation = function () {\n return faker.random.arrayElement(faker.definitions.database.collation);\n };\n\n self.collation.schema = {\n \"description\": \"Generates a collation.\",\n \"sampleResults\": [\"utf8_unicode_ci\", \"utf8_bin\"]\n };\n /**\n * engine\n *\n * @method faker.database.engine\n */\n\n self.engine = function () {\n return faker.random.arrayElement(faker.definitions.database.engine);\n };\n\n self.engine.schema = {\n \"description\": \"Generates a storage engine.\",\n \"sampleResults\": [\"MyISAM\", \"InnoDB\"]\n };\n};\n\nmodule[\"exports\"] = Database;","\"use strict\";\n\n/**\n *\n * @namespace faker.date\n */\nvar _Date = function _Date(faker) {\n var self = this;\n /**\n * past\n *\n * @method faker.date.past\n * @param {number} years\n * @param {date} refDate\n */\n\n self.past = function (years, refDate) {\n var date = new Date();\n\n if (typeof refDate !== \"undefined\") {\n date = new Date(Date.parse(refDate));\n }\n\n var range = {\n min: 1000,\n max: (years || 1) * 365 * 24 * 3600 * 1000\n };\n var past = date.getTime();\n past -= faker.datatype.number(range); // some time from now to N years ago, in milliseconds\n\n date.setTime(past);\n return date;\n };\n /**\n * future\n *\n * @method faker.date.future\n * @param {number} years\n * @param {date} refDate\n */\n\n\n self.future = function (years, refDate) {\n var date = new Date();\n\n if (typeof refDate !== \"undefined\") {\n date = new Date(Date.parse(refDate));\n }\n\n var range = {\n min: 1000,\n max: (years || 1) * 365 * 24 * 3600 * 1000\n };\n var future = date.getTime();\n future += faker.datatype.number(range); // some time from now to N years later, in milliseconds\n\n date.setTime(future);\n return date;\n };\n /**\n * between\n *\n * @method faker.date.between\n * @param {date} from\n * @param {date} to\n */\n\n\n self.between = function (from, to) {\n var fromMilli = Date.parse(from);\n var dateOffset = faker.datatype.number(Date.parse(to) - fromMilli);\n var newDate = new Date(fromMilli + dateOffset);\n return newDate;\n };\n /**\n * betweens\n *\n * @method faker.date.between\n * @param {date} from\n * @param {date} to\n */\n\n\n self.betweens = function (from, to, num) {\n if (typeof num == 'undefined') {\n num = 3;\n }\n\n var newDates = [];\n var fromMilli = Date.parse(from);\n var dateOffset = (Date.parse(to) - fromMilli) / (num + 1);\n var lastDate = from;\n\n for (var i = 0; i < num; i++) {\n fromMilli = Date.parse(lastDate);\n lastDate = new Date(fromMilli + dateOffset);\n newDates.push(lastDate);\n }\n\n return newDates;\n };\n /**\n * recent\n *\n * @method faker.date.recent\n * @param {number} days\n * @param {date} refDate\n */\n\n\n self.recent = function (days, refDate) {\n var date = new Date();\n\n if (typeof refDate !== \"undefined\") {\n date = new Date(Date.parse(refDate));\n }\n\n var range = {\n min: 1000,\n max: (days || 1) * 24 * 3600 * 1000\n };\n var future = date.getTime();\n future -= faker.datatype.number(range); // some time from now to N days ago, in milliseconds\n\n date.setTime(future);\n return date;\n };\n /**\n * soon\n *\n * @method faker.date.soon\n * @param {number} days\n * @param {date} refDate\n */\n\n\n self.soon = function (days, refDate) {\n var date = new Date();\n\n if (typeof refDate !== \"undefined\") {\n date = new Date(Date.parse(refDate));\n }\n\n var range = {\n min: 1000,\n max: (days || 1) * 24 * 3600 * 1000\n };\n var future = date.getTime();\n future += faker.datatype.number(range); // some time from now to N days later, in milliseconds\n\n date.setTime(future);\n return date;\n };\n /**\n * month\n *\n * @method faker.date.month\n * @param {object} options\n */\n\n\n self.month = function (options) {\n options = options || {};\n var type = 'wide';\n\n if (options.abbr) {\n type = 'abbr';\n }\n\n if (options.context && typeof faker.definitions.date.month[type + '_context'] !== 'undefined') {\n type += '_context';\n }\n\n var source = faker.definitions.date.month[type];\n return faker.random.arrayElement(source);\n };\n /**\n * weekday\n *\n * @param {object} options\n * @method faker.date.weekday\n */\n\n\n self.weekday = function (options) {\n options = options || {};\n var type = 'wide';\n\n if (options.abbr) {\n type = 'abbr';\n }\n\n if (options.context && typeof faker.definitions.date.weekday[type + '_context'] !== 'undefined') {\n type += '_context';\n }\n\n var source = faker.definitions.date.weekday[type];\n return faker.random.arrayElement(source);\n };\n\n return self;\n};\n\nmodule['exports'] = _Date;","\"use strict\";\n\n/**\n *\n * @namespace faker.commerce\n */\nvar Commerce = function Commerce(faker) {\n var self = this;\n /**\n * color\n *\n * @method faker.commerce.color\n */\n\n self.color = function () {\n return faker.random.arrayElement(faker.definitions.commerce.color);\n };\n /**\n * department\n *\n * @method faker.commerce.department\n */\n\n\n self.department = function () {\n return faker.random.arrayElement(faker.definitions.commerce.department);\n };\n /**\n * productName\n *\n * @method faker.commerce.productName\n */\n\n\n self.productName = function () {\n return faker.commerce.productAdjective() + \" \" + faker.commerce.productMaterial() + \" \" + faker.commerce.product();\n };\n /**\n * price\n *\n * @method faker.commerce.price\n * @param {number} min\n * @param {number} max\n * @param {number} dec\n * @param {string} symbol\n *\n * @return {string}\n */\n\n\n self.price = function (min, max, dec, symbol) {\n min = min || 1;\n max = max || 1000;\n dec = dec === undefined ? 2 : dec;\n symbol = symbol || '';\n\n if (min < 0 || max < 0) {\n return symbol + 0.00;\n }\n\n var randValue = faker.datatype.number({\n max: max,\n min: min\n });\n return symbol + (Math.round(randValue * Math.pow(10, dec)) / Math.pow(10, dec)).toFixed(dec);\n };\n /*\n self.categories = function(num) {\n var categories = [];\n do {\n var category = faker.random.arrayElement(faker.definitions.commerce.department);\n if(categories.indexOf(category) === -1) {\n categories.push(category);\n }\n } while(categories.length < num);\n return categories;\n };\n */\n\n /*\n self.mergeCategories = function(categories) {\n var separator = faker.definitions.separator || \" &\";\n // TODO: find undefined here\n categories = categories || faker.definitions.commerce.categories;\n var commaSeparated = categories.slice(0, -1).join(', ');\n return [commaSeparated, categories[categories.length - 1]].join(separator + \" \");\n };\n */\n\n /**\n * productAdjective\n *\n * @method faker.commerce.productAdjective\n */\n\n\n self.productAdjective = function () {\n return faker.random.arrayElement(faker.definitions.commerce.product_name.adjective);\n };\n /**\n * productMaterial\n *\n * @method faker.commerce.productMaterial\n */\n\n\n self.productMaterial = function () {\n return faker.random.arrayElement(faker.definitions.commerce.product_name.material);\n };\n /**\n * product\n *\n * @method faker.commerce.product\n */\n\n\n self.product = function () {\n return faker.random.arrayElement(faker.definitions.commerce.product_name.product);\n };\n /**\n * productDescription\n *\n * @method faker.commerce.productDescription\n */\n\n\n self.productDescription = function () {\n return faker.random.arrayElement(faker.definitions.commerce.product_description);\n };\n\n return self;\n};\n\nmodule['exports'] = Commerce;","\"use strict\";\n\n/**\n * @namespace faker.git\n */\nvar Git = function Git(faker) {\n var self = this;\n var f = faker.fake;\n var hexChars = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n /**\n * branch\n *\n * @method faker.git.branch\n */\n\n self.branch = function () {\n var noun = faker.hacker.noun().replace(' ', '-');\n var verb = faker.hacker.verb().replace(' ', '-');\n return noun + '-' + verb;\n };\n /**\n * commitEntry\n *\n * @method faker.git.commitEntry\n * @param {object} options\n */\n\n\n self.commitEntry = function (options) {\n options = options || {};\n var entry = 'commit {{git.commitSha}}\\r\\n';\n\n if (options.merge || faker.datatype.number({\n min: 0,\n max: 4\n }) === 0) {\n entry += 'Merge: {{git.shortSha}} {{git.shortSha}}\\r\\n';\n }\n\n entry += 'Author: {{name.firstName}} {{name.lastName}} <{{internet.email}}>\\r\\n';\n entry += 'Date: ' + faker.date.recent().toString() + '\\r\\n';\n entry += '\\r\\n\\xa0\\xa0\\xa0\\xa0{{git.commitMessage}}\\r\\n';\n return f(entry);\n };\n /**\n * commitMessage\n *\n * @method faker.git.commitMessage\n */\n\n\n self.commitMessage = function () {\n var format = '{{hacker.verb}} {{hacker.adjective}} {{hacker.noun}}';\n return f(format);\n };\n /**\n * commitSha\n *\n * @method faker.git.commitSha\n */\n\n\n self.commitSha = function () {\n var commit = \"\";\n\n for (var i = 0; i < 40; i++) {\n commit += faker.random.arrayElement(hexChars);\n }\n\n return commit;\n };\n /**\n * shortSha\n *\n * @method faker.git.shortSha\n */\n\n\n self.shortSha = function () {\n var shortSha = \"\";\n\n for (var i = 0; i < 7; i++) {\n shortSha += faker.random.arrayElement(hexChars);\n }\n\n return shortSha;\n };\n\n return self;\n};\n\nmodule['exports'] = Git;","\"use strict\";\n\n/**\r\n *\r\n * @namespace faker.datatype\r\n */\nfunction Datatype(faker, seed) {\n // Use a user provided seed if it is an array or number\n if (Array.isArray(seed) && seed.length) {\n faker.mersenne.seed_array(seed);\n } else if (!isNaN(seed)) {\n faker.mersenne.seed(seed);\n }\n /**\r\n * returns a single random number based on a max number or range\r\n *\r\n * @method faker.datatype.number\r\n * @param {mixed} options {min, max, precision}\r\n */\n\n\n this.number = function (options) {\n if (typeof options === \"number\") {\n options = {\n max: options\n };\n }\n\n options = options || {};\n\n if (typeof options.min === \"undefined\") {\n options.min = 0;\n }\n\n if (typeof options.max === \"undefined\") {\n options.max = 99999;\n }\n\n if (typeof options.precision === \"undefined\") {\n options.precision = 1;\n } // Make the range inclusive of the max value\n\n\n var max = options.max;\n\n if (max >= 0) {\n max += options.precision;\n }\n\n var randomNumber = Math.floor(faker.mersenne.rand(max / options.precision, options.min / options.precision)); // Workaround problem in Float point arithmetics for e.g. 6681493 / 0.01\n\n randomNumber = randomNumber / (1 / options.precision);\n return randomNumber;\n };\n /**\r\n * returns a single random floating-point number based on a max number or range\r\n *\r\n * @method faker.datatype.float\r\n * @param {mixed} options\r\n */\n\n\n this.float = function (options) {\n if (typeof options === \"number\") {\n options = {\n precision: options\n };\n }\n\n options = options || {};\n var opts = {};\n\n for (var p in options) {\n opts[p] = options[p];\n }\n\n if (typeof opts.precision === 'undefined') {\n opts.precision = 0.01;\n }\n\n return faker.datatype.number(opts);\n };\n /**\r\n * method returns a Date object using a random number of milliseconds since 1. Jan 1970 UTC\r\n * Caveat: seeding is not working\r\n *\r\n * @method faker.datatype.datetime\r\n * @param {mixed} options, pass min OR max as number of milliseconds since 1. Jan 1970 UTC\r\n */\n\n\n this.datetime = function (options) {\n if (typeof options === \"number\") {\n options = {\n max: options\n };\n }\n\n var minMax = 8640000000000000;\n options = options || {};\n\n if (typeof options.min === \"undefined\" || options.min < minMax * -1) {\n options.min = new Date().setFullYear(1990, 1, 1);\n }\n\n if (typeof options.max === \"undefined\" || options.max > minMax) {\n options.max = new Date().setFullYear(2100, 1, 1);\n }\n\n var random = faker.datatype.number(options);\n return new Date(random);\n };\n /**\r\n * Returns a string, containing UTF-16 chars between 33 and 125 ('!' to '}')\r\n *\r\n *\r\n * @method faker.datatype.string\r\n * @param { number } length: length of generated string, default = 10, max length = 2^20\r\n */\n\n\n this.string = function (length) {\n if (length === undefined) {\n length = 10;\n }\n\n var maxLength = Math.pow(2, 20);\n\n if (length >= maxLength) {\n length = maxLength;\n }\n\n var charCodeOption = {\n min: 33,\n max: 125\n };\n var returnString = '';\n\n for (var i = 0; i < length; i++) {\n returnString += String.fromCharCode(faker.datatype.number(charCodeOption));\n }\n\n return returnString;\n };\n /**\r\n * uuid\r\n *\r\n * @method faker.datatype.uuid\r\n */\n\n\n this.uuid = function () {\n var RFC4122_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\n var replacePlaceholders = function replacePlaceholders(placeholder) {\n var random = faker.datatype.number({\n min: 0,\n max: 15\n });\n var value = placeholder == 'x' ? random : random & 0x3 | 0x8;\n return value.toString(16);\n };\n\n return RFC4122_TEMPLATE.replace(/[xy]/g, replacePlaceholders);\n };\n /**\r\n * boolean\r\n *\r\n * @method faker.datatype.boolean\r\n */\n\n\n this.boolean = function () {\n return !!faker.datatype.number(1);\n };\n /**\r\n * hexaDecimal\r\n *\r\n * @method faker.datatype.hexaDecimal\r\n * @param {number} count defaults to 1\r\n */\n\n\n this.hexaDecimal = function hexaDecimal(count) {\n if (typeof count === \"undefined\") {\n count = 1;\n }\n\n var wholeString = \"\";\n\n for (var i = 0; i < count; i++) {\n wholeString += faker.random.arrayElement([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"]);\n }\n\n return \"0x\" + wholeString;\n };\n /**\r\n * returns json object with 7 pre-defined properties\r\n *\r\n * @method faker.datatype.json\r\n */\n\n\n this.json = function json() {\n var properties = ['foo', 'bar', 'bike', 'a', 'b', 'name', 'prop'];\n var returnObject = {};\n properties.forEach(function (prop) {\n returnObject[prop] = faker.datatype.boolean() ? faker.datatype.string() : faker.datatype.number();\n });\n return JSON.stringify(returnObject);\n };\n /**\r\n * returns an array with values generated by faker.datatype.number and faker.datatype.string\r\n *\r\n * @method faker.datatype.array\r\n * @param { number } length of the returned array\r\n */\n\n\n this.array = function array(length) {\n if (length === undefined) {\n length = 10;\n }\n\n var returnArray = new Array(length);\n\n for (var i = 0; i < length; i++) {\n returnArray[i] = faker.datatype.boolean() ? faker.datatype.string() : faker.datatype.number();\n }\n\n return returnArray;\n };\n\n return this;\n}\n\nmodule['exports'] = Datatype;"],"sourceRoot":""}