aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Coleman <coleman.ian@gmail.com>2014-09-27 23:20:36 +1000
committerIan Coleman <coleman.ian@gmail.com>2014-09-27 23:20:36 +1000
commit4dd6050628487797ea531770a33ee766c86625c8 (patch)
tree71d25b32a2d3d4d44f91478f23219d5abf1d4285
parent783981debeec37c05173af31588ca5fbc286188c (diff)
downloadBIP39-4dd6050628487797ea531770a33ee766c86625c8.tar.gz
BIP39-4dd6050628487797ea531770a33ee766c86625c8.tar.zst
BIP39-4dd6050628487797ea531770a33ee766c86625c8.zip
UTF-8 strings handled correctly by asmCrypto
-rw-r--r--src/index.html2
-rw-r--r--src/js/asmcrypto.js62
-rw-r--r--src/js/jsbip39.js214
-rw-r--r--src/js/wordlist_english.js206
-rw-r--r--src/js/wordlists.js1
5 files changed, 254 insertions, 231 deletions
diff --git a/src/index.html b/src/index.html
index 1a4164c..468a1c0 100644
--- a/src/index.html
+++ b/src/index.html
@@ -346,6 +346,8 @@
346 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 346 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
347 <script src="/js/bitcoinjs-1-0-0.js"></script> 347 <script src="/js/bitcoinjs-1-0-0.js"></script>
348 <script src="/js/asmcrypto.js"></script> 348 <script src="/js/asmcrypto.js"></script>
349 <script src="/js/wordlists.js"></script>
350 <script src="/js/wordlist_english.js"></script>
349 <script src="/js/jsbip39.js"></script> 351 <script src="/js/jsbip39.js"></script>
350 <script src="/js/index.js"></script> 352 <script src="/js/index.js"></script>
351 </body> 353 </body>
diff --git a/src/js/asmcrypto.js b/src/js/asmcrypto.js
index 6e5cd5f..c056f56 100644
--- a/src/js/asmcrypto.js
+++ b/src/js/asmcrypto.js
@@ -1,4 +1,3 @@
1// INCLUDE ASMCRYPTO
2// https://rawgit.com/tresorit/asmcrypto.js/598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js 1// https://rawgit.com/tresorit/asmcrypto.js/598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js
3// Provides PBKDF2 functionality 2// Provides PBKDF2 functionality
4// It's faster than CryptoJS 3// It's faster than CryptoJS
@@ -6,8 +5,8 @@
6 5
7 6
8(function(exports, global) { 7(function(exports, global) {
9 "use strict";
10 global["asmCrypto"] = exports; 8 global["asmCrypto"] = exports;
9 "use strict";
11 function string_to_bytes(str) { 10 function string_to_bytes(str) {
12 var i, len = str.length, arr = new Uint8Array(len); 11 var i, len = str.length, arr = new Uint8Array(len);
13 for (i = 0; i < len; i += 1) { 12 for (i = 0; i < len; i += 1) {
@@ -86,8 +85,7 @@
86 var _aes_tables = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, 198, 248, 238, 246, 255, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44, 165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 255, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58, 0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 255, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70, 0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 255, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163, 0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 255, 180, 185, 174, 163, 128, 141, 154, 151, 0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 255, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141 ]; 85 var _aes_tables = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, 198, 248, 238, 246, 255, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44, 165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 255, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58, 0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 255, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70, 0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 255, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163, 0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 255, 180, 185, 174, 163, 128, 141, 154, 151, 0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 255, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141 ];
87 var _aes_heap_start = 2048; 86 var _aes_heap_start = 2048;
88 function _aes_asm(stdlib, foreign, buffer) { 87 function _aes_asm(stdlib, foreign, buffer) {
89 // Closure Compiler warning - commented out 88 "use asm";
90 //"use asm";
91 var S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, S5 = 0, S6 = 0, S7 = 0, S8 = 0, S9 = 0, SA = 0, SB = 0, SC = 0, SD = 0, SE = 0, SF = 0; 89 var S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, S5 = 0, S6 = 0, S7 = 0, S8 = 0, S9 = 0, SA = 0, SB = 0, SC = 0, SD = 0, SE = 0, SF = 0;
92 var keySize = 0; 90 var keySize = 0;
93 var R00 = 0, R01 = 0, R02 = 0, R03 = 0, R04 = 0, R05 = 0, R06 = 0, R07 = 0, R08 = 0, R09 = 0, R0A = 0, R0B = 0, R0C = 0, R0D = 0, R0E = 0, R0F = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, R15 = 0, R16 = 0, R17 = 0, R18 = 0, R19 = 0, R1A = 0, R1B = 0, R1C = 0, R1D = 0, R1E = 0, R1F = 0, R20 = 0, R21 = 0, R22 = 0, R23 = 0, R24 = 0, R25 = 0, R26 = 0, R27 = 0, R28 = 0, R29 = 0, R2A = 0, R2B = 0, R2C = 0, R2D = 0, R2E = 0, R2F = 0, R30 = 0, R31 = 0, R32 = 0, R33 = 0, R34 = 0, R35 = 0, R36 = 0, R37 = 0, R38 = 0, R39 = 0, R3A = 0, R3B = 0, R3C = 0, R3D = 0, R3E = 0, R3F = 0, R40 = 0, R41 = 0, R42 = 0, R43 = 0, R44 = 0, R45 = 0, R46 = 0, R47 = 0, R48 = 0, R49 = 0, R4A = 0, R4B = 0, R4C = 0, R4D = 0, R4E = 0, R4F = 0, R50 = 0, R51 = 0, R52 = 0, R53 = 0, R54 = 0, R55 = 0, R56 = 0, R57 = 0, R58 = 0, R59 = 0, R5A = 0, R5B = 0, R5C = 0, R5D = 0, R5E = 0, R5F = 0, R60 = 0, R61 = 0, R62 = 0, R63 = 0, R64 = 0, R65 = 0, R66 = 0, R67 = 0, R68 = 0, R69 = 0, R6A = 0, R6B = 0, R6C = 0, R6D = 0, R6E = 0, R6F = 0, R70 = 0, R71 = 0, R72 = 0, R73 = 0, R74 = 0, R75 = 0, R76 = 0, R77 = 0, R78 = 0, R79 = 0, R7A = 0, R7B = 0, R7C = 0, R7D = 0, R7E = 0, R7F = 0, R80 = 0, R81 = 0, R82 = 0, R83 = 0, R84 = 0, R85 = 0, R86 = 0, R87 = 0, R88 = 0, R89 = 0, R8A = 0, R8B = 0, R8C = 0, R8D = 0, R8E = 0, R8F = 0, R90 = 0, R91 = 0, R92 = 0, R93 = 0, R94 = 0, R95 = 0, R96 = 0, R97 = 0, R98 = 0, R99 = 0, R9A = 0, R9B = 0, R9C = 0, R9D = 0, R9E = 0, R9F = 0, RA0 = 0, RA1 = 0, RA2 = 0, RA3 = 0, RA4 = 0, RA5 = 0, RA6 = 0, RA7 = 0, RA8 = 0, RA9 = 0, RAA = 0, RAB = 0, RAC = 0, RAD = 0, RAE = 0, RAF = 0, RB0 = 0, RB1 = 0, RB2 = 0, RB3 = 0, RB4 = 0, RB5 = 0, RB6 = 0, RB7 = 0, RB8 = 0, RB9 = 0, RBA = 0, RBB = 0, RBC = 0, RBD = 0, RBE = 0, RBF = 0, RC0 = 0, RC1 = 0, RC2 = 0, RC3 = 0, RC4 = 0, RC5 = 0, RC6 = 0, RC7 = 0, RC8 = 0, RC9 = 0, RCA = 0, RCB = 0, RCC = 0, RCD = 0, RCE = 0, RCF = 0, RD0 = 0, RD1 = 0, RD2 = 0, RD3 = 0, RD4 = 0, RD5 = 0, RD6 = 0, RD7 = 0, RD8 = 0, RD9 = 0, RDA = 0, RDB = 0, RDC = 0, RDD = 0, RDE = 0, RDF = 0, RE0 = 0, RE1 = 0, RE2 = 0, RE3 = 0, RE4 = 0, RE5 = 0, RE6 = 0, RE7 = 0, RE8 = 0, RE9 = 0, REA = 0, REB = 0, REC = 0, RED = 0, REE = 0, REF = 0; 91 var R00 = 0, R01 = 0, R02 = 0, R03 = 0, R04 = 0, R05 = 0, R06 = 0, R07 = 0, R08 = 0, R09 = 0, R0A = 0, R0B = 0, R0C = 0, R0D = 0, R0E = 0, R0F = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, R15 = 0, R16 = 0, R17 = 0, R18 = 0, R19 = 0, R1A = 0, R1B = 0, R1C = 0, R1D = 0, R1E = 0, R1F = 0, R20 = 0, R21 = 0, R22 = 0, R23 = 0, R24 = 0, R25 = 0, R26 = 0, R27 = 0, R28 = 0, R29 = 0, R2A = 0, R2B = 0, R2C = 0, R2D = 0, R2E = 0, R2F = 0, R30 = 0, R31 = 0, R32 = 0, R33 = 0, R34 = 0, R35 = 0, R36 = 0, R37 = 0, R38 = 0, R39 = 0, R3A = 0, R3B = 0, R3C = 0, R3D = 0, R3E = 0, R3F = 0, R40 = 0, R41 = 0, R42 = 0, R43 = 0, R44 = 0, R45 = 0, R46 = 0, R47 = 0, R48 = 0, R49 = 0, R4A = 0, R4B = 0, R4C = 0, R4D = 0, R4E = 0, R4F = 0, R50 = 0, R51 = 0, R52 = 0, R53 = 0, R54 = 0, R55 = 0, R56 = 0, R57 = 0, R58 = 0, R59 = 0, R5A = 0, R5B = 0, R5C = 0, R5D = 0, R5E = 0, R5F = 0, R60 = 0, R61 = 0, R62 = 0, R63 = 0, R64 = 0, R65 = 0, R66 = 0, R67 = 0, R68 = 0, R69 = 0, R6A = 0, R6B = 0, R6C = 0, R6D = 0, R6E = 0, R6F = 0, R70 = 0, R71 = 0, R72 = 0, R73 = 0, R74 = 0, R75 = 0, R76 = 0, R77 = 0, R78 = 0, R79 = 0, R7A = 0, R7B = 0, R7C = 0, R7D = 0, R7E = 0, R7F = 0, R80 = 0, R81 = 0, R82 = 0, R83 = 0, R84 = 0, R85 = 0, R86 = 0, R87 = 0, R88 = 0, R89 = 0, R8A = 0, R8B = 0, R8C = 0, R8D = 0, R8E = 0, R8F = 0, R90 = 0, R91 = 0, R92 = 0, R93 = 0, R94 = 0, R95 = 0, R96 = 0, R97 = 0, R98 = 0, R99 = 0, R9A = 0, R9B = 0, R9C = 0, R9D = 0, R9E = 0, R9F = 0, RA0 = 0, RA1 = 0, RA2 = 0, RA3 = 0, RA4 = 0, RA5 = 0, RA6 = 0, RA7 = 0, RA8 = 0, RA9 = 0, RAA = 0, RAB = 0, RAC = 0, RAD = 0, RAE = 0, RAF = 0, RB0 = 0, RB1 = 0, RB2 = 0, RB3 = 0, RB4 = 0, RB5 = 0, RB6 = 0, RB7 = 0, RB8 = 0, RB9 = 0, RBA = 0, RBB = 0, RBC = 0, RBD = 0, RBE = 0, RBF = 0, RC0 = 0, RC1 = 0, RC2 = 0, RC3 = 0, RC4 = 0, RC5 = 0, RC6 = 0, RC7 = 0, RC8 = 0, RC9 = 0, RCA = 0, RCB = 0, RCC = 0, RCD = 0, RCE = 0, RCF = 0, RD0 = 0, RD1 = 0, RD2 = 0, RD3 = 0, RD4 = 0, RD5 = 0, RD6 = 0, RD7 = 0, RD8 = 0, RD9 = 0, RDA = 0, RDB = 0, RDC = 0, RDD = 0, RDE = 0, RDF = 0, RE0 = 0, RE1 = 0, RE2 = 0, RE3 = 0, RE4 = 0, RE5 = 0, RE6 = 0, RE7 = 0, RE8 = 0, RE9 = 0, REA = 0, REB = 0, REC = 0, RED = 0, REE = 0, REF = 0;
@@ -2544,8 +2542,7 @@
2544 cfb_aes_prototype.encrypt = cfb_aes_encrypt; 2542 cfb_aes_prototype.encrypt = cfb_aes_encrypt;
2545 cfb_aes_prototype.decrypt = cfb_aes_decrypt; 2543 cfb_aes_prototype.decrypt = cfb_aes_decrypt;
2546 function sha256_asm(stdlib, foreign, buffer) { 2544 function sha256_asm(stdlib, foreign, buffer) {
2547 // Closure Compiler warning - commented out 2545 "use asm";
2548 //"use asm";
2549 var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0, TOTAL = 0; 2546 var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0, TOTAL = 0;
2550 var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0, O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0; 2547 var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0, O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0;
2551 var HEAP = new stdlib.Uint8Array(buffer); 2548 var HEAP = new stdlib.Uint8Array(buffer);
@@ -3412,9 +3409,7 @@
3412 HEAP[offset + length + 1 | 0] = block >>> 16 & 255; 3409 HEAP[offset + length + 1 | 0] = block >>> 16 & 255;
3413 HEAP[offset + length + 2 | 0] = block >>> 8 & 255; 3410 HEAP[offset + length + 2 | 0] = block >>> 8 & 255;
3414 HEAP[offset + length + 3 | 0] = block & 255; 3411 HEAP[offset + length + 3 | 0] = block & 255;
3415 // Closure compiler warning - The result of the 'bitor' operator is not being used 3412 hmac_finish(offset, length + 4 | 0, -1) | 0;
3416 //hmac_finish(offset, length + 4 | 0, -1) | 0;
3417 hmac_finish(offset, length + 4 | 0, -1);
3418 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5, 3413 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5,
3419 h6 = t6 = H6, h7 = t7 = H7; 3414 h6 = t6 = H6, h7 = t7 = H7;
3420 count = count - 1 | 0; 3415 count = count - 1 | 0;
@@ -3524,8 +3519,7 @@
3524 sha256_prototype.process = sha256_process; 3519 sha256_prototype.process = sha256_process;
3525 sha256_prototype.finish = sha256_finish; 3520 sha256_prototype.finish = sha256_finish;
3526 function sha512_asm(stdlib, foreign, buffer) { 3521 function sha512_asm(stdlib, foreign, buffer) {
3527 // Closure Compiler warning - commented out 3522 "use asm";
3528 //"use asm";
3529 var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0, H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0, TOTAL = 0; 3523 var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0, H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0, TOTAL = 0;
3530 var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0, I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0, O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0, O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0; 3524 var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0, I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0, O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0, O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0;
3531 var HEAP = new stdlib.Uint8Array(buffer); 3525 var HEAP = new stdlib.Uint8Array(buffer);
@@ -6751,9 +6745,7 @@
6751 HEAP[offset + length + 1 | 0] = block >>> 16 & 255; 6745 HEAP[offset + length + 1 | 0] = block >>> 16 & 255;
6752 HEAP[offset + length + 2 | 0] = block >>> 8 & 255; 6746 HEAP[offset + length + 2 | 0] = block >>> 8 & 255;
6753 HEAP[offset + length + 3 | 0] = block & 255; 6747 HEAP[offset + length + 3 | 0] = block & 255;
6754 // Closure compiler warning - The result of the 'bitor' operator is not being used 6748 hmac_finish(offset, length + 4 | 0, -1) | 0;
6755 //hmac_finish(offset, length + 4 | 0, -1) | 0;
6756 hmac_finish(offset, length + 4 | 0, -1);
6757 h0h = t0h = H0h; 6749 h0h = t0h = H0h;
6758 h0l = t0l = H0l; 6750 h0l = t0l = H0l;
6759 h1h = t1h = H1h; 6751 h1h = t1h = H1h;
@@ -7236,7 +7228,7 @@
7236 return SHA256_instance.reset().process(data).finish().result; 7228 return SHA256_instance.reset().process(data).finish().result;
7237 } 7229 }
7238 function sha256_hex(data) { 7230 function sha256_hex(data) {
7239 var result = sha256_bytes(data); 7231 var result = sha256_bytes(data.toUTF8Array());
7240 return bytes_to_hex(result); 7232 return bytes_to_hex(result);
7241 } 7233 }
7242 function sha256_base64(data) { 7234 function sha256_base64(data) {
@@ -7321,8 +7313,8 @@
7321 if (password === undefined) throw new SyntaxError("password required"); 7313 if (password === undefined) throw new SyntaxError("password required");
7322 if (salt === undefined) throw new SyntaxError("salt required"); 7314 if (salt === undefined) throw new SyntaxError("salt required");
7323 return pbkdf2_hmac_sha256_instance.reset({ 7315 return pbkdf2_hmac_sha256_instance.reset({
7324 password: password 7316 password: password.toUTF8Array()
7325 }).generate(salt, iterations, dklen).result; 7317 }).generate(salt.toUTF8Array(), iterations, dklen).result;
7326 } 7318 }
7327 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) { 7319 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) {
7328 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen); 7320 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
@@ -7344,8 +7336,8 @@
7344 if (password === undefined) throw new SyntaxError("password required"); 7336 if (password === undefined) throw new SyntaxError("password required");
7345 if (salt === undefined) throw new SyntaxError("salt required"); 7337 if (salt === undefined) throw new SyntaxError("salt required");
7346 return pbkdf2_hmac_sha512_instance.reset({ 7338 return pbkdf2_hmac_sha512_instance.reset({
7347 password: password 7339 password: password.toUTF8Array()
7348 }).generate(salt, iterations, dklen).result; 7340 }).generate(salt.toUTF8Array(), iterations, dklen).result;
7349 } 7341 }
7350 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) { 7342 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) {
7351 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen); 7343 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
@@ -7465,3 +7457,35 @@
7465})({}, function() { 7457})({}, function() {
7466 return this; 7458 return this;
7467}()); 7459}());
7460
7461String.prototype.toUTF8Array = function() {
7462 var str = this;
7463 var utf8 = [];
7464 for (var i=0; i < str.length; i++) {
7465 var charcode = str.charCodeAt(i);
7466 if (charcode < 0x80) utf8.push(charcode);
7467 else if (charcode < 0x800) {
7468 utf8.push(0xc0 | (charcode >> 6),
7469 0x80 | (charcode & 0x3f));
7470 }
7471 else if (charcode < 0xd800 || charcode >= 0xe000) {
7472 utf8.push(0xe0 | (charcode >> 12),
7473 0x80 | ((charcode>>6) & 0x3f),
7474 0x80 | (charcode & 0x3f));
7475 }
7476 // surrogate pair
7477 else {
7478 i++;
7479 // UTF-16 encodes 0x10000-0x10FFFF by
7480 // subtracting 0x10000 and splitting the
7481 // 20 bits of 0x0-0xFFFFF into two halves
7482 charcode = 0x10000 + (((charcode & 0x3ff)<<10)
7483 | (str.charCodeAt(i) & 0x3ff))
7484 utf8.push(0xf0 | (charcode >>18),
7485 0x80 | ((charcode>>12) & 0x3f),
7486 0x80 | ((charcode>>6) & 0x3f),
7487 0x80 | (charcode & 0x3f));
7488 }
7489 }
7490 return new Uint8Array(utf8);
7491}
diff --git a/src/js/jsbip39.js b/src/js/jsbip39.js
index 7acf77b..0b88fef 100644
--- a/src/js/jsbip39.js
+++ b/src/js/jsbip39.js
@@ -133,9 +133,8 @@ var Mnemonic = function(language) {
133 return str.normalize("NFKD"); 133 return str.normalize("NFKD");
134 } 134 }
135 else { 135 else {
136 // TODO find a library to do this 136 // TODO decide how to handle this in the future.
137 // Not supported on firefox mobile 137 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
138 console.warn("NFKD Normalization is unavailable");
139 return str; 138 return str;
140 } 139 }
141 } 140 }
@@ -175,212 +174,3 @@ var Mnemonic = function(language) {
175 init(); 174 init();
176 175
177} 176}
178
179WORDLISTS = {
180"english": [
181"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
182"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
183"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
184"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
185"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
186"alien","all","alley","allow","almost","alone","alpha","already","also","alter",
187"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
188"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
189"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
190"area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
191"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
192"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
193"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
194"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
195"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
196"barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
197"beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
198"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
199"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
200"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
201"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
202"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
203"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
204"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
205"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
206"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
207"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
208"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
209"cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
210"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
211"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
212"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
213"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
214"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
215"clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
216"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
217"code","coffee","coil","coin","collect","color","column","combine","come","comfort",
218"comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
219"convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
220"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
221"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
222"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
223"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
224"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
225"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
226"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
227"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
228"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
229"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
230"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
231"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
232"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
233"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
234"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
235"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
236"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
237"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
238"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
239"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
240"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
241"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
242"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
243"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
244"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
245"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
246"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
247"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
248"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
249"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
250"film","filter","final","find","fine","finger","finish","fire","firm","first",
251"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
252"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
253"foam","focus","fog","foil","fold","follow","food","foot","force","forest",
254"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
255"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
256"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
257"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
258"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
259"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
260"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
261"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
262"grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
263"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
264"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
265"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
266"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
267"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
268"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
269"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
270"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
271"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
272"impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
273"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
274"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
275"intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
276"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
277"job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
278"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
279"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
280"knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
281"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
282"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
283"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
284"liar","liberty","library","license","life","lift","light","like","limb","limit",
285"link","lion","liquid","list","little","live","lizard","load","loan","lobster",
286"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
287"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
288"magic","magnet","maid","mail","main","major","make","mammal","man","manage",
289"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
290"marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
291"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
292"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
293"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
294"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
295"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
296"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
297"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
298"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
299"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
300"network","neutral","never","news","next","nice","night","noble","noise","nominee",
301"noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
302"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
303"obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
304"oil","okay","old","olive","olympic","omit","once","one","onion","online",
305"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
306"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
307"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
308"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
309"parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
310"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
311"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
312"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
313"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
314"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
315"pole","police","pond","pony","pool","popular","portion","position","possible","post",
316"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
317"present","pretty","prevent","price","pride","primary","print","priority","prison","private",
318"prize","problem","process","produce","profit","program","project","promote","proof","property",
319"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
320"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
321"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
322"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
323"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
324"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
325"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
326"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
327"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
328"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
329"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
330"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
331"romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
332"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
333"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
334"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
335"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
336"scrub","sea","search","season","seat","second","secret","section","security","seed",
337"seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
338"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
339"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
340"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
341"siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
342"sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
343"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
344"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
345"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
346"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
347"sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
348"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
349"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
350"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
351"stand","start","state","stay","steak","steel","stem","step","stereo","stick",
352"still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
353"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
354"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
355"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
356"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
357"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
358"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
359"teach","team","tell","ten","tenant","tennis","tent","term","test","text",
360"thank","that","theme","then","theory","there","they","thing","this","thought",
361"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
362"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
363"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
364"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
365"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
366"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
367"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
368"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
369"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
370"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
371"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
372"uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
373"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
374"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
375"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
376"video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
377"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
378"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
379"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
380"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
381"wheel","when","where","whip","whisper","wide","width","wife","wild","will",
382"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
383"wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
384"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
385"yellow","you","young","youth","zebra","zero","zone","zoo"]
386};
diff --git a/src/js/wordlist_english.js b/src/js/wordlist_english.js
new file mode 100644
index 0000000..fa6e624
--- /dev/null
+++ b/src/js/wordlist_english.js
@@ -0,0 +1,206 @@
1WORDLISTS["english"] = [
2"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
3"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
4"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
5"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
6"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
7"alien","all","alley","allow","almost","alone","alpha","already","also","alter",
8"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
9"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
10"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
11"area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
12"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
13"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
14"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
15"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
16"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
17"barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
18"beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
19"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
20"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
21"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
22"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
23"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
24"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
25"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
26"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
27"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
28"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
29"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
30"cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
31"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
32"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
33"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
34"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
35"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
36"clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
37"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
38"code","coffee","coil","coin","collect","color","column","combine","come","comfort",
39"comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40"convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
41"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
43"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
44"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
45"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
46"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
47"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
48"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
49"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
50"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
51"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
52"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
53"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
54"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
55"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
56"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
57"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
58"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
59"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
60"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
61"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
62"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
63"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
64"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
65"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
66"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
67"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
68"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
69"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
70"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
71"film","filter","final","find","fine","finger","finish","fire","firm","first",
72"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
73"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
74"foam","focus","fog","foil","fold","follow","food","foot","force","forest",
75"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
76"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
77"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
78"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
79"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
80"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
81"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
82"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
83"grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
84"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
85"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
86"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
87"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
88"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
89"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
90"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
91"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
92"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
93"impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
94"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
95"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
96"intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
97"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
98"job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
99"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
100"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
101"knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
102"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
103"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
104"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
105"liar","liberty","library","license","life","lift","light","like","limb","limit",
106"link","lion","liquid","list","little","live","lizard","load","loan","lobster",
107"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
108"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
109"magic","magnet","maid","mail","main","major","make","mammal","man","manage",
110"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
111"marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
112"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
113"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
114"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
115"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
116"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
117"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
118"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
119"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
120"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
121"network","neutral","never","news","next","nice","night","noble","noise","nominee",
122"noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
123"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
124"obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
125"oil","okay","old","olive","olympic","omit","once","one","onion","online",
126"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
127"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
128"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
129"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
130"parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
131"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
132"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
133"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
134"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
135"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
136"pole","police","pond","pony","pool","popular","portion","position","possible","post",
137"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
138"present","pretty","prevent","price","pride","primary","print","priority","prison","private",
139"prize","problem","process","produce","profit","program","project","promote","proof","property",
140"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
141"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
142"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
143"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
144"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
145"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
146"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
147"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
148"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
149"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
150"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
151"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
152"romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
153"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
154"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
155"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
156"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
157"scrub","sea","search","season","seat","second","secret","section","security","seed",
158"seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
159"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
160"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
161"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
162"siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
163"sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
164"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
165"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
166"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
167"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
168"sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
169"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
170"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
171"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
172"stand","start","state","stay","steak","steel","stem","step","stereo","stick",
173"still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
174"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
175"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
176"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
177"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
178"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
179"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
180"teach","team","tell","ten","tenant","tennis","tent","term","test","text",
181"thank","that","theme","then","theory","there","they","thing","this","thought",
182"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
183"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
184"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
185"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
186"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
187"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
188"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
189"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
190"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
191"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
192"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
193"uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
194"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
195"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
196"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
197"video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
198"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
199"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
200"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
201"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
202"wheel","when","where","whip","whisper","wide","width","wife","wild","will",
203"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
204"wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
205"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
206"yellow","you","young","youth","zebra","zero","zone","zoo"]
diff --git a/src/js/wordlists.js b/src/js/wordlists.js
new file mode 100644
index 0000000..740f20c
--- /dev/null
+++ b/src/js/wordlists.js
@@ -0,0 +1 @@
WORDLISTS = {};