36 Commits

Author SHA1 Message Date
ddfa8632e7 Bump version to 2.0.1 2018-11-19 00:33:25 +00:00
24f4d2af29 Update package-lock.json 2018-11-19 00:32:39 +00:00
3ea2aa4939 Update .npmignore 2018-11-19 00:31:56 +00:00
1751b9930d Merge pull request #9 from jimeh/run-linter-in-travis-ci
Run linter in travis ci
2018-11-18 23:26:43 +00:00
97d3366fb6 Run linter before tests in Travis-CI 2018-11-18 23:23:21 +00:00
62b8f73f82 Have lint script only lint, and lint-fix script lint and fix 2018-11-18 23:22:22 +00:00
1241478006 Fix license field in package.json 2018-11-18 23:12:28 +00:00
0874ee4087 Update copyright 2018-11-18 22:34:19 +00:00
3dbac7b5d4 Merge pull request #8 from jimeh/update-travis-node-versions
Run Node.js versions 10 and 11 to test runs
2018-11-18 22:31:22 +00:00
7e8e25b617 Run Node.js versions 10 and 11 to test runs 2018-11-18 22:26:24 +00:00
a7f443a25f Merge pull request #7 from jimeh/rename-main-methods
Give encode/decode functions more descriptive names
2018-11-18 22:23:59 +00:00
8eaae0b86a Give encode/decode functions more descriptive names
- `encode()`: Renamed to `int_to_base58()`.
- `decode()`: Renamed to `base58_to_int()`.
- Maintain aliases of old function names for backwards compatibility.
2018-11-18 22:17:56 +00:00
35dd6f57a1 Merge pull request #6 from mccanney/backport
Update for newer ES features
2018-11-18 21:37:38 +00:00
David McCanney
2fa51650b8 Update version number
- Update version number to 2.0.0 since changes affect backwards
  compatibility with node v4.
- Update Travis config to allow node module caching.
2018-09-28 23:07:30 +01:00
David McCanney
8fe37d2db5 Update the test configuration
- Add additional node versions for Travis to test.
- Change var to const in mocha JS file.
2018-09-28 22:45:13 +01:00
David McCanney
8aef7a5081 Add package lock file
- Add the package-lock.json file to the repository to ensure consistent
  builds.
2018-09-28 22:25:49 +01:00
David McCanney
39a0f67e35 Update the dependencies versions
- Require node 6 at a minimum to support the newer ES features.  Node
  version functionality determined via https://node.green.
- Update dev dependencies to their latest versions.  Mocha 3.4 relied
  on a version of growl with a known vulnerability.
- Fix the keywords section, this field is actually an array.
- Update eslint syntax to ES6.
2018-09-28 22:00:52 +01:00
David McCanney
deb7b6892c Update the readme
- Change var to const in the usage guidelines.
2018-09-28 21:40:14 +01:00
David McCanney
47c42ff4a5 Update to newer ES features
- Change var to const and let.
- Change arrays to spread syntax.
- Change to arrow functions.
2018-09-28 21:35:26 +01:00
637ec5c6da Merge pull request #5 from jimeh/lint-using-prettier
Lint using prettier
2017-08-20 19:28:40 +01:00
5f6cc4c169 Use prettier for linting and code formatting via eslint 2017-08-20 19:23:27 +01:00
ffc71e6c1a Remove git hooks
While it's a good idea to ensure you don't commit or push anything
broken, I believe that it should come down developer dicipline. Cause
preventing commits if tests or linting fails, can and does get in the
way of legitimate work, specially on non-master branches.
2017-08-20 19:20:27 +01:00
9be24ba511 Merge pull request #4 from jimeh/lint-using-semistandard
Lint using semistandard
2017-07-09 19:46:37 +01:00
51d70572b1 Lint using semistandard 2017-07-09 19:41:48 +01:00
96b27b9505 Clean up test/.eslintrc.js 2017-07-09 19:30:50 +01:00
ed8cbd3fa2 Update Makefile 2017-07-09 19:30:03 +01:00
4154044541 Bump version to 1.0.1 2017-07-09 18:11:31 +01:00
9edf3f1a2c Use soft-tabs instead of tabs, minor whitespace cleanup 2017-07-09 18:10:01 +01:00
bc11e0f8d7 Fix Makefile 2017-07-09 18:09:25 +01:00
29c8ef258a Merge pull request #3 from louisbuchbinder/vanillajs
remove large or negative number vulnerability
2017-07-09 17:35:05 +01:00
louisbuchbinder
e029a93cf3 added tests 2017-07-09 09:23:17 -07:00
louisbuchbinder
280b2a7461 remove large or negative number vulnerability 2017-07-09 09:16:52 -07:00
786abf351e Merge pull request #2 from louisbuchbinder/vanillajs
refactor to vanilla js
2017-07-08 17:33:26 +01:00
louisbuchbinder
4ff09a0d77 refactor to vanilla js 2017-07-08 09:03:31 -07:00
12ce0b0d69 It is probably best to install coffeescript with npm 2012-07-11 09:30:06 +01:00
6648b8668d Update test with slightly cleaner and safer code 2012-05-08 03:58:11 +01:00
16 changed files with 1950 additions and 623 deletions

14
.eslintrc.js Normal file
View File

@@ -0,0 +1,14 @@
module.exports = {
env: {
browser: true,
node: true
},
extends: ["prettier"],
plugins: ["prettier"],
rules: {
"prettier/prettier": "error"
},
parserOptions: {
"ecmaVersion": 6
}
};

2
.gitignore vendored
View File

