Run the formatter over crypto.
This also includes some handmade formatting of large data blocks, but no
non-whitespace changes.
R=rnystrom@google.com
Review URL: https://codereview.chromium.org//1350913002 .
diff --git a/lib/crypto.dart b/lib/crypto.dart
index eb2905a..5e85a0a 100644
--- a/lib/crypto.dart
+++ b/lib/crypto.dart
@@ -87,14 +87,10 @@
*
*/
static String bytesToBase64(List<int> bytes,
- {bool urlSafe : false,
- bool addLineSeparator : false}) {
- return _CryptoUtils.bytesToBase64(bytes,
- urlSafe,
- addLineSeparator);
+ {bool urlSafe: false, bool addLineSeparator: false}) {
+ return _CryptoUtils.bytesToBase64(bytes, urlSafe, addLineSeparator);
}
-
/**
* Converts a Base 64 encoded String into list of bytes.
*
diff --git a/lib/src/base64.dart b/lib/src/base64.dart
index 92a8275..1360638 100644
--- a/lib/src/base64.dart
+++ b/lib/src/base64.dart
@@ -6,40 +6,40 @@
const Base64Codec BASE64 = const Base64Codec();
-const List<int> _decodeTable =
- const [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, 0, -2, -2,
- -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63,
- -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ];
+const List<int> _decodeTable = const [
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, 0, -2, -2,
+ -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63,
+ -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2
+];
const String _encodeTableUrlSafe =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
const String _encodeTable =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const int _LINE_LENGTH = 76;
-const int _CR = 13; // '\r'
-const int _LF = 10; // '\n'
+const int _CR = 13; // '\r'
+const int _LF = 10; // '\n'
const List<int> _PAD_BYTES = const [61]; // '='
const List<int> _ENCODED_PAD_BYTES = const [37, 51, 68]; // '%3D'
const String _PAD = "=";
const String _ENCODED_PAD = "%3D";
class Base64Codec extends Codec<List<int>, String> {
-
final bool _urlSafe;
final bool _addLineSeparator;
final bool _encodePaddingCharacter;
@@ -66,9 +66,10 @@
* If [encodePaddingCharacter] is `true` `encode` converts `=` to `%3D`.
* The default value of [encodePaddingCharacter] is `false`.
*/
- const Base64Codec({bool urlSafe: false,
- bool addLineSeparator: false,
- bool encodePaddingCharacter: false})
+ const Base64Codec(
+ {bool urlSafe: false,
+ bool addLineSeparator: false,
+ bool encodePaddingCharacter: false})
: _urlSafe = urlSafe,
_addLineSeparator = addLineSeparator,
_encodePaddingCharacter = encodePaddingCharacter;
@@ -76,30 +77,24 @@
String get name => "base64";
String encode(List<int> bytes,
- {bool urlSafe,
- bool addLineSeparator,
- bool encodePaddingCharacter}) {
+ {bool urlSafe, bool addLineSeparator, bool encodePaddingCharacter}) {
if (urlSafe == null) urlSafe = _urlSafe;
if (addLineSeparator == null) addLineSeparator = _addLineSeparator;
if (encodePaddingCharacter == null) {
encodePaddingCharacter = _encodePaddingCharacter;
}
return new Base64Encoder(
- urlSafe: urlSafe,
- addLineSeparator: addLineSeparator,
- encodePaddingCharacter: encodePaddingCharacter)
- .convert(bytes);
-
-
+ urlSafe: urlSafe,
+ addLineSeparator: addLineSeparator,
+ encodePaddingCharacter: encodePaddingCharacter).convert(bytes);
}
- Base64Encoder get encoder =>
- new Base64Encoder(urlSafe: _urlSafe,
- addLineSeparator: _addLineSeparator,
- encodePaddingCharacter: _encodePaddingCharacter);
+ Base64Encoder get encoder => new Base64Encoder(
+ urlSafe: _urlSafe,
+ addLineSeparator: _addLineSeparator,
+ encodePaddingCharacter: _encodePaddingCharacter);
Base64Decoder get decoder => new Base64Decoder();
-
}
/**
@@ -134,9 +129,10 @@
* If [encodePaddingCharacter] is `true` `encode` converts `=` to `%3D`.
* The default value of [encodePaddingCharacter] is `false`.
*/
- const Base64Encoder({bool urlSafe: false,
- bool addLineSeparator: false,
- bool encodePaddingCharacter: false})
+ const Base64Encoder(
+ {bool urlSafe: false,
+ bool addLineSeparator: false,
+ bool encodePaddingCharacter: false})
: _urlSafe = urlSafe,
_addLineSeparator = addLineSeparator,
_encodePaddingCharacter = encodePaddingCharacter,
@@ -163,7 +159,7 @@
// Size of base output.
int baseOutputLength = ((length ~/ 3) * 4);
int remainderOutputLength;
- if(_encodePaddingCharacter) {
+ if (_encodePaddingCharacter) {
remainderOutputLength = ((remainderLength > 0) ? 6 : 0);
} else {
remainderOutputLength = ((remainderLength > 0) ? 4 : 0);
@@ -180,11 +176,11 @@
int j = 0, i = start, c = 0;
while (i < chunkLength) {
int x = ((bytes[i++] << 16) & 0x00FFFFFF) |
- ((bytes[i++] << 8) & 0x00FFFFFF) |
- bytes[i++];
+ ((bytes[i++] << 8) & 0x00FFFFFF) |
+ bytes[i++];
out[j++] = lookup.codeUnitAt(x >> 18);
out[j++] = lookup.codeUnitAt((x >> 12) & 0x3F);
- out[j++] = lookup.codeUnitAt((x >> 6) & 0x3F);
+ out[j++] = lookup.codeUnitAt((x >> 6) & 0x3F);
out[j++] = lookup.codeUnitAt(x & 0x3F);
// Add optional line separator for each 76 char output.
if (_addLineSeparator && ++c == 19 && j < outputLength - 2) {
@@ -226,16 +222,14 @@
}
class _Base64EncoderSink extends ChunkedConversionSink<List<int>> {
-
final Base64Encoder _encoder;
final ChunkedConversionSink<String> _outSink;
final List<int> _buffer = new List<int>();
int _bufferCount = 0;
_Base64EncoderSink(this._outSink, urlSafe, addLineSeparator)
- : _encoder = new Base64Encoder(urlSafe: urlSafe,
- addLineSeparator: addLineSeparator);
-
+ : _encoder = new Base64Encoder(
+ urlSafe: urlSafe, addLineSeparator: addLineSeparator);
void add(List<int> chunk) {
var nextBufferCount = (chunk.length + _bufferCount) % 3;
@@ -243,9 +237,8 @@
int decodableLength = _bufferCount + chunk.length - nextBufferCount;
if (_bufferCount + chunk.length > _buffer.length) {
- _buffer.replaceRange(_bufferCount,
- _buffer.length,
- chunk.sublist(0, _buffer.length - _bufferCount));
+ _buffer.replaceRange(_bufferCount, _buffer.length,
+ chunk.sublist(0, _buffer.length - _bufferCount));
_buffer.addAll(chunk.sublist(_buffer.length - _bufferCount));
} else {
_buffer.replaceRange(_bufferCount, _bufferCount + chunk.length, chunk);
@@ -269,7 +262,6 @@
* unsigned 8-bit integers) according to Base64.
*/
class Base64Decoder extends Converter<String, List<int>> {
-
/**
* Instantiates a new [Base64Decoder]
*/
@@ -306,19 +298,22 @@
}
if (normalLength % 4 != 0) {
- throw new FormatException('''Size of Base 64 characters in Input
- must be a multiple of 4''', input, normalLength);
+ throw new FormatException(
+ '''Size of Base 64 characters in Input
+ must be a multiple of 4''',
+ input,
+ normalLength);
}
// Count pad characters.
int padLength = 0;
i = length - 1;
- while(i >= 0) {
+ while (i >= 0) {
int currentCodeUnit = input.codeUnitAt(i);
if (currentCodeUnit == _ENCODED_PAD_BYTES[2] &&
- i >= 2 &&
- input.codeUnitAt(i - 1) == _ENCODED_PAD_BYTES[1] &&
- input.codeUnitAt(i - 2) == _ENCODED_PAD_BYTES[0]) {
+ i >= 2 &&
+ input.codeUnitAt(i - 1) == _ENCODED_PAD_BYTES[1] &&
+ input.codeUnitAt(i - 2) == _ENCODED_PAD_BYTES[0]) {
padLength++;
i -= 2;
} else if (_decodeTable[currentCodeUnit] > 0) {
@@ -331,10 +326,10 @@
int outputLength = ((normalLength * 6) >> 3) - padLength;
List<int> out = new Uint8List(outputLength);
- for (int i = 0, o = 0; o < outputLength; ) {
+ for (int i = 0, o = 0; o < outputLength;) {
// Accumulate 4 valid 6 bit Base 64 characters into an int.
int x = 0;
- for (int j = 4; j > 0; ) {
+ for (int j = 4; j > 0;) {
int c = _decodeTable[input.codeUnitAt(i++)];
if (c >= 0) {
x = ((x << 6) & 0x00FFFFFF) | c;
@@ -359,9 +354,7 @@
}
}
-
class _Base64DecoderSink extends ChunkedConversionSink<String> {
-
final Base64Decoder _decoder = new Base64Decoder();
final ChunkedConversionSink<List<int>> _outSink;
String _unconverted = "";
@@ -375,10 +368,9 @@
}
chunk = chunk.replaceAll(_ENCODED_PAD, _PAD);
int decodableLength = chunk.length;
- // If chunk ends in "%" or "%3", it may be a partial encoded pad.
- // If chunk is smaller than 4 characters, don't bother checking.
- if (chunk.length > 3 &&
- chunk.contains(_ENCODED_PAD[0], chunk.length - 2)) {
+ // If chunk ends in "%" or "%3", it may be a partial encoded pad.
+ // If chunk is smaller than 4 characters, don't bother checking.
+ if (chunk.length > 3 && chunk.contains(_ENCODED_PAD[0], chunk.length - 2)) {
decodableLength = chunk.lastIndexOf(_ENCODED_PAD[0]);
}
decodableLength -= decodableLength % 4;
@@ -395,5 +387,3 @@
_outSink.close();
}
}
-
-
diff --git a/lib/src/crypto_utils.dart b/lib/src/crypto_utils.dart
index 7111d6f..42871db 100644
--- a/lib/src/crypto_utils.dart
+++ b/lib/src/crypto_utils.dart
@@ -14,11 +14,9 @@
}
static String bytesToBase64(List<int> bytes,
- [bool urlSafe = false,
- bool addLineSeparator = false]) {
+ [bool urlSafe = false, bool addLineSeparator = false]) {
return BASE64.encode(bytes,
- urlSafe: urlSafe,
- addLineSeparator: addLineSeparator);
+ urlSafe: urlSafe, addLineSeparator: addLineSeparator);
}
static List<int> base64StringToBytes(String input) {
diff --git a/lib/src/hash_utils.dart b/lib/src/hash_utils.dart
index 12bcb0d..5fd8b07 100644
--- a/lib/src/hash_utils.dart
+++ b/lib/src/hash_utils.dart
@@ -31,9 +31,8 @@
List<int> _pendingData;
bool _digestCalled = false;
- _HashBase(int chunkSizeInWords,
- int digestSizeInWords,
- bool this._bigEndianWords)
+ _HashBase(
+ int chunkSizeInWords, int digestSizeInWords, bool this._bigEndianWords)
: _pendingData = [],
_currentChunk = new Uint32List(chunkSizeInWords),
_h = new Uint32List(digestSizeInWords),
diff --git a/lib/src/hmac.dart b/lib/src/hmac.dart
index a4ea193..4cdf81f 100644
--- a/lib/src/hmac.dart
+++ b/lib/src/hmac.dart
@@ -20,7 +20,7 @@
/**
* Create an [HMAC] object from a [Hash] and a key.
*/
- HMAC(Hash this._hash, List<int> this._key): _message = [];
+ HMAC(Hash this._hash, List<int> this._key) : _message = [];
/**
* Add a list of bytes to the message.
diff --git a/lib/src/md5.dart b/lib/src/md5.dart
index 54bf3be..08bc012 100644
--- a/lib/src/md5.dart
+++ b/lib/src/md5.dart
@@ -11,7 +11,7 @@
* required for backwards compatibility.
*/
class MD5 extends _HashBase {
- MD5(): super(16, 4, false) {
+ MD5() : super(16, 4, false) {
_h[0] = 0x67452301;
_h[1] = 0xefcdab89;
_h[2] = 0x98badcfe;
@@ -34,13 +34,15 @@
0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
- 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 ];
+ 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
+ ];
static const _r = const [
- 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14,
- 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11,
- 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6,
- 10, 15, 21, 6, 10, 15, 21 ];
+ 07, 12, 17, 22, 07, 12, 17, 22, 07, 12, 17, 22, 07, 12, 17, 22, 05, 09, 14,
+ 20, 05, 09, 14, 20, 05, 09, 14, 20, 05, 09, 14, 20, 04, 11, 16, 23, 04, 11,
+ 16, 23, 04, 11, 16, 23, 04, 11, 16, 23, 06, 10, 15, 21, 06, 10, 15, 21, 06,
+ 10, 15, 21, 06, 10, 15, 21
+ ];
// Compute one iteration of the MD5 algorithm with a chunk of
// 16 32-bit pieces.
@@ -73,9 +75,8 @@
var temp = d;
d = c;
c = b;
- b = _add32(b, _rotl32(_add32(_add32(a, t0),
- _add32(_k[i], m[t1])),
- _r[i]));
+ b = _add32(
+ b, _rotl32(_add32(_add32(a, t0), _add32(_k[i], m[t1])), _r[i]));
a = temp;
}
diff --git a/lib/src/sha1.dart b/lib/src/sha1.dart
index 6e8ea48..3946484 100644
--- a/lib/src/sha1.dart
+++ b/lib/src/sha1.dart
@@ -11,7 +11,9 @@
final Uint32List _w;
// Construct a SHA1 hasher object.
- SHA1() : _w = new Uint32List(80), super(16, 5, true) {
+ SHA1()
+ : _w = new Uint32List(80),
+ super(16, 5, true) {
_h[0] = 0x67452301;
_h[1] = 0xEFCDAB89;
_h[2] = 0x98BADCFE;
diff --git a/lib/src/sha256.dart b/lib/src/sha256.dart
index f36561f..e2dc37e 100644
--- a/lib/src/sha256.dart
+++ b/lib/src/sha256.dart
@@ -11,7 +11,9 @@
final Uint32List _w;
// Construct a SHA256 hasher object.
- SHA256() : _w = new Uint32List(64), super(16, 8, true) {
+ SHA256()
+ : _w = new Uint32List(64),
+ super(16, 8, true) {
// Initial value of the hash parts. First 32 bits of the fractional parts
// of the square roots of the first 8 prime numbers.
_h[0] = 0x6a09e667;
@@ -31,20 +33,21 @@
// Table of round constants. First 32 bits of the fractional
// parts of the cube roots of the first 64 prime numbers.
- static const List<int> _K =
- const [ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,
- 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,
- 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,
- 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,
- 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
- 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,
- 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
- 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,
- 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,
- 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ];
+ static const List<int> _K = const [
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,
+ 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,
+ 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,
+ 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,
+ 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,
+ 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
+ 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,
+ 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,
+ 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+ ];
// Helper functions as defined in http://tools.ietf.org/html/rfc6234
_rotr32(n, x) => (x >> n) | ((x << (32 - n)) & _MASK_32);
@@ -67,7 +70,7 @@
}
for (; i < 64; i++) {
_w[i] = _add32(_add32(_ssig1(_w[i - 2]), _w[i - 7]),
- _add32(_ssig0(_w[i - 15]), _w[i - 16]));
+ _add32(_ssig0(_w[i - 15]), _w[i - 16]));
}
// Shuffle around the bits.
@@ -81,8 +84,8 @@
var h = _h[7];
for (var t = 0; t < 64; t++) {
- var t1 = _add32(_add32(h, _bsig1(e)),
- _add32(_ch(e, f, g), _add32(_K[t], _w[t])));
+ var t1 = _add32(
+ _add32(h, _bsig1(e)), _add32(_ch(e, f, g), _add32(_K[t], _w[t])));
var t2 = _add32(_bsig0(a), _maj(a, b, c));
h = g;
g = f;
diff --git a/pubspec.yaml b/pubspec.yaml
index dcee08d..1e435e2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: crypto
-version: 0.9.1
+version: 0.9.2-dev
author: Dart Team <misc@dartlang.org>
description: Library of cryptographic functions.
homepage: https://www.github.com/dart-lang/crypto
diff --git a/test/base64_test.dart b/test/base64_test.dart
index 879239b..f5756aa 100644
--- a/test/base64_test.dart
+++ b/test/base64_test.dart
@@ -17,66 +17,82 @@
test('decoder for malformed input', _testDecoderForMalformedInput);
test('encode decode lists', _testEncodeDecodeLists);
test('url safe encode-decode', _testUrlSafeEncodeDecode);
- test('percent-encoded padding character encode-decode',
- _testPaddingCharacter);
+ test(
+ 'percent-encoded padding character encode-decode', _testPaddingCharacter);
test('streaming encoder', _testStreamingEncoder);
test('streaming decoder', _testStreamingDecoder);
test('streaming decoder for malformed input',
- _testStreamingDecoderForMalformedInput);
+ _testStreamingDecoderForMalformedInput);
test('streaming encoder for different decompositions of a list of bytes',
- _testStreamingEncoderForDecompositions);
+ _testStreamingEncoderForDecompositions);
test('streaming decoder for different decompositions of a string',
- _testStreamingDecoderForDecompositions);
+ _testStreamingDecoderForDecompositions);
test('streaming for encoded padding character',
- _testStreamingForEncodedPadding);
+ _testStreamingForEncodedPadding);
test('old api', _testOldApi);
test('url safe streaming encoder/decoder', _testUrlSafeStreaming);
test('performance', _testPerformance);
-
-
}
// Data from http://tools.ietf.org/html/rfc4648.
-const _INPUTS =
- const [ '', 'f', 'fo', 'foo', 'foob', 'fooba', 'foobar'];
-const _RESULTS =
- const [ '', 'Zg==', 'Zm8=', 'Zm9v', 'Zm9vYg==', 'Zm9vYmE=', 'Zm9vYmFy'];
+const _INPUTS = const ['', 'f', 'fo', 'foo', 'foob', 'fooba', 'foobar'];
+const _RESULTS = const [
+ '',
+ 'Zg==',
+ 'Zm8=',
+ 'Zm9v',
+ 'Zm9vYg==',
+ 'Zm9vYmE=',
+ 'Zm9vYmFy'
+];
const _PADDING_INPUT = const [2, 8];
-var _STREAMING_ENCODER_INPUT =
- [[102, 102], [111, 102],
- [111, 111, 102, 111, 111, 98, 102, 111,
- 111, 98, 97, 102, 111, 111, 98, 97, 114]];
+var _STREAMING_ENCODER_INPUT = [
+ [102, 102],
+ [111, 102],
+ [
+ 111, 111, 102, 111, 111, 98, 102, 111, 111, 98, 97, 102, 111, 111, 98, 97,
+ 114
+ ]
+];
const _STREAMING_ENCODED = 'ZmZvZm9vZm9vYmZvb2JhZm9vYmFy';
-const _STREAMING_DECODER_INPUT =
- const ['YmFz', 'ZTY', '0I', 'GRlY29kZXI='];
-const _STREAMING_DECODED =
- const [98, 97, 115, 101, 54, 52, 32, 100, 101, 99, 111, 100, 101, 114];
-const _STREAMING_DECODER_INPUT_FOR_ZEROES =
- const ['AAAA', 'AAA=', 'AA==', ''];
+const _STREAMING_DECODER_INPUT = const ['YmFz', 'ZTY', '0I', 'GRlY29kZXI='];
+const _STREAMING_DECODED = const [
+ 98, 97, 115, 101, 54, 52, 32, 100, 101, 99, 111, 100, 101, 114
+];
+const _STREAMING_DECODER_INPUT_FOR_ZEROES = const ['AAAA', 'AAA=', 'AA==', ''];
var _STREAMING_DECODED_ZEROES = [0, 0, 0, 0, 0, 0];
var _DECOMPOSITIONS_FOR_DECODING = [
- ["A", "", "BCD"], ["A", "BCD", "", ""], ["A", "B", "", "", "CD", ""],
- ["", "A", "BC", "", "D"], ["", "AB", "C", "", "", "D"], ["AB", "CD", ""],
- ["", "ABC", "", "D"], ["", "ABC", "D", ""], ["", "", "ABCD", ""],
- ["A", "B", "C", "D"], ["", "A", "B", "C", "D", ""],
- ["", "A", "B", "", "", "C", "", "D", ""]];
+ ["A", "", "BCD"],
+ ["A", "BCD", "", ""],
+ ["A", "B", "", "", "CD", ""],
+ ["", "A", "BC", "", "D"],
+ ["", "AB", "C", "", "", "D"],
+ ["AB", "CD", ""],
+ ["", "ABC", "", "D"],
+ ["", "ABC", "D", ""],
+ ["", "", "ABCD", ""],
+ ["A", "B", "C", "D"],
+ ["", "A", "B", "C", "D", ""],
+ ["", "A", "B", "", "", "C", "", "D", ""]
+];
const _DECOMPOSITION_DECODED = const [0, 16, 131];
var _DECOMPOSITIONS_FOR_ENCODING = [
- [[196, 16], [], [158], [196]],
- [[196, 16], [158, 196], [], []],
- [[196], [], [16], [], [], [158], [], [196]],
- [[196], [], [16], [158, 196], [], []],
- [[], [196], [], [], [16, 158], [], [196]],
- [[], [196], [16, 158, 196], []],
- [[196, 16, 158], [], [], [196]],
- [[196, 16, 158], [], [196], []],
- [[196, 16, 158, 196], [], [], []]];
+ [[196, 16], [], [158], [196]],
+ [[196, 16], [158, 196], [], []],
+ [[196], [], [16], [], [], [158], [], [196]],
+ [[196], [], [16], [158, 196], [], []],
+ [[], [196], [], [], [16, 158], [], [196]],
+ [[], [196], [16, 158, 196], []],
+ [[196, 16, 158], [], [], [196]],
+ [[196, 16, 158], [], [196], []],
+ [[196, 16, 158, 196], [], [], []]
+];
const _DECOMPOSITION_ENCODED = 'xBCexA==';
@@ -90,8 +106,7 @@
"perseverance of delight in the continued and indefatigable generation "
"of knowledge, exceeds the short vehemence of any carnal pleasure.";
-const _LONG_LINE_RESULT =
- "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbm"
+const _LONG_LINE_RESULT = "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbm"
"x5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz\r\n"
"IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci"
"BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg\r\n"
@@ -102,8 +117,7 @@
"ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm"
"5hbCBwbGVhc3VyZS4=";
-const _LONG_LINE_RESULT_NO_BREAK =
- "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbm"
+const _LONG_LINE_RESULT_NO_BREAK = "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbm"
"x5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz"
"IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci"
"BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg"
@@ -119,25 +133,20 @@
expect(BASE64.encode(_INPUTS[i].codeUnits), _RESULTS[i]);
}
for (var i = 0; i < inputsWithZeroes.length; i++) {
- expect(BASE64.encode(inputsWithZeroes[i]),
- _RESULTS_WITH_ZEROS[i]);
+ expect(BASE64.encode(inputsWithZeroes[i]), _RESULTS_WITH_ZEROS[i]);
}
- expect(BASE64.encode(_LONG_LINE.codeUnits, addLineSeparator : true),
- _LONG_LINE_RESULT);
- expect(BASE64.encode(_LONG_LINE.codeUnits),
- _LONG_LINE_RESULT_NO_BREAK);
+ expect(BASE64.encode(_LONG_LINE.codeUnits, addLineSeparator: true),
+ _LONG_LINE_RESULT);
+ expect(BASE64.encode(_LONG_LINE.codeUnits), _LONG_LINE_RESULT_NO_BREAK);
}
void _testDecoder() {
for (var i = 0; i < _RESULTS.length; i++) {
- expect(
- new String.fromCharCodes(BASE64.decode(_RESULTS[i])),
- _INPUTS[i]);
+ expect(new String.fromCharCodes(BASE64.decode(_RESULTS[i])), _INPUTS[i]);
}
for (var i = 0; i < _RESULTS_WITH_ZEROS.length; i++) {
- expect(BASE64.decode(_RESULTS_WITH_ZEROS[i]),
- inputsWithZeroes[i]);
+ expect(BASE64.decode(_RESULTS_WITH_ZEROS[i]), inputsWithZeroes[i]);
}
var longLineDecoded = BASE64.decode(_LONG_LINE_RESULT);
@@ -156,56 +165,55 @@
Future _testStreamingEncoder() async {
expect(
await new Stream.fromIterable(_STREAMING_ENCODER_INPUT)
- .transform(BASE64.encoder)
- .join(),
+ .transform(BASE64.encoder)
+ .join(),
_STREAMING_ENCODED);
}
Future _testStreamingDecoder() async {
expect(
await new Stream.fromIterable(_STREAMING_DECODER_INPUT)
- .transform(BASE64.decoder)
- .expand((l) => l)
- .toList(),
+ .transform(BASE64.decoder)
+ .expand((l) => l)
+ .toList(),
_STREAMING_DECODED);
expect(
await new Stream.fromIterable(_STREAMING_DECODER_INPUT_FOR_ZEROES)
- .transform(BASE64.decoder)
- .expand((l) => l)
- .toList(),
+ .transform(BASE64.decoder)
+ .expand((l) => l)
+ .toList(),
_STREAMING_DECODED_ZEROES);
}
Future _testStreamingDecoderForMalformedInput() async {
- expect(new Stream.fromIterable(['ABz'])
- .transform(BASE64.decoder)
- .toList(),
- throwsFormatException);
+ expect(new Stream.fromIterable(['ABz']).transform(BASE64.decoder).toList(),
+ throwsFormatException);
- expect(new Stream.fromIterable(['AB', 'Lx', 'z', 'xx'])
- .transform(BASE64.decoder)
- .toList(),
- throwsFormatException);
+ expect(
+ new Stream.fromIterable(['AB', 'Lx', 'z', 'xx'])
+ .transform(BASE64.decoder)
+ .toList(),
+ throwsFormatException);
}
Future _testStreamingEncoderForDecompositions() async {
- for(var decomposition in _DECOMPOSITIONS_FOR_ENCODING) {
+ for (var decomposition in _DECOMPOSITIONS_FOR_ENCODING) {
expect(
await new Stream.fromIterable(decomposition)
- .transform(BASE64.encoder)
- .join(),
+ .transform(BASE64.encoder)
+ .join(),
_DECOMPOSITION_ENCODED);
}
}
Future _testStreamingDecoderForDecompositions() async {
- for(var decomposition in _DECOMPOSITIONS_FOR_DECODING) {
+ for (var decomposition in _DECOMPOSITIONS_FOR_DECODING) {
expect(
await new Stream.fromIterable(decomposition)
- .transform(BASE64.decoder)
- .expand((x) => x)
- .toList(),
+ .transform(BASE64.decoder)
+ .expand((x) => x)
+ .toList(),
_DECOMPOSITION_DECODED);
}
}
@@ -224,7 +232,8 @@
String encUrlSafe = '-_A=';
List<List<int>> dec = [BASE64.decode('+/A=')];
var streamedResult = await new Stream.fromIterable(dec)
- .transform(new Base64Encoder(urlSafe: true)).join();
+ .transform(new Base64Encoder(urlSafe: true))
+ .join();
expect(streamedResult, encUrlSafe);
}
@@ -233,7 +242,9 @@
List<String> withEncodedPadding = ['AA%', '3D', '%', '3', 'DEFGZ'];
List<int> decoded = BASE64.decode('AA==EFGZ');
var streamedResult = await new Stream.fromIterable(withEncodedPadding)
- .transform(BASE64.decoder).expand((x) => x).toList();
+ .transform(BASE64.decoder)
+ .expand((x) => x)
+ .toList();
expect(streamedResult, decoded);
}
@@ -275,23 +286,23 @@
}
void _testPerformance() {
- var l = new List<int>(1024);
- var iters = 5000;
- _fillRandom(l);
- String enc;
- var w = new Stopwatch()..start();
- for( int i = 0; i < iters; ++i ) {
- enc = BASE64.encode(l);
- }
- int ms = w.elapsedMilliseconds;
- int perSec = (iters * l.length) * 1000 ~/ ms;
- // print("Encode 1024 bytes for $iters times: $ms msec. $perSec b/s");
- w..reset();
- for( int i = 0; i < iters; ++i ) {
- BASE64.decode(enc);
- }
- ms = w.elapsedMilliseconds;
- perSec = (iters * l.length) * 1000 ~/ ms;
- // ('''Decode into ${l.length} bytes for $iters
- // times: $ms msec. $perSec b/s''');
+ var l = new List<int>(1024);
+ var iters = 5000;
+ _fillRandom(l);
+ String enc;
+ var w = new Stopwatch()..start();
+ for (int i = 0; i < iters; ++i) {
+ enc = BASE64.encode(l);
+ }
+ int ms = w.elapsedMilliseconds;
+ int perSec = (iters * l.length) * 1000 ~/ ms;
+ // print("Encode 1024 bytes for $iters times: $ms msec. $perSec b/s");
+ w..reset();
+ for (int i = 0; i < iters; ++i) {
+ BASE64.decode(enc);
+ }
+ ms = w.elapsedMilliseconds;
+ perSec = (iters * l.length) * 1000 ~/ ms;
+ // ('''Decode into ${l.length} bytes for $iters
+ // times: $ms msec. $perSec b/s''');
}
diff --git a/test/hmac_md5_test.dart b/test/hmac_md5_test.dart
index f2a10d1..eed6351 100644
--- a/test/hmac_md5_test.dart
+++ b/test/hmac_md5_test.dart
@@ -28,90 +28,125 @@
}
// Data from http://tools.ietf.org/html/rfc2202.
-const _HMAC_MD5_INPUTS =
- const [
- const [ 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 ],
- const [ 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 0x79, 0x61,
- 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20,
- 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x3f ],
- const [ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd ],
- const [ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
- 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
- 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
- 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
- 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd ],
- const [ 0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20,
- 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e ],
- const [ 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67,
- 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x54, 0x68,
- 0x61, 0x6e, 0x20, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53,
- 0x69, 0x7a, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
- 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x46,
- 0x69, 0x72, 0x73, 0x74 ],
- const [ 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67,
- 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x54, 0x68,
- 0x61, 0x6e, 0x20, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53,
- 0x69, 0x7a, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x61, 0x6e,
- 0x64, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x54,
- 0x68, 0x61, 0x6e, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x42, 0x6c,
- 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x44,
- 0x61, 0x74, 0x61 ] ];
+const _HMAC_MD5_INPUTS = const [
+ const [0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65],
+ const [
+ 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 0x79, 0x61, 0x20, 0x77,
+ 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
+ 0x69, 0x6e, 0x67, 0x3f
+ ],
+ const [
+ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+ 0xdd, 0xdd
+ ],
+ const [
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcd, 0xcd
+ ],
+ const [
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x54, 0x72,
+ 0x75, 0x6e, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e
+ ],
+ const [
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x4c,
+ 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x4b, 0x65,
+ 0x79, 0x20, 0x2d, 0x20, 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79,
+ 0x20, 0x46, 0x69, 0x72, 0x73, 0x74
+ ],
+ const [
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x4c,
+ 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x4b, 0x65,
+ 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x72,
+ 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x44, 0x61, 0x74,
+ 0x61
+ ]
+];
-const _HMAC_MD5_KEYS =
- const [ const [0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b],
- const [ 0x4a, 0x65, 0x66, 0x65 ],
- const [0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa],
- const [ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
- 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
- 0x15, 0x16, 0x17, 0x18, 0x19 ],
- const [ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c ],
- const [ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa ],
- const [ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa ] ];
+const _HMAC_MD5_KEYS = const [
+ const [
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+ 0x0b, 0x0b, 0x0b, 0x0b
+ ],
+ const [0x4a, 0x65, 0x66, 0x65],
+ const [
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa
+ ],
+ const [
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
+ 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+ 0x19
+ ],
+ const [
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x0c, 0x0c, 0x0c
+ ],
+ const [
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
+ ],
+ const [
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
+ ]
+];
-const _HMAC_MD5_STRING_MACS =
- const [ '9294727a3638bb1c13f48ef8158bfc9d',
- '750c783e6ab0b503eaa86e310a5db738',
- '56be34521d144c88dbb8c733f0e8b3f6',
- '697eaf0aca3a3aea3a75164746ffaa79',
- '56461ef2342edc00f9bab995690efd4c',
- '6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd',
- '6f630fad67cda0ee1fb1f562db3aa53e' ];
+const _HMAC_MD5_STRING_MACS = const [
+ '9294727a3638bb1c13f48ef8158bfc9d',
+ '750c783e6ab0b503eaa86e310a5db738',
+ '56be34521d144c88dbb8c733f0e8b3f6',
+ '697eaf0aca3a3aea3a75164746ffaa79',
+ '56461ef2342edc00f9bab995690efd4c',
+ '6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd',
+ '6f630fad67cda0ee1fb1f562db3aa53e'
+];
-const _HMAC_MD5_MACS =
- const [ const [0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4,
- 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d],
- const [0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 0xea, 0xa8,
- 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38],
- const [0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 0xdb, 0xb8,
- 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6],
- const [0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 0x3a, 0x75,
- 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79],
- const [0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 0xf9, 0xba,
- 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c],
- const [0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 0x0b, 0x62,
- 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd],
- const [0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 0x1f, 0xb1,
- 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e]];
+const _HMAC_MD5_MACS = const [
+ const [
+ 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4, 0x8e, 0xf8,
+ 0x15, 0x8b, 0xfc, 0x9d
+ ],
+ const [
+ 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 0xea, 0xa8, 0x6e, 0x31,
+ 0x0a, 0x5d, 0xb7, 0x38
+ ],
+ const [
+ 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 0xdb, 0xb8, 0xc7, 0x33,
+ 0xf0, 0xe8, 0xb3, 0xf6
+ ],
+ const [
+ 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 0x3a, 0x75, 0x16, 0x47,
+ 0x46, 0xff, 0xaa, 0x79
+ ],
+ const [
+ 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 0xf9, 0xba, 0xb9, 0x95,
+ 0x69, 0x0e, 0xfd, 0x4c
+ ],
+ const [
+ 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 0x0b, 0x62, 0xe6, 0xce,
+ 0x61, 0xb9, 0xd0, 0xcd
+ ],
+ const [
+ 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 0x1f, 0xb1, 0xf5, 0x62,
+ 0xdb, 0x3a, 0xa5, 0x3e
+ ]
+];
diff --git a/test/hmac_sha1_test.dart b/test/hmac_sha1_test.dart
index 4a378c7..97c0268 100644
--- a/test/hmac_sha1_test.dart
+++ b/test/hmac_sha1_test.dart
@@ -10,7 +10,6 @@
part 'hmac_sha1_test_vectors.dart';
-
void main() {
test('standard vectors', () {
_testStandardVectors(hmac_sha1_inputs, hmac_sha1_keys, hmac_sha1_macs);
diff --git a/test/hmac_sha256_test.dart b/test/hmac_sha256_test.dart
index f2a7768..492dced 100644
--- a/test/hmac_sha256_test.dart
+++ b/test/hmac_sha256_test.dart
@@ -12,8 +12,8 @@
void main() {
test('standard vectors', () {
- _testStandardVectors(hmac_sha256_inputs, hmac_sha256_keys,
- hmac_sha256_macs);
+ _testStandardVectors(
+ hmac_sha256_inputs, hmac_sha256_keys, hmac_sha256_macs);
});
}
diff --git a/test/sha1_test.dart b/test/sha1_test.dart
index 95d973b..a531b99 100644
--- a/test/sha1_test.dart
+++ b/test/sha1_test.dart
@@ -11,7 +11,6 @@
part 'sha1_long_test_vectors.dart';
part 'sha1_short_test_vectors.dart';
-
void main() {
test('expected values', _testExpectedValues);
test('invalid use', _testInvalidUse);
diff --git a/test/sha256_test.dart b/test/sha256_test.dart
index ae16054..a9c9360 100644
--- a/test/sha256_test.dart
+++ b/test/sha256_test.dart
@@ -11,7 +11,6 @@
part 'sha256_long_test_vectors.dart';
part 'sha256_short_test_vectors.dart';
-
void main() {
test('expected values', _testExpectedValues);
test('invalid use', _testInvalidUse);
@@ -24,262 +23,263 @@
void _testExpectedValues() {
var expectedValues = const [
- 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
- '6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d',
- 'b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2',
- 'ae4b3280e56e2faf83f414a6e3dabe9d5fbe18976544c05fed121accb85b53fc',
- '054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8',
- '08bb5e5d6eaac1049ede0893d30ed022b1a4d9b5b48db414871f51c9cb35283d',
- '17e88db187afd62c16e5debf3e6527cd006bc012bc90b51a810cd80c2d511f43',
- '57355ac3303c148f11aef7cb179456b9232cde33a818dfda2c2fcb9325749a6b',
- '8a851ff82ee7048ad09ec3847f1ddf44944104d2cbd17ef4e3db22c6785a0d45',
- 'f8348e0b1df00833cbbbd08f07abdecc10c0efb78829d7828c62a7f36d0cc549',
- '1f825aa2f0020ef7cf91dfa30da4668d791c5d4824fc8e41354b89ec05795ab3',
- '78a6273103d17c39a0b6126e226cec70e33337f4bc6a38067401b54a33e78ead',
- 'fff3a9bcdd37363d703c1c4f9512533686157868f0d4f16a0f02d0f1da24f9a2',
- '86eba947d50c2c01570fe1bb5ca552958dabbdbb59b0657f0f26e21ff011e5c7',
- 'ab107f1bd632d3c3f5c724a99d024f7faa033f33c07696384b604bfe78ac352d',
- '7071fc3188fde7e7e500d4768f1784bede1a22e991648dcab9dc3219acff1d4c',
- 'be45cb2605bf36bebde684841a28f0fd43c69850a3dce5fedba69928ee3a8991',
- '3e5718fea51a8f3f5baca61c77afab473c1810f8b9db330273b4011ce92c787e',
- '7a096cc12702bcfa647ee070d4f3ba4c2d1d715b484b55b825d0edba6545803b',
- '5f9a753613d87b8a17302373c4aee56faa310d3b24b6ae1862d673aa22e1790f',
- 'e7aebf577f60412f0312d442c70a1fa6148c090bf5bab404caec29482ae779e8',
- '75aee9dcc9fbe7ddc9394f5bc5d38d9f5ad361f0520f7ceab59616e38f5950b5',
- '22cb4df00cddd6067ad5cfa2bba9857f21a06843e1a6e39ad1a68cb9a45ab8b7',
- 'f6a954a68555187d88cd9a026940d15ab2a7e24c7517d21ceeb028e93c96f318',
- '1d64add2a6388367c9bc2d1f1b384b069a6ef382cdaaa89771dd103e28613a25',
- 'b729ce724d9a48d3884dbfcbee1d3793d922b29fa9d639e7290af4978263772b',
- 'b858da80d8a57dc546905fd147612ebddd3c9188620405d058f9ee5ab1e6bc52',
- 'd78750726155a89c9131d0ecf2704b973b8710865bf9e831845de4f2dcbc19da',
- 'dc27f8e8ee2d08a2bccbb2dbd6c8e07ffba194101fc3458c34ded55f72c0971a',
- 'd09bea65dff48928a14b79741de3274b646f55ac898b71a66fa3eae2d9facd77',
- 'f2192584b67da35dfc26f743e5f53bb0376046f899dc6dabd5e7b541ae86c32f',
- '4f23c2ca8c5c962e50cd31e221bfb6d0adca19111dca8e0c62598ff146dd19c4',
- '630dcd2966c4336691125448bbb25b4ff412a49c732db2c8abc1b8581bd710dd',
- '5d8fcfefa9aeeb711fb8ed1e4b7d5c8a9bafa46e8e76e68aa18adce5a10df6ab',
- '14cdbf171499f86bd18b262243d669067efbdbb5431a48289cf02f2b5448b3d4',
- 'f12dd12340cb84e4d0d9958d62be7c59bb8f7243a7420fd043177ac542a26aaa',
- '5d7e2d9b1dcbc85e7c890036a2cf2f9fe7b66554f2df08cec6aa9c0a25c99c21',
- 'f4d285f47a1e4959a445ea6528e5df3efab041fa15aad94db1e2600b3f395518',
- 'a2fd0e15d72c9d18f383e40016f9ddc706673c54252084285aaa47a812552577',
- '4aba23aea5e2a91b7807cf3026cdd10a1c38533ce55332683d4ccb88456e0703',
- '5faa4eec3611556812c2d74b437c8c49add3f910f10063d801441f7d75cd5e3b',
- '753629a6117f5a25d338dff10f4dd3d07e63eecc2eaf8eabe773f6399706fe67',
- '40a1ed73b46030c8d7e88682078c5ab1ae5a2e524e066e8c8743c484de0e21e5',
- 'c033843682818c475e187d260d5e2edf0469862dfa3bb0c116f6816a29edbf60',
- '17619ec4250ef65f083e2314ef30af796b6f1198d0fddfbb0f272930bf9bb991',
- 'a8e960c769a9508d098451e3d74dd5a2ac6c861eb0341ae94e9fc273597278c9',
- '8ebfeb2e3a159e9f39ad7cc040e6678dade70d4f59a67d529fa76af301ab2946',
- 'ef8a7781a95c32fa02ebf511eda3dc6e273be59cb0f9e20a4f84d54f41427791',
- '4dbdc2b2b62cb00749785bc84202236dbc3777d74660611b8e58812f0cfde6c3',
- '7509fe148e2c426ed16c990f22fe8116905c82c561756e723f63223ace0e147e',
- 'a622e13829e488422ee72a5fc92cb11d25c3d0f185a1384b8138df5074c983bf',
- '3309847cee454b4f99dcfe8fdc5511a7ba168ce0b6e5684ef73f9030d009b8b5',
- 'c4c6540a15fc140a784056fe6d9e13566fb614ecb2d9ac0331e264c386442acd',
- '90962cc12ae9cdae32d7c33c4b93194b11fac835942ee41b98770c6141c66795',
- '675f28acc0b90a72d1c3a570fe83ac565555db358cf01826dc8eefb2bf7ca0f3',
- '463eb28e72f82e0a96c0a4cc53690c571281131f672aa229e0d45ae59b598b59',
- 'da2ae4d6b36748f2a318f23e7ab1dfdf45acdc9d049bd80e59de82a60895f562',
- '2fe741af801cc238602ac0ec6a7b0c3a8a87c7fc7d7f02a3fe03d1c12eac4d8f',
- 'e03b18640c635b338a92b82cce4ff072f9f1aba9ac5261ee1340f592f35c0499',
- 'bd2de8f5dd15c73f68dfd26a614080c2e323b2b51b1b5ed9d7933e535d223bda',
- '0ddde28e40838ef6f9853e887f597d6adb5f40eb35d5763c52e1e64d8ba3bfff',
- '4b5c2783c91ceccb7c839213bcbb6a902d7fe8c2ec866877a51f433ea17f3e85',
- 'c89da82cbcd76ddf220e4e9091019b9866ffda72bee30de1effe6c99701a2221',
- '29af2686fd53374a36b0846694cc342177e428d1647515f078784d69cdb9e488',
- 'fdeab9acf3710362bd2658cdc9a29e8f9c757fcf9811603a8c447cd1d9151108',
- '4bfd2c8b6f1eec7a2afeb48b934ee4b2694182027e6d0fc075074f2fabb31781',
- 'b6dfd259f6e0d07deb658a88148f8253f9bbbb74ddd6db3edbe159a56bc35073',
- '8fa5913b62847d42bb4b464e00a72c612d2ab0df2af0b9a96af8d323fa509077',
- '7ded979c0153ebb9ef28a15a314d0b27b41c4f8eed700b54974b48eb3ecaf91c',
- '1cf3aa651dcf35dbfe296e770ad7ebc4e00bcccd0224db296183dc952d0008c9',
- '5767d69a906d4860db9079eb7e90ab4a543e5cb032fce846554aef6ceb600e1d',
- '8189e3d54767d51e8d1942659a9e2905f9ec3ae72860c16a66e75b8cc9bd2087',
- '107de2bc788e11029f7851f8e1b0b5afb4e34379c709fc840689ebd3d1f51b5b',
- '169f6f093a9be82febe1a6a4471425697ec25d5040b472c5b1822aeea2625988',
- '2087ebd358ae3ea2a092fc19c2dfee57c5f0860296bc7b057c14e1227c5cb9d1',
- '182ab56f7739e43cee0b9ba1e92c4b2a81b088705516a5243910159744f21be9',
- '081f6c68899a48a1be455a55416104921d2fe4bdae696f4b72f9d9626a47915e',
- '5ce02376cc256861b78f87e34783814ba1aec6d09ab500d579ed8ee95c8afcc8',
- 'b93e407404e3e95f20fd647365e0e7f46afabe9af1ff083af996135e00d54009',
- 'e81fa832b37be8ed8f79da29987aa4d61310dcb14b2859dedf8fb1daa2541fd3',
- 'c56705fea5b110b8dc63688533ced21167e628017387c885423b835a55edd5ef',
- 'c2226285d08a245a17058ed2d24ad095b714f608ae364fddf119e0a7df890540',
- 'f9c270da8793221a6809ac685fdd4f5387e0fe1ee6aaf01c74f1e0a719621614',
- 'e69befd6ef7f685c36e343ac1702d87ad6a0e4ac8c0d5c521d04aad4ef0b7458',
- '4e3033562ad74a7d43eb5ff5fc2382622c6307cb10e245ad62da77c4c63cb178',
- '2ea17629472564a59e5eb845a2cdd04f442df2ff26bcc866e400f77158d612a1',
- 'b90223df74dd49a8a1461f340f2d7a90f96903ccbb5bc3c74ea3658fc8948b20',
- 'e0209f42b927ec9c0f6d6a76007ed540e9bdd6e427b3368a1ea6c5e7565972dd',
- '10d9bd424114319c0999adf6288f74060cd8918ef1228827a6269b2bf0f0880c',
- '7d1978a65ac94dbbcdc62e3d81850299fe157dd9b7bd9e01b170156210d2815a',
- 'e052dff9e1c94aaa49556f86fad55029a4875839fda57f5005f4c4403876b256',
- '58d29459b2130a2e151252d408b95e6dac424c564062eb911cc76440cb926ca0',
- '4e4530c392316f598e1bd07f32166380a8f712a33a48e9eb4247131ec5dc05d3',
- 'a09c9d3e42342c7dea44edb4aeb48cf6727cacd8032a12cf77a25829fc249d32',
- 'eb978d0f1ac03ce5c3510b5f4a16073a7a2bdc15c4ab7777dcf01030cc316667',
- '7d1905a3ace827ea1ac51c4fa08c281ed3be87e7f4e928d696bfde35c8f2dc0f',
- '08359b108fa567f5dcf319fa3434da6abbc1d595f426372666447f09cc5a87dc',
- 'a7b3830ffab0f2bbabbef6df0b169a7917008bf238880bbf8c20b8e000077312',
- 'b4f5d9b1555994c5ebaebd82918d560a3bf82962a171a1614e7551939e943366',
- '014ecaea1b378900f1212898c6ddb01565d81af1d0ef78df5e28d46e9caf7cfc',
- 'bce0aff19cf5aa6a7469a30d61d04e4376e4bbf6381052ee9e7f33925c954d52',
- '4565d7b898ccea3139ad260f9273115f806b30079d7683218c4e3ecd43af3b33',
- 'ddadeb660fe8902c9fb2db9b6cf237c9ce5b31753398085c4367eb5910b9cc13',
- 'c15a8928131f6687dd10f3c115ddf8d7c8f2df7e18d12c08c4fd16f666ce60ba',
- 'ae8e3d799b1353a39815f90eceebefa265cc448fe39faf2008cb20784cb2df9f',
- '98545371a3d9981abe5ab4a32a1d7b2fadd9801d89da52a94a4f78a42740d21c',
- '6323dce2f8b3a04dcea8d205602348c40403cb200c677eb1a1c0fe37edb6eb2f',
- '8150f7c5da910d709ff02ddf85dd293c6a2672633de8cda30f2e0aa58b14b0c4',
- '44d21db70716bd7644cb0d819fa6791805ebc526ea32996a60e41dc753fcfafc',
- 'b9b7c375cca45db19466ebd0fe7c9e147948cc42c1c90f0579728cfb2651956d',
- 'a47a551b01e55aaaa015531a4fa26a666f1ebd4ba4573898de712b8b5e0ca7e9',
- '60780e9451bdc43cf4530ffc95cbb0c4eb24dae2c39f55f334d679e076c08065',
- '09373f127d34e61dbbaa8bc4499c87074f2ddb10e1b465f506d7d70a15011979',
- '13aaa9b5fb739cdb0e2af99d9ac0a409390adc4d1cb9b41f1ef94f8552060e92',
- '5b0a32f1219524f5d72b00ba1a1b1c09a05ff10c83bb7a86042e42988f2afc06',
- '32796a0a246ea67eb785eda2e045192b9d6e40b9fe2047b21ef0cee929039651',
- 'da9ab8930992a9f65eccec4c310882cab428a708e6c899181046a8c73af00855',
- '9c94557382c966753c8cab0957eaedbe1d737b5fcb35c56c220ddd36f8a2d351',
- 'd32ab00929cb935b79d44e74c5a745db460ff794dea3b79be40c1cc5cf5388ef',
- 'da18797ed7c3a777f0847f429724a2d8cd5138e6ed2895c3fa1a6d39d18f7ec6',
- 'f52b23db1fbb6ded89ef42a23ce0c8922c45f25c50b568a93bf1c075420bbb7c',
- '335a461692b30bba1d647cc71604e88e676c90e4c22455d0b8c83f4bd7c8ac9b',
- '3d08c4d7bdda7ec922b0741df357de46e7bd102f9ab7a5c67624ab58da6d9d75',
- 'cc63be92e3a900cd067da89473b61b40579b54ef54f8305c2ffcc893743792e9',
- '865447fc4fae01471f2fc973bfb448de00217521ef02e3214d5177ea89c3ef31',
- '3daa582f9563601e290f3cd6d304bff7e25a9ee42a34ffbac5cf2bf40134e0d4',
- '5dda7cb7c2282a55676f8ad5c448092f4a9ebd65338b07ed224fcd7b6c73f5ef',
- '92ca0fa6651ee2f97b884b7246a562fa71250fedefe5ebf270d31c546bfea976',
- '471fb943aa23c511f6f72f8d1652d9c880cfa392ad80503120547703e56a2be5',
- '5099c6a56203f9687f7d33f4bfdf576d31dc91f6b695ecea38b2770c87631135',
- '8d39b60b9c767c58975b270c1d6b13c9b4507e5aee7ad496a3528e4c7f880721',
- '3acc128faf01077789746edcfd1051d90bc1591342402d9b3cdd06d7315702a4',
- 'ce1662d4c8b1f54d322593ee8ab385763e51dea92c9b4d56bc0e2f85111f0438',
- 'aacb65e7c9055b105cf02c47024cdf79a58229132e66ca0ddf0d74ef6a3fd5c8',
- '478ab134487ede9921619f1eebac30646919d6ab7146c6928c44732ccc897929',
- '6a053848cfe83c0fc8c8a81dd84f6b946c63193cd25cdd5dad45f08be8019e89',
- 'ffc555203945df4e81d75f316e4c25fdc0bc4e96412f4f469349eb716f001a7d',
- '81d45be06329d63a2d8a8599d445676933bea1678fc586795b4ecbb838d4d158',
- 'd08809a9e5b00fc9266b3813679f40acd6c2596d3de4f28f4d20d98c440aa483',
- 'e1796a03c9ed287ef757eee771d116e4dfd8c416f6b5a9e592c1f0e81c0deaa1',
- 'b4a4e5d6560fa3e9629064546ac97f14cd4d023c097ccbf06838ccef4fdcd8f1',
- '9b293d748d30240d3ddc496b722fc92d57f665271b060e82410d8de18970dc1d',
- 'ef145232e5b19630e0b389891f688161d047c269c7cf22dbff114514572f5813',
- '985f19128703afeee38d22797c0cae5f450cc290a6a5b9253dd908420e9032ff',
- '66f952a83339274eb287b64ef7b028d88915ac6df06a183f7c0436fa2b25107b',
- '46af22be1b576de71971c25e88c18a3295f0ac762a412a11105cef20fa2f5840',
- 'e81901f41344683448a03db259d1071c9b2f91001781ae34a0b39a0988381fc2',
- 'a5c602c1401ad5029efffaf188f27f9b96b441631a77448551ee337b9dc0e7e8',
- '8317b3fb2181158cfdccfaeb8f8a1736961476717801ae9de7c9a59dc395ef1c',
- '7834d0515667e46923f3a6c054268e06bc2301491b8eda225d1f4317918206fe',
- 'f22b2e614e92d6453612b707385038300293d2cc292b148bc5335754b5ea30fd',
- '1d683f2a7c58ac74fab45761235c3e9682f1329b6d96e260a7c67d2d58b233b6',
- 'f584eff8c5152fb6b2699806508cdb7148138ecb6dd564b02bfc021fd0ec586a',
- 'afa8661046fa83e7c261167f35f6379c00d3a3a9ca46c48fb0bad2c49dda7933',
- '9fedc8a3aa430d6d911b714a151e5f17a4acf52f4239617eec7c9b9d7775612b',
- '8de202b9c283c236da5d2cd5e556de9c1822c19dab36e09f690cf70d3c963e97',
- '31b96fecbf0c2839a29c4acd7098c2701cab152d424e266cf07a16875604365e',
- '3f1a0f65ee12f7efe64477247359af8ef02cf27d104481b4f5922f71432b8178',
- 'f4c34f764e0a9e37c080d28f01c4bbe24dad0cc65a88b1fa6b28802a4b799865',
- '85ac7f3761f77772e28c3a9b658aa0e04d9dd3a6bc365c30324948b0ede18b88',
- '448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c719',
- '97f5eac07cdc76f1f0faa10b0081cfaff3fab72095680a4516c723fde98916de',
- '6b572b21caa06fc6a1bdab77da3bc07377919088ee96603628354c0b3800661d',
- '27fcdcc7e2ee00f1dcb07aac445a436ab5dee2c14b04621acd387ec50e8efa50',
- 'e839cfc21e8e77997e643efa04f7150e6cc68864cbea745aefaf47a9363df709',
- 'ba6bad069acc2d0bedf36e2b6cc005d31eb76b0da9de46e09209ff004ae25200',
- '7d3e6ad6d9017d79d15eb518ebbac828d64449c39f0942ee6e7798479e7615a4',
- '697c581d18edb2692249fc07aae307d3cc263033cb32f16ef3c0b57429695a43',
- '7f7193dd3c6c273cdd66488f8aa5dbe3542a22bf0fcda7d6fb93235178c4589e',
- '6e944d621f9e13bc22d4ae68aaa8cb15605ed9680acd7f16e5b0f94149b634cd',
- '491602f722b2a6ef3976a696e286d99e19259d3a4ffb957d18a7128a6fb37a8c',
- 'f2b51a1a5c12e9b07f152812895f2ab51a9727021e389555a58507ea7ff16e51',
- 'dfabc97f215403a3cc2bcf132a35fc832e87b7de0f2e7560f2ad9d8f06e38b63',
- '73b1f1000c7677ebdcef2a2a25e27b06d9c163209add77a16f0e2b70e56d5c52',
- '21803c877b81b590015dab430568cf4d7c0247eea6147a18ac4fc3492996cb79',
- 'b7e3c3ea326a5fd558d70efe2bc6469732a2894dfdeca106093611a4a8d4b025',
- '5ae91d2295e6706191b760661d48e365441de12340006130c42c7b38faa48393',
- 'efe3f35371f700217362155403d2b3f912b751d69d6bf80a59a86d4911718651',
- 'af37eee16b62d9665944da23a7712f454640ceeb958f20fd33fdd1ee515dabd9',
- '2537ac29dc1561ee49a0bc1aadb863c435a669d18d5e7e890ed3e11a014ce411',
- 'e360918d85b02d655ea572d081c83b019691e8665908d6a6fbf9d5673a13d892',
- '37e7218560603527cc8db9a5a1da89fa27df1da7dd9c54c0c7a2405d8a5208a1',
- '621009f0bf8ca1d70eedfa30eb6e2979794469b4e99ee385fd9501712b45cb6a',
- 'b1459345163aed1c356302a5230f8912564b04f340610b18ef1aa2c47b418981',
- '82f63a1d007fd9796756abbbf51c246884dde3d79cf9cacacc901462ae75e3ff',
- '78d8ce1ccd46cf92fb4e255f183bc9f355e5e494b3180c0da9154e17a1d61f74',
- '8882ee8501069ba507a3a5f309e8e3f9dcfb13987ec293c60feba4f1fabc5ba7',
- 'c62efddbd622094486c1ededca74ad47c8ce4c7661d9f58c2723403bb42b45b6',
- '93301c8548f3afc25d7e157eaf7c8dbf5edb029bd829136600593067cd4b0c5c',
- '19961686c66d9e10e2ce38a14652121e533d5f04bbeea193210cb0a7b88396f3',
- 'b454dbe07fb100ea743cd193ea1953a9e6d62a07fde0f3325c362e4f3d7b694f',
- 'd280f473c251cb75c91880ea0eca2a2f1cda3152bef54a38c4a3aedad615c819',
- '8b4a544837a1a0280fa8a7c82865c27a1064b3cc6281fda0753566b9bb104a87',
- '7daafa7aed7d63d06a98b7b6f785eab5427d084f30d5c9ee6dd0d2f3ada329e6',
- 'dc0b1c61c4001cfe707c52875e026e4eefbafc09ab767f8f3ac55e9c78406e4a',
- 'cd855c9ecb3cd846efd1111aeb02c8563f7aef9988ac4c597fab35b4235604c5',
- '28ece33729cdeff79a863cdfa359b51cebe29f8a947954306338c11a89866e62',
- '59a6aed6a44d5a52565289ccc377966b6a1ab41ac339e72475f49bb136befa91',
- '3458d07857503fcadabbc5dfc7b905bc373b77cb058d87feb35443a0aa7ce204',
- '76ccea5a51d93c238bd3a745ff8acd3c848a15c85d12e3d5c9743ecc094773a4',
- '1901da1c9f699b48f6b2636e65cbf73abf99d0441ef67f5c540a42f7051dec6f',
- '747db6ff08731ff7908224c50f71f51fef1283e65341e2dbcdc664f0f41bf8c5',
- '07ff1080d3d4aaed9cd77850c0207e75e7f9697bed15a8cda7057f6a24c010d2',
- '8f0512e800a511953a28bf11bb5e9c305c4026867bc9a31f76cb96fc5bd87027',
- 'fed886fe3977e2d21a6b0db5977b8deee5b456d323f8c208d24b8adff08f11de',
- 'ea98780a92c30a1038d20bd3d0c87106353306bf9751df5c3c88f9d4b31a0088',
- '121aea684d4d62866514564293f1928c6d4d9e9aa62f2bd2df94f392bf75a838',
- '6f03900ba86980a79f6f8a5d633bd9e8dc9ca30690c86b31ce892d83115a2326',
- '94e9c48301753f123bad54d917d13da64c18b1789da85dc8ed3d8427c56978f7',
- 'f934aea49262b4fd587eb74ebe2c69b857aca07876acadc23f89d6c0bbbccdd5',
- '02d53b4529c38363c1ddc9053e3e58bcb6e3001f01c26aa7c4a9e17884cc71e5',
- '018513c8e6cf9ba66351428984e5d44824fee364c26bed1533ca3ece8f3574c3',
- '21209622b064b7f81c5a3524abe7c9708d4585ad4ea21b072ce76993afdd3bf9',
- 'aa361163f6b53f6e6de29daae28a336a8f7c05bf5e8a6eeaa46a51bcd66ac7f7',
- 'dedff2184de121c60ec94c4cb94a0450cac47257c56afa8f2e11c5f64d3dd661',
- '1d64137df721078b35bdc1a3595a73cebcbe49865fb308c78791540d1d349cd7',
- '9d42d74bac443eafbd9878145b745387eb1397174332564bc8fa6db414ab381f',
- '11a6171d8d193f7cf83315199bb3a7e07e8e00c33e5b620855e0b879cfa4c68c',
- 'a9cda05987272ee71100f81f59ad3959b0978a576235c6836eccb65a9577126f',
- 'fd53126210abfcb0d6a56c90853b716d02acd8dfa319a60cf51b1a2b4ef6d7f3',
- '17c1453315e3dc1890e8a1c2848d781d207ad73335450e9a236e44c8a2ad3b06',
- 'bd2e01835226c56a32ff58df38e6e179830335d4033a40d9c60d269b145c9f6a',
- '3b7a22d9ef089d4aa382eff3deeba73d41e4af58b0967e9c8603d860431c3ec7',
- '7a7f89f00b0e9b1b9e99490a7b9d9ce7740a403047efbb94ad35fd13a35b4ac6',
- '7e47dde9a2e52a0067f80a149abf606ea4ec25690637632d34561432c0738877',
- '5d5771856bd52662bd20e37424abf39e1f3b50264ff09ffd62b3dcc8f05d01f0',
- '6c851b50e115cecfe3b4b910e6a7406af282f9dbcd4ce9cca0db8d488a125f01',
- '5f6e61fa3cdc91285b09f1934b31e426108dfad7ff04c367651f4a59f5c78722',
- 'ada6b2683a885f5fef657b8c9b44a44f1e739af8b35c64a51c4072d2a86602c4',
- '3a6a36895262b4af79fdc476e90a9ebc06320e64dd8417b8ebba5f6fec87eaac',
- 'c2c67787b86319330e4d0657bc2c0ad67482dff0647b925cc9b8c20a535edc37',
- '6f473cf63f854fb1fa5ad59c463f640dda1a2a1bacac0e15ffa400e663a7f6e7',
- '619a4c7ba6e34fd2246ef3ced6f1e13a5091aa8ea990b59a5e86479c9cb533bf',
- '96e054622771ebf6d4ec206a04c68e0d8bacede86a71a1a546f5e2f8b59178fa',
- 'ca9dedc42398e60506e48a2ac95c19882db3c1adeb8da5877e6ad9db4b4c4cd0',
- 'f0f1ed236d1a3db9501ff5f2c5cd43d48f2fc30d59cce3155e7f0695c0d529f9',
- '93b2ef94e81337432b267cd50347945f32d9b689b198ccd495215da088ac89b1',
- '69e640e22c3ddd1e1d8391aa4db54aa6ac8aa60ff687a5986f1bea86c49651ab',
- '6f58ce599facae90d94a287e9bf8cb06eaf17da2c293700eeb6bc087fec676b1',
- '5e1c10284710f5c2db48f88de3d051579643a1ed042afa846a7844895351a77b',
- 'abf4bafcddb38bbf3855e47b5e61b75dedbcf42aa44ffd4bb85d0b08d97e2682',
- '211882aeac8a599b0a55ec280e1a978923edef69cd86541bcbd58db864c45eac',
- '632a48a7a9a3ac5966a5caa71d456ef1f95f402859df61157cb95ed951237714',
- '6b9425a4c4d39c932fd310704bc144d283f1c090bea989c9b3e96fc0925da531',
- '17610efb99d0f9e4eb1aa13eb1d86289c7dde37d17833ed23dd10e469e2543ff',
- 'f5e7bdf4880d87a14055bf371328fe7396315f4848900e7f2471c5edb2a4c23c',
- '5b6cca1b8ac9199d191ea31152d47057fa329994b392db72eda29dbb60d1750c',
- '4b96ec3b91e9f764ac0227ca7df451bd8294cd46298047b43b960ae1c0b0afc5',
- 'c6fefe1bfbe6f5364bf0e40447ffca27fde55f1cd815e1fa3bafb46a41c91749',
- '552a69d052ae2980aa92ef44b4a8752fc585d70127d9df1ac53137e266786e4d',
- '369d7da16156c5e2c0d519cdbab3996a7249e20d3e48c36a3a873e987190bd89',
- 'ef67e0723230f6c535ff556e45ca2174e1e97deed306e9e87f1b65579076ec06',
- '2cb1e75cd7505a2783769276f30b122cb136fbbd03300510b71a7196ca670b37',
- '1211b6885890be48f89934ec5246f1ce3cfff46c626cfcd686d5fdce9b1fb830',
- 'd6a8bdb01e763fb64f3a02512e7be905679a5add6bb408f8750d679d17cad92f',
- '3f8591112c6bbe5c963965954e293108b7208ed2af893e500d859368c654eabe' ];
+ 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
+ '6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d',
+ 'b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2',
+ 'ae4b3280e56e2faf83f414a6e3dabe9d5fbe18976544c05fed121accb85b53fc',
+ '054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8',
+ '08bb5e5d6eaac1049ede0893d30ed022b1a4d9b5b48db414871f51c9cb35283d',
+ '17e88db187afd62c16e5debf3e6527cd006bc012bc90b51a810cd80c2d511f43',
+ '57355ac3303c148f11aef7cb179456b9232cde33a818dfda2c2fcb9325749a6b',
+ '8a851ff82ee7048ad09ec3847f1ddf44944104d2cbd17ef4e3db22c6785a0d45',
+ 'f8348e0b1df00833cbbbd08f07abdecc10c0efb78829d7828c62a7f36d0cc549',
+ '1f825aa2f0020ef7cf91dfa30da4668d791c5d4824fc8e41354b89ec05795ab3',
+ '78a6273103d17c39a0b6126e226cec70e33337f4bc6a38067401b54a33e78ead',
+ 'fff3a9bcdd37363d703c1c4f9512533686157868f0d4f16a0f02d0f1da24f9a2',
+ '86eba947d50c2c01570fe1bb5ca552958dabbdbb59b0657f0f26e21ff011e5c7',
+ 'ab107f1bd632d3c3f5c724a99d024f7faa033f33c07696384b604bfe78ac352d',
+ '7071fc3188fde7e7e500d4768f1784bede1a22e991648dcab9dc3219acff1d4c',
+ 'be45cb2605bf36bebde684841a28f0fd43c69850a3dce5fedba69928ee3a8991',
+ '3e5718fea51a8f3f5baca61c77afab473c1810f8b9db330273b4011ce92c787e',
+ '7a096cc12702bcfa647ee070d4f3ba4c2d1d715b484b55b825d0edba6545803b',
+ '5f9a753613d87b8a17302373c4aee56faa310d3b24b6ae1862d673aa22e1790f',
+ 'e7aebf577f60412f0312d442c70a1fa6148c090bf5bab404caec29482ae779e8',
+ '75aee9dcc9fbe7ddc9394f5bc5d38d9f5ad361f0520f7ceab59616e38f5950b5',
+ '22cb4df00cddd6067ad5cfa2bba9857f21a06843e1a6e39ad1a68cb9a45ab8b7',
+ 'f6a954a68555187d88cd9a026940d15ab2a7e24c7517d21ceeb028e93c96f318',
+ '1d64add2a6388367c9bc2d1f1b384b069a6ef382cdaaa89771dd103e28613a25',
+ 'b729ce724d9a48d3884dbfcbee1d3793d922b29fa9d639e7290af4978263772b',
+ 'b858da80d8a57dc546905fd147612ebddd3c9188620405d058f9ee5ab1e6bc52',
+ 'd78750726155a89c9131d0ecf2704b973b8710865bf9e831845de4f2dcbc19da',
+ 'dc27f8e8ee2d08a2bccbb2dbd6c8e07ffba194101fc3458c34ded55f72c0971a',
+ 'd09bea65dff48928a14b79741de3274b646f55ac898b71a66fa3eae2d9facd77',
+ 'f2192584b67da35dfc26f743e5f53bb0376046f899dc6dabd5e7b541ae86c32f',
+ '4f23c2ca8c5c962e50cd31e221bfb6d0adca19111dca8e0c62598ff146dd19c4',
+ '630dcd2966c4336691125448bbb25b4ff412a49c732db2c8abc1b8581bd710dd',
+ '5d8fcfefa9aeeb711fb8ed1e4b7d5c8a9bafa46e8e76e68aa18adce5a10df6ab',
+ '14cdbf171499f86bd18b262243d669067efbdbb5431a48289cf02f2b5448b3d4',
+ 'f12dd12340cb84e4d0d9958d62be7c59bb8f7243a7420fd043177ac542a26aaa',
+ '5d7e2d9b1dcbc85e7c890036a2cf2f9fe7b66554f2df08cec6aa9c0a25c99c21',
+ 'f4d285f47a1e4959a445ea6528e5df3efab041fa15aad94db1e2600b3f395518',
+ 'a2fd0e15d72c9d18f383e40016f9ddc706673c54252084285aaa47a812552577',
+ '4aba23aea5e2a91b7807cf3026cdd10a1c38533ce55332683d4ccb88456e0703',
+ '5faa4eec3611556812c2d74b437c8c49add3f910f10063d801441f7d75cd5e3b',
+ '753629a6117f5a25d338dff10f4dd3d07e63eecc2eaf8eabe773f6399706fe67',
+ '40a1ed73b46030c8d7e88682078c5ab1ae5a2e524e066e8c8743c484de0e21e5',
+ 'c033843682818c475e187d260d5e2edf0469862dfa3bb0c116f6816a29edbf60',
+ '17619ec4250ef65f083e2314ef30af796b6f1198d0fddfbb0f272930bf9bb991',
+ 'a8e960c769a9508d098451e3d74dd5a2ac6c861eb0341ae94e9fc273597278c9',
+ '8ebfeb2e3a159e9f39ad7cc040e6678dade70d4f59a67d529fa76af301ab2946',
+ 'ef8a7781a95c32fa02ebf511eda3dc6e273be59cb0f9e20a4f84d54f41427791',
+ '4dbdc2b2b62cb00749785bc84202236dbc3777d74660611b8e58812f0cfde6c3',
+ '7509fe148e2c426ed16c990f22fe8116905c82c561756e723f63223ace0e147e',
+ 'a622e13829e488422ee72a5fc92cb11d25c3d0f185a1384b8138df5074c983bf',
+ '3309847cee454b4f99dcfe8fdc5511a7ba168ce0b6e5684ef73f9030d009b8b5',
+ 'c4c6540a15fc140a784056fe6d9e13566fb614ecb2d9ac0331e264c386442acd',
+ '90962cc12ae9cdae32d7c33c4b93194b11fac835942ee41b98770c6141c66795',
+ '675f28acc0b90a72d1c3a570fe83ac565555db358cf01826dc8eefb2bf7ca0f3',
+ '463eb28e72f82e0a96c0a4cc53690c571281131f672aa229e0d45ae59b598b59',
+ 'da2ae4d6b36748f2a318f23e7ab1dfdf45acdc9d049bd80e59de82a60895f562',
+ '2fe741af801cc238602ac0ec6a7b0c3a8a87c7fc7d7f02a3fe03d1c12eac4d8f',
+ 'e03b18640c635b338a92b82cce4ff072f9f1aba9ac5261ee1340f592f35c0499',
+ 'bd2de8f5dd15c73f68dfd26a614080c2e323b2b51b1b5ed9d7933e535d223bda',
+ '0ddde28e40838ef6f9853e887f597d6adb5f40eb35d5763c52e1e64d8ba3bfff',
+ '4b5c2783c91ceccb7c839213bcbb6a902d7fe8c2ec866877a51f433ea17f3e85',
+ 'c89da82cbcd76ddf220e4e9091019b9866ffda72bee30de1effe6c99701a2221',
+ '29af2686fd53374a36b0846694cc342177e428d1647515f078784d69cdb9e488',
+ 'fdeab9acf3710362bd2658cdc9a29e8f9c757fcf9811603a8c447cd1d9151108',
+ '4bfd2c8b6f1eec7a2afeb48b934ee4b2694182027e6d0fc075074f2fabb31781',
+ 'b6dfd259f6e0d07deb658a88148f8253f9bbbb74ddd6db3edbe159a56bc35073',
+ '8fa5913b62847d42bb4b464e00a72c612d2ab0df2af0b9a96af8d323fa509077',
+ '7ded979c0153ebb9ef28a15a314d0b27b41c4f8eed700b54974b48eb3ecaf91c',
+ '1cf3aa651dcf35dbfe296e770ad7ebc4e00bcccd0224db296183dc952d0008c9',
+ '5767d69a906d4860db9079eb7e90ab4a543e5cb032fce846554aef6ceb600e1d',
+ '8189e3d54767d51e8d1942659a9e2905f9ec3ae72860c16a66e75b8cc9bd2087',
+ '107de2bc788e11029f7851f8e1b0b5afb4e34379c709fc840689ebd3d1f51b5b',
+ '169f6f093a9be82febe1a6a4471425697ec25d5040b472c5b1822aeea2625988',
+ '2087ebd358ae3ea2a092fc19c2dfee57c5f0860296bc7b057c14e1227c5cb9d1',
+ '182ab56f7739e43cee0b9ba1e92c4b2a81b088705516a5243910159744f21be9',
+ '081f6c68899a48a1be455a55416104921d2fe4bdae696f4b72f9d9626a47915e',
+ '5ce02376cc256861b78f87e34783814ba1aec6d09ab500d579ed8ee95c8afcc8',
+ 'b93e407404e3e95f20fd647365e0e7f46afabe9af1ff083af996135e00d54009',
+ 'e81fa832b37be8ed8f79da29987aa4d61310dcb14b2859dedf8fb1daa2541fd3',
+ 'c56705fea5b110b8dc63688533ced21167e628017387c885423b835a55edd5ef',
+ 'c2226285d08a245a17058ed2d24ad095b714f608ae364fddf119e0a7df890540',
+ 'f9c270da8793221a6809ac685fdd4f5387e0fe1ee6aaf01c74f1e0a719621614',
+ 'e69befd6ef7f685c36e343ac1702d87ad6a0e4ac8c0d5c521d04aad4ef0b7458',
+ '4e3033562ad74a7d43eb5ff5fc2382622c6307cb10e245ad62da77c4c63cb178',
+ '2ea17629472564a59e5eb845a2cdd04f442df2ff26bcc866e400f77158d612a1',
+ 'b90223df74dd49a8a1461f340f2d7a90f96903ccbb5bc3c74ea3658fc8948b20',
+ 'e0209f42b927ec9c0f6d6a76007ed540e9bdd6e427b3368a1ea6c5e7565972dd',
+ '10d9bd424114319c0999adf6288f74060cd8918ef1228827a6269b2bf0f0880c',
+ '7d1978a65ac94dbbcdc62e3d81850299fe157dd9b7bd9e01b170156210d2815a',
+ 'e052dff9e1c94aaa49556f86fad55029a4875839fda57f5005f4c4403876b256',
+ '58d29459b2130a2e151252d408b95e6dac424c564062eb911cc76440cb926ca0',
+ '4e4530c392316f598e1bd07f32166380a8f712a33a48e9eb4247131ec5dc05d3',
+ 'a09c9d3e42342c7dea44edb4aeb48cf6727cacd8032a12cf77a25829fc249d32',
+ 'eb978d0f1ac03ce5c3510b5f4a16073a7a2bdc15c4ab7777dcf01030cc316667',
+ '7d1905a3ace827ea1ac51c4fa08c281ed3be87e7f4e928d696bfde35c8f2dc0f',
+ '08359b108fa567f5dcf319fa3434da6abbc1d595f426372666447f09cc5a87dc',
+ 'a7b3830ffab0f2bbabbef6df0b169a7917008bf238880bbf8c20b8e000077312',
+ 'b4f5d9b1555994c5ebaebd82918d560a3bf82962a171a1614e7551939e943366',
+ '014ecaea1b378900f1212898c6ddb01565d81af1d0ef78df5e28d46e9caf7cfc',
+ 'bce0aff19cf5aa6a7469a30d61d04e4376e4bbf6381052ee9e7f33925c954d52',
+ '4565d7b898ccea3139ad260f9273115f806b30079d7683218c4e3ecd43af3b33',
+ 'ddadeb660fe8902c9fb2db9b6cf237c9ce5b31753398085c4367eb5910b9cc13',
+ 'c15a8928131f6687dd10f3c115ddf8d7c8f2df7e18d12c08c4fd16f666ce60ba',
+ 'ae8e3d799b1353a39815f90eceebefa265cc448fe39faf2008cb20784cb2df9f',
+ '98545371a3d9981abe5ab4a32a1d7b2fadd9801d89da52a94a4f78a42740d21c',
+ '6323dce2f8b3a04dcea8d205602348c40403cb200c677eb1a1c0fe37edb6eb2f',
+ '8150f7c5da910d709ff02ddf85dd293c6a2672633de8cda30f2e0aa58b14b0c4',
+ '44d21db70716bd7644cb0d819fa6791805ebc526ea32996a60e41dc753fcfafc',
+ 'b9b7c375cca45db19466ebd0fe7c9e147948cc42c1c90f0579728cfb2651956d',
+ 'a47a551b01e55aaaa015531a4fa26a666f1ebd4ba4573898de712b8b5e0ca7e9',
+ '60780e9451bdc43cf4530ffc95cbb0c4eb24dae2c39f55f334d679e076c08065',
+ '09373f127d34e61dbbaa8bc4499c87074f2ddb10e1b465f506d7d70a15011979',
+ '13aaa9b5fb739cdb0e2af99d9ac0a409390adc4d1cb9b41f1ef94f8552060e92',
+ '5b0a32f1219524f5d72b00ba1a1b1c09a05ff10c83bb7a86042e42988f2afc06',
+ '32796a0a246ea67eb785eda2e045192b9d6e40b9fe2047b21ef0cee929039651',
+ 'da9ab8930992a9f65eccec4c310882cab428a708e6c899181046a8c73af00855',
+ '9c94557382c966753c8cab0957eaedbe1d737b5fcb35c56c220ddd36f8a2d351',
+ 'd32ab00929cb935b79d44e74c5a745db460ff794dea3b79be40c1cc5cf5388ef',
+ 'da18797ed7c3a777f0847f429724a2d8cd5138e6ed2895c3fa1a6d39d18f7ec6',
+ 'f52b23db1fbb6ded89ef42a23ce0c8922c45f25c50b568a93bf1c075420bbb7c',
+ '335a461692b30bba1d647cc71604e88e676c90e4c22455d0b8c83f4bd7c8ac9b',
+ '3d08c4d7bdda7ec922b0741df357de46e7bd102f9ab7a5c67624ab58da6d9d75',
+ 'cc63be92e3a900cd067da89473b61b40579b54ef54f8305c2ffcc893743792e9',
+ '865447fc4fae01471f2fc973bfb448de00217521ef02e3214d5177ea89c3ef31',
+ '3daa582f9563601e290f3cd6d304bff7e25a9ee42a34ffbac5cf2bf40134e0d4',
+ '5dda7cb7c2282a55676f8ad5c448092f4a9ebd65338b07ed224fcd7b6c73f5ef',
+ '92ca0fa6651ee2f97b884b7246a562fa71250fedefe5ebf270d31c546bfea976',
+ '471fb943aa23c511f6f72f8d1652d9c880cfa392ad80503120547703e56a2be5',
+ '5099c6a56203f9687f7d33f4bfdf576d31dc91f6b695ecea38b2770c87631135',
+ '8d39b60b9c767c58975b270c1d6b13c9b4507e5aee7ad496a3528e4c7f880721',
+ '3acc128faf01077789746edcfd1051d90bc1591342402d9b3cdd06d7315702a4',
+ 'ce1662d4c8b1f54d322593ee8ab385763e51dea92c9b4d56bc0e2f85111f0438',
+ 'aacb65e7c9055b105cf02c47024cdf79a58229132e66ca0ddf0d74ef6a3fd5c8',
+ '478ab134487ede9921619f1eebac30646919d6ab7146c6928c44732ccc897929',
+ '6a053848cfe83c0fc8c8a81dd84f6b946c63193cd25cdd5dad45f08be8019e89',
+ 'ffc555203945df4e81d75f316e4c25fdc0bc4e96412f4f469349eb716f001a7d',
+ '81d45be06329d63a2d8a8599d445676933bea1678fc586795b4ecbb838d4d158',
+ 'd08809a9e5b00fc9266b3813679f40acd6c2596d3de4f28f4d20d98c440aa483',
+ 'e1796a03c9ed287ef757eee771d116e4dfd8c416f6b5a9e592c1f0e81c0deaa1',
+ 'b4a4e5d6560fa3e9629064546ac97f14cd4d023c097ccbf06838ccef4fdcd8f1',
+ '9b293d748d30240d3ddc496b722fc92d57f665271b060e82410d8de18970dc1d',
+ 'ef145232e5b19630e0b389891f688161d047c269c7cf22dbff114514572f5813',
+ '985f19128703afeee38d22797c0cae5f450cc290a6a5b9253dd908420e9032ff',
+ '66f952a83339274eb287b64ef7b028d88915ac6df06a183f7c0436fa2b25107b',
+ '46af22be1b576de71971c25e88c18a3295f0ac762a412a11105cef20fa2f5840',
+ 'e81901f41344683448a03db259d1071c9b2f91001781ae34a0b39a0988381fc2',
+ 'a5c602c1401ad5029efffaf188f27f9b96b441631a77448551ee337b9dc0e7e8',
+ '8317b3fb2181158cfdccfaeb8f8a1736961476717801ae9de7c9a59dc395ef1c',
+ '7834d0515667e46923f3a6c054268e06bc2301491b8eda225d1f4317918206fe',
+ 'f22b2e614e92d6453612b707385038300293d2cc292b148bc5335754b5ea30fd',
+ '1d683f2a7c58ac74fab45761235c3e9682f1329b6d96e260a7c67d2d58b233b6',
+ 'f584eff8c5152fb6b2699806508cdb7148138ecb6dd564b02bfc021fd0ec586a',
+ 'afa8661046fa83e7c261167f35f6379c00d3a3a9ca46c48fb0bad2c49dda7933',
+ '9fedc8a3aa430d6d911b714a151e5f17a4acf52f4239617eec7c9b9d7775612b',
+ '8de202b9c283c236da5d2cd5e556de9c1822c19dab36e09f690cf70d3c963e97',
+ '31b96fecbf0c2839a29c4acd7098c2701cab152d424e266cf07a16875604365e',
+ '3f1a0f65ee12f7efe64477247359af8ef02cf27d104481b4f5922f71432b8178',
+ 'f4c34f764e0a9e37c080d28f01c4bbe24dad0cc65a88b1fa6b28802a4b799865',
+ '85ac7f3761f77772e28c3a9b658aa0e04d9dd3a6bc365c30324948b0ede18b88',
+ '448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c719',
+ '97f5eac07cdc76f1f0faa10b0081cfaff3fab72095680a4516c723fde98916de',
+ '6b572b21caa06fc6a1bdab77da3bc07377919088ee96603628354c0b3800661d',
+ '27fcdcc7e2ee00f1dcb07aac445a436ab5dee2c14b04621acd387ec50e8efa50',
+ 'e839cfc21e8e77997e643efa04f7150e6cc68864cbea745aefaf47a9363df709',
+ 'ba6bad069acc2d0bedf36e2b6cc005d31eb76b0da9de46e09209ff004ae25200',
+ '7d3e6ad6d9017d79d15eb518ebbac828d64449c39f0942ee6e7798479e7615a4',
+ '697c581d18edb2692249fc07aae307d3cc263033cb32f16ef3c0b57429695a43',
+ '7f7193dd3c6c273cdd66488f8aa5dbe3542a22bf0fcda7d6fb93235178c4589e',
+ '6e944d621f9e13bc22d4ae68aaa8cb15605ed9680acd7f16e5b0f94149b634cd',
+ '491602f722b2a6ef3976a696e286d99e19259d3a4ffb957d18a7128a6fb37a8c',
+ 'f2b51a1a5c12e9b07f152812895f2ab51a9727021e389555a58507ea7ff16e51',
+ 'dfabc97f215403a3cc2bcf132a35fc832e87b7de0f2e7560f2ad9d8f06e38b63',
+ '73b1f1000c7677ebdcef2a2a25e27b06d9c163209add77a16f0e2b70e56d5c52',
+ '21803c877b81b590015dab430568cf4d7c0247eea6147a18ac4fc3492996cb79',
+ 'b7e3c3ea326a5fd558d70efe2bc6469732a2894dfdeca106093611a4a8d4b025',
+ '5ae91d2295e6706191b760661d48e365441de12340006130c42c7b38faa48393',
+ 'efe3f35371f700217362155403d2b3f912b751d69d6bf80a59a86d4911718651',
+ 'af37eee16b62d9665944da23a7712f454640ceeb958f20fd33fdd1ee515dabd9',
+ '2537ac29dc1561ee49a0bc1aadb863c435a669d18d5e7e890ed3e11a014ce411',
+ 'e360918d85b02d655ea572d081c83b019691e8665908d6a6fbf9d5673a13d892',
+ '37e7218560603527cc8db9a5a1da89fa27df1da7dd9c54c0c7a2405d8a5208a1',
+ '621009f0bf8ca1d70eedfa30eb6e2979794469b4e99ee385fd9501712b45cb6a',
+ 'b1459345163aed1c356302a5230f8912564b04f340610b18ef1aa2c47b418981',
+ '82f63a1d007fd9796756abbbf51c246884dde3d79cf9cacacc901462ae75e3ff',
+ '78d8ce1ccd46cf92fb4e255f183bc9f355e5e494b3180c0da9154e17a1d61f74',
+ '8882ee8501069ba507a3a5f309e8e3f9dcfb13987ec293c60feba4f1fabc5ba7',
+ 'c62efddbd622094486c1ededca74ad47c8ce4c7661d9f58c2723403bb42b45b6',
+ '93301c8548f3afc25d7e157eaf7c8dbf5edb029bd829136600593067cd4b0c5c',
+ '19961686c66d9e10e2ce38a14652121e533d5f04bbeea193210cb0a7b88396f3',
+ 'b454dbe07fb100ea743cd193ea1953a9e6d62a07fde0f3325c362e4f3d7b694f',
+ 'd280f473c251cb75c91880ea0eca2a2f1cda3152bef54a38c4a3aedad615c819',
+ '8b4a544837a1a0280fa8a7c82865c27a1064b3cc6281fda0753566b9bb104a87',
+ '7daafa7aed7d63d06a98b7b6f785eab5427d084f30d5c9ee6dd0d2f3ada329e6',
+ 'dc0b1c61c4001cfe707c52875e026e4eefbafc09ab767f8f3ac55e9c78406e4a',
+ 'cd855c9ecb3cd846efd1111aeb02c8563f7aef9988ac4c597fab35b4235604c5',
+ '28ece33729cdeff79a863cdfa359b51cebe29f8a947954306338c11a89866e62',
+ '59a6aed6a44d5a52565289ccc377966b6a1ab41ac339e72475f49bb136befa91',
+ '3458d07857503fcadabbc5dfc7b905bc373b77cb058d87feb35443a0aa7ce204',
+ '76ccea5a51d93c238bd3a745ff8acd3c848a15c85d12e3d5c9743ecc094773a4',
+ '1901da1c9f699b48f6b2636e65cbf73abf99d0441ef67f5c540a42f7051dec6f',
+ '747db6ff08731ff7908224c50f71f51fef1283e65341e2dbcdc664f0f41bf8c5',
+ '07ff1080d3d4aaed9cd77850c0207e75e7f9697bed15a8cda7057f6a24c010d2',
+ '8f0512e800a511953a28bf11bb5e9c305c4026867bc9a31f76cb96fc5bd87027',
+ 'fed886fe3977e2d21a6b0db5977b8deee5b456d323f8c208d24b8adff08f11de',
+ 'ea98780a92c30a1038d20bd3d0c87106353306bf9751df5c3c88f9d4b31a0088',
+ '121aea684d4d62866514564293f1928c6d4d9e9aa62f2bd2df94f392bf75a838',
+ '6f03900ba86980a79f6f8a5d633bd9e8dc9ca30690c86b31ce892d83115a2326',
+ '94e9c48301753f123bad54d917d13da64c18b1789da85dc8ed3d8427c56978f7',
+ 'f934aea49262b4fd587eb74ebe2c69b857aca07876acadc23f89d6c0bbbccdd5',
+ '02d53b4529c38363c1ddc9053e3e58bcb6e3001f01c26aa7c4a9e17884cc71e5',
+ '018513c8e6cf9ba66351428984e5d44824fee364c26bed1533ca3ece8f3574c3',
+ '21209622b064b7f81c5a3524abe7c9708d4585ad4ea21b072ce76993afdd3bf9',
+ 'aa361163f6b53f6e6de29daae28a336a8f7c05bf5e8a6eeaa46a51bcd66ac7f7',
+ 'dedff2184de121c60ec94c4cb94a0450cac47257c56afa8f2e11c5f64d3dd661',
+ '1d64137df721078b35bdc1a3595a73cebcbe49865fb308c78791540d1d349cd7',
+ '9d42d74bac443eafbd9878145b745387eb1397174332564bc8fa6db414ab381f',
+ '11a6171d8d193f7cf83315199bb3a7e07e8e00c33e5b620855e0b879cfa4c68c',
+ 'a9cda05987272ee71100f81f59ad3959b0978a576235c6836eccb65a9577126f',
+ 'fd53126210abfcb0d6a56c90853b716d02acd8dfa319a60cf51b1a2b4ef6d7f3',
+ '17c1453315e3dc1890e8a1c2848d781d207ad73335450e9a236e44c8a2ad3b06',
+ 'bd2e01835226c56a32ff58df38e6e179830335d4033a40d9c60d269b145c9f6a',
+ '3b7a22d9ef089d4aa382eff3deeba73d41e4af58b0967e9c8603d860431c3ec7',
+ '7a7f89f00b0e9b1b9e99490a7b9d9ce7740a403047efbb94ad35fd13a35b4ac6',
+ '7e47dde9a2e52a0067f80a149abf606ea4ec25690637632d34561432c0738877',
+ '5d5771856bd52662bd20e37424abf39e1f3b50264ff09ffd62b3dcc8f05d01f0',
+ '6c851b50e115cecfe3b4b910e6a7406af282f9dbcd4ce9cca0db8d488a125f01',
+ '5f6e61fa3cdc91285b09f1934b31e426108dfad7ff04c367651f4a59f5c78722',
+ 'ada6b2683a885f5fef657b8c9b44a44f1e739af8b35c64a51c4072d2a86602c4',
+ '3a6a36895262b4af79fdc476e90a9ebc06320e64dd8417b8ebba5f6fec87eaac',
+ 'c2c67787b86319330e4d0657bc2c0ad67482dff0647b925cc9b8c20a535edc37',
+ '6f473cf63f854fb1fa5ad59c463f640dda1a2a1bacac0e15ffa400e663a7f6e7',
+ '619a4c7ba6e34fd2246ef3ced6f1e13a5091aa8ea990b59a5e86479c9cb533bf',
+ '96e054622771ebf6d4ec206a04c68e0d8bacede86a71a1a546f5e2f8b59178fa',
+ 'ca9dedc42398e60506e48a2ac95c19882db3c1adeb8da5877e6ad9db4b4c4cd0',
+ 'f0f1ed236d1a3db9501ff5f2c5cd43d48f2fc30d59cce3155e7f0695c0d529f9',
+ '93b2ef94e81337432b267cd50347945f32d9b689b198ccd495215da088ac89b1',
+ '69e640e22c3ddd1e1d8391aa4db54aa6ac8aa60ff687a5986f1bea86c49651ab',
+ '6f58ce599facae90d94a287e9bf8cb06eaf17da2c293700eeb6bc087fec676b1',
+ '5e1c10284710f5c2db48f88de3d051579643a1ed042afa846a7844895351a77b',
+ 'abf4bafcddb38bbf3855e47b5e61b75dedbcf42aa44ffd4bb85d0b08d97e2682',
+ '211882aeac8a599b0a55ec280e1a978923edef69cd86541bcbd58db864c45eac',
+ '632a48a7a9a3ac5966a5caa71d456ef1f95f402859df61157cb95ed951237714',
+ '6b9425a4c4d39c932fd310704bc144d283f1c090bea989c9b3e96fc0925da531',
+ '17610efb99d0f9e4eb1aa13eb1d86289c7dde37d17833ed23dd10e469e2543ff',
+ 'f5e7bdf4880d87a14055bf371328fe7396315f4848900e7f2471c5edb2a4c23c',
+ '5b6cca1b8ac9199d191ea31152d47057fa329994b392db72eda29dbb60d1750c',
+ '4b96ec3b91e9f764ac0227ca7df451bd8294cd46298047b43b960ae1c0b0afc5',
+ 'c6fefe1bfbe6f5364bf0e40447ffca27fde55f1cd815e1fa3bafb46a41c91749',
+ '552a69d052ae2980aa92ef44b4a8752fc585d70127d9df1ac53137e266786e4d',
+ '369d7da16156c5e2c0d519cdbab3996a7249e20d3e48c36a3a873e987190bd89',
+ 'ef67e0723230f6c535ff556e45ca2174e1e97deed306e9e87f1b65579076ec06',
+ '2cb1e75cd7505a2783769276f30b122cb136fbbd03300510b71a7196ca670b37',
+ '1211b6885890be48f89934ec5246f1ce3cfff46c626cfcd686d5fdce9b1fb830',
+ 'd6a8bdb01e763fb64f3a02512e7be905679a5add6bb408f8750d679d17cad92f',
+ '3f8591112c6bbe5c963965954e293108b7208ed2af893e500d859368c654eabe'
+ ];
for (var i = 0; i < expectedValues.length; i++) {
var hash = new SHA256();