diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2d134fd
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,116 @@
+#
+#    Copyright (c) 2010-2014 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the make file for the Freescale bootstream tool,
+#      kobs-ng.
+#
+
+
+include pre.mak
+
+PackageName		:= kobs-ng
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName)-$(PackageVersion).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+LicenseSourceFile	:= $(PackageSourceDir)/COPYING
+
+CleanPaths		+= $(PackageLicenseFile)
+
+UUIDDir         	:= sw/tps/e2fsprogs
+UUIDIncDir      	= $(call GenerateResultPaths,$(UUIDDir),usr/include)
+UUIDLibDir      	= $(call GenerateResultPaths,$(UUIDDir),usr/lib)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(LicenseSourceFile): $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(LicenseSourceFile)
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+$(BuildDirectory)/source: | $(PackageSourceDir)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+$(BuildDirectory)/patch: $(BuildDirectory)/source
+	$(Verbose)touch $@
+
+# Generate the package build makefile.
+
+# Configure the source for building.
+
+$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	CPPFLAGS="$(call ToolGenerateIncludeArgument,$(UUIDIncDir))" \
+	LDFLAGS="-L$(UUIDLibDir)" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	--target=$(TargetTuple) \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var \
+	--disable-device-mapper \
+	--disable-fs \
+	--enable-read-only \
+	--without-readline
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/build: $(BuildDirectory)/configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) -C $(BuildDirectory) \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+	$(Verbose)touch $@
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/kobs-ng-1.3.tar.gz b/kobs-ng-1.3.tar.gz
new file mode 100644
index 0000000..140830e
--- /dev/null
+++ b/kobs-ng-1.3.tar.gz
Binary files differ
diff --git a/kobs-ng.patches/kobs-ng-01.description b/kobs-ng.patches/kobs-ng-01.description
new file mode 100644
index 0000000..c120d9d
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-01.description
@@ -0,0 +1,3 @@
+new kobs-ng supports i.MX6SX TO1.2 NAND boot, add SW BCH to support
+BCH62 ECC instead of hamming code for FCB, and use SW to generate
+randomized data for FCB.
diff --git a/kobs-ng.patches/kobs-ng-01.patch b/kobs-ng.patches/kobs-ng-01.patch
new file mode 100644
index 0000000..4004cfe
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-01.patch
@@ -0,0 +1,3170 @@
+diff -Naur kobs-ng-1.3.org/src/bch.c kobs-ng-1.3.new/src/bch.c
+--- kobs-ng-1.3.org/src/bch.c	1969-12-31 16:00:00.000000000 -0800
++++ kobs-ng-1.3.new/src/bch.c	2014-10-24 20:35:24.344372832 -0700
+@@ -0,0 +1,1545 @@
++/*
++* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. All Rights Reserved.
++*/
++
++/*
++* This program is free software; you can redistribute it and/or modify
++* it under the terms of the GNU General Public License as published by
++* the Free Software Foundation; either version 2 of the License, or
++* (at your option) any later version.
++*
++* This program is distributed in the hope that it will be useful,
++* but WITHOUT ANY WARRANTY; without even the implied warranty of
++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++* GNU General Public License for more details.
++*
++* You should have received a copy of the GNU General Public License along
++* with this program; if not, write to the Free Software Foundation, Inc.,
++* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++/*
++ * Generic binary BCH encoding/decoding library
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
++ * more details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 51
++ * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Copyright © 2011 Parrot S.A.
++ *
++ * Author: Ivan Djelic <ivan.djelic@parrot.com>
++ *
++ * Description:
++ *
++ * This library provides runtime configurable encoding/decoding of binary
++ * Bose-Chaudhuri-Hocquenghem (BCH) codes.
++ *
++ * Call init_bch to get a pointer to a newly allocated bch_control structure for
++ * the given m (Galois field order), t (error correction capability) and
++ * (optional) primitive polynomial parameters.
++ *
++ * Call encode_bch to compute and store ecc parity bytes to a given buffer.
++ * Call decode_bch to detect and locate errors in received data.
++ *
++ * On systems supporting hw BCH features, intermediate results may be provided
++ * to decode_bch in order to skip certain steps. See decode_bch() documentation
++ * for details.
++ *
++ * Option CONFIG_BCH_CONST_PARAMS can be used to force fixed values of
++ * parameters m and t; thus allowing extra compiler optimizations and providing
++ * better (up to 2x) encoding performance. Using this option makes sense when
++ * (m,t) are fixed and known in advance, e.g. when using BCH error correction
++ * on a particular NAND flash device.
++ *
++ * Algorithmic details:
++ *
++ * Encoding is performed by processing 32 input bits in parallel, using 4
++ * remainder lookup tables.
++ *
++ * The final stage of decoding involves the following internal steps:
++ * a. Syndrome computation
++ * b. Error locator polynomial computation using Berlekamp-Massey algorithm
++ * c. Error locator root finding (by far the most expensive step)
++ *
++ * In this implementation, step c is not performed using the usual Chien search.
++ * Instead, an alternative approach described in [1] is used. It consists in
++ * factoring the error locator polynomial using the Berlekamp Trace algorithm
++ * (BTA) down to a certain degree (4), after which ad hoc low-degree polynomial
++ * solving techniques [2] are used. The resulting algorithm, called BTZ, yields
++ * much better performance than Chien search for usual (m,t) values (typically
++ * m >= 13, t < 32, see [1]).
++ *
++ * [1] B. Biswas, V. Herbert. Efficient root finding of polynomials over fields
++ * of characteristic 2, in: Western European Workshop on Research in Cryptology
++ * - WEWoRC 2009, Graz, Austria, LNCS, Springer, July 2009, to appear.
++ * [2] [Zin96] V.A. Zinoviev. On the solution of equations of degree 10 over
++ * finite fields GF(2^q). In Rapport de recherche INRIA no 2829, 1996.
++ */
++
++#include <errno.h>
++#include <stdint.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include "bch.h"
++#include "rand.h"
++
++#if defined(CONFIG_BCH_CONST_PARAMS)
++#define GF_M(_p)               (CONFIG_BCH_CONST_M)
++#define GF_T(_p)               (CONFIG_BCH_CONST_T)
++#define GF_N(_p)               ((1 << (CONFIG_BCH_CONST_M))-1)
++#else
++#define GF_M(_p)               ((_p)->m)
++#define GF_T(_p)               ((_p)->t)
++#define GF_N(_p)               ((_p)->n)
++#endif
++
++#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
++#define ARRAY_SIZE(_A) (sizeof(_A) / sizeof((_A)[0]))
++#define BCH_ECC_WORDS(_p)      DIV_ROUND_UP(GF_M(_p)*GF_T(_p), 32)
++#define BCH_ECC_BYTES(_p)      DIV_ROUND_UP(GF_M(_p)*GF_T(_p), 8)
++
++#define METADATABYTE        32     /* metadata size in byte */
++#define BLOCK0BYTE          128    /* block0 size in byte */
++#define BLOCK0ECC           62     /* block0 ecc level */
++#define BLOCKNBYTE          128    /* blockn size in byte */
++#define BLOCKNECC           62     /* blockn ecc level */
++#define NUMOFBLOCKN         7      /* number of blockn */
++#define FCB_GF              13     /* Galois Field for FCB */
++
++
++/*
++ * represent a polynomial over GF(2^m)
++ */
++struct gf_poly {
++	unsigned int deg;    /* polynomial degree */
++	unsigned int c[0];   /* polynomial terms */
++};
++
++/* given its degree, compute a polynomial size in bytes */
++#define GF_POLY_SZ(_d) (sizeof(struct gf_poly)+((_d)+1)*sizeof(unsigned int))
++
++/* polynomial of degree 1 */
++struct gf_poly_deg1 {
++	struct gf_poly poly;
++	unsigned int   c[2];
++};
++
++/*
++ * same as encode_bch(), but process input data one byte at a time
++ */
++static void encode_bch_unaligned(struct bch_control *bch,
++				 const unsigned char *data, unsigned int len,
++				 uint32_t *ecc)
++{
++	int i;
++	const uint32_t *p;
++	const int l = BCH_ECC_WORDS(bch)-1;
++
++	printf("!!!!WARNNING, source data is not align\n");
++	while (len--) {
++		p = bch->mod8_tab + (l+1)*(((ecc[0] >> 24)^(*data++)) & 0xff);
++
++		for (i = 0; i < l; i++)
++			ecc[i] = ((ecc[i] << 8)|(ecc[i+1] >> 24))^(*p++);
++
++		ecc[l] = (ecc[l] << 8)^(*p);
++	}
++}
++
++/*
++ * convert ecc bytes to aligned, zero-padded 32-bit ecc words
++ */
++static void load_ecc8(struct bch_control *bch, uint32_t *dst,
++		      const uint8_t *src)
++{
++	uint8_t pad[4] = {0, 0, 0, 0};
++	unsigned int i, nwords = BCH_ECC_WORDS(bch)-1;
++
++	for (i = 0; i < nwords; i++, src += 4)
++		dst[i] = (src[0] << 24)|(src[1] << 16)|(src[2] << 8)|src[3];
++
++	memcpy(pad, src, BCH_ECC_BYTES(bch)-4*nwords);
++	dst[nwords] = (pad[0] << 24)|(pad[1] << 16)|(pad[2] << 8)|pad[3];
++}
++
++/*
++ * convert 32-bit ecc words to ecc bytes
++ */
++static void store_ecc8(struct bch_control *bch, uint8_t *dst,
++		       const uint32_t *src)
++{
++	uint8_t pad[4];
++	unsigned int i, nwords = BCH_ECC_WORDS(bch)-1;
++
++	for (i = 0; i < nwords; i++) {
++		*dst++ = (src[i] >> 24);
++		*dst++ = (src[i] >> 16) & 0xff;
++		*dst++ = (src[i] >>  8) & 0xff;
++		*dst++ = (src[i] >>  0) & 0xff;
++	}
++	pad[0] = (src[nwords] >> 24);
++	pad[1] = (src[nwords] >> 16) & 0xff;
++	pad[2] = (src[nwords] >>  8) & 0xff;
++	pad[3] = (src[nwords] >>  0) & 0xff;
++	memcpy(dst, pad, BCH_ECC_BYTES(bch)-4*nwords);
++}
++
++/*
++ * reverse bit for byte
++ */
++static uint8_t reverse_bit(uint8_t in_byte)
++{
++	int i;
++	uint8_t out_byte = 0;
++
++	for (i = 0; i < 8; i++) {
++		if (in_byte & ((0x80) >> i)) {
++			out_byte |= 1 << i;
++		}
++	}
++
++	return out_byte;
++}
++
++ /*
++  * swap 32-bit data, including bit reverse and swap to big endian
++  */
++static uint32_t swap_data(uint32_t data)
++{
++	uint32_t r = 0;
++
++	r = reverse_bit(data & 0xFF) << 24;
++	r |= reverse_bit((data >> 8) & 0xFF) << 16;
++	r |= reverse_bit((data >> 16) & 0xFF) << 8;
++	r |= reverse_bit((data >> 24) & 0xFF);
++
++	return r;
++}
++
++/**
++ * encode_bch - calculate BCH ecc parity of data
++ * @bch:   BCH control structure
++ * @data:  data to encode
++ * @len:   data length in bytes
++ * @ecc:   ecc parity data, must be initialized by caller
++ *
++ * The @ecc parity array is used both as input and output parameter, in order to
++ * allow incremental computations. It should be of the size indicated by member
++ * @ecc_bytes of @bch, and should be initialized to 0 before the first call.
++ *
++ * The exact number of computed ecc parity bits is given by member @ecc_bits of
++ * @bch; it may be less than m*t for large values of t.
++ */
++void encode_bch(struct bch_control *bch, const uint8_t *data,
++		unsigned int len, uint8_t *ecc)
++{
++	const unsigned int l = BCH_ECC_WORDS(bch)-1;
++	unsigned int i, mlen;
++	unsigned long m;
++	uint32_t w, r[l+1];
++	const uint32_t * const tab0 = bch->mod8_tab;
++	const uint32_t * const tab1 = tab0 + 256*(l+1);
++	const uint32_t * const tab2 = tab1 + 256*(l+1);
++	const uint32_t * const tab3 = tab2 + 256*(l+1);
++	const uint32_t *pdata, *p0, *p1, *p2, *p3;
++
++	if (ecc) {
++		/* load ecc parity bytes into internal 32-bit buffer */
++		load_ecc8(bch, bch->ecc_buf, ecc);
++	} else {
++		memset(bch->ecc_buf, 0, sizeof(r));
++	}
++
++	/* process first unaligned data bytes */
++	m = ((unsigned long)data) & 3;
++	if (m) {
++		mlen = (len < (4-m)) ? len : 4-m;
++		encode_bch_unaligned(bch, data, mlen, bch->ecc_buf);
++		data += mlen;
++		len  -= mlen;
++	}
++
++	/* process 32-bit aligned data words */
++	pdata = (uint32_t *)data;
++	mlen  = len/4;
++	data += 4*mlen;
++	len  -= 4*mlen;
++	memcpy(r, bch->ecc_buf, sizeof(r));
++
++	/*
++	 * split each 32-bit word into 4 polynomials of weight 8 as follows:
++	 *
++	 * 31 ...24  23 ...16  15 ... 8  7 ... 0
++	 * xxxxxxxx  yyyyyyyy  zzzzzzzz  tttttttt
++	 *                               tttttttt  mod g = r0 (precomputed)
++	 *                     zzzzzzzz  00000000  mod g = r1 (precomputed)
++	 *           yyyyyyyy  00000000  00000000  mod g = r2 (precomputed)
++	 * xxxxxxxx  00000000  00000000  00000000  mod g = r3 (precomputed)
++	 * xxxxxxxx  yyyyyyyy  zzzzzzzz  tttttttt  mod g = r0^r1^r2^r3
++	 */
++	while (mlen--) {
++		/* input data is read in big-endian format */
++		/*TODO: big little endian*/
++		/*w = r[0]^cpu_to_be32(*pdata++);*/
++		/*w = r[0]^(uint32_t)(*pdata++);*/
++		w = r[0]^swap_data(*pdata++);
++		p0 = tab0 + (l+1)*((w >>  0) & 0xff);
++		p1 = tab1 + (l+1)*((w >>  8) & 0xff);
++		p2 = tab2 + (l+1)*((w >> 16) & 0xff);
++		p3 = tab3 + (l+1)*((w >> 24) & 0xff);
++
++		for (i = 0; i < l; i++)
++			r[i] = r[i+1]^p0[i]^p1[i]^p2[i]^p3[i];
++
++		r[l] = p0[l]^p1[l]^p2[l]^p3[l];
++	}
++	memcpy(bch->ecc_buf, r, sizeof(r));
++
++	/* process last unaligned bytes */
++	if (len)
++		encode_bch_unaligned(bch, data, len, bch->ecc_buf);
++
++	/* store ecc parity bytes into original parity buffer */
++	if (ecc)
++		store_ecc8(bch, ecc, bch->ecc_buf);
++}
++
++static inline int modulo(struct bch_control *bch, unsigned int v)
++{
++	const unsigned int n = GF_N(bch);
++	while (v >= n) {
++		v -= n;
++		v = (v & n) + (v >> GF_M(bch));
++	}
++	return v;
++}
++
++static inline int fls(int x)
++{
++    int r = 32;
++
++    if (!x)
++        return 0;
++    if (!(x & 0xffff0000u)) {
++        x <<= 16;
++        r -= 16;
++    }
++    if (!(x & 0xff000000u)) {
++        x <<= 8;
++        r -= 8;
++    }
++    if (!(x & 0xf0000000u)) {
++        x <<= 4;
++        r -= 4;
++    }
++    if (!(x & 0xc0000000u)) {
++        x <<= 2;
++        r -= 2;
++    }
++    if (!(x & 0x80000000u)) {
++        x <<= 1;
++        r -= 1;
++    }
++    return r;
++}
++
++/*
++static inline int fls(int x)
++{
++	int r;
++	asm("bsrl %1,%0\n\t"
++		"jnz 1f\n\t"
++		"movl $-1,%0\n"
++		"1:" : "=r" (r) : "rm" (x));
++
++	return r+1;
++} */
++/*
++ * shorter and faster modulo function, only works when v < 2N.
++ */
++static inline int mod_s(struct bch_control *bch, unsigned int v)
++{
++	const unsigned int n = GF_N(bch);
++	return (v < n) ? v : v-n;
++}
++
++static inline int deg(unsigned int poly)
++{
++	/* polynomial degree is the most-significant bit index */
++	return fls(poly)-1;
++}
++
++static inline int parity(unsigned int x)
++{
++	/*
++	 * public domain code snippet, lifted from
++	 * http://www-graphics.stanford.edu/~seander/bithacks.html
++	 */
++	x ^= x >> 1;
++	x ^= x >> 2;
++	x = (x & 0x11111111U) * 0x11111111U;
++	return (x >> 28) & 1;
++}
++
++/* Galois field basic operations: multiply, divide, inverse, etc. */
++
++static inline unsigned int gf_mul(struct bch_control *bch, unsigned int a,
++				  unsigned int b)
++{
++	return (a && b) ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+
++					       bch->a_log_tab[b])] : 0;
++}
++
++static inline unsigned int gf_sqr(struct bch_control *bch, unsigned int a)
++{
++	return a ? bch->a_pow_tab[mod_s(bch, 2*bch->a_log_tab[a])] : 0;
++}
++
++static inline unsigned int gf_div(struct bch_control *bch, unsigned int a,
++				  unsigned int b)
++{
++	return a ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+
++					GF_N(bch)-bch->a_log_tab[b])] : 0;
++}
++
++static inline unsigned int gf_inv(struct bch_control *bch, unsigned int a)
++{
++	return bch->a_pow_tab[GF_N(bch)-bch->a_log_tab[a]];
++}
++
++static inline unsigned int a_pow(struct bch_control *bch, int i)
++{
++	return bch->a_pow_tab[modulo(bch, i)];
++}
++
++static inline int a_log(struct bch_control *bch, unsigned int x)
++{
++	return bch->a_log_tab[x];
++}
++
++static inline int a_ilog(struct bch_control *bch, unsigned int x)
++{
++	return mod_s(bch, GF_N(bch)-bch->a_log_tab[x]);
++}
++
++/*
++ * compute 2t syndromes of ecc polynomial, i.e. ecc(a^j) for j=1..2t
++ */
++static void compute_syndromes(struct bch_control *bch, uint32_t *ecc,
++			      unsigned int *syn)
++{
++	int i, j, s;
++	unsigned int m;
++	uint32_t poly;
++	const int t = GF_T(bch);
++
++	s = bch->ecc_bits;
++
++	/* make sure extra bits in last ecc word are cleared */
++	m = ((unsigned int)s) & 31;
++	if (m)
++		ecc[s/32] &= ~((1u << (32-m))-1);
++	memset(syn, 0, 2*t*sizeof(*syn));
++
++	/* compute v(a^j) for j=1 .. 2t-1 */
++	do {
++		poly = *ecc++;
++		s -= 32;
++		while (poly) {
++			i = deg(poly);
++			for (j = 0; j < 2*t; j += 2)
++				syn[j] ^= a_pow(bch, (j+1)*(i+s));
++
++			poly ^= (1 << i);
++		}
++	} while (s > 0);
++
++	/* v(a^(2j)) = v(a^j)^2 */
++	for (j = 0; j < t; j++)
++		syn[2*j+1] = gf_sqr(bch, syn[j]);
++}
++
++static void gf_poly_copy(struct gf_poly *dst, struct gf_poly *src)
++{
++	memcpy(dst, src, GF_POLY_SZ(src->deg));
++}
++
++static int compute_error_locator_polynomial(struct bch_control *bch,
++					    const unsigned int *syn)
++{
++	const unsigned int t = GF_T(bch);
++	const unsigned int n = GF_N(bch);
++	unsigned int i, j, tmp, l, pd = 1, d = syn[0];
++	struct gf_poly *elp = bch->elp;
++	struct gf_poly *pelp = bch->poly_2t[0];
++	struct gf_poly *elp_copy = bch->poly_2t[1];
++	int k, pp = -1;
++
++	memset(pelp, 0, GF_POLY_SZ(2*t));
++	memset(elp, 0, GF_POLY_SZ(2*t));
++
++	pelp->deg = 0;
++	pelp->c[0] = 1;
++	elp->deg = 0;
++	elp->c[0] = 1;
++
++	/* use simplified binary Berlekamp-Massey algorithm */
++	for (i = 0; (i < t) && (elp->deg <= t); i++) {
++		if (d) {
++			k = 2*i-pp;
++			gf_poly_copy(elp_copy, elp);
++			/* e[i+1](X) = e[i](X)+di*dp^-1*X^2(i-p)*e[p](X) */
++			tmp = a_log(bch, d)+n-a_log(bch, pd);
++			for (j = 0; j <= pelp->deg; j++) {
++				if (pelp->c[j]) {
++					l = a_log(bch, pelp->c[j]);
++					elp->c[j+k] ^= a_pow(bch, tmp+l);
++				}
++			}
++			/* compute l[i+1] = max(l[i]->c[l[p]+2*(i-p]) */
++			tmp = pelp->deg+k;
++			if (tmp > elp->deg) {
++				elp->deg = tmp;
++				gf_poly_copy(pelp, elp_copy);
++				pd = d;
++				pp = 2*i;
++			}
++		}
++		/* di+1 = S(2i+3)+elp[i+1].1*S(2i+2)+...+elp[i+1].lS(2i+3-l) */
++		if (i < t-1) {
++			d = syn[2*i+2];
++			for (j = 1; j <= elp->deg; j++)
++				d ^= gf_mul(bch, elp->c[j], syn[2*i+2-j]);
++		}
++	}
++	return (elp->deg > t) ? -1 : (int)elp->deg;
++}
++
++/*
++ * solve a m x m linear system in GF(2) with an expected number of solutions,
++ * and return the number of found solutions
++ */
++static int solve_linear_system(struct bch_control *bch, unsigned int *rows,
++			       unsigned int *sol, int nsol)
++{
++	const int m = GF_M(bch);
++	unsigned int tmp, mask;
++	int rem, c, r, p, k, param[m];
++
++	k = 0;
++	mask = 1 << m;
++
++	/* Gaussian elimination */
++	for (c = 0; c < m; c++) {
++		rem = 0;
++		p = c-k;
++		/* find suitable row for elimination */
++		for (r = p; r < m; r++) {
++			if (rows[r] & mask) {
++				if (r != p) {
++					tmp = rows[r];
++					rows[r] = rows[p];
++					rows[p] = tmp;
++				}
++				rem = r+1;
++				break;
++			}
++		}
++		if (rem) {
++			/* perform elimination on remaining rows */
++			tmp = rows[p];
++			for (r = rem; r < m; r++) {
++				if (rows[r] & mask)
++					rows[r] ^= tmp;
++			}
++		} else {
++			/* elimination not needed, store defective row index */
++			param[k++] = c;
++		}
++		mask >>= 1;
++	}
++	/* rewrite system, inserting fake parameter rows */
++	if (k > 0) {
++		p = k;
++		for (r = m-1; r >= 0; r--) {
++			if ((r > m-1-k) && rows[r])
++				/* system has no solution */
++				return 0;
++
++			rows[r] = (p && (r == param[p-1])) ?
++				p--, 1u << (m-r) : rows[r-p];
++		}
++	}
++
++	if (nsol != (1 << k))
++		/* unexpected number of solutions */
++		return 0;
++
++	for (p = 0; p < nsol; p++) {
++		/* set parameters for p-th solution */
++		for (c = 0; c < k; c++)
++			rows[param[c]] = (rows[param[c]] & ~1)|((p >> c) & 1);
++
++		/* compute unique solution */
++		tmp = 0;
++		for (r = m-1; r >= 0; r--) {
++			mask = rows[r] & (tmp|1);
++			tmp |= parity(mask) << (m-r);
++		}
++		sol[p] = tmp >> 1;
++	}
++	return nsol;
++}
++
++/*
++ * this function builds and solves a linear system for finding roots of a degree
++ * 4 affine monic polynomial X^4+aX^2+bX+c over GF(2^m).
++ */
++static int find_affine4_roots(struct bch_control *bch, unsigned int a,
++			      unsigned int b, unsigned int c,
++			      unsigned int *roots)
++{
++	int i, j, k;
++	const int m = GF_M(bch);
++	unsigned int mask = 0xff, t, rows[16] = {0,};
++
++	j = a_log(bch, b);
++	k = a_log(bch, a);
++	rows[0] = c;
++
++	/* buid linear system to solve X^4+aX^2+bX+c = 0 */
++	for (i = 0; i < m; i++) {
++		rows[i+1] = bch->a_pow_tab[4*i]^
++			(a ? bch->a_pow_tab[mod_s(bch, k)] : 0)^
++			(b ? bch->a_pow_tab[mod_s(bch, j)] : 0);
++		j++;
++		k += 2;
++	}
++	/*
++	 * transpose 16x16 matrix before passing it to linear solver
++	 * warning: this code assumes m < 16
++	 */
++	for (j = 8; j != 0; j >>= 1, mask ^= (mask << j)) {
++		for (k = 0; k < 16; k = (k+j+1) & ~j) {
++			t = ((rows[k] >> j)^rows[k+j]) & mask;
++			rows[k] ^= (t << j);
++			rows[k+j] ^= t;
++		}
++	}
++	return solve_linear_system(bch, rows, roots, 4);
++}
++
++/*
++ * compute root r of a degree 1 polynomial over GF(2^m) (returned as log(1/r))
++ */
++static int find_poly_deg1_roots(struct bch_control *bch, struct gf_poly *poly,
++				unsigned int *roots)
++{
++	int n = 0;
++
++	if (poly->c[0])
++		/* poly[X] = bX+c with c!=0, root=c/b */
++		roots[n++] = mod_s(bch, GF_N(bch)-bch->a_log_tab[poly->c[0]]+
++				   bch->a_log_tab[poly->c[1]]);
++	return n;
++}
++
++/*
++ * compute roots of a degree 2 polynomial over GF(2^m)
++ */
++static int find_poly_deg2_roots(struct bch_control *bch, struct gf_poly *poly,
++				unsigned int *roots)
++{
++	int n = 0, i, l0, l1, l2;
++	unsigned int u, v, r;
++
++	if (poly->c[0] && poly->c[1]) {
++
++		l0 = bch->a_log_tab[poly->c[0]];
++		l1 = bch->a_log_tab[poly->c[1]];
++		l2 = bch->a_log_tab[poly->c[2]];
++
++		/* using z=a/bX, transform aX^2+bX+c into z^2+z+u (u=ac/b^2) */
++		u = a_pow(bch, l0+l2+2*(GF_N(bch)-l1));
++		/*
++		 * let u = sum(li.a^i) i=0..m-1; then compute r = sum(li.xi):
++		 * r^2+r = sum(li.(xi^2+xi)) = sum(li.(a^i+Tr(a^i).a^k)) =
++		 * u + sum(li.Tr(a^i).a^k) = u+a^k.Tr(sum(li.a^i)) = u+a^k.Tr(u)
++		 * i.e. r and r+1 are roots iff Tr(u)=0
++		 */
++		r = 0;
++		v = u;
++		while (v) {
++			i = deg(v);
++			r ^= bch->xi_tab[i];
++			v ^= (1 << i);
++		}
++		/* verify root */
++		if ((gf_sqr(bch, r)^r) == u) {
++			/* reverse z=a/bX transformation and compute log(1/r) */
++			roots[n++] = modulo(bch, 2*GF_N(bch)-l1-
++					    bch->a_log_tab[r]+l2);
++			roots[n++] = modulo(bch, 2*GF_N(bch)-l1-
++					    bch->a_log_tab[r^1]+l2);
++		}
++	}
++	return n;
++}
++
++/*
++ * compute roots of a degree 3 polynomial over GF(2^m)
++ */
++static int find_poly_deg3_roots(struct bch_control *bch, struct gf_poly *poly,
++				unsigned int *roots)
++{
++	int i, n = 0;
++	unsigned int a, b, c, a2, b2, c2, e3, tmp[4];
++
++	if (poly->c[0]) {
++		/* transform polynomial into monic X^3 + a2X^2 + b2X + c2 */
++		e3 = poly->c[3];
++		c2 = gf_div(bch, poly->c[0], e3);
++		b2 = gf_div(bch, poly->c[1], e3);
++		a2 = gf_div(bch, poly->c[2], e3);
++
++		/* (X+a2)(X^3+a2X^2+b2X+c2) = X^4+aX^2+bX+c (affine) */
++		c = gf_mul(bch, a2, c2);           /* c = a2c2      */
++		b = gf_mul(bch, a2, b2)^c2;        /* b = a2b2 + c2 */
++		a = gf_sqr(bch, a2)^b2;            /* a = a2^2 + b2 */
++
++		/* find the 4 roots of this affine polynomial */
++		if (find_affine4_roots(bch, a, b, c, tmp) == 4) {
++			/* remove a2 from final list of roots */
++			for (i = 0; i < 4; i++) {
++				if (tmp[i] != a2)
++					roots[n++] = a_ilog(bch, tmp[i]);
++			}
++		}
++	}
++	return n;
++}
++
++/*
++ * compute roots of a degree 4 polynomial over GF(2^m)
++ */
++static int find_poly_deg4_roots(struct bch_control *bch, struct gf_poly *poly,
++				unsigned int *roots)
++{
++	int i, l, n = 0;
++	unsigned int a, b, c, d, e = 0, f, a2, b2, c2, e4;
++
++	if (poly->c[0] == 0)
++		return 0;
++
++	/* transform polynomial into monic X^4 + aX^3 + bX^2 + cX + d */
++	e4 = poly->c[4];
++	d = gf_div(bch, poly->c[0], e4);
++	c = gf_div(bch, poly->c[1], e4);
++	b = gf_div(bch, poly->c[2], e4);
++	a = gf_div(bch, poly->c[3], e4);
++
++	/* use Y=1/X transformation to get an affine polynomial */
++	if (a) {
++		/* first, eliminate cX by using z=X+e with ae^2+c=0 */
++		if (c) {
++			/* compute e such that e^2 = c/a */
++			f = gf_div(bch, c, a);
++			l = a_log(bch, f);
++			l += (l & 1) ? GF_N(bch) : 0;
++			e = a_pow(bch, l/2);
++			/*
++			 * use transformation z=X+e:
++			 * z^4+e^4 + a(z^3+ez^2+e^2z+e^3) + b(z^2+e^2) +cz+ce+d
++			 * z^4 + az^3 + (ae+b)z^2 + (ae^2+c)z+e^4+be^2+ae^3+ce+d
++			 * z^4 + az^3 + (ae+b)z^2 + e^4+be^2+d
++			 * z^4 + az^3 +     b'z^2 + d'
++			 */
++			d = a_pow(bch, 2*l)^gf_mul(bch, b, f)^d;
++			b = gf_mul(bch, a, e)^b;
++		}
++		/* now, use Y=1/X to get Y^4 + b/dY^2 + a/dY + 1/d */
++		if (d == 0)
++			/* assume all roots have multiplicity 1 */
++			return 0;
++
++		c2 = gf_inv(bch, d);
++		b2 = gf_div(bch, a, d);
++		a2 = gf_div(bch, b, d);
++	} else {
++		/* polynomial is already affine */
++		c2 = d;
++		b2 = c;
++		a2 = b;
++	}
++	/* find the 4 roots of this affine polynomial */
++	if (find_affine4_roots(bch, a2, b2, c2, roots) == 4) {
++		for (i = 0; i < 4; i++) {
++			/* post-process roots (reverse transformations) */
++			f = a ? gf_inv(bch, roots[i]) : roots[i];
++			roots[i] = a_ilog(bch, f^e);
++		}
++		n = 4;
++	}
++	return n;
++}
++
++/*
++ * build monic, log-based representation of a polynomial
++ */
++static void gf_poly_logrep(struct bch_control *bch,
++			   const struct gf_poly *a, int *rep)
++{
++	int i, d = a->deg, l = GF_N(bch)-a_log(bch, a->c[a->deg]);
++
++	/* represent 0 values with -1; warning, rep[d] is not set to 1 */
++	for (i = 0; i < d; i++)
++		rep[i] = a->c[i] ? mod_s(bch, a_log(bch, a->c[i])+l) : -1;
++}
++
++/*
++ * compute polynomial Euclidean division remainder in GF(2^m)[X]
++ */
++static void gf_poly_mod(struct bch_control *bch, struct gf_poly *a,
++			const struct gf_poly *b, int *rep)
++{
++	int la, p, m;
++	unsigned int i, j, *c = a->c;
++	const unsigned int d = b->deg;
++
++	if (a->deg < d)
++		return;
++
++	/* reuse or compute log representation of denominator */
++	if (!rep) {
++		rep = bch->cache;
++		gf_poly_logrep(bch, b, rep);
++	}
++
++	for (j = a->deg; j >= d; j--) {
++		if (c[j]) {
++			la = a_log(bch, c[j]);
++			p = j-d;
++			for (i = 0; i < d; i++, p++) {
++				m = rep[i];
++				if (m >= 0)
++					c[p] ^= bch->a_pow_tab[mod_s(bch,
++								     m+la)];
++			}
++		}
++	}
++	a->deg = d-1;
++	while (!c[a->deg] && a->deg)
++		a->deg--;
++}
++
++/*
++ * compute polynomial Euclidean division quotient in GF(2^m)[X]
++ */
++static void gf_poly_div(struct bch_control *bch, struct gf_poly *a,
++			const struct gf_poly *b, struct gf_poly *q)
++{
++	if (a->deg >= b->deg) {
++		q->deg = a->deg-b->deg;
++		/* compute a mod b (modifies a) */
++		gf_poly_mod(bch, a, b, NULL);
++		/* quotient is stored in upper part of polynomial a */
++		memcpy(q->c, &a->c[b->deg], (1+q->deg)*sizeof(unsigned int));
++	} else {
++		q->deg = 0;
++		q->c[0] = 0;
++	}
++}
++
++/*
++ * compute polynomial GCD (Greatest Common Divisor) in GF(2^m)[X]
++ */
++static struct gf_poly *gf_poly_gcd(struct bch_control *bch, struct gf_poly *a,
++				   struct gf_poly *b)
++{
++	struct gf_poly *tmp;
++
++	if (a->deg < b->deg) {
++		tmp = b;
++		b = a;
++		a = tmp;
++	}
++
++	while (b->deg > 0) {
++		gf_poly_mod(bch, a, b, NULL);
++		tmp = b;
++		b = a;
++		a = tmp;
++	}
++
++	return a;
++}
++
++/*
++ * Given a polynomial f and an integer k, compute Tr(a^kX) mod f
++ * This is used in Berlekamp Trace algorithm for splitting polynomials
++ */
++static void compute_trace_bk_mod(struct bch_control *bch, int k,
++				 const struct gf_poly *f, struct gf_poly *z,
++				 struct gf_poly *out)
++{
++	const int m = GF_M(bch);
++	int i, j;
++
++	/* z contains z^2j mod f */
++	z->deg = 1;
++	z->c[0] = 0;
++	z->c[1] = bch->a_pow_tab[k];
++
++	out->deg = 0;
++	memset(out, 0, GF_POLY_SZ(f->deg));
++
++	/* compute f log representation only once */
++	gf_poly_logrep(bch, f, bch->cache);
++
++	for (i = 0; i < m; i++) {
++		/* add a^(k*2^i)(z^(2^i) mod f) and compute (z^(2^i) mod f)^2 */
++		for (j = z->deg; j >= 0; j--) {
++			out->c[j] ^= z->c[j];
++			z->c[2*j] = gf_sqr(bch, z->c[j]);
++			z->c[2*j+1] = 0;
++		}
++		if (z->deg > out->deg)
++			out->deg = z->deg;
++
++		if (i < m-1) {
++			z->deg *= 2;
++			/* z^(2(i+1)) mod f = (z^(2^i) mod f)^2 mod f */
++			gf_poly_mod(bch, z, f, bch->cache);
++		}
++	}
++	while (!out->c[out->deg] && out->deg)
++		out->deg--;
++}
++
++/*
++ * factor a polynomial using Berlekamp Trace algorithm (BTA)
++ */
++static void factor_polynomial(struct bch_control *bch, int k, struct gf_poly *f,
++			      struct gf_poly **g, struct gf_poly **h)
++{
++	struct gf_poly *f2 = bch->poly_2t[0];
++	struct gf_poly *q  = bch->poly_2t[1];
++	struct gf_poly *tk = bch->poly_2t[2];
++	struct gf_poly *z  = bch->poly_2t[3];
++	struct gf_poly *gcd;
++
++	*g = f;
++	*h = NULL;
++
++	/* tk = Tr(a^k.X) mod f */
++	compute_trace_bk_mod(bch, k, f, z, tk);
++
++	if (tk->deg > 0) {
++		/* compute g = gcd(f, tk) (destructive operation) */
++		gf_poly_copy(f2, f);
++		gcd = gf_poly_gcd(bch, f2, tk);
++		if (gcd->deg < f->deg) {
++			/* compute h=f/gcd(f,tk); this will modify f and q */
++			gf_poly_div(bch, f, gcd, q);
++			/* store g and h in-place (clobbering f) */
++			*h = &((struct gf_poly_deg1 *)f)[gcd->deg].poly;
++			gf_poly_copy(*g, gcd);
++			gf_poly_copy(*h, q);
++		}
++	}
++}
++
++/*
++ * find roots of a polynomial, using BTZ algorithm; see the beginning of this
++ * file for details
++ */
++static int find_poly_roots(struct bch_control *bch, unsigned int k,
++			   struct gf_poly *poly, unsigned int *roots)
++{
++	int cnt;
++	struct gf_poly *f1, *f2;
++
++	switch (poly->deg) {
++		/* handle low degree polynomials with ad hoc techniques */
++	case 1:
++		cnt = find_poly_deg1_roots(bch, poly, roots);
++		break;
++	case 2:
++		cnt = find_poly_deg2_roots(bch, poly, roots);
++		break;
++	case 3:
++		cnt = find_poly_deg3_roots(bch, poly, roots);
++		break;
++	case 4:
++		cnt = find_poly_deg4_roots(bch, poly, roots);
++		break;
++	default:
++		/* factor polynomial using Berlekamp Trace Algorithm (BTA) */
++		cnt = 0;
++		if (poly->deg && (k <= GF_M(bch))) {
++			factor_polynomial(bch, k, poly, &f1, &f2);
++			if (f1)
++				cnt += find_poly_roots(bch, k+1, f1, roots);
++			if (f2)
++				cnt += find_poly_roots(bch, k+1, f2, roots+cnt);
++		}
++		break;
++	}
++	return cnt;
++}
++
++#if defined(USE_CHIEN_SEARCH)
++/*
++ * exhaustive root search (Chien) implementation - not used, included only for
++ * reference/comparison tests
++ */
++static int chien_search(struct bch_control *bch, unsigned int len,
++			struct gf_poly *p, unsigned int *roots)
++{
++	int m;
++	unsigned int i, j, syn, syn0, count = 0;
++	const unsigned int k = 8*len+bch->ecc_bits;
++
++	/* use a log-based representation of polynomial */
++	gf_poly_logrep(bch, p, bch->cache);
++	bch->cache[p->deg] = 0;
++	syn0 = gf_div(bch, p->c[0], p->c[p->deg]);
++
++	for (i = GF_N(bch)-k+1; i <= GF_N(bch); i++) {
++		/* compute elp(a^i) */
++		for (j = 1, syn = syn0; j <= p->deg; j++) {
++			m = bch->cache[j];
++			if (m >= 0)
++				syn ^= a_pow(bch, m+j*i);
++		}
++		if (syn == 0) {
++			roots[count++] = GF_N(bch)-i;
++			if (count == p->deg)
++				break;
++		}
++	}
++	return (count == p->deg) ? count : 0;
++}
++#define find_poly_roots(_p, _k, _elp, _loc) chien_search(_p, len, _elp, _loc)
++#endif /* USE_CHIEN_SEARCH */
++
++/**
++ * decode_bch - decode received codeword and find bit error locations
++ * @bch:      BCH control structure
++ * @data:     received data, ignored if @calc_ecc is provided
++ * @len:      data length in bytes, must always be provided
++ * @recv_ecc: received ecc, if NULL then assume it was XORed in @calc_ecc
++ * @calc_ecc: calculated ecc, if NULL then calc_ecc is computed from @data
++ * @syn:      hw computed syndrome data (if NULL, syndrome is calculated)
++ * @errloc:   output array of error locations
++ *
++ * Returns:
++ *  The number of errors found, or -EBADMSG if decoding failed, or -EINVAL if
++ *  invalid parameters were provided
++ *
++ * Depending on the available hw BCH support and the need to compute @calc_ecc
++ * separately (using encode_bch()), this function should be called with one of
++ * the following parameter configurations -
++ *
++ * by providing @data and @recv_ecc only:
++ *   decode_bch(@bch, @data, @len, @recv_ecc, NULL, NULL, @errloc)
++ *
++ * by providing @recv_ecc and @calc_ecc:
++ *   decode_bch(@bch, NULL, @len, @recv_ecc, @calc_ecc, NULL, @errloc)
++ *
++ * by providing ecc = recv_ecc XOR calc_ecc:
++ *   decode_bch(@bch, NULL, @len, NULL, ecc, NULL, @errloc)
++ *
++ * by providing syndrome results @syn:
++ *   decode_bch(@bch, NULL, @len, NULL, NULL, @syn, @errloc)
++ *
++ * Once decode_bch() has successfully returned with a positive value, error
++ * locations returned in array @errloc should be interpreted as follows -
++ *
++ * if (errloc[n] >= 8*len), then n-th error is located in ecc (no need for
++ * data correction)
++ *
++ * if (errloc[n] < 8*len), then n-th error is located in data and can be
++ * corrected with statement data[errloc[n]/8] ^= 1 << (errloc[n] % 8);
++ *
++ * Note that this function does not perform any data correction by itself, it
++ * merely indicates error locations.
++ */
++int decode_bch(struct bch_control *bch, const uint8_t *data, unsigned int len,
++	       const uint8_t *recv_ecc, const uint8_t *calc_ecc,
++	       const unsigned int *syn, unsigned int *errloc)
++{
++	const unsigned int ecc_words = BCH_ECC_WORDS(bch);
++	unsigned int nbits;
++	int i, err, nroots;
++	uint32_t sum;
++
++	/* sanity check: make sure data length can be handled */
++	if (8*len > (bch->n-bch->ecc_bits))
++		return -EINVAL;
++
++	/* if caller does not provide syndromes, compute them */
++	if (!syn) {
++		if (!calc_ecc) {
++			/* compute received data ecc into an internal buffer */
++			if (!data || !recv_ecc)
++				return -EINVAL;
++			encode_bch(bch, data, len, NULL);
++		} else {
++			/* load provided calculated ecc */
++			load_ecc8(bch, bch->ecc_buf, calc_ecc);
++		}
++		/* load received ecc or assume it was XORed in calc_ecc */
++		if (recv_ecc) {
++			load_ecc8(bch, bch->ecc_buf2, recv_ecc);
++			/* XOR received and calculated ecc */
++			for (i = 0, sum = 0; i < (int)ecc_words; i++) {
++				bch->ecc_buf[i] ^= bch->ecc_buf2[i];
++				sum |= bch->ecc_buf[i];
++			}
++			if (!sum)
++				/* no error found */
++				return 0;
++		}
++		compute_syndromes(bch, bch->ecc_buf, bch->syn);
++		syn = bch->syn;
++	}
++
++	err = compute_error_locator_polynomial(bch, syn);
++	if (err > 0) {
++		nroots = find_poly_roots(bch, 1, bch->elp, errloc);
++		if (err != nroots)
++			err = -1;
++	}
++	if (err > 0) {
++		/* post-process raw error locations for easier correction */
++		nbits = (len*8)+bch->ecc_bits;
++		for (i = 0; i < err; i++) {
++			if (errloc[i] >= nbits) {
++				err = -1;
++				break;
++			}
++			errloc[i] = nbits-1-errloc[i];
++			errloc[i] = (errloc[i] & ~7)|(7-(errloc[i] & 7));
++		}
++	}
++	return (err >= 0) ? err : -EBADMSG;
++}
++
++/*
++ * generate Galois field lookup tables
++ */
++static int build_gf_tables(struct bch_control *bch, unsigned int poly)
++{
++	unsigned int i, x = 1;
++	const unsigned int k = 1 << deg(poly);
++
++	/* primitive polynomial must be of degree m */
++	if (k != (1u << GF_M(bch)))
++		return -1;
++
++	for (i = 0; i < GF_N(bch); i++) {
++		bch->a_pow_tab[i] = x;
++		bch->a_log_tab[x] = i;
++		if (i && (x == 1))
++			/* polynomial is not primitive (a^i=1 with 0<i<2^m-1) */
++			return -1;
++		x <<= 1;
++		if (x & k)
++			x ^= poly;
++	}
++	bch->a_pow_tab[GF_N(bch)] = 1;
++	bch->a_log_tab[0] = 0;
++
++	return 0;
++}
++
++/*
++ * compute generator polynomial remainder tables for fast encoding
++ */
++static void build_mod8_tables(struct bch_control *bch, const uint32_t *g)
++{
++	int i, j, b, d;
++	uint32_t data, hi, lo, *tab;
++	const int l = BCH_ECC_WORDS(bch);
++	const int plen = DIV_ROUND_UP(bch->ecc_bits+1, 32);
++	const int ecclen = DIV_ROUND_UP(bch->ecc_bits, 32);
++
++	memset(bch->mod8_tab, 0, 4*256*l*sizeof(*bch->mod8_tab));
++
++	for (i = 0; i < 256; i++) {
++		/* p(X)=i is a small polynomial of weight <= 8 */
++		for (b = 0; b < 4; b++) {
++			/* we want to compute (p(X).X^(8*b+deg(g))) mod g(X) */
++			tab = bch->mod8_tab + (b*256+i)*l;
++			data = i << (8*b);
++			while (data) {
++				d = deg(data);
++				/* subtract X^d.g(X) from p(X).X^(8*b+deg(g)) */
++				data ^= g[0] >> (31-d);
++				for (j = 0; j < ecclen; j++) {
++					hi = (d < 31) ? g[j] << (d+1) : 0;
++					lo = (j+1 < plen) ?
++						g[j+1] >> (31-d) : 0;
++					tab[j] ^= hi|lo;
++				}
++			}
++		}
++	}
++}
++
++/*
++ * build a base for factoring degree 2 polynomials
++ */
++static int build_deg2_base(struct bch_control *bch)
++{
++	const int m = GF_M(bch);
++	int i, j, r;
++	unsigned int sum, x, y, remaining, ak = 0, xi[m];
++
++	/* find k s.t. Tr(a^k) = 1 and 0 <= k < m */
++	for (i = 0; i < m; i++) {
++		for (j = 0, sum = 0; j < m; j++)
++			sum ^= a_pow(bch, i*(1 << j));
++
++		if (sum) {
++			ak = bch->a_pow_tab[i];
++			break;
++		}
++	}
++	/* find xi, i=0..m-1 such that xi^2+xi = a^i+Tr(a^i).a^k */
++	remaining = m;
++	memset(xi, 0, sizeof(xi));
++
++	for (x = 0; (x <= GF_N(bch)) && remaining; x++) {
++		y = gf_sqr(bch, x)^x;
++		for (i = 0; i < 2; i++) {
++			r = a_log(bch, y);
++			if (y && (r < m) && !xi[r]) {
++				bch->xi_tab[r] = x;
++				xi[r] = 1;
++				remaining--;
++				break;
++			}
++			y ^= ak;
++		}
++	}
++	/* should not happen but check anyway */
++	return remaining ? -1 : 0;
++}
++
++static void *bch_alloc(size_t size, int *err)
++{
++	void *ptr;
++
++	ptr = malloc(size);
++	if (ptr == NULL)
++		*err = 1;
++	return ptr;
++}
++
++/*
++ * compute generator polynomial for given (m,t) parameters.
++ */
++static uint32_t *compute_generator_polynomial(struct bch_control *bch)
++{
++	const unsigned int m = GF_M(bch);
++	const unsigned int t = GF_T(bch);
++	int n, err = 0;
++	unsigned int i, j, nbits, r, word, *roots;
++	struct gf_poly *g;
++	uint32_t *genpoly;
++
++	g = bch_alloc(GF_POLY_SZ(m*t), &err);
++	roots = bch_alloc((bch->n+1)*sizeof(*roots), &err);
++	genpoly = bch_alloc(DIV_ROUND_UP(m*t+1, 32)*sizeof(*genpoly), &err);
++
++	if (err) {
++		free(genpoly);
++		genpoly = NULL;
++		goto finish;
++	}
++
++	/* enumerate all roots of g(X) */
++	memset(roots , 0, (bch->n+1)*sizeof(*roots));
++	for (i = 0; i < t; i++) {
++		for (j = 0, r = 2*i+1; j < m; j++) {
++			roots[r] = 1;
++			r = mod_s(bch, 2*r);
++		}
++	}
++	/* build generator polynomial g(X) */
++	g->deg = 0;
++	g->c[0] = 1;
++	for (i = 0; i < GF_N(bch); i++) {
++		if (roots[i]) {
++			/* multiply g(X) by (X+root) */
++			r = bch->a_pow_tab[i];
++			g->c[g->deg+1] = 1;
++			for (j = g->deg; j > 0; j--)
++				g->c[j] = gf_mul(bch, g->c[j], r)^g->c[j-1];
++
++			g->c[0] = gf_mul(bch, g->c[0], r);
++			g->deg++;
++		}
++	}
++	/* store left-justified binary representation of g(X) */
++	n = g->deg+1;
++	i = 0;
++	while (n > 0) {
++		nbits = (n > 32) ? 32 : n;
++		for (j = 0, word = 0; j < nbits; j++) {
++			if (g->c[n-1-j])
++				word |= 1u << (31-j);
++		}
++		genpoly[i++] = word;
++		n -= nbits;
++	}
++
++	bch->ecc_bits = g->deg;
++
++finish:
++	free(g);
++	free(roots);
++
++	return genpoly;
++}
++
++/**
++ * init_bch - initialize a BCH encoder/decoder
++ * @m:          Galois field order, should be in the range 5-15
++ * @t:          maximum error correction capability, in bits
++ * @prim_poly:  user-provided primitive polynomial (or 0 to use default)
++ *
++ * Returns:
++ *  a newly allocated BCH control structure if successful, NULL otherwise
++ *
++ * This initialization can take some time, as lookup tables are built for fast
++ * encoding/decoding; make sure not to call this function from a time critical
++ * path. Usually, init_bch() should be called on module/driver init and
++ * free_bch() should be called to release memory on exit.
++ *
++ * You may provide your own primitive polynomial of degree @m in argument
++ * @prim_poly, or let init_bch() use its default polynomial.
++ *
++ * Once init_bch() has successfully returned a pointer to a newly allocated
++ * BCH control structure, ecc length in bytes is given by member @ecc_bytes of
++ * the structure.
++ */
++struct bch_control *init_bch(int m, int t, unsigned int prim_poly)
++{
++	int err = 0;
++	unsigned int i, words;
++	uint32_t *genpoly;
++	struct bch_control *bch = NULL;
++
++	const int min_m = 5;
++	const int max_m = 15;
++
++	/* default primitive polynomials */
++	static const unsigned int prim_poly_tab[] = {
++		0x25, 0x43, 0x83, 0x11d, 0x211, 0x409, 0x805, 0x1053, 0x201b,
++		0x402b, 0x8003,
++	};
++
++#if defined(CONFIG_BCH_CONST_PARAMS)
++	if ((m != (CONFIG_BCH_CONST_M)) || (t != (CONFIG_BCH_CONST_T))) {
++		printk(KERN_ERR "bch encoder/decoder was configured to support "
++		       "parameters m=%d, t=%d only!\n",
++		       CONFIG_BCH_CONST_M, CONFIG_BCH_CONST_T);
++		goto fail;
++	}
++#endif
++	if ((m < min_m) || (m > max_m))
++		/*
++		 * values of m greater than 15 are not currently supported;
++		 * supporting m > 15 would require changing table base type
++		 * (uint16_t) and a small patch in matrix transposition
++		 */
++		goto fail;
++
++	/* sanity checks */
++	if ((t < 1) || (m*t >= ((1 << m)-1)))
++		/* invalid t value */
++		goto fail;
++
++	/* select a primitive polynomial for generating GF(2^m) */
++	if (prim_poly == 0)
++		prim_poly = prim_poly_tab[m-min_m];
++
++	bch = malloc(sizeof(*bch));
++	if (bch == NULL)
++		goto fail;
++
++	bch->m = m;
++	bch->t = t;
++	bch->n = (1 << m)-1;
++	words  = DIV_ROUND_UP(m*t, 32);
++	bch->ecc_bytes = DIV_ROUND_UP(m*t, 8);
++	bch->a_pow_tab = bch_alloc((1+bch->n)*sizeof(*bch->a_pow_tab), &err);
++	bch->a_log_tab = bch_alloc((1+bch->n)*sizeof(*bch->a_log_tab), &err);
++	bch->mod8_tab  = bch_alloc(words*1024*sizeof(*bch->mod8_tab), &err);
++	bch->ecc_buf   = bch_alloc(words*sizeof(*bch->ecc_buf), &err);
++	bch->ecc_buf2  = bch_alloc(words*sizeof(*bch->ecc_buf2), &err);
++	bch->xi_tab    = bch_alloc(m*sizeof(*bch->xi_tab), &err);
++	bch->syn       = bch_alloc(2*t*sizeof(*bch->syn), &err);
++	bch->cache     = bch_alloc(2*t*sizeof(*bch->cache), &err);
++	bch->elp       = bch_alloc((t+1)*sizeof(struct gf_poly_deg1), &err);
++
++	for (i = 0; i < ARRAY_SIZE(bch->poly_2t); i++)
++		bch->poly_2t[i] = bch_alloc(GF_POLY_SZ(2*t), &err);
++
++	if (err)
++		goto fail;
++
++	err = build_gf_tables(bch, prim_poly);
++	if (err)
++		goto fail;
++
++	/* use generator polynomial for computing encoding tables */
++	genpoly = compute_generator_polynomial(bch);
++	if (genpoly == NULL)
++		goto fail;
++
++	build_mod8_tables(bch, genpoly);
++	free(genpoly);
++
++	err = build_deg2_base(bch);
++	if (err)
++		goto fail;
++
++	return bch;
++
++fail:
++	free_bch(bch);
++	return NULL;
++}
++
++/**
++ *  free_bch - free the BCH control structure
++ *  @bch:    BCH control structure to release
++ */
++void free_bch(struct bch_control *bch)
++{
++	unsigned int i;
++
++	if (bch) {
++		free(bch->a_pow_tab);
++		free(bch->a_log_tab);
++		free(bch->mod8_tab);
++		free(bch->ecc_buf);
++		free(bch->ecc_buf2);
++		free(bch->xi_tab);
++		free(bch->syn);
++		free(bch->cache);
++		free(bch->elp);
++
++		for (i = 0; i < ARRAY_SIZE(bch->poly_2t); i++)
++			free(bch->poly_2t[i]);
++
++		free(bch);
++	}
++}
++
++int encode_bch_ecc_62(void *source_block, size_t source_size,
++				   void *target_block, size_t target_size)
++{
++	int m =  METADATABYTE;
++	int b0 = BLOCK0BYTE;
++	int e0 = BLOCK0ECC;
++	int bn = BLOCKNBYTE;
++	int en = BLOCKNECC;
++	int n  = NUMOFBLOCKN;
++	int gf = FCB_GF;
++
++	struct bch_control *bch;
++	uint8_t *ecc_buf;
++	int ecc_buf_size;
++	uint8_t *tmp_buf;
++	int tmp_buf_size;
++	int real_buf_size;
++	int i, j;
++	int ecc_bit_off;
++	int data_ecc_blk_size;
++	int low_byte_off, low_bit_off;
++	int high_byte_off, high_bit_off;
++	uint8_t byte_low, byte_high;
++
++	/* sanity check */
++	/* nand data block must be large enough for FCB structure */
++	if (source_size > b0 + n * bn)
++		return -EINVAL;
++	/* nand page need to be large enough to contain Meta, FCB and ECC */
++	if (target_size < m + b0 + e0*gf/8 + n*bn + n*en*gf/8)
++		return -EINVAL;
++
++	/* init bch, using default polynomial */
++	bch = init_bch(gf, en, 0);
++	if(!bch)
++		return -EINVAL;
++
++	/* buffer for ecc */
++	ecc_buf_size = (gf * en + 7)/8;
++	ecc_buf = malloc(ecc_buf_size);
++	if(!ecc_buf)
++		return -EINVAL;
++
++	/* temp buffer to store data and ecc */
++	tmp_buf_size = b0 + (e0 * gf + 7)/8 + (bn + (en * gf + 7)/8) * 7;
++	tmp_buf = malloc(tmp_buf_size);
++	if(!tmp_buf)
++		return -EINVAL;
++	memset(tmp_buf, 0, tmp_buf_size);
++
++	/* generate ecc code for each data block and store in temp buffer */
++
++	for (i = 0; i < n+1; i++) {
++		memset(ecc_buf, 0, ecc_buf_size);
++		encode_bch(bch, source_block + i * bn, bn, ecc_buf);
++
++		memcpy(tmp_buf + i * (bn + ecc_buf_size), source_block + i * bn, bn);
++
++		/* reverse ecc bit */
++		for (j = 0; j < ecc_buf_size; j++) {
++			ecc_buf[j] = reverse_bit(ecc_buf[j]);
++		}
++
++		memcpy(tmp_buf + (i+1)*bn + i*ecc_buf_size, ecc_buf, ecc_buf_size);
++	}
++
++	/* store Metadata for taget block with randomizer*/
++	memcpy(target_block, RandData, m);
++	/*memset(target_block, 0, m);*/
++
++	/* shift the bit to combine the source data and ecc */
++	real_buf_size = (b0*8 + gf*e0 + (bn*8 + gf*en)*n)/8;
++	/* bit offset for each ecc block */
++	ecc_bit_off = 8 - (gf * en)%8;
++	/* size of a data block plus ecc block */
++	data_ecc_blk_size = bn +(gf*en+7)/8;
++
++	for (i = 0; i < real_buf_size; i++) {
++		low_bit_off = ((i/data_ecc_blk_size) * ecc_bit_off)%8;
++		low_byte_off = ((i/data_ecc_blk_size) * ecc_bit_off)/8;
++		high_bit_off = (((i+1)/data_ecc_blk_size) * ecc_bit_off)%8;
++		high_byte_off = (((i+1)/data_ecc_blk_size) * ecc_bit_off)/8;
++
++		byte_low = tmp_buf[i+low_byte_off] >> low_bit_off;
++		byte_high = tmp_buf[i+1+high_byte_off] << (8 - high_bit_off);
++
++		*(uint8_t *)(target_block + i + m) = (byte_low | byte_high) ^ RandData[i + m];
++	}
++
++	free(ecc_buf);
++	free(tmp_buf);
++	return 0;
++}
+diff -Naur kobs-ng-1.3.org/src/bch.h kobs-ng-1.3.new/src/bch.h
+--- kobs-ng-1.3.org/src/bch.h	1969-12-31 16:00:00.000000000 -0800
++++ kobs-ng-1.3.new/src/bch.h	2014-10-24 20:35:24.344372832 -0700
+@@ -0,0 +1,100 @@
++/*
++* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. All Rights Reserved.
++*/
++
++/*
++* This program is free software; you can redistribute it and/or modify
++* it under the terms of the GNU General Public License as published by
++* the Free Software Foundation; either version 2 of the License, or
++* (at your option) any later version.
++*
++* This program is distributed in the hope that it will be useful,
++* but WITHOUT ANY WARRANTY; without even the implied warranty of
++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++* GNU General Public License for more details.
++*
++* You should have received a copy of the GNU General Public License along
++* with this program; if not, write to the Free Software Foundation, Inc.,
++* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++/*
++ * Generic binary BCH encoding/decoding library
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
++ * more details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 51
++ * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Copyright © 2011 Parrot S.A.
++ *
++ * Author: Ivan Djelic <ivan.djelic@parrot.com>
++ *
++ * Description:
++ *
++ * This library provides runtime configurable encoding/decoding of binary
++ * Bose-Chaudhuri-Hocquenghem (BCH) codes.
++*/
++#ifndef _BCH_H
++#define _BCH_H
++
++//#include <types.h>
++
++/**
++ * struct bch_control - BCH control structure
++ * @m:          Galois field order
++ * @n:          maximum codeword size in bits (= 2^m-1)
++ * @t:          error correction capability in bits
++ * @ecc_bits:   ecc exact size in bits, i.e. generator polynomial degree (<=m*t)
++ * @ecc_bytes:  ecc max size (m*t bits) in bytes
++ * @a_pow_tab:  Galois field GF(2^m) exponentiation lookup table
++ * @a_log_tab:  Galois field GF(2^m) log lookup table
++ * @mod8_tab:   remainder generator polynomial lookup tables
++ * @ecc_buf:    ecc parity words buffer
++ * @ecc_buf2:   ecc parity words buffer
++ * @xi_tab:     GF(2^m) base for solving degree 2 polynomial roots
++ * @syn:        syndrome buffer
++ * @cache:      log-based polynomial representation buffer
++ * @elp:        error locator polynomial
++ * @poly_2t:    temporary polynomials of degree 2t
++ */
++struct bch_control {
++	unsigned int    m;
++	unsigned int    n;
++	unsigned int    t;
++	unsigned int    ecc_bits;
++	unsigned int    ecc_bytes;
++/* private: */
++	uint16_t       *a_pow_tab;
++	uint16_t       *a_log_tab;
++	uint32_t       *mod8_tab;
++	uint32_t       *ecc_buf;
++	uint32_t       *ecc_buf2;
++	unsigned int   *xi_tab;
++	unsigned int   *syn;
++	int            *cache;
++	struct gf_poly *elp;
++	struct gf_poly *poly_2t[4];
++};
++
++struct bch_control *init_bch(int m, int t, unsigned int prim_poly);
++
++void free_bch(struct bch_control *bch);
++
++void encode_bch(struct bch_control *bch, const uint8_t *data,
++		unsigned int len, uint8_t *ecc);
++
++int decode_bch(struct bch_control *bch, const uint8_t *data, unsigned int len,
++	       const uint8_t *recv_ecc, const uint8_t *calc_ecc,
++	       const unsigned int *syn, unsigned int *errloc);
++
++int encode_bch_ecc_62(void *source_block, size_t source_size,
++				   void *target_block, size_t target_size);
++#endif /* _BCH_H */
+diff -Naur kobs-ng-1.3.org/src/BootControlBlocks.h kobs-ng-1.3.new/src/BootControlBlocks.h
+--- kobs-ng-1.3.org/src/BootControlBlocks.h	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/BootControlBlocks.h	2014-10-24 20:35:24.340372832 -0700
+@@ -1,5 +1,5 @@
+ /*
+-* Copyright (C) 2010-2011 Freescale Semiconductor, Inc. All Rights Reserved.
++* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+ 
+ /*
+@@ -45,6 +45,8 @@
+ 
+ #define BCB_MAGIC_OFFSET	12
+ 
++#define MAXSEQLEN 183
++
+ //==============================================================================
+ 
+ //! \brief NAND Timing structure for setting up the GPMI timing.
+@@ -247,6 +249,17 @@
+ 	uint32_t	m_u32TMTiming1_BusyTimeout;
+ } FCB_ROM_NAND_TM_Timing_t;
+ 
++typedef struct {
++	uint32_t	m_u32ONFISpeed;
++	uint32_t	m_u32ONFITiming_ReadLatency;
++	uint32_t	m_u32ONFITiming_CEDelay;
++	uint32_t	m_u32ONFITiming_PreambleDelay;
++	uint32_t	m_u32ONFITiming_PostambleDelay;
++	uint32_t	m_u32ONFITiming_CmdAddPause;
++	uint32_t	m_u32ONFITiming_DataPause;
++	uint32_t	m_u32ONFITiming_BusyTimeout;
++} FCB_ROM_NAND_ONFI_Timing_t;
++
+ struct fcb_block {
+ 	FCB_ROM_NAND_Timing_t  m_NANDTiming;             //!< Optimum timing parameters for Tas, Tds, Tdh in nsec.
+ 	uint32_t        m_u32PageDataSize;              //!< 2048 for 2K pages, 4096 for 4K pages.
+@@ -285,6 +298,16 @@
+ 	FCB_ROM_NAND_TM_Timing_t m_NANDTMTiming;
+ 	uint32_t	m_u32DISBBM;	/* the flag to enable (1)/disable(0) bi swap */
+ 	uint32_t	m_u32BBMarkerPhysicalOffsetInSpareData; /* The swap position of main area in spare area */
++
++	uint32_t        m_u32OnfiSyncEnable;            //!< Enable the Onfi nand sync mode support
++	FCB_ROM_NAND_ONFI_Timing_t m_NANDONFITiming;
++	uint32_t        m_u32DISBBSearch;               //!< Disable the badblock search when reading the firmware, only using DBBT.
++
++	uint32_t        m_u32RandomizerEnable;          //!< Enable randomizer support
++	uint32_t        reserved[15];
++	uint32_t        m_u32ReadRetryEnable;           //!< Enable ready retry support
++	uint32_t        m_u32ReadRetrySeqLength;        //!< Read retry sequence length
++	uint32_t        m_u32ReadRetrySeq[MAXSEQLEN];         //!< Read retry sequence length
+ };
+ 
+ //==============================================================================
+diff -Naur kobs-ng-1.3.org/src/main.c kobs-ng-1.3.new/src/main.c
+--- kobs-ng-1.3.org/src/main.c	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/main.c	2014-10-24 20:35:24.344372832 -0700
+@@ -2,7 +2,7 @@
+  *  cb-dump.c - Dump control structures of the NAND
+  *
+  *  Copyright (c) 2008 by Embedded Alley Solution Inc.
+- *  Copyright (C) 2010-2012 Freescale Semiconductor, Inc.
++ *  Copyright (C) 2010-2014 Freescale Semiconductor, Inc.
+  *
+  *   Author: Pantelis Antoniou <pantelis@embeddedalley.com>
+  *
+@@ -562,8 +562,8 @@
+ 	int ret;
+ 	int sz = getpagesize();
+ 
+-	from = open(file_name, O_RDONLY);
+-	to = open(tmp_file, O_CREAT | O_RDWR);
++	from = open(file_name, O_RDONLY, S_IRUSR | S_IWUSR);
++	to = open(tmp_file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+ 	if (from < 0 || to < 0) {
+ 		fprintf(stderr, "unable to create a temporary file\n");
+ 		exit(5);
+diff -Naur kobs-ng-1.3.org/src/Makefile.am kobs-ng-1.3.new/src/Makefile.am
+--- kobs-ng-1.3.org/src/Makefile.am	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/Makefile.am	2014-10-24 20:35:24.340372832 -0700
+@@ -3,6 +3,6 @@
+ bin_PROGRAMS=kobs-ng
+ 
+ kobs_ng_SOURCES=main.c mtd.c rom_nand_hamming_code_ecc.c ncb.c bootstream.c sha1.c \
+-		aescrypt.c aeskey.c aestab.c plat_boot_config.c \
++		aescrypt.c aeskey.c aestab.c plat_boot_config.c bch.c \
+ 		rom_nand_hamming_code_ecc.h mtd.h BootControlBlocks.h bootstream.h sha.h \
+-		aes.h aesopt.h plat_boot_config.h
++		aes.h aesopt.h plat_boot_config.h bch.h rand.h
+diff -Naur kobs-ng-1.3.org/src/Makefile.in kobs-ng-1.3.new/src/Makefile.in
+--- kobs-ng-1.3.org/src/Makefile.in	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/Makefile.in	2014-10-24 20:35:24.340372832 -0700
+@@ -49,7 +49,8 @@
+ am_kobs_ng_OBJECTS = main.$(OBJEXT) mtd.$(OBJEXT) \
+ 	rom_nand_hamming_code_ecc.$(OBJEXT) ncb.$(OBJEXT) \
+ 	bootstream.$(OBJEXT) sha1.$(OBJEXT) aescrypt.$(OBJEXT) \
+-	aeskey.$(OBJEXT) aestab.$(OBJEXT) plat_boot_config.$(OBJEXT)
++	aeskey.$(OBJEXT) aestab.$(OBJEXT) plat_boot_config.$(OBJEXT) \
++	bch.$(OBJEXT)
+ kobs_ng_OBJECTS = $(am_kobs_ng_OBJECTS)
+ kobs_ng_LDADD = $(LDADD)
+ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+@@ -158,9 +159,9 @@
+ top_srcdir = @top_srcdir@
+ INCLUDES = -I$(top_srcdir)/include
+ kobs_ng_SOURCES = main.c mtd.c rom_nand_hamming_code_ecc.c ncb.c bootstream.c sha1.c \
+-		aescrypt.c aeskey.c aestab.c plat_boot_config.c \
++		aescrypt.c aeskey.c aestab.c plat_boot_config.c bch.c\
+ 		rom_nand_hamming_code_ecc.h mtd.h BootControlBlocks.h bootstream.h sha.h \
+-		aes.h aesopt.h plat_boot_config.h
++		aes.h aesopt.h plat_boot_config.h bch.h rand.h
+ 
+ all: all-am
+ 
+@@ -233,7 +234,7 @@
+ 
+ clean-binPROGRAMS:
+ 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+-kobs-ng$(EXEEXT): $(kobs_ng_OBJECTS) $(kobs_ng_DEPENDENCIES) 
++kobs-ng$(EXEEXT): $(kobs_ng_OBJECTS) $(kobs_ng_DEPENDENCIES)
+ 	@rm -f kobs-ng$(EXEEXT)
+ 	$(LINK) $(kobs_ng_OBJECTS) $(kobs_ng_LDADD) $(LIBS)
+ 
+@@ -253,6 +254,7 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plat_boot_config.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rom_nand_hamming_code_ecc.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bch.Po@am__quote@
+ 
+ .c.o:
+ @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+diff -Naur kobs-ng-1.3.org/src/mtd.c kobs-ng-1.3.new/src/mtd.c
+--- kobs-ng-1.3.org/src/mtd.c	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/mtd.c	2014-10-24 20:35:24.344372832 -0700
+@@ -1,7 +1,7 @@
+ /*
+  *  mtd.c - Dump control structures of the NAND
+  *
+- *  Copyright 2008-2013 Freescale Semiconductor, Inc.
++ *  Copyright 2008-2014 Freescale Semiconductor, Inc.
+  *  Copyright (c) 2008 by Embedded Alley Solution Inc.
+  *
+  *   Author: Pantelis Antoniou <pantelis@embeddedalley.com>
+@@ -1455,6 +1455,8 @@
+ 			mtd_size(md) - md->fcb.FCB_Block.m_u32Firmware2_startingPage * page_size);
+ 		break;
+ 	case ROM_Version_3:
++	case ROM_Version_4:
++	case ROM_Version_5:
+ #undef P3
+ #define P3(x)	printf("  %s = 0x%08x\n", #x, md->fcb.x)
+ 		printf("FCB\n");
+@@ -1504,6 +1506,26 @@
+ 		P3(m_NANDTMTiming.m_u32TMSpeed);
+ 		P3(m_NANDTMTiming.m_u32TMTiming1_BusyTimeout);
+ 		P3(m_u32DISBBM);
++		P3(m_u32BBMarkerPhysicalOffsetInSpareData);
++
++	if(ROM_Version_3 < plat_config_data->m_u32RomVer) {
++		P3(m_u32OnfiSyncEnable);
++		P3(m_NANDONFITiming.m_u32ONFISpeed);
++		P3(m_NANDONFITiming.m_u32ONFITiming_ReadLatency);
++		P3(m_NANDONFITiming.m_u32ONFITiming_CEDelay);
++		P3(m_NANDONFITiming.m_u32ONFITiming_PreambleDelay);
++		P3(m_NANDONFITiming.m_u32ONFITiming_PostambleDelay);
++		P3(m_NANDONFITiming.m_u32ONFITiming_CmdAddPause);
++		P3(m_NANDONFITiming.m_u32ONFITiming_DataPause);
++		P3(m_NANDONFITiming.m_u32ONFITiming_BusyTimeout);
++		P3(m_u32DISBBSearch);
++	}
++
++	if(ROM_Version_4 < plat_config_data->m_u32RomVer) {
++		P3(m_u32RandomizerEnable);
++		P3(m_u32ReadRetryEnable);
++		P3(m_u32ReadRetrySeqLength);
++	}
+ #undef P3
+ #define P3(x)	printf("  %s = 0x%08x\n", #x, md->dbbt50.x)
+ 		printf("DBBT\n");
+@@ -1652,6 +1674,7 @@
+ 	b->m_u32BadBlockMarkerStartBit = geo->block_mark_bit_offset;
+ 	b->m_u32BBMarkerPhysicalOffset = mtd_writesize(md);
+ 	b->m_u32BCHType = 0;
++
+ 	return 0;
+ }
+ 
+@@ -2877,6 +2900,47 @@
+ 	return write_boot_stream(md, fp);
+ }
+ 
++int v5_rom_mtd_commit_structures(struct mtd_data *md, FILE *fp, int flags)
++{
++	int size, i, r, chip = 0;
++	loff_t ofs;
++	struct mtd_config *cfg = &md->cfg;
++
++	/* [1] Write the FCB search area. */
++	size = mtd_writesize(md) + mtd_oobsize(md);
++	memset(md->buf, 0, size);
++	r = fcb_encrypt(&md->fcb, md->buf, size, 2);
++	if (r < 0)
++		return r;
++
++	mtd_commit_bcb(md, "FCB", 0, 0, 0, 1, size, false);
++
++	/* [2] Write the DBBT search area. */
++	memset(md->buf, 0, mtd_writesize(md));
++	memcpy(md->buf, &(md->dbbt50), sizeof(md->dbbt50));
++	mtd_commit_bcb(md, "DBBT", 1, 1, 1, 1, mtd_writesize(md), true);
++
++	/* Write the DBBT table area. */
++	memset(md->buf, 0, mtd_writesize(md));
++	if (md->dbbt50.DBBT_Block.v3.m_u32DBBTNumOfPages > 0 && md->bbtn[0] != NULL) {
++		memcpy(md->buf, md->bbtn[0], sizeof(*md->bbtn[0]));
++
++		ofs = cfg->search_area_size_in_bytes;
++
++		for (i = 0; i < 4; i++, ofs += cfg->stride_size_in_bytes) {
++			vp(md, "mtd: PUTTING down DBBT%d BBTN%d @0x%llx (0x%x)\n",
++				i, 0, ofs + 4 * mtd_writesize(md), mtd_writesize(md));
++
++			r = mtd_write_page(md, chip, ofs + 4 * mtd_writesize(md), 1);
++			if (r != mtd_writesize(md)) {
++				fprintf(stderr, "mtd: Failed to write BBTN @0x%llx (%d)\n", ofs, r);
++			}
++		}
++	}
++
++	/* [3] Write the two boot streams. */
++	return write_boot_stream(md, fp);
++}
+ #undef ARG
+ #define ARG(x) { .name = #x , .offset = offsetof(struct mtd_config, x), .ignore = false, }
+ #define ARG_IGNORE(x) { .name = #x , .offset = offsetof(struct mtd_config, x), .ignore = true, }
+diff -Naur kobs-ng-1.3.org/src/mtd.h kobs-ng-1.3.new/src/mtd.h
+--- kobs-ng-1.3.org/src/mtd.h	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/mtd.h	2014-10-24 20:35:24.344372832 -0700
+@@ -1,7 +1,7 @@
+ /*
+ *  mtd.c - Dump control structures of the NAND
+ *
+-*  Copyright 2008-2011 Freescale Semiconductor, Inc.
++*  Copyright 2008-2014 Freescale Semiconductor, Inc.
+ *  Copyright (c) 2008 by Embedded Alley Solution Inc.
+ *
+ *   Author: Pantelis Antoniou <pantelis@embeddedalley.com>
+@@ -211,7 +211,9 @@
+ 	ROM_Version_0       =  0, /* e.g., i.MX23 */
+ 	ROM_Version_1       =  1, /* e.g., i.MX28 */
+ 	ROM_Version_2       =  2, /* e.g., i.MX53 */
+-	ROM_Version_3	    =  3, /* e.g., i.MX50 */
++	ROM_Version_3	    =  3, /* e.g., i.MX50, iMX6dqsl */
++	ROM_Version_4	    =  4, /* e.g., i.MX6sx */
++	ROM_Version_5	    =  5, /* e.g., i.MX6sx TO1.2*/
+ };
+ 
+ static inline int mtd_pages_per_block(struct mtd_data *md)
+@@ -291,6 +293,7 @@
+ int v2_rom_mtd_commit_structures(struct mtd_data *md, FILE *fp, int flags);
+ int v3_rom_mtd_commit_structures(struct mtd_data *md, FILE *fp, int flags);
+ int v4_rom_mtd_commit_structures(struct mtd_data *md, FILE *fp, int flags);
++int v5_rom_mtd_commit_structures(struct mtd_data *md, FILE *fp, int flags);
+ 
+ int mtd_set_ecc_mode(struct mtd_data *md, int ecc);
+ 
+diff -Naur kobs-ng-1.3.org/src/ncb.c kobs-ng-1.3.new/src/ncb.c
+--- kobs-ng-1.3.org/src/ncb.c	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/ncb.c	2014-10-24 20:35:32.684372507 -0700
+@@ -1,6 +1,7 @@
+ /*
+  *  ncb.c - verify and encode NCB
+  *
++ *  Copyright (C) 2014 Freescale Semiconductor, Inc.
+  *  Copyright (c) 2008 by Embedded Alley Solution Inc.
+  *
+  *   This program is free software; you can redistribute it and/or modify
+@@ -29,6 +30,9 @@
+ #include "mtd.h"
+ #include "config.h"
+ #include "rom_nand_hamming_code_ecc.h"
++#include "bch.h"
++
++#define MAX_HAMMING_FCB_SZ 220
+ 
+ static inline int even_number_of_1s(uint8_t byte)
+ {
+@@ -365,12 +369,12 @@
+ 	uint32_t  accumulator;
+ 	uint8_t   *p;
+ 	uint8_t   *q;
++	int fcb_size;
+ 
+ 	//----------------------------------------------------------------------
+ 	// Check for nonsense.
+ 	//----------------------------------------------------------------------
+ 
+-	assert(version == 1);
+ 	assert(size >= sizeof(BCB_ROM_BootBlockStruct_t));
+ 
+ 	//----------------------------------------------------------------------
+@@ -402,6 +406,8 @@
+ 
+ 	fcb->m_u32Checksum = accumulator;
+ 
++	fcb_size = MAX_HAMMING_FCB_SZ < sizeof(*fcb) ? MAX_HAMMING_FCB_SZ : sizeof(*fcb);
++
+ 	//----------------------------------------------------------------------
+ 	// Compute the ECC bytes.
+ 	//----------------------------------------------------------------------
+@@ -412,7 +418,9 @@
+ 		memcpy(target, fcb, sizeof(*fcb));
+ 		return size;
+ 	case 1:
+-		return encode_hamming_code_13_8(fcb, sizeof(*fcb), target, size);
++		return encode_hamming_code_13_8(fcb, fcb_size, target, size);
++	case 2:
++		return encode_bch_ecc_62(fcb, sizeof(*fcb), target, size);
+ 	default:
+ 		fprintf(stderr, "FCB version == %d? Something is wrong!\n", version);
+ 		return -EINVAL;
+diff -Naur kobs-ng-1.3.org/src/plat_boot_config.c kobs-ng-1.3.new/src/plat_boot_config.c
+--- kobs-ng-1.3.org/src/plat_boot_config.c	2013-11-04 18:36:41.000000000 -0800
++++ kobs-ng-1.3.new/src/plat_boot_config.c	2014-10-24 20:35:32.684372507 -0700
+@@ -1,5 +1,5 @@
+ /*
+-* Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved.
++* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+ 
+ /*
+@@ -105,12 +105,39 @@
+ 	.rom_mtd_commit_structures = v4_rom_mtd_commit_structures,
+ };
+ 
++static platform_config mx6sx_boot_config = {
++	.m_u32RomVer = ROM_Version_4,
++	.m_u32EnDISBBM = 0,
++	.m_u32EnBootStreamVerify = 0,
++	.m_u32UseNfcGeo = 0,
++	.m_u32UseMultiBootArea = 0,
++	.m_u32UseSinglePageStride = 0,
++	.m_u32DBBT_FingerPrint = DBBT_FINGERPRINT2,
++	.rom_mtd_init = v4_rom_mtd_init,
++	.rom_mtd_commit_structures = v4_rom_mtd_commit_structures,
++};
++
++static platform_config mx6sx_to_1_2_boot_config = {
++	.m_u32RomVer = ROM_Version_5,
++	.m_u32EnDISBBM = 0,
++	.m_u32EnBootStreamVerify = 0,
++	.m_u32UseNfcGeo = 0,
++	.m_u32UseMultiBootArea = 0,
++	.m_u32UseSinglePageStride = 0,
++	.m_u32DBBT_FingerPrint = DBBT_FINGERPRINT2,
++	.rom_mtd_init = v4_rom_mtd_init,
++	.rom_mtd_commit_structures = v5_rom_mtd_commit_structures,
++};
++
+ int discover_boot_rom_version(void)
+ {
+ 	FILE         *cpuinfo;
++	FILE         *soc_id;
++	FILE         *revision;
+ 	char         line_buffer[100];
+ 	static char  *banner = "Revision";
+ 	static char  *banner_hw = "Hardware";
++	static char  *plat_imx6sx = "i.MX6SX";
+ 	char *rev;
+ 	int system_rev, hw_system_rev = 0;
+ 
+@@ -147,6 +174,9 @@
+ 		}
+ 
+ 		rev = index(line_buffer, ':');
++
++		/*check soc_id and revision for mx6sx*/
++
+ 		if (rev != NULL) {
+ 			rev++;
+ 			system_rev = strtoul(rev, NULL, 16);
+@@ -178,6 +208,24 @@
+ 			case MX6Q:
+ 			case MX6DL:
+ 				plat_config_data = &mx6q_boot_config;
++				soc_id = fopen("/sys/devices/soc0/soc_id", "r");
++				if (!soc_id) {
++					exit(1);
++				}
++				fgets(line_buffer, sizeof(line_buffer), soc_id);
++
++				if (!strncmp(line_buffer, plat_imx6sx, strlen(plat_imx6sx))) {
++					revision = fopen("/sys/devices/soc0/revision", "r");
++					if (!revision) {
++						exit(1);
++					}
++					fgets(line_buffer, sizeof(line_buffer), revision);
++					if (!strncmp(line_buffer, "1.0", strlen("1.0")) ||
++							!strncmp(line_buffer, "1.1", strlen("1.1")))
++						plat_config_data = &mx6sx_boot_config;
++					if (!strncmp(line_buffer, "1.2", strlen("1.2")))
++						plat_config_data = &mx6sx_to_1_2_boot_config;
++				}
+ 				break;
+ 
+ 			default:
+diff -Naur kobs-ng-1.3.org/src/rand.h kobs-ng-1.3.new/src/rand.h
+--- kobs-ng-1.3.org/src/rand.h	1969-12-31 16:00:00.000000000 -0800
++++ kobs-ng-1.3.new/src/rand.h	2014-10-24 20:35:24.344372832 -0700
+@@ -0,0 +1,1107 @@
++/*
++* Copyright (C) 2014 Freescale Semiconductor, Inc. All Rights Reserved.
++*/
++
++/*
++* This program is free software; you can redistribute it and/or modify
++* it under the terms of the GNU General Public License as published by
++* the Free Software Foundation; either version 2 of the License, or
++* (at your option) any later version.
++*
++* This program is distributed in the hope that it will be useful,
++* but WITHOUT ANY WARRANTY; without even the implied warranty of
++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++* GNU General Public License for more details.
++*
++* You should have received a copy of the GNU General Public License along
++* with this program; if not, write to the Free Software Foundation, Inc.,
++* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++
++#ifndef RAND_H_
++#define RAND_H_
++
++unsigned char RandData[]={
++	 0x2b, 0xd4, 0xd2, 0x2d, 0x55, 0xaa, 0xac, 0x53,
++	 0xab, 0x54, 0xd5, 0x2a, 0xd3, 0x2c, 0xad, 0x52,
++	 0x33, 0xcc, 0x34, 0xcb, 0xaa, 0x55, 0x2d, 0xd2,
++	 0x4c, 0xb3, 0xd2, 0x2d, 0xb3, 0x4c, 0x35, 0xca,
++	 0xb4, 0x4b, 0x35, 0xca, 0x34, 0xcb, 0xb2, 0x4d,
++	 0x35, 0xca, 0xb2, 0x4d, 0xad, 0x52, 0xcb, 0x34,
++	 0xad, 0x52, 0x4b, 0xb4, 0x52, 0xad, 0x52, 0xad,
++	 0x52, 0xad, 0x4a, 0xb5, 0xb2, 0x4d, 0x4d, 0xb2,
++	 0x32, 0xcd, 0x4a, 0xb5, 0xb4, 0x4b, 0x4b, 0xb4,
++	 0x2c, 0xd3, 0xaa, 0x55, 0x55, 0xaa, 0x2a, 0xd5,
++	 0x2a, 0xd5, 0xcc, 0x33, 0x33, 0xcc, 0xd4, 0x2b,
++	 0xcb, 0x34, 0x33, 0xcc, 0x4c, 0xb3, 0xb4, 0x4b,
++	 0xcd, 0x32, 0x33, 0xcc, 0x54, 0xab, 0x4a, 0xb5,
++	 0xcc, 0x33, 0xb3, 0x4c, 0x33, 0xcc, 0x2a, 0xd5,
++	 0xcc, 0x33, 0x2b, 0xd4, 0x2c, 0xd3, 0x34, 0xcb,
++	 0x4c, 0xb3, 0x34, 0xcb, 0x4a, 0xb5, 0x32, 0xcd,
++	 0x54, 0xab, 0xd2, 0x2d, 0xb5, 0x4a, 0xb3, 0x4c,
++	 0xb3, 0x4c, 0xd5, 0x2a, 0xd5, 0x2a, 0x2b, 0xd4,
++	 0x34, 0xcb, 0xd4, 0x2b, 0x4b, 0xb4, 0xb4, 0x4b,
++	 0x4d, 0xb2, 0xb4, 0x4b, 0x55, 0xaa, 0x4a, 0xb5,
++	 0x54, 0xab, 0xca, 0x35, 0x33, 0xcc, 0xaa, 0x55,
++	 0x33, 0xcc, 0x32, 0xcd, 0x2c, 0xd3, 0x2c, 0xd3,
++	 0xac, 0x53, 0x33, 0xcc, 0xca, 0x35, 0x35, 0xca,
++	 0xd2, 0x2d, 0xd3, 0x2c, 0x2d, 0xd2, 0x52, 0xad,
++	 0xca, 0x35, 0x55, 0xaa, 0xaa, 0x55, 0xcd, 0x32,
++	 0x2d, 0xd2, 0xcc, 0x33, 0xb3, 0x4c, 0x53, 0xac,
++	 0xca, 0x35, 0x33, 0xcc, 0xd4, 0x2b, 0xcd, 0x32,
++	 0xcd, 0x32, 0xb3, 0x4c, 0xab, 0x54, 0x53, 0xac,
++	 0xcc, 0x33, 0xab, 0x54, 0xd3, 0x2c, 0x2d, 0xd2,
++	 0x4c, 0xb3, 0x2c, 0xd3, 0xaa, 0x55, 0x35, 0xca,
++	 0xd4, 0x2b, 0xd5, 0x2a, 0x33, 0xcc, 0xb2, 0x4d,
++	 0x2b, 0xd4, 0x34, 0xcb, 0xac, 0x53, 0xab, 0x54,
++	 0x4b, 0xb4, 0x32, 0xcd, 0x52, 0xad, 0xac, 0x53,
++	 0xb5, 0x4a, 0x53, 0xac, 0xd2, 0x2d, 0xcd, 0x32,
++	 0xd5, 0x2a, 0x4d, 0xb2, 0xaa, 0x55, 0xd3, 0x2c,
++	 0xab, 0x54, 0xcb, 0x34, 0xd3, 0x2c, 0xb5, 0x4a,
++	 0x53, 0xac, 0x32, 0xcd, 0x2a, 0xd5, 0x2a, 0xd5,
++	 0xb2, 0x4d, 0xd3, 0x2c, 0x2b, 0xd4, 0x54, 0xab,
++	 0xd4, 0x2b, 0xb5, 0x4a, 0x4b, 0xb4, 0xac, 0x53,
++	 0x2b, 0xd4, 0xaa, 0x55, 0xd5, 0x2a, 0xad, 0x52,
++	 0x2b, 0xd4, 0xcc, 0x33, 0xab, 0x54, 0xad, 0x52,
++	 0xcb, 0x34, 0xb3, 0x4c, 0xb3, 0x4c, 0xad, 0x52,
++	 0xcd, 0x32, 0x2b, 0xd4, 0xb4, 0x4b, 0x4d, 0xb2,
++	 0x4c, 0xb3, 0xb4, 0x4b, 0xb5, 0x4a, 0x2b, 0xd4,
++	 0x54, 0xab, 0xca, 0x35, 0x55, 0xaa, 0xb4, 0x4b,
++	 0x33, 0xcc, 0xd2, 0x2d, 0x53, 0xac, 0x2a, 0xd5,
++	 0xac, 0x53, 0x35, 0xca, 0x32, 0xcd, 0x34, 0xcb,
++	 0x32, 0xcd, 0x52, 0xad, 0x4c, 0xb3, 0x52, 0xad,
++	 0xac, 0x53, 0x2d, 0xd2, 0xb4, 0x4b, 0x2d, 0xd2,
++	 0xb2, 0x4d, 0xb5, 0x4a, 0xb5, 0x4a, 0x55, 0xaa,
++	 0x34, 0xcb, 0xca, 0x35, 0x35, 0xca, 0xac, 0x53,
++	 0x2d, 0xd2, 0xd2, 0x2d, 0xcd, 0x32, 0x4d, 0xb2,
++	 0xaa, 0x55, 0x55, 0xaa, 0xac, 0x53, 0xcb, 0x34,
++	 0x33, 0xcc, 0x2c, 0xd3, 0x52, 0xad, 0x32, 0xcd,
++	 0xcc, 0x33, 0x55, 0xaa, 0xb2, 0x4d, 0x33, 0xcc,
++	 0x2c, 0xd3, 0x4c, 0xb3, 0xd4, 0x2b, 0x33, 0xcc,
++	 0xca, 0x35, 0xab, 0x54, 0xcb, 0x34, 0xd3, 0x2c,
++	 0x4d, 0xb2, 0xac, 0x53, 0xcd, 0x32, 0x55, 0xaa,
++	 0xd4, 0x2b, 0x4d, 0xb2, 0x2c, 0xd3, 0xac, 0x53,
++	 0xab, 0x54, 0x2b, 0xd4, 0xca, 0x35, 0xad, 0x52,
++	 0x53, 0xac, 0xd4, 0x2b, 0xad, 0x52, 0x2d, 0xd2,
++	 0x52, 0xad, 0x54, 0xab, 0xb2, 0x4d, 0x55, 0xaa,
++	 0x52, 0xad, 0x4c, 0xb3, 0x34, 0xcb, 0x4c, 0xb3,
++	 0xd2, 0x2d, 0xab, 0x54, 0xcd, 0x32, 0x4b, 0xb4,
++	 0x4a, 0xb5, 0x4c, 0xb3, 0x4c, 0xb3, 0xca, 0x35,
++	 0xd5, 0x2a, 0x2b, 0xd4, 0x34, 0xcb, 0xd2, 0x2d,
++	 0x4b, 0xb4, 0xb4, 0x4b, 0xad, 0x52, 0xb5, 0x4a,
++	 0x55, 0xaa, 0x4a, 0xb5, 0x32, 0xcd, 0xca, 0x35,
++	 0x33, 0xcc, 0x4a, 0xb5, 0x2c, 0xd3, 0x32, 0xcd,
++	 0x2c, 0xd3, 0x2a, 0xd5, 0xaa, 0x55, 0x33, 0xcc,
++	 0x2a, 0xd5, 0xd4, 0x2b, 0xd3, 0x2c, 0xd3, 0x2c,
++	 0x4b, 0xb4, 0x34, 0xcb, 0xca, 0x35, 0xb5, 0x4a,
++	 0x55, 0xaa, 0xd2, 0x2d, 0x2d, 0xd2, 0xca, 0x35,
++	 0xb3, 0x4c, 0x55, 0xaa, 0x2a, 0xd5, 0x32, 0xcd,
++	 0x34, 0xcb, 0xcc, 0x33, 0xab, 0x54, 0xb3, 0x4c,
++	 0xcd, 0x32, 0xb3, 0x4c, 0xd3, 0x2c, 0x4b, 0xb4,
++	 0xcc, 0x33, 0x2b, 0xd4, 0x4a, 0xb5, 0x2a, 0xd5,
++	 0x4c, 0xb3, 0xd4, 0x2b, 0x35, 0xca, 0x34, 0xcb,
++	 0x54, 0xab, 0xd4, 0x2b, 0x4d, 0xb2, 0xb2, 0x4d,
++	 0x53, 0xac, 0x54, 0xab, 0xb4, 0x4b, 0x2b, 0xd4,
++	 0x52, 0xad, 0xac, 0x53, 0x55, 0xaa, 0x54, 0xab,
++	 0xd2, 0x2d, 0xcd, 0x32, 0x53, 0xac, 0x4c, 0xb3,
++	 0xaa, 0x55, 0x33, 0xcc, 0xd2, 0x2d, 0xcb, 0x34,
++	 0xd3, 0x2c, 0x53, 0xac, 0x4a, 0xb5, 0x32, 0xcd,
++	 0xca, 0x35, 0xcd, 0x32, 0xb5, 0x4a, 0xd3, 0x2c,
++	 0xad, 0x52, 0xd3, 0x2c, 0xd5, 0x2a, 0x55, 0xaa,
++	 0xd2, 0x2d, 0xd5, 0x2a, 0x2b, 0xd4, 0x4c, 0xb3,
++	 0x2a, 0xd5, 0xb4, 0x4b, 0xcb, 0x34, 0xcb, 0x34,
++	 0x4b, 0xb4, 0xaa, 0x55, 0x4d, 0xb2, 0xb2, 0x4d,
++	 0x35, 0xca, 0x4c, 0xb3, 0xb4, 0x4b, 0xcb, 0x34,
++	 0xcd, 0x32, 0xab, 0x54, 0x55, 0xaa, 0x52, 0xad,
++	 0x4c, 0xb3, 0xcc, 0x33, 0xb3, 0x4c, 0x2d, 0xd2,
++	 0xd4, 0x2b, 0x33, 0xcc, 0xb4, 0x4b, 0xb5, 0x4a,
++	 0xcb, 0x34, 0xb3, 0x4c, 0x35, 0xca, 0xaa, 0x55,
++	 0xcd, 0x32, 0xcb, 0x34, 0x2d, 0xd2, 0x4c, 0xb3,
++	 0x4c, 0xb3, 0x52, 0xad, 0xca, 0x35, 0x2b, 0xd4,
++	 0xb4, 0x4b, 0xcd, 0x32, 0x4d, 0xb2, 0xb4, 0x4b,
++	 0xb5, 0x4a, 0x53, 0xac, 0x54, 0xab, 0xca, 0x35,
++	 0xd5, 0x2a, 0xad, 0x52, 0x33, 0xcc, 0xd2, 0x2d,
++	 0xab, 0x54, 0x2d, 0xd2, 0xac, 0x53, 0xb5, 0x4a,
++	 0xb3, 0x4c, 0x35, 0xca, 0x32, 0xcd, 0x2a, 0xd5,
++	 0x34, 0xcb, 0x52, 0xad, 0x2c, 0xd3, 0xb4, 0x4b,
++	 0xad, 0x52, 0x2d, 0xd2, 0x4a, 0xb5, 0x4a, 0xb5,
++	 0xb2, 0x4d, 0xd5, 0x2a, 0x35, 0xca, 0x4a, 0xb5,
++	 0x34, 0xcb, 0xd4, 0x2b, 0x2d, 0xd2, 0xaa, 0x55,
++	 0x4d, 0xb2, 0x54, 0xab, 0x2a, 0xd5, 0x4c, 0xb3,
++	 0x54, 0xab, 0xcc, 0x33, 0xcb, 0x34, 0xab, 0x54,
++	 0xd3, 0x2c, 0xb3, 0x4c, 0x4d, 0xb2, 0x2c, 0xd3,
++	 0xca, 0x35, 0x4b, 0xb4, 0xd4, 0x2b, 0xd5, 0x2a,
++	 0x4d, 0xb2, 0xaa, 0x55, 0x2b, 0xd4, 0x54, 0xab,
++	 0x34, 0xcb, 0xac, 0x53, 0x4b, 0xb4, 0xac, 0x53,
++	 0xcd, 0x32, 0xad, 0x52, 0xd5, 0x2a, 0x4d, 0xb2,
++	 0xac, 0x53, 0xcd, 0x32, 0xab, 0x54, 0x2b, 0xd4,
++	 0xb2, 0x4d, 0xb3, 0x4c, 0x53, 0xac, 0x54, 0xab,
++	 0xd4, 0x2b, 0x2b, 0xd4, 0x52, 0xad, 0xac, 0x53,
++	 0x4b, 0xb4, 0x54, 0xab, 0xd2, 0x2d, 0xad, 0x52,
++	 0x55, 0xaa, 0x4c, 0xb3, 0xaa, 0x55, 0xcd, 0x32,
++	 0xd3, 0x2c, 0xcb, 0x34, 0xb3, 0x4c, 0x33, 0xcc,
++	 0x4a, 0xb5, 0x32, 0xcd, 0xd4, 0x2b, 0xd3, 0x2c,
++	 0xb5, 0x4a, 0xb3, 0x4c, 0xcb, 0x34, 0xd5, 0x2a,
++	 0xd5, 0x2a, 0xab, 0x54, 0x2d, 0xd2, 0xd4, 0x2b,
++	 0x4b, 0xb4, 0x4c, 0xb3, 0x4a, 0xb5, 0xb4, 0x4b,
++	 0xd5, 0x2a, 0xcb, 0x34, 0x55, 0xaa, 0xca, 0x35,
++	 0x4b, 0xb4, 0xd2, 0x2d, 0x33, 0xcc, 0xb2, 0x4d,
++	 0xb5, 0x4a, 0x35, 0xca, 0xac, 0x53, 0xcb, 0x34,
++	 0x35, 0xca, 0x32, 0xcd, 0x52, 0xad, 0xd2, 0x2d,
++	 0xad, 0x52, 0x53, 0xac, 0xb2, 0x4d, 0x55, 0xaa,
++	 0xd2, 0x2d, 0x4d, 0xb2, 0x34, 0xcb, 0x4c, 0xb3,
++	 0xaa, 0x55, 0xab, 0x54, 0xcd, 0x32, 0xcb, 0x34,
++	 0x53, 0xac, 0x4c, 0xb3, 0x4c, 0xb3, 0x32, 0xcd,
++	 0xd2, 0x2d, 0x2b, 0xd4, 0xb4, 0x4b, 0x53, 0xac,
++	 0x4a, 0xb5, 0xb4, 0x4b, 0xd5, 0x2a, 0xcd, 0x32,
++	 0x55, 0xaa, 0xca, 0x35, 0xab, 0x54, 0xd3, 0x2c,
++	 0x33, 0xcc, 0xb2, 0x4d, 0xd3, 0x2c, 0x35, 0xca,
++	 0xac, 0x53, 0x2b, 0xd4, 0x2a, 0xd5, 0x32, 0xcd,
++	 0x52, 0xad, 0xd4, 0x2b, 0xab, 0x54, 0x53, 0xac,
++	 0x52, 0xad, 0xb4, 0x4b, 0xd3, 0x2c, 0x4d, 0xb2,
++	 0x52, 0xad, 0x2a, 0xd5, 0xaa, 0x55, 0x4b, 0xb4,
++	 0x32, 0xcd, 0xd4, 0x2b, 0x53, 0xac, 0x4a, 0xb5,
++	 0x4c, 0xb3, 0x34, 0xcb, 0x32, 0xcd, 0x2a, 0xd5,
++	 0x54, 0xab, 0x52, 0xad, 0x2c, 0xd3, 0xb4, 0x4b,
++	 0xb3, 0x4c, 0x2d, 0xd2, 0x4a, 0xb5, 0x2a, 0xd5,
++	 0xb4, 0x4b, 0xd5, 0x2a, 0x35, 0xca, 0xb4, 0x4b,
++	 0x35, 0xca, 0xd4, 0x2b, 0x4d, 0xb2, 0xca, 0x35,
++	 0x4d, 0xb2, 0x54, 0xab, 0x34, 0xcb, 0x52, 0xad,
++	 0x54, 0xab, 0xac, 0x53, 0xad, 0x52, 0xad, 0x52,
++	 0xd3, 0x2c, 0x4d, 0xb2, 0xb2, 0x4d, 0x2d, 0xd2,
++	 0xaa, 0x55, 0x4b, 0xb4, 0xb4, 0x4b, 0xd5, 0x2a,
++	 0x53, 0xac, 0xaa, 0x55, 0x35, 0xca, 0x34, 0xcb,
++	 0x32, 0xcd, 0xcc, 0x33, 0x4d, 0xb2, 0x52, 0xad,
++	 0xcc, 0x33, 0x53, 0xac, 0xb4, 0x4b, 0x2d, 0xd2,
++	 0xcc, 0x33, 0xad, 0x52, 0xb5, 0x4a, 0x35, 0xca,
++	 0xac, 0x53, 0xcd, 0x32, 0x35, 0xca, 0x32, 0xcd,
++	 0xb2, 0x4d, 0xd3, 0x2c, 0xad, 0x52, 0x53, 0xac,
++	 0xd4, 0x2b, 0x55, 0xaa, 0xd2, 0x2d, 0xad, 0x52,
++	 0x2b, 0xd4, 0x4c, 0xb3, 0xaa, 0x55, 0xad, 0x52,
++	 0xcb, 0x34, 0xcb, 0x34, 0xb3, 0x4c, 0xad, 0x52,
++	 0x4d, 0xb2, 0x32, 0xcd, 0xb4, 0x4b, 0x4d, 0xb2,
++	 0xb4, 0x4b, 0xb3, 0x4c, 0xb5, 0x4a, 0xab, 0x54,
++	 0xd5, 0x2a, 0xcb, 0x34, 0x55, 0xaa, 0xcc, 0x33,
++	 0x4b, 0xb4, 0xd2, 0x2d, 0xd3, 0x2c, 0xb3, 0x4c,
++	 0xb5, 0x4a, 0x35, 0xca, 0xca, 0x35, 0xcb, 0x34,
++	 0x35, 0xca, 0xd2, 0x2d, 0x4d, 0xb2, 0xd2, 0x2d,
++	 0xad, 0x52, 0x55, 0xaa, 0xb4, 0x4b, 0x55, 0xaa,
++	 0x32, 0xcd, 0xac, 0x53, 0x35, 0xca, 0x4c, 0xb3,
++	 0xcc, 0x33, 0xcd, 0x32, 0xcd, 0x32, 0x2b, 0xd4,
++	 0xac, 0x53, 0x53, 0xac, 0x4c, 0xb3, 0x34, 0xcb,
++	 0xd2, 0x2d, 0x2d, 0xd2, 0x54, 0xab, 0x52, 0xad,
++	 0xaa, 0x55, 0xb5, 0x4a, 0xb3, 0x4c, 0xcd, 0x32,
++	 0x33, 0xcc, 0x2a, 0xd5, 0xb4, 0x4b, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xb4, 0x4b, 0xd5, 0x2a, 0x33, 0xcc,
++	 0x4a, 0xb5, 0xca, 0x35, 0xcb, 0x34, 0xd3, 0x2c,
++	 0x35, 0xca, 0xb2, 0x4d, 0xcd, 0x32, 0xd5, 0x2a,
++	 0xad, 0x52, 0x4b, 0xb4, 0x2c, 0xd3, 0x54, 0xab,
++	 0x52, 0xad, 0x2a, 0xd5, 0x4a, 0xb5, 0x4c, 0xb3,
++	 0x32, 0xcd, 0xd4, 0x2b, 0xd5, 0x2a, 0x4b, 0xb4,
++	 0x4c, 0xb3, 0xd4, 0x2b, 0x4b, 0xb4, 0x2a, 0xd5,
++	 0x54, 0xab, 0xb4, 0x4b, 0x35, 0xca, 0xb4, 0x4b,
++	 0x53, 0xac, 0xca, 0x35, 0x4d, 0xb2, 0x2a, 0xd5,
++	 0x32, 0xcd, 0x52, 0xad, 0x34, 0xcb, 0x54, 0xab,
++	 0xac, 0x53, 0xad, 0x52, 0x4d, 0xb2, 0x2c, 0xd3,
++	 0xb2, 0x4d, 0x4d, 0xb2, 0xd4, 0x2b, 0x55, 0xaa,
++	 0xb4, 0x4b, 0xab, 0x54, 0x2b, 0xd4, 0xac, 0x53,
++	 0x55, 0xaa, 0xac, 0x53, 0xcb, 0x34, 0xcd, 0x32,
++	 0xd3, 0x2c, 0xad, 0x52, 0xad, 0x52, 0x33, 0xcc,
++	 0xaa, 0x55, 0x4d, 0xb2, 0xd2, 0x2d, 0xd3, 0x2c,
++	 0xb3, 0x4c, 0x4b, 0xb4, 0xca, 0x35, 0x35, 0xca,
++	 0x54, 0xab, 0xca, 0x35, 0x2d, 0xd2, 0xb2, 0x4d,
++	 0x33, 0xcc, 0x52, 0xad, 0xaa, 0x55, 0x2b, 0xd4,
++	 0xac, 0x53, 0xcd, 0x32, 0x53, 0xac, 0x34, 0xcb,
++	 0xb2, 0x4d, 0x33, 0xcc, 0x52, 0xad, 0x52, 0xad,
++	 0xd4, 0x2b, 0x53, 0xac, 0xb2, 0x4d, 0xad, 0x52,
++	 0xcb, 0x34, 0x4d, 0xb2, 0xb4, 0x4b, 0xad, 0x52,
++	 0xad, 0x52, 0xab, 0x54, 0xb5, 0x4a, 0x4d, 0xb2,
++	 0x52, 0xad, 0xcc, 0x33, 0xb5, 0x4a, 0x4b, 0xb4,
++	 0xd2, 0x2d, 0xd3, 0x2c, 0x55, 0xaa, 0x4a, 0xb5,
++	 0xca, 0x35, 0xd5, 0x2a, 0x33, 0xcc, 0xca, 0x35,
++	 0x2d, 0xd2, 0x34, 0xcb, 0x2c, 0xd3, 0x52, 0xad,
++	 0x4a, 0xb5, 0x32, 0xcd, 0xaa, 0x55, 0xcd, 0x32,
++	 0xb5, 0x4a, 0xd3, 0x2c, 0xb3, 0x4c, 0xd3, 0x2c,
++	 0xd5, 0x2a, 0x35, 0xca, 0xd4, 0x2b, 0xd5, 0x2a,
++	 0x2b, 0xd4, 0xb2, 0x4d, 0x2b, 0xd4, 0xb4, 0x4b,
++	 0xab, 0x54, 0xab, 0x54, 0x4b, 0xb4, 0xaa, 0x55,
++	 0x53, 0xac, 0xac, 0x53, 0x35, 0xca, 0x2c, 0xd3,
++	 0xd2, 0x2d, 0xcd, 0x32, 0xcd, 0x32, 0x55, 0xaa,
++	 0xaa, 0x55, 0x53, 0xac, 0x2c, 0xd3, 0xcc, 0x33,
++	 0xd3, 0x2c, 0x2d, 0xd2, 0xca, 0x35, 0x33, 0xcc,
++	 0xaa, 0x55, 0xd5, 0x2a, 0xcd, 0x32, 0xd3, 0x2c,
++	 0x33, 0xcc, 0x54, 0xab, 0xcc, 0x33, 0x35, 0xca,
++	 0x4c, 0xb3, 0x2c, 0xd3, 0x2c, 0xd3, 0x32, 0xcd,
++	 0xd4, 0x2b, 0x35, 0xca, 0xaa, 0x55, 0xb3, 0x4c,
++	 0x2b, 0xd4, 0xd2, 0x2d, 0xd3, 0x2c, 0xab, 0x54,
++	 0xab, 0x54, 0x35, 0xca, 0x4a, 0xb5, 0xac, 0x53,
++	 0x33, 0xcc, 0xd2, 0x2d, 0xd5, 0x2a, 0x2d, 0xd2,
++	 0xac, 0x53, 0xd5, 0x2a, 0xab, 0x54, 0x35, 0xca,
++	 0x32, 0xcd, 0xb4, 0x4b, 0x33, 0xcc, 0x52, 0xad,
++	 0x4c, 0xb3, 0x2a, 0xd5, 0xac, 0x53, 0x2d, 0xd2,
++	 0x34, 0xcb, 0x34, 0xcb, 0xb2, 0x4d, 0xb5, 0x4a,
++	 0x4d, 0xb2, 0x52, 0xad, 0x34, 0xcb, 0x4a, 0xb5,
++	 0xb4, 0x4b, 0xad, 0x52, 0x2d, 0xd2, 0xaa, 0x55,
++	 0xb5, 0x4a, 0x4d, 0xb2, 0x2a, 0xd5, 0xcc, 0x33,
++	 0xb5, 0x4a, 0xcb, 0x34, 0xcb, 0x34, 0xd3, 0x2c,
++	 0x55, 0xaa, 0xb2, 0x4d, 0xcd, 0x32, 0xd5, 0x2a,
++	 0xb3, 0x4c, 0x4b, 0xb4, 0x2c, 0xd3, 0x34, 0xcb,
++	 0x54, 0xab, 0x2a, 0xd5, 0x4a, 0xb5, 0xb2, 0x4d,
++	 0x33, 0xcc, 0xd4, 0x2b, 0xb5, 0x4a, 0x2b, 0xd4,
++	 0x4c, 0xb3, 0xd4, 0x2b, 0x55, 0xaa, 0x34, 0xcb,
++	 0x54, 0xab, 0xd4, 0x2b, 0x53, 0xac, 0xb2, 0x4d,
++	 0x53, 0xac, 0x34, 0xcb, 0xb2, 0x4d, 0x2b, 0xd4,
++	 0x52, 0xad, 0x52, 0xad, 0x54, 0xab, 0x54, 0xab,
++	 0xb2, 0x4d, 0xad, 0x52, 0x53, 0xac, 0x4c, 0xb3,
++	 0xb4, 0x4b, 0x2d, 0xd2, 0xd2, 0x2d, 0xab, 0x54,
++	 0xb5, 0x4a, 0x55, 0xaa, 0x4a, 0xb5, 0xcc, 0x33,
++	 0x35, 0xca, 0xcc, 0x33, 0xd5, 0x2a, 0xd3, 0x2c,
++	 0xcd, 0x32, 0xd3, 0x2c, 0xcb, 0x34, 0x55, 0xaa,
++	 0xcc, 0x33, 0xb5, 0x4a, 0x2d, 0xd2, 0x2c, 0xd3,
++	 0x2c, 0xd3, 0x4a, 0xb5, 0xca, 0x35, 0x35, 0xca,
++	 0x2a, 0xd5, 0xca, 0x35, 0x2d, 0xd2, 0xd2, 0x2d,
++	 0x2b, 0xd4, 0x52, 0xad, 0xaa, 0x55, 0xb5, 0x4a,
++	 0xab, 0x54, 0xcd, 0x32, 0x33, 0xcc, 0xaa, 0x55,
++	 0xb3, 0x4c, 0x33, 0xcc, 0x2c, 0xd3, 0x2c, 0xd3,
++	 0xd4, 0x2b, 0x33, 0xcc, 0xca, 0x35, 0xb5, 0x4a,
++	 0xcb, 0x34, 0xd3, 0x2c, 0x2d, 0xd2, 0xaa, 0x55,
++	 0xcd, 0x32, 0x55, 0xaa, 0x2a, 0xd5, 0x4c, 0xb3,
++	 0x2c, 0xd3, 0xcc, 0x33, 0xcb, 0x34, 0x2b, 0xd4,
++	 0xca, 0x35, 0xb3, 0x4c, 0x4d, 0xb2, 0xd4, 0x2b,
++	 0xcd, 0x32, 0x4b, 0xb4, 0x54, 0xab, 0x54, 0xab,
++	 0x4c, 0xb3, 0xaa, 0x55, 0x53, 0xac, 0x2c, 0xd3,
++	 0x34, 0xcb, 0x2c, 0xd3, 0xd2, 0x2d, 0xb5, 0x4a,
++	 0xcd, 0x32, 0x55, 0xaa, 0x2a, 0xd5, 0x4a, 0xb5,
++	 0x2c, 0xd3, 0xcc, 0x33, 0x2b, 0xd4, 0x2a, 0xd5,
++	 0xca, 0x35, 0xb3, 0x4c, 0x2b, 0xd4, 0xd4, 0x2b,
++	 0xcd, 0x32, 0xab, 0x54, 0x4b, 0xb4, 0x54, 0xab,
++	 0x4c, 0xb3, 0xac, 0x53, 0x55, 0xaa, 0x2c, 0xd3,
++	 0xd4, 0x2b, 0xcd, 0x32, 0xd3, 0x2c, 0xb5, 0x4a,
++	 0xab, 0x54, 0x33, 0xcc, 0x2a, 0xd5, 0xaa, 0x55,
++	 0xd3, 0x2c, 0xd3, 0x2c, 0x2b, 0xd4, 0x2c, 0xd3,
++	 0xca, 0x35, 0xb5, 0x4a, 0xcb, 0x34, 0xd5, 0x2a,
++	 0x2d, 0xd2, 0xaa, 0x55, 0x2d, 0xd2, 0x54, 0xab,
++	 0x2a, 0xd5, 0x4c, 0xb3, 0x4a, 0xb5, 0xcc, 0x33,
++	 0xcb, 0x34, 0xcb, 0x34, 0xd5, 0x2a, 0xb3, 0x4c,
++	 0x4d, 0xb2, 0xd2, 0x2d, 0xcb, 0x34, 0x4b, 0xb4,
++	 0xb4, 0x4b, 0xb5, 0x4a, 0x4d, 0xb2, 0xaa, 0x55,
++	 0x35, 0xca, 0x4a, 0xb5, 0x34, 0xcb, 0xcc, 0x33,
++	 0x2d, 0xd2, 0xaa, 0x55, 0xcd, 0x32, 0x53, 0xac,
++	 0x2a, 0xd5, 0x4c, 0xb3, 0xcc, 0x33, 0xcd, 0x32,
++	 0xcb, 0x34, 0x2b, 0xd4, 0xac, 0x53, 0xb3, 0x4c,
++	 0x4d, 0xb2, 0x34, 0xcb, 0xd2, 0x2d, 0x4b, 0xb4,
++	 0x54, 0xab, 0x52, 0xad, 0x4a, 0xb5, 0xaa, 0x55,
++	 0xb3, 0x4c, 0xcd, 0x32, 0x35, 0xca, 0x2c, 0xd3,
++	 0xb4, 0x4b, 0xd3, 0x2c, 0xcd, 0x32, 0xb5, 0x4a,
++	 0xd5, 0x2a, 0x55, 0xaa, 0x2c, 0xd3, 0xca, 0x35,
++	 0x2b, 0xd4, 0x2c, 0xd3, 0x2a, 0xd5, 0xb2, 0x4d,
++	 0xcb, 0x34, 0xd5, 0x2a, 0xab, 0x54, 0xab, 0x54,
++	 0x2d, 0xd2, 0xb4, 0x4b, 0x53, 0xac, 0x4c, 0xb3,
++	 0x4a, 0xb5, 0x2a, 0xd5, 0xd2, 0x2d, 0xcb, 0x34,
++	 0x35, 0xca, 0x54, 0xab, 0x4a, 0xb5, 0xd2, 0x2d,
++	 0x4d, 0xb2, 0xcc, 0x33, 0xb5, 0x4a, 0x55, 0xaa,
++	 0xd4, 0x2b, 0xd3, 0x2c, 0x35, 0xca, 0xac, 0x53,
++	 0xcb, 0x34, 0xd5, 0x2a, 0xcd, 0x32, 0xad, 0x52,
++	 0x2d, 0xd2, 0x54, 0xab, 0xac, 0x53, 0x4d, 0xb2,
++	 0x4a, 0xb5, 0x2c, 0xd3, 0xb2, 0x4d, 0xcb, 0x34,
++	 0xd5, 0x2a, 0x55, 0xaa, 0x54, 0xab, 0xd2, 0x2d,
++	 0x2b, 0xd4, 0xac, 0x53, 0xb3, 0x4c, 0xb5, 0x4a,
++	 0xcb, 0x34, 0x2d, 0xd2, 0x34, 0xcb, 0xaa, 0x55,
++	 0xad, 0x52, 0xb5, 0x4a, 0x2d, 0xd2, 0x4c, 0xb3,
++	 0x32, 0xcd, 0x4a, 0xb5, 0xca, 0x35, 0x4b, 0xb4,
++	 0x2c, 0xd3, 0xca, 0x35, 0x4d, 0xb2, 0x2a, 0xd5,
++	 0x2a, 0xd5, 0x52, 0xad, 0x34, 0xcb, 0xd4, 0x2b,
++	 0xab, 0x54, 0xad, 0x52, 0x4d, 0xb2, 0xb4, 0x4b,
++	 0xb3, 0x4c, 0x4d, 0xb2, 0x54, 0xab, 0x2a, 0xd5,
++	 0xb4, 0x4b, 0xab, 0x54, 0x33, 0xcc, 0xb4, 0x4b,
++	 0x55, 0xaa, 0x2c, 0xd3, 0x4c, 0xb3, 0xca, 0x35,
++	 0xd3, 0x2c, 0x35, 0xca, 0x34, 0xcb, 0x32, 0xcd,
++	 0x2a, 0xd5, 0xb2, 0x4d, 0xad, 0x52, 0xd3, 0x2c,
++	 0xab, 0x54, 0x4b, 0xb4, 0xd2, 0x2d, 0xb5, 0x4a,
++	 0x53, 0xac, 0x4a, 0xb5, 0x2a, 0xd5, 0x2a, 0xd5,
++	 0x32, 0xcd, 0xca, 0x35, 0x2b, 0xd4, 0x54, 0xab,
++	 0x2c, 0xd3, 0xb2, 0x4d, 0x4b, 0xb4, 0x2c, 0xd3,
++	 0xaa, 0x55, 0xab, 0x54, 0xd5, 0x2a, 0xd5, 0x2a,
++	 0x53, 0xac, 0xcc, 0x33, 0x2b, 0xd4, 0x34, 0xcb,
++	 0xd2, 0x2d, 0xb3, 0x4c, 0x4b, 0xb4, 0x52, 0xad,
++	 0xca, 0x35, 0xab, 0x54, 0xb5, 0x4a, 0xcd, 0x32,
++	 0x4d, 0xb2, 0xcc, 0x33, 0xb5, 0x4a, 0x53, 0xac,
++	 0xd4, 0x2b, 0xd3, 0x2c, 0xd5, 0x2a, 0xad, 0x52,
++	 0xcb, 0x34, 0xd5, 0x2a, 0xab, 0x54, 0xad, 0x52,
++	 0x2d, 0xd2, 0xb4, 0x4b, 0xb3, 0x4c, 0x4d, 0xb2,
++	 0x4a, 0xb5, 0x2a, 0xd5, 0xb4, 0x4b, 0xcb, 0x34,
++	 0x35, 0xca, 0xb4, 0x4b, 0x55, 0xaa, 0xd2, 0x2d,
++	 0x4d, 0xb2, 0xca, 0x35, 0xb3, 0x4c, 0x55, 0xaa,
++	 0x34, 0xcb, 0x32, 0xcd, 0x34, 0xcb, 0xac, 0x53,
++	 0xad, 0x52, 0xb3, 0x4c, 0xcd, 0x32, 0x4d, 0xb2,
++	 0xd2, 0x2d, 0x4b, 0xb4, 0xac, 0x53, 0x4b, 0xb4,
++	 0x4a, 0xb5, 0x2a, 0xd5, 0x52, 0xad, 0xca, 0x35,
++	 0x35, 0xca, 0x54, 0xab, 0x32, 0xcd, 0xd2, 0x2d,
++	 0x4d, 0xb2, 0x4c, 0xb3, 0xac, 0x53, 0x55, 0xaa,
++	 0xd4, 0x2b, 0x2b, 0xd4, 0x32, 0xcd, 0xac, 0x53,
++	 0x4b, 0xb4, 0x54, 0xab, 0xcc, 0x33, 0xad, 0x52,
++	 0x55, 0xaa, 0x2c, 0xd3, 0xac, 0x53, 0xcd, 0x32,
++	 0xd3, 0x2c, 0x35, 0xca, 0xb2, 0x4d, 0x33, 0xcc,
++	 0x2a, 0xd5, 0x52, 0xad, 0xd4, 0x2b, 0xd3, 0x2c,
++	 0xab, 0x54, 0xad, 0x52, 0xcb, 0x34, 0xb5, 0x4a,
++	 0xb3, 0x4c, 0xad, 0x52, 0x2d, 0xd2, 0x2a, 0xd5,
++	 0xb4, 0x4b, 0x4d, 0xb2, 0x2a, 0xd5, 0xb4, 0x4b,
++	 0xb5, 0x4a, 0xcb, 0x34, 0x4b, 0xb4, 0xca, 0x35,
++	 0x55, 0xaa, 0xb2, 0x4d, 0x35, 0xca, 0xd2, 0x2d,
++	 0xb3, 0x4c, 0xcb, 0x34, 0xad, 0x52, 0x35, 0xca,
++	 0x54, 0xab, 0x52, 0xad, 0x32, 0xcd, 0xb2, 0x4d,
++	 0xb3, 0x4c, 0x4d, 0xb2, 0xac, 0x53, 0x2b, 0xd4,
++	 0xb4, 0x4b, 0x2b, 0xd4, 0x52, 0xad, 0xb4, 0x4b,
++	 0x55, 0xaa, 0x54, 0xab, 0x52, 0xad, 0xca, 0x35,
++	 0x53, 0xac, 0x4c, 0xb3, 0x32, 0xcd, 0x32, 0xcd,
++	 0xd2, 0x2d, 0x4b, 0xb4, 0xac, 0x53, 0x53, 0xac,
++	 0x4a, 0xb5, 0x2a, 0xd5, 0xd2, 0x2d, 0xcd, 0x32,
++	 0x35, 0xca, 0x54, 0xab, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x4d, 0xb2, 0xcc, 0x33, 0xd3, 0x2c, 0x55, 0xaa,
++	 0xd4, 0x2b, 0x33, 0xcc, 0x2a, 0xd5, 0xac, 0x53,
++	 0xcb, 0x34, 0xd3, 0x2c, 0xcb, 0x34, 0xad, 0x52,
++	 0xcd, 0x32, 0xb5, 0x4a, 0xad, 0x52, 0x4d, 0xb2,
++	 0x2c, 0xd3, 0x4a, 0xb5, 0xb2, 0x4d, 0x2b, 0xd4,
++	 0x2a, 0xd5, 0x4a, 0xb5, 0x54, 0xab, 0xd4, 0x2b,
++	 0x2b, 0xd4, 0xaa, 0x55, 0x53, 0xac, 0xb4, 0x4b,
++	 0x2b, 0xd4, 0x2c, 0xd3, 0x52, 0xad, 0xaa, 0x55,
++	 0xcb, 0x34, 0x55, 0xaa, 0x32, 0xcd, 0xac, 0x53,
++	 0x2d, 0xd2, 0x4c, 0xb3, 0xcc, 0x33, 0x4d, 0xb2,
++	 0xca, 0x35, 0x2b, 0xd4, 0xac, 0x53, 0xcb, 0x34,
++	 0x4d, 0xb2, 0x34, 0xcb, 0x52, 0xad, 0x52, 0xad,
++	 0x54, 0xab, 0x52, 0xad, 0xb2, 0x4d, 0xad, 0x52,
++	 0xb3, 0x4c, 0x4d, 0xb2, 0xb4, 0x4b, 0x2d, 0xd2,
++	 0xb4, 0x4b, 0xab, 0x54, 0xb5, 0x4a, 0xb5, 0x4a,
++	 0x55, 0xaa, 0xcc, 0x33, 0x35, 0xca, 0xca, 0x35,
++	 0xd3, 0x2c, 0xd3, 0x2c, 0x2d, 0xd2, 0x32, 0xcd,
++	 0xca, 0x35, 0x55, 0xaa, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x2d, 0xd2, 0xcc, 0x33, 0xd3, 0x2c, 0x55, 0xaa,
++	 0xca, 0x35, 0x33, 0xcc, 0x2a, 0xd5, 0xcc, 0x33,
++	 0xcd, 0x32, 0xd3, 0x2c, 0xcb, 0x34, 0x53, 0xac,
++	 0xcc, 0x33, 0xb5, 0x4a, 0xcd, 0x32, 0x2d, 0xd2,
++	 0x2c, 0xd3, 0x4a, 0xb5, 0xac, 0x53, 0x35, 0xca,
++	 0x2a, 0xd5, 0x2a, 0xd5, 0x32, 0xcd, 0xd2, 0x2d,
++	 0x2b, 0xd4, 0x54, 0xab, 0xac, 0x53, 0xb5, 0x4a,
++	 0x4b, 0xb4, 0x2c, 0xd3, 0x32, 0xcd, 0xaa, 0x55,
++	 0xd5, 0x2a, 0x55, 0xaa, 0x2c, 0xd3, 0xcc, 0x33,
++	 0x2b, 0xd4, 0x2c, 0xd3, 0xca, 0x35, 0xb3, 0x4c,
++	 0xcb, 0x34, 0xd5, 0x2a, 0xcd, 0x32, 0xab, 0x54,
++	 0x2d, 0xd2, 0x54, 0xab, 0x4c, 0xb3, 0x4c, 0xb3,
++	 0x4a, 0xb5, 0x2c, 0xd3, 0xd4, 0x2b, 0xcb, 0x34,
++	 0xd5, 0x2a, 0xb5, 0x4a, 0x4b, 0xb4, 0xd2, 0x2d,
++	 0x2b, 0xd4, 0xaa, 0x55, 0xb5, 0x4a, 0xb5, 0x4a,
++	 0x2b, 0xd4, 0xcc, 0x33, 0x35, 0xca, 0xaa, 0x55,
++	 0xcb, 0x34, 0xd3, 0x2c, 0x2d, 0xd2, 0xac, 0x53,
++	 0xcd, 0x32, 0x55, 0xaa, 0xca, 0x35, 0x4d, 0xb2,
++	 0x2c, 0xd3, 0xcc, 0x33, 0xad, 0x52, 0x2b, 0xd4,
++	 0xca, 0x35, 0x53, 0xac, 0x52, 0xad, 0xd4, 0x2b,
++	 0xcd, 0x32, 0x4d, 0xb2, 0x52, 0xad, 0x54, 0xab,
++	 0xac, 0x53, 0x4b, 0xb4, 0x52, 0xad, 0x2c, 0xd3,
++	 0x52, 0xad, 0x4a, 0xb5, 0xd2, 0x2d, 0x55, 0xaa,
++	 0x32, 0xcd, 0x4a, 0xb5, 0x2a, 0xd5, 0x4c, 0xb3,
++	 0x2c, 0xd3, 0xca, 0x35, 0xcb, 0x34, 0x2b, 0xd4,
++	 0x2a, 0xd5, 0xb2, 0x4d, 0x4d, 0xb2, 0xd4, 0x2b,
++	 0xab, 0x54, 0x4b, 0xb4, 0x54, 0xab, 0xb4, 0x4b,
++	 0x53, 0xac, 0xaa, 0x55, 0x53, 0xac, 0x2a, 0xd5,
++	 0x32, 0xcd, 0x2c, 0xd3, 0x32, 0xcd, 0x54, 0xab,
++	 0xcc, 0x33, 0x55, 0xaa, 0x4c, 0xb3, 0x2c, 0xd3,
++	 0x2c, 0xd3, 0x2c, 0xd3, 0xd4, 0x2b, 0x35, 0xca,
++	 0xca, 0x35, 0xb5, 0x4a, 0x2b, 0xd4, 0xd2, 0x2d,
++	 0x2d, 0xd2, 0xaa, 0x55, 0xab, 0x54, 0x55, 0xaa,
++	 0x2a, 0xd5, 0xac, 0x53, 0x33, 0xcc, 0xcc, 0x33,
++	 0xcb, 0x34, 0x2d, 0xd2, 0xcc, 0x33, 0xb3, 0x4c,
++	 0xad, 0x52, 0x35, 0xca, 0xcc, 0x33, 0x4b, 0xb4,
++	 0x32, 0xcd, 0x32, 0xcd, 0x4c, 0xb3, 0x4a, 0xb5,
++	 0xac, 0x53, 0x33, 0xcc, 0x34, 0xcb, 0x2a, 0xd5,
++	 0xd2, 0x2d, 0xb3, 0x4c, 0x2d, 0xd2, 0x54, 0xab,
++	 0xca, 0x35, 0x4b, 0xb4, 0x4a, 0xb5, 0xcc, 0x33,
++	 0x4d, 0xb2, 0xca, 0x35, 0xd5, 0x2a, 0x53, 0xac,
++	 0x34, 0xcb, 0xd2, 0x2d, 0xcb, 0x34, 0xad, 0x52,
++	 0xad, 0x52, 0xb5, 0x4a, 0xad, 0x52, 0x4d, 0xb2,
++	 0x32, 0xcd, 0x4a, 0xb5, 0xb2, 0x4d, 0x4b, 0xb4,
++	 0x2c, 0xd3, 0x4a, 0xb5, 0x54, 0xab, 0x2a, 0xd5,
++	 0x2a, 0xd5, 0xaa, 0x55, 0x33, 0xcc, 0xd4, 0x2b,
++	 0x2b, 0xd4, 0x2c, 0xd3, 0x4c, 0xb3, 0xb4, 0x4b,
++	 0xcb, 0x34, 0x35, 0xca, 0x54, 0xab, 0xaa, 0x55,
++	 0x2d, 0xd2, 0xb2, 0x4d, 0x33, 0xcc, 0x4c, 0xb3,
++	 0xaa, 0x55, 0x2b, 0xd4, 0xcc, 0x33, 0xcb, 0x34,
++	 0x53, 0xac, 0x34, 0xcb, 0x4c, 0xb3, 0x32, 0xcd,
++	 0x52, 0xad, 0x32, 0xcd, 0xb4, 0x4b, 0x53, 0xac,
++	 0xb2, 0x4d, 0xb3, 0x4c, 0xd5, 0x2a, 0x4d, 0xb2,
++	 0xd4, 0x2b, 0xcb, 0x34, 0xab, 0x54, 0xab, 0x54,
++	 0x4b, 0xb4, 0xb2, 0x4d, 0x53, 0xac, 0xac, 0x53,
++	 0xb5, 0x4a, 0x2b, 0xd4, 0xd2, 0x2d, 0xcd, 0x32,
++	 0x55, 0xaa, 0x54, 0xab, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x53, 0xac, 0xcc, 0x33, 0xd3, 0x2c, 0x35, 0xca,
++	 0xd2, 0x2d, 0x33, 0xcc, 0x2a, 0xd5, 0x52, 0xad,
++	 0xca, 0x35, 0xd3, 0x2c, 0xab, 0x54, 0xcd, 0x32,
++	 0xcd, 0x32, 0xb5, 0x4a, 0xb3, 0x4c, 0x53, 0xac,
++	 0x2c, 0xd3, 0x2a, 0xd5, 0xd4, 0x2b, 0x2d, 0xd2,
++	 0x2a, 0xd5, 0xb4, 0x4b, 0xab, 0x54, 0xd5, 0x2a,
++	 0x4b, 0xb4, 0xaa, 0x55, 0x33, 0xcc, 0xb4, 0x4b,
++	 0x35, 0xca, 0x2c, 0xd3, 0x4c, 0xb3, 0xca, 0x35,
++	 0xcd, 0x32, 0x35, 0xca, 0x34, 0xcb, 0x52, 0xad,
++	 0x2c, 0xd3, 0xb2, 0x4d, 0xad, 0x52, 0x2d, 0xd2,
++	 0xaa, 0x55, 0x4b, 0xb4, 0xb2, 0x4d, 0xd5, 0x2a,
++	 0x53, 0xac, 0x4a, 0xb5, 0x34, 0xcb, 0x34, 0xcb,
++	 0x32, 0xcd, 0xaa, 0x55, 0x4d, 0xb2, 0x52, 0xad,
++	 0x2c, 0xd3, 0x4c, 0xb3, 0xb4, 0x4b, 0x2d, 0xd2,
++	 0xca, 0x35, 0xab, 0x54, 0xb5, 0x4a, 0xd5, 0x2a,
++	 0x4d, 0xb2, 0xcc, 0x33, 0x35, 0xca, 0x54, 0xab,
++	 0xd4, 0x2b, 0xd3, 0x2c, 0x4d, 0xb2, 0xac, 0x53,
++	 0xcb, 0x34, 0x55, 0xaa, 0xd4, 0x2b, 0xad, 0x52,
++	 0x2d, 0xd2, 0xac, 0x53, 0xab, 0x54, 0x4d, 0xb2,
++	 0xca, 0x35, 0xad, 0x52, 0xb3, 0x4c, 0xcb, 0x34,
++	 0xad, 0x52, 0x2d, 0xd2, 0x54, 0xab, 0x52, 0xad,
++	 0xb2, 0x4d, 0xb5, 0x4a, 0xb3, 0x4c, 0x4d, 0xb2,
++	 0x34, 0xcb, 0x2a, 0xd5, 0xb4, 0x4b, 0xab, 0x54,
++	 0x2d, 0xd2, 0xb4, 0x4b, 0x55, 0xaa, 0x4c, 0xb3,
++	 0x4a, 0xb5, 0xca, 0x35, 0xd3, 0x2c, 0xcb, 0x34,
++	 0x35, 0xca, 0x32, 0xcd, 0x4a, 0xb5, 0xd2, 0x2d,
++	 0xad, 0x52, 0xd3, 0x2c, 0xb5, 0x4a, 0x55, 0xaa,
++	 0xd2, 0x2d, 0xd5, 0x2a, 0x35, 0xca, 0x4c, 0xb3,
++	 0x2a, 0xd5, 0xd4, 0x2b, 0xcd, 0x32, 0xcb, 0x34,
++	 0x4b, 0xb4, 0x54, 0xab, 0x4c, 0xb3, 0xb2, 0x4d,
++	 0x55, 0xaa, 0x2c, 0xd3, 0xb4, 0x4b, 0xcb, 0x34,
++	 0xd3, 0x2c, 0xb5, 0x4a, 0x55, 0xaa, 0x32, 0xcd,
++	 0x2a, 0xd5, 0xca, 0x35, 0xb3, 0x4c, 0xd3, 0x2c,
++	 0x2b, 0xd4, 0x32, 0xcd, 0xd4, 0x2b, 0xb5, 0x4a,
++	 0xab, 0x54, 0xb3, 0x4c, 0x2b, 0xd4, 0xaa, 0x55,
++	 0xd3, 0x2c, 0xab, 0x54, 0x2b, 0xd4, 0x2c, 0xd3,
++	 0x4a, 0xb5, 0xac, 0x53, 0xcb, 0x34, 0xd5, 0x2a,
++	 0xd5, 0x2a, 0xad, 0x52, 0x2d, 0xd2, 0xd4, 0x2b,
++	 0xab, 0x54, 0x4d, 0xb2, 0x4a, 0xb5, 0xb4, 0x4b,
++	 0xb3, 0x4c, 0xcb, 0x34, 0x55, 0xaa, 0x2a, 0xd5,
++	 0x54, 0xab, 0xd2, 0x2d, 0x33, 0xcc, 0xb4, 0x4b,
++	 0xb3, 0x4c, 0x35, 0xca, 0x4c, 0xb3, 0x2a, 0xd5,
++	 0x34, 0xcb, 0x32, 0xcd, 0x34, 0xcb, 0xb4, 0x4b,
++	 0xad, 0x52, 0xb3, 0x4c, 0x4d, 0xb2, 0x4a, 0xb5,
++	 0xd2, 0x2d, 0x4b, 0xb4, 0x34, 0xcb, 0x4a, 0xb5,
++	 0x4a, 0xb5, 0xaa, 0x55, 0x2d, 0xd2, 0xca, 0x35,
++	 0x35, 0xca, 0x4c, 0xb3, 0x2a, 0xd5, 0xd2, 0x2d,
++	 0xcd, 0x32, 0xcb, 0x34, 0xab, 0x54, 0x55, 0xaa,
++	 0x4c, 0xb3, 0xb2, 0x4d, 0x33, 0xcc, 0x2c, 0xd3,
++	 0xb4, 0x4b, 0x2b, 0xd4, 0xcc, 0x33, 0xb5, 0x4a,
++	 0x55, 0xaa, 0x34, 0xcb, 0x2c, 0xd3, 0xca, 0x35,
++	 0x53, 0xac, 0x32, 0xcd, 0x2a, 0xd5, 0x32, 0xcd,
++	 0xb2, 0x4d, 0xd3, 0x2c, 0xab, 0x54, 0x53, 0xac,
++	 0xd4, 0x2b, 0xb5, 0x4a, 0xd3, 0x2c, 0xad, 0x52,
++	 0x2b, 0xd4, 0x2a, 0xd5, 0xaa, 0x55, 0xad, 0x52,
++	 0x2b, 0xd4, 0xd4, 0x2b, 0xb3, 0x4c, 0xad, 0x52,
++	 0x4b, 0xb4, 0x34, 0xcb, 0xb4, 0x4b, 0xad, 0x52,
++	 0x55, 0xaa, 0xb2, 0x4d, 0xb5, 0x4a, 0xcd, 0x32,
++	 0xb3, 0x4c, 0xcb, 0x34, 0xb5, 0x4a, 0x33, 0xcc,
++	 0x54, 0xab, 0xd2, 0x2d, 0xd5, 0x2a, 0xb3, 0x4c,
++	 0xb3, 0x4c, 0xd5, 0x2a, 0xcb, 0x34, 0x2b, 0xd4,
++	 0x34, 0xcb, 0xb4, 0x4b, 0x4d, 0xb2, 0xb4, 0x4b,
++	 0x4d, 0xb2, 0x4a, 0xb5, 0x54, 0xab, 0x4a, 0xb5,
++	 0x34, 0xcb, 0xaa, 0x55, 0x33, 0xcc, 0xaa, 0x55,
++	 0x2d, 0xd2, 0x2c, 0xd3, 0x2c, 0xd3, 0x4c, 0xb3,
++	 0xca, 0x35, 0x35, 0xca, 0xca, 0x35, 0xcb, 0x34,
++	 0x2d, 0xd2, 0xd2, 0x2d, 0x4d, 0xb2, 0x52, 0xad,
++	 0xaa, 0x55, 0x55, 0xaa, 0xb4, 0x4b, 0xcd, 0x32,
++	 0x33, 0xcc, 0xac, 0x53, 0xb5, 0x4a, 0x33, 0xcc,
++	 0xcc, 0x33, 0xcd, 0x32, 0xd5, 0x2a, 0x33, 0xcc,
++	 0xac, 0x53, 0xd3, 0x2c, 0xcb, 0x34, 0x33, 0xcc,
++	 0xd2, 0x2d, 0xb5, 0x4a, 0xcd, 0x32, 0x53, 0xac,
++	 0x2a, 0xd5, 0x4a, 0xb5, 0xcc, 0x33, 0xcd, 0x32,
++	 0x2b, 0xd4, 0x2a, 0xd5, 0xac, 0x53, 0xb3, 0x4c,
++	 0x2b, 0xd4, 0x34, 0xcb, 0xd2, 0x2d, 0xab, 0x54,
++	 0x4b, 0xb4, 0x52, 0xad, 0x4a, 0xb5, 0xac, 0x53,
++	 0xb5, 0x4a, 0xcd, 0x32, 0xd5, 0x2a, 0xcd, 0x32,
++	 0xb5, 0x4a, 0xd3, 0x2c, 0xab, 0x54, 0xd3, 0x2c,
++	 0xd5, 0x2a, 0xb5, 0x4a, 0xd3, 0x2c, 0xd5, 0x2a,
++	 0x2b, 0xd4, 0x2a, 0xd5, 0x2a, 0xd5, 0xb4, 0x4b,
++	 0x2b, 0xd4, 0xd4, 0x2b, 0x4b, 0xb4, 0xaa, 0x55,
++	 0x4b, 0xb4, 0xb4, 0x4b, 0x35, 0xca, 0xac, 0x53,
++	 0x55, 0xaa, 0xca, 0x35, 0xcd, 0x32, 0xcd, 0x32,
++	 0x33, 0xcc, 0x52, 0xad, 0xac, 0x53, 0x33, 0xcc,
++	 0xac, 0x53, 0x2d, 0xd2, 0xd2, 0x2d, 0x33, 0xcc,
++	 0xb2, 0x4d, 0x55, 0xaa, 0xca, 0x35, 0x53, 0xac,
++	 0x34, 0xcb, 0xcc, 0x33, 0xcd, 0x32, 0xad, 0x52,
++	 0xcd, 0x32, 0x53, 0xac, 0xac, 0x53, 0x4d, 0xb2,
++	 0xcc, 0x33, 0x2d, 0xd2, 0xb2, 0x4d, 0x2b, 0xd4,
++	 0xac, 0x53, 0x55, 0xaa, 0x54, 0xab, 0x34, 0xcb,
++	 0x32, 0xcd, 0xac, 0x53, 0x53, 0xac, 0x52, 0xad,
++	 0xcc, 0x33, 0x2d, 0xd2, 0xb2, 0x4d, 0x2d, 0xd2,
++	 0xac, 0x53, 0x55, 0xaa, 0xb4, 0x4b, 0x35, 0xca,
++	 0x32, 0xcd, 0xac, 0x53, 0x35, 0xca, 0x52, 0xad,
++	 0xcc, 0x33, 0xcd, 0x32, 0xad, 0x52, 0x2d, 0xd2,
++	 0xac, 0x53, 0x53, 0xac, 0xb2, 0x4d, 0x35, 0xca,
++	 0xd2, 0x2d, 0x4d, 0xb2, 0x34, 0xcb, 0x52, 0xad,
++	 0xaa, 0x55, 0xab, 0x54, 0xad, 0x52, 0xcd, 0x32,
++	 0x53, 0xac, 0x4c, 0xb3, 0xb2, 0x4d, 0x33, 0xcc,
++	 0xd2, 0x2d, 0x4b, 0xb4, 0xd4, 0x2b, 0x53, 0xac,
++	 0x4a, 0xb5, 0xaa, 0x55, 0xcb, 0x34, 0xcd, 0x32,
++	 0x35, 0xca, 0xac, 0x53, 0xad, 0x52, 0xd3, 0x2c,
++	 0xcd, 0x32, 0x4d, 0xb2, 0xd2, 0x2d, 0x55, 0xaa,
++	 0xac, 0x53, 0x4b, 0xb4, 0x2a, 0xd5, 0x2c, 0xd3,
++	 0x52, 0xad, 0xca, 0x35, 0xcb, 0x34, 0x55, 0xaa,
++	 0x32, 0xcd, 0xb2, 0x4d, 0x2d, 0xd2, 0x4c, 0xb3,
++	 0xac, 0x53, 0x4b, 0xb4, 0xca, 0x35, 0x2b, 0xd4,
++	 0x52, 0xad, 0xca, 0x35, 0x4d, 0xb2, 0x54, 0xab,
++	 0x32, 0xcd, 0x52, 0xad, 0x54, 0xab, 0x4c, 0xb3,
++	 0xac, 0x53, 0xad, 0x52, 0xd3, 0x2c, 0x2b, 0xd4,
++	 0xb2, 0x4d, 0x2d, 0xd2, 0x4a, 0xb5, 0x54, 0xab,
++	 0xb4, 0x4b, 0xd5, 0x2a, 0x55, 0xaa, 0xac, 0x53,
++	 0x35, 0xca, 0xd4, 0x2b, 0xd3, 0x2c, 0xcd, 0x32,
++	 0x4d, 0xb2, 0x34, 0xcb, 0xaa, 0x55, 0x53, 0xac,
++	 0x54, 0xab, 0xd2, 0x2d, 0xd3, 0x2c, 0xad, 0x52,
++	 0xb3, 0x4c, 0x35, 0xca, 0xaa, 0x55, 0x2d, 0xd2,
++	 0x34, 0xcb, 0xd2, 0x2d, 0xb3, 0x4c, 0xb5, 0x4a,
++	 0xad, 0x52, 0x35, 0xca, 0x34, 0xcb, 0x4a, 0xb5,
++	 0x32, 0xcd, 0xb2, 0x4d, 0x2d, 0xd2, 0x4a, 0xb5,
++	 0xac, 0x53, 0x4b, 0xb4, 0x2a, 0xd5, 0x2a, 0xd5,
++	 0x52, 0xad, 0xca, 0x35, 0x2b, 0xd4, 0x54, 0xab,
++	 0x32, 0xcd, 0xb2, 0x4d, 0x4b, 0xb4, 0x4c, 0xb3,
++	 0xac, 0x53, 0xab, 0x54, 0xd5, 0x2a, 0x2b, 0xd4,
++	 0x52, 0xad, 0xcc, 0x33, 0x4b, 0xb4, 0x54, 0xab,
++	 0xd2, 0x2d, 0xb3, 0x4c, 0x55, 0xaa, 0x4c, 0xb3,
++	 0xca, 0x35, 0xcb, 0x34, 0xd3, 0x2c, 0xcb, 0x34,
++	 0x4d, 0xb2, 0x32, 0xcd, 0x4a, 0xb5, 0x52, 0xad,
++	 0xb4, 0x4b, 0xd3, 0x2c, 0xb5, 0x4a, 0xad, 0x52,
++	 0xd5, 0x2a, 0xd5, 0x2a, 0xb5, 0x4a, 0xcd, 0x32,
++	 0x2b, 0xd4, 0xd4, 0x2b, 0xb5, 0x4a, 0xb3, 0x4c,
++	 0x4b, 0xb4, 0xd4, 0x2b, 0xd5, 0x2a, 0xab, 0x54,
++	 0x55, 0xaa, 0xd4, 0x2b, 0x4b, 0xb4, 0xcc, 0x33,
++	 0x53, 0xac, 0xb4, 0x4b, 0xd5, 0x2a, 0x33, 0xcc,
++	 0x52, 0xad, 0xca, 0x35, 0xcb, 0x34, 0x53, 0xac,
++	 0x32, 0xcd, 0xb2, 0x4d, 0xcd, 0x32, 0x4d, 0xb2,
++	 0xac, 0x53, 0x4b, 0xb4, 0xac, 0x53, 0x2b, 0xd4,
++	 0x52, 0xad, 0x2a, 0xd5, 0x52, 0xad, 0x54, 0xab,
++	 0x32, 0xcd, 0x54, 0xab, 0x52, 0xad, 0x4c, 0xb3,
++	 0x4c, 0xb3, 0x4c, 0xb3, 0xd2, 0x2d, 0x2b, 0xd4,
++	 0xd4, 0x2b, 0x4b, 0xb4, 0x4a, 0xb5, 0xb4, 0x4b,
++	 0x4b, 0xb4, 0xca, 0x35, 0x55, 0xaa, 0xaa, 0x55,
++	 0x35, 0xca, 0xd2, 0x2d, 0x33, 0xcc, 0xcc, 0x33,
++	 0xad, 0x52, 0x35, 0xca, 0xcc, 0x33, 0x53, 0xac,
++	 0x32, 0xcd, 0x32, 0xcd, 0xcc, 0x33, 0x4d, 0xb2,
++	 0xac, 0x53, 0x33, 0xcc, 0xac, 0x53, 0x2b, 0xd4,
++	 0xd2, 0x2d, 0x33, 0xcc, 0x52, 0xad, 0x54, 0xab,
++	 0xca, 0x35, 0x53, 0xac, 0x52, 0xad, 0xcc, 0x33,
++	 0xcd, 0x32, 0x4d, 0xb2, 0xd2, 0x2d, 0x53, 0xac,
++	 0xac, 0x53, 0x4b, 0xb4, 0xca, 0x35, 0x2d, 0xd2,
++	 0x52, 0xad, 0xca, 0x35, 0xad, 0x52, 0x55, 0xaa,
++	 0x32, 0xcd, 0x52, 0xad, 0x32, 0xcd, 0x4c, 0xb3,
++	 0xac, 0x53, 0x4d, 0xb2, 0xcc, 0x33, 0x2b, 0xd4,
++	 0xb2, 0x4d, 0x2b, 0xd4, 0x4c, 0xb3, 0x54, 0xab,
++	 0x54, 0xab, 0x34, 0xcb, 0x54, 0xab, 0xac, 0x53,
++	 0x53, 0xac, 0xb2, 0x4d, 0xd3, 0x2c, 0x2d, 0xd2,
++	 0xb2, 0x4d, 0x2b, 0xd4, 0xaa, 0x55, 0x55, 0xaa,
++	 0x54, 0xab, 0xd4, 0x2b, 0x33, 0xcc, 0xac, 0x53,
++	 0x53, 0xac, 0x34, 0xcb, 0xcc, 0x33, 0x2d, 0xd2,
++	 0x52, 0xad, 0x32, 0xcd, 0xac, 0x53, 0x55, 0xaa,
++	 0xb2, 0x4d, 0x33, 0xcc, 0x32, 0xcd, 0x4c, 0xb3,
++	 0xd4, 0x2b, 0x53, 0xac, 0xcc, 0x33, 0xab, 0x54,
++	 0xcb, 0x34, 0x2d, 0xd2, 0x4c, 0xb3, 0xac, 0x53,
++	 0xad, 0x52, 0x35, 0xca, 0xd4, 0x2b, 0x4d, 0xb2,
++	 0x32, 0xcd, 0xb2, 0x4d, 0xab, 0x54, 0x4b, 0xb4,
++	 0xac, 0x53, 0xab, 0x54, 0x53, 0xac, 0x2a, 0xd5,
++	 0x52, 0xad, 0x2c, 0xd3, 0x32, 0xcd, 0x54, 0xab,
++	 0xd2, 0x2d, 0x55, 0xaa, 0x4c, 0xb3, 0x4c, 0xb3,
++	 0x2a, 0xd5, 0x2c, 0xd3, 0xd4, 0x2b, 0xcb, 0x34,
++	 0xcb, 0x34, 0xb5, 0x4a, 0x4b, 0xb4, 0xb2, 0x4d,
++	 0x2d, 0xd2, 0xaa, 0x55, 0xb5, 0x4a, 0x4b, 0xb4,
++	 0x2a, 0xd5, 0xcc, 0x33, 0x55, 0xaa, 0xca, 0x35,
++	 0xcb, 0x34, 0xd3, 0x2c, 0x33, 0xcc, 0xb2, 0x4d,
++	 0xcd, 0x32, 0x35, 0xca, 0xac, 0x53, 0x4b, 0xb4,
++	 0x2c, 0xd3, 0x32, 0xcd, 0x52, 0xad, 0x2a, 0xd5,
++	 0xaa, 0x55, 0x53, 0xac, 0x32, 0xcd, 0xd4, 0x2b,
++	 0xd3, 0x2c, 0x4d, 0xb2, 0x4c, 0xb3, 0x34, 0xcb,
++	 0xaa, 0x55, 0x2b, 0xd4, 0x54, 0xab, 0xd2, 0x2d,
++	 0x53, 0xac, 0xb4, 0x4b, 0xb3, 0x4c, 0x35, 0xca,
++	 0x52, 0xad, 0x2a, 0xd5, 0x34, 0xcb, 0x52, 0xad,
++	 0x32, 0xcd, 0xb4, 0x4b, 0xad, 0x52, 0x4d, 0xb2,
++	 0x4c, 0xb3, 0x4a, 0xb5, 0xb2, 0x4d, 0x2b, 0xd4,
++	 0x34, 0xcb, 0x4a, 0xb5, 0x54, 0xab, 0xb4, 0x4b,
++	 0x2d, 0xd2, 0xaa, 0x55, 0x53, 0xac, 0x4a, 0xb5,
++	 0x2a, 0xd5, 0x2c, 0xd3, 0x32, 0xcd, 0xca, 0x35,
++	 0xcb, 0x34, 0x55, 0xaa, 0x2c, 0xd3, 0xb2, 0x4d,
++	 0x2d, 0xd2, 0x2c, 0xd3, 0xaa, 0x55, 0x4b, 0xb4,
++	 0xca, 0x35, 0xd5, 0x2a, 0x53, 0xac, 0xca, 0x35,
++	 0x2d, 0xd2, 0x34, 0xcb, 0x32, 0xcd, 0x52, 0xad,
++	 0x4a, 0xb5, 0x52, 0xad, 0xac, 0x53, 0xcd, 0x32,
++	 0xb5, 0x4a, 0x2d, 0xd2, 0xb2, 0x4d, 0xd3, 0x2c,
++	 0xb5, 0x4a, 0x55, 0xaa, 0xd4, 0x2b, 0xd5, 0x2a,
++	 0x35, 0xca, 0xac, 0x53, 0x2b, 0xd4, 0xd4, 0x2b,
++	 0xcd, 0x32, 0xad, 0x52, 0x4b, 0xb4, 0x54, 0xab,
++	 0xac, 0x53, 0xad, 0x52, 0x55, 0xaa, 0x2c, 0xd3,
++	 0xb2, 0x4d, 0xcd, 0x32, 0xd3, 0x2c, 0x55, 0xaa,
++	 0xb4, 0x4b, 0x33, 0xcc, 0x2a, 0xd5, 0xac, 0x53,
++	 0xd5, 0x2a, 0xd3, 0x2c, 0xcb, 0x34, 0xcd, 0x32,
++	 0xcb, 0x34, 0xb5, 0x4a, 0xad, 0x52, 0xb3, 0x4c,
++	 0x2d, 0xd2, 0x4a, 0xb5, 0xd2, 0x2d, 0x4b, 0xb4,
++	 0x2a, 0xd5, 0x4a, 0xb5, 0x4a, 0xb5, 0xca, 0x35,
++	 0x2b, 0xd4, 0xca, 0x35, 0x35, 0xca, 0xb2, 0x4d,
++	 0x2b, 0xd4, 0xd2, 0x2d, 0xad, 0x52, 0xab, 0x54,
++	 0xab, 0x54, 0x55, 0xaa, 0x52, 0xad, 0xac, 0x53,
++	 0x33, 0xcc, 0x4c, 0xb3, 0xd2, 0x2d, 0x2d, 0xd2,
++	 0xcc, 0x33, 0x4b, 0xb4, 0xaa, 0x55, 0x35, 0xca,
++	 0x4c, 0xb3, 0xca, 0x35, 0x33, 0xcc, 0x32, 0xcd,
++	 0x34, 0xcb, 0x32, 0xcd, 0xac, 0x53, 0xb3, 0x4c,
++	 0xad, 0x52, 0x33, 0xcc, 0xd2, 0x2d, 0x4b, 0xb4,
++	 0xd2, 0x2d, 0x53, 0xac, 0x4a, 0xb5, 0x4a, 0xb5,
++	 0xca, 0x35, 0xcd, 0x32, 0x35, 0xca, 0xca, 0x35,
++	 0xad, 0x52, 0xd3, 0x2c, 0x2d, 0xd2, 0x52, 0xad,
++	 0xd2, 0x2d, 0x55, 0xaa, 0xaa, 0x55, 0x4d, 0xb2,
++	 0x2a, 0xd5, 0xcc, 0x33, 0xb3, 0x4c, 0xcb, 0x34,
++	 0xcb, 0x34, 0x33, 0xcc, 0x54, 0xab, 0xb2, 0x4d,
++	 0xcd, 0x32, 0xb3, 0x4c, 0xb3, 0x4c, 0x4b, 0xb4,
++	 0xcc, 0x33, 0x2b, 0xd4, 0x54, 0xab, 0x2a, 0xd5,
++	 0x4c, 0xb3, 0xb4, 0x4b, 0x33, 0xcc, 0x34, 0xcb,
++	 0x54, 0xab, 0x2a, 0xd5, 0x4c, 0xb3, 0xb2, 0x4d,
++	 0x33, 0xcc, 0x34, 0xcb, 0xb4, 0x4b, 0x2b, 0xd4,
++	 0x4c, 0xb3, 0xb2, 0x4d, 0x55, 0xaa, 0x34, 0xcb,
++	 0xb4, 0x4b, 0xcb, 0x34, 0x53, 0xac, 0xb2, 0x4d,
++	 0x55, 0xaa, 0x32, 0xcd, 0xb2, 0x4d, 0xcb, 0x34,
++	 0xb3, 0x4c, 0x53, 0xac, 0x54, 0xab, 0x32, 0xcd,
++	 0xd4, 0x2b, 0xad, 0x52, 0xb3, 0x4c, 0xb3, 0x4c,
++	 0xab, 0x54, 0x2d, 0xd2, 0xd4, 0x2b, 0xab, 0x54,
++	 0xb3, 0x4c, 0xb5, 0x4a, 0x4b, 0xb4, 0x2c, 0xd3,
++	 0x34, 0xcb, 0xaa, 0x55, 0xd5, 0x2a, 0xb5, 0x4a,
++	 0x2d, 0xd2, 0xcc, 0x33, 0x2b, 0xd4, 0x4a, 0xb5,
++	 0xca, 0x35, 0xb3, 0x4c, 0x2b, 0xd4, 0xca, 0x35,
++	 0xcd, 0x32, 0xab, 0x54, 0x2b, 0xd4, 0x52, 0xad,
++	 0x4c, 0xb3, 0xac, 0x53, 0xab, 0x54, 0x2d, 0xd2,
++	 0xd4, 0x2b, 0xad, 0x52, 0xb3, 0x4c, 0xb5, 0x4a,
++	 0xab, 0x54, 0x2d, 0xd2, 0x34, 0xcb, 0xaa, 0x55,
++	 0xb3, 0x4c, 0xb5, 0x4a, 0x2d, 0xd2, 0x2c, 0xd3,
++	 0x34, 0xcb, 0x4a, 0xb5, 0xca, 0x35, 0xb5, 0x4a,
++	 0x2d, 0xd2, 0xca, 0x35, 0x2d, 0xd2, 0x4a, 0xb5,
++	 0x2a, 0xd5, 0x52, 0xad, 0x2a, 0xd5, 0xca, 0x35,
++	 0xab, 0x54, 0xcd, 0x32, 0x2b, 0xd4, 0xb2, 0x4d,
++	 0xb3, 0x4c, 0xb3, 0x4c, 0xab, 0x54, 0x2b, 0xd4,
++	 0xd4, 0x2b, 0xab, 0x54, 0x53, 0xac, 0xb4, 0x4b,
++	 0x4b, 0xb4, 0x2c, 0xd3, 0x52, 0xad, 0xaa, 0x55,
++	 0xd5, 0x2a, 0x55, 0xaa, 0x32, 0xcd, 0xcc, 0x33,
++	 0x2b, 0xd4, 0x4c, 0xb3, 0xcc, 0x33, 0xb3, 0x4c,
++	 0xcb, 0x34, 0x2b, 0xd4, 0xcc, 0x33, 0xab, 0x54,
++	 0x4d, 0xb2, 0x34, 0xcb, 0x4c, 0xb3, 0x4c, 0xb3,
++	 0x54, 0xab, 0x32, 0xcd, 0xd4, 0x2b, 0xab, 0x54,
++	 0xb3, 0x4c, 0xb3, 0x4c, 0x4b, 0xb4, 0x2c, 0xd3,
++	 0xd4, 0x2b, 0xab, 0x54, 0xd5, 0x2a, 0xb5, 0x4a,
++	 0x4b, 0xb4, 0xcc, 0x33, 0x2b, 0xd4, 0xaa, 0x55,
++	 0xd5, 0x2a, 0xb3, 0x4c, 0x2b, 0xd4, 0xcc, 0x33,
++	 0xcb, 0x34, 0xab, 0x54, 0xcb, 0x34, 0xb3, 0x4c,
++	 0x4d, 0xb2, 0xac, 0x53, 0xcd, 0x32, 0x4b, 0xb4,
++	 0xd4, 0x2b, 0x4d, 0xb2, 0x4c, 0xb3, 0xaa, 0x55,
++	 0xab, 0x54, 0x2b, 0xd4, 0x34, 0xcb, 0xac, 0x53,
++	 0x53, 0xac, 0xb4, 0x4b, 0xcd, 0x32, 0x2d, 0xd2,
++	 0x52, 0xad, 0x4a, 0xb5, 0xac, 0x53, 0x55, 0xaa,
++	 0x32, 0xcd, 0x2a, 0xd5, 0x32, 0xcd, 0x4c, 0xb3,
++	 0x2c, 0xd3, 0x54, 0xab, 0xcc, 0x33, 0x2b, 0xd4,
++	 0x4a, 0xb5, 0x2c, 0xd3, 0x4c, 0xb3, 0xd4, 0x2b,
++	 0xd5, 0x2a, 0x35, 0xca, 0x54, 0xab, 0xd4, 0x2b,
++	 0x2b, 0xd4, 0xb2, 0x4d, 0x53, 0xac, 0xb4, 0x4b,
++	 0xab, 0x54, 0x2b, 0xd4, 0x52, 0xad, 0xaa, 0x55,
++	 0x53, 0xac, 0x54, 0xab, 0x32, 0xcd, 0x2c, 0xd3,
++	 0x52, 0xad, 0x4c, 0xb3, 0xcc, 0x33, 0x55, 0xaa,
++	 0xd2, 0x2d, 0x2b, 0xd4, 0x2c, 0xd3, 0x4c, 0xb3,
++	 0x4a, 0xb5, 0x34, 0xcb, 0xca, 0x35, 0xcb, 0x34,
++	 0x55, 0xaa, 0xd2, 0x2d, 0x4d, 0xb2, 0xd2, 0x2d,
++	 0xb3, 0x4c, 0x55, 0xaa, 0xb4, 0x4b, 0x35, 0xca,
++	 0x34, 0xcb, 0xac, 0x53, 0x35, 0xca, 0xb2, 0x4d,
++	 0xcd, 0x32, 0xcd, 0x32, 0xad, 0x52, 0x4b, 0xb4,
++	 0xac, 0x53, 0x53, 0xac, 0x52, 0xad, 0x2a, 0xd5,
++	 0xd2, 0x2d, 0x4d, 0xb2, 0x32, 0xcd, 0x54, 0xab,
++	 0xaa, 0x55, 0x4b, 0xb4, 0x4c, 0xb3, 0xcc, 0x33,
++	 0x53, 0xac, 0x2a, 0xd5, 0xd4, 0x2b, 0x33, 0xcc,
++	 0x32, 0xcd, 0xb4, 0x4b, 0xcb, 0x34, 0x53, 0xac,
++	 0x4c, 0xb3, 0xaa, 0x55, 0xcd, 0x32, 0x2d, 0xd2,
++	 0x34, 0xcb, 0x4c, 0xb3, 0xac, 0x53, 0xb5, 0x4a,
++	 0xcd, 0x32, 0x2b, 0xd4, 0x32, 0xcd, 0x4a, 0xb5,
++	 0x4c, 0xb3, 0x54, 0xab, 0x2c, 0xd3, 0x2a, 0xd5,
++	 0x54, 0xab, 0x2c, 0xd3, 0x2a, 0xd5, 0xb4, 0x4b,
++	 0xd3, 0x2c, 0xd5, 0x2a, 0x4b, 0xb4, 0x2a, 0xd5,
++	 0x2a, 0xd5, 0xb4, 0x4b, 0x35, 0xca, 0xd4, 0x2b,
++	 0x4b, 0xb4, 0xca, 0x35, 0x4d, 0xb2, 0xb4, 0x4b,
++	 0x35, 0xca, 0x52, 0xad, 0x54, 0xab, 0xca, 0x35,
++	 0xad, 0x52, 0xad, 0x52, 0x33, 0xcc, 0x52, 0xad,
++	 0xb2, 0x4d, 0x2d, 0xd2, 0xac, 0x53, 0x4d, 0xb2,
++	 0xb4, 0x4b, 0x35, 0xca, 0xb2, 0x4d, 0xab, 0x54,
++	 0x35, 0xca, 0x52, 0xad, 0x54, 0xab, 0xcc, 0x33,
++	 0xad, 0x52, 0xad, 0x52, 0xd3, 0x2c, 0x53, 0xac,
++	 0xb2, 0x4d, 0x2d, 0xd2, 0xca, 0x35, 0x4d, 0xb2,
++	 0xb4, 0x4b, 0xd5, 0x2a, 0xad, 0x52, 0xab, 0x54,
++	 0x35, 0xca, 0x54, 0xab, 0x52, 0xad, 0xcc, 0x33,
++	 0x4d, 0xb2, 0x4c, 0xb3, 0xd2, 0x2d, 0x53, 0xac,
++	 0xd4, 0x2b, 0x4b, 0xb4, 0xca, 0x35, 0xad, 0x52,
++	 0x4b, 0xb4, 0xca, 0x35, 0xad, 0x52, 0xad, 0x52,
++	 0x35, 0xca, 0x52, 0xad, 0xb2, 0x4d, 0xcd, 0x32,
++	 0xad, 0x52, 0x4d, 0xb2, 0xb4, 0x4b, 0x53, 0xac,
++	 0xb2, 0x4d, 0xab, 0x54, 0xd5, 0x2a, 0x4d, 0xb2,
++	 0x54, 0xab, 0xcc, 0x33, 0xab, 0x54, 0xab, 0x54,
++	 0xd3, 0x2c, 0xb3, 0x4c, 0x53, 0xac, 0x2c, 0xd3,
++	 0xca, 0x35, 0x2b, 0xd4, 0xd2, 0x2d, 0xd5, 0x2a,
++	 0x4d, 0xb2, 0x54, 0xab, 0x2a, 0xd5, 0x54, 0xab,
++	 0x54, 0xab, 0xcc, 0x33, 0x4b, 0xb4, 0xac, 0x53,
++	 0xd3, 0x2c, 0xb3, 0x4c, 0xd5, 0x2a, 0x2d, 0xd2,
++	 0xca, 0x35, 0xcb, 0x34, 0xab, 0x54, 0xd5, 0x2a,
++	 0x4d, 0xb2, 0xb2, 0x4d, 0x33, 0xcc, 0x54, 0xab,
++	 0xb4, 0x4b, 0x2b, 0xd4, 0x4c, 0xb3, 0xac, 0x53,
++	 0x55, 0xaa, 0x34, 0xcb, 0xd4, 0x2b, 0xcd, 0x32,
++	 0x53, 0xac, 0xb2, 0x4d, 0xab, 0x54, 0x33, 0xcc,
++	 0xb2, 0x4d, 0xab, 0x54, 0xd3, 0x2c, 0x53, 0xac,
++	 0x54, 0xab, 0x2c, 0xd3, 0xca, 0x35, 0xad, 0x52,
++	 0xd3, 0x2c, 0xd5, 0x2a, 0xad, 0x52, 0x2d, 0xd2,
++	 0x2a, 0xd5, 0x54, 0xab, 0xb2, 0x4d, 0xd5, 0x2a,
++	 0x4b, 0xb4, 0x4c, 0xb3, 0x34, 0xcb, 0xb4, 0x4b,
++	 0xd5, 0x2a, 0xab, 0x54, 0x4d, 0xb2, 0xca, 0x35,
++	 0x4b, 0xb4, 0x4c, 0xb3, 0x34, 0xcb, 0xb2, 0x4d,
++	 0xd5, 0x2a, 0xab, 0x54, 0xad, 0x52, 0xcb, 0x34,
++	 0x4b, 0xb4, 0x4c, 0xb3, 0x52, 0xad, 0xb2, 0x4d,
++	 0xd5, 0x2a, 0x4b, 0xb4, 0xb2, 0x4d, 0xcb, 0x34,
++	 0x4b, 0xb4, 0x4a, 0xb5, 0x54, 0xab, 0xb2, 0x4d,
++	 0x35, 0xca, 0xaa, 0x55, 0xb3, 0x4c, 0xcb, 0x34,
++	 0x2d, 0xd2, 0x2c, 0xd3, 0x54, 0xab, 0x52, 0xad,
++	 0xca, 0x35, 0xb5, 0x4a, 0xb3, 0x4c, 0xcd, 0x32,
++	 0x2d, 0xd2, 0x2a, 0xd5, 0xb4, 0x4b, 0x53, 0xac,
++	 0x2a, 0xd5, 0xb4, 0x4b, 0xd5, 0x2a, 0xcd, 0x32,
++	 0x4b, 0xb4, 0xca, 0x35, 0xab, 0x54, 0xb3, 0x4c,
++	 0x35, 0xca, 0xb2, 0x4d, 0xd3, 0x2c, 0xcb, 0x34,
++	 0xad, 0x52, 0x2b, 0xd4, 0x4a, 0xb5, 0x52, 0xad,
++	 0x52, 0xad, 0xd4, 0x2b, 0xb5, 0x4a, 0x4d, 0xb2,
++	 0x52, 0xad, 0xd4, 0x2b, 0xb5, 0x4a, 0x4b, 0xb4,
++	 0x52, 0xad, 0xd4, 0x2b, 0x55, 0xaa, 0x4a, 0xb5,
++	 0x52, 0xad, 0xd4, 0x2b, 0x33, 0xcc, 0x4a, 0xb5,
++	 0x52, 0xad, 0x34, 0xcb, 0x2c, 0xd3, 0x4a, 0xb5,
++	 0x52, 0xad, 0x32, 0xcd, 0x2a, 0xd5, 0x4a, 0xb5,
++	 0xb2, 0x4d, 0xd3, 0x2c, 0x2b, 0xd4, 0x4a, 0xb5,
++	 0xd4, 0x2b, 0xb5, 0x4a, 0x2b, 0xd4, 0xaa, 0x55,
++	 0x2b, 0xd4, 0xaa, 0x55, 0x2b, 0xd4, 0xac, 0x53,
++	 0x2b, 0xd4, 0xac, 0x53, 0xcb, 0x34, 0xad, 0x52,
++	 0xcb, 0x34, 0xad, 0x52, 0xad, 0x52, 0xad, 0x52,
++	 0xad, 0x52, 0x4d, 0xb2, 0xb2, 0x4d, 0x4d, 0xb2,
++	 0xb2, 0x4d, 0x4b, 0xb4, 0xb4, 0x4b, 0x4b, 0xb4,
++	 0x54, 0xab, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55,
++	 0x33, 0xcc, 0xcc, 0x33, 0x33, 0xcc, 0x2c, 0xd3,
++	 0xcc, 0x33, 0x33, 0xcc, 0xcc, 0x33, 0x35, 0xca,
++	 0xcc, 0x33, 0x33, 0xcc, 0x2c, 0xd3, 0x32, 0xcd,
++	 0xcc, 0x33, 0x33, 0xcc, 0xaa, 0x55, 0x33, 0xcc,
++	 0xcc, 0x33, 0xd3, 0x2c, 0xd3, 0x2c, 0x33, 0xcc,
++	 0xcc, 0x33, 0x35, 0xca, 0xca, 0x35, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0xcd, 0x32, 0x33, 0xcc,
++	 0xaa, 0x55, 0x55, 0xaa, 0xcc, 0x33, 0xd3, 0x2c,
++	 0x33, 0xcc, 0x2c, 0xd3, 0xcc, 0x33, 0x35, 0xca,
++	 0xcc, 0x33, 0x35, 0xca, 0x2c, 0xd3, 0x32, 0xcd,
++	 0x2c, 0xd3, 0x32, 0xcd, 0xaa, 0x55, 0x33, 0xcc,
++	 0xaa, 0x55, 0xd3, 0x2c, 0xd3, 0x2c, 0xd3, 0x2c,
++	 0xd3, 0x2c, 0x35, 0xca, 0xca, 0x35, 0x35, 0xca,
++	 0x2a, 0xd5, 0xd2, 0x2d, 0x2d, 0xd2, 0xd2, 0x2d,
++	 0xab, 0x54, 0x55, 0xaa, 0xaa, 0x55, 0xb5, 0x4a,
++	 0x33, 0xcc, 0xcc, 0x33, 0x33, 0xcc, 0x2a, 0xd5,
++	 0xcc, 0x33, 0x33, 0xcc, 0x2c, 0xd3, 0x34, 0xcb,
++	 0xcc, 0x33, 0x33, 0xcc, 0x4a, 0xb5, 0x32, 0xcd,
++	 0xcc, 0x33, 0xd3, 0x2c, 0xb5, 0x4a, 0x33, 0xcc,
++	 0xcc, 0x33, 0xd5, 0x2a, 0xd5, 0x2a, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xd4, 0x2b, 0xcb, 0x34, 0x33, 0xcc,
++	 0x4a, 0xb5, 0xb4, 0x4b, 0xcd, 0x32, 0xd3, 0x2c,
++	 0x55, 0xaa, 0x4a, 0xb5, 0xcc, 0x33, 0xd5, 0x2a,
++	 0x33, 0xcc, 0x2a, 0xd5, 0x2c, 0xd3, 0x34, 0xcb,
++	 0x2c, 0xd3, 0x34, 0xcb, 0x4a, 0xb5, 0x32, 0xcd,
++	 0x4a, 0xb5, 0xd2, 0x2d, 0xb5, 0x4a, 0xd3, 0x2c,
++	 0xb5, 0x4a, 0xd5, 0x2a, 0xd5, 0x2a, 0xd5, 0x2a,
++	 0x35, 0xca, 0xd4, 0x2b, 0x2b, 0xd4, 0xd4, 0x2b,
++	 0x4d, 0xb2, 0xb4, 0x4b, 0x4b, 0xb4, 0x54, 0xab,
++	 0x54, 0xab, 0xaa, 0x55, 0x55, 0xaa, 0xac, 0x53,
++	 0x33, 0xcc, 0xcc, 0x33, 0xd3, 0x2c, 0x2d, 0xd2,
++	 0xcc, 0x33, 0x33, 0xcc, 0xaa, 0x55, 0x35, 0xca,
++	 0xcc, 0x33, 0xd3, 0x2c, 0x33, 0xcc, 0x32, 0xcd,
++	 0xcc, 0x33, 0x35, 0xca, 0xac, 0x53, 0x33, 0xcc,
++	 0x2c, 0xd3, 0x32, 0xcd, 0xd2, 0x2d, 0x33, 0xcc,
++	 0xaa, 0x55, 0x53, 0xac, 0xca, 0x35, 0xd3, 0x2c,
++	 0xd3, 0x2c, 0xcd, 0x32, 0xcd, 0x32, 0x35, 0xca,
++	 0xaa, 0x55, 0x53, 0xac, 0x2c, 0xd3, 0xd2, 0x2d,
++	 0xd3, 0x2c, 0x2d, 0xd2, 0xaa, 0x55, 0x35, 0xca,
++	 0xaa, 0x55, 0xd5, 0x2a, 0x33, 0xcc, 0xd2, 0x2d,
++	 0x33, 0xcc, 0x34, 0xcb, 0xac, 0x53, 0x35, 0xca,
++	 0x4c, 0xb3, 0x32, 0xcd, 0x32, 0xcd, 0x32, 0xcd,
++	 0xb4, 0x4b, 0x53, 0xac, 0xac, 0x53, 0xb3, 0x4c,
++	 0xd5, 0x2a, 0x2d, 0xd2, 0xd2, 0x2d, 0xcb, 0x34,
++	 0xab, 0x54, 0x55, 0xaa, 0x4a, 0xb5, 0xb2, 0x4d,
++	 0x33, 0xcc, 0xcc, 0x33, 0xb5, 0x4a, 0x2b, 0xd4,
++	 0xcc, 0x33, 0xd3, 0x2c, 0x55, 0xaa, 0x34, 0xcb,
++	 0xcc, 0x33, 0xd5, 0x2a, 0x53, 0xac, 0x32, 0xcd,
++	 0x2c, 0xd3, 0x34, 0xcb, 0xb2, 0x4d, 0x33, 0xcc,
++	 0x4a, 0xb5, 0x52, 0xad, 0xd4, 0x2b, 0xd3, 0x2c,
++	 0xb5, 0x4a, 0xad, 0x52, 0xcb, 0x34, 0xd5, 0x2a,
++	 0xb5, 0x4a, 0xad, 0x52, 0x2d, 0xd2, 0xd4, 0x2b,
++	 0xb5, 0x4a, 0x4d, 0xb2, 0x4a, 0xb5, 0xd4, 0x2b,
++	 0xb5, 0x4a, 0xcb, 0x34, 0x55, 0xaa, 0xd4, 0x2b,
++	 0x55, 0xaa, 0xd2, 0x2d, 0x53, 0xac, 0xd4, 0x2b,
++	 0xb3, 0x4c, 0x35, 0xca, 0x52, 0xad, 0x34, 0xcb,
++	 0x34, 0xcb, 0x52, 0xad, 0x52, 0xad, 0xb2, 0x4d,
++	 0xad, 0x52, 0x4d, 0xb2, 0xb2, 0x4d, 0x4b, 0xb4,
++	 0xb2, 0x4d, 0x4b, 0xb4, 0x54, 0xab, 0x4a, 0xb5,
++	 0x54, 0xab, 0xaa, 0x55, 0x33, 0xcc, 0xaa, 0x55,
++	 0x33, 0xcc, 0x2c, 0xd3, 0x2c, 0xd3, 0x2c, 0xd3,
++	 0xcc, 0x33, 0x35, 0xca, 0xca, 0x35, 0x35, 0xca,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0x2d, 0xd2, 0x32, 0xcd,
++	 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x33, 0xcc, 0xcc, 0x33, 0xd3, 0x2c, 0x35, 0xca,
++	 0xcc, 0x33, 0x33, 0xcc, 0x2a, 0xd5, 0x32, 0xcd,
++	 0xcc, 0x33, 0xd3, 0x2c, 0xab, 0x54, 0x33, 0xcc,
++	 0xcc, 0x33, 0xb5, 0x4a, 0xd3, 0x2c, 0x33, 0xcc,
++	 0x2c, 0xd3, 0x2a, 0xd5, 0xca, 0x35, 0x33, 0xcc,
++	 0x2a, 0xd5, 0xd4, 0x2b, 0xcd, 0x32, 0xd3, 0x2c,
++	 0x4b, 0xb4, 0x54, 0xab, 0xcc, 0x33, 0xb5, 0x4a,
++	 0x55, 0xaa, 0x2c, 0xd3, 0x2c, 0xd3, 0xca, 0x35,
++	 0xd3, 0x2c, 0x35, 0xca, 0x2a, 0xd5, 0x32, 0xcd,
++	 0x2a, 0xd5, 0xd2, 0x2d, 0xab, 0x54, 0xd3, 0x2c,
++	 0xab, 0x54, 0xb5, 0x4a, 0xd3, 0x2c, 0xb5, 0x4a,
++	 0x33, 0xcc, 0x2a, 0xd5, 0x2a, 0xd5, 0x2a, 0xd5,
++	 0x2c, 0xd3, 0xd4, 0x2b, 0x2b, 0xd4, 0x34, 0xcb,
++	 0x4a, 0xb5, 0xb4, 0x4b, 0x4b, 0xb4, 0xd2, 0x2d,
++	 0x55, 0xaa, 0xaa, 0x55, 0xb5, 0x4a, 0xd5, 0x2a,
++	 0x33, 0xcc, 0xcc, 0x33, 0x35, 0xca, 0x34, 0xcb,
++	 0xcc, 0x33, 0xd3, 0x2c, 0x4d, 0xb2, 0x32, 0xcd,
++	 0xcc, 0x33, 0x55, 0xaa, 0xb4, 0x4b, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xac, 0x53, 0xd5, 0x2a, 0x33, 0xcc,
++	 0xca, 0x35, 0xcd, 0x32, 0xcb, 0x34, 0xd3, 0x2c,
++	 0xad, 0x52, 0xb3, 0x4c, 0xcd, 0x32, 0x55, 0xaa,
++	 0xd2, 0x2d, 0x4b, 0xb4, 0x2c, 0xd3, 0x4c, 0xb3,
++	 0x4a, 0xb5, 0x2a, 0xd5, 0xca, 0x35, 0xcb, 0x34,
++	 0x35, 0xca, 0xd4, 0x2b, 0x4d, 0xb2, 0xd2, 0x2d,
++	 0x4d, 0xb2, 0x54, 0xab, 0xb4, 0x4b, 0x55, 0xaa,
++	 0x54, 0xab, 0xac, 0x53, 0x35, 0xca, 0xac, 0x53,
++	 0xd3, 0x2c, 0xcd, 0x32, 0xcd, 0x32, 0x2d, 0xd2,
++	 0xaa, 0x55, 0x53, 0xac, 0xac, 0x53, 0xd5, 0x2a,
++	 0xd3, 0x2c, 0x2d, 0xd2, 0x32, 0xcd, 0x34, 0xcb,
++	 0xaa, 0x55, 0x55, 0xaa, 0x4c, 0xb3, 0xd2, 0x2d,
++	 0x33, 0xcc, 0x2c, 0xd3, 0xb4, 0x4b, 0x35, 0xca,
++	 0xcc, 0x33, 0xb5, 0x4a, 0x35, 0xca, 0x32, 0xcd,
++	 0x2c, 0xd3, 0xca, 0x35, 0xad, 0x52, 0x33, 0xcc,
++	 0x2a, 0xd5, 0x52, 0xad, 0xd2, 0x2d, 0xd3, 0x2c,
++	 0xab, 0x54, 0x4d, 0xb2, 0xca, 0x35, 0xb5, 0x4a,
++	 0xb3, 0x4c, 0xcb, 0x34, 0x2d, 0xd2, 0x2a, 0xd5,
++	 0x54, 0xab, 0x52, 0xad, 0x2a, 0xd5, 0xb4, 0x4b,
++	 0xb3, 0x4c, 0xcd, 0x32, 0x4b, 0xb4, 0x2a, 0xd5,
++	 0xb4, 0x4b, 0xb3, 0x4c, 0x35, 0xca, 0xb4, 0x4b,
++	 0xd5, 0x2a, 0xcb, 0x34, 0x4d, 0xb2, 0xca, 0x35,
++	 0x4b, 0xb4, 0x52, 0xad, 0x34, 0xcb, 0xb2, 0x4d,
++	 0xb5, 0x4a, 0xad, 0x52, 0xad, 0x52, 0xcb, 0x34,
++	 0xb5, 0x4a, 0x4d, 0xb2, 0x52, 0xad, 0xd2, 0x2d,
++	 0xb5, 0x4a, 0x4b, 0xb4, 0xb2, 0x4d, 0xd5, 0x2a,
++	 0x55, 0xaa, 0x4a, 0xb5, 0x34, 0xcb, 0xd4, 0x2b,
++	 0x33, 0xcc, 0xaa, 0x55, 0x4d, 0xb2, 0x34, 0xcb,
++	 0x2c, 0xd3, 0x4c, 0xb3, 0x54, 0xab, 0x32, 0xcd,
++	 0xca, 0x35, 0xab, 0x54, 0xb3, 0x4c, 0xd3, 0x2c,
++	 0x4d, 0xb2, 0x2c, 0xd3, 0xd4, 0x2b, 0x55, 0xaa,
++	 0xd4, 0x2b, 0xb5, 0x4a, 0x2b, 0xd4, 0xac, 0x53,
++	 0x2b, 0xd4, 0xaa, 0x55, 0xcb, 0x34, 0xad, 0x52,
++	 0x2b, 0xd4, 0xac, 0x53, 0xad, 0x52, 0xad, 0x52,
++	 0xcb, 0x34, 0x4d, 0xb2, 0xb2, 0x4d, 0xad, 0x52,
++	 0xad, 0x52, 0x4b, 0xb4, 0xb4, 0x4b, 0x4d, 0xb2,
++	 0x52, 0xad, 0xaa, 0x55, 0xb5, 0x4a, 0x4b, 0xb4,
++	 0x32, 0xcd, 0xcc, 0x33, 0x55, 0xaa, 0x4a, 0xb5,
++	 0xcc, 0x33, 0xd3, 0x2c, 0x33, 0xcc, 0x2a, 0xd5,
++	 0xcc, 0x33, 0x35, 0xca, 0x2c, 0xd3, 0x34, 0xcb,
++	 0x2c, 0xd3, 0x32, 0xcd, 0x4a, 0xb5, 0x32, 0xcd,
++	 0xaa, 0x55, 0xd3, 0x2c, 0xb5, 0x4a, 0xd3, 0x2c,
++	 0xd3, 0x2c, 0xd5, 0x2a, 0xd5, 0x2a, 0x35, 0xca,
++	 0x2a, 0xd5, 0xd4, 0x2b, 0x2b, 0xd4, 0xd2, 0x2d,
++	 0x4b, 0xb4, 0xb4, 0x4b, 0xab, 0x54, 0xb5, 0x4a,
++	 0x55, 0xaa, 0xaa, 0x55, 0x33, 0xcc, 0xca, 0x35,
++	 0x33, 0xcc, 0x2c, 0xd3, 0x2c, 0xd3, 0x32, 0xcd,
++	 0xcc, 0x33, 0x35, 0xca, 0xaa, 0x55, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0xd3, 0x2c, 0x33, 0xcc,
++	 0xaa, 0x55, 0x35, 0xca, 0xca, 0x35, 0xd3, 0x2c,
++	 0x33, 0xcc, 0xd2, 0x2d, 0xcd, 0x32, 0x35, 0xca,
++	 0xac, 0x53, 0x55, 0xaa, 0x2c, 0xd3, 0x32, 0xcd,
++	 0x32, 0xcd, 0x2c, 0xd3, 0xaa, 0x55, 0x53, 0xac,
++	 0xcc, 0x33, 0xd5, 0x2a, 0xd3, 0x2c, 0x2d, 0xd2,
++	 0x2c, 0xd3, 0x34, 0xcb, 0xaa, 0x55, 0x35, 0xca,
++	 0x4a, 0xb5, 0xd2, 0x2d, 0x33, 0xcc, 0xd2, 0x2d,
++	 0xb5, 0x4a, 0x35, 0xca, 0xac, 0x53, 0xd5, 0x2a,
++	 0x35, 0xca, 0x32, 0xcd, 0x32, 0xcd, 0xd4, 0x2b,
++	 0xad, 0x52, 0x53, 0xac, 0x4c, 0xb3, 0x54, 0xab,
++	 0xd2, 0x2d, 0x2d, 0xd2, 0x54, 0xab, 0x4c, 0xb3,
++	 0xaa, 0x55, 0xb5, 0x4a, 0xd3, 0x2c, 0xcb, 0x34,
++	 0x33, 0xcc, 0x2a, 0xd5, 0x4a, 0xb5, 0x32, 0xcd,
++	 0x2c, 0xd3, 0xd4, 0x2b, 0xb5, 0x4a, 0x33, 0xcc,
++	 0x4a, 0xb5, 0xd4, 0x2b, 0xd5, 0x2a, 0xd3, 0x2c,
++	 0x55, 0xaa, 0xd4, 0x2b, 0xcb, 0x34, 0xd5, 0x2a,
++	 0x53, 0xac, 0xb4, 0x4b, 0x2d, 0xd2, 0x34, 0xcb,
++	 0x52, 0xad, 0x4a, 0xb5, 0x4a, 0xb5, 0x52, 0xad,
++	 0x32, 0xcd, 0xca, 0x35, 0xb5, 0x4a, 0x4d, 0xb2,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0xb5, 0x4a, 0x2b, 0xd4,
++	 0xaa, 0x55, 0xd5, 0x2a, 0x55, 0xaa, 0xd4, 0x2b,
++	 0x33, 0xcc, 0xd4, 0x2b, 0x53, 0xac, 0x34, 0xcb,
++	 0x4c, 0xb3, 0x34, 0xcb, 0x52, 0xad, 0x32, 0xcd,
++	 0x54, 0xab, 0x52, 0xad, 0xb2, 0x4d, 0xb3, 0x4c,
++	 0xb3, 0x4c, 0x4d, 0xb2, 0xd4, 0x2b, 0x2b, 0xd4,
++	 0xb4, 0x4b, 0xab, 0x54, 0x4b, 0xb4, 0xb4, 0x4b,
++	 0x55, 0xaa, 0xac, 0x53, 0x55, 0xaa, 0xca, 0x35,
++	 0xd3, 0x2c, 0xcd, 0x32, 0x33, 0xcc, 0x32, 0xcd,
++	 0xaa, 0x55, 0x33, 0xcc, 0xac, 0x53, 0xd3, 0x2c,
++	 0xd3, 0x2c, 0x33, 0xcc, 0xd2, 0x2d, 0x35, 0xca,
++	 0xca, 0x35, 0x53, 0xac, 0x2a, 0xd5, 0xd2, 0x2d,
++	 0xcd, 0x32, 0xcd, 0x32, 0xab, 0x54, 0x55, 0xaa,
++	 0xac, 0x53, 0xb3, 0x4c, 0x33, 0xcc, 0x2c, 0xd3,
++	 0xd2, 0x2d, 0x2b, 0xd4, 0xcc, 0x33, 0x55, 0xaa,
++	 0x4a, 0xb5, 0x34, 0xcb, 0x2c, 0xd3, 0xcc, 0x33,
++	 0x55, 0xaa, 0x32, 0xcd, 0xca, 0x35, 0xd3, 0x2c,
++	 0xb3, 0x4c, 0xd3, 0x2c, 0xcd, 0x32, 0x35, 0xca,
++	 0xd4, 0x2b, 0x55, 0xaa, 0x2c, 0xd3, 0xb2, 0x4d,
++	 0x2b, 0xd4, 0x2c, 0xd3, 0xaa, 0x55, 0xab, 0x54,
++	 0xcb, 0x34, 0xd5, 0x2a, 0x53, 0xac, 0xac, 0x53,
++	 0x2d, 0xd2, 0x34, 0xcb, 0xd2, 0x2d, 0x4d, 0xb2,
++	 0x4a, 0xb5, 0x52, 0xad, 0xaa, 0x55, 0xcb, 0x34,
++	 0xb5, 0x4a, 0xcd, 0x32, 0x53, 0xac, 0xd2, 0x2d,
++	 0xb5, 0x4a, 0x33, 0xcc, 0xb2, 0x4d, 0xd5, 0x2a,
++	 0xd5, 0x2a, 0x53, 0xac, 0x34, 0xcb, 0xd4, 0x2b,
++	 0xcb, 0x34, 0xad, 0x52, 0x4d, 0xb2, 0xb4, 0x4b,
++	 0xad, 0x52, 0x4d, 0xb2, 0x54, 0xab, 0x4a, 0xb5,
++	 0xb2, 0x4d, 0xab, 0x54, 0x33, 0xcc, 0x4a, 0xb5,
++	 0x54, 0xab, 0x2c, 0xd3, 0x2c, 0xd3, 0xaa, 0x55,
++	 0xd3, 0x2c, 0x35, 0xca, 0x2a, 0xd5, 0x2c, 0xd3,
++	 0x2a, 0xd5, 0xd2, 0x2d, 0xcb, 0x34, 0xd5, 0x2a,
++	 0xab, 0x54, 0xb5, 0x4a, 0x2d, 0xd2, 0xb4, 0x4b,
++	 0x33, 0xcc, 0x4a, 0xb5, 0x4a, 0xb5, 0x2a, 0xd5,
++	 0x2c, 0xd3, 0xca, 0x35, 0x35, 0xca, 0x34, 0xcb,
++	 0x2a, 0xd5, 0xd2, 0x2d, 0x4d, 0xb2, 0xd2, 0x2d,
++	 0xab, 0x54, 0x55, 0xaa, 0xb4, 0x4b, 0xb5, 0x4a,
++	 0x33, 0xcc, 0xac, 0x53, 0x35, 0xca, 0x2a, 0xd5,
++	 0xcc, 0x33, 0xcd, 0x32, 0x2d, 0xd2, 0x34, 0xcb,
++	 0xac, 0x53, 0x53, 0xac, 0x4a, 0xb5, 0x32, 0xcd,
++	 0xd2, 0x2d, 0xcd, 0x32, 0xb5, 0x4a, 0x53, 0xac,
++	 0xaa, 0x55, 0xd3, 0x2c, 0xd5, 0x2a, 0xcd, 0x32,
++	 0xd3, 0x2c, 0xd5, 0x2a, 0xab, 0x54, 0x33, 0xcc,
++	 0x2a, 0xd5, 0xb4, 0x4b, 0xd3, 0x2c, 0xd3, 0x2c,
++	 0x4b, 0xb4, 0x2a, 0xd5, 0xca, 0x35, 0xb5, 0x4a,
++	 0x35, 0xca, 0xd4, 0x2b, 0x2d, 0xd2, 0xca, 0x35,
++	 0x4d, 0xb2, 0x54, 0xab, 0x2a, 0xd5, 0x52, 0xad,
++	 0x54, 0xab, 0xcc, 0x33, 0xab, 0x54, 0xad, 0x52,
++	 0xd3, 0x2c, 0xb3, 0x4c, 0xb3, 0x4c, 0x2d, 0xd2,
++	 0xca, 0x35, 0x2b, 0xd4, 0xb4, 0x4b, 0xd5, 0x2a,
++	 0x4d, 0xb2, 0xb4, 0x4b, 0x35, 0xca, 0x54, 0xab,
++	 0x54, 0xab, 0xca, 0x35, 0x4d, 0xb2, 0xac, 0x53,
++	 0x33, 0xcc, 0x52, 0xad, 0xd4, 0x2b, 0x2d, 0xd2,
++	 0xac, 0x53, 0xad, 0x52, 0xab, 0x54, 0x35, 0xca,
++	 0xb2, 0x4d, 0xad, 0x52, 0x33, 0xcc, 0x52, 0xad,
++	 0xb4, 0x4b, 0x2d, 0xd2, 0xac, 0x53, 0xad, 0x52,
++	 0xb5, 0x4a, 0x35, 0xca, 0xb2, 0x4d, 0xcd, 0x32,
++	 0x35, 0xca, 0x52, 0xad, 0xb4, 0x4b, 0xd3, 0x2c,
++	 0xad, 0x52, 0xad, 0x52, 0xd5, 0x2a, 0x55, 0xaa,
++	 0xb2, 0x4d, 0xcd, 0x32, 0x2b, 0xd4, 0x4c, 0xb3,
++	 0xb4, 0x4b, 0xb3, 0x4c, 0xcb, 0x34, 0xab, 0x54,
++	 0xd5, 0x2a, 0xab, 0x54, 0x4d, 0xb2, 0xcc, 0x33,
++	 0x4b, 0xb4, 0x4c, 0xb3, 0xd4, 0x2b, 0xb3, 0x4c,
++	 0xd5, 0x2a, 0xab, 0x54, 0xcb, 0x34, 0xcb, 0x34,
++	 0x4b, 0xb4, 0xac, 0x53, 0x4d, 0xb2, 0xb2, 0x4d,
++	 0xd5, 0x2a, 0x4d, 0xb2, 0xb4, 0x4b, 0xcb, 0x34,
++	 0xab, 0x54, 0xab, 0x54, 0x55, 0xaa, 0xb2, 0x4d,
++	 0x53, 0xac, 0xcc, 0x33, 0xb3, 0x4c, 0x2b, 0xd4,
++	 0xd2, 0x2d, 0x33, 0xcc, 0x54, 0xab, 0x54, 0xab,
++	 0xca, 0x35, 0xb3, 0x4c, 0x53, 0xac, 0xcc, 0x33,
++	 0xcd, 0x32, 0x2b, 0xd4, 0xd2, 0x2d, 0x53, 0xac,
++	 0x4c, 0xb3, 0x54, 0xab, 0xca, 0x35, 0x2d, 0xd2,
++	 0x54, 0xab, 0xcc, 0x33, 0xad, 0x52, 0xb5, 0x4a,
++	 0xd3, 0x2c, 0x53, 0xac, 0x32, 0xcd, 0x2a, 0xd5,
++	 0xca, 0x35, 0x4d, 0xb2, 0x2c, 0xd3, 0xd4, 0x2b,
++	 0xad, 0x52, 0x2b, 0xd4, 0x4a, 0xb5, 0x54, 0xab,
++	 0x52, 0xad, 0xd4, 0x2b, 0x55, 0xaa, 0x4c, 0xb3,
++	 0x52, 0xad, 0xd4, 0x2b, 0xd3, 0x2c, 0x4b, 0xb4,
++	 0x52, 0xad, 0x34, 0xcb, 0x4a, 0xb5, 0x4a, 0xb5,
++	 0x52, 0xad, 0xd2, 0x2d, 0x35, 0xca, 0x4a, 0xb5,
++	 0xb2, 0x4d, 0xd5, 0x2a, 0x2d, 0xd2, 0x4a, 0xb5,
++	 0x34, 0xcb, 0x54, 0xab, 0x2a, 0xd5, 0xaa, 0x55,
++	 0x4d, 0xb2, 0xcc, 0x33, 0x2b, 0xd4, 0x4c, 0xb3,
++	 0xd4, 0x2b, 0xb3, 0x4c, 0xcb, 0x34, 0xab, 0x54,
++	 0xcb, 0x34, 0xab, 0x54, 0x4d, 0xb2, 0xac, 0x53,
++	 0x4d, 0xb2, 0x4c, 0xb3, 0xd4, 0x2b, 0x4d, 0xb2,
++	 0xd4, 0x2b, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54,
++	 0x4b, 0xb4, 0xac, 0x53, 0x53, 0xac, 0xac, 0x53,
++	 0xd5, 0x2a, 0x2d, 0xd2, 0xd2, 0x2d, 0xcd, 0x32,
++	 0xab, 0x54, 0x55, 0xaa, 0xaa, 0x55, 0xb3, 0x4c,
++	 0x33, 0xcc, 0xcc, 0x33, 0xd3, 0x2c, 0x2b, 0xd4,
++	 0xcc, 0x33, 0x33, 0xcc, 0x4a, 0xb5, 0x34, 0xcb,
++	 0xcc, 0x33, 0xd3, 0x2c, 0x55, 0xaa, 0x32, 0xcd,
++	 0xcc, 0x33, 0xd5, 0x2a, 0xb3, 0x4c, 0x33, 0xcc,
++	 0x2c, 0xd3, 0x34, 0xcb, 0xd4, 0x2b, 0x33, 0xcc,
++	 0x4a, 0xb5, 0xb2, 0x4d, 0xcb, 0x34, 0xd3, 0x2c,
++	 0xb5, 0x4a, 0xab, 0x54, 0xcd, 0x32, 0xd5, 0x2a,
++	 0x55, 0xaa, 0x4c, 0xb3, 0x2c, 0xd3, 0xd4, 0x2b,
++	 0xd3, 0x2c, 0x2b, 0xd4, 0x4a, 0xb5, 0x34, 0xcb,
++	 0x4a, 0xb5, 0xd4, 0x2b, 0x55, 0xaa, 0xd2, 0x2d,
++	 0x55, 0xaa, 0xd4, 0x2b, 0xb3, 0x4c, 0xd5, 0x2a,
++	 0x53, 0xac, 0x34, 0xcb, 0x34, 0xcb, 0x34, 0xcb,
++	 0x52, 0xad, 0xb2, 0x4d, 0x4d, 0xb2, 0x52, 0xad,
++	 0xb2, 0x4d, 0x4b, 0xb4, 0xb4, 0x4b, 0x4d, 0xb2,
++	 0x54, 0xab, 0xaa, 0x55, 0xb5, 0x4a, 0xab, 0x54,
++	 0x33, 0xcc, 0xcc, 0x33, 0x55, 0xaa, 0x2c, 0xd3,
++	 0xcc, 0x33, 0xd3, 0x2c, 0xd3, 0x2c, 0x35, 0xca,
++	 0xcc, 0x33, 0x35, 0xca, 0x2a, 0xd5, 0x32, 0xcd,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0xab, 0x54, 0x33, 0xcc,
++	 0xaa, 0x55, 0xb5, 0x4a, 0xd3, 0x2c, 0xd3, 0x2c,
++	 0x33, 0xcc, 0x2a, 0xd5, 0xca, 0x35, 0x35, 0xca,
++	 0x2c, 0xd3, 0xd4, 0x2b, 0x2d, 0xd2, 0x32, 0xcd,
++	 0x4a, 0xb5, 0x54, 0xab, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x55, 0xaa, 0xcc, 0x33, 0xd3, 0x2c, 0xd5, 0x2a,
++	 0xd3, 0x2c, 0x33, 0xcc, 0x2a, 0xd5, 0x34, 0xcb,
++	 0xca, 0x35, 0xd3, 0x2c, 0x4b, 0xb4, 0xd2, 0x2d,
++	 0xcd, 0x32, 0xb5, 0x4a, 0xb5, 0x4a, 0x55, 0xaa,
++	 0x2c, 0xd3, 0xca, 0x35, 0x35, 0xca, 0x2c, 0xd3,
++	 0x2a, 0xd5, 0xd2, 0x2d, 0xcd, 0x32, 0xd5, 0x2a,
++	 0xab, 0x54, 0x55, 0xaa, 0x2c, 0xd3, 0xb4, 0x4b,
++	 0x33, 0xcc, 0x2c, 0xd3, 0x4a, 0xb5, 0x2a, 0xd5,
++	 0xcc, 0x33, 0xd5, 0x2a, 0x35, 0xca, 0x34, 0xcb,
++	 0x2c, 0xd3, 0xd4, 0x2b, 0x4d, 0xb2, 0x32, 0xcd,
++	 0x4a, 0xb5, 0x54, 0xab, 0xb4, 0x4b, 0xd3, 0x2c,
++	 0x55, 0xaa, 0xac, 0x53, 0xd5, 0x2a, 0xd5, 0x2a,
++	 0xd3, 0x2c, 0xcd, 0x32, 0x2b, 0xd4, 0x34, 0xcb,
++	 0xaa, 0x55, 0xb3, 0x4c, 0x4b, 0xb4, 0xd2, 0x2d,
++	 0xd3, 0x2c, 0xab, 0x54, 0xb5, 0x4a, 0x35, 0xca,
++	 0x4a, 0xb5, 0xcc, 0x33, 0x35, 0xca, 0xd2, 0x2d,
++	 0xd5, 0x2a, 0xd3, 0x2c, 0xad, 0x52, 0xd5, 0x2a,
++	 0xcb, 0x34, 0x55, 0xaa, 0x32, 0xcd, 0xb4, 0x4b,
++	 0x2d, 0xd2, 0x4c, 0xb3, 0x4c, 0xb3, 0x4a, 0xb5,
++	 0xca, 0x35, 0x2b, 0xd4, 0x34, 0xcb, 0xca, 0x35,
++	 0x4d, 0xb2, 0xb4, 0x4b, 0x2d, 0xd2, 0x52, 0xad,
++	 0x54, 0xab, 0x4a, 0xb5, 0xaa, 0x55, 0xad, 0x52,
++	 0x33, 0xcc, 0xca, 0x35, 0xb3, 0x4c, 0x2d, 0xd2,
++	 0x2c, 0xd3, 0x32, 0xcd, 0xb4, 0x4b, 0x35, 0xca,
++	 0xaa, 0x55, 0xb3, 0x4c, 0x35, 0xca, 0xd2, 0x2d,
++	 0xd3, 0x2c, 0xcb, 0x34, 0xad, 0x52, 0x35, 0xca,
++	 0x4a, 0xb5, 0x52, 0xad, 0x32, 0xcd, 0xd2, 0x2d,
++	 0xb5, 0x4a, 0x4d, 0xb2, 0xac, 0x53, 0xd5, 0x2a,
++	 0xb5, 0x4a, 0x2b, 0xd4, 0x32, 0xcd, 0xd4, 0x2b,
++	 0x55, 0xaa, 0x54, 0xab, 0x4c, 0xb3, 0xd4, 0x2b,
++	 0x53, 0xac, 0x2c, 0xd3, 0x54, 0xab, 0x34, 0xcb,
++	 0xd2, 0x2d, 0xb5, 0x4a, 0x53, 0xac, 0x52, 0xad,
++	 0x2a, 0xd5, 0x2a, 0xd5, 0xb2, 0x4d, 0xcd, 0x32,
++	 0x2b, 0xd4, 0x54, 0xab, 0xb4, 0x4b, 0xb3, 0x4c,
++	 0x4b, 0xb4, 0xac, 0x53, 0xd5, 0x2a, 0xab, 0x54,
++	 0xd5, 0x2a, 0xcd, 0x32, 0x4b, 0xb4, 0xcc, 0x33,
++	 0xab, 0x54, 0xb3, 0x4c, 0xd5, 0x2a, 0xb3, 0x4c,
++	 0xd3, 0x2c, 0xcb, 0x34, 0xcb, 0x34, 0x2b, 0xd4,
++	 0x4a, 0xb5, 0xb2, 0x4d, 0x4d, 0xb2, 0xd4, 0x2b,
++	 0xb5, 0x4a, 0x4b, 0xb4, 0x54, 0xab, 0xd4, 0x2b,
++	 0x55, 0xaa, 0xaa, 0x55, 0x53, 0xac, 0xd4, 0x2b,
++	 0x33, 0xcc, 0x2c, 0xd3, 0x52, 0xad, 0x34, 0xcb,
++	 0xcc, 0x33, 0x55, 0xaa, 0x52, 0xad, 0x32, 0xcd,
++	 0x2c, 0xd3, 0x4c, 0xb3, 0xb2, 0x4d, 0x33, 0xcc,
++	 0xca, 0x35, 0x4b, 0xb4, 0xd4, 0x2b, 0xd3, 0x2c,
++	 0x4d, 0xb2, 0xaa, 0x55, 0xcb, 0x34, 0x55, 0xaa,
++	 0x34, 0xcb, 0xac, 0x53, 0x2d, 0xd2, 0xac, 0x53,
++	 0xcd, 0x32, 0x4d, 0xb2, 0xca, 0x35, 0x4d, 0xb2,
++	 0xac, 0x53, 0xcb, 0x34, 0xad, 0x52, 0x2b, 0xd4,
++	 0x52, 0xad, 0x52, 0xad, 0x52, 0xad, 0x54, 0xab,
++	 0xb2, 0x4d, 0x4d, 0xb2, 0x52, 0xad, 0x4c, 0xb3,
++	 0xb4, 0x4b, 0x4b, 0xb4, 0xd2, 0x2d, 0xab, 0x54,
++	 0x55, 0xaa, 0x4a, 0xb5, 0x4a, 0xb5, 0xcc, 0x33,
++	 0x33, 0xcc, 0xca, 0x35, 0xd5, 0x2a, 0x33, 0xcc,
++	 0x2c, 0xd3, 0xd2, 0x2d, 0xcb, 0x34, 0x33, 0xcc,
++	 0xaa, 0x55, 0xb5, 0x4a, 0xcd, 0x32, 0xd3, 0x2c,
++	 0x33, 0xcc, 0x4a, 0xb5, 0xcc, 0x33, 0x35, 0xca,
++	 0x2c, 0xd3, 0x2a, 0xd5, 0x2c, 0xd3, 0x32, 0xcd,
++	 0x2a, 0xd5, 0x34, 0xcb, 0xaa, 0x55, 0xd3, 0x2c,
++	 0x4b, 0xb4, 0xd2, 0x2d, 0xd3, 0x2c, 0xb5, 0x4a,
++	 0xb5, 0x4a, 0x35, 0xca, 0x2a, 0xd5, 0xca, 0x35,
++	 0x35, 0xca, 0xd2, 0x2d, 0x2b, 0xd4, 0xd2, 0x2d,
++	 0xad, 0x52, 0xb5, 0x4a, 0xab, 0x54, 0x55, 0xaa,
++};
++
++#endif	/*RAND_H_*/
++
++
diff --git a/kobs-ng.patches/kobs-ng-02.description b/kobs-ng.patches/kobs-ng-02.description
new file mode 100644
index 0000000..1777802
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-02.description
@@ -0,0 +1 @@
+Updated to use a proper tmpfile. Otherwise, errors happen when run from a read-only partition.
diff --git a/kobs-ng.patches/kobs-ng-02.patch b/kobs-ng.patches/kobs-ng-02.patch
new file mode 100644
index 0000000..1a5176d
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-02.patch
@@ -0,0 +1,85 @@
+diff -Naur a/src/main.c b/src/main.c
+--- a/src/main.c	2014-12-03 16:53:29.724125643 -0800
++++ b/src/main.c	2014-12-03 17:47:29.835274590 -0800
+@@ -47,7 +47,6 @@
+ #include <sys/un.h>
+ #include <sys/mman.h>
+ #include <sys/wait.h>
+-#include <sys/sendfile.h>
+ 
+ #include "mtd.h"
+ #include "plat_boot_config.h"
+@@ -555,33 +554,29 @@
+ 	return 0;
+ }
+ 
+-static char *tmp_file = ".tmp_kobs_ng";
+-static char *padding_1k_in_head(char *file_name)
++static FILE *padding_1k_in_head(FILE *from)
+ {
+-	int to, from;
+-	int ret;
+-	int sz = getpagesize();
+-
+-	from = open(file_name, O_RDONLY, S_IRUSR | S_IWUSR);
+-	to = open(tmp_file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+-	if (from < 0 || to < 0) {
++	FILE *to;
++	char buf[BUFSIZ];
++	size_t size;
++
++	to = tmpfile();
++	if (from == NULL || to == NULL) {
+ 		fprintf(stderr, "unable to create a temporary file\n");
+ 		exit(5);
+ 	}
+ 
+ 	/* Padding 1k in the head. */
+-	lseek(to, 1024, SEEK_SET);
++	fseek(to, 1024, SEEK_SET);
+ 
+-	do {
+-		/* copy a page each time. */
+-		ret = sendfile(to, from, NULL, sz);
+-	} while (ret > 0);
++	while ((size = fread(buf, 1, BUFSIZ, from)) > 0) {
++		fwrite(buf, 1, size, to);
++	}
+ 
+-	close(to);
+-	close(from);
++	fclose(from);
+ 
+ 	/* change to the temporary file. */
+-	return tmp_file;
++	return to;
+ }
+ 
+ int init_main(int argc, char **argv)
+@@ -670,19 +665,19 @@
+ 	 * So we have to add the 1k-padding ourselves.
+ 	 * Note: We only burn the uboot to nand in the kernel 3.5.7.
+ 	 */
+-	if (padding) {
+-		infile = padding_1k_in_head(infile);
+-
+-		if (flags & F_VERBOSE)
+-			printf("\t -- We add the 1k-padding to the uboot.\n");
+-	}
+-
+ 	infp = fopen(infile, "rb");
+ 	if (infp == NULL) {
+ 		fprintf(stderr, "Unable to open input file '%s'\n", infile);
+ 		usage();
+ 	}
+ 
++	if (padding) {
++		infp = padding_1k_in_head(infp);
++
++		if (flags & F_VERBOSE)
++			printf("\t -- We add the 1k-padding to the uboot.\n");
++	}
++
+ 	keyp = !device_key ? key : NULL;
+ 
+ 	if (flags & F_VERBOSE)
diff --git a/kobs-ng.patches/kobs-ng-03.description b/kobs-ng.patches/kobs-ng-03.description
new file mode 100644
index 0000000..3534f49
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-03.description
@@ -0,0 +1,2 @@
+change the i.mx6sx version check, all versions later than v1.1 should use the
+latest config.
diff --git a/kobs-ng.patches/kobs-ng-03.patch b/kobs-ng.patches/kobs-ng-03.patch
new file mode 100644
index 0000000..72f834f
--- /dev/null
+++ b/kobs-ng.patches/kobs-ng-03.patch
@@ -0,0 +1,17 @@
+--- a/src/plat_boot_config.c	2016-01-28 13:26:28.134887434 -0800
++++ b/src/plat_boot_config.c	2016-02-03 14:20:52.645802502 -0800
+@@ -221,10 +221,12 @@
+ 					}
+ 					fgets(line_buffer, sizeof(line_buffer), revision);
+ 					if (!strncmp(line_buffer, "1.0", strlen("1.0")) ||
+-							!strncmp(line_buffer, "1.1", strlen("1.1")))
++							!strncmp(line_buffer, "1.1", strlen("1.1"))) {
+ 						plat_config_data = &mx6sx_boot_config;
+-					if (!strncmp(line_buffer, "1.2", strlen("1.2")))
++					/* all other versions should use the new boot config */
++					} else {
+ 						plat_config_data = &mx6sx_to_1_2_boot_config;
++					}
+ 				}
+ 				break;
+ 
diff --git a/kobs-ng.url b/kobs-ng.url
new file mode 100644
index 0000000..67afc72
--- /dev/null
+++ b/kobs-ng.url
@@ -0,0 +1 @@
+http://www.freescale.com/livelink/livelink?func=ll&objId=232611736&objAction=browse&viewType=1
diff --git a/kobs-ng.version b/kobs-ng.version
new file mode 100644
index 0000000..7e32cd5
--- /dev/null
+++ b/kobs-ng.version
@@ -0,0 +1 @@
+1.3
