diff --git a/README.md b/README.md index a1e9da6..4713e36 100644 --- a/README.md +++ b/README.md @@ -39,29 +39,29 @@ The flagship application of this work is solving ECDSA with known nonce bits. Th 3. To actually compute the secret key from input provided in a file, you can use the `solve` function. You need to specify the curve to use by name: ``` shell - sage -python ecdsa_cli.py solve -c secp256k1 sample_input.txt + sage -python ecdsa_cli.py solve -c secp256k1 sample_msb_input.txt ``` - Each line of the file is a space-separated list of the bit length of the nonce, the hex-encoded hash used in the ECDSA signature, the hex-encoded ECDSA signature as (r,s) concatenated together, and the hex-encoded public key. The `ecdsa.sample` function will generate sample input in this form. + Each line of the file is a space-separated list of the length of the unknown bits of the nonce, whether the MSB or LSB are known, the hex-encoded known nonce bits, the hex-encoded hash used in the ECDSA signature, the hex-encoded ECDSA signature as (r,s) concatenated together, and the hex-encoded public key. The `ecdsa.sample` and `ecdsa.sample_msb_zero` functions will generate sample input in this form. -For the moment, our scripts assume the most significant bits of the nonce are 0. If your use case involves known nonzero most significant bits, least significant bits, or another case, you can either transform your signatures and hash values accordingly, or modify our script to implement that case. +Our `solve` scripts work for arbitrary most or least significant bits (although only all MSB or all LSB). The following example uses the `scale` strategy to continue searching until the solution is found, which can deal with errors in the data, and will parallelize the algorithm in 8 threads: ``` shell -sage -python ecdsa_cli.py solve -c secp256k1 -f scale -p 8 sample_input.txt +sage -python ecdsa_cli.py solve -c secp256k1 -f scale -p 8 sample_msb_input.txt ``` If you wish to write your own script to use our functions as a library, here is a small custom Python script that shows how to invoke the relevant functions to compute the secret key for some randomly generated data: ``` python -from ecdsa_hnp import ECDSA, ECDSASolver,make_klen_list +from ecdsa_hnp import ECDSA, ECDSASolver, make_klen_list if __name__=='__main__': k = 252 m = 70 ecdsa = ECDSA(nbits=256) - lines, k_list, d = ecdsa.sample(m,make_klen_list(k,m)) - solver = ECDSASolver(ecdsa,lines,m=m) + lines, k_list, d = ecdsa.sample(m=m, is_msb=True, klen_list=make_klen_list(k,m)) + solver = ECDSASolver(ecdsa, lines, m=m) key, res = solver("bkz-enum") if res.success: print(hex(key)) @@ -107,7 +107,7 @@ pip install -r suggestions.txt python setup.py build python setup.py -q install cd .. - + git clone https://github.com/fplll/g6k cd g6k autoreconf -i @@ -116,7 +116,7 @@ make pip install -r requirements.txt ./rebuild.sh python setup.py build -python setup.py -q install +python setup.py -q install cd .. ``` diff --git a/ecdsa_hnp.py b/ecdsa_hnp.py index c46ba06..b2d6532 100644 --- a/ecdsa_hnp.py +++ b/ecdsa_hnp.py @@ -90,34 +90,35 @@ def __init__(self, curve=None, nbits=256): else: raise NotImplementedError("curve={curve} is not implemented".format(curve=curve)) - def sign(self, h, sk, klen=256, return_k=False): + def sign(self, h, sk, nonce_len=256, return_nonce=False): """ - Sign ``h`` and signing key ``sk`` + Sign ``h`` with signing key ``sk``. - :param h: "hash" + :param h: message hash :param sk: signing key - :param klen: number of bits in the nonce. - :param return_k: + :param nonce_len: number of random bits in the nonce + :param return_nonce: True to return the nonce """ d = btoi(sk.to_string()) hi = btoi(h) - k = ZZ.random_element(2 ** klen) - r = Integer((self.GG * k).xy()[0]) - s = lift(inverse_mod(k, self.n) * mod(hi + d * r, self.n)) + nonce = ZZ.random_element(2 ** nonce_len) + r = Integer((self.GG * nonce).xy()[0]) + s = lift(inverse_mod(nonce, self.n) * mod(hi + d * r, self.n)) sig = itob(r, self.baselen) + itob(s, self.baselen) - if return_k: - return k, sig + if return_nonce: + return nonce, sig return sig - def sample(self, m=2, klen_list=None, seed=None, errors=0.0): + def sample_msb_zero(self, m=2, klen_list=None, seed=None, errors=0.0): """ - Sample `m` leaky signatures. + Sample ``m`` signatures where the nonce has known leading 0 bits. + This corresponds to the scenario as described and benchmarked in the paper. - :param m: - :param klen_list: - :param seed: - :param errors: fraction of signatures that are 1 bit longer than ``klen_list`` specifies + :param m: number of signatures to generate + :param klen_list: list of lengths of unknown nonce bits + :param seed: seed for PRNG + :param errors: fraction of nonces with 1 more unknown bit than ``klen_list`` specifies """ if klen_list is None: @@ -138,11 +139,88 @@ def sample(self, m=2, klen_list=None, seed=None, errors=0.0): h = ZZ.random_element(2 ** self.nbits) hb = itob(h, self.baselen) if errors > 0 and random() < errors: - k, sss = self.sign(hb, sk, klen=klen_list[i] + 1, return_k=True) + k, sss = self.sign(hb, sk, nonce_len=klen_list[i] + 1, return_nonce=True) else: - k, sss = self.sign(hb, sk, klen=klen_list[i], return_k=True) + k, sss = self.sign(hb, sk, nonce_len=klen_list[i], return_nonce=True) k_list.append(k) - lines.append("%s %s %s %s" % (str(klen_list[i]), bytes.hex(hb), bytes.hex(sss), bytes.hex(vk.to_string()))) + msbi = Integer(0) + msb = itob(msbi, self.baselen) + lines.append( + "%s %s %s %s %s %s" + % (str(klen_list[i]), "MSB", bytes.hex(msb), bytes.hex(hb), bytes.hex(sss), bytes.hex(vk.to_string())) + ) + return lines, k_list, d + + def sample(self, m=2, klen_list=None, seed=None, is_msb=True): + """ + Sample ``m`` signatures with the specified nonce leakage. + The leaked bits may be MSB or LSB, and are random rather than necessarily 0 bits. + ``k`` refers to the unknown part of the nonce. + + :param m: number of signatures to generate + :param klen_list: list of lengths of unknown nonce bits + :param seed: seed for PRNG + :param is_msb: True if the known nonce bits are MSB, False for LSB + + """ + if klen_list is None: + klen_list = [128] * m + import ecdsa as ecdsam + from ecdsa.util import PRNG + + if seed is not None: + rng = PRNG(seed) + else: + rng = None + sk = ecdsam.SigningKey.generate(curve=self.curve, entropy=rng) + d = btoi(sk.to_string()) + vk = sk.get_verifying_key() + lines = [] + # ``k`` refers to the unknown HNP secret, not the full nonce + k_list = [] + + for i in range(m): + h = ZZ.random_element(2 ** self.nbits) + hb = itob(h, self.baselen) + nonce, sss = self.sign(hb, sk, nonce_len=self.nbits, return_nonce=True) + + if is_msb: + k = lift(mod(nonce, 2 ** klen_list[i])) + msbi = Integer(nonce - k) + msb = itob(msbi, self.baselen) + assert k + msbi == nonce + assert k < Integer(2 ** klen_list[i]) + k_list.append(k) + lines.append( + "%s %s %s %s %s %s" + % ( + str(klen_list[i]), + "MSB", + bytes.hex(msb), + bytes.hex(hb), + bytes.hex(sss), + bytes.hex(vk.to_string()), + ) + ) + else: + t = self.nbits - klen_list[i] + lsbi = lift(mod(nonce, 2 ** t)) + lsb = itob(lsbi, self.baselen) + k = lift(inverse_mod(2 ** t, self.n) * (mod(nonce, self.n) - mod(lsbi, self.n))) + assert lsbi < Integer(2 ** t) + assert lsbi + k * Integer(2 ** t) == nonce + k_list.append(k) + lines.append( + "%s %s %s %s %s %s" + % ( + str(klen_list[i]), + "LSB", + bytes.hex(lsb), + bytes.hex(hb), + bytes.hex(sss), + bytes.hex(vk.to_string()), + ) + ) return lines, k_list, d @@ -172,11 +250,17 @@ def __init__(self, ecdsa, lines, m, d=None, threads=1): self.vk = "" self.d = m + 1 if d is None else d self.threads = threads + self.is_msb = True + self.bias_list = [] # ``bias`` refers to the known/leaked bits for line in lines: - klen, h, sig, key = line.strip().split() + klen, xsb, bias, h, sig, key = line.strip().split() self.klen_list.append(int(klen)) + if xsb == "LSB": + self.is_msb = False + self.bias_list.append(int(bias, 16)) self.h_list.append(int(h, 16)) + if not self.vk: self.pubx = btoi(binascii.unhexlify(key[: self.ecdsa.baselen * 2])) self.puby = btoi(binascii.unhexlify(key[self.ecdsa.baselen * 2 :])) @@ -184,6 +268,7 @@ def __init__(self, ecdsa, lines, m, d=None, threads=1): itob(self.pubx, self.ecdsa.baselen) + itob(self.puby, self.ecdsa.baselen), curve=self.ecdsa.curve ) self.vk = vk + r = sig[: 2 * self.ecdsa.baselen] self.r_list.append(int(r, 16)) s = sig[2 * self.ecdsa.baselen :] @@ -210,29 +295,75 @@ def gen_lattice(self, d=None): except ValueError: raise StopIteration("No more bases to sample.") p = self.ecdsa.n + # w = 2 ** (self.klen - 1) w_list = [2 ** (klen - 1) for klen in self.klen_list] r_list = [self.r_list[i] for i in I] s_list = [self.s_list[i] for i in I] h_list = [self.h_list[i] for i in I] + bias_list = [self.bias_list[i] for i in I] + biaslen_list = [(self.ecdsa.nbits - self.klen_list[i]) for i in I] rm = r_list[-1] sm = s_list[-1] hm = h_list[-1] wm = w_list[-1] - a_list = [ - lift( - wi - - mod(r, p) * inverse_mod(s, p) * inverse_mod(rm, p) * mod(sm, p) * wm - - inverse_mod(s, p) * mod(h, p) - + mod(r, p) * inverse_mod(s, p) * mod(hm, p) * inverse_mod(rm, p) - ) - for wi, h, r, s in zip(w_list[:-1], h_list[:-1], r_list[:-1], s_list[:-1]) - ] - t_list = [ - -lift(mod(r, p) * inverse_mod(s, p) * inverse_mod(rm, p) * sm) for r, s in zip(r_list[:-1], s_list[:-1]) - ] + bias_m = bias_list[-1] + biaslen_m = biaslen_list[-1] + + if self.is_msb: + a_list = [ + lift( + -inverse_mod(s, p) * mod(h, p) + + mod(bias_i, p) + + wi + - mod(r, p) * inverse_mod(s, p) * inverse_mod(rm, p) * mod(sm, p) * (mod(bias_m, p) + wm) + + mod(r, p) * inverse_mod(s, p) * mod(hm, p) * inverse_mod(rm, p) + ) + for wi, h, r, s, bias_i in zip(w_list[:-1], h_list[:-1], r_list[:-1], s_list[:-1], bias_list[:-1]) + ] + t_list = [ + lift(mod(r, p) * inverse_mod(s, p) * inverse_mod(rm, p) * mod(sm, p)) + for r, s in zip(r_list[:-1], s_list[:-1]) + ] + + else: + a_list = [ + lift( + inverse_mod(2 ** biaslen_i, p) * mod(bias_i, p) + + wi + - inverse_mod(2 ** biaslen_i, p) * inverse_mod(s, p) * mod(h, p) + - inverse_mod(2 ** biaslen_i, p) + * inverse_mod(s, p) + * mod(r, p) + * mod(sm, p) + * inverse_mod(rm, p) + * mod(bias_m, p) + + inverse_mod(2 ** biaslen_i, p) * inverse_mod(s, p) * mod(r, p) * inverse_mod(rm, p) * mod(hm, p) + - inverse_mod(2 ** biaslen_i, p) + * inverse_mod(s, p) + * mod(r, p) + * mod(2 ** biaslen_m, p) + * mod(sm, p) + * inverse_mod(rm, p) + * wm + ) + for wi, h, r, s, bias_i, biaslen_i in zip( + w_list[:-1], h_list[:-1], r_list[:-1], s_list[:-1], bias_list[:-1], biaslen_list[:-1] + ) + ] + t_list = [ + lift( + mod(r, p) + * inverse_mod(s, p) + * inverse_mod(rm, p) + * mod(sm, p) + * mod(2 ** biaslen_m, p) + * inverse_mod(2 ** biaslen_i, p) + ) + for r, s, biaslen_i in zip(r_list[:-1], s_list[:-1], biaslen_list[:-1]) + ] d = self.d A = IntegerMatrix(d, d) @@ -287,9 +418,17 @@ def recover_key(self, solution_vector): f = Integer((2 ** (max(self.klen_list) - 1)) / w) def test_key(k): - if (k * self.ecdsa.GG).xy()[0] == self.r_list[0]: + if self.is_msb: + nonce = Integer(self.bias_list[0] + k) + else: + t = self.ecdsa.nbits - self.klen_list[0] + nonce = Integer(self.bias_list[0] + k * (2 ** t)) + if (nonce * self.ecdsa.GG).xy()[0] == self.r_list[0]: d = Integer( - mod(inverse_mod(self.r_list[0], self.ecdsa.n) * (k * self.s_list[0] - self.h_list[0]), self.ecdsa.n) + mod( + inverse_mod(self.r_list[0], self.ecdsa.n) * (nonce * self.s_list[0] - self.h_list[0]), + self.ecdsa.n, + ) ) pubkey = self.ecdsa.GG * d if ( @@ -322,6 +461,9 @@ def _data_for_test(self, M=None): G_powers[Integer(M.B[row][0] / f)] = Integer(M.B[row][0] / f) * self.ecdsa.GG G_powers[w] = w * self.ecdsa.GG + bias = self.bias_list[0] + G_powers[bias] = bias * self.ecdsa.GG + A0 = tuple([Integer(M.B[i][0] / f) for i in range(M.B.nrows)]) A1 = tuple([M.B[i][-1] for i in range(M.B.nrows)]) return G_powers, A0, A1 @@ -427,13 +569,38 @@ def predicate(v, standard_basis=True): else: kG = sum(round(v[i]) * G_powers[A0[i]] for i in range(len(A0))) - r = self.r_list[0] - if (kG + G_powers[w]).xy()[0] == r: - return True - elif (-kG + G_powers[w]).xy()[0] == r: - return True + if self.is_msb: + r = self.r_list[0] + msb = self.bias_list[0] + + # lsb = v[0] // f + # k1 = msb + w + lsb + # k2 = msb + w - lsb + kG1 = G_powers[msb] + G_powers[w] + kG + kG2 = G_powers[msb] + G_powers[w] - kG + + if kG1.xy()[0] == r: + return True + elif kG2.xy()[0] == r: + return True + else: + return False + else: - return False + r = self.r_list[0] + lsb = self.bias_list[0] + t = self.ecdsa.nbits - self.klen_list[0] + kk = v[0] // f + + k1 = (2 ** t) * (w + kk) + lsb + k2 = (2 ** t) * (w - kk) + lsb + + if (k1 * self.ecdsa.GG).xy()[0] == r: + return True + elif (k2 * self.ecdsa.GG).xy()[0] == r: + return True + else: + return False def invalidate_cache(): self._data_for_test.clear_cache() @@ -486,7 +653,7 @@ def compute_kernel(args): ecdsa = ECDSA(nbits=args.nlen) - lines, k_list, _ = ecdsa.sample(m=args.m, klen_list=args.klen_list, seed=args.seed, errors=args.e) + lines, k_list, _ = ecdsa.sample_msb_zero(m=args.m, klen_list=args.klen_list, seed=args.seed, errors=args.e) w_list = [2 ** (klen - 1) for klen in args.klen_list] f_list = [Integer(max(w_list) / wi) for wi in w_list] diff --git a/sample_input.txt b/sample_input.txt deleted file mode 100644 index 9c91018..0000000 --- a/sample_input.txt +++ /dev/null @@ -1,70 +0,0 @@ -252 e01880a9ca1750fe7e66070bf6b8f5ceace6cff3bce4f3d803f8bea02fea9628 d4fd78d94768318c422c2b82169c152810cae49b9a36d6adcb3bcb3e752728e61dfc81ec29fa40cb9b2adee3563fb3a2d9896f1ba4052b799a76b3d8433d3f5d 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 757d78885aa1c44f62da97b67284e489da6f99c036972180e9a359a83481bad9 80f21a17afc04eae022e9878d37da0c002e674b6616298ecf7f3d460c2051c92a96ffddaf3bb42d97f2e2b6fd681a8259d348dcc416c5d54bf097721e39a3cff 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 3e640d1d5ca34cc7a966b3f75c742e95ae14b9c81f4bf8ad284172d9fe027c5c 7443da584a4ab1be12267671f7e20cb09dd8662d86c8562997675fc7b735c029e1b912691399d3d7569bbfbefe3107b1b8908e06753049a407d7b5f41148ca6c 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 badc73a0f25693fe69980741b0a53771a311f325c0a52f6974df2e601b0213c1 64c86a3fa3649aa31678eeb3b6e79a15859892bbf6fefa635e70543f61dcfce077747e7a49c874fb1de5c6ba1f833f3d3675ce082cfd00c16d7af9e4d14deebc 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 c14350e1ab81c73e7c3a7755753c2a65d6c856d47a72cf7ac7b0b6ff157302d7 61f767a10cb508e28184fd74b87d164ca467a6df5a9ece04226313c25efb6d7058f10fc1f2a8ab96139cddeb967949b7cb6977dc9535a59d9126fc8ae89ef9be 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 e7199555d2cdf8aa48c568f392568a340856258878a79269d6c533f3cc867430 25f0c30b9e33fc22401b825f43ef417a0d9d760a1390d76af205f94fef18bbf34a887f578a76490ba3610af13f87f96d09d5d0f5edfc2ed3c4d28f2ab3389a32 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 349b94d5d40f162c6b373a9bbe24c107ba7d239d2ad769bf44218b62d3701216 ca3e82de307c8115710c2dcc4dfd7547ade79bfc7d41825f88cad4ed4712f2e94714d5f35d232640347f13d9e3153db7146e48730e61a8870ae6ec2cb81d7229 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 c4e10e0ef9467c9770cd8d997f444a73765b4f302268901c6e6cbe1ace7b91cc f8b2f90dcd25761ff9227c2fa421f5397565fa308b715f90ce5cbce616c0ee0f255272e9794e76d4a7a44ee0abb5b7094d34ac50faefd70b06aab7bf4652ddb1 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 e386136ebbcc304f36f9e9c7f812612f40aebd27c1eca298da0fa3b942ef91ed ced23cf07ac114c99029eabee08efb6053a4175af0d2945c3be43bc8024cf4cca24e8b2dfa17d9c223020a7e8f5b7dc4fa15c24e75caf138e23a83125b277d11 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 8425469cc76a31e3dbf05bafa1637f7da550f39815a1879a2c5f8d511e352607 f2ba71e01e93575d9d334d052068a66d9750dbe2846a4cfd0ec1c0c49ae58343fe1e7afa526238c7c42c8ff776edca9bea6f0b7a1f625c5d7f675bd7ff13664d 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 3e33535ff16d068b5b7097137c17bd5e53d9a95c11c2f7b882674fb6ba81cf10 2c36283f0a45bd600fb1d2978aa69cfb33c524b08ba3c5b62eb50cae30445c554d265945df1debe7a34269e96f5dd23bb571eeca461b49a628567b6ec19209ae 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 3653746462fc99966f014ed6ecad2c7bacf9e3f96c68849241c6376698893869 7aa0b286f11f9cfbd4a077184ed976db539313aafdddb4adbeb1c211943461d8b5f46c1137c859d2055c5160da2fd562776f0bf3efac59d8fe05383bc33cde37 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 70d0a1f94d51e06f04f86f51674eaf67e1c97e3a89dc677aad11b19bdb8680d7 d23671236288ed45582786e76d57a782e135b97782f50573e3f3809f83a610ad1738b33ae89d8ff29c5b569bea1aeb2c9064529f9b450baebfa1745fe6ecccbe 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 86d295c46472592af21c43d05d41e8090140bd526bb0e560fb2ade8b07a6ebf7 90cfac4e85981b8c6e43333fae9243f819f2a1c6a28a6c147434438e0b3a5682793d68a7740a14bb8a07eb240140fe275e442dfeabd724dc55f08fe3d05852b6 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 2e5e539bf03811844285dfab8a56aebe6205be82c2cf135b4574de265c6b086b 63cb6dae8d024dfee0e98dc84609a10c1d39710993009f95df5065fa0446cd74a03397ba336bfa18403480133104d5331471f6ec7f1fff753a898df6c2ce007d 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 223d18d3700d0b7d7775a16896b34497fed4f09ce620984975f83c976bec605f f45825d9599e609c85fa69e81521ec50de51e596940b2c3ba7d99f2abfce1832538b4fe1e1c596ee49f06e0d6b06fee4a6633c77106a32a0e7a525bebe7209b3 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 b37a059a1f596b7dbf40ef214c512fb206b85218f41407a09f679533dd41b9fa 6ac6172191455cfb2b2e9ad6ad05dfe925beada040045d1e1d96cb1bc9e1545630e65f462f4236f12a6869f61bb683cec0f03e71fb693027381e255432afd5f4 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 75b6d9f566b2aa266755666c8d4358312d603db0c66dfcbd06ff748a96299942 af069d21660ae47eb088e44a61354a75d935e9ce395fc1e2e5ea43910493f00ba407bfa836706409b632ae49bc9714846a76b50856c3f78a6fa37a2f424c404b 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 f02b759620fe58372b559746025e01c78311e93d44dd86d7a12b6bbb53c72abf d9cb62db62c0ca60e2caeb84231f52f193b37ee79bb099e22d52b8363ab5c934aa8bbca905116f6fbd05ea62bf4b53128b6924928911caf366d34a159f020844 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 f4bcc0e2129ffcc92ac8e0e55eea9328e346c521330e544831b42b61e3421db2 326c622f980844e828861a97fc3d0e05ba5c9f95f103ab5f34619d730173819eb93941cb0317e2244be6ed45ed57a5fd88d8b7d4f33eaec86c61dcabf63bd8bd 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6029a8c73f889f1b6efc1e932017e8539a7cc4a113827aa8e6933d5a756a37d2 5ce1c68ad8e69adaceb245f10306e689997b33c8125234a6a2122fc7de72f5cf2351a5d2a518f0070dbd33bbf75f2a19dd83e1b1ea1ab2132654d093896dbb48 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 0495fb95ea89373fd0c04d38e7758304de652d284038920d577f3d0c3a2ea95e a3add1bb9912056443bc47fcfc1bedd8a49a76fad9981338841919e85993673b500ddebb076f5b95cee82d037630646ea3eb4967169b861d4686084e4db42b53 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 fd68516e80f3737613c683ef3c52dfb74c8b6de63882439a5a6eac48df6891f4 ebff3c54b2bcb8c60b36fd101a63d2a4ba7a1b3b94c7bcc253a970991e1f67ece21ca0ea5ca66328ad94736f6d3ab06f9a4d15f6c1ec038ed40157ba419d6527 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 74647cbc0d85b6f7c1ee01d6a2a5e0e91b867197e9efe2e620d96c3dc2e0e77b 5f321105fa58f9836f7567df9e9237a4dadfbb4572f6b924c8c41cca5651f3aa97dd865fea49072077074b8a8bc2169777237938cf3dfc75f9f77a148a6fd510 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 79e322206367292fbd2716223d48d18f80f9e4e0c5dcf1d256646ba0cf5f3b82 cbd34ac9d8bee39eee11e13b03580278df0438170593ca267dd01111ee378c50b41906fd6994a952ba5e0617d8a16b66506cadcbdb789012219a372dd6b84558 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 47563be9d5d7153a2a239cb27ffba164474dd5d3c16d7602f18cfa7f82884ff6 937e26d78b49cef848292102d10b05b743cdf9013bf7359840ea113d79f6429ac46f7d077454b024742c87a071aa61e246ee93a1bedd66c30c8a3e4ff40657f5 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 ef59cb526f2c794e89f00f5d3a2effc926abe55536bf5ce2e91ef27a2631bf8e 8833f9a66b35969c656af80cd97d44de4f2535681c614fa0eb0989a22b14c286247bbbcb90ff92450c5b612904c94bd76e70e8afbfcfcab6fc1e10a1dbcbca2a 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 cc24b2d1101ba7ab91483dd43184b0cdfbde5be4b9fd7b0689eed91e0fd670f7 a7cf4103d3cd04ce867a037c08f7e07177e7a014e359bb83489ddd5d681a00d5b19e41861023fa2880c632356d41b357d41a4c84d510b1fd68b4124e59bfdf0c 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 c98c685053aa1bde54fb41b2629c453433953cb03645011811b1ae25d5891705 eb59f0fb662fccd3c80a05b90f8905562cd6623f84011aa4f20d01390d6aee298ca0347fbb5f0712734ba16bae827db77456c1060a8336fa7101d976eb61afca 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6c933d06d343e3139ad05d881f3eba87dced8b36f34cb93060dfe4c1b031666a 0bb9479cdbe38ffc2c33ffea9e4a4dca300718322c80a279a903f92575cd13201c85b3a7e7a3b2bb996e7bd9404a207aaf89bdc7fd6d3573de02e1988ea5d2d7 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 8fdd49d409ca57f3c08f8912c0b2f10b682224947fe99fbd081baf70b8afdff9 09b0d6d6149135280da3a642803dfb0794f47e0c97a80e8f9f733ab239fbef8f2ed747f8c4e4e84092a67f55f21d31700f6c87def05b1257a01f81c6422537eb 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 92788b5d7c5e5cc0fc95f23ffb35fad93d5af6066babf219c3c94bd767beb09d e6f29898c7c3ff26a8050e87c349e7f5a55339ea57f3e8c96559e49f9f1ef2708e563a47164c166e6df888d44818bb744dfc90fe4db860ad4aa59b248acbb49c 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 c3813f173984cdb1889dec435d54a6292b64a44be5d744e8dafff6d02fd94b55 589f055688d0d5e2e861df470b70e684862db585340ede0ebe4dc3d8e1ce61812dd4a1c284ac913c3965d1036ede70b963b6399f40a1365e3e06c4910b3c0853 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6bf584116b370616ed0995cf136b6bee2e5f6bd85d004c11a895a97e97bc6e87 cb71ecec603e76483e2ba66a86e72030e35f538936fa72307306034fc63db739ae12c68ebaf5661c55d9e54b04570493fddcc7b1af75fc1f0ba8410b238c2aa3 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 bf3545cc37aa1f9756293e84fe63a2abbdc6fbe343ae95a7e5b6475de04106d6 f70192ef1b57b5dda57dd1263ab57a76793e65bb7dce37ac761ed58f03b5223ccd811740446b0a5f600031b7f7543cbe05cf13f5c3baab332bc61509366cc847 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 ba81b9d59f4c1c3dfe221db124d6d1dcbeb9f23cebb2476937bca51fadb8c584 cac753f3056a14da7f52acc8fe473e7ede69eabb40826ac48e31c5073d0d59b725642c7ab679d416f6ff2b63698509ab9597a8d4976165758da161f86c279187 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4697c725289b61f085e2cca0a4fe689aabe3dae209246277f1489b628130738b 458810f1df21e13771c3757ca3ed89c5555156c60f3e000cd82ce7ba315de27a96b85fe44d1db66fcbcae52a138c4a25f55f226864e9498cca10bb1d2147bcd2 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 befe210b345506ea906454d4e848a94f053707f3c47106a612511b2667e005e2 c0ba246ccb127d63d72b3ea639ba143d92ae4fb879f280701ff8c9d177f844221c6955442ce710b0cf9d0a9fc8a6dc7ee70c1a3b829c6d45a18de790108b6819 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 1ff4468d2f06529a2464c1ce46685d7ee5cc8dcef29599a2758a92a842e0a486 62d64cbc0e96d2d02aac2d82cd11ab98d9df4e93fa948b04186b81708f5798c63e05a93c00a4b957db9e04b3fe2ca1d392b4b3f514847ee4e9081414767b06f4 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 446d4581ee582ebbd79b66d5d5680aa8fc1869c37c973eee95f2d21eedd3a2a1 9c24e9a50e1b12c2489da2360c13fc724277a1c86883686d84a2b34f90aefe9813ccd805187ab238f3087653f456531d60e04c2ee7c1ee8e96626653c3b5fcea 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 728c32fb7cfa122393400c6b3cea8819f1f733963da301782db32c8b5c799106 884c7d5d0df22c9b28504619480472d314a129d08392b09e0283ac954a49f98ec79152c9f2324680558ce7d1d60d73480aa732e78536373b2198a9cdf8acd64a 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4f65f2b35c1d23925e946782dcbe8ec882b4a3fcd8636b1ddf0e167f94983a65 34ce3472fd0d7244107ffb4edbba4e78e2cb0f409b8c1af39c3d5fadf3c4ee1f226e124f0eb7bf9cdc44402862ff42c81b0bd54a66a27dc0907f051e16689e9b 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6e93adddaf497f8d9b292ae8a2dd76db416f53ddbac01a4c5bcdb33375a4e950 78023e7f26b67f6396d6fda0f6dbdafa21a4e52cdf2d23e24d2e685727f08a40665492ab442907ba584308bd5dd17fdaf20d8513b85cb13923af8042d0e4e77f 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 17913151afeb937c50b7c52bec138d4f4a758111793d3846a4cbb51afd6ad437 89f72a42b933aa104be35ddb3ebff693e6a0634f66f844b9efe3228f04acea2a033550549b793e412c6ca8b57e2c1c1188a7ef6f4d04e4b0f180f87966b8e834 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 8a75edc161a9fadef4dcaa15a9fc04d3de288eabe7513faae8aa4cabbf5f769e 2be5edf1e765409d020d779a283fd393bd59fba73653930e5a280b19df51f18a59a02d21a16d4583157cbd94c21766063088b53f203be48fbb63b2f36d4ae27b 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 fc42e4668b7cc86abc849310ea918eb69ed6367f90f83cdc5fa54f78ebf95ae9 88d0f27268b5f32d048a861e42a2c8ad32fc6df2fedc2ad03d417bf5580396c154fd444605d72d5d00e04b0132af1529ce38e584aa57fb841a7d87b56a5b315f 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4d6aad80b9f6a0d7610d51918fddd6ed9f6f48fe1df538ba4a638323f9e5b524 a330636cb6a132c844fa57cda71af2618aaed1eccd98353f6dec5d17c9ef68fb35ddd3a62fbc8406cf8a4aa0013d20ed8c9a7102a30cf3735c8edc91f832447e 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 bff03e649063426edc95817d7171a2432cf2ae10d6c86ea1986c1280e5565cf2 cdf95dd1f3ce76e39bd8769a46a19bf2939bc1cc6ecc41eba19fb9c750de73dd789315758da557c4f5dcab53e65cd9edfc24972f478365699364d3a3ce63d04a 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4875008d64016cebafe61cc3b91837d277d399cc2063c59a1c85eb6bd1d33070 fa6491b46e96660972bcd3d727f08b1b1f13d7bb8a1b79e09f723e3800f3a7ba0cc8d71c4ded35119c6a5f167cd5ede4a300e453a03894d0f0c275bf61715ddf 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6b06271159762b7de192099a880cf8360e9e148987cb44df21406af59423de8e 439fea76a862d1f8ace4178c1974964ef68ad96c682e95577b508fedd5a1d7d758c6c393b0b385fabedd77154bb19ba772f3d67fba1937796c052dcf56d15688 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 7175d2bbc15aaba0dbeb891c57b9ed77c8876ae3f338f0fb51d9e551a1edbbe1 36f681a35f097ddf60c58b7394edd494c4b394730c4447ba91c5484a1dd18a343c640d0ee1cb6cb9692343869578124e1fa8309863b548853019cacee020d727 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 2c91b43481a15a7abeb2ca38ee9143a1efd5d3be0fc7f227daaa3982b5c229a2 b29352af013c9493b0660d1228d9a12372234b2f7e51beea413daecb9dd0dd5c780f4405e6187c9f18ceffda1b5b831df82dbf7146b3beb4c6b25db3e7a7ad43 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 2e4af944d4ec3bdb57a825d4236d08d87348ef502a80d64f1f8db7a882a5e736 16474c4254c9f0dad983b0ecb45a909196376cc9394cadd5f782b6c6f666e4b94201d0093ca3ca9fe46044f14178c50aefcf2032f25a348aa33fe8b7621e7852 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 3b7902b6ca8944def1d36dbaa7c966f79dce5088bfd3533b31d32c6c6e36f41b 97c38e76ad03949c4777a37203bdc1e25cbc9470b7827c6411b5850de71068dd1651f38e6bb1d8f1007156c415dff440f422cd21932e343c5bfc45566d1c6e6f 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 f0e0ee2c064a03c8cb6e0b0827a94e51d9c47b1e15b3b0f8f2011a18eebf202a a1c75ac6969b78199f61b32ea778eb3263947319251befc31d793a946691d53a53bfd8d8ea5c080829b3d61a990e425bb3c41c70b4ca366de08fe415ec3844a3 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 7d20546293d7447df9dca43ea8da771359c060b09527fef831c92198cb864dbe 4ac93fa942fe43423fe0736a7b517e2fb0030b84a115fc6d3b2853cff4f2b86cc53665d2c6c63100d1beb6cfc3e0869b56f859d04929f85e8171f954ec1ea889 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 dfb18e4b629dbf4433750001656f923568586b65da409f05230f49631fdde21a 522e9f7291d1b17dfc4675e0d3dc8d3c9b6a4696e870d0b94188e50bacb3f3e52555bd53135a0c0e51b7ac1c1624f04cecad6b67f397b62f5cea663b4e47a053 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4d8de384c6dc698e604d5dc402e7450a954b6915be815336d21e9193bbdedbb1 b8eabc2617f13147eb1b17e57968673eac42aa1f448e29f7d7c9dca04fa7f707610de7fc65590612d9ffd6426c787796a46319d3828d06bd9dcd4cff35b10ecc 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 7f3ca70dd967b66cd3322e99071ee2a40e46e955bd78d81ee4d2c7ffc7de465a 284d7230e7a7ffdc15890d3693ddfd3f1a182323bd593cce679d53a80d4534a51536a5c8e9a1c522333a7f1fd1e90cec5d13b612521f0d208c41cd0420bd0e6e 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 0b8483f9be712e64647c0467c68c3e77848cf9550cd831289ca23ebf251d3db1 c8f3f24693fbf1c6c8e06a5930d3bbb1722155ab0ca9abbd8e2a5688fe876656948fdb6e0fec8ddb11154477f22556ea51fa1c16f713f9e8c1bbe63eb219470c 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 5d8471ce24cb891b0a53c9d12535d6a680dee46a2bd8a91a83e8e1e945dc18f1 2be1ef8b72a943963e64da175b6c12f5b23b48a523b6b53188d2ebfa711f9d4421f4ef82833473642d53bfdf7f30a06d7ad320c52edc29b9fc01dcafabce7e68 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 7d96f3443b419c8f57aae8ca74dcd14e9ea43d94723a1db6ae1bc19d63d8d324 3a43671d670fb857ac3b5c81af5cddbe5e47366dacaad2da6341e6a7d763333bc02a62da4eec95ee8269d2afc144ef2937192406cc0e4c3266eb67ca3123298d 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 5b9a0cfdd2e4d50537e504299c561d89a88b1fb6baaf7ed33658e04d8d9fff12 54ec46a0bbd99aa1dc69df55793af4a77ff0c8621fb5409b084d7bd350132fb81b043f9f3f38b4804f5fa3b01f91f2fa977c1d558fa69e4267195ad7f792a6ce 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 09466dc5c0cc6e0386d8cb8a283687e9c6ee602de01fff7bc347370945fdde40 3ccda64a7f8ffeeee04dc6cc23c226e5cfd3802d5020118343fba14cd38ef89f302f5adc34136bbea1a49e73985a80cb0d24c6481c22aab978fcae185bc6a400 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 e9eaec608125f108b262223d8275ac476ed6ee45b8c016f93bd7ca0d14102185 2737c37a1987b6a5bc55fb7a29ea5c44f293c106d86c9617ad647400eace30bc086730fad8fbe1eff00fc7858adc93422f568dfcff751994eea3d65eb7cf5336 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 1eb87545a48d3e796deeca49ca998d7078fc06dd99d2acd1c5ce50fd1b79bc90 5339462a56597a26c1c160b49c140b51c359bc7eb2bd9423cfd98ba3f5c4952c44fab1bd36fa2356565e8bec41726912801145e017a5046cf53f0b8a0a71d6d2 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 35a7efce6ca59d8fd3ea0fcd4210da11d83ddeec7a69416f5ea565a655071e08 f787333cc874ed9f0dd28268cd71a7bb5c18bbe575d8ec6b33912488b35e471b8fd2751fb98058d348ebad69b87ffee8b66c0d9301775d5c8fb5ebde01b4655b 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 6521e3d4586568cf7c18fa9ec7bd14bff8d212d1b3a30b7b97e72d7ad6d8e8d0 50875667c8a905e1500dd82cf4a898bcbd94b6da007cf94c54adc88c734d2947061b89f07b1cc3638106d09ebe123ffd090e88e822427d38c5f6d3caaa0c9af3 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 4af52c135fc9935328bfda37be1007fc72a63d4e6d62ef7a1c0377d23f5667c0 e2ce5183b03d41a851c72ab19444c99626131e8a783bf1112bae2c623381da255afb0c9e45538a0b1725bb4e1a459bfa3256ed168a3636e97f9de47a7f7c912e 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 -252 31c00d6336eae9959d0b281d3eacbc3b01b8fdd207840d9636e00db418212aef 8ddffb9d9dae3089aa77383a94c56a315aef6cf68b57d19cb4b1fc68317ccf8619cccefea1a3b0a3d82896f9046006fa9fcf92694e5fbd56469fc4c289cb516b 308cbd43c28357bd288c1a75d98a35597466697668a34582a193163eb8c66793f759cd81133dc0e238e192eddc17874994873bbcbae8ba3bab714d74f6939072 diff --git a/sample_lsb_input.txt b/sample_lsb_input.txt new file mode 100644 index 0000000..12dec11 --- /dev/null +++ b/sample_lsb_input.txt @@ -0,0 +1,70 @@ +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 07d89c17918ddc7d9b6ac7e86ac8e5c6d839b71490cf383107a64f3084e1c327 7892424591c671fcd7cdd0b43e761a158194c4601d28f2a92d8327bb7bc0ec9d3e59ccbcf697e601fe9f223ad731e61924661ae6ad068f2ee738c77762f516f9 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 f38aa92970245da508b9b7017521dbd1f1a5669cd8ebd076c71a14ea93f65f00 51f0f355023961e6ab3d13fa8931e5805a5b0ece9895771dba43d4f772f091e9ad178fc98ddee05519ec9e84f526224dbd89bb88cc60c16c2b6bcdb004548da6 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 1d61f3aa184e3232246bd6bce386decb4803a66860e40ce303999c7a03837f17 1b5654d0c03d18c08aaf99154dbb4907cd6b728e3b54f5d4373ace5c8d6423a5acf10d3f142c73aa6d988f3576842fa80107b189a715238ba6bf436c976ad75f 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e 5993e1a2cbabdd3243defe4906975386d82be7b1c2a6da8cbcdfcdee222c2720 82df2d50c6093400c2341d13d181a780755dd20e0e7630b09c4a43ee6e4b165cbe2ec0605bf9ad6c0806b3c0ee9dbaa879042394363eaf5d814be5e41484a3cf 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000007 0655573ac70338a9617d1212b139c249db8e7cd84d9311c1756b8a773fe766b6 687ac5ea93254e21ba72e594211d3c704a2f5c60c0befc14cafd1e6338aec1e18f2a2e88316c0836a498e745b551c01447a0551f7569dd3eb8490fe9ea931d01 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 c1042671859751e7e91ec02499ca1ed30a0ab945f04ea0dcecdde47ae8370f77 3bc22fa305f971bc449d2723797bd5ce3cbaa6bfc73035ad21556ebc479d260f67fd43c7be02a652940a6ecf061b904ab04b658adf4920560cd2438ea0edd988 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 bb40e934544fbc7f7dc8a0cc3499cdbc2eabfbc4a9d75704ed4bc3225f544416 8251d3cec1c9c859f2579c97b6656e85c3f86a58751022c0330b24f58d5eaff77a63cd842a5da0beaa3a9c5b6d715fce4eebf15dde8910cb4bd42ce8553c3ea7 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e 84cfcbddd18dcf700ef37a8ab095dc3f94942767c1a0f8ba9392ff9d48dcabd2 d0ba388015b66e98463d126f5c6e26d47e94ba313ff022db0b16c8e2578cf17320f0064cacd97b82c3b7b2acfa103e1a7df8a10aea0534b55959756d2e610164 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 eca5378614cc9033c19c8817115158bd63ee3e49b77528fb8ce4895b7f90ce7e e6f2c661039dd84d12c6b39c54bbcff127e286a63f206b0bb82be88658229ce099cbab00a1a525e00b23fa00402f368428968665452cfd5042e205361fe6bb86 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 0831217d69dfde2a4e5ddc4812b6cfca8dfb967cfa48e86b23b97045f0197a97 7972c24ef9fa663bf0cd307baf80d89347e5cdee8da081c07d87ad54f8176e8efdba3202168d2f9fbc6b5ad206d33da4c2edcd2665dcbb720e58e3a96e58cc79 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 353266ca1f22445acfca45dc81364fa548a447f635f6b750a258d071054e726f 6dd277c0e25051a9ff136d05b49001b091ebc70fe5c1cb75e3bc72c9a0cb1ba217aa980df1cb311a2c91d9d74a77830e317b45b5e9b63ae60029735151e2c6d2 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000002 db7f11fcd97c2a40d100d0531b64873fad57ce3b9263abf792e761de0aead34e a2b4df76b084f6abe58dd6c9c450d6961a9055f06165c8e4d4c8024bb2029e8bd9f24c2709d2d69ec7952b2333308c1c66540ad6028c325b0f598e43de33e104 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000002 f443fc153f142284c985940b5c83130d1a218375e6708c06fb1f899391e31671 5fae88f82f0e69e3a977d0932db65060ba05780334d3230bd58623352158386d71364bb11edd66b41992abd350af3ea80ef43d4e86027f6ce79dbc8522a3ee33 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 bba3b1184607ebfb44e619d41ea510d1b98d191e1b374f91b1281bb94dca3122 3f3148c48414a569f3f016fb98892bf515fe34d6aa8ecae22cafa8113a0436eb3bc7c45d67e9b11426892eec44c0b1474224c3e88974233551b0d171b69fb6b9 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d be3ee93f84afb445bc598c62d48d28d98f6f1b0dead494fd1cb2556cb53a6947 e5ad6197862442581bef9fcb1d73c25086581ab2ae16414f83a6ff8a96813838b80ba0fefd9aa57440b6aa41afa93ac96f7133225e2239f8a3b3e33cb1936a3c 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 fda2c784faa2ef203c9c0f8a13c74af93c47aefe79473e63bc0d321d10e69565 3ac499896dc149f56c3e3db3cd08bea1be6c8f53e589e63bbb742928463146ed28dc91294767d578de7e7bb58744122ce4e6ccef99debbdf172a91ec504c6dcd 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d 6a0e2b93a50ba12ffb2cf08724e09a050b1348a23734d238bd10735719877df6 4fa730a6a76d5e0d42b9683549c70d3c6613b3d6630e7b11720ed1afba609e96f9cc4a49f61711193114a4769b1914ae005e5d71f3c4f2c5f028a3cb386bb7ed 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000b 02b9301a6abd12193b365bf3385fae03581f4b444ad31929cbdbdd0926c2b9ba 125997adefcae7a3f3f3463867ad805d063b025ae3960aa341a3ee03361a580ab3bddfb45c784409bcb5cd5846a3b66b1f06b1e18babfc2f905012f4ae454ca1 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 67ed6722f5987194d59240c33496871e4b55de9475c1a1b4466bb067a319d0b7 367a71cc7536f3e34f880ba715f340d6bffbb34bdca2658424d8ac54a36531d8c0ea8f75de19effa47884bd48cd62721c6cfbe5f4b275f44440b7fe05eb10129 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000002 8682c89aa1ba1aa19d7be7c840965042c9a009e0caecf025fdaae4173924c05f e8db005c1d7f662ad8793b34fd0605cfb80727a3d7fe18077e555fa19bda23c9e36a8e79b87a2c3a5e940e4cd52092cad0bcea73fda042a863b7e44fa08b76f4 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000006 c59c91a95ac03de06556916787e4d06247718636d189ef6ef3babec074a0e198 39f65b5b21e6e59f33b156dc55ab819aecc7f4847362f5014dbe32427fb6dfc0a0d242690d84dceb36ff0f4dc6ba2d3f77eb58987554d45700a347d7a7c30e0e 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d b03d1f7d3e64d4b93e220fb09d1b2b7692bfad4dc195b6c2f286ad101ec2aa82 6e4091c447697a93b6852befcd7197d8bd3f3f5a812689bdd3379a6339fb5c16778e67bbc957f96bf6b2c08e66d20ff4c7570ba5b198854a53a3f6feba015c45 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000c cb2f99da4be65106e9b400100a27742f053288743e665e6a715dd7c46894020b ab2ef4dc5edc6ad326f7c3b9164ec5fef7a18d794f70dbdb2c7fc2f53bc4fe4cb2c6d0aaba4d9bdd042a7e1166df4bb60b8ec4d9a99cbf2946c7238aa695669e 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 64e82a7a7f7403da4db74237ae2834d8bb9121093fb4f8058fd583e3124dad21 cf49973f703e9006c492b73ca3dc70bcaf19769524f1e29c9f82564d4768022a438c9f829e6bb4229e13f3ef544f3e4b07dfd64207daeb6f693bfd16804b5990 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000004 f971ff9538d8db7960620e86761885b145c1bf7db6ae0a476aa5d262532386b2 8727127670ce849cff57e07a483bff6a13a2849c6b0bd35a59c10766938069e83e0c14bf5a48375db28d0a1414684bd4451b1eff0c15da73d3b161db7369caff 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 42b4a184600f8cdfaa464e300e09384b01fdb3e103652e92d3e6f441db555fd2 031166f1492b9b6f43a65a715ad4c693105661b810a8c8dafe0b44d25526c4d8dbcdf6c14f411f8f1084b5e93ac3e67620f4b8da1ad8fae13060ae2ac4eda7db 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e dde74b537e423532d7b0cfccb6cad82319e75fee7bb5b899d82fde71dbaa30ab 02a9cc50c24866863cc4d15931e59d25910ba5c2a3c032cf28ef2b15b0a472ae683fe9890a03c8493785b4e2d919323110b0ae3756a71ed370875ff98f474a47 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000b 05b3794ee53b06ff3d7f0f8c1f0f2a2cf74d0eaea3a69ae75ac0f9adcf8c22fa ab73eaebb205a0c542b9b45a3d732d72deeb5cd0774f161c624dab83fadc2de6b907f80074f239fd0906fc36fa6d1d81775913ac1f3dec234a1d706c16d9b6d3 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d 080253d3c43f805f429e6f8e06bfcf462ffee5ba0bde736b7dd30bc976c036bc 9d65cfb7232783ded39d39874cf8d901f5f7399457e9b414d201f0ba3c3fc16da8d95811cd7f98840ca7e7de3744193a434289fa4507341fc1bf5810536c6c29 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 7ac973d12f0fea259fd59f7b5c317fb3b9712d0d736e316c1836c9d271e37549 6faba1c30701e11e412801df3278596d24212fa3918e473e86e85e8945207ae0fba459a638eeb3b397c55a8defd5bc868bd223cb80a8e80355c6046bf797cf24 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000000 2bd9c812eecd37c926f85b4e9477ade272c6e7e0543a1c3f693c591d9df58211 da910fbc5d91b5e368174317bbfa067ba0520a23319b22ba8c282e8b567be59a6d5a04f8fd7ec1ef7e9c8243d4e83317c3e90b6d53ca1be05c0e7c73715b1cbd 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000a 0dfc063f7638cb9af03fb562bd4915c83194b76de0e14e0af0ae5025f9c2dcdf d8556750ab90b672189ea55686e3ae499dab44b66438d635fa3346526c16f3c66104c66718e0e539134fbb7eaf6460b6f59a7f20e01fc3842ffc9cc3d84d00d9 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 4c60cad3922a81afa609ae1bc4af34f82704b5f2520fc7662f02b25d798fbf5b 335e1543240c52333e930194964eb465c972bc45dcc224e959617c245c875d57439b3ed204d3266032e12b60b7d4e665916c18b119db82acab89f480798741d8 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e e9087992a48e03d3f0c6b8c77c887ddeecf07c2f710b1365d5d7492f795686fd a43e1bf74ede291eba657082d14f0c3850a0a95116d76e27c6bf9f2e9eb3a021837dc35003e30b7b293f7614a331e477b5c487c4af5d86f0063f3dfb4974cae3 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000b 0180917c1d479b9dbce005f0aa08f9427a523a9515aa6982a483cfc3129d500f 31b3cbea5a5529d222a61afd77d750e0f4ca3a97a46921501e7665b47ccb58ec472597d07367d8b3c48595abe9366d16902e27180ae967d64c64f4a10e3ac484 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000001 b3e4d65a50a27908f488940be8f66afa9524a84ab0f7523e08e895e8e3c98553 e66239254d2076e125760fa0095e6f0394b1f48f921cc7548ed869d12476e1b5b5e9258e66e93c4e0322c8282817cbbd81c233a51c8353e44f975b301206a6f2 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000004 d797f4adc848b240dd949e73efb647f0fd3cb7e2ea0b8934b322028ba4ed005e 23b9801e886e6a213eb6b04376c98061ce4d5065c4f70fd009495fb586102a3be4910dcc4d38a6a6ecf4261a39a15b99c248536c372d4b63e5da86e625f33c38 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e 3acbaacc2331b19c13cf91d0ff2bed994297fe035fb7f933faf5787e65851e51 c509ee4bab294197a1c842da3a125c0c41cb395aa39840dcf4981d6f81bbe7dc4acbd8b3b618100f76b773b5858b37249485081830791097404a22d60b10667e 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000000 3c88da11b4c9e7c1ae52fb344b1b07ba7b55f6874e80fc7f8a6b40903223e28b 3fc3dd7903010c38e566a3d4563faba7a5ccd8d85b0a0d548ee579d21c4edf70335fe0c596bc86df5131c1fa9fc1e323d2c639466325ffa4cbf67e56cf7cb2e0 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e f8656c6ba5d406bf82a162d5fa6a9b116c3ac0df64b8b3ca952c3d3af02337fc ccf742b7187fb96b176d59ea26b0c6f69303bcd7fd78eab03b77874f86e2cfbdb61b848559355cf695cf225a5f56b4356c09d3f866dbf1edd889edc317638253 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000009 7118dee1f4ef3e1e869fc9e645abfd4fc118400590cc229763416d52a63d56b5 a7a90f7b0ba7eda37bb8b71b235eedad988a38702908d1d32ec40297f52b33a22e1c800b68c5e3307864e6f528d9a864fbf1f9a5ad30de5c831a04e32613954b 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000009 02377764d79634ec934f969a40f91bed8db239e890f827a111917840efab70cb 1c066964d96d29342cd62ab78581f6aeaf9d80a8077f3fc7de798643ddf557bf305307246819255db855b8679cae062735948f51365b0cf4b48ab6e89a4ce83d 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000003 5ea828c36a23d04166bc565bc9f1ffd775bef8f0cfa33177a2b6f2f0d7fa4123 37903dbff4d52eed1493b50781271025aa2a7329352e746881e4044cef39a481fd84e529465b8c2e5261baf09f96d93bdddef51b9b673ead610281fc1442dbbe 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d 6a927126e2ebebd805104a4a4f27c4e33c4ef2fd8572c5acf324f27bb077b427 2df5f6f317e759b0bd0232d1dea9b42152b415095e8ea7e77ccafb0e1f4cced11c9dbabfa7604f76f87d605ad1c729821f64e6e7e60510cfa4b41b70be7e9ffa 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000004 bfc526383ba885a66a400b5d0a15bc07df5f98aac9168bfc43496dc9936f192a 8427a0e053eebda2de38f09371f1e6d993b7d7606f31f6e725d72d55b58dd490550940bf5c03adf3f2d3ce2ed19a0fe976cda29e091eaaa76aac09c355af81e3 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000009 5e330f01ec0035be11ba6e2bfa505af1cadc643badd412efcf774f953b1a834e 2acff8dec6660000c4f872d53674831aad3cbc388112eb9d63188bd9af7547a2f114630b799c9f9f9667bf7bdbfc26ccfcba64dfaad30d20eeeef10f1d23192e 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000003 00d553b23b03dc70778123967b786b9bb854d058ab2aff3d09fd5a83796fa6da 57f1ae099389f8d32a7fa496a2110d9f6c8caf0f92157cc64bc1a7753a7cda26a3136dfaa71a5834ddced4886bd561fb9df61e6941c4dedc873c3b2c6926130f 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 79fabf47f8579ae396c17d82963a17252c72aebc57d263eaabf9fe371f08171c cdfaf7f6dccbf6ea03a8d3c765b0d9425b3277274a9a62b46a046e577543395b3f7059ff30b25b6b902097fb08ca43c7009ef3c26b83872f1b5a1603de510ec7 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 87b93c387e27ab6f5c7d5f6e2c63899417f8ca5e89d7747b4d82aa1511a34d33 6a54a37aeccd70b53043ed3742bc0cc0b04ac906ff85ccd4d54b0df0e6d06f9710b4077c20b4a2f2d4f2b76c1c67b63f8d6f8e96da17da8ed1c5092e285f9ffa 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000004 a80275ffc1ea5bc9be444b7e5c816b72ccb68b85383e1acf3f151d97b593763d b92cdda768b131f42ac77b8e984889b6b99e209106e83c5f06090e81a64219856af2ba83746825aff883f5d9407a6dc38459991b76110afed58801935fd799d2 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000009 82f9d37ebe99064d8c164b8cdb0cd2d1ceea0601d068379d0f75168d0091e12c e57956c73e12e73a1f175f909115e1d0a20ae0f948f34e275b6437e766faceeb090d568c327c954f7741a0cd911717e37362d2baabd7cc4831c6e5ca3b999bcd 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000c f2fcaca5976a51478a33087e75b981caa6a45a2860c0c8b349cf6efd6203913b 8f4742ad67c50e2695ed73ce20cd27b482058c6340ad84754f859e262273f0943537e4129e9970e32addf4e5b6b9965ecb7113c6390c3a420d6aaaa1805d76e2 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 632aadf5715d4adb3aa3ae910bf5dcbb890a4b87722afb106c5b458a5b932485 1c0bab1487ff3d23fa65e9ee30af50326a8ff9e9ec6c82abc83264f28e3feba1fbc2726591f06db414a74a59bccdaf9e729683335c445f0b0a9f215fed765fb1 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e ff54169941204c321a680611a1962818fe2048f813f0443801793e9815d86cfd 0493b01690985a776d431247446c76039e0f088fd15d6acc4bcaf1362f9b7f54414bfcc2aaf2dff8c453f9475fdc734747e3796f0c690b363fe309e4bb89ea5a 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000000 acc3c64964daf85f1041b9c42594f373ff85689b8d3af5ad995c0b9c8717bb78 e84be560ae51a1e5049cfa24502d4477ccb32842a77045e7668d462885fde307ae37e8b5123b27a789bd1d163e8d95c7e0f8411eeb9496d4e9b51c9ae41a2ad7 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000000 5127f4e006999e297669ade857188ffe9e12618072033c944a3346e450a89fed 62e389b5276f1b3d3819852fac37bdc53ecce65969e33ce382428287de5e3261a9f60f6eb6f0b2f26c22438f035a2883009515a224a0a7f7422336485fd29940 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000004 ce890d2aeb90a4268a11e53bf4c0a213faf543aad1754fc28dc3c64a57c0bb4b c45e95e8c4495990cf000de9a0759cca36dd9349596635fc48e3c6b4e4d15b5c3ffc9f1c98109d5fe5d9f1412b3aae86c481aaff9087c7b8e36ed1a9e8e99082 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000c afe9f9b89910d367b5ed6bf5434e522c28e0caad3757638248494b7ef6e485b8 d05ef01131e82bc328388677e91d106d7c7c8d3d8ac711be240798788571bc55da7d3d8964a0692623a7687650a16e53ab1db035376b8845fcc4962455f43c9c 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000008 0278b129bbf462932c1661de3f265714418ef3d2d02494f21d8475a3a6d0add0 29b4f56b48ee2588bc9a503d5ecc29304933dfd533a7066a4be809f0c16128a75998f381f27fd4878977938a728c09def8aefad190a9a32ee7058cd5e2ccd691 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000a 8a172397e237fb9ae918ee875aa916e317a33853f79f3708b9708065fbea0890 02fe072496278a6010d4be457e66123600937538cc9fb69079c929a205a48ed12788be169c3bd3caa283cefd38827425afb743b21558151f2aa341d473768306 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000000 8ebe7967e8a28b8d3c684b7d8b09c847472777ed46022c23e66610ea4e075725 ba347885ebf8e0e61baa52590d3d0e829a02d5d8a579b151419a9fccee02f3f66891231fef38b38d33ecdc789641edc154d0d26087681a3b15d62b154f5a7e6d 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000d 5a19f32d8ab6a4979852bc34e6d49a37532c6d53160b9d3c88f66827e4909267 d6158321175c3303e8d5fe821b257046b485d0f8c7bedc84b84f01f82ac93fa5b3e8e14fd16a954d76999ccf954231d6d963b2c8be8003f1fa8d647c32f06ed1 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000005 55d318ad82e31327cd2d23125358db75df2c3b85dbe1d4227edf4373c9960c42 91ffa6c02ca4cdf476b2c3493ea62d0a1ef14f491acf09f89e0cf53925592d8c2b2a59c8516175a811c6667930c10759679e2c45d344c319b98a8a95501dd2a1 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000f a9d1fdd631e669db01e40ecf38aa8448b07aad599fd8878d1f54d0ff6e0c946a 73276b28a5547e39873ae9cc23ccf451aaaa447e7a5193bfd4b15b6b468e57fd4d956c016a054c26902611ff036e1418cf9a3a268fbe3dc907193ecf898c20b3 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000009 ff0831675dd971a70244f3efa8e44bd6fd664418e1cba97451de698d504d9f31 266c86cf60a6c97e5c429ca05ec5ffa24c77e1515d4e81b5b282301a003eaa58fc4391cddcbcbe2d23145183e867a1d1baa3e094dc1aecfd38123fd30c476762 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000a c44054bbefb956d67d93b9722cc880ce814181b2e41a7c62c30c29512ac767fc e51154fa834b93dbe02552854a88f706e983aa69b1037dbaf94b62cd854ace9fbaf5a3da7d91917d8c8732c645663c87ba7ab7f9053485c826e4ee7ef9bc71a3 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000006 7672c1d71e415a92bf1ff6757c25106c8ed001853fae077545babc4db83580a8 4f2bf1be83d56dfd43c10627a0549397ffb9cba7c5c1126aaf629b616b2976e821390dd76ae6c981056c0486ca2ed2b49ee766e66e2bcb779126ddfab322346a 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000b 013f6a2c866fe5d1d3ad3a58226cca290c39dfd1108e0e6191e59635f4a9ec76 016f49fc473cd567e96f1f1666e5d3197af0deafd1577b8e47da7561fbca04346dbe63afc1d926de0cd4b84a123603c923d578abcdae8066664c99c0b3ff11ec 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 000000000000000000000000000000000000000000000000000000000000000e fe2323dd3b079abb16e8a68fe5e1e551778fbbb2737bff25991385d7f3105ccc 2a76aa8c657a9a1ddd9debc203d6b962d102d67e7d0b9fdd1d29ef046890fabcbc6ded21d9553f6a02d2bfa32dbd7c7e4e22c0f66324f33770ddc14238114470 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 +252 LSB 0000000000000000000000000000000000000000000000000000000000000002 cad6fe8eafd980067a9529ccdfb4f1bbdf77817c7e24dad8eb48ff816f6c28dd 9be72ea358f32524cadd5c636312e24cda73bfdeffa5ac9bf12e6bf61f3524eca83ed7c45349cf65a8f42042d9b03e4bf386470f479395801611e91e4a1e5a9f 5f06da96c569d5697d4853ee5838c2033b417df455c3f99b8ce7eb9858ce80ac3b5268b8a9888075d6cd1928e86cb83588bd44c5b0d2ca74158713b0c8e17403 diff --git a/sample_msb_input.txt b/sample_msb_input.txt new file mode 100644 index 0000000..04b79f0 --- /dev/null +++ b/sample_msb_input.txt @@ -0,0 +1,60 @@ +248 MSB 7400000000000000000000000000000000000000000000000000000000000000 17a16fc79bd364282086c4b5bf2b9593d4cc6593d0ad485e37e46a7ed80da166 3428eb612a0917278e3345f10a533d3004bac3bbd0762dc01762f1891b47806e245c42512ad6e764c08151bf07a28ea046ea19a572a75e87cfb093e35e15c2d9 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 0200000000000000000000000000000000000000000000000000000000000000 1fc0b1033342f463b8c7be3129847792434aa1ceaeb01edae745b08457fc49d4 8d2a6bda16e7179a7e8647f46da9d26081b78e7b84baa4b2d02cc1b4e592ba941722316b4020b4f0c4dda357e0522a0f342713ebac675d1bdf59446471dd5ade 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ac00000000000000000000000000000000000000000000000000000000000000 f8ce8cf91f2968a6be2cb54517ca366215700ef2d0a8d54ea03aa65650646db7 a5c6c814fcd6fa03413b797b6eaf713ac59f92c61482900bc9386f5f45970bf9e16e62edcce449a9bc763f1d897456aab16616e35a84b27f3aab3bf8d7a1dd07 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 2800000000000000000000000000000000000000000000000000000000000000 56ce0a26febab0b3d69f9532945828df2642ee606b471d7c2297d2b9caae86e8 4274ee41bc7dcd1b78f57d66ff79124fab61b2d1671e01984b65a9ed970b85d3f1b0aa7575bb54a061b8926b41a423cccbaa50ee4bf68bdedb1974ee3201297b 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB cf00000000000000000000000000000000000000000000000000000000000000 c3f15951b5521752f81017a33413e96b76d6abc6733f74be43570ea1a9955602 ced8c648e3e0bf9daf41bca220355816281e6e251df20c82509f91e103328f820b7af3ac9fc51298b8888028738ca1cc4f1f59376d0337e4b34f40aab83a94b1 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 2c00000000000000000000000000000000000000000000000000000000000000 5b0449739d5683240818002b78910bc128fe3a3fbf4bbf73105150584d07c9e9 4f1454c8959eec8ce115f86d4e6de509e3dbb0fbdf4d8ad16e1d0d9811766aa00cd8f925e234d5fb60422ac408018ac8cb2dd55889a681378ea4623ce6cd86f1 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 8100000000000000000000000000000000000000000000000000000000000000 86d0c6221277fc6db734228e473b43a9593890ce7c0dc01ad9c5380ce3d262f7 394e968dd29003f169baee03138325e75b301ef94fe8377968067a9068c62ed129c7a62f71cb26c8ea7bcd0e113958b4ede7d07ad6be98c41c5e684685204639 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB a200000000000000000000000000000000000000000000000000000000000000 2d1f3ff51d709f5bdbd8c4f48dafcb949d49df0b6464a0aadd38e88d6e677768 a4e0efd874170a26dc26de31019c3cbda5b25702aa01ba8f18ad07034bcc2bba8eec32f0602d1404d6bae22fb73682641210b194f89a254c8f3733444a1e82bc 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 4600000000000000000000000000000000000000000000000000000000000000 6c232e7eaf0ed9d608b9dd96a195644c272b8261cc53b1ef5ca6ab493c8dda8c f5fb3d243ca2f425f6655a3dac0562afb235eb6a6aa8c032fe49c61eb0e5766d852456f7971069c5665270974b74aa654bc28caa1819cf545fc9777eb06ae1f3 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 9d00000000000000000000000000000000000000000000000000000000000000 82ca840a1c5ae05222eec6891f3529e29af42cdfceb736405287ccffbe4fd9b5 fc0f16bda592a82b5a0225cd2a0d0b43cfb14724ea245ccc254b95bef82ee3895bb041cbff7c32bd371a5fd28cabe87c01ec017be9b3e3be424a7cbf6db8c9ca 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ef00000000000000000000000000000000000000000000000000000000000000 fe0c7086b92c320c34eefbe037de80787490aa14a70b435ca98c78456e04e153 a26c2af329865c9b184d45fa1f37fdcb058c312c485c7a17b62de7ed4a39e57f3511b50f5a7f237bb3840c227f29336e2db0ae3998717ccdc83a3fee89a47b26 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 1f00000000000000000000000000000000000000000000000000000000000000 355f5967b77b7f1ca195222842c28b196089a1f8b4a611b0ddb41c0b342b398c 5bf2d9f7a583e18afa4183477b2417f932164ab929cd4106e9d2135713879020edfa1f8c8e6afffe22eaca5add7a8b6bfb6f87e63c6f7917edfe2f2f2ad72054 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB a700000000000000000000000000000000000000000000000000000000000000 bc8970fadca53458f5b24a3a5d41d918eef7ac2af5175906a42ace2dfdab267a ba9389beb4a0bdb8e7069a5efea9b3685b9e3a95ef0188c27e22663bd02807accc3b617894707cdecfecd7fa06866ce62abc247591598076b4fdf26394444f5e 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB c700000000000000000000000000000000000000000000000000000000000000 c8f03d1f73fe5be257388b78b3cde58d40bf92bec43ed8f367292056b00c0ebd e931b43a8deabd634cb8228b64a4d19f2fa3a158f2630256cb7769d0664b9a1e2e3ccdb8461beb06f36e11cbf5da017683fef23d619c7db26b8f4595c861b410 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB b600000000000000000000000000000000000000000000000000000000000000 a045c956365b6b53a3f459ea5d64afb9c708435cc5994bd3ab6312ffa4a219a6 35e87532f9df24c6af15504b30189a305d1a4113eadfcf41f58037522946ec78d39f3fc7f57d44346cfbd3247eaf18a8defb624c5ef9680671e2cd425a10d6f4 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 9300000000000000000000000000000000000000000000000000000000000000 474e94476abf01837ec5442a05280462e7c1cd7369e66a0c6888cf2a21aa0f97 6e4e46edca1b96cffa1a18a951fca76ece12229cd58697aa94932d642900731f45491b2b59a3ffe8a62251cbc7985f32ff2952fe2d787cf34850cda00d39f494 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB be00000000000000000000000000000000000000000000000000000000000000 1b649db1150665d59a6e7e73ef08444fd4167aced9a4708a3d71caf3f8043ba8 ba59d782c9cf96bf3e2428ed97bd99a97d001cfa0e713f216e8945dd4326c36dfcfbcba3cf17e7541bf1260a6297f6d2d1b22fcab3a08eba32690a8f89cc514a 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB fb00000000000000000000000000000000000000000000000000000000000000 a9012d43222745ab94f28f14afd651f00765aff010b35868072b89ad409a94f4 c0d578e519a98c7085b79c6c4c644541ad101755f690eaa45cfa00c2b0d2e35e920f6abe90c9fb893121b54dd8cfbd25e7a5cccbac3aab0eab65ddba0760b46e 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 4f00000000000000000000000000000000000000000000000000000000000000 16e87ad71355ef998c64ae84fe927d26673d94c4cd03f37985d1ff4ba711a801 9bafb9d77d1670cac601a4ddbf34576744883a12677a51ab8bad5a0d44840816afbf2bdae5b35076faa30c55805ceefc41817f77dc3d404b86dd4f0a0103b164 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 3200000000000000000000000000000000000000000000000000000000000000 0f8996dcbba79d85b9f844d6a004850ecb9c8e2da31853cb30874e21d46e2f4d f45722fa0ca9df83015168d90a8de0f1bd9daaeeae645658fc5134c768aec0b14271bf0e14f927b68b9002f1ff3d609373467becf9dd9a2c860ac481968db84d 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB a800000000000000000000000000000000000000000000000000000000000000 c9918e3b34153bfeb128a5b5ac7f809da5ec0105439bc74b1dde77e7b9a697d3 3429a1e959ba1bbf4bc04db284ed97a5e91484b2f27e37bb900b034fbd015547748a7a45f091ba0ec7a4d71d24ff4421854f89e50685ea510b810ec73247abce 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB f900000000000000000000000000000000000000000000000000000000000000 3a84e0717c0f3f3c871d6435039a85c77b9f3d9f930c49149c79d345568fab2d 93acf4b60711dd360b78ca84eee9a024cbe9b8c1dc08cc924f4d32bc6100bb691380ab59a299cb402c69be06cf41d0759eac0f9abee54e0fd3c0cd345dadf6cb 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ff00000000000000000000000000000000000000000000000000000000000000 b2de793719069462ba526bad0d4bb9292bdc783d2622c05b145f088d7f3f4620 fa3d412b8b8b3aa671d3c6ac01684967d00b47598904667068c36b40874443ba014d0b89263f15cd9638cbafd1aa6d83f95f24ee2fae47b6c56c1281224b06ef 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 6400000000000000000000000000000000000000000000000000000000000000 19f124cb7ecc85f1735e6983dcda22daca8a8dda07289bf464ea201904a1f1f6 5f66ef0cec921563de766b8b8d6c26f9f5b253f56537a15fcb7dd47fde98abd19d9458cd33e23ae2a1806505877e046b5342d8cc152c959b063a53a21c34f3b7 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB a000000000000000000000000000000000000000000000000000000000000000 6289281eea67396e3d2ed6b8024bb900fc284ee6bb714b235ed4cab5410b8f0e a67666fa417df7f93dba5f608cd879420069cab370d68c293377bae4b25eb7dba796b795fc84dc6b1e85bd0ca18b6db6c921a74d642ed1f2d8a098d7047ad71c 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 6e00000000000000000000000000000000000000000000000000000000000000 6b59812ffc07edf250359af663d02356abae16d4f352c2c8ad6841ed8be95c38 8f751ba68ecfb13d4a5a7932674712037650ef271c084549387d26105f34983ea4edefdac38590aa8b3eb6d0a6f665d9335c35b5f4bb4dfeb1c9820f9271e9e7 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB b100000000000000000000000000000000000000000000000000000000000000 dcdfd57d437ae54d6cc0eafad6fcd6597abf60394f5b605b55d2b2c88616f80f 065eae0334c434c09f1db506ee007a53beb8440a2a1e46913e51536353d986ff7a80ccc715763b79d7ae3b5d43001a1b8311e577db22f1d26aeb5d111606836c 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 4400000000000000000000000000000000000000000000000000000000000000 c6a761017d436801b3053b336c266c7da4152eb09bc8f2ceaaf18839c70bbd21 db9297393c9b46f0ac280671b8bc1e4d7a132dafa54736fda042f43edfdd532ab552e6e2cdb2342f5ea46636ebfdcea89cb3a57988820fddec5cac98ad35ecaa 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB a600000000000000000000000000000000000000000000000000000000000000 0837c5f16c9aa8288bbd7ba58f3ce73574c70ad2ad89ba32ce8c5c5fce200fcf 332974c5f3d00ff9ddabcfe1ef64dc1e0360ddf4181a7491179b9e5c9d8df7af0dc73caf4d3d1b006feeef39485eafefc86b7cd623fed5b5cbd2e0e7578029d7 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 5000000000000000000000000000000000000000000000000000000000000000 a2aad859e1380f44797b7ccef5e66b13e3c1c3bade6e20f4fdf4910f7e6aa639 13aa89a1dea8dfe7190603478a0c86fbbb4e70096d771b393a1af6991e60a789e5ffd6e8b18881579a4e98d1d5a941af389cf47f1fe29ce265d5170204862709 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 5900000000000000000000000000000000000000000000000000000000000000 fcc4b5870290380251986473ff2d7be0cb192e1b9b51258d4c9aa4aec101920b 4c57460afd6f413aff00272afc56c27df6e83a4ecb8e8556b998115b2a5377bae95db5667e73e47bf758fc47108c07fdb6bb9f3a3f03972fd57fa332d0497b81 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 7d00000000000000000000000000000000000000000000000000000000000000 09b2232c4daf490a98abb164414db3c54ce858d856db8e38290d4d09af7f152b c66b92675bea73ff3130071eb59c6067b7530a62ef4ac08a708bed77379f185a8a72ba6bcd05b5e7e7e17fef0a0abdd8a40bf01754a045113fc49984c18fdc57 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ea00000000000000000000000000000000000000000000000000000000000000 77ddb227207c68cd2cc8bed067b28ca77e840caffc7a069372fd30b8d45fc943 60e05ac3f47fd37e7cbd8ed1ae8d4b81360752cc628ec8609f3a0765230c27f22673921c3b998613d21fa978836c92c1df63f349809e02b020c90027b013b57f 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ac00000000000000000000000000000000000000000000000000000000000000 4322cc11e3cc5a1760192cbe1074469bab3a6b72317650bea9896b95673491c4 bf950312e6c7654cc046c1ed9d94294477480e31e1ce849b3d95ffaa31b14f6183af20ceb8ad2fbdb2026d626919a01fbe1332acdfe42e625996b0dc941c6665 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 6c00000000000000000000000000000000000000000000000000000000000000 71c63dab8aef62aa388428a7a4465225c18a887853fa97ec9fc2963e0f8ee6af 98848fbe9bd70b5b4d5d1384d033f6ee33e6ae54090b651f054c2d8a42f98333bd11353133ebb6b29d8c2196d6dd259a04f0ec8790a69f913f01a3fc824f2d76 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 0200000000000000000000000000000000000000000000000000000000000000 4c1b2d50e0cb0135c74fd0e276786c83f5ea7dcf8fb132f5f3fe3025e745f086 8fe7886e350bc41320ac52e0d20b3478d1af16e219ce0e62082401bc14503f2326452d9fd99c2cf2507371a74705118ecd1b3daf9782e5b4fd6f7473cf5073db 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 7b00000000000000000000000000000000000000000000000000000000000000 78b57453463738f7c57eeba5b26752aedaf600085629915d54238e54eeca8bf5 034eea5ac347e6a4ca42d838b2284a9c6b1076581ad3a6b3830a9d7fe09f6ab780df6190af14571a0a982b9d9fe3104ebc7a567fb6bfc07e74e9ba333cc0d589 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB e600000000000000000000000000000000000000000000000000000000000000 fcf1c65f4a8eca0e39f142535906ad4294a8f5c64d938d1b5ef71f1bda3e6fd6 be54d6ec2261bbb2dddc739491c9f0b7039ff8543b01d287490dfbbea57b5ac90770d2ead83d4a3a3962a01e3ea2aa97f70127c96e282ce66f86bf1644b954ac 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 5500000000000000000000000000000000000000000000000000000000000000 ef1ea934f765fe99efe243a2766c09c82a7b19afe2194be841902f066691c8d7 7830aed8e5bdfaf4fe53c83b3fe67f3f7f60a30a89b0eba37a27897de573e0b296f6353da63873854c3dd07c27001bc3615ef128f9d62efe9c08b0e3aa46c146 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB cc00000000000000000000000000000000000000000000000000000000000000 c6668372844d0ee72bf68ff33f7bb7caef1f866c8085612179cdf8eec7142e19 5851546ed1821db97bfc3ae05066cbdeeec402e8a5551d08299e4543e4b7380700af491596c5e8ae7b201e6cd6347917c5383453dee149e31a8946fad4ac2aaf 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB f800000000000000000000000000000000000000000000000000000000000000 1a3a85d2f775a2b17b9d913fefcd609c705f9f64d25589a1b068f68d894b31a3 894524e3a6af5fcda96b898ab381f1c851bcb5f135d678b0efeeea299e90b611b2245a97ff95efd16cafa48a5556b465a1d376f141d7653e1fe37a64357a1ae9 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 6200000000000000000000000000000000000000000000000000000000000000 bfa5f7bfdcdb9c642fd39351b9274f3406d5b1c19b9faea8b4a20708b51afcf1 9b31fab0353e135a211cd8dde01395ae1bd206e4cab22e6e67c729e65cc9e55f45661bebcddd6ec761e648fb9f46a40b57eba9c5db2d578819c672b9c26beb1b 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB f500000000000000000000000000000000000000000000000000000000000000 ea643a3cf879543b82bc768a696e12f7e0f2c9c34868ab764b976e92134697b2 4aa30ba7965b803b5ad38141c1bc882c6ba21c7da26b072df75d2c37f038a17ad05c1c6433362366787feae4fe3421693b5ea2aa20a502972f45e8b9de411a11 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 0f00000000000000000000000000000000000000000000000000000000000000 487d876e74b85feec281ffad0a9800235b80b22a3b2ef901342055186c18568b f8d6de86208cfff487df77ce0f064425ebb146f09eb9c86699da3a03413025dbe354937d55f887b39b3bc05415f5f9217ef63f37bf79e804b486d842b02eb93f 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 9e00000000000000000000000000000000000000000000000000000000000000 1715b689e5ed25f14a185d57bca54a314b211ee40883c3790b0860afc3436fcc dce0d662dd4714ab6733848cc02777b4d1e7104182d3083f28922c5c36b13e8b3c8a2a899b40b49792706b7c93b3519fb83fffa3d6f05f34c572e6582c0bd493 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB bd00000000000000000000000000000000000000000000000000000000000000 947d985fb30bf29f21211df5aaf04a44846e5260a706c2e54defee7abad8c7a4 5966298ad217ca58868fa15ce2a27ed093f6496e21580e6b5d4d44fb3f83d2b2d62df3dbedefab61997252635ad93f7696aef21eec51dd1124571037313a01b1 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB f200000000000000000000000000000000000000000000000000000000000000 3d77104998dcfefff603ce106e5941a7db8a73e6757e4ed29bcd0d6aa28e872b 65513ec59d2fe5616122d681cc16b63150ceb3fe5e2c314c6954e39f73b99f32f2455363ddc152b92f884c6ef7409cdea6b232a5cbf185b32c597be593a11488 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 7d00000000000000000000000000000000000000000000000000000000000000 762aa0a87bc1a0aac4671e9ce628a41a98c0331e4f894586cd0ebef7c5a4cb5f e58c6d1051709b5eacd1628df4115e3c54aa2fc83a324b9cb06b061f557a220b639817a61ee20f0fe7352675777189371124e345207b829ed35023d15efe032f 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB bd00000000000000000000000000000000000000000000000000000000000000 11e542696556a605e6c658dd13c29258c2f7343f66295b7e7515113621a68c27 7c8b9c73c42e960df8d79b1e22c54b727c0a32be9b68063298afd21bfd183ba1439264f14cc095950502b9af0fc8271951f770afe73e08fd548812ccacdb258c 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB b300000000000000000000000000000000000000000000000000000000000000 af99cfbcae9d469a8a36f9870d686ffa8ab796599cf1e988dfa5d0468df6c860 5ea30090f3f66fc068d983d080b3e7825b3741693ea42bccda5f2e3096cb4d32eb2b184b061ea7d954e6df8e052c25147df71548648d5c27bd002f7125b91369 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 0300000000000000000000000000000000000000000000000000000000000000 44cb8c5843bb21a06a24974b33b7d63d246940052efeefd170505911facbe01b 23abbd52a8dbdf99ee78f4befaefedac4b48dc068a24cd1f498010339979e61f58784e8af5c773cc067dc476690dbba7b46c42b9ccbdcee16137b5b6dc8a4400 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ff00000000000000000000000000000000000000000000000000000000000000 87c699e3ecc34c8dfca3d6eec8774865bf9025ac2cee7302d93d68851b8681a6 0d388b0d3fc8464eec569dd39ee2e7da578db1c4bdc2fec224e1d9771af88bf9650b520d65f6857ec2592346103af0cb6ba7d164b5cfa7612243d788796891bd 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 1a00000000000000000000000000000000000000000000000000000000000000 0c80209979ef489fd4351dbbe4837c216368ab11ddf9286d4a94c5e6cc21b7eb a097071ced24c16b9c6fe7a35c323c274ce75cc1cd8e95c5d7e19391f565f88ef8bd9c41d9267643addb59264227a55b10f5625f8c4e1996c11809f2b0f780b6 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB d500000000000000000000000000000000000000000000000000000000000000 5c61f792470ad7d0ecff6d25032a02c863201427243f26162156f5a949d20297 81e3cb9cc59587b570577a12b03f955f4aa2d7ca5d83ac4fdb843432fca143f6a3749ce32d08cbfba3f796e3d6246eeac756bd9510a3eb5c27eea7c29ddece7f 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB de00000000000000000000000000000000000000000000000000000000000000 2474d8faa1ee266a2e1b6bcf36c05d092dcd7c9b2e123b883ccd987b590c490a 7180f38e1ded6542efbce77d66a9b71b68dfad4e8c2df88ea3f716129318720f3e6fb42129ff74c6cf9776bdf7fa2229e15fbce8f2ec2a1b2769075cba9777e7 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 5400000000000000000000000000000000000000000000000000000000000000 ecb60f7eb370b81cd82a4722f1101a740573bbefc159e498b3b648ca8ed3c8fe de6ef6da0d5040bf64a20b879b1315e59debfb5e24f0de25a0eeaa2840fd1e268ba803d6e363a95aadafb048d69d0751219b443b86587dcc04decd9620eb0e84 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB f200000000000000000000000000000000000000000000000000000000000000 60aa460f40a9245b6966e5f52706e6a3f33df5d3f504751aab974d871731d3d5 6c654385146260dc2055808c19c3847ab621a4e80eaa75bc8ed48ecf881cb346cd77bec970f46d0af5f2b9178932fe5f0f127d1b51d0a48d6c4bea24528a4ebd 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB 8500000000000000000000000000000000000000000000000000000000000000 3eaba51d5d14887981beea000007bcdab0589fb24d662ef75156ed02fbd2c778 e6e2e8b5333d4dc269678f327dc0651b924ec92b9e12ae613a93b126ba2495940536630e40766f1d7ea1d8b66295999af1a8222c83304748310b8404a48aafc0 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB ba00000000000000000000000000000000000000000000000000000000000000 21f5dd5a3cdfc50194b54ea327dcb378aadb8dab8625a8312bb6742fee77cf0f 49fa793d6256ebe580d9d52b981c74272c5fd9aa497838f703b606899b0c73961e7c22ef5e33ae5ab4d7b868313f195bcaa41f695e0ac98136404e9f9c9956d3 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02 +248 MSB cf00000000000000000000000000000000000000000000000000000000000000 5e346c2c52aefbd3f8991b32f09d4090e4e4fd3ffb889397406f2ed7eb9145e7 c285846836d87449264548f9ddb303aa3d6e692d7ece40f6e8609f1457f4730d1f31264004f6f6e14ff4082145a77daf5d8c855273f8e790b1cd09e4e25e7d71 8ac3ce3d21d4ca6644ec92e515fa75627a1513a4daf1ed8edadb6e52d6c05da2e82994ace308d7c4b0f1dbeed435e40e8295c6538fe3241fe8424382c1897f02