├── .npmrc ├── .gitattributes ├── .gitignore ├── .github ├── security.md └── workflows │ └── main.yml ├── .editorconfig ├── index.test-d.ts ├── benchmark.js ├── index.d.ts ├── license ├── package.json ├── readme.md ├── index.js ├── test.js └── sample.json /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn.lock 3 | -------------------------------------------------------------------------------- /.github/security.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.yml] 11 | indent_style = space 12 | indent_size = 2 13 | -------------------------------------------------------------------------------- /index.test-d.ts: -------------------------------------------------------------------------------- 1 | import {expectType} from 'tsd'; 2 | import stripJsonComments from './index.js'; 3 | 4 | const json = '{/*rainbows*/"unicorn":"cake"}'; 5 | 6 | expectType(stripJsonComments(json)); 7 | expectType(stripJsonComments(json, {whitespace: true})); 8 | expectType(stripJsonComments(json, {trailingCommas: true})); 9 | expectType(stripJsonComments(json, {whitespace: true, trailingCommas: true})); 10 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | name: Node.js ${{ matrix.node-version }} 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | node-version: 13 | - 18 14 | - 16 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: actions/setup-node@v4 18 | with: 19 | node-version: ${{ matrix.node-version }} 20 | - run: npm install 21 | - run: npm test 22 | -------------------------------------------------------------------------------- /benchmark.js: -------------------------------------------------------------------------------- 1 | /* globals bench, set */ 2 | import fs from 'node:fs'; 3 | import stripJsonComments from './index.js'; 4 | 5 | const json = fs.readFileSync('sample.json', 'utf8'); 6 | const bigJson = fs.readFileSync('sample-big.json', 'utf8'); 7 | 8 | bench('strip JSON comments', () => { 9 | set('type', 'static'); 10 | stripJsonComments(json); 11 | }); 12 | 13 | bench('strip JSON comments without whitespace', () => { 14 | stripJsonComments(json, {whitespace: false}); 15 | }); 16 | 17 | bench('strip Big JSON comments', () => { 18 | stripJsonComments(bigJson); 19 | }); 20 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | export type Options = { 2 | /** 3 | Strip trailing commas in addition to comments. 4 | 5 | @default false 6 | */ 7 | readonly trailingCommas?: boolean; 8 | 9 | /** 10 | Replace comments and trailing commas with whitespace instead of stripping them entirely. 11 | 12 | @default true 13 | */ 14 | readonly whitespace?: boolean; 15 | }; 16 | 17 | /** 18 | Strip comments from JSON. Lets you use comments in your JSON files! 19 | 20 | It will replace single-line comments `//` and multi-line comments `/**\/` with whitespace. This allows JSON error positions to remain as close as possible to the original source. 21 | 22 | @param jsonString - Accepts a string with JSON. 23 | @returns A JSON string without comments. 24 | 25 | @example 26 | ``` 27 | import stripJsonComments from 'strip-json-comments'; 28 | 29 | const json = `{ 30 | // Rainbows 31 | "unicorn": "cake" 32 | }`; 33 | 34 | JSON.parse(stripJsonComments(json)); 35 | //=> {unicorn: 'cake'} 36 | ``` 37 | */ 38 | export default function stripJsonComments( 39 | jsonString: string, 40 | options?: Options 41 | ): string; 42 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Sindre Sorhus (https://sindresorhus.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "strip-json-comments", 3 | "version": "5.0.3", 4 | "description": "Strip comments from JSON. Lets you use comments in your JSON files!", 5 | "license": "MIT", 6 | "repository": "sindresorhus/strip-json-comments", 7 | "funding": "https://github.com/sponsors/sindresorhus", 8 | "author": { 9 | "name": "Sindre Sorhus", 10 | "email": "sindresorhus@gmail.com", 11 | "url": "https://sindresorhus.com" 12 | }, 13 | "type": "module", 14 | "exports": "./index.js", 15 | "types": "./index.d.ts", 16 | "sideEffects": false, 17 | "engines": { 18 | "node": ">=14.16" 19 | }, 20 | "scripts": { 21 | "test": "xo && ava && tsd", 22 | "bench": "matcha benchmark.js" 23 | }, 24 | "files": [ 25 | "index.js", 26 | "index.d.ts" 27 | ], 28 | "keywords": [ 29 | "json", 30 | "strip", 31 | "comments", 32 | "remove", 33 | "delete", 34 | "trim", 35 | "multiline", 36 | "parse", 37 | "config", 38 | "configuration", 39 | "settings", 40 | "util", 41 | "env", 42 | "environment", 43 | "jsonc" 44 | ], 45 | "devDependencies": { 46 | "ava": "^4.3.1", 47 | "matcha": "^0.7.0", 48 | "tsd": "^0.22.0", 49 | "xo": "^0.54.2" 50 | }, 51 | "xo": { 52 | "rules": { 53 | "complexity": "off" 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # strip-json-comments 2 | 3 | > Strip comments from JSON. Lets you use comments in your JSON files! 4 | 5 | This is now possible: 6 | 7 | ```js 8 | { 9 | // Rainbows 10 | "unicorn": /* ❤ */ "cake" 11 | } 12 | ``` 13 | 14 | It will replace single-line comments `//` and multi-line comments `/**/` with whitespace. This allows JSON error positions to remain as close as possible to the original source. 15 | 16 | Also available as a [Gulp](https://github.com/sindresorhus/gulp-strip-json-comments)/[Grunt](https://github.com/sindresorhus/grunt-strip-json-comments)/[Broccoli](https://github.com/sindresorhus/broccoli-strip-json-comments) plugin. 17 | 18 | ## Install 19 | 20 | ```sh 21 | npm install strip-json-comments 22 | ``` 23 | 24 | ## Usage 25 | 26 | ```js 27 | import stripJsonComments from 'strip-json-comments'; 28 | 29 | const json = `{ 30 | // Rainbows 31 | "unicorn": /* ❤ */ "cake" 32 | }`; 33 | 34 | JSON.parse(stripJsonComments(json)); 35 | //=> {unicorn: 'cake'} 36 | ``` 37 | 38 | ## API 39 | 40 | ### stripJsonComments(jsonString, options?) 41 | 42 | #### jsonString 43 | 44 | Type: `string` 45 | 46 | Accepts a string with JSON and returns a string without comments. 47 | 48 | #### options 49 | 50 | Type: `object` 51 | 52 | ##### trailingCommas 53 | 54 | Type: `boolean`\ 55 | Default: `false` 56 | 57 | Strip trailing commas in addition to comments. 58 | 59 | ##### whitespace 60 | 61 | Type: `boolean`\ 62 | Default: `true` 63 | 64 | Replace comments and trailing commas with whitespace instead of stripping them entirely. 65 | 66 | ## Benchmark 67 | 68 | ```sh 69 | npm run bench 70 | ``` 71 | 72 | ## Related 73 | 74 | - [strip-json-comments-cli](https://github.com/sindresorhus/strip-json-comments-cli) - CLI for this module 75 | - [strip-css-comments](https://github.com/sindresorhus/strip-css-comments) - Strip comments from CSS 76 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const singleComment = Symbol('singleComment'); 2 | const multiComment = Symbol('multiComment'); 3 | 4 | const stripWithoutWhitespace = () => ''; 5 | 6 | // Replace all characters except ASCII spaces, tabs and line endings with regular spaces to ensure valid JSON output. 7 | const stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/[^ \t\r\n]/g, ' '); 8 | 9 | const isEscaped = (jsonString, quotePosition) => { 10 | let index = quotePosition - 1; 11 | let backslashCount = 0; 12 | 13 | while (jsonString[index] === '\\') { 14 | index -= 1; 15 | backslashCount += 1; 16 | } 17 | 18 | return Boolean(backslashCount % 2); 19 | }; 20 | 21 | export default function stripJsonComments(jsonString, {whitespace = true, trailingCommas = false} = {}) { 22 | if (typeof jsonString !== 'string') { 23 | throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``); 24 | } 25 | 26 | const strip = whitespace ? stripWithWhitespace : stripWithoutWhitespace; 27 | 28 | let isInsideString = false; 29 | let isInsideComment = false; 30 | let offset = 0; 31 | let buffer = ''; 32 | let result = ''; 33 | let commaIndex = -1; 34 | 35 | for (let index = 0; index < jsonString.length; index++) { 36 | const currentCharacter = jsonString[index]; 37 | const nextCharacter = jsonString[index + 1]; 38 | 39 | if (!isInsideComment && currentCharacter === '"') { 40 | // Enter or exit string 41 | const escaped = isEscaped(jsonString, index); 42 | if (!escaped) { 43 | isInsideString = !isInsideString; 44 | } 45 | } 46 | 47 | if (isInsideString) { 48 | continue; 49 | } 50 | 51 | if (!isInsideComment && currentCharacter + nextCharacter === '//') { 52 | // Enter single-line comment 53 | buffer += jsonString.slice(offset, index); 54 | offset = index; 55 | isInsideComment = singleComment; 56 | index++; 57 | } else if (isInsideComment === singleComment && currentCharacter + nextCharacter === '\r\n') { 58 | // Exit single-line comment via \r\n 59 | index++; 60 | isInsideComment = false; 61 | buffer += strip(jsonString, offset, index); 62 | offset = index; 63 | continue; 64 | } else if (isInsideComment === singleComment && currentCharacter === '\n') { 65 | // Exit single-line comment via \n 66 | isInsideComment = false; 67 | buffer += strip(jsonString, offset, index); 68 | offset = index; 69 | } else if (!isInsideComment && currentCharacter + nextCharacter === '/*') { 70 | // Enter multiline comment 71 | buffer += jsonString.slice(offset, index); 72 | offset = index; 73 | isInsideComment = multiComment; 74 | index++; 75 | continue; 76 | } else if (isInsideComment === multiComment && currentCharacter + nextCharacter === '*/') { 77 | // Exit multiline comment 78 | index++; 79 | isInsideComment = false; 80 | buffer += strip(jsonString, offset, index + 1); 81 | offset = index + 1; 82 | continue; 83 | } else if (trailingCommas && !isInsideComment) { 84 | if (commaIndex !== -1) { 85 | if (currentCharacter === '}' || currentCharacter === ']') { 86 | // Strip trailing comma 87 | buffer += jsonString.slice(offset, index); 88 | result += strip(buffer, 0, 1) + buffer.slice(1); 89 | buffer = ''; 90 | offset = index; 91 | commaIndex = -1; 92 | } else if (currentCharacter !== ' ' && currentCharacter !== '\t' && currentCharacter !== '\r' && currentCharacter !== '\n') { 93 | // Hit non-whitespace following a comma; comma is not trailing 94 | buffer += jsonString.slice(offset, index); 95 | offset = index; 96 | commaIndex = -1; 97 | } 98 | } else if (currentCharacter === ',') { 99 | // Flush buffer prior to this point, and save new comma index 100 | result += buffer + jsonString.slice(offset, index); 101 | buffer = ''; 102 | offset = index; 103 | commaIndex = index; 104 | } 105 | } 106 | } 107 | 108 | const remaining = (isInsideComment === singleComment) 109 | ? strip(jsonString, offset) 110 | : jsonString.slice(offset); 111 | 112 | return result + buffer + remaining; 113 | } 114 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import test from 'ava'; 2 | import stripJsonComments from './index.js'; 3 | 4 | test('replace comments with whitespace', t => { 5 | t.is(stripJsonComments('//comment\n{"a":"b"}'), ' \n{"a":"b"}'); 6 | t.is(stripJsonComments('/*//comment*/{"a":"b"}'), ' {"a":"b"}'); 7 | t.is(stripJsonComments('{"a":"b"//comment\n}'), '{"a":"b" \n}'); 8 | t.is(stripJsonComments('{"a":"b"/*comment*/}'), '{"a":"b" }'); 9 | t.is(stripJsonComments('{"a"/*\n\n\ncomment\r\n*/:"b"}'), '{"a" \n\n\n \r\n :"b"}'); 10 | t.is(stripJsonComments('/*!\n * comment\n */\n{"a":"b"}'), ' \n \n \n{"a":"b"}'); 11 | t.is(stripJsonComments('{/*comment*/"a":"b"}'), '{ "a":"b"}'); 12 | }); 13 | 14 | test('remove comments', t => { 15 | const options = {whitespace: false}; 16 | t.is(stripJsonComments('//comment\n{"a":"b"}', options), '\n{"a":"b"}'); 17 | t.is(stripJsonComments('/*//comment*/{"a":"b"}', options), '{"a":"b"}'); 18 | t.is(stripJsonComments('{"a":"b"//comment\n}', options), '{"a":"b"\n}'); 19 | t.is(stripJsonComments('{"a":"b"/*comment*/}', options), '{"a":"b"}'); 20 | t.is(stripJsonComments('{"a"/*\n\n\ncomment\r\n*/:"b"}', options), '{"a":"b"}'); 21 | t.is(stripJsonComments('/*!\n * comment\n */\n{"a":"b"}', options), '\n{"a":"b"}'); 22 | t.is(stripJsonComments('{/*comment*/"a":"b"}', options), '{"a":"b"}'); 23 | }); 24 | 25 | test('doesn\'t strip comments inside strings', t => { 26 | t.is(stripJsonComments('{"a":"b//c"}'), '{"a":"b//c"}'); 27 | t.is(stripJsonComments('{"a":"b/*c*/"}'), '{"a":"b/*c*/"}'); 28 | t.is(stripJsonComments('{"/*a":"b"}'), '{"/*a":"b"}'); 29 | t.is(stripJsonComments('{"\\"/*a":"b"}'), '{"\\"/*a":"b"}'); 30 | }); 31 | 32 | test('consider escaped slashes when checking for escaped string quote', t => { 33 | t.is(stripJsonComments('{"\\\\":"https://foobar.com"}'), '{"\\\\":"https://foobar.com"}'); 34 | t.is(stripJsonComments('{"foo\\"":"https://foobar.com"}'), '{"foo\\"":"https://foobar.com"}'); 35 | }); 36 | 37 | test('line endings - no comments', t => { 38 | t.is(stripJsonComments('{"a":"b"\n}'), '{"a":"b"\n}'); 39 | t.is(stripJsonComments('{"a":"b"\r\n}'), '{"a":"b"\r\n}'); 40 | }); 41 | 42 | test('line endings - single line comment', t => { 43 | t.is(stripJsonComments('{"a":"b"//c\n}'), '{"a":"b" \n}'); 44 | t.is(stripJsonComments('{"a":"b"//c\r\n}'), '{"a":"b" \r\n}'); 45 | }); 46 | 47 | test('line endings - single line block comment', t => { 48 | t.is(stripJsonComments('{"a":"b"/*c*/\n}'), '{"a":"b" \n}'); 49 | t.is(stripJsonComments('{"a":"b"/*c*/\r\n}'), '{"a":"b" \r\n}'); 50 | }); 51 | 52 | test('line endings - multi line block comment', t => { 53 | t.is(stripJsonComments('{"a":"b",/*c\nc2*/"x":"y"\n}'), '{"a":"b", \n "x":"y"\n}'); 54 | t.is(stripJsonComments('{"a":"b",/*c\r\nc2*/"x":"y"\r\n}'), '{"a":"b", \r\n "x":"y"\r\n}'); 55 | }); 56 | 57 | test('line endings - works at EOF', t => { 58 | const options = {whitespace: false}; 59 | t.is(stripJsonComments('{\r\n\t"a":"b"\r\n} //EOF'), '{\r\n\t"a":"b"\r\n} '); 60 | t.is(stripJsonComments('{\r\n\t"a":"b"\r\n} //EOF', options), '{\r\n\t"a":"b"\r\n} '); 61 | }); 62 | 63 | test('handles weird escaping', t => { 64 | t.is(stripJsonComments(String.raw`{"x":"x \"sed -e \\\"s/^.\\\\{46\\\\}T//\\\" -e \\\"s/#033/\\\\x1b/g\\\"\""}`), String.raw`{"x":"x \"sed -e \\\"s/^.\\\\{46\\\\}T//\\\" -e \\\"s/#033/\\\\x1b/g\\\"\""}`); 65 | }); 66 | 67 | test('strips trailing commas', t => { 68 | t.is(stripJsonComments('{"x":true,}', {trailingCommas: true}), '{"x":true }'); 69 | t.is(stripJsonComments('{"x":true,}', {trailingCommas: true, whitespace: false}), '{"x":true}'); 70 | t.is(stripJsonComments('{"x":true,\n }', {trailingCommas: true}), '{"x":true \n }'); 71 | t.is(stripJsonComments('[true, false,]', {trailingCommas: true}), '[true, false ]'); 72 | t.is(stripJsonComments('[true, false,]', {trailingCommas: true, whitespace: false}), '[true, false]'); 73 | t.is(stripJsonComments('{\n "array": [\n true,\n false,\n ],\n}', {trailingCommas: true, whitespace: false}), '{\n "array": [\n true,\n false\n ]\n}'); 74 | t.is(stripJsonComments('{\n "array": [\n true,\n false /* comment */ ,\n /*comment*/ ],\n}', {trailingCommas: true, whitespace: false}), '{\n "array": [\n true,\n false \n ]\n}'); 75 | }); 76 | 77 | test('handles malformed block comments', t => { 78 | t.is(stripJsonComments('[] */'), '[] */'); 79 | t.is(stripJsonComments('[] /*'), '[] /*'); // Fails 80 | }); 81 | 82 | test('handles non-breaking space with preserving whitespace', t => { 83 | const fixture = `{ 84 | // Comment with non-breaking-space: '\u00A0' 85 | "a": 1 86 | }`; 87 | 88 | const stripped = stripJsonComments(fixture); 89 | t.deepEqual(JSON.parse(stripped), {a: 1}); 90 | }); 91 | -------------------------------------------------------------------------------- /sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 1, 3 | "jsonrpc": "2.0", 4 | "total": 20000, 5 | /* 6 | Nulla quis ullamco consectetur elit. Minim amet aliquip ad deserunt anim officia laborum consectetur ipsum eu. Cupidatat deserunt qui eiusmod exercitation labore amet id aliquip in qui. Aute duis ex exercitation magna aliquip mollit nisi amet id fugiat nulla. Pariatur aliquip non sint sint amet. Mollit anim reprehenderit aliquip commodo pariatur velit aliquip reprehenderit labore sit adipisicing. Exercitation adipisicing adipisicing voluptate aute id occaecat ipsum commodo minim sint et Lorem officia. 7 | */ 8 | "result": [ 9 | { 10 | "id": 1, 11 | "guid": "046447ee-da78-478c-b518-b612111942a5", 12 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 13 | "age": 37, 14 | "name": "Payton Murphy", 15 | "company": "Robotomic", 16 | "phone": "806-587-2379", 17 | "email": "payton@robotomic.com" 18 | }, 19 | { 20 | "id": 2, 21 | "guid": "3d06a20a-c8b8-4a17-add5-e9a27b66d202", 22 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 23 | "age": 40, 24 | "name": "Savannah Calhoun", 25 | "company": "Conotomics", 26 | "phone": "873-453-3007", 27 | "email": "savannah@conotomics.com" 28 | }, 29 | { 30 | "id": 3, 31 | "guid": "18885904-5685-4cec-9182-a1f6509c5ce4", 32 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 33 | "age": 39, 34 | "name": "Kaitlyn Carrington", 35 | "company": "Genland", 36 | "phone": "889-443-2207", 37 | "email": "kaitlyn@genland.com" 38 | }, 39 | { 40 | "id": 4, 41 | "guid": "8378a1ff-d289-471d-b1aa-fe0809d8b2db", 42 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 43 | "age": 26, 44 | "name": "Genesis Goldman", 45 | "company": "iQualcar", 46 | "phone": "805-439-3302", 47 | "email": "genesis@iqualcar.com" 48 | }, 49 | { 50 | "id": 5, 51 | "guid": "93e92a87-8512-4db8-940e-fedb7d64973f", 52 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 53 | "age": 39, 54 | "name": "Leah Brooks", 55 | "company": "Westgate", 56 | "phone": "882-499-2432", 57 | "email": "leah@westgate.com" 58 | }, 59 | { 60 | "id": 6, 61 | "guid": "31456de2-2fd4-4075-9f3b-9afef6a6747d", 62 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 63 | "age": 40, 64 | "name": "Madelyn Carey", 65 | "company": "Titanirola", 66 | "phone": "823-450-3828", 67 | "email": "madelyn@titanirola.com" 68 | }, 69 | { 70 | "id": 7, 71 | "guid": "416f7fec-a695-4652-b6a4-c663344941fd", 72 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 73 | "age": 37, 74 | "name": "Trinity Campbell", 75 | "company": "eSteganoergy", 76 | "phone": "824-540-3213", 77 | "email": "trinity@esteganoergy.com" 78 | }, 79 | { 80 | "id": 8, 81 | "guid": "ce62e5ff-12ec-4097-82aa-2d5570653af7", 82 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 83 | "age": 33, 84 | "name": "Savannah Oldman", 85 | "company": "Proline", 86 | "phone": "820-584-2077", 87 | "email": "savannah@proline.com" 88 | }, 89 | { 90 | "id": 9, 91 | "guid": "454cf0c8-0466-4703-8579-a6a97e6914b9", 92 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 93 | "age": 23, 94 | "name": "Samantha Chandter", 95 | "company": "iOptystix", 96 | "phone": "884-598-3615", 97 | "email": "samantha@ioptystix.com" 98 | }, 99 | { 100 | "id": 10, 101 | "guid": "5ea1251f-ca94-4385-9ff7-99bf8c4b3707", 102 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 103 | "age": 20, 104 | "name": "Layla Thorndike", 105 | "company": "Titanirola", 106 | "phone": "807-439-3000", 107 | "email": "layla@titanirola.com" 108 | }, 109 | { 110 | "id": 11, 111 | "guid": "79567436-45ec-4331-a707-4cb9272272ef", 112 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 113 | "age": 25, 114 | "name": "Victoria Fulton", 115 | "company": "Titanirola", 116 | "phone": "893-535-3674", 117 | "email": "victoria@titanirola.com" 118 | }, 119 | { 120 | "id": 12, 121 | "guid": "1e3be706-e1f2-443b-8757-bf602ae7e89d", 122 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 123 | "age": 26, 124 | "name": "Angelina Thorndike", 125 | "company": "Conrama", 126 | "phone": "893-410-3150", 127 | "email": "angelina@conrama.com" 128 | }, 129 | { 130 | "id": 13, 131 | "guid": "d31d10cc-089c-4432-969c-51ebf3570bd1", 132 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 133 | "age": 27, 134 | "name": "Makayla Fisher", 135 | "company": "Inridium", 136 | "phone": "852-514-2754", 137 | "email": "makayla@inridium.com" 138 | }, 139 | { 140 | "id": 14, 141 | "guid": "23236036-1fb8-4691-a394-1f04c694e757", 142 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 143 | "age": 21, 144 | "name": "Valeria Chapman", 145 | "company": "Vencom", 146 | "phone": "857-554-3909", 147 | "email": "valeria@vencom.com" 148 | }, 149 | { 150 | "id": 15, 151 | "guid": "db1679a3-688d-4961-8d1b-711fdd98e4e3", 152 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 153 | "age": 37, 154 | "name": "Alexandra Wallace", 155 | "company": "Xeicon", 156 | "phone": "800-445-3677", 157 | "email": "alexandra@xeicon.com" 158 | }, 159 | { 160 | "id": 16, 161 | "guid": "82dabc5a-4cf1-4b41-9c45-500128c8b3df", 162 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 163 | "age": 29, 164 | "name": "Kaitlyn Vance", 165 | "company": "Teraserv", 166 | "phone": "836-513-3038", 167 | "email": "kaitlyn@teraserv.com" 168 | }, 169 | { 170 | "id": 17, 171 | "guid": "049d3676-7708-4a5c-af8d-0738db178817", 172 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 173 | "age": 28, 174 | "name": "Avery Ogden", 175 | "company": "Qualserve", 176 | "phone": "808-571-2740", 177 | "email": "avery@qualserve.com" 178 | }, 179 | { 180 | "id": 18, 181 | "guid": "a7eccc57-1a1c-4114-ae38-9ffba11c9246", 182 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 183 | "age": 32, 184 | "name": "Savannah Gerald", 185 | "company": "Cryptotegrity", 186 | "phone": "876-411-2611", 187 | "email": "savannah@cryptotegrity.com" 188 | }, 189 | { 190 | "id": 19, 191 | "guid": "f9bd1424-fe55-4c65-a1d6-f4943da1ba34", 192 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 193 | "age": 30, 194 | "name": "Serenity Neal", 195 | "company": "Tekcar", 196 | "phone": "800-587-2691", 197 | "email": "serenity@tekcar.com" 198 | }, 199 | { 200 | "id": 20, 201 | "guid": "c8286c32-95ba-4cc5-9186-5d3d61e1f62c", 202 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 203 | "age": 22, 204 | "name": "Jasmine Carey", 205 | "company": "Infragraph", 206 | "phone": "875-545-2084", 207 | "email": "jasmine@infragraph.com" 208 | }, 209 | { 210 | "id": 21, 211 | "guid": "bd380c03-8558-425b-84b1-ecd8142af14f", 212 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 213 | "age": 24, 214 | "name": "Amelia WifKinson", 215 | "company": "OpKeycomm", 216 | "phone": "811-479-3113", 217 | "email": "amelia@opkeycomm.com" 218 | }, 219 | { 220 | "id": 22, 221 | "guid": "30d856da-1843-4781-bf90-91360bf55dae", 222 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 223 | "age": 34, 224 | "name": "Emma Ogden", 225 | "company": "Textiqua", 226 | "phone": "835-422-2698", 227 | "email": "emma@textiqua.com" 228 | }, 229 | { 230 | "id": 23, 231 | "guid": "3b0e71e6-dde1-4f9c-8563-53bc0fdf601e", 232 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 233 | "age": 30, 234 | "name": "Evelyn Ford", 235 | "company": "Fibroserve", 236 | "phone": "810-471-3020", 237 | "email": "evelyn@fibroserve.com" 238 | }, 239 | { 240 | "id": 24, 241 | "guid": "209bbb71-d5a3-458d-bf98-7a50a2f42bbd", 242 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 243 | "age": 33, 244 | "name": "Molly Oliver", 245 | "company": "Conrama", 246 | "phone": "883-518-2720", 247 | "email": "molly@conrama.com" 248 | }, 249 | { 250 | "id": 25, 251 | "guid": "1137ef18-6b98-41e6-bb94-5334f03526b4", 252 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 253 | "age": 38, 254 | "name": "Melanie Carrington", 255 | "company": "Mescaridic", 256 | "phone": "806-592-2714", 257 | "email": "melanie@mescaridic.com" 258 | }, 259 | { 260 | "id": 26, 261 | "guid": "1406fa4c-a0b7-403f-b1e2-af85b78cf2c1", 262 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 263 | "age": 25, 264 | "name": "Ashley Carroll", 265 | "company": "Systheon", 266 | "phone": "872-480-3718", 267 | "email": "ashley@systheon.com" 268 | }, 269 | { 270 | "id": 27, 271 | "guid": "48532bf7-a9d5-4559-b7b4-6c857b807dcd", 272 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 273 | "age": 21, 274 | "name": "Katelyn Higgins", 275 | "company": "Allnet", 276 | "phone": "809-409-2096", 277 | "email": "katelyn@allnet.com" 278 | }, 279 | { 280 | "id": 28, 281 | "guid": "bf2256d9-e1c3-44f0-8458-f7759aafc571", 282 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 283 | "age": 24, 284 | "name": "Mya Mercer", 285 | "company": "Xeicon", 286 | "phone": "841-421-3710", 287 | "email": "mya@xeicon.com" 288 | }, 289 | { 290 | "id": 29, 291 | "guid": "b755923a-f7d8-4cbf-82d4-eef76de5e674", 292 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 293 | "age": 40, 294 | "name": "Gianna Galbraith", 295 | "company": "Anaframe", 296 | "phone": "813-420-2072", 297 | "email": "gianna@anaframe.com" 298 | }, 299 | { 300 | "id": 30, 301 | "guid": "5a96819e-ce98-45b7-8d54-28c7dd90117c", 302 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 303 | "age": 23, 304 | "name": "Gabrielle Molligan", 305 | "company": "US Omnigraphik", 306 | "phone": "894-554-2996", 307 | "email": "gabrielle@us omnigraphik.com" 308 | }, 309 | { 310 | "id": 31, 311 | "guid": "b55a1280-f555-44b6-8f1c-b2c00e1f60f2", 312 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 313 | "age": 39, 314 | "name": "Natalie Wainwright", 315 | "company": "Navivacs", 316 | "phone": "814-566-2925", 317 | "email": "natalie@navivacs.com" 318 | }, 319 | { 320 | "id": 32, 321 | "guid": "e935551e-b106-4960-b69a-0422890e6880", 322 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 323 | "age": 30, 324 | "name": "Autumn Molligan", 325 | "company": "Proline", 326 | "phone": "833-411-2666", 327 | "email": "autumn@proline.com" 328 | }, 329 | { 330 | "id": 33, 331 | "guid": "063e653b-2335-4d07-bda4-75173eaa08da", 332 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 333 | "age": 26, 334 | "name": "Ashley Miller", 335 | "company": "Pericenta", 336 | "phone": "851-547-3159", 337 | "email": "ashley@pericenta.com" 338 | }, 339 | { 340 | "id": 34, 341 | "guid": "cf3dfe24-320b-4682-977d-5fd867bd5cb1", 342 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 343 | "age": 39, 344 | "name": "Brooklyn Webster", 345 | "company": "Compuamerica", 346 | "phone": "827-486-2808", 347 | "email": "brooklyn@compuamerica.com" 348 | }, 349 | { 350 | "id": 35, 351 | "guid": "84f17bd0-b971-4be0-8f3f-28b73e53d4a5", 352 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 353 | "age": 22, 354 | "name": "Hailey Gibbs", 355 | "company": "Videobanc", 356 | "phone": "811-504-3512", 357 | "email": "hailey@videobanc.com" 358 | }, 359 | { 360 | "id": 36, 361 | "guid": "0b2ce302-5cb1-479a-b1a3-8f492cb65283", 362 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 363 | "age": 34, 364 | "name": "Samantha Morrison", 365 | "company": "Teknoplexon", 366 | "phone": "887-463-2120", 367 | "email": "samantha@teknoplexon.com" 368 | }, 369 | { 370 | "id": 37, 371 | "guid": "f4f15e54-c16a-4e2f-b1cb-6505ae98ee37", 372 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 373 | "age": 25, 374 | "name": "Taylor Oswald", 375 | "company": "Xeicon", 376 | "phone": "819-459-3112", 377 | "email": "taylor@xeicon.com" 378 | }, 379 | { 380 | "id": 38, 381 | "guid": "fa104e34-97f7-4c34-8627-df4e07253302", 382 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 383 | "age": 28, 384 | "name": "Camila Waller", 385 | "company": "Teratopia", 386 | "phone": "837-594-2012", 387 | "email": "camila@teratopia.com" 388 | }, 389 | { 390 | "id": 39, 391 | "guid": "6d478567-68ca-4c47-97dc-954bc8319b2d", 392 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 393 | "age": 24, 394 | "name": "Zoey Ford", 395 | "company": "Unologic", 396 | "phone": "874-440-2700", 397 | "email": "zoey@unologic.com" 398 | }, 399 | { 400 | "id": 40, 401 | "guid": "f6ac734b-e475-487d-b3b5-37b6639c376b", 402 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 403 | "age": 24, 404 | "name": "Abigail Freeman", 405 | "company": "Syssoft", 406 | "phone": "898-459-3002", 407 | "email": "abigail@syssoft.com" 408 | }, 409 | { 410 | "id": 41, 411 | "guid": "0203f330-8f2c-41a0-a99b-229bbc9b55dc", 412 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 413 | "age": 36, 414 | "name": "Zoey Milton", 415 | "company": "Generola", 416 | "phone": "816-447-3124", 417 | "email": "zoey@generola.com" 418 | }, 419 | { 420 | "id": 42, 421 | "guid": "e88d7ffd-4625-4b3e-b829-e2f0a7d58680", 422 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 423 | "age": 40, 424 | "name": "Payton Thornton", 425 | "company": "Fibroserve", 426 | "phone": "866-513-2976", 427 | "email": "payton@fibroserve.com" 428 | }, 429 | { 430 | "id": 43, 431 | "guid": "03fa6c0e-9a18-46ed-8313-8ce1de3d4a9a", 432 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 433 | "age": 36, 434 | "name": "Alyssa Ogden", 435 | "company": "Skydata", 436 | "phone": "844-408-3290", 437 | "email": "alyssa@skydata.com" 438 | }, 439 | { 440 | "id": 44, 441 | "guid": "0e7cfd86-184f-44ef-8c2c-808bb44a7c4d", 442 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 443 | "age": 25, 444 | "name": "Alexis Oldman", 445 | "company": "Conrama", 446 | "phone": "859-507-3860", 447 | "email": "alexis@conrama.com" 448 | }, 449 | { 450 | "id": 45, 451 | "guid": "d8e7b890-a35f-4fc4-ad77-8b56e5c10de8", 452 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 453 | "age": 33, 454 | "name": "Audrey Turner", 455 | "company": "Openserve", 456 | "phone": "880-581-2353", 457 | "email": "audrey@openserve.com" 458 | }, 459 | { 460 | "id": 46, 461 | "guid": "a6e83742-0a04-4993-8030-230514837caa", 462 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 463 | "age": 25, 464 | "name": "Maya Miers", 465 | "company": "OpKeycomm", 466 | "phone": "803-460-3501", 467 | "email": "maya@opkeycomm.com" 468 | }, 469 | { 470 | "id": 47, 471 | "guid": "332aa9d3-eb42-4343-b079-46628cb81696", 472 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 473 | "age": 33, 474 | "name": "Chloe Wayne", 475 | "company": "Proline", 476 | "phone": "890-573-2886", 477 | "email": "chloe@proline.com" 478 | }, 479 | { 480 | "id": 48, 481 | "guid": "67385697-bcb3-40f0-821a-f1d75dd62503", 482 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 483 | "age": 29, 484 | "name": "Madison Brooks", 485 | "company": "eSteganoergy", 486 | "phone": "880-451-2793", 487 | "email": "madison@esteganoergy.com" 488 | }, 489 | { 490 | "id": 49, 491 | "guid": "8af583f6-7929-40eb-a52c-010f14e25d0c", 492 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 493 | "age": 26, 494 | "name": "Lillian Galbraith", 495 | "company": "Netsystems", 496 | "phone": "875-528-3158", 497 | "email": "lillian@netsystems.com" 498 | }, 499 | { 500 | "id": 50, 501 | "guid": "c7fc495c-dedd-4c0a-9570-f14193a53886", 502 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 503 | "age": 21, 504 | "name": "Addison Daniels", 505 | "company": "Compuamerica", 506 | "phone": "826-585-2965", 507 | "email": "addison@compuamerica.com" 508 | }, 509 | { 510 | "id": 51, 511 | "guid": "03781014-082e-42a3-8a1d-af957050536c", 512 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 513 | "age": 23, 514 | "name": "Audrey Sheldon", 515 | "company": "US Infratouch", 516 | "phone": "812-588-2969", 517 | "email": "audrey@us infratouch.com" 518 | }, 519 | { 520 | "id": 52, 521 | "guid": "ff438497-453c-412a-980f-04836628915a", 522 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 523 | "age": 25, 524 | "name": "Valeria Hardman", 525 | "company": "OpKeycomm", 526 | "phone": "824-452-3622", 527 | "email": "valeria@opkeycomm.com" 528 | }, 529 | { 530 | "id": 53, 531 | "guid": "b9922441-470f-4e7c-817e-d3827b7794bb", 532 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 533 | "age": 31, 534 | "name": "Kaylee Michaelson", 535 | "company": "Rapigrafix", 536 | "phone": "808-596-2516", 537 | "email": "kaylee@rapigrafix.com" 538 | }, 539 | { 540 | "id": 54, 541 | "guid": "955e4fe2-e595-459a-acdc-3ed19f5c69b2", 542 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 543 | "age": 29, 544 | "name": "Bailey Carrington", 545 | "company": "Fibrotopia", 546 | "phone": "870-472-2979", 547 | "email": "bailey@fibrotopia.com" 548 | }, 549 | { 550 | "id": 55, 551 | "guid": "fa1a2554-409e-4ea3-a661-9629faa895db", 552 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 553 | "age": 40, 554 | "name": "Bella Hawkins", 555 | "company": "Netsystems", 556 | "phone": "822-481-3541", 557 | "email": "bella@netsystems.com" 558 | }, 559 | { 560 | "id": 56, 561 | "guid": "54d8f80f-ce10-423f-b941-e6587bbc7e4f", 562 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 563 | "age": 25, 564 | "name": "Kylie Sheldon", 565 | "company": "Quintegrity", 566 | "phone": "891-555-2893", 567 | "email": "kylie@quintegrity.com" 568 | }, 569 | { 570 | "id": 57, 571 | "guid": "a4d7811e-7030-4baa-bfa2-d6c420c25116", 572 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 573 | "age": 29, 574 | "name": "Gabriella Croftoon", 575 | "company": "eEyetanic", 576 | "phone": "862-484-3428", 577 | "email": "gabriella@eeyetanic.com" 578 | }, 579 | { 580 | "id": 58, 581 | "guid": "f33d03ff-0737-4e24-a4ed-a1b6a073abe1", 582 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 583 | "age": 30, 584 | "name": "Chloe Ward", 585 | "company": "Jamrola", 586 | "phone": "800-450-2433", 587 | "email": "chloe@jamrola.com" 588 | }, 589 | { 590 | "id": 59, 591 | "guid": "9861e563-1613-4fef-b117-36fe0afd4c37", 592 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 593 | "age": 23, 594 | "name": "Khloe Hancock", 595 | "company": "Openserve", 596 | "phone": "893-592-3698", 597 | "email": "khloe@openserve.com" 598 | }, 599 | { 600 | "id": 60, 601 | "guid": "c6332bab-7d46-4dfd-9850-5824d8d7640b", 602 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 603 | "age": 32, 604 | "name": "Andrea Milton", 605 | "company": "Proline", 606 | "phone": "836-414-2328", 607 | "email": "andrea@proline.com" 608 | }, 609 | { 610 | "id": 61, 611 | "guid": "22bd60a1-0f48-4909-8c83-f55f291607db", 612 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 613 | "age": 39, 614 | "name": "Zoey Miln", 615 | "company": "Infraique", 616 | "phone": "845-440-2597", 617 | "email": "zoey@infraique.com" 618 | }, 619 | { 620 | "id": 62, 621 | "guid": "b6d62cfd-df30-4530-9f4c-870694700e4e", 622 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 623 | "age": 39, 624 | "name": "Jocelyn Day", 625 | "company": "Videobanc", 626 | "phone": "843-527-2382", 627 | "email": "jocelyn@videobanc.com" 628 | }, 629 | { 630 | "id": 63, 631 | "guid": "14beb613-b8ec-4953-a46b-b373234149c8", 632 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 633 | "age": 29, 634 | "name": "Nevaeh Gustman", 635 | "company": "Pacwest", 636 | "phone": "895-484-2126", 637 | "email": "nevaeh@pacwest.com" 638 | }, 639 | { 640 | "id": 64, 641 | "guid": "bc1cd9cc-ae58-4b48-9a6c-3f441a254a27", 642 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 643 | "age": 35, 644 | "name": "Avery Hailey", 645 | "company": "Truegate", 646 | "phone": "840-560-2201", 647 | "email": "avery@truegate.com" 648 | }, 649 | { 650 | "id": 65, 651 | "guid": "60905bde-f447-4eb7-a1d9-56027ea6b01c", 652 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 653 | "age": 38, 654 | "name": "Kaylee Gardner", 655 | "company": "Venconix", 656 | "phone": "866-566-2532", 657 | "email": "kaylee@venconix.com" 658 | }, 659 | { 660 | "id": 66, 661 | "guid": "8229f71a-3d4b-477e-b69b-c3d2cc994dcb", 662 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 663 | "age": 22, 664 | "name": "Melanie Chapman", 665 | "company": "RoboAerlogix", 666 | "phone": "829-483-2385", 667 | "email": "melanie@roboaerlogix.com" 668 | }, 669 | { 670 | "id": 67, 671 | "guid": "f340a27c-a6bc-4419-887e-eb4974122b01", 672 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 673 | "age": 32, 674 | "name": "Sydney Mercer", 675 | "company": "Anagraph", 676 | "phone": "879-549-2467", 677 | "email": "sydney@anagraph.com" 678 | }, 679 | { 680 | "id": 68, 681 | "guid": "e9a4d060-8af8-40ec-92a0-3b7ba53d4fc0", 682 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 683 | "age": 33, 684 | "name": "Gabriella Hailey", 685 | "company": "eSteganoergy", 686 | "phone": "818-409-2159", 687 | "email": "gabriella@esteganoergy.com" 688 | }, 689 | { 690 | "id": 69, 691 | "guid": "2f553263-5440-4d0f-a27d-c0ab4cccb6da", 692 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 693 | "age": 30, 694 | "name": "Ariana Winter", 695 | "company": "OpKeycomm", 696 | "phone": "888-560-2724", 697 | "email": "ariana@opkeycomm.com" 698 | }, 699 | { 700 | "id": 70, 701 | "guid": "28a2bc9c-d7e3-4935-a942-25d8c73ce2da", 702 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 703 | "age": 32, 704 | "name": "Valeria White", 705 | "company": "SysUSA", 706 | "phone": "866-461-2778", 707 | "email": "valeria@sysusa.com" 708 | }, 709 | { 710 | "id": 71, 711 | "guid": "edf2bd2a-a1dd-4110-bced-ca898aabf8f1", 712 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 713 | "age": 26, 714 | "name": "Lily Gustman", 715 | "company": "Unologic", 716 | "phone": "875-541-3769", 717 | "email": "lily@unologic.com" 718 | }, 719 | { 720 | "id": 72, 721 | "guid": "b468f12e-4b4f-410c-98ee-e08bbc45993a", 722 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 723 | "age": 25, 724 | "name": "Jasmine Daniels", 725 | "company": "Anagraph", 726 | "phone": "828-536-3011", 727 | "email": "jasmine@anagraph.com" 728 | }, 729 | { 730 | "id": 73, 731 | "guid": "bcc8ecb6-3b57-4abb-8193-d6de5f9b6c84", 732 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 733 | "age": 28, 734 | "name": "Autumn Carey", 735 | "company": "Sontopia", 736 | "phone": "898-514-2249", 737 | "email": "autumn@sontopia.com" 738 | }, 739 | { 740 | "id": 74, 741 | "guid": "d115e8b7-7082-481a-981d-3d5c8b2cb638", 742 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 743 | "age": 32, 744 | "name": "Genesis Chesterton", 745 | "company": "Polytheon", 746 | "phone": "831-552-2814", 747 | "email": "genesis@polytheon.com" 748 | }, 749 | { 750 | "id": 75, 751 | "guid": "8dbcea88-84bf-4154-b95d-0bf5181210ca", 752 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 753 | "age": 37, 754 | "name": "Maya Brooks", 755 | "company": "Sontopia", 756 | "phone": "892-446-2969", 757 | "email": "maya@sontopia.com" 758 | }, 759 | { 760 | "id": 76, 761 | "guid": "322e3297-e665-4c10-b0a2-2d5f256d1b48", 762 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 763 | "age": 38, 764 | "name": "Madelyn Cook", 765 | "company": "Unconix", 766 | "phone": "842-600-2909", 767 | "email": "madelyn@unconix.com" 768 | }, 769 | { 770 | "id": 77, 771 | "guid": "8a2cc0a6-a316-4600-b673-1f9275e21432", 772 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 773 | "age": 29, 774 | "name": "Brianna Campbell", 775 | "company": "Enlogia", 776 | "phone": "877-405-2653", 777 | "email": "brianna@enlogia.com" 778 | }, 779 | { 780 | "id": 78, 781 | "guid": "259ec896-0ae6-4707-991c-b9ee0c2ac42a", 782 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 783 | "age": 33, 784 | "name": "Eva Hailey", 785 | "company": "Cryptotegrity", 786 | "phone": "862-492-3121", 787 | "email": "eva@cryptotegrity.com" 788 | }, 789 | { 790 | "id": 79, 791 | "guid": "80948ec6-f7b2-4436-9af5-6ea04fbb5716", 792 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 793 | "age": 35, 794 | "name": "Angelina Wayne", 795 | "company": "Skydata", 796 | "phone": "843-466-2319", 797 | "email": "angelina@skydata.com" 798 | }, 799 | { 800 | "id": 80, 801 | "guid": "df82f61e-ec34-4527-89d4-2666b6cf40d1", 802 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 803 | "age": 30, 804 | "name": "Molly Adamson", 805 | "company": "Fibroserve", 806 | "phone": "874-566-2516", 807 | "email": "molly@fibroserve.com" 808 | }, 809 | { 810 | "id": 81, 811 | "guid": "75351ef9-3ba6-4779-bde3-8927a566b7b8", 812 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 813 | "age": 24, 814 | "name": "Eva Gustman", 815 | "company": "Enlogia", 816 | "phone": "823-579-3886", 817 | "email": "eva@enlogia.com" 818 | }, 819 | { 820 | "id": 82, 821 | "guid": "a23bf0bd-7353-4f88-b041-a6a71c2ea20c", 822 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 823 | "age": 22, 824 | "name": "Madelyn Morrison", 825 | "company": "Anaframe", 826 | "phone": "897-497-2540", 827 | "email": "madelyn@anaframe.com" 828 | }, 829 | { 830 | "id": 83, 831 | "guid": "4652d92d-67b6-4e7f-aed4-a210d40238ac", 832 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 833 | "age": 22, 834 | "name": "Ava Smith", 835 | "company": "Allnet", 836 | "phone": "882-554-2473", 837 | "email": "ava@allnet.com" 838 | }, 839 | { 840 | "id": 84, 841 | "guid": "76f782a8-9d92-4cc4-9e9c-c67281516a5e", 842 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 843 | "age": 40, 844 | "name": "Jessica Carey", 845 | "company": "Jamrola", 846 | "phone": "886-577-3461", 847 | "email": "jessica@jamrola.com" 848 | }, 849 | { 850 | "id": 85, 851 | "guid": "cdbbf9fe-0c97-4944-a9d4-c47df2528f0a", 852 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 853 | "age": 22, 854 | "name": "Alyssa Oliver", 855 | "company": "Westgate", 856 | "phone": "806-458-2960", 857 | "email": "alyssa@westgate.com" 858 | }, 859 | { 860 | "id": 86, 861 | "guid": "2e8b9cb6-b741-4416-9023-9521d98ede2e", 862 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 863 | "age": 26, 864 | "name": "Jessica Winter", 865 | "company": "Conotomics", 866 | "phone": "813-514-3987", 867 | "email": "jessica@conotomics.com" 868 | }, 869 | { 870 | "id": 87, 871 | "guid": "9078f6f7-7662-4e20-9044-682ac87496c8", 872 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 873 | "age": 23, 874 | "name": "Molly Fisher", 875 | "company": "Conotomics", 876 | "phone": "845-523-2623", 877 | "email": "molly@conotomics.com" 878 | }, 879 | { 880 | "id": 88, 881 | "guid": "5e5bf44a-f376-4374-831e-e3d7bd431d0e", 882 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 883 | "age": 38, 884 | "name": "Payton Hancock", 885 | "company": "Robotemplate", 886 | "phone": "829-459-2458", 887 | "email": "payton@robotemplate.com" 888 | }, 889 | { 890 | "id": 89, 891 | "guid": "34292e46-7da6-45c4-ae35-02584a76e38e", 892 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 893 | "age": 31, 894 | "name": "Jasmine Day", 895 | "company": "Steganoconiche", 896 | "phone": "802-473-3320", 897 | "email": "jasmine@steganoconiche.com" 898 | }, 899 | { 900 | "id": 90, 901 | "guid": "2cd013c4-cc30-4a29-99fd-4ca87cae443a", 902 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 903 | "age": 29, 904 | "name": "Avery Miers", 905 | "company": "Keytheon", 906 | "phone": "833-468-3209", 907 | "email": "avery@keytheon.com" 908 | }, 909 | { 910 | "id": 91, 911 | "guid": "e4cdeaa3-0a84-4df3-b414-ef274298b069", 912 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 913 | "age": 26, 914 | "name": "Ella Brown", 915 | "company": "Jamconik", 916 | "phone": "898-520-3724", 917 | "email": "ella@jamconik.com" 918 | }, 919 | { 920 | "id": 92, 921 | "guid": "a4d3e9e2-8a49-43f3-9f41-2c212110111f", 922 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 923 | "age": 26, 924 | "name": "Evelyn Nathan", 925 | "company": "iEnland", 926 | "phone": "881-405-2960", 927 | "email": "evelyn@ienland.com" 928 | }, 929 | { 930 | "id": 93, 931 | "guid": "1e4e9d0f-f57d-454a-b4f7-d23ba8722288", 932 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 933 | "age": 22, 934 | "name": "Leah Milton", 935 | "company": "iSkyvaco", 936 | "phone": "881-436-3566", 937 | "email": "leah@iskyvaco.com" 938 | }, 939 | { 940 | "id": 94, 941 | "guid": "9eff5d1a-1413-4a78-98ed-985dbf6f4516", 942 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 943 | "age": 35, 944 | "name": "Riley Waller", 945 | "company": "Enlogia", 946 | "phone": "825-560-3105", 947 | "email": "riley@enlogia.com" 948 | }, 949 | { 950 | "id": 95, 951 | "guid": "03c259af-fae6-403d-8c8c-6564cd434990", 952 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 953 | "age": 26, 954 | "name": "Madeline Nash", 955 | "company": "Aprama", 956 | "phone": "893-405-3053", 957 | "email": "madeline@aprama.com" 958 | }, 959 | { 960 | "id": 96, 961 | "guid": "bcb29d86-e92a-4a41-8cb9-c9286a4a8f52", 962 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 963 | "age": 33, 964 | "name": "Mya Hodges", 965 | "company": "Genland", 966 | "phone": "837-445-3835", 967 | "email": "mya@genland.com" 968 | }, 969 | { 970 | "id": 97, 971 | "guid": "7b9b60b7-cab5-4cfc-9b89-5f6979c2beaa", 972 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 973 | "age": 20, 974 | "name": "Zoe Owen", 975 | "company": "Qualserve", 976 | "phone": "851-548-3270", 977 | "email": "zoe@qualserve.com" 978 | }, 979 | { 980 | "id": 98, 981 | "guid": "581c6600-ff61-4d37-9151-9fce171af488", 982 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 983 | "age": 21, 984 | "name": "Serenity Chapman", 985 | "company": "Transtouch", 986 | "phone": "823-557-3299", 987 | "email": "serenity@transtouch.com" 988 | }, 989 | { 990 | "id": 99, 991 | "guid": "008e837a-503f-43a0-8b10-c3f87a65d21a", 992 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 993 | "age": 23, 994 | "name": "Mackenzie Fisher", 995 | "company": "Openserve", 996 | "phone": "831-588-3294", 997 | "email": "mackenzie@openserve.com" 998 | }, 999 | { 1000 | "id": 100, 1001 | "guid": "55f9d460-428f-422b-baa5-a78340b087e0", 1002 | "picture": "http://placehold.it/32x32",//Voluptate commodo quis enim cupidatat ea ea nisi. 1003 | "age": 38, 1004 | "name": "Lillian Fisher", 1005 | "company": "Gigaura", 1006 | "phone": "805-509-3468", 1007 | "email": "lillian@gigaura.com" 1008 | } 1009 | ] 1010 | } 1011 | --------------------------------------------------------------------------------