@@ -1,3 +1,3 @@
.DS_Store .DS_Store
node_modules node_modules
lib/* npm-debug.log

View File

@@ -1,2 +1,6 @@
.DS_Store .DS_Store
.eslintrc.js
.travis.yml
Makefile
node_modules node_modules
package-lock.json

View File

@@ -1,5 +1,16 @@
language: node_js language: node_js
cache:
directories:
- node_modules
node_js: node_js:
- 0.4 - "node"
- 0.5 - "6"
- 0.6 - "7"
- "8"
- "9"
- "10"
- "11"
script:
- npm run lint
- npm test

View File

@@ -1,4 +1,4 @@
Copyright (c) 2012 Jim Myhrberg. Copyright (c) 2018 Jim Myhrberg.
Permission is hereby granted, free of charge, to any person obtaining Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the a copy of this software and associated documentation files (the

View File

@@ -1,38 +1,17 @@
NPM_EXECUTABLE_HOME := node_modules/.bin NPM_EXECUTABLE_HOME := node_modules/.bin
PATH := ${NPM_EXECUTABLE_HOME}:${PATH} PATH := ${NPM_EXECUTABLE_HOME}:${PATH}
SOURCE = ./src publish: npm-dep
TARGET = ./lib
REPORTER = spec
TEST_DIR = ./test
TEST_FILES = *_test.coffee
build: coffee-dep
coffee -b -o $(TARGET) -c $(SOURCE)
watch: coffee-dep
coffee -b -o $(TARGET) -cw $(SOURCE)
remove-js:
rm -fr lib/
publish: npm-dep build
npm publish npm publish
test: build test: npm-dep
mocha --reporter $(REPORTER) \ npm run test
--compilers coffee:coffee-script \
$(shell find $(TEST_DIR) -name $(TEST_FILES)) lint: npm-dep
npm run lint
npm-dep: npm-dep:
test `which npm` || echo 'You need npm to do npm install... makes sense?' test `which npm` || echo 'You need npm to do npm install... makes sense?'
coffee-dep:
test `which coffee` || echo 'You need to have CoffeeScript in your' \
'PATH.\nPlease install it using `brew install coffee-script` or' \
'`npm install coffee-script`.'
.SILENT: .SILENT:
.PHONY: build watch remove-js publish test npm-dep coffee-dep .PHONY: publish test lint npm-dep

View File

@@ -20,9 +20,9 @@ Flickr short URL is: `http://flic.kr/p/brXijP`
## Usage ## Usage
```javascript ```javascript
var Base58 = require('base58'); const Base58 = require('base58');
Base58.encode(6857269519); // 'brXijP' Base58.int_to_base58(6857269519); // 'brXijP'
Base58.decode('brXijP'); // 6857269519 Base58.base58_to_int('brXijP'); // 6857269519
``` ```
## Credit ## Credit
@@ -34,4 +34,4 @@ name.
## License ## License
Released under the MIT license. Copyright (c) 2012 Jim Myhrberg. Released under the MIT license. Copyright (c) 2018 Jim Myhrberg.

1165
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,36 @@
{ {
"name": "base58", "name": "base58",
"version": "0.1.0", "version": "2.0.1",
"keywords": "base58", "keywords": [
"description": "Base58 encoding and decoding", "base58, flickr"
"licenses": [{ ],
"type": "MIT", "description": "Flickr Flavored Base58 Encoding and Decoding",
"url": "https://raw.github.com/jimeh/node-base58/master/LICENSE.md" "license": "MIT",
}],
"author": { "author": {
"name": "Jim Myhrberg", "name": "Jim Myhrberg",
"email": "contact@jimeh.me" "email": "contact@jimeh.me"
}, },
"contributors": [
"Louis Buchbinder github@louisbuchbinder.com"
],
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/jimeh/node-base58.git" "url": "https://github.com/jimeh/node-base58.git"
}, },
"main": "./src/base58",
"main": "./lib/base58",
"engines": { "engines": {
"node": ">= 0.4.0 < 0.7.0" "node": ">= 6"
}, },
"devDependencies": { "devDependencies": {
"coffee-script": "1.3.1", "eslint": "^5.6.0",
"mocha": "1.0.x", "eslint-config-prettier": "^3.0.0",
"should": "0.6.x" "eslint-plugin-prettier": "^2.7.0",
"mocha": "^5.2.0",
"prettier": "^1.14.3"
}, },
"scripts": { "scripts": {
"test": "make test" "lint": "eslint .",
"lint-fix": "eslint . --fix",
"test": "mocha"
} }
} }

View File

@@ -1,26 +0,0 @@
class Base58Builder
constructor: ->
@alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
@base = @alphabet.length
encode: (num) ->
throw new Error('Value passed is not an integer.') unless /^\d+$/.test num
num = parseInt(num) unless typeof num == 'number'
str = ''
while num >= @base
mod = num % @base
str = @alphabet[mod] + str
num = (num - mod)/@base
@alphabet[num] + str
decode: (str) ->
num = 0
for char, index in str.split(//).reverse()
if (char_index = @alphabet.indexOf(char)) == -1
throw new Error('Value passed is not a valid Base58 string.')
num += char_index * Math.pow(@base, index)
num
# Export module
module.exports = new Base58Builder()

58
src/base58.js Normal file
View File

@@ -0,0 +1,58 @@
const alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
const base = alphabet.length;
// Create a lookup table to fetch character index
const alphabetLookup = [...alphabet].reduce((lookup, char, index) => {
lookup[char] = index;
return lookup;
}, {});
function assertNonNegativeSafeInteger(val) {
if (
typeof val !== "number" ||
isNaN(val) ||
val < 0 ||
val > Number.MAX_SAFE_INTEGER ||
Math.floor(val) !== val
) {
throw new Error("Value passed is not a non-negative safe integer.");
}
}
function assertString(str) {
if (typeof str !== "string") {
throw new Error("Value passed is not a string.");
}
}
function assertBase58Character(character) {
if (alphabetLookup[character] === undefined) {
throw new Error("Value passed is not a valid Base58 string.");
}
}
exports.int_to_base58 = exports.encode = function(num) {
let str = "";
let modulus;
num = Number(num);
assertNonNegativeSafeInteger(num);
while (num >= base) {
modulus = num % base;
str = alphabet[modulus] + str;
num = Math.floor(num / base);
}
return alphabet[num] + str;
};
exports.base58_to_int = exports.decode = function(str) {
assertString(str);
return [...str].reverse().reduce((num, character, index) => {
assertBase58Character(character);
return num + alphabetLookup[character] * Math.pow(base, index);
}, 0);
};

8
test/.eslintrc.js Normal file
View File

@@ -0,0 +1,8 @@
module.exports = {
env: {
mocha: true
},
parserOptions: {
"ecmaVersion": 6
}
};

149
test/base58.test.js Normal file
View File

@@ -0,0 +1,149 @@
const assert = require("assert");
const examples = require("./examples");
const base58 = require("..");
function exampleRunner(callback) {
Object.keys(examples).forEach(function(str) {
callback(str, examples[str]);
});
}
describe("Base58", function() {
before(function() {
var valid = true;
var count = 0;
exampleRunner(function(str, num) {
count++;
if (typeof str !== "string") {
valid = false;
}
if (typeof num !== "number") {
valid = false;
}
});
assert.strictEqual(count > 0, true, "Expected there to be examples");
assert.strictEqual(valid, true, "Expected the examples to be valid");
});
describe("backwards compatibility", function() {
it(".encode() is an alias to .int_to_base58()", function() {
assert.strictEqual(base58.encode, base58.int_to_base58);
});
it(".decode() is an alias to .base58_to_int()", function() {
assert.strictEqual(base58.decode, base58.base58_to_int);
});
});
describe(".int_to_base58()", function() {
it("encodes number to Base58 string", function() {
exampleRunner(function(str, num) {
assert.strictEqual(base58.int_to_base58(num), str);
});
});
describe("when passed a string only containing numbers", function() {
it("encodes string after first converting it to an integer", function() {
exampleRunner(function(str, num) {
assert.strictEqual(base58.int_to_base58(num.toString()), str);
});
});
});
describe("when passed a non number", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.int_to_base58("hi");
},
function(err) {
return (
err.message === "Value passed is not a non-negative safe integer."
);
}
);
});
});
describe("when passed a float", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.int_to_base58(3.14);
},
function(err) {
return (
err.message === "Value passed is not a non-negative safe integer."
);
}
);
});
});
describe("when passed a negative number", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.int_to_base58(-300);
},
function(err) {
return (
err.message === "Value passed is not a non-negative safe integer."
);
}
);
});
});
describe("when passed a non-safe integer", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.int_to_base58(1e100);
},
function(err) {
return (
err.message === "Value passed is not a non-negative safe integer."
);
}
);
});
});
});
describe(".base58_to_int()", function() {
it("decodes base58 string to number", function() {
exampleRunner(function(str, num) {
assert.strictEqual(base58.base58_to_int(str), num);
});
});
describe("when passed a non string", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.base58_to_int(123);
},
function(err) {
return err.message === "Value passed is not a string.";
}
);
});
});
describe("when passed a non base58 string", function() {
it("throws an error", function() {
assert.throws(
function() {
base58.base58_to_int(">_<");
},
function(err) {
return err.message === "Value passed is not a valid Base58 string.";
}
);
});
});
});
});

View File

@@ -1,36 +0,0 @@
require 'should'
Base58 = require '..'
examples = require './examples'
describe 'Base58', ->
describe '.encode', ->
it 'encodes number to Base58 string', ->
for str, num of examples
Base58.encode(num).should.eql(str)
describe 'when passed a string only containing numbers', ->
it 'encodes string after first converting it to an integer', ->
for str, num of examples
Base58.encode(num.toString()).should.eql(str)
describe 'when passed a float', ->
it 'throws an error', ->
(-> Base58.encode(3.14)).should
.throw('Value passed is not an integer.')
describe 'when passed a non-number value', ->
it 'throws an error', ->
(-> Base58.encode('hi')).should
.throw('Value passed is not an integer.')
describe '.decode', ->
it 'decodes Base58 string to number', ->
for str, num of examples
Base58.decode(str).should.eql(num)
describe 'when passed a non-Base58 string', ->
it 'throws an error', ->
(-> Base58.decode('>_<')).should
.throw('Value passed is not a valid Base58 string.')

View File

@@ -1,501 +0,0 @@
module.exports =
'6hKMCS': 3471391110
'6hDrmR': 3470152229
'6hHHZB': 3470988633
'6hHKum': 3470993664
'6hLgFW': 3471485480
'6hBRKR': 3469844075
'6hGRTd': 3470820062
'6hCuie': 3469966999
'6hJuXN': 3471139908
'6hJsyS': 3471131850
'6hFWFb': 3470641072
'6hENdZ': 3470417529
'6hEJqg': 3470404727
'6hGNaq': 3470807546
'6hDRoZ': 3470233089
'6hKkP9': 3471304242
'6hHVZ3': 3471028968
'6hNcfE': 3471860782
'6hJBqs': 3471161638
'6hCPyc': 3470031783
'6hJNrC': 3471198710
'6hKmkd': 3471305986
'6hFUYs': 3470635346
'6hK6UC': 3471257464
'6hBmiv': 3469744991
'6hKex1': 3471283122
'6hFHQj': 3470597870
'6hCA2n': 3469986263
'6hBTgt': 3469849157
'6hHEss': 3470976734
'6hLows': 3471508478
'6hD95z': 3470094097
'6hKjcq': 3471298806
'6hGEbd': 3470780680
'6hKSNS': 3471408510
'6hG8hv': 3470676761
'6hEmj6': 3470330361
'6hGjpn': 3470714163
'6hEsUr': 3470352537
'6hJEhy': 3471171272
'6hKBHn': 3471357731
'6hG3gi': 3470659871
'6hFJTT': 3470601441
'6hLZDs': 3471626624
'6hGdL7': 3470695182
'6hBpi4': 3469755057
'6hEuFV': 3470358539
'6hGVw1': 3470832288
'6hLdm1': 3471474232
'6hFcCK': 3470496279
'6hDZmR': 3470259877
'6hG8iX': 3470676845
'6hFZZL': 3470652242
'6hJ79u': 3471063156
'6hMsrS': 3471716780
'6hGH3G': 3470790336
'6hKqD3': 3471320476
'6hKxEY': 3471344136
'6hHVF1': 3471027922
'6hKDSQ': 3471365008
'6hKwHs': 3471340916
'6hH4s6': 3470858973
'6hGmKB': 3470722065
'6hEzdi': 3470373757
'6hJQwJ': 3471205734
'6hHd6a': 3470888035
'6hH1j3': 3470848414
'6hNP1u': 3471981064
'6hFWge': 3470639683
'6hFpmP': 3470535723
'6hCgQZ': 3469925109
'6hFJSm': 3470601352
'6hEd9v': 3470302893
'6hDwuF': 3470169503
'6hCVSX': 3470053055
'6hCUgr': 3470047631
'6hEsqR': 3470350937
'6hBmKg': 3469746485
'6hDvUx': 3470167523
'6hJUi7': 3471218400
'6hF39e': 3470464349
'6hH43K': 3470857619
'6hGSC5': 3470822548
'6hFz1s': 3470568182
'6hFaKZ': 3470489971
'6hD65K': 3470084015
'6hBAVk': 3469794165
'6hLkWA': 3471499786
'6hHi7q': 3470904928
'6hHdDF': 3470889921
'6hHcCo': 3470886482
'6hGQQf': 3470816526
'6hLAfo': 3471547914
'6hBDEV': 3469803421
'6hL4BE': 3471444864
'6hL2TT': 3471439077
'6hKcxb': 3471276404
'6hD1vg': 3470068617
'6hLtTT': 3471526541
'6hHXtw': 3471033984
'6hHCQj': 3470971274
'6hFrXx': 3470544465
'6hMVkJ': 3471807252
'6hDv6V': 3470164819
'6hD1gR': 3470067839
'6hShWW': 3472660386
'6hK4tb': 3471249260
'6hLzrQ': 3471545214
'6hBTAe': 3469850245
'6hLABq': 3471549134
'6hGbN7': 3470688570
'6hFtro': 3470549444
'6hRRAQ': 3472575120
'6hFViL': 3470636466
'6hFkLP': 3470523659
'6hNAKc': 3471939809
'6hLLNE': 3471583426
'6hJstp': 3471131533
'6hHxv3': 3470953336
'6hLToQ': 3471605592
'6hJ74F': 3471062877
'6hGjCA': 3470714930
'6hCQoD': 3470034593
'6hCqxX': 3469954397
'6hCbg8': 3469906325
'6hJwGw': 3471145750
'6hP2Tt': 3472024389
'6hHDuy': 3470973492
'6hGRpq': 3470818450
'6hDx8F': 3470171649
'6hLhxU': 3471488378
'6hFrkd': 3470542358
'6hPc3D': 3472055197
'6hJV29': 3471220838
'6hCc3c': 3469908939
'6hLycA': 3471541024
'6hLd75': 3471473424
'6hKJ1m': 3471378900
'6hHgEG': 3470900072
'6hFNfm': 3470612720
'6hFsaF': 3470545169
'6hERqV': 3470428313
'6hEnYK': 3470335967
'6hDGeT': 3470202285
'6hFDZo': 3470584940
'6hMvPE': 3471728136
'6hKTro': 3471410628
'6hKfXG': 3471287918
'6hKeuU': 3471283000
'6hHFYj': 3470981830
'6hHDzj': 3470973768
'6hCozt': 3469947757
'6hKB8D': 3471355775
'6hCtrc': 3469964097
'6hDXcx': 3470252609
'6hCxSR': 3469979041
'6hC1Vk': 3469874901
'6hKmaS': 3471305444
'6hK9fn': 3471265337
'6hFDH6': 3470583995
'6hEB7c': 3470380131
'6hC1E2': 3469874013
'6hBZnx': 3469869693
'6hBXNz': 3469864417
'6hQKjm': 3472358868
'6hHn4j': 3470918204
'6hHiQ2': 3470907341
'6hHhHb': 3470903580
'6hGnBc': 3470724941
'6hG6Ht': 3470671481
'6hDvh6': 3470165409
'6hCGtp': 3470007957
'6hCnzi': 3469944383
'6hMxEY': 3471734360
'6hG9sL': 3470680720
'6hCarn': 3469903555
'6hLsdE': 3471520902
'6hKnDa': 3471310391
'6hKn2L': 3471308338
'6hGpfH': 3470730481
'6hRkJS': 3472474666
'6hFEV3': 3470588052
'6hE7VV': 3470285343
'6hSSAq': 3472773572
'6hNTtQ': 3471996106
'6hMAuK': 3471743859
'6hJ95H': 3471069665
'6hHZ39': 3471039240
'6hByNi': 3469787029
'6hLLnb': 3471581948
'6hHYoQ': 3471037076
'6hHCLm': 3470971044
'6hFHkC': 3470596206
'6hDKq4': 3470212967
'6hRapC': 3472439910
'6hKJBs': 3471380936
'6hHids': 3470905278
'6hEJ8R': 3470403775
'6hMY3L': 3471816360
'6hFRAC': 3470623988
'6hEP9c': 3470420615
'6hEqVR': 3470345891
'6hHGBX': 3470984013
'6hEzFB': 3470375341
'6hDnRp': 3470140429
'6hDdQH': 3470110113
'6hCK7B': 3470016843
'6hCxvH': 3469977815
'6hC4v4': 3469883585
'6hC15g': 3469872055
'6hGHRA': 3470793056
'6hGCGL': 3470775724
'6hGbuW': 3470687574
'6hT7FY': 3472820990
'6hMFHs': 3471761416
'6hJybH': 3471150749
'6hGEFs': 3470782376
'6hCBnX': 3469990821
'6hNJZt': 3471967549
'6hMxUV': 3471735169
'6hLoGG': 3471509072
'6hJdy5': 3471084708
'6hGnwp': 3470724663
'6hGkhZ': 3470717157
'6hG7yd': 3470674308
'6hDAqF': 3470182727
'6hPQVJ': 3472182628
'6hHyqy': 3470956440
'6hFG6k': 3470592013
'6hTavC': 3472830482
'6hJjzU': 3471104998
'6hFE7r': 3470585349
'6hNQU7': 3471987422
'6hJYSj': 3471233782
'6hFVRB': 3470638313
'6hEeQt': 3470308575
'6hBmnK': 3469745237
'6hP9VU': 3472048078
'6hJeDp': 3471088381
'6hHV4d': 3471025846
'6hFXmS': 3470643374
'6hBgEn': 3469729381
'6hNDjB': 3471948475
'6hKEkd': 3471366538
'6hJDq6': 3471168345
'6hHbCG': 3470883136
'6hCgN2': 3469924937
'6hQa3S': 3472243594
'6hLphv': 3471511033
'6hHoqd': 3470922780
'6hGT2W': 3470823932
'6hEd6V': 3470302743
'6hNac3': 3471853844
'6hHzYe': 3470961641
'6hRDAC': 3472534740
'6hJ2bu': 3471046452
'6hGRPN': 3470819864
'6hFS6P': 3470625681
'6hG8Yn': 3470679073
'6hFSGB': 3470627699
'6hFQhL': 3470619588
'6hF4VT': 3470470361
'6hE7vD': 3470283935
'6hBeKa': 3469722931
'6hPLs1': 3472167564
'6hHcKm': 3470886886
'6hG9KW': 3470681716
'6hE8E4': 3470287787
'6hNp1U': 3471900352
'6hJ29T': 3471046359
'6hHPLb': 3471008038
'6hGWGq': 3470836256
'6hEipV': 3470320607
'6hMB8U': 3471746014
'6hKWyr': 3471421129
'6hKLxb': 3471387416
'6hJstE': 3471131548
'6hHk3k': 3470911419
'6hPSdE': 3472186974
'6hPfEY': 3472067396
'6hGVSS': 3470833498
'6hFVX4': 3470638629
'6hFQRa': 3470621467
'6hCsKK': 3469961809
'6hJbdY': 3471076872
'6hE2ok': 3470266691
'6hCrc8': 3469956553
'6hRgwS': 3472460514
'6hPhLY': 3472074472
'6hLTK1': 3471606762
'6hHh5u': 3470901452
'6hDiBB': 3470126173
'6hD678': 3470084095
'6hKMXC': 3471392198
'6hBohi': 3469751649
'6hJXRV': 3471230395
'6hFzad': 3470568690
'6hCCbH': 3469993533
'6hLpoA': 3471511386
'6hKZQN': 3471432170
'6hG3Ax': 3470660987
'6hT7kf': 3472819788
'6hKrzq': 3471323630
'6hHMHM': 3471001171
'6hHL9q': 3470995872
'6hBUkR': 3469852775
'6hRRLf': 3472575666
'6hJFUg': 3471176707
'6hBML2': 3469830629
'6hS9eE': 3472631080
'6hPD3o': 3472142646
'6hKWhL': 3471420220
'6hJMpr': 3471195219
'6hHzVA': 3470961488
'6hGvu9': 3470751444
'6hGkTu': 3470719158
'6hF7bv': 3470477937
'6hDzQp': 3470180739
'6hQ2Mo': 3472219148
'6hM7Tn': 3471650979
'6hJWDp': 3471226305
'6hJpX5': 3471123046
'6hNLTn': 3471973923
'6hGuRu': 3470749318
'6hG1CM': 3470654389
'6hEMDx': 3470415589
'6hCYpx': 3470061557
'6hCSTr': 3470042991
'6hBnJr': 3469749801
'6hRZSh': 3472602928
'6hRtVW': 3472502220
'6hDzc2': 3470178571
'6hCMan': 3470023731
'6hRfUj': 3472458394
'6hLdME': 3471475720
'6hE69P': 3470279363
'6hDgaa': 3470117911
'6hDeKg': 3470113161
'6hKSis': 3471406804
'6hKwYj': 3471341778
'6hJ4Ro': 3471055436
'6hHTug': 3471020571
'6hHSH2': 3471017947
'6hHCE6': 3470970681
'6hG5R5': 3470668558
'6hFaBX': 3470489505
'6hL13o': 3471432842
'6hJtQr': 3471136117
'6hHpg3': 3470925612
'6hGinv': 3470710691
'6hFQXR': 3470621855
'6hCKN6': 3470019133
'6hJme9': 3471110522
'6hGUY8': 3470830439
'6hEDPM': 3470389271
'6hBg1c': 3469727167
'6hNyoj': 3471931870
'6hNdQu': 3471866108
'6hMNAK': 3471784575
'6hHkvV': 3470913019
'6hDHLi': 3470207413
'6hCwUk': 3469975763
'6hCd2a': 3469912243
'6hPeRd': 3472064626
'6hP4SL': 3472031076
'6hJQFC': 3471206250
'6hJLVJ': 3471193612
'6hJAJT': 3471159343
'6hJ8Mi': 3471068655
'6hJ6o5': 3471060580
'6hH667': 3470864484
'6hH5RU': 3470863718
'6hC2jx': 3469876247
'6hPm75': 3472085672
'6hN8ud': 3471848112
'6hLD4g': 3471557361
'6hGAr2': 3470768083
'6hFVQH': 3470638261
'6hDxtV': 3470172823
'6hPNwj': 3472174542
'6hKTB7': 3471411192
'6hJdfQ': 3471083708
'6hRvdq': 3472506540
'6hNpN9': 3471902976
'6hMd75': 3471668536
'6hLkks': 3471497748
'6hHkYn': 3470914553
'6hGZgY': 3470844930
'6hGorv': 3470727743
'6hG941': 3470679342
'6hC6xK': 3469890469
'6hTA5N': 3472913142
'6hNzGE': 3471936298
'6hN3F1': 3471831918
'6hLdgN': 3471473988
'6hFyvS': 3470566524
'6hCxUM': 3469979153
'6hCmje': 3469940145
'6hC87z': 3469895737
'6hC4mV': 3469883113
'6hQXaJ': 3472398736
'6hP6Tw': 3472037848
'6hLx7r': 3471537361
'6hFvYh': 3470557964
'6hEPWM': 3470423317
'6hDKDT': 3470213769
'6hBrcn': 3469761455
'6hBkh4': 3469741543
'6hMdbq': 3471668788
'6hK3cE': 3471244996
'6hJSUj': 3471213714
'6hJvFs': 3471142324
'6hHVMu': 3471028298
'6hHUZG': 3471025642
'6hHeVT': 3470894225
'6hFqjr': 3470538949
'6hETNt': 3470436291
'6hEPkX': 3470421297
'6hCVrB': 3470051585
'6hCE2V': 3469999751
'6hNe3j': 3471866794
'6hKjmA': 3471299338
'6hHbMp': 3470883641
'6hGWJ7': 3470836354
'6hGn3F': 3470723055
'6hFoKL': 3470533690
'6hETWx': 3470436759
'6hPaH5': 3472050698
'6hNFFf': 3471956400
'6hNnyp': 3471895451
'6hM7ra': 3471649459
'6hHof7': 3470922194
'6hH8KM': 3470873455
'6hGbCG': 3470688024
'6hDXaB': 3470252497
'6hDSF2': 3470237383
'6hDfq8': 3470115415
'6hCqqR': 3469953985
'6hPpj7': 3472096462
'6hMSHG': 3471798434
'6hKyF6': 3471347507
'6hK33v': 3471244465
'6hJwva': 3471145091
'6hGX9e': 3470837753
'6hFWeR': 3470639603
'6hD8oF': 3470091783
'6hCopg': 3469947165
'6hC9L8': 3469901279
'6hBhS4': 3469733423
'6hMQXy': 3471792510
'6hLoRU': 3471509606
'6hKCib': 3471359692
'6hKder': 3471278739
'6hHYPy': 3471038510
'6hD4hz': 3470077973
'6hPgTS': 3472071508
'6hNXii': 3472008951
'6hKYzE': 3471427928
'6hKSr2': 3471407243
'6hG4fB': 3470663195
'6hFyz2': 3470566707
'6hFoMT': 3470533813
'6hC5V4': 3469888341
'6hBZmZ': 3469869661
'6hPXKU': 3472205606
'6hHVwm': 3471027420
'6hCzFH': 3469985123
'6hCvsM': 3469970917
'6hChKr': 3469928151
'6hBv6F': 3469774581
'6hPf62': 3472065427
'6hNS4s': 3471991328
'6hNPXe': 3471984239
'6hLguh': 3471484804
'6hJ5zB': 3471057885
'6hHr6j': 3470931776
'6hLBUx': 3471553491
'6hLi1P': 3471489939
'6hKQ35': 3471399184
'6hKK67': 3471382540
'6hHUcT': 3471022985
'6hGPjm': 3470811428
'6hF5ti': 3470472183
'6hDZPz': 3470261427
'6hC17D': 3469872193
'6hR7R3': 3472431292
'6hN7hS': 3471844090
'6hHqoC': 3470929416
'6hFDdx': 3470582339
'6hFzdL': 3470568896
'6hDuEH': 3470163357
'6hCaZk': 3469905409
'6hT2Hw': 3472804260
'6hPhJY': 3472074356
'6hKNBy': 3471394398
'6hJPEq': 3471202816
'6hGMH7': 3470806020
'6hGp5L': 3470729904
'6hFfRV': 3470507135
'6hESHt': 3470432637

502
test/examples.js Normal file
View File

@@ -0,0 +1,502 @@
module.exports = {
"6hKMCS": 3471391110,
"6hDrmR": 3470152229,
"6hHHZB": 3470988633,
"6hHKum": 3470993664,
"6hLgFW": 3471485480,
"6hBRKR": 3469844075,
"6hGRTd": 3470820062,
"6hCuie": 3469966999,
"6hJuXN": 3471139908,
"6hJsyS": 3471131850,
"6hFWFb": 3470641072,
"6hENdZ": 3470417529,
"6hEJqg": 3470404727,
"6hGNaq": 3470807546,
"6hDRoZ": 3470233089,
"6hKkP9": 3471304242,
"6hHVZ3": 3471028968,
"6hNcfE": 3471860782,
"6hJBqs": 3471161638,
"6hCPyc": 3470031783,
"6hJNrC": 3471198710,
"6hKmkd": 3471305986,
"6hFUYs": 3470635346,
"6hK6UC": 3471257464,
"6hBmiv": 3469744991,
"6hKex1": 3471283122,
"6hFHQj": 3470597870,
"6hCA2n": 3469986263,
"6hBTgt": 3469849157,
"6hHEss": 3470976734,
"6hLows": 3471508478,
"6hD95z": 3470094097,
"6hKjcq": 3471298806,
"6hGEbd": 3470780680,
"6hKSNS": 3471408510,
"6hG8hv": 3470676761,
"6hEmj6": 3470330361,
"6hGjpn": 3470714163,
"6hEsUr": 3470352537,
"6hJEhy": 3471171272,
"6hKBHn": 3471357731,
"6hG3gi": 3470659871,
"6hFJTT": 3470601441,
"6hLZDs": 3471626624,
"6hGdL7": 3470695182,
"6hBpi4": 3469755057,
"6hEuFV": 3470358539,
"6hGVw1": 3470832288,
"6hLdm1": 3471474232,
"6hFcCK": 3470496279,
"6hDZmR": 3470259877,
"6hG8iX": 3470676845,
"6hFZZL": 3470652242,
"6hJ79u": 3471063156,
"6hMsrS": 3471716780,
"6hGH3G": 3470790336,
"6hKqD3": 3471320476,
"6hKxEY": 3471344136,
"6hHVF1": 3471027922,
"6hKDSQ": 3471365008,
"6hKwHs": 3471340916,
"6hH4s6": 3470858973,
"6hGmKB": 3470722065,
"6hEzdi": 3470373757,
"6hJQwJ": 3471205734,
"6hHd6a": 3470888035,
"6hH1j3": 3470848414,
"6hNP1u": 3471981064,
"6hFWge": 3470639683,
"6hFpmP": 3470535723,
"6hCgQZ": 3469925109,
"6hFJSm": 3470601352,
"6hEd9v": 3470302893,
"6hDwuF": 3470169503,
"6hCVSX": 3470053055,
"6hCUgr": 3470047631,
"6hEsqR": 3470350937,
"6hBmKg": 3469746485,
"6hDvUx": 3470167523,
"6hJUi7": 3471218400,
"6hF39e": 3470464349,
"6hH43K": 3470857619,
"6hGSC5": 3470822548,
"6hFz1s": 3470568182,
"6hFaKZ": 3470489971,
"6hD65K": 3470084015,
"6hBAVk": 3469794165,
"6hLkWA": 3471499786,
"6hHi7q": 3470904928,
"6hHdDF": 3470889921,
"6hHcCo": 3470886482,
"6hGQQf": 3470816526,
"6hLAfo": 3471547914,
"6hBDEV": 3469803421,
"6hL4BE": 3471444864,
"6hL2TT": 3471439077,
"6hKcxb": 3471276404,
"6hD1vg": 3470068617,
"6hLtTT": 3471526541,
"6hHXtw": 3471033984,
"6hHCQj": 3470971274,
"6hFrXx": 3470544465,
"6hMVkJ": 3471807252,
"6hDv6V": 3470164819,
"6hD1gR": 3470067839,
"6hShWW": 3472660386,
"6hK4tb": 3471249260,
"6hLzrQ": 3471545214,
"6hBTAe": 3469850245,
"6hLABq": 3471549134,
"6hGbN7": 3470688570,
"6hFtro": 3470549444,
"6hRRAQ": 3472575120,
"6hFViL": 3470636466,
"6hFkLP": 3470523659,
"6hNAKc": 3471939809,
"6hLLNE": 3471583426,
"6hJstp": 3471131533,
"6hHxv3": 3470953336,
"6hLToQ": 3471605592,
"6hJ74F": 3471062877,
"6hGjCA": 3470714930,
"6hCQoD": 3470034593,
"6hCqxX": 3469954397,
"6hCbg8": 3469906325,
"6hJwGw": 3471145750,
"6hP2Tt": 3472024389,
"6hHDuy": 3470973492,
"6hGRpq": 3470818450,
"6hDx8F": 3470171649,
"6hLhxU": 3471488378,
"6hFrkd": 3470542358,
"6hPc3D": 3472055197,
"6hJV29": 3471220838,
"6hCc3c": 3469908939,
"6hLycA": 3471541024,
"6hLd75": 3471473424,
"6hKJ1m": 3471378900,
"6hHgEG": 3470900072,
"6hFNfm": 3470612720,
"6hFsaF": 3470545169,
"6hERqV": 3470428313,
"6hEnYK": 3470335967,
"6hDGeT": 3470202285,
"6hFDZo": 3470584940,
"6hMvPE": 3471728136,
"6hKTro": 3471410628,
"6hKfXG": 3471287918,
"6hKeuU": 3471283000,
"6hHFYj": 3470981830,
"6hHDzj": 3470973768,
"6hCozt": 3469947757,
"6hKB8D": 3471355775,
"6hCtrc": 3469964097,
"6hDXcx": 3470252609,
"6hCxSR": 3469979041,
"6hC1Vk": 3469874901,
"6hKmaS": 3471305444,
"6hK9fn": 3471265337,
"6hFDH6": 3470583995,
"6hEB7c": 3470380131,
"6hC1E2": 3469874013,
"6hBZnx": 3469869693,
"6hBXNz": 3469864417,
"6hQKjm": 3472358868,
"6hHn4j": 3470918204,
"6hHiQ2": 3470907341,
"6hHhHb": 3470903580,
"6hGnBc": 3470724941,
"6hG6Ht": 3470671481,
"6hDvh6": 3470165409,
"6hCGtp": 3470007957,
"6hCnzi": 3469944383,
"6hMxEY": 3471734360,
"6hG9sL": 3470680720,
"6hCarn": 3469903555,
"6hLsdE": 3471520902,
"6hKnDa": 3471310391,
"6hKn2L": 3471308338,
"6hGpfH": 3470730481,
"6hRkJS": 3472474666,
"6hFEV3": 3470588052,
"6hE7VV": 3470285343,
"6hSSAq": 3472773572,
"6hNTtQ": 3471996106,
"6hMAuK": 3471743859,
"6hJ95H": 3471069665,
"6hHZ39": 3471039240,
"6hByNi": 3469787029,
"6hLLnb": 3471581948,
"6hHYoQ": 3471037076,
"6hHCLm": 3470971044,
"6hFHkC": 3470596206,
"6hDKq4": 3470212967,
"6hRapC": 3472439910,
"6hKJBs": 3471380936,
"6hHids": 3470905278,
"6hEJ8R": 3470403775,
"6hMY3L": 3471816360,
"6hFRAC": 3470623988,
"6hEP9c": 3470420615,
"6hEqVR": 3470345891,
"6hHGBX": 3470984013,
"6hEzFB": 3470375341,
"6hDnRp": 3470140429,
"6hDdQH": 3470110113,
"6hCK7B": 3470016843,
"6hCxvH": 3469977815,
"6hC4v4": 3469883585,
"6hC15g": 3469872055,
"6hGHRA": 3470793056,
"6hGCGL": 3470775724,
"6hGbuW": 3470687574,
"6hT7FY": 3472820990,
"6hMFHs": 3471761416,
"6hJybH": 3471150749,
"6hGEFs": 3470782376,
"6hCBnX": 3469990821,
"6hNJZt": 3471967549,
"6hMxUV": 3471735169,
"6hLoGG": 3471509072,
"6hJdy5": 3471084708,
"6hGnwp": 3470724663,
"6hGkhZ": 3470717157,
"6hG7yd": 3470674308,
"6hDAqF": 3470182727,
"6hPQVJ": 3472182628,
"6hHyqy": 3470956440,
"6hFG6k": 3470592013,
"6hTavC": 3472830482,
"6hJjzU": 3471104998,
"6hFE7r": 3470585349,
"6hNQU7": 3471987422,
"6hJYSj": 3471233782,
"6hFVRB": 3470638313,
"6hEeQt": 3470308575,
"6hBmnK": 3469745237,
"6hP9VU": 3472048078,
"6hJeDp": 3471088381,
"6hHV4d": 3471025846,
"6hFXmS": 3470643374,
"6hBgEn": 3469729381,
"6hNDjB": 3471948475,
"6hKEkd": 3471366538,
"6hJDq6": 3471168345,
"6hHbCG": 3470883136,
"6hCgN2": 3469924937,
"6hQa3S": 3472243594,
"6hLphv": 3471511033,
"6hHoqd": 3470922780,
"6hGT2W": 3470823932,
"6hEd6V": 3470302743,
"6hNac3": 3471853844,
"6hHzYe": 3470961641,
"6hRDAC": 3472534740,
"6hJ2bu": 3471046452,
"6hGRPN": 3470819864,
"6hFS6P": 3470625681,
"6hG8Yn": 3470679073,
"6hFSGB": 3470627699,
"6hFQhL": 3470619588,
"6hF4VT": 3470470361,
"6hE7vD": 3470283935,
"6hBeKa": 3469722931,
"6hPLs1": 3472167564,
"6hHcKm": 3470886886,
"6hG9KW": 3470681716,
"6hE8E4": 3470287787,
"6hNp1U": 3471900352,
"6hJ29T": 3471046359,
"6hHPLb": 3471008038,
"6hGWGq": 3470836256,
"6hEipV": 3470320607,
"6hMB8U": 3471746014,
"6hKWyr": 3471421129,
"6hKLxb": 3471387416,
"6hJstE": 3471131548,
"6hHk3k": 3470911419,
"6hPSdE": 3472186974,
"6hPfEY": 3472067396,
"6hGVSS": 3470833498,
"6hFVX4": 3470638629,
"6hFQRa": 3470621467,
"6hCsKK": 3469961809,
"6hJbdY": 3471076872,
"6hE2ok": 3470266691,
"6hCrc8": 3469956553,
"6hRgwS": 3472460514,
"6hPhLY": 3472074472,
"6hLTK1": 3471606762,
"6hHh5u": 3470901452,
"6hDiBB": 3470126173,
"6hD678": 3470084095,
"6hKMXC": 3471392198,
"6hBohi": 3469751649,
"6hJXRV": 3471230395,
"6hFzad": 3470568690,
"6hCCbH": 3469993533,
"6hLpoA": 3471511386,
"6hKZQN": 3471432170,
"6hG3Ax": 3470660987,
"6hT7kf": 3472819788,
"6hKrzq": 3471323630,
"6hHMHM": 3471001171,
"6hHL9q": 3470995872,
"6hBUkR": 3469852775,
"6hRRLf": 3472575666,
"6hJFUg": 3471176707,
"6hBML2": 3469830629,
"6hS9eE": 3472631080,
"6hPD3o": 3472142646,
"6hKWhL": 3471420220,
"6hJMpr": 3471195219,
"6hHzVA": 3470961488,
"6hGvu9": 3470751444,
"6hGkTu": 3470719158,
"6hF7bv": 3470477937,
"6hDzQp": 3470180739,
"6hQ2Mo": 3472219148,
"6hM7Tn": 3471650979,
"6hJWDp": 3471226305,
"6hJpX5": 3471123046,
"6hNLTn": 3471973923,
"6hGuRu": 3470749318,
"6hG1CM": 3470654389,
"6hEMDx": 3470415589,
"6hCYpx": 3470061557,
"6hCSTr": 3470042991,
"6hBnJr": 3469749801,
"6hRZSh": 3472602928,
"6hRtVW": 3472502220,
"6hDzc2": 3470178571,
"6hCMan": 3470023731,
"6hRfUj": 3472458394,
"6hLdME": 3471475720,
"6hE69P": 3470279363,
"6hDgaa": 3470117911,
"6hDeKg": 3470113161,
"6hKSis": 3471406804,
"6hKwYj": 3471341778,
"6hJ4Ro": 3471055436,
"6hHTug": 3471020571,
"6hHSH2": 3471017947,
"6hHCE6": 3470970681,
"6hG5R5": 3470668558,
"6hFaBX": 3470489505,
"6hL13o": 3471432842,
"6hJtQr": 3471136117,
"6hHpg3": 3470925612,
"6hGinv": 3470710691,
"6hFQXR": 3470621855,
"6hCKN6": 3470019133,
"6hJme9": 3471110522,
"6hGUY8": 3470830439,
"6hEDPM": 3470389271,
"6hBg1c": 3469727167,
"6hNyoj": 3471931870,
"6hNdQu": 3471866108,
"6hMNAK": 3471784575,
"6hHkvV": 3470913019,
"6hDHLi": 3470207413,
"6hCwUk": 3469975763,
"6hCd2a": 3469912243,
"6hPeRd": 3472064626,
"6hP4SL": 3472031076,
"6hJQFC": 3471206250,
"6hJLVJ": 3471193612,
"6hJAJT": 3471159343,
"6hJ8Mi": 3471068655,
"6hJ6o5": 3471060580,
"6hH667": 3470864484,
"6hH5RU": 3470863718,
"6hC2jx": 3469876247,
"6hPm75": 3472085672,
"6hN8ud": 3471848112,
"6hLD4g": 3471557361,
"6hGAr2": 3470768083,
"6hFVQH": 3470638261,
"6hDxtV": 3470172823,
"6hPNwj": 3472174542,
"6hKTB7": 3471411192,
"6hJdfQ": 3471083708,
"6hRvdq": 3472506540,
"6hNpN9": 3471902976,
"6hMd75": 3471668536,
"6hLkks": 3471497748,
"6hHkYn": 3470914553,
"6hGZgY": 3470844930,
"6hGorv": 3470727743,
"6hG941": 3470679342,
"6hC6xK": 3469890469,
"6hTA5N": 3472913142,
"6hNzGE": 3471936298,
"6hN3F1": 3471831918,
"6hLdgN": 3471473988,
"6hFyvS": 3470566524,
"6hCxUM": 3469979153,
"6hCmje": 3469940145,
"6hC87z": 3469895737,
"6hC4mV": 3469883113,
"6hQXaJ": 3472398736,
"6hP6Tw": 3472037848,
"6hLx7r": 3471537361,
"6hFvYh": 3470557964,
"6hEPWM": 3470423317,
"6hDKDT": 3470213769,
"6hBrcn": 3469761455,
"6hBkh4": 3469741543,
"6hMdbq": 3471668788,
"6hK3cE": 3471244996,
"6hJSUj": 3471213714,
"6hJvFs": 3471142324,
"6hHVMu": 3471028298,
"6hHUZG": 3471025642,
"6hHeVT": 3470894225,
"6hFqjr": 3470538949,
"6hETNt": 3470436291,
"6hEPkX": 3470421297,
"6hCVrB": 3470051585,
"6hCE2V": 3469999751,
"6hNe3j": 3471866794,
"6hKjmA": 3471299338,
"6hHbMp": 3470883641,
"6hGWJ7": 3470836354,
"6hGn3F": 3470723055,
"6hFoKL": 3470533690,
"6hETWx": 3470436759,
"6hPaH5": 3472050698,
"6hNFFf": 3471956400,
"6hNnyp": 3471895451,
"6hM7ra": 3471649459,
"6hHof7": 3470922194,
"6hH8KM": 3470873455,
"6hGbCG": 3470688024,
"6hDXaB": 3470252497,
"6hDSF2": 3470237383,
"6hDfq8": 3470115415,
"6hCqqR": 3469953985,
"6hPpj7": 3472096462,
"6hMSHG": 3471798434,
"6hKyF6": 3471347507,
"6hK33v": 3471244465,
"6hJwva": 3471145091,
"6hGX9e": 3470837753,
"6hFWeR": 3470639603,
"6hD8oF": 3470091783,
"6hCopg": 3469947165,
"6hC9L8": 3469901279,
"6hBhS4": 3469733423,
"6hMQXy": 3471792510,
"6hLoRU": 3471509606,
"6hKCib": 3471359692,
"6hKder": 3471278739,
"6hHYPy": 3471038510,
"6hD4hz": 3470077973,
"6hPgTS": 3472071508,
"6hNXii": 3472008951,
"6hKYzE": 3471427928,
"6hKSr2": 3471407243,
"6hG4fB": 3470663195,
"6hFyz2": 3470566707,
"6hFoMT": 3470533813,
"6hC5V4": 3469888341,
"6hBZmZ": 3469869661,
"6hPXKU": 3472205606,
"6hHVwm": 3471027420,
"6hCzFH": 3469985123,
"6hCvsM": 3469970917,
"6hChKr": 3469928151,
"6hBv6F": 3469774581,
"6hPf62": 3472065427,
"6hNS4s": 3471991328,
"6hNPXe": 3471984239,
"6hLguh": 3471484804,
"6hJ5zB": 3471057885,
"6hHr6j": 3470931776,
"6hLBUx": 3471553491,
"6hLi1P": 3471489939,
"6hKQ35": 3471399184,
"6hKK67": 3471382540,
"6hHUcT": 3471022985,
"6hGPjm": 3470811428,
"6hF5ti": 3470472183,
"6hDZPz": 3470261427,
"6hC17D": 3469872193,
"6hR7R3": 3472431292,
"6hN7hS": 3471844090,
"6hHqoC": 3470929416,
"6hFDdx": 3470582339,
"6hFzdL": 3470568896,
"6hDuEH": 3470163357,
"6hCaZk": 3469905409,
"6hT2Hw": 3472804260,
"6hPhJY": 3472074356,
"6hKNBy": 3471394398,
"6hJPEq": 3471202816,
"6hGMH7": 3470806020,
"6hGp5L": 3470729904,
"6hFfRV": 3470507135,
"6hESHt": 3470432637
